Cargando el progreso local…
PLC Gym
Inicio de PLC GymNivel 1, 0 XP · tu progreso
Misión 89 · PRO (requiere Pro)

Ejercicio de Un solo bloque de alarmas para todas las alarmas: formación en SCADA y PLC

Nueva, vista, despejada: un bucle lleva cada alarma por los mismos estados y marca la que llegó primero.

Escribe el bloque de alarmas que hay detrás de la lista de alarmas de la fábrica: un bucle que lleva cada una de las cinco alarmas por nueva, vista y despejada, cuenta las activas y las no reconocidas, informa la prioridad más alta y marca la alarma que llegó primero.

Esta misión es parte de ProCrea una cuenta gratis: cada cuenta tiene una prueba de Pro gratis hasta el 5 de diciembre.

Sin tarjeta. Nada que pagar. Nada que cancelar.

Official release: 5 December. Queda primero en la clasificación ese día y gana 3 meses de Pro, más 2 semanas de Pro para regalar a un amigo. El 2.º puesto gana 4 semanas. El 3.er puesto gana 2 semanas. Reglas

  • Todas las lecciones, desde cero
  • Todas las misiones y lecciones, a medida que subes de nivel
  • Una prueba práctica para cada título, con un certificado
  • Rebobina cualquier prueba, escaneo a escaneo
  • Soluciones resueltas cuando te atascas
  • El convertidor de código, todo lo que quieras
La instalación 3D fábrica modelo en la que se ejecuta esta misiónPRO (requiere Pro) misión
Cómo se ejecuta la prueba

Nueva, vista, despejada

Prueba 1 de 6
Fijado por la pruebaComprobado por la pruebaPaso 8 de 8 · 1.9 s
Level
Experto
Tiempo
Acerca de 45 min
Recompensa
+800 XP
Instalación
fábrica modelo en 3D
Editores de Siemens
SCL
Editores de Rockwell
Texto estructurado
Editores de Beckhoff
Texto estructurado
Etapa
44. SCADA 2: un bloque de alarma para todas las alarmas
Comportamiento requerido

Un solo bloque de alarmas para todas las alarmas: qué debe hacer tu código

El control de la planta, las cinco condiciones de alarma Cond[0] a Cond[4] y sus prioridades Prio[0] a Prio[4] ya están escritos. Escribe un solo bucle FOR sobre las cinco alarmas que mantenga AlarmState[0] a AlarmState[4]: 0 Normal, 1 Nueva (activa, sin reconocer), 2 Vista (activa, reconocida), 3 Despejada, sin ver. Desde 0, la condición al activarse da 1. En 1, pulsar Ack da 2; la condición al desactivarse da 3. En 2, la condición al desactivarse da 0. En 3, pulsar Ack da 0; la condición al volver da 1. Cada alarma hace como mucho un cambio por escaneo, y Ack actúa al pulsarse, no mientras se mantiene. ActiveCount es cuántas alarmas están en estado 1 o 2. UnackCount es cuántas están en estado 1 o 3. TopPriority es la prioridad más urgente entre las alarmas que no están en estado 0: 1, 2 o 3, o 0 si no hay ninguna. FirstOut es el número de la alarma que empezó el problema, contando desde 1: cuando una alarma sale del estado 0 mientras FirstOut vale 0, FirstOut toma su número. Si dos empiezan en el mismo escaneo, gana la que está antes en la tabla. FirstOut vuelve a 0 solo cuando todas las alarmas vuelven al estado 0. En la pestaña Pantalla del operador, elige cómo trata la lista una alarma despejada, la primera alarma y los estados.

Estados
0 Normal, 1 Nueva, 2 Vista, 3 Despejada, sin ver.
Ack
Al pulsar: 1 pasa a 2, y 3 pasa a 0.
Totales
ActiveCount: estados 1 y 2. UnackCount: estados 1 y 3. TopPriority: la más urgente que no esté en 0.
Primera alarma
La asigna la primera alarma que sale de 0; se borra cuando todas vuelven a 0.
Tabla de variables

Un solo bloque de alarmas para todas las alarmas: entradas y salidas

Tu programa lee 19 entradas y escribe 20 salidas. Una entrada más mueve la simulación o muestra una lectura, para que pruebes con ella. Los nombres son los mismos en el editor de cada fabricante.

VariableTipo de datosTu códigoQué significa en la máquina
StartBOOLLeeUna entrada que tu código necesitaArrancar la fábrica
StopBOOLLeeUna entrada que tu código necesitaParar la fábrica donde está
ResetBOOLLeeUna entrada que tu código necesitaRearmar después de un paro de emergencia o un disparo de la cortina de luz
EStopBOOLLeeUna entrada que tu código necesitaParo de emergencia pulsado
CompressorFaultBOOLLeeUna entrada que tu código necesitaPruébalo: dispara el compresor
AirPressureREALLeeUna entrada que tu código necesitaPresión del calderín de aire, bar
SteamPressureREALLeeUna entrada que tu código necesitaPresión de vapor de la caldera, bar
VesselLevelREALLeeUna entrada que tu código necesitaNivel del recipiente de mezcla, %
VesselTempREALLeeUna entrada que tu código necesitaTemperatura de la tanda, °C
SugarAddedREALLeeUna entrada que tu código necesitaAzúcar que la dosificadora gravimétrica ha añadido a esta tanda, kg
BufferLevelREALLeeUna entrada que tu código necesitaNivel del tanque pulmón de la llenadora, %
BadBottleBOOLLeeUna entrada que tu código necesitaCámara: está pasando una botella sin etiqueta
GateEyeBOOLLeeUna entrada que tu código necesitaHay una botella delante de la compuerta de rechazo
AccumFullBOOLLeeUna entrada que tu código necesitaHay tres paquetes esperando al robot
CurtainClearBOOLLeeUna entrada que tu código necesitaHaces de la cortina de luz sin cortar
PalletFullBOOLLeeUna entrada que tu código necesitaHay un palé lleno esperando o de camino a la enfardadora
PalletOnWrapperBOOLLeeUna entrada que tu código necesitaHay un palé en el plato giratorio de la enfardadora
WrapDoneBOOLLeeUna entrada que tu código necesitaEl palé de la enfardadora está envuelto
AckBOOLLeeUna entrada que tu código necesitaBotón de pantalla: reconocer las alarmas
PersonInCellBOOLNo necesariaPara probar u observar; tu código puede omitirlaPruébalo: alguien entra en la célula del robot
CompressorBOOLEscribeUna salida que tu código fijaHacer funcionar el compresor de aire
BoilerOnBOOLEscribeUna salida que tu código fijaEncender la caldera
WaterValveBOOLEscribeUna salida que tu código fijaAgua al recipiente de mezcla
FeederBOOLEscribeUna salida que tu código fijaHacer funcionar la dosificadora gravimétrica de azúcar
AgitatorBOOLEscribeUna salida que tu código fijaHacer funcionar el agitador
SteamValveBOOLEscribeUna salida que tu código fijaVapor a la camisa del recipiente
TransferPumpBOOLEscribeUna salida que tu código fijaBombear la tanda al tanque pulmón
LineRunBOOLEscribeUna salida que tu código fijaHacer funcionar la línea de embotellado
RejectGateBOOLEscribeUna salida que tu código fijaAccionar la compuerta de rechazo
RobotEnableBOOLEscribeUna salida que tu código fijaDejar que el robot paletice
PalletOutBOOLEscribeUna salida que tu código fijaLlevar el palé lleno a la enfardadora
WrapBOOLEscribeUna salida que tu código fijaHacer funcionar la enfardadora
AGVCallBOOLEscribeUna salida que tu código fijaLlamar al AGV para que recoja el palé envuelto
GreenLampBOOLEscribeUna salida que tu código fijaColumna luminosa: produciendo
AmberLampBOOLEscribeUna salida que tu código fijaColumna luminosa: arrancando o esperando
RedLampBOOLEscribeUna salida que tu código fijaColumna luminosa: paro de emergencia o disparo de la cortina de luz
ActiveCountINTEscribeUna salida que tu código fijaLista de alarmas: alarmas cuya condición está activa
UnackCountINTEscribeUna salida que tu código fijaLista de alarmas: alarmas que nadie ha reconocido
TopPriorityINTEscribeUna salida que tu código fijaLista de alarmas: la prioridad más urgente que se muestra, de 1 a 3, o 0
FirstOutINTEscribeUna salida que tu código fijaLista de alarmas: la alarma que llegó primero, de 1 a 5, o 0

En SCL de Siemens, escribe las variables propias de un bloque con # delante, como hace TIA Portal: #Start. Rockwell y TwinCAT usa el nombre solo: Start.

Pruebas automáticas

Un solo bloque de alarmas para todas las alarmas: qué comprueban las pruebas

  1. Todas las alarmas siguen los mismos cuatro estados: 0 Normal, 1 Nueva, 2 Vista, 3 Despejada, sin ver.
  2. Una alarma que se despeja antes de Ack sigue en la lista como 3 hasta Ack; una que vuelve antes de Ack vuelve a ser Nueva.
  3. Ack actúa al pulsarse: un Ack mantenido no reconoce una alarma que llega después.
  4. ActiveCount, UnackCount y TopPriority coinciden con la lista en cada escaneo.
  5. FirstOut nombra la alarma que llegó primero y la mantiene hasta que la lista se vacía.
  6. La lista conserva una alarma despejada hasta que alguien la ve, marca la primera y dice cada estado en palabras.
  1. Pruébalo Usa los botones de debajo del modelo y mira cómo responde la instalación.
  2. Probar solución Todas las comprobaciones se ejecutan sobre tu código con una sola pulsación.
  3. Rebobinar PRO (requiere Pro) Si una falla, retrocede por ella escaneo a escaneo para ver por qué.

¿Atascado en esta misión? Pregunta a los miembros en el Vestuario.

Por qué importa

Dónde verías esto en planta

El servidor SCADA de una planta tiene una tabla de alarmas, cada línea con un estado, una prioridad y una hora. La marca de primera alarma es lo que lee el turno de día después de una noche de paradas.

Un solo disparo puede generar veinte alarmas en pocos segundos. Sin estados ni marca de primera alarma, el operador las reconoce todas para callar la bocina y la causa se pierde.

Dónde encontrarías estoUn controlador para toda una fábrica: cuándo puede funcionar cada máquina y qué la mantiene segura

Una pequeña fábrica de bebidas hace un refresco de naranja. El azúcar y el agua se dosifican y se pasteurizan, y luego se bombean a una llenadora. Las botellas se llenan, se tapan, se etiquetan y se inspeccionan, se empaquetan de seis en seis, un robot las apila en palés, se envuelven y una carretilla sin conductor las lleva al muelle. Cada máquina tiene sus propios mandos; el controlador de la planta decide cuándo puede funcionar cada una, pasa el trabajo de una a la siguiente y lo para todo con seguridad.

  1. BatchMezclar y pasteurizar
  2. FillLlenar, tapar, etiquetar
  3. InspeccionarRechazar botellas malas
  4. EmpaquetarEl robot apila paquetesEstás aquí
  5. EnviarEnvolver, AGV al muelle
En una planta real: lugares, piezas y seguridad
  • Naves de embotellado de refrescos y zumos
  • Plantas de salsas, lácteos y alimentos líquidos
  • Productos líquidos para el hogar y la higiene personal

Un paro de emergencia va cableado a través de un relé de seguridad que corta la alimentación por sí solo. El programa debe entonces mantenerlo todo parado y esperar un Reset y un Start deliberados, para que nada se mueva por sorpresa.

Las células de robot están valladas. Las cortinas de luz y las puertas enclavadas paran el robot cuando alguien entra, y un rearranque necesita un rearme desde fuera de la célula, en el espíritu de ISO 10218 e ISO 13849.

Los tamaños, los tiempos y los cortes son decisiones didácticas, no el plano de ninguna instalación real concreta.

Sigue así

Lo siguiente en el camino