FUNCTION_BLOCK "FB_PreMain" { S7_Optimized_Access := 'TRUE' } VERSION : 0.1 VAR_IN_OUT stInOutControlUnitCabinetOF1 : "UDT_MainState"; stInOutControlUnitCabinetOF2 : "UDT_MainState"; END_VAR VAR xAllMainContactorsOk { S7_SetPoint := 'True'} : Bool; xAllReadyToStartOF1 : Bool; xAllReadyToStartOF2 : Bool; xQuitNec : Bool; fbStateMainOF1 : "FB_StateMain"; fbStateMainOF2 : "FB_StateMain"; fbMonMotorProtectionUH01 : "FB_Monitoring"; fbMonMotorProtectionUC011 : "FB_Monitoring"; fbMonMotorProtectionUC0110 : "FB_Monitoring"; fbMonMotorProtectionUC0111 : "FB_Monitoring"; fbMonPhaseFailure : "FB_Monitoring"; fbMonFuse24VUH01 : "FB_Monitoring"; fbMonFuse24VUC011 : "FB_Monitoring"; fbMonFuse400VUH01 : "FB_Monitoring"; fbMonFuse400VUC011 : "FB_Monitoring"; fbMonPressureUH01 : "FB_Monitoring"; fbMonPressureUC011 : "FB_Monitoring"; fbMonMainContactorsUH01 : "FB_Monitoring"; fbMonMainContactorsUC0110 : "FB_Monitoring"; fbMonMainContactorsUC0111 : "FB_Monitoring"; fbMonMainContactorsUC011 : "FB_Monitoring"; fbMonSafetyContactorsExternReserve : "FB_Monitoring"; fbMonSafetyContactorsExternUC061 : "FB_Monitoring"; fbMonFAS : "FB_Monitoring"; // IF from FACP "fire alarm" DI0034 fbMonFPG_Open : "FB_Monitoring"; // Control from FPG fbMonFPG_Fault : "FB_Monitoring"; // Control from FPG fbMonFPG_Fire : "FB_Monitoring"; // Control from FPG fbMonRFID : "FB_Monitoring"; fbMonTiltTeachBoom1 : "FB_Monitoring"; fbMonTiltTeachBoom2 : "FB_Monitoring"; fbMonDistanceFootTeachBoom1 : "FB_Monitoring"; fbMonDistanceFootTeachBoom2 : "FB_Monitoring"; fbMonCommFortnaWCS : "FB_Monitoring"; arESTOPAck { S7_SetPoint := 'False'} : Array[0..15] of "FB_ESTOPhandling"; tOnClarificationTime {InstructionName := 'TON_TIME'; LibVersion := '1.0'} : TON_TIME; Test : String; Result { S7_SetPoint := 'False'} : "UDT_Payload_GOHDRespM"; xStart { S7_SetPoint := 'True'} : Bool; LStream_JsonDeserializer_Instance : "LStream_JsonDeserializer"; typeElement { S7_SetPoint := 'False'} : Array[0..10] of "LStream_typeElement" := [(2, 'DecisionPoint', (), (), ()), (3, 'GIN', (), (), ()), (2, 'Barcode', (), (), ()), (1, 'Actions', (), (), true), ((), (), (), (), ()), ((), (), (), (), ()), ((), (), (), (), ()), ((), (), (), (), ()), ((), (), (), (), ()), ((), (), (), (), ()), ((), (), (), (), ())]; Static_1 : Array[0..1023] of Byte; cnt : UInt; xReInit : Bool; fTrigReIntTime {InstructionName := 'F_TRIG'; LibVersion := '1.0'} : F_TRIG; tOfReIntTime {InstructionName := 'TOF_TIME'; LibVersion := '1.0'} : TOF_TIME; // nach Hochfahren vergeht diese Zeit bis erstmalig Quit END_VAR VAR_TEMP tDebug : Int; nIdx : USInt; END_VAR VAR CONSTANT c_UH01 : Int := 0; // Konstante für ESTOP c_UZ0101 : Int := 1; // Konstante für ESTOP c_UZ0102 : Int := 2; // Konstante für ESTOP c_UZ0103 : Int := 3; // Konstante für ESTOP c_UZ0104 : Int := 4; // Konstante für ESTOP c_UZ0110_1 : Int := 5; // Konstante für ESTOP c_UZ0111_1 : Int := 6; // Konstante für ESTOP c_UC011 : Int := 7; c_UH01_Extern : Int := 8; c_UC011_Extern : Int := 9; END_VAR BEGIN // ------------------------------------------------ // GLOBAL INFORMATION - do before other FB calls // ------------------------------------------------ REGION *******PROVISORISCH******** //Um Frequenzumrichter zu quittieren "DQ0135" := "SF0001"; END_REGION REGION Reinitialisieren #tOfReIntTime(IN := NOT #xReInit, PT := T#10s); IF NOT #xReInit THEN #xReInit := TRUE; END_IF; #fTrigReIntTime(CLK := #tOfReIntTime.Q); END_REGION REGION CycleTime // "DB_MachineGlobal".nLogicCycle := "DB_MachineGlobal".nLogicCycle + 1; #tDebug := RD_SYS_T("DB_MachineGlobal".DTL_TimePLC); // #fbCycleTime("DB_MachineGlobal".nPrevCycle); END_REGION REGION Alarmnummern zurücksetzen IF "DB_MachineGlobal".Cold_Restart THEN "DB_AlarmGlobal".nAlarmNoOffsetGlobal := 10; END_IF; END_REGION REGION Monitoring REGION UH01 REGION Motor Protection UH01 #fbMonMotorProtectionUH01.stSettings.xErrLedIfMachineIsOff := TRUE; #fbMonMotorProtectionUH01.stSettings.xSelfQuit := FALSE; #fbMonMotorProtectionUH01(sInFctnName := 'Motorschutz', sInPrefix := 'UH01', sInAlarmMessage := 'Motorschutz UH01 ausgeloest', sInSuffix := 'FC0057-FC0076', wInTextListId_Function := 3, wInTextListId_Message := 1, xInQuitError := #stInOutControlUnitCabinetOF1.xQuitError, xInSignal := "FC0057" AND "FC0060" AND "FC0061" AND "FC0062" AND "FC0063" AND "FC0064" AND "FC0065" AND "FC0066" AND "FC0067" AND "FC0070" AND "FC0072" AND "FC0074" AND "FC0076", InOutMachineState := #stInOutControlUnitCabinetOF1, stOutHMI => "DB_Interface_HMI".stSystem.stMotorProtection.UH01); END_REGION REGION Phasen #fbMonPhaseFailure.stSettings.xErrLedIfMachineIsOff := TRUE; #fbMonPhaseFailure.stSettings.xSelfQuit := FALSE; #fbMonPhaseFailure(sInFctnName := 'Phasenausfall', sInPrefix := 'UH01', sInAlarmMessage := 'Phase UH01 ausgefallen', sInSuffix := 'DI0005', wInTextListId_Function := 6, wInTextListId_Message := 2, xInQuitError := #stInOutControlUnitCabinetOF1.xQuitError, xInSignal := "DI0005", InOutMachineState := #stInOutControlUnitCabinetOF1, stOutHMI => "DB_Interface_HMI".stSystem.stPhase.UH01_400V); END_REGION REGION 24 V UH01 #fbMonFuse24VUH01.stSettings.xErrLedIfMachineIsOff := TRUE; #fbMonFuse24VUH01.stSettings.xSelfQuit := FALSE; #fbMonFuse24VUH01(sInFctnName := 'Sicherungsfall', sInPrefix := 'UH01 24V', sInAlarmMessage := 'Sicherung UH01 ausgeloest', sInSuffix := 'DI0021-DI0024', wInTextListId_Function := 4, wInTextListId_Message := 3, xInQuitError := #stInOutControlUnitCabinetOF1.xQuitError, xInSignal := "DI0021" AND "DI0022" AND "DI0023" AND "DI0024", InOutMachineState := #stInOutControlUnitCabinetOF1, stOutHMI => "DB_Interface_HMI".stSystem.stFuse.UH01_24V); END_REGION REGION 400 V UH01 #fbMonFuse400VUH01.stSettings.xErrLedIfMachineIsOff := TRUE; #fbMonFuse400VUH01.stSettings.xSelfQuit := FALSE; #fbMonFuse400VUH01(sInFctnName := 'Sicherungsfall', sInPrefix := 'UH01 400V', sInAlarmMessage := 'Sicherung UH01 ausgeloest', sInSuffix := 'DI0006-DI0017', wInTextListId_Function := 4, wInTextListId_Message := 3, xInQuitError := #stInOutControlUnitCabinetOF1.xQuitError, xInSignal := "DI0006" AND "DI0007" AND "DI0010" AND "DI0016" AND "DI0017", InOutMachineState := #stInOutControlUnitCabinetOF1, stOutHMI => "DB_Interface_HMI".stSystem.stFuse.UH01_400V); END_REGION REGION Druckluft UH01 #fbMonPressureUH01.stSettings.xErrLedIfMachineIsOff := TRUE; #fbMonPressureUH01.stSettings.xSelfQuit := FALSE; #fbMonPressureUH01(sInFctnName := 'Druckluftueberwachung', sInPrefix := 'UH01', sInAlarmMessage := 'Druckluft UH01 zu niedrig', sInSuffix := 'BP0004', wInTextListId_Function := 5, wInTextListId_Message := 4, xInQuitError := #stInOutControlUnitCabinetOF1.xQuitError, xInSignal := "BP0004", InOutMachineState := #stInOutControlUnitCabinetOF1, stOutHMI => "DB_Interface_HMI".stSystem.stPressure.UH01); END_REGION REGION Hauptschütze UH01 #fbMonMainContactorsUH01.stSettings.xErrLedIfMachineIsOff := TRUE; #fbMonMainContactorsUH01.stSettings.xSelfQuit := FALSE; #fbMonMainContactorsUH01(sInFctnName := 'Hauptschuetzueberwachung', sInPrefix := 'UH01', sInAlarmMessage := 'Hauptschuetze Fehler', sInSuffix := 'QA0610/QA0611', wInTextListId_Function := 7, wInTextListId_Message := 5, xInQuitError := #stInOutControlUnitCabinetOF1.xQuitError, xInSignal := "DB_InterfaceSafety".stFromSafety.stMainContactorsUH01.xOk, InOutMachineState := #stInOutControlUnitCabinetOF1, stOutHMI => "DB_Interface_HMI".stSystem.stMainContactor.UH01); END_REGION REGION Safetyrelais UH01 Extern #fbMonSafetyContactorsExternReserve.stSettings.xErrLedIfMachineIsOff := TRUE; #fbMonSafetyContactorsExternReserve.stSettings.xSelfQuit := FALSE; #fbMonSafetyContactorsExternReserve(sInFctnName := 'Relaisueberwachung', sInPrefix := 'UH01', sInAlarmMessage := 'Relais Fehler', sInSuffix := 'QA0612/QA0613', wInTextListId_Function := 9, wInTextListId_Message := 9, xInQuitError := #stInOutControlUnitCabinetOF1.xQuitError, xInSignal := "DB_InterfaceSafety".stFromSafety.stSafetyContactorsExternReserve.xOk, InOutMachineState := #stInOutControlUnitCabinetOF1, stOutHMI => "DB_Interface_HMI".stSystem.stMainContactor.UH01ExternReserve); END_REGION END_REGION REGION UC011 REGION Motor Protection UC011 #fbMonMotorProtectionUC011.stSettings.xErrLedIfMachineIsOff := TRUE; #fbMonMotorProtectionUC011.stSettings.xSelfQuit := FALSE; #fbMonMotorProtectionUC011(sInFctnName := 'Motorschutz', sInPrefix := 'UC011', sInAlarmMessage := 'Motorschutz UC011 ausgeloest', sInSuffix := 'FC0140-FC0155', wInTextListId_Function := 3, wInTextListId_Message := 1, xInQuitError := #stInOutControlUnitCabinetOF2.xQuitError OR "SF0117", xInSignal := "FC0140" AND "FC0141" AND "FC0142" AND "FC0143" AND "FC0144" AND "FC0145" AND "FC0146" AND "FC0147" AND "FC0150" AND "FC0151" AND "FC0152" AND "FC0153" AND "FC0154" AND "FC0155", InOutMachineState := #stInOutControlUnitCabinetOF2, stOutHMI => "DB_Interface_HMI".stSystem.stMotorProtection.UC011); END_REGION REGION 24 V UC011 #fbMonFuse24VUC011.stSettings.xErrLedIfMachineIsOff := TRUE; #fbMonFuse24VUC011.stSettings.xSelfQuit := FALSE; #fbMonFuse24VUC011(sInFctnName := 'Sicherungsfall', sInPrefix := 'UC011 24V', sInAlarmMessage := 'Sicherung UC011 ausgeloest', sInSuffix := 'DI0101-DI0102', wInTextListId_Function := 4, wInTextListId_Message := 3, xInQuitError := #stInOutControlUnitCabinetOF2.xQuitError OR "SF0117", xInSignal := "DI0101" AND "DI0102", InOutMachineState := #stInOutControlUnitCabinetOF2, stOutHMI => "DB_Interface_HMI".stSystem.stFuse.UC011_24V); END_REGION REGION 400 V UC011 #fbMonFuse400VUC011.stSettings.xErrLedIfMachineIsOff := TRUE; #fbMonFuse400VUC011.stSettings.xSelfQuit := FALSE; #fbMonFuse400VUC011(sInFctnName := 'Sicherungsfall', sInPrefix := 'UC011 400V', sInAlarmMessage := 'Sicherung UC011 ausgeloest', sInSuffix := 'DI0100', wInTextListId_Function := 4, wInTextListId_Message := 3, xInQuitError := #stInOutControlUnitCabinetOF2.xQuitError OR "SF0117", xInSignal := "DI0100", InOutMachineState := #stInOutControlUnitCabinetOF2, stOutHMI => "DB_Interface_HMI".stSystem.stFuse.UC011_400V); END_REGION REGION Druckluft UC011 #fbMonPressureUC011.stSettings.xErrLedIfMachineIsOff := TRUE; #fbMonPressureUC011.stSettings.xSelfQuit := FALSE; #fbMonPressureUC011(sInFctnName := 'Druckluftueberwachung', sInPrefix := 'UC011', sInAlarmMessage := 'Druckluft UC011 zu niedrig', sInSuffix := 'BP0107', wInTextListId_Function := 5, wInTextListId_Message := 4, xInQuitError := #stInOutControlUnitCabinetOF2.xQuitError OR "SF0117", xInSignal := "BP0107", InOutMachineState := #stInOutControlUnitCabinetOF2, stOutHMI => "DB_Interface_HMI".stSystem.stPressure.UC011); END_REGION REGION Hauptschütze UC011 #fbMonMainContactorsUC011.stSettings.xErrLedIfMachineIsOff := TRUE; #fbMonMainContactorsUC011.stSettings.xSelfQuit := FALSE; #fbMonMainContactorsUC011(sInFctnName := 'Hauptschuetzueberwachung', sInPrefix := 'UC011', sInAlarmMessage := 'Hauptschuetze Fehler', sInSuffix := 'QA0920/QA0921', wInTextListId_Function := 7, wInTextListId_Message := 5, xInQuitError := #stInOutControlUnitCabinetOF2.xQuitError OR "SF0117", xInSignal := "DB_InterfaceSafety".stFromSafety.stMainContactorsUC011.xOk, InOutMachineState := #stInOutControlUnitCabinetOF2, stOutHMI => "DB_Interface_HMI".stSystem.stMainContactor.UC011); END_REGION REGION Safetyrelais UC011 to UC061 #fbMonSafetyContactorsExternUC061.stSettings.xErrLedIfMachineIsOff := TRUE; #fbMonSafetyContactorsExternUC061.stSettings.xSelfQuit := FALSE; #fbMonSafetyContactorsExternUC061(sInFctnName := 'Relaisueberwachung', sInPrefix := 'UC011->UC061', sInAlarmMessage := 'Relais Fehler', sInSuffix := 'QA0922/QA0923', wInTextListId_Function := 9, wInTextListId_Message := 9, xInQuitError := #stInOutControlUnitCabinetOF2.xQuitError, xInSignal := "DB_InterfaceSafety".stFromSafety.stSafetyContactorsExternToUH06.xOk, InOutMachineState := #stInOutControlUnitCabinetOF2, stOutHMI => "DB_Interface_HMI".stSystem.stMainContactor.UC011toUC061); END_REGION END_REGION REGION UC0110 REGION Motor Protection UC0110 #fbMonMotorProtectionUC0110.stSettings.xErrLedIfMachineIsOff := TRUE; #fbMonMotorProtectionUC0110.stSettings.xSelfQuit := FALSE; #fbMonMotorProtectionUC0110(sInFctnName := 'Motorschutz', sInPrefix := 'UC0110', sInAlarmMessage := 'Motorschutz UC0110 ausgeloest', sInSuffix := 'FC0320-FC0321', wInTextListId_Function := 3, wInTextListId_Message := 1, xInQuitError := #stInOutControlUnitCabinetOF1.xQuitError, xInSignal := "FC0320" AND "FC0321", InOutMachineState := #stInOutControlUnitCabinetOF1, stOutHMI => "DB_Interface_HMI".stSystem.stMotorProtection.UC0110); END_REGION REGION Hauptschütze UC0110 #fbMonMainContactorsUC0110.stSettings.xErrLedIfMachineIsOff := TRUE; #fbMonMainContactorsUC0110.stSettings.xSelfQuit := FALSE; #fbMonMainContactorsUC0110(sInFctnName := 'Hauptschuetzueberwachung', sInPrefix := 'UC0110', sInAlarmMessage := 'Hauptschuetze Fehler', sInSuffix := 'QA0660/QA0661', wInTextListId_Function := 7, wInTextListId_Message := 5, xInQuitError := #stInOutControlUnitCabinetOF1.xQuitError, xInSignal := "DB_InterfaceSafety".stFromSafety.stMainContactorsUC0110.xOk, InOutMachineState := #stInOutControlUnitCabinetOF1, stOutHMI => "DB_Interface_HMI".stSystem.stMainContactor.UC0110); END_REGION END_REGION REGION UC0111 REGION Motor Protection UC0111 #fbMonMotorProtectionUC0111.stSettings.xErrLedIfMachineIsOff := TRUE; #fbMonMotorProtectionUC0111.stSettings.xSelfQuit := FALSE; #fbMonMotorProtectionUC0111(sInFctnName := 'Motorschutz', sInPrefix := 'UC0111', sInAlarmMessage := 'Motorschutz UC0111 ausgeloest', sInSuffix := 'FC0380-FC0381', wInTextListId_Function := 3, wInTextListId_Message := 1, xInQuitError := #stInOutControlUnitCabinetOF1.xQuitError, xInSignal := "FC0380" AND "FC0381", InOutMachineState := #stInOutControlUnitCabinetOF1, stOutHMI => "DB_Interface_HMI".stSystem.stMotorProtection.UC0111); END_REGION REGION Hauptschütze UC0111 #fbMonMainContactorsUC0111.stSettings.xErrLedIfMachineIsOff := TRUE; #fbMonMainContactorsUC0111.stSettings.xSelfQuit := FALSE; #fbMonMainContactorsUC0111(sInFctnName := 'Hauptschuetzueberwachung', sInPrefix := 'UC0111', sInAlarmMessage := 'Hauptschuetze Fehler', sInSuffix := 'QA0662/QA0663', wInTextListId_Function := 7, wInTextListId_Message := 5, xInQuitError := #stInOutControlUnitCabinetOF1.xQuitError, xInSignal := "DB_InterfaceSafety".stFromSafety.stMainContactorsUC0111.xOk, InOutMachineState := #stInOutControlUnitCabinetOF1, stOutHMI => "DB_Interface_HMI".stSystem.stMainContactor.UC0111); END_REGION END_REGION REGION Brandschutz Interface REGION FAS #fbMonFAS.stSettings.xErrLedIfMachineIsOff := TRUE; #fbMonFAS.stSettings.xSelfQuit := FALSE; #fbMonFAS(sInFctnName := 'Feueralarm', sInPrefix := 'UH01/FAS', sInAlarmMessage := 'Feueralarm', sInSuffix := 'DI0034', wInTextListId_Function := 8, wInTextListId_Message := 6, xInQuitError := #stInOutControlUnitCabinetOF1.xQuitError OR "SF0002", xInSignal := "DI0034", InOutMachineState := #stInOutControlUnitCabinetOF1, stOutHMI => "DB_Interface_HMI".stSystem.stFireControl.NoFireAlarmFAS); END_REGION REGION FPG open #fbMonFPG_Open.stSettings.xErrLedIfMachineIsOff := TRUE; #fbMonFPG_Open.stSettings.xSelfQuit := FALSE; #fbMonFPG_Open(sInFctnName := 'Feueralarm', sInPrefix := 'UC061->UC011/FD201', sInAlarmMessage := 'Tor nicht offen', sInSuffix := 'DI0112', wInTextListId_Function := 8, wInTextListId_Message := 7, xInQuitError := #stInOutControlUnitCabinetOF1.xQuitError OR "SF0002", xInSignal := "DI0112", InOutMachineState := #stInOutControlUnitCabinetOF1, stOutHMI => "DB_Interface_HMI".stSystem.stFireControl.FPCOpened); END_REGION REGION FPG fault #fbMonFPG_Fault.stSettings.xErrLedIfMachineIsOff := TRUE; #fbMonFPG_Fault.stSettings.xSelfQuit := FALSE; #fbMonFPG_Fault(sInFctnName := 'Feueralarm', sInPrefix := 'UC061->UC011/FD201', sInAlarmMessage := 'Fehler', sInSuffix := 'DI0111', wInTextListId_Function := 8, wInTextListId_Message := 8, xInQuitError := #stInOutControlUnitCabinetOF1.xQuitError OR "SF0002", xInSignal := "DI0111", InOutMachineState := #stInOutControlUnitCabinetOF1, stOutHMI => "DB_Interface_HMI".stSystem.stFireControl.NoFault); END_REGION REGION FPG fire alarm #fbMonFPG_Fire.stSettings.xErrLedIfMachineIsOff := TRUE; #fbMonFPG_Fire.stSettings.xSelfQuit := FALSE; #fbMonFPG_Fire(sInFctnName := 'Feueralarm', sInPrefix := 'UC061->UC011/FD201', sInAlarmMessage := 'Feuer', sInSuffix := 'DI0110', wInTextListId_Function := 8, wInTextListId_Message := 6, xInQuitError := #stInOutControlUnitCabinetOF1.xQuitError OR "SF0002", xInSignal := "DI0110", InOutMachineState := #stInOutControlUnitCabinetOF1, stOutHMI => "DB_Interface_HMI".stSystem.stFireControl.NoFireAlarmFPG); END_REGION END_REGION REGION MISC (nicht für AllReadyToStart) REGION RFID #fbMonRFID.stSettings.xErrLedIfMachineIsOff := TRUE; #fbMonRFID.stSettings.xSelfQuit := TRUE; #fbMonRFID(sInFctnName := 'RFID', sInPrefix := 'UH01', sInSuffix := 'DI0042', wInTextListId_Function := 10000, wInTextListId_Message := 10000, xInQuitError := #stInOutControlUnitCabinetOF1.xQuitError, xInSignal := "DI0042", InOutMachineState := #stInOutControlUnitCabinetOF1); END_REGION REGION Loading Booms #fbMonTiltTeachBoom1.stSettings.xErrLedIfMachineIsOff := TRUE; #fbMonTiltTeachBoom1.stSettings.xSelfQuit := TRUE; #fbMonTiltTeachBoom1(sInFctnName := 'Boom', sInPrefix := 'Boom 1', sInSuffix := '', wInTextListId_Function := 11000, wInTextListId_Message := 11000, xInQuitError := #stInOutControlUnitCabinetOF1.xQuitError, xInSignal := NOT "fbMain_DB".fbLoadingBoom1.fbTiltSensor.xOutTeachNec, InOutMachineState := #stInOutControlUnitCabinetOF1); #fbMonTiltTeachBoom2.stSettings.xErrLedIfMachineIsOff := TRUE; #fbMonTiltTeachBoom2.stSettings.xSelfQuit := TRUE; #fbMonTiltTeachBoom2(sInFctnName := 'Boom', sInPrefix := 'Boom 2', sInSuffix := '', wInTextListId_Function := 11000, wInTextListId_Message := 11000, xInQuitError := #stInOutControlUnitCabinetOF1.xQuitError, xInSignal := NOT "fbMain_DB".fbLoadingBoom2.fbTiltSensor.xOutTeachNec, InOutMachineState := #stInOutControlUnitCabinetOF1); #fbMonDistanceFootTeachBoom1.stSettings.xErrLedIfMachineIsOff := TRUE; #fbMonDistanceFootTeachBoom1.stSettings.xSelfQuit := TRUE; #fbMonDistanceFootTeachBoom1(sInFctnName := 'Boom', sInPrefix := 'Boom 1', sInSuffix := '', wInTextListId_Function := 11000, wInTextListId_Message := 11001, xInQuitError := #stInOutControlUnitCabinetOF1.xQuitError, xInSignal := NOT "fbMain_DB".fbLoadingBoom1.fbDistanceFoot.xOutTeachNec, InOutMachineState := #stInOutControlUnitCabinetOF1); #fbMonDistanceFootTeachBoom2.stSettings.xErrLedIfMachineIsOff := TRUE; #fbMonDistanceFootTeachBoom2.stSettings.xSelfQuit := TRUE; #fbMonDistanceFootTeachBoom2.stSettings.nErrorType := 1; #fbMonDistanceFootTeachBoom2(sInFctnName := 'Boom', sInPrefix := 'Boom 2', sInSuffix := '', wInTextListId_Function := 11000, wInTextListId_Message := 11001, xInQuitError := #stInOutControlUnitCabinetOF1.xQuitError, xInSignal := NOT "fbMain_DB".fbLoadingBoom2.fbDistanceFoot.xOutTeachNec, InOutMachineState := #stInOutControlUnitCabinetOF1); END_REGION REGION TCP-Kommunikation #fbMonCommFortnaWCS.stSettings.xErrLedIfMachineIsOff := TRUE; #fbMonCommFortnaWCS.stSettings.xSelfQuit := TRUE; #fbMonCommFortnaWCS(sInFctnName := 'Kommunikationsfehler', sInPrefix := 'UH01', sInSuffix := 'Fortna WCS', wInTextListId_Function := 20000, wInTextListId_Message := 20000, xInQuitError := #stInOutControlUnitCabinetOF1.xQuitError, xInSignal := "FB_CommunicationWCSBL_DB".fbTeleHandler.xOutConnectionActive, InOutMachineState := #stInOutControlUnitCabinetOF1, stOutHMI => "DB_Interface_HMI".stSystem.stExternal.TCPFortnaWCS); END_REGION END_REGION END_REGION REGION AllReadyToStart REGION OF1 #xAllReadyToStartOF1 := #fbMonPhaseFailure.xOutOk AND #fbMonFuse24VUH01.xOutOk AND #fbMonFuse400VUH01.xOutOk AND #fbMonPressureUH01.xOutOk AND #fbMonMainContactorsUH01.xOutOk AND #fbMonMainContactorsUC0110.xOutOk AND #fbMonMainContactorsUC0111.xOutOk AND #fbMonSafetyContactorsExternReserve.xOutOk AND #fbMonSafetyContactorsExternUC061.xOutOk AND #fbMonFAS.xOutOk AND #fbMonFPG_Fire.xOutOk AND #fbMonFPG_Fault.xOutOk AND #fbMonFPG_Open.xOutOk; END_REGION REGION OF2 #xAllReadyToStartOF2 := #fbMonPhaseFailure.xOutOk AND #fbMonFuse24VUC011.xOutOk AND #fbMonFuse400VUC011.xOutOk AND #fbMonPressureUC011.xOutOk AND #fbMonMainContactorsUC011.xOutOk AND #fbMonSafetyContactorsExternUC061.xOutOk AND #fbMonFAS.xOutOk AND #fbMonFPG_Fire.xOutOk AND #fbMonFPG_Fault.xOutOk AND #fbMonFPG_Open.xOutOk; END_REGION END_REGION REGION StateMain REGION OF1 #fbStateMainOF1.stSettings.xEnableStartUpWarning := TRUE; #fbStateMainOF1.stSettings.tStartUpTime := T#5s; #fbStateMainOF1(xInBtnMachineOn := "SF0001" OR "IBN".xEin, xInBtnMachineNotOff := "SF0000" AND "IBN".xAus, xInBtnTrigMot := "SF0002" OR "IBN".xQuit, xInBtnQuitError := "SF0002" OR "IBN".xQuit, xInAllReadyToStart := #xAllReadyToStartOF1, xInAllInExecute := TRUE, xInAllStarted := TRUE, xInSafetyActive := "DB_InterfaceSafety".stFromSafety.EStopMainOF1.Q, xInAllInSafeState := "DB_InterfaceSafety".stFromSafety.EStopMainOF1.Q, stInOutControlUnitCabinet := #stInOutControlUnitCabinetOF1, stInOutHMI := "DB_Interface_HMI".stStateMachine); END_REGION REGION OF2 #fbStateMainOF2.stSettings.xEnableStartUpWarning := TRUE; #fbStateMainOF2.stSettings.tStartUpTime := T#5s; #fbStateMainOF2(xInBtnMachineOn := "SF0001" OR "IBN".xEin, xInBtnMachineNotOff := "SF0000" AND "IBN".xAus, xInBtnTrigMot := "SF0117" OR "IBN".xQuit, xInBtnQuitError := "SF0117" OR "IBN".xQuit, xInAllReadyToStart := #xAllReadyToStartOF2, xInAllInExecute := TRUE, xInAllStarted := TRUE, xInSafetyActive := "DB_InterfaceSafety".stFromSafety.EStopMainOF2.Q, xInAllInSafeState := "DB_InterfaceSafety".stFromSafety.EStopMainOF2.Q, stInOutControlUnitCabinet := #stInOutControlUnitCabinetOF2, stInOutHMI := "DB_Interface_HMI".stStateMachine); END_REGION END_REGION REGION Interface Safety REGION to Safety "DB_InterfaceSafety".stToSafety.xAckGlob := "IBN".xAckGlob OR #fTrigReIntTime.Q; "DB_InterfaceSafety".stToSafety.xMachineRunningOF1 := #stInOutControlUnitCabinetOF1.xRunning; "DB_InterfaceSafety".stToSafety.xMachineStartingOF1 := #stInOutControlUnitCabinetOF1.xStarting; "DB_InterfaceSafety".stToSafety.xMachineRunningOF2 := #stInOutControlUnitCabinetOF2.xRunning; "DB_InterfaceSafety".stToSafety.xMachineStartingOF2 := #stInOutControlUnitCabinetOF2.xStarting; "DB_InterfaceSafety".stToSafety.xQuitButtonHss := "SF0002" OR "IBN".xQuit OR #stInOutControlUnitCabinetOF1.xQuitError OR #fTrigReIntTime.Q; "DB_InterfaceSafety".stToSafety.xQuitButtonUZ0101 := "SF0031" OR #fTrigReIntTime.Q; "DB_InterfaceSafety".stToSafety.xQuitButtonUZ0102 := "SF0033" OR #fTrigReIntTime.Q; "DB_InterfaceSafety".stToSafety.xQuitButtonUZ0103 := "SF0043" OR #fTrigReIntTime.Q; "DB_InterfaceSafety".stToSafety.xQuitButtonUZ0104 := "SF0054" OR #fTrigReIntTime.Q; "DB_InterfaceSafety".stToSafety.xQuitButtonUC011 := "SF0117" OR "IBN".xQuit OR #stInOutControlUnitCabinetOF1.xQuitError OR #fTrigReIntTime.Q; "DB_InterfaceSafety".stToSafety.stMainContactorsUH01.xFeedback := "DI0013"; "DB_InterfaceSafety".stToSafety.stMainContactorsUC0110.xFeedback := "DI0011"; "DB_InterfaceSafety".stToSafety.stMainContactorsUC0111.xFeedback := "DI0012"; "DB_InterfaceSafety".stToSafety.stMainContactorsUC011.xFeedback := "DI0106"; "DB_InterfaceSafety".stToSafety.stSafetyContactorsExternReserve.xFeedback := "DI0014"; "DB_InterfaceSafety".stToSafety.stSafetyContactorsExternToU06.xFeedback := "DI0114"; END_REGION REGION from Safety END_REGION END_REGION REGION Outputs REGION UH01 //LED Störung (Bei Ampel) // "PF0000" := "fbMain_DB".fbLoadingBoom1.nOutState = 9999 OR "SF0003"; phase //LED Ein "PF0001" := #stInOutControlUnitCabinetOF1.xRunning OR #stInOutControlUnitCabinetOF1.xStartUpWarning OR "SF0003"; //LED Start nachStörung "PF0002" := #arESTOPAck[#c_UH01].xOutLed (* OR NOT #xAllReadyToStart *)OR (#fbMonMotorProtectionUH01.xOutAckReq AND "Clock_1Hz") OR (#fbMonMotorProtectionUC0110.xOutAckReq AND "Clock_1Hz") OR (#fbMonMotorProtectionUC0111.xOutAckReq AND "Clock_1Hz") OR (#fbMonPhaseFailure.xOutAckReq AND "Clock_1Hz") OR (#fbMonFuse24VUH01.xOutAckReq AND "Clock_1Hz") OR (#fbMonFuse400VUH01.xOutAckReq AND "Clock_1Hz") OR (#fbMonPressureUH01.xOutAckReq AND "Clock_1Hz") OR ("fbMain_DB".fbLoadingBoom1.nOutState = 9999 AND "Clock_1Hz") OR ("fbMain_DB".fbLoadingBoom2.nOutState = 9999 AND "Clock_1Hz") OR ("fbMain_DB".TRO115.fbConvVario.fbFingerControl.xOutErrorRasterSensor) OR ("DB_InterfaceSafety".stFromSafety.stMainContactorsUH01.xAckReq AND "Clock_1Hz") OR ("DB_InterfaceSafety".stFromSafety.stMainContactorsUC0110.xAckReq AND "Clock_1Hz") OR ("DB_InterfaceSafety".stFromSafety.stMainContactorsUC0111.xAckReq AND "Clock_1Hz") OR ("DB_InterfaceSafety".stFromSafety.stMainContactorsUC011.xAckReq AND "Clock_1Hz") OR ("DB_InterfaceSafety".stFromSafety.stSafetyContactorsExternReserve.xAckReq AND "Clock_1Hz") OR ("DB_InterfaceSafety".stFromSafety.stSafetyContactorsExternToUH06.xAckReq AND "Clock_1Hz") OR (#fbMonFAS.xOutAckReq AND "Clock_1Hz") OR (#fbMonFPG_Fire.xOutAckReq AND "Clock_1Hz") OR (#fbMonFPG_Fault.xOutAckReq AND "Clock_1Hz") OR (#fbMonFPG_Open.xOutAckReq AND "Clock_1Hz") OR "SF0003"; //LED Druckluft "PF0003" := #fbMonPressureUH01.xOutLedError OR "SF0003"; //LED Motorschutz "PF0004" := #fbMonMotorProtectionUH01.xOutLedError OR #fbMonMotorProtectionUC0110.xOutLedError OR #fbMonMotorProtectionUC0111.xOutLedError OR "SF0003"; //LED Sicherung "PF0005" := #fbMonFuse24VUH01.xOutLedError OR #fbMonFuse400VUH01.xOutLedError OR "SF0003"; //LED Brandfall "PF0006" := "SF0003" OR #fbMonFAS.xOutError OR #fbMonFPG_Fire.xOutError OR #fbMonFPG_Fault.xOutError OR #fbMonFPG_Open.xOutError; //Motor-Freigabe 24V // "DQ0035" := "DQ0033" := "DQ0031" := "DQ0027" := "DQ0025" := #fbMonFuse24VUH00.xOutOk; //Motor-Freigabe 400V // (* "MM0024" := *) "MM0023" := "MM0022" := "MM0021" := "MM0020" := #stInOutControlUnitCabinet.xRunning AND #fbMonFuse400V.xOutOk AND "Main_Safety_RTG1_DB".ESTOP1_Main.Q; //400 V Stützfuß "MA0381" := "MA0321" := #stInOutControlUnitCabinetOF1.xRunning AND "DB_InterfaceSafety".stFromSafety.EStopUZ0110.Q AND NOT "DB_InterfaceSafety".stFromSafety.EStopUZ0110.AckReq AND "DB_InterfaceSafety".stFromSafety.EStopUZ0111.Q AND NOT "DB_InterfaceSafety".stFromSafety.EStopUZ0111.AckReq AND "DB_InterfaceSafety".stFromSafety.EStopUH01.Q AND NOT "DB_InterfaceSafety".stFromSafety.EStopUH01.AckReq; //"Main_Safety_RTG1_DB".ESTOP1_Bumper1.Q AND NOT "Main_Safety_RTG1_DB".ESTOP1_Bumper1.ACK_REQ; REGION Signalampel //E-Stop Signalsäule "PF0020" := NOT "DB_InterfaceSafety".stFromSafety.EStopMainOF1.Q OR "SF0003" OR #fbMonFAS.xOutError OR #fbMonFPG_Fire.xOutError OR #fbMonFPG_Fault.xOutError OR #fbMonFPG_Open.xOutError; //LED Störung + Signalsäule gelb "PF0000" := "PF0021" := //#fbMonFireAlarm.xOutLedError OR #fbMonMotorProtectionUH01.xOutLedError OR #fbMonMotorProtectionUC0110.xOutLedError OR #fbMonMotorProtectionUC0111.xOutLedError OR #fbMonMotorProtectionUC011.xOutLedError OR #fbMonPhaseFailure.xOutLedError OR #fbMonFuse24VUH01.xOutLedError OR #fbMonFuse24VUC011.xOutLedError OR #fbMonFuse400VUH01.xOutLedError OR #fbMonFuse400VUC011.xOutLedError OR #fbMonPressureUH01.xOutLedError OR #fbMonPressureUC011.xOutLedError OR #fbMonMainContactorsUH01.xOutLedError OR #fbMonMainContactorsUC0110.xOutLedError OR #fbMonMainContactorsUC0111.xOutLedError OR #fbMonMainContactorsUC011.xOutLedError OR #fbMonSafetyContactorsExternReserve.xOutLedError OR #fbMonSafetyContactorsExternUC061.xOutLedError OR "fbMain_DB".fbLoadingBoom1.nOutState = 9999 OR "fbMain_DB".fbLoadingBoom2.nOutState = 9999 OR "fbMain_DB".fbLoadingBoom1.fbTiltSensor.xOutTeachNec OR "fbMain_DB".fbLoadingBoom2.fbTiltSensor.xOutTeachNec OR "fbMain_DB".fbLoadingBoom1.fbDistanceFoot.xOutTeachNec OR "fbMain_DB".fbLoadingBoom2.fbDistanceFoot.xOutTeachNec OR "SF0003"; // System Ready "PF0022" := #stInOutControlUnitCabinetOF1.xRunning OR #stInOutControlUnitCabinetOF1.xStartUpWarning OR "SF0003"; //Fehlerhafter MiniTrolley REGION Timer für blaue Ampel #tOnClarificationTime(IN := "fbMain_DB".TRO117.nState > 1000, PT := T#86400s); END_REGION "PF0023" := ("fbMain_DB".TRO117.nState > 1000 AND (#tOnClarificationTime.ET <= T#600s)) OR ("fbMain_DB".TRO117.nState > 1000 AND (#tOnClarificationTime.ET > T#600s AND #tOnClarificationTime.ET <= T#3600s) AND "Clock_1Hz") OR //zwischen 10 Min und 1 h ("fbMain_DB".TRO117.nState > 1000 AND (#tOnClarificationTime.ET > T#3600s AND #tOnClarificationTime.ET <= T#18000s) AND "Clock_2Hz") OR "SF0003"; //OR //zwischen 1 h und 5 h //("fbMain_DB".TRO117.nState > 1000 AND (#tOnClarificationTime.ET > T#18000s) AND "Clock_10Hz") OR "SF0003"; //ab 5 h //Anfahrwarnung "PF0024" := (#stInOutControlUnitCabinetOF1.xStartUpWarning AND "Clock_1Hz") OR (#stInOutControlUnitCabinetOF2.xStartUpWarning AND "Clock_1Hz"); END_REGION END_REGION REGION UC011 //Start nach Störung "PF0117" := #arESTOPAck[#c_UC011].xOutLed OR (#fbMonMotorProtectionUC011.xOutAckReq AND "Clock_1Hz") OR (#fbMonPressureUC011.xOutAckReq AND "Clock_1Hz") OR (#fbMonFuse24VUC011.xOutAckReq AND "Clock_1Hz") OR (#fbMonFuse400VUC011.xOutAckReq AND "Clock_1Hz") OR ("DB_InterfaceSafety".stFromSafety.stSafetyContactorsExternToUH06.xAckReq AND "Clock_1Hz") OR ("fbMain_DB".TRO121.fbConvVario.fbFingerControl.xOutErrorRasterSensor AND "Clock_1Hz") OR ("fbMain_DB".fbCarousel4204.xOutGridError AND "Clock_1Hz") OR "SF0003"; //Druckluft "PF0100" := #fbMonPressureUC011.xOutLedError OR "SF0003"; //Motor Protection "PF0101" := #fbMonMotorProtectionUC011.xOutLedError OR "SF0003"; //Sicherung "PF0102" := #fbMonFuse24VUC011.xOutLedError OR #fbMonFuse400VUC011.xOutLedError OR "SF0003"; END_REGION REGION UZ0101 "PF0030" := #stInOutControlUnitCabinetOF1.xRunning OR #stInOutControlUnitCabinetOF1.xStartUpWarning OR "SF0003"; END_REGION REGION UZ0102 "PF0034" := #stInOutControlUnitCabinetOF1.xRunning OR #stInOutControlUnitCabinetOF1.xStartUpWarning OR "SF0003"; "PF0032" := ("fbMain_DB".TRO117.nState > 1000 AND TRUE) OR "SF0003"(* "fbMain_DB".fbPrioTRO102_116.TODO!! *); END_REGION REGION UZ0103 6-fach Tableau LS1 //LED Ready "PF0040" := #stInOutControlUnitCabinetOF1.xRunning OR #stInOutControlUnitCabinetOF1.xStartUpWarning OR "SF0003"; //LoadingBoom activated //PF0044 in Main //LED Reset "PF0043" := #arESTOPAck[#c_UZ0103].xOutLed OR #arESTOPAck[#c_UZ0110_1].xOutLed OR ("fbMain_DB".fbLoadingBoom1.nOutState = 9999 AND "Clock_1Hz") OR ("fbMain_DB".#fbConveyor0103.xOutGridError AND "Clock_1Hz") OR ("fbMain_DB".#fbCarousel0104.xOutGridError AND "Clock_1Hz") OR ("fbMain_DB".#fbConveyor0106.xOutGridError AND "Clock_1Hz") OR "SF0003"; END_REGION REGION UZ0104 6-fach Tableau LS2 //LED Ready "PF0045" := #stInOutControlUnitCabinetOF1.xRunning OR #stInOutControlUnitCabinetOF1.xStartUpWarning OR "SF0003"; //LoadingBoom activated //PF0055 in Main //LED Reset "PF0054" := #arESTOPAck[#c_UZ0104].xOutLed OR #arESTOPAck[#c_UZ0111_1].xOutLed OR ("fbMain_DB".fbLoadingBoom2.nOutState = 9999 AND "Clock_1Hz") OR ("fbMain_DB".fbConveyor0107.xOutGridError AND "Clock_1Hz") OR ("fbMain_DB".fbCarousel0108.xOutGridError AND "Clock_1Hz") OR ("fbMain_DB".fbConveyor0110.xOutGridError AND "Clock_1Hz") OR "SF0003"; END_REGION REGION Ready-LEDs "PF0120" := "PF0124" := "PF0126" := "PF0130" := #stInOutControlUnitCabinetOF1.xRunning OR #stInOutControlUnitCabinetOF1.xStartUpWarning OR "SF0003"; END_REGION REGION Highway Tableaus REGION UZ1101 "PF0121" := ("fbMain_DB".TRO120.fbConvVario.fbFingerControl.xOutErrorRasterSensor AND "Clock_1Hz") OR ("fbMain_DB".TRO127.fbConvVario.fbFingerControl.xOutErrorRasterSensor AND "Clock_1Hz") OR ("fbMain_DB".TRO128.fbConvVario.fbFingerControl.xOutErrorRasterSensor AND "Clock_1Hz") OR ("fbMain_DB".TRO123.fbConvVario.fbFingerControl.xOutErrorRasterSensor AND "Clock_1Hz") OR ("fbMain_DB".fbCarousel4204.xOutGridError AND "Clock_1Hz") OR "SF0003"; END_REGION REGION UZ1103 "PF0125" := ("fbMain_DB".TRO126.fbConvVario.fbFingerControl.xOutErrorRasterSensor AND "Clock_1Hz") OR ("fbMain_DB".TRO131.fbConvVario.fbFingerControl.xOutErrorRasterSensor AND "Clock_1Hz") OR "SF0003"; END_REGION REGION UZ1104 / UZ1105 "PF0131" := "PF0127" := ("fbMain_DB".TRO133.fbConvVario.fbFingerControl.xOutErrorRasterSensor AND "Clock_1Hz") OR ("fbMain_DB".TRO134.fbConvVario.fbFingerControl.xOutErrorRasterSensor AND "Clock_1Hz") OR "SF0003"; END_REGION END_REGION END_REGION REGION NOT-Halt REGION UH01 #arESTOPAck[#c_UH01](sInAlarmFunction := 'HSS', sInAlarmDevice := 'UH01', sInAlarmMessage := 'Not-Halt aktiv', sInAlarmSuffix := 'PF0002', wInTextListId_Function := 0, wInTextListId_Message := 0, xInAckReqLocal := "DB_InterfaceSafety".stFromSafety.EStopUH01.AckReq, xInEstopOkLocal := "DB_InterfaceSafety".stFromSafety.EStopUH01.Q, xInAckReqGlobal := #arESTOPAck[#c_UZ0101].xOutAckReq OR #arESTOPAck[#c_UC011].xOutAckReq OR #arESTOPAck[#c_UZ0102].xOutAckReq OR // #arESTOPAck[#c_UZ0103].xOutAckReq OR // #arESTOPAck[#c_UZ0104].xOutAckReq OR // #arESTOPAck[#c_UZ0111_1].xOutAckReq OR #arESTOPAck[#c_UZ0110_1].xOutAckReq OR #arESTOPAck[#c_UH01_Extern].xOutAckReq, xInSafetyNotOkGlobal := #arESTOPAck[#c_UZ0101].xOutSafetyNotOk OR #arESTOPAck[#c_UC011].xOutSafetyNotOk OR #arESTOPAck[#c_UZ0102].xOutSafetyNotOk OR // #arESTOPAck[#c_UZ0103].xOutSafetyNotOk OR // #arESTOPAck[#c_UZ0103].xOutSafetyNotOk OR // #arESTOPAck[#c_UZ0111_1].xOutSafetyNotOk OR #arESTOPAck[#c_UZ0110_1].xOutSafetyNotOk OR #arESTOPAck[#c_UH01_Extern].xOutSafetyNotOk, xInMainCabinet := TRUE, // xOutLed => "PF0002", stInOutControlUnitCabinet := #stInOutControlUnitCabinetOF1, stInOutHmiEstopPanel := "DB_Interface_HMI".arEStops[#c_UH01]); END_REGION REGION UH01 Extern Reserve #arESTOPAck[#c_UH01_Extern](sInAlarmDevice := 'UH01_Ext', sInAlarmSuffix := 'PF0002', wInTextListId_Function := 20, wInTextListId_Message := 20, stInOutHmiEstopPanel := "DB_Interface_HMI".arEStops[#c_UH01_Extern], stInOutControlUnitCabinet := #stInOutControlUnitCabinetOF1, xInAckReqLocal := "DB_InterfaceSafety".stFromSafety.EStopExternUH01Reserve.AckReq, xInEstopOkLocal := "DB_InterfaceSafety".stFromSafety.EStopExternUH01Reserve.Q(* AND "DB_InterfaceSafety".stFromSafety.EStopUH01.Q *)); END_REGION REGION UZ0101 #arESTOPAck[#c_UZ0101](sInAlarmFunction := 'Bedientableau', sInAlarmDevice := 'UZ0101', sInAlarmMessage := 'Not-Halt aktiv', sInAlarmSuffix := 'PF0031', wInTextListId_Function := 1, wInTextListId_Message := 0, stInOutHmiEstopPanel := "DB_Interface_HMI".arEStops[#c_UZ0101], stInOutControlUnitCabinet := #stInOutControlUnitCabinetOF1, xInAckReqLocal := "DB_InterfaceSafety".stFromSafety.EStopUZ0101.AckReq, xInEstopOkLocal := "DB_InterfaceSafety".stFromSafety.EStopUZ0101.Q(* AND "DB_InterfaceSafety".stFromSafety.EStopUH01.Q *)); "PF0031" := #arESTOPAck[#c_UZ0101].xOutLed OR ("fbMain_DB".fbCarousel0101.xOutGridError AND "Clock_1Hz") OR "SF0003"; END_REGION REGION UZ0102 #arESTOPAck[#c_UZ0102](sInAlarmFunction := 'Bedientableau', sInAlarmDevice := 'UZ0102', sInAlarmMessage := 'Not-Halt aktiv', sInAlarmSuffix := 'PF0033', wInTextListId_Function := 1, wInTextListId_Message := 0, stInOutHmiEstopPanel := "DB_Interface_HMI".arEStops[#c_UZ0102], stInOutControlUnitCabinet := #stInOutControlUnitCabinetOF1, xInAckReqLocal := "DB_InterfaceSafety".stFromSafety.EStopUZ0102.AckReq, xInEstopOkLocal := "DB_InterfaceSafety".stFromSafety.EStopUZ0102.Q(* AND "DB_InterfaceSafety".stFromSafety.EStopUH01.Q *)); "PF0033" := #arESTOPAck[#c_UZ0102].xOutLed OR ("fbMain_DB".fbCarousel0102.xOutGridError AND "Clock_1Hz") OR "SF0003"; END_REGION REGION UZ0103 //zwei ESTOPs teilen sich eine LED #arESTOPAck[#c_UZ0103](sInAlarmFunction := 'Bedientableau', sInAlarmDevice := 'UZ0103', sInAlarmMessage := 'Not-Halt aktiv', sInAlarmSuffix := 'PF0043', wInTextListId_Function := 1, wInTextListId_Message := 0, stInOutHmiEstopPanel := "DB_Interface_HMI".arEStops[#c_UZ0103], stInOutControlUnitCabinet := #stInOutControlUnitCabinetOF1, xInAckReqLocal := "DB_InterfaceSafety".stFromSafety.EStopUZ0103.AckReq, xInEstopOkLocal := "DB_InterfaceSafety".stFromSafety.EStopUZ0103.Q(* AND "DB_InterfaceSafety".stFromSafety.EStopUH01.Q *)(* , xOutLed => "PF0043" *)); END_REGION REGION UZ0104 //zwei ESTOPs teilen sich eine LED #arESTOPAck[#c_UZ0104](sInAlarmFunction := 'Bedientableau', sInAlarmDevice := 'UZ0104', sInAlarmMessage := 'Not-Halt aktiv', sInAlarmSuffix := 'PF0054', wInTextListId_Function := 1, wInTextListId_Message := 0, stInOutHmiEstopPanel := "DB_Interface_HMI".arEStops[#c_UZ0104], stInOutControlUnitCabinet := #stInOutControlUnitCabinetOF1, xInAckReqLocal := "DB_InterfaceSafety".stFromSafety.EStopUZ0104.AckReq, xInEstopOkLocal := "DB_InterfaceSafety".stFromSafety.EStopUZ0104.Q(* AND "DB_InterfaceSafety".stFromSafety.EStopUH01.Q *)(* ,xOutLed => "PF0054" *)); END_REGION REGION UZ0110_1 //zwei ESTOPs teilen sich eine LED #arESTOPAck[#c_UZ0110_1](sInAlarmFunction := 'Bedientableau', sInAlarmDevice := 'UZ0110_1', sInAlarmMessage := 'Not-Halt aktiv', sInAlarmSuffix := 'PF0043', wInTextListId_Function := 1, wInTextListId_Message := 0, stInOutHmiEstopPanel := "DB_Interface_HMI".arEStops[#c_UZ0110_1], stInOutControlUnitCabinet := #stInOutControlUnitCabinetOF1, xInAckReqLocal := "DB_InterfaceSafety".stFromSafety.EStopUZ0110.AckReq, xInEstopOkLocal := "DB_InterfaceSafety".stFromSafety.EStopUZ0110.Q(* AND "DB_InterfaceSafety".stFromSafety.EStopUH01.Q *)(* ,xOutLed => "PF0043" *)); //PF0043 weiter oben END_REGION REGION UZ0111_1 //zwei ESTOPs teilen sich eine LED #arESTOPAck[#c_UZ0111_1](sInAlarmFunction := 'Bedientableau', sInAlarmDevice := 'UZ0111_1', sInAlarmMessage := 'Not-Halt aktiv', sInAlarmSuffix := 'PF0054', wInTextListId_Function := 1, wInTextListId_Message := 0, stInOutHmiEstopPanel := "DB_Interface_HMI".arEStops[#c_UZ0111_1], stInOutControlUnitCabinet := #stInOutControlUnitCabinetOF1, xInAckReqLocal := "DB_InterfaceSafety".stFromSafety.EStopUZ0111.AckReq, xInEstopOkLocal := "DB_InterfaceSafety".stFromSafety.EStopUZ0111.Q(* AND "DB_InterfaceSafety".stFromSafety.EStopUH01.Q *)(* ,xOutLed => "PF0054" *)); //"PF0054" weiter oben END_REGION REGION UC011 #arESTOPAck[#c_UC011](sInAlarmFunction := 'Unterverteiler', sInAlarmDevice := 'UC011', sInAlarmMessage := 'Not-Halt aktiv', sInAlarmSuffix := 'PF0117', wInTextListId_Function := 2, wInTextListId_Message := 0, xInAckReqLocal := "DB_InterfaceSafety".stFromSafety.EStopUC011.AckReq, xInEstopOkLocal := "DB_InterfaceSafety".stFromSafety.EStopUC011.Q, xInAckReqGlobal := #arESTOPAck[#c_UC011].xOutAckReq, xInSafetyNotOkGlobal := #arESTOPAck[#c_UC011].xOutSafetyNotOk, xInMainCabinet := TRUE, stInOutHmiEstopPanel := "DB_Interface_HMI".arEStops[#c_UC011], stInOutControlUnitCabinet := #stInOutControlUnitCabinetOF2); END_REGION REGION UC011 Extern/UH06 #arESTOPAck[#c_UC011_Extern](sInAlarmDevice := 'UC011_Ext/UH06', sInAlarmSuffix := 'PF0117', wInTextListId_Function := 20, wInTextListId_Message := 20, stInOutHmiEstopPanel := "DB_Interface_HMI".arEStops[#c_UC011_Extern], stInOutControlUnitCabinet := #stInOutControlUnitCabinetOF2, xInAckReqLocal := "DB_InterfaceSafety".stFromSafety.EStopExternFromUH06.AckReq, xInEstopOkLocal := "DB_InterfaceSafety".stFromSafety.EStopExternFromUH06.Q); END_REGION END_REGION REGION SCADA-Interface "FB-OPC_UA_System-Stat_DB"(nInSystemStat := #fbStateMainOF1.nState, //State Main (Running, Idle, Stopped...) xInFireAlarm := (#fbMonFAS.xOutError OR #fbMonFPG_Fire.xOutError), // Nur Feueralarm xInSafetyStop := NOT "DB_InterfaceSafety".stFromSafety.EStopMainOF1.Q, // Not-Halt xInError := "DB_Interface_HMI".nActiveAlarms > 0, //Alle aktiven Meldungen über HMI Interface xInCommunicationError := #fbMonCommFortnaWCS.xOutError, nOutScadaStatus => "DB_Status".System.Status); END_REGION END_FUNCTION_BLOCK