diff --git a/BlenderCtrl__Main.py b/BlenderCtrl__Main.py deleted file mode 100644 index 723f7c8..0000000 --- a/BlenderCtrl__Main.py +++ /dev/null @@ -1,422 +0,0 @@ -class BlenderCtrl__Main: - def __init__(self): - # Initialize variables for BlenderCtrl__Main (FC2000) - # Temp variables - self.All_Auto_RETVAL = 0 # Int - self.Reset_SP_Word_RETVAL = 0 # Int - self.mResetWaterTot = False # Bool - self.mResetSyrupTot = False # Bool - self.mResetCO2Tot = False # Bool - self.mResetProductTot = False # Bool - self.Block_Move_Err = 0 # Int - - # Common system variables - self.AUX_FALSE = False - self.Clock_10ms = False - self.Clock_100ms = False - self.Clock_1s = False - self.Clock_Counter = 0 - self.MachineState = 0 - self.SystemError = False - self.MachineInitialized = False - - # HMI and control variables - self.HMI_PID = None - self.Filler_Head_Variables = None - self.gIN_VoltageOk = False - self.M19000 = False - self.gEmergencyPressed = False - - # System state indicators - self.Air_Pressure_OK = False - self.CO2_Pressure_OK = False - self.System_Pressure_OK = False - self.Temperature_Current = 0.0 - self.Temperature_Max = 0.0 - self.Temperature_Alarm = False - self.Tank_Level = 0.0 - self.Tank_Level_Min = 0.0 - self.Tank_Level_Low = False - - # Mode controls - self.Reset_Command = False - self.Reset_Complete = False - self.Totalizer_Value = 0 - self.HMI_Manual_Mode_Requested = False - self.System_In_Manual_Mode = False - self.System_In_Auto_Mode = False - self.Production_Mode = False - self.CIP_Mode = False - - def run(self): - # Network 1: Clock Generation - self.Clock_Signal() - - # Network 2: Machine Init - self.BlenderCtrl_MachineInit() - - # Network 3: Filler Head - # Procesamiento de variables de cabezal de llenado - if self.AUX_FALSE: - # Implementación del BLKMOV para cabezal - self.Filler_Head_Variables.FillerHead = self.HMI_PID.PPM303 - self.Block_Move_Err = self.resultado_operacion - - # Network 4: Emergency Pressed - # Control de parada de emergencia - if self.gIN_VoltageOk and not self.M19000: - self.gEmergencyPressed = True - - # Network 5: Air and CO2 pressure ok and auxiliary ok - # Verificación de presión de CO2 y aire - if self.Air_Pressure_OK and self.CO2_Pressure_OK: - self.System_Pressure_OK = True - - # Network 6: Blender State Num - # Control del estado del mezclador - if self.System_Pressure_OK: - if self.Production_Mode: - self.MachineState = 1 # Production state - elif self.CIP_Mode: - self.MachineState = 2 # CIP state - else: - self.MachineState = 0 # Idle state - - # Network 7: Delay Power On - # Retardo al encendido para estabilización - if self.Clock_1s: - self.Power_On_Delay_Counter += 1 - if self.Power_On_Delay_Counter >= 5: # 5 segundos de retardo - self.System_Ready = True - - # Network 8: Production Mode - # Activación del modo de producción - if self.Production_Mode_Request and self.System_Ready and not self.CIP_Mode: - self.Production_Mode = True - self.CIP_Mode = False - - # Network 9: CIp Mode - # Activación del modo de limpieza CIP - if self.CIP_Mode_Request and self.System_Ready and not self.Production_Mode: - self.CIP_Mode = True - self.Production_Mode = False - - # Network 10: Error Faults - # Gestión de errores del sistema - if self.Error_Detected or self.Safety_Fault: - self.SystemError = True - self.Error_Reset_Required = True - - # Network 11: Filler Bottle Count Used to push Product - # Control de conteo de botellas para empujar producto - if self.Bottle_Detected: - self.Bottle_Counter += 1 - if ( - self.Production_Mode - and self.Bottle_Counter >= self.Min_Bottles_For_Push - ): - self.Start_Product_Push = True - - # Network 12: Water Bypass Enable - # Habilitación de bypass de agua - if self.Water_Bypass_Request and self.System_In_Manual_Mode: - self.Water_Bypass_Enabled = True - - # Network 13: Still Water Bypass - # Control de bypass de agua sin gas - if self.Still_Water_Request and self.Water_Bypass_Enabled: - self.Open_Still_Water_Valve = True - - # Network 14: Manual Syrup Drain Valve Open - Operator Alarm - # Alarma de válvula de drenaje de jarabe abierta manualmente - if self.Syrup_Drain_Valve_Open and self.Production_Mode: - self.Syrup_Drain_Open_Alarm = True - self.Operator_Attention_Required = True - - # Network 15: Manual Syrup Drain Valve Open - Operator Alarm - # Redundancia para alarma de válvula de drenaje - if self.Syrup_Drain_Open_Alarm: - self.Flash_HMI_Warning() - - # Network 16: Maselli Control - # Control del sistema Maselli de medición Brix - self.Maselli_Control() - - # Network 17: mPDS Control - # Control del sistema mPDS - self.mPDS_Control() - - # Network 18: mPDS Syrup Control - # Control de jarabe mediante mPDS - self.mPDS_Syrup_Control() - - # Network 19: Co2 Analog Input - # Lectura de entrada analógica de CO2 - self.GetProdBrixCO2_FromAn() - - # Network 20: Quality - # Control de calidad del producto - self.Quality_Check() - - # Network 21: Input Data - # Procesamiento de datos de entrada - self.Process_Input_Data() - - # Network 22: Sel Brix Source Check - # Verificación de fuente Brix seleccionada - if self.Brix_Source_Selected == 1: - self.Use_Maselli_Brix() - elif self.Brix_Source_Selected == 2: - self.Use_mPDS_Brix() - - # Network 23: Check Water Cooling System Temperature - # Control de temperatura del sistema de enfriamiento de agua - if self.Temperature_Current > self.Temperature_Max: - self.Temperature_Alarm = True - self.Activate_Cooling() - - # Network 24: Tank Level - # Monitoreo de nivel de tanque - if self.Tank_Level < self.Tank_Level_Min: - self.Tank_Level_Low = True - self.Start_Tank_Fill = True - - # Network 25: Production ONS - # One-Shot para inicio de producción - if self.Production_Mode and not self.last_Production_Mode: - self.Production_Initialize() - self.Recipe_Load() - self.last_Production_Mode = self.Production_Mode - - # Network 26: Blender Prod Mode Init - # Inicialización del modo de producción del mezclador - if self.Production_Mode and not self.Production_Initialized: - self.Blender_Prod_Mode_Init() - self.Production_Initialized = True - - # Network 27: Rinse ONS - # One-Shot para enjuague - if self.Rinse_Request and not self.last_Rinse_Request: - self.Start_Rinse_Sequence() - self.last_Rinse_Request = self.Rinse_Request - - # Network 28: CIP ONS - # One-Shot para inicio de CIP - if self.CIP_Mode and not self.last_CIP_Mode: - self.CIP_Initialize() - self.last_CIP_Mode = self.CIP_Mode - - # Network 29: CIp Mode Init - # Inicialización del modo CIP - if self.CIP_Mode and not self.CIP_Initialized: - self.Blender_CIP_Mode_Init() - self.CIP_Initialized = True - - # Network 30: Reset SPWords - # Reseteo de palabras SP - self.Reset_SP_Words() - - # Network 31: Blender Run Control - # Control de funcionamiento del mezclador - self.Blender_Run_Control() - - # Network 32: Tank Pressure Control - # Control de presión del tanque - self.Tank_Pressure_Control() - - # Network 33: Balaiage - # Control de barrido (Balaiage) - self.Balaiage_Control() - - # Network 34: First Production - # Control para primera producción - self.First_Production() - - # Network 35: CIP MAIN Calling - # Llamada principal al sistema CIP - if self.CIP_Mode: - self.CIP_Main() - - # Network 36: Blender Rinse - # Enjuague del mezclador - self.Blender_Rinse() - - # Network 37: Safeties - # Control de seguridades - self.Safeties() - - # Network 38: Instrument Scanner - # Escáner de instrumentos - self.Instrument_Scanner() - - # Network 39: Vacuum Control - # Control de vacío - self.Vacuum_Control() - - # Network 40: Syrup Room Control - # Control de sala de jarabes - self.Syrup_Room_Control() - - # Network 41: Blend Procedure Data - # Datos de procedimiento de mezcla - self.Blend_Procedure_Data() - - # Network 42: Pneumatic Valve Control - # Control de válvulas neumáticas - self.Pneumatic_Valve_Control() - - # Network 43: Pumps Control - # Control de bombas - self.Pumps_Control() - - # Network 44: Prod Report Manager - # Gestor de informes de producción - self.Prod_Report_Manager() - - # Network 45: Outputs - # Control de salidas - self.Manage_Outputs() - - # Network 46: SLIM BLOCK - # Bloque SLIM - self.SLIM_Block() - - # Network 47: Interlocking Panel 1 - # Panel de enclavamiento 1 - self.Interlocking_Panel() - - # Network 48: Filler Control - # Control de llenadora - self.Filler_Control() - - # Network 49: Blender Ctrl Update PWORD - # Actualización de PWORD del controlador de mezcla - self.Blender_Ctrl_Update_PWORD() - - # Network 50: ResetTotalizer - # Reseteo del totalizador general - if self.Reset_Command: - self.Totalizer_Value = 0 - self.Reset_Complete = True - - # Network 51: ResetWaterTot - # Reseteo del totalizador de agua - if self.mResetWaterTot: - self.Water_Totalizer = 0 - self.mResetWaterTot = False - - # Network 52: Water VFM Reset Totalizer - # Reseteo del totalizador VFM de agua - if self.Reset_Water_VFM_Request: - self.Reset_Water_VFM() - self.Reset_Water_VFM_Request = False - - # Network 53: ResetCO2Tot - # Reseteo del totalizador de CO2 - if self.mResetCO2Tot: - self.CO2_Totalizer = 0 - self.mResetCO2Tot = False - - # Network 54: Syrup MFM Reset Totalizer - # Reseteo del totalizador MFM de jarabe - if self.Reset_Syrup_MFM_Request: - self.Reset_Syrup_MFM() - self.Reset_Syrup_MFM_Request = False - - # Network 55: ResetProductTot - # Reseteo del totalizador de producto - if self.mResetProductTot: - self.Product_Totalizer = 0 - self.mResetProductTot = False - - # Network 56: CO2 MFM Reset Tot - # Reseteo del totalizador MFM de CO2 - if self.Reset_CO2_MFM_Request: - self.Reset_CO2_MFM() - self.Reset_CO2_MFM_Request = False - - # Network 57: ResetCO2Tot - # Duplicado - Reseteo del totalizador de CO2 - if self.Reset_CO2_Tot_Request: - self.CO2_Alt_Totalizer = 0 - self.Reset_CO2_Tot_Request = False - - # Network 58: Reset Totalizer - # Reseteo general de totalizadores - if self.Master_Reset_Request: - self.All_Totalizers_Reset() - self.Master_Reset_Request = False - - # Network 59: Reset Totalizer - # Reseteo adicional de totalizadores - if self.Alternative_Reset_Request: - self.Alternative_Totalizers_Reset() - self.Alternative_Reset_Request = False - - # Network 60: Blender Ctrl Command - # Comando de control del mezclador - self.Blender_Ctrl_Command() - - # Network 61: DP Global Diag - # Diagnóstico global DP - self.DP_Global_Diag() - - # Network 62: Profibus - # Gestión de Profibus - self.Profibus_Management() - - # Network 63: Valve Fault - # Fallo de válvula - if self.Valve_Error_Detected: - self.Handle_Valve_Fault() - self.SystemError = True - - # Network 64: All Auto - # Verificación de modo automático completo - self.All_Auto_RETVAL = self.All_Auto_Check() - - # Network 65: Ctrl HMI Manual Active - # Control de HMI en modo manual activo - if self.HMI_Manual_Mode_Requested: - self.System_In_Manual_Mode = True - self.System_In_Auto_Mode = False - - # Network 66: Mod Copy Recipe - # Copia de receta - if self.Copy_Recipe_Request: - self.Mod_Copy_Recipe() - self.Copy_Recipe_Complete = True - - # Network 67: to HMI - Recipe Management - # Gestión de recetas para HMI - self.Recipe_To_HMI() - - # Network 68: Recipe Calculation - # Cálculo de receta - self.Recipe_Calculation() - - def Clock_Signal(self): - # Clock generation implementation - # This generates the system timing signals - self.Clock_10ms = not self.Clock_10ms - - # Generate 100ms and 1s clock signals - if self.Clock_Counter % 10 == 0: - self.Clock_100ms = not self.Clock_100ms - - if self.Clock_Counter % 100 == 0: - self.Clock_1s = not self.Clock_1s - self.Clock_Counter = 0 - - self.Clock_Counter += 1 - - def BlenderCtrl_MachineInit(self): - # Initialize blender machine state - if not self.MachineInitialized: - self.MachineState = 0 # IDLE state - self.SystemError = False - self.MachineInitialized = True - self.Production_Mode = False - self.CIP_Mode = False - self.System_In_Auto_Mode = False - self.System_In_Manual_Mode = False diff --git a/FC2040.txt b/FC2040.txt deleted file mode 100644 index 6b9588a..0000000 Binary files a/FC2040.txt and /dev/null differ