Mapa de la lección
Lección 03 publicada. Mapa, ejemplo, EX007.
flowchart TD
N0["Resultados de aprendizaje"]
N1["3.1 Etiquetas como registros"]
N2["3.2 Validación de rangos"]
N3["3.3 Salida legible"]
N4["Síntesis del capítulo"]
N0 --> N1 --> N2 --> N3 --> N4
N4 --> EX["Ejemplo resuelto"]
EX --> Q["Ejercicio EX007"]
Dibujo lógico
flowchart LR
N0["Resultados de aprendizaje"]
N1["3.1 Etiquetas como registros"]
N2["3.2 Validación de rangos"]
N3["3.3 Salida legible"]
N4["Síntesis del capítulo"]
N0 --> N1 --> N2 --> N3 --> N4 --> Q["EX007"]
[Resultados de aprendizaje]
|
v
[3.1 Etiquetas como registros]
|
v
[3.2 Validación de rangos]
|
v
[3.3 Salida legible]
|
v
[Síntesis del capítulo]
|
v
[Ejemplo resuelto] --> [Ejercicio EX007]
Resultados de aprendizaje
Usted podrá (1) leer datos estructurados con la biblioteca estándar de Python; (2) validar valores frente a rangos de ingeniería; (3) escribir salidas que un revisor pueda comprobar línea por línea; y (4) explicar por qué el código de validación es un artefacto relevante para la seguridad.
3.1 Etiquetas como registros
Una lista de etiquetas de TO es una tabla: nombre de la etiqueta, unidad de ingeniería, límites bajo y alto, valor actual. El módulo csv de Python lee estas tablas sin paquetes de terceros, lo que importa en portátiles de ingeniería bloqueados, donde instalar software requiere aprobación. Trate cada fila como un diccionario y mantenga el texto bruto separado de los números analizados, para que un fallo de análisis sea visible en lugar de convertirse silenciosamente en cero. En el laboratorio de etiquetas, conservar el texto bruto es lo que permite que la nota de Maya diga «FT-301 marcó −3,0 m³/h» en lugar de informar de un vacío o de un cero; el técnico de instrumentación puede entonces ver el valor exacto que envió el contador y decidir si el problema está en el escalado o en el cableado.
3.2 Validación de rangos
Una temperatura de 141 °C en una sonda calibrada para 20–130 °C es una desviación real, un sensor averiado o un valor manipulado. El código no puede saber cuál; puede marcar la fila e impedir que llegue a un informe etiquetado como «normal». Lo mismo vale para un caudal negativo, que es físicamente imposible en un contador unidireccional y, por tanto, siempre plantea una cuestión de calidad o de integridad de los datos. El laboratorio de etiquetas marca exactamente estas dos filas: TT-102 a 141,0 °C frente a un límite de 130 °C, y FT-301 a −3,0 m³/h. Maya envía la primera al operador de inmediato y la segunda a instrumentación como sospecha de fallo de cableado o de escalado.
3.3 Salida legible
Imprima una decisión por línea junto con la entrada que la causó. Los revisores de los comités de cambios de planta rara vez son programadores; confiarán en una salida que puedan rastrear hasta una fila.
"""Lab 03: validate a synthetic LDHP tag list (no plant access)."""
import csv, io
RAW = """tag,unit,lo,hi,value
TT-101,degC,20,130,96.5
TT-102,degC,20,130,141.0
PT-201,bar,0,16,9.8
FT-301,m3/h,0,250,-3.0
LT-401,pct,0,100,57
"""
bad = []
for row in csv.DictReader(io.StringIO(RAW)):
v, lo, hi = float(row["value"]), float(row["lo"]), float(row["hi"])
ok = lo <= v <= hi
print(f"{row['tag']:7} {v:7.1f} {row['unit']:5} {'ok' if ok else 'OUT-OF-RANGE'}")
if not ok: bad.append(row["tag"])
print("flagged:", ", ".join(bad))
Ejecútelo con python3 lab_tags.py. Salida verificada:
TT-101 96.5 degC ok
TT-102 141.0 degC OUT-OF-RANGE
PT-201 9.8 bar ok
FT-301 -3.0 m3/h OUT-OF-RANGE
LT-401 57.0 pct ok
flagged: TT-102, FT-301
En LDHP, las dos filas marcadas se imprimen como TT-102 141.0 degC OUT-OF-RANGE y FT-301 -3.0 m3/h OUT-OF-RANGE, con el valor de entrada en la misma línea que la decisión; dirigir cada marca al operador o a instrumentación es el criterio de Maya en su nota, no algo que decida el script. Un revisor del comité de cambios que sea ingeniero de control, no programador, puede contrastar cada línea con el índice de instrumentos en un minuto y no necesita leer el script. Si una línea no puede rastrearse hasta una fila, el revisor no tiene motivos para confiar en ella, así que la salida nunca debería imprimir un recuento resumido sin las filas que lo respaldan.
Ejemplo resuelto (LDHP sintética)
El laboratorio marca TT-102 (141,0 °C, por encima de 130) y FT-301 (−3,0 m³/h, por debajo de 0). La nota de Maya los separa: TT-102 podría ser una lectura alta genuina y va al operador de inmediato; FT-301 es físicamente imposible y va a instrumentación como sospecha de fallo de cableado o de escalado, con revisión de integridad si el fallo no puede explicarse.
Caso sintético — Lakeside District Heating Plant. La lista de etiquetas del laboratorio es inventada; los límites reales de LDHP provendrían del índice de instrumentos que mantienen los ingenieros de control.
Errores y límites
Las comprobaciones de rango detectan errores groseros, no una manipulación sutil dentro de la banda. La comparación en coma flotante en el límite necesita una regla explícita (aquí, inclusiva). El script lee una cadena, no un sistema en vivo.
Ejercicios — capítulo 3
- EX007 — Ampliar la tabla de etiquetas. Añada la fila
TT-103,degC,20,130,130.0. ¿Qué imprime el laboratorio para ella y por qué?Mostrar criterios de evaluación
Rúbrica: 3 = ok, porque los límites son inclusivos; 2 = ok sin motivo; 1 = dice fuera de rango; 0 = nada. - EX008 — Valores no analizables. Describa qué hace el script si una celda de valor contiene
n/ay proponga una corrección.Mostrar criterios de evaluación
Rúbrica: 3 = un ValueError detiene la ejecución; capturarlo y marcar BAD-VALUE; 2 = una de las dos cosas; 1 = dice que se convierte en cero; 0 = nada. - EX009 — Triaje de dos marcas. Explique por qué TT-102 y FT-301 van a personas distintas.
Mostrar criterios de evaluación
Rúbrica: 3 = desviación plausible frente a valor imposible, operador frente a instrumentación; 2 = parcial; 1 = trata ambas igual; 0 = nada.
Síntesis del capítulo
Programas pequeños y legibles, con la biblioteca estándar, que marcan en lugar de corregir son la primera herramienta en la que un estudiante de seguridad de TO debería confiar y que debería poder defender.
Siga estudiando — capítulo 03 de 40
← Capítulo 02 (borrador) · Índice de capítulos del curso · Capítulo 04 (borrador) →