4.7 KiB
4.7 KiB
FB: BlenderCtrl__Main
Este Bloque de Función parece ser el orquestador central del sistema Mixer/Starblend.
Rol Principal
- Gestionar el estado operativo general de la máquina (Parado, Listo, Producción, CIP, Fallo, Emergencia).
- Coordinar la activación y desactivación de los sub-sistemas principales (
BlenderRun__Control
para producción,CIPMain
para limpieza). - Actuar como punto central para los comandos del operador (HMI) y las señales de interfaz externas (Llenadora, Sala Jarabes).
- Consolidar y gestionar las condiciones de fallo críticas del sistema.
Entradas / Salidas Probables (Interfaz del FB)
- Entradas (
VAR_INPUT
):- Comandos desde HMI (Ej.
StartCmd
,StopCmd
,ResetCmd
,SelectModeCmd
- Podrían venir deHMI_DB
o un UDTHMI_Commands
). - Estado de Emergencia (
EmergencyStopActive
). - Feedback de estado de bloques subordinados (Ej.
RunControl_Status
,CIP_Status
,CriticalFault
). - Señales de habilitación o petición de interfaces externas (Ej.
Filler_Ready
,SyrupRoom_Available
). - Parámetros de configuración relevantes (si no se leen directamente de
Configuration_DB
).
- Comandos desde HMI (Ej.
- Salidas (
VAR_OUTPUT
):- Estado general de la máquina (Ej.
MachineState
,IsRunning
,IsStopped
,IsInCIP
,IsInFault
). Enviado aStatus_DB
/HMI_Status
. - Comandos de habilitación/control para bloques subordinados (Ej.
EnableRunControl
,EnableCIP
,ResetSubsystems
). - Indicaciones de estado para HMI y interfaces externas (Ej.
BlenderReadyForFiller
,AlarmActive
). - Señales de control para actuadores globales si los hubiera (poco común, usualmente se delega).
- Estado general de la máquina (Ej.
Lógica Interna Inferida (VAR
/ VAR_TEMP
/ Lógica SCL)
- Máquina de Estados: El núcleo del FB será probablemente una máquina de estados implementada con una variable (
STAT
) tipoINT
oENUM
y una estructuraCASE
en SCL. Cada estado (Idle
,Ready
,Production
,CIP
,Fault
, etc.) define:- Las acciones a realizar dentro de ese estado (ej. mantener habilitado
BlenderRun__Control
). - Las condiciones (basadas en entradas y estados internos) para transicionar a otros estados.
- Las acciones a realizar dentro de ese estado (ej. mantener habilitado
- Gestión de Modos: Lógica para seleccionar entre
Producción
yCIP
, asegurando que solo uno esté activo y gestionando las transiciones seguras entre ellos. - Coordinación de Bloques: Llamadas a las instancias de los FBs subordinados (
BlenderRun__Control
,CIPMain_Path
,CIPMain_Flood
,PumpsControl
, etc.), pasando los comandos y recibiendo el feedback necesario según el estado actual. - Manejo de Fallos: Agregación de señales de fallo (
Fault
) desde múltiples fuentes. Lógica para determinar si un fallo es crítico y debe detener la operación, llevando la máquina al estadoFault
. Implementación de la lógica deReset
. - Gestión de Totalizadores: Las variables
mResetProductTotTmr
ymResetTotalizerTmr
indican que este FB contiene la lógica para iniciar el reseteo de los totalizadores (posiblemente activando un temporizador o directamente llamando a una función/método enTotalizerCtrl
), probablemente en respuesta a un comando HMI o al final de un ciclo/batch. - Lógica de Interfaz: Procesar las señales de las interfaces externas (Llenadora, Sala Jarabes, CIP) y actualizar las señales de estado/petición correspondientes en los DBs de interfaz.
Instancia DB (BlenderCtrl__Main_DB
)
- Este DB asociado almacena todas las variables estáticas (
VAR_STAT
) delBlenderCtrl__Main
. - Contiene el estado interno persistente entre ciclos de scan:
- El estado actual de la máquina de estados.
- Flags internos (ej.
FirstScan
,ResetRequestPending
). - Instancias de temporizadores (
TON
,TOF
) o contadores (CTU
,CTD
) utilizados dentro del FB. - Copias de comandos o estados importantes.
Implementación SCL
- Se esperaría ver una estructura clara en SCL:
- Declaraciones de
VAR_INPUT
,VAR_OUTPUT
,VAR_IN_OUT
,VAR
,VAR_STAT
,VAR_TEMP
. - Una sentencia
CASE MyState OF ... END_CASE;
para la máquina de estados. - Llamadas a otros FBs/FCs:
InstanceName(Input1 := Value1, Output1 => Target1);
- Lógica condicional
IF...THEN...ELSE...END_IF;
. - Asignaciones
:=
.
- Declaraciones de
En resumen, BlenderCtrl__Main
actúa como el director de orquesta, asegurando que todos los instrumentos (sub-sistemas) toquen en el momento adecuado según la partitura (estado/modo operativo) y respondiendo a las señales del director (HMI) y del entorno (interfaces externas, fallos). Los OBs proporcionan el escenario y el ritmo (ciclo de scan, interrupciones) para que esta orquesta funcione.