Análisis — Bloques de programa/ZC_Estandar_Alimentacion/300_Procesos_Controles
Cobertura: 2 fuente(s) .s7dcl.
Resumen de carpeta
Esta carpeta pertenece a la capa indicada por su prefijo numérico y agrupa elementos con responsabilidad funcional común. El detalle siguiente diferencia bloques ejecutables, memoria global/instancia y contratos UDT.
FB FB15152_ZC_PARO_SEC
- Archivo:
Bloques de programa/ZC_Estandar_Alimentacion/300_Procesos_Controles/FB15152_ZC_PARO_SEC.s7dcl - Tipo: FB
Propósito general
El bloque FB15051_PARO_SECUENCIAL implementa un secuenciador bidireccional para el paro ordenado de un array de dispositivos. Permite detener los dispositivos uno a uno esperando una confirmación por etapa, y rearmar la secuencia en sentido inverso si se retira la orden de marcha, continuando desde la última etapa alcanzada en lugar de reiniciar desde el inicio.
Funcionalidades principales:
- Validación del número de dispositivos: #NumeroDispositivos se acota entre 1 y la constante de dimensionamiento #N_MAX.
- Estado REPOSO: bloque en espera. Al recibir #MarchaSecuenciaParo := TRUE se inicializa el índice y se transita a la etapa PARANDO.
- Estado PARANDO: avanza secuencialmente por los dispositivos de menor a mayor índice. Cada dispositivo se considera parado cuando se cumple #ConfirmacionDisp[i] = TRUE durante #TiempoEntreEtapas segundos. Al confirmar, se incrementa el índice hasta superar #s_NumeroDispositivos, momento en el que se transita a FINALIZADO. Si durante esta etapa se desactiva #MarchaSecuenciaParo, se invierte el sentido y se pasa a REARMANDO sin perder la posición alcanzada.
- Estado REARMANDO: retrocede secuencialmente por los dispositivos de mayor a menor índice. Cada dispositivo se considera rearmado cuando #ConfirmacionDisp[i] = FALSE durante #TiempoEntreEtapas segundos. Al rearmar, se decrementa el índice hasta alcanzar 1, momento en el que se transita a REPOSO. Si durante esta etapa se vuelve a activar #MarchaSecuenciaParo, se invierte nuevamente el sentido y se pasa a PARANDO desde la posición actual.
- Estado FINALIZADO: secuencia de paro completa. Al retirar #MarchaSecuenciaParo, se rearman los dispositivos en orden inverso empezando desde el último, transitando a REARMANDO.
- Mapeado dinámico de salidas: para cada dispositivo se activa #ParoDispositivo[i] := TRUE si su índice es menor o igual al puntero actual y la etapa es PARANDO; en el resto de casos se mantiene en FALSE. Esto garantiza que los dispositivos ya parados en la fase actual permanezcan parados durante el rearmado inverso de los posteriores.
- Señales de estado: #SecReposo indica que la secuencia está en REPOSO y #SecParoFinalizada que ha terminado (FINALIZADO).
- Contadores de tiempo por etapa del tipo ZC_TIEMPO_ETAPA con base de tiempo en segundos (#Pulso1Seg).
> Restricciones: PLC serie 1200/1500.
Interfaz principal
Entradas:
| Variable | Tipo / inicialización |
|---|---|
Pulso1Seg |
Bool |
MarchaSecuenciaParo |
Bool |
NumeroDispositivos |
Int := 4 |
TiempoEntreEtapas |
Int := 2 |
ConfirmacionDisp |
Array[1..#N_MAX] of Bool |
Salidas:
| Variable | Tipo / inicialización |
|---|---|
SecParoFinalizada |
Bool |
SecReposo |
Bool |
ParoDispositivo |
Array[1..#N_MAX] of Bool |
Estado/estáticos:
| Variable | Tipo / inicialización |
|---|---|
s_NumeroDispositivos |
Int |
Estado retentivo:
| Variable | Tipo / inicialización |
|---|---|
s_EtapaActual |
Int |
s_Indice |
Int |
s_TiempoActual |
Int |
Temporales:
| Variable | Tipo / inicialización |
|---|---|
for_i |
Int |
Estado/estáticos:
| Variable | Tipo / inicialización |
|---|---|
CONSTANT N_MAX |
Int := 8 |
REPOSO |
Int := 0 |
PARANDO |
Int := 10 |
REARMANDO |
Int := 20 |
FINALIZADO |
Int := 30 |
Dependencias
No se detectan llamadas ni referencias a otros bloques exportados. Para un DB/UDT esto significa que es una hoja declarativa; sus consumidores aparecen en el mapa inverso.
Lógica clave
Flujo organizado en las regiones: LIMITES → SECUENCIADOR_BIDIRECCIONAL → MAPEADO_DINAMICO_DE_SALIDAS. Mecanismos relevantes detectados: recorridos iterativos, máquina de estados/selección CASE, decisiones condicionales. Operaciones señaladas por el código: (C)Copyright ZeusControl 2023 - 2026; ==========================================================================================================; Limite de seguridad; Contador de tiempo con confirmacion de dispositivo; Tiempo cumplido; Comprobación de fin de secuencia de paro; Si se desactiva la orden de marcha de la secuencia, comenzamos el rearme inverso; Límite de seguridad inferior; Contador de tiempo sin confirmacion de dispositivo; Si se vuelve a dar marcha, invertimos dirección nuevamente.
FC FC15151_ZC_MARCHA_PARO_SEC
- Archivo:
Bloques de programa/ZC_Estandar_Alimentacion/300_Procesos_Controles/FC15151_ZC_MARCHA_PARO_SEC.s7dcl - Tipo: FC; retorno
Void
Propósito general
Función encargada de la gestión de secuencias de arranque y parada escalonada de hasta 8 dispositivos de forma temporizada.
- Evaluar dinámicamente los parámetros de configuración, limitando el número de elementos de la secuencia a un rango válido entre 1 y 8 mediante la variable NumElementos.
- Gestionar el traspaso del tiempo de espera entre etapas, aplicando de forma automática los parámetros TiempoEntreMarcha o TiempoEntreParo según el estado de la orden activa en la entrada Marcha.
- Ejecutar una máquina de estados para la transición secuencial de las etapas de operación, controlando el tiempo de permanencia en cada fase mediante la señal base de tiempo Pulso1Seg.
- Monitorizar de forma continua la señal de Seguridad, forzando el reinicio seguro de la máquina de estados a la etapa de reposo y limpiando los temporizadores en caso de pérdida.
- Calcular y activar las señales de salida operativas, incluyendo los bits individuales de activación por dispositivo (M[1] a M[8]) y las confirmaciones de ciclo finalizado (SecMarchaCompletada y SecParoCompletada).
Interfaz principal
Entradas:
| Variable | Tipo / inicialización |
|---|---|
Pulso1Seg |
Bool |
Seguridad |
Bool |
Marcha |
Bool |
Entrada/salida (in/out):
| Variable | Tipo / inicialización |
|---|---|
MP_SEC |
_.UDT_ZC_MARCHA_PARO_SEC |
Estado/estáticos:
| Variable | Tipo / inicialización |
|---|---|
CONSTANT REPOSO |
Int := 0 |
MARCHA_1 |
Int := 10 |
MARCHA_2 |
Int := 20 |
MARCHA_3 |
Int := 30 |
MARCHA_4 |
Int := 40 |
MARCHA_5 |
Int := 50 |
MARCHA_6 |
Int := 60 |
MARCHA_7 |
Int := 70 |
MARCHA_8 |
Int := 80 |
Dependencias
| Clase | Elementos referenciados/llamados |
|---|---|
| UDT | UDT_ZC_MARCHA_PARO_SEC |
Lógica clave
Flujo organizado en las regiones: TRASPASO_PARAMETROS → SECUENCIA → TIEMPO_DE_ETAPA → SALIDAS. Mecanismos relevantes detectados: máquina de estados/selección CASE, decisiones condicionales. Operaciones señaladas por el código: ==========================================================================================================; Limite de numero de elementos; Traspaso de set point tiempo etapa; Seguridad; Activacion tiempo de etapa; Con tiempo de etapa cumplido; Estando en marcha, si hay mas elementos saltamos a la siguiente etapa, de lo contrario, reseteamos el tiempo de etapa; Estando en marcha, reseteamos el tiempo de etapa; Secuencia paro completada; Secuencia Marcha completada.