From c85c525c25f374fc2304f8550aa6189fa2c7ec6d Mon Sep 17 00:00:00 2001 From: Thomas Molina Date: Mon, 22 Jun 2026 16:22:42 +0200 Subject: [PATCH] erster Baustein KF00 testweise exportiert --- .vci/workspace.vci.config | 1 + .vci/workspace.vci.exportFormats.config | 15 + .../FB/Misc/udt_InterruptParameter_1.liblink | 2 + .../2_ILSLib/UDT/Carrier/stCarrierPin.liblink | 2 + .../2_ILSLib/UDT/Carrier/stPinValues.liblink | 2 + .../stConveyorStationPos.liblink | 2 + .../stConveyorStations.liblink | 2 + .../stConveyorStationsData.liblink | 2 + .../PriorityManager/UDT_PrioParameter.liblink | 2 + .../2_ILSLib/UDT/Switch/IntfSwitch.liblink | 2 + .../2_ILSLib/UDT/Switch/S2MSwitch.liblink | 2 + .../UDT/Switch/SettingsSwitch.liblink | 2 + .../HMI/UDT_HMI_StateMachine.liblink | 2 + .../StateMain/UDT/UDT_MainState.liblink | 2 + .../Barcode-Reader/UDT_BarcodeReader.liblink | 2 + .../UDT_SettingsBarcodeReader.liblink | 2 + .../Barcode-Reader/stCognexInterface.liblink | 2 + .../Barcode-Reader/stHMI_BRCognexDM.liblink | 2 + .../Sensors/UDT_HMI_Sensor.liblink | 2 + .../Sensors/UDT_HMI_Sensor_Config.liblink | 2 + .../Sensors/UDT_HMI_Sensor_Control.liblink | 2 + .../110_PROFINET/Sensors/UDT_Sensor.liblink | 2 + .../160_Monitoring/UDT/DataLogBuffer.liblink | 2 + .../160_Monitoring/UDT_HMI_Monitoring.liblink | 2 + .../TCP/UDT/UDT_TelegramData.liblink | 2 + .../TCP/UDT/UDT_TelegramData_Send.liblink | 2 + .../TCP/UDT/UDT_TelegramDefinition.liblink | 2 + .../180_Safety/UDT_SafetyInterface.liblink | 2 + .../Carrier/stCarrierLocation.xml | 62 + .../CarrierStatisticsStandard.xml | 63 + .../stConveyorStationCarrier_Log.xml | 100 + .../EventCorrection/stEventLog.xml | 63 + .../EventCorrection/stEventLogAbrufSeq.xml | 66 + .../stEventLogAbrufSeqResponse.xml | 63 + .../EventCorrection/stEventStepChange.xml | 70 + .../Payload/UDT_Payload_CRCanM.liblink | 2 + .../Payload/UDT_Payload_CRRespM.liblink | 2 + .../Payload/UDT_Payload_CReqM.liblink | 2 + .../Payload/UDT_Payload_CSRespM.liblink | 2 + .../Payload/UDT_Payload_CTMP.liblink | 2 + .../Payload/UDT_Payload_ECNT.liblink | 2 + .../Payload/UDT_Payload_GOHDReqM.liblink | 2 + .../Payload/UDT_Payload_GOHDRespM.liblink | 2 + .../Payload/UDT_Payload_GOHDUM.liblink | 2 + .../Payload/UDT_Payload_INDX.liblink | 2 + .../Payload/UDT_Payload_UNLDResp.liblink | 2 + .../Payload/UDT_Payload_WSAD.liblink | 2 + .../Telegram/UDT_Telegram_CRCanM.liblink | 2 + .../Telegram/UDT_Telegram_CRRespM.liblink | 2 + .../Telegram/UDT_Telegram_CReqM.liblink | 2 + .../Telegram/UDT_Telegram_CSRespM.liblink | 2 + .../Telegram/UDT_Telegram_CTMP.liblink | 2 + .../Telegram/UDT_Telegram_ECNT.liblink | 2 + .../Telegram/UDT_Telegram_GOHDReqM.liblink | 2 + .../Telegram/UDT_Telegram_GOHDRespM.liblink | 2 + .../Telegram/UDT_Telegram_GOHDUM.liblink | 2 + .../Telegram/UDT_Telegram_INDX.liblink | 2 + .../Telegram/UDT_Telegram_UNLDResp.liblink | 2 + .../Telegram/UDT_Telegram_WSAD.liblink | 2 + .../Fortna-WES-WCS/UDT_Header.liblink | 2 + .../Fortna-WES-WCS/UDT_Workstation.liblink | 2 + .../PriorityManager/UDT_MTRO_Prio.liblink | 2 + .../PriorityManager/UDT_Request.liblink | 2 + .../PriorityManager/UDT_Response.liblink | 2 + .../ILSLib/Separator/IntfSeparator.liblink | 2 + .../Separator/SettingsSeparator.liblink | 2 + .../Separator/UDT_HMI_Separator.liblink | 2 + .../Separator/UDT_HMI_SeparatorConfig.liblink | 2 + .../UDT_HMI_SeparatorControl.liblink | 2 + .../Separator/UDT_HMI_SeparatorError.liblink | 2 + .../Separator/UDT_HMI_SeparatorStatus.liblink | 2 + .../ILSLib/UDT/stCarrier.liblink | 2 + .../ILSLib/UDT/stEventBookingInfo.liblink | 2 + .../ILSLib/UDT/stEventCorrectionInfo.liblink | 2 + .../ILSLib/UDT/stEventScanInfo.liblink | 2 + .../ILSLib/UDT/stSimuJamConfig.liblink | 2 + .../PLC-Datentypen/ILSLib/UDT_HMI_TRO.liblink | 2 + .../ILSLib/UDT_TROConfig.liblink | 2 + .../PLC-Datentypen/ILSLib/UDT_TROCtrl.liblink | 2 + .../ILSLib/UDT_TROState.liblink | 2 + .../ILSLib/Vario/SettingsVario.liblink | 2 + .../UDT_SettingsVarioFingerMonitoring.liblink | 2 + .../ILSLib/Vario/UDT_Vario.liblink | 2 + .../ILSLib/Vario/UDT_Vario_Config.liblink | 2 + .../ILSLib/Vario/UDT_Vario_Control.liblink | 2 + .../ILSLib/Vario/UDT_Vario_Status.liblink | 2 + .../IO_Device_UH01_Data.xml | 135 + .../IO_Device_UH02_Data.xml | 233 + .../IO_Device_UH03_Data.xml | 260 + .../IO_Device_UH04_Data.xml | 115 + .../IO_Device_UH05_Data.xml | 157 + .../LCom/LCom_typeConfig.liblink | 2 + .../LCom/LCom_typeDiagnostics.liblink | 2 + .../PLC-Datentypen/LCom_typeComUserData.xml | 62 + .../DataTypes/LStream_typeElement.liblink | 2 + .../PLC-Datentypen/Mewa/IntfMainTRONEU.xml | 85 + .../Mewa/MFRComu/M2S/M2SMainTro_ST.xml | 80 + .../Mewa/MFRComu/M2S/M2SMainTro_Single.xml | 75 + .../Mewa/MFRComu/S2M/S2MSeparator.xml | 142 + .../typeApplicationDescription.xml | 135 + .../OpcUaDiagnostics/typeBuildInfo.xml | 120 + .../OpcUaDiagnostics/typeLocalizedText.xml | 90 + .../OpcUaDiagnostics/typeOperationLimits.xml | 130 + .../OpcUaDiagnostics/typeServer.xml | 101 + .../typeServerCapabilities.xml | 147 + .../typeServerDiagnostics.xml | 88 + .../typeServerDiagnosticsSummary.xml | 180 + .../OpcUaDiagnostics/typeServerStatus.xml | 124 + .../OpcUaDiagnostics/typeServiceCounter.xml | 80 + .../typeSessionDiagnostics.xml | 490 + .../typeSessionSecurityDiagnosticsData.xml | 152 + .../OpcUaDiagnostics/typeSimaticDevice.xml | 174 + .../typeSubscriptionDiagnostics.xml | 370 + .../Storage/stJamConfig.liblink | 2 + .../PLC-Datentypen/Storage/stJamData.liblink | 2 + .../Storage/stJamStatus.liblink | 2 + .../Storage/stStorageConfig.liblink | 2 + .../Storage/stStorageData.liblink | 2 + .../PLC-Datentypen/Storage/stStorageLine.xml | 86 + .../Storage/stStorageLineB1.xml | 89 + .../Storage/stStorageStatus.liblink | 2 + .../TRO_Manager/IntfTroManager.xml | 68 + .../PLC-Datentypen/UDT_GOHStatus.liblink | 2 + .../VisuLib/UDT_HMI_Conveyor.liblink | 2 + .../VisuLib/UDT_HMI_JamConfig.liblink | 2 + .../VisuLib/UDT_HMI_JamData.liblink | 2 + .../VisuLib/UDT_HMI_JamStatus.liblink | 2 + .../VisuLib/UDT_HMI_StorageConfig.liblink | 2 + .../VisuLib/UDT_HMI_StorageData.liblink | 2 + .../VisuLib/UDT_HMI_StorageStatus.liblink | 2 + .../VisuLib/UDT_HMI_TRO_PinStore.liblink | 2 + .../VisuLib/UDT_Panel_EmergencyStop.liblink | 2 + .../PLC-Datentypen/VisuLib/UDT_TCP.liblink | 2 + .../VisuLib/UDT_TCP_Param.liblink | 2 + .../VisuLib/UDT_UnloadingStation.liblink | 2 + .../VisuLib/UDT_Visu_Jam_CarMove.liblink | 2 + .../VisuLib/UDT_Visu_Jam_List.liblink | 2 + .../_AI/HMI/udt_ClearingStationHMI.xml | 110 + .../_AI/HMI/udt_LengtMeasurementHMI.xml | 70 + .../_Molina Test/Carrier/stCarrierTest_x.xml | 65 + .../_Molina Test/Jam/stJamConfigTestHJ.xml | 72 + .../_Molina Test/Jam/stJamDataTestHJ.xml | 76 + .../_Molina Test/Jam/stJamStatusTestHJ.xml | 71 + .../_Testumgebung/CarrierLeaveStore.xml | 75 + .../_Testumgebung/CarrierStatisticsStore.xml | 84 + .../PLC-Datentypen/_Testumgebung/ReqData.xml | 61 + .../_Testumgebung/SearchResult.xml | 67 + .../PLC-Datentypen/udt_InterruptParameter.xml | 64 + .../PLC-Datentypen/udt_SSCCMeasurement.xml | 70 + .../PLC-Variablen/Ausgänge_20250902.xml | 104 + .../PLC-Variablen/Ausgänge_Import.xml | 5064 ++++++ .../Barcode-Leser/BarcodeLeser.xml | 321 + .../PLC-Variablen/Barcode-Leser/bx1100.xml | 2057 +++ .../PLC-Variablen/Barcode-Leser/bx1101.xml | 2057 +++ .../PLC-Variablen/Barcode-Leser/bx1102.xml | 2057 +++ .../PLC-Variablen/Barcode-Leser/bx1103.xml | 2057 +++ .../PLC-Variablen/Barcode-Leser/bx1104.xml | 2057 +++ .../PLC-Variablen/Barcode-Leser/bx1105.xml | 2057 +++ .../PLC-Variablen/Barcode-Leser/bx1106.xml | 2057 +++ .../PLC-Variablen/Barcode-Leser/bx1107.xml | 2212 +++ .../PLC-Variablen/Barcode-Leser/bx1108.xml | 2212 +++ .../BaseSystemLib/960_Logging.xml | 228 + .../GlobVarLib_Communications.xml | 197 + .../PLC-Variablen/Diagnostics/Diagnostics.xml | 166 + .../PLC-Variablen/Eingänge_20250902.xml | 941 + .../PLC-Variablen/Eingänge_Import.xml | 14395 ++++++++++++++++ .../FortnaCommunication/Actions.xml | 73 + .../FortnaCommunication/DecisionPoints.xml | 135 + .../FortnaCommunication/PLCIDs.xml | 42 + .../FortnaCommunication/ReasonCodes.xml | 42 + .../PLC-Variablen/ILSLib/C_ILS_STRO_Sep.xml | 569 + .../PLC-Variablen/INBOUND_Motors.xml | 352 + .../RECEIVE/IO_Device_FROM_UH02.xml | 42 + .../RECEIVE/IO_Device_FROM_UH03.xml | 42 + .../RECEIVE/IO_Device_FROM_UH04.xml | 42 + .../RECEIVE/IO_Device_FROM_UH05.xml | 42 + .../SEND/IO_Device_TO_UH02.xml | 166 + .../SEND/IO_Device_TO_UH03.xml | 166 + .../SEND/IO_Device_TO_UH04.xml | 166 + .../SEND/IO_Device_TO_UH05.xml | 166 + .../PLC-Variablen/IO_Link_Sensor.xml | 135 + .../Konstanten Schrittketten/1Sep.xml | 1127 ++ .../Konstanten Schrittketten/1Sep1Switch.xml | 631 + .../Konstanten Schrittketten/2Sep1Switch.xml | 631 + .../ConveyorVario.xml | 507 + .../MainTRO ReasonForStop.xml | 507 + .../Konstanten TRO_Devices/MainTros.xml | 1189 ++ .../Konstanten TRO_Devices/Separatoren.xml | 972 ++ .../Konstanten TRO_Devices/Switches.xml | 166 + =A01+UH01-KF00/PLC-Variablen/Konstanten.xml | 755 + .../Konstanten/Destinations_Inbound.xml | 166 + .../Konstanten/Destinations_Lager.xml | 383 + .../Konstanten/Destinations_Level2.xml | 166 + .../PLC-Variablen/Konstanten/Encoder.xml | 42 + .../PLC-Variablen/Konstanten/Jamgrenzen.xml | 1747 ++ .../PLC-Variablen/Konstanten/Motors.xml | 1065 ++ .../PLC-Variablen/Konstanten/Separator_2.xml | 569 + .../PLC-Variablen/Konstanten/Storage.xml | 383 + .../PLC-Variablen/Konstanten/Switch_1.xml | 290 + .../PLC-Variablen/Konstanten/Zeiten.xml | 321 + .../Konstanten/stConveyorStations.xml | 1127 ++ .../PLC-Variablen/LCom_Constants.xml | 1468 ++ .../PLC-Variablen/OpcUaStatusCodes.xml | 7327 ++++++++ =A01+UH01-KF00/PLC-Variablen/Simulation.xml | 42 + .../Standard-Variablentabelle.xml | 724 + .../PLC-Variablen/Statistics/Statistics.xml | 1220 ++ .../000_Global/DB_AlarmGlobal.xml | 75 + .../000_Global/DB_GLOB_TroState.xml | 69 + .../000_Global/DB_MachineGlobal.xml | 155 + .../000_Global/DB_Statistics.xml | 102 + .../050_Sensors/DB_Inputs.xml | 65 + .../050_Sensors/FB_CallSensors.scl | 1214 ++ .../050_Sensors/fbCallSensors_DB.xml | 75 + .../075_PreMain/FB_PreMain.scl | 1020 ++ .../075_PreMain/fbPreMain_DB.xml | 270 + .../Programmbausteine/100_Main/FB_Main.scl | 3100 ++++ .../Programmbausteine/100_Main/fbMain_DB.xml | 358 + .../100_Common/FB_Blinker.liblink | 2 + .../LGF/FIFO/FC_FIFO_Append.liblink | 2 + .../LGF/FIFO/FC_FIFO_GetFirst.liblink | 2 + .../100_Common/LGF/FIFO/LGF_FIFO.liblink | 2 + .../100_Common/StateMain/FB_StateMain.liblink | 2 + .../StateManager/FB_StateManager.liblink | 2 + .../FB_BarcodeReaderCognex.liblink | 2 + .../FB_SsccBarcodeReader.liblink | 2 + .../Barcode-Reader/FB_SsccReading.scl | 57 + .../Barcode-Reader/FC_GetAlarmNo.liblink | 2 + .../Barcode-Reader/FC_MRoundINT.liblink | 2 + .../Sensors/FB_SensorInput.liblink | 2 + .../160_Monitoring/FB_Monitoring.liblink | 2 + .../160_Monitoring/FB_SetAlarmAndLog.liblink | 2 + .../160_Monitoring/dbDataLogBuffer.xml | 72 + .../TCP/FB_TCP_LCOM_TeleHandler.scl | 624 + .../TCP/TeleHandler/FB_EventLog_Root.liblink | 2 + .../TCP/TeleHandler/FC_DateAsString.liblink | 2 + .../TeleHandler/FC_Loglevel_to_String.liblink | 2 + .../TCP/TeleHandler/FC_TimeAsString.liblink | 2 + .../Parser/FC_ParseCheckForEnd.liblink | 2 + .../Parser/FC_ParseCheckForStart.liblink | 2 + .../180_Safety/FB_ESTOPhandling.liblink | 2 + .../200_MFR/DB_PriorityLogic.xml | 75 + .../200_MFR/DB_Prozessdaten.xml | 176 + .../200_MFR/FB_PriorityLogic.scl | 77 + .../200_MFR/FC_CARR_GLOB_CORRECTION.scl | 568 + .../Programmbausteine/200_MFR/FC_ClearJam.scl | 53 + .../200_MFR/FC_Direction.scl | 71 + .../Programmbausteine/200_MFR/FC_PutToHj.scl | 92 + .../200_MFR/Fb_PriorityManagerV2.liblink | 2 + .../2_ILSLib/FB/Conveyor/FB_Conveyor.liblink | 2 + .../2_ILSLib/FB/FB_CarrAccumulate1Sep.liblink | 2 + .../2_ILSLib/FB/FB_EventLog_Booking.liblink | 2 + .../FB/FB_EventLog_Correction.liblink | 2 + .../2_ILSLib/FB/FB_EventLog_Scan.liblink | 2 + .../2_ILSLib/FB/FC_Ean8_CheckDigit.liblink | 2 + .../2_ILSLib/FB/MTRO/FB_ILS_MTRO_1Sep.liblink | 2 + .../FB/MTRO/FB_ILS_MTRO_1Sep1Swi.liblink | 2 + .../FB/MTRO/FB_ILS_MTRO_1Sep_SSCC.liblink | 2 + .../2_ILSLib/FB/MTRO/FB_ILS_MTRO_2Sep1Swi.scl | 1551 ++ .../FB/MTRO/FB_ILS_MTRO_Vario.liblink | 2 + .../2_ILSLib/FB/STRO/FB_ILS_STRO_Sep.liblink | 2 + .../FB/STRO/FB_ILS_STRO_Switch.liblink | 2 + .../FB/STRO/FB_ILS_STRO_Vario.liblink | 2 + .../FB/STRO/FB_StationUnloadPin.liblink | 2 + .../STRO/FB_SupervisionRasterSensor.liblink | 2 + .../2_ILSLib/FC/FC_Route.liblink | 2 + .../FC/FC_SHR_ExtractedHangerPin.liblink | 2 + .../FC/FC_SHR_TargetSet_ReRoutePin.liblink | 2 + .../2_ILSLib/FC/FC_TSHR_AddAtEnd.liblink | 2 + .../2_ILSLib/FC/FC_TSHR_Shift.liblink | 2 + .../2_ILSLib/FC/FC_Uint2TroString_1.liblink | 2 + .../2_ILSLib/FC/FC_usint2String_1.liblink | 2 + .../400_BasicFunctions/FC/FC_Int2String.scl | 25 + .../400_BasicFunctions/FC/FC_Jam.scl | 85 + .../400_BasicFunctions/FC/FC_StorageLines.scl | 137 + .../FC/FC_Uint2TroString.scl | 53 + .../400_BasicFunctions/FC/FC_usint2String.scl | 25 + .../700_Jams/DB_HyperJam.xml | 93 + .../700_Jams/FC_Call_Jams.scl | 335 + .../700_Jams/Inbound_Oben/DB_JamArea4103.xml | 88 + .../700_Jams/Inbound_Oben/DB_JamArea4104.xml | 88 + .../700_Jams/Inbound_Oben/DB_JamArea4203.xml | 88 + .../700_Jams/Inbound_Oben/DB_JamArea4204.xml | 112 + .../700_Jams/Inbound_Oben/DB_JamArea4302.xml | 112 + .../700_Jams/Inbound_Oben/DB_JamArea4402.xml | 88 + .../700_Jams/Inbound_Oben/DB_JamArea4403.xml | 112 + .../700_Jams/Inbound_Oben/DB_JamArea4501.xml | 112 + .../700_Jams/Inbound_Oben/DB_JamArea4502.xml | 112 + .../700_Jams/Inbound_Oben/DB_JamArea4503.xml | 112 + .../700_Jams/Inbound_Oben/DB_JamBoom1.xml | 148 + .../Inbound_Unten/Buffer/DB_JamBuffer101.xml | 119 + .../Inbound_Unten/Buffer/DB_JamBuffer102.xml | 120 + .../700_Jams/Inbound_Unten/DB_JamArea0100.xml | 88 + .../700_Jams/Inbound_Unten/DB_JamArea0101.xml | 116 + .../700_Jams/Inbound_Unten/DB_JamArea0102.xml | 212 + .../700_Jams/Inbound_Unten/DB_JamArea0103.xml | 88 + .../700_Jams/Inbound_Unten/DB_JamArea0104.xml | 140 + .../700_Jams/Inbound_Unten/DB_JamArea0106.xml | 112 + .../700_Jams/Inbound_Unten/DB_JamArea0107.xml | 88 + .../700_Jams/Inbound_Unten/DB_JamArea0108.xml | 136 + .../700_Jams/Inbound_Unten/DB_JamArea0110.xml | 113 + .../800_Storage/FB_EmptyCarrBuffer.scl | 1236 ++ .../800_Storage/FB_Pin_EmptyBuffer.scl | 2796 +++ .../DB_Buffer_CommunicationWCSBL.xml | 71 + .../DB_CommunicationParameters.xml | 65 + .../DB_LGF_FIFO_CommWCSBL.xml | 142 + .../FB_CommunicationWCSBL.scl | 250 + .../FB_CommunicationWCSBL_DB.xml | 110 + .../FB_FortnaTele_Placeholder.scl | 36 + .../FC_DateAsString_ISO.liblink | 2 + .../900_Communications/FC_Get_LaneStatus.scl | 23 + .../FC_Send_GOHDReqM.liblink | 2 + .../900_Communications/FC_Send_GOHDUM.liblink | 2 + .../900_Communications/FC_Send_HB.liblink | 2 + .../FC_SequenceNumber.liblink | 2 + .../FC_TimeAsString_ISO.liblink | 2 + .../LCom_Communication.liblink | 2 + .../LCom_Communication_DB.xml | 321 + .../900_Communications/LCom_Example.scl | 150 + .../LCom_ExampleComBuffers.xml | 80 + .../LCom_ExampleComData.xml | 197 + .../LStream_JsonDeserializer.liblink | 2 + .../LGF_DTLtoString_ISO.scl | 211 + .../DB_Buffer_CommunicationLogger.xml | 71 + .../DB_CommunciationParametersLogger.xml | 66 + .../TCP-Logger/DB_LGF_FIFO_CommLogger.xml | 142 + .../TCP-Logger/FB_CommunicationLogger.scl | 228 + .../TCP-Logger/FB_CommunicationLogger_DB.xml | 110 + .../Testumgebung/DB_TestBaustein.xml | 81 + .../Testumgebung/TestBaustein.scl | 124 + .../Testumgebung/TestVariables.xml | 124 + .../970_Visu/DB_Interface_HMI.xml | 2611 +++ .../970_Visu/DB_Visu_Jams.xml | 263 + .../970_Visu/FB_LaengenmessungAI.scl | 59 + .../Programmbausteine/970_Visu/FB_SSCCAI.scl | 60 + .../Programmbausteine/970_Visu/FB_Visu.scl | 172 + .../Programmbausteine/970_Visu/FB_Visu_DB.xml | 108 + .../970_Visu/FB_Visu_Jam.scl | 206 + .../970_Visu/FB_Visu_JamStorage.scl | 199 + .../970_Visu/FB_Visu_Jams.scl | 638 + .../970_Visu/FC_CarrierManipulator.scl | 159 + .../999_Safety/DB_InterfaceSafety.xml | 253 + .../Programmbausteine/DB_IO_Device_Test.xml | 66 + .../DB_Platzhalter_IoDevice.xml | 89 + .../Programmbausteine/FC_BARCODE_SEARCH.scl | 188 + ...tream_FindStringInByteCharArrayAdv.liblink | 2 + .../Längenmessung/FB_Längenmessung.scl | 210 + .../Längenmessung/FB_Längenmessung_DB.xml | 109 + =A01+UH01-KF00/Programmbausteine/OB1.xml | 5908 +++++++ .../PROFINET/DB_PROFINET_DEVICE_STATES.xml | 66 + .../FC_GET_PROFINET_DEVICE_STATES.scl | 27 + .../Programmbausteine/Programming error.scl | 32 + .../Programmbausteine/SCADA/DB_Status.xml | 81 + .../SCADA/FB-OPC_UA_System-Stat.scl | 72 + .../SCADA/FB-OPC_UA_System-Stat_DB.xml | 74 + .../Instances/InstReadServerDiagnostics.xml | 200 + .../ReadServerDiagnostics.scl | 170 + .../1_ServerDiagnostics/ServerDiagnostics.xml | 144 + .../Instances/InstReadSessionDiagnostics.xml | 370 + .../ReadSessionDiagnostics.scl | 515 + .../SessionDiagnostics.xml | 143 + .../CheckForTimeOut.scl | 74 + .../ClientStatus.xml | 113 + .../Instances/InstCheckForTimeOut.xml | 118 + ...ssionDiagnostics.ClientLastContactTime.xml | 368 + .../SCADA/OPC_UA/Diagnostics.xml | 1637 ++ .../Programmbausteine/_IBN/DB_Error.xml | 115 + .../Programmbausteine/_IBN/DB_S7.xml | 98 + .../Programmbausteine/_IBN/DB_TRO_TEST.xml | 178 + .../Programmbausteine/_IBN/DB_Test.xml | 120 + .../Programmbausteine/_IBN/DB_Test_HMI.xml | 74 + .../Programmbausteine/_IBN/FB_TestMain.scl | 86 + .../Programmbausteine/_IBN/FC_S7.scl | 62 + =A01+UH01-KF00/Programmbausteine/_IBN/IBN.xml | 201 + .../Programmbausteine/_IBN/fbTestMain_DB.xml | 77 + .../400_Modules/FB_BoomWorkStation.scl | 416 + .../400_Modules/FB_ButtonAck.scl | 90 + .../400_Modules/FB_DistanceFoot.scl | 95 + .../400_Modules/FB_LoadingBoom_INBOUND.scl | 898 + .../400_Modules/FB_MotorSimple_INBOUND.scl | 166 + .../400_Modules/FB_StopperSimple.scl | 197 + .../400_Modules/FB_StopperSpecial.scl | 243 + .../400_Modules/FB_Tilt_TEST.scl | 182 + .../_Ladeschleife/DB_GLOB_StopperState.xml | 74 + .../_Ladeschleife/TEST_INBOUND_DB.xml | 95 + .../_PerformanceMeasurement_/FB_PerfTest.scl | 104 + .../fbPerfTestAfterRFID.xml | 102 + .../fbPerfTestBeforeRFID.xml | 102 + .../fbPerfTestEnd1_1_DB.xml | 101 + .../fbPerfTestEnd1_DB.xml | 101 + .../fbPerfTestEnd2_DB.xml | 101 + .../fbPerfTestStart1_1_DB.xml | 101 + .../fbPerfTestStart1_DB.xml | 101 + .../fbPerfTestTRO115_FU_DB.xml | 101 + 393 files changed, 111299 insertions(+) create mode 100644 .vci/workspace.vci.config create mode 100644 .vci/workspace.vci.exportFormats.config create mode 100644 =A01+UH01-KF00/PLC-Datentypen/2_ILSLib/FB/Misc/udt_InterruptParameter_1.liblink create mode 100644 =A01+UH01-KF00/PLC-Datentypen/2_ILSLib/UDT/Carrier/stCarrierPin.liblink create mode 100644 =A01+UH01-KF00/PLC-Datentypen/2_ILSLib/UDT/Carrier/stPinValues.liblink create mode 100644 =A01+UH01-KF00/PLC-Datentypen/2_ILSLib/UDT/ConveyorStations/stConveyorStationPos.liblink create mode 100644 =A01+UH01-KF00/PLC-Datentypen/2_ILSLib/UDT/ConveyorStations/stConveyorStations.liblink create mode 100644 =A01+UH01-KF00/PLC-Datentypen/2_ILSLib/UDT/ConveyorStations/stConveyorStationsData.liblink create mode 100644 =A01+UH01-KF00/PLC-Datentypen/2_ILSLib/UDT/PriorityManager/UDT_PrioParameter.liblink create mode 100644 =A01+UH01-KF00/PLC-Datentypen/2_ILSLib/UDT/Switch/IntfSwitch.liblink create mode 100644 =A01+UH01-KF00/PLC-Datentypen/2_ILSLib/UDT/Switch/S2MSwitch.liblink create mode 100644 =A01+UH01-KF00/PLC-Datentypen/2_ILSLib/UDT/Switch/SettingsSwitch.liblink create mode 100644 =A01+UH01-KF00/PLC-Datentypen/BaseSystemLib/100_Common/StateMain/HMI/UDT_HMI_StateMachine.liblink create mode 100644 =A01+UH01-KF00/PLC-Datentypen/BaseSystemLib/100_Common/StateMain/UDT/UDT_MainState.liblink create mode 100644 =A01+UH01-KF00/PLC-Datentypen/BaseSystemLib/110_PROFINET/Barcode-Reader/UDT_BarcodeReader.liblink create mode 100644 =A01+UH01-KF00/PLC-Datentypen/BaseSystemLib/110_PROFINET/Barcode-Reader/UDT_SettingsBarcodeReader.liblink create mode 100644 =A01+UH01-KF00/PLC-Datentypen/BaseSystemLib/110_PROFINET/Barcode-Reader/stCognexInterface.liblink create mode 100644 =A01+UH01-KF00/PLC-Datentypen/BaseSystemLib/110_PROFINET/Barcode-Reader/stHMI_BRCognexDM.liblink create mode 100644 =A01+UH01-KF00/PLC-Datentypen/BaseSystemLib/110_PROFINET/Sensors/UDT_HMI_Sensor.liblink create mode 100644 =A01+UH01-KF00/PLC-Datentypen/BaseSystemLib/110_PROFINET/Sensors/UDT_HMI_Sensor_Config.liblink create mode 100644 =A01+UH01-KF00/PLC-Datentypen/BaseSystemLib/110_PROFINET/Sensors/UDT_HMI_Sensor_Control.liblink create mode 100644 =A01+UH01-KF00/PLC-Datentypen/BaseSystemLib/110_PROFINET/Sensors/UDT_Sensor.liblink create mode 100644 =A01+UH01-KF00/PLC-Datentypen/BaseSystemLib/160_Monitoring/UDT/DataLogBuffer.liblink create mode 100644 =A01+UH01-KF00/PLC-Datentypen/BaseSystemLib/160_Monitoring/UDT_HMI_Monitoring.liblink create mode 100644 =A01+UH01-KF00/PLC-Datentypen/BaseSystemLib/170_Communications/TCP/UDT/UDT_TelegramData.liblink create mode 100644 =A01+UH01-KF00/PLC-Datentypen/BaseSystemLib/170_Communications/TCP/UDT/UDT_TelegramData_Send.liblink create mode 100644 =A01+UH01-KF00/PLC-Datentypen/BaseSystemLib/170_Communications/TCP/UDT/UDT_TelegramDefinition.liblink create mode 100644 =A01+UH01-KF00/PLC-Datentypen/BaseSystemLib/180_Safety/UDT_SafetyInterface.liblink create mode 100644 =A01+UH01-KF00/PLC-Datentypen/Carrier/stCarrierLocation.xml create mode 100644 =A01+UH01-KF00/PLC-Datentypen/CarrierStatisticsStandard.xml create mode 100644 =A01+UH01-KF00/PLC-Datentypen/EventCorrection/stConveyorStationCarrier_Log.xml create mode 100644 =A01+UH01-KF00/PLC-Datentypen/EventCorrection/stEventLog.xml create mode 100644 =A01+UH01-KF00/PLC-Datentypen/EventCorrection/stEventLogAbrufSeq.xml create mode 100644 =A01+UH01-KF00/PLC-Datentypen/EventCorrection/stEventLogAbrufSeqResponse.xml create mode 100644 =A01+UH01-KF00/PLC-Datentypen/EventCorrection/stEventStepChange.xml create mode 100644 =A01+UH01-KF00/PLC-Datentypen/Fortna-WES-WCS/Payload/UDT_Payload_CRCanM.liblink create mode 100644 =A01+UH01-KF00/PLC-Datentypen/Fortna-WES-WCS/Payload/UDT_Payload_CRRespM.liblink create mode 100644 =A01+UH01-KF00/PLC-Datentypen/Fortna-WES-WCS/Payload/UDT_Payload_CReqM.liblink create mode 100644 =A01+UH01-KF00/PLC-Datentypen/Fortna-WES-WCS/Payload/UDT_Payload_CSRespM.liblink create mode 100644 =A01+UH01-KF00/PLC-Datentypen/Fortna-WES-WCS/Payload/UDT_Payload_CTMP.liblink create mode 100644 =A01+UH01-KF00/PLC-Datentypen/Fortna-WES-WCS/Payload/UDT_Payload_ECNT.liblink create mode 100644 =A01+UH01-KF00/PLC-Datentypen/Fortna-WES-WCS/Payload/UDT_Payload_GOHDReqM.liblink create mode 100644 =A01+UH01-KF00/PLC-Datentypen/Fortna-WES-WCS/Payload/UDT_Payload_GOHDRespM.liblink create mode 100644 =A01+UH01-KF00/PLC-Datentypen/Fortna-WES-WCS/Payload/UDT_Payload_GOHDUM.liblink create mode 100644 =A01+UH01-KF00/PLC-Datentypen/Fortna-WES-WCS/Payload/UDT_Payload_INDX.liblink create mode 100644 =A01+UH01-KF00/PLC-Datentypen/Fortna-WES-WCS/Payload/UDT_Payload_UNLDResp.liblink create mode 100644 =A01+UH01-KF00/PLC-Datentypen/Fortna-WES-WCS/Payload/UDT_Payload_WSAD.liblink create mode 100644 =A01+UH01-KF00/PLC-Datentypen/Fortna-WES-WCS/Telegram/UDT_Telegram_CRCanM.liblink create mode 100644 =A01+UH01-KF00/PLC-Datentypen/Fortna-WES-WCS/Telegram/UDT_Telegram_CRRespM.liblink create mode 100644 =A01+UH01-KF00/PLC-Datentypen/Fortna-WES-WCS/Telegram/UDT_Telegram_CReqM.liblink create mode 100644 =A01+UH01-KF00/PLC-Datentypen/Fortna-WES-WCS/Telegram/UDT_Telegram_CSRespM.liblink create mode 100644 =A01+UH01-KF00/PLC-Datentypen/Fortna-WES-WCS/Telegram/UDT_Telegram_CTMP.liblink create mode 100644 =A01+UH01-KF00/PLC-Datentypen/Fortna-WES-WCS/Telegram/UDT_Telegram_ECNT.liblink create mode 100644 =A01+UH01-KF00/PLC-Datentypen/Fortna-WES-WCS/Telegram/UDT_Telegram_GOHDReqM.liblink create mode 100644 =A01+UH01-KF00/PLC-Datentypen/Fortna-WES-WCS/Telegram/UDT_Telegram_GOHDRespM.liblink create mode 100644 =A01+UH01-KF00/PLC-Datentypen/Fortna-WES-WCS/Telegram/UDT_Telegram_GOHDUM.liblink create mode 100644 =A01+UH01-KF00/PLC-Datentypen/Fortna-WES-WCS/Telegram/UDT_Telegram_INDX.liblink create mode 100644 =A01+UH01-KF00/PLC-Datentypen/Fortna-WES-WCS/Telegram/UDT_Telegram_UNLDResp.liblink create mode 100644 =A01+UH01-KF00/PLC-Datentypen/Fortna-WES-WCS/Telegram/UDT_Telegram_WSAD.liblink create mode 100644 =A01+UH01-KF00/PLC-Datentypen/Fortna-WES-WCS/UDT_Header.liblink create mode 100644 =A01+UH01-KF00/PLC-Datentypen/Fortna-WES-WCS/UDT_Workstation.liblink create mode 100644 =A01+UH01-KF00/PLC-Datentypen/ILSLib/PriorityManager/UDT_MTRO_Prio.liblink create mode 100644 =A01+UH01-KF00/PLC-Datentypen/ILSLib/PriorityManager/UDT_Request.liblink create mode 100644 =A01+UH01-KF00/PLC-Datentypen/ILSLib/PriorityManager/UDT_Response.liblink create mode 100644 =A01+UH01-KF00/PLC-Datentypen/ILSLib/Separator/IntfSeparator.liblink create mode 100644 =A01+UH01-KF00/PLC-Datentypen/ILSLib/Separator/SettingsSeparator.liblink create mode 100644 =A01+UH01-KF00/PLC-Datentypen/ILSLib/Separator/UDT_HMI_Separator.liblink create mode 100644 =A01+UH01-KF00/PLC-Datentypen/ILSLib/Separator/UDT_HMI_SeparatorConfig.liblink create mode 100644 =A01+UH01-KF00/PLC-Datentypen/ILSLib/Separator/UDT_HMI_SeparatorControl.liblink create mode 100644 =A01+UH01-KF00/PLC-Datentypen/ILSLib/Separator/UDT_HMI_SeparatorError.liblink create mode 100644 =A01+UH01-KF00/PLC-Datentypen/ILSLib/Separator/UDT_HMI_SeparatorStatus.liblink create mode 100644 =A01+UH01-KF00/PLC-Datentypen/ILSLib/UDT/stCarrier.liblink create mode 100644 =A01+UH01-KF00/PLC-Datentypen/ILSLib/UDT/stEventBookingInfo.liblink create mode 100644 =A01+UH01-KF00/PLC-Datentypen/ILSLib/UDT/stEventCorrectionInfo.liblink create mode 100644 =A01+UH01-KF00/PLC-Datentypen/ILSLib/UDT/stEventScanInfo.liblink create mode 100644 =A01+UH01-KF00/PLC-Datentypen/ILSLib/UDT/stSimuJamConfig.liblink create mode 100644 =A01+UH01-KF00/PLC-Datentypen/ILSLib/UDT_HMI_TRO.liblink create mode 100644 =A01+UH01-KF00/PLC-Datentypen/ILSLib/UDT_TROConfig.liblink create mode 100644 =A01+UH01-KF00/PLC-Datentypen/ILSLib/UDT_TROCtrl.liblink create mode 100644 =A01+UH01-KF00/PLC-Datentypen/ILSLib/UDT_TROState.liblink create mode 100644 =A01+UH01-KF00/PLC-Datentypen/ILSLib/Vario/SettingsVario.liblink create mode 100644 =A01+UH01-KF00/PLC-Datentypen/ILSLib/Vario/UDT_SettingsVarioFingerMonitoring.liblink create mode 100644 =A01+UH01-KF00/PLC-Datentypen/ILSLib/Vario/UDT_Vario.liblink create mode 100644 =A01+UH01-KF00/PLC-Datentypen/ILSLib/Vario/UDT_Vario_Config.liblink create mode 100644 =A01+UH01-KF00/PLC-Datentypen/ILSLib/Vario/UDT_Vario_Control.liblink create mode 100644 =A01+UH01-KF00/PLC-Datentypen/ILSLib/Vario/UDT_Vario_Status.liblink create mode 100644 =A01+UH01-KF00/PLC-Datentypen/IO Device Datentypen/IO_Device_UH01_Data.xml create mode 100644 =A01+UH01-KF00/PLC-Datentypen/IO Device Datentypen/IO_Device_UH02_Data.xml create mode 100644 =A01+UH01-KF00/PLC-Datentypen/IO Device Datentypen/IO_Device_UH03_Data.xml create mode 100644 =A01+UH01-KF00/PLC-Datentypen/IO Device Datentypen/IO_Device_UH04_Data.xml create mode 100644 =A01+UH01-KF00/PLC-Datentypen/IO Device Datentypen/IO_Device_UH05_Data.xml create mode 100644 =A01+UH01-KF00/PLC-Datentypen/LCom/LCom_typeConfig.liblink create mode 100644 =A01+UH01-KF00/PLC-Datentypen/LCom/LCom_typeDiagnostics.liblink create mode 100644 =A01+UH01-KF00/PLC-Datentypen/LCom_typeComUserData.xml create mode 100644 =A01+UH01-KF00/PLC-Datentypen/LStream/DataTypes/LStream_typeElement.liblink create mode 100644 =A01+UH01-KF00/PLC-Datentypen/Mewa/IntfMainTRONEU.xml create mode 100644 =A01+UH01-KF00/PLC-Datentypen/Mewa/MFRComu/M2S/M2SMainTro_ST.xml create mode 100644 =A01+UH01-KF00/PLC-Datentypen/Mewa/MFRComu/M2S/M2SMainTro_Single.xml create mode 100644 =A01+UH01-KF00/PLC-Datentypen/Mewa/MFRComu/S2M/S2MSeparator.xml create mode 100644 =A01+UH01-KF00/PLC-Datentypen/OpcUaDiagnostics/typeApplicationDescription.xml create mode 100644 =A01+UH01-KF00/PLC-Datentypen/OpcUaDiagnostics/typeBuildInfo.xml create mode 100644 =A01+UH01-KF00/PLC-Datentypen/OpcUaDiagnostics/typeLocalizedText.xml create mode 100644 =A01+UH01-KF00/PLC-Datentypen/OpcUaDiagnostics/typeOperationLimits.xml create mode 100644 =A01+UH01-KF00/PLC-Datentypen/OpcUaDiagnostics/typeServer.xml create mode 100644 =A01+UH01-KF00/PLC-Datentypen/OpcUaDiagnostics/typeServerCapabilities.xml create mode 100644 =A01+UH01-KF00/PLC-Datentypen/OpcUaDiagnostics/typeServerDiagnostics.xml create mode 100644 =A01+UH01-KF00/PLC-Datentypen/OpcUaDiagnostics/typeServerDiagnosticsSummary.xml create mode 100644 =A01+UH01-KF00/PLC-Datentypen/OpcUaDiagnostics/typeServerStatus.xml create mode 100644 =A01+UH01-KF00/PLC-Datentypen/OpcUaDiagnostics/typeServiceCounter.xml create mode 100644 =A01+UH01-KF00/PLC-Datentypen/OpcUaDiagnostics/typeSessionDiagnostics.xml create mode 100644 =A01+UH01-KF00/PLC-Datentypen/OpcUaDiagnostics/typeSessionSecurityDiagnosticsData.xml create mode 100644 =A01+UH01-KF00/PLC-Datentypen/OpcUaDiagnostics/typeSimaticDevice.xml create mode 100644 =A01+UH01-KF00/PLC-Datentypen/OpcUaDiagnostics/typeSubscriptionDiagnostics.xml create mode 100644 =A01+UH01-KF00/PLC-Datentypen/Storage/stJamConfig.liblink create mode 100644 =A01+UH01-KF00/PLC-Datentypen/Storage/stJamData.liblink create mode 100644 =A01+UH01-KF00/PLC-Datentypen/Storage/stJamStatus.liblink create mode 100644 =A01+UH01-KF00/PLC-Datentypen/Storage/stStorageConfig.liblink create mode 100644 =A01+UH01-KF00/PLC-Datentypen/Storage/stStorageData.liblink create mode 100644 =A01+UH01-KF00/PLC-Datentypen/Storage/stStorageLine.xml create mode 100644 =A01+UH01-KF00/PLC-Datentypen/Storage/stStorageLineB1.xml create mode 100644 =A01+UH01-KF00/PLC-Datentypen/Storage/stStorageStatus.liblink create mode 100644 =A01+UH01-KF00/PLC-Datentypen/TRO_Manager/IntfTroManager.xml create mode 100644 =A01+UH01-KF00/PLC-Datentypen/UDT_GOHStatus.liblink create mode 100644 =A01+UH01-KF00/PLC-Datentypen/VisuLib/UDT_HMI_Conveyor.liblink create mode 100644 =A01+UH01-KF00/PLC-Datentypen/VisuLib/UDT_HMI_JamConfig.liblink create mode 100644 =A01+UH01-KF00/PLC-Datentypen/VisuLib/UDT_HMI_JamData.liblink create mode 100644 =A01+UH01-KF00/PLC-Datentypen/VisuLib/UDT_HMI_JamStatus.liblink create mode 100644 =A01+UH01-KF00/PLC-Datentypen/VisuLib/UDT_HMI_StorageConfig.liblink create mode 100644 =A01+UH01-KF00/PLC-Datentypen/VisuLib/UDT_HMI_StorageData.liblink create mode 100644 =A01+UH01-KF00/PLC-Datentypen/VisuLib/UDT_HMI_StorageStatus.liblink create mode 100644 =A01+UH01-KF00/PLC-Datentypen/VisuLib/UDT_HMI_TRO_PinStore.liblink create mode 100644 =A01+UH01-KF00/PLC-Datentypen/VisuLib/UDT_Panel_EmergencyStop.liblink create mode 100644 =A01+UH01-KF00/PLC-Datentypen/VisuLib/UDT_TCP.liblink create mode 100644 =A01+UH01-KF00/PLC-Datentypen/VisuLib/UDT_TCP_Param.liblink create mode 100644 =A01+UH01-KF00/PLC-Datentypen/VisuLib/UDT_UnloadingStation.liblink create mode 100644 =A01+UH01-KF00/PLC-Datentypen/VisuLib/UDT_Visu_Jam_CarMove.liblink create mode 100644 =A01+UH01-KF00/PLC-Datentypen/VisuLib/UDT_Visu_Jam_List.liblink create mode 100644 =A01+UH01-KF00/PLC-Datentypen/_AI/HMI/udt_ClearingStationHMI.xml create mode 100644 =A01+UH01-KF00/PLC-Datentypen/_AI/HMI/udt_LengtMeasurementHMI.xml create mode 100644 =A01+UH01-KF00/PLC-Datentypen/_Molina Test/Carrier/stCarrierTest_x.xml create mode 100644 =A01+UH01-KF00/PLC-Datentypen/_Molina Test/Jam/stJamConfigTestHJ.xml create mode 100644 =A01+UH01-KF00/PLC-Datentypen/_Molina Test/Jam/stJamDataTestHJ.xml create mode 100644 =A01+UH01-KF00/PLC-Datentypen/_Molina Test/Jam/stJamStatusTestHJ.xml create mode 100644 =A01+UH01-KF00/PLC-Datentypen/_Testumgebung/CarrierLeaveStore.xml create mode 100644 =A01+UH01-KF00/PLC-Datentypen/_Testumgebung/CarrierStatisticsStore.xml create mode 100644 =A01+UH01-KF00/PLC-Datentypen/_Testumgebung/ReqData.xml create mode 100644 =A01+UH01-KF00/PLC-Datentypen/_Testumgebung/SearchResult.xml create mode 100644 =A01+UH01-KF00/PLC-Datentypen/udt_InterruptParameter.xml create mode 100644 =A01+UH01-KF00/PLC-Datentypen/udt_SSCCMeasurement.xml create mode 100644 =A01+UH01-KF00/PLC-Variablen/Ausgänge_20250902.xml create mode 100644 =A01+UH01-KF00/PLC-Variablen/Ausgänge_Import.xml create mode 100644 =A01+UH01-KF00/PLC-Variablen/Barcode-Leser/BarcodeLeser.xml create mode 100644 =A01+UH01-KF00/PLC-Variablen/Barcode-Leser/bx1100.xml create mode 100644 =A01+UH01-KF00/PLC-Variablen/Barcode-Leser/bx1101.xml create mode 100644 =A01+UH01-KF00/PLC-Variablen/Barcode-Leser/bx1102.xml create mode 100644 =A01+UH01-KF00/PLC-Variablen/Barcode-Leser/bx1103.xml create mode 100644 =A01+UH01-KF00/PLC-Variablen/Barcode-Leser/bx1104.xml create mode 100644 =A01+UH01-KF00/PLC-Variablen/Barcode-Leser/bx1105.xml create mode 100644 =A01+UH01-KF00/PLC-Variablen/Barcode-Leser/bx1106.xml create mode 100644 =A01+UH01-KF00/PLC-Variablen/Barcode-Leser/bx1107.xml create mode 100644 =A01+UH01-KF00/PLC-Variablen/Barcode-Leser/bx1108.xml create mode 100644 =A01+UH01-KF00/PLC-Variablen/BaseSystemLib/960_Logging.xml create mode 100644 =A01+UH01-KF00/PLC-Variablen/BaseSystemLib/GlobVarLib_Communications.xml create mode 100644 =A01+UH01-KF00/PLC-Variablen/Diagnostics/Diagnostics.xml create mode 100644 =A01+UH01-KF00/PLC-Variablen/Eingänge_20250902.xml create mode 100644 =A01+UH01-KF00/PLC-Variablen/Eingänge_Import.xml create mode 100644 =A01+UH01-KF00/PLC-Variablen/FortnaCommunication/Actions.xml create mode 100644 =A01+UH01-KF00/PLC-Variablen/FortnaCommunication/DecisionPoints.xml create mode 100644 =A01+UH01-KF00/PLC-Variablen/FortnaCommunication/PLCIDs.xml create mode 100644 =A01+UH01-KF00/PLC-Variablen/FortnaCommunication/ReasonCodes.xml create mode 100644 =A01+UH01-KF00/PLC-Variablen/ILSLib/C_ILS_STRO_Sep.xml create mode 100644 =A01+UH01-KF00/PLC-Variablen/INBOUND_Motors.xml create mode 100644 =A01+UH01-KF00/PLC-Variablen/IO Device Variablen/RECEIVE/IO_Device_FROM_UH02.xml create mode 100644 =A01+UH01-KF00/PLC-Variablen/IO Device Variablen/RECEIVE/IO_Device_FROM_UH03.xml create mode 100644 =A01+UH01-KF00/PLC-Variablen/IO Device Variablen/RECEIVE/IO_Device_FROM_UH04.xml create mode 100644 =A01+UH01-KF00/PLC-Variablen/IO Device Variablen/RECEIVE/IO_Device_FROM_UH05.xml create mode 100644 =A01+UH01-KF00/PLC-Variablen/IO Device Variablen/SEND/IO_Device_TO_UH02.xml create mode 100644 =A01+UH01-KF00/PLC-Variablen/IO Device Variablen/SEND/IO_Device_TO_UH03.xml create mode 100644 =A01+UH01-KF00/PLC-Variablen/IO Device Variablen/SEND/IO_Device_TO_UH04.xml create mode 100644 =A01+UH01-KF00/PLC-Variablen/IO Device Variablen/SEND/IO_Device_TO_UH05.xml create mode 100644 =A01+UH01-KF00/PLC-Variablen/IO_Link_Sensor.xml create mode 100644 =A01+UH01-KF00/PLC-Variablen/Konstanten Schrittketten/1Sep.xml create mode 100644 =A01+UH01-KF00/PLC-Variablen/Konstanten Schrittketten/1Sep1Switch.xml create mode 100644 =A01+UH01-KF00/PLC-Variablen/Konstanten Schrittketten/2Sep1Switch.xml create mode 100644 =A01+UH01-KF00/PLC-Variablen/Konstanten Schrittketten/ConveyorVario.xml create mode 100644 =A01+UH01-KF00/PLC-Variablen/Konstanten Schrittketten/MainTRO ReasonForStop.xml create mode 100644 =A01+UH01-KF00/PLC-Variablen/Konstanten TRO_Devices/MainTros.xml create mode 100644 =A01+UH01-KF00/PLC-Variablen/Konstanten TRO_Devices/Separatoren.xml create mode 100644 =A01+UH01-KF00/PLC-Variablen/Konstanten TRO_Devices/Switches.xml create mode 100644 =A01+UH01-KF00/PLC-Variablen/Konstanten.xml create mode 100644 =A01+UH01-KF00/PLC-Variablen/Konstanten/Destinations_Inbound.xml create mode 100644 =A01+UH01-KF00/PLC-Variablen/Konstanten/Destinations_Lager.xml create mode 100644 =A01+UH01-KF00/PLC-Variablen/Konstanten/Destinations_Level2.xml create mode 100644 =A01+UH01-KF00/PLC-Variablen/Konstanten/Encoder.xml create mode 100644 =A01+UH01-KF00/PLC-Variablen/Konstanten/Jamgrenzen.xml create mode 100644 =A01+UH01-KF00/PLC-Variablen/Konstanten/Motors.xml create mode 100644 =A01+UH01-KF00/PLC-Variablen/Konstanten/Separator_2.xml create mode 100644 =A01+UH01-KF00/PLC-Variablen/Konstanten/Storage.xml create mode 100644 =A01+UH01-KF00/PLC-Variablen/Konstanten/Switch_1.xml create mode 100644 =A01+UH01-KF00/PLC-Variablen/Konstanten/Zeiten.xml create mode 100644 =A01+UH01-KF00/PLC-Variablen/Konstanten/stConveyorStations.xml create mode 100644 =A01+UH01-KF00/PLC-Variablen/LCom_Constants.xml create mode 100644 =A01+UH01-KF00/PLC-Variablen/OpcUaStatusCodes.xml create mode 100644 =A01+UH01-KF00/PLC-Variablen/Simulation.xml create mode 100644 =A01+UH01-KF00/PLC-Variablen/Standard-Variablentabelle.xml create mode 100644 =A01+UH01-KF00/PLC-Variablen/Statistics/Statistics.xml create mode 100644 =A01+UH01-KF00/Programmbausteine/000_Global/DB_AlarmGlobal.xml create mode 100644 =A01+UH01-KF00/Programmbausteine/000_Global/DB_GLOB_TroState.xml create mode 100644 =A01+UH01-KF00/Programmbausteine/000_Global/DB_MachineGlobal.xml create mode 100644 =A01+UH01-KF00/Programmbausteine/000_Global/DB_Statistics.xml create mode 100644 =A01+UH01-KF00/Programmbausteine/050_Sensors/DB_Inputs.xml create mode 100644 =A01+UH01-KF00/Programmbausteine/050_Sensors/FB_CallSensors.scl create mode 100644 =A01+UH01-KF00/Programmbausteine/050_Sensors/fbCallSensors_DB.xml create mode 100644 =A01+UH01-KF00/Programmbausteine/075_PreMain/FB_PreMain.scl create mode 100644 =A01+UH01-KF00/Programmbausteine/075_PreMain/fbPreMain_DB.xml create mode 100644 =A01+UH01-KF00/Programmbausteine/100_Main/FB_Main.scl create mode 100644 =A01+UH01-KF00/Programmbausteine/100_Main/fbMain_DB.xml create mode 100644 =A01+UH01-KF00/Programmbausteine/1_BaseSystemLib/100_Common/FB_Blinker.liblink create mode 100644 =A01+UH01-KF00/Programmbausteine/1_BaseSystemLib/100_Common/LGF/FIFO/FC_FIFO_Append.liblink create mode 100644 =A01+UH01-KF00/Programmbausteine/1_BaseSystemLib/100_Common/LGF/FIFO/FC_FIFO_GetFirst.liblink create mode 100644 =A01+UH01-KF00/Programmbausteine/1_BaseSystemLib/100_Common/LGF/FIFO/LGF_FIFO.liblink create mode 100644 =A01+UH01-KF00/Programmbausteine/1_BaseSystemLib/100_Common/StateMain/FB_StateMain.liblink create mode 100644 =A01+UH01-KF00/Programmbausteine/1_BaseSystemLib/100_Common/StateManager/FB_StateManager.liblink create mode 100644 =A01+UH01-KF00/Programmbausteine/1_BaseSystemLib/110_PROFINET/Barcode-Reader/FB_BarcodeReaderCognex.liblink create mode 100644 =A01+UH01-KF00/Programmbausteine/1_BaseSystemLib/110_PROFINET/Barcode-Reader/FB_SsccBarcodeReader.liblink create mode 100644 =A01+UH01-KF00/Programmbausteine/1_BaseSystemLib/110_PROFINET/Barcode-Reader/FB_SsccReading.scl create mode 100644 =A01+UH01-KF00/Programmbausteine/1_BaseSystemLib/110_PROFINET/Barcode-Reader/FC_GetAlarmNo.liblink create mode 100644 =A01+UH01-KF00/Programmbausteine/1_BaseSystemLib/110_PROFINET/Barcode-Reader/FC_MRoundINT.liblink create mode 100644 =A01+UH01-KF00/Programmbausteine/1_BaseSystemLib/110_PROFINET/Sensors/FB_SensorInput.liblink create mode 100644 =A01+UH01-KF00/Programmbausteine/1_BaseSystemLib/160_Monitoring/FB_Monitoring.liblink create mode 100644 =A01+UH01-KF00/Programmbausteine/1_BaseSystemLib/160_Monitoring/FB_SetAlarmAndLog.liblink create mode 100644 =A01+UH01-KF00/Programmbausteine/1_BaseSystemLib/160_Monitoring/dbDataLogBuffer.xml create mode 100644 =A01+UH01-KF00/Programmbausteine/1_BaseSystemLib/170_Communications/TCP/FB_TCP_LCOM_TeleHandler.scl create mode 100644 =A01+UH01-KF00/Programmbausteine/1_BaseSystemLib/170_Communications/TCP/TeleHandler/FB_EventLog_Root.liblink create mode 100644 =A01+UH01-KF00/Programmbausteine/1_BaseSystemLib/170_Communications/TCP/TeleHandler/FC_DateAsString.liblink create mode 100644 =A01+UH01-KF00/Programmbausteine/1_BaseSystemLib/170_Communications/TCP/TeleHandler/FC_Loglevel_to_String.liblink create mode 100644 =A01+UH01-KF00/Programmbausteine/1_BaseSystemLib/170_Communications/TCP/TeleHandler/FC_TimeAsString.liblink create mode 100644 =A01+UH01-KF00/Programmbausteine/1_BaseSystemLib/170_Communications/TCP/TeleHandler/Parser/FC_ParseCheckForEnd.liblink create mode 100644 =A01+UH01-KF00/Programmbausteine/1_BaseSystemLib/170_Communications/TCP/TeleHandler/Parser/FC_ParseCheckForStart.liblink create mode 100644 =A01+UH01-KF00/Programmbausteine/1_BaseSystemLib/180_Safety/FB_ESTOPhandling.liblink create mode 100644 =A01+UH01-KF00/Programmbausteine/200_MFR/DB_PriorityLogic.xml create mode 100644 =A01+UH01-KF00/Programmbausteine/200_MFR/DB_Prozessdaten.xml create mode 100644 =A01+UH01-KF00/Programmbausteine/200_MFR/FB_PriorityLogic.scl create mode 100644 =A01+UH01-KF00/Programmbausteine/200_MFR/FC_CARR_GLOB_CORRECTION.scl create mode 100644 =A01+UH01-KF00/Programmbausteine/200_MFR/FC_ClearJam.scl create mode 100644 =A01+UH01-KF00/Programmbausteine/200_MFR/FC_Direction.scl create mode 100644 =A01+UH01-KF00/Programmbausteine/200_MFR/FC_PutToHj.scl create mode 100644 =A01+UH01-KF00/Programmbausteine/200_MFR/Fb_PriorityManagerV2.liblink create mode 100644 =A01+UH01-KF00/Programmbausteine/2_ILSLib/FB/Conveyor/FB_Conveyor.liblink create mode 100644 =A01+UH01-KF00/Programmbausteine/2_ILSLib/FB/FB_CarrAccumulate1Sep.liblink create mode 100644 =A01+UH01-KF00/Programmbausteine/2_ILSLib/FB/FB_EventLog_Booking.liblink create mode 100644 =A01+UH01-KF00/Programmbausteine/2_ILSLib/FB/FB_EventLog_Correction.liblink create mode 100644 =A01+UH01-KF00/Programmbausteine/2_ILSLib/FB/FB_EventLog_Scan.liblink create mode 100644 =A01+UH01-KF00/Programmbausteine/2_ILSLib/FB/FC_Ean8_CheckDigit.liblink create mode 100644 =A01+UH01-KF00/Programmbausteine/2_ILSLib/FB/MTRO/FB_ILS_MTRO_1Sep.liblink create mode 100644 =A01+UH01-KF00/Programmbausteine/2_ILSLib/FB/MTRO/FB_ILS_MTRO_1Sep1Swi.liblink create mode 100644 =A01+UH01-KF00/Programmbausteine/2_ILSLib/FB/MTRO/FB_ILS_MTRO_1Sep_SSCC.liblink create mode 100644 =A01+UH01-KF00/Programmbausteine/2_ILSLib/FB/MTRO/FB_ILS_MTRO_2Sep1Swi.scl create mode 100644 =A01+UH01-KF00/Programmbausteine/2_ILSLib/FB/MTRO/FB_ILS_MTRO_Vario.liblink create mode 100644 =A01+UH01-KF00/Programmbausteine/2_ILSLib/FB/STRO/FB_ILS_STRO_Sep.liblink create mode 100644 =A01+UH01-KF00/Programmbausteine/2_ILSLib/FB/STRO/FB_ILS_STRO_Switch.liblink create mode 100644 =A01+UH01-KF00/Programmbausteine/2_ILSLib/FB/STRO/FB_ILS_STRO_Vario.liblink create mode 100644 =A01+UH01-KF00/Programmbausteine/2_ILSLib/FB/STRO/FB_StationUnloadPin.liblink create mode 100644 =A01+UH01-KF00/Programmbausteine/2_ILSLib/FB/STRO/FB_SupervisionRasterSensor.liblink create mode 100644 =A01+UH01-KF00/Programmbausteine/2_ILSLib/FC/FC_Route.liblink create mode 100644 =A01+UH01-KF00/Programmbausteine/2_ILSLib/FC/FC_SHR_ExtractedHangerPin.liblink create mode 100644 =A01+UH01-KF00/Programmbausteine/2_ILSLib/FC/FC_SHR_TargetSet_ReRoutePin.liblink create mode 100644 =A01+UH01-KF00/Programmbausteine/2_ILSLib/FC/FC_TSHR_AddAtEnd.liblink create mode 100644 =A01+UH01-KF00/Programmbausteine/2_ILSLib/FC/FC_TSHR_Shift.liblink create mode 100644 =A01+UH01-KF00/Programmbausteine/2_ILSLib/FC/FC_Uint2TroString_1.liblink create mode 100644 =A01+UH01-KF00/Programmbausteine/2_ILSLib/FC/FC_usint2String_1.liblink create mode 100644 =A01+UH01-KF00/Programmbausteine/400_BasicFunctions/FC/FC_Int2String.scl create mode 100644 =A01+UH01-KF00/Programmbausteine/400_BasicFunctions/FC/FC_Jam.scl create mode 100644 =A01+UH01-KF00/Programmbausteine/400_BasicFunctions/FC/FC_StorageLines.scl create mode 100644 =A01+UH01-KF00/Programmbausteine/400_BasicFunctions/FC/FC_Uint2TroString.scl create mode 100644 =A01+UH01-KF00/Programmbausteine/400_BasicFunctions/FC/FC_usint2String.scl create mode 100644 =A01+UH01-KF00/Programmbausteine/700_Jams/DB_HyperJam.xml create mode 100644 =A01+UH01-KF00/Programmbausteine/700_Jams/FC_Call_Jams.scl create mode 100644 =A01+UH01-KF00/Programmbausteine/700_Jams/Inbound_Oben/DB_JamArea4103.xml create mode 100644 =A01+UH01-KF00/Programmbausteine/700_Jams/Inbound_Oben/DB_JamArea4104.xml create mode 100644 =A01+UH01-KF00/Programmbausteine/700_Jams/Inbound_Oben/DB_JamArea4203.xml create mode 100644 =A01+UH01-KF00/Programmbausteine/700_Jams/Inbound_Oben/DB_JamArea4204.xml create mode 100644 =A01+UH01-KF00/Programmbausteine/700_Jams/Inbound_Oben/DB_JamArea4302.xml create mode 100644 =A01+UH01-KF00/Programmbausteine/700_Jams/Inbound_Oben/DB_JamArea4402.xml create mode 100644 =A01+UH01-KF00/Programmbausteine/700_Jams/Inbound_Oben/DB_JamArea4403.xml create mode 100644 =A01+UH01-KF00/Programmbausteine/700_Jams/Inbound_Oben/DB_JamArea4501.xml create mode 100644 =A01+UH01-KF00/Programmbausteine/700_Jams/Inbound_Oben/DB_JamArea4502.xml create mode 100644 =A01+UH01-KF00/Programmbausteine/700_Jams/Inbound_Oben/DB_JamArea4503.xml create mode 100644 =A01+UH01-KF00/Programmbausteine/700_Jams/Inbound_Oben/DB_JamBoom1.xml create mode 100644 =A01+UH01-KF00/Programmbausteine/700_Jams/Inbound_Unten/Buffer/DB_JamBuffer101.xml create mode 100644 =A01+UH01-KF00/Programmbausteine/700_Jams/Inbound_Unten/Buffer/DB_JamBuffer102.xml create mode 100644 =A01+UH01-KF00/Programmbausteine/700_Jams/Inbound_Unten/DB_JamArea0100.xml create mode 100644 =A01+UH01-KF00/Programmbausteine/700_Jams/Inbound_Unten/DB_JamArea0101.xml create mode 100644 =A01+UH01-KF00/Programmbausteine/700_Jams/Inbound_Unten/DB_JamArea0102.xml create mode 100644 =A01+UH01-KF00/Programmbausteine/700_Jams/Inbound_Unten/DB_JamArea0103.xml create mode 100644 =A01+UH01-KF00/Programmbausteine/700_Jams/Inbound_Unten/DB_JamArea0104.xml create mode 100644 =A01+UH01-KF00/Programmbausteine/700_Jams/Inbound_Unten/DB_JamArea0106.xml create mode 100644 =A01+UH01-KF00/Programmbausteine/700_Jams/Inbound_Unten/DB_JamArea0107.xml create mode 100644 =A01+UH01-KF00/Programmbausteine/700_Jams/Inbound_Unten/DB_JamArea0108.xml create mode 100644 =A01+UH01-KF00/Programmbausteine/700_Jams/Inbound_Unten/DB_JamArea0110.xml create mode 100644 =A01+UH01-KF00/Programmbausteine/800_Storage/FB_EmptyCarrBuffer.scl create mode 100644 =A01+UH01-KF00/Programmbausteine/800_Storage/FB_Pin_EmptyBuffer.scl create mode 100644 =A01+UH01-KF00/Programmbausteine/900_Communications/DB_Buffer_CommunicationWCSBL.xml create mode 100644 =A01+UH01-KF00/Programmbausteine/900_Communications/DB_CommunicationParameters.xml create mode 100644 =A01+UH01-KF00/Programmbausteine/900_Communications/DB_LGF_FIFO_CommWCSBL.xml create mode 100644 =A01+UH01-KF00/Programmbausteine/900_Communications/FB_CommunicationWCSBL.scl create mode 100644 =A01+UH01-KF00/Programmbausteine/900_Communications/FB_CommunicationWCSBL_DB.xml create mode 100644 =A01+UH01-KF00/Programmbausteine/900_Communications/FB_FortnaTele_Placeholder.scl create mode 100644 =A01+UH01-KF00/Programmbausteine/900_Communications/FC_DateAsString_ISO.liblink create mode 100644 =A01+UH01-KF00/Programmbausteine/900_Communications/FC_Get_LaneStatus.scl create mode 100644 =A01+UH01-KF00/Programmbausteine/900_Communications/FC_Send_GOHDReqM.liblink create mode 100644 =A01+UH01-KF00/Programmbausteine/900_Communications/FC_Send_GOHDUM.liblink create mode 100644 =A01+UH01-KF00/Programmbausteine/900_Communications/FC_Send_HB.liblink create mode 100644 =A01+UH01-KF00/Programmbausteine/900_Communications/FC_SequenceNumber.liblink create mode 100644 =A01+UH01-KF00/Programmbausteine/900_Communications/FC_TimeAsString_ISO.liblink create mode 100644 =A01+UH01-KF00/Programmbausteine/900_Communications/LCom_Communication.liblink create mode 100644 =A01+UH01-KF00/Programmbausteine/900_Communications/LCom_Communication_DB.xml create mode 100644 =A01+UH01-KF00/Programmbausteine/900_Communications/LCom_Example.scl create mode 100644 =A01+UH01-KF00/Programmbausteine/900_Communications/LCom_ExampleComBuffers.xml create mode 100644 =A01+UH01-KF00/Programmbausteine/900_Communications/LCom_ExampleComData.xml create mode 100644 =A01+UH01-KF00/Programmbausteine/900_Communications/LStream_JsonDeserializer.liblink create mode 100644 =A01+UH01-KF00/Programmbausteine/900_Communications/Others_Communication/LGF_DTLtoString_ISO.scl create mode 100644 =A01+UH01-KF00/Programmbausteine/900_Communications/TCP-Logger/DB_Buffer_CommunicationLogger.xml create mode 100644 =A01+UH01-KF00/Programmbausteine/900_Communications/TCP-Logger/DB_CommunciationParametersLogger.xml create mode 100644 =A01+UH01-KF00/Programmbausteine/900_Communications/TCP-Logger/DB_LGF_FIFO_CommLogger.xml create mode 100644 =A01+UH01-KF00/Programmbausteine/900_Communications/TCP-Logger/FB_CommunicationLogger.scl create mode 100644 =A01+UH01-KF00/Programmbausteine/900_Communications/TCP-Logger/FB_CommunicationLogger_DB.xml create mode 100644 =A01+UH01-KF00/Programmbausteine/900_Communications/Testumgebung/DB_TestBaustein.xml create mode 100644 =A01+UH01-KF00/Programmbausteine/900_Communications/Testumgebung/TestBaustein.scl create mode 100644 =A01+UH01-KF00/Programmbausteine/900_Communications/Testumgebung/TestVariables.xml create mode 100644 =A01+UH01-KF00/Programmbausteine/970_Visu/DB_Interface_HMI.xml create mode 100644 =A01+UH01-KF00/Programmbausteine/970_Visu/DB_Visu_Jams.xml create mode 100644 =A01+UH01-KF00/Programmbausteine/970_Visu/FB_LaengenmessungAI.scl create mode 100644 =A01+UH01-KF00/Programmbausteine/970_Visu/FB_SSCCAI.scl create mode 100644 =A01+UH01-KF00/Programmbausteine/970_Visu/FB_Visu.scl create mode 100644 =A01+UH01-KF00/Programmbausteine/970_Visu/FB_Visu_DB.xml create mode 100644 =A01+UH01-KF00/Programmbausteine/970_Visu/FB_Visu_Jam.scl create mode 100644 =A01+UH01-KF00/Programmbausteine/970_Visu/FB_Visu_JamStorage.scl create mode 100644 =A01+UH01-KF00/Programmbausteine/970_Visu/FB_Visu_Jams.scl create mode 100644 =A01+UH01-KF00/Programmbausteine/970_Visu/FC_CarrierManipulator.scl create mode 100644 =A01+UH01-KF00/Programmbausteine/999_Safety/DB_InterfaceSafety.xml create mode 100644 =A01+UH01-KF00/Programmbausteine/DB_IO_Device_Test.xml create mode 100644 =A01+UH01-KF00/Programmbausteine/DB_Platzhalter_IoDevice.xml create mode 100644 =A01+UH01-KF00/Programmbausteine/FC_BARCODE_SEARCH.scl create mode 100644 =A01+UH01-KF00/Programmbausteine/LStream/Utilities/LStream_FindStringInByteCharArrayAdv.liblink create mode 100644 =A01+UH01-KF00/Programmbausteine/Längenmessung/FB_Längenmessung.scl create mode 100644 =A01+UH01-KF00/Programmbausteine/Längenmessung/FB_Längenmessung_DB.xml create mode 100644 =A01+UH01-KF00/Programmbausteine/OB1.xml create mode 100644 =A01+UH01-KF00/Programmbausteine/PROFINET/DB_PROFINET_DEVICE_STATES.xml create mode 100644 =A01+UH01-KF00/Programmbausteine/PROFINET/FC_GET_PROFINET_DEVICE_STATES.scl create mode 100644 =A01+UH01-KF00/Programmbausteine/Programming error.scl create mode 100644 =A01+UH01-KF00/Programmbausteine/SCADA/DB_Status.xml create mode 100644 =A01+UH01-KF00/Programmbausteine/SCADA/FB-OPC_UA_System-Stat.scl create mode 100644 =A01+UH01-KF00/Programmbausteine/SCADA/FB-OPC_UA_System-Stat_DB.xml create mode 100644 =A01+UH01-KF00/Programmbausteine/SCADA/OPC_UA/1_ServerDiagnostics/Instances/InstReadServerDiagnostics.xml create mode 100644 =A01+UH01-KF00/Programmbausteine/SCADA/OPC_UA/1_ServerDiagnostics/ReadServerDiagnostics.scl create mode 100644 =A01+UH01-KF00/Programmbausteine/SCADA/OPC_UA/1_ServerDiagnostics/ServerDiagnostics.xml create mode 100644 =A01+UH01-KF00/Programmbausteine/SCADA/OPC_UA/2_SessionDiagnostics/Instances/InstReadSessionDiagnostics.xml create mode 100644 =A01+UH01-KF00/Programmbausteine/SCADA/OPC_UA/2_SessionDiagnostics/ReadSessionDiagnostics.scl create mode 100644 =A01+UH01-KF00/Programmbausteine/SCADA/OPC_UA/2_SessionDiagnostics/SessionDiagnostics.xml create mode 100644 =A01+UH01-KF00/Programmbausteine/SCADA/OPC_UA/3_SessionDiagnostics.ClientLastContactTime/CheckForTimeOut.scl create mode 100644 =A01+UH01-KF00/Programmbausteine/SCADA/OPC_UA/3_SessionDiagnostics.ClientLastContactTime/ClientStatus.xml create mode 100644 =A01+UH01-KF00/Programmbausteine/SCADA/OPC_UA/3_SessionDiagnostics.ClientLastContactTime/Instances/InstCheckForTimeOut.xml create mode 100644 =A01+UH01-KF00/Programmbausteine/SCADA/OPC_UA/3_SessionDiagnostics.ClientLastContactTime/Instances/InstReadSessionDiagnostics.ClientLastContactTime.xml create mode 100644 =A01+UH01-KF00/Programmbausteine/SCADA/OPC_UA/Diagnostics.xml create mode 100644 =A01+UH01-KF00/Programmbausteine/_IBN/DB_Error.xml create mode 100644 =A01+UH01-KF00/Programmbausteine/_IBN/DB_S7.xml create mode 100644 =A01+UH01-KF00/Programmbausteine/_IBN/DB_TRO_TEST.xml create mode 100644 =A01+UH01-KF00/Programmbausteine/_IBN/DB_Test.xml create mode 100644 =A01+UH01-KF00/Programmbausteine/_IBN/DB_Test_HMI.xml create mode 100644 =A01+UH01-KF00/Programmbausteine/_IBN/FB_TestMain.scl create mode 100644 =A01+UH01-KF00/Programmbausteine/_IBN/FC_S7.scl create mode 100644 =A01+UH01-KF00/Programmbausteine/_IBN/IBN.xml create mode 100644 =A01+UH01-KF00/Programmbausteine/_IBN/fbTestMain_DB.xml create mode 100644 =A01+UH01-KF00/Programmbausteine/_Ladeschleife/400_Modules/FB_BoomWorkStation.scl create mode 100644 =A01+UH01-KF00/Programmbausteine/_Ladeschleife/400_Modules/FB_ButtonAck.scl create mode 100644 =A01+UH01-KF00/Programmbausteine/_Ladeschleife/400_Modules/FB_DistanceFoot.scl create mode 100644 =A01+UH01-KF00/Programmbausteine/_Ladeschleife/400_Modules/FB_LoadingBoom_INBOUND.scl create mode 100644 =A01+UH01-KF00/Programmbausteine/_Ladeschleife/400_Modules/FB_MotorSimple_INBOUND.scl create mode 100644 =A01+UH01-KF00/Programmbausteine/_Ladeschleife/400_Modules/FB_StopperSimple.scl create mode 100644 =A01+UH01-KF00/Programmbausteine/_Ladeschleife/400_Modules/FB_StopperSpecial.scl create mode 100644 =A01+UH01-KF00/Programmbausteine/_Ladeschleife/400_Modules/FB_Tilt_TEST.scl create mode 100644 =A01+UH01-KF00/Programmbausteine/_Ladeschleife/DB_GLOB_StopperState.xml create mode 100644 =A01+UH01-KF00/Programmbausteine/_Ladeschleife/TEST_INBOUND_DB.xml create mode 100644 =A01+UH01-KF00/Programmbausteine/_PerformanceMeasurement_/FB_PerfTest.scl create mode 100644 =A01+UH01-KF00/Programmbausteine/_PerformanceMeasurement_/fbPerfTestAfterRFID.xml create mode 100644 =A01+UH01-KF00/Programmbausteine/_PerformanceMeasurement_/fbPerfTestBeforeRFID.xml create mode 100644 =A01+UH01-KF00/Programmbausteine/_PerformanceMeasurement_/fbPerfTestEnd1_1_DB.xml create mode 100644 =A01+UH01-KF00/Programmbausteine/_PerformanceMeasurement_/fbPerfTestEnd1_DB.xml create mode 100644 =A01+UH01-KF00/Programmbausteine/_PerformanceMeasurement_/fbPerfTestEnd2_DB.xml create mode 100644 =A01+UH01-KF00/Programmbausteine/_PerformanceMeasurement_/fbPerfTestStart1_1_DB.xml create mode 100644 =A01+UH01-KF00/Programmbausteine/_PerformanceMeasurement_/fbPerfTestStart1_DB.xml create mode 100644 =A01+UH01-KF00/Programmbausteine/_PerformanceMeasurement_/fbPerfTestTRO115_FU_DB.xml diff --git a/.vci/workspace.vci.config b/.vci/workspace.vci.config new file mode 100644 index 0000000..acd6ffe --- /dev/null +++ b/.vci/workspace.vci.config @@ -0,0 +1 @@ +de-DE \ No newline at end of file diff --git a/.vci/workspace.vci.exportFormats.config b/.vci/workspace.vci.exportFormats.config new file mode 100644 index 0000000..4f1005e --- /dev/null +++ b/.vci/workspace.vci.exportFormats.config @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/=A01+UH01-KF00/PLC-Datentypen/2_ILSLib/FB/Misc/udt_InterruptParameter_1.liblink b/=A01+UH01-KF00/PLC-Datentypen/2_ILSLib/FB/Misc/udt_InterruptParameter_1.liblink new file mode 100644 index 0000000..c3a3695 --- /dev/null +++ b/=A01+UH01-KF00/PLC-Datentypen/2_ILSLib/FB/Misc/udt_InterruptParameter_1.liblink @@ -0,0 +1,2 @@ +TypeGuid: 97355db0-90c7-4394-9656-3acdfec45b04 +VersionGuid: bd3b46ca-0cf0-47fc-9154-7e6e814179d1 diff --git a/=A01+UH01-KF00/PLC-Datentypen/2_ILSLib/UDT/Carrier/stCarrierPin.liblink b/=A01+UH01-KF00/PLC-Datentypen/2_ILSLib/UDT/Carrier/stCarrierPin.liblink new file mode 100644 index 0000000..910ee6a --- /dev/null +++ b/=A01+UH01-KF00/PLC-Datentypen/2_ILSLib/UDT/Carrier/stCarrierPin.liblink @@ -0,0 +1,2 @@ +TypeGuid: a6bfdf72-c89c-460c-b3ef-7dceae0b83c5 +VersionGuid: 54f8309f-407f-4b75-b511-ff32eaba4f35 diff --git a/=A01+UH01-KF00/PLC-Datentypen/2_ILSLib/UDT/Carrier/stPinValues.liblink b/=A01+UH01-KF00/PLC-Datentypen/2_ILSLib/UDT/Carrier/stPinValues.liblink new file mode 100644 index 0000000..2290b45 --- /dev/null +++ b/=A01+UH01-KF00/PLC-Datentypen/2_ILSLib/UDT/Carrier/stPinValues.liblink @@ -0,0 +1,2 @@ +TypeGuid: 19be507e-e5bb-488c-84fc-6503bc39f793 +VersionGuid: dc3ac74d-005a-4d71-9c8a-996c602cca8a diff --git a/=A01+UH01-KF00/PLC-Datentypen/2_ILSLib/UDT/ConveyorStations/stConveyorStationPos.liblink b/=A01+UH01-KF00/PLC-Datentypen/2_ILSLib/UDT/ConveyorStations/stConveyorStationPos.liblink new file mode 100644 index 0000000..bb5234a --- /dev/null +++ b/=A01+UH01-KF00/PLC-Datentypen/2_ILSLib/UDT/ConveyorStations/stConveyorStationPos.liblink @@ -0,0 +1,2 @@ +TypeGuid: d409a80d-1225-4b09-b3f8-be8cb88bf155 +VersionGuid: fa1b25cb-f689-4840-b5c7-eed9eb44f6dc diff --git a/=A01+UH01-KF00/PLC-Datentypen/2_ILSLib/UDT/ConveyorStations/stConveyorStations.liblink b/=A01+UH01-KF00/PLC-Datentypen/2_ILSLib/UDT/ConveyorStations/stConveyorStations.liblink new file mode 100644 index 0000000..27dae54 --- /dev/null +++ b/=A01+UH01-KF00/PLC-Datentypen/2_ILSLib/UDT/ConveyorStations/stConveyorStations.liblink @@ -0,0 +1,2 @@ +TypeGuid: f0150d72-81e3-4453-b014-3f59a78b88ee +VersionGuid: 1c208479-6334-4124-b854-d889080ed716 diff --git a/=A01+UH01-KF00/PLC-Datentypen/2_ILSLib/UDT/ConveyorStations/stConveyorStationsData.liblink b/=A01+UH01-KF00/PLC-Datentypen/2_ILSLib/UDT/ConveyorStations/stConveyorStationsData.liblink new file mode 100644 index 0000000..a44b290 --- /dev/null +++ b/=A01+UH01-KF00/PLC-Datentypen/2_ILSLib/UDT/ConveyorStations/stConveyorStationsData.liblink @@ -0,0 +1,2 @@ +TypeGuid: 79d96156-eb37-422c-8537-94fb8ef0d7e3 +VersionGuid: 1105b908-9f8f-440d-858c-0ca809e1b562 diff --git a/=A01+UH01-KF00/PLC-Datentypen/2_ILSLib/UDT/PriorityManager/UDT_PrioParameter.liblink b/=A01+UH01-KF00/PLC-Datentypen/2_ILSLib/UDT/PriorityManager/UDT_PrioParameter.liblink new file mode 100644 index 0000000..7ab47bc --- /dev/null +++ b/=A01+UH01-KF00/PLC-Datentypen/2_ILSLib/UDT/PriorityManager/UDT_PrioParameter.liblink @@ -0,0 +1,2 @@ +TypeGuid: ac195f4d-7528-46fe-91c5-5b291bdec8f5 +VersionGuid: 151e4c54-a932-45b5-9177-45a33c57784a diff --git a/=A01+UH01-KF00/PLC-Datentypen/2_ILSLib/UDT/Switch/IntfSwitch.liblink b/=A01+UH01-KF00/PLC-Datentypen/2_ILSLib/UDT/Switch/IntfSwitch.liblink new file mode 100644 index 0000000..86541bc --- /dev/null +++ b/=A01+UH01-KF00/PLC-Datentypen/2_ILSLib/UDT/Switch/IntfSwitch.liblink @@ -0,0 +1,2 @@ +TypeGuid: 8a5e89a8-ccaf-4a9c-a733-f8d2084da0f6 +VersionGuid: 88616827-870a-4dfa-a549-e50acd9b24e5 diff --git a/=A01+UH01-KF00/PLC-Datentypen/2_ILSLib/UDT/Switch/S2MSwitch.liblink b/=A01+UH01-KF00/PLC-Datentypen/2_ILSLib/UDT/Switch/S2MSwitch.liblink new file mode 100644 index 0000000..45f768a --- /dev/null +++ b/=A01+UH01-KF00/PLC-Datentypen/2_ILSLib/UDT/Switch/S2MSwitch.liblink @@ -0,0 +1,2 @@ +TypeGuid: c3123c93-54bd-4570-b464-beb88c7c672e +VersionGuid: b62f2f76-ed11-4659-9833-ccaf2f344fd2 diff --git a/=A01+UH01-KF00/PLC-Datentypen/2_ILSLib/UDT/Switch/SettingsSwitch.liblink b/=A01+UH01-KF00/PLC-Datentypen/2_ILSLib/UDT/Switch/SettingsSwitch.liblink new file mode 100644 index 0000000..b80cb44 --- /dev/null +++ b/=A01+UH01-KF00/PLC-Datentypen/2_ILSLib/UDT/Switch/SettingsSwitch.liblink @@ -0,0 +1,2 @@ +TypeGuid: b987a8e1-c731-454f-8aef-c7a57cfd0be8 +VersionGuid: 594ad732-b8d7-4688-b883-1436e5f7c5eb diff --git a/=A01+UH01-KF00/PLC-Datentypen/BaseSystemLib/100_Common/StateMain/HMI/UDT_HMI_StateMachine.liblink b/=A01+UH01-KF00/PLC-Datentypen/BaseSystemLib/100_Common/StateMain/HMI/UDT_HMI_StateMachine.liblink new file mode 100644 index 0000000..435f9be --- /dev/null +++ b/=A01+UH01-KF00/PLC-Datentypen/BaseSystemLib/100_Common/StateMain/HMI/UDT_HMI_StateMachine.liblink @@ -0,0 +1,2 @@ +TypeGuid: 748bae8a-b781-46d7-addf-30d61d2eba87 +VersionGuid: 56ad7890-8af6-435b-bc6e-eb1b1452b2de diff --git a/=A01+UH01-KF00/PLC-Datentypen/BaseSystemLib/100_Common/StateMain/UDT/UDT_MainState.liblink b/=A01+UH01-KF00/PLC-Datentypen/BaseSystemLib/100_Common/StateMain/UDT/UDT_MainState.liblink new file mode 100644 index 0000000..e3f1235 --- /dev/null +++ b/=A01+UH01-KF00/PLC-Datentypen/BaseSystemLib/100_Common/StateMain/UDT/UDT_MainState.liblink @@ -0,0 +1,2 @@ +TypeGuid: 3d2d0bd3-d380-4083-96cb-8a59f491213f +VersionGuid: 10820fae-c055-4680-9e88-3660705a6587 diff --git a/=A01+UH01-KF00/PLC-Datentypen/BaseSystemLib/110_PROFINET/Barcode-Reader/UDT_BarcodeReader.liblink b/=A01+UH01-KF00/PLC-Datentypen/BaseSystemLib/110_PROFINET/Barcode-Reader/UDT_BarcodeReader.liblink new file mode 100644 index 0000000..53b05ee --- /dev/null +++ b/=A01+UH01-KF00/PLC-Datentypen/BaseSystemLib/110_PROFINET/Barcode-Reader/UDT_BarcodeReader.liblink @@ -0,0 +1,2 @@ +TypeGuid: 05646a02-da52-45d6-8bda-9aae3887a902 +VersionGuid: 938eb73b-d543-45c9-93b1-e09754c1416f diff --git a/=A01+UH01-KF00/PLC-Datentypen/BaseSystemLib/110_PROFINET/Barcode-Reader/UDT_SettingsBarcodeReader.liblink b/=A01+UH01-KF00/PLC-Datentypen/BaseSystemLib/110_PROFINET/Barcode-Reader/UDT_SettingsBarcodeReader.liblink new file mode 100644 index 0000000..6680406 --- /dev/null +++ b/=A01+UH01-KF00/PLC-Datentypen/BaseSystemLib/110_PROFINET/Barcode-Reader/UDT_SettingsBarcodeReader.liblink @@ -0,0 +1,2 @@ +TypeGuid: 9cd149c5-120a-4c6b-b374-72d0804fee13 +VersionGuid: 6be7977f-bd26-4a22-a946-663b8c2af2c1 diff --git a/=A01+UH01-KF00/PLC-Datentypen/BaseSystemLib/110_PROFINET/Barcode-Reader/stCognexInterface.liblink b/=A01+UH01-KF00/PLC-Datentypen/BaseSystemLib/110_PROFINET/Barcode-Reader/stCognexInterface.liblink new file mode 100644 index 0000000..caa92d2 --- /dev/null +++ b/=A01+UH01-KF00/PLC-Datentypen/BaseSystemLib/110_PROFINET/Barcode-Reader/stCognexInterface.liblink @@ -0,0 +1,2 @@ +TypeGuid: 522f83ce-0f0f-4b78-ad1b-5bd95073250a +VersionGuid: fd4fcb5f-2541-42a7-b6e0-a0e94d47950e diff --git a/=A01+UH01-KF00/PLC-Datentypen/BaseSystemLib/110_PROFINET/Barcode-Reader/stHMI_BRCognexDM.liblink b/=A01+UH01-KF00/PLC-Datentypen/BaseSystemLib/110_PROFINET/Barcode-Reader/stHMI_BRCognexDM.liblink new file mode 100644 index 0000000..59177cd --- /dev/null +++ b/=A01+UH01-KF00/PLC-Datentypen/BaseSystemLib/110_PROFINET/Barcode-Reader/stHMI_BRCognexDM.liblink @@ -0,0 +1,2 @@ +TypeGuid: ba76061d-44fd-44db-918c-8781346850fc +VersionGuid: 4292f22b-ef2b-4a96-8038-d15fd7be6b5a diff --git a/=A01+UH01-KF00/PLC-Datentypen/BaseSystemLib/110_PROFINET/Sensors/UDT_HMI_Sensor.liblink b/=A01+UH01-KF00/PLC-Datentypen/BaseSystemLib/110_PROFINET/Sensors/UDT_HMI_Sensor.liblink new file mode 100644 index 0000000..e57a0c4 --- /dev/null +++ b/=A01+UH01-KF00/PLC-Datentypen/BaseSystemLib/110_PROFINET/Sensors/UDT_HMI_Sensor.liblink @@ -0,0 +1,2 @@ +TypeGuid: 7dd56464-1b63-4d64-b2d7-887bdb82e393 +VersionGuid: b57e71d3-bb28-42e3-98c8-056af10bfdcb diff --git a/=A01+UH01-KF00/PLC-Datentypen/BaseSystemLib/110_PROFINET/Sensors/UDT_HMI_Sensor_Config.liblink b/=A01+UH01-KF00/PLC-Datentypen/BaseSystemLib/110_PROFINET/Sensors/UDT_HMI_Sensor_Config.liblink new file mode 100644 index 0000000..79d1bff --- /dev/null +++ b/=A01+UH01-KF00/PLC-Datentypen/BaseSystemLib/110_PROFINET/Sensors/UDT_HMI_Sensor_Config.liblink @@ -0,0 +1,2 @@ +TypeGuid: 50f6123e-5cf5-451c-991a-e3b8c4fc53e6 +VersionGuid: e4319c82-04b6-4bf6-856a-f001cb82348c diff --git a/=A01+UH01-KF00/PLC-Datentypen/BaseSystemLib/110_PROFINET/Sensors/UDT_HMI_Sensor_Control.liblink b/=A01+UH01-KF00/PLC-Datentypen/BaseSystemLib/110_PROFINET/Sensors/UDT_HMI_Sensor_Control.liblink new file mode 100644 index 0000000..1d2014a --- /dev/null +++ b/=A01+UH01-KF00/PLC-Datentypen/BaseSystemLib/110_PROFINET/Sensors/UDT_HMI_Sensor_Control.liblink @@ -0,0 +1,2 @@ +TypeGuid: 09d91f68-6a2d-4805-86d6-9574c935a865 +VersionGuid: 0315a473-65a3-42eb-8abe-27c8b0341757 diff --git a/=A01+UH01-KF00/PLC-Datentypen/BaseSystemLib/110_PROFINET/Sensors/UDT_Sensor.liblink b/=A01+UH01-KF00/PLC-Datentypen/BaseSystemLib/110_PROFINET/Sensors/UDT_Sensor.liblink new file mode 100644 index 0000000..492ca4a --- /dev/null +++ b/=A01+UH01-KF00/PLC-Datentypen/BaseSystemLib/110_PROFINET/Sensors/UDT_Sensor.liblink @@ -0,0 +1,2 @@ +TypeGuid: daf03d56-a8bc-4c33-9e87-b6b4ed277fe3 +VersionGuid: d053d64c-e366-43e2-bd21-474f5cd34c8f diff --git a/=A01+UH01-KF00/PLC-Datentypen/BaseSystemLib/160_Monitoring/UDT/DataLogBuffer.liblink b/=A01+UH01-KF00/PLC-Datentypen/BaseSystemLib/160_Monitoring/UDT/DataLogBuffer.liblink new file mode 100644 index 0000000..5980415 --- /dev/null +++ b/=A01+UH01-KF00/PLC-Datentypen/BaseSystemLib/160_Monitoring/UDT/DataLogBuffer.liblink @@ -0,0 +1,2 @@ +TypeGuid: df9e1d69-e6ce-4ac1-9ae0-7fbf009a214e +VersionGuid: 662af92b-5a15-46a6-b86f-f079e0b6c023 diff --git a/=A01+UH01-KF00/PLC-Datentypen/BaseSystemLib/160_Monitoring/UDT_HMI_Monitoring.liblink b/=A01+UH01-KF00/PLC-Datentypen/BaseSystemLib/160_Monitoring/UDT_HMI_Monitoring.liblink new file mode 100644 index 0000000..3759c51 --- /dev/null +++ b/=A01+UH01-KF00/PLC-Datentypen/BaseSystemLib/160_Monitoring/UDT_HMI_Monitoring.liblink @@ -0,0 +1,2 @@ +TypeGuid: 1318a870-c8b2-4276-897a-cd2ea2f4218c +VersionGuid: 5ca767c2-29a7-4ab8-9216-04d3eb721ae9 diff --git a/=A01+UH01-KF00/PLC-Datentypen/BaseSystemLib/170_Communications/TCP/UDT/UDT_TelegramData.liblink b/=A01+UH01-KF00/PLC-Datentypen/BaseSystemLib/170_Communications/TCP/UDT/UDT_TelegramData.liblink new file mode 100644 index 0000000..fad9cb5 --- /dev/null +++ b/=A01+UH01-KF00/PLC-Datentypen/BaseSystemLib/170_Communications/TCP/UDT/UDT_TelegramData.liblink @@ -0,0 +1,2 @@ +TypeGuid: f88be0d9-1f28-4bcb-a5a1-4b77b0e34878 +VersionGuid: 98b089a9-4b8e-4a6f-8a92-5ae5a1509c03 diff --git a/=A01+UH01-KF00/PLC-Datentypen/BaseSystemLib/170_Communications/TCP/UDT/UDT_TelegramData_Send.liblink b/=A01+UH01-KF00/PLC-Datentypen/BaseSystemLib/170_Communications/TCP/UDT/UDT_TelegramData_Send.liblink new file mode 100644 index 0000000..4f04b46 --- /dev/null +++ b/=A01+UH01-KF00/PLC-Datentypen/BaseSystemLib/170_Communications/TCP/UDT/UDT_TelegramData_Send.liblink @@ -0,0 +1,2 @@ +TypeGuid: 8ba5f026-f6a4-48b6-99af-dc7e461fdb45 +VersionGuid: 03564d6e-8226-4e22-a3ea-f92edd06e200 diff --git a/=A01+UH01-KF00/PLC-Datentypen/BaseSystemLib/170_Communications/TCP/UDT/UDT_TelegramDefinition.liblink b/=A01+UH01-KF00/PLC-Datentypen/BaseSystemLib/170_Communications/TCP/UDT/UDT_TelegramDefinition.liblink new file mode 100644 index 0000000..ff12c48 --- /dev/null +++ b/=A01+UH01-KF00/PLC-Datentypen/BaseSystemLib/170_Communications/TCP/UDT/UDT_TelegramDefinition.liblink @@ -0,0 +1,2 @@ +TypeGuid: 1e3c4983-857e-4011-8c76-51027a08bc9f +VersionGuid: 2d1cc429-2c73-4e6c-80c3-aba5ed21dc9a diff --git a/=A01+UH01-KF00/PLC-Datentypen/BaseSystemLib/180_Safety/UDT_SafetyInterface.liblink b/=A01+UH01-KF00/PLC-Datentypen/BaseSystemLib/180_Safety/UDT_SafetyInterface.liblink new file mode 100644 index 0000000..20f96b4 --- /dev/null +++ b/=A01+UH01-KF00/PLC-Datentypen/BaseSystemLib/180_Safety/UDT_SafetyInterface.liblink @@ -0,0 +1,2 @@ +TypeGuid: fb864e13-ea61-4360-8d0f-d5d050b72048 +VersionGuid: a11cbfca-b52e-4e12-9c12-bc76381e0450 diff --git a/=A01+UH01-KF00/PLC-Datentypen/Carrier/stCarrierLocation.xml b/=A01+UH01-KF00/PLC-Datentypen/Carrier/stCarrierLocation.xml new file mode 100644 index 0000000..97fb2e6 --- /dev/null +++ b/=A01+UH01-KF00/PLC-Datentypen/Carrier/stCarrierLocation.xml @@ -0,0 +1,62 @@ + + + + + + +
+ + +
+
+ stCarrierLocation + +
+ + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + +
+
\ No newline at end of file diff --git a/=A01+UH01-KF00/PLC-Datentypen/CarrierStatisticsStandard.xml b/=A01+UH01-KF00/PLC-Datentypen/CarrierStatisticsStandard.xml new file mode 100644 index 0000000..6dd45a8 --- /dev/null +++ b/=A01+UH01-KF00/PLC-Datentypen/CarrierStatisticsStandard.xml @@ -0,0 +1,63 @@ + + + + + + +
+ + + +
+
+ CarrierStatisticsStandard + +
+ + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + +
+
\ No newline at end of file diff --git a/=A01+UH01-KF00/PLC-Datentypen/EventCorrection/stConveyorStationCarrier_Log.xml b/=A01+UH01-KF00/PLC-Datentypen/EventCorrection/stConveyorStationCarrier_Log.xml new file mode 100644 index 0000000..3175d7a --- /dev/null +++ b/=A01+UH01-KF00/PLC-Datentypen/EventCorrection/stConveyorStationCarrier_Log.xml @@ -0,0 +1,100 @@ + + + + + + +
+ + + Zugehörigkeit + + + + + Auftragsnummer + + + + + Materialnummer + + + + + Ziel + + + + + Zeitstempel + + + + + Barcode Carrier + + + + + Carrier ist aktiv + + + + + Carrier ist beladen + + +
+
+ stConveyorStationCarrier_Log + +
+ + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + +
+
\ No newline at end of file diff --git a/=A01+UH01-KF00/PLC-Datentypen/EventCorrection/stEventLog.xml b/=A01+UH01-KF00/PLC-Datentypen/EventCorrection/stEventLog.xml new file mode 100644 index 0000000..0dbb382 --- /dev/null +++ b/=A01+UH01-KF00/PLC-Datentypen/EventCorrection/stEventLog.xml @@ -0,0 +1,63 @@ + + + + + + +
+ + + +
+
+ stEventLog + +
+ + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + +
+
\ No newline at end of file diff --git a/=A01+UH01-KF00/PLC-Datentypen/EventCorrection/stEventLogAbrufSeq.xml b/=A01+UH01-KF00/PLC-Datentypen/EventCorrection/stEventLogAbrufSeq.xml new file mode 100644 index 0000000..d45d0b2 --- /dev/null +++ b/=A01+UH01-KF00/PLC-Datentypen/EventCorrection/stEventLogAbrufSeq.xml @@ -0,0 +1,66 @@ + + + + + + +
+ + + + + + +
+
+ stEventLogAbrufSeq + +
+ + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + +
+
\ No newline at end of file diff --git a/=A01+UH01-KF00/PLC-Datentypen/EventCorrection/stEventLogAbrufSeqResponse.xml b/=A01+UH01-KF00/PLC-Datentypen/EventCorrection/stEventLogAbrufSeqResponse.xml new file mode 100644 index 0000000..ea1b560 --- /dev/null +++ b/=A01+UH01-KF00/PLC-Datentypen/EventCorrection/stEventLogAbrufSeqResponse.xml @@ -0,0 +1,63 @@ + + + + + + +
+ + + +
+
+ stEventLogAbrufSeqResponse + +
+ + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + +
+
\ No newline at end of file diff --git a/=A01+UH01-KF00/PLC-Datentypen/EventCorrection/stEventStepChange.xml b/=A01+UH01-KF00/PLC-Datentypen/EventCorrection/stEventStepChange.xml new file mode 100644 index 0000000..a5924d4 --- /dev/null +++ b/=A01+UH01-KF00/PLC-Datentypen/EventCorrection/stEventStepChange.xml @@ -0,0 +1,70 @@ + + + + + + +
+ + + Neuer / Aktueller Schritt + + + + + Vorheriger Schritt + + +
+
+ stEventStepChange + +
+ + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + +
+
\ No newline at end of file diff --git a/=A01+UH01-KF00/PLC-Datentypen/Fortna-WES-WCS/Payload/UDT_Payload_CRCanM.liblink b/=A01+UH01-KF00/PLC-Datentypen/Fortna-WES-WCS/Payload/UDT_Payload_CRCanM.liblink new file mode 100644 index 0000000..2297260 --- /dev/null +++ b/=A01+UH01-KF00/PLC-Datentypen/Fortna-WES-WCS/Payload/UDT_Payload_CRCanM.liblink @@ -0,0 +1,2 @@ +TypeGuid: 63f00789-2c22-4aa4-bfcc-e588fec4879b +VersionGuid: 4db51e45-c3c3-4394-9e0d-28fc58562095 diff --git a/=A01+UH01-KF00/PLC-Datentypen/Fortna-WES-WCS/Payload/UDT_Payload_CRRespM.liblink b/=A01+UH01-KF00/PLC-Datentypen/Fortna-WES-WCS/Payload/UDT_Payload_CRRespM.liblink new file mode 100644 index 0000000..4e9796e --- /dev/null +++ b/=A01+UH01-KF00/PLC-Datentypen/Fortna-WES-WCS/Payload/UDT_Payload_CRRespM.liblink @@ -0,0 +1,2 @@ +TypeGuid: 85b38644-05f1-4c58-81af-5710bca05871 +VersionGuid: 8bb0b94c-a1d5-4a32-8d10-6c1dd8f20614 diff --git a/=A01+UH01-KF00/PLC-Datentypen/Fortna-WES-WCS/Payload/UDT_Payload_CReqM.liblink b/=A01+UH01-KF00/PLC-Datentypen/Fortna-WES-WCS/Payload/UDT_Payload_CReqM.liblink new file mode 100644 index 0000000..9f4bb53 --- /dev/null +++ b/=A01+UH01-KF00/PLC-Datentypen/Fortna-WES-WCS/Payload/UDT_Payload_CReqM.liblink @@ -0,0 +1,2 @@ +TypeGuid: 21cdd0b4-76f2-4bc2-b241-1336e5bc646a +VersionGuid: 4d7b4b54-1b04-491d-aae4-d8023ff8cc22 diff --git a/=A01+UH01-KF00/PLC-Datentypen/Fortna-WES-WCS/Payload/UDT_Payload_CSRespM.liblink b/=A01+UH01-KF00/PLC-Datentypen/Fortna-WES-WCS/Payload/UDT_Payload_CSRespM.liblink new file mode 100644 index 0000000..42fa234 --- /dev/null +++ b/=A01+UH01-KF00/PLC-Datentypen/Fortna-WES-WCS/Payload/UDT_Payload_CSRespM.liblink @@ -0,0 +1,2 @@ +TypeGuid: 3c830616-777f-444d-b459-27c9e884eda1 +VersionGuid: c6e1046d-df91-47db-a161-fdaf524ca1fc diff --git a/=A01+UH01-KF00/PLC-Datentypen/Fortna-WES-WCS/Payload/UDT_Payload_CTMP.liblink b/=A01+UH01-KF00/PLC-Datentypen/Fortna-WES-WCS/Payload/UDT_Payload_CTMP.liblink new file mode 100644 index 0000000..56905a5 --- /dev/null +++ b/=A01+UH01-KF00/PLC-Datentypen/Fortna-WES-WCS/Payload/UDT_Payload_CTMP.liblink @@ -0,0 +1,2 @@ +TypeGuid: 05b3626f-dfd5-45f9-bc54-94baa216ec4b +VersionGuid: fd787b6f-219b-48e3-b092-14442aa3e4b6 diff --git a/=A01+UH01-KF00/PLC-Datentypen/Fortna-WES-WCS/Payload/UDT_Payload_ECNT.liblink b/=A01+UH01-KF00/PLC-Datentypen/Fortna-WES-WCS/Payload/UDT_Payload_ECNT.liblink new file mode 100644 index 0000000..d394e2f --- /dev/null +++ b/=A01+UH01-KF00/PLC-Datentypen/Fortna-WES-WCS/Payload/UDT_Payload_ECNT.liblink @@ -0,0 +1,2 @@ +TypeGuid: 484681dd-e494-4cff-ba16-287939cc69b8 +VersionGuid: d9074f40-3f6d-4d35-870d-12c5be690af3 diff --git a/=A01+UH01-KF00/PLC-Datentypen/Fortna-WES-WCS/Payload/UDT_Payload_GOHDReqM.liblink b/=A01+UH01-KF00/PLC-Datentypen/Fortna-WES-WCS/Payload/UDT_Payload_GOHDReqM.liblink new file mode 100644 index 0000000..637ea7c --- /dev/null +++ b/=A01+UH01-KF00/PLC-Datentypen/Fortna-WES-WCS/Payload/UDT_Payload_GOHDReqM.liblink @@ -0,0 +1,2 @@ +TypeGuid: 666dd6af-e45f-4e7f-beea-96303e72f898 +VersionGuid: 3bbc627a-f824-4222-ac97-581602d7e8e6 diff --git a/=A01+UH01-KF00/PLC-Datentypen/Fortna-WES-WCS/Payload/UDT_Payload_GOHDRespM.liblink b/=A01+UH01-KF00/PLC-Datentypen/Fortna-WES-WCS/Payload/UDT_Payload_GOHDRespM.liblink new file mode 100644 index 0000000..cb18b0a --- /dev/null +++ b/=A01+UH01-KF00/PLC-Datentypen/Fortna-WES-WCS/Payload/UDT_Payload_GOHDRespM.liblink @@ -0,0 +1,2 @@ +TypeGuid: 2a4d2358-929f-416a-ba2b-c63071ebcdaa +VersionGuid: 6a632efa-4407-41ef-a7a8-fa953df669b2 diff --git a/=A01+UH01-KF00/PLC-Datentypen/Fortna-WES-WCS/Payload/UDT_Payload_GOHDUM.liblink b/=A01+UH01-KF00/PLC-Datentypen/Fortna-WES-WCS/Payload/UDT_Payload_GOHDUM.liblink new file mode 100644 index 0000000..90c8bc2 --- /dev/null +++ b/=A01+UH01-KF00/PLC-Datentypen/Fortna-WES-WCS/Payload/UDT_Payload_GOHDUM.liblink @@ -0,0 +1,2 @@ +TypeGuid: 6b8c1d9c-ed1f-43bc-b4c3-ee89a9f82d48 +VersionGuid: 9c25dc2e-f2be-47cf-9628-0317fba94bc4 diff --git a/=A01+UH01-KF00/PLC-Datentypen/Fortna-WES-WCS/Payload/UDT_Payload_INDX.liblink b/=A01+UH01-KF00/PLC-Datentypen/Fortna-WES-WCS/Payload/UDT_Payload_INDX.liblink new file mode 100644 index 0000000..01e78f7 --- /dev/null +++ b/=A01+UH01-KF00/PLC-Datentypen/Fortna-WES-WCS/Payload/UDT_Payload_INDX.liblink @@ -0,0 +1,2 @@ +TypeGuid: e4578b53-1c34-42ed-a514-2389474f800b +VersionGuid: 8dc546c7-2d35-45f3-84dc-86ae313bc4de diff --git a/=A01+UH01-KF00/PLC-Datentypen/Fortna-WES-WCS/Payload/UDT_Payload_UNLDResp.liblink b/=A01+UH01-KF00/PLC-Datentypen/Fortna-WES-WCS/Payload/UDT_Payload_UNLDResp.liblink new file mode 100644 index 0000000..c51e05a --- /dev/null +++ b/=A01+UH01-KF00/PLC-Datentypen/Fortna-WES-WCS/Payload/UDT_Payload_UNLDResp.liblink @@ -0,0 +1,2 @@ +TypeGuid: 4ec5a0dc-6784-4f7d-adbf-bb5e8a887d09 +VersionGuid: ada9d072-6cd7-4768-87bb-e79b0103f504 diff --git a/=A01+UH01-KF00/PLC-Datentypen/Fortna-WES-WCS/Payload/UDT_Payload_WSAD.liblink b/=A01+UH01-KF00/PLC-Datentypen/Fortna-WES-WCS/Payload/UDT_Payload_WSAD.liblink new file mode 100644 index 0000000..a4f8e51 --- /dev/null +++ b/=A01+UH01-KF00/PLC-Datentypen/Fortna-WES-WCS/Payload/UDT_Payload_WSAD.liblink @@ -0,0 +1,2 @@ +TypeGuid: 02a407a3-e237-42cc-9013-54f199c192e9 +VersionGuid: 5ada2af7-f6aa-4747-aa84-b9a5a2ea2d11 diff --git a/=A01+UH01-KF00/PLC-Datentypen/Fortna-WES-WCS/Telegram/UDT_Telegram_CRCanM.liblink b/=A01+UH01-KF00/PLC-Datentypen/Fortna-WES-WCS/Telegram/UDT_Telegram_CRCanM.liblink new file mode 100644 index 0000000..c095ced --- /dev/null +++ b/=A01+UH01-KF00/PLC-Datentypen/Fortna-WES-WCS/Telegram/UDT_Telegram_CRCanM.liblink @@ -0,0 +1,2 @@ +TypeGuid: 48efb43c-e768-4132-9a1e-bbf659fda75d +VersionGuid: 1f2b3a60-4a74-4b12-9fc1-ccdefd510dbd diff --git a/=A01+UH01-KF00/PLC-Datentypen/Fortna-WES-WCS/Telegram/UDT_Telegram_CRRespM.liblink b/=A01+UH01-KF00/PLC-Datentypen/Fortna-WES-WCS/Telegram/UDT_Telegram_CRRespM.liblink new file mode 100644 index 0000000..8ebde4b --- /dev/null +++ b/=A01+UH01-KF00/PLC-Datentypen/Fortna-WES-WCS/Telegram/UDT_Telegram_CRRespM.liblink @@ -0,0 +1,2 @@ +TypeGuid: 7e8f29b8-eca6-4c82-abdd-dcb71dbc0bab +VersionGuid: 3f60fc01-feb3-4101-9e02-31c435326321 diff --git a/=A01+UH01-KF00/PLC-Datentypen/Fortna-WES-WCS/Telegram/UDT_Telegram_CReqM.liblink b/=A01+UH01-KF00/PLC-Datentypen/Fortna-WES-WCS/Telegram/UDT_Telegram_CReqM.liblink new file mode 100644 index 0000000..4e6fe0c --- /dev/null +++ b/=A01+UH01-KF00/PLC-Datentypen/Fortna-WES-WCS/Telegram/UDT_Telegram_CReqM.liblink @@ -0,0 +1,2 @@ +TypeGuid: 8022bccc-21b8-41da-b27d-9e71d6fbe3b3 +VersionGuid: e8c05940-59b8-42cc-9679-786dba66e486 diff --git a/=A01+UH01-KF00/PLC-Datentypen/Fortna-WES-WCS/Telegram/UDT_Telegram_CSRespM.liblink b/=A01+UH01-KF00/PLC-Datentypen/Fortna-WES-WCS/Telegram/UDT_Telegram_CSRespM.liblink new file mode 100644 index 0000000..2089dc6 --- /dev/null +++ b/=A01+UH01-KF00/PLC-Datentypen/Fortna-WES-WCS/Telegram/UDT_Telegram_CSRespM.liblink @@ -0,0 +1,2 @@ +TypeGuid: cf3e8640-6014-4787-ad9d-04fe2730f086 +VersionGuid: f100f284-17fd-4542-a407-f5ca979c19bb diff --git a/=A01+UH01-KF00/PLC-Datentypen/Fortna-WES-WCS/Telegram/UDT_Telegram_CTMP.liblink b/=A01+UH01-KF00/PLC-Datentypen/Fortna-WES-WCS/Telegram/UDT_Telegram_CTMP.liblink new file mode 100644 index 0000000..632b51c --- /dev/null +++ b/=A01+UH01-KF00/PLC-Datentypen/Fortna-WES-WCS/Telegram/UDT_Telegram_CTMP.liblink @@ -0,0 +1,2 @@ +TypeGuid: 53619bd4-cd53-4bd3-ab4e-aa7b3ac45245 +VersionGuid: e71837a9-5569-4e0e-8e48-c2d876f13cfa diff --git a/=A01+UH01-KF00/PLC-Datentypen/Fortna-WES-WCS/Telegram/UDT_Telegram_ECNT.liblink b/=A01+UH01-KF00/PLC-Datentypen/Fortna-WES-WCS/Telegram/UDT_Telegram_ECNT.liblink new file mode 100644 index 0000000..94ba1d9 --- /dev/null +++ b/=A01+UH01-KF00/PLC-Datentypen/Fortna-WES-WCS/Telegram/UDT_Telegram_ECNT.liblink @@ -0,0 +1,2 @@ +TypeGuid: cc95b33c-e64f-4305-83a1-edb363c135e7 +VersionGuid: cc8cf6d6-dda9-4b55-bdc0-e3345b81d39b diff --git a/=A01+UH01-KF00/PLC-Datentypen/Fortna-WES-WCS/Telegram/UDT_Telegram_GOHDReqM.liblink b/=A01+UH01-KF00/PLC-Datentypen/Fortna-WES-WCS/Telegram/UDT_Telegram_GOHDReqM.liblink new file mode 100644 index 0000000..098eb38 --- /dev/null +++ b/=A01+UH01-KF00/PLC-Datentypen/Fortna-WES-WCS/Telegram/UDT_Telegram_GOHDReqM.liblink @@ -0,0 +1,2 @@ +TypeGuid: d06db1be-8dfb-4e9b-a49a-2511b7966bc0 +VersionGuid: e5db6ab5-e08b-413f-9a74-4a92f058182c diff --git a/=A01+UH01-KF00/PLC-Datentypen/Fortna-WES-WCS/Telegram/UDT_Telegram_GOHDRespM.liblink b/=A01+UH01-KF00/PLC-Datentypen/Fortna-WES-WCS/Telegram/UDT_Telegram_GOHDRespM.liblink new file mode 100644 index 0000000..af29987 --- /dev/null +++ b/=A01+UH01-KF00/PLC-Datentypen/Fortna-WES-WCS/Telegram/UDT_Telegram_GOHDRespM.liblink @@ -0,0 +1,2 @@ +TypeGuid: 12374bfa-2577-421f-a872-cfd768f73e33 +VersionGuid: 17fcd97d-078f-4749-a68f-734a3e964a58 diff --git a/=A01+UH01-KF00/PLC-Datentypen/Fortna-WES-WCS/Telegram/UDT_Telegram_GOHDUM.liblink b/=A01+UH01-KF00/PLC-Datentypen/Fortna-WES-WCS/Telegram/UDT_Telegram_GOHDUM.liblink new file mode 100644 index 0000000..ab7d5fb --- /dev/null +++ b/=A01+UH01-KF00/PLC-Datentypen/Fortna-WES-WCS/Telegram/UDT_Telegram_GOHDUM.liblink @@ -0,0 +1,2 @@ +TypeGuid: 700b1a41-37d3-4539-a842-1dce5ba90ed3 +VersionGuid: e1093720-3bee-493f-9d86-a5fe1fb9614b diff --git a/=A01+UH01-KF00/PLC-Datentypen/Fortna-WES-WCS/Telegram/UDT_Telegram_INDX.liblink b/=A01+UH01-KF00/PLC-Datentypen/Fortna-WES-WCS/Telegram/UDT_Telegram_INDX.liblink new file mode 100644 index 0000000..8b25a2f --- /dev/null +++ b/=A01+UH01-KF00/PLC-Datentypen/Fortna-WES-WCS/Telegram/UDT_Telegram_INDX.liblink @@ -0,0 +1,2 @@ +TypeGuid: 66960c87-0f2c-4edb-a96b-10acafb08fb8 +VersionGuid: c5a3d699-bf3b-494f-82e7-f2d0ed88084d diff --git a/=A01+UH01-KF00/PLC-Datentypen/Fortna-WES-WCS/Telegram/UDT_Telegram_UNLDResp.liblink b/=A01+UH01-KF00/PLC-Datentypen/Fortna-WES-WCS/Telegram/UDT_Telegram_UNLDResp.liblink new file mode 100644 index 0000000..6a209e9 --- /dev/null +++ b/=A01+UH01-KF00/PLC-Datentypen/Fortna-WES-WCS/Telegram/UDT_Telegram_UNLDResp.liblink @@ -0,0 +1,2 @@ +TypeGuid: a25ca67d-4f6c-4ccb-a424-5e1711d5b2b8 +VersionGuid: 77f4cf3f-ae71-4d7a-ac21-d8cd42b0bc17 diff --git a/=A01+UH01-KF00/PLC-Datentypen/Fortna-WES-WCS/Telegram/UDT_Telegram_WSAD.liblink b/=A01+UH01-KF00/PLC-Datentypen/Fortna-WES-WCS/Telegram/UDT_Telegram_WSAD.liblink new file mode 100644 index 0000000..111a88f --- /dev/null +++ b/=A01+UH01-KF00/PLC-Datentypen/Fortna-WES-WCS/Telegram/UDT_Telegram_WSAD.liblink @@ -0,0 +1,2 @@ +TypeGuid: 2868112d-1273-4a0c-aca3-1c7766d1ff78 +VersionGuid: 05508324-1f14-4c4e-bc12-0ca525293515 diff --git a/=A01+UH01-KF00/PLC-Datentypen/Fortna-WES-WCS/UDT_Header.liblink b/=A01+UH01-KF00/PLC-Datentypen/Fortna-WES-WCS/UDT_Header.liblink new file mode 100644 index 0000000..ddfd2da --- /dev/null +++ b/=A01+UH01-KF00/PLC-Datentypen/Fortna-WES-WCS/UDT_Header.liblink @@ -0,0 +1,2 @@ +TypeGuid: f59df3af-e54d-48fe-824c-e7866136355f +VersionGuid: d4b4e5a3-ef08-47b6-a8d1-53ea3c7d9adc diff --git a/=A01+UH01-KF00/PLC-Datentypen/Fortna-WES-WCS/UDT_Workstation.liblink b/=A01+UH01-KF00/PLC-Datentypen/Fortna-WES-WCS/UDT_Workstation.liblink new file mode 100644 index 0000000..d5add2a --- /dev/null +++ b/=A01+UH01-KF00/PLC-Datentypen/Fortna-WES-WCS/UDT_Workstation.liblink @@ -0,0 +1,2 @@ +TypeGuid: d4f2ce6a-191a-47a3-a45c-c04bb1793be3 +VersionGuid: 3d139e0a-22d3-4d4c-b2c1-8f15ededfde7 diff --git a/=A01+UH01-KF00/PLC-Datentypen/ILSLib/PriorityManager/UDT_MTRO_Prio.liblink b/=A01+UH01-KF00/PLC-Datentypen/ILSLib/PriorityManager/UDT_MTRO_Prio.liblink new file mode 100644 index 0000000..e64e02c --- /dev/null +++ b/=A01+UH01-KF00/PLC-Datentypen/ILSLib/PriorityManager/UDT_MTRO_Prio.liblink @@ -0,0 +1,2 @@ +TypeGuid: b4d5d6ca-cf66-497f-a4ea-5a850dec4413 +VersionGuid: c353e6f7-87d9-4400-a81b-36e8565ec9dc diff --git a/=A01+UH01-KF00/PLC-Datentypen/ILSLib/PriorityManager/UDT_Request.liblink b/=A01+UH01-KF00/PLC-Datentypen/ILSLib/PriorityManager/UDT_Request.liblink new file mode 100644 index 0000000..9fc972b --- /dev/null +++ b/=A01+UH01-KF00/PLC-Datentypen/ILSLib/PriorityManager/UDT_Request.liblink @@ -0,0 +1,2 @@ +TypeGuid: a8b25178-7578-447c-852f-a21404c4bfd6 +VersionGuid: 74ec709b-866d-46f6-abc6-f5fa026b4bb7 diff --git a/=A01+UH01-KF00/PLC-Datentypen/ILSLib/PriorityManager/UDT_Response.liblink b/=A01+UH01-KF00/PLC-Datentypen/ILSLib/PriorityManager/UDT_Response.liblink new file mode 100644 index 0000000..8bf4baa --- /dev/null +++ b/=A01+UH01-KF00/PLC-Datentypen/ILSLib/PriorityManager/UDT_Response.liblink @@ -0,0 +1,2 @@ +TypeGuid: 7c3b5bd8-2bd0-4142-8573-13628f5f670b +VersionGuid: fc376672-43cb-4b4c-8862-daf93d007513 diff --git a/=A01+UH01-KF00/PLC-Datentypen/ILSLib/Separator/IntfSeparator.liblink b/=A01+UH01-KF00/PLC-Datentypen/ILSLib/Separator/IntfSeparator.liblink new file mode 100644 index 0000000..03ddbd9 --- /dev/null +++ b/=A01+UH01-KF00/PLC-Datentypen/ILSLib/Separator/IntfSeparator.liblink @@ -0,0 +1,2 @@ +TypeGuid: 877895f5-b783-4a5d-bf45-e5aa8c52970f +VersionGuid: 7a81ff69-aa42-4807-983a-58b7ed9583d0 diff --git a/=A01+UH01-KF00/PLC-Datentypen/ILSLib/Separator/SettingsSeparator.liblink b/=A01+UH01-KF00/PLC-Datentypen/ILSLib/Separator/SettingsSeparator.liblink new file mode 100644 index 0000000..f26020e --- /dev/null +++ b/=A01+UH01-KF00/PLC-Datentypen/ILSLib/Separator/SettingsSeparator.liblink @@ -0,0 +1,2 @@ +TypeGuid: 2e3914bf-0036-4580-8965-c56b76bd2003 +VersionGuid: 31baee87-a116-43f0-b516-bd7914a74d0b diff --git a/=A01+UH01-KF00/PLC-Datentypen/ILSLib/Separator/UDT_HMI_Separator.liblink b/=A01+UH01-KF00/PLC-Datentypen/ILSLib/Separator/UDT_HMI_Separator.liblink new file mode 100644 index 0000000..f59c059 --- /dev/null +++ b/=A01+UH01-KF00/PLC-Datentypen/ILSLib/Separator/UDT_HMI_Separator.liblink @@ -0,0 +1,2 @@ +TypeGuid: 4facddbf-79fc-4650-bf17-d05e9e31b010 +VersionGuid: 844e29dc-63f2-4fef-9e67-331444a7f3cc diff --git a/=A01+UH01-KF00/PLC-Datentypen/ILSLib/Separator/UDT_HMI_SeparatorConfig.liblink b/=A01+UH01-KF00/PLC-Datentypen/ILSLib/Separator/UDT_HMI_SeparatorConfig.liblink new file mode 100644 index 0000000..9a9ab95 --- /dev/null +++ b/=A01+UH01-KF00/PLC-Datentypen/ILSLib/Separator/UDT_HMI_SeparatorConfig.liblink @@ -0,0 +1,2 @@ +TypeGuid: 7471d821-806b-499d-9418-56461cc6b168 +VersionGuid: a2c5419c-9cf7-473b-9fd8-031a55043337 diff --git a/=A01+UH01-KF00/PLC-Datentypen/ILSLib/Separator/UDT_HMI_SeparatorControl.liblink b/=A01+UH01-KF00/PLC-Datentypen/ILSLib/Separator/UDT_HMI_SeparatorControl.liblink new file mode 100644 index 0000000..03a17b8 --- /dev/null +++ b/=A01+UH01-KF00/PLC-Datentypen/ILSLib/Separator/UDT_HMI_SeparatorControl.liblink @@ -0,0 +1,2 @@ +TypeGuid: c96bc9f6-9ee8-4c73-a126-a839ed69f4dc +VersionGuid: 34a7aa2d-a226-4ff4-a1dd-02edfed02927 diff --git a/=A01+UH01-KF00/PLC-Datentypen/ILSLib/Separator/UDT_HMI_SeparatorError.liblink b/=A01+UH01-KF00/PLC-Datentypen/ILSLib/Separator/UDT_HMI_SeparatorError.liblink new file mode 100644 index 0000000..fa37d3f --- /dev/null +++ b/=A01+UH01-KF00/PLC-Datentypen/ILSLib/Separator/UDT_HMI_SeparatorError.liblink @@ -0,0 +1,2 @@ +TypeGuid: 371d13d8-9fe5-4b50-b1ed-7c9f4e958058 +VersionGuid: 264ad080-8c27-4751-8173-72e706002d25 diff --git a/=A01+UH01-KF00/PLC-Datentypen/ILSLib/Separator/UDT_HMI_SeparatorStatus.liblink b/=A01+UH01-KF00/PLC-Datentypen/ILSLib/Separator/UDT_HMI_SeparatorStatus.liblink new file mode 100644 index 0000000..3fc51b0 --- /dev/null +++ b/=A01+UH01-KF00/PLC-Datentypen/ILSLib/Separator/UDT_HMI_SeparatorStatus.liblink @@ -0,0 +1,2 @@ +TypeGuid: 86f8883d-433f-4543-98ce-b60a55b59c03 +VersionGuid: dfc8b4c9-df23-466b-9ef8-77835fd74ff8 diff --git a/=A01+UH01-KF00/PLC-Datentypen/ILSLib/UDT/stCarrier.liblink b/=A01+UH01-KF00/PLC-Datentypen/ILSLib/UDT/stCarrier.liblink new file mode 100644 index 0000000..c5d176b --- /dev/null +++ b/=A01+UH01-KF00/PLC-Datentypen/ILSLib/UDT/stCarrier.liblink @@ -0,0 +1,2 @@ +TypeGuid: e1e80a27-a133-4f03-83be-6ca64e2b017e +VersionGuid: 85ebb5d6-2793-4e8b-a9d6-e9553e3d00af diff --git a/=A01+UH01-KF00/PLC-Datentypen/ILSLib/UDT/stEventBookingInfo.liblink b/=A01+UH01-KF00/PLC-Datentypen/ILSLib/UDT/stEventBookingInfo.liblink new file mode 100644 index 0000000..9572757 --- /dev/null +++ b/=A01+UH01-KF00/PLC-Datentypen/ILSLib/UDT/stEventBookingInfo.liblink @@ -0,0 +1,2 @@ +TypeGuid: 82c85f0d-ccab-431d-aa92-eed22521aa25 +VersionGuid: c4bb5b1d-d494-4ba9-8579-919f46480c1e diff --git a/=A01+UH01-KF00/PLC-Datentypen/ILSLib/UDT/stEventCorrectionInfo.liblink b/=A01+UH01-KF00/PLC-Datentypen/ILSLib/UDT/stEventCorrectionInfo.liblink new file mode 100644 index 0000000..4ee279e --- /dev/null +++ b/=A01+UH01-KF00/PLC-Datentypen/ILSLib/UDT/stEventCorrectionInfo.liblink @@ -0,0 +1,2 @@ +TypeGuid: 77406f65-d326-40b7-8806-4eba40123000 +VersionGuid: ffd25bc8-8294-4342-8ce7-f912afc2ff0f diff --git a/=A01+UH01-KF00/PLC-Datentypen/ILSLib/UDT/stEventScanInfo.liblink b/=A01+UH01-KF00/PLC-Datentypen/ILSLib/UDT/stEventScanInfo.liblink new file mode 100644 index 0000000..94458f6 --- /dev/null +++ b/=A01+UH01-KF00/PLC-Datentypen/ILSLib/UDT/stEventScanInfo.liblink @@ -0,0 +1,2 @@ +TypeGuid: 0ee040fd-7c22-447b-9f54-00ab7755a6de +VersionGuid: c2b9634d-aac2-4ebb-86d8-3d8f90f2857b diff --git a/=A01+UH01-KF00/PLC-Datentypen/ILSLib/UDT/stSimuJamConfig.liblink b/=A01+UH01-KF00/PLC-Datentypen/ILSLib/UDT/stSimuJamConfig.liblink new file mode 100644 index 0000000..d320e6b --- /dev/null +++ b/=A01+UH01-KF00/PLC-Datentypen/ILSLib/UDT/stSimuJamConfig.liblink @@ -0,0 +1,2 @@ +TypeGuid: 09dc13df-4eb4-40b9-8f69-07fae8449920 +VersionGuid: 9c95005a-bc1a-478a-a4ce-272b58a3351f diff --git a/=A01+UH01-KF00/PLC-Datentypen/ILSLib/UDT_HMI_TRO.liblink b/=A01+UH01-KF00/PLC-Datentypen/ILSLib/UDT_HMI_TRO.liblink new file mode 100644 index 0000000..0c7f77d --- /dev/null +++ b/=A01+UH01-KF00/PLC-Datentypen/ILSLib/UDT_HMI_TRO.liblink @@ -0,0 +1,2 @@ +TypeGuid: ef43cebe-2a8c-4da7-88df-8b7957091968 +VersionGuid: f233daa7-f3c9-4c51-848f-9442d6da7a88 diff --git a/=A01+UH01-KF00/PLC-Datentypen/ILSLib/UDT_TROConfig.liblink b/=A01+UH01-KF00/PLC-Datentypen/ILSLib/UDT_TROConfig.liblink new file mode 100644 index 0000000..903b9e5 --- /dev/null +++ b/=A01+UH01-KF00/PLC-Datentypen/ILSLib/UDT_TROConfig.liblink @@ -0,0 +1,2 @@ +TypeGuid: 81115fd3-a033-4d1e-9ef0-41d839b84581 +VersionGuid: b35a49c0-95d8-4cb2-82c8-4bfaccf74f0b diff --git a/=A01+UH01-KF00/PLC-Datentypen/ILSLib/UDT_TROCtrl.liblink b/=A01+UH01-KF00/PLC-Datentypen/ILSLib/UDT_TROCtrl.liblink new file mode 100644 index 0000000..0485674 --- /dev/null +++ b/=A01+UH01-KF00/PLC-Datentypen/ILSLib/UDT_TROCtrl.liblink @@ -0,0 +1,2 @@ +TypeGuid: 0aa56e8c-afed-4343-a462-60d83cbdddb9 +VersionGuid: 29b196f7-9ed6-4672-aaba-212f20cd63de diff --git a/=A01+UH01-KF00/PLC-Datentypen/ILSLib/UDT_TROState.liblink b/=A01+UH01-KF00/PLC-Datentypen/ILSLib/UDT_TROState.liblink new file mode 100644 index 0000000..a5cb4d2 --- /dev/null +++ b/=A01+UH01-KF00/PLC-Datentypen/ILSLib/UDT_TROState.liblink @@ -0,0 +1,2 @@ +TypeGuid: 65033815-61c9-4fc1-9c62-4a635fbbcbc2 +VersionGuid: 8542fb20-c1df-4944-9f28-bc8bed0abdc5 diff --git a/=A01+UH01-KF00/PLC-Datentypen/ILSLib/Vario/SettingsVario.liblink b/=A01+UH01-KF00/PLC-Datentypen/ILSLib/Vario/SettingsVario.liblink new file mode 100644 index 0000000..ca9530d --- /dev/null +++ b/=A01+UH01-KF00/PLC-Datentypen/ILSLib/Vario/SettingsVario.liblink @@ -0,0 +1,2 @@ +TypeGuid: f264aab0-1862-4125-b62f-509a81d1119d +VersionGuid: 7f0024cb-17d0-4a97-88be-c6a1c812ecbd diff --git a/=A01+UH01-KF00/PLC-Datentypen/ILSLib/Vario/UDT_SettingsVarioFingerMonitoring.liblink b/=A01+UH01-KF00/PLC-Datentypen/ILSLib/Vario/UDT_SettingsVarioFingerMonitoring.liblink new file mode 100644 index 0000000..5a97671 --- /dev/null +++ b/=A01+UH01-KF00/PLC-Datentypen/ILSLib/Vario/UDT_SettingsVarioFingerMonitoring.liblink @@ -0,0 +1,2 @@ +TypeGuid: 6dc43587-53cd-4590-bf75-c379c9999bb5 +VersionGuid: b8bd3d69-0f56-4726-85de-e4f319ab8fda diff --git a/=A01+UH01-KF00/PLC-Datentypen/ILSLib/Vario/UDT_Vario.liblink b/=A01+UH01-KF00/PLC-Datentypen/ILSLib/Vario/UDT_Vario.liblink new file mode 100644 index 0000000..02015fc --- /dev/null +++ b/=A01+UH01-KF00/PLC-Datentypen/ILSLib/Vario/UDT_Vario.liblink @@ -0,0 +1,2 @@ +TypeGuid: bfb39b7e-4084-4427-a1bc-c6e73fd0956d +VersionGuid: e5da11d7-315b-4260-aa84-5d7366ea5a96 diff --git a/=A01+UH01-KF00/PLC-Datentypen/ILSLib/Vario/UDT_Vario_Config.liblink b/=A01+UH01-KF00/PLC-Datentypen/ILSLib/Vario/UDT_Vario_Config.liblink new file mode 100644 index 0000000..60f4251 --- /dev/null +++ b/=A01+UH01-KF00/PLC-Datentypen/ILSLib/Vario/UDT_Vario_Config.liblink @@ -0,0 +1,2 @@ +TypeGuid: 18f99447-56a8-47ed-ada8-26d8690d4156 +VersionGuid: d63c4a33-def0-485c-b063-5612c8cfbfd6 diff --git a/=A01+UH01-KF00/PLC-Datentypen/ILSLib/Vario/UDT_Vario_Control.liblink b/=A01+UH01-KF00/PLC-Datentypen/ILSLib/Vario/UDT_Vario_Control.liblink new file mode 100644 index 0000000..278cd38 --- /dev/null +++ b/=A01+UH01-KF00/PLC-Datentypen/ILSLib/Vario/UDT_Vario_Control.liblink @@ -0,0 +1,2 @@ +TypeGuid: 44e87796-3e1b-411a-90d9-fd8646985fa8 +VersionGuid: f93abcca-8010-4685-9e9d-314a45d61c46 diff --git a/=A01+UH01-KF00/PLC-Datentypen/ILSLib/Vario/UDT_Vario_Status.liblink b/=A01+UH01-KF00/PLC-Datentypen/ILSLib/Vario/UDT_Vario_Status.liblink new file mode 100644 index 0000000..429903d --- /dev/null +++ b/=A01+UH01-KF00/PLC-Datentypen/ILSLib/Vario/UDT_Vario_Status.liblink @@ -0,0 +1,2 @@ +TypeGuid: a65ddd12-dbf3-4d75-b457-97518258b198 +VersionGuid: 4d9adf77-28b8-4879-979e-12eadb52a01f diff --git a/=A01+UH01-KF00/PLC-Datentypen/IO Device Datentypen/IO_Device_UH01_Data.xml b/=A01+UH01-KF00/PLC-Datentypen/IO Device Datentypen/IO_Device_UH01_Data.xml new file mode 100644 index 0000000..b779ba7 --- /dev/null +++ b/=A01+UH01-KF00/PLC-Datentypen/IO Device Datentypen/IO_Device_UH01_Data.xml @@ -0,0 +1,135 @@ + + + + + + +
+ + + + true + + + to do + + + + + Füllstand Highway von Lager zu Inbound Empty (zu Kreisel) + + + + + Füllstand Highway von Lager zu AMR Loaded (lange Strecke) + + + + + Füllstand Highway von Inbound zu Lager Loaded (lange Strecke) + + + + + Füllstand Highway von Inbound zu Lager Empty (von Kreisel) + + + + + Füllstand Highway von AMR zu Kreisel + + + + + + Empty Carrier benötigt + + + + + Inbound Puffer voll + + + + + Stau Highway von Lager zu Inbound Empty (zu Kreisel) + + + + + Stau Highway von Lager zu AMR Loaded (lange Strecke) + + + + + Stau Highway von Inbound zu Lager Loaded (lange Strecke) + + + + + Stau Highway von Inbound zu Lager Empty (von Kreisel) + + + + + Stau Highway von AMR zu Kreisel + + + + + UZ1105 Bereichshalt auf Highway + + +
+
+ IO_Device_UH01_Data + +
+ + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + +
+
\ No newline at end of file diff --git a/=A01+UH01-KF00/PLC-Datentypen/IO Device Datentypen/IO_Device_UH02_Data.xml b/=A01+UH01-KF00/PLC-Datentypen/IO Device Datentypen/IO_Device_UH02_Data.xml new file mode 100644 index 0000000..617161a --- /dev/null +++ b/=A01+UH01-KF00/PLC-Datentypen/IO Device Datentypen/IO_Device_UH02_Data.xml @@ -0,0 +1,233 @@ + + + + + + +
+ + + + + + true + + + to do + + + + + + Füllstand Zufuhr von Level 2 Block 1 + + + + + Füllstand Zufuhr von Level 2 Block 2 + + + + + Füllstand Zufuhr von Level 2 Block 3 + + + + + Füllstand Block 1.1.1 + + + + + Füllstand Block 1.1.2 + + + + + Füllstand Block 1.1.3 + + + + + Füllstand Block 1.2.1 + + + + + Füllstand Block 1.2.2 + + + + + Füllstand Block 1.2.3 + + + + + Füllstand Block 1.3.1 + + + + + Füllstand Block 1.3.2 + + + + + Füllstand Block 1.3.3 + + + + + + Verteilerkreisel voll + + + + + Stau Zufuhr von Level 2 Block 1 + + + + + Stau Zufuhr von Level 2 Block 2 + + + + + Stau Zufuhr von Level 2 Block 3 + + + + + gesperrt Block 1.1.1 + + + + + gesperrt Block 1.1.2 + + + + + gesperrt Block 1.1.3 + + + + + gesperrt Block 1.2.1 + + + + + gesperrt Block 1.2.2 + + + + + gesperrt Block 1.2.3 + + + + + gesperrt Block 1.3.1 + + + + + gesperrt Block 1.3.2 + + + + + gesperrt Block 1.3.3 + + + + + UZ0208 Bereichshalt an Übergang 1 -> 2 + + + + + UZ2204 Bereichshalt an Übergang 1 -> 2 + + + + + UZ2207 Bereichshalt an Übergang 1 -> 2 + + + + + UZ0204 Bereichshalt Zwischen Section 2 / 3 + + + + + UZ0209 Bereichshalt am Verteilkreisel + + + + + UZ0210 Bereichshalt am Verteilkreisel + + + + + UZ0211 Bereichshalt am BST + + +
+
+ IO_Device_UH02_Data + +
+ + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + +
+
\ No newline at end of file diff --git a/=A01+UH01-KF00/PLC-Datentypen/IO Device Datentypen/IO_Device_UH03_Data.xml b/=A01+UH01-KF00/PLC-Datentypen/IO Device Datentypen/IO_Device_UH03_Data.xml new file mode 100644 index 0000000..6e91d49 --- /dev/null +++ b/=A01+UH01-KF00/PLC-Datentypen/IO Device Datentypen/IO_Device_UH03_Data.xml @@ -0,0 +1,260 @@ + + + + + + +
+ + + Übergabe Carrier 1 + + + + + true + + + Übergabe Carrier 2 + + + + + true + + + Übergabe Carrier 3 + + + + + true + + + + + true + + + + + true + + + + + true + + + Kontroll-Bits für Triggern und Ack + + + + + Neu hinzugefügt für Level 2 <-> Level 1 bei Blöcken + + + + + Füllstand Zufuhr von F2H + + + + + Füllstand Zufuhr von Highway Loaded + + + + + Füllstand Zufuhr von Highway Empty + + + + + Füllstand Block 2.1.1 + + + + + Füllstand Block 2.1.2 + + + + + Füllstand Block 2.1.3 + + + + + Füllstand Block 2.2.1 + + + + + Füllstand Block 2.2.2 + + + + + Füllstand Block 2.2.3 + + + + + Füllstand Block 2.3.1 + + + + + Füllstand Block 2.3.2 + + + + + Füllstand Block 2.3.3 + + + + + + Stau Zufuhr von F2H + + + + + Stau Zufuhr von Highway Loaded + + + + + Stau Zufuhr von Highway Empty + + + + + gesperrt Block 2.1.1 + + + + + gesperrt Block 2.1.2 + + + + + gesperrt Block 2.1.3 + + + + + gesperrt Block 2.2.1 + + + + + gesperrt Block 2.2.2 + + + + + gesperrt Block 2.2.3 + + + + + gesperrt Block 2.3.1 + + + + + gesperrt Block 2.3.2 + + + + + gesperrt Block 2.3.3 + + + + + UZ3103 / UZ3104 Bereichshalt an Übergang 2 -> 1 + + + + + UZ0307 / UZ0308 Bereichshalt an Übergang 2 -> 1 + + + + + UZ3303 / UZ3304 Bereichshalt an Übergang 2 -> 1 + + + + + UZ0309 Bereichshalt am Verteilkreisel + + + + + UZ0311 Bereichshalt am BST + + + + + UZ0312 Bereichshalt auf Highway + + +
+
+ IO_Device_UH03_Data + +
+ + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + +
+
\ No newline at end of file diff --git a/=A01+UH01-KF00/PLC-Datentypen/IO Device Datentypen/IO_Device_UH04_Data.xml b/=A01+UH01-KF00/PLC-Datentypen/IO Device Datentypen/IO_Device_UH04_Data.xml new file mode 100644 index 0000000..a2c67a6 --- /dev/null +++ b/=A01+UH01-KF00/PLC-Datentypen/IO Device Datentypen/IO_Device_UH04_Data.xml @@ -0,0 +1,115 @@ + + + + + + +
+ + + + true + + + to do + + + + + Füllstand Zufuhr AMR + + + + + Füllstand Abfuhr AMR + + + + + + Loaded Carrier benötigt + + + + + AMR Zufuhr stoppen + + + + + Workstation 1 aktiv + + + + + Workstation 2 aktiv + + + + + Workstation 3 aktiv + + + + + Stau Zufuhr AMR + + + + + Stau Abfuhr AMR + + +
+
+ IO_Device_UH04_Data + +
+ + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + +
+
\ No newline at end of file diff --git a/=A01+UH01-KF00/PLC-Datentypen/IO Device Datentypen/IO_Device_UH05_Data.xml b/=A01+UH01-KF00/PLC-Datentypen/IO Device Datentypen/IO_Device_UH05_Data.xml new file mode 100644 index 0000000..b8396fc --- /dev/null +++ b/=A01+UH01-KF00/PLC-Datentypen/IO Device Datentypen/IO_Device_UH05_Data.xml @@ -0,0 +1,157 @@ + + + + + + +
+ + + + true + + + to do + + 16#0 + + + + Füllstand Zufuhr Empty + + 0 + + + + Füllstand Zufuhr Loaded + + 0 + + + false + + + + Kreisel voll + + false + + + + Bedarf mehr Empty Jets + + false + + + + Bedarf mehr Loaded Jets + + false + + + + F2H Zufuhr Empty stoppen + + false + + + + F2H Zufuhr Loaded stoppen + + false + + + + Stau Zufuhr Empty + + false + + + + Stau Zufuhr Loaded + + false + + + + Workstation 1 aktiv + + false + + + + Workstation 2 aktiv + + false + + + + Workstation 3 aktiv + + false + + + + Workstation 4 aktiv + + false + + + + Workstation 5 aktiv + + false + +
+
+ IO_Device_UH05_Data + +
+ + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + +
+
\ No newline at end of file diff --git a/=A01+UH01-KF00/PLC-Datentypen/LCom/LCom_typeConfig.liblink b/=A01+UH01-KF00/PLC-Datentypen/LCom/LCom_typeConfig.liblink new file mode 100644 index 0000000..7e2bb5b --- /dev/null +++ b/=A01+UH01-KF00/PLC-Datentypen/LCom/LCom_typeConfig.liblink @@ -0,0 +1,2 @@ +TypeGuid: 337bf861-102c-424e-907d-c3666e4b4456 +VersionGuid: 5299d993-ad7e-4f88-a154-f3b0d8b9b9e0 diff --git a/=A01+UH01-KF00/PLC-Datentypen/LCom/LCom_typeDiagnostics.liblink b/=A01+UH01-KF00/PLC-Datentypen/LCom/LCom_typeDiagnostics.liblink new file mode 100644 index 0000000..7f5ae55 --- /dev/null +++ b/=A01+UH01-KF00/PLC-Datentypen/LCom/LCom_typeDiagnostics.liblink @@ -0,0 +1,2 @@ +TypeGuid: e88e7bd4-0f02-4559-b3b2-424959119a24 +VersionGuid: 7319b4c6-d0d9-4472-9c6b-e1d4864ea743 diff --git a/=A01+UH01-KF00/PLC-Datentypen/LCom_typeComUserData.xml b/=A01+UH01-KF00/PLC-Datentypen/LCom_typeComUserData.xml new file mode 100644 index 0000000..0924290 --- /dev/null +++ b/=A01+UH01-KF00/PLC-Datentypen/LCom_typeComUserData.xml @@ -0,0 +1,62 @@ + + + + + + +
+ + +
+
+ LCom_typeComUserData + +
+ + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + +
+
\ No newline at end of file diff --git a/=A01+UH01-KF00/PLC-Datentypen/LStream/DataTypes/LStream_typeElement.liblink b/=A01+UH01-KF00/PLC-Datentypen/LStream/DataTypes/LStream_typeElement.liblink new file mode 100644 index 0000000..75a82df --- /dev/null +++ b/=A01+UH01-KF00/PLC-Datentypen/LStream/DataTypes/LStream_typeElement.liblink @@ -0,0 +1,2 @@ +TypeGuid: 7c39a02f-f960-4e4e-a8fe-c76a6c2fcc8e +VersionGuid: 9e76c95f-a988-4ec6-aa76-be21173129e5 diff --git a/=A01+UH01-KF00/PLC-Datentypen/Mewa/IntfMainTRONEU.xml b/=A01+UH01-KF00/PLC-Datentypen/Mewa/IntfMainTRONEU.xml new file mode 100644 index 0000000..b4ef666 --- /dev/null +++ b/=A01+UH01-KF00/PLC-Datentypen/Mewa/IntfMainTRONEU.xml @@ -0,0 +1,85 @@ + + + + + + +
+ + + Freigabe SubTRO, für Initialisierung + + + + + Startbefehl an SubTRO / Dient auch als Handshake zu Done vom SubTRO + + + + + Unterbrechung des SubTRO / SubTRO soll warten + + + + + Fehlerquittierung durch MainTRO + + + + + Reset des SubTRO + + +
+
+ IntfMainTRONEU + +
+ + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + +
+
\ No newline at end of file diff --git a/=A01+UH01-KF00/PLC-Datentypen/Mewa/MFRComu/M2S/M2SMainTro_ST.xml b/=A01+UH01-KF00/PLC-Datentypen/Mewa/MFRComu/M2S/M2SMainTro_ST.xml new file mode 100644 index 0000000..6e68761 --- /dev/null +++ b/=A01+UH01-KF00/PLC-Datentypen/Mewa/MFRComu/M2S/M2SMainTro_ST.xml @@ -0,0 +1,80 @@ + + + + + + +
+ + + Auftragsdaten für Carrier (von MFR an SPS) + + + + + Abbruchsignal (z.B. wenn nächster Staubereich voll) + + + + + Fehler Quittieren + + + + + TRO anhalten + + +
+
+ M2SMainTro_ST + +
+ + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + +
+
\ No newline at end of file diff --git a/=A01+UH01-KF00/PLC-Datentypen/Mewa/MFRComu/M2S/M2SMainTro_Single.xml b/=A01+UH01-KF00/PLC-Datentypen/Mewa/MFRComu/M2S/M2SMainTro_Single.xml new file mode 100644 index 0000000..76b7bee --- /dev/null +++ b/=A01+UH01-KF00/PLC-Datentypen/Mewa/MFRComu/M2S/M2SMainTro_Single.xml @@ -0,0 +1,75 @@ + + + + + + +
+ + + Index der Anforderung + + + + + Startadresse 1, 2 evtl 3 + + + + + Endadresse. Meist 3 und 4 + + +
+
+ M2SMainTro_Single + +
+ + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + +
+
\ No newline at end of file diff --git a/=A01+UH01-KF00/PLC-Datentypen/Mewa/MFRComu/S2M/S2MSeparator.xml b/=A01+UH01-KF00/PLC-Datentypen/Mewa/MFRComu/S2M/S2MSeparator.xml new file mode 100644 index 0000000..9c3c3d7 --- /dev/null +++ b/=A01+UH01-KF00/PLC-Datentypen/Mewa/MFRComu/S2M/S2MSeparator.xml @@ -0,0 +1,142 @@ + + + + + + +
+ + + Bit 0: Separator Ist geöffnet + + + + + Bit 1: Es befindet sich min. ein Trolley im Separator + + + + + Bit 2: Es befindet sich ein Nullbügelträger im Separator + + + + + Bit 3: Separator ist bereit zum Trolleys ausfahren + + + + + Bit 4: Stau in Staubereich + + + + + Bit 5: Der NullBt-Sensor ist an, aber der In-Sensor nicht. Bitte prüfen Sie den Separator und die Sensoren. + + false + + + + Bit 6: Der Bt verlässt den Separator nicht. Bitte prüfen Sie den Separator. + + + + + Bit 7: Part Sensor belegt + + + + + Bit 8: Der Bt erreicht den Out-/Confirm-Sensor nicht. Bitte prüfen Sie den Separator und den Staubereich. + + + + + Bit 9: Ein Dauersignal wurde am Out-/Confirm-Sensor erkannt. Bitte prüfen Sie den Out-/Confirm-Sensor. + + + + + Reserve + + + + + Reserve + + + + + Reserve + + + + + Reserve + + + + + Reserve + + + + + Reserve + + false + +
+
+ S2MSeparator + +
+ + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + +
+
\ No newline at end of file diff --git a/=A01+UH01-KF00/PLC-Datentypen/OpcUaDiagnostics/typeApplicationDescription.xml b/=A01+UH01-KF00/PLC-Datentypen/OpcUaDiagnostics/typeApplicationDescription.xml new file mode 100644 index 0000000..0c4ae79 --- /dev/null +++ b/=A01+UH01-KF00/PLC-Datentypen/OpcUaDiagnostics/typeApplicationDescription.xml @@ -0,0 +1,135 @@ + + + + + + +
+ + + false + false + false + + + The globally unique identifier for the application instance. + + + + + false + false + false + + + The globally unique identifier for the product. + + + + + false + false + false + + + A localized descriptive name for the application. + + + 16#0003 + + + + + + + false + false + false + + + The type of application. (0=Server, 1=Client, 2=ClientAndServer, 3=DiscoveryServer) + + + + + false + false + false + + + A URI that identifies the Gateway Server associated with the discoveryUrls. + + + + + false + false + false + + + A URI that identifies the discovery profile supported by the URLs provided. + + + + + false + false + false + + + A list of URLs for the DiscoveryEndpoints provided by the application. + + +
+
+ typeApplicationDescription + +
+ + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + Specifies an application that is available. + + + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + typeApplicationDescription + + + + + +
+
\ No newline at end of file diff --git a/=A01+UH01-KF00/PLC-Datentypen/OpcUaDiagnostics/typeBuildInfo.xml b/=A01+UH01-KF00/PLC-Datentypen/OpcUaDiagnostics/typeBuildInfo.xml new file mode 100644 index 0000000..491dfbf --- /dev/null +++ b/=A01+UH01-KF00/PLC-Datentypen/OpcUaDiagnostics/typeBuildInfo.xml @@ -0,0 +1,120 @@ + + + + + + +
+ + + false + false + false + + + URI that identifies the software. + + + + + false + false + false + + + Name of the software manufacturer. + + + + + false + false + false + + + Name of the software. + + + + + false + false + false + + + Software version + + + + + false + false + false + + + Build number + + + + + false + false + false + + + Date and time of the build. + + +
+
+ typeBuildInfo + +
+ + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + Information that describes the build of the software. + + + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + typeBuildInfo + + + + + +
+
\ No newline at end of file diff --git a/=A01+UH01-KF00/PLC-Datentypen/OpcUaDiagnostics/typeLocalizedText.xml b/=A01+UH01-KF00/PLC-Datentypen/OpcUaDiagnostics/typeLocalizedText.xml new file mode 100644 index 0000000..8caa570 --- /dev/null +++ b/=A01+UH01-KF00/PLC-Datentypen/OpcUaDiagnostics/typeLocalizedText.xml @@ -0,0 +1,90 @@ + + + + + + +
+ + + false + false + false + + + Indicates in bit 0 whether the "Locale" field has a content and in bit 1 whether the "Text" field has a content. + + + + + false + false + false + + + The identifier for the locale (e.g. “en-US”). + + + + + false + false + false + + + The localized text. + + +
+
+ typeLocalizedText + +
+ + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + Defines a structure containing a String in a locale-specific translation specified in the identifier for the locale. + + + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + typeLocalizedText + + + + + +
+
\ No newline at end of file diff --git a/=A01+UH01-KF00/PLC-Datentypen/OpcUaDiagnostics/typeOperationLimits.xml b/=A01+UH01-KF00/PLC-Datentypen/OpcUaDiagnostics/typeOperationLimits.xml new file mode 100644 index 0000000..b77aa6c --- /dev/null +++ b/=A01+UH01-KF00/PLC-Datentypen/OpcUaDiagnostics/typeOperationLimits.xml @@ -0,0 +1,130 @@ + + + + + + +
+ + + false + false + false + + + Indicates the maximum size of the itemsToCreate array when a Clientcalls the CreateMonitoredItems, ModifyMonitoredItems, SetMonitoringMode, DeleteMonitoredItems or SetTriggering Service. + + + + + false + false + false + + + Indicates the maximum size of the nodesToBrowse array when calling the Browse Serviceor the continuationPoints array when a Clientcalls the BrowseNext Service. + + + + + false + false + false + + + Indicates the maximum size of the methodsToCall array when a Client calls the Call Service. + + + + + false + false + false + + + Indicates the maximum size of the nodesToRead array when a Clientcalls the Read Service. + + + + + false + false + false + + + Indicates the maximum size of the nodesToRegister array when a Clientcalls the RegisterNodes Serviceand the maximum size of the nodesToUnregister when calling the UnregisterNodes Service. + + + + + false + false + false + + + Indicates the maximum size of the browsePaths array when a Clientcalls the TranslateBrowsePathsToNodeIds Service. + + + + + false + false + false + + + Indicates the maximum size of the nodesToWrite array when a Clientcalls the Write Service. + + +
+
+ typeOperationLimits + +
+ + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + Is an entry point to access information on operation limits of the Server, + + + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + typeOperationLimits + + + + + +
+
\ No newline at end of file diff --git a/=A01+UH01-KF00/PLC-Datentypen/OpcUaDiagnostics/typeServer.xml b/=A01+UH01-KF00/PLC-Datentypen/OpcUaDiagnostics/typeServer.xml new file mode 100644 index 0000000..9dd32ae --- /dev/null +++ b/=A01+UH01-KF00/PLC-Datentypen/OpcUaDiagnostics/typeServer.xml @@ -0,0 +1,101 @@ + + + + + + +
+ + + false + false + false + + + Defines an array of namespace URIs. This Variable is also referred as namespace table. + + + + + false + false + false + + + Defines an array of ServerURIs. This Variable is also referred to as the server table. + + + + + false + false + false + + + + + false + false + false + + + + + false + false + false + + +
+
+ typeServer + +
+ + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + This ObjectType defines the capabilities supported by the OPC UA Server. + + + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + typeServer + + + + + +
+
\ No newline at end of file diff --git a/=A01+UH01-KF00/PLC-Datentypen/OpcUaDiagnostics/typeServerCapabilities.xml b/=A01+UH01-KF00/PLC-Datentypen/OpcUaDiagnostics/typeServerCapabilities.xml new file mode 100644 index 0000000..5d5edcc --- /dev/null +++ b/=A01+UH01-KF00/PLC-Datentypen/OpcUaDiagnostics/typeServerCapabilities.xml @@ -0,0 +1,147 @@ + + + + + + +
+ + + false + false + false + + + Indicates the maximum length of a one or multidimensional array supported by Variables of the Server. + + + + + false + false + false + + + Is an integer specifying the maximum number of parallel continuation points of the Browse Servicethat the Servercan support per session. + + + + + false + false + false + + + Indicates the maximum number of bytes in a ByteStringsupported by Variablesof the Server. + + + + + false + false + false + + + Is an integer specifying the maximum number of parallel continuation points of the HistoryRead Servicesthat the Servercan support per session. + + + + + false + false + false + + + Is an integer specifying the maximum number of parallel continuation points of the QueryFirst Servicesthat the Servercan support per session. + + + + + false + false + false + + + Indicates the maximum number of bytes in Stringssupported by Variablesof the Server. + + + + + false + false + false + + + Defines the minimum supported sample rate, including 0, which is supported by the Server. + + + + + false + false + false + + + + + false + false + false + + + Lists the Profiles that the Server supports. + + +
+
+ typeServerCapabilities + +
+ + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + Defines the capabilities supported by the OPC UA Server. + + + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + typeServerCapabilities + + + + + +
+
\ No newline at end of file diff --git a/=A01+UH01-KF00/PLC-Datentypen/OpcUaDiagnostics/typeServerDiagnostics.xml b/=A01+UH01-KF00/PLC-Datentypen/OpcUaDiagnostics/typeServerDiagnostics.xml new file mode 100644 index 0000000..747052d --- /dev/null +++ b/=A01+UH01-KF00/PLC-Datentypen/OpcUaDiagnostics/typeServerDiagnostics.xml @@ -0,0 +1,88 @@ + + + + + + +
+ + + false + false + false + + + + + false + false + false + + + + + false + false + false + + + + + false + false + false + + +
+
+ typeServerDiagnostics + +
+ + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + This ObjectType defines diagnostic information about the OPC UA Server. + + + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + typeServerDiagnostics + + + + + +
+
\ No newline at end of file diff --git a/=A01+UH01-KF00/PLC-Datentypen/OpcUaDiagnostics/typeServerDiagnosticsSummary.xml b/=A01+UH01-KF00/PLC-Datentypen/OpcUaDiagnostics/typeServerDiagnosticsSummary.xml new file mode 100644 index 0000000..be5ba6d --- /dev/null +++ b/=A01+UH01-KF00/PLC-Datentypen/OpcUaDiagnostics/typeServerDiagnosticsSummary.xml @@ -0,0 +1,180 @@ + + + + + + +
+ + + false + false + false + + + The number of server-created views in the server. + + + + + false + false + false + + + The number of client sessions currently established in the server. + + + + + false + false + false + + + The cumulative number of client sessions that have been established in the server since the server was started (or restarted). + + + + + false + false + false + + + The number of client session establishment requests (ActivateSession and CreateSession) that were rejected due to security constraints since the server was started (or restarted). + + + + + false + false + false + + + The number of client session establishment requests (ActivateSession and CreateSession) that were rejected since the server was started (or restarted). + + + + + false + false + false + + + The number of client sessions that were closed due to timeout since the server was started (or restarted). + + + + + false + false + false + + + The number of client sessions that were closed due to errors since the server was started (or restarted). + + + + + false + false + false + + + The number of subscriptions currently established in the server. + + + + + false + false + false + + + The cumulative number of subscriptions that have been established in the server since the server was started (or restarted). + + + + + false + false + false + + + The number of publishing intervals currently supported in the server. + + + + + false + false + false + + + The number of requests that were rejected due to security constraints since the server was started (or restarted). + + + + + false + false + false + + + The number of requests that were rejected since the server was started (or restarted). + + +
+
+ typeServerDiagnosticsSummary + +
+ + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + This structure contains diagnostic summary information for the Server. + + + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + typeServerDiagnosticsSummary + + + + + +
+
\ No newline at end of file diff --git a/=A01+UH01-KF00/PLC-Datentypen/OpcUaDiagnostics/typeServerStatus.xml b/=A01+UH01-KF00/PLC-Datentypen/OpcUaDiagnostics/typeServerStatus.xml new file mode 100644 index 0000000..a23734f --- /dev/null +++ b/=A01+UH01-KF00/PLC-Datentypen/OpcUaDiagnostics/typeServerStatus.xml @@ -0,0 +1,124 @@ + + + + + + +
+ + + false + false + false + + + Time (UTC) the Server was started. + + + + + false + false + false + + + The current time (UTC) as known by the Server. + + + + + false + false + false + + + The current state of the Server. (0 = Running) + + + + + false + false + false + + + + + false + false + false + + + Approximate number of seconds until the Server will be shut down. The value is only relevant once the state changes into SHUTDOWN_4. + + + + + false + false + false + + + An optional localized text indicating the reason for the shutdown. The value is only relevant once the state changes into SHUTDOWN_4. + + +
+ + 2#00000011 + +
+
+
+
+
+ typeServerStatus + +
+ + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + ServerStatus contains elements that describe the status of the Server. + + + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + typeServerStatus + + + + + +
+
\ No newline at end of file diff --git a/=A01+UH01-KF00/PLC-Datentypen/OpcUaDiagnostics/typeServiceCounter.xml b/=A01+UH01-KF00/PLC-Datentypen/OpcUaDiagnostics/typeServiceCounter.xml new file mode 100644 index 0000000..11591ca --- /dev/null +++ b/=A01+UH01-KF00/PLC-Datentypen/OpcUaDiagnostics/typeServiceCounter.xml @@ -0,0 +1,80 @@ + + + + + + +
+ + + false + false + false + + + The number of Service requests that have been received. + + + + + false + false + false + + + The total number of Service requests that were rejected. + + +
+
+ typeServiceCounter + +
+ + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + This structure contains diagnostic information about subscriptions. + + + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + typeServiceCounter + + + + + +
+
\ No newline at end of file diff --git a/=A01+UH01-KF00/PLC-Datentypen/OpcUaDiagnostics/typeSessionDiagnostics.xml b/=A01+UH01-KF00/PLC-Datentypen/OpcUaDiagnostics/typeSessionDiagnostics.xml new file mode 100644 index 0000000..ebd9865 --- /dev/null +++ b/=A01+UH01-KF00/PLC-Datentypen/OpcUaDiagnostics/typeSessionDiagnostics.xml @@ -0,0 +1,490 @@ + + + + + + +
+ + + false + false + false + + + Server-assigned identifier of the session. + + + + + false + false + false + + + The name of the session provided in the CreateSession request. + + + + + false + false + false + + + The description provided by the client in the CreateSession request. + + + + + false + false + false + + + The serverUri request in the CreateSession request. + + + + + false + false + false + + + The endpointUrl passed by the client to the CreateSession request. + + + + + false + false + false + + + Array of LocaleIds specified by the client in the open session call. + + + + + false + false + false + + + The requested session timeout specified by the client in the open session call. + + + + + false + false + false + + + The maximum size for the response message sent to the client. + + + + + false + false + false + + + The server timestamp when the client opens the session. + + + + + false + false + false + + + The server timestamp of the last request of the client in the context of the session. + + + + + false + false + false + + + The number of subscriptions currently used by the session. + + + + + false + false + false + + + The number of MonitoredItems currently used by the session. + + + + + false + false + false + + + The number of publish requests currently in the queue for the session. + + + + + false + false + false + + + Counter of all Services, identifying the number of received requests of any Services on the session. + + + + + false + false + false + + + Counter of all Services, identifying the number of Service requests that were rejected due to authorization failure + + + + + false + false + false + + + Counter of the Read Service, identifying the number of received requests of this Service on the session. + + + + + false + false + false + + + Counter of the HistoryRead Service, identifying the number of received requests of this Service on the session. + + + + + false + false + false + + + Counter of the Write Service, identifying the number of received requests of this Service on the session. + + + + + false + false + false + + + Counter of the HistoryUpdate Service, identifying the number of received requests of this Service on the session. + + + + + false + false + false + + + Counter of the Call Service, identifying the number of received requests of this Service on the session. + + + + + false + false + false + + + Counter of the CreateMonitoredItems Service, identifying the number of received requests of this Service on the session. + + + + + false + false + false + + + Counter of the ModifyMonitoredItems Service, identifying the number of received requests of this Service on the session. + + + + + false + false + false + + + Counter of the SetMonitoringMode Service, identifying the number of received requests of this Service on the session. + + + + + false + false + false + + + Counter of the SetTriggering Service, identifying the number of received requests of this Service on the session. + + + + + false + false + false + + + Counter of the DeleteMonitoredItems Service, identifying the number of received requests of this Service on the session. + + + + + false + false + false + + + Counter of the CreateSubscription Service, identifying the number of received requests of this Service on the session. + + + + + false + false + false + + + Counter of the ModifySubscription Service, identifying the number of received requests of this Service on the session. + + + + + false + false + false + + + Counter of the SetPublishingMode Service, identifying the number of received requests of this Service on the session. + + + + + false + false + false + + + Counter of the Publish Service, identifying the number of received requests of this Service on the session. + + + + + false + false + false + + + Counter of the Republish Service, identifying the number of received requests of this Service on the session. + + + + + false + false + false + + + Counter of the TransferSubscriptions Service, identifying the number of received requests of this Service on the session. + + + + + false + false + false + + + Counter of the DeleteSubscriptions Service, identifying the number of received requests of this Service on the session. + + + + + false + false + false + + + Counter of the AddNodes Service, identifying the number of received requests of this Service on the session. + + + + + false + false + false + + + Counter of the AddReferences Service, identifying the number of received requests of this Service on the session. + + + + + false + false + false + + + Counter of the DeleteNodes Service, identifying the number of received requests of this Service on the session. + + + + + false + false + false + + + Counter of the DeleteReferences Service, identifying the number of received requests of this Service on the session. + + + + + false + false + false + + + Counter of the Browse Service, identifying the number of received requests of this Service on the session. + + + + + false + false + false + + + Counter of the BrowseNext Service, identifying the number of received requests of this Service on the session. + + + + + false + false + false + + + Counter of the TranslateBrowsePathsToNodeIds Service, identifying the number of received requests of this Service on the session. + + + + + false + false + false + + + Counter of the QueryFirst Service, identifying the number of received requests of this Service on the session. + + + + + false + false + false + + + Counter of the QueryNext Service, identifying the number of received requests of this Service on the session. + + + + + false + false + false + + + Counter of the RegisterNodes Service, identifying the number of received requests of this Service on the session. + + + + + false + false + false + + + Counter of the UnregisterNodesService, identifying the number of received requests of this Service on the session. + + +
+
+ typeSessionDiagnostics + +
+ + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + This structure contains diagnostic information about client sessions. + + + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + typeSessionDiagnostics + + + + + +
+
\ No newline at end of file diff --git a/=A01+UH01-KF00/PLC-Datentypen/OpcUaDiagnostics/typeSessionSecurityDiagnosticsData.xml b/=A01+UH01-KF00/PLC-Datentypen/OpcUaDiagnostics/typeSessionSecurityDiagnosticsData.xml new file mode 100644 index 0000000..be35bbd --- /dev/null +++ b/=A01+UH01-KF00/PLC-Datentypen/OpcUaDiagnostics/typeSessionSecurityDiagnosticsData.xml @@ -0,0 +1,152 @@ + + + + + + +
+ + + false + false + false + + + Server-assigned identifier of the session. + + + + + false + false + false + + + Name of authenticated user when creating the session. + + + + + false + false + false + + + Array containing the name of the authenticated user currently active (either from creating the session or from calling the ActivateSession Service) and the history of those names. + + + + + false + false + false + + + Type of authentication currently used by the session. + + + + + false + false + false + + + Which encoding is used on the wire. The String shall be ‘XML’, ‘JSON’ or ‘UA Binary’. + + + + + false + false + false + + + Which transport protocol is used. The String shall be the scheme from the URL used to establish the session. For example, ‘opc.tcp’, ‘opc.wss’ or ‘https’. + + + + + false + false + false + + + The message security mode used for the session. + + + + + false + false + false + + + The name of the security policy used for the session. + + + + + false + false + false + + + The application instance certificate provided by the client in the CreateSession request. + + + + +
+
+ typeSessionSecurityDiagnosticsData + +
+ + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + This structure contains security-related diagnostic information about client sessions. Because this information is security-related, it shall only be accessible by authorised users. + + + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + typeSessionSecurityDiagnosticsData + + + + + +
+
\ No newline at end of file diff --git a/=A01+UH01-KF00/PLC-Datentypen/OpcUaDiagnostics/typeSimaticDevice.xml b/=A01+UH01-KF00/PLC-Datentypen/OpcUaDiagnostics/typeSimaticDevice.xml new file mode 100644 index 0000000..2dfe8df --- /dev/null +++ b/=A01+UH01-KF00/PLC-Datentypen/OpcUaDiagnostics/typeSimaticDevice.xml @@ -0,0 +1,174 @@ + + + + + + +
+ + + false + false + false + + + Address (pathname in the file system or a URL | Web address) of user manual for the device. + + + + + false + false + false + + + Overall revision level of the device. + + + + + false + false + false + + + Revision Level of the engineering environment. + + + + + false + false + false + + + Revision level of the hardware of the device. + + + + + false + false + false + + + Name of the company that manufactured the device. + + +
+ + 16#0002 + +
+
+
+ + + false + false + false + + + Model name of the device. + + +
+ + 16#0002 + +
+
+
+ + + false + false + false + + + Article number of the device. + + + + + false + false + false + + + An incremental counter indicating the number of times the static data within the Device has been modified. + + + + + false + false + false + + + Identifier that uniquely identifies, within a manufacturer, a device instance. + + + + + false + false + false + + + Revision level of the software/firmware of the device. + + +
+
+ typeSimaticDevice + +
+ + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + The PLC instance which supports OPC UA functionality. + + + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + typeSimaticDevice + + + + + +
+
\ No newline at end of file diff --git a/=A01+UH01-KF00/PLC-Datentypen/OpcUaDiagnostics/typeSubscriptionDiagnostics.xml b/=A01+UH01-KF00/PLC-Datentypen/OpcUaDiagnostics/typeSubscriptionDiagnostics.xml new file mode 100644 index 0000000..b95ebf2 --- /dev/null +++ b/=A01+UH01-KF00/PLC-Datentypen/OpcUaDiagnostics/typeSubscriptionDiagnostics.xml @@ -0,0 +1,370 @@ + + + + + + +
+ + + false + false + false + + + Server-assigned identifier of the session the subscription belongs to. + + + + + false + false + false + + + Server-assigned identifier of the subscription. + + + + + false + false + false + + + The priority the client assigned to the subscription. + + + + + false + false + false + + + The publishing interval of the subscription in milliseconds + + + + + false + false + false + + + The maximum keep-alive count of the subscription. + + + + + false + false + false + + + The maximum lifetime count of the subscription. + + + + + false + false + false + + + The maximum number of notifications per publish response. + + + + + false + false + false + + + Whether publishing is enabled for the subscription. + + + + + false + false + false + + + The number of ModifySubscription requests received for the subscription. + + + + + false + false + false + + + The number of times the subscription has been enabled. + + + + + false + false + false + + + The number of times the subscription has been disabled. + + + + + false + false + false + + + The number of Republish Service requests that have been received and processed for the subscription. + + + + + false + false + false + + + The total number of messages that have been requested to be republished for the subscription. + + + + + false + false + false + + + The number of messages that have been successfully republished for the subscription. + + + + + false + false + false + + + The total number of TransferSubscriptions Service requests that have been received for the subscription. + + + + + false + false + false + + + The number of times the subscription has been transferred to an alternate client. + + + + + false + false + false + + + The number of times the subscription has been transferred to an alternate session for the same client. + + + + + false + false + false + + + The number of Publish Service requests that have been received and processed for the subscription. + + + + + false + false + false + + + The number of data change Notifications sent by the subscription. + + + + + false + false + false + + + The number of Event Notifications sent by the subscription. + + + + + false + false + false + + + The total number of Notifications sent by the subscription. + + + + + false + false + false + + + The number of times the subscription has entered the LATE State, i.e. the number of times the publish timer expires and there are unsent notifications. + + + + + false + false + false + + + The number of times the subscription has entered the KEEPALIVE State. + + + + + false + false + false + + + The current lifetime count of the subscription. + + + + + false + false + false + + + The number of unacknowledged messages saved in the republish queue. + + + + + false + false + false + + + The number of messages that were discarded before they were acknowledged. + + + + + false + false + false + + + The total number of monitored items of the subscription, including the disabled monitored items. + + + + + false + false + false + + + The number of disabled monitored items of the subscription. + + + + + false + false + false + + + The number of times a monitored item dropped notifications because of a queue overflow. + + + + + false + false + false + + + Sequence number for the next notification message. + + + + + false + false + false + + + The number of times a monitored item in the subscription has generated an Event of type EventQueueOverflowEventType. + + +
+
+ typeSubscriptionDiagnostics + +
+ + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + This structure contains diagnostic information about subscriptions. + + + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + typeSubscriptionDiagnostics + + + + + +
+
\ No newline at end of file diff --git a/=A01+UH01-KF00/PLC-Datentypen/Storage/stJamConfig.liblink b/=A01+UH01-KF00/PLC-Datentypen/Storage/stJamConfig.liblink new file mode 100644 index 0000000..ea67176 --- /dev/null +++ b/=A01+UH01-KF00/PLC-Datentypen/Storage/stJamConfig.liblink @@ -0,0 +1,2 @@ +TypeGuid: 1ddce7e5-242b-4464-a0e7-b066a914b4f7 +VersionGuid: d53d3312-8aec-491b-ab1a-cc6a44e0f5ce diff --git a/=A01+UH01-KF00/PLC-Datentypen/Storage/stJamData.liblink b/=A01+UH01-KF00/PLC-Datentypen/Storage/stJamData.liblink new file mode 100644 index 0000000..c48e378 --- /dev/null +++ b/=A01+UH01-KF00/PLC-Datentypen/Storage/stJamData.liblink @@ -0,0 +1,2 @@ +TypeGuid: e09ba931-ab24-4b18-8a43-afef3eeb1921 +VersionGuid: 252760c3-1803-4302-8f47-dd828c2678b1 diff --git a/=A01+UH01-KF00/PLC-Datentypen/Storage/stJamStatus.liblink b/=A01+UH01-KF00/PLC-Datentypen/Storage/stJamStatus.liblink new file mode 100644 index 0000000..f477ca7 --- /dev/null +++ b/=A01+UH01-KF00/PLC-Datentypen/Storage/stJamStatus.liblink @@ -0,0 +1,2 @@ +TypeGuid: e7f020f2-a247-4f5d-9690-9d9770f80f87 +VersionGuid: 7c3c1e57-c31e-4152-893d-f265a4b6f222 diff --git a/=A01+UH01-KF00/PLC-Datentypen/Storage/stStorageConfig.liblink b/=A01+UH01-KF00/PLC-Datentypen/Storage/stStorageConfig.liblink new file mode 100644 index 0000000..48715d3 --- /dev/null +++ b/=A01+UH01-KF00/PLC-Datentypen/Storage/stStorageConfig.liblink @@ -0,0 +1,2 @@ +TypeGuid: 843394f5-9dc8-4d27-b12b-f45613d99a7d +VersionGuid: dd31f979-49ae-4241-9b52-2ebecdd977a2 diff --git a/=A01+UH01-KF00/PLC-Datentypen/Storage/stStorageData.liblink b/=A01+UH01-KF00/PLC-Datentypen/Storage/stStorageData.liblink new file mode 100644 index 0000000..91ef587 --- /dev/null +++ b/=A01+UH01-KF00/PLC-Datentypen/Storage/stStorageData.liblink @@ -0,0 +1,2 @@ +TypeGuid: fa2564d4-1a10-400a-918f-8624127faeb6 +VersionGuid: 19e433b7-e839-4aab-95fc-f6902c197401 diff --git a/=A01+UH01-KF00/PLC-Datentypen/Storage/stStorageLine.xml b/=A01+UH01-KF00/PLC-Datentypen/Storage/stStorageLine.xml new file mode 100644 index 0000000..8a84393 --- /dev/null +++ b/=A01+UH01-KF00/PLC-Datentypen/Storage/stStorageLine.xml @@ -0,0 +1,86 @@ + + + + + + +
+ + + gelagerte Carrier + + + + + true + + + Daten der Linie + + +
+ + +
+ + 107 + +
+
+
+
+
+
+
+
+ stStorageLine + +
+ + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + +
+
\ No newline at end of file diff --git a/=A01+UH01-KF00/PLC-Datentypen/Storage/stStorageLineB1.xml b/=A01+UH01-KF00/PLC-Datentypen/Storage/stStorageLineB1.xml new file mode 100644 index 0000000..6b26ec0 --- /dev/null +++ b/=A01+UH01-KF00/PLC-Datentypen/Storage/stStorageLineB1.xml @@ -0,0 +1,89 @@ + + + + + + +
+ + + gelagerte Carrier + + + + + true + + + Daten der Linie + + +
+ + +
+ + 103 + + + 103 + +
+
+
+
+
+
+
+
+ stStorageLineB1 + +
+ + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + +
+
\ No newline at end of file diff --git a/=A01+UH01-KF00/PLC-Datentypen/Storage/stStorageStatus.liblink b/=A01+UH01-KF00/PLC-Datentypen/Storage/stStorageStatus.liblink new file mode 100644 index 0000000..b3ec67f --- /dev/null +++ b/=A01+UH01-KF00/PLC-Datentypen/Storage/stStorageStatus.liblink @@ -0,0 +1,2 @@ +TypeGuid: ca24b447-abc3-449b-a8c1-21dbe238f0e7 +VersionGuid: b386d0be-b2b8-4929-a80b-8269a33c5ffc diff --git a/=A01+UH01-KF00/PLC-Datentypen/TRO_Manager/IntfTroManager.xml b/=A01+UH01-KF00/PLC-Datentypen/TRO_Manager/IntfTroManager.xml new file mode 100644 index 0000000..d12247a --- /dev/null +++ b/=A01+UH01-KF00/PLC-Datentypen/TRO_Manager/IntfTroManager.xml @@ -0,0 +1,68 @@ + + + + + + +
+ + + + + + + + +
+
+ IntfTroManager + +
+ + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + +
+
\ No newline at end of file diff --git a/=A01+UH01-KF00/PLC-Datentypen/UDT_GOHStatus.liblink b/=A01+UH01-KF00/PLC-Datentypen/UDT_GOHStatus.liblink new file mode 100644 index 0000000..f042d30 --- /dev/null +++ b/=A01+UH01-KF00/PLC-Datentypen/UDT_GOHStatus.liblink @@ -0,0 +1,2 @@ +TypeGuid: ec8b8dcc-ac36-4ab9-aaa3-92469ee4c691 +VersionGuid: e1ac311e-589a-4372-9dec-5672da290beb diff --git a/=A01+UH01-KF00/PLC-Datentypen/VisuLib/UDT_HMI_Conveyor.liblink b/=A01+UH01-KF00/PLC-Datentypen/VisuLib/UDT_HMI_Conveyor.liblink new file mode 100644 index 0000000..cd919fb --- /dev/null +++ b/=A01+UH01-KF00/PLC-Datentypen/VisuLib/UDT_HMI_Conveyor.liblink @@ -0,0 +1,2 @@ +TypeGuid: fc3e953e-8c4b-43b2-bb34-349b65059802 +VersionGuid: 2901dec2-9378-4f00-91c8-1e2b94ec70ea diff --git a/=A01+UH01-KF00/PLC-Datentypen/VisuLib/UDT_HMI_JamConfig.liblink b/=A01+UH01-KF00/PLC-Datentypen/VisuLib/UDT_HMI_JamConfig.liblink new file mode 100644 index 0000000..ff0d623 --- /dev/null +++ b/=A01+UH01-KF00/PLC-Datentypen/VisuLib/UDT_HMI_JamConfig.liblink @@ -0,0 +1,2 @@ +TypeGuid: adb606ab-324d-4fdb-a09c-2ad466b32903 +VersionGuid: d7b77ea5-f92b-4fa0-a83a-330b43251da7 diff --git a/=A01+UH01-KF00/PLC-Datentypen/VisuLib/UDT_HMI_JamData.liblink b/=A01+UH01-KF00/PLC-Datentypen/VisuLib/UDT_HMI_JamData.liblink new file mode 100644 index 0000000..0339dc0 --- /dev/null +++ b/=A01+UH01-KF00/PLC-Datentypen/VisuLib/UDT_HMI_JamData.liblink @@ -0,0 +1,2 @@ +TypeGuid: 706046de-a07c-4079-a33e-00ecf57aae27 +VersionGuid: 2a77e08a-2168-4473-b3dd-baa29b3bc0e4 diff --git a/=A01+UH01-KF00/PLC-Datentypen/VisuLib/UDT_HMI_JamStatus.liblink b/=A01+UH01-KF00/PLC-Datentypen/VisuLib/UDT_HMI_JamStatus.liblink new file mode 100644 index 0000000..f0f95b4 --- /dev/null +++ b/=A01+UH01-KF00/PLC-Datentypen/VisuLib/UDT_HMI_JamStatus.liblink @@ -0,0 +1,2 @@ +TypeGuid: 91abd28c-b27c-40fc-aa29-b9ccf1038af8 +VersionGuid: 8b7a1f1f-bf72-48c9-a434-4ba9381d476b diff --git a/=A01+UH01-KF00/PLC-Datentypen/VisuLib/UDT_HMI_StorageConfig.liblink b/=A01+UH01-KF00/PLC-Datentypen/VisuLib/UDT_HMI_StorageConfig.liblink new file mode 100644 index 0000000..76a2af7 --- /dev/null +++ b/=A01+UH01-KF00/PLC-Datentypen/VisuLib/UDT_HMI_StorageConfig.liblink @@ -0,0 +1,2 @@ +TypeGuid: 02492225-a833-4e62-a80d-6f4f5940cd96 +VersionGuid: f7089d62-435b-4819-8676-7387e96ea610 diff --git a/=A01+UH01-KF00/PLC-Datentypen/VisuLib/UDT_HMI_StorageData.liblink b/=A01+UH01-KF00/PLC-Datentypen/VisuLib/UDT_HMI_StorageData.liblink new file mode 100644 index 0000000..afa7b58 --- /dev/null +++ b/=A01+UH01-KF00/PLC-Datentypen/VisuLib/UDT_HMI_StorageData.liblink @@ -0,0 +1,2 @@ +TypeGuid: 3a8dd7e8-e0cb-4613-b938-25a3aa094faf +VersionGuid: bccc57d9-fb87-4841-99ab-8180407c0b55 diff --git a/=A01+UH01-KF00/PLC-Datentypen/VisuLib/UDT_HMI_StorageStatus.liblink b/=A01+UH01-KF00/PLC-Datentypen/VisuLib/UDT_HMI_StorageStatus.liblink new file mode 100644 index 0000000..52c1c86 --- /dev/null +++ b/=A01+UH01-KF00/PLC-Datentypen/VisuLib/UDT_HMI_StorageStatus.liblink @@ -0,0 +1,2 @@ +TypeGuid: 79452aba-6454-49c4-bae4-34f354454e6d +VersionGuid: ede077a2-491e-4000-abbd-c4b084a0e7e4 diff --git a/=A01+UH01-KF00/PLC-Datentypen/VisuLib/UDT_HMI_TRO_PinStore.liblink b/=A01+UH01-KF00/PLC-Datentypen/VisuLib/UDT_HMI_TRO_PinStore.liblink new file mode 100644 index 0000000..ba8e895 --- /dev/null +++ b/=A01+UH01-KF00/PLC-Datentypen/VisuLib/UDT_HMI_TRO_PinStore.liblink @@ -0,0 +1,2 @@ +TypeGuid: 3beb59d7-e33d-4360-b089-7c47be0d5c13 +VersionGuid: 845f29a7-ee05-441a-8c1d-fb0c4a72301a diff --git a/=A01+UH01-KF00/PLC-Datentypen/VisuLib/UDT_Panel_EmergencyStop.liblink b/=A01+UH01-KF00/PLC-Datentypen/VisuLib/UDT_Panel_EmergencyStop.liblink new file mode 100644 index 0000000..4316dc6 --- /dev/null +++ b/=A01+UH01-KF00/PLC-Datentypen/VisuLib/UDT_Panel_EmergencyStop.liblink @@ -0,0 +1,2 @@ +TypeGuid: d9f82bf9-35d8-4b74-bc69-e401448fbf16 +VersionGuid: 27f2f7ec-1c14-4867-a396-00e77935e121 diff --git a/=A01+UH01-KF00/PLC-Datentypen/VisuLib/UDT_TCP.liblink b/=A01+UH01-KF00/PLC-Datentypen/VisuLib/UDT_TCP.liblink new file mode 100644 index 0000000..2e0f906 --- /dev/null +++ b/=A01+UH01-KF00/PLC-Datentypen/VisuLib/UDT_TCP.liblink @@ -0,0 +1,2 @@ +TypeGuid: 8b83763f-2f41-46ae-a8cd-de0501ec9422 +VersionGuid: a0d49aff-bd39-4bc7-8aa3-f87ec57e9300 diff --git a/=A01+UH01-KF00/PLC-Datentypen/VisuLib/UDT_TCP_Param.liblink b/=A01+UH01-KF00/PLC-Datentypen/VisuLib/UDT_TCP_Param.liblink new file mode 100644 index 0000000..fd0b632 --- /dev/null +++ b/=A01+UH01-KF00/PLC-Datentypen/VisuLib/UDT_TCP_Param.liblink @@ -0,0 +1,2 @@ +TypeGuid: e60bd250-70b3-4cff-80ba-3a723c7839d2 +VersionGuid: 2f61f4d3-d116-462b-8443-1c65acd21c13 diff --git a/=A01+UH01-KF00/PLC-Datentypen/VisuLib/UDT_UnloadingStation.liblink b/=A01+UH01-KF00/PLC-Datentypen/VisuLib/UDT_UnloadingStation.liblink new file mode 100644 index 0000000..a5842e4 --- /dev/null +++ b/=A01+UH01-KF00/PLC-Datentypen/VisuLib/UDT_UnloadingStation.liblink @@ -0,0 +1,2 @@ +TypeGuid: 9352b614-97cb-414d-a3ee-03a180f36707 +VersionGuid: 073eb434-cda0-4734-a493-971f2fcce9ab diff --git a/=A01+UH01-KF00/PLC-Datentypen/VisuLib/UDT_Visu_Jam_CarMove.liblink b/=A01+UH01-KF00/PLC-Datentypen/VisuLib/UDT_Visu_Jam_CarMove.liblink new file mode 100644 index 0000000..d733c1b --- /dev/null +++ b/=A01+UH01-KF00/PLC-Datentypen/VisuLib/UDT_Visu_Jam_CarMove.liblink @@ -0,0 +1,2 @@ +TypeGuid: 09c37f92-e226-4ff7-9888-dfa763483803 +VersionGuid: 6bb216c4-d740-4e6d-b97c-d9f6fa658688 diff --git a/=A01+UH01-KF00/PLC-Datentypen/VisuLib/UDT_Visu_Jam_List.liblink b/=A01+UH01-KF00/PLC-Datentypen/VisuLib/UDT_Visu_Jam_List.liblink new file mode 100644 index 0000000..eb25b33 --- /dev/null +++ b/=A01+UH01-KF00/PLC-Datentypen/VisuLib/UDT_Visu_Jam_List.liblink @@ -0,0 +1,2 @@ +TypeGuid: a569df31-8bc8-465a-ab7f-10cfe3ab2c61 +VersionGuid: 69cad2b9-105b-4cbd-ba2e-a12884f705ac diff --git a/=A01+UH01-KF00/PLC-Datentypen/_AI/HMI/udt_ClearingStationHMI.xml b/=A01+UH01-KF00/PLC-Datentypen/_AI/HMI/udt_ClearingStationHMI.xml new file mode 100644 index 0000000..6cf0951 --- /dev/null +++ b/=A01+UH01-KF00/PLC-Datentypen/_AI/HMI/udt_ClearingStationHMI.xml @@ -0,0 +1,110 @@ + + + + + + +
+ + + Daten vom ersten/aktuellen Carrier anzeigen + + + + + Trolley ist in Station (nur für visuelle Anzeige, Hinweis) + + + + + Fehlergrund für den Trolley in der Station (Textliste: No-Read Trolley, No-Read SSCC, Längenmessung fehlerhaft, Ziel von MES bekommen...) + + + + + Trolley entfernen erlaubt (Gegenprüfung Sensorik) + + + + + Button: Trolley entfernen antriggern von HMI + + + + + Trolley entfernt bestätigt von SPS + + + + + Beladung entfernen erlaubt (Gegenprüfung Sensorik) + + + + + Buton: Beladestatus vom Trolley löschen (Entheiraten) + + + + + Beladestatus gelöscht, bestätigt von SPS + + + + + Trolley wartet auf Freigabe (Bediener muss den phys. Knopf drücken) + + +
+
+ udt_ClearingStationHMI + +
+ + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + +
+
\ No newline at end of file diff --git a/=A01+UH01-KF00/PLC-Datentypen/_AI/HMI/udt_LengtMeasurementHMI.xml b/=A01+UH01-KF00/PLC-Datentypen/_AI/HMI/udt_LengtMeasurementHMI.xml new file mode 100644 index 0000000..4622202 --- /dev/null +++ b/=A01+UH01-KF00/PLC-Datentypen/_AI/HMI/udt_LengtMeasurementHMI.xml @@ -0,0 +1,70 @@ + + + + + + +
+ + + Trolley Barcode + + + + + Messergebnis (0 = Leertrolley, 1 = kurz, 2 = lang, -1 = zu lang, -2 = unplausibel/andere Fehler + + +
+
+ udt_LengtMeasurementHMI + +
+ + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + +
+
\ No newline at end of file diff --git a/=A01+UH01-KF00/PLC-Datentypen/_Molina Test/Carrier/stCarrierTest_x.xml b/=A01+UH01-KF00/PLC-Datentypen/_Molina Test/Carrier/stCarrierTest_x.xml new file mode 100644 index 0000000..7b372d3 --- /dev/null +++ b/=A01+UH01-KF00/PLC-Datentypen/_Molina Test/Carrier/stCarrierTest_x.xml @@ -0,0 +1,65 @@ + + + + + + +
+ + + + + +
+
+ stCarrierTest_x + +
+ + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + +
+
\ No newline at end of file diff --git a/=A01+UH01-KF00/PLC-Datentypen/_Molina Test/Jam/stJamConfigTestHJ.xml b/=A01+UH01-KF00/PLC-Datentypen/_Molina Test/Jam/stJamConfigTestHJ.xml new file mode 100644 index 0000000..1aa79c8 --- /dev/null +++ b/=A01+UH01-KF00/PLC-Datentypen/_Molina Test/Jam/stJamConfigTestHJ.xml @@ -0,0 +1,72 @@ + + + + + + +
+ + + Maximale Kapazität + + 0 + + + + Eingestellte Kapazität + + 0 + +
+
+ stJamConfigTestHJ + +
+ + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + +
+
\ No newline at end of file diff --git a/=A01+UH01-KF00/PLC-Datentypen/_Molina Test/Jam/stJamDataTestHJ.xml b/=A01+UH01-KF00/PLC-Datentypen/_Molina Test/Jam/stJamDataTestHJ.xml new file mode 100644 index 0000000..586b510 --- /dev/null +++ b/=A01+UH01-KF00/PLC-Datentypen/_Molina Test/Jam/stJamDataTestHJ.xml @@ -0,0 +1,76 @@ + + + + + + +
+ + + true + + + Infos + + + + + true + + + Parameter + + +
+
+ stJamDataTestHJ + +
+ + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + +
+
\ No newline at end of file diff --git a/=A01+UH01-KF00/PLC-Datentypen/_Molina Test/Jam/stJamStatusTestHJ.xml b/=A01+UH01-KF00/PLC-Datentypen/_Molina Test/Jam/stJamStatusTestHJ.xml new file mode 100644 index 0000000..24a5f18 --- /dev/null +++ b/=A01+UH01-KF00/PLC-Datentypen/_Molina Test/Jam/stJamStatusTestHJ.xml @@ -0,0 +1,71 @@ + + + + + + +
+ + + Anzahl der Teile + + 0 + + + + %X0-Leer,%X1-JamSen,%X2-LockedEntr,%X3-LockedExit,%X4-Error + + +
+
+ stJamStatusTestHJ + +
+ + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + +
+
\ No newline at end of file diff --git a/=A01+UH01-KF00/PLC-Datentypen/_Testumgebung/CarrierLeaveStore.xml b/=A01+UH01-KF00/PLC-Datentypen/_Testumgebung/CarrierLeaveStore.xml new file mode 100644 index 0000000..a4d81e4 --- /dev/null +++ b/=A01+UH01-KF00/PLC-Datentypen/_Testumgebung/CarrierLeaveStore.xml @@ -0,0 +1,75 @@ + + + + + + +
+ + + false + + + Bereit zum Rausfahren Anzahl + + 0 + + + 0 + + + 0 + +
+
+ CarrierLeaveStore + +
+ + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + +
+
\ No newline at end of file diff --git a/=A01+UH01-KF00/PLC-Datentypen/_Testumgebung/CarrierStatisticsStore.xml b/=A01+UH01-KF00/PLC-Datentypen/_Testumgebung/CarrierStatisticsStore.xml new file mode 100644 index 0000000..26bc570 --- /dev/null +++ b/=A01+UH01-KF00/PLC-Datentypen/_Testumgebung/CarrierStatisticsStore.xml @@ -0,0 +1,84 @@ + + + + + + +
+ + + false + + + Leere Carrier Anzahl + + + + + false + + + Dummys Anzahl + + + + + false + + + Bereit zum Rausfahren + + +
+
+ CarrierStatisticsStore + +
+ + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + +
+
\ No newline at end of file diff --git a/=A01+UH01-KF00/PLC-Datentypen/_Testumgebung/ReqData.xml b/=A01+UH01-KF00/PLC-Datentypen/_Testumgebung/ReqData.xml new file mode 100644 index 0000000..adb56ac --- /dev/null +++ b/=A01+UH01-KF00/PLC-Datentypen/_Testumgebung/ReqData.xml @@ -0,0 +1,61 @@ + + + + + + +
+ +
+
+ ReqData + +
+ + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + +
+
\ No newline at end of file diff --git a/=A01+UH01-KF00/PLC-Datentypen/_Testumgebung/SearchResult.xml b/=A01+UH01-KF00/PLC-Datentypen/_Testumgebung/SearchResult.xml new file mode 100644 index 0000000..cfe22ca --- /dev/null +++ b/=A01+UH01-KF00/PLC-Datentypen/_Testumgebung/SearchResult.xml @@ -0,0 +1,67 @@ + + + + + + +
+ + + + + + + +
+
+ SearchResult + +
+ + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + +
+
\ No newline at end of file diff --git a/=A01+UH01-KF00/PLC-Datentypen/udt_InterruptParameter.xml b/=A01+UH01-KF00/PLC-Datentypen/udt_InterruptParameter.xml new file mode 100644 index 0000000..a92f69f --- /dev/null +++ b/=A01+UH01-KF00/PLC-Datentypen/udt_InterruptParameter.xml @@ -0,0 +1,64 @@ + + + + + + +
+ + + + +
+
+ udt_InterruptParameter + +
+ + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + +
+
\ No newline at end of file diff --git a/=A01+UH01-KF00/PLC-Datentypen/udt_SSCCMeasurement.xml b/=A01+UH01-KF00/PLC-Datentypen/udt_SSCCMeasurement.xml new file mode 100644 index 0000000..bbe5f9e --- /dev/null +++ b/=A01+UH01-KF00/PLC-Datentypen/udt_SSCCMeasurement.xml @@ -0,0 +1,70 @@ + + + + + + +
+ + + Barcode vom MT + + + + + Barcode vom SSCC + + +
+
+ udt_SSCCMeasurement + +
+ + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + +
+
\ No newline at end of file diff --git a/=A01+UH01-KF00/PLC-Variablen/Ausgänge_20250902.xml b/=A01+UH01-KF00/PLC-Variablen/Ausgänge_20250902.xml new file mode 100644 index 0000000..5ca72da --- /dev/null +++ b/=A01+UH01-KF00/PLC-Variablen/Ausgänge_20250902.xml @@ -0,0 +1,104 @@ + + + + + + Ausgänge_20250902 + + + + + Bool + %Q328.5 + MB3285 + + + + + + + cs-CZ + + + + + + de-DE + AE Abzweig (ILS-CV M0104) + + + + + en-US + + + + + + + + + + Bool + %Q327.3 + MB3273 + + + + + + + cs-CZ + + + + + + de-DE + AE Abzweig (ILS-CV M0106) + + + + + en-US + + + + + + + + + + Bool + %Q331.6 + MB3316 + + + + + + + cs-CZ + + + + + + de-DE + Öffne Sep vor Clarification + + + + + en-US + + + + + + + + + + \ No newline at end of file diff --git a/=A01+UH01-KF00/PLC-Variablen/Ausgänge_Import.xml b/=A01+UH01-KF00/PLC-Variablen/Ausgänge_Import.xml new file mode 100644 index 0000000..9e7441a --- /dev/null +++ b/=A01+UH01-KF00/PLC-Variablen/Ausgänge_Import.xml @@ -0,0 +1,5064 @@ + + + + + + Ausgänge_Import + + + + + Bool + %Q328.3 + MB3283 + + + + + + + cs-CZ + + + + + + de-DE + Separator (ILS-CV M0107) + + + + + en-US + + + + + + + + + + Bool + %Q39.0 + PF0390 + + + + + + + cs-CZ + + + + + + de-DE + Ladeschleife einfahren UZ0111-2 + + + + + en-US + + + + + + + + + + Bool + %Q5.5 + PF0055 + + + + + + + cs-CZ + + + + + + de-DE + LED Ladebaum 2 aktiv + + + + + en-US + + + + + + + + + + Bool + %Q7.2 + MA0072 + + + + + + + cs-CZ + + + + + + de-DE + Motor 2 MA0072 Einfahren LS 1 + + + + + en-US + + + + + + + + + + Bool + %Q34.2 + MB0342 + + + + + + + cs-CZ + + + + + + de-DE + Stopper zu, MT fixieren + + + + + en-US + + + + + + + + + + Bool + %Q313.5 + MB3135 + + + + + + + cs-CZ + + + + + + de-DE + Separator 2 (ILS-CV M4402) + + + + + en-US + + + + + + + + + + Bool + %Q92.3 + QA0923 + + + + + + + cs-CZ + + + + + + de-DE + Not Halt Schnittstelle CH2 (zu UH06) + + + + + en-US + + + + + + + + + + Bool + %Q0.0 + PF0000 + + + + + + + cs-CZ + + + + + + de-DE + LM Störung + + + + + en-US + + + + + + + + + + Bool + %Q14.0 + MA0140 + + + + + + + cs-CZ + + + + + + de-DE + Motor MA0140 (KR-M4204) + + + + + en-US + + + + + + + + + + Bool + %Q0.5 + PF0005 + + + + + + + cs-CZ + + + + + + de-DE + LM Sicherung hat ausgelöst + + + + + en-US + + + + + + + + + + Bool + %Q301.5 + MB3015 + + + + + + + cs-CZ + + + + + + de-DE + AE Abzweig (ILS-KR-M4204) + + + + + en-US + + + + + + + + + + Bool + %Q6.6 + MA0066 + + + + + + + cs-CZ + + + + + + de-DE + Motor MA0066 (ILS-CV-M0109) + + + + + en-US + + + + + + + + + + Bool + %Q10.1 + PF0101 + + + + + + + cs-CZ + + + + + + de-DE + LM Motorschutz hat ausgelöst + + + + + en-US + + + + + + + + + + Bool + %Q2.3 + PF0023 + + + + + + + cs-CZ + + + + + + de-DE + Signalsäule blau "Fehlerhafter Mini-Trolley" + + + + + en-US + + + + + + + + + + Bool + %Q4.5 + PF0045 + + + + + + + cs-CZ + + + + + + de-DE + Betriebsbereit LS2 + + + + + en-US + + + + + + + + + + Bool + %Q306.0 + MB3060 + + + + + + + cs-CZ + + + + + + de-DE + Separator 1 (ILS-CV M4503) + + + + + en-US + + + + + + + + + + Bool + %Q302.5 + MB3025 + + + + + + + cs-CZ + + + + + + de-DE + Separator (ILS-CV M4104) + + + + + en-US + + + + + + + + + + Bool + %Q3.1 + PF0031 + + + + + + + cs-CZ + + + + + + de-DE + Reset UZ0101 + + + + + en-US + + + + + + + + + + Bool + %Q302.4 + MB3024 + + + + + + + cs-CZ + + + + + + de-DE + Separator 1 (ILS-CV M4203) + + + + + en-US + + + + + + + + + + Bool + %Q32.2 + DQ0322 + + + + + + + cs-CZ + + + + + + de-DE + Motor MA0321 Stutzfuß aufwärts LS1 + + + + + en-US + + + + + + + + + + Bool + %Q306.3 + MB3063 + + + + + + + cs-CZ + + + + + + de-DE + Separator 1 (ILS-CV M4502) + + + + + en-US + + + + + + + + + + Bool + %Q32.3 + DQ0323 + + + + + + + cs-CZ + + + + + + de-DE + Motor MA0321 Stutzfuß abwärts LS1 + + + + + en-US + + + + + + + + + + Bool + %Q92.2 + QA0922 + + + + + + + cs-CZ + + + + + + de-DE + Not Halt Schnittstelle CH1 (zu UH06) + + + + + en-US + + + + + + + + + + Bool + %Q38.5 + MB0385 + + + + + + + cs-CZ + + + + + + de-DE + Reset Bumper Safety relay (LS2) + + + + + en-US + + + + + + + + + + Bool + %Q11.7 + PF0117 + + + + + + + cs-CZ + + + + + + de-DE + LDT Start nach Störung + + + + + en-US + + + + + + + + + + Bool + %Q7.6 + MA0076 + + + + + + + cs-CZ + + + + + + de-DE + Motor 2 MA0076 Einfahren LS 2 + + + + + en-US + + + + + + + + + + Bool + %Q331.3 + MB3313 + + + + + + + cs-CZ + + + + + + de-DE + Separator 04 (Block 1.1.) + + + + + en-US + + + + + + + + + + Bool + %Q324.2 + MB3242 + + + + + + + cs-CZ + + + + + + de-DE + Separator 1 (ILS-CV) + + + + + en-US + + + + + + + + + + Bool + %Q332.2 + MB3322 + + + + + + + cs-CZ + + + + + + de-DE + Separator 03 (Block 1.2.) + + + + + en-US + + + + + + + + + + Bool + %Q328.0 + MB3280 + + + + + + + cs-CZ + + + + + + de-DE + Separator (ILS-BX1104) + + + + + en-US + + + + + + + + + + Bool + %Q326.0 + MB3260 + + + + + + + cs-CZ + + + + + + de-DE + AE Abzweig Str.1 (Block 1.1) + + + + + en-US + + + + + + + + + + Bool + %Q14.1 + MA0141 + + + + + + + cs-CZ + + + + + + de-DE + Motor MA0141 (CV-M4503) + + + + + en-US + + + + + + + + + + Bool + %Q32.4 + DQ0324 + + + + + + + cs-CZ + + + + + + de-DE + Motor MA0321 Kriechgang LS1 + + + + + en-US + + + + + + + + + + Bool + %Q312.0 + MB3120 + + + + + + + cs-CZ + + + + + + de-DE + Separator (ILS-CV M4203) + + + + + en-US + + + + + + + + + + Bool + %Q1.2 + QA0012 + + + + + + + + de-DE + Schütz Beleuchtung Ladeschleife 1 + + + + + en-US + + + + + + + + + + Bool + %Q307.3 + MB3073 + + + + + + + cs-CZ + + + + + + de-DE + Separator 2 (ILS-CV M4403) + + + + + en-US + + + + + + + + + + Bool + %Q331.5 + MB3315 + + + + + + + cs-CZ + + + + + + de-DE + Separator (Block 1.1) + + + + + en-US + + + + + + + + + + Bool + %Q6.7 + MA0067 + + + + + + + cs-CZ + + + + + + de-DE + Motor MA0067 (ILS-CV-M0110) + + + + + en-US + + + + + + + + + + Bool + %Q2.2 + PF0022 + + + + + + + cs-CZ + + + + + + de-DE + Signalsäule grün "Betriebsbereit" + + + + + en-US + + + + + + + + + + Bool + %Q3.4 + PF0034 + + + + + + + cs-CZ + + + + + + de-DE + Betriebsbereit UZ0102 + + + + + en-US + + + + + + + + + + Bool + %Q333.5 + MB3335 + + + + + + + cs-CZ + + + + + + de-DE + Separator 4 (ILS-KR-M0102) + + + + + en-US + + + + + + + + + + Bool + %Q7.0 + MA0070 + + + + + + + cs-CZ + + + + + + de-DE + Motor 1 MA0070 Einfahren LS 1 + + + + + en-US + + + + + + + + + + Bool + %Q66.2 + QA0662 + + + + + + + cs-CZ + + + + + + de-DE + Hauptschütze +UC0111 + + + + + en-US + + + + + + + + + + Bool + %Q33.0 + PF0330 + + + + + + + cs-CZ + + + + + + de-DE + Ladeschleife einfahren UZ0110-2 + + + + + en-US + + + + + + + + + + Bool + %Q332.4 + MB3324 + + + + + + + cs-CZ + + + + + + de-DE + Separator 05 (Block 1.2.) + + + + + en-US + + + + + + + + + + Bool + %Q326.3 + MB3263 + + + + + + + cs-CZ + + + + + + de-DE + AE Abzweig Str.1 (Block 1.1) + + + + + en-US + + + + + + + + + + Bool + %Q14.2 + MA0142 + + + + + + + cs-CZ + + + + + + de-DE + Motor MA0142 (CV-M4502) + + + + + en-US + + + + + + + + + + Bool + %Q10.0 + PF0100 + + + + + + + cs-CZ + + + + + + de-DE + LM Druckluft fehlt + + + + + en-US + + + + + + + + + + Bool + %Q61.2 + QA0612 + + + + + + + cs-CZ + + + + + + de-DE + Hauptschütze aktivieren CH 2 (QA0057 - QA0067) + + + + + en-US + + + + + + + + + + Bool + %Q4.3 + PF0043 + + + + + + + cs-CZ + + + + + + de-DE + Reset LS1 + + + + + en-US + + + + + + + + + + Bool + %Q13.1 + PF0131 + + + + + + + cs-CZ + + + + + + de-DE + Reset UZ1105 + + + + + en-US + + + + + + + + + + Bool + %Q6.4 + MA0064 + + + + + + + cs-CZ + + + + + + de-DE + Motor MA0064 (ILS-CV M0106) + + + + + en-US + + + + + + + + + + Bool + %Q0.6 + PF0006 + + + + + + + cs-CZ + + + + + + de-DE + LM Brandfall + + + + + en-US + + + + + + + + + + Bool + %Q300.3 + MB3003 + + + + + + + cs-CZ + + + + + + de-DE + Separator 2 (ILS-CV M4103) + + + + + en-US + + + + + + + + + + Bool + %Q12.6 + PF0126 + + + + + + + cs-CZ + + + + + + de-DE + Betriebsbereit UZ1104 + + + + + en-US + + + + + + + + + + Bool + %Q14.4 + MA0144 + + + + + + + cs-CZ + + + + + + de-DE + Motor MA0144 (CV-M4501) + + + + + en-US + + + + + + + + + + Bool + %Q32.0 + MA0320 + + + + + + + cs-CZ + + + + + + de-DE + Motor MA0320 Kreisel LS1 + + + + + en-US + + + + + + + + + + Bool + %Q331.2 + MB3312 + + + + + + + cs-CZ + + + + + + de-DE + Separator 03 (Block 1.1.) + + + + + en-US + + + + + + + + + + Bool + %Q0.1 + PF0001 + + + + + + + cs-CZ + + + + + + de-DE + LDT Anlage Ein + + + + + en-US + + + + + + + + + + Bool + %Q7.4 + MA0074 + + + + + + + cs-CZ + + + + + + de-DE + Motor 1 MA0074 Einfahren LS 2 + + + + + en-US + + + + + + + + + + Bool + %Q3.3 + PF0033 + + + + + + + cs-CZ + + + + + + de-DE + Reset UZ0102 + + + + + en-US + + + + + + + + + + Bool + %Q325.0 + MB3250 + + + + + + + cs-CZ + + + + + + de-DE + AE Abzweig Str.1 (Block 1.2) + + + + + en-US + + + + + + + + + + Bool + %Q324.6 + MB3246 + + + + + + + cs-CZ + + + + + + de-DE + Separator, Einfahrt MT-Buffer LS2 (KR-M0101) + + + + + en-US + + + + + + + + + + Bool + %Q331.1 + MB3311 + + + + + + + cs-CZ + + + + + + de-DE + Separator 02 (Block 1.1.) + + + + + en-US + + + + + + + + + + Bool + %Q329.5 + MB3295 + + + + + + + cs-CZ + + + + + + de-DE + Separator (ILS-CV) + + + + + en-US + + + + + + + + + + Bool + %Q61.3 + QA0613 + + + + + + + cs-CZ + + + + + + de-DE + Hauptschütze aktivieren CH 2 (QA0070 - QA0076) + + + + + en-US + + + + + + + + + + Bool + %Q10.2 + PF0102 + + + + + + + cs-CZ + + + + + + de-DE + LM Sicherung hat ausgelöst + + + + + en-US + + + + + + + + + + Bool + %Q330.0 + MB3300 + + + + + + + cs-CZ + + + + + + de-DE + Separator 1 (ILS-KR-M0102) + + + + + en-US + + + + + + + + + + Bool + %Q12.0 + PF0120 + + + + + + + cs-CZ + + + + + + de-DE + Betriebsbereit UZ1101 + + + + + en-US + + + + + + + + + + Bool + %Q313.0 + MB3130 + + + + + + + cs-CZ + + + + + + de-DE + Separator 2 (ILS-CV M4302) + + + + + en-US + + + + + + + + + + Bool + %Q92.0 + QA0920 + + + + + + + cs-CZ + + + + + + de-DE + Hauptschütze aktivieren CH 1 (QA0140/QA0146) + + + + + en-US + + + + + + + + + + Bool + %Q302.0 + MB3020 + + + + + + + cs-CZ + + + + + + de-DE + Separator 2 (ILS-CV M4501) + + + + + en-US + + + + + + + + + + Bool + %Q325.1 + MB3251 + + + + + + + cs-CZ + + + + + + de-DE + AE Abzweig Str.1 (Block 1.2) + + + + + en-US + + + + + + + + + + Bool + %Q12.4 + PF0124 + + + + + + + cs-CZ + + + + + + de-DE + Betriebsbereit UZ1103 + + + + + en-US + + + + + + + + + + Bool + %Q332.5 + MB3325 + + + + + + + cs-CZ + + + + + + de-DE + Separator (Block 1.2.) + + + + + en-US + + + + + + + + + + Bool + %Q333.0 + MB3330 + + + + + + + cs-CZ + + + + + + de-DE + AE Abzweig (ILS-KR-M0102) + + + + + en-US + + + + + + + + + + Bool + %Q61.1 + QA0611 + + + + + + + cs-CZ + + + + + + de-DE + Hauptschütze aktivieren CH 1 (QA0070 - QA0076) + + + + + en-US + + + + + + + + + + Bool + %Q325.4 + MB3254 + + + + + + + cs-CZ + + + + + + de-DE + AE Abzweig Str.1 (Block 1.2) + + + + + en-US + + + + + + + + + + Bool + %Q14.3 + MA0143 + + + + + + + cs-CZ + + + + + + de-DE + Motor MA0143 (CV-M4403) + + + + + en-US + + + + + + + + + + Bool + %Q34.3 + MB0343 + + + + + + + cs-CZ + + + + + + de-DE + Separator + + + + + en-US + + + + + + + + + + Bool + %Q327.1 + MB3271 + + + + + + + cs-CZ + + + + + + de-DE + Separator (ILS-CV M0103) + + + + + en-US + + + + + + + + + + Bool + %Q38.3 + DQ0383 + + + + + + + cs-CZ + + + + + + de-DE + Motor MA0381 Stutzfuß abwärts LS2 + + + + + en-US + + + + + + + + + + Bool + %Q34.0 + MB0340 + + + + + + + cs-CZ + + + + + + de-DE + Separator LS2 + + + + + en-US + + + + + + + + + + Bool + %Q330.4 + MB3304 + + + + + + + cs-CZ + + + + + + de-DE + AE Abzweig (ILS-KR-M0102) + + + + + en-US + + + + + + + + + + Bool + %Q1.3 + QA0013 + + + + + + + cs-CZ + + + + + + de-DE + Schütz Beleuchtung Ladeschleife 2 + + + + + en-US + + + + + + + + + + Bool + %Q4.0 + PF0040 + + + + + + + cs-CZ + + + + + + de-DE + Betriebsbereit LS1 + + + + + en-US + + + + + + + + + + Bool + %Q312.5 + MB3125 + + + + + + + cs-CZ + + + + + + de-DE + Separator (ILS-CV M4302) + + + + + en-US + + + + + + + + + + Bool + %Q325.7 + MB3257 + + + + + + + cs-CZ + + + + + + de-DE + Separator, Einfahrt MT-Buffer LS1 (KR-M0101) + + + + + en-US + + + + + + + + + + Bool + %Q0.4 + PF0004 + + + + + + + cs-CZ + + + + + + de-DE + LM Motorschutz hat ausgelöst + + + + + en-US + + + + + + + + + + Bool + %Q301.3 + MB3013 + + + + + + + cs-CZ + + + + + + de-DE + Separator 2 (ILS-KR-M4204) + + + + + en-US + + + + + + + + + + Bool + %Q38.1 + MA0381 + + + + + + + cs-CZ + + + + + + de-DE + Motor MA0381 400V Stützfuß LS2 + + + + + en-US + + + + + + + + + + Bool + %Q0.3 + PF0003 + + + + + + + cs-CZ + + + + + + de-DE + LM Druckluft fehlt + + + + + en-US + + + + + + + + + + Bool + %Q325.3 + MB3253 + + + + + + + cs-CZ + + + + + + de-DE + AE Abzweig Str.1 (Block 1.2) + + + + + en-US + + + + + + + + + + Bool + %Q38.4 + DQ0384 + + + + + + + cs-CZ + + + + + + de-DE + Motor MA0381 Kriechgang LS2 + + + + + en-US + + + + + + + + + + Bool + %Q5.7 + MA0057 + + + + + + + cs-CZ + + + + + + de-DE + Motor MA0057 ILS-CV M0100 EMPTY MT + + + + + en-US + + + + + + + + + + Bool + %Q32.1 + MA0321 + + + + + + + cs-CZ + + + + + + de-DE + Motor MA0321 400V Stützfuß LS1 + + + + + en-US + + + + + + + + + + Bool + %Q332.3 + MB3323 + + + + + + + cs-CZ + + + + + + de-DE + Separator 04 (Block 1.2.) + + + + + en-US + + + + + + + + + + Bool + %Q308.0 + MB3080 + + + + + + + cs-CZ + + + + + + de-DE + Separator (ILS-CV M4503) + + + + + en-US + + + + + + + + + + Bool + %Q332.0 + MB3320 + + + + + + + cs-CZ + + + + + + de-DE + Separator 01 (Block 1.2.) + + + + + en-US + + + + + + + + + + Bool + %Q0.2 + PF0002 + + + + + + + cs-CZ + + + + + + de-DE + LDT Start nach Störung + + + + + en-US + + + + + + + + + + Bool + %Q6.3 + MA0063 + + + + + + + cs-CZ + + + + + + de-DE + Motor MA0063 (ILS-CV-M0105) + + + + + en-US + + + + + + + + + + Bool + %Q330.6 + MB3306 + + + + + + + cs-CZ + + + + + + de-DE + Separator 2 (ILS-KR-M0102) + + + + + en-US + + + + + + + + + + Bool + %Q92.1 + QA0921 + + + + + + + cs-CZ + + + + + + de-DE + Hauptschütze aktivieren CH 2 (QA0140/QA0146) + + + + + en-US + + + + + + + + + + Bool + %Q333.7 + MB3337 + + + + + + + cs-CZ + + + + + + de-DE + Separator 5 (ILS-KR-M0102) + + + + + en-US + + + + + + + + + + Bool + %Q331.4 + MB3314 + + + + + + + cs-CZ + + + + + + de-DE + Separator 05 (Block 1.1.) + + + + + en-US + + + + + + + + + + Bool + %Q301.0 + MB3010 + + + + + + + cs-CZ + + + + + + de-DE + Separator 1 (ILS-KR-M4204) + + + + + en-US + + + + + + + + + + Bool + %Q3.0 + PF0030 + + + + + + + cs-CZ + + + + + + de-DE + Betriebsbereit UZ0101 + + + + + en-US + + + + + + + + + + Bool + %Q6.2 + MA0062 + + + + + + + cs-CZ + + + + + + de-DE + Motor MA0062 (ILS-CV-PM0103) + + + + + en-US + + + + + + + + + + Bool + %Q13.0 + PF0130 + + + + + + + cs-CZ + + + + + + de-DE + Betriebsbereit UZ1105 + + + + + en-US + + + + + + + + + + Bool + %Q307.6 + MB3076 + + + + + + + cs-CZ + + + + + + de-DE + Separator 1 (ILS-CV M4502) + + + + + en-US + + + + + + + + + + Bool + %Q14.5 + MA0145 + + + + + + + cs-CZ + + + + + + de-DE + Motor MA0145 (CV-M4104) + + + + + en-US + + + + + + + + + + Bool + %Q38.2 + DQ0382 + + + + + + + cs-CZ + + + + + + de-DE + Motor MA0381 Stutzfuß aufwärts LS2 + + + + + en-US + + + + + + + + + + Bool + %Q12.5 + PF0125 + + + + + + + cs-CZ + + + + + + de-DE + Reset UZ1103 + + + + + en-US + + + + + + + + + + Bool + %Q5.4 + PF0054 + + + + + + + cs-CZ + + + + + + de-DE + Reset LS2 + + + + + en-US + + + + + + + + + + Bool + %Q12.1 + PF0121 + + + + + + + cs-CZ + + + + + + de-DE + Reset UZ1101 + + + + + en-US + + + + + + + + + + Bool + %Q329.0 + MB3290 + + + + + + + cs-CZ + + + + + + de-DE + Separator 2 (ILS-CV M0100) + + + + + en-US + + + + + + + + + + Bool + %Q34.4 + MB0344 + + + + + + + cs-CZ + + + + + + de-DE + Separator Ladeposition 1, LS 2 + + + + + en-US + + + + + + + + + + Bool + %Q12.7 + PF0127 + + + + + + + cs-CZ + + + + + + de-DE + Reset UZ1104 + + + + + en-US + + + + + + + + + + Bool + %Q333.2 + MB3332 + + + + + + + cs-CZ + + + + + + de-DE + Separator 3 (ILS-KR-M0102) + + + + + en-US + + + + + + + + + + Bool + %Q66.3 + QA0663 + + + + + + + cs-CZ + + + + + + de-DE + Hauptschütze +UC0111 + + + + + en-US + + + + + + + + + + Bool + %Q61.0 + QA0610 + + + + + + + cs-CZ + + + + + + de-DE + Hauptschütze aktivieren CH 1 (QA0057 - QA0067) + + + + + en-US + + + + + + + + + + Bool + %Q2.1 + PF0021 + + + + + + + cs-CZ + + + + + + de-DE + Signalsäule gelb "Störung" + + + + + en-US + + + + + + + + + + Bool + %Q326.1 + MB3261 + + + + + + + cs-CZ + + + + + + de-DE + AE Abzweig Str.1 (Block 1.1) + + + + + en-US + + + + + + + + + + Bool + %Q6.0 + MA0060 + + + + + + + cs-CZ + + + + + + de-DE + Motor MA0060 (ILS-KR-M0101) + + + + + en-US + + + + + + + + + + Bool + %Q66.0 + QA0660 + + + + + + + cs-CZ + + + + + + de-DE + Hauptschütze +UC0110 + + + + + en-US + + + + + + + + + + Bool + %Q334.0 + MB3340 + + + + + + + cs-CZ + + + + + + de-DE + AE Abzweig (ILS-KR M0102) + + + + + en-US + + + + + + + + + + Bool + %Q6.5 + MA0065 + + + + + + + cs-CZ + + + + + + de-DE + Motor MA0065 (ILS-CV-M0107) + + + + + en-US + + + + + + + + + + Bool + %Q332.1 + MB3321 + + + + + + + cs-CZ + + + + + + de-DE + Separator 02 (Block 1.2.) + + + + + en-US + + + + + + + + + + Bool + %Q32.5 + MB0325 + + + + + + + cs-CZ + + + + + + de-DE + Reset Bumper Safety relay (LS 1) + + + + + en-US + + + + + + + + + + Bool + %Q331.0 + MB3310 + + + + + + + cs-CZ + + + + + + de-DE + Separator 01 (Block 1.1.) + + + + + en-US + + + + + + + + + + Bool + %Q326.2 + MB3262 + + + + + + + cs-CZ + + + + + + de-DE + AE Abzweig Str.1 (Block 1.1) + + + + + en-US + + + + + + + + + + Bool + %Q325.2 + MB3252 + + + + + + + cs-CZ + + + + + + de-DE + AE Abzweig Str.1 (Block 1.2) + + + + + en-US + + + + + + + + + + Bool + %Q38.0 + MA0380 + + + + + + + cs-CZ + + + + + + de-DE + Motor MA0380 + + + + + en-US + + + + + + + + + + Bool + %Q66.1 + QA0661 + + + + + + + cs-CZ + + + + + + de-DE + Hauptschütze +UC0110 + + + + + en-US + + + + + + + + + + Bool + %Q6.1 + MA0061 + + + + + + + cs-CZ + + + + + + de-DE + Motor MA0061 (ILS-KR-M0102) Auslagerkreisel + + + + + en-US + + + + + + + + + + Bool + %Q326.4 + MB3264 + + + + + + + cs-CZ + + + + + + de-DE + AE Abzweig Str.1 (Block 1.1) + + + + + en-US + + + + + + + + + + Bool + %Q2.4 + PF0024 + + + + + + + cs-CZ + + + + + + de-DE + Signalsäule Hupe "Anfahrwarnung" + + + + + en-US + + + + + + + + + + Bool + %Q28.3 + MB0283 + + + + + + + cs-CZ + + + + + + de-DE + Separator Beladeposition 2, LS 1 + + + + + en-US + + + + + + + + + + Bool + %Q28.4 + MB0284 + + + + + + + cs-CZ + + + + + + de-DE + Separator Ladeposition 1, LS 1 + + + + + en-US + + + + + + + + + + Bool + %Q28.2 + MB0282 + + + + + + + cs-CZ + + + + + + de-DE + Stopper zu, MT fixieren + + + + + en-US + + + + + + + + + + Bool + %Q28.0 + MB0280 + + + + + + + cs-CZ + + + + + + de-DE + Separator LS 1 + + + + + en-US + + + + + + + + + + Bool + %Q7.1 + QA0071 + + + + + + + cs-CZ + + + + + + de-DE + Motor 1 MA0071 Ausfahren LS 1 + + + + + en-US + + + + + + + + + + Bool + %Q7.5 + QA0075 + + + + + + + cs-CZ + + + + + + de-DE + Motor 1 MA0075 Ausfahren LS 2 + + + + + en-US + + + + + + + + + + Bool + %Q7.3 + QA0073 + + + + + + + cs-CZ + + + + + + de-DE + Motor 2 MA0073 Ausfahren LS 1 + + + + + en-US + + + + + + + + + + Bool + %Q7.7 + QA0077 + + + + + + + cs-CZ + + + + + + de-DE + Motor 2 MA0077 Ausfahren LS 2 + + + + + en-US + + + + + + + + + + Bool + %Q4.2 + DQ0042 + + + + + + + cs-CZ + + + + + + de-DE + Interface RFID (to Rielec "line ready") + + + + + en-US + + + + + + + + + + Bool + %Q4.7 + DQ0047 + + + + + + + cs-CZ + + + + + + de-DE + Interface RFID (to Rielec "jet sent") + + + + + en-US + + + + + + + + + + Bool + %Q4.4 + PF0044 + + + + + + + cs-CZ + + + + + + de-DE + LED Ladebaum 1 aktiv + + + + + en-US + + + + + + + + + + Bool + %Q3.2 + PF0032 + + + + + + + cs-CZ + + + + + + de-DE + Release UZ0102 + + + + + en-US + + + + + + + + + + Bool + %Q34.7 + PF0347 + + + + + + + cs-CZ + + + + + + de-DE + Leuchte Gelb LS2 "Fahrbewegung" + + + + + en-US + + + + + + + + + + Bool + %Q12.3 + PF0123 + + + + + + + cs-CZ + + + + + + de-DE + NIU Reset UZ1102 + + + + + en-US + + + + + + + + + + Bool + %Q28.7 + PF0287 + + + + + + + cs-CZ + + + + + + de-DE + Leuchte Gelb LS1 "Fahrbewegung" + + + + + en-US + + + + + + + + + + Bool + %Q12.2 + PF0122 + + + + + + + cs-CZ + + + + + + de-DE + NIU Betriebsbereit UZ1102 + + + + + en-US + + + + + + + + + + Bool + %Q13.5 + DQ0135 + + + + + + + cs-CZ + + + + + + de-DE + Reset Frequenzumrichter FU0145 + + + + + en-US + + + + + + + + + + Bool + %Q2.0 + PF0020 + + + + + + + cs-CZ + + + + + + de-DE + Signalsäule rot "E-Stop / Brand" + + + + + en-US + + + + + + + + + + Bool + %Q15.1 + MA0151 + + + + + + + cs-CZ + + + + + + de-DE + Motor MA0151 (CV-M4402_B) + + + + + en-US + + + + + + + + + + Bool + %Q14.6 + MA0146 + + + + + + + cs-CZ + + + + + + de-DE + Motor MA0146 (CV-M4103_A) + + + + + en-US + + + + + + + + + + Bool + %Q14.7 + MA0147 + + + + + + + cs-CZ + + + + + + de-DE + Motor MA0147 (CV-M4203_A) + + + + + en-US + + + + + + + + + + Bool + %Q15.0 + MA0150 + + + + + + + cs-CZ + + + + + + de-DE + Motor MA0150 (CV-M4302_B) + + + + + en-US + + + + + + + + + + Bool + %Q15.4 + MA0154 + + + + + + + cs-CZ + + + + + + de-DE + Motor MA0154 (CV-M4302_A) + + + + + en-US + + + + + + + + + + Bool + %Q15.3 + MA0153 + + + + + + + cs-CZ + + + + + + de-DE + Motor MA0153 (CV-M4203_B) + + + + + en-US + + + + + + + + + + Bool + %Q15.5 + MA0155 + + + + + + + cs-CZ + + + + + + de-DE + Motor MA0155 (CV-M4402_A) + + + + + en-US + + + + + + + + + + Bool + %Q15.2 + MA0152 + + + + + + + cs-CZ + + + + + + de-DE + Motor MA0152 (CV-M4103_B) + + + + + en-US + + + + + + + + + + \ No newline at end of file diff --git a/=A01+UH01-KF00/PLC-Variablen/Barcode-Leser/BarcodeLeser.xml b/=A01+UH01-KF00/PLC-Variablen/Barcode-Leser/BarcodeLeser.xml new file mode 100644 index 0000000..fd05c19 --- /dev/null +++ b/=A01+UH01-KF00/PLC-Variablen/Barcode-Leser/BarcodeLeser.xml @@ -0,0 +1,321 @@ + + + + + + BarcodeLeser + + + + + Int + cNoScanner + 9 + + + + + + + cs-CZ + + + + + + de-DE + Anzahl Scanner + + + + + en-US + + + + + + + + + + Int + cScannerBX1103 + 4 + + + + + + + cs-CZ + + + + + + de-DE + TRO 104 (In Ladeschleife 1) + + + + + en-US + + + + + + + + + + Int + cScannerBX1105 + 6 + + + + + + + cs-CZ + + + + + + de-DE + TRO 109 (In Ladeschleife 2) + + + + + en-US + + + + + + + + + + Int + cScannerBX1106 + 7 + + + + + + + cs-CZ + + + + + + de-DE + TRO 110 (Bei Längenmessung Ausfahrt LS2) + + + + + en-US + + + + + + + + + + Int + cScannerBX1100 + 1 + + + + + + + cs-CZ + + + + + + de-DE + TRO 116 (Clearing Station) + + + + + en-US + + + + + + + + + + Int + cScannerBX1104 + 5 + + + + + + + cs-CZ + + + + + + de-DE + TRO 105 (Bei Längenmessung Ausfahrt LS1) + + + + + en-US + + + + + + + + + + Int + cScannerBX1102 + 3 + + + + + + + cs-CZ + + + + + + de-DE + TRO 114 (Nach RFID) + + + + + en-US + + + + + + + + + + Int + cScannerBX1101 + 2 + + + + + + + cs-CZ + + + + + + de-DE + TRO 113 (Vor RFID) + + + + + en-US + + + + + + + + + + Int + cScannerBX1108 + 9 + + + + + + + cs-CZ + + + + + + de-DE + TRO 110 (SSCC-Scanner) + + + + + en-US + + + + + + + + + + Int + cScannerBX1107 + 8 + + + + + + + cs-CZ + + + + + + de-DE + TRO 105 (SSCC-Scanner) + + + + + en-US + + + + + + + + + + \ No newline at end of file diff --git a/=A01+UH01-KF00/PLC-Variablen/Barcode-Leser/bx1100.xml b/=A01+UH01-KF00/PLC-Variablen/Barcode-Leser/bx1100.xml new file mode 100644 index 0000000..6e795d5 --- /dev/null +++ b/=A01+UH01-KF00/PLC-Variablen/Barcode-Leser/bx1100.xml @@ -0,0 +1,2057 @@ + + + + + + bx1100 + + + + + Byte + %IB10071 + bx1100-InspectionResults[0] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %Q10002.4 + bx1100-Untrain + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %QB10073 + bx1100-UserData[6] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %IB10080 + bx1100-InspectionResults[9] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %QB10079 + bx1100-UserData[12] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %IB10077 + bx1100-InspectionResults[6] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %Q10002.1 + bx1100-Train Match String + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %Q10000.1 + bx1100-Trigger + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %QB10080 + bx1100-UserData[13] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %IB10085 + bx1100-InspectionResults[14] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %Q10001.1 + bx1100-ResultsAck + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Word + %IW10063 + bx1100-ResultID + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %IB10078 + bx1100-InspectionResults[7] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Word + %IW10067 + bx1100-Result Extended + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %QB10072 + bx1100-UserData[5] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %QB10070 + bx1100-UserData[3] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %I10000.0 + bx1100-TriggerReady + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %IB10079 + bx1100-InspectionResults[8] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %I10004.3 + bx1100-Train Brightness Ack + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %QB10076 + bx1100-UserData[9] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %IB10084 + bx1100-InspectionResults[13] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %QB10082 + bx1100-UserData[15] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %I10004.0 + bx1100-Train Code Ack + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %I10003.1 + bx1100-Decode Complete + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %IB10072 + bx1100-InspectionResults[1] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Word + %IW10001 + bx1100-TriggerID + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %IB10086 + bx1100-InspectionResults[15] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %QB10067 + bx1100-UserData[0] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %Q10002.6 + bx1100-Execute DMCC + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %I10004.1 + bx1100-Train Match String Ack + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %Q10002.0 + bx1100-Train Code + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %I10000.1 + bx1100-TriggerAck + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %Q10000.0 + bx1100-TriggerEnable + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %I10004.2 + bx1100-Train Focus Ack + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %I10004.6 + bx1100-Execute DMCC Ack + + + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %IB10081 + bx1100-InspectionResults[10] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %QB10081 + bx1100-UserData[14] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %IB10076 + bx1100-InspectionResults[5] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %QB10075 + bx1100-UserData[8] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %QB10071 + bx1100-UserData[4] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Word + %QW10065 + bx1100-UserData Length + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %IB10082 + bx1100-InspectionResults[11] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %IB10074 + bx1100-InspectionResults[3] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %I10003.0 + bx1100-Decoding + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %I10000.2 + bx1100-Acquiring + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %I10004.4 + bx1100-Untrain Ack + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %IB10073 + bx1100-InspectionResults[2] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %QB10069 + bx1100-UserData[2] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %Q10001.0 + bx1100-BufferResultsEnable + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %IB10075 + bx1100-InspectionResults[4] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %QB10078 + bx1100-UserData[11] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %I10003.3 + bx1100-Results Available + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %I10003.2 + bx1100-Results Buffer Overrun + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %Q10002.2 + bx1100-Train Focus + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %IB10083 + bx1100-InspectionResults[12] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %QB10068 + bx1100-UserData[1] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Word + %QW10063 + bx1100-UserData Option + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %QB10074 + bx1100-UserData[7] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %I10000.3 + bx1100-MissedAcq + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %I10004.7 + bx1100-Set Match String Ack + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Word + %IW10069 + bx1100-Result Length + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %Q10002.3 + bx1100-Train Brightness + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Word + %IW10065 + bx1100-Result Code + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %QB10077 + bx1100-UserData[10] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %I10003.7 + bx1100-General Fault + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %Q10002.7 + bx1100-Set Match String + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + \ No newline at end of file diff --git a/=A01+UH01-KF00/PLC-Variablen/Barcode-Leser/bx1101.xml b/=A01+UH01-KF00/PLC-Variablen/Barcode-Leser/bx1101.xml new file mode 100644 index 0000000..bacb2a2 --- /dev/null +++ b/=A01+UH01-KF00/PLC-Variablen/Barcode-Leser/bx1101.xml @@ -0,0 +1,2057 @@ + + + + + + bx1101 + + + + + Bool + %Q10151.0 + bx1101-BufferResultsEnable + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %Q10152.1 + bx1101-Train Match String + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %I10153.7 + bx1101-General Fault + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Word + %IW10219 + bx1101-Result Length + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %Q10150.0 + bx1101-TriggerEnable + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %QB10219 + bx1101-UserData[2] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %I10153.3 + bx1101-Results Available + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %QB10218 + bx1101-UserData[1] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %QB10232 + bx1101-UserData[15] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Word + %QW10213 + bx1101-UserData Option + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %Q10152.3 + bx1101-Train Brightness + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %Q10152.2 + bx1101-Train Focus + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %QB10227 + bx1101-UserData[10] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %Q10151.1 + bx1101-ResultsAck + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %I10154.1 + bx1101-Train Match String Ack + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %IB10224 + bx1101-InspectionResults[3] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %IB10225 + bx1101-InspectionResults[4] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %IB10222 + bx1101-InspectionResults[1] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %QB10221 + bx1101-UserData[4] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %IB10235 + bx1101-InspectionResults[14] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %I10154.3 + bx1101-Train Brightness Ack + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %I10153.0 + bx1101-Decoding + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %IB10234 + bx1101-InspectionResults[13] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Word + %IW10215 + bx1101-Result Code + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %I10153.1 + bx1101-Decode Complete + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %QB10223 + bx1101-UserData[6] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %I10150.3 + bx1101-MissedAcq + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %QB10224 + bx1101-UserData[7] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %I10154.0 + bx1101-Train Code Ack + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %QB10222 + bx1101-UserData[5] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %IB10236 + bx1101-InspectionResults[15] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %Q10152.4 + bx1101-Untrain + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %I10153.2 + bx1101-Results Buffer Overrun + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %I10154.7 + bx1101-Set Match String Ack + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %Q10152.0 + bx1101-Train Code + + + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %QB10225 + bx1101-UserData[8] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %I10150.2 + bx1101-Acquiring + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %QB10228 + bx1101-UserData[11] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %IB10233 + bx1101-InspectionResults[12] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Word + %IW10213 + bx1101-ResultID + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Word + %QW10215 + bx1101-UserData Length + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %I10154.4 + bx1101-Untrain Ack + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %QB10226 + bx1101-UserData[9] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %IB10231 + bx1101-InspectionResults[10] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %I10154.6 + bx1101-Execute DMCC Ack + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %I10150.0 + bx1101-TriggerReady + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %IB10230 + bx1101-InspectionResults[9] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %IB10228 + bx1101-InspectionResults[7] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Word + %IW10217 + bx1101-Result Extended + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %IB10226 + bx1101-InspectionResults[5] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %I10150.1 + bx1101-TriggerAck + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %I10154.2 + bx1101-Train Focus Ack + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %IB10232 + bx1101-InspectionResults[11] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %QB10231 + bx1101-UserData[14] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Word + %IW10151 + bx1101-TriggerID + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %IB10227 + bx1101-InspectionResults[6] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %QB10229 + bx1101-UserData[12] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %IB10223 + bx1101-InspectionResults[2] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %IB10221 + bx1101-InspectionResults[0] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %Q10152.6 + bx1101-Execute DMCC + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %Q10150.1 + bx1101-Trigger + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %Q10152.7 + bx1101-Set Match String + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %IB10229 + bx1101-InspectionResults[8] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %QB10220 + bx1101-UserData[3] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %QB10230 + bx1101-UserData[13] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %QB10217 + bx1101-UserData[0] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + \ No newline at end of file diff --git a/=A01+UH01-KF00/PLC-Variablen/Barcode-Leser/bx1102.xml b/=A01+UH01-KF00/PLC-Variablen/Barcode-Leser/bx1102.xml new file mode 100644 index 0000000..721ebbd --- /dev/null +++ b/=A01+UH01-KF00/PLC-Variablen/Barcode-Leser/bx1102.xml @@ -0,0 +1,2057 @@ + + + + + + bx1102 + + + + + Byte + %IB10375 + bx1102-InspectionResults[4] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %QB10376 + bx1102-UserData[9] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %QB10377 + bx1102-UserData[10] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %QB10375 + bx1102-UserData[8] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %Q10302.1 + bx1102-Train Match String + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %IB10377 + bx1102-InspectionResults[6] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %QB10368 + bx1102-UserData[1] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %Q10302.6 + bx1102-Execute DMCC + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %I10303.0 + bx1102-Decoding + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %QB10372 + bx1102-UserData[5] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %QB10380 + bx1102-UserData[13] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %QB10381 + bx1102-UserData[14] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %IB10379 + bx1102-InspectionResults[8] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %IB10373 + bx1102-InspectionResults[2] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %IB10371 + bx1102-InspectionResults[0] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %I10303.7 + bx1102-General Fault + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %Q10300.1 + bx1102-Trigger + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %QB10371 + bx1102-UserData[4] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %I10300.3 + bx1102-MissedAcq + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %I10300.2 + bx1102-Acquiring + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %IB10380 + bx1102-InspectionResults[9] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %IB10381 + bx1102-InspectionResults[10] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %I10304.6 + bx1102-Execute DMCC Ack + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %IB10383 + bx1102-InspectionResults[12] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %QB10367 + bx1102-UserData[0] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %I10304.2 + bx1102-Train Focus Ack + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %IB10372 + bx1102-InspectionResults[1] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Word + %QW10363 + bx1102-UserData Option + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %Q10302.2 + bx1102-Train Focus + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %I10303.3 + bx1102-Results Available + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %I10304.1 + bx1102-Train Match String Ack + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %I10300.1 + bx1102-TriggerAck + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %I10303.2 + bx1102-Results Buffer Overrun + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %Q10301.1 + bx1102-ResultsAck + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Word + %IW10363 + bx1102-ResultID + + + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %I10304.0 + bx1102-Train Code Ack + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %IB10378 + bx1102-InspectionResults[7] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %IB10374 + bx1102-InspectionResults[3] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %QB10382 + bx1102-UserData[15] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %Q10302.4 + bx1102-Untrain + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %QB10373 + bx1102-UserData[6] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %QB10379 + bx1102-UserData[12] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Word + %IW10301 + bx1102-TriggerID + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %I10303.1 + bx1102-Decode Complete + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %IB10385 + bx1102-InspectionResults[14] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %Q10300.0 + bx1102-TriggerEnable + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %QB10369 + bx1102-UserData[2] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %IB10386 + bx1102-InspectionResults[15] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %IB10384 + bx1102-InspectionResults[13] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %Q10302.7 + bx1102-Set Match String + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %IB10376 + bx1102-InspectionResults[5] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %QB10370 + bx1102-UserData[3] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %IB10382 + bx1102-InspectionResults[11] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %Q10302.0 + bx1102-Train Code + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Word + %QW10365 + bx1102-UserData Length + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %I10300.0 + bx1102-TriggerReady + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %I10304.4 + bx1102-Untrain Ack + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Word + %IW10369 + bx1102-Result Length + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %I10304.3 + bx1102-Train Brightness Ack + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %Q10302.3 + bx1102-Train Brightness + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %QB10378 + bx1102-UserData[11] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %QB10374 + bx1102-UserData[7] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Word + %IW10367 + bx1102-Result Extended + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %Q10301.0 + bx1102-BufferResultsEnable + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Word + %IW10365 + bx1102-Result Code + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %I10304.7 + bx1102-Set Match String Ack + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + \ No newline at end of file diff --git a/=A01+UH01-KF00/PLC-Variablen/Barcode-Leser/bx1103.xml b/=A01+UH01-KF00/PLC-Variablen/Barcode-Leser/bx1103.xml new file mode 100644 index 0000000..e33c6d6 --- /dev/null +++ b/=A01+UH01-KF00/PLC-Variablen/Barcode-Leser/bx1103.xml @@ -0,0 +1,2057 @@ + + + + + + bx1103 + + + + + Bool + %Q10450.0 + bx1103-TriggerEnable + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %IB10524 + bx1103-InspectionResults[3] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %IB10526 + bx1103-InspectionResults[5] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %I10450.3 + bx1103-MissedAcq + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %I10453.2 + bx1103-Results Buffer Overrun + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %I10453.0 + bx1103-Decoding + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %Q10452.2 + bx1103-Train Focus + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %I10450.0 + bx1103-TriggerReady + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %I10454.3 + bx1103-Train Brightness Ack + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %QB10531 + bx1103-UserData[14] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %QB10520 + bx1103-UserData[3] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %Q10452.6 + bx1103-Execute DMCC + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %IB10533 + bx1103-InspectionResults[12] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Word + %QW10515 + bx1103-UserData Length + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %IB10528 + bx1103-InspectionResults[7] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Word + %IW10451 + bx1103-TriggerID + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %IB10522 + bx1103-InspectionResults[1] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %QB10523 + bx1103-UserData[6] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %IB10534 + bx1103-InspectionResults[13] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %I10454.2 + bx1103-Train Focus Ack + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %IB10521 + bx1103-InspectionResults[0] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %QB10517 + bx1103-UserData[0] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %QB10522 + bx1103-UserData[5] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %IB10532 + bx1103-InspectionResults[11] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %I10453.7 + bx1103-General Fault + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %QB10530 + bx1103-UserData[13] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %QB10518 + bx1103-UserData[1] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %IB10531 + bx1103-InspectionResults[10] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %Q10452.0 + bx1103-Train Code + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %I10454.6 + bx1103-Execute DMCC Ack + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %I10454.1 + bx1103-Train Match String Ack + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %Q10452.7 + bx1103-Set Match String + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %Q10451.1 + bx1103-ResultsAck + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Word + %IW10513 + bx1103-ResultID + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %I10453.1 + bx1103-Decode Complete + + + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Word + %QW10513 + bx1103-UserData Option + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %QB10528 + bx1103-UserData[11] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %I10453.3 + bx1103-Results Available + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %I10454.0 + bx1103-Train Code Ack + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %QB10526 + bx1103-UserData[9] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %IB10530 + bx1103-InspectionResults[9] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %I10450.2 + bx1103-Acquiring + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %IB10525 + bx1103-InspectionResults[4] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %QB10525 + bx1103-UserData[8] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %Q10452.3 + bx1103-Train Brightness + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %IB10527 + bx1103-InspectionResults[6] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Word + %IW10517 + bx1103-Result Extended + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %I10454.4 + bx1103-Untrain Ack + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %IB10529 + bx1103-InspectionResults[8] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %QB10519 + bx1103-UserData[2] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %Q10452.1 + bx1103-Train Match String + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Word + %IW10519 + bx1103-Result Length + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %QB10532 + bx1103-UserData[15] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %Q10450.1 + bx1103-Trigger + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %QB10527 + bx1103-UserData[10] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %IB10523 + bx1103-InspectionResults[2] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %Q10452.4 + bx1103-Untrain + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %IB10536 + bx1103-InspectionResults[15] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %I10450.1 + bx1103-TriggerAck + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %I10454.7 + bx1103-Set Match String Ack + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %IB10535 + bx1103-InspectionResults[14] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Word + %IW10515 + bx1103-Result Code + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %QB10524 + bx1103-UserData[7] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %QB10521 + bx1103-UserData[4] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %Q10451.0 + bx1103-BufferResultsEnable + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %QB10529 + bx1103-UserData[12] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + \ No newline at end of file diff --git a/=A01+UH01-KF00/PLC-Variablen/Barcode-Leser/bx1104.xml b/=A01+UH01-KF00/PLC-Variablen/Barcode-Leser/bx1104.xml new file mode 100644 index 0000000..18bfca0 --- /dev/null +++ b/=A01+UH01-KF00/PLC-Variablen/Barcode-Leser/bx1104.xml @@ -0,0 +1,2057 @@ + + + + + + bx1104 + + + + + Byte + %IB10686 + bx1104-InspectionResults[15] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Word + %IW10667 + bx1104-Result Extended + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %IB10676 + bx1104-InspectionResults[5] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Word + %QW10663 + bx1104-UserData Option + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %IB10682 + bx1104-InspectionResults[11] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %Q10602.7 + bx1104-Set Match String + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %QB10681 + bx1104-UserData[14] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %IB10681 + bx1104-InspectionResults[10] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %I10604.3 + bx1104-Train Brightness Ack + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %I10600.3 + bx1104-MissedAcq + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %Q10601.0 + bx1104-BufferResultsEnable + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %I10600.2 + bx1104-Acquiring + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %QB10668 + bx1104-UserData[1] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %QB10682 + bx1104-UserData[15] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %IB10679 + bx1104-InspectionResults[8] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Word + %IW10665 + bx1104-Result Code + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %I10603.3 + bx1104-Results Available + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Word + %IW10669 + bx1104-Result Length + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %Q10601.1 + bx1104-ResultsAck + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %QB10667 + bx1104-UserData[0] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %QB10671 + bx1104-UserData[4] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %QB10674 + bx1104-UserData[7] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %I10603.7 + bx1104-General Fault + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %Q10600.0 + bx1104-TriggerEnable + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %Q10602.4 + bx1104-Untrain + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %Q10600.1 + bx1104-Trigger + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %I10604.4 + bx1104-Untrain Ack + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %IB10674 + bx1104-InspectionResults[3] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %I10603.1 + bx1104-Decode Complete + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %I10604.6 + bx1104-Execute DMCC Ack + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %IB10675 + bx1104-InspectionResults[4] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %I10604.0 + bx1104-Train Code Ack + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Word + %QW10665 + bx1104-UserData Length + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %QB10675 + bx1104-UserData[8] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %QB10672 + bx1104-UserData[5] + + + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %I10600.1 + bx1104-TriggerAck + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %QB10673 + bx1104-UserData[6] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %IB10672 + bx1104-InspectionResults[1] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %QB10669 + bx1104-UserData[2] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %I10604.7 + bx1104-Set Match String Ack + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %I10603.0 + bx1104-Decoding + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %IB10680 + bx1104-InspectionResults[9] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %I10604.1 + bx1104-Train Match String Ack + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %QB10679 + bx1104-UserData[12] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %IB10683 + bx1104-InspectionResults[12] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %QB10680 + bx1104-UserData[13] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %IB10685 + bx1104-InspectionResults[14] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Word + %IW10663 + bx1104-ResultID + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %Q10602.1 + bx1104-Train Match String + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %I10600.0 + bx1104-TriggerReady + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Word + %IW10601 + bx1104-TriggerID + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %IB10684 + bx1104-InspectionResults[13] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %Q10602.2 + bx1104-Train Focus + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %IB10673 + bx1104-InspectionResults[2] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %QB10677 + bx1104-UserData[10] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %QB10676 + bx1104-UserData[9] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %Q10602.3 + bx1104-Train Brightness + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %QB10670 + bx1104-UserData[3] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %Q10602.6 + bx1104-Execute DMCC + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %IB10671 + bx1104-InspectionResults[0] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %QB10678 + bx1104-UserData[11] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %I10603.2 + bx1104-Results Buffer Overrun + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %I10604.2 + bx1104-Train Focus Ack + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %IB10678 + bx1104-InspectionResults[7] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %IB10677 + bx1104-InspectionResults[6] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %Q10602.0 + bx1104-Train Code + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + \ No newline at end of file diff --git a/=A01+UH01-KF00/PLC-Variablen/Barcode-Leser/bx1105.xml b/=A01+UH01-KF00/PLC-Variablen/Barcode-Leser/bx1105.xml new file mode 100644 index 0000000..b81c6c5 --- /dev/null +++ b/=A01+UH01-KF00/PLC-Variablen/Barcode-Leser/bx1105.xml @@ -0,0 +1,2057 @@ + + + + + + bx1105 + + + + + Bool + %Q10750.0 + bx1105-TriggerEnable + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %QB10825 + bx1105-UserData[8] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %IB10821 + bx1105-InspectionResults[0] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Word + %IW10751 + bx1105-TriggerID + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %QB10828 + bx1105-UserData[11] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %QB10823 + bx1105-UserData[6] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %Q10750.1 + bx1105-Trigger + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %I10753.7 + bx1105-General Fault + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %I10754.7 + bx1105-Set Match String Ack + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %I10750.3 + bx1105-MissedAcq + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %IB10834 + bx1105-InspectionResults[13] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %QB10827 + bx1105-UserData[10] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %Q10752.0 + bx1105-Train Code + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %QB10832 + bx1105-UserData[15] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %IB10822 + bx1105-InspectionResults[1] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %IB10833 + bx1105-InspectionResults[12] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Word + %IW10819 + bx1105-Result Length + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %I10753.3 + bx1105-Results Available + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %QB10830 + bx1105-UserData[13] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %I10754.3 + bx1105-Train Brightness Ack + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %IB10826 + bx1105-InspectionResults[5] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %I10754.1 + bx1105-Train Match String Ack + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %QB10831 + bx1105-UserData[14] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %IB10836 + bx1105-InspectionResults[15] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Word + %QW10815 + bx1105-UserData Length + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %QB10829 + bx1105-UserData[12] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %IB10835 + bx1105-InspectionResults[14] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %I10753.1 + bx1105-Decode Complete + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %QB10824 + bx1105-UserData[7] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %Q10752.4 + bx1105-Untrain + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %I10754.2 + bx1105-Train Focus Ack + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %Q10751.0 + bx1105-BufferResultsEnable + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Word + %QW10813 + bx1105-UserData Option + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %IB10832 + bx1105-InspectionResults[11] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %Q10752.7 + bx1105-Set Match String + + + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %QB10826 + bx1105-UserData[9] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %IB10831 + bx1105-InspectionResults[10] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %QB10819 + bx1105-UserData[2] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %Q10752.1 + bx1105-Train Match String + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %IB10827 + bx1105-InspectionResults[6] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %I10750.2 + bx1105-Acquiring + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %I10753.0 + bx1105-Decoding + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %I10750.0 + bx1105-TriggerReady + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %IB10828 + bx1105-InspectionResults[7] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %IB10829 + bx1105-InspectionResults[8] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %IB10830 + bx1105-InspectionResults[9] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %Q10751.1 + bx1105-ResultsAck + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %QB10822 + bx1105-UserData[5] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %Q10752.6 + bx1105-Execute DMCC + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %IB10824 + bx1105-InspectionResults[3] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Word + %IW10815 + bx1105-Result Code + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %IB10823 + bx1105-InspectionResults[2] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %I10750.1 + bx1105-TriggerAck + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %QB10821 + bx1105-UserData[4] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %Q10752.3 + bx1105-Train Brightness + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %Q10752.2 + bx1105-Train Focus + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %QB10817 + bx1105-UserData[0] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %I10754.0 + bx1105-Train Code Ack + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %I10754.4 + bx1105-Untrain Ack + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %IB10825 + bx1105-InspectionResults[4] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %I10754.6 + bx1105-Execute DMCC Ack + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %QB10818 + bx1105-UserData[1] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %QB10820 + bx1105-UserData[3] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %I10753.2 + bx1105-Results Buffer Overrun + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Word + %IW10817 + bx1105-Result Extended + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Word + %IW10813 + bx1105-ResultID + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + \ No newline at end of file diff --git a/=A01+UH01-KF00/PLC-Variablen/Barcode-Leser/bx1106.xml b/=A01+UH01-KF00/PLC-Variablen/Barcode-Leser/bx1106.xml new file mode 100644 index 0000000..2af9555 --- /dev/null +++ b/=A01+UH01-KF00/PLC-Variablen/Barcode-Leser/bx1106.xml @@ -0,0 +1,2057 @@ + + + + + + bx1106 + + + + + Byte + %QB10971 + bx1106-UserData[4] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %I10903.0 + bx1106-Decoding + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %Q10901.0 + bx1106-BufferResultsEnable + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %Q10902.6 + bx1106-Execute DMCC + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %QB10968 + bx1106-UserData[1] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %IB10976 + bx1106-InspectionResults[5] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %IB10984 + bx1106-InspectionResults[13] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %I10900.1 + bx1106-TriggerAck + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %I10903.1 + bx1106-Decode Complete + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %Q10902.3 + bx1106-Train Brightness + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %QB10974 + bx1106-UserData[7] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %Q10902.0 + bx1106-Train Code + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %QB10969 + bx1106-UserData[2] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %QB10979 + bx1106-UserData[12] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %IB10978 + bx1106-InspectionResults[7] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Word + %IW10967 + bx1106-Result Extended + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %I10904.0 + bx1106-Train Code Ack + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %IB10975 + bx1106-InspectionResults[4] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %IB10979 + bx1106-InspectionResults[8] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %Q10902.7 + bx1106-Set Match String + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Word + %IW10965 + bx1106-Result Code + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Word + %IW10963 + bx1106-ResultID + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %QB10970 + bx1106-UserData[3] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %I10904.7 + bx1106-Set Match String Ack + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %Q10902.2 + bx1106-Train Focus + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %IB10977 + bx1106-InspectionResults[6] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %IB10980 + bx1106-InspectionResults[9] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %QB10977 + bx1106-UserData[10] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %I10903.7 + bx1106-General Fault + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %Q10900.1 + bx1106-Trigger + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %QB10976 + bx1106-UserData[9] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %QB10982 + bx1106-UserData[15] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Word + %IW10969 + bx1106-Result Length + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %I10904.2 + bx1106-Train Focus Ack + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Word + %QW10963 + bx1106-UserData Option + + + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %IB10971 + bx1106-InspectionResults[0] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %Q10902.1 + bx1106-Train Match String + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %IB10983 + bx1106-InspectionResults[12] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Word + %QW10965 + bx1106-UserData Length + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Word + %IW10901 + bx1106-TriggerID + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %QB10975 + bx1106-UserData[8] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %QB10973 + bx1106-UserData[6] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %I10900.3 + bx1106-MissedAcq + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %QB10978 + bx1106-UserData[11] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %QB10967 + bx1106-UserData[0] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %I10904.6 + bx1106-Execute DMCC Ack + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %I10903.2 + bx1106-Results Buffer Overrun + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %I10904.3 + bx1106-Train Brightness Ack + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %I10900.0 + bx1106-TriggerReady + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %IB10981 + bx1106-InspectionResults[10] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %IB10972 + bx1106-InspectionResults[1] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %I10903.3 + bx1106-Results Available + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %QB10972 + bx1106-UserData[5] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %QB10980 + bx1106-UserData[13] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %IB10974 + bx1106-InspectionResults[3] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %I10904.4 + bx1106-Untrain Ack + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %IB10985 + bx1106-InspectionResults[14] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %QB10981 + bx1106-UserData[14] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %Q10901.1 + bx1106-ResultsAck + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %I10904.1 + bx1106-Train Match String Ack + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %IB10986 + bx1106-InspectionResults[15] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %Q10902.4 + bx1106-Untrain + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %Q10900.0 + bx1106-TriggerEnable + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %IB10973 + bx1106-InspectionResults[2] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %IB10982 + bx1106-InspectionResults[11] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %I10900.2 + bx1106-Acquiring + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + \ No newline at end of file diff --git a/=A01+UH01-KF00/PLC-Variablen/Barcode-Leser/bx1107.xml b/=A01+UH01-KF00/PLC-Variablen/Barcode-Leser/bx1107.xml new file mode 100644 index 0000000..ff50af2 --- /dev/null +++ b/=A01+UH01-KF00/PLC-Variablen/Barcode-Leser/bx1107.xml @@ -0,0 +1,2212 @@ + + + + + + bx1107 + + + + + Byte + %IB11134 + bx1107-InspectionResults[13] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %QB11127 + bx1107-UserData[10] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %I11054.4 + bx1107-Untrain Ack + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %QB11126 + bx1107-UserData[9] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %Q11052.1 + bx1107-Train Match String + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %Q11050.0 + bx1107-TriggerEnable + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %IB11127 + bx1107-InspectionResults[6] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %I11053.1 + bx1107-Decode Complete + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %QB11118 + bx1107-UserData[1] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %IB11121 + bx1107-InspectionResults[0] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %Q11051.1 + bx1107-ResultsAck + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %I11054.3 + bx1107-Train Brightness Ack + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %Q11052.3 + bx1107-Train Brightness + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %IB11133 + bx1107-InspectionResults[12] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %QB11129 + bx1107-UserData[12] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %QB11124 + bx1107-UserData[7] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %I11050.2 + bx1107-Acquiring + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %IB11128 + bx1107-InspectionResults[7] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %IB11123 + bx1107-InspectionResults[2] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %Q11051.0 + bx1107-BufferResultsEnable + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %IB11126 + bx1107-InspectionResults[5] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %QB11117 + bx1107-UserData[0] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %I11116.2 + bx1107-Verified / Not Verified + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %Q11052.2 + bx1107-Train Focus + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %Q11050.1 + bx1107-Trigger + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %QB11132 + bx1107-UserData[15] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %I11054.6 + bx1107-Execute DMCC Ack + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %Q11052.4 + bx1107-Untrain + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %I11054.2 + bx1107-Train Focus Ack + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %IB11131 + bx1107-InspectionResults[10] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %I11053.3 + bx1107-Results Available + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %I11050.3 + bx1107-MissedAcq + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Word + %QW11115 + bx1107-UserData Length + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Word + %IW11116 + bx1107-Result Code + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %IB11124 + bx1107-InspectionResults[3] + + + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %I11053.7 + bx1107-General Fault + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Word + %IW11051 + bx1107-TriggerID + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Word + %QW11113 + bx1107-UserData Option + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %IB11136 + bx1107-InspectionResults[15] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %I11116.0 + bx1107-Read / No Read + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %I11116.1 + bx1107-Validated / Not Validated + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %QB11131 + bx1107-UserData[14] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %QB11119 + bx1107-UserData[2] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %I11054.0 + bx1107-Train Code Ack + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %QB11130 + bx1107-UserData[13] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %QB11128 + bx1107-UserData[11] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %Q11052.6 + bx1107-Execute DMCC + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %I11054.1 + bx1107-Train Match String Ack + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %I11054.7 + bx1107-Set Match String Ack + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %I11050.0 + bx1107-TriggerReady + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %I11116.3 + bx1107-Acquisition Trigger Overrun + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %QB11122 + bx1107-UserData[5] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Word + %IW11119 + bx1107-Result Length + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %I11053.2 + bx1107-Results Buffer Overrun + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %IB11130 + bx1107-InspectionResults[9] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %QB11125 + bx1107-UserData[8] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %IB11125 + bx1107-InspectionResults[4] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %I11116.4 + bx1107-Acquisition Buffer Overflow + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Word + %IW11113 + bx1107-ResultID + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %IB11122 + bx1107-InspectionResults[1] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Word + %IW11117 + bx1107-Result Extended + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %IB11129 + bx1107-InspectionResults[8] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %I11050.1 + bx1107-TriggerAck + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %QB11120 + bx1107-UserData[3] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %IB11132 + bx1107-InspectionResults[11] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %I11053.0 + bx1107-Decoding + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %Q11052.0 + bx1107-Train Code + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %QB11121 + bx1107-UserData[4] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %QB11123 + bx1107-UserData[6] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %Q11052.7 + bx1107-Set Match String + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %IB11135 + bx1107-InspectionResults[14] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + \ No newline at end of file diff --git a/=A01+UH01-KF00/PLC-Variablen/Barcode-Leser/bx1108.xml b/=A01+UH01-KF00/PLC-Variablen/Barcode-Leser/bx1108.xml new file mode 100644 index 0000000..7cb02c8 --- /dev/null +++ b/=A01+UH01-KF00/PLC-Variablen/Barcode-Leser/bx1108.xml @@ -0,0 +1,2212 @@ + + + + + + bx1108 + + + + + Bool + %Q11200.1 + bx1108-Trigger + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %IB11271 + bx1108-InspectionResults[0] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %IB11273 + bx1108-InspectionResults[2] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %I11204.2 + bx1108-Train Focus Ack + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %IB11285 + bx1108-InspectionResults[14] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Word + %IW11267 + bx1108-Result Extended + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %I11200.1 + bx1108-TriggerAck + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %QB11274 + bx1108-UserData[7] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %I11203.2 + bx1108-Results Buffer Overrun + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %QB11276 + bx1108-UserData[9] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %IB11282 + bx1108-InspectionResults[11] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %Q11202.0 + bx1108-Train Code + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %I11204.0 + bx1108-Train Code Ack + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %QB11279 + bx1108-UserData[12] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %I11204.4 + bx1108-Untrain Ack + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %Q11201.1 + bx1108-ResultsAck + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Word + %IW11269 + bx1108-Result Length + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Word + %QW11265 + bx1108-UserData Length + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %IB11278 + bx1108-InspectionResults[7] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %IB11283 + bx1108-InspectionResults[12] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %Q11202.1 + bx1108-Train Match String + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %I11266.4 + bx1108-Acquisition Buffer Overflow + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %QB11275 + bx1108-UserData[8] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %I11203.1 + bx1108-Decode Complete + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %IB11277 + bx1108-InspectionResults[6] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %Q11202.6 + bx1108-Execute DMCC + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %I11203.0 + bx1108-Decoding + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %Q11202.3 + bx1108-Train Brightness + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %Q11202.4 + bx1108-Untrain + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %Q11202.7 + bx1108-Set Match String + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Word + %IW11263 + bx1108-ResultID + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Word + %IW11201 + bx1108-TriggerID + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %I11266.3 + bx1108-Acquisition Trigger Overrun + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %IB11284 + bx1108-InspectionResults[13] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %I11266.2 + bx1108-Verified / Not Verified + + + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %I11200.3 + bx1108-MissedAcq + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %QB11268 + bx1108-UserData[1] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Word + %QW11263 + bx1108-UserData Option + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %QB11280 + bx1108-UserData[13] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %IB11279 + bx1108-InspectionResults[8] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %IB11272 + bx1108-InspectionResults[1] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %Q11200.0 + bx1108-TriggerEnable + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %QB11269 + bx1108-UserData[2] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %I11204.3 + bx1108-Train Brightness Ack + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %I11200.2 + bx1108-Acquiring + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %QB11272 + bx1108-UserData[5] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %QB11273 + bx1108-UserData[6] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %IB11286 + bx1108-InspectionResults[15] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %IB11280 + bx1108-InspectionResults[9] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %IB11274 + bx1108-InspectionResults[3] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %I11266.0 + bx1108-Read / No Read + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %I11204.6 + bx1108-Execute DMCC Ack + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %QB11278 + bx1108-UserData[11] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %I11204.1 + bx1108-Train Match String Ack + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %I11204.7 + bx1108-Set Match String Ack + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %IB11275 + bx1108-InspectionResults[4] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %I11203.7 + bx1108-General Fault + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %I11266.1 + bx1108-Validated / Not Validated + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %I11203.3 + bx1108-Results Available + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %Q11201.0 + bx1108-BufferResultsEnable + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %I11200.0 + bx1108-TriggerReady + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %QB11281 + bx1108-UserData[14] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Word + %IW11266 + bx1108-Result Code + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %QB11271 + bx1108-UserData[4] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %IB11276 + bx1108-InspectionResults[5] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %IB11281 + bx1108-InspectionResults[10] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %QB11270 + bx1108-UserData[3] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %Q11202.2 + bx1108-Train Focus + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %QB11267 + bx1108-UserData[0] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %QB11282 + bx1108-UserData[15] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %QB11277 + bx1108-UserData[10] + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + \ No newline at end of file diff --git a/=A01+UH01-KF00/PLC-Variablen/BaseSystemLib/960_Logging.xml b/=A01+UH01-KF00/PLC-Variablen/BaseSystemLib/960_Logging.xml new file mode 100644 index 0000000..c82abed --- /dev/null +++ b/=A01+UH01-KF00/PLC-Variablen/BaseSystemLib/960_Logging.xml @@ -0,0 +1,228 @@ + + + + + + 960_Logging + + + + + Int + E_LogLevel.DEBUG + 5 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + E_LogLevel.INFO + 4 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + E_LogLevel.ERROR + 2 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + E_LogLevel.WARNING + 3 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + E_LogLevel.INT_ERROR + 1 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + cWs(1) + 500 + + + + + + + cs-CZ + + + + + + de-DE + Für WString SENDEN + + + + + en-US + + + + + + + + + + Int + cNoTempDataLog(1) + 40 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + \ No newline at end of file diff --git a/=A01+UH01-KF00/PLC-Variablen/BaseSystemLib/GlobVarLib_Communications.xml b/=A01+UH01-KF00/PLC-Variablen/BaseSystemLib/GlobVarLib_Communications.xml new file mode 100644 index 0000000..5416188 --- /dev/null +++ b/=A01+UH01-KF00/PLC-Variablen/BaseSystemLib/GlobVarLib_Communications.xml @@ -0,0 +1,197 @@ + + + + + + GlobVarLib_Communications + + + + + DInt + TELEGRAM_DATA_FIELD_MAX + 254 + + + + + + + cs-CZ + + + + + + de-DE + The maximum size of one data field string. (254 is the limit for String in TIA-Portal) + + + + + en-US + + + + + + + + + + DInt + TELEGRAM_DATA_MAX + 64 + + + + + + + cs-CZ + + + + + + de-DE + The maximum number of data fields in a telegram. + + + + + en-US + + + + + + + + + + DInt + TELEGRAM_MARKER_MAX + 7 + + + + + + + cs-CZ + + + + + + de-DE + The maximum length of a telegram start or end marker. + + + + + en-US + + + + + + + + + + DInt + TELEGRAM_RECV_LIST_MAX + 100 + + + + + + + cs-CZ + + + + + + de-DE + The number of telegrams that can be stored before the oldest will be overwritten. + + + + + en-US + + + + + + + + + + Int + cWs + 500 + + + + + + + cs-CZ + + + + + + de-DE + Für WString SENDEN + + + + + en-US + + + + + + + + + + DInt + TELEGRAM_SEND_DATA_MAX + 16 + + + + + + + cs-CZ + + + + + + de-DE + The maximum number of data fields in a telegram that has to be send + + + + + en-US + + + + + + + + + + \ No newline at end of file diff --git a/=A01+UH01-KF00/PLC-Variablen/Diagnostics/Diagnostics.xml b/=A01+UH01-KF00/PLC-Variablen/Diagnostics/Diagnostics.xml new file mode 100644 index 0000000..4587276 --- /dev/null +++ b/=A01+UH01-KF00/PLC-Variablen/Diagnostics/Diagnostics.xml @@ -0,0 +1,166 @@ + + + + + + Diagnostics + + + + + DInt + SERVERPROFILES_UPPERBOUND + 9 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + DInt + NAMESPACEARRAY_UPPERBOUND + 19 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + DInt + SERVERARRAY_UPPERBOUND + 0 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + DInt + SUBSCRIPTIONS_UPPERBOUND + 9 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + DInt + SESSIONS_UPPERBOUND + 9 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + \ No newline at end of file diff --git a/=A01+UH01-KF00/PLC-Variablen/Eingänge_20250902.xml b/=A01+UH01-KF00/PLC-Variablen/Eingänge_20250902.xml new file mode 100644 index 0000000..b0c4351 --- /dev/null +++ b/=A01+UH01-KF00/PLC-Variablen/Eingänge_20250902.xml @@ -0,0 +1,941 @@ + + + + + + Eingänge_20250902 + + + + + Bool + %I28.1 + BG0281 + + + + + + + cs-CZ + + + + + + de-DE + Jamsensor LS 1 + + + + + en-US + + + + + + + + + + Bool + %I38.6 + BG0386 + + + + + + + cs-CZ + + + + + + de-DE + Stausensor 2 (KR-M1102) + + + + + en-US + + + + + + + + + + Bool + %I324.4 + BG3244 + + + + + + + cs-CZ + + + + + + de-DE + Stausensor 2 (KR-K0111) + + + + + en-US + + + + + + + + + + Bool + %I325.6 + BG3256 + + + + + + + cs-CZ + + + + + + de-DE + Stausensor 4 (KR-M0101) + + + + + en-US + + + + + + + + + + Bool + %I327.7 + BG3277 + + + + + + + cs-CZ + + + + + + de-DE + Sensor MT in Scanposition (ILS-CV M0106) + + + + + en-US + + + + + + + + + + Bool + %I330.1 + BG3301 + + + + + + + cs-CZ + + + + + + de-DE + Stausensor1 (KR-M0102) + + + + + en-US + + + + + + + + + + Bool + %I330.2 + BG3302 + + + + + + + cs-CZ + + + + + + de-DE + Stausensor 2 (KR-M0102) + + + + + en-US + + + + + + + + + + Bool + %I330.3 + BG3303 + + + + + + + cs-CZ + + + + + + de-DE + Stausensor 3 (KR-M0102) + + + + + en-US + + + + + + + + + + Bool + %I330.7 + BG3307 + + + + + + + cs-CZ + + + + + + de-DE + Stausensor 5 (KR-M0102) + + + + + en-US + + + + + + + + + + Bool + %I333.3 + BG3333 + + + + + + + cs-CZ + + + + + + de-DE + Stausensor 7 (KR-M0102) + + + + + en-US + + + + + + + + + + Bool + %I333.6 + BG3336 + + + + + + + cs-CZ + + + + + + de-DE + Stausensor 9 (KR-M0101) + + + + + en-US + + + + + + + + + + Bool + %I1.5 + DI0015 + + + + + + + cs-CZ + + + + + + de-DE + Feedback Koppelrelais Not-Halt-Schnittstelle + + + + + en-US + + + + + + + + + + Bool + %I11.5 + DI0115 + + + + + + + cs-CZ + + + + + + de-DE + Brandschutzsteuerung --> SSG Keine Auslösung "Kein Brandfall" + + + + + en-US + + + + + + + + + + Bool + %I71.1 + SF0711 + + + + + + + cs-CZ + + + + + + de-DE + Not Halt Kanal 1 UZ1101 + + + + + en-US + + + + + + + + + + Bool + %I71.5 + SF0715 + + + + + + + cs-CZ + + + + + + de-DE + Not Halt Kanal 2 UZ1101 + + + + + en-US + + + + + + + + + + Bool + %I331.6 + BG3316 + + + + + + + cs-CZ + + + + + + de-DE + In Sensor Sep vor Clarification + + + + + en-US + + + + + + + + + + Int + cInBG3303 + 170 + + + + + + + cs-CZ + + + + + + de-DE + Stausensor 3 (KR-M0102) + + + + + en-US + + + + + + + + + + Int + cInBG3301 + 168 + + + + + + + cs-CZ + + + + + + de-DE + Stausensor1 (KR-M0102) + + + + + en-US + + + + + + + + + + Int + cInBG3316 + 175 + + + + + + + cs-CZ + + + + + + de-DE + In Sensor Sep vor Clarification + + + + + en-US + + + + + + + + + + Int + cInBG3307 + 171 + + + + + + + cs-CZ + + + + + + de-DE + Stausensor 5 (KR-M0102) + + + + + en-US + + + + + + + + + + Int + cNoSensors + 175 + + + + + + + cs-CZ + + + + + + de-DE + Anzahl Sensoren + + + + + en-US + + + + + + + + + + Int + cInBG3302 + 169 + + + + + + + cs-CZ + + + + + + de-DE + Stausensor 2 (KR-M0102) + + + + + en-US + + + + + + + + + + Int + cInBG3007 + 174 + + + + + + + cs-CZ + + + + + + de-DE + Rad dreht (KR-M4204) + + + + + en-US + + + + + + + + + + Int + cInBG3244 + 165 + + + + + + + cs-CZ + + + + + + de-DE + Stausensor 2 (KR-K0111) + + + + + en-US + + + + + + + + + + Int + cInBG3333 + 172 + + + + + + + cs-CZ + + + + + + de-DE + Stausensor 7 (KR-M0102) + + + + + en-US + + + + + + + + + + Int + cInBG0386 + 164 + + + + + + + cs-CZ + + + + + + de-DE + Stausensor 2 (KR-M1102) + + + + + en-US + + + + + + + + + + Int + cInBG0281 + 163 + + + + + + + cs-CZ + + + + + + de-DE + Jamsensor LS 1 + + + + + en-US + + + + + + + + + + Int + cInBG3277 + 167 + + + + + + + cs-CZ + + + + + + de-DE + Sensor MT in Scanposition (ILS-CV M0106) + + + + + en-US + + + + + + + + + + Int + cInBG3336 + 173 + + + + + + + cs-CZ + + + + + + de-DE + Stausensor 9 (KR-M0101) + + + + + en-US + + + + + + + + + + Int + cInBG3256 + 166 + + + + + + + cs-CZ + + + + + + de-DE + Stausensor 4 (KR-M0101) + + + + + en-US + + + + + + + + + + \ No newline at end of file diff --git a/=A01+UH01-KF00/PLC-Variablen/Eingänge_Import.xml b/=A01+UH01-KF00/PLC-Variablen/Eingänge_Import.xml new file mode 100644 index 0000000..667eb72 --- /dev/null +++ b/=A01+UH01-KF00/PLC-Variablen/Eingänge_Import.xml @@ -0,0 +1,14395 @@ + + + + + + Eingänge_Import + + + + + Bool + %I14.1 + FC0141 + + + + + + + cs-CZ + + + + + + de-DE + MSS ausgelöst FC0141 (CV-M4503) + + + + + en-US + + + + + + + + + + Bool + %I327.3 + BG3273 + + + + + + + cs-CZ + + + + + + de-DE + Abfrage Mitnehmerfinger in Position (ILS-CV M0106) + + + + + en-US + + + + + + + + + + Bool + %I71.0 + SF0710 + + + + + + + cs-CZ + + + + + + de-DE + Not Halt Kanal 1 UC011 + + + + + en-US + + + + + + + + + + Bool + %I332.3 + BG3323 + + + + + + + cs-CZ + + + + + + de-DE + in Separator 04 (Block 1.2) + + + + + en-US + + + + + + + + + + Bool + %I13.1 + SF0131 + + + + + + + cs-CZ + + + + + + de-DE + Reset UZ1105 + + + + + en-US + + + + + + + + + + Bool + %I4.6 + SF0046 + + + + + + + cs-CZ + + + + + + de-DE + Strahler ein/aus LS2 + + + + + en-US + + + + + + + + + + Bool + %I306.3 + BG3063 + + + + + + + cs-CZ + + + + + + de-DE + in Separator 1 (ILS-CV M4502) + + + + + en-US + + + + + + + + + + Bool + %I1.1 + DI0011 + + + + + + + cs-CZ + + + + + + de-DE + Feedback Hauptschütze aktiv +UC0110 + + + + + en-US + + + + + + + + + + Bool + %I7.6 + FC0076 + + + + + + + cs-CZ + + + + + + de-DE + MSS ausgelöst FC0076 + + + + + en-US + + + + + + + + + + Bool + %I312.6 + BG3126 + + + + + + + cs-CZ + + + + + + de-DE + Stausensor (ILS-CV M4302) + + + + + en-US + + + + + + + + + + Bool + %I300.4 + BG3004 + + + + + + + cs-CZ + + + + + + de-DE + MT in Position (ILS-CV M4103) + + + + + en-US + + + + + + + + + + Bool + %I38.1 + FC0381 + + + + + + + cs-CZ + + + + + + de-DE + MSS ausgelöst FC0381 Stützfuß LS2 + + + + + en-US + + + + + + + + + + Bool + %I12.6 + SF0126 + + + + + + + cs-CZ + + + + + + de-DE + Bereichshalt UZ1104 + + + + + en-US + + + + + + + + + + Bool + %I2.5 + SF0025 + + + + + + + cs-CZ + + + + + + de-DE + Schlüsselschalter LS 1 + + + + + en-US + + + + + + + + + + Bool + %I38.0 + FC0380 + + + + + + + cs-CZ + + + + + + de-DE + MSS ausgelöst FC0380 Kreisel + + + + + en-US + + + + + + + + + + Bool + %I331.0 + BG3310 + + + + + + + cs-CZ + + + + + + de-DE + in Separator 01 (Block 1.1.) + + + + + en-US + + + + + + + + + + Bool + %I2.6 + SF0026 + + + + + + + cs-CZ + + + + + + de-DE + Schlüsselschalter LS 2 + + + + + en-US + + + + + + + + + + Bool + %I332.4 + BG3324 + + + + + + + cs-CZ + + + + + + de-DE + in Separator 05 (Block 1.2) + + + + + en-US + + + + + + + + + + Bool + %I333.5 + BG3335 + + + + + + + cs-CZ + + + + + + de-DE + in Separator 4 (ILS-KR-M0102) + + + + + en-US + + + + + + + + + + Bool + %I33.0 + SF0330 + + + + + + + cs-CZ + + + + + + de-DE + Ladeschleife einfahren UZ0110-2 + + + + + en-US + + + + + + + + + + Bool + %I7.0 + FC0070 + + + + + + + cs-CZ + + + + + + de-DE + MSS ausgelöst FC0070 + + + + + en-US + + + + + + + + + + Bool + %I328.5 + BG3285 + + + + + + + cs-CZ + + + + + + de-DE + Abfrage Mitnehmerfinger in Position (ILS-CV M0110) + + + + + en-US + + + + + + + + + + Bool + %I327.4 + BG3274 + + + + + + + cs-CZ + + + + + + de-DE + Staumelder, Einfahrt (ILS-CV M0106) + + + + + en-US + + + + + + + + + + Bool + %I5.0 + SF0050 + + + + + + + cs-CZ + + + + + + de-DE + Positionsschalter Ladeschleife 1 eingefahren + + + + + en-US + + + + + + + + + + Bool + %I14.3 + FC0143 + + + + + + + cs-CZ + + + + + + de-DE + MSS ausgelöst FC0143 (CV-M4403) + + + + + en-US + + + + + + + + + + Bool + %I329.2 + BG3292 + + + + + + + cs-CZ + + + + + + de-DE + MT in Position (ILS-CV M0100) + + + + + en-US + + + + + + + + + + Bool + %I328.6 + BG3286 + + + + + + + cs-CZ + + + + + + de-DE + MT in Position (ILS-CV M0110) + + + + + en-US + + + + + + + + + + Bool + %I313.6 + BG3136 + + + + + + + cs-CZ + + + + + + de-DE + MT in Position (ILS-CV M4402) + + + + + en-US + + + + + + + + + + Bool + %I327.2 + BG3272 + + + + + + + cs-CZ + + + + + + de-DE + MT in Position (ILS-CV M0103) + + + + + en-US + + + + + + + + + + Bool + %I330.6 + BG3306 + + + + + + + cs-CZ + + + + + + de-DE + in Separator 2 (ILS-KR-M0102) + + + + + en-US + + + + + + + + + + Bool + %I312.3 + BG3123 + + + + + + + cs-CZ + + + + + + de-DE + Sensor (ILS-CV M4203) + + + + + en-US + + + + + + + + + + Bool + %I302.7 + BG3027 + + + + + + + cs-CZ + + + + + + de-DE + Abfrage Mitnehmerfinger in Position (ILS-CV M4104) + + + + + en-US + + + + + + + + + + Bool + %I329.5 + BG3295 + + + + + + + cs-CZ + + + + + + de-DE + in Separator (ILS-CV) + + + + + en-US + + + + + + + + + + Bool + %I302.6 + BG3026 + + + + + + + cs-CZ + + + + + + de-DE + MT in Position (ILS-CV M4104) + + + + + en-US + + + + + + + + + + Bool + %I307.5 + BG3075 + + + + + + + + de-DE + Abfrage Mitnehmerfinger in Position (ILS-CV M4403) + + + + + en-US + + + + + + + + + + Bool + %I32.3 + SF0323 + + + + + + + cs-CZ + + + + + + de-DE + Stützfuß hat Endlage oben erreicht + + + + + en-US + + + + + + + + + + Bool + %I38.2 + SF0382 + + + + + + + cs-CZ + + + + + + de-DE + Stützfuß hat Endlage unten erreicht + + + + + en-US + + + + + + + + + + Bool + %I331.1 + BG3311 + + + + + + + cs-CZ + + + + + + de-DE + in Separator 02 (Block 1.1.) + + + + + en-US + + + + + + + + + + Bool + %I34.3 + BG0343 + + + + + + + cs-CZ + + + + + + de-DE + in Separator + + + + + en-US + + + + + + + + + + Bool + %I306.6 + BG3066 + + + + + + + cs-CZ + + + + + + de-DE + Sensor Förderer voll (ILS-CV M4502) + + + + + en-US + + + + + + + + + + Bool + %I28.7 + BG0287 + + + + + + + cs-CZ + + + + + + de-DE + Sensor 2m ausgefahren LS 1 + + + + + en-US + + + + + + + + + + Bool + %I300.0 + BG3000 + + + + + + + cs-CZ + + + + + + de-DE + Sensor Förderer voll (ILS-CV M4104) + + + + + en-US + + + + + + + + + + Bool + %I306.2 + BG3062 + + + + + + + cs-CZ + + + + + + de-DE + Sensor (ILS-CV M4503) + + + + + en-US + + + + + + + + + + Bool + %I1.7 + DI0017 + + + + + + + cs-CZ + + + + + + de-DE + Sicherung Lampe 1EA0012 & 1EA0013 + + + + + en-US + + + + + + + + + + Bool + %I332.5 + BG3325 + + + + + + + cs-CZ + + + + + + de-DE + in Separator (Block 1.2.) + + + + + en-US + + + + + + + + + + Bool + %I40.5 + SF0405 + + + + + + + cs-CZ + + + + + + de-DE + Not Halt Kanal 2 UZ0101 + + + + + en-US + + + + + + + + + + Bool + %I307.4 + BG3074 + + + + + + + cs-CZ + + + + + + de-DE + MT in Position (ILS-CV M4403) + + + + + en-US + + + + + + + + + + Bool + %I333.1 + BG3331 + + + + + + + cs-CZ + + + + + + de-DE + Stausensor1 + + + + + en-US + + + + + + + + + + Bool + %I195.4 + SF1954 + + + + + + + cs-CZ + + + + + + de-DE + Not Halt Kanal 2 UZ0111-1 + + + + + en-US + + + + + + + + + + Bool + %I302.1 + BG3021 + + + + + + + cs-CZ + + + + + + de-DE + Abfrage Mitnehmerfinger in Position (ILS-CV M4501) + + + + + en-US + + + + + + + + + + Bool + %I331.2 + BG3312 + + + + + + + cs-CZ + + + + + + de-DE + in Separator 03 (Block 1.1.) + + + + + en-US + + + + + + + + + + Bool + %I313.7 + BG3137 + + + + + + + cs-CZ + + + + + + de-DE + Abfrage Mitnehmerfinger in Position (ILS-CV M4402) + + + + + en-US + + + + + + + + + + Bool + %I12.7 + SF0127 + + + + + + + cs-CZ + + + + + + de-DE + Reset UZ1104 + + + + + en-US + + + + + + + + + + Bool + %I330.4 + BG3304 + + + + + + + cs-CZ + + + + + + de-DE + Stausensor 2 (ILS-KR-M0102) + + + + + en-US + + + + + + + + + + Bool + %I334.5 + BG3345 + + + + + + + cs-CZ + + + + + + de-DE + LS Endlage ausgefahren + + + + + en-US + + + + + + + + + + Bool + %I4.1 + SF0041 + + + + + + + cs-CZ + + + + + + de-DE + Strahler ein/aus LS1 + + + + + en-US + + + + + + + + + + Bool + %I7.2 + FC0072 + + + + + + + cs-CZ + + + + + + de-DE + MSS ausgelöst FC0072 + + + + + en-US + + + + + + + + + + Bool + %I10.2 + DI0102 + + + + + + + cs-CZ + + + + + + de-DE + Vorsicherung 24V OK (FC102) + + + + + en-US + + + + + + + + + + Bool + %I4.4 + SF0044 + + + + + + + cs-CZ + + + + + + de-DE + Ladebaum aktivieren LS1 + + + + + en-US + + + + + + + + + + Bool + %I312.2 + BG3122 + + + + + + + cs-CZ + + + + + + de-DE + Abfrage Mitnehmerfinger in Position (ILS-CV M4302) + + + + + en-US + + + + + + + + + + Bool + %I40.6 + SF0406 + + + + + + + cs-CZ + + + + + + de-DE + Not Halt Kanal 2 UZ0102 + + + + + en-US + + + + + + + + + + Bool + %I28.3 + BG0283 + + + + + + + cs-CZ + + + + + + de-DE + in Separator Beladeposition 2, LS 1 + + + + + en-US + + + + + + + + + + Bool + %I33.2 + SF0332 + + + + + + + cs-CZ + + + + + + de-DE + Freigabe MT ausfahren UZ0110-2 + + + + + en-US + + + + + + + + + + Bool + %I326.2 + BG3262 + + + + + + + cs-CZ + + + + + + de-DE + Stausensor Str.03 (Block 1.1) + + + + + en-US + + + + + + + + + + Bool + %I39.3 + SF0393 + + + + + + + cs-CZ + + + + + + de-DE + Stützfuß ab LS2 + + + + + en-US + + + + + + + + + + Bool + %I0.5 + DI0005 + + + + + + + cs-CZ + + + + + + de-DE + Phasenausfall 400V + + + + + en-US + + + + + + + + + + Bool + %I40.7 + SF0407 + + + + + + + cs-CZ + + + + + + de-DE + Not Halt Kanal 2 LS 1 UZ0103 + + + + + en-US + + + + + + + + + + Bool + %I302.0 + BG3020 + + + + + + + cs-CZ + + + + + + de-DE + in Separator 1 (ILS-CV M4501) + + + + + en-US + + + + + + + + + + Bool + %I11.4 + DI0114 + + + + + + + cs-CZ + + + + + + de-DE + Feedback Koppelrelais E-Stop-IF (QA0922/QA0923) + + + + + en-US + + + + + + + + + + Bool + %I324.0 + BG3240 + + + + + + + cs-CZ + + + + + + de-DE + Sensor Förderer voll (ILS-CV M0100) + + + + + en-US + + + + + + + + + + Bool + %I302.4 + BG3024 + + + + + + + cs-CZ + + + + + + de-DE + in Separator 1 (ILS-CV M4203) + + + + + en-US + + + + + + + + + + Bool + %I28.4 + BG0284 + + + + + + + cs-CZ + + + + + + de-DE + Rad dreht (KR- LS 1) + + + + + en-US + + + + + + + + + + Bool + %I164.4 + SF1644 + + + + + + + cs-CZ + + + + + + de-DE + Not Halt Kanal 2 UZ0110-1 + + + + + en-US + + + + + + + + + + Bool + %I7.4 + FC0074 + + + + + + + cs-CZ + + + + + + de-DE + MSS ausgelöst FC0074 + + + + + en-US + + + + + + + + + + Bool + %I329.0 + BG3290 + + + + + + + cs-CZ + + + + + + de-DE + in Separator 2 (ILS-CV M0100) + + + + + en-US + + + + + + + + + + Bool + %I301.1 + BG3011 + + + + + + + cs-CZ + + + + + + de-DE + MT in Position (ILS-CV M4501)) + + + + + en-US + + + + + + + + + + Bool + %I482.0 + BG4820 + + + + + + + cs-CZ + + + + + + de-DE + Bodenabstandssensor ( LS 1) + + + + + en-US + + + + + + + + + + Bool + %I313.3 + BG3133 + + + + + + + cs-CZ + + + + + + de-DE + Sensor Förderer voll (ILS-CV M4402) + + + + + en-US + + + + + + + + + + Bool + %I39.1 + SF0391 + + + + + + + cs-CZ + + + + + + de-DE + Ladeschleife ausfahren UZ0111-2 + + + + + en-US + + + + + + + + + + Bool + %I300.3 + BG3003 + + + + + + + cs-CZ + + + + + + de-DE + in Separator 1 (ILS-CV M4103) + + + + + en-US + + + + + + + + + + Bool + %I71.6 + SF0716 + + + + + + + cs-CZ + + + + + + de-DE + Not Halt Kanal 2 UZ1102 + + + + + en-US + + + + + + + + + + Bool + %I328.2 + BG3282 + + + + + + + cs-CZ + + + + + + de-DE + MT in Position (ILS-CV M0107) + + + + + en-US + + + + + + + + + + Bool + %I334.4 + BG3344 + + + + + + + cs-CZ + + + + + + de-DE + LS Endlage eingefahren + + + + + en-US + + + + + + + + + + Bool + %I12.5 + SF0125 + + + + + + + cs-CZ + + + + + + de-DE + Reset UZ1103 + + + + + en-US + + + + + + + + + + Bool + %I13.0 + SF0130 + + + + + + + cs-CZ + + + + + + de-DE + Bereichshalt UZ1105 + + + + + en-US + + + + + + + + + + Bool + %I327.0 + BG3270 + + + + + + + cs-CZ + + + + + + de-DE + Abfrage Mitnehmerfinger in Position (ILS-CV-M0103) + + + + + en-US + + + + + + + + + + Bool + %I302.3 + BG3023 + + + + + + + cs-CZ + + + + + + de-DE + Sensor (ILS-CV M4501) + + + + + en-US + + + + + + + + + + Bool + %I331.3 + BG3313 + + + + + + + cs-CZ + + + + + + de-DE + in Separator 04 (Block 1.1.) + + + + + en-US + + + + + + + + + + Bool + %I32.7 + DI0327 + + + + + + + cs-CZ + + + + + + de-DE + SEW MOVIMOT OK LS1 + + + + + en-US + + + + + + + + + + Bool + %I334.0 + BG3340 + + + + + + + cs-CZ + + + + + + de-DE + Stausensor (ILS-CV M4104) + + + + + en-US + + + + + + + + + + Bool + %I6.7 + FC0067 + + + + + + + cs-CZ + + + + + + de-DE + MSS ausgelöst FC0067 + + + + + en-US + + + + + + + + + + Bool + %I32.2 + SF0322 + + + + + + + cs-CZ + + + + + + de-DE + Stützfuß hat Endlage unten erreicht + + + + + en-US + + + + + + + + + + Bool + %I34.0 + BG0340 + + + + + + + cs-CZ + + + + + + de-DE + in Separator LS2 + + + + + en-US + + + + + + + + + + Bool + %I47.1 + SF0471 + + + + + + + cs-CZ + + + + + + de-DE + Not Halt Schnittstelle CH1 (Reserve) + + + + + en-US + + + + + + + + + + Bool + %I6.2 + FC0062 + + + + + + + cs-CZ + + + + + + de-DE + MSS ausgelöst FC0062 (ILS-CV-M0103) + + + + + en-US + + + + + + + + + + Bool + %I333.4 + BG3334 + + + + + + + cs-CZ + + + + + + de-DE + Stausensor 4 (ILS-KR-M0102) + + + + + en-US + + + + + + + + + + Bool + %I12.1 + SF0121 + + + + + + + cs-CZ + + + + + + de-DE + Reset UZ1101 + + + + + en-US + + + + + + + + + + Bool + %I308.0 + BG3080 + + + + + + + cs-CZ + + + + + + de-DE + in Separator 2 (ILS-CV M4503) + + + + + en-US + + + + + + + + + + Bool + %I474.0 + BG4740 + + + + + + + cs-CZ + + + + + + de-DE + Neigungssensor Ladeschleife 1 + + + + + en-US + + + + + + + + + + Bool + %I14.4 + FC0144 + + + + + + + cs-CZ + + + + + + de-DE + MSS ausgelöst FC0144 (CV-M4501) + + + + + en-US + + + + + + + + + + Bool + %I2.4 + DI0024 + + + + + + + cs-CZ + + + + + + de-DE + Vorsicherung 24V OK (FC024) + + + + + en-US + + + + + + + + + + Bool + %I2.1 + DI0021 + + + + + + + cs-CZ + + + + + + de-DE + Vorsicherung 24V OK (FC021) + + + + + en-US + + + + + + + + + + Bool + %I312.4 + BG3124 + + + + + + + cs-CZ + + + + + + de-DE + Stausensor (ILS-CV M4203) + + + + + en-US + + + + + + + + + + Bool + %I40.3 + SF0403 + + + + + + + cs-CZ + + + + + + de-DE + Not Halt Kanal 1 LS 1 UZ0103 + + + + + en-US + + + + + + + + + + Bool + %I333.7 + BG3337 + + + + + + + cs-CZ + + + + + + de-DE + in Separator 5 (ILS-KR-M0102) + + + + + en-US + + + + + + + + + + Bool + %I330.0 + BG3300 + + + + + + + cs-CZ + + + + + + de-DE + in Separator 1 (ILS-KR-M0102) + + + + + en-US + + + + + + + + + + Bool + %I10.6 + DI0106 + + + + + + + cs-CZ + + + + + + de-DE + Feedback Hauptschütze aktiv (QA0920/QA0921) + + + + + en-US + + + + + + + + + + Bool + %I164.1 + SF1641 + + + + + + + cs-CZ + + + + + + de-DE + Schaltleiste LS1 hat ausgelöst + + + + + en-US + + + + + + + + + + Bool + %I33.1 + SF0331 + + + + + + + cs-CZ + + + + + + de-DE + Ladeschleife ausfahren UZ0110-2 + + + + + en-US + + + + + + + + + + Bool + %I10.1 + DI0101 + + + + + + + cs-CZ + + + + + + de-DE + Vorsicherung 24V OK (FC101) + + + + + en-US + + + + + + + + + + Bool + %I40.0 + SF0400 + + + + + + + cs-CZ + + + + + + de-DE + Not Halt Kanal 1 UH01 + + + + + en-US + + + + + + + + + + Bool + %I327.6 + BG3276 + + + + + + + cs-CZ + + + + + + de-DE + Stausensor (ILS-CV M0106) + + + + + en-US + + + + + + + + + + Bool + %I2.3 + DI0023 + + + + + + + cs-CZ + + + + + + de-DE + Vorsicherung 24V OK (FC023) + + + + + en-US + + + + + + + + + + Bool + %I301.0 + BG3010 + + + + + + + cs-CZ + + + + + + de-DE + in Separator 1 (ILS-KR-M4204) + + + + + en-US + + + + + + + + + + Bool + %I329.7 + BG3297 + + + + + + + cs-CZ + + + + + + de-DE + Sensor MT in Scanposition (ILS-CV M0110) + + + + + en-US + + + + + + + + + + Bool + %I332.1 + BG3321 + + + + + + + cs-CZ + + + + + + de-DE + in Separator 02 (Block 1.2.) + + + + + en-US + + + + + + + + + + Bool + %I40.4 + SF0404 + + + + + + + cs-CZ + + + + + + de-DE + Not Halt Kanal 2 UH01 + + + + + en-US + + + + + + + + + + Bool + %I313.4 + BG3134 + + + + + + + cs-CZ + + + + + + de-DE + Stausensor (ILS-CV M4402) + + + + + en-US + + + + + + + + + + Bool + %I327.5 + BG3275 + + + + + + + cs-CZ + + + + + + de-DE + Sensor Förderer voll (ILS-CV M0106) + + + + + en-US + + + + + + + + + + Bool + %I329.3 + BG3293 + + + + + + + cs-CZ + + + + + + de-DE + Sensor Förderer voll (ILS-CV M0110) + + + + + en-US + + + + + + + + + + Bool + %I325.0 + BG3250 + + + + + + + cs-CZ + + + + + + de-DE + Stausensor Str.01 (Block 1.2) + + + + + en-US + + + + + + + + + + Bool + %I0.3 + SF0003 + + + + + + + cs-CZ + + + + + + de-DE + Lampentest + + + + + en-US + + + + + + + + + + Bool + %I332.0 + BG3320 + + + + + + + cs-CZ + + + + + + de-DE + in Separator 01 (Block 1.2.) + + + + + en-US + + + + + + + + + + Bool + %I307.0 + BG3070 + + + + + + + cs-CZ + + + + + + de-DE + Sensor (ILS-CV M4403) + + + + + en-US + + + + + + + + + + Bool + %I326.3 + BG3263 + + + + + + + cs-CZ + + + + + + de-DE + Stausensor Str.04 (Block 1.1) + + + + + en-US + + + + + + + + + + Bool + %I307.3 + BG3073 + + + + + + + cs-CZ + + + + + + de-DE + in Separator 2 (ILS-CV M4403) + + + + + en-US + + + + + + + + + + Bool + %I0.6 + DI0006 + + + + + + + cs-CZ + + + + + + de-DE + Vorsicherung 400V UC0110 + + + + + en-US + + + + + + + + + + Bool + %I324.6 + BG3246 + + + + + + + cs-CZ + + + + + + de-DE + in Separator, Einfahrt MT-Buffer LS2 (KR-M0101) + + + + + en-US + + + + + + + + + + Bool + %I39.0 + SF0390 + + + + + + + cs-CZ + + + + + + de-DE + Ladeschleife einfahren UZ0111-2 + + + + + en-US + + + + + + + + + + Bool + %I3.3 + SF0033 + + + + + + + cs-CZ + + + + + + de-DE + Reset UZ0102 + + + + + en-US + + + + + + + + + + Bool + %I3.2 + SF0032 + + + + + + + cs-CZ + + + + + + de-DE + Freigabe UZ0102 + + + + + en-US + + + + + + + + + + Bool + %I327.1 + BG3271 + + + + + + + cs-CZ + + + + + + de-DE + in Separator (ILS-CV M0103) + + + + + en-US + + + + + + + + + + Bool + %I301.6 + BG3016 + + + + + + + cs-CZ + + + + + + de-DE + Stausensor (ILS-KR-M4204) + + + + + en-US + + + + + + + + + + Bool + %I28.5 + BG0285 + + + + + + + cs-CZ + + + + + + de-DE + Stausensor Staubereich nach Beladung voll + + + + + en-US + + + + + + + + + + Bool + %I71.2 + SF0712 + + + + + + + cs-CZ + + + + + + de-DE + Not Halt Kanal 1 UZ1102 + + + + + en-US + + + + + + + + + + Bool + %I39.2 + SF0392 + + + + + + + cs-CZ + + + + + + de-DE + Freigabe MT UZ0111-2 + + + + + en-US + + + + + + + + + + Bool + %I32.0 + FC0320 + + + + + + + cs-CZ + + + + + + de-DE + MSS ausgelöst FC0320 Kreisel + + + + + en-US + + + + + + + + + + Bool + %I313.0 + BG3130 + + + + + + + cs-CZ + + + + + + de-DE + in Separator 2 (ILS-CV M4302) + + + + + en-US + + + + + + + + + + Bool + %I306.1 + BG3061 + + + + + + + cs-CZ + + + + + + de-DE + Stausensor (ILS-CV M4503) + + + + + en-US + + + + + + + + + + Bool + %I301.3 + BG3013 + + + + + + + cs-CZ + + + + + + de-DE + in Separator 2 (ILS-KR-M4204) + + + + + en-US + + + + + + + + + + Bool + %I333.2 + BG3332 + + + + + + + cs-CZ + + + + + + de-DE + in Separator 3 (ILS-KR-M0102) + + + + + en-US + + + + + + + + + + Bool + %I306.0 + BG3060 + + + + + + + cs-CZ + + + + + + de-DE + in Separator 1 (ILS-CV M4503) + + + + + en-US + + + + + + + + + + Bool + %I334.3 + BG3343 + + + + + + + cs-CZ + + + + + + de-DE + LS Endlage ausgefahren + + + + + en-US + + + + + + + + + + Bool + %I325.1 + BG3251 + + + + + + + cs-CZ + + + + + + de-DE + Stausensor Str.02 (Block 1.2) + + + + + en-US + + + + + + + + + + Bool + %I33.3 + SF0333 + + + + + + + cs-CZ + + + + + + de-DE + Stützfuß ab LS1 + + + + + en-US + + + + + + + + + + Bool + %I14.5 + FC0145 + + + + + + + cs-CZ + + + + + + de-DE + MSS ausgelöst FC0145 (CV-M4104) + + + + + en-US + + + + + + + + + + Bool + %I324.3 + BG3243 + + + + + + + cs-CZ + + + + + + de-DE + Stausensor 1 (KR-K0111) + + + + + en-US + + + + + + + + + + Bool + %I0.2 + SF0002 + + + + + + + cs-CZ + + + + + + de-DE + LDT Start nach Störung + + + + + en-US + + + + + + + + + + Bool + %I11.7 + SF0117 + + + + + + + cs-CZ + + + + + + de-DE + LDT Start nach Störung + + + + + en-US + + + + + + + + + + Bool + %I334.1 + BG3341 + + + + + + + cs-CZ + + + + + + de-DE + Stausensor 5 (ILS-KR-M0102) + + + + + en-US + + + + + + + + + + Bool + %I33.4 + SF0334 + + + + + + + cs-CZ + + + + + + de-DE + Stützfuß auf LS1 + + + + + en-US + + + + + + + + + + Bool + %I5.1 + SF0051 + + + + + + + cs-CZ + + + + + + de-DE + Positionsschalter Ladeschleife 1 ausgefahren + + + + + en-US + + + + + + + + + + Bool + %I5.5 + SF0055 + + + + + + + cs-CZ + + + + + + de-DE + Ladebaum aktivieren LS2 + + + + + en-US + + + + + + + + + + Bool + %I6.0 + FC0060 + + + + + + + cs-CZ + + + + + + de-DE + MSS ausgelöst FC0060 + + + + + en-US + + + + + + + + + + Bool + %I10.7 + BP0107 + + + + + + + cs-CZ + + + + + + de-DE + Druckschalter Druckluft OK + + + + + en-US + + + + + + + + + + Bool + %I195.0 + SF1950 + + + + + + + cs-CZ + + + + + + de-DE + Not Halt Kanal 1 UZ0111-1 + + + + + en-US + + + + + + + + + + Bool + %I30.6 + SF0306 + + + + + + + cs-CZ + + + + + + de-DE + Beladeposition 2 + + + + + en-US + + + + + + + + + + Bool + %I14.6 + FC0146 + + + + + + + cs-CZ + + + + + + de-DE + MSS ausgelöst FC0146 (CV-M4103) + + + + + en-US + + + + + + + + + + Bool + %I306.5 + BG3065 + + + + + + + cs-CZ + + + + + + de-DE + Abfrage Mitnehmerfinger in Position (ILS-CV M4502) + + + + + en-US + + + + + + + + + + Bool + %I0.1 + SF0001 + + + + + + + cs-CZ + + + + + + de-DE + LDT Anlage Ein + + + + + en-US + + + + + + + + + + Bool + %I326.1 + BG3261 + + + + + + + cs-CZ + + + + + + de-DE + Stausensor Str.02 (Block 1.1) + + + + + en-US + + + + + + + + + + Bool + %I301.4 + BG3014 + + + + + + + cs-CZ + + + + + + de-DE + Stausensor (ILS-KR-M4204) + + + + + en-US + + + + + + + + + + Bool + %I312.0 + BG3120 + + + + + + + cs-CZ + + + + + + de-DE + in Separator (ILS-CV M4203) + + + + + en-US + + + + + + + + + + Bool + %I328.0 + BG3280 + + + + + + + cs-CZ + + + + + + de-DE + in Separator (ILS-BX1104) + + + + + en-US + + + + + + + + + + Bool + %I328.1 + BG3281 + + + + + + + cs-CZ + + + + + + de-DE + Stausensor(ILS-BX1104) + + + + + en-US + + + + + + + + + + Bool + %I312.7 + BG3127 + + + + + + + cs-CZ + + + + + + de-DE + Sensor Förderer voll (ILS-CV M4302) + + + + + en-US + + + + + + + + + + Bool + %I34.7 + BG0347 + + + + + + + cs-CZ + + + + + + de-DE + LS 2 Sensor 2m ausgefahren + + + + + en-US + + + + + + + + + + Bool + %I5.7 + FC0057 + + + + + + + cs-CZ + + + + + + de-DE + MSS ausgelöst FC0057 + + + + + en-US + + + + + + + + + + Bool + %I307.6 + BG3076 + + + + + + + cs-CZ + + + + + + de-DE + in Separator 1 (ILS-CV M4502) + + + + + en-US + + + + + + + + + + Bool + %I325.4 + BG3254 + + + + + + + cs-CZ + + + + + + de-DE + Stausensor Str.05 (Block 1.2) + + + + + en-US + + + + + + + + + + Bool + %I38.7 + DI0387 + + + + + + + cs-CZ + + + + + + de-DE + SEW MOVIMOT OK LS2 + + + + + en-US + + + + + + + + + + Bool + %I329.4 + BG3294 + + + + + + + cs-CZ + + + + + + de-DE + Stausensor (ILS-CV M0110) + + + + + en-US + + + + + + + + + + Bool + %I334.2 + BG3342 + + + + + + + cs-CZ + + + + + + de-DE + Rad dreht (ILS-KR-M0102) + + + + + en-US + + + + + + + + + + Bool + %I300.2 + BG3002 + + + + + + + cs-CZ + + + + + + de-DE + Abfrage Mitnehmerfinger in Position (ILS-CV M4103) + + + + + en-US + + + + + + + + + + Bool + %I28.6 + BG0286 + + + + + + + cs-CZ + + + + + + de-DE + Stausensor Staubereich voll Einfahrt Kreisel + + + + + en-US + + + + + + + + + + Bool + %I313.1 + BG3131 + + + + + + + cs-CZ + + + + + + de-DE + MT in Position (ILS-CV M4302) + + + + + en-US + + + + + + + + + + Bool + %I324.1 + BG3241 + + + + + + + cs-CZ + + + + + + de-DE + Stausensor (ILS-CV M0100) + + + + + en-US + + + + + + + + + + Bool + %I1.6 + DI0016 + + + + + + + cs-CZ + + + + + + de-DE + Vorsicherung 400V + + + + + en-US + + + + + + + + + + Bool + %I325.3 + BG3253 + + + + + + + cs-CZ + + + + + + de-DE + Stausensor Str.04 (Block 1.2) + + + + + en-US + + + + + + + + + + Bool + %I328.3 + BG3283 + + + + + + + cs-CZ + + + + + + de-DE + in Separator (ILS-CV M0107) + + + + + en-US + + + + + + + + + + Bool + %I47.4 + SF0474 + + + + + + + cs-CZ + + + + + + de-DE + Not Halt Kanal 2 LS 2 UZ0104 + + + + + en-US + + + + + + + + + + Bool + %I28.0 + BG0280 + + + + + + + cs-CZ + + + + + + de-DE + in Separator LS 1 + + + + + en-US + + + + + + + + + + Bool + %I164.5 + SF1645 + + + + + + + cs-CZ + + + + + + de-DE + Schaltleiste LS1 hat ausgelöst + + + + + en-US + + + + + + + + + + Bool + %I301.5 + BG3015 + + + + + + + cs-CZ + + + + + + de-DE + Stausensor 1 (ILS-KR-M4204) + + + + + en-US + + + + + + + + + + Bool + %I47.0 + SF0470 + + + + + + + cs-CZ + + + + + + de-DE + Not Halt Kanal 1 LS 2 UZ0104 + + + + + en-US + + + + + + + + + + Bool + %I12.0 + SF0120 + + + + + + + cs-CZ + + + + + + de-DE + Bereichshalt UZ1101 + + + + + en-US + + + + + + + + + + Bool + %I330.5 + BG3305 + + + + + + + cs-CZ + + + + + + de-DE + Stausensor (ILS-CV-M0103) + + + + + en-US + + + + + + + + + + Bool + %I306.7 + BG3067 + + + + + + + cs-CZ + + + + + + de-DE + Stausensor 1 (ILS-CV M4502) + + + + + en-US + + + + + + + + + + Bool + %I38.3 + SF0383 + + + + + + + cs-CZ + + + + + + de-DE + Stützfuß hat Endlage oben erreicht + + + + + en-US + + + + + + + + + + Bool + %I313.5 + BG3135 + + + + + + + cs-CZ + + + + + + de-DE + in Separator 2 (ILS-CV M4402) + + + + + en-US + + + + + + + + + + Bool + %I32.1 + FC0321 + + + + + + + cs-CZ + + + + + + de-DE + MSS ausgelöst FC0321 Stützfuß LS1 + + + + + en-US + + + + + + + + + + Bool + %I34.1 + BG0341 + + + + + + + cs-CZ + + + + + + de-DE + Stausensor + + + + + en-US + + + + + + + + + + Bool + %I30.5 + SF0305 + + + + + + + cs-CZ + + + + + + de-DE + Freigabe MT UZ0110-1 + + + + + en-US + + + + + + + + + + Bool + %I0.4 + BP0004 + + + + + + + cs-CZ + + + + + + de-DE + Druckschalter Druckluft OK + + + + + en-US + + + + + + + + + + Bool + %I36.5 + SF0365 + + + + + + + cs-CZ + + + + + + de-DE + Freigabe MT UZ0111-1 + + + + + en-US + + + + + + + + + + Bool + %I313.2 + BG3132 + + + + + + + cs-CZ + + + + + + de-DE + Abfrage Mitnehmerfinger in Position (ILS-CV M4302) + + + + + en-US + + + + + + + + + + Bool + %I14.2 + FC0142 + + + + + + + cs-CZ + + + + + + de-DE + MSS ausgelöst FC0142 (CV-M4502) + + + + + en-US + + + + + + + + + + Bool + %I329.6 + BG3296 + + + + + + + cs-CZ + + + + + + de-DE + Stausensor (ILS-CV) + + + + + en-US + + + + + + + + + + Bool + %I308.1 + BG3081 + + + + + + + cs-CZ + + + + + + de-DE + Abfrage Mitnehmerfinger in Position in Separator 2 (ILS-CV M4503) + + + + + en-US + + + + + + + + + + Bool + %I333.0 + BG3330 + + + + + + + cs-CZ + + + + + + de-DE + Stausensor 3 (ILS-KR-M0102) + + + + + en-US + + + + + + + + + + Bool + %I14.0 + FC0140 + + + + + + + cs-CZ + + + + + + de-DE + MSS ausgelöst FC0140 (KR-M4204) + + + + + en-US + + + + + + + + + + Bool + %I3.1 + SF0031 + + + + + + + cs-CZ + + + + + + de-DE + Reset UZ0101 + + + + + en-US + + + + + + + + + + Bool + %I164.0 + SF1640 + + + + + + + cs-CZ + + + + + + de-DE + Not Halt Kanal 1 UZ0110-1 + + + + + en-US + + + + + + + + + + Bool + %I300.6 + BG3006 + + + + + + + cs-CZ + + + + + + de-DE + Sensor Förderer voll (ILS-CV M4103) + + + + + en-US + + + + + + + + + + Bool + %I71.4 + SF0714 + + + + + + + cs-CZ + + + + + + de-DE + Not Halt Kanal 2 UC011 + + + + + en-US + + + + + + + + + + Bool + %I325.2 + BG3252 + + + + + + + cs-CZ + + + + + + de-DE + Stausensor Str.03 (Block 1.2) + + + + + en-US + + + + + + + + + + Bool + %I195.5 + SF1955 + + + + + + + cs-CZ + + + + + + de-DE + Schaltleiste LS2 hat ausgelöst + + + + + en-US + + + + + + + + + + Bool + %I12.4 + SF0124 + + + + + + + cs-CZ + + + + + + de-DE + Bereichshalt UZ1103 + + + + + en-US + + + + + + + + + + Bool + %I300.1 + BG3001 + + + + + + + cs-CZ + + + + + + de-DE + Stausensor 1 (ILS-CV M4104) + + + + + en-US + + + + + + + + + + Bool + %I326.4 + BG3264 + + + + + + + cs-CZ + + + + + + de-DE + Stausensor Str.05 (Block 1.1) + + + + + en-US + + + + + + + + + + Bool + %I40.2 + SF0402 + + + + + + + cs-CZ + + + + + + de-DE + Not Halt Kanal 1 UZ0102 + + + + + en-US + + + + + + + + + + Bool + %I300.5 + BG3005 + + + + + + + cs-CZ + + + + + + de-DE + Stausensor (ILS-CV M4103) + + + + + en-US + + + + + + + + + + Bool + %I1.2 + DI0012 + + + + + + + cs-CZ + + + + + + de-DE + Feedback Hauptschütze aktiv +UC0111 + + + + + en-US + + + + + + + + + + Bool + %I0.7 + DI0007 + + + + + + + cs-CZ + + + + + + de-DE + Vorsicherung 400V UC0111 + + + + + en-US + + + + + + + + + + Bool + %I307.2 + BG3072 + + + + + + + cs-CZ + + + + + + de-DE + Stausensor 2 (ILS-CV M4403) + + + + + en-US + + + + + + + + + + Bool + %I302.5 + BG3025 + + + + + + + cs-CZ + + + + + + de-DE + in Separator (ILS-CV M4104) + + + + + en-US + + + + + + + + + + Bool + %I2.2 + DI0022 + + + + + + + cs-CZ + + + + + + de-DE + Vorsicherung 24V OK (FC022) + + + + + en-US + + + + + + + + + + Bool + %I195.1 + SF1951 + + + + + + + cs-CZ + + + + + + de-DE + Schaltleiste LS2 hat ausgelöst + + + + + en-US + + + + + + + + + + Bool + %I1.4 + DI0014 + + + + + + + cs-CZ + + + + + + de-DE + Feedback Koppelrelais E-Stop-IF (QA0660/QA0661) + + + + + en-US + + + + + + + + + + Bool + %I6.4 + FC0064 + + + + + + + cs-CZ + + + + + + de-DE + MSS ausgelöst FC0064 + + + + + en-US + + + + + + + + + + Bool + %I40.1 + SF0401 + + + + + + + cs-CZ + + + + + + de-DE + Not Halt Kanal 1 UZ0101 + + + + + en-US + + + + + + + + + + Bool + %I334.6 + BG3346 + + + + + + + cs-CZ + + + + + + de-DE + LS Endlage eingefahren + + + + + en-US + + + + + + + + + + Bool + %I0.0 + SF0000 + + + + + + + cs-CZ + + + + + + de-DE + DT Anlage Aus + + + + + en-US + + + + + + + + + + Bool + %I325.7 + BG3257 + + + + + + + cs-CZ + + + + + + de-DE + in Separator, Einfahrt MT-Buffer LS1 (KR-M0101) + + + + + en-US + + + + + + + + + + Bool + %I324.5 + BG3245 + + + + + + + cs-CZ + + + + + + de-DE + Stausensor 2 (KR-K0111) + + + + + en-US + + + + + + + + + + Bool + %I326.0 + BG3260 + + + + + + + cs-CZ + + + + + + de-DE + Stausensor Str.01 (Block 1.1) + + + + + en-US + + + + + + + + + + Bool + %I312.1 + BG3121 + + + + + + + cs-CZ + + + + + + de-DE + MT in Position (ILS-CV M4203) + + + + + en-US + + + + + + + + + + Bool + %I334.7 + BG3347 + + + + + + + cs-CZ + + + + + + de-DE + Rad dreht (KR-M0101) + + + + + en-US + + + + + + + + + + Bool + %I301.7 + BG3017 + + + + + + + cs-CZ + + + + + + de-DE + Staumelder, Einfahrt (ILS-CV M4501) + + + + + en-US + + + + + + + + + + Bool + %I328.4 + BG3284 + + + + + + + cs-CZ + + + + + + de-DE + Abfrage Mitnehmerfinger in Position (ILS-CV M0107) + + + + + en-US + + + + + + + + + + Bool + %I1.0 + DI0010 + + + + + + + cs-CZ + + + + + + de-DE + Vorsicherung 400V UC011 + + + + + en-US + + + + + + + + + + Bool + %I1.3 + DI0013 + + + + + + + cs-CZ + + + + + + de-DE + Feedback Hauptschütze aktiv + + + + + en-US + + + + + + + + + + Bool + %I10.0 + DI0100 + + + + + + + cs-CZ + + + + + + de-DE + Meldekontakt 400V Motor+Bremse + + + + + en-US + + + + + + + + + + Bool + %I307.7 + BG3077 + + + + + + + cs-CZ + + + + + + de-DE + Stausensor 2 (ILS-CV M4403) + + + + + en-US + + + + + + + + + + Bool + %I39.4 + SF0394 + + + + + + + cs-CZ + + + + + + de-DE + Stützfuß auf LS2 + + + + + en-US + + + + + + + + + + Bool + %I312.5 + BG3125 + + + + + + + cs-CZ + + + + + + de-DE + in Separator (ILS-CV M4302) + + + + + en-US + + + + + + + + + + Bool + %I331.5 + BG3315 + + + + + + + cs-CZ + + + + + + de-DE + in Separator (Block 1.1) + + + + + en-US + + + + + + + + + + Bool + %I329.1 + BG3291 + + + + + + + cs-CZ + + + + + + de-DE + Abfrage Mitnehmerfinger in Position (ILS-CV M0100) + + + + + en-US + + + + + + + + + + Bool + %I6.3 + FC0063 + + + + + + + cs-CZ + + + + + + de-DE + MSS ausgelöst FC0063 (ILS-CV-M0105) + + + + + en-US + + + + + + + + + + Bool + %I47.5 + SF0475 + + + + + + + cs-CZ + + + + + + de-DE + Not Halt Schnittstelle CH2 (Reserve) + + + + + en-US + + + + + + + + + + Bool + %I307.1 + BG3071 + + + + + + + cs-CZ + + + + + + de-DE + Stausensor 1 (ILS-CV M4403) + + + + + en-US + + + + + + + + + + Bool + %I6.6 + FC0066 + + + + + + + cs-CZ + + + + + + de-DE + MSS ausgelöst FC0066 + + + + + en-US + + + + + + + + + + Bool + %I34.5 + BG0345 + + + + + + + cs-CZ + + + + + + de-DE + Stausensor Staubereich nach Beladung voll + + + + + en-US + + + + + + + + + + Bool + %I34.4 + BG0344 + + + + + + + cs-CZ + + + + + + de-DE + Rad dreht (KR- LS 2) + + + + + en-US + + + + + + + + + + Bool + %I324.2 + BG3242 + + + + + + + cs-CZ + + + + + + de-DE + in Separator 1 (ILS-CV M0100) + + + + + en-US + + + + + + + + + + Bool + %I36.6 + SF0366 + + + + + + + cs-CZ + + + + + + de-DE + Beladeposition 2 + + + + + en-US + + + + + + + + + + Bool + %I34.2 + BG0342 + + + + + + + cs-CZ + + + + + + de-DE + in Separator Beladeposition 1, LS 2 + + + + + en-US + + + + + + + + + + Bool + %I306.4 + BG3064 + + + + + + + cs-CZ + + + + + + de-DE + MT in Position (ILS-CV M4502)) + + + + + en-US + + + + + + + + + + Bool + %I6.5 + FC0065 + + + + + + + cs-CZ + + + + + + de-DE + MSS ausgelöst FC0065 + + + + + en-US + + + + + + + + + + Bool + %I28.2 + BG0282 + + + + + + + cs-CZ + + + + + + de-DE + in Separator Beladeposition 1, LS 1 + + + + + en-US + + + + + + + + + + Bool + %I6.1 + FC0061 + + + + + + + cs-CZ + + + + + + de-DE + MSS ausgelöst FC0061 + + + + + en-US + + + + + + + + + + Bool + %I332.2 + BG3322 + + + + + + + cs-CZ + + + + + + de-DE + in Separator 03 (Block 1.2) + + + + + en-US + + + + + + + + + + Bool + %I331.4 + BG3314 + + + + + + + cs-CZ + + + + + + de-DE + in Separator 05 (Block 1.1.) + + + + + en-US + + + + + + + + + + Bool + %I301.2 + BG3012 + + + + + + + cs-CZ + + + + + + de-DE + Stausensor 2 (ILS-KR-M4204) + + + + + en-US + + + + + + + + + + Bool + %I302.2 + BG3022 + + + + + + + cs-CZ + + + + + + de-DE + Stausensor 1 (ILS-CV M4501) + + + + + en-US + + + + + + + + + + Bool + %I11.1 + DI0111 + + + + + + + cs-CZ + + + + + + de-DE + IF BST "Non fault" + + + + + en-US + + + + + + + + + + Bool + %I335.4 + BG3354 + + + + + + + cs-CZ + + + + + + de-DE + Längenabfrage Grenze kurz (ILS-CV) + + + + + en-US + + + + + + + + + + Bool + %I5.3 + SF0053 + + + + + + + cs-CZ + + + + + + de-DE + Positionsschalter Ladeschleife 2 ausgefahren + + + + + en-US + + + + + + + + + + Bool + %I335.7 + BG3357 + + + + + + + cs-CZ + + + + + + de-DE + Verlassensensor Längenmessung (ILS-CV) + + + + + en-US + + + + + + + + + + Bool + %I34.6 + BG0346 + + + + + + + cs-CZ + + + + + + de-DE + Stausensor 2 (KR-M1102) + + + + + en-US + + + + + + + + + + Bool + %I514.0 + BG5140 + + + + + + + cs-CZ + + + + + + de-DE + Bodenabstandssensor ( LS 2) + + + + + en-US + + + + + + + + + + Bool + %I335.5 + BG3355 + + + + + + + cs-CZ + + + + + + de-DE + Längenabfrage Grenze lang (ILS-CV) + + + + + en-US + + + + + + + + + + Bool + %I11.0 + DI0110 + + + + + + + cs-CZ + + + + + + de-DE + IF BST "No fire alarm" + + + + + en-US + + + + + + + + + + Bool + %I335.6 + BG3356 + + + + + + + cs-CZ + + + + + + de-DE + Längenabfrage Grenze zu lang (ILS-CV) + + + + + en-US + + + + + + + + + + Bool + %I78.5 + SF0785 + + + + + + + cs-CZ + + + + + + de-DE + Not Halt Schnittstelle CH2 (from UH0X) + + + + + en-US + + + + + + + + + + Bool + %I506.0 + BG5060 + + + + + + + cs-CZ + + + + + + de-DE + Neigungssensor Ladeschleife 2 + + + + + en-US + + + + + + + + + + Bool + %I78.1 + SF0781 + + + + + + + cs-CZ + + + + + + de-DE + Not Halt Schnittstelle CH1 (from UH06) + + + + + en-US + + + + + + + + + + Bool + %I308.2 + BG3082 + + + + + + + cs-CZ + + + + + + de-DE + MT in Position (ILS-CV M4503) + + + + + en-US + + + + + + + + + + Bool + %I326.5 + BG3265 + + + + + + + cs-CZ + + + + + + de-DE + Sensor MT in Scanposition (ILS-CV M0106) + + + + + en-US + + + + + + + + + + Bool + %I11.2 + DI0112 + + + + + + + cs-CZ + + + + + + de-DE + IF BST "FPC opened" + + + + + en-US + + + + + + + + + + Bool + %I5.2 + SF0052 + + + + + + + cs-CZ + + + + + + de-DE + Positionsschalter Ladeschleife 2 eingefahren + + + + + en-US + + + + + + + + + + Bool + %I300.7 + BG3007 + + + + + + + cs-CZ + + + + + + de-DE + Rad dreht (KR-M4204) + + + + + en-US + + + + + + + + + + Bool + %I4.2 + DI0042 + + + + + + + cs-CZ + + + + + + de-DE + Interface RFID (from Rielec "station ready") + + + + + en-US + + + + + + + + + + Bool + %I4.7 + DI0047 + + + + + + + cs-CZ + + + + + + de-DE + Interface RFID (from Rielec "bypass mode") + + + + + en-US + + + + + + + + + + Bool + %I3.7 + DI0037 + + + + + + + cs-CZ + + + + + + de-DE + IF BST "FPC opened" NIU + + + + + en-US + + + + + + + + + + Bool + %I3.5 + DI0035 + + + + + + + cs-CZ + + + + + + de-DE + IF BST "No fire alarm" NIU + + + + + en-US + + + + + + + + + + Bool + %I3.4 + DI0034 + + + + + + + cs-CZ + + + + + + de-DE + IF BMZ "no fire alarm" + + + + + en-US + + + + + + + + + + Bool + %I3.6 + DI0036 + + + + + + + cs-CZ + + + + + + de-DE + IF BST "Non fault" NIU + + + + + en-US + + + + + + + + + + Bool + %I12.3 + SF0123 + + + + + + + cs-CZ + + + + + + de-DE + NIU Reset UZ1102 + + + + + en-US + + + + + + + + + + Bool + %I4.3 + SF0043 + + + + + + + cs-CZ + + + + + + de-DE + Reset LS1 UZ0103 + + + + + en-US + + + + + + + + + + Bool + %I12.2 + SF0122 + + + + + + + cs-CZ + + + + + + de-DE + NIU Bereichshalt UZ1102 + + + + + en-US + + + + + + + + + + Bool + %I5.4 + SF0054 + + + + + + + cs-CZ + + + + + + de-DE + Reset LS2 UZ0104 + + + + + en-US + + + + + + + + + + Bool + %I314.6 + BG3146 + + + + + + + cs-CZ + + + + + + de-DE + Sensor Förderer voll (ILS-CV M4203_B) + + + + + en-US + + + + + + + + + + Bool + %I315.6 + BG3156 + + + + + + + cs-CZ + + + + + + de-DE + Sensor Förderer voll (ILS-CV M4402_A) + + + + + en-US + + + + + + + + + + Bool + %I314.7 + BG3147 + + + + + + + cs-CZ + + + + + + de-DE + Stausensor (ILS-CV M4203_B) + + + + + en-US + + + + + + + + + + Bool + %I315.3 + BG3153 + + + + + + + cs-CZ + + + + + + de-DE + Stausensor (ILS-CV M4302_A) + + + + + en-US + + + + + + + + + + Bool + %I315.2 + BG3152 + + + + + + + cs-CZ + + + + + + de-DE + Sensor Förderer voll (ILS-CV M4302_A) + + + + + en-US + + + + + + + + + + Bool + %I315.7 + BG3157 + + + + + + + cs-CZ + + + + + + de-DE + Stausensor (ILS-CV M4402_A) + + + + + en-US + + + + + + + + + + Bool + %I314.0 + BG3140 + + + + + + + cs-CZ + + + + + + de-DE + Staumelder, Einfahrt (ILS-CV M4103_A) + + + + + en-US + + + + + + + + + + Bool + %I314.3 + BG3143 + + + + + + + cs-CZ + + + + + + de-DE + Stausensor (ILS-CV M4103_B) + + + + + en-US + + + + + + + + + + Bool + %I314.4 + BG3144 + + + + + + + cs-CZ + + + + + + de-DE + Staumelder, Einfahrt (ILS-CV M4203_A) + + + + + en-US + + + + + + + + + + Bool + %I315.0 + BG3150 + + + + + + + cs-CZ + + + + + + de-DE + Staumelder, Einfahrt (ILS-CV M4302_A) + + + + + en-US + + + + + + + + + + Bool + %I314.2 + BG3142 + + + + + + + cs-CZ + + + + + + de-DE + Sensor Förderer voll (ILS-CV M4103_B) + + + + + en-US + + + + + + + + + + Bool + %I315.4 + BG3154 + + + + + + + cs-CZ + + + + + + de-DE + Staumelder, Einfahrt (ILS-CV M4402_A) + + + + + en-US + + + + + + + + + + Bool + %I15.2 + FC0152 + + + + + + + cs-CZ + + + + + + de-DE + MSS ausgelöst FC0152 (CV-M4103_B) + + + + + en-US + + + + + + + + + + Bool + %I14.7 + FC0147 + + + + + + + cs-CZ + + + + + + de-DE + MSS ausgelöst FC0147 (CV-M4203_A) + + + + + en-US + + + + + + + + + + Bool + %I15.4 + FC0154 + + + + + + + cs-CZ + + + + + + de-DE + MSS ausgelöst FC0154 (CV-M4302_A) + + + + + en-US + + + + + + + + + + Bool + %I15.1 + FC0151 + + + + + + + cs-CZ + + + + + + de-DE + MSS ausgelöst FC0151 (CV-M4402_B) + + + + + en-US + + + + + + + + + + Bool + %I15.3 + FC0153 + + + + + + + cs-CZ + + + + + + de-DE + MSS ausgelöst FC0153 (CV-M4203_B) + + + + + en-US + + + + + + + + + + Bool + %I15.0 + FC0150 + + + + + + + cs-CZ + + + + + + de-DE + MSS ausgelöst FC0150 (CV-M4302_B) + + + + + en-US + + + + + + + + + + Bool + %I15.5 + FC0155 + + + + + + + cs-CZ + + + + + + de-DE + MSS ausgelöst FC0155 (CV-M4402_A) + + + + + en-US + + + + + + + + + + Int + cInBG3283 + 101 + + + + + + + cs-CZ + + + + + + de-DE + in Separator (ILS-CV M0107) + + + + + en-US + + + + + + + + + + Int + cInBG0284 + 3 + + + + + + + cs-CZ + + + + + + de-DE + Rad dreht (KR- LS 1) + + + + + en-US + + + + + + + + + + Int + cInBG3262 + 87 + + + + + + + cs-CZ + + + + + + de-DE + Stausensor Str.03 (Block 1.1) + + + + + en-US + + + + + + + + + + Int + cInBG3331 + 130 + + + + + + + cs-CZ + + + + + + de-DE + Stausensor1 + + + + + en-US + + + + + + + + + + Int + cInBG0287 + 6 + + + + + + + cs-CZ + + + + + + de-DE + Sensor 2m ausgefahren LS 1 + + + + + en-US + + + + + + + + + + Int + cInBG3066 + 44 + + + + + + + cs-CZ + + + + + + de-DE + Sensor Förderer voll (ILS-CV M4502) + + + + + en-US + + + + + + + + + + Int + cInBG3126 + 63 + + + + + + + cs-CZ + + + + + + de-DE + Stausensor (ILS-CV M4302) + + + + + en-US + + + + + + + + + + Int + cInBG3245 + 77 + + + + + + + cs-CZ + + + + + + de-DE + Stausensor 2 (KR-K0111) + + + + + en-US + + + + + + + + + + Int + cInBG0344 + 11 + + + + + + + cs-CZ + + + + + + de-DE + Rad dreht (KR- LS 2) + + + + + en-US + + + + + + + + + + Int + cInBG4820 + 148 + + + + + + + cs-CZ + + + + + + de-DE + Bodenabstandssensor ( LS 1) + + + + + en-US + + + + + + + + + + Int + cInBG3261 + 86 + + + + + + + cs-CZ + + + + + + de-DE + Stausensor Str.02 (Block 1.1) + + + + + en-US + + + + + + + + + + Int + cInBG3342 + 137 + + + + + + + cs-CZ + + + + + + de-DE + Rad dreht (ILS-KR-M0102) + + + + + en-US + + + + + + + + + + Int + cInBG3335 + 133 + + + + + + + cs-CZ + + + + + + de-DE + in Separator 4 (ILS-KR-M0102) + + + + + en-US + + + + + + + + + + Int + cInBG3271 + 92 + + + + + + + cs-CZ + + + + + + de-DE + in Separator (ILS-CV M0103) + + + + + en-US + + + + + + + + + + Int + cInBG3252 + 81 + + + + + + + cs-CZ + + + + + + de-DE + Stausensor Str.03 (Block 1.2) + + + + + en-US + + + + + + + + + + Int + cInBG3346 + 141 + + + + + + + cs-CZ + + + + + + de-DE + LS Endlage eingefahren + + + + + en-US + + + + + + + + + + Int + cInBG3015 + 27 + + + + + + + cs-CZ + + + + + + de-DE + Stausensor 1 (ILS-KR-M4204) + + + + + en-US + + + + + + + + + + Int + cInBG3017 + 29 + + + + + + + cs-CZ + + + + + + de-DE + Staumelder, Einfahrt (ILS-CV M4501) + + + + + en-US + + + + + + + + + + Int + cInBG0283 + 2 + + + + + + + cs-CZ + + + + + + de-DE + in Separator Beladeposition 2, LS 1 + + + + + en-US + + + + + + + + + + Int + cInBG3286 + 104 + + + + + + + cs-CZ + + + + + + de-DE + MT in Position (ILS-CV M0110) + + + + + en-US + + + + + + + + + + Int + cInBG3137 + 72 + + + + + + + cs-CZ + + + + + + de-DE + Abfrage Mitnehmerfinger in Position (ILS-CV M4402) + + + + + en-US + + + + + + + + + + Int + cInBG3081 + 55 + + + + + + + cs-CZ + + + + + + de-DE + Abfrage Mitnehmerfinger in Position in Separator 2 (ILS-CV M4503) + + + + + en-US + + + + + + + + + + Int + cInBG3131 + 66 + + + + + + + cs-CZ + + + + + + de-DE + MT in Position (ILS-CV M4302) + + + + + en-US + + + + + + + + + + Int + cInBG3076 + 52 + + + + + + + cs-CZ + + + + + + de-DE + in Separator 1 (ILS-CV M4502) + + + + + en-US + + + + + + + + + + Int + cInBG3312 + 119 + + + + + + + cs-CZ + + + + + + de-DE + in Separator 03 (Block 1.1.) + + + + + en-US + + + + + + + + + + Int + cInBG0340 + 7 + + + + + + + cs-CZ + + + + + + de-DE + in Separator LS2 + + + + + en-US + + + + + + + + + + Int + cInBG3323 + 126 + + + + + + + cs-CZ + + + + + + de-DE + in Separator 04 (Block 1.2) + + + + + en-US + + + + + + + + + + Int + cInBG3067 + 45 + + + + + + + cs-CZ + + + + + + de-DE + Stausensor 1 (ILS-CV M4502) + + + + + en-US + + + + + + + + + + Int + cInBG3133 + 68 + + + + + + + cs-CZ + + + + + + de-DE + Sensor Förderer voll (ILS-CV M4402) + + + + + en-US + + + + + + + + + + Int + cInBG3075 + 51 + + + + + + + cs-CZ + + + + + + de-DE + Abfrage Mitnehmerfinger in Position (ILS-CV M4403) + + + + + en-US + + + + + + + + + + Int + cInBG3005 + 20 + + + + + + + cs-CZ + + + + + + de-DE + Stausensor (ILS-CV M4103) + + + + + en-US + + + + + + + + + + Int + cInBG3257 + 84 + + + + + + + cs-CZ + + + + + + de-DE + in Separator, Einfahrt MT-Buffer LS1 (KR-M0101) + + + + + en-US + + + + + + + + + + Int + cInBG3124 + 61 + + + + + + + cs-CZ + + + + + + de-DE + Stausensor (ILS-CV M4203) + + + + + en-US + + + + + + + + + + Int + cInBG3241 + 74 + + + + + + + cs-CZ + + + + + + de-DE + Stausensor (ILS-CV M0100) + + + + + en-US + + + + + + + + + + Int + cInBG3343 + 138 + + + + + + + cs-CZ + + + + + + de-DE + LS Endlage ausgefahren + + + + + en-US + + + + + + + + + + Int + cInBG3064 + 42 + + + + + + + cs-CZ + + + + + + de-DE + MT in Position (ILS-CV M4502)) + + + + + en-US + + + + + + + + + + Int + cInBG3013 + 25 + + + + + + + cs-CZ + + + + + + de-DE + in Separator 2 (ILS-KR-M4204) + + + + + en-US + + + + + + + + + + Int + cInBG0347 + 14 + + + + + + + cs-CZ + + + + + + de-DE + LS 2 Sensor 2m ausgefahren + + + + + en-US + + + + + + + + + + Int + cInBG3077 + 53 + + + + + + + cs-CZ + + + + + + de-DE + Stausensor 2 (ILS-CV M4403) + + + + + en-US + + + + + + + + + + Int + cInBG3321 + 124 + + + + + + + cs-CZ + + + + + + de-DE + in Separator 02 (Block 1.2.) + + + + + en-US + + + + + + + + + + Int + cInBG3310 + 117 + + + + + + + cs-CZ + + + + + + de-DE + in Separator 01 (Block 1.1.) + + + + + en-US + + + + + + + + + + Int + cInBG3340 + 135 + + + + + + + cs-CZ + + + + + + de-DE + Stausensor (ILS-CV M4104) + + + + + en-US + + + + + + + + + + Int + cInBG3341 + 136 + + + + + + + cs-CZ + + + + + + de-DE + Stausensor 5 (ILS-KR-M0102) + + + + + en-US + + + + + + + + + + Int + cInBG3062 + 40 + + + + + + + cs-CZ + + + + + + de-DE + Sensor (ILS-CV M4503) + + + + + en-US + + + + + + + + + + Int + cInBG3061 + 39 + + + + + + + cs-CZ + + + + + + de-DE + Stausensor (ILS-CV M4503) + + + + + en-US + + + + + + + + + + Int + cInBG3311 + 118 + + + + + + + cs-CZ + + + + + + de-DE + in Separator 02 (Block 1.1.) + + + + + en-US + + + + + + + + + + Int + cInBG3314 + 121 + + + + + + + cs-CZ + + + + + + de-DE + in Separator 05 (Block 1.1.) + + + + + en-US + + + + + + + + + + Int + cInBG3274 + 95 + + + + + + + cs-CZ + + + + + + de-DE + Staumelder, Einfahrt (ILS-CV M0106) + + + + + en-US + + + + + + + + + + Int + cInBG0341 + 8 + + + + + + + cs-CZ + + + + + + de-DE + Stausensor + + + + + en-US + + + + + + + + + + Int + cInBG3250 + 79 + + + + + + + cs-CZ + + + + + + de-DE + Stausensor Str.01 (Block 1.2) + + + + + en-US + + + + + + + + + + Int + cInBG3020 + 30 + + + + + + + cs-CZ + + + + + + de-DE + in Separator 1 (ILS-CV M4501) + + + + + en-US + + + + + + + + + + Int + cInBG3122 + 59 + + + + + + + cs-CZ + + + + + + de-DE + Abfrage Mitnehmerfinger in Position (ILS-CV M4302) + + + + + en-US + + + + + + + + + + Int + cInBG3024 + 34 + + + + + + + cs-CZ + + + + + + de-DE + in Separator 1 (ILS-CV M4203) + + + + + en-US + + + + + + + + + + Int + cInBG3320 + 123 + + + + + + + cs-CZ + + + + + + de-DE + in Separator 01 (Block 1.2.) + + + + + en-US + + + + + + + + + + Int + cInBG3027 + 37 + + + + + + + cs-CZ + + + + + + de-DE + Abfrage Mitnehmerfinger in Position (ILS-CV M4104) + + + + + en-US + + + + + + + + + + Int + cInBG3120 + 57 + + + + + + + cs-CZ + + + + + + de-DE + in Separator (ILS-CV M4203) + + + + + en-US + + + + + + + + + + Int + cInBG3291 + 106 + + + + + + + cs-CZ + + + + + + de-DE + Abfrage Mitnehmerfinger in Position (ILS-CV M0100) + + + + + en-US + + + + + + + + + + Int + cInBG3001 + 16 + + + + + + + cs-CZ + + + + + + de-DE + Stausensor 1 (ILS-CV M4104) + + + + + en-US + + + + + + + + + + Int + cInBG0343 + 10 + + + + + + + cs-CZ + + + + + + de-DE + in Separator + + + + + en-US + + + + + + + + + + Int + cInBG3322 + 125 + + + + + + + cs-CZ + + + + + + de-DE + in Separator 03 (Block 1.2) + + + + + en-US + + + + + + + + + + Int + cInBG3295 + 110 + + + + + + + cs-CZ + + + + + + de-DE + in Separator (ILS-CV) + + + + + en-US + + + + + + + + + + Int + cInBG3121 + 58 + + + + + + + cs-CZ + + + + + + de-DE + MT in Position (ILS-CV M4203) + + + + + en-US + + + + + + + + + + Int + cInBG3022 + 32 + + + + + + + cs-CZ + + + + + + de-DE + Stausensor 1 (ILS-CV M4501) + + + + + en-US + + + + + + + + + + Int + cInBG3063 + 41 + + + + + + + cs-CZ + + + + + + de-DE + in Separator 1 (ILS-CV M4502) + + + + + en-US + + + + + + + + + + Int + cInBG3123 + 60 + + + + + + + cs-CZ + + + + + + de-DE + Sensor (ILS-CV M4203) + + + + + en-US + + + + + + + + + + Int + cInBG3294 + 109 + + + + + + + cs-CZ + + + + + + de-DE + Stausensor (ILS-CV M0110) + + + + + en-US + + + + + + + + + + Int + cInBG3276 + 97 + + + + + + + cs-CZ + + + + + + de-DE + Stausensor (ILS-CV M0106) + + + + + en-US + + + + + + + + + + Int + cInBG3264 + 89 + + + + + + + cs-CZ + + + + + + de-DE + Stausensor Str.05 (Block 1.1) + + + + + en-US + + + + + + + + + + Int + cInBG3260 + 85 + + + + + + + cs-CZ + + + + + + de-DE + Stausensor Str.01 (Block 1.1) + + + + + en-US + + + + + + + + + + Int + cInBG3330 + 129 + + + + + + + cs-CZ + + + + + + de-DE + Stausensor 3 (ILS-KR-M0102) + + + + + en-US + + + + + + + + + + Int + cInBG3016 + 28 + + + + + + + cs-CZ + + + + + + de-DE + Stausensor (ILS-KR-M4204) + + + + + en-US + + + + + + + + + + Int + cInBG4740 + 147 + + + + + + + cs-CZ + + + + + + de-DE + Neigungssensor Ladeschleife 1 + + + + + en-US + + + + + + + + + + Int + cInBG0286 + 5 + + + + + + + cs-CZ + + + + + + de-DE + Stausensor Staubereich voll Einfahrt Kreisel + + + + + en-US + + + + + + + + + + Int + cInBG3026 + 36 + + + + + + + cs-CZ + + + + + + de-DE + MT in Position (ILS-CV M4104) + + + + + en-US + + + + + + + + + + Int + cInBG3263 + 88 + + + + + + + cs-CZ + + + + + + de-DE + Stausensor Str.04 (Block 1.1) + + + + + en-US + + + + + + + + + + Int + cInBG3025 + 35 + + + + + + + cs-CZ + + + + + + de-DE + in Separator (ILS-CV M4104) + + + + + en-US + + + + + + + + + + Int + cInBG3003 + 18 + + + + + + + cs-CZ + + + + + + de-DE + in Separator 1 (ILS-CV M4103) + + + + + en-US + + + + + + + + + + Int + cInBG0282 + 1 + + + + + + + cs-CZ + + + + + + de-DE + in Separator Beladeposition 1, LS 1 + + + + + en-US + + + + + + + + + + Int + cInBG3304 + 114 + + + + + + + cs-CZ + + + + + + de-DE + Stausensor 2 (ILS-KR-M0102) + + + + + en-US + + + + + + + + + + Int + cInBG3006 + 21 + + + + + + + cs-CZ + + + + + + de-DE + Sensor Förderer voll (ILS-CV M4103) + + + + + en-US + + + + + + + + + + Int + cInBG3073 + 49 + + + + + + + cs-CZ + + + + + + de-DE + in Separator 2 (ILS-CV M4403) + + + + + en-US + + + + + + + + + + Int + cInBG3065 + 43 + + + + + + + cs-CZ + + + + + + de-DE + Abfrage Mitnehmerfinger in Position (ILS-CV M4502) + + + + + en-US + + + + + + + + + + Int + cInBG3130 + 65 + + + + + + + cs-CZ + + + + + + de-DE + in Separator 2 (ILS-CV M4302) + + + + + en-US + + + + + + + + + + Int + cInBG3080 + 54 + + + + + + + cs-CZ + + + + + + de-DE + in Separator 2 (ILS-CV M4503) + + + + + en-US + + + + + + + + + + Int + cInBG3296 + 111 + + + + + + + cs-CZ + + + + + + de-DE + Stausensor (ILS-CV) + + + + + en-US + + + + + + + + + + Int + cInBG3300 + 113 + + + + + + + cs-CZ + + + + + + de-DE + in Separator 1 (ILS-KR-M0102) + + + + + en-US + + + + + + + + + + Int + cInBG0285 + 4 + + + + + + + cs-CZ + + + + + + de-DE + Stausensor Staubereich nach Beladung voll + + + + + en-US + + + + + + + + + + Int + cInBG3293 + 108 + + + + + + + cs-CZ + + + + + + de-DE + Sensor Förderer voll (ILS-CV M0110) + + + + + en-US + + + + + + + + + + Int + cInBG0342 + 9 + + + + + + + cs-CZ + + + + + + de-DE + in Separator Beladeposition 1, LS 2 + + + + + en-US + + + + + + + + + + Int + cInBG3281 + 99 + + + + + + + cs-CZ + + + + + + de-DE + Stausensor(ILS-BX1104) + + + + + en-US + + + + + + + + + + Int + cInBG3306 + 116 + + + + + + + cs-CZ + + + + + + de-DE + in Separator 2 (ILS-KR-M0102) + + + + + en-US + + + + + + + + + + Int + cInBG3290 + 105 + + + + + + + cs-CZ + + + + + + de-DE + in Separator 2 (ILS-CV M0100) + + + + + en-US + + + + + + + + + + Int + cInBG3011 + 23 + + + + + + + cs-CZ + + + + + + de-DE + MT in Position (ILS-CV M4501)) + + + + + en-US + + + + + + + + + + Int + cInBG3127 + 64 + + + + + + + cs-CZ + + + + + + de-DE + Sensor Förderer voll (ILS-CV M4302) + + + + + en-US + + + + + + + + + + Int + cInBG3002 + 17 + + + + + + + cs-CZ + + + + + + de-DE + Abfrage Mitnehmerfinger in Position (ILS-CV M4103) + + + + + en-US + + + + + + + + + + Int + cInBG3280 + 98 + + + + + + + cs-CZ + + + + + + de-DE + in Separator (ILS-BX1104) + + + + + en-US + + + + + + + + + + Int + cInBG3282 + 100 + + + + + + + cs-CZ + + + + + + de-DE + MT in Position (ILS-CV M0107) + + + + + en-US + + + + + + + + + + Int + cInBG3125 + 62 + + + + + + + cs-CZ + + + + + + de-DE + in Separator (ILS-CV M4302) + + + + + en-US + + + + + + + + + + Int + cInBG3242 + 75 + + + + + + + cs-CZ + + + + + + de-DE + in Separator 1 (ILS-CV M0100) + + + + + en-US + + + + + + + + + + Int + cInBG3324 + 127 + + + + + + + cs-CZ + + + + + + de-DE + in Separator 05 (Block 1.2) + + + + + en-US + + + + + + + + + + Int + cInBG3284 + 102 + + + + + + + cs-CZ + + + + + + de-DE + Abfrage Mitnehmerfinger in Position (ILS-CV M0107) + + + + + en-US + + + + + + + + + + Int + cInBG3253 + 82 + + + + + + + cs-CZ + + + + + + de-DE + Stausensor Str.04 (Block 1.2) + + + + + en-US + + + + + + + + + + Int + cInBG3000 + 15 + + + + + + + cs-CZ + + + + + + de-DE + Sensor Förderer voll (ILS-CV M4104) + + + + + en-US + + + + + + + + + + Int + cInBG3072 + 48 + + + + + + + cs-CZ + + + + + + de-DE + Stausensor 2 (ILS-CV M4403) + + + + + en-US + + + + + + + + + + Int + cInBG3010 + 22 + + + + + + + cs-CZ + + + + + + de-DE + in Separator 1 (ILS-KR-M4204) + + + + + en-US + + + + + + + + + + Int + cInBG3285 + 103 + + + + + + + cs-CZ + + + + + + de-DE + Abfrage Mitnehmerfinger in Position (ILS-CV M0110) + + + + + en-US + + + + + + + + + + Int + cInBG3021 + 31 + + + + + + + cs-CZ + + + + + + de-DE + Abfrage Mitnehmerfinger in Position (ILS-CV M4501) + + + + + en-US + + + + + + + + + + Int + cInBG3292 + 107 + + + + + + + cs-CZ + + + + + + de-DE + MT in Position (ILS-CV M0100) + + + + + en-US + + + + + + + + + + Int + cInBG3315 + 122 + + + + + + + cs-CZ + + + + + + de-DE + in Separator (Block 1.1) + + + + + en-US + + + + + + + + + + Int + cInBG3344 + 139 + + + + + + + cs-CZ + + + + + + de-DE + LS Endlage eingefahren + + + + + en-US + + + + + + + + + + Int + cInBG3325 + 128 + + + + + + + cs-CZ + + + + + + de-DE + in Separator (Block 1.2.) + + + + + en-US + + + + + + + + + + Int + cInBG3313 + 120 + + + + + + + cs-CZ + + + + + + de-DE + in Separator 04 (Block 1.1.) + + + + + en-US + + + + + + + + + + Int + cInBG3273 + 94 + + + + + + + cs-CZ + + + + + + de-DE + Abfrage Mitnehmerfinger in Position (ILS-CV M0106) + + + + + en-US + + + + + + + + + + Int + cInBG3071 + 47 + + + + + + + cs-CZ + + + + + + de-DE + Stausensor 1 (ILS-CV M4403) + + + + + en-US + + + + + + + + + + Int + cInBG3275 + 96 + + + + + + + cs-CZ + + + + + + de-DE + Sensor Förderer voll (ILS-CV M0106) + + + + + en-US + + + + + + + + + + Int + cInBG3074 + 50 + + + + + + + cs-CZ + + + + + + de-DE + MT in Position (ILS-CV M4403) + + + + + en-US + + + + + + + + + + Int + cInBG3270 + 91 + + + + + + + cs-CZ + + + + + + de-DE + Abfrage Mitnehmerfinger in Position (ILS-CV-M0103) + + + + + en-US + + + + + + + + + + Int + cInBG3136 + 71 + + + + + + + cs-CZ + + + + + + de-DE + MT in Position (ILS-CV M4402) + + + + + en-US + + + + + + + + + + Int + cInBG3305 + 115 + + + + + + + cs-CZ + + + + + + de-DE + Stausensor (ILS-CV-M0103) + + + + + en-US + + + + + + + + + + Int + cInBG0280 + 0 + + + + + + + cs-CZ + + + + + + de-DE + in Separator LS 1 + + + + + en-US + + + + + + + + + + Int + cInBG3070 + 46 + + + + + + + cs-CZ + + + + + + de-DE + Sensor (ILS-CV M4403) + + + + + en-US + + + + + + + + + + Int + cInBG3060 + 38 + + + + + + + cs-CZ + + + + + + de-DE + in Separator 1 (ILS-CV M4503) + + + + + en-US + + + + + + + + + + Int + cInBG3297 + 112 + + + + + + + cs-CZ + + + + + + de-DE + Sensor MT in Scanposition (ILS-CV M0110) + + + + + en-US + + + + + + + + + + Int + cInBG3135 + 70 + + + + + + + cs-CZ + + + + + + de-DE + in Separator 2 (ILS-CV M4402) + + + + + en-US + + + + + + + + + + Int + cInBG3004 + 19 + + + + + + + cs-CZ + + + + + + de-DE + MT in Position (ILS-CV M4103) + + + + + en-US + + + + + + + + + + Int + cInBG3345 + 140 + + + + + + + cs-CZ + + + + + + de-DE + LS Endlage ausgefahren + + + + + en-US + + + + + + + + + + Int + cInBG3246 + 78 + + + + + + + cs-CZ + + + + + + de-DE + in Separator, Einfahrt MT-Buffer LS2 (KR-M0101) + + + + + en-US + + + + + + + + + + Int + cInBG3347 + 142 + + + + + + + cs-CZ + + + + + + de-DE + Rad dreht (KR-M0101) + + + + + en-US + + + + + + + + + + Int + cInBG3243 + 76 + + + + + + + cs-CZ + + + + + + de-DE + Stausensor 1 (KR-K0111) + + + + + en-US + + + + + + + + + + Int + cInBG0345 + 12 + + + + + + + cs-CZ + + + + + + de-DE + Stausensor Staubereich nach Beladung voll + + + + + en-US + + + + + + + + + + Int + cInBG3012 + 24 + + + + + + + cs-CZ + + + + + + de-DE + Stausensor 2 (ILS-KR-M4204) + + + + + en-US + + + + + + + + + + Int + cInBG3254 + 83 + + + + + + + cs-CZ + + + + + + de-DE + Stausensor Str.05 (Block 1.2) + + + + + en-US + + + + + + + + + + Int + cInBG3240 + 73 + + + + + + + cs-CZ + + + + + + de-DE + Sensor Förderer voll (ILS-CV M0100) + + + + + en-US + + + + + + + + + + Int + cInBG3251 + 80 + + + + + + + cs-CZ + + + + + + de-DE + Stausensor Str.02 (Block 1.2) + + + + + en-US + + + + + + + + + + Int + cInBG3134 + 69 + + + + + + + cs-CZ + + + + + + de-DE + Stausensor (ILS-CV M4402) + + + + + en-US + + + + + + + + + + Int + cInBG3332 + 131 + + + + + + + cs-CZ + + + + + + de-DE + in Separator 3 (ILS-KR-M0102) + + + + + en-US + + + + + + + + + + Int + cInBG3014 + 26 + + + + + + + cs-CZ + + + + + + de-DE + Stausensor (ILS-KR-M4204) + + + + + en-US + + + + + + + + + + Int + cInBG3334 + 132 + + + + + + + cs-CZ + + + + + + de-DE + Stausensor 4 (ILS-KR-M0102) + + + + + en-US + + + + + + + + + + Int + cInBG3132 + 67 + + + + + + + cs-CZ + + + + + + de-DE + Abfrage Mitnehmerfinger in Position (ILS-CV M4302) + + + + + en-US + + + + + + + + + + Int + cInBG3272 + 93 + + + + + + + cs-CZ + + + + + + de-DE + MT in Position (ILS-CV M0103) + + + + + en-US + + + + + + + + + + Int + cInBG3023 + 33 + + + + + + + cs-CZ + + + + + + de-DE + Sensor (ILS-CV M4501) + + + + + en-US + + + + + + + + + + Int + cInBG3337 + 134 + + + + + + + cs-CZ + + + + + + de-DE + in Separator 5 (ILS-KR-M0102) + + + + + en-US + + + + + + + + + + Int + cInBG3354 + 143 + + + + + + + cs-CZ + + + + + + de-DE + Längenabfrage Grenze kurz (ILS-CV) + + + + + en-US + + + + + + + + + + Int + cInBG5140 + 150 + + + + + + + cs-CZ + + + + + + de-DE + Bodenabstandssensor ( LS 2) + + + + + en-US + + + + + + + + + + Int + cInBG3265 + 90 + + + + + + + cs-CZ + + + + + + de-DE + Sensor MT in Scanposition (ILS-CV M0106) + + + + + en-US + + + + + + + + + + Int + cInBG3357 + 146 + + + + + + + cs-CZ + + + + + + de-DE + Verlassensensor Längenmessung (ILS-CV) + + + + + en-US + + + + + + + + + + Int + cInBG3355 + 144 + + + + + + + cs-CZ + + + + + + de-DE + Längenabfrage Grenze lang (ILS-CV) + + + + + en-US + + + + + + + + + + Int + cInBG3082 + 56 + + + + + + + cs-CZ + + + + + + de-DE + MT in Position (ILS-CV M4503) + + + + + en-US + + + + + + + + + + Int + cInBG3356 + 145 + + + + + + + cs-CZ + + + + + + de-DE + Längenabfrage Grenze zu lang (ILS-CV) + + + + + en-US + + + + + + + + + + Int + cInBG0346 + 13 + + + + + + + cs-CZ + + + + + + de-DE + Stausensor 2 (KR-M1102) + + + + + en-US + + + + + + + + + + Int + cInBG5060 + 149 + + + + + + + cs-CZ + + + + + + de-DE + Neigungssensor Ladeschleife 2 + + + + + en-US + + + + + + + + + + Int + cInBG3153 + 159 + + + + + + + cs-CZ + + + + + + de-DE + Stausensor (ILS-CV M4302_A) + + + + + en-US + + + + + + + + + + Int + cInBG3146 + 155 + + + + + + + cs-CZ + + + + + + de-DE + Sensor Förderer voll (ILS-CV M4203_B) + + + + + en-US + + + + + + + + + + Int + cInBG3147 + 156 + + + + + + + cs-CZ + + + + + + de-DE + Stausensor (ILS-CV M4203_B) + + + + + en-US + + + + + + + + + + Int + cInBG3142 + 152 + + + + + + + cs-CZ + + + + + + de-DE + Sensor Förderer voll (ILS-CV M4103_B) + + + + + en-US + + + + + + + + + + Int + cInBG3152 + 158 + + + + + + + cs-CZ + + + + + + de-DE + Sensor Förderer voll (ILS-CV M4302_A) + + + + + en-US + + + + + + + + + + Int + cInBG3140 + 151 + + + + + + + cs-CZ + + + + + + de-DE + Staumelder, Einfahrt (ILS-CV M4103_A) + + + + + en-US + + + + + + + + + + Int + cInBG3156 + 161 + + + + + + + cs-CZ + + + + + + de-DE + Sensor Förderer voll (ILS-CV M4402_A) + + + + + en-US + + + + + + + + + + Int + cInBG3143 + 153 + + + + + + + cs-CZ + + + + + + de-DE + Stausensor (ILS-CV M4103_B) + + + + + en-US + + + + + + + + + + Int + cInBG3144 + 154 + + + + + + + cs-CZ + + + + + + de-DE + Staumelder, Einfahrt (ILS-CV M4203_A) + + + + + en-US + + + + + + + + + + Int + cInBG3154 + 160 + + + + + + + cs-CZ + + + + + + de-DE + Staumelder, Einfahrt (ILS-CV M4402_A) + + + + + en-US + + + + + + + + + + Int + cInBG3157 + 162 + + + + + + + cs-CZ + + + + + + de-DE + Stausensor (ILS-CV M4402_A) + + + + + en-US + + + + + + + + + + Int + cInBG3150 + 157 + + + + + + + cs-CZ + + + + + + de-DE + Staumelder, Einfahrt (ILS-CV M4302_A) + + + + + en-US + + + + + + + + + + \ No newline at end of file diff --git a/=A01+UH01-KF00/PLC-Variablen/FortnaCommunication/Actions.xml b/=A01+UH01-KF00/PLC-Variablen/FortnaCommunication/Actions.xml new file mode 100644 index 0000000..ba58554 --- /dev/null +++ b/=A01+UH01-KF00/PLC-Variablen/FortnaCommunication/Actions.xml @@ -0,0 +1,73 @@ + + + + + + Actions + + + + + String + cSTRAIGHT + '-1' + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + String + cSTORAGE + '1' + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + \ No newline at end of file diff --git a/=A01+UH01-KF00/PLC-Variablen/FortnaCommunication/DecisionPoints.xml b/=A01+UH01-KF00/PLC-Variablen/FortnaCommunication/DecisionPoints.xml new file mode 100644 index 0000000..babfeb1 --- /dev/null +++ b/=A01+UH01-KF00/PLC-Variablen/FortnaCommunication/DecisionPoints.xml @@ -0,0 +1,135 @@ + + + + + + DecisionPoints + + + + + String + cDP_DOCK_02 + 'GOH.Dock.02' + + + + + + + cs-CZ + + + + + + de-DE + Ladeschleife 2 + + + + + en-US + + + + + + + + + + String + cDP_REC_01 + 'GOH.Rec.01' + + + + + + + cs-CZ + + + + + + de-DE + Längenmessung bzw. Entscheidungspunkt nach der Längenmessung + + + + + en-US + + + + + + + + + + String + cDP_REC_02 + 'GOH.Rec.02' + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + String + cDP_DOCK_01 + 'GOH.Dock.01' + + + + + + + cs-CZ + + + + + + de-DE + Ladeschleife 1 + + + + + en-US + + + + + + + + + + \ No newline at end of file diff --git a/=A01+UH01-KF00/PLC-Variablen/FortnaCommunication/PLCIDs.xml b/=A01+UH01-KF00/PLC-Variablen/FortnaCommunication/PLCIDs.xml new file mode 100644 index 0000000..a3baa47 --- /dev/null +++ b/=A01+UH01-KF00/PLC-Variablen/FortnaCommunication/PLCIDs.xml @@ -0,0 +1,42 @@ + + + + + + PLCIDs + + + + + String + cPLCID + 'GOHPLC01' + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + \ No newline at end of file diff --git a/=A01+UH01-KF00/PLC-Variablen/FortnaCommunication/ReasonCodes.xml b/=A01+UH01-KF00/PLC-Variablen/FortnaCommunication/ReasonCodes.xml new file mode 100644 index 0000000..4add37c --- /dev/null +++ b/=A01+UH01-KF00/PLC-Variablen/FortnaCommunication/ReasonCodes.xml @@ -0,0 +1,42 @@ + + + + + + ReasonCodes + + + + + Int + cSUCCESS + 1 + + + + + + + cs-CZ + + + + + + de-DE + Siehe Fortna Spezifikation + + + + + en-US + + + + + + + + + + \ No newline at end of file diff --git a/=A01+UH01-KF00/PLC-Variablen/ILSLib/C_ILS_STRO_Sep.xml b/=A01+UH01-KF00/PLC-Variablen/ILSLib/C_ILS_STRO_Sep.xml new file mode 100644 index 0000000..0e0c8cf --- /dev/null +++ b/=A01+UH01-KF00/PLC-Variablen/ILSLib/C_ILS_STRO_Sep.xml @@ -0,0 +1,569 @@ + + + + + + C_ILS_STRO_Sep + + + + + USInt + SepState_OffEStop(1) + 5 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + USInt + SepState_WaitForLeaveSecond(1) + 60 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + USInt + SepState_WaitForLeaveFirst(1) + 30 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + USInt + SepState_CloseFirst(1) + 35 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + USInt + SepState_OpenSecond(1) + 28 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + USInt + SepState_Init(1) + 10 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + USInt + SepState_WaitForSecondLeg(1) + 27 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + USInt + SepState_WaitForConfirmSen(1) + 37 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + USInt + SepState_WaitForReqSecond(1) + 45 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + USInt + SepState_Finish(1) + 65 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + USInt + cStateText(1) + 30 + + + + + + + cs-CZ + + + + + + de-DE + Länge des Strings um State-Info anzuzeigen + + + + + en-US + + + + + + + + + + USInt + SepState_OpenSecondCorrection(1) + 55 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + USInt + SepState_OpenAndRelease(1) + 30 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + USInt + SepState_OffMainState(1) + 0 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + USInt + SepState_WaitForCarousel(1) + 21 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + USInt + SepState_Open + 26 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + USInt + SepState_WaitForReq + 20 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + USInt + SepState_WaitForBt + 15 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + \ No newline at end of file diff --git a/=A01+UH01-KF00/PLC-Variablen/INBOUND_Motors.xml b/=A01+UH01-KF00/PLC-Variablen/INBOUND_Motors.xml new file mode 100644 index 0000000..be756c4 --- /dev/null +++ b/=A01+UH01-KF00/PLC-Variablen/INBOUND_Motors.xml @@ -0,0 +1,352 @@ + + + + + + INBOUND_Motors + + + + + Int + cCarouselExit + 1 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + cSortConv + 4 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + cNoCarouselsInbound + 4 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + cCarouselBoom1 + 2 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + cVarioBoom1Exit + 3 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + cVarioBoom2Entr + 4 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + cVarioBoom2Exit + 5 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + cCarouselBoom2 + 3 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + cVarioInboundEntr + 1 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + cNoVarioConvInbound + 5 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + cVarioBoom1Entr + 2 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + \ No newline at end of file diff --git a/=A01+UH01-KF00/PLC-Variablen/IO Device Variablen/RECEIVE/IO_Device_FROM_UH02.xml b/=A01+UH01-KF00/PLC-Variablen/IO Device Variablen/RECEIVE/IO_Device_FROM_UH02.xml new file mode 100644 index 0000000..2046e62 --- /dev/null +++ b/=A01+UH01-KF00/PLC-Variablen/IO Device Variablen/RECEIVE/IO_Device_FROM_UH02.xml @@ -0,0 +1,42 @@ + + + + + + IO_Device_FROM_UH02 + + + + + "IO_Device_UH02_Data" + %I30100.0 + IO_Device_UH01_FROM_UH02 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + \ No newline at end of file diff --git a/=A01+UH01-KF00/PLC-Variablen/IO Device Variablen/RECEIVE/IO_Device_FROM_UH03.xml b/=A01+UH01-KF00/PLC-Variablen/IO Device Variablen/RECEIVE/IO_Device_FROM_UH03.xml new file mode 100644 index 0000000..cae4621 --- /dev/null +++ b/=A01+UH01-KF00/PLC-Variablen/IO Device Variablen/RECEIVE/IO_Device_FROM_UH03.xml @@ -0,0 +1,42 @@ + + + + + + IO_Device_FROM_UH03 + + + + + "IO_Device_UH03_Data" + %I30200.0 + IO_Device_UH01_FROM_UH03 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + \ No newline at end of file diff --git a/=A01+UH01-KF00/PLC-Variablen/IO Device Variablen/RECEIVE/IO_Device_FROM_UH04.xml b/=A01+UH01-KF00/PLC-Variablen/IO Device Variablen/RECEIVE/IO_Device_FROM_UH04.xml new file mode 100644 index 0000000..58c6244 --- /dev/null +++ b/=A01+UH01-KF00/PLC-Variablen/IO Device Variablen/RECEIVE/IO_Device_FROM_UH04.xml @@ -0,0 +1,42 @@ + + + + + + IO_Device_FROM_UH04 + + + + + "IO_Device_UH04_Data" + %I30300.0 + IO_Device_UH01_FROM_UH04 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + \ No newline at end of file diff --git a/=A01+UH01-KF00/PLC-Variablen/IO Device Variablen/RECEIVE/IO_Device_FROM_UH05.xml b/=A01+UH01-KF00/PLC-Variablen/IO Device Variablen/RECEIVE/IO_Device_FROM_UH05.xml new file mode 100644 index 0000000..4c77a9a --- /dev/null +++ b/=A01+UH01-KF00/PLC-Variablen/IO Device Variablen/RECEIVE/IO_Device_FROM_UH05.xml @@ -0,0 +1,42 @@ + + + + + + IO_Device_FROM_UH05 + + + + + "IO_Device_UH05_Data" + %I30400.0 + IO_Device_UH01_FROM_UH05 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + \ No newline at end of file diff --git a/=A01+UH01-KF00/PLC-Variablen/IO Device Variablen/SEND/IO_Device_TO_UH02.xml b/=A01+UH01-KF00/PLC-Variablen/IO Device Variablen/SEND/IO_Device_TO_UH02.xml new file mode 100644 index 0000000..a87c2cd --- /dev/null +++ b/=A01+UH01-KF00/PLC-Variablen/IO Device Variablen/SEND/IO_Device_TO_UH02.xml @@ -0,0 +1,166 @@ + + + + + + IO_Device_TO_UH02 + + + + + "IO_Device_UH01_Data" + %Q30500.0 + IO_Device_UH01_TO_UH02 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + "IO_Device_UH02_Data" + %Q30600.0 + IO_Device_UH02_TO_UH02 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + "IO_Device_UH03_Data" + %Q30700.0 + IO_Device_UH03_TO_UH02 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + "IO_Device_UH04_Data" + %Q30800.0 + IO_Device_UH04_TO_UH02 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + "IO_Device_UH05_Data" + %Q30900.0 + IO_Device_UH05_TO_UH02 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + \ No newline at end of file diff --git a/=A01+UH01-KF00/PLC-Variablen/IO Device Variablen/SEND/IO_Device_TO_UH03.xml b/=A01+UH01-KF00/PLC-Variablen/IO Device Variablen/SEND/IO_Device_TO_UH03.xml new file mode 100644 index 0000000..049423a --- /dev/null +++ b/=A01+UH01-KF00/PLC-Variablen/IO Device Variablen/SEND/IO_Device_TO_UH03.xml @@ -0,0 +1,166 @@ + + + + + + IO_Device_TO_UH03 + + + + + "IO_Device_UH01_Data" + %Q31000.0 + IO_Device_UH01_TO_UH03 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + "IO_Device_UH02_Data" + %Q31100.0 + IO_Device_UH02_TO_UH03 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + "IO_Device_UH03_Data" + %Q31200.0 + IO_Device_UH03_TO_UH03 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + "IO_Device_UH04_Data" + %Q31300.0 + IO_Device_UH04_TO_UH03 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + "IO_Device_UH05_Data" + %Q31400.0 + IO_Device_UH05_TO_UH03 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + \ No newline at end of file diff --git a/=A01+UH01-KF00/PLC-Variablen/IO Device Variablen/SEND/IO_Device_TO_UH04.xml b/=A01+UH01-KF00/PLC-Variablen/IO Device Variablen/SEND/IO_Device_TO_UH04.xml new file mode 100644 index 0000000..a6523f6 --- /dev/null +++ b/=A01+UH01-KF00/PLC-Variablen/IO Device Variablen/SEND/IO_Device_TO_UH04.xml @@ -0,0 +1,166 @@ + + + + + + IO_Device_TO_UH04 + + + + + "IO_Device_UH01_Data" + %Q31500.0 + IO_Device_UH01_TO_UH04 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + "IO_Device_UH02_Data" + %Q31600.0 + IO_Device_UH02_TO_UH04 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + "IO_Device_UH03_Data" + %Q31700.0 + IO_Device_UH03_TO_UH04 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + "IO_Device_UH04_Data" + %Q31800.0 + IO_Device_UH04_TO_UH04 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + "IO_Device_UH05_Data" + %Q31900.0 + IO_Device_UH05_TO_UH04 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + \ No newline at end of file diff --git a/=A01+UH01-KF00/PLC-Variablen/IO Device Variablen/SEND/IO_Device_TO_UH05.xml b/=A01+UH01-KF00/PLC-Variablen/IO Device Variablen/SEND/IO_Device_TO_UH05.xml new file mode 100644 index 0000000..85f8c88 --- /dev/null +++ b/=A01+UH01-KF00/PLC-Variablen/IO Device Variablen/SEND/IO_Device_TO_UH05.xml @@ -0,0 +1,166 @@ + + + + + + IO_Device_TO_UH05 + + + + + "IO_Device_UH01_Data" + %Q32000.0 + IO_Device_UH01_TO_UH05 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + "IO_Device_UH02_Data" + %Q32100.0 + IO_Device_UH02_TO_UH05 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + "IO_Device_UH03_Data" + %Q32200.0 + IO_Device_UH03_TO_UH05 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + "IO_Device_UH04_Data" + %Q32300.0 + IO_Device_UH04_TO_UH05 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + "IO_Device_UH05_Data" + %Q32400.0 + IO_Device_UH05_TO_UH05 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + \ No newline at end of file diff --git a/=A01+UH01-KF00/PLC-Variablen/IO_Link_Sensor.xml b/=A01+UH01-KF00/PLC-Variablen/IO_Link_Sensor.xml new file mode 100644 index 0000000..dde08a2 --- /dev/null +++ b/=A01+UH01-KF00/PLC-Variablen/IO_Link_Sensor.xml @@ -0,0 +1,135 @@ + + + + + + IO_Link_Sensor + + + + + Word + %IW476 + wTiltSensorLS1 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Word + %IW480 + wDistanceSensorLS1 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Word + %IW508 + wTiltSensorLS2 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Word + %IW512 + wDistanceSensorLS2 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + \ No newline at end of file diff --git a/=A01+UH01-KF00/PLC-Variablen/Konstanten Schrittketten/1Sep.xml b/=A01+UH01-KF00/PLC-Variablen/Konstanten Schrittketten/1Sep.xml new file mode 100644 index 0000000..3be61aa --- /dev/null +++ b/=A01+UH01-KF00/PLC-Variablen/Konstanten Schrittketten/1Sep.xml @@ -0,0 +1,1127 @@ + + + + + + 1Sep + + + + + Bool + %M3.2 + Tag_2004 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %M3.0 + Tag_2002 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %M3.1 + Tag_2003 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %M4.0 + Tag_4001 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %M3.5 + Tag_3002 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %M4.1 + Tag_4002 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %M3.6 + Tag_3003 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %M3.3 + Tag_3000 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %M4.2 + Tag_4003 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %M2.0 + Tag_377 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %M2.4 + Tag_2000 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %M2.7 + Tag_2001 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %M2.5 + Tag_20001 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %M3.7 + Tag_4000 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %M3.4 + Tag_3001 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %M2.2 + Tag_379 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %M2.6 + Tag_20002 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %M2.1 + Tag_378 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %M2.3 + Tag_380 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + 1SeStep_CheckJam + 2100 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + 1SeStep_CheckCorrectBt + 2000 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + 1SeStep_ReqFinished + 3000 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + 1SeStep_WaitForConfirm + 2600 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + 1SeStep_CheckAgain + 2400 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + 1SeStep_RemainBtLeave + 2950 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + 1SeStep_WaitForMfr + 1000 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + 1SeStep_ErrorSep + 11000 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + 1SeStep_PrepareNewReq + 1900 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + 1SeStep_LeaveSep + 2500 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + 1SeStep_Undefined + 100 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + 1SeStep_Off + 0 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + 1SeStep_CheckMotor + 2150 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + 1SeStep_ErrorReq + 13000 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + 1SeStep_CheckReqFinished + 2900 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + 1SeStep_CheckSep + 2200 + + + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + 1SeStep_ErrorMisc + 14000 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + \ No newline at end of file diff --git a/=A01+UH01-KF00/PLC-Variablen/Konstanten Schrittketten/1Sep1Switch.xml b/=A01+UH01-KF00/PLC-Variablen/Konstanten Schrittketten/1Sep1Switch.xml new file mode 100644 index 0000000..6b0c21e --- /dev/null +++ b/=A01+UH01-KF00/PLC-Variablen/Konstanten Schrittketten/1Sep1Switch.xml @@ -0,0 +1,631 @@ + + + + + + 1Sep1Switch + + + + + Int + 1Se1SwStep_FirstBtTrans + 2550 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + 1Se1SwStep_LeaveUnconfirmed + 2500 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + 1Se1SwStep_ErrorSwi + 12000 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + 1Se1SwStep_ErrorSep + 11000 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + 1Se1SwStep_CheckReqFinished + 2900 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + 1Se1SwStep_LeaveConfirmed + 2600 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + 1Se1SwStep_Undefined + 100 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + 1Se1SwStep_CheckSep + 2200 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + 1Se1SwStep_Off + 0 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + 1Se1SwStep_CheckAgain + 2400 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + 1Se1SwStep_ErrorMisc + 14000 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + 1Se1SwStep_ErrorBtInSwi + 15000 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + 1Se1SwStep_CheckMotor + 2150 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + 1Se1SwStep_CheckSwi + 2300 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + 1Se1SwStep_CheckCorrectBt + 2000 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + 1Se1SwStep_WaitForMfr + 1000 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + 1Se1SwStep_CheckJam + 2100 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + 1Se1SwStep_RemainBtLeave + 2950 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + 1Se1SwStep_PrepareNewReq + 1900 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + 1Se1SwStep_ReqFinished + 3000 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + \ No newline at end of file diff --git a/=A01+UH01-KF00/PLC-Variablen/Konstanten Schrittketten/2Sep1Switch.xml b/=A01+UH01-KF00/PLC-Variablen/Konstanten Schrittketten/2Sep1Switch.xml new file mode 100644 index 0000000..78ce39b --- /dev/null +++ b/=A01+UH01-KF00/PLC-Variablen/Konstanten Schrittketten/2Sep1Switch.xml @@ -0,0 +1,631 @@ + + + + + + 2Sep1Switch + + + + + Int + 2Se1SwStep_PrepareNewReq + 1900 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + 2Se1SwStep_LeaveUnconfirmed + 2500 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + 2Se1SwStep_CheckJam + 2100 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + 2Se1SwStep_CheckAgain + 2400 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + 2Se1SwStep_CheckCorrectBt + 2000 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + 2Se1SwStep_CheckReqFinished + 2900 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + 2Se1SwStep_WaitForMfr + 1000 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + 2Se1SwStep_Undefined + 100 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + 2Se1SwStep_ReqFinished + 3000 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + 2Se1SwStep_ErrorSwi + 12000 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + 2Se1SwStep_CheckSep + 2200 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + 2Se1SwStep_Off + 0 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + 2Se1SwStep_ErrorSep + 11000 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + 2Se1SwStep_CheckMotor + 2150 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + 2Se1SwStep_ErrorMisc + 14000 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + 2Se1SwStep_LeaveConfirmed + 2600 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + 2Se1SwStep_FirstBtTrans + 2550 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + 2Se1SwStep_CheckSwi + 2300 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + 2Se1SwStep_RemainBtLeave + 2950 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + 2Se1SwStep_ErrorBtInSwi + 15000 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + \ No newline at end of file diff --git a/=A01+UH01-KF00/PLC-Variablen/Konstanten Schrittketten/ConveyorVario.xml b/=A01+UH01-KF00/PLC-Variablen/Konstanten Schrittketten/ConveyorVario.xml new file mode 100644 index 0000000..997745a --- /dev/null +++ b/=A01+UH01-KF00/PLC-Variablen/Konstanten Schrittketten/ConveyorVario.xml @@ -0,0 +1,507 @@ + + + + + + ConveyorVario + + + + + Int + VarioStep_Off + 0 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + VarioStep_Undefined + 100 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + VarioStep_CheckFingerRdy + 2100 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + VarioStep_CheckJam + 2100 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + VarioStep_CheckVario + 2550 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + VarioStep_VarioMove + 2575 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + VarioStep_LeaveSep + 2500 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + VarioStep_CheckCorrectBt + 2000 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + VarioStep_CheckMotor + 2150 + + + + + + + cs-CZ + + + + + + de-DE + NIU + + + + + en-US + + + + + + + + + + Int + VarioStep_CheckReqFinished + 2900 + + + + + + + cs-CZ + + + + + + de-DE + NIU + + + + + en-US + + + + + + + + + + Int + VarioStep_ReqFinished + 3000 + + + + + + + cs-CZ + + + + + + de-DE + NIU + + + + + en-US + + + + + + + + + + Int + VarioStep_CheckSep + 2200 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + VarioStep_PrepareNewReq + 1900 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + VarioStep_Emptying + 1500 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + VarioStep_WaitForConfirm + 2600 + + + + + + + cs-CZ + + + + + + de-DE + NIU + + + + + en-US + + + + + + + + + + Int + VarioStep_WaitForMfr + 1000 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + \ No newline at end of file diff --git a/=A01+UH01-KF00/PLC-Variablen/Konstanten Schrittketten/MainTRO ReasonForStop.xml b/=A01+UH01-KF00/PLC-Variablen/Konstanten Schrittketten/MainTRO ReasonForStop.xml new file mode 100644 index 0000000..8ecfbbd --- /dev/null +++ b/=A01+UH01-KF00/PLC-Variablen/Konstanten Schrittketten/MainTRO ReasonForStop.xml @@ -0,0 +1,507 @@ + + + + + + MainTRO ReasonForStop + + + + + USInt + Rsn_MfrPausedTro + 55 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + USInt + Rsn_SubError + 10 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + USInt + Rsn_CarouselError + 60 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + USInt + Rsn_LbtmNotRdy + 75 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + USInt + Rsn_NullBt + 25 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + USInt + Rsn_InitBtLost + 35 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + USInt + Rsn_Nothing + 0 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + USInt + Rsn_MfrCancel + 45 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + USInt + Rsn_LongSignalDetected + 65 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + USInt + Rsn_LbtmError + 70 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + USInt + Rsn_WrongDirection + 30 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + USInt + Rsn_AllBtOut + 5 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + USInt + Rsn_GeneralError + 40 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + USInt + Rsn_JamNextError + 20 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + USInt + Rsn_BtEmpty + 15 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + USInt + Rsn_MfrMistake + 50 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + \ No newline at end of file diff --git a/=A01+UH01-KF00/PLC-Variablen/Konstanten TRO_Devices/MainTros.xml b/=A01+UH01-KF00/PLC-Variablen/Konstanten TRO_Devices/MainTros.xml new file mode 100644 index 0000000..9c44edc --- /dev/null +++ b/=A01+UH01-KF00/PLC-Variablen/Konstanten TRO_Devices/MainTros.xml @@ -0,0 +1,1189 @@ + + + + + + MainTros + + + + + UInt + cMainTro100 + 0 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + UInt + cMainTro101 + 1 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + UInt + cMainTro104 + 8 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + UInt + cMainTro111 + 15 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + UInt + cMainTro114 + 18 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + UInt + cMainTro109 + 13 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + UInt + cMainTro113 + 17 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + UInt + cMainTro115 + 19 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + UInt + cMainTro101_OUT + 3 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + UInt + cMainTro105 + 9 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + UInt + cMainTro103 + 7 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + UInt + cMainTro106 + 10 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + UInt + cMainTro112 + 16 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + UInt + cMainTro110 + 14 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + UInt + cMainTro116 + 20 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + UInt + cMainTro102 + 4 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + UInt + cMainTro108 + 12 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + UInt + cMainTro102_OUT + 6 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + UInt + cMainTro107 + 11 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + UInt + cMainTro102_IN + 5 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + UInt + cMainTro101_IN + 2 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + cNoMainTros + 36 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + UInt + cMainTro117 + 21 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + UInt + cMainTro122 + 24 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + UInt + cMainTro127 + 29 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + UInt + cMainTro125 + 27 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + UInt + cMainTro121 + 23 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + UInt + cMainTro130 + 32 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + UInt + cMainTro131 + 33 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + UInt + cMainTro134 + 36 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + UInt + cMainTro126 + 28 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + UInt + cMainTro120 + 22 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + UInt + cMainTro124 + 26 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + UInt + cMainTro132 + 34 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + UInt + cMainTro129 + 31 + + + + + + + + de-DE + + + + + + en-US + + + + + + + + + + UInt + cMainTro133 + 35 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + UInt + cMainTro123 + 25 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + UInt + cMainTro128 + 30 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + \ No newline at end of file diff --git a/=A01+UH01-KF00/PLC-Variablen/Konstanten TRO_Devices/Separatoren.xml b/=A01+UH01-KF00/PLC-Variablen/Konstanten TRO_Devices/Separatoren.xml new file mode 100644 index 0000000..f98df78 --- /dev/null +++ b/=A01+UH01-KF00/PLC-Variablen/Konstanten TRO_Devices/Separatoren.xml @@ -0,0 +1,972 @@ + + + + + + Separatoren + + + + + UInt + cSep112.1 + 10 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + UInt + cSep107.1 + 5 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + UInt + cSep116.1 + 14 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + UInt + cSep105.1 + 3 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + UInt + cSep103.1 + 1 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + UInt + cSep115.1 + 13 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + UInt + cSep108.1 + 6 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + UInt + cSep113.1 + 11 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + UInt + cSep100.1 + 0 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + UInt + cSep110.1 + 8 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + UInt + cSep106.1 + 4 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + UInt + cSep111.1 + 9 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + UInt + cSep104.1 + 2 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + UInt + cSep109.1 + 7 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + UInt + cSep114.1 + 12 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + UInt + cSep133.1 + 28 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + UInt + cSep128.1 + 23 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + UInt + cSep129.1 + 24 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + UInt + cSep121.1 + 17 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + UInt + cSep123.1 + 18 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + UInt + cSep126.1 + 21 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + UInt + cSep125.1 + 20 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + UInt + cSep132.1 + 27 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + UInt + cSep134.1 + 29 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + UInt + cSep124.1 + 19 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + UInt + cSep120.1 + 16 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + UInt + cNoSeperators + 29 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + UInt + cSep130.1 + 25 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + UInt + cSep127.1 + 22 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + UInt + cSep131.1 + 26 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + UInt + cSep117.1 + 15 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + \ No newline at end of file diff --git a/=A01+UH01-KF00/PLC-Variablen/Konstanten TRO_Devices/Switches.xml b/=A01+UH01-KF00/PLC-Variablen/Konstanten TRO_Devices/Switches.xml new file mode 100644 index 0000000..ca62de7 --- /dev/null +++ b/=A01+UH01-KF00/PLC-Variablen/Konstanten TRO_Devices/Switches.xml @@ -0,0 +1,166 @@ + + + + + + Switches + + + + + USInt + cSwi114.1 + 1 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + USInt + cSwi107.1 + 2 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + USInt + cSwi112.1 + 3 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + USInt + cNoSwitches + 4 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + USInt + cSwi124.1 + 4 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + \ No newline at end of file diff --git a/=A01+UH01-KF00/PLC-Variablen/Konstanten.xml b/=A01+UH01-KF00/PLC-Variablen/Konstanten.xml new file mode 100644 index 0000000..1a49b54 --- /dev/null +++ b/=A01+UH01-KF00/PLC-Variablen/Konstanten.xml @@ -0,0 +1,755 @@ + + + + + + Konstanten + + + + + Int + E_DeviceState.eAborted + 6500 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + E_DeviceState.eSuspending + 4000 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + E_DeviceState.eResetting + 10 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + E_DeviceState.eStopping + 5000 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + E_DeviceState.eCompleting + 2000 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + E_DeviceState.eComplete + 2500 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + E_DeviceState.eStopped + 0 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + E_MachineMode.eOff + 0 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + E_MachineMode.eSimOn + 31 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + E_MachineMode.eSimHigh + 33 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + E_MachineMode.eSimOff + 30 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + E_DeviceState.eSuspended + 4500 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + E_DeviceState.eExecute + 1000 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + E_DeviceState.eHeld + 3500 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + E_DeviceState.eUnsuspending + 4600 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + E_DeviceState.eHolding + 3000 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + E_DeviceState.eAborting + 6000 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + E_DeviceState.eIdle + 100 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + E_DeviceState.eClearing + 6600 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + E_MachineMode.eSimLow + 32 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + E_DeviceState.eUndefined + -10 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + E_MachineMode.eOn + 1 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + E_DeviceState.eUnholding + 3600 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + E_DeviceState.eStarting + 110 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + \ No newline at end of file diff --git a/=A01+UH01-KF00/PLC-Variablen/Konstanten/Destinations_Inbound.xml b/=A01+UH01-KF00/PLC-Variablen/Konstanten/Destinations_Inbound.xml new file mode 100644 index 0000000..91dfedd --- /dev/null +++ b/=A01+UH01-KF00/PLC-Variablen/Konstanten/Destinations_Inbound.xml @@ -0,0 +1,166 @@ + + + + + + Destinations_Inbound + + + + + Int + cDestInboundOut + 100 + + + + + + + cs-CZ + + + + + + de-DE + Ziel: Inbound verlassen + + + + + en-US + + + + + + + + + + Int + cDestClearing + -100 + + + + + + + cs-CZ + + + + + + de-DE + Ziel: Clearing Station / Error Station + + + + + en-US + + + + + + + + + + Int + cDestInboundLS + 10 + + + + + + + cs-CZ + + + + + + de-DE + Ziel: Ladeschleifen + + + + + en-US + + + + + + + + + + Int + cDestInboundLS_Extra + 20 + + + + + + + cs-CZ + + + + + + de-DE + Ziel: Gesondert von Buffer 1 zu LS2 fahren + + + + + en-US + + + + + + + + + + Int + cDestHighwayStorage + 1 + + + + + + + cs-CZ + + + + + + de-DE + Ziel: oben am Kreisel NICHT zum Inbund fahren sondern zum Storage + + + + + en-US + + + + + + + + + + \ No newline at end of file diff --git a/=A01+UH01-KF00/PLC-Variablen/Konstanten/Destinations_Lager.xml b/=A01+UH01-KF00/PLC-Variablen/Konstanten/Destinations_Lager.xml new file mode 100644 index 0000000..5de5ce9 --- /dev/null +++ b/=A01+UH01-KF00/PLC-Variablen/Konstanten/Destinations_Lager.xml @@ -0,0 +1,383 @@ + + + + + + Destinations_Lager + + + + + Int + cDest1104 + 1104 + + + + + + + cs-CZ + + + + + + de-DE + Ziel ist Section 11, Linie 4 + + + + + en-US + + + + + + + + + + Int + cDest1101 + 1101 + + + + + + + cs-CZ + + + + + + de-DE + Ziel ist Section 11, Linie 1 + + + + + en-US + + + + + + + + + + Int + cDest1100 + 1100 + + + + + + + cs-CZ + + + + + + de-DE + Ziel ist Section 11, allgemein + + + + + en-US + + + + + + + + + + Int + cDest1202 + 11202 + + + + + + + cs-CZ + + + + + + de-DE + Ziel ist Section 12, Linie 2 + + + + + en-US + + + + + + + + + + Int + cDest1203 + 11203 + + + + + + + cs-CZ + + + + + + de-DE + Ziel ist Section 12, Linie 3 + + + + + en-US + + + + + + + + + + Int + cDest1205 + 11205 + + + + + + + cs-CZ + + + + + + de-DE + Ziel ist Section 12, Linie 5 + + + + + en-US + + + + + + + + + + Int + cDest1204 + 11204 + + + + + + + cs-CZ + + + + + + de-DE + Ziel ist Section 12, Linie 4 + + + + + en-US + + + + + + + + + + Int + cDest1201 + 11201 + + + + + + + cs-CZ + + + + + + de-DE + Ziel ist Section 12, Linie 1 + + + + + en-US + + + + + + + + + + Int + cDest1103 + 1103 + + + + + + + cs-CZ + + + + + + de-DE + Ziel ist Section 11, Linie 3 + + + + + en-US + + + + + + + + + + Int + cDest1105 + 1105 + + + + + + + cs-CZ + + + + + + de-DE + Ziel ist Section 11, Linie 5 + + + + + en-US + + + + + + + + + + Int + cDest1102 + 1102 + + + + + + + cs-CZ + + + + + + de-DE + Ziel ist Section 11, Linie 2 + + + + + en-US + + + + + + + + + + Int + cDest1200 + 11200 + + + + + + + cs-CZ + + + + + + de-DE + Ziel ist Section 12, allgemein + + + + + en-US + + + + + + + + + + \ No newline at end of file diff --git a/=A01+UH01-KF00/PLC-Variablen/Konstanten/Destinations_Level2.xml b/=A01+UH01-KF00/PLC-Variablen/Konstanten/Destinations_Level2.xml new file mode 100644 index 0000000..8ced774 --- /dev/null +++ b/=A01+UH01-KF00/PLC-Variablen/Konstanten/Destinations_Level2.xml @@ -0,0 +1,166 @@ + + + + + + Destinations_Level2 + + + + + Int + cDestLvl1B1 + 100 + + + + + + + cs-CZ + + + + + + de-DE + Ziel ist Level 1 über Block 1 + + + + + en-US + + + + + + + + + + Int + cDestExit + 30000 + + + + + + + cs-CZ + + + + + + de-DE + Ziel ist Ausgang über Level 1 + + + + + en-US + + + + + + + + + + Int + cDestLvl1B3 + 300 + + + + + + + cs-CZ + + + + + + de-DE + Ziel ist Level 1 über Block 3 + + + + + en-US + + + + + + + + + + USInt + cDestNONE + 0 + + + + + + + cs-CZ + + + + + + de-DE + Kein Ziel + + + + + en-US + + + + + + + + + + Int + cDestLvl1B2 + 200 + + + + + + + cs-CZ + + + + + + de-DE + Ziel ist Level 1 über Block 2 + + + + + en-US + + + + + + + + + + \ No newline at end of file diff --git a/=A01+UH01-KF00/PLC-Variablen/Konstanten/Encoder.xml b/=A01+UH01-KF00/PLC-Variablen/Konstanten/Encoder.xml new file mode 100644 index 0000000..b589dc9 --- /dev/null +++ b/=A01+UH01-KF00/PLC-Variablen/Konstanten/Encoder.xml @@ -0,0 +1,42 @@ + + + + + + Encoder + + + + + DInt + cEncoderScaling + 100 + + + + + + + cs-CZ + + + + + + de-DE + Scalierung des Encoders pro Teilung + + + + + en-US + + + + + + + + + + \ No newline at end of file diff --git a/=A01+UH01-KF00/PLC-Variablen/Konstanten/Jamgrenzen.xml b/=A01+UH01-KF00/PLC-Variablen/Konstanten/Jamgrenzen.xml new file mode 100644 index 0000000..2f7db11 --- /dev/null +++ b/=A01+UH01-KF00/PLC-Variablen/Konstanten/Jamgrenzen.xml @@ -0,0 +1,1747 @@ + + + + + + Jamgrenzen + + + + + DInt + cJamGlobalLocations + 28000 + + + + + + + cs-CZ + + + + + + de-DE + NIU + + + + + en-US + + + + + + + + + + Int + cJamB2Entry_2 + 50 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + cJam4503_1 + 5 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + cJam0102_1 + 10 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + cJamB2Entry_3 + 2 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + cJamB1Entry_3 + 2 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + cJamConv1_3 + 30 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + cJamB3Entry_2 + 50 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + cJam0102_2 + 10 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + cJam0101_1 + 10 + + + + + + + cs-CZ + + + + + + de-DE + Vorstau Block 1.2 + + + + + en-US + + + + + + + + + + Int + cJam0102_3 + 3 + + + + + + + cs-CZ + + + + + + de-DE + Vor RFID + + + + + en-US + + + + + + + + + + Int + cJam0110_1 + 10 + + + + + + + cs-CZ + + + + + + de-DE + Vor Längenmessung+SSCC + + + + + en-US + + + + + + + + + + Int + cHyperJam + 1000 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + cJamConv1_2 + 30 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + cJamB2Entry_1 + 3 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + cJamConv1_1 + 30 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + cJamB3Entry_1 + 3 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + cJamB1Entry_1 + 3 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + cJam0104_1 + 13 + + + + + + + cs-CZ + + + + + + de-DE + Vorstau in Ladeschleife 1 + + + + + en-US + + + + + + + + + + Int + cJamB1Entry_2 + 50 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + cJamConv2 + 30 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + cJamB3Entry_3 + 2 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + cJam4302_2 + 80 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + cJam4403_2 + 80 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + cJam0102_4 + 1 + + + + + + + cs-CZ + + + + + + de-DE + Im RFID + + + + + en-US + + + + + + + + + + Int + cJamConv1_4 + 30 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + cJam4403_3 + 10 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + cJam0110_2 + 10 + + + + + + + cs-CZ + + + + + + de-DE + Nach Längenmessung+SSCC + + + + + en-US + + + + + + + + + + Int + cJam0108_1 + 13 + + + + + + + cs-CZ + + + + + + de-DE + Vorstau in Ladeschleife 2 + + + + + en-US + + + + + + + + + + Int + cJam4103_2 + 25 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + cJam0106_1 + 10 + + + + + + + cs-CZ + + + + + + de-DE + Vor Längenmessung+SSCC + + + + + en-US + + + + + + + + + + Int + cJam0101_2 + 10 + + + + + + + cs-CZ + + + + + + de-DE + Vorstau Block 1.1 + + + + + en-US + + + + + + + + + + Int + cJam0106_2 + 10 + + + + + + + cs-CZ + + + + + + de-DE + Nach Längenmessung+SSCC + + + + + en-US + + + + + + + + + + Int + cJam0104_3 + 10 + + + + + + + cs-CZ + + + + + + de-DE + Vor Sep Abtransport LS1 + + + + + en-US + + + + + + + + + + Int + cJam0108_3 + 10 + + + + + + + + de-DE + Vor Sep Abtransport LS2 + + + + + en-US + + + + + + + + + + Int + cJam0108_2 + 1 + + + + + + + cs-CZ + + + + + + de-DE + Vor Stopper Workstation LS2 + + + + + en-US + + + + + + + + + + Int + cJam0104_2 + 1 + + + + + + + cs-CZ + + + + + + de-DE + Vor Stopper Workstation LS1 + + + + + en-US + + + + + + + + + + Int + cJam4104_1 + 8 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + cJam0102_5 + 65 + + + + + + + cs-CZ + + + + + + de-DE + Vor Clearing Station + + + + + en-US + + + + + + + + + + Int + cJam0102_6 + 1 + + + + + + + cs-CZ + + + + + + de-DE + Clearing Station + + + + + en-US + + + + + + + + + + Int + cJam4103_1 + 70 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + cJam0107_1 + 65 + + + + + + + cs-CZ + + + + + + de-DE + Vorstau vor Ladeschleife 2 + + + + + en-US + + + + + + + + + + Int + cJam0103_1 + 65 + + + + + + + cs-CZ + + + + + + de-DE + Vorstau vor Ladeschleife 1 + + + + + en-US + + + + + + + + + + Int + cJam4302_1 + 5 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + cJam4204_3 + 3 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + cJam4402_1 + 5 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + cJam4502_1 + 3 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + cJam4501_1 + 5 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + cJam4501_2 + 50 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + cJam4204_2 + 15 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + cJam4204_1 + 8 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + cJam4203_1 + 6 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + cJam0100_1 + 105 + + + + + + + cs-CZ + + + + + + de-DE + Einfahrt Leercarrier vom Highway + + + + + en-US + + + + + + + + + + Int + cJam4503_2 + 120 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + cJam4403_1 + 110 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + cJam4502_2 + 120 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + \ No newline at end of file diff --git a/=A01+UH01-KF00/PLC-Variablen/Konstanten/Motors.xml b/=A01+UH01-KF00/PLC-Variablen/Konstanten/Motors.xml new file mode 100644 index 0000000..a2c41c0 --- /dev/null +++ b/=A01+UH01-KF00/PLC-Variablen/Konstanten/Motors.xml @@ -0,0 +1,1065 @@ + + + + + + Motors + + + + + Int + cVarioReturn1207 + 9 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + cVarioLeave1210 + 12 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + cVarioLeave1310 + 18 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + cCarouselEntr2 + 2 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + cExitConv1203 + 9 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + cSortConv1302 + 12 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + cSortConv1201 + 7 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + cSortConv1100 + 3 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + cVarioReturn1205 + 7 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + cVarioLeave1309 + 17 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + cVarioLeave1209 + 11 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + cExitConv1204 + 10 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + cSortConv1301 + 11 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + cExitConv1303 + 13 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + cNoCarousels + 14 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + cVarioLeave1109 + 5 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + cVarioReturn1208 + 10 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + cVarioReturn1108 + 4 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + cSortConv1102 + 4 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + cVarioLeave1110 + 6 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + cVarioReturn1306 + 14 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + cExitConv1104 + 6 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + cVarioReturn1307 + 15 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + cNoVarioConv + 18 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + cVarioReturn1206 + 8 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + cExitConv1304 + 14 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + cVarioReturn1305 + 13 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + cSortConv0101 + 5 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + cVarioReturn103 + 2 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + cVarioReturn108 + 16 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + cExitConv0100 + 5 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + cCarousel4203 + 1 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + cVarioReturn0107 + 3 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + cVarioReturn0105 + 1 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + \ No newline at end of file diff --git a/=A01+UH01-KF00/PLC-Variablen/Konstanten/Separator_2.xml b/=A01+UH01-KF00/PLC-Variablen/Konstanten/Separator_2.xml new file mode 100644 index 0000000..2010db9 --- /dev/null +++ b/=A01+UH01-KF00/PLC-Variablen/Konstanten/Separator_2.xml @@ -0,0 +1,569 @@ + + + + + + Separator_2 + + + + + USInt + SepState_WaitForLeaveSecond + 60 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + USInt + SepState_CloseFirst + 35 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + USInt + SepState_OffEStop + 5 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + USInt + SepState_WaitForConfirmSen + 37 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + USInt + cStateText + 30 + + + + + + + cs-CZ + + + + + + de-DE + Länge des Strings um State-Info anzuzeigen + + + + + en-US + + + + + + + + + + USInt + SepState_OpenAndRelease + 30 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + USInt + SepState_OffMainState + 0 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + USInt + SepState_WaitForReqFirst + 20 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + USInt + SepState_WaitForLeaveFirst + 30 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + USInt + SepState_OpenSecondCorrection + 55 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + USInt + SepState_WaitForCarousel + 21 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + USInt + SepState_Init + 10 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + USInt + SepState_WaitForSecondLeg + 27 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + USInt + SepState_Finish + 65 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + USInt + SepState_WaitForReqSecond + 45 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + USInt + SepState_OpenFirst + 26 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + USInt + SepState_WaitForFirstLeg + 15 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + USInt + SepState_OpenSecond + 50 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + \ No newline at end of file diff --git a/=A01+UH01-KF00/PLC-Variablen/Konstanten/Storage.xml b/=A01+UH01-KF00/PLC-Variablen/Konstanten/Storage.xml new file mode 100644 index 0000000..e26be39 --- /dev/null +++ b/=A01+UH01-KF00/PLC-Variablen/Konstanten/Storage.xml @@ -0,0 +1,383 @@ + + + + + + Storage + + + + + Int + cStorage102ExitJam1 + 1 + + + + + + + cs-CZ + + + + + + de-DE + Platz in Jam nach Lagerlinie + + + + + en-US + + + + + + + + + + Int + cStorage102ExitJam4 + 4 + + + + + + + cs-CZ + + + + + + de-DE + Platz in Jam nach Lagerlinie + + + + + en-US + + + + + + + + + + Int + cStorage101ExitJam1 + 1 + + + + + + + cs-CZ + + + + + + de-DE + Platz in Jam nach Lagerlinie + + + + + en-US + + + + + + + + + + Int + cStorage101ExitJam5 + 5 + + + + + + + cs-CZ + + + + + + de-DE + Platz in Jam nach Lagerlinie + + + + + en-US + + + + + + + + + + Int + cStorage102ExitJam5 + 5 + + + + + + + cs-CZ + + + + + + de-DE + Platz in Jam nach Lagerlinie + + + + + en-US + + + + + + + + + + Int + cStorage101ExitJam2 + 2 + + + + + + + cs-CZ + + + + + + de-DE + Platz in Jam nach Lagerlinie + + + + + en-US + + + + + + + + + + Int + cStorage101ExitJam3 + 3 + + + + + + + cs-CZ + + + + + + de-DE + Platz in Jam nach Lagerlinie + + + + + en-US + + + + + + + + + + Int + cStorage102ExitJam2 + 2 + + + + + + + cs-CZ + + + + + + de-DE + Platz in Jam nach Lagerlinie + + + + + en-US + + + + + + + + + + Int + cStorage102ExitJam3 + 3 + + + + + + + cs-CZ + + + + + + de-DE + Platz in Jam nach Lagerlinie + + + + + en-US + + + + + + + + + + Int + cStorage101ExitJam4 + 4 + + + + + + + cs-CZ + + + + + + de-DE + Platz in Jam nach Lagerlinie + + + + + en-US + + + + + + + + + + Int + cNoLines + 5 + + + + + + + cs-CZ + + + + + + de-DE + WIRD VERWENDET + + + + + en-US + + + + + + + + + + Int + cNoPositions + 85 + + + + + + + cs-CZ + + + + + + de-DE + WIRD VERWENDET + + + + + en-US + + + + + + + + + + \ No newline at end of file diff --git a/=A01+UH01-KF00/PLC-Variablen/Konstanten/Switch_1.xml b/=A01+UH01-KF00/PLC-Variablen/Konstanten/Switch_1.xml new file mode 100644 index 0000000..01cc119 --- /dev/null +++ b/=A01+UH01-KF00/PLC-Variablen/Konstanten/Switch_1.xml @@ -0,0 +1,290 @@ + + + + + + Switch_1 + + + + + USInt + SwiState_OffEStop + 5 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + USInt + SwiState_NotConfirmed + 30 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + USInt + SwiState_Init + 10 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + USInt + SwiState_OffMainState + 0 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + USInt + SwiState_Confirmed + 35 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + USInt + SwiState_WaitForCarousel + 20 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + USInt + SwiState_WaitForReq + 15 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + USInt + SwiState_Error + 40 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + USInt + SwiState_ChangeSwitch + 25 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + \ No newline at end of file diff --git a/=A01+UH01-KF00/PLC-Variablen/Konstanten/Zeiten.xml b/=A01+UH01-KF00/PLC-Variablen/Konstanten/Zeiten.xml new file mode 100644 index 0000000..258fb9f --- /dev/null +++ b/=A01+UH01-KF00/PLC-Variablen/Konstanten/Zeiten.xml @@ -0,0 +1,321 @@ + + + + + + Zeiten + + + + + Time + cTimeSepTrailing + T#500ms + + + + + + + cs-CZ + + + + + + de-DE + Zeit wie lange Sep offen + + + + + en-US + + + + + + + + + + Time + cTimeSenSlideDbncd + T#200ms + + + + + + + cs-CZ + + + + + + de-DE + Extra Entprellzeit für die Gefälle + + + + + en-US + + + + + + + + + + Time + cTimeSenQuickDbncd + T#80ms + + + + + + + cs-CZ + + + + + + de-DE + Extra Entprellzeit schnell (Fingertakt...) + + + + + en-US + + + + + + + + + + Time + cTimeSep1Prio + T#7s + + + + + + + cs-CZ + + + + + + de-DE + Zeit wie lange Sep1 am Gefälle entleeren darf(war mal bei 12-20s) + + + + + en-US + + + + + + + + + + Time + cTimeEnergySafe + T#40s + + + + + + + cs-CZ + + + + + + de-DE + Laufzeit der Motoren + + + + + en-US + + + + + + + + + + Time + TimeForSepJam + T#8s + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Time + TimeForSepWaiting_Short + T#15s + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Time + TimeForSepWaiting_Medium + T#30s + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Time + TimeForSepWaiting_Long + T#60s + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Time + TimeForSepWaiting_VeryLong + T#120s + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + \ No newline at end of file diff --git a/=A01+UH01-KF00/PLC-Variablen/Konstanten/stConveyorStations.xml b/=A01+UH01-KF00/PLC-Variablen/Konstanten/stConveyorStations.xml new file mode 100644 index 0000000..a075de2 --- /dev/null +++ b/=A01+UH01-KF00/PLC-Variablen/Konstanten/stConveyorStations.xml @@ -0,0 +1,1127 @@ + + + + + + stConveyorStations + + + + + Int + cConvStationsTro54 + 16 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + cConvStationsTro52 + 22 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + cConvPocketsPin13 + 19 + + + + + + + cs-CZ + + + + + + de-DE + Faktor 1,5 (abgerundet) + + + + + en-US + + + + + + + + + + Int + cStationsMaxPin21 + 32 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + cStationsMaxTro54 + 26 + + + + + + + cs-CZ + + + + + + de-DE + 16 + + + + + en-US + + + + + + + + + + Int + cStationsMaxTro15 + 30 + + + + + + + cs-CZ + + + + + + de-DE + 20 + + + + + en-US + + + + + + + + + + Int + cStationsMaxTro38 + 24 + + + + + + + cs-CZ + + + + + + de-DE + 14 + + + + + en-US + + + + + + + + + + Int + cStationsMaxTro + 32 + + + + + + + cs-CZ + + + + + + de-DE + 32 (war 22) + + + + + en-US + + + + + + + + + + Int + cStationsMaxTro49 + 28 + + + + + + + cs-CZ + + + + + + de-DE + 18 + + + + + en-US + + + + + + + + + + Int + cConvStationsTro31 + 20 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + cStationsMaxTro52 + 32 + + + + + + + cs-CZ + + + + + + de-DE + 22 + + + + + en-US + + + + + + + + + + Int + cConvTrolleysTro + 72 + + + + + + + cs-CZ + + + + + + de-DE + Faktor 1,5 (abgerundet) + + + + + en-US + + + + + + + + + + Int + cConvPocketsPin19 + 28 + + + + + + + cs-CZ + + + + + + de-DE + Faktor 1,5 (abgerundet) + + + + + en-US + + + + + + + + + + Int + cStationsMaxPin13 + 24 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + cConvStationsTro47 + 20 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + cStationsMaxTro33 + 28 + + + + + + + cs-CZ + + + + + + de-DE + 18 + + + + + en-US + + + + + + + + + + Int + cConvStationsTro38 + 14 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + cConvPocketsPin21 + 31 + + + + + + + cs-CZ + + + + + + de-DE + Faktor 1,5 (abgerundet) + + + + + en-US + + + + + + + + + + Int + cStationsMaxTro47 + 30 + + + + + + + cs-CZ + + + + + + de-DE + 20 + + + + + en-US + + + + + + + + + + Int + cConvStationsTro20 + 22 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + cStationsMaxPin17 + 28 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + cConvStationsTro15 + 20 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + cStationsMaxPin19 + 30 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + cConvStationsTro22 + 14 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + cStationsMaxTro17 + 28 + + + + + + + cs-CZ + + + + + + de-DE + 18 + + + + + en-US + + + + + + + + + + Int + cConvStationsTro33 + 18 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + cConvStationsTro36 + 22 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + cConvPocketsPin15 + 22 + + + + + + + cs-CZ + + + + + + de-DE + Faktor 1,5 (abgerundet) + + + + + en-US + + + + + + + + + + Int + cStationsMaxTro20 + 32 + + + + + + + cs-CZ + + + + + + de-DE + 22 + + + + + en-US + + + + + + + + + + Int + cStationsMaxPin15 + 26 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + cConvStationsTro49 + 18 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + cConvPocketsPin17 + 25 + + + + + + + cs-CZ + + + + + + de-DE + Faktor 1,5 (abgerundet) + + + + + en-US + + + + + + + + + + Int + cStationsMaxTro36 + 32 + + + + + + + cs-CZ + + + + + + de-DE + 22 + + + + + en-US + + + + + + + + + + Int + cStationsMaxTro22 + 24 + + + + + + + cs-CZ + + + + + + de-DE + 14 + + + + + en-US + + + + + + + + + + Int + cConvStationsTro17 + 18 + + + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + cStationsMaxTro31 + 30 + + + + + + + cs-CZ + + + + + + de-DE + 20 + + + + + en-US + + + + + + + + + + \ No newline at end of file diff --git a/=A01+UH01-KF00/PLC-Variablen/LCom_Constants.xml b/=A01+UH01-KF00/PLC-Variablen/LCom_Constants.xml new file mode 100644 index 0000000..cf2601c --- /dev/null +++ b/=A01+UH01-KF00/PLC-Variablen/LCom_Constants.xml @@ -0,0 +1,1468 @@ + + + + + + LCom_Constants + + + + + Word + LCOM_STATUS_NO_CALL + 16#7000 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + USInt + LCOM_CON_TYPE_QDN + 10 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Word + LCOM_ERR_RECEIVE + 16#8603 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + USInt + LCOM_NO_TIME_SYNC + 0 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Word + LCOM_ERR_LIFE_SIGN_CYCLE + 16#8210 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + USInt + LCOM_TIME_OF_DAY_TIME_SYNC + 2 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Word + LCOM_ERR_CONNECTION_ID + 16#8201 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Word + LCOM_ERR_ACK_MESSAGE_NUMBER + 16#8612 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Word + LCOM_ERR_PARTNER_IP + 16#8204 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Word + LCOM_ERR_WRONG_LCOM_HEADER + 16#8613 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Word + LCOM_ERR_TIME_SYNC_MODE + 16#8205 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + USInt + LCOM_CYCLE_TIME_SYNC + 1 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Word + LCOM_STATUS_DISCONNECTING + 16#7008 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Word + LCOM_STATUS_CLIENT_TRY_CONNECT + 16#7003 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Word + LCOM_ERR_CONNECTION_TYPE + 16#8213 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Word + LCOM_ERR_WRONG_TELEGRAM_ID + 16#8614 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Word + LCOM_STATUS_FIRST_CALL + 16#7001 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + USInt + LCOM_TCP_CONNECTION + 1 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Word + LCOM_ERR_RECEIVE_DATA_TYPE + 16#8209 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Word + LCOM_ERR_INTERFACE_ID + 16#8202 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Word + LCOM_WARN_SEND_CYCLE_LIMITATION + 16#7611 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Word + LCOM_STATUS_TCP_CONNECTED + 16#7005 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Word + LCOM_WARN_LIFE_SIGN_LIMITATION + 16#7610 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Word + LCOM_WARN_ACK_TIMEOUT_LIMITATION + 16#7612 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Word + LCOM_ERR_ACK_TIMEOUT_EXPIRED + 16#8611 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Word + LCOM_STATUS_SERVER_PORT_OPEN + 16#7004 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Word + LCOM_STATUS_LCOM_CONNECTED_V2 + 16#7007 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Word + LCOM_ERR_SEND_DATA_TYPE + 16#8208 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + USInt + LCOM_LCOM_CONNECTION + 2 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Word + LCOM_ERR_SEND + 16#8602 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Word + LCOM_ERR_LOCAL_PORT + 16#8203 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Word + LCOM_ERR_CLOSE_CONNECTION + 16#8604 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Word + LCOM_ERR_OPEN_SERVER + 16#8601 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Word + LCOM_WARN_SEND_CYCLE_EXPIRED + 16#7613 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Word + LCOM_ERR_ACK_TIMEOUT + 16#8212 + + + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Word + LCOM_STATUS_LCOM_CONNECTED_V1 + 16#7006 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Word + LCOM_WARN_SEND_DATA_LENGTH + 16#7600 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Word + LCOM_ERR_OPEN_CLIENT + 16#8600 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Word + LCOM_WARN_RECEIVE_BUFFER_LEN + 16#7614 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Word + LCOM_ERR_SEND_CYCLE_TIME + 16#8211 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Word + LCOM_ERR_TIME_CYCLE_TIME + 16#8206 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Word + LCOM_ERR_TIME_OF_DAY + 16#8207 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + USInt + LCOM_CON_TYPE_IPV4 + 1 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Word + LCOM_ERR_COM_SERVICE + 16#8200 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Word + LCOM_STATUS_INTERMEDIATE_CALL + 16#7002 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Word + LCOM_WARN_NO_TIME_SYNC + 16#7615 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Word + LCOM_ERR_LIFE_SIGN_EXPIRED + 16#8610 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + \ No newline at end of file diff --git a/=A01+UH01-KF00/PLC-Variablen/OpcUaStatusCodes.xml b/=A01+UH01-KF00/PLC-Variablen/OpcUaStatusCodes.xml new file mode 100644 index 0000000..42292aa --- /dev/null +++ b/=A01+UH01-KF00/PLC-Variablen/OpcUaStatusCodes.xml @@ -0,0 +1,7327 @@ + + + + + + OpcUaStatusCodes + + + + + DWord + OpcUa_BadFilterElementInvalid + 16#80C40000 + + + + + + + cs-CZ + + + + + + de-DE + The referenced element is not a valid element in the content filter. + + + + + en-US + + + + + + + + + + DWord + OpcUa_BadCommunicationError + 16#80050000 + + + + + + + cs-CZ + + + + + + de-DE + A low level communication error occurred. + + + + + en-US + + + + + + + + + + DWord + OpcUa_BadNoCommunication + 16#80310000 + + + + + + + cs-CZ + + + + + + de-DE + Communication with the data source is defined, but not established, and there is no last known value available. + + + + + en-US + + + + + + + + + + DWord + OpcUa_BadTooManyOperations + 16#80100000 + + + + + + + cs-CZ + + + + + + de-DE + The request could not be processed because it specified too many operations. + + + + + en-US + + + + + + + + + + DWord + OpcUa_UncertainInitialValue + 16#40920000 + + + + + + + cs-CZ + + + + + + de-DE + The value is an initial value for a variable that normally receives its value from another variable. + + + + + en-US + + + + + + + + + + DWord + OpcUa_BadDataEncodingUnsupported + 16#80390000 + + + + + + + cs-CZ + + + + + + de-DE + The server does not support the requested data encoding for the node. + + + + + en-US + + + + + + + + + + DWord + OpcUa_BadConfigurationError + 16#80890000 + + + + + + + cs-CZ + + + + + + de-DE + There is a problem with the configuration that affects the usefulness of the value. + + + + + en-US + + + + + + + + + + DWord + OpcUa_BadSecurityModeInsufficient + 16#80E60000 + + + + + + + cs-CZ + + + + + + de-DE + The operation is not permitted over the current secure channel. + + + + + en-US + + + + + + + + + + DWord + OpcUa_BadNotWritable + 16#803B0000 + + + + + + + cs-CZ + + + + + + de-DE + The access level does not allow writing to the Node. + + + + + en-US + + + + + + + + + + DWord + OpcUa_BadDuplicateReferenceNotAllowed + 16#80660000 + + + + + + + cs-CZ + + + + + + de-DE + The reference type between the nodes is already defined. + + + + + en-US + + + + + + + + + + DWord + OpcUa_BadCertificateRevocationUnknown + 16#801B0000 + + + + + + + cs-CZ + + + + + + de-DE + It was not possible to determine if the certificate has been revoked. + + + + + en-US + + + + + + + + + + DWord + OpcUa_BadSessionIdInvalid + 16#80250000 + + + + + + + cs-CZ + + + + + + de-DE + The session id is not valid. + + + + + en-US + + + + + + + + + + DWord + OpcUa_BadNotExecutable + 16#81110000 + + + + + + + cs-CZ + + + + + + de-DE + The executable attribute does not allow the execution of the method. + + + + + en-US + + + + + + + + + + DWord + OpcUa_BadViewVersionInvalid + 16#80CB0000 + + + + + + + cs-CZ + + + + + + de-DE + The view version is not available or not supported. + + + + + en-US + + + + + + + + + + DWord + OpcUa_Uncertain + 16#40000000 + + + + + + + cs-CZ + + + + + + de-DE + Something unexpected occurred but the results still maybe useable. + + + + + en-US + + + + + + + + + + DWord + OpcUa_BadOutOfRange + 16#803C0000 + + + + + + + cs-CZ + + + + + + de-DE + The value was out of range. + + + + + en-US + + + + + + + + + + DWord + OpcUa_BadCertificateInvalid + 16#80120000 + + + + + + + cs-CZ + + + + + + de-DE + The certificate provided as a parameter is not valid. + + + + + en-US + + + + + + + + + + DWord + OpcUa_BadExpectedStreamToBlock + 16#80B40000 + + + + + + + cs-CZ + + + + + + de-DE + The stream did not return all data requested (possibly because it is a non-blocking stream). + + + + + en-US + + + + + + + + + + DWord + OpcUa_BadNoMatch + 16#806F0000 + + + + + + + cs-CZ + + + + + + de-DE + The requested operation has no match to return. + + + + + en-US + + + + + + + + + + DWord + OpcUa_BadSessionNotActivated + 16#80270000 + + + + + + + cs-CZ + + + + + + de-DE + The session cannot be used because ActivateSession has not been called. + + + + + en-US + + + + + + + + + + DWord + OpcUa_BadRequestTypeInvalid + 16#80530000 + + + + + + + cs-CZ + + + + + + de-DE + The security token request type is not valid. + + + + + en-US + + + + + + + + + + DWord + OpcUa_BadUserAccessDenied + 16#801F0000 + + + + + + + cs-CZ + + + + + + de-DE + User does not have permission to perform the requested operation. + + + + + en-US + + + + + + + + + + DWord + OpcUa_UncertainReferenceNotDeleted + 16#40BC0000 + + + + + + + cs-CZ + + + + + + de-DE + The server was not able to delete all target references. + + + + + en-US + + + + + + + + + + DWord + OpcUa_BadRequestCancelledByClient + 16#802C0000 + + + + + + + cs-CZ + + + + + + de-DE + The request was cancelled by the client. + + + + + en-US + + + + + + + + + + DWord + OpcUa_BadRequestCancelledByRequest + 16#805A0000 + + + + + + + cs-CZ + + + + + + de-DE + The request was cancelled by the client with the Cancel service. + + + + + en-US + + + + + + + + + + DWord + OpcUa_BadNotImplemented + 16#80400000 + + + + + + + cs-CZ + + + + + + de-DE + Requested operation is not implemented. + + + + + en-US + + + + + + + + + + DWord + OpcUa_BadProtocolVersionUnsupported + 16#80BE0000 + + + + + + + cs-CZ + + + + + + de-DE + The applications do not have compatible protocol versions. + + + + + en-US + + + + + + + + + + DWord + OpcUa_GoodCallAgain + 16#00A90000 + + + + + + + cs-CZ + + + + + + de-DE + The operation is not finished and needs to be called again. + + + + + en-US + + + + + + + + + + DWord + OpcUa_BadNoDeleteRights + 16#80690000 + + + + + + + cs-CZ + + + + + + de-DE + The server will not allow the node to be deleted. + + + + + en-US + + + + + + + + + + DWord + OpcUa_BadArgumentsMissing + 16#80760000 + + + + + + + cs-CZ + + + + + + de-DE + The client did not specify all of the input arguments for the method. + + + + + en-US + + + + + + + + + + DWord + OpcUa_BadInvalidState + 16#80AF0000 + + + + + + + cs-CZ + + + + + + de-DE + The operation cannot be completed because the object is closed, uninitialized or in some other invalid state. + + + + + en-US + + + + + + + + + + DWord + OpcUa_BadSecurityPolicyRejected + 16#80550000 + + + + + + + cs-CZ + + + + + + de-DE + The security policy does not meet the requirements set by the server. + + + + + en-US + + + + + + + + + + DWord + OpcUa_BadShutdown + 16#800C0000 + + + + + + + cs-CZ + + + + + + de-DE + The operation was cancelled because the application is shutting down. + + + + + en-US + + + + + + + + + + DWord + OpcUa_BadSecurityModeRejected + 16#80540000 + + + + + + + cs-CZ + + + + + + de-DE + The security mode does not meet the requirements set by the server. + + + + + en-US + + + + + + + + + + DWord + OpcUa_BadConditionAlreadyEnabled + 16#80CC0000 + + + + + + + + de-DE + This condition has already been enabled. + + + + + en-US + + + + + + + + + + DWord + OpcUa_BadConditionBranchAlreadyAcked + 16#80CF0000 + + + + + + + cs-CZ + + + + + + de-DE + The condition branch has already been acknowledged. + + + + + en-US + + + + + + + + + + DWord + OpcUa_BadConditionNotShelved + 16#80D20000 + + + + + + + cs-CZ + + + + + + de-DE + The condition is not currently shelved. + + + + + en-US + + + + + + + + + + DWord + OpcUa_BadBrowseNameDuplicated + 16#80610000 + + + + + + + cs-CZ + + + + + + de-DE + The browse name is not unique among nodes that share the same relationship with the parent. + + + + + en-US + + + + + + + + + + DWord + OpcUa_BadNoData + 16#809B0000 + + + + + + + cs-CZ + + + + + + de-DE + No data exists for the requested time range or event filter. + + + + + en-US + + + + + + + + + + DWord + OpcUa_GoodSubscriptionTransferred + 16#002D0000 + + + + + + + cs-CZ + + + + + + de-DE + The subscription was transferred to another session. + + + + + en-US + + + + + + + + + + DWord + OpcUa_BadRequestInterrupted + 16#80840000 + + + + + + + cs-CZ + + + + + + de-DE + The request could not be sent because of a network interruption. + + + + + en-US + + + + + + + + + + DWord + OpcUa_BadNodeIdRejected + 16#805D0000 + + + + + + + cs-CZ + + + + + + de-DE + The requested node id was reject because it was either invalid or server does not allow node ids to be specified by the client. + + + + + en-US + + + + + + + + + + DWord + OpcUa_BadObjectDeleted + 16#803F0000 + + + + + + + cs-CZ + + + + + + de-DE + The object cannot be used because it has been deleted. + + + + + en-US + + + + + + + + + + DWord + OpcUa_BadNodeIdInvalid + 16#80330000 + + + + + + + cs-CZ + + + + + + de-DE + The syntax of the node id is not valid. + + + + + en-US + + + + + + + + + + DWord + OpcUa_BadNotReadable + 16#803A0000 + + + + + + + cs-CZ + + + + + + de-DE + The access level does not allow reading or subscribing to the Node. + + + + + en-US + + + + + + + + + + DWord + OpcUa_BadLicenseNotAvailable + 16#81100000 + + + + + + + cs-CZ + + + + + + de-DE + The server does not have a license which is required to operate in general or to perform a service or operation. + + + + + en-US + + + + + + + + + + DWord + OpcUa_BadRequestTooLarge + 16#80B80000 + + + + + + + cs-CZ + + + + + + de-DE + The request message size exceeds limits set by the server. + + + + + en-US + + + + + + + + + + DWord + OpcUa_Good + 16#00000000 + + + + + + + cs-CZ + + + + + + de-DE + Everything is as expected. + + + + + en-US + + + + + + + + + + DWord + OpcUa_BadOutOfMemory + 16#80030000 + + + + + + + cs-CZ + + + + + + de-DE + Not enough memory to complete the operation. + + + + + en-US + + + + + + + + + + DWord + OpcUa_BadTypeMismatch + 16#80740000 + + + + + + + cs-CZ + + + + + + de-DE + The value supplied for the attribute is not of the same type as the attributes value. + + + + + en-US + + + + + + + + + + DWord + OpcUa_BadTcpNotEnoughResources + 16#80810000 + + + + + + + cs-CZ + + + + + + de-DE + There are not enough resources to process the request. + + + + + en-US + + + + + + + + + + DWord + OpcUa_BadAttributeIdInvalid + 16#80350000 + + + + + + + cs-CZ + + + + + + de-DE + The attribute is not supported for the specified Node. + + + + + en-US + + + + + + + + + + DWord + OpcUa_BadConnectionClosed + 16#80AE0000 + + + + + + + cs-CZ + + + + + + de-DE + The network connection has been closed. + + + + + en-US + + + + + + + + + + DWord + OpcUa_BadMonitoringModeInvalid + 16#80410000 + + + + + + + cs-CZ + + + + + + de-DE + The monitoring mode is invalid. + + + + + en-US + + + + + + + + + + DWord + OpcUa_BadBrowseNameInvalid + 16#80600000 + + + + + + + cs-CZ + + + + + + de-DE + The browse name is invalid. + + + + + en-US + + + + + + + + + + DWord + OpcUa_BadCertificateRevoked + 16#801D0000 + + + + + + + cs-CZ + + + + + + de-DE + The certificate has been revoked. + + + + + en-US + + + + + + + + + + DWord + OpcUa_BadInternalError + 16#80020000 + + + + + + + cs-CZ + + + + + + de-DE + An internal error occurred as a result of a programming or configuration error. + + + + + en-US + + + + + + + + + + DWord + OpcUa_BadReferenceTypeIdInvalid + 16#804C0000 + + + + + + + cs-CZ + + + + + + de-DE + The operation could not be processed because all continuation points have been allocated. + + + + + en-US + + + + + + + + + + DWord + OpcUa_BadQueryTooComplex + 16#806E0000 + + + + + + + cs-CZ + + + + + + de-DE + The requested operation requires too many resources in the server. + + + + + en-US + + + + + + + + + + DWord + OpcUa_BadWouldBlock + 16#80B50000 + + + + + + + cs-CZ + + + + + + de-DE + Non blocking behaviour is required and the operation would block. + + + + + en-US + + + + + + + + + + DWord + OpcUa_BadEntryExists + 16#809F0000 + + + + + + + cs-CZ + + + + + + de-DE + The data or event was not successfully inserted because a matching entry exists. + + + + + en-US + + + + + + + + + + DWord + OpcUa_GoodNonCriticalTimeout + 16#00AA0000 + + + + + + + cs-CZ + + + + + + de-DE + A non-critical timeout occurred. + + + + + en-US + + + + + + + + + + DWord + OpcUa_BadSensorFailure + 16#808C0000 + + + + + + + cs-CZ + + + + + + de-DE + There has been a failure in the sensor from which the value is derived by the device/data source. + + + + + en-US + + + + + + + + + + DWord + OpcUa_BadUnexpectedError + 16#80010000 + + + + + + + cs-CZ + + + + + + de-DE + An unexpected error occurred. + + + + + en-US + + + + + + + + + + DWord + OpcUa_BadIdentityChangeNotSupported + 16#80C60000 + + + + + + + cs-CZ + + + + + + de-DE + The server does not support changing the user identity assigned to the session. + + + + + en-US + + + + + + + + + + DWord + OpcUa_BadMethodInvalid + 16#80750000 + + + + + + + cs-CZ + + + + + + de-DE + The method id does not refer to a method for the specified object. + + + + + en-US + + + + + + + + + + DWord + OpcUa_BadNotConnected + 16#808A0000 + + + + + + + cs-CZ + + + + + + de-DE + The variable should receive its value from another variable, but has never been configured to do so. + + + + + en-US + + + + + + + + + + DWord + OpcUa_BadBoundNotSupported + 16#80D80000 + + + + + + + cs-CZ + + + + + + de-DE + The server cannot retrieve a bound for the variable. + + + + + en-US + + + + + + + + + + DWord + OpcUa_BadSequenceNumberInvalid + 16#80880000 + + + + + + + cs-CZ + + + + + + de-DE + The sequence number is not valid. + + + + + en-US + + + + + + + + + + DWord + OpcUa_GoodShutdownEvent + 16#00A80000 + + + + + + + cs-CZ + + + + + + de-DE + The system is shutting down. + + + + + en-US + + + + + + + + + + DWord + OpcUa_BadDialogResponseInvalid + 16#80CE0000 + + + + + + + cs-CZ + + + + + + de-DE + The response is not valid for the dialog. + + + + + en-US + + + + + + + + + + DWord + OpcUa_BadRequestTimeout + 16#80850000 + + + + + + + cs-CZ + + + + + + de-DE + Timeout occurred while processing the request. + + + + + en-US + + + + + + + + + + DWord + OpcUa_BadNoEntryExists + 16#80A00000 + + + + + + + cs-CZ + + + + + + de-DE + The data or event was not successfully updated because no matching entry exists. + + + + + en-US + + + + + + + + + + DWord + OpcUa_GoodMoreData + 16#00A60000 + + + + + + + cs-CZ + + + + + + de-DE + The data or event field was successfully replaced in the historical database. + + + + + en-US + + + + + + + + + + DWord + OpcUa_BadDiscoveryUrlMissing + 16#80510000 + + + + + + + cs-CZ + + + + + + de-DE + No DiscoveryUrl was specified. + + + + + en-US + + + + + + + + + + DWord + OpcUa_BadCertificateIssuerRevocationUnknown + 16#801C0000 + + + + + + + cs-CZ + + + + + + de-DE + It was not possible to determine if the issuer certificate has been revoked. + + + + + en-US + + + + + + + + + + DWord + OpcUa_BadHistoryOperationUnsupported + 16#80720000 + + + + + + + cs-CZ + + + + + + de-DE + The server does not support the requested operation. + + + + + en-US + + + + + + + + + + DWord + OpcUa_BadServerHalted + 16#800E0000 + + + + + + + cs-CZ + + + + + + de-DE + The server has stopped and cannot process any requests. + + + + + en-US + + + + + + + + + + DWord + OpcUa_BadViewTimestampInvalid + 16#80C90000 + + + + + + + cs-CZ + + + + + + de-DE + The view timestamp is not available or not supported. + + + + + en-US + + + + + + + + + + DWord + OpcUa_BadServerUriInvalid + 16#804F0000 + + + + + + + cs-CZ + + + + + + de-DE + The ServerUri is not a valid URI. + + + + + en-US + + + + + + + + + + DWord + OpcUa_BadOutOfService + 16#808D0000 + + + + + + + cs-CZ + + + + + + de-DE + The source of the data is not operational. + + + + + en-US + + + + + + + + + + DWord + OpcUa_BadFilterNotAllowed + 16#80450000 + + + + + + + cs-CZ + + + + + + de-DE + A monitoring filter cannot be used in combination with the attribute specified. + + + + + en-US + + + + + + + + + + DWord + OpcUa_BadCertificateUriInvalid + 16#80170000 + + + + + + + cs-CZ + + + + + + de-DE + The URI specified in the ApplicationDescription does not match the URI in the certificate. + + + + + en-US + + + + + + + + + + DWord + OpcUa_BadParentNodeIdInvalid + 16#805B0000 + + + + + + + cs-CZ + + + + + + de-DE + The parent node id does not to refer to a valid node. + + + + + en-US + + + + + + + + + + DWord + OpcUa_BadDialogNotActive + 16#80CD0000 + + + + + + + cs-CZ + + + + + + de-DE + The dialog condition is not active. + + + + + en-US + + + + + + + + + + DWord + OpcUa_BadEventNotAcknowledgeable + 16#80BB0000 + + + + + + + cs-CZ + + + + + + de-DE + The event cannot be acknowledged. + + + + + en-US + + + + + + + + + + DWord + OpcUa_BadAggregateConfigurationRejected + 16#80DA0000 + + + + + + + cs-CZ + + + + + + de-DE + The aggregate configuration is not valid for specified node. + + + + + en-US + + + + + + + + + + DWord + OpcUa_BadInvalidArgument + 16#80AB0000 + + + + + + + cs-CZ + + + + + + de-DE + One or more arguments are invalid. + + + + + en-US + + + + + + + + + + DWord + OpcUa_BadSessionClosed + 16#80260000 + + + + + + + cs-CZ + + + + + + de-DE + The session was closed by the client. + + + + + en-US + + + + + + + + + + DWord + OpcUa_BadTypeDefinitionInvalid + 16#80630000 + + + + + + + cs-CZ + + + + + + de-DE + The type definition node id does not reference an appropriate type node. + + + + + en-US + + + + + + + + + + DWord + OpcUa_BadTcpMessageTypeInvalid + 16#807E0000 + + + + + + + cs-CZ + + + + + + de-DE + The type of the message specified in the header invalid. + + + + + en-US + + + + + + + + + + DWord + OpcUa_BadRequestNotComplete + 16#81130000 + + + + + + + cs-CZ + + + + + + de-DE + The request has not been processed by the server yet. + + + + + en-US + + + + + + + + + + DWord + OpcUa_BadTimeout + 16#800A0000 + + + + + + + cs-CZ + + + + + + de-DE + The operation timed out. + + + + + en-US + + + + + + + + + + DWord + OpcUa_BadConditionDisabled + 16#80990000 + + + + + + + cs-CZ + + + + + + de-DE + Property not available, this condition is disabled. + + + + + en-US + + + + + + + + + + DWord + OpcUa_BadResourceUnavailable + 16#80040000 + + + + + + + cs-CZ + + + + + + de-DE + An operating system resource is not available. + + + + + en-US + + + + + + + + + + DWord + OpcUa_BadStateNotActive + 16#80BF0000 + + + + + + + cs-CZ + + + + + + de-DE + The sub-state machine is not currently active. + + + + + en-US + + + + + + + + + + DWord + OpcUa_BadCertificateHostNameInvalid + 16#80160000 + + + + + + + cs-CZ + + + + + + de-DE + The HostName used to connect to a server does not match a HostName in the certificate. + + + + + en-US + + + + + + + + + + DWord + OpcUa_BadRequestNotAllowed + 16#80E40000 + + + + + + + cs-CZ + + + + + + de-DE + The request was rejected by the server because it did not meet the criteria set by the server. + + + + + en-US + + + + + + + + + + DWord + OpcUa_GoodNoData + 16#00A50000 + + + + + + + cs-CZ + + + + + + de-DE + No data exists for the requested time range or event filter. + + + + + en-US + + + + + + + + + + DWord + OpcUa_BadRefreshInProgress + 16#80970000 + + + + + + + cs-CZ + + + + + + de-DE + This Condition refresh failed, a Condition refresh operation is already in progress. + + + + + en-US + + + + + + + + + + DWord + OpcUa_GoodCommunicationEvent + 16#00A70000 + + + + + + + cs-CZ + + + + + + de-DE + The communication layer has raised an event. + + + + + en-US + + + + + + + + + + DWord + OpcUa_BadNoValidCertificates + 16#80590000 + + + + + + + cs-CZ + + + + + + de-DE + The client did not provide at least one software certificate that is valid and meets the profile requirements for the server. + + + + + en-US + + + + + + + + + + DWord + OpcUa_BadCertificateIssuerUseNotAllowed + 16#80190000 + + + + + + + cs-CZ + + + + + + de-DE + The issuer certificate may not be used for the requested operation. + + + + + en-US + + + + + + + + + + DWord + OpcUa_BadConditionAlreadyDisabled + 16#80980000 + + + + + + + cs-CZ + + + + + + de-DE + This condition has already been disabled. + + + + + en-US + + + + + + + + + + DWord + OpcUa_BadTooManySessions + 16#80560000 + + + + + + + cs-CZ + + + + + + de-DE + The server has reached its maximum number of sessions. + + + + + en-US + + + + + + + + + + DWord + OpcUa_BadAggregateNotSupported + 16#80D50000 + + + + + + + cs-CZ + + + + + + de-DE + The requested Aggregate is not support by the server. + + + + + en-US + + + + + + + + + + DWord + OpcUa_BadNodeClassInvalid + 16#805F0000 + + + + + + + cs-CZ + + + + + + de-DE + The node class is not valid. + + + + + en-US + + + + + + + + + + DWord + OpcUa_BadReferenceLocalOnly + 16#80680000 + + + + + + + cs-CZ + + + + + + de-DE + The reference type is not valid for a reference to a remote server. + + + + + en-US + + + + + + + + + + DWord + OpcUa_BadServerIndexInvalid + 16#806A0000 + + + + + + + cs-CZ + + + + + + de-DE + The server index is not valid. + + + + + en-US + + + + + + + + + + DWord + OpcUa_BadUserSignatureInvalid + 16#80570000 + + + + + + + cs-CZ + + + + + + de-DE + The user token signature is missing or invalid. + + + + + en-US + + + + + + + + + + DWord + OpcUa_BadServerNotConnected + 16#800D0000 + + + + + + + cs-CZ + + + + + + de-DE + The operation could not complete because the client is not connected to the server. + + + + + en-US + + + + + + + + + + DWord + OpcUa_UncertainSubNormal + 16#40950000 + + + + + + + cs-CZ + + + + + + de-DE + The value is derived from multiple sources and has less than the required number of Good sources. + + + + + en-US + + + + + + + + + + DWord + OpcUa_BadCertificateIssuerTimeInvalid + 16#80150000 + + + + + + + cs-CZ + + + + + + de-DE + An issuer certificate has expired or is not yet valid. + + + + + en-US + + + + + + + + + + DWord + OpcUa_Bad + 16#80000000 + + + + + + + cs-CZ + + + + + + de-DE + An error occurred. + + + + + en-US + + + + + + + + + + DWord + OpcUa_BadNoContinuationPoints + 16#804B0000 + + + + + + + cs-CZ + + + + + + de-DE + The operation could not be processed because all continuation points have been allocated. + + + + + en-US + + + + + + + + + + DWord + OpcUa_BadDependentValueChanged + 16#80E30000 + + + + + + + cs-CZ + + + + + + de-DE + A dependent value has been changed but the change has not been applied to the device. The quality of the dominant variable is Bad. + + + + + en-US + + + + + + + + + + DWord + OpcUa_BadTooManyMatches + 16#806D0000 + + + + + + + cs-CZ + + + + + + de-DE + The requested operation has too many matches to return. + + + + + en-US + + + + + + + + + + DWord + OpcUa_BadNotFound + 16#803E0000 + + + + + + + cs-CZ + + + + + + de-DE + A requested item was not found or a search operation ended without success. + + + + + en-US + + + + + + + + + + DWord + OpcUa_GoodEntryInserted + 16#00A20000 + + + + + + + cs-CZ + + + + + + de-DE + The data or event was successfully inserted into the historical database. + + + + + en-US + + + + + + + + + + DWord + OpcUa_BadDisconnect + 16#80AD0000 + + + + + + + cs-CZ + + + + + + de-DE + The server has disconnected from the client. + + + + + en-US + + + + + + + + + + DWord + OpcUa_BadConditionAlreadyShelved + 16#80D10000 + + + + + + + cs-CZ + + + + + + de-DE + The condition has already been shelved. + + + + + en-US + + + + + + + + + + DWord + OpcUa_BadFilterLiteralInvalid + 16#80C50000 + + + + + + + cs-CZ + + + + + + de-DE + The referenced literal is not a valid value. + + + + + en-US + + + + + + + + + + DWord + OpcUa_BadSequenceNumberUnknown + 16#807A0000 + + + + + + + cs-CZ + + + + + + de-DE + The sequence number is unknown to the server. + + + + + en-US + + + + + + + + + + DWord + OpcUa_BadViewIdUnknown + 16#806B0000 + + + + + + + cs-CZ + + + + + + de-DE + The view id does not refer to a valid view node. + + + + + en-US + + + + + + + + + + DWord + OpcUa_UncertainNoCommunicationLastUsableValue + 16#408F0000 + + + + + + + cs-CZ + + + + + + de-DE + Communication to the data source has failed. The variable value is the last value that had a good quality. + + + + + en-US + + + + + + + + + + DWord + OpcUa_BadNodeAttributesInvalid + 16#80620000 + + + + + + + cs-CZ + + + + + + de-DE + The node attributes are not valid for the node class. + + + + + en-US + + + + + + + + + + DWord + OpcUa_BadBoundNotFound + 16#80D70000 + + + + + + + cs-CZ + + + + + + de-DE + No data found to provide upper or lower bound value. + + + + + en-US + + + + + + + + + + DWord + OpcUa_BadTargetNodeIdInvalid + 16#80650000 + + + + + + + cs-CZ + + + + + + de-DE + The target node id does not reference a valid node. + + + + + en-US + + + + + + + + + + DWord + OpcUa_BadCertificateIssuerRevoked + 16#801E0000 + + + + + + + cs-CZ + + + + + + de-DE + The issuer certificate has been revoked. + + + + + en-US + + + + + + + + + + DWord + OpcUa_BadSyntaxError + 16#80B60000 + + + + + + + cs-CZ + + + + + + de-DE + A value had an invalid syntax. + + + + + en-US + + + + + + + + + + DWord + OpcUa_GoodEntryReplaced + 16#00A30000 + + + + + + + cs-CZ + + + + + + de-DE + The data or event field was successfully replaced in the historical database. + + + + + en-US + + + + + + + + + + DWord + OpcUa_BadApplicationSignatureInvalid + 16#80580000 + + + + + + + cs-CZ + + + + + + de-DE + The signature generated with the client certificate is missing or invalid. + + + + + en-US + + + + + + + + + + DWord + OpcUa_BadContentFilterInvalid + 16#80480000 + + + + + + + cs-CZ + + + + + + de-DE + The content filter is not valid. + + + + + en-US + + + + + + + + + + DWord + OpcUa_BadAggregateInvalidInputs + 16#80D60000 + + + + + + + cs-CZ + + + + + + de-DE + The aggregate value could not be derived due to invalid data inputs. + + + + + en-US + + + + + + + + + + DWord + OpcUa_BadTcpSecureChannelUnknown + 16#807F0000 + + + + + + + cs-CZ + + + + + + de-DE + The SecureChannelId and/or TokenId are not currently in use. + + + + + en-US + + + + + + + + + + DWord + OpcUa_UncertainDominantValueChanged + 16#40DE0000 + + + + + + + cs-CZ + + + + + + de-DE + The related EngineeringUnit has been changed but the Variable Value is still provided based on the previous unit. + + + + + en-US + + + + + + + + + + DWord + OpcUa_BadInvalidTimestampArgument + 16#80BD0000 + + + + + + + cs-CZ + + + + + + de-DE + The defined timestamp to return was invalid. + + + + + en-US + + + + + + + + + + DWord + OpcUa_BadMonitoredItemIdInvalid + 16#80420000 + + + + + + + cs-CZ + + + + + + de-DE + The monitoring item id does not refer to a valid monitored item. + + + + + en-US + + + + + + + + + + DWord + OpcUa_BadIndexRangeNoData + 16#80370000 + + + + + + + cs-CZ + + + + + + de-DE + No data exists within the range of indexes specified. + + + + + en-US + + + + + + + + + + DWord + OpcUa_BadDataUnavailable + 16#809E0000 + + + + + + + cs-CZ + + + + + + de-DE + Expected data is unavailable for the requested time range due to an un-mounted volume, an off-line archive or tape, or similar reason for temporary unavailability. + + + + + en-US + + + + + + + + + + DWord + OpcUa_BadServiceUnsupported + 16#800B0000 + + + + + + + cs-CZ + + + + + + de-DE + The server does not support the requested service. + + + + + en-US + + + + + + + + + + DWord + OpcUa_BadFilterOperandInvalid + 16#80490000 + + + + + + + cs-CZ + + + + + + de-DE + The operand used in a content filter is not valid. + + + + + en-US + + + + + + + + + + DWord + OpcUa_BadNonceInvalid + 16#80240000 + + + + + + + cs-CZ + + + + + + de-DE + The nonce does appear to be not a random value or it is not the correct length. + + + + + en-US + + + + + + + + + + DWord + OpcUa_BadSubscriptionIdInvalid + 16#80280000 + + + + + + + cs-CZ + + + + + + de-DE + The subscription id is not valid. + + + + + en-US + + + + + + + + + + DWord + OpcUa_BadNoSubscription + 16#80790000 + + + + + + + cs-CZ + + + + + + de-DE + There is no subscription available for this session. + + + + + en-US + + + + + + + + + + DWord + OpcUa_UncertainLastUsableValue + 16#40900000 + + + + + + + cs-CZ + + + + + + de-DE + Whatever was updating this value has stopped doing so. + + + + + en-US + + + + + + + + + + DWord + OpcUa_BadInvalidSelfReference + 16#80670000 + + + + + + + cs-CZ + + + + + + de-DE + The server does not allow this type of self reference on this node. + + + + + en-US + + + + + + + + + + DWord + OpcUa_GoodOverload + 16#002F0000 + + + + + + + cs-CZ + + + + + + de-DE + Sampling has slowed down due to resource limitations. + + + + + en-US + + + + + + + + + + DWord + OpcUa_BadIdentityTokenInvalid + 16#80200000 + + + + + + + cs-CZ + + + + + + de-DE + The user identity token is not valid. + + + + + en-US + + + + + + + + + + DWord + OpcUa_BadConditionBranchAlreadyConfirmed + 16#80D00000 + + + + + + + cs-CZ + + + + + + de-DE + The condition branch has already been confirmed. + + + + + en-US + + + + + + + + + + DWord + OpcUa_UncertainDependentValueChanged + 16#40E20000 + + + + + + + cs-CZ + + + + + + de-DE + A dependent value has been changed but the change has not been applied to the device. The quality of the dominant variable is uncertain. + + + + + en-US + + + + + + + + + + DWord + OpcUa_BadDecodingError + 16#80070000 + + + + + + + cs-CZ + + + + + + de-DE + Decoding halted because of invalid data in the stream. + + + + + en-US + + + + + + + + + + DWord + OpcUa_BadRequestHeaderInvalid + 16#802A0000 + + + + + + + cs-CZ + + + + + + de-DE + The header for the request is missing or invalid. + + + + + en-US + + + + + + + + + + DWord + OpcUa_BadMaxAgeInvalid + 16#80700000 + + + + + + + cs-CZ + + + + + + de-DE + The max age parameter is invalid. + + + + + en-US + + + + + + + + + + DWord + OpcUa_GoodCompletesAsynchronously + 16#002E0000 + + + + + + + cs-CZ + + + + + + de-DE + The processing will complete asynchronously. + + + + + en-US + + + + + + + + + + DWord + OpcUa_BadIdentityTokenRejected + 16#80210000 + + + + + + + cs-CZ + + + + + + de-DE + The user identity token is valid but the server has rejected it. + + + + + en-US + + + + + + + + + + DWord + OpcUa_BadReferenceNotAllowed + 16#805C0000 + + + + + + + cs-CZ + + + + + + de-DE + The reference could not be created because it violates constraints imposed by the data model. + + + + + en-US + + + + + + + + + + DWord + OpcUa_BadShelvingTimeOutOfRange + 16#80D30000 + + + + + + + cs-CZ + + + + + + de-DE + The shelving time not within an acceptable range. + + + + + en-US + + + + + + + + + + DWord + OpcUa_GoodEdited + 16#00DC0000 + + + + + + + cs-CZ + + + + + + de-DE + The value does not come from the real source and has been edited by the server. + + + + + en-US + + + + + + + + + + DWord + OpcUa_BadConnectionRejected + 16#80AC0000 + + + + + + + cs-CZ + + + + + + de-DE + Could not establish a network connection to remote server. + + + + + en-US + + + + + + + + + + DWord + OpcUa_BadSecurityChecksFailed + 16#80130000 + + + + + + + cs-CZ + + + + + + de-DE + An error occurred verifying security. + + + + + en-US + + + + + + + + + + DWord + OpcUa_BadTooManySubscriptions + 16#80770000 + + + + + + + cs-CZ + + + + + + de-DE + The server has reached its maximum number of subscriptions. + + + + + en-US + + + + + + + + + + DWord + OpcUa_BadMessageNotAvailable + 16#807B0000 + + + + + + + cs-CZ + + + + + + de-DE + The requested notification message is no longer available. + + + + + en-US + + + + + + + + + + DWord + OpcUa_BadTooManyPublishRequests + 16#80780000 + + + + + + + cs-CZ + + + + + + de-DE + The server has reached the maximum number of queued publish requests. + + + + + en-US + + + + + + + + + + DWord + OpcUa_BadMonitoredItemFilterUnsupported + 16#80440000 + + + + + + + cs-CZ + + + + + + de-DE + The server does not support the requested monitored item filter. + + + + + en-US + + + + + + + + + + DWord + OpcUa_BadInvalidTimestamp + 16#80230000 + + + + + + + cs-CZ + + + + + + de-DE + The timestamp is outside the range allowed by the server. + + + + + en-US + + + + + + + + + + DWord + OpcUa_BadTcpServerTooBusy + 16#807D0000 + + + + + + + cs-CZ + + + + + + de-DE + The server cannot process the request because it is too busy. + + + + + en-US + + + + + + + + + + DWord + OpcUa_BadSecureChannelTokenUnknown + 16#80870000 + + + + + + + cs-CZ + + + + + + de-DE + The token has expired or is not recognized. + + + + + en-US + + + + + + + + + + DWord + OpcUa_BadViewParameterMismatch + 16#80CA0000 + + + + + + + cs-CZ + + + + + + de-DE + The view parameters are not consistent with each other. + + + + + en-US + + + + + + + + + + DWord + OpcUa_BadLicenseExpired + 16#810E0000 + + + + + + + cs-CZ + + + + + + de-DE + The server requires a license to operate in general or to perform a service or operation, but existing license is expired. + + + + + en-US + + + + + + + + + + DWord + OpcUa_BadEndOfStream + 16#80B00000 + + + + + + + cs-CZ + + + + + + de-DE + Cannot move beyond end of the stream. + + + + + en-US + + + + + + + + + + DWord + OpcUa_GoodPostActionFailed + 16#00DD0000 + + + + + + + cs-CZ + + + + + + de-DE + There was an error in execution of these post-actions. + + + + + en-US + + + + + + + + + + DWord + OpcUa_BadIndexRangeInvalid + 16#80360000 + + + + + + + cs-CZ + + + + + + de-DE + The syntax of the index range parameter is invalid. + + + + + en-US + + + + + + + + + + DWord + OpcUa_BadMaxConnectionsReached + 16#80B70000 + + + + + + + cs-CZ + + + + + + de-DE + The operation could not be finished because all available connections are in use. + + + + + en-US + + + + + + + + + + DWord + OpcUa_BadCertificateUseNotAllowed + 16#80180000 + + + + + + + cs-CZ + + + + + + de-DE + The certificate may not be used for the requested operation. + + + + + en-US + + + + + + + + + + DWord + OpcUa_BadInsufficientClientProfile + 16#807C0000 + + + + + + + cs-CZ + + + + + + de-DE + The client of the current session does not support one or more Profiles that are necessary for the subscription. + + + + + en-US + + + + + + + + + + DWord + OpcUa_BadFilterOperatorUnsupported + 16#80C20000 + + + + + + + cs-CZ + + + + + + de-DE + A valid operator was provided, but the server does not provide support for this filter operator. + + + + + en-US + + + + + + + + + + DWord + OpcUa_BadNotTypeDefinition + 16#80C80000 + + + + + + + cs-CZ + + + + + + de-DE + The provided Nodeid was not a type definition nodeid. + + + + + en-US + + + + + + + + + + DWord + OpcUa_UncertainSensorNotAccurate + 16#40930000 + + + + + + + cs-CZ + + + + + + de-DE + The value is at one of the sensor limits. + + + + + en-US + + + + + + + + + + DWord + OpcUa_BadStructureMissing + 16#80460000 + + + + + + + cs-CZ + + + + + + de-DE + A mandatory structured parameter was missing or null. + + + + + en-US + + + + + + + + + + DWord + OpcUa_BadNodeIdExists + 16#805E0000 + + + + + + + cs-CZ + + + + + + de-DE + The requested node id is already used by another node. + + + + + en-US + + + + + + + + + + DWord + OpcUa_BadWaitingForResponse + 16#80B20000 + + + + + + + cs-CZ + + + + + + de-DE + The asynchronous operation is waiting for a response. + + + + + en-US + + + + + + + + + + DWord + OpcUa_GoodResultsMayBeIncomplete + 16#00BA0000 + + + + + + + cs-CZ + + + + + + de-DE + The server should have followed a reference to a node in a remote server but did not. The result set may be incomplete. + + + + + en-US + + + + + + + + + + DWord + OpcUa_BadTcpInternalError + 16#80820000 + + + + + + + cs-CZ + + + + + + de-DE + An internal error occurred. + + + + + en-US + + + + + + + + + + DWord + OpcUa_BadEventFilterInvalid + 16#80470000 + + + + + + + cs-CZ + + + + + + de-DE + The event filter is not valid. + + + + + en-US + + + + + + + + + + DWord + OpcUa_GoodDataIgnored + 16#00D90000 + + + + + + + cs-CZ + + + + + + de-DE + The request pecifies fields which are not valid for the EventType or cannot be saved by the historian. + + + + + en-US + + + + + + + + + + DWord + OpcUa_BadNoDataAvailable + 16#80B10000 + + + + + + + cs-CZ + + + + + + de-DE + No data is currently available for reading from a non-blocking stream. + + + + + en-US + + + + + + + + + + DWord + OpcUa_BadDataTypeIdUnknown + 16#80110000 + + + + + + + cs-CZ + + + + + + de-DE + The extension object cannot be (de)serialized because the data type id is not recognized. + + + + + en-US + + + + + + + + + + DWord + OpcUa_BadSecureChannelClosed + 16#80860000 + + + + + + + cs-CZ + + + + + + de-DE + The secure channel has been closed. + + + + + en-US + + + + + + + + + + DWord + OpcUa_BadResponseTooLarge + 16#80B90000 + + + + + + + cs-CZ + + + + + + de-DE + The response message size exceeds limits set by the client. + + + + + en-US + + + + + + + + + + DWord + OpcUa_GoodDependentValueChanged + 16#00E00000 + + + + + + + cs-CZ + + + + + + de-DE + A dependent value has been changed but the change has not been applied to the device. + + + + + en-US + + + + + + + + + + DWord + OpcUa_BadTimestampNotSupported + 16#80A10000 + + + + + + + cs-CZ + + + + + + de-DE + The client requested history using a timestamp format the server does not support (i.e requested ServerTimestamp when server only supports SourceTimestamp). + + + + + en-US + + + + + + + + + + DWord + OpcUa_BadMonitoredItemFilterInvalid + 16#80430000 + + + + + + + cs-CZ + + + + + + de-DE + The monitored item filter parameter is not valid. + + + + + en-US + + + + + + + + + + DWord + OpcUa_BadSourceNodeIdInvalid + 16#80640000 + + + + + + + cs-CZ + + + + + + de-DE + The source node id does not reference a valid node. + + + + + en-US + + + + + + + + + + DWord + OpcUa_BadTooManyMonitoredItems + 16#80DB0000 + + + + + + + cs-CZ + + + + + + de-DE + The request could not be processed because there are too many monitored items in the subscription. + + + + + en-US + + + + + + + + + + DWord + OpcUa_BadLicenseLimitsExceeded + 16#810F0000 + + + + + + + cs-CZ + + + + + + de-DE + The server has limits on number of allowed operations / objects, based on installed licenses, and these limits where exceeded. + + + + + en-US + + + + + + + + + + DWord + OpcUa_BadDeadbandFilterInvalid + 16#808E0000 + + + + + + + cs-CZ + + + + + + de-DE + The deadband filter is not valid. + + + + + en-US + + + + + + + + + + DWord + OpcUa_BadBrowseDirectionInvalid + 16#804D0000 + + + + + + + cs-CZ + + + + + + de-DE + The browse direction is not valid. + + + + + en-US + + + + + + + + + + DWord + OpcUa_BadNodeIdUnknown + 16#80340000 + + + + + + + cs-CZ + + + + + + de-DE + The node id refers to a node that does not exist in the server address space. + + + + + en-US + + + + + + + + + + DWord + OpcUa_BadAggregateListMismatch + 16#80D40000 + + + + + + + cs-CZ + + + + + + de-DE + The requested number of Aggregates does not match the requested number of NodeIds. + + + + + en-US + + + + + + + + + + DWord + OpcUa_UncertainReferenceOutOfServer + 16#406C0000 + + + + + + + cs-CZ + + + + + + de-DE + One of the references to follow in the relative path references to a node in the address space in another server. + + + + + en-US + + + + + + + + + + DWord + OpcUa_BadSecureChannelIdInvalid + 16#80220000 + + + + + + + cs-CZ + + + + + + de-DE + The specified secure channel is no longer valid. + + + + + en-US + + + + + + + + + + DWord + OpcUa_GoodClamped + 16#00300000 + + + + + + + cs-CZ + + + + + + de-DE + The value written was accepted but was clamped. + + + + + en-US + + + + + + + + + + DWord + OpcUa_BadCertificateTimeInvalid + 16#80140000 + + + + + + + cs-CZ + + + + + + de-DE + The certificate has expired or is not yet valid. + + + + + en-US + + + + + + + + + + DWord + OpcUa_UncertainSubstituteValue + 16#40910000 + + + + + + + cs-CZ + + + + + + de-DE + The value is an operational value that was manually overwritten. + + + + + en-US + + + + + + + + + + DWord + OpcUa_BadWriteNotSupported + 16#80730000 + + + + + + + cs-CZ + + + + + + de-DE + The server does not support writing the combination of value, status and timestamps provided. + + + + + en-US + + + + + + + + + + DWord + OpcUa_BadHistoryOperationInvalid + 16#80710000 + + + + + + + cs-CZ + + + + + + de-DE + The history details parameter is not valid. + + + + + en-US + + + + + + + + + + DWord + OpcUa_BadUnknownResponse + 16#80090000 + + + + + + + cs-CZ + + + + + + de-DE + An unrecognized response was received from the server. + + + + + en-US + + + + + + + + + + DWord + OpcUa_BadNothingToDo + 16#800F0000 + + + + + + + cs-CZ + + + + + + de-DE + There was nothing to do because the client passed a list of operations with no elements. + + + + + en-US + + + + + + + + + + DWord + OpcUa_BadNotSupported + 16#803D0000 + + + + + + + cs-CZ + + + + + + de-DE + The requested operation is not supported. + + + + + en-US + + + + + + + + + + DWord + OpcUa_BadFilterOperatorInvalid + 16#80C10000 + + + + + + + cs-CZ + + + + + + de-DE + An unregognized operator was provided in a filter. + + + + + en-US + + + + + + + + + + DWord + OpcUa_BadCertificateChainIncomplete + 16#810D0000 + + + + + + + cs-CZ + + + + + + de-DE + The certificate chain is incomplete. + + + + + en-US + + + + + + + + + + DWord + OpcUa_UncertainDataSubNormal + 16#40A40000 + + + + + + + cs-CZ + + + + + + de-DE + The value is derived from multiple values and has less than the required number of Good values. + + + + + en-US + + + + + + + + + + DWord + OpcUa_UncertainNotAllNodesAvailable + 16#40C00000 + + + + + + + cs-CZ + + + + + + de-DE + The list of references may not be complete because the underlying system is not available. + + + + + en-US + + + + + + + + + + DWord + OpcUa_BadTimestampsToReturnInvalid + 16#802B0000 + + + + + + + cs-CZ + + + + + + de-DE + The timestamps to return parameter is invalid. + + + + + en-US + + + + + + + + + + DWord + OpcUa_BadSempahoreFileMissing + 16#80520000 + + + + + + + cs-CZ + + + + + + de-DE + The semaphore file specified by the client is not valid. + + + + + en-US + + + + + + + + + + DWord + OpcUa_BadContinuationPointInvalid + 16#804A0000 + + + + + + + cs-CZ + + + + + + de-DE + The continuation point provide is longer valid. + + + + + en-US + + + + + + + + + + DWord + OpcUa_BadEncodingError + 16#80060000 + + + + + + + cs-CZ + + + + + + de-DE + Encoding halted because of invalid data in the objects being serialized. + + + + + en-US + + + + + + + + + + DWord + OpcUa_BadDataLost + 16#809D0000 + + + + + + + cs-CZ + + + + + + de-DE + Data is missing due to collection started/stopped/lost. + + + + + en-US + + + + + + + + + + DWord + OpcUa_BadTcpMessageTooLarge + 16#80800000 + + + + + + + cs-CZ + + + + + + de-DE + The size of the message specified in the header is too large. + + + + + en-US + + + + + + + + + + DWord + OpcUa_UncertainEngineeringUnitsExceeded + 16#40940000 + + + + + + + cs-CZ + + + + + + de-DE + The value is outside of the range of values defined for this parameter. + + + + + en-US + + + + + + + + + + DWord + OpcUa_BadWaitingForInitialData + 16#80320000 + + + + + + + cs-CZ + + + + + + de-DE + Waiting for the server to obtain values from the underlying data source. + + + + + en-US + + + + + + + + + + DWord + OpcUa_BadNumericOverflow + 16#81120000 + + + + + + + cs-CZ + + + + + + de-DE + The number was not accepted because of a numeric overflow. + + + + + en-US + + + + + + + + + + DWord + OpcUa_GoodLocalOverride + 16#00960000 + + + + + + + cs-CZ + + + + + + de-DE + The value has been overridden. + + + + + en-US + + + + + + + + + + DWord + OpcUa_BadCertificateUntrusted + 16#801A0000 + + + + + + + cs-CZ + + + + + + de-DE + The certificate is not trusted. + + + + + en-US + + + + + + + + + + DWord + OpcUa_BadEncodingLimitsExceeded + 16#80080000 + + + + + + + cs-CZ + + + + + + de-DE + The message encoding/decoding limits imposed by the stack have been exceeded. + + + + + en-US + + + + + + + + + + DWord + OpcUa_BadDominantValueChanged + 16#80E10000 + + + + + + + cs-CZ + + + + + + de-DE + The related EngineeringUnit has been changed but this change has not been applied to the device. The Variable Value is still dependent on the previous unit but its status is currently Bad. + + + + + en-US + + + + + + + + + + DWord + OpcUa_BadOperationAbandoned + 16#80B30000 + + + + + + + cs-CZ + + + + + + de-DE + The asynchronous operation was abandoned by the caller. + + + + + en-US + + + + + + + + + + DWord + OpcUa_BadEventIdUnknown + 16#809A0000 + + + + + + + cs-CZ + + + + + + de-DE + The specified event id is not recognized. + + + + + en-US + + + + + + + + + + DWord + OpcUa_BadServerNameMissing + 16#80500000 + + + + + + + cs-CZ + + + + + + de-DE + No ServerName was specified. + + + + + en-US + + + + + + + + + + DWord + OpcUa_BadTcpEndpointUrlInvalid + 16#80830000 + + + + + + + cs-CZ + + + + + + de-DE + The server does not recognize the QueryString specified. + + + + + en-US + + + + + + + + + + DWord + OpcUa_BadDataEncodingInvalid + 16#80380000 + + + + + + + cs-CZ + + + + + + de-DE + The data encoding is invalid. + + + + + en-US + + + + + + + + + + DWord + OpcUa_BadFilterOperandCountMismatch + 16#80C30000 + + + + + + + cs-CZ + + + + + + de-DE + The number of operands provided for the filter operator was less then expected for the operand provided. + + + + + en-US + + + + + + + + + + DWord + OpcUa_BadTooManyArguments + 16#80E50000 + + + + + + + cs-CZ + + + + + + de-DE + Too many arguments were provided. + + + + + en-US + + + + + + + + + + DWord + OpcUa_BadDeviceFailure + 16#808B0000 + + + + + + + cs-CZ + + + + + + de-DE + There has been a failure in the device/data source that generates the value that has affected the value. + + + + + en-US + + + + + + + + + + DWord + OpcUa_BadNodeNotInView + 16#804E0000 + + + + + + + cs-CZ + + + + + + de-DE + The node is not part of the view. + + + + + en-US + + + + + + + + + + \ No newline at end of file diff --git a/=A01+UH01-KF00/PLC-Variablen/Simulation.xml b/=A01+UH01-KF00/PLC-Variablen/Simulation.xml new file mode 100644 index 0000000..275f503 --- /dev/null +++ b/=A01+UH01-KF00/PLC-Variablen/Simulation.xml @@ -0,0 +1,42 @@ + + + + + + Simulation + + + + + Time + tSimuSenTime + T#200ms + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + \ No newline at end of file diff --git a/=A01+UH01-KF00/PLC-Variablen/Standard-Variablentabelle.xml b/=A01+UH01-KF00/PLC-Variablen/Standard-Variablentabelle.xml new file mode 100644 index 0000000..1359cb9 --- /dev/null +++ b/=A01+UH01-KF00/PLC-Variablen/Standard-Variablentabelle.xml @@ -0,0 +1,724 @@ + + + + + + Standard-Variablentabelle + + + + + Byte + %MB1 + System_Byte + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %M1.0 + FirstScan + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %M1.1 + DiagStatusUpdate + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %M1.2 + AlwaysTRUE + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %M1.3 + AlwaysFALSE + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Byte + %MB0 + Clock_Byte + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %M0.0 + Clock_10Hz + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %M0.1 + Clock_5Hz + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %M0.2 + Clock_2.5Hz + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %M0.3 + Clock_2Hz + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %M0.4 + Clock_1.25Hz + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %M0.5 + Clock_1Hz + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %M0.6 + Clock_0.625Hz + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + %M0.7 + Clock_0.5Hz + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + DInt + cHooksSorterMaxPin + 22 + + + + + + + cs-CZ + + + + + + de-DE + Max. Anzahl Haken / Taschen(Online) je Sorter + + + + + en-US + + + + + + + + + + DInt + cEncoderMaxPin + 13500 + + + + + + + cs-CZ + + + + + + de-DE + EncoderMax Dint ? + + + + + en-US + + + + + + + + + + Int + cNoTempDataLog + 40 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + cNoLinesTest + 19 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + cTodoTRUE + TRUE + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + cStationsMaxTest + 29 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + cNoTime + 100 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Bool + cTodoFalse + FALSE + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + DInt + cStationsMax + 14 + + + + + + + cs-CZ + + + + + + de-DE + Max. Anzahl Stations(Abwürfe) je Sorter + + + + + en-US + + + + + + + + + + \ No newline at end of file diff --git a/=A01+UH01-KF00/PLC-Variablen/Statistics/Statistics.xml b/=A01+UH01-KF00/PLC-Variablen/Statistics/Statistics.xml new file mode 100644 index 0000000..54e484e --- /dev/null +++ b/=A01+UH01-KF00/PLC-Variablen/Statistics/Statistics.xml @@ -0,0 +1,1220 @@ + + + + + + Statistics + + + + + Int + cNoStatistikJam + 37 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + cStatistikJam4503_1 + 36 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + cStatistikJam4302_2 + 28 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + cStatistikJam0101_2 + 3 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + cStatistikJam4502_1 + 34 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + cStatistikJam0107_1 + 16 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + cStatistikJam4503_2 + 37 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + cStatistikJam0102_5 + 8 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + cStatistikJam0104_2 + 12 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + cStatistikJam4104_1 + 23 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + cStatistikJam0102_1 + 4 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + cStatistikJam4402_1 + 29 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + cStatistikHyperJam + 0 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + cStatistikJam4501_1 + 32 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + cStatistikJam0104_1 + 11 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + cStatistikJam0106_2 + 15 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + cStatistikJam0108_3 + 19 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + cStatistikJam0106_1 + 14 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + cStatistikJam4103_1 + 22 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + cStatistikJam0102_3 + 6 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + cStatistikJam0110_2 + 21 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + cStatistikJam4302_1 + 27 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + cStatistikJam0108_1 + 17 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + cStatistikJam0110_1 + 20 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + cStatistikJam0108_2 + 18 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + cStatistikJam0100_1 + 1 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + cStatistikJam0102_6 + 9 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + cStatistikJam0103_1 + 10 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + cStatistikJam4403_1 + 30 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + cStatistikJam4502_2 + 35 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + cStatistikJam0104_3 + 13 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + cStatistikJam0102_2 + 5 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + cStatistikJam0101_1 + 2 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + cStatistikJam4501_2 + 33 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + cStatistikJam4403_2 + 31 + + + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + cStatistikJam0102_4 + 7 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + cStatistikJam4204_2 + 25 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + cStatistikJam4204_1 + 24 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + Int + cStatistikJam4203_1 + 26 + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + \ No newline at end of file diff --git a/=A01+UH01-KF00/Programmbausteine/000_Global/DB_AlarmGlobal.xml b/=A01+UH01-KF00/Programmbausteine/000_Global/DB_AlarmGlobal.xml new file mode 100644 index 0000000..86a0960 --- /dev/null +++ b/=A01+UH01-KF00/Programmbausteine/000_Global/DB_AlarmGlobal.xml @@ -0,0 +1,75 @@ + + + + + + +
+ + 10 + + + 5 + + + 15 + + + +
+
+ Optimized + 100 + DB_AlarmGlobal + + 15 + DB +
+ + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + +
+
\ No newline at end of file diff --git a/=A01+UH01-KF00/Programmbausteine/000_Global/DB_GLOB_TroState.xml b/=A01+UH01-KF00/Programmbausteine/000_Global/DB_GLOB_TroState.xml new file mode 100644 index 0000000..243a1a6 --- /dev/null +++ b/=A01+UH01-KF00/Programmbausteine/000_Global/DB_GLOB_TroState.xml @@ -0,0 +1,69 @@ + + + + + + +
+ + + TRO Status merken (z.B. nach ReInit) + + +
+
+ Optimized + 100 + DB_GLOB_TroState + + 36 + DB +
+ + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + +
+
\ No newline at end of file diff --git a/=A01+UH01-KF00/Programmbausteine/000_Global/DB_MachineGlobal.xml b/=A01+UH01-KF00/Programmbausteine/000_Global/DB_MachineGlobal.xml new file mode 100644 index 0000000..b11bd9e --- /dev/null +++ b/=A01+UH01-KF00/Programmbausteine/000_Global/DB_MachineGlobal.xml @@ -0,0 +1,155 @@ + + + + + + +
+ + + Eingang um Simulationslevel festzulegen. Kann verwendet werden, um Eingangssignale zu simulieren + + + + + + + Zykluszeit zum Tracen + + + + + Name of the Machine + + + + + Name of Production Line + + + + + Place of the Factory + + + + + (Cold restart scan 1 of OB 1) + + + + + Always FALSE + + false + + + + Always TRUE + + true + + + + Betriebsstundenzähler für Automatikbetrieb + + + + + Inbetriebnahme aktiv + + + + + + + + + + + + + + + + + + + + + + + + + true + + + + + true + + + + + + Global LogLevel + + + +
+
+ Optimized + 100 + DB_MachineGlobal + + 14 + DB +
+ + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + +
+
\ No newline at end of file diff --git a/=A01+UH01-KF00/Programmbausteine/000_Global/DB_Statistics.xml b/=A01+UH01-KF00/Programmbausteine/000_Global/DB_Statistics.xml new file mode 100644 index 0000000..ae5ed26 --- /dev/null +++ b/=A01+UH01-KF00/Programmbausteine/000_Global/DB_Statistics.xml @@ -0,0 +1,102 @@ + + + + + + +
+ + + + Gesamt + + + + + Gesamt + + + + + + Gesamt + + + + + Standard Jam Statistiken + + + + + + true + + + + + Gesamt + + + + + Gesamt + + +
+
+ Optimized + 100 + DB_Statistics + + 65 + DB +
+ + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + +
+
\ No newline at end of file diff --git a/=A01+UH01-KF00/Programmbausteine/050_Sensors/DB_Inputs.xml b/=A01+UH01-KF00/Programmbausteine/050_Sensors/DB_Inputs.xml new file mode 100644 index 0000000..ba5f0ec --- /dev/null +++ b/=A01+UH01-KF00/Programmbausteine/050_Sensors/DB_Inputs.xml @@ -0,0 +1,65 @@ + + + + + + +
+ +
+
+ Optimized + 100 + DB_Inputs + + 17 + DB +
+ + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + +
+
\ No newline at end of file diff --git a/=A01+UH01-KF00/Programmbausteine/050_Sensors/FB_CallSensors.scl b/=A01+UH01-KF00/Programmbausteine/050_Sensors/FB_CallSensors.scl new file mode 100644 index 0000000..dcfe184 --- /dev/null +++ b/=A01+UH01-KF00/Programmbausteine/050_Sensors/FB_CallSensors.scl @@ -0,0 +1,1214 @@ +FUNCTION_BLOCK "FB_CallSensors" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + VAR_IN_OUT + stInOutControlUnitCabinetOF1 : "UDT_MainState"; + stInOutControlUnitCabinetOF2 : "UDT_MainState"; + END_VAR + + VAR + fbSensorInput : Array[0.."cNoSensors"] of "FB_SensorInput"; + END_VAR + + VAR_TEMP + idx : Int; + tFlicker : Bool; + index : Int; + END_VAR + + +BEGIN + + REGION BG0280 + #fbSensorInput["cInBG0280"](sInName := 'BG0280', + xInSensor := "BG0280", + stInOutSensor := "DB_Inputs".Sensors["cInBG0280"], + stInOutHMI := "DB_Interface_HMI".arSensors["cInBG0280"], + stInOutControlUnitCabinet := "DB_MachineGlobal".stStateMainOF1); + END_REGION ; + REGION BG0282 + #fbSensorInput["cInBG0282"](sInName := 'BG0282', + xInSensor := "BG0282", + stInOutSensor := "DB_Inputs".Sensors["cInBG0282"], + stInOutHMI := "DB_Interface_HMI".arSensors["cInBG0282"], + stInOutControlUnitCabinet := "DB_MachineGlobal".stStateMainOF1); + END_REGION ; + REGION BG0283 + #fbSensorInput["cInBG0283"](sInName := 'BG0283', + xInSensor := "BG0283", + stInOutSensor := "DB_Inputs".Sensors["cInBG0283"], + stInOutHMI := "DB_Interface_HMI".arSensors["cInBG0283"], + stInOutControlUnitCabinet := "DB_MachineGlobal".stStateMainOF1); + END_REGION ; + REGION BG0284 + #fbSensorInput["cInBG0284"](sInName := 'BG0284', + xInSensor := "BG0284", + stInOutSensor := "DB_Inputs".Sensors["cInBG0284"], + stInOutHMI := "DB_Interface_HMI".arSensors["cInBG0284"], + stInOutControlUnitCabinet := "DB_MachineGlobal".stStateMainOF1); + END_REGION ; + REGION BG0285 + #fbSensorInput["cInBG0285"](sInName := 'BG0285', + xInSensor := "BG0285", + stInOutSensor := "DB_Inputs".Sensors["cInBG0285"], + stInOutHMI := "DB_Interface_HMI".arSensors["cInBG0285"], + stInOutControlUnitCabinet := "DB_MachineGlobal".stStateMainOF1); + END_REGION ; + REGION BG0286 + #fbSensorInput["cInBG0286"](sInName := 'BG0286', + xInSensor := "BG0286", + stInOutSensor := "DB_Inputs".Sensors["cInBG0286"], + stInOutHMI := "DB_Interface_HMI".arSensors["cInBG0286"], + stInOutControlUnitCabinet := "DB_MachineGlobal".stStateMainOF1); + END_REGION ; + REGION BG0287 + #fbSensorInput["cInBG0287"](sInName := 'BG0287', + xInSensor := "BG0287", + stInOutSensor := "DB_Inputs".Sensors["cInBG0287"], + stInOutHMI := "DB_Interface_HMI".arSensors["cInBG0287"], + stInOutControlUnitCabinet := "DB_MachineGlobal".stStateMainOF1); + END_REGION ; + REGION BG0340 + #fbSensorInput["cInBG0340"](sInName := 'BG0340', + xInSensor := "BG0340", + stInOutSensor := "DB_Inputs".Sensors["cInBG0340"], + stInOutHMI := "DB_Interface_HMI".arSensors["cInBG0340"], + stInOutControlUnitCabinet := "DB_MachineGlobal".stStateMainOF1); + END_REGION ; + REGION BG0341 + #fbSensorInput["cInBG0341"](sInName := 'BG0341', + xInSensor := "BG0341", + stInOutSensor := "DB_Inputs".Sensors["cInBG0341"], + stInOutHMI := "DB_Interface_HMI".arSensors["cInBG0341"], + stInOutControlUnitCabinet := "DB_MachineGlobal".stStateMainOF1); + END_REGION ; + REGION BG0342 + #fbSensorInput["cInBG0342"](sInName := 'BG0342', + xInSensor := "BG0342", + stInOutSensor := "DB_Inputs".Sensors["cInBG0342"], + stInOutHMI := "DB_Interface_HMI".arSensors["cInBG0342"], + stInOutControlUnitCabinet := "DB_MachineGlobal".stStateMainOF1); + END_REGION ; + REGION BG0343 + #fbSensorInput["cInBG0343"](sInName := 'BG0343', + xInSensor := "BG0343", + stInOutSensor := "DB_Inputs".Sensors["cInBG0343"], + stInOutHMI := "DB_Interface_HMI".arSensors["cInBG0343"], + stInOutControlUnitCabinet := "DB_MachineGlobal".stStateMainOF1); + END_REGION ; + REGION BG0344 + #fbSensorInput["cInBG0344"](sInName := 'BG0344', + xInSensor := "BG0344", + stInOutSensor := "DB_Inputs".Sensors["cInBG0344"], + stInOutHMI := "DB_Interface_HMI".arSensors["cInBG0344"], + stInOutControlUnitCabinet := "DB_MachineGlobal".stStateMainOF1); + END_REGION ; + REGION BG0345 + #fbSensorInput["cInBG0345"](sInName := 'BG0345', + xInSensor := "BG0345", + stInOutSensor := "DB_Inputs".Sensors["cInBG0345"], + stInOutHMI := "DB_Interface_HMI".arSensors["cInBG0345"], + stInOutControlUnitCabinet := "DB_MachineGlobal".stStateMainOF1); + END_REGION ; + REGION BG0346 + #fbSensorInput["cInBG0346"](sInName := 'BG0346', + xInSensor := "BG0346", + stInOutSensor := "DB_Inputs".Sensors["cInBG0346"], + stInOutHMI := "DB_Interface_HMI".arSensors["cInBG0346"], + stInOutControlUnitCabinet := "DB_MachineGlobal".stStateMainOF1); + END_REGION ; + REGION BG0347 + #fbSensorInput["cInBG0347"](sInName := 'BG0347', + xInSensor := "BG0347", + stInOutSensor := "DB_Inputs".Sensors["cInBG0347"], + stInOutHMI := "DB_Interface_HMI".arSensors["cInBG0347"], + stInOutControlUnitCabinet := "DB_MachineGlobal".stStateMainOF1); + END_REGION ; + REGION BG3000 + #fbSensorInput["cInBG3000"](sInName := 'BG3000', + xInSensor := "BG3000", + stInOutSensor := "DB_Inputs".Sensors["cInBG3000"], + stInOutHMI := "DB_Interface_HMI".arSensors["cInBG3000"], + stInOutControlUnitCabinet := "DB_MachineGlobal".stStateMainOF1); + END_REGION ; + REGION BG3001 + #fbSensorInput["cInBG3001"](sInName := 'BG3001', + xInSensor := "BG3001", + stInOutSensor := "DB_Inputs".Sensors["cInBG3001"], + stInOutHMI := "DB_Interface_HMI".arSensors["cInBG3001"], + stInOutControlUnitCabinet := "DB_MachineGlobal".stStateMainOF1); + END_REGION ; + REGION BG3002 + #fbSensorInput["cInBG3002"](sInName := 'BG3002', + xInSensor := "BG3002", + stInOutSensor := "DB_Inputs".Sensors["cInBG3002"], + stInOutHMI := "DB_Interface_HMI".arSensors["cInBG3002"], + stInOutControlUnitCabinet := "DB_MachineGlobal".stStateMainOF1); + END_REGION ; + REGION BG3003 + #fbSensorInput["cInBG3003"](sInName := 'BG3003', + xInSensor := "BG3003", + stInOutSensor := "DB_Inputs".Sensors["cInBG3003"], + stInOutHMI := "DB_Interface_HMI".arSensors["cInBG3003"], + stInOutControlUnitCabinet := "DB_MachineGlobal".stStateMainOF1); + END_REGION ; + REGION BG3004 + #fbSensorInput["cInBG3004"](sInName := 'BG3004', + xInSensor := "BG3004", + stInOutSensor := "DB_Inputs".Sensors["cInBG3004"], + stInOutHMI := "DB_Interface_HMI".arSensors["cInBG3004"], + stInOutControlUnitCabinet := "DB_MachineGlobal".stStateMainOF1); + END_REGION ; + REGION BG3005 + #fbSensorInput["cInBG3005"](sInName := 'BG3005', + xInSensor := "BG3005", + stInOutSensor := "DB_Inputs".Sensors["cInBG3005"], + stInOutHMI := "DB_Interface_HMI".arSensors["cInBG3005"], + stInOutControlUnitCabinet := "DB_MachineGlobal".stStateMainOF1); + END_REGION ; + REGION BG3006 + #fbSensorInput["cInBG3006"](sInName := 'BG3006', + xInSensor := "BG3006", + stInOutSensor := "DB_Inputs".Sensors["cInBG3006"], + stInOutHMI := "DB_Interface_HMI".arSensors["cInBG3006"], + stInOutControlUnitCabinet := "DB_MachineGlobal".stStateMainOF1); + END_REGION ; + REGION BG3010 + #fbSensorInput["cInBG3010"](sInName := 'BG3010', + xInSensor := "BG3010", + stInOutSensor := "DB_Inputs".Sensors["cInBG3010"], + stInOutHMI := "DB_Interface_HMI".arSensors["cInBG3010"], + stInOutControlUnitCabinet := "DB_MachineGlobal".stStateMainOF1); + END_REGION ; + REGION BG3011 + #fbSensorInput["cInBG3011"](sInName := 'BG3011', + xInSensor := "BG3011", + stInOutSensor := "DB_Inputs".Sensors["cInBG3011"], + stInOutHMI := "DB_Interface_HMI".arSensors["cInBG3011"], + stInOutControlUnitCabinet := "DB_MachineGlobal".stStateMainOF1); + END_REGION ; + REGION BG3012 + #fbSensorInput["cInBG3012"](sInName := 'BG3012', + xInSensor := "BG3012", + stInOutSensor := "DB_Inputs".Sensors["cInBG3012"], + stInOutHMI := "DB_Interface_HMI".arSensors["cInBG3012"], + stInOutControlUnitCabinet := "DB_MachineGlobal".stStateMainOF1); + END_REGION ; + REGION BG3013 + #fbSensorInput["cInBG3013"](sInName := 'BG3013', + xInSensor := "BG3013", + stInOutSensor := "DB_Inputs".Sensors["cInBG3013"], + stInOutHMI := "DB_Interface_HMI".arSensors["cInBG3013"], + stInOutControlUnitCabinet := "DB_MachineGlobal".stStateMainOF1); + END_REGION ; + REGION BG3014 + #fbSensorInput["cInBG3014"](sInName := 'BG3014', + xInSensor := "BG3014", + stInOutSensor := "DB_Inputs".Sensors["cInBG3014"], + stInOutHMI := "DB_Interface_HMI".arSensors["cInBG3014"], + stInOutControlUnitCabinet := "DB_MachineGlobal".stStateMainOF1); + END_REGION ; + REGION BG3015 + #fbSensorInput["cInBG3015"](sInName := 'BG3015', + xInSensor := "BG3015", + stInOutSensor := "DB_Inputs".Sensors["cInBG3015"], + stInOutHMI := "DB_Interface_HMI".arSensors["cInBG3015"], + stInOutControlUnitCabinet := "DB_MachineGlobal".stStateMainOF1); + END_REGION ; + REGION BG3016 + #fbSensorInput["cInBG3016"](sInName := 'BG3016', + xInSensor := "BG3016", + stInOutSensor := "DB_Inputs".Sensors["cInBG3016"], + stInOutHMI := "DB_Interface_HMI".arSensors["cInBG3016"], + stInOutControlUnitCabinet := "DB_MachineGlobal".stStateMainOF1); + END_REGION ; + REGION BG3017 + #fbSensorInput["cInBG3017"](sInName := 'BG3017', + xInSensor := "BG3017", + stInOutSensor := "DB_Inputs".Sensors["cInBG3017"], + stInOutHMI := "DB_Interface_HMI".arSensors["cInBG3017"], + stInOutControlUnitCabinet := "DB_MachineGlobal".stStateMainOF1); + END_REGION ; + REGION BG3020 + #fbSensorInput["cInBG3020"](sInName := 'BG3020', + xInSensor := "BG3020", + stInOutSensor := "DB_Inputs".Sensors["cInBG3020"], + stInOutHMI := "DB_Interface_HMI".arSensors["cInBG3020"], + stInOutControlUnitCabinet := "DB_MachineGlobal".stStateMainOF1); + END_REGION ; + REGION BG3021 + #fbSensorInput["cInBG3021"](sInName := 'BG3021', + xInSensor := "BG3021", + stInOutSensor := "DB_Inputs".Sensors["cInBG3021"], + stInOutHMI := "DB_Interface_HMI".arSensors["cInBG3021"], + stInOutControlUnitCabinet := "DB_MachineGlobal".stStateMainOF1); + END_REGION ; + REGION BG3022 + #fbSensorInput["cInBG3022"](sInName := 'BG3022', + xInSensor := "BG3022", + stInOutSensor := "DB_Inputs".Sensors["cInBG3022"], + stInOutHMI := "DB_Interface_HMI".arSensors["cInBG3022"], + stInOutControlUnitCabinet := "DB_MachineGlobal".stStateMainOF1); + END_REGION ; + REGION BG3023 + #fbSensorInput["cInBG3023"](sInName := 'BG3023', + xInSensor := "BG3023", + stInOutSensor := "DB_Inputs".Sensors["cInBG3023"], + stInOutHMI := "DB_Interface_HMI".arSensors["cInBG3023"], + stInOutControlUnitCabinet := "DB_MachineGlobal".stStateMainOF1); + END_REGION ; + REGION BG3024 + #fbSensorInput["cInBG3024"](sInName := 'BG3024', + xInSensor := "BG3024", + stInOutSensor := "DB_Inputs".Sensors["cInBG3024"], + stInOutHMI := "DB_Interface_HMI".arSensors["cInBG3024"], + stInOutControlUnitCabinet := "DB_MachineGlobal".stStateMainOF1); + END_REGION ; + REGION BG3025 + #fbSensorInput["cInBG3025"](sInName := 'BG3025', + xInSensor := "BG3025", + stInOutSensor := "DB_Inputs".Sensors["cInBG3025"], + stInOutHMI := "DB_Interface_HMI".arSensors["cInBG3025"], + stInOutControlUnitCabinet := "DB_MachineGlobal".stStateMainOF1); + END_REGION ; + REGION BG3026 + #fbSensorInput["cInBG3026"](sInName := 'BG3026', + xInSensor := "BG3026", + stInOutSensor := "DB_Inputs".Sensors["cInBG3026"], + stInOutHMI := "DB_Interface_HMI".arSensors["cInBG3026"], + stInOutControlUnitCabinet := "DB_MachineGlobal".stStateMainOF1); + END_REGION ; + REGION BG3027 + #fbSensorInput["cInBG3027"](sInName := 'BG3027', + xInSensor := "BG3027", + stInOutSensor := "DB_Inputs".Sensors["cInBG3027"], + stInOutHMI := "DB_Interface_HMI".arSensors["cInBG3027"], + stInOutControlUnitCabinet := "DB_MachineGlobal".stStateMainOF1); + END_REGION ; + REGION BG3060 + #fbSensorInput["cInBG3060"](sInName := 'BG3060', + xInSensor := "BG3060", + stInOutSensor := "DB_Inputs".Sensors["cInBG3060"], + stInOutHMI := "DB_Interface_HMI".arSensors["cInBG3060"], + stInOutControlUnitCabinet := "DB_MachineGlobal".stStateMainOF1); + END_REGION ; + REGION BG3061 + #fbSensorInput["cInBG3061"](sInName := 'BG3061', + xInSensor := "BG3061", + stInOutSensor := "DB_Inputs".Sensors["cInBG3061"], + stInOutHMI := "DB_Interface_HMI".arSensors["cInBG3061"], + stInOutControlUnitCabinet := "DB_MachineGlobal".stStateMainOF1); + END_REGION ; + REGION BG3062 + #fbSensorInput["cInBG3062"](sInName := 'BG3062', + xInSensor := "BG3062", + stInOutSensor := "DB_Inputs".Sensors["cInBG3062"], + stInOutHMI := "DB_Interface_HMI".arSensors["cInBG3062"], + stInOutControlUnitCabinet := "DB_MachineGlobal".stStateMainOF1); + END_REGION ; + REGION BG3063 + #fbSensorInput["cInBG3063"](sInName := 'BG3063', + xInSensor := "BG3063", + stInOutSensor := "DB_Inputs".Sensors["cInBG3063"], + stInOutHMI := "DB_Interface_HMI".arSensors["cInBG3063"], + stInOutControlUnitCabinet := "DB_MachineGlobal".stStateMainOF1); + END_REGION ; + REGION BG3064 + #fbSensorInput["cInBG3064"](sInName := 'BG3064', + xInSensor := "BG3064", + stInOutSensor := "DB_Inputs".Sensors["cInBG3064"], + stInOutHMI := "DB_Interface_HMI".arSensors["cInBG3064"], + stInOutControlUnitCabinet := "DB_MachineGlobal".stStateMainOF1); + END_REGION ; + REGION BG3065 + #fbSensorInput["cInBG3065"](sInName := 'BG3065', + xInSensor := "BG3065", + stInOutSensor := "DB_Inputs".Sensors["cInBG3065"], + stInOutHMI := "DB_Interface_HMI".arSensors["cInBG3065"], + stInOutControlUnitCabinet := "DB_MachineGlobal".stStateMainOF1); + END_REGION ; + REGION BG3066 + #fbSensorInput["cInBG3066"](sInName := 'BG3066', + xInSensor := "BG3066", + stInOutSensor := "DB_Inputs".Sensors["cInBG3066"], + stInOutHMI := "DB_Interface_HMI".arSensors["cInBG3066"], + stInOutControlUnitCabinet := "DB_MachineGlobal".stStateMainOF1); + END_REGION ; + REGION BG3067 + #fbSensorInput["cInBG3067"](sInName := 'BG3067', + xInSensor := "BG3067", + stInOutSensor := "DB_Inputs".Sensors["cInBG3067"], + stInOutHMI := "DB_Interface_HMI".arSensors["cInBG3067"], + stInOutControlUnitCabinet := "DB_MachineGlobal".stStateMainOF1); + END_REGION ; + REGION BG3070 + #fbSensorInput["cInBG3070"](sInName := 'BG3070', + xInSensor := "BG3070", + stInOutSensor := "DB_Inputs".Sensors["cInBG3070"], + stInOutHMI := "DB_Interface_HMI".arSensors["cInBG3070"], + stInOutControlUnitCabinet := "DB_MachineGlobal".stStateMainOF1); + END_REGION ; + REGION BG3071 + #fbSensorInput["cInBG3071"](sInName := 'BG3071', + xInSensor := "BG3071", + stInOutSensor := "DB_Inputs".Sensors["cInBG3071"], + stInOutHMI := "DB_Interface_HMI".arSensors["cInBG3071"], + stInOutControlUnitCabinet := "DB_MachineGlobal".stStateMainOF1); + END_REGION ; + REGION BG3072 + #fbSensorInput["cInBG3072"](sInName := 'BG3072', + xInSensor := "BG3072", + stInOutSensor := "DB_Inputs".Sensors["cInBG3072"], + stInOutHMI := "DB_Interface_HMI".arSensors["cInBG3072"], + stInOutControlUnitCabinet := "DB_MachineGlobal".stStateMainOF1); + END_REGION ; + REGION BG3073 + #fbSensorInput["cInBG3073"](sInName := 'BG3073', + xInSensor := "BG3073", + stInOutSensor := "DB_Inputs".Sensors["cInBG3073"], + stInOutHMI := "DB_Interface_HMI".arSensors["cInBG3073"], + stInOutControlUnitCabinet := "DB_MachineGlobal".stStateMainOF1); + END_REGION ; + REGION BG3074 + #fbSensorInput["cInBG3074"](sInName := 'BG3074', + xInSensor := "BG3074", + stInOutSensor := "DB_Inputs".Sensors["cInBG3074"], + stInOutHMI := "DB_Interface_HMI".arSensors["cInBG3074"], + stInOutControlUnitCabinet := "DB_MachineGlobal".stStateMainOF1); + END_REGION ; + REGION BG3075 + #fbSensorInput["cInBG3075"](sInName := 'BG3075', + xInSensor := "BG3075", + stInOutSensor := "DB_Inputs".Sensors["cInBG3075"], + stInOutHMI := "DB_Interface_HMI".arSensors["cInBG3075"], + stInOutControlUnitCabinet := "DB_MachineGlobal".stStateMainOF1); + END_REGION ; + REGION BG3076 + #fbSensorInput["cInBG3076"](sInName := 'BG3076', + xInSensor := "BG3076", + stInOutSensor := "DB_Inputs".Sensors["cInBG3076"], + stInOutHMI := "DB_Interface_HMI".arSensors["cInBG3076"], + stInOutControlUnitCabinet := "DB_MachineGlobal".stStateMainOF1); + END_REGION ; + REGION BG3077 + #fbSensorInput["cInBG3077"](sInName := 'BG3077', + xInSensor := "BG3077", + stInOutSensor := "DB_Inputs".Sensors["cInBG3077"], + stInOutHMI := "DB_Interface_HMI".arSensors["cInBG3077"], + stInOutControlUnitCabinet := "DB_MachineGlobal".stStateMainOF1); + END_REGION ; + REGION BG3080 + #fbSensorInput["cInBG3080"](sInName := 'BG3080', + xInSensor := "BG3080", + stInOutSensor := "DB_Inputs".Sensors["cInBG3080"], + stInOutHMI := "DB_Interface_HMI".arSensors["cInBG3080"], + stInOutControlUnitCabinet := "DB_MachineGlobal".stStateMainOF1); + END_REGION ; + REGION BG3081 + #fbSensorInput["cInBG3081"](sInName := 'BG3081', + xInSensor := "BG3081", + stInOutSensor := "DB_Inputs".Sensors["cInBG3081"], + stInOutHMI := "DB_Interface_HMI".arSensors["cInBG3081"], + stInOutControlUnitCabinet := "DB_MachineGlobal".stStateMainOF1); + END_REGION ; + REGION BG3082 + #fbSensorInput["cInBG3082"](sInName := 'BG3082', + xInSensor := "BG3082", + stInOutSensor := "DB_Inputs".Sensors["cInBG3082"], + stInOutHMI := "DB_Interface_HMI".arSensors["cInBG3082"], + stInOutControlUnitCabinet := "DB_MachineGlobal".stStateMainOF1); + END_REGION ; + REGION BG3120 + #fbSensorInput["cInBG3120"](sInName := 'BG3120', + xInSensor := "BG3120", + stInOutSensor := "DB_Inputs".Sensors["cInBG3120"], + stInOutHMI := "DB_Interface_HMI".arSensors["cInBG3120"], + stInOutControlUnitCabinet := "DB_MachineGlobal".stStateMainOF1); + END_REGION ; + REGION BG3121 + #fbSensorInput["cInBG3121"](sInName := 'BG3121', + xInSensor := "BG3121", + stInOutSensor := "DB_Inputs".Sensors["cInBG3121"], + stInOutHMI := "DB_Interface_HMI".arSensors["cInBG3121"], + stInOutControlUnitCabinet := "DB_MachineGlobal".stStateMainOF1); + END_REGION ; + REGION BG3122 + #fbSensorInput["cInBG3122"](sInName := 'BG3122', + xInSensor := "BG3122", + stInOutSensor := "DB_Inputs".Sensors["cInBG3122"], + stInOutHMI := "DB_Interface_HMI".arSensors["cInBG3122"], + stInOutControlUnitCabinet := "DB_MachineGlobal".stStateMainOF1); + END_REGION ; + REGION BG3123 + #fbSensorInput["cInBG3123"](sInName := 'BG3123', + xInSensor := "BG3123", + stInOutSensor := "DB_Inputs".Sensors["cInBG3123"], + stInOutHMI := "DB_Interface_HMI".arSensors["cInBG3123"], + stInOutControlUnitCabinet := "DB_MachineGlobal".stStateMainOF1); + END_REGION ; + REGION BG3124 + #fbSensorInput["cInBG3124"](sInName := 'BG3124', + xInSensor := "BG3124", + stInOutSensor := "DB_Inputs".Sensors["cInBG3124"], + stInOutHMI := "DB_Interface_HMI".arSensors["cInBG3124"], + stInOutControlUnitCabinet := "DB_MachineGlobal".stStateMainOF1); + END_REGION ; + REGION BG3125 + #fbSensorInput["cInBG3125"](sInName := 'BG3125', + xInSensor := "BG3125", + stInOutSensor := "DB_Inputs".Sensors["cInBG3125"], + stInOutHMI := "DB_Interface_HMI".arSensors["cInBG3125"], + stInOutControlUnitCabinet := "DB_MachineGlobal".stStateMainOF1); + END_REGION ; + REGION BG3126 + #fbSensorInput["cInBG3126"](sInName := 'BG3126', + xInSensor := "BG3126", + stInOutSensor := "DB_Inputs".Sensors["cInBG3126"], + stInOutHMI := "DB_Interface_HMI".arSensors["cInBG3126"], + stInOutControlUnitCabinet := "DB_MachineGlobal".stStateMainOF1); + END_REGION ; + REGION BG3127 + #fbSensorInput["cInBG3127"](sInName := 'BG3127', + xInSensor := "BG3127", + stInOutSensor := "DB_Inputs".Sensors["cInBG3127"], + stInOutHMI := "DB_Interface_HMI".arSensors["cInBG3127"], + stInOutControlUnitCabinet := "DB_MachineGlobal".stStateMainOF1); + END_REGION ; + REGION BG3130 + #fbSensorInput["cInBG3130"](sInName := 'BG3130', + xInSensor := "BG3130", + stInOutSensor := "DB_Inputs".Sensors["cInBG3130"], + stInOutHMI := "DB_Interface_HMI".arSensors["cInBG3130"], + stInOutControlUnitCabinet := "DB_MachineGlobal".stStateMainOF1); + END_REGION ; + REGION BG3131 + #fbSensorInput["cInBG3131"](sInName := 'BG3131', + xInSensor := "BG3131", + stInOutSensor := "DB_Inputs".Sensors["cInBG3131"], + stInOutHMI := "DB_Interface_HMI".arSensors["cInBG3131"], + stInOutControlUnitCabinet := "DB_MachineGlobal".stStateMainOF1); + END_REGION ; + REGION BG3132 + #fbSensorInput["cInBG3132"](sInName := 'BG3132', + xInSensor := "BG3132", + stInOutSensor := "DB_Inputs".Sensors["cInBG3132"], + stInOutHMI := "DB_Interface_HMI".arSensors["cInBG3132"], + stInOutControlUnitCabinet := "DB_MachineGlobal".stStateMainOF1); + END_REGION ; + REGION BG3133 + #fbSensorInput["cInBG3133"](sInName := 'BG3133', + xInSensor := "BG3133", + stInOutSensor := "DB_Inputs".Sensors["cInBG3133"], + stInOutHMI := "DB_Interface_HMI".arSensors["cInBG3133"], + stInOutControlUnitCabinet := "DB_MachineGlobal".stStateMainOF1); + END_REGION ; + REGION BG3134 + #fbSensorInput["cInBG3134"](sInName := 'BG3134', + xInSensor := "BG3134", + stInOutSensor := "DB_Inputs".Sensors["cInBG3134"], + stInOutHMI := "DB_Interface_HMI".arSensors["cInBG3134"], + stInOutControlUnitCabinet := "DB_MachineGlobal".stStateMainOF1); + END_REGION ; + REGION BG3135 + #fbSensorInput["cInBG3135"](sInName := 'BG3135', + xInSensor := "BG3135", + stInOutSensor := "DB_Inputs".Sensors["cInBG3135"], + stInOutHMI := "DB_Interface_HMI".arSensors["cInBG3135"], + stInOutControlUnitCabinet := "DB_MachineGlobal".stStateMainOF1); + END_REGION ; + REGION BG3136 + #fbSensorInput["cInBG3136"](sInName := 'BG3136', + xInSensor := "BG3136", + stInOutSensor := "DB_Inputs".Sensors["cInBG3136"], + stInOutHMI := "DB_Interface_HMI".arSensors["cInBG3136"], + stInOutControlUnitCabinet := "DB_MachineGlobal".stStateMainOF1); + END_REGION ; + REGION BG3137 + #fbSensorInput["cInBG3137"](sInName := 'BG3137', + xInSensor := "BG3137", + stInOutSensor := "DB_Inputs".Sensors["cInBG3137"], + stInOutHMI := "DB_Interface_HMI".arSensors["cInBG3137"], + stInOutControlUnitCabinet := "DB_MachineGlobal".stStateMainOF1); + END_REGION ; + + REGION BG3140 + #fbSensorInput["cInBG3140"](sInName := 'BG3140', + xInSensor := "BG3140", + stInOutSensor := "DB_Inputs".Sensors["cInBG3140"], + stInOutHMI := "DB_Interface_HMI".arSensors["cInBG3140"], + stInOutControlUnitCabinet := "DB_MachineGlobal".stStateMainOF1); + END_REGION ; + REGION BG3142 + #fbSensorInput["cInBG3142"](sInName := 'BG3142', + xInSensor := "BG3142", + stInOutSensor := "DB_Inputs".Sensors["cInBG3142"], + stInOutHMI := "DB_Interface_HMI".arSensors["cInBG3142"], + stInOutControlUnitCabinet := "DB_MachineGlobal".stStateMainOF1); + END_REGION ; + REGION BG3143 + #fbSensorInput["cInBG3143"](sInName := 'BG3143', + xInSensor := "BG3143", + tInJamR := t#2s, + stInOutSensor := "DB_Inputs".Sensors["cInBG3143"], + stInOutHMI := "DB_Interface_HMI".arSensors["cInBG3143"], + stInOutControlUnitCabinet := "DB_MachineGlobal".stStateMainOF1); + END_REGION ; + REGION BG3144 + #fbSensorInput["cInBG3144"](sInName := 'BG3144', + xInSensor := "BG3144", + stInOutSensor := "DB_Inputs".Sensors["cInBG3144"], + stInOutHMI := "DB_Interface_HMI".arSensors["cInBG3144"], + stInOutControlUnitCabinet := "DB_MachineGlobal".stStateMainOF1); + END_REGION ; + REGION BG3146 + #fbSensorInput["cInBG3146"](sInName := 'BG3146', + xInSensor := "BG3146", + stInOutSensor := "DB_Inputs".Sensors["cInBG3146"], + stInOutHMI := "DB_Interface_HMI".arSensors["cInBG3146"], + stInOutControlUnitCabinet := "DB_MachineGlobal".stStateMainOF1); + END_REGION ; + REGION BG3147 + #fbSensorInput["cInBG3147"](sInName := 'BG3147', + xInSensor := "BG3147", + tInJamR := t#2s, + stInOutSensor := "DB_Inputs".Sensors["cInBG3147"], + stInOutHMI := "DB_Interface_HMI".arSensors["cInBG3147"], + stInOutControlUnitCabinet := "DB_MachineGlobal".stStateMainOF1); + END_REGION ; + + REGION BG3150 + #fbSensorInput["cInBG3150"](sInName := 'BG3150', + xInSensor := "BG3150", + stInOutSensor := "DB_Inputs".Sensors["cInBG3150"], + stInOutHMI := "DB_Interface_HMI".arSensors["cInBG3150"], + stInOutControlUnitCabinet := "DB_MachineGlobal".stStateMainOF1); + END_REGION ; + REGION BG3152 + #fbSensorInput["cInBG3152"](sInName := 'BG3152', + xInSensor := "BG3152", + stInOutSensor := "DB_Inputs".Sensors["cInBG3152"], + stInOutHMI := "DB_Interface_HMI".arSensors["cInBG3152"], + stInOutControlUnitCabinet := "DB_MachineGlobal".stStateMainOF1); + END_REGION ; + REGION BG3153 + #fbSensorInput["cInBG3153"](sInName := 'BG3153', + xInSensor := "BG3153", + tInJamR := t#2s, + stInOutSensor := "DB_Inputs".Sensors["cInBG3153"], + stInOutHMI := "DB_Interface_HMI".arSensors["cInBG3153"], + stInOutControlUnitCabinet := "DB_MachineGlobal".stStateMainOF1); + END_REGION ; + REGION BG3154 + #fbSensorInput["cInBG3154"](sInName := 'BG3154', + xInSensor := "BG3154", + stInOutSensor := "DB_Inputs".Sensors["cInBG3154"], + stInOutHMI := "DB_Interface_HMI".arSensors["cInBG3154"], + stInOutControlUnitCabinet := "DB_MachineGlobal".stStateMainOF1); + END_REGION ; + REGION BG3156 + #fbSensorInput["cInBG3156"](sInName := 'BG3156', + xInSensor := "BG3156", + stInOutSensor := "DB_Inputs".Sensors["cInBG3156"], + stInOutHMI := "DB_Interface_HMI".arSensors["cInBG3156"], + stInOutControlUnitCabinet := "DB_MachineGlobal".stStateMainOF1); + END_REGION ; + REGION BG3157 + #fbSensorInput["cInBG3157"](sInName := 'BG3157', + xInSensor := "BG3157", + tInJamR := t#2s, + stInOutSensor := "DB_Inputs".Sensors["cInBG3157"], + stInOutHMI := "DB_Interface_HMI".arSensors["cInBG3157"], + stInOutControlUnitCabinet := "DB_MachineGlobal".stStateMainOF1); + END_REGION ; + + + REGION BG3240 + #fbSensorInput["cInBG3240"](sInName := 'BG3240', + xInSensor := "BG3240", + stInOutSensor := "DB_Inputs".Sensors["cInBG3240"], + stInOutHMI := "DB_Interface_HMI".arSensors["cInBG3240"], + stInOutControlUnitCabinet := "DB_MachineGlobal".stStateMainOF1); + END_REGION ; + REGION BG3241 + #fbSensorInput["cInBG3241"](sInName := 'BG3241', + xInSensor := "BG3241", + stInOutSensor := "DB_Inputs".Sensors["cInBG3241"], + stInOutHMI := "DB_Interface_HMI".arSensors["cInBG3241"], + stInOutControlUnitCabinet := "DB_MachineGlobal".stStateMainOF1); + END_REGION ; + REGION BG3242 + #fbSensorInput["cInBG3242"](sInName := 'BG3242', + xInSensor := "BG3242", + stInOutSensor := "DB_Inputs".Sensors["cInBG3242"], + stInOutHMI := "DB_Interface_HMI".arSensors["cInBG3242"], + stInOutControlUnitCabinet := "DB_MachineGlobal".stStateMainOF1); + END_REGION ; + REGION BG3243 + #fbSensorInput["cInBG3243"](sInName := 'BG3243', + xInSensor := "BG3243", + stInOutSensor := "DB_Inputs".Sensors["cInBG3243"], + stInOutHMI := "DB_Interface_HMI".arSensors["cInBG3243"], + stInOutControlUnitCabinet := "DB_MachineGlobal".stStateMainOF1); + END_REGION ; + REGION BG3245 + #fbSensorInput["cInBG3245"](sInName := 'BG3245', + xInSensor := "BG3245", + stInOutSensor := "DB_Inputs".Sensors["cInBG3245"], + stInOutHMI := "DB_Interface_HMI".arSensors["cInBG3245"], + stInOutControlUnitCabinet := "DB_MachineGlobal".stStateMainOF1); + END_REGION ; + REGION BG3246 + #fbSensorInput["cInBG3246"](sInName := 'BG3246', + xInSensor := "BG3246", + stInOutSensor := "DB_Inputs".Sensors["cInBG3246"], + stInOutHMI := "DB_Interface_HMI".arSensors["cInBG3246"], + stInOutControlUnitCabinet := "DB_MachineGlobal".stStateMainOF1); + END_REGION ; + REGION BG3250 + #fbSensorInput["cInBG3250"](sInName := 'BG3250', + xInSensor := "BG3250", + stInOutSensor := "DB_Inputs".Sensors["cInBG3250"], + stInOutHMI := "DB_Interface_HMI".arSensors["cInBG3250"], + stInOutControlUnitCabinet := "DB_MachineGlobal".stStateMainOF1); + END_REGION ; + REGION BG3251 + #fbSensorInput["cInBG3251"](sInName := 'BG3251', + xInSensor := "BG3251", + stInOutSensor := "DB_Inputs".Sensors["cInBG3251"], + stInOutHMI := "DB_Interface_HMI".arSensors["cInBG3251"], + stInOutControlUnitCabinet := "DB_MachineGlobal".stStateMainOF1); + END_REGION ; + REGION BG3252 + #fbSensorInput["cInBG3252"](sInName := 'BG3252', + xInSensor := "BG3252", + stInOutSensor := "DB_Inputs".Sensors["cInBG3252"], + stInOutHMI := "DB_Interface_HMI".arSensors["cInBG3252"], + stInOutControlUnitCabinet := "DB_MachineGlobal".stStateMainOF1); + END_REGION ; + REGION BG3253 + #fbSensorInput["cInBG3253"](sInName := 'BG3253', + xInSensor := "BG3253", + stInOutSensor := "DB_Inputs".Sensors["cInBG3253"], + stInOutHMI := "DB_Interface_HMI".arSensors["cInBG3253"], + stInOutControlUnitCabinet := "DB_MachineGlobal".stStateMainOF1); + END_REGION ; + REGION BG3254 + #fbSensorInput["cInBG3254"](sInName := 'BG3254', + xInSensor := "BG3254", + stInOutSensor := "DB_Inputs".Sensors["cInBG3254"], + stInOutHMI := "DB_Interface_HMI".arSensors["cInBG3254"], + stInOutControlUnitCabinet := "DB_MachineGlobal".stStateMainOF1); + END_REGION ; + REGION BG3257 + #fbSensorInput["cInBG3257"](sInName := 'BG3257', + xInSensor := "BG3257", + stInOutSensor := "DB_Inputs".Sensors["cInBG3257"], + stInOutHMI := "DB_Interface_HMI".arSensors["cInBG3257"], + stInOutControlUnitCabinet := "DB_MachineGlobal".stStateMainOF1); + END_REGION ; + REGION BG3260 + #fbSensorInput["cInBG3260"](sInName := 'BG3260', + xInSensor := "BG3260", + stInOutSensor := "DB_Inputs".Sensors["cInBG3260"], + stInOutHMI := "DB_Interface_HMI".arSensors["cInBG3260"], + stInOutControlUnitCabinet := "DB_MachineGlobal".stStateMainOF1); + END_REGION ; + REGION BG3261 + #fbSensorInput["cInBG3261"](sInName := 'BG3261', + xInSensor := "BG3261", + stInOutSensor := "DB_Inputs".Sensors["cInBG3261"], + stInOutHMI := "DB_Interface_HMI".arSensors["cInBG3261"], + stInOutControlUnitCabinet := "DB_MachineGlobal".stStateMainOF1); + END_REGION ; + REGION BG3262 + #fbSensorInput["cInBG3262"](sInName := 'BG3262', + xInSensor := "BG3262", + stInOutSensor := "DB_Inputs".Sensors["cInBG3262"], + stInOutHMI := "DB_Interface_HMI".arSensors["cInBG3262"], + stInOutControlUnitCabinet := "DB_MachineGlobal".stStateMainOF1); + END_REGION ; + REGION BG3263 + #fbSensorInput["cInBG3263"](sInName := 'BG3263', + xInSensor := "BG3263", + stInOutSensor := "DB_Inputs".Sensors["cInBG3263"], + stInOutHMI := "DB_Interface_HMI".arSensors["cInBG3263"], + stInOutControlUnitCabinet := "DB_MachineGlobal".stStateMainOF1); + END_REGION ; + REGION BG3264 + #fbSensorInput["cInBG3264"](sInName := 'BG3264', + xInSensor := "BG3264", + stInOutSensor := "DB_Inputs".Sensors["cInBG3264"], + stInOutHMI := "DB_Interface_HMI".arSensors["cInBG3264"], + stInOutControlUnitCabinet := "DB_MachineGlobal".stStateMainOF1); + END_REGION ; + REGION BG3265 + #fbSensorInput["cInBG3265"](sInName := 'BG3265', + xInSensor := "BG3265", + stInOutSensor := "DB_Inputs".Sensors["cInBG3265"], + stInOutHMI := "DB_Interface_HMI".arSensors["cInBG3265"], + stInOutControlUnitCabinet := "DB_MachineGlobal".stStateMainOF1); + END_REGION ; + REGION BG3270 + #fbSensorInput["cInBG3270"](sInName := 'BG3270', + xInSensor := "BG3270", + stInOutSensor := "DB_Inputs".Sensors["cInBG3270"], + stInOutHMI := "DB_Interface_HMI".arSensors["cInBG3270"], + stInOutControlUnitCabinet := "DB_MachineGlobal".stStateMainOF1); + END_REGION ; + REGION BG3271 + #fbSensorInput["cInBG3271"](sInName := 'BG3271', + xInSensor := "BG3271", + stInOutSensor := "DB_Inputs".Sensors["cInBG3271"], + stInOutHMI := "DB_Interface_HMI".arSensors["cInBG3271"], + stInOutControlUnitCabinet := "DB_MachineGlobal".stStateMainOF1); + END_REGION ; + REGION BG3272 + #fbSensorInput["cInBG3272"](sInName := 'BG3272', + xInSensor := "BG3272", + stInOutSensor := "DB_Inputs".Sensors["cInBG3272"], + stInOutHMI := "DB_Interface_HMI".arSensors["cInBG3272"], + stInOutControlUnitCabinet := "DB_MachineGlobal".stStateMainOF1); + END_REGION ; + REGION BG3273 + #fbSensorInput["cInBG3273"](sInName := 'BG3273', + xInSensor := "BG3273", + stInOutSensor := "DB_Inputs".Sensors["cInBG3273"], + stInOutHMI := "DB_Interface_HMI".arSensors["cInBG3273"], + stInOutControlUnitCabinet := "DB_MachineGlobal".stStateMainOF1); + END_REGION ; + REGION BG3274 + #fbSensorInput["cInBG3274"](sInName := 'BG3274', + xInSensor := "BG3274", + stInOutSensor := "DB_Inputs".Sensors["cInBG3274"], + stInOutHMI := "DB_Interface_HMI".arSensors["cInBG3274"], + stInOutControlUnitCabinet := "DB_MachineGlobal".stStateMainOF1); + END_REGION ; + REGION BG3275 + #fbSensorInput["cInBG3275"](sInName := 'BG3275', + xInSensor := "BG3275", + stInOutSensor := "DB_Inputs".Sensors["cInBG3275"], + stInOutHMI := "DB_Interface_HMI".arSensors["cInBG3275"], + stInOutControlUnitCabinet := "DB_MachineGlobal".stStateMainOF1); + END_REGION ; + REGION BG3276 + #fbSensorInput["cInBG3276"](sInName := 'BG3276', + xInSensor := "BG3276", + stInOutSensor := "DB_Inputs".Sensors["cInBG3276"], + stInOutHMI := "DB_Interface_HMI".arSensors["cInBG3276"], + stInOutControlUnitCabinet := "DB_MachineGlobal".stStateMainOF1); + END_REGION ; + REGION BG3280 + #fbSensorInput["cInBG3280"](sInName := 'BG3280', + xInSensor := "BG3280", + stInOutSensor := "DB_Inputs".Sensors["cInBG3280"], + stInOutHMI := "DB_Interface_HMI".arSensors["cInBG3280"], + stInOutControlUnitCabinet := "DB_MachineGlobal".stStateMainOF1); + END_REGION ; + REGION BG3281 + #fbSensorInput["cInBG3281"](sInName := 'BG3281', + xInSensor := "BG3281", + stInOutSensor := "DB_Inputs".Sensors["cInBG3281"], + stInOutHMI := "DB_Interface_HMI".arSensors["cInBG3281"], + stInOutControlUnitCabinet := "DB_MachineGlobal".stStateMainOF1); + END_REGION ; + REGION BG3282 + #fbSensorInput["cInBG3282"](sInName := 'BG3282', + xInSensor := "BG3282", + stInOutSensor := "DB_Inputs".Sensors["cInBG3282"], + stInOutHMI := "DB_Interface_HMI".arSensors["cInBG3282"], + stInOutControlUnitCabinet := "DB_MachineGlobal".stStateMainOF1); + END_REGION ; + REGION BG3283 + #fbSensorInput["cInBG3283"](sInName := 'BG3283', + xInSensor := "BG3283", + stInOutSensor := "DB_Inputs".Sensors["cInBG3283"], + stInOutHMI := "DB_Interface_HMI".arSensors["cInBG3283"], + stInOutControlUnitCabinet := "DB_MachineGlobal".stStateMainOF1); + END_REGION ; + REGION BG3284 + #fbSensorInput["cInBG3284"](sInName := 'BG3284', + xInSensor := "BG3284", + stInOutSensor := "DB_Inputs".Sensors["cInBG3284"], + stInOutHMI := "DB_Interface_HMI".arSensors["cInBG3284"], + stInOutControlUnitCabinet := "DB_MachineGlobal".stStateMainOF1); + END_REGION ; + REGION BG3285 + #fbSensorInput["cInBG3285"](sInName := 'BG3285', + xInSensor := "BG3285", + stInOutSensor := "DB_Inputs".Sensors["cInBG3285"], + stInOutHMI := "DB_Interface_HMI".arSensors["cInBG3285"], + stInOutControlUnitCabinet := "DB_MachineGlobal".stStateMainOF1); + END_REGION ; + REGION BG3286 + #fbSensorInput["cInBG3286"](sInName := 'BG3286', + xInSensor := "BG3286", + stInOutSensor := "DB_Inputs".Sensors["cInBG3286"], + stInOutHMI := "DB_Interface_HMI".arSensors["cInBG3286"], + stInOutControlUnitCabinet := "DB_MachineGlobal".stStateMainOF1); + END_REGION ; + REGION BG3290 + #fbSensorInput["cInBG3290"](sInName := 'BG3290', + xInSensor := "BG3290", + stInOutSensor := "DB_Inputs".Sensors["cInBG3290"], + stInOutHMI := "DB_Interface_HMI".arSensors["cInBG3290"], + stInOutControlUnitCabinet := "DB_MachineGlobal".stStateMainOF1); + END_REGION ; + REGION BG3291 + #fbSensorInput["cInBG3291"](sInName := 'BG3291', + xInSensor := "BG3291", + stInOutSensor := "DB_Inputs".Sensors["cInBG3291"], + stInOutHMI := "DB_Interface_HMI".arSensors["cInBG3291"], + stInOutControlUnitCabinet := "DB_MachineGlobal".stStateMainOF1); + END_REGION ; + REGION BG3292 + #fbSensorInput["cInBG3292"](sInName := 'BG3292', + xInSensor := "BG3292", + stInOutSensor := "DB_Inputs".Sensors["cInBG3292"], + stInOutHMI := "DB_Interface_HMI".arSensors["cInBG3292"], + stInOutControlUnitCabinet := "DB_MachineGlobal".stStateMainOF1); + END_REGION ; + REGION BG3293 + #fbSensorInput["cInBG3293"](sInName := 'BG3293', + xInSensor := "BG3293", + stInOutSensor := "DB_Inputs".Sensors["cInBG3293"], + stInOutHMI := "DB_Interface_HMI".arSensors["cInBG3293"], + stInOutControlUnitCabinet := "DB_MachineGlobal".stStateMainOF1); + END_REGION ; + REGION BG3294 + #fbSensorInput["cInBG3294"](sInName := 'BG3294', + xInSensor := "BG3294", + stInOutSensor := "DB_Inputs".Sensors["cInBG3294"], + stInOutHMI := "DB_Interface_HMI".arSensors["cInBG3294"], + stInOutControlUnitCabinet := "DB_MachineGlobal".stStateMainOF1); + END_REGION ; + REGION BG3295 + #fbSensorInput["cInBG3295"](sInName := 'BG3295', + xInSensor := "BG3295", + stInOutSensor := "DB_Inputs".Sensors["cInBG3295"], + stInOutHMI := "DB_Interface_HMI".arSensors["cInBG3295"], + stInOutControlUnitCabinet := "DB_MachineGlobal".stStateMainOF1); + END_REGION ; + REGION BG3296 + #fbSensorInput["cInBG3296"](sInName := 'BG3296', + xInSensor := "BG3296", + stInOutSensor := "DB_Inputs".Sensors["cInBG3296"], + stInOutHMI := "DB_Interface_HMI".arSensors["cInBG3296"], + stInOutControlUnitCabinet := "DB_MachineGlobal".stStateMainOF1); + END_REGION ; + REGION BG3297 + #fbSensorInput["cInBG3297"](sInName := 'BG3297', + xInSensor := "BG3297", + stInOutSensor := "DB_Inputs".Sensors["cInBG3297"], + stInOutHMI := "DB_Interface_HMI".arSensors["cInBG3297"], + stInOutControlUnitCabinet := "DB_MachineGlobal".stStateMainOF1); + END_REGION ; + REGION BG3300 + #fbSensorInput["cInBG3300"](sInName := 'BG3300', + xInSensor := "BG3300", + stInOutSensor := "DB_Inputs".Sensors["cInBG3300"], + stInOutHMI := "DB_Interface_HMI".arSensors["cInBG3300"], + stInOutControlUnitCabinet := "DB_MachineGlobal".stStateMainOF1); + END_REGION ; + REGION BG3304 + #fbSensorInput["cInBG3304"](sInName := 'BG3304', + xInSensor := "BG3304", + stInOutSensor := "DB_Inputs".Sensors["cInBG3304"], + stInOutHMI := "DB_Interface_HMI".arSensors["cInBG3304"], + stInOutControlUnitCabinet := "DB_MachineGlobal".stStateMainOF1); + END_REGION ; + REGION BG3305 + #fbSensorInput["cInBG3305"](sInName := 'BG3305', + xInSensor := "BG3305", + stInOutSensor := "DB_Inputs".Sensors["cInBG3305"], + stInOutHMI := "DB_Interface_HMI".arSensors["cInBG3305"], + stInOutControlUnitCabinet := "DB_MachineGlobal".stStateMainOF1); + END_REGION ; + REGION BG3306 + #fbSensorInput["cInBG3306"](sInName := 'BG3306', + xInSensor := "BG3306", + stInOutSensor := "DB_Inputs".Sensors["cInBG3306"], + stInOutHMI := "DB_Interface_HMI".arSensors["cInBG3306"], + stInOutControlUnitCabinet := "DB_MachineGlobal".stStateMainOF1); + END_REGION ; + REGION BG3310 + #fbSensorInput["cInBG3310"](sInName := 'BG3310', + xInSensor := "BG3310", + stInOutSensor := "DB_Inputs".Sensors["cInBG3310"], + stInOutHMI := "DB_Interface_HMI".arSensors["cInBG3310"], + stInOutControlUnitCabinet := "DB_MachineGlobal".stStateMainOF1); + END_REGION ; + REGION BG3311 + #fbSensorInput["cInBG3311"](sInName := 'BG3311', + xInSensor := "BG3311", + stInOutSensor := "DB_Inputs".Sensors["cInBG3311"], + stInOutHMI := "DB_Interface_HMI".arSensors["cInBG3311"], + stInOutControlUnitCabinet := "DB_MachineGlobal".stStateMainOF1); + END_REGION ; + REGION BG3312 + #fbSensorInput["cInBG3312"](sInName := 'BG3312', + xInSensor := "BG3312", + stInOutSensor := "DB_Inputs".Sensors["cInBG3312"], + stInOutHMI := "DB_Interface_HMI".arSensors["cInBG3312"], + stInOutControlUnitCabinet := "DB_MachineGlobal".stStateMainOF1); + END_REGION ; + REGION BG3313 + #fbSensorInput["cInBG3313"](sInName := 'BG3313', + xInSensor := "BG3313", + stInOutSensor := "DB_Inputs".Sensors["cInBG3313"], + stInOutHMI := "DB_Interface_HMI".arSensors["cInBG3313"], + stInOutControlUnitCabinet := "DB_MachineGlobal".stStateMainOF1); + END_REGION ; + REGION BG3314 + #fbSensorInput["cInBG3314"](sInName := 'BG3314', + xInSensor := "BG3314", + stInOutSensor := "DB_Inputs".Sensors["cInBG3314"], + stInOutHMI := "DB_Interface_HMI".arSensors["cInBG3314"], + stInOutControlUnitCabinet := "DB_MachineGlobal".stStateMainOF1); + END_REGION ; + REGION BG3315 + #fbSensorInput["cInBG3315"](sInName := 'BG3315', + xInSensor := "BG3315", + stInOutSensor := "DB_Inputs".Sensors["cInBG3315"], + stInOutHMI := "DB_Interface_HMI".arSensors["cInBG3315"], + stInOutControlUnitCabinet := "DB_MachineGlobal".stStateMainOF1); + END_REGION ; + REGION BG3320 + #fbSensorInput["cInBG3320"](sInName := 'BG3320', + xInSensor := "BG3320", + stInOutSensor := "DB_Inputs".Sensors["cInBG3320"], + stInOutHMI := "DB_Interface_HMI".arSensors["cInBG3320"], + stInOutControlUnitCabinet := "DB_MachineGlobal".stStateMainOF1); + END_REGION ; + REGION BG3321 + #fbSensorInput["cInBG3321"](sInName := 'BG3321', + xInSensor := "BG3321", + stInOutSensor := "DB_Inputs".Sensors["cInBG3321"], + stInOutHMI := "DB_Interface_HMI".arSensors["cInBG3321"], + stInOutControlUnitCabinet := "DB_MachineGlobal".stStateMainOF1); + END_REGION ; + REGION BG3322 + #fbSensorInput["cInBG3322"](sInName := 'BG3322', + xInSensor := "BG3322", + stInOutSensor := "DB_Inputs".Sensors["cInBG3322"], + stInOutHMI := "DB_Interface_HMI".arSensors["cInBG3322"], + stInOutControlUnitCabinet := "DB_MachineGlobal".stStateMainOF1); + END_REGION ; + REGION BG3323 + #fbSensorInput["cInBG3323"](sInName := 'BG3323', + xInSensor := "BG3323", + stInOutSensor := "DB_Inputs".Sensors["cInBG3323"], + stInOutHMI := "DB_Interface_HMI".arSensors["cInBG3323"], + stInOutControlUnitCabinet := "DB_MachineGlobal".stStateMainOF1); + END_REGION ; + REGION BG3324 + #fbSensorInput["cInBG3324"](sInName := 'BG3324', + xInSensor := "BG3324", + stInOutSensor := "DB_Inputs".Sensors["cInBG3324"], + stInOutHMI := "DB_Interface_HMI".arSensors["cInBG3324"], + stInOutControlUnitCabinet := "DB_MachineGlobal".stStateMainOF1); + END_REGION ; + REGION BG3325 + #fbSensorInput["cInBG3325"](sInName := 'BG3325', + xInSensor := "BG3325", + stInOutSensor := "DB_Inputs".Sensors["cInBG3325"], + stInOutHMI := "DB_Interface_HMI".arSensors["cInBG3325"], + stInOutControlUnitCabinet := "DB_MachineGlobal".stStateMainOF1); + END_REGION ; + REGION BG3330 + #fbSensorInput["cInBG3330"](sInName := 'BG3330', + xInSensor := "BG3330", + stInOutSensor := "DB_Inputs".Sensors["cInBG3330"], + stInOutHMI := "DB_Interface_HMI".arSensors["cInBG3330"], + stInOutControlUnitCabinet := "DB_MachineGlobal".stStateMainOF1); + END_REGION ; + REGION BG3331 + #fbSensorInput["cInBG3331"](sInName := 'BG3331', + xInSensor := "BG3331", + stInOutSensor := "DB_Inputs".Sensors["cInBG3331"], + stInOutHMI := "DB_Interface_HMI".arSensors["cInBG3331"], + stInOutControlUnitCabinet := "DB_MachineGlobal".stStateMainOF1); + END_REGION ; + REGION BG3332 + #fbSensorInput["cInBG3332"](sInName := 'BG3332', + xInSensor := "BG3332", + stInOutSensor := "DB_Inputs".Sensors["cInBG3332"], + stInOutHMI := "DB_Interface_HMI".arSensors["cInBG3332"], + stInOutControlUnitCabinet := "DB_MachineGlobal".stStateMainOF1); + END_REGION ; + REGION BG3334 + #fbSensorInput["cInBG3334"](sInName := 'BG3334', + xInSensor := "BG3334", + stInOutSensor := "DB_Inputs".Sensors["cInBG3334"], + stInOutHMI := "DB_Interface_HMI".arSensors["cInBG3334"], + stInOutControlUnitCabinet := "DB_MachineGlobal".stStateMainOF1); + END_REGION ; + REGION BG3335 + #fbSensorInput["cInBG3335"](sInName := 'BG3335', + xInSensor := "BG3335", + stInOutSensor := "DB_Inputs".Sensors["cInBG3335"], + stInOutHMI := "DB_Interface_HMI".arSensors["cInBG3335"], + stInOutControlUnitCabinet := "DB_MachineGlobal".stStateMainOF1); + END_REGION ; + REGION BG3337 + #fbSensorInput["cInBG3337"](sInName := 'BG3337', + xInSensor := "BG3337", + stInOutSensor := "DB_Inputs".Sensors["cInBG3337"], + stInOutHMI := "DB_Interface_HMI".arSensors["cInBG3337"], + stInOutControlUnitCabinet := "DB_MachineGlobal".stStateMainOF1); + END_REGION ; + REGION BG3340 + #fbSensorInput["cInBG3340"](sInName := 'BG3340', + xInSensor := "BG3340", + stInOutSensor := "DB_Inputs".Sensors["cInBG3340"], + stInOutHMI := "DB_Interface_HMI".arSensors["cInBG3340"], + stInOutControlUnitCabinet := "DB_MachineGlobal".stStateMainOF1); + END_REGION ; + REGION BG3341 + #fbSensorInput["cInBG3341"](sInName := 'BG3341', + xInSensor := "BG3341", + stInOutSensor := "DB_Inputs".Sensors["cInBG3341"], + stInOutHMI := "DB_Interface_HMI".arSensors["cInBG3341"], + stInOutControlUnitCabinet := "DB_MachineGlobal".stStateMainOF1); + END_REGION ; + REGION BG3342 + #fbSensorInput["cInBG3342"](sInName := 'BG3342', + xInSensor := "BG3342", + stInOutSensor := "DB_Inputs".Sensors["cInBG3342"], + stInOutHMI := "DB_Interface_HMI".arSensors["cInBG3342"], + stInOutControlUnitCabinet := "DB_MachineGlobal".stStateMainOF1); + END_REGION ; + REGION BG3343 + #fbSensorInput["cInBG3343"](sInName := 'BG3343', + xInSensor := "BG3343", + stInOutSensor := "DB_Inputs".Sensors["cInBG3343"], + stInOutHMI := "DB_Interface_HMI".arSensors["cInBG3343"], + stInOutControlUnitCabinet := "DB_MachineGlobal".stStateMainOF1); + END_REGION ; + REGION BG3344 + #fbSensorInput["cInBG3344"](sInName := 'BG3344', + xInSensor := "BG3344", + stInOutSensor := "DB_Inputs".Sensors["cInBG3344"], + stInOutHMI := "DB_Interface_HMI".arSensors["cInBG3344"], + stInOutControlUnitCabinet := "DB_MachineGlobal".stStateMainOF1); + END_REGION ; + REGION BG3345 + #fbSensorInput["cInBG3345"](sInName := 'BG3345', + xInSensor := "BG3345", + stInOutSensor := "DB_Inputs".Sensors["cInBG3345"], + stInOutHMI := "DB_Interface_HMI".arSensors["cInBG3345"], + stInOutControlUnitCabinet := "DB_MachineGlobal".stStateMainOF1); + END_REGION ; + REGION BG3346 + #fbSensorInput["cInBG3346"](sInName := 'BG3346', + xInSensor := "BG3346", + stInOutSensor := "DB_Inputs".Sensors["cInBG3346"], + stInOutHMI := "DB_Interface_HMI".arSensors["cInBG3346"], + stInOutControlUnitCabinet := "DB_MachineGlobal".stStateMainOF1); + END_REGION ; + REGION BG3347 + #fbSensorInput["cInBG3347"](sInName := 'BG3347', + xInSensor := "BG3347", + stInOutSensor := "DB_Inputs".Sensors["cInBG3347"], + stInOutHMI := "DB_Interface_HMI".arSensors["cInBG3347"], + stInOutControlUnitCabinet := "DB_MachineGlobal".stStateMainOF1); + END_REGION ; + REGION BG3354 + #fbSensorInput["cInBG3354"](sInName := 'BG3354', + xInSensor := "BG3354", + stInOutSensor := "DB_Inputs".Sensors["cInBG3354"], + stInOutHMI := "DB_Interface_HMI".arSensors["cInBG3354"], + stInOutControlUnitCabinet := "DB_MachineGlobal".stStateMainOF1); + END_REGION ; + REGION BG3355 + #fbSensorInput["cInBG3355"](sInName := 'BG3355', + xInSensor := "BG3355", + stInOutSensor := "DB_Inputs".Sensors["cInBG3355"], + stInOutHMI := "DB_Interface_HMI".arSensors["cInBG3355"], + stInOutControlUnitCabinet := "DB_MachineGlobal".stStateMainOF1); + END_REGION ; + REGION BG3356 + #fbSensorInput["cInBG3356"](sInName := 'BG3356', + xInSensor := "BG3356", + stInOutSensor := "DB_Inputs".Sensors["cInBG3356"], + stInOutHMI := "DB_Interface_HMI".arSensors["cInBG3356"], + stInOutControlUnitCabinet := "DB_MachineGlobal".stStateMainOF1); + END_REGION ; + REGION BG3357 + #fbSensorInput["cInBG3357"](sInName := 'BG3357', + xInSensor := "BG3357", + stInOutSensor := "DB_Inputs".Sensors["cInBG3357"], + stInOutHMI := "DB_Interface_HMI".arSensors["cInBG3357"], + stInOutControlUnitCabinet := "DB_MachineGlobal".stStateMainOF1); + END_REGION ; + REGION BG4740 KEIN BOOLSCHER SENSOREINGANG + #fbSensorInput["cInBG4740"](sInName := 'BG4740', + xInSensor := "BG4740", + stInOutSensor := "DB_Inputs".Sensors["cInBG4740"], + stInOutHMI := "DB_Interface_HMI".arSensors["cInBG4740"], + stInOutControlUnitCabinet := "DB_MachineGlobal".stStateMainOF1); + END_REGION ; + REGION BG4820 KEIN BOOLSCHER SENSOREINGANG + #fbSensorInput["cInBG4820"](sInName := 'BG4820', + xInSensor := "BG4820", + stInOutSensor := "DB_Inputs".Sensors["cInBG4820"], + stInOutHMI := "DB_Interface_HMI".arSensors["cInBG4820"], + stInOutControlUnitCabinet := "DB_MachineGlobal".stStateMainOF1); + END_REGION ; + REGION BG5060 KEIN BOOLSCHER SENSOREINGANG + #fbSensorInput["cInBG5060"](sInName := 'BG5060', + xInSensor := "BG5060", + stInOutSensor := "DB_Inputs".Sensors["cInBG5060"], + stInOutHMI := "DB_Interface_HMI".arSensors["cInBG5060"], + stInOutControlUnitCabinet := "DB_MachineGlobal".stStateMainOF1); + END_REGION ; + REGION BG5140 KEIN BOOLSCHER SENSOREINGANG + #fbSensorInput["cInBG5140"](sInName := 'BG5140', + xInSensor := "BG5140", + stInOutSensor := "DB_Inputs".Sensors["cInBG5140"], + stInOutHMI := "DB_Interface_HMI".arSensors["cInBG5140"], + stInOutControlUnitCabinet := "DB_MachineGlobal".stStateMainOF1); + END_REGION ; + + REGION BG3007 + #fbSensorInput["cInBG3007"](sInName := 'BG3007', + xInSensor := "BG3007", + stInOutSensor := "DB_Inputs".Sensors["cInBG3007"], + stInOutHMI := "DB_Interface_HMI".arSensors["cInBG3007"], + stInOutControlUnitCabinet := "DB_MachineGlobal".stStateMainOF1); + END_REGION ; + + REGION BG3316 + #fbSensorInput["cInBG3316"](sInName := 'BG3316', + xInSensor := "BG3316", + stInOutSensor := "DB_Inputs".Sensors["cInBG3316"], + stInOutHMI := "DB_Interface_HMI".arSensors["cInBG3316"], + stInOutControlUnitCabinet := "DB_MachineGlobal".stStateMainOF1); + END_REGION ; + + REGION BG3301 + #fbSensorInput["cInBG3301"](sInName := 'BG3301', + xInSensor := "BG3301", + stInOutSensor := "DB_Inputs".Sensors["cInBG3301"], + stInOutHMI := "DB_Interface_HMI".arSensors["cInBG3301"], + stInOutControlUnitCabinet := "DB_MachineGlobal".stStateMainOF1); + END_REGION ; + + + // REGION Warnungen beim Erkennen von Flackern werfen + // FOR #idx := 1 TO "cNoSensors" DO + // // Nur der erste Fehler am Tag wird gemeldet um vollschreiben der MMC zu verhindern + // IF #fbSensorInput[#idx].xOutFlickerError AND #fbSensorInput[#idx].nOutCntFlicker = 1 THEN + // #tFlicker := TRUE; + // EXIT; + // END_IF; + // END_FOR; + + // IF #idx > "cNoSensors" OR #idx < 1 THEN + // #idx := 1; + // #tFlicker := FALSE; + // END_IF; + + // END_REGION + +END_FUNCTION_BLOCK + diff --git a/=A01+UH01-KF00/Programmbausteine/050_Sensors/fbCallSensors_DB.xml b/=A01+UH01-KF00/Programmbausteine/050_Sensors/fbCallSensors_DB.xml new file mode 100644 index 0000000..4b498aa --- /dev/null +++ b/=A01+UH01-KF00/Programmbausteine/050_Sensors/fbCallSensors_DB.xml @@ -0,0 +1,75 @@ + + + + + + FB_CallSensors + FB + +
+
+
+ + +
+
+ + + true + + +
+ + fbCallSensors_DB + + 19 + DB + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + \ No newline at end of file diff --git a/=A01+UH01-KF00/Programmbausteine/075_PreMain/FB_PreMain.scl b/=A01+UH01-KF00/Programmbausteine/075_PreMain/FB_PreMain.scl new file mode 100644 index 0000000..1c35bcc --- /dev/null +++ b/=A01+UH01-KF00/Programmbausteine/075_PreMain/FB_PreMain.scl @@ -0,0 +1,1020 @@ +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 + diff --git a/=A01+UH01-KF00/Programmbausteine/075_PreMain/fbPreMain_DB.xml b/=A01+UH01-KF00/Programmbausteine/075_PreMain/fbPreMain_DB.xml new file mode 100644 index 0000000..2a2d78a --- /dev/null +++ b/=A01+UH01-KF00/Programmbausteine/075_PreMain/fbPreMain_DB.xml @@ -0,0 +1,270 @@ + + + + + + FB_PreMain + FB + +
+
+
+ + +
+
+ + + true + + + + + + + + true + + + + + true + + + + + true + + + + + true + + + + + true + + + + + true + + + + + true + + + + + true + + + + + true + + + + + true + + + + + true + + + + + true + + + + + true + + + + + true + + + + + true + + + + + true + + + + + true + + + + + true + + + + + true + + + + + true + + + + + true + + + + + true + + + + + true + + + + + true + + + + + true + + + + + true + + + + + true + + + + + true + + + + + true + + + + + + true + + + + + + + true + + + + + true + + + + +
+ + + 0 + + + + + 4 + + +
+
+
+ + + + + + true + + + + + true + + +
+ + fbPreMain_DB + + 16 + DB + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + \ No newline at end of file diff --git a/=A01+UH01-KF00/Programmbausteine/100_Main/FB_Main.scl b/=A01+UH01-KF00/Programmbausteine/100_Main/FB_Main.scl new file mode 100644 index 0000000..b73886a --- /dev/null +++ b/=A01+UH01-KF00/Programmbausteine/100_Main/FB_Main.scl @@ -0,0 +1,3100 @@ +FUNCTION_BLOCK "FB_Main" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + VAR_IN_OUT + stInOutControlUnitCabinetOF1 : "UDT_MainState"; + stInOutControlUnitCabinetOF2 : "UDT_MainState"; + END_VAR + + VAR + fbCarousel0101 : "FB_Conveyor"; // Eingangskreisel + fbCarousel0102 : "FB_Conveyor"; // Ausgangskreisel + fbConveyor0103 : "FB_Conveyor"; // Bürsten Zufahrt LS1 + fbCarousel0104 : "FB_Conveyor"; // Kreisel LS1 + fbConveyor0106 : "FB_Conveyor"; // Bürsten Abfuhr LS1 + fbConveyor0107 : "FB_Conveyor"; // Bürsten Zufahrt LS2 + fbCarousel0108 : "FB_Conveyor"; + fbConveyor0110 : "FB_Conveyor"; // Bürsten Abfuhr LS2 + fbCarousel4204 : "FB_Conveyor"; + fbConveyor4103_B : "FB_Conveyor"; // Bürsten Highway Loaded to Storage + fbConveyor4203_B : "FB_Conveyor"; // Bürsten Highway Empty to Storage + fbConveyor4302_A : "FB_Conveyor"; // Bürsten Highway Empty to Inbound + fbConveyor4402_A : "FB_Conveyor"; // Bürsten Highway Loaded to AMR + fbLoadingBoom1 : "FB_LoadingBoom_INBOUND"; + fbLoadingBoom2 : "FB_LoadingBoom_INBOUND"; + rTrig_IBN_KREISEL {InstructionName := 'R_TRIG'; LibVersion := '1.0'} : R_TRIG; + xKreiselmerker : Bool; // IBN + arBarcodeReader { S7_SetPoint := 'False'} : Array[1.."cNoScanner"] of "FB_BarcodeReaderCognex"; + END_VAR + VAR RETAIN + arCognexInterface { S7_SetPoint := 'False'} : Array[1.."cNoScanner"] of "stCognexInterface"; + END_VAR + VAR + stCognexInterfaceDummy : "stCognexInterface"; + END_VAR + VAR RETAIN + stConvStationsTro101 { S7_SetPoint := 'False'} : "stConveyorStations"; // 1.1.1 + stConvStationsTro102 : "stConveyorStations"; + END_VAR + VAR + stCognexIntfTro105 { S7_SetPoint := 'False'} : "stCognexInterface"; + stCognexIntfTro110 : "stCognexInterface"; + TRO100 : "FB_ILS_MTRO_1Sep"; + TRO101_IN : "FB_ILS_MTRO_1Sep"; + TRO101 : "FB_EmptyCarrBuffer"; + TRO102_IN : "FB_ILS_MTRO_1Sep"; + TRO102 : "FB_EmptyCarrBuffer"; + TRO103 : "FB_ILS_MTRO_1Sep"; + TRO104 : "FB_ILS_MTRO_1Sep"; + TRO105 : "FB_ILS_MTRO_1Sep_SSCC"; + TRO106 : "FB_ILS_MTRO_1Sep"; + TRO107 : "FB_ILS_MTRO_1Sep1Swi"; + TRO108 : "FB_ILS_MTRO_1Sep"; + TRO109 : "FB_ILS_MTRO_1Sep"; + TRO110 : "FB_ILS_MTRO_1Sep_SSCC"; + TRO111 : "FB_ILS_MTRO_1Sep"; + TRO112 : "FB_ILS_MTRO_1Sep1Swi"; + TRO113 : "FB_ILS_MTRO_1Sep"; + TRO114 { S7_SetPoint := 'False'} : "FB_ILS_MTRO_1Sep1Swi"; + TRO115 : "FB_ILS_MTRO_Vario"; + TRO116 { S7_SetPoint := 'False'} : "FB_ILS_MTRO_1Sep"; + TRO117 : "FB_ILS_MTRO_1Sep"; + TRO120 { S7_SetPoint := 'False'} : "FB_ILS_MTRO_Vario"; + TRO121 : "FB_ILS_MTRO_Vario"; + TRO122 : "FB_ILS_MTRO_1Sep"; + TRO123 { S7_SetPoint := 'False'} : "FB_ILS_MTRO_Vario"; + TRO124 : "FB_ILS_MTRO_1Sep1Swi"; + TRO125 : "FB_ILS_MTRO_1Sep"; + TRO126 { S7_SetPoint := 'False'} : "FB_ILS_MTRO_Vario"; + TRO127 { S7_SetPoint := 'False'} : "FB_ILS_MTRO_Vario"; + TRO128 { S7_SetPoint := 'False'} : "FB_ILS_MTRO_Vario"; + TRO129 : "FB_ILS_MTRO_1Sep"; + TRO130 : "FB_ILS_MTRO_1Sep"; + TRO131 { S7_SetPoint := 'False'} : "FB_ILS_MTRO_Vario"; + TRO132 : "FB_ILS_MTRO_1Sep"; + TRO133 { S7_SetPoint := 'False'} : "FB_ILS_MTRO_Vario"; + TRO134 { S7_SetPoint := 'False'} : "FB_ILS_MTRO_Vario"; + rTrig_ClarificationButton {InstructionName := 'R_TRIG'; LibVersion := '1.0'} : R_TRIG; + rTrig_LengthMeasurement {InstructionName := 'R_TRIG'; LibVersion := '1.0'} : R_TRIG; + rTimeResult : LReal; + rTimeMem : LReal; + xHighwayPrio124 : Bool; + xHighwayPrio130 : Bool; + xLineTro101 : Int; + xLineTro102 : Int; + nBarcodeEmpty : DInt; + xReInit : Bool; + rTrigReInit {InstructionName := 'R_TRIG'; LibVersion := '1.0'} : R_TRIG; + stTelegramDReqM_TRO110 : "UDT_TelegramData_Send"; + xTest : Bool; + tOfBürstentakt4103_B {InstructionName := 'TOF_TIME'; LibVersion := '1.0'} : TOF_TIME; + tOfBürstentakt4203_B {InstructionName := 'TOF_TIME'; LibVersion := '1.0'} : TOF_TIME; + tOfBürstentakt4302_A {InstructionName := 'TOF_TIME'; LibVersion := '1.0'} : TOF_TIME; + tOfBürstentakt4402_A {InstructionName := 'TOF_TIME'; LibVersion := '1.0'} : TOF_TIME; + xBrushFull4103_B : Bool; + xBrushFull4203_B : Bool; + xBrushFull4302_A : Bool; + xBrushFull4402_A : Bool; + END_VAR + + VAR_TEMP + nActCar : Int; + nActNo101 : Int; + nActNo102 : Int; + nNiu : DInt; + stGenerateCarrier : "stCarrier"; + nCounter1 : DInt; + xResult1 : Bool; + nIdx : Int; + nIdx2 : Int; + nFound : Int; + stEmptyCarrier : "stCarrier"; + stEmptyCarrierData : "stJamData"; + arTmpStorageData101 : Array[1..5] of "stStorageData"; + arTmpCarrier : Array[1..1] of "stCarrier"; // Platzhalter + arTmpCarrierBufferExit : Array[1..70] of "stCarrier"; + stHMISwitchPlaceholder : "UDT_UnloadingStation"; + idx : Int; + arEmptyStorageLine_1 : Int; + arEmptyStorageLine : Array[1..1] of "stCarrier"; + arDummyEventCorrectionInfo : Array[0..1] of "stEventCorrectionInfo"; + t_Automatik_OF1 : Bool; + t_Automatik_OF2 : Bool; + stTmpJamDataBufferEntry : "stJamData"; + tmpPlaceHolderLaneStatus : Array[0..4] of String; + arStCarrierLeaveControl : Array[1..1] of "stCarrier"; + stJamDataLeaveControl : "stJamData"; + arStCarrier4104 : Array[1..1] of "stCarrier"; + stJamData4104 : "stJamData"; + sLengthInfo : String; + stDummy : "stCarrier"; + END_VAR + + +BEGIN + REGION Automatik + #t_Automatik_OF1 := "DB_InterfaceSafety".stFromSafety.stMainContactorsUH01.Q AND "DB_InterfaceSafety".stFromSafety.stMainContactorsUC0110.Q AND "DB_InterfaceSafety".stFromSafety.stMainContactorsUC0111.Q;//#stInOutControlUnitCabinetOF1.xRunning AND NOT #stInOutControlUnitCabinetOF1.xStarting AND "DB_InterfaceSafety".stFromSafety.EStopMainOF1.Q; + #t_Automatik_OF2 := "DB_InterfaceSafety".stFromSafety.stMainContactorsUC011.Q;//#stInOutControlUnitCabinetOF2.xRunning AND NOT #stInOutControlUnitCabinetOF2.xStarting AND "DB_InterfaceSafety".stFromSafety.EStopMainOF2.Q; + + END_REGION + + REGION Reinitialisieren + IF NOT #xReInit THEN + #xReInit := TRUE; + END_IF; + + #rTrigReInit(CLK := #xReInit); + + IF #rTrigReInit.Q THEN + + #TRO100.nState := "DB_GLOB_TroState".arTroState["cMainTro100"]; + #TRO101_IN.nState := "DB_GLOB_TroState".arTroState["cMainTro101_IN"]; + #TRO102_IN.nState := "DB_GLOB_TroState".arTroState["cMainTro102_IN"]; + #TRO101.nStateA := "DB_GLOB_TroState".arTroState["cMainTro101"]; + #TRO102.nStateA := "DB_GLOB_TroState".arTroState["cMainTro102"]; + #TRO103.nState := "DB_GLOB_TroState".arTroState["cMainTro103"]; + #TRO104.nState := "DB_GLOB_TroState".arTroState["cMainTro104"]; + #TRO105.nState := "DB_GLOB_TroState".arTroState["cMainTro105"]; + #TRO106.nState := "DB_GLOB_TroState".arTroState["cMainTro106"]; + #TRO107.nState := "DB_GLOB_TroState".arTroState["cMainTro107"]; + #TRO108.nState := "DB_GLOB_TroState".arTroState["cMainTro108"]; + #TRO109.nState := "DB_GLOB_TroState".arTroState["cMainTro109"]; + #TRO110.nState := "DB_GLOB_TroState".arTroState["cMainTro110"]; + #TRO111.nState := "DB_GLOB_TroState".arTroState["cMainTro111"]; + #TRO112.nState := "DB_GLOB_TroState".arTroState["cMainTro112"]; + #TRO113.nState := "DB_GLOB_TroState".arTroState["cMainTro113"]; + #TRO114.nState := "DB_GLOB_TroState".arTroState["cMainTro114"]; + #TRO115.nState := "DB_GLOB_TroState".arTroState["cMainTro115"]; + #TRO116.nState := "DB_GLOB_TroState".arTroState["cMainTro116"]; + #TRO117.nState := "DB_GLOB_TroState".arTroState["cMainTro117"]; + // #TRO118.nState := "DB_GLOB_TroState".arTroState["cMainTro118"]; //gibt es nicht + // #TRO119.nState := "DB_GLOB_TroState".arTroState["cMainTro119"]; //gibt es nicht + #TRO120.nState := "DB_GLOB_TroState".arTroState["cMainTro120"]; + #TRO121.nState := "DB_GLOB_TroState".arTroState["cMainTro121"]; + #TRO122.nState := "DB_GLOB_TroState".arTroState["cMainTro122"]; + #TRO123.nState := "DB_GLOB_TroState".arTroState["cMainTro123"]; + #TRO124.nState := "DB_GLOB_TroState".arTroState["cMainTro124"]; + #TRO125.nState := "DB_GLOB_TroState".arTroState["cMainTro125"]; + #TRO126.nState := "DB_GLOB_TroState".arTroState["cMainTro126"]; + #TRO127.nState := "DB_GLOB_TroState".arTroState["cMainTro127"]; + #TRO128.nState := "DB_GLOB_TroState".arTroState["cMainTro128"]; + #TRO129.nState := "DB_GLOB_TroState".arTroState["cMainTro129"]; + #TRO130.nState := "DB_GLOB_TroState".arTroState["cMainTro130"]; + #TRO131.nState := "DB_GLOB_TroState".arTroState["cMainTro131"]; + // #TRO132.nState := "DB_GLOB_TroState".arTroState["cMainTro132"]; //gibt es nicht + #TRO133.nState := "DB_GLOB_TroState".arTroState["cMainTro133"]; + #TRO134.nState := "DB_GLOB_TroState".arTroState["cMainTro134"]; + + #fbLoadingBoom1.fbWorkSation.xStopperFull := "DB_GLOB_StopperState".xStopperLoadingBoom1; + #fbLoadingBoom2.fbWorkSation.xStopperFull := "DB_GLOB_StopperState".xStopperLoadingBoom2; + + END_IF; + END_REGION + + REGION Conveyor + + REGION KR-M0101 (Entry Conv) + #fbCarousel0101.xInRequestRun := + "fbPreMain_DB".fbStateMainOF1.nConveyorStartUpCounter = 100 OR + #stInOutControlUnitCabinetOF1.xRestart OR + #TRO100.xOutCarouselReq OR + #TRO101_IN.xOutCarouselReq OR + #TRO102_IN.xOutCarouselReq; + + #fbCarousel0101.Settings.tEnergySafeTime := "cTimeEnergySafe"; + #fbCarousel0101.Settings.xGridActive := TRUE; + #fbCarousel0101.Settings.sMotorProtectName := 'FC0060'; + #fbCarousel0101.Settings.sGridSenName := 'BG3347'; + #fbCarousel0101(xInEnabled := "cTodoTRUE", + xInGridSen := "DB_Inputs".Sensors["cInBG3347"].xDirectSensor, + xInGridQuit := "SF0031" OR "SF0002", + xInAutomaticMode := #t_Automatik_OF1, + xInMotorProtectionMonitoring := "FC0060", + xOutPowerContactor => "MA0060", + stInOutControlUnitCabinet := #stInOutControlUnitCabinetOF1, + stInOutInterfaceHMI := "DB_Interface_HMI".#stConveyors.stCarousel.stCar0101); + END_REGION + + REGION KR-M0102 (Exit Conv) + #fbCarousel0102.xInRequestRun := + "fbPreMain_DB".fbStateMainOF1.nConveyorStartUpCounter = 100 OR + #stInOutControlUnitCabinetOF1.xRestart OR + #TRO101.xOutCarouselReq OR + #TRO102.xOutCarouselReq OR + #TRO106.xOutCarouselReq OR + #TRO107.xOutCarouselReq1 OR + #TRO111.xOutCarouselReq OR + #TRO112.xOutCarouselReq1 OR + #TRO113.xOutCarouselReq OR + #TRO114.xOutCarouselReq1 OR + #TRO117.xOutCarouselReq; + + #fbCarousel0102.Settings.tEnergySafeTime := "cTimeEnergySafe"; + #fbCarousel0102.Settings.xGridActive := TRUE; + #fbCarousel0102.Settings.sMotorProtectName := 'FC0061'; + #fbCarousel0102.Settings.sGridSenName := 'BG3342'; + #fbCarousel0102(xInEnabled := "cTodoTRUE", + xInGridSen := "DB_Inputs".Sensors["cInBG3342"].xDirectSensor, + xInGridQuit := "SF0033" OR "SF0002", + xInAutomaticMode := #t_Automatik_OF1, + xInMotorProtectionMonitoring := "FC0061", + xOutPowerContactor => "MA0061", + stInOutControlUnitCabinet := #stInOutControlUnitCabinetOF1, + stInOutInterfaceHMI := "DB_Interface_HMI".stConveyors.stCarousel.stCar0102); + END_REGION + + REGION KR-M0103 (Loading Boom 1 - Entry Conv) + #fbConveyor0103.xInRequestRun := + "fbPreMain_DB".fbStateMainOF1.nConveyorStartUpCounter = 100 OR + #stInOutControlUnitCabinetOF1.xRestart OR + #TRO103.xOutCarouselReq; + + #fbConveyor0103.Settings.tEnergySafeTime := "cTimeEnergySafe"; + #fbConveyor0103.Settings.xGridActive := TRUE; + #fbConveyor0103.Settings.sMotorProtectName := 'FC0062'; + #fbConveyor0103.Settings.sGridSenName := 'BG3270'; + #fbConveyor0103(xInEnabled := "cTodoTRUE", + xInGridSen := "DB_Inputs".Sensors["cInBG3270"].xDirectSensor, + xInGridQuit := "SF0043" OR "SF0002", + xInAutomaticMode := #t_Automatik_OF1, + xInMotorProtectionMonitoring := "FC0062", + xOutPowerContactor => "MA0062", + stInOutControlUnitCabinet := #stInOutControlUnitCabinetOF1, + stInOutInterfaceHMI := "DB_Interface_HMI".stConveyors.stCarousel.stCar0103); + END_REGION + + REGION KR-M0104 (Car Boom1) + + // "MB0325" := "IBN".xBumperReset OR "SF0002"; + + #fbCarousel0104.xInRequestRun := + #stInOutControlUnitCabinetOF1.xRestart OR + #TRO103.xOutCarouselReq(* OR "DB_JamBoom1".stJamStopper.arCarrier[1].bStatus.%X0 *)OR + #TRO104.xOutCarouselReq OR + "DB_Inputs".Sensors["cInBG0286"].xDirectEdgeNeg OR "DB_Inputs".Sensors["cInBG0285"].xDirectEdgeNeg OR + (#fbLoadingBoom1.stOutStopper.xStopper2 AND NOT "SF0306") OR (#fbLoadingBoom1.stOutStopper.xStopper1Finger AND "SF0306"); + + #fbCarousel0104.Settings.tEnergySafeTime := "cTimeEnergySafe"; + #fbCarousel0104.Settings.xGridActive := TRUE; + #fbCarousel0104.Settings.sMotorProtectName := 'FC0320'; + #fbCarousel0104.Settings.sGridSenName := 'BG0284'; + #fbCarousel0104(xInEnabled := TRUE, + xInAutomaticMode := #t_Automatik_OF1 AND (#fbLoadingBoom1.xOutReady OR #fbLoadingBoom1.xOutMoveReq), + xInMotorProtectionMonitoring := "FC0320", + xInGridSen := "DB_Inputs".Sensors["cInBG0284"].xDirectSensor, + xInGridQuit := "SF0043" OR "SF0002", + xOutPowerContactor => "MA0320", + stInOutControlUnitCabinet := #stInOutControlUnitCabinetOF1, + stInOutInterfaceHMI := "DB_Interface_HMI".stConveyors.stCarousel.stCar0104); + END_REGION + + REGION KR-M0106 (Loading Boom 1 - Exit Conv) + #fbConveyor0106.xInRequestRun := + "fbPreMain_DB".fbStateMainOF1.nConveyorStartUpCounter = 100 OR + #stInOutControlUnitCabinetOF1.xRestart OR + (#fbLoadingBoom1.stOutStopper.xStopper2 AND NOT "SF0306") OR + (#fbLoadingBoom1.stOutStopper.xStopper1Finger AND "SF0306") OR + "DB_Inputs".Sensors["cInBG0285"].xDirectEdgePos; + + #fbConveyor0106.Settings.tEnergySafeTime := "cTimeEnergySafe"; + #fbConveyor0106.Settings.xGridActive := FALSE;//TRUE; + #fbConveyor0106.Settings.sMotorProtectName := 'FC0064'; + #fbConveyor0106.Settings.sGridSenName := 'BG3273'; + #fbConveyor0106(xInEnabled := NOT "DB_Inputs".Sensors["cInBG3276"].xJam,//"cTodoTRUE", + xInGridSen := "DB_Inputs".Sensors["cInBG3273"].xDirectSensor, + xInGridQuit := "SF0043" OR "SF0002", + xInAutomaticMode := #t_Automatik_OF1, + xInMotorProtectionMonitoring := "FC0064", + xOutPowerContactor => "MA0064", + stInOutControlUnitCabinet := #stInOutControlUnitCabinetOF1, + stInOutInterfaceHMI := "DB_Interface_HMI".stConveyors.stCarousel.stCar0106); + END_REGION + + REGION KR-M0107 (Loading Boom 2 - Entry Conv) + #fbConveyor0107.xInRequestRun := + "fbPreMain_DB".fbStateMainOF1.nConveyorStartUpCounter = 100 OR + #stInOutControlUnitCabinetOF1.xRestart OR + #TRO108.xOutCarouselReq; + + #fbConveyor0107.Settings.tEnergySafeTime := "cTimeEnergySafe"; + #fbConveyor0107.Settings.xGridActive := TRUE; + #fbConveyor0107.Settings.sMotorProtectName := 'FC0065'; + #fbConveyor0107.Settings.sGridSenName := 'BG3284'; + #fbConveyor0107(xInEnabled := "cTodoTRUE", + xInGridSen := "DB_Inputs".Sensors["cInBG3284"].xDirectSensor, + xInGridQuit := "SF0054" OR "SF0002", + xInAutomaticMode := #t_Automatik_OF1, + xInMotorProtectionMonitoring := "FC0065", + xOutPowerContactor => "MA0065", + stInOutControlUnitCabinet := #stInOutControlUnitCabinetOF1, + stInOutInterfaceHMI := "DB_Interface_HMI".stConveyors.stCarousel.stCar0107); + END_REGION + + REGION KR-M0108 (Car Boom2) + + // "MB0325" := "IBN".xBumperReset OR "SF0002"; + + #fbCarousel0108.xInRequestRun := + #stInOutControlUnitCabinetOF1.xRestart OR + #TRO108.xOutCarouselReq(* OR "DB_JamBoom2".stJamStopper.arCarrier[1].bStatus.%X0 *)OR + #TRO109.xOutCarouselReq OR + "DB_Inputs".Sensors["cInBG0346"].xDirectEdgeNeg OR "DB_Inputs".Sensors["cInBG0345"].xDirectEdgeNeg OR + (#fbLoadingBoom2.stOutStopper.xStopper2 AND NOT "SF0366") OR (#fbLoadingBoom2.stOutStopper.xStopper1Finger AND "SF0366"); + + #fbCarousel0108.Settings.tEnergySafeTime := "cTimeEnergySafe"; + #fbCarousel0108.Settings.xGridActive := TRUE; + #fbCarousel0108.Settings.sMotorProtectName := 'FC0380'; + #fbCarousel0108.Settings.sGridSenName := 'BG0344'; + #fbCarousel0108(xInEnabled := TRUE, + xInAutomaticMode := #t_Automatik_OF1 AND (#fbLoadingBoom2.xOutReady OR #fbLoadingBoom2.xOutMoveReq), + xInMotorProtectionMonitoring := "FC0380", + xInGridSen := "DB_Inputs".Sensors["cInBG0344"].xDirectSensor, + xInGridQuit := "SF0054" OR "SF0002", + xOutPowerContactor => "MA0380", + stInOutControlUnitCabinet := #stInOutControlUnitCabinetOF1, + stInOutInterfaceHMI := "DB_Interface_HMI".stConveyors.stCarousel.stCar0108); + END_REGION + + REGION KR-M0110 (Loading Boom 2 - Exit Conv) + #fbConveyor0110.xInRequestRun := + "fbPreMain_DB".fbStateMainOF1.nConveyorStartUpCounter = 100 OR + #stInOutControlUnitCabinetOF1.xRestart OR + (#fbLoadingBoom2.stOutStopper.xStopper2 AND NOT "SF0366") OR + (#fbLoadingBoom2.stOutStopper.xStopper1Finger AND "SF0366") OR + "DB_Inputs".Sensors["cInBG0345"].xDirectEdgePos; + + #fbConveyor0110.Settings.tEnergySafeTime := "cTimeEnergySafe"; + #fbConveyor0110.Settings.xGridActive := FALSE;//TRUE; + #fbConveyor0110.Settings.sMotorProtectName := 'FC0067'; + #fbConveyor0110.Settings.sGridSenName := 'BG3285'; + #fbConveyor0110(xInEnabled := NOT "DB_Inputs".Sensors["cInBG3294"].xJam,//"cTodoTRUE", + xInGridSen := "DB_Inputs".Sensors["cInBG3285"].xDirectSensor, + xInGridQuit := "SF0054" OR "SF0002", + xInAutomaticMode := #t_Automatik_OF1, + xInMotorProtectionMonitoring := "FC0067", + xOutPowerContactor => "MA0067", + stInOutControlUnitCabinet := #stInOutControlUnitCabinetOF1, + stInOutInterfaceHMI := "DB_Interface_HMI".stConveyors.stCarousel.stCar0110); + END_REGION + + REGION KR-M4204 (Kreisel Highway) + #fbCarousel4204.Settings.tEnergySafeTime := T#90s; + #fbCarousel4204.Settings.tStartingTime := T#50ms; + #fbCarousel4204.Settings.xGridActive := TRUE; + #fbCarousel4204.xInRequestRun := (* "fbPreMain_DB".fbStateMain.nConveyorStartUpCounter = 100 *)#stInOutControlUnitCabinetOF2.xRestart OR + #stInOutControlUnitCabinetOF2.xRestart OR + #TRO124.xOutCarouselReq1 OR #TRO124.xOutCarouselReq2 OR + #TRO125.xOutCarouselReq OR + #TRO129.xOutCarouselReq OR + #TRO130.xOutCarouselReq; + + #fbCarousel4204.Settings.tEnergySafeTime := "cTimeEnergySafe"; + #fbCarousel4204.Settings.xGridActive := TRUE; + #fbCarousel4204.Settings.sMotorProtectName := 'FC0140'; + #fbCarousel4204.Settings.sGridSenName := 'BG3007'; + #fbCarousel4204(xInEnabled := "SF0120" AND "SF0124", + xInGridSen := "DB_Inputs".Sensors["cInBG3007"].xDirectSensor, + xInGridQuit := "SF0117" OR "SF0121", + xInAutomaticMode := #t_Automatik_OF2, + xInMotorProtectionMonitoring := "FC0140", + xOutPowerContactor => "MA0140", + stInOutControlUnitCabinet := #stInOutControlUnitCabinetOF2, + stInOutInterfaceHMI := "DB_Interface_HMI".stConveyors.stCarousel.stCar4204); + END_REGION + + REGION ILS-CV M4103_B (Bürstenförderer) + + REGION Enable und RequestRun + IF "DB_Inputs".Sensors["cInBG3143"].xJam AND "DB_Inputs".Sensors["cInBG3142"].xDbncdSensor THEN //Bürstenförderer darf nicht fahren + #fbConveyor4103_B.xInEnabled := FALSE; + #xBrushFull4103_B := TRUE; + ELSIF NOT "DB_Inputs".Sensors["cInBG3143"].xJam THEN + #fbConveyor4103_B.xInEnabled := TRUE; + #xBrushFull4103_B := FALSE; + ELSIF "DB_Inputs".Sensors["cInBG3143"].xJam AND NOT #xBrushFull4103_B THEN + #fbConveyor4103_B.xInEnabled := #tOfBürstentakt4103_B.Q; + END_IF; + + #fbConveyor4103_B.xInRequestRun := "DB_Inputs".Sensors["cInBG3140"].xDirectEdgePos; // Trigger + + #tOfBürstentakt4103_B(IN:="DB_Inputs".Sensors["cInBG3140"].xDirectEdgePos, + PT:= t#1s); + + END_REGION + + #fbConveyor4103_B.Settings.tEnergySafeTime := t#90s; //IBN todo + #fbConveyor4103_B.Settings.xGridActive := FALSE; + #fbConveyor4103_B.Settings.sMotorProtectName := 'FC0152'; + #fbConveyor4103_B(xInAutomaticMode := #t_Automatik_OF2, + xInMotorProtectionMonitoring := "FC0152", + xOutPowerContactor => "MA0152", + stInOutControlUnitCabinet := #stInOutControlUnitCabinetOF2, + stInOutInterfaceHMI := "DB_Interface_HMI".stConveyors.stCarousel.stCar4103_B); + END_REGION + + REGION ILS-CV M4203_B (Bürstenförderer) + REGION Enable und RequestRun + IF "DB_Inputs".Sensors["cInBG3147"].xJam AND "DB_Inputs".Sensors["cInBG3146"].xDbncdSensor THEN //Bürstenförderer darf nicht fahren + #fbConveyor4203_B.xInEnabled := FALSE; + #xBrushFull4203_B := TRUE; + ELSIF NOT "DB_Inputs".Sensors["cInBG3147"].xJam THEN + #fbConveyor4203_B.xInEnabled := TRUE; + #xBrushFull4203_B := FALSE; + ELSIF "DB_Inputs".Sensors["cInBG3147"].xJam AND NOT #xBrushFull4203_B THEN + #fbConveyor4203_B.xInEnabled := #tOfBürstentakt4203_B.Q; + END_IF; + + #fbConveyor4203_B.xInRequestRun := "DB_Inputs".Sensors["cInBG3144"].xDirectEdgePos; // Trigger + + #tOfBürstentakt4203_B(IN := "DB_Inputs".Sensors["cInBG3144"].xDirectEdgePos, + PT := t#1s); + + END_REGION + + #fbConveyor4203_B.Settings.tEnergySafeTime := t#90s; //IBN todo + #fbConveyor4203_B.Settings.xGridActive := FALSE; + #fbConveyor4203_B.Settings.sMotorProtectName := 'FC0153'; + #fbConveyor4203_B(xInAutomaticMode := #t_Automatik_OF2, + xInMotorProtectionMonitoring := "FC0153", + xOutPowerContactor => "MA0153", + stInOutControlUnitCabinet := #stInOutControlUnitCabinetOF2, + stInOutInterfaceHMI := "DB_Interface_HMI".stConveyors.stCarousel.stCar4203_B); + END_REGION + + REGION ILS-CV M4302_A (Bürstenförderer) + REGION Enable und RequestRun + IF "DB_Inputs".Sensors["cInBG3153"].xJam AND "DB_Inputs".Sensors["cInBG3152"].xDbncdSensor THEN //Bürstenförderer darf nicht fahren + #fbConveyor4302_A.xInEnabled := FALSE; + #xBrushFull4302_A := TRUE; + ELSIF NOT "DB_Inputs".Sensors["cInBG3153"].xJam THEN + #fbConveyor4302_A.xInEnabled := TRUE; + #xBrushFull4302_A := FALSE; + ELSIF "DB_Inputs".Sensors["cInBG3153"].xJam AND NOT #xBrushFull4302_A THEN + #fbConveyor4302_A.xInEnabled := #tOfBürstentakt4302_A.Q; + END_IF; + + #fbConveyor4302_A.xInRequestRun := "DB_Inputs".Sensors["cInBG3150"].xDirectEdgePos; // Trigger + + #tOfBürstentakt4302_A(IN := "DB_Inputs".Sensors["cInBG3150"].xDirectEdgePos, + PT := t#1s); + + END_REGION + + #fbConveyor4302_A.Settings.tEnergySafeTime := t#90s; //IBN todo + #fbConveyor4302_A.Settings.xGridActive := FALSE; + #fbConveyor4302_A.Settings.sMotorProtectName := 'FC0154'; + #fbConveyor4302_A(xInAutomaticMode := #t_Automatik_OF2, + xInMotorProtectionMonitoring := "FC0154", + xOutPowerContactor => "MA0154", + stInOutControlUnitCabinet := #stInOutControlUnitCabinetOF2, + stInOutInterfaceHMI := "DB_Interface_HMI".stConveyors.stCarousel.stCar4302_A); + END_REGION + + REGION ILS-CV M4402_A (Bürstenförderer) + REGION Enable und RequestRun + IF "DB_Inputs".Sensors["cInBG3157"].xJam AND "DB_Inputs".Sensors["cInBG3156"].xDbncdSensor THEN //Bürstenförderer darf nicht fahren + #fbConveyor4402_A.xInEnabled := FALSE; + #xBrushFull4402_A := TRUE; + ELSIF NOT "DB_Inputs".Sensors["cInBG3157"].xJam THEN + #fbConveyor4402_A.xInEnabled := TRUE; + #xBrushFull4402_A := FALSE; + ELSIF "DB_Inputs".Sensors["cInBG3157"].xJam AND NOT #xBrushFull4402_A THEN + #fbConveyor4402_A.xInEnabled := #tOfBürstentakt4402_A.Q; + END_IF; + + #fbConveyor4402_A.xInRequestRun := "DB_Inputs".Sensors["cInBG3154"].xDirectEdgePos; // Trigger + + #tOfBürstentakt4402_A(IN := "DB_Inputs".Sensors["cInBG3154"].xDirectEdgePos, + PT := t#1s); + + END_REGION + + #fbConveyor4402_A.Settings.tEnergySafeTime := t#90s; //IBN todo + #fbConveyor4402_A.Settings.xGridActive := FALSE; + #fbConveyor4402_A.Settings.sMotorProtectName := 'FC0155'; + #fbConveyor4402_A(xInAutomaticMode := #t_Automatik_OF2, + xInMotorProtectionMonitoring := "FC0155", + xOutPowerContactor => "MA0155", + stInOutControlUnitCabinet := #stInOutControlUnitCabinetOF2, + stInOutInterfaceHMI := "DB_Interface_HMI".stConveyors.stCarousel.stCar4402_A); + END_REGION + + END_REGION + + REGION LoadingBoom 1 + + REGION Eingänge + REGION UZ0110-1 + #fbLoadingBoom1.stInControl.xBtnReleaseMT1 := "SF0305"; + #fbLoadingBoom1.stInControl.xSwitchLoadingPos2 := "SF0306"; + END_REGION + + REGION UZ0110-2 + #fbLoadingBoom1.stInControl.xBtnBack := FALSE;//"SF0330"; auskommentiert für IBN aus Sicherheitsgründen + #fbLoadingBoom1.stInControl.xBtnForth := FALSE;//"SF0331"; auskommentiert für IBN aus Sicherheitsgründen + #fbLoadingBoom1.stInControl.xBtnReleaseMT2 := "SF0332"; + END_REGION + + REGION Schalter Stützfuß + #fbLoadingBoom1.stInControl.xSwitchFootUp := false;//"SF0334"; auskommentiert für IBN aus Sicherheitsgründen + #fbLoadingBoom1.stInControl.xSwitchFootDown := false;//"SF0333"; auskommentiert für IBN aus Sicherheitsgründen + END_REGION + + REGION UZ0103 + #fbLoadingBoom1.stInControl.xSwitchLightOnOff := "SF0041"; + #fbLoadingBoom1.stInControl.xBtnBoomActive := "SF0044"; + #fbLoadingBoom1.stInControl.xBtnReset := "SF0043" OR "SF0002" OR "IBN".xQuit; + END_REGION + + REGION Schaltschrank + #fbLoadingBoom1.stInControl.xSwitchFootManual := "SF0025"; + END_REGION + + REGION Signale Ladeschleife + #fbLoadingBoom1.stInBoom.xMotorProtection1 := "FC0070" AND "FC0072"; //Beides auf einen Eingang? + #fbLoadingBoom1.stInBoom.xLimitForth := "DB_Inputs".Sensors["cInBG3343"].xDirectSensor; + #fbLoadingBoom1.stInBoom.xLimitForthEmergency := "SF0051"; + #fbLoadingBoom1.stInBoom.xLimitBack := "DB_Inputs".Sensors["cInBG3344"].xDirectSensor; + #fbLoadingBoom1.stInBoom.xLimitBackEmergency := "SF0050"; + #fbLoadingBoom1.stInBoom.xBumperOk := TRUE; + END_REGION + + REGION Signale Fuß + #fbLoadingBoom1.stInFoot.xMotorProtection := "FC0321"; + #fbLoadingBoom1.stInFoot.xLimitUp := "SF0322"; + #fbLoadingBoom1.stInFoot.xLimitDown := "SF0323"; + END_REGION + + REGION Sonstiges + + #fbLoadingBoom1.stInSettings.tBoomInput := T#5s; + #fbLoadingBoom1.stInSettings.tWheelInput := T#5s; + #fbLoadingBoom1.stInSettings.tSenWaitStopper1 := T#100ms; + #fbLoadingBoom1.stInSettings.tWaitAfterReleaseStopper1 := T#1200ms; + #fbLoadingBoom1.stInSettings.tWaitBeforeSwitchStopper2 := T#4000ms; + #fbLoadingBoom1.stInSettings.tTrailingStopper2 := T#150ms; + + #fbLoadingBoom1.stInTilt.wTilt := "wTiltSensorLS1"; + #fbLoadingBoom1.stInTilt.xClock := "Clock_10Hz"; + #fbLoadingBoom1.stInTilt.tDiff := "DB_Interface_HMI".stLoadingBoom.stDataBoom1.tTiltDiff; + #fbLoadingBoom1.stInTilt.tZero := "DB_Interface_HMI".stLoadingBoom.stDataBoom1.tTiltZero; + #fbLoadingBoom1.stInTilt.nDiff := "DB_Interface_HMI".stLoadingBoom.stDataBoom1.nTiltOffset; + #fbLoadingBoom1.stInTilt.nZeroOk := "DB_Interface_HMI".stLoadingBoom.stDataBoom1.nTiltZero; + #fbLoadingBoom1.stInTilt.nTiltComp := "DB_Interface_HMI".stLoadingBoom.stDataBoom1.nTiltNullen; + #fbLoadingBoom1.stInTilt.xComp := "DB_Interface_HMI".stLoadingBoom.stDataBoom1.xTiltTeach; + + "DB_Interface_HMI".stLoadingBoom.stDataBoom1.xTiltTeachReq := #fbLoadingBoom1.fbTiltSensor.xOutTeachNec; + + #fbLoadingBoom1.stInDistance.wDistance := "wDistanceSensorLS1"; + #fbLoadingBoom1.stInDistance.nStartSlow := 2510; // Format z.B. 2799 für 279,9mm + #fbLoadingBoom1.stInDistance.nStartFast := 2520; + #fbLoadingBoom1.stInDistance.nDistanceZero := "DB_Interface_HMI".stLoadingBoom.stDataBoom1.nDistanceZero; + #fbLoadingBoom1.stInDistance.nDiff := "DB_Interface_HMI".stLoadingBoom.stDataBoom1.nDistanceDiff; + #fbLoadingBoom1.stInDistance.tDiff := "DB_Interface_HMI".stLoadingBoom.stDataBoom1.tDistanceDiff; + #fbLoadingBoom1.stInDistance.xComp := "DB_Interface_HMI".stLoadingBoom.stDataBoom1.xDistanceTeach; + + "DB_Interface_HMI".stLoadingBoom.stDataBoom1.xDistanceTeachReq := #fbLoadingBoom1.fbDistanceFoot.xOutTeachNec; + + + + //Für Landsberg am Lech: nDistanceZero = 2460(246mm), nDiff = 250(25mm), tDiff + + + //IBN + // IF #fbLoadingBoom1.fbTiltSensor.nTiltComp = 0 THEN + //Entsrpicht in LL ungefähr dem Hallenboden, daher soll nach reinitialisieren auch wieder dieser Wert geschrieben werden + // #fbLoadingBoom1.fbTiltSensor.nTiltComp := -20; + // END_IF; + //IBN + + END_REGION + END_REGION + + + REGION CALL + #fbLoadingBoom1(stInSen2mThreshold := "DB_Inputs".Sensors["cInBG0287"], + stInSenJamEntr := "DB_Inputs".Sensors["cInBG0286"], + stInSenJamExit1 := "DB_Inputs".Sensors["cInBG0285"], + stInSenJamExit2 := "DB_Inputs".Sensors["cInBG3276"], + stInSenStopper1 := "DB_Inputs".Sensors["cInBG0282"], + stInSenStopper2 := "DB_Inputs".Sensors["cInBG0283"], + xInMachineRunning := "DB_MachineGlobal".stStateMainOF1.xRunning, + xInTrolleyInSep := #TRO104.nState >= 2500 AND #TRO104.xReleaseTrolleySep1, //to do mit welcehm Signal oder welchem Wert hier gehandhabt wird + xInSafety := "DB_InterfaceSafety".stFromSafety.EStopMainOF1.Q AND NOT "DB_InterfaceSafety".stFromSafety.EStopMainOF1.AckReq, + // xOutLedMovement => "PF0287", + xOutLight => "QA0012", + xOutBoomActive => "PF0044", + arInOutCarrierStopper := "DB_JamArea0104".stJam0104_2.arCarrier, + arInOutCarrierExit := "DB_JamArea0104".stJam0104_3.arCarrier, + stInOutCarrierExit := "DB_JamArea0104".stJam0104_3.stData, + xOutStopperState => "DB_GLOB_StopperState".xStopperLoadingBoom1); + "PF0287" := #fbLoadingBoom1.xOutLedMovement OR "SF0003"; + END_REGION + + + + REGION Ausgänge + "MB0282" := #fbLoadingBoom1.stOutStopper.xStopper1Clamp; //prüfen + "MB0284" := #fbLoadingBoom1.stOutStopper.xStopper1Finger; //prüfen + "MB0283" := #fbLoadingBoom1.stOutStopper.xStopper2; + + "QA0071" := #fbLoadingBoom1.stOutBoom.xBoomForth1; + "QA0073" := #fbLoadingBoom1.stOutBoom.xBoomForth2; + "MA0070" := #fbLoadingBoom1.stOutBoom.xBoomBack1; + "MA0072" := #fbLoadingBoom1.stOutBoom.xBoomBack2; + + "DQ0322" := #fbLoadingBoom1.stOutFoot.xFootUp; + "DQ0323" := #fbLoadingBoom1.stOutFoot.xFootDown; + "DQ0324" := #fbLoadingBoom1.stOutFoot.xFootSpeed1; + END_REGION + + "DB_Interface_HMI".stLoadingBoom.stDataBoom1.xBoomActive := #fbLoadingBoom1.xOutBoomActive; + "DB_Interface_HMI".stLoadingBoom.stDataBoom1.xMovement := #fbLoadingBoom1.xOutLedMovement; + + IF #fbLoadingBoom1.fbWorkSation.nActiveStopperNo = 1 THEN + "DB_Interface_HMI".stLoadingBoom.stDataBoom1.xLoadingPos := TRUE; + ELSIF #fbLoadingBoom1.fbWorkSation.nActiveStopperNo = 2 THEN + "DB_Interface_HMI".stLoadingBoom.stDataBoom1.xLoadingPos := FALSE; + END_IF; + + "DB_Interface_HMI".stLoadingBoom.stDataBoom1.nPosition.%X0 := #fbLoadingBoom1.stInBoom.xLimitBackEmergency; + "DB_Interface_HMI".stLoadingBoom.stDataBoom1.nPosition.%X1 := #fbLoadingBoom1.stInBoom.xLimitBack; + "DB_Interface_HMI".stLoadingBoom.stDataBoom1.nPosition.%X2 := NOT #fbLoadingBoom1.xAbove2m; + "DB_Interface_HMI".stLoadingBoom.stDataBoom1.nPosition.%X3 := #fbLoadingBoom1.stInBoom.xLimitForth; + "DB_Interface_HMI".stLoadingBoom.stDataBoom1.nPosition.%X4 := #fbLoadingBoom1.stInBoom.xLimitForthEmergency; + + END_REGION + + REGION LoadingBoom 2 + + REGION Eingänge + REGION UZ0111-1 + #fbLoadingBoom2.stInControl.xBtnReleaseMT1 := "SF0365"; + #fbLoadingBoom2.stInControl.xSwitchLoadingPos2 := "SF0366"; + END_REGION + + REGION UZ0111-2 + #fbLoadingBoom2.stInControl.xBtnBack := false; //"SF0390"; //auskommentiert für "IBN" aus Sicherheitsgründen + #fbLoadingBoom2.stInControl.xBtnForth := false; //"SF0391"; //auskommentiert für "IBN" aus Sicherheitsgründen + #fbLoadingBoom2.stInControl.xBtnReleaseMT2 := "SF0392"; + END_REGION + + REGION Schalter Stützfuß + #fbLoadingBoom2.stInControl.xSwitchFootUp := false;//"SF0394"; auskommentiert für IBN aus Sicherheitsgründen + #fbLoadingBoom2.stInControl.xSwitchFootDown := false;//"SF0393"; auskommentiert für IBN aus Sicherheitsgründen + END_REGION + + REGION UZ0104 + #fbLoadingBoom2.stInControl.xSwitchLightOnOff := "SF0046"; + #fbLoadingBoom2.stInControl.xBtnBoomActive := "SF0055"; + #fbLoadingBoom2.stInControl.xBtnReset := "SF0054" OR "SF0002" OR "IBN".xQuit; //sf0002 nur provisorisch + END_REGION + + REGION Schaltschrank + #fbLoadingBoom2.stInControl.xSwitchFootManual := "SF0026"; + END_REGION + + REGION Signale Ladeschleife + #fbLoadingBoom2.stInBoom.xMotorProtection1 := "FC0074" AND "FC0076"; //Beides auf einen Eingang? + #fbLoadingBoom2.stInBoom.xLimitForth := "DB_Inputs".Sensors["cInBG3345"].xDirectSensor; + #fbLoadingBoom2.stInBoom.xLimitForthEmergency := "SF0053"; + #fbLoadingBoom2.stInBoom.xLimitBack := "DB_Inputs".Sensors["cInBG3346"].xDirectSensor; + #fbLoadingBoom2.stInBoom.xLimitBackEmergency := "SF0052"; + #fbLoadingBoom2.stInBoom.xBumperOk := TRUE; + END_REGION + + REGION Signale Fuß + #fbLoadingBoom2.stInFoot.xMotorProtection := "FC0381"; + #fbLoadingBoom2.stInFoot.xLimitUp := "SF0382"; + #fbLoadingBoom2.stInFoot.xLimitDown := "SF0383"; + END_REGION + + REGION Sonstiges + + #fbLoadingBoom2.stInSettings.tBoomInput := T#5s; + #fbLoadingBoom2.stInSettings.tWheelInput := T#5s; + #fbLoadingBoom2.stInSettings.tSenWaitStopper1 := T#100ms; + #fbLoadingBoom2.stInSettings.tWaitAfterReleaseStopper1 := T#1200ms; + #fbLoadingBoom2.stInSettings.tWaitBeforeSwitchStopper2 := T#4000ms; + #fbLoadingBoom2.stInSettings.tTrailingStopper2 := T#150ms; + + #fbLoadingBoom2.stInTilt.wTilt := "wTiltSensorLS2"; + #fbLoadingBoom2.stInTilt.xClock := "Clock_10Hz"; + #fbLoadingBoom2.stInTilt.tDiff := "DB_Interface_HMI".stLoadingBoom.stDataBoom2.tTiltDiff; + #fbLoadingBoom2.stInTilt.tZero := "DB_Interface_HMI".stLoadingBoom.stDataBoom2.tTiltZero; + #fbLoadingBoom2.stInTilt.nDiff := "DB_Interface_HMI".stLoadingBoom.stDataBoom2.nTiltOffset; + #fbLoadingBoom2.stInTilt.nZeroOk := "DB_Interface_HMI".stLoadingBoom.stDataBoom2.nTiltZero; + #fbLoadingBoom2.stInTilt.nTiltComp := "DB_Interface_HMI".stLoadingBoom.stDataBoom2.nTiltNullen; + #fbLoadingBoom2.stInTilt.xComp := "DB_Interface_HMI".stLoadingBoom.stDataBoom2.xTiltTeach; + + "DB_Interface_HMI".stLoadingBoom.stDataBoom2.xTiltTeachReq := #fbLoadingBoom2.fbTiltSensor.xOutTeachNec; + + #fbLoadingBoom2.stInDistance.wDistance := "wDistanceSensorLS2"; + #fbLoadingBoom2.stInDistance.nStartSlow := 2510; // Format z.B. 2799 für 279,9mm + #fbLoadingBoom2.stInDistance.nStartFast := 2520; + #fbLoadingBoom2.stInDistance.nDistanceZero := "DB_Interface_HMI".stLoadingBoom.stDataBoom2.nDistanceZero; + #fbLoadingBoom2.stInDistance.nDiff := "DB_Interface_HMI".stLoadingBoom.stDataBoom2.nDistanceDiff; + #fbLoadingBoom2.stInDistance.tDiff := "DB_Interface_HMI".stLoadingBoom.stDataBoom2.tDistanceDiff; + #fbLoadingBoom2.stInDistance.xComp := "DB_Interface_HMI".stLoadingBoom.stDataBoom2.xDistanceTeach; + + "DB_Interface_HMI".stLoadingBoom.stDataBoom2.xDistanceTeachReq := #fbLoadingBoom2.fbDistanceFoot.xOutTeachNec; + + //Für Landsberg am Lech: nDistanceZero = 2460(246mm), nDiff = 250(25mm), tDiff + + //IBN + // IF #fbLoadingBoom1.fbTiltSensor.nTiltComp = 0 THEN + //Entsrpicht in LL ungefähr dem Hallenboden, daher soll nach reinitialisieren auch wieder dieser Wert geschrieben werden + // #fbLoadingBoom1.fbTiltSensor.nTiltComp := -20; + // END_IF; + //IBN + + END_REGION + END_REGION + + REGION CALL + #fbLoadingBoom2(stInSen2mThreshold := "DB_Inputs".Sensors["cInBG0347"], + stInSenJamEntr := "DB_Inputs".Sensors["cInBG0346"], + stInSenJamExit1 := "DB_Inputs".Sensors["cInBG0345"], + stInSenJamExit2 := "DB_Inputs".Sensors["cInBG3294"], + stInSenStopper1 := "DB_Inputs".Sensors["cInBG0342"], + stInSenStopper2 := "DB_Inputs".Sensors["cInBG0343"], + xInMachineRunning := "DB_MachineGlobal".stStateMainOF1.xRunning, + xInTrolleyInSep := #TRO109.nState >= 2500 AND #TRO109.xReleaseTrolleySep1, //to do mit welcehm Signal oder welchem Wert hier gehandhabt wird + xInSafety := "DB_InterfaceSafety".stFromSafety.EStopMainOF1.Q AND NOT "DB_InterfaceSafety".stFromSafety.EStopMainOF1.AckReq, + // xOutLedMovement => "PF0347", + xOutLight => "QA0013", + xOutBoomActive => "PF0055", + arInOutCarrierStopper := "DB_JamArea0108".stJam0108_2.arCarrier, + arInOutCarrierExit := "DB_JamArea0108".stJam0108_3.arCarrier, + stInOutCarrierExit := "DB_JamArea0108".stJam0108_3.stData, + xOutStopperState => "DB_GLOB_StopperState".xStopperLoadingBoom2); + "PF0347" := #fbLoadingBoom2.xOutLedMovement OR "SF0003"; + END_REGION + + REGION Ausgänge + "MB0342" := #fbLoadingBoom2.stOutStopper.xStopper1Clamp; //prüfen + "MB0344" := #fbLoadingBoom2.stOutStopper.xStopper1Finger; //prüfen + "MB0343" := #fbLoadingBoom2.stOutStopper.xStopper2; + + "QA0075" := #fbLoadingBoom2.stOutBoom.xBoomForth1; + "QA0077" := #fbLoadingBoom2.stOutBoom.xBoomForth2; + "MA0074" := #fbLoadingBoom2.stOutBoom.xBoomBack1; + "MA0076" := #fbLoadingBoom2.stOutBoom.xBoomBack2; + + "DQ0382" := #fbLoadingBoom2.stOutFoot.xFootUp; + "DQ0383" := #fbLoadingBoom2.stOutFoot.xFootDown; + "DQ0384" := #fbLoadingBoom2.stOutFoot.xFootSpeed1; + END_REGION + + "DB_Interface_HMI".stLoadingBoom.stDataBoom2.xBoomActive := #fbLoadingBoom2.xOutBoomActive; + "DB_Interface_HMI".stLoadingBoom.stDataBoom2.xMovement := #fbLoadingBoom2.xOutLedMovement; + + IF #fbLoadingBoom2.fbWorkSation.nActiveStopperNo = 1 THEN + "DB_Interface_HMI".stLoadingBoom.stDataBoom2.xLoadingPos := TRUE; + ELSIF #fbLoadingBoom2.fbWorkSation.nActiveStopperNo = 2 THEN + "DB_Interface_HMI".stLoadingBoom.stDataBoom2.xLoadingPos := FALSE; + END_IF; + + "DB_Interface_HMI".stLoadingBoom.stDataBoom2.nPosition.%X0 := #fbLoadingBoom2.stInBoom.xLimitBackEmergency; + "DB_Interface_HMI".stLoadingBoom.stDataBoom2.nPosition.%X1 := #fbLoadingBoom2.stInBoom.xLimitBack; + "DB_Interface_HMI".stLoadingBoom.stDataBoom2.nPosition.%X2 := NOT #fbLoadingBoom2.xAbove2m; + "DB_Interface_HMI".stLoadingBoom.stDataBoom2.nPosition.%X3 := #fbLoadingBoom2.stInBoom.xLimitForth; + "DB_Interface_HMI".stLoadingBoom.stDataBoom2.nPosition.%X4 := #fbLoadingBoom2.stInBoom.xLimitForthEmergency; + + END_REGION + + REGION Empty Carrier Buffer + + REGION Buffer Entscheidung + + IF #TRO101.xOutFull AND #TRO102.xOutFull THEN + #TRO101.xInPause := TRUE; + #TRO102.xInPause := TRUE; + ELSIF #TRO101.nOutFillLevel > #TRO102.nOutFillLevel THEN + #TRO101.xInPause := TRUE;//true + #TRO102.xInPause := FALSE; + ELSE + #TRO101.xInPause := FALSE; + #TRO102.xInPause := FALSE; + END_IF; + END_REGION + + REGION TRO101 (Empty Buffer rechts) + + REGION TRO 101_IN(1Sep) + + #TRO101_IN.stInSeparator1.Settings.nSeparatorNo := 999; + #TRO101_IN.stInSeparator1.Settings.tDelayToNextItem := "TimeForSepWaiting_Short"; + #TRO101_IN.stInSeparator1.Settings.tTrailingTime := t#100ms; + #TRO101_IN.stInSeparator1.Settings.tHandlingTime := t#50ms; + #TRO101_IN.stInSeparator1.Settings.tJam := "TimeForSepJam"; + #TRO101_IN.stInSeparator1.Settings.xPluggedConfirm := FALSE; + #TRO101_IN.stInSeparator1.Settings.xPluggedNullBT := FALSE; + // #TRO101_IN.stInSeparator1.Settings.xPluggedJam := TRUE; //siehe weiter unten + #TRO101_IN.stInSeparator1.Settings.xPluggedPart := FALSE; + #TRO101_IN.stInSeparator1.Settings.xPluggedScanner := FALSE; + #TRO101_IN.stInSeparator1.stSenInSep := "DB_Inputs".Sensors["cInBG3246"]; + // #TRO101_IN.stInSenJam2 := "DB_Inputs".Sensors["cInBG3245"];//siehe weiter unten + + #TRO101_IN.stInPriorityManager.xReleaseOk := TRUE; //braucht keine Vorfahrtsregelung + #TRO101_IN.stInSettings.xIsBorner := TRUE; + #TRO101_IN.stInSettings.nBornerDest := "cDestInboundLS"; + + IF #TRO101.xOutBypass THEN + #TRO101_IN.stInSeparator1.Settings.xPluggedJam := TRUE; //IBN zum Klicken + #TRO101_IN.stInSenJam2 := "DB_Inputs".Sensors["cInBG3245"];//IBN + #TRO101_IN(nInMainTroNo := 1000, + xInSftyOk := "DB_InterfaceSafety".stFromSafety.EStopMainOF1.Q, + xInAllRdyToStart := TRUE, + // xInCancel := "cTodoFalse", //IBN + xInCarouselRun := #fbCarousel0101.xOutConveyorFullSpeed, + xInRelease := #TRO101.xOutReadyToReceive OR (NOT #TRO101.xOutReadyToReceive AND NOT "DB_Inputs".Sensors["cInBG3245"].xDbncdSensor(* AND #fbEmptyBuffer101.nOutLineNr = 6 *)),//IBN + stInOutMachineState := #stInOutControlUnitCabinetOF1, + stInOutCognexInterface := #stCognexInterfaceDummy, + arInOutJamEntr1 := "DB_JamArea0101".stJam0101_1.arCarrier, + stInOutJamEntr1 := "DB_JamArea0101".stJam0101_1.stData, + arInOutJamExit2 := "DB_JamArea0101".stJam0101_2.arCarrier,//arTmpCarrier, + stInOutJamExit2 := "DB_JamArea0101".stJam0101_2.stData, + xOutStopper1 => "MB3246", + nOutStateLast => "DB_GLOB_TroState".arTroState["cMainTro101_IN"], + stInOutHMI := "DB_Interface_HMI".stTRO.TRO101_In); // TODO!!!!!!!!!!! + ELSE + #stTmpJamDataBufferEntry.Config.nCapacitySet := "DB_JamBuffer101".arLine[#TRO101.nOutLineNr].stData.Config.nCapacitySet; + #stTmpJamDataBufferEntry.Status.nCount := "DB_JamBuffer101".arLine[#TRO101.nOutLineNr].stData.Status.nCount; + + #TRO101_IN.stInSeparator1.Settings.xPluggedJam := FALSE; + #TRO101_IN(nInMainTroNo := 1000, + xInSftyOk := "DB_InterfaceSafety".stFromSafety.EStopMainOF1.Q, + xInAllRdyToStart := TRUE, + // xInCancel := "cTodoFalse", //IBN + xInCarouselRun := #fbCarousel0101.xOutConveyorFullSpeed, + xInRelease := #TRO101.xOutReadyToReceive(* AND #fbEmptyBuffer101.nOutLineNr = 6 *),//IBN + stInOutMachineState := #stInOutControlUnitCabinetOF1, + stInOutCognexInterface := #stCognexInterfaceDummy, + arInOutJamEntr1 := "DB_JamArea0101".stJam0101_1.arCarrier, + stInOutJamEntr1 := "DB_JamArea0101".stJam0101_1.stData, + arInOutJamExit2 := "DB_JamBuffer101".arLine[#TRO101.nOutLineNr].arCarrier,//arTmpCarrier, + stInOutJamExit2 := #stTmpJamDataBufferEntry, + xOutStopper1 => "MB3246", + nOutStateLast => "DB_GLOB_TroState".arTroState["cMainTro101_IN"], + stInOutHMI := "DB_Interface_HMI".stTRO.TRO101_In); // TODO!!!!!!!!!!! + END_IF; + + END_REGION + + REGION Separator Settings + + REGION Sep Buffer 1 + #nActNo101 := 1; + #TRO101.arInSep[#nActNo101].stSettings.nJamLength := 5;//"cStorage111ExitJam1"; + #TRO101.arInSep[#nActNo101].stSenTrolley := "DB_Inputs".Sensors["cInBG3320"]; + #TRO101.arInSep[#nActNo101].stSettings.tHandlingTime := T#200ms; + #TRO101.arInSep[#nActNo101].stSettings.tTrailingTime := T#500ms; + #TRO101.arInSep[#nActNo101].stSettings.xPluggedScanner := FALSE; + #TRO101.arInSep[#nActNo101].stSettings.tSenFree := T#1500ms; + #TRO101.arInSep[#nActNo101].stSettings.tSenWait := T#3000ms; + + END_REGION + + REGION Sep Buffer 2 + #nActNo101 := 2; + #TRO101.arInSep[#nActNo101].stSettings.nJamLength := 7; + #TRO101.arInSep[#nActNo101].stSenTrolley := "DB_Inputs".Sensors["cInBG3321"]; + #TRO101.arInSep[#nActNo101].stSettings.tHandlingTime := T#200ms; + #TRO101.arInSep[#nActNo101].stSettings.tTrailingTime := T#500ms; + #TRO101.arInSep[#nActNo101].stSettings.xPluggedScanner := FALSE; + #TRO101.arInSep[#nActNo101].stSettings.tSenFree := T#1500ms; + #TRO101.arInSep[#nActNo101].stSettings.tSenWait := T#3000ms; + END_REGION + + REGION Sep Buffer 3 + #nActNo101 := 3; + #TRO101.arInSep[#nActNo101].stSettings.nJamLength := 10; + #TRO101.arInSep[#nActNo101].stSenTrolley := "DB_Inputs".Sensors["cInBG3322"]; + #TRO101.arInSep[#nActNo101].stSettings.tHandlingTime := T#200ms; + #TRO101.arInSep[#nActNo101].stSettings.tTrailingTime := T#500ms; + #TRO101.arInSep[#nActNo101].stSettings.xPluggedScanner := FALSE; + #TRO101.arInSep[#nActNo101].stSettings.tSenFree := T#1500ms; + #TRO101.arInSep[#nActNo101].stSettings.tSenWait := T#3000ms; + END_REGION + + REGION Sep Buffer 4 + #nActNo101 := 4; + #TRO101.arInSep[#nActNo101].stSettings.nJamLength := 10; + #TRO101.arInSep[#nActNo101].stSenTrolley := "DB_Inputs".Sensors["cInBG3323"]; + #TRO101.arInSep[#nActNo101].stSettings.tHandlingTime := T#200ms; + #TRO101.arInSep[#nActNo101].stSettings.tTrailingTime := T#500ms; + #TRO101.arInSep[#nActNo101].stSettings.xPluggedScanner := FALSE; + #TRO101.arInSep[#nActNo101].stSettings.tSenFree := T#1500ms; + #TRO101.arInSep[#nActNo101].stSettings.tSenWait := T#3000ms; + END_REGION + + REGION Sep Buffer 5 + #nActNo101 := 5; + #TRO101.arInSep[#nActNo101].stSettings.nJamLength := 10; + #TRO101.arInSep[#nActNo101].stSenTrolley := "DB_Inputs".Sensors["cInBG3324"]; + #TRO101.arInSep[#nActNo101].stSettings.tHandlingTime := T#200ms; + #TRO101.arInSep[#nActNo101].stSettings.tTrailingTime := T#500ms; + #TRO101.arInSep[#nActNo101].stSettings.xPluggedScanner := FALSE; + #TRO101.arInSep[#nActNo101].stSettings.tSenFree := T#1500ms; + #TRO101.arInSep[#nActNo101].stSettings.tSenWait := T#3000ms; + END_REGION + + END_REGION + REGION Jamsensoren + #TRO101.arInJamSensor[1] := "DB_Inputs".Sensors["cInBG3250"]; + + #TRO101.arInJamSensor[2] := "DB_Inputs".Sensors["cInBG3251"]; + + #TRO101.arInJamSensor[3] := "DB_Inputs".Sensors["cInBG3252"]; + + #TRO101.arInJamSensor[4] := "DB_Inputs".Sensors["cInBG3253"]; + + #TRO101.arInJamSensor[5] := "DB_Inputs".Sensors["cInBG3254"]; + END_REGION + + REGION Dummy Zielvergabe + #stDummy.nBarcode := 1; + #stDummy.nDestination := 0; + #stDummy.bStatus.%X0 := TRUE; + + IF "DB_JamBuffer101".arLine[1].arCarrier[1] = #stDummy THEN + "DB_JamBuffer101".arLine[1].arCarrier[1].nDestination := 10; + END_IF; + + IF "DB_JamBuffer101".arLine[2].arCarrier[1] = #stDummy THEN + "DB_JamBuffer101".arLine[2].arCarrier[1].nDestination := 10; + END_IF; + + IF "DB_JamBuffer101".arLine[3].arCarrier[1] = #stDummy THEN + "DB_JamBuffer101".arLine[3].arCarrier[1].nDestination := 10; + END_IF; + + IF "DB_JamBuffer101".arLine[4].arCarrier[1] = #stDummy THEN + "DB_JamBuffer101".arLine[4].arCarrier[1].nDestination := 10; + END_IF; + + IF "DB_JamBuffer101".arLine[5].arCarrier[1] = #stDummy THEN + "DB_JamBuffer101".arLine[5].arCarrier[1].nDestination := 10; + END_IF; + + END_REGION + + + REGION TRO 101 CALL + #TRO101.xStart := "DB_TRO_TEST".TRO101Start OR ("DB_JamArea0107".stJam0107_1.stData.Status.nCount < ("DB_JamArea0107".stJam0107_1.stData.Config.nCapacitySet * 75 / 100)); //NUR FÜR TEST + #TRO101.stInSettings.nNoOfLines := 5; + #TRO101(stInPriorityManager := "DB_Prozessdaten".stPriorityManager.udt_TRO101.TroIn, + stOutPriorityManager => "DB_Prozessdaten".stPriorityManager.udt_TRO101.TroOut, + nInBufferNr := "cMainTro101", + xInBufferReq := TRUE,//IBN + xInSftyOk := "DB_InterfaceSafety".stFromSafety.EStopMainOF1.Q, + xInConveyorRunOut := #fbCarousel0102.xOutConveyorFullSpeed, + xInBufferRelease := "DB_TRO_TEST".TRO101 AND "DB_JamArea0107".stJam0107_1.stData.Status.nCount < ("cJam0107_1" / 2), + stInSenJamExit := "DB_Inputs".Sensors["cInBG3330"], + nOutActNo => #nActNo101, + stInOutControlUnitCabinet := #stInOutControlUnitCabinetOF1, + arInOutStorageLines := "DB_JamBuffer101".arLine, + arInOutJamExit := "DB_JamArea0102".stJam0102_2.arCarrier, + stInOutJamExit := "DB_JamArea0102".stJam0102_2.stData, + nOutStateLast => "DB_GLOB_TroState".arTroState["cMainTro101"], + stInOutHMI := "DB_Interface_HMI".stTRO.TRO101); + + "MB3250" := #TRO101.arOutSwitchLine[1]; + "MB3251" := #TRO101.arOutSwitchLine[2]; + "MB3252" := #TRO101.arOutSwitchLine[3]; + "MB3253" := #TRO101.arOutSwitchLine[4]; + "MB3254" := #TRO101.arOutSwitchLine[5]; + + + "MB3320" := #TRO101.arOutSeparatorStore[1]; + "MB3321" := #TRO101.arOutSeparatorStore[2]; + "MB3322" := #TRO101.arOutSeparatorStore[3]; + "MB3323" := #TRO101.arOutSeparatorStore[4]; + "MB3324" := #TRO101.arOutSeparatorStore[5]; + + END_REGION + + END_REGION + + REGION TRO102 (Empty Buffer links) + + REGION TRO 102_IN(1Sep) + #stTmpJamDataBufferEntry.Config.nCapacitySet := "DB_JamBuffer102".arLine[#TRO102.nOutLineNr].stData.Config.nCapacitySet; + #stTmpJamDataBufferEntry.Status.nCount := "DB_JamBuffer102".arLine[#TRO102.nOutLineNr].stData.Status.nCount; + + #TRO102_IN.stInSeparator1.Settings.nSeparatorNo := 999; + #TRO102_IN.stInSeparator1.Settings.tDelayToNextItem := "TimeForSepWaiting_Short"; + #TRO102_IN.stInSeparator1.Settings.tTrailingTime := t#100ms; + #TRO102_IN.stInSeparator1.Settings.tHandlingTime := t#50ms; + #TRO102_IN.stInSeparator1.Settings.tJam := "TimeForSepJam"; + #TRO102_IN.stInSeparator1.Settings.xPluggedConfirm := FALSE; + #TRO102_IN.stInSeparator1.Settings.xPluggedNullBT := FALSE; + // #TRO102_IN.stInSeparator1.Settings.xPluggedJam := TRUE; //hat nicht + #TRO102_IN.stInSeparator1.Settings.xPluggedPart := FALSE; + #TRO102_IN.stInSeparator1.Settings.xPluggedScanner := FALSE; + #TRO102_IN.stInSeparator1.stSenInSep := "DB_Inputs".Sensors["cInBG3257"]; + // #TRO102_IN.stInSenJam2 := "DB_Inputs".Sensors["cInBG3245"]; //hat nicht + + #TRO102_IN.stInPriorityManager.xReleaseOk := TRUE; //braucht keine Vorfahrtsregelung + #TRO102_IN.stInSettings.xIsBorner := TRUE; + #TRO102_IN.stInSettings.nBornerDest := "cDestInboundLS"; + + #TRO102_IN(nInMainTroNo := 1000, + xInSftyOk := "DB_InterfaceSafety".stFromSafety.EStopMainOF1.Q, + xInAllRdyToStart := TRUE, + // xInCancel := "cTodoFalse", //IBN + xInCarouselRun := #fbCarousel0101.xOutConveyorFullSpeed, + xInRelease := #TRO102.xOutReadyToReceive,//IBN + stInOutMachineState := #stInOutControlUnitCabinetOF1, + stInOutCognexInterface := #stCognexInterfaceDummy, + arInOutJamEntr1 := "DB_JamArea0101".stJam0101_2.arCarrier,//"DB_JamBuffer101".arLine[6].arCarrier, + stInOutJamEntr1 := "DB_JamArea0101".stJam0101_2.stData, + arInOutJamExit2 := "DB_JamBuffer102".arLine[#TRO102.nOutLineNr].arCarrier,//arTmpCarrier, + stInOutJamExit2 := #stTmpJamDataBufferEntry, + xOutStopper1 => "MB3257", + nOutStateLast => "DB_GLOB_TroState".arTroState["cMainTro102_IN"], + stInOutHMI := "DB_Interface_HMI".stTRO.TRO102_In); // TODO!!!!!!!!!!! + + END_REGION + + REGION Separator Settings + + REGION Sep Buffer 1 + #nActNo102 := 1; + #TRO102.arInSep[#nActNo102].stSettings.nJamLength := 5;//"cStorage111ExitJam1"; + #TRO102.arInSep[#nActNo102].stSenTrolley := "DB_Inputs".Sensors["cInBG3310"]; + #TRO102.arInSep[#nActNo102].stSettings.tHandlingTime := T#200ms; + #TRO102.arInSep[#nActNo102].stSettings.tTrailingTime := T#500ms; + #TRO102.arInSep[#nActNo102].stSettings.xPluggedScanner := FALSE; + #TRO102.arInSep[#nActNo102].stSettings.tSenFree := T#1500ms; + #TRO102.arInSep[#nActNo102].stSettings.tSenWait := T#3000ms; + END_REGION + + REGION Sep Buffer 2 + #nActNo102 := 2; + #TRO102.arInSep[#nActNo102].stSettings.nJamLength := 7; + #TRO102.arInSep[#nActNo102].stSenTrolley := "DB_Inputs".Sensors["cInBG3311"]; + #TRO102.arInSep[#nActNo102].stSettings.tHandlingTime := T#200ms; + #TRO102.arInSep[#nActNo102].stSettings.tTrailingTime := T#500ms; + #TRO102.arInSep[#nActNo102].stSettings.xPluggedScanner := FALSE; + #TRO102.arInSep[#nActNo102].stSettings.tSenFree := T#1500ms; + #TRO102.arInSep[#nActNo102].stSettings.tSenWait := T#3000ms; + END_REGION + + REGION Sep Buffer 3 + #nActNo102 := 3; + #TRO102.arInSep[#nActNo102].stSettings.nJamLength := 9; + #TRO102.arInSep[#nActNo102].stSenTrolley := "DB_Inputs".Sensors["cInBG3312"]; + #TRO102.arInSep[#nActNo102].stSettings.tHandlingTime := T#200ms; + #TRO102.arInSep[#nActNo102].stSettings.tTrailingTime := T#500ms; + #TRO102.arInSep[#nActNo102].stSettings.xPluggedScanner := FALSE; + #TRO102.arInSep[#nActNo102].stSettings.tSenFree := T#1500ms; + #TRO102.arInSep[#nActNo102].stSettings.tSenWait := T#3000ms; + END_REGION + + REGION Sep Buffer 4 + #nActNo102 := 4; + #TRO102.arInSep[#nActNo102].stSettings.nJamLength := 10; + #TRO102.arInSep[#nActNo102].stSenTrolley := "DB_Inputs".Sensors["cInBG3313"]; + #TRO102.arInSep[#nActNo102].stSettings.tHandlingTime := T#200ms; + #TRO102.arInSep[#nActNo102].stSettings.tTrailingTime := T#500ms; + #TRO102.arInSep[#nActNo102].stSettings.xPluggedScanner := FALSE; + #TRO102.arInSep[#nActNo102].stSettings.tSenFree := T#1500ms; + #TRO102.arInSep[#nActNo102].stSettings.tSenWait := T#3000ms; + END_REGION + + REGION Sep Buffer 5 + #nActNo102 := 5; + #TRO102.arInSep[#nActNo102].stSettings.nJamLength := 10; + #TRO102.arInSep[#nActNo102].stSenTrolley := "DB_Inputs".Sensors["cInBG3314"]; + #TRO102.arInSep[#nActNo102].stSettings.tHandlingTime := T#200ms; + #TRO102.arInSep[#nActNo102].stSettings.tTrailingTime := T#500ms; + #TRO102.arInSep[#nActNo102].stSettings.xPluggedScanner := FALSE; + #TRO102.arInSep[#nActNo102].stSettings.tSenFree := T#1500ms; + #TRO102.arInSep[#nActNo102].stSettings.tSenWait := T#3000ms; + END_REGION + + END_REGION + + REGION Jamsensoren + #TRO102.arInJamSensor[1] := "DB_Inputs".Sensors["cInBG3260"]; + + #TRO102.arInJamSensor[2] := "DB_Inputs".Sensors["cInBG3261"]; + + #TRO102.arInJamSensor[3] := "DB_Inputs".Sensors["cInBG3262"]; + + #TRO102.arInJamSensor[4] := "DB_Inputs".Sensors["cInBG3263"]; + + #TRO102.arInJamSensor[5] := "DB_Inputs".Sensors["cInBG3264"]; + END_REGION + + REGION Dummy Zielvergabe + #stDummy.nBarcode := 1; + #stDummy.nDestination := 0; + #stDummy.bStatus.%X0 := TRUE; + + IF "DB_JamBuffer102".arLine[1].arCarrier[1] = #stDummy THEN + "DB_JamBuffer102".arLine[1].arCarrier[1].nDestination := 10; + END_IF; + + IF "DB_JamBuffer102".arLine[2].arCarrier[1] = #stDummy THEN + "DB_JamBuffer102".arLine[2].arCarrier[1].nDestination := 10; + END_IF; + + IF "DB_JamBuffer102".arLine[3].arCarrier[1] = #stDummy THEN + "DB_JamBuffer102".arLine[3].arCarrier[1].nDestination := 10; + END_IF; + + IF "DB_JamBuffer102".arLine[4].arCarrier[1] = #stDummy THEN + "DB_JamBuffer102".arLine[4].arCarrier[1].nDestination := 10; + END_IF; + + IF "DB_JamBuffer102".arLine[5].arCarrier[1] = #stDummy THEN + "DB_JamBuffer102".arLine[5].arCarrier[1].nDestination := 10; + END_IF; + + END_REGION + + + REGION TRO 102 CALL + #TRO102.xStart := "DB_TRO_TEST".TRO102Start OR ("DB_JamArea0103".stJam0103_1.stData.Status.nCount < ("DB_JamArea0103".stJam0103_1.stData.Config.nCapacitySet * 75 / 100)); //NUR FÜR TEST + #TRO102.stInSettings.nNoOfLines := 5; + #TRO102(stInPriorityManager := "DB_Prozessdaten".stPriorityManager.udt_TRO102.TroIn, + stOutPriorityManager => "DB_Prozessdaten".stPriorityManager.udt_TRO102.TroOut, + nInBufferNr := "cMainTro102", + xInBufferReq := TRUE,//IBN + xInSftyOk := "DB_InterfaceSafety".stFromSafety.EStopMainOF1.Q, + xInConveyorRunOut := #fbCarousel0102.xOutConveyorFullSpeed, + xInBufferRelease := "DB_TRO_TEST".TRO102 AND "DB_JamArea0103".stJam0103_1.stData.Status.nCount < ("cJam0103_1" / 2), + stInSenJamExit := "DB_Inputs".Sensors["cInBG3304"], + nOutActNo => #nActNo102, + stInOutControlUnitCabinet := #stInOutControlUnitCabinetOF1, + arInOutStorageLines := "DB_JamBuffer102".arLine, + arInOutJamExit := "DB_JamArea0102".stJam0102_1.arCarrier, + stInOutJamExit := "DB_JamArea0102".stJam0102_1.stData, + nOutStateLast => "DB_GLOB_TroState".arTroState["cMainTro102"], + stInOutHMI := "DB_Interface_HMI".stTRO.TRO102); + + "MB3260" := #TRO102.arOutSwitchLine[1]; + "MB3261" := #TRO102.arOutSwitchLine[2]; + "MB3262" := #TRO102.arOutSwitchLine[3]; + "MB3263" := #TRO102.arOutSwitchLine[4]; + "MB3264" := TRUE;//#fbEmptyBuffer101.arOutSwitchLine[5]; + + + "MB3310" := #TRO102.arOutSeparatorStore[1]; + "MB3311" := #TRO102.arOutSeparatorStore[2]; + "MB3312" := #TRO102.arOutSeparatorStore[3]; + "MB3313" := #TRO102.arOutSeparatorStore[4]; + "MB3314" := #TRO102.arOutSeparatorStore[5]; + END_REGION + + END_REGION + END_REGION + + REGION TRO + + REGION TRO 100 (1Sep) + #TRO100.stInSeparator1.Settings.nSeparatorNo := "cSep100.1"; + #TRO100.stInSeparator1.Settings.tDelayToNextItem := "TimeForSepWaiting_Short"; + #TRO100.stInSeparator1.Settings.tTrailingTime := t#600ms; + #TRO100.stInSeparator1.Settings.tHandlingTime := t#200ms; + #TRO100.stInSeparator1.Settings.tJam := "TimeForSepJam"; + #TRO100.stInSeparator1.Settings.xPluggedJam := TRUE; + #TRO100.stInSeparator1.Settings.xPluggedPart := FALSE; + #TRO100.stInSeparator1.Settings.xPluggedScanner := FALSE; + #TRO100.stInSeparator1.stSenInSep := "DB_Inputs".Sensors["cInBG3242"]; + #TRO100.stInSenJam2 := "DB_Inputs".Sensors["cInBG3243"]; + + #TRO100.stInSeparator1.Settings.tSenFree := T#1500ms; + #TRO100.stInSeparator1.Settings.tSenWait := T#4000ms; + + #TRO100.stInPriorityManager.xReleaseOk := TRUE; //braucht keine Vorfahrtsregelung + + #TRO100(nInMainTroNo := "cMainTro100", + xInSftyOk := "DB_InterfaceSafety".stFromSafety.EStopMainOF1.Q, + xInAllRdyToStart := TRUE, + xInCarouselRun := #fbCarousel0101.xOutConveyorFullSpeed, + xInRelease := "DB_TRO_TEST".TRO100, + stInOutMachineState := #stInOutControlUnitCabinetOF1, + stInOutCognexInterface := #stCognexInterfaceDummy, + arInOutJamEntr1 := "DB_JamArea0100".stJam0100_1.arCarrier, + stInOutJamEntr1 := "DB_JamArea0100".stJam0100_1.stData, + arInOutJamExit2 := "DB_JamArea0101".stJam0101_1.arCarrier, + stInOutJamExit2 := "DB_JamArea0101".stJam0101_1.stData, + xOutStopper1 => "MB3242", + nOutStateLast => "DB_GLOB_TroState".arTroState["cMainTro100"], + stInOutHMI := "DB_Interface_HMI".stTRO.TRO100); + + + END_REGION + + REGION TRO 103 (1Sep) + #TRO103.stInSeparator1.Settings.nSeparatorNo := "cSep103.1"; + #TRO103.stInSeparator1.Settings.tDelayToNextItem := "TimeForSepWaiting_Short"; + #TRO103.stInSeparator1.Settings.tTrailingTime := t#500ms; + #TRO103.stInSeparator1.Settings.tHandlingTime := t#200ms; + #TRO103.stInSeparator1.Settings.tSenFree := T#1500ms; + #TRO103.stInSeparator1.Settings.tSenWait := T#3000ms; + #TRO103.stInSeparator1.Settings.tJam := "TimeForSepJam"; + #TRO103.stInSeparator1.Settings.xPluggedJam := TRUE; + #TRO103.stInSeparator1.Settings.xPluggedPart := FALSE; + #TRO103.stInSeparator1.Settings.xPluggedScanner := FALSE; + #TRO103.stInSeparator1.stSenInSep := "DB_Inputs".Sensors["cInBG3271"]; + #TRO103.stInSenJam2 := "DB_Inputs".Sensors["cInBG0286"]; + + #TRO103.stInPriorityManager.xReleaseOk := TRUE; //braucht keine Vorfahrtsregelung + + #TRO103(nInMainTroNo := "cMainTro103", + xInSftyOk := "DB_InterfaceSafety".stFromSafety.EStopMainOF1.Q, + xInAllRdyToStart := TRUE, + xInCarouselRun := #fbCarousel0104.xOutConveyorFullSpeed AND #fbConveyor0103.xOutConveyorFullSpeed, + xInRelease := "DB_TRO_TEST".TRO103, + stInOutMachineState := #stInOutControlUnitCabinetOF1, + stInOutCognexInterface := #stCognexInterfaceDummy, + arInOutJamEntr1 := "DB_JamArea0103".stJam0103_1.arCarrier, + stInOutJamEntr1 := "DB_JamArea0103".stJam0103_1.stData, + arInOutJamExit2 := "DB_JamArea0104".stJam0104_1.arCarrier, + stInOutJamExit2 := "DB_JamArea0104".stJam0104_1.stData, + xOutStopper1 => "MB3271", + nOutStateLast => "DB_GLOB_TroState".arTroState["cMainTro103"], + stInOutHMI := "DB_Interface_HMI".stTRO.TRO103); + + END_REGION + + + REGION TRO 104 (1Sep)+Scanner + #TRO104.stInSeparator1.Settings.nSeparatorNo := "cSep104.1"; + #TRO104.stInSeparator1.Settings.tDelayToNextItem := "TimeForSepWaiting_Short"; + #TRO104.stInSeparator1.Settings.tTrailingTime := t#100ms; + #TRO104.stInSeparator1.Settings.tHandlingTime := t#50ms; + #TRO104.stInSeparator1.Settings.tJam := "TimeForSepJam"; + #TRO104.stInSeparator1.Settings.xPluggedConfirm := FALSE; + #TRO104.stInSeparator1.Settings.xPluggedNullBT := FALSE; + #TRO104.stInSeparator1.Settings.xPluggedJam := TRUE; //? + #TRO104.stInSeparator1.Settings.xPluggedPart := FALSE; + #TRO104.stInSeparator1.Settings.xPluggedScanner := TRUE; + #TRO104.stInSeparator1.stSenInSep := "DB_Inputs".Sensors["cInBG0280"]; + #TRO104.stInSenJam2 := "DB_Inputs".Sensors["cInBG0281"]; //sinnvoll? BG0281 gibt es nicht mehr + + #TRO104.stInBarcodeReader.Settings.xActivateCheckASCI := TRUE; + #TRO104.stInBarcodeReader.Settings.tTimeout := T#5s; + + #arCognexInterface["cScannerBX1103"].xInCamTriggerReady := "bx1103-TriggerReady"; + #arCognexInterface["cScannerBX1103"].xInCamTriggerAck := "bx1103-TriggerAck"; + #arCognexInterface["cScannerBX1103"].xInCamResultsAvailable := "bx1103-Results Available"; + #arCognexInterface["cScannerBX1103"].xInCamGeneralFault := "bx1103-General Fault"; + #arCognexInterface["cScannerBX1103"].hwInCamInspectionResults := "BX1103~Ergebnisse_–_64_Bytes_1"; + + #TRO104.stInPriorityManager.xReleaseOk := TRUE; //braucht keine Vorfahrtsregelung + + #TRO104(nInMainTroNo := "cMainTro104", + xInSftyOk := "DB_InterfaceSafety".stFromSafety.EStopMainOF1.Q, + xInAllRdyToStart := TRUE, + xInRelease := #fbLoadingBoom1.xOutReady AND #fbLoadingBoom1.stOutStopper.xStopperReceive, //Freigabe + xInCarouselRun := #fbCarousel0104.xOutConveyorFullSpeed, + stInOutMachineState := #stInOutControlUnitCabinetOF1, + stInOutCognexInterface := #arCognexInterface["cScannerBX1103"], + arInOutJamEntr1 := "DB_JamArea0104".stJam0104_1.arCarrier, + stInOutJamEntr1 := "DB_JamArea0104".stJam0104_1.stData, + arInOutJamExit2 := "DB_JamArea0104".stJam0104_2.arCarrier, + stInOutJamExit2 := "DB_JamArea0104".stJam0104_2.stData, + stInOutHMI := "DB_Interface_HMI".stTRO.TRO104, + nOutStateLast => "DB_GLOB_TroState".arTroState["cMainTro104"], + xOutStopper1 => "MB0280"); + + "bx1103-TriggerEnable" := #arCognexInterface["cScannerBX1103"].xOutCamTriggerEnable; + "bx1103-Trigger" := #arCognexInterface["cScannerBX1103"].xOutCamTrigger; + "bx1103-ResultsAck" := #arCognexInterface["cScannerBX1103"].xOutCamResultsAck; + + REGION Carr_Glob_Correction + + "FC_CARR_GLOB_CORRECTION"(xInStart := #TRO104.xOutCorrection, //Führe Korrektur aus + nInBarcodeScan := #TRO104.nBarcodeResult, + nInStation := 0, + arOutEventLogInfo => #arDummyEventCorrectionInfo, + InOutCarrierExpect := "DB_JamArea0104".stJam0104_1.arCarrier[1]); + END_REGION + + END_REGION + + REGION TRO 105 (1Sep)+Scanner + #TRO105.stInSeparator1.Settings.nSeparatorNo := "cSep105.1"; + #TRO105.stInSeparator1.Settings.tDelayToNextItem := "TimeForSepWaiting_Short"; + #TRO105.stInSeparator1.Settings.tTrailingTime := t#600ms; + #TRO105.stInSeparator1.Settings.tHandlingTime := t#200ms; + #TRO105.stInSeparator1.Settings.tJam := "TimeForSepJam"; + #TRO105.stInSeparator1.Settings.xPluggedConfirm := FALSE; + #TRO105.stInSeparator1.Settings.xPluggedNullBT := FALSE; + #TRO105.stInSeparator1.Settings.xPluggedJam := TRUE; + #TRO105.stInSeparator1.Settings.xPluggedPart := FALSE; + #TRO105.stInSeparator1.Settings.xPluggedScanner := TRUE; + #TRO105.stInSeparator1.stSenInSep := "DB_Inputs".Sensors["cInBG3280"]; + #TRO105.stInSenJam2 := "DB_Inputs".Sensors["cInBG3281"]; + + #TRO105.stInSeparator1.Settings.tSenFree := T#1500ms; + #TRO105.stInSeparator1.Settings.tSenWait := T#4000ms; + + #TRO105.stInBarcodeReader.Settings.xActivateCheckASCI := TRUE; + #TRO105.stInBarcodeReader.Settings.tTimeout := T#3000ms; + + #arCognexInterface["cScannerBX1104"].xInCamTriggerReady := "bx1104-TriggerReady"; + #arCognexInterface["cScannerBX1104"].xInCamTriggerAck := "bx1104-TriggerAck"; + #arCognexInterface["cScannerBX1104"].xInCamResultsAvailable := "bx1104-Results Available"; + #arCognexInterface["cScannerBX1104"].xInCamGeneralFault := "bx1104-General Fault"; + #arCognexInterface["cScannerBX1104"].hwInCamInspectionResults := "BX1104~Ergebnisse_–_64_Bytes_1"; + + //SSCC + #stCognexIntfTro105.xInCamTriggerReady := "bx1107-TriggerReady"; + #stCognexIntfTro105.xInCamTriggerAck := "bx1107-TriggerAck"; + #stCognexIntfTro105.xInCamResultsAvailable := "bx1107-Results Available"; + #stCognexIntfTro105.xInCamGeneralFault := "bx1107-General Fault"; + #stCognexIntfTro105.hwInCamInspectionResults := "BX1107~Ergebnisse_–_64_Bytes_1"; + + #TRO105.stInBarcodeReaderSSCC.Settings.xActivateCheckASCI := TRUE; + #TRO105.stInBarcodeReaderSSCC.Settings.tTimeout := T#3s; + #TRO105.stInBarcodeReaderSSCC.xInPluggedSSCC := TRUE; + #TRO105.stInBarcodeReaderSSCC.stSenEndMeasurement := "DB_Inputs".Sensors["cInBG3281"]; + + #TRO105.stInPriorityManager.xReleaseOk := TRUE; //braucht keine Vorfahrtsregelung + + #TRO105(nInMainTroNo := "cMainTro105", + xInSftyOk := "DB_InterfaceSafety".stFromSafety.EStopMainOF1.Q, + xInAllRdyToStart := TRUE, + xInCancel := "cTodoFalse", + xInCarouselRun := TRUE,// Gefälle + xInRelease := "FB_CommunicationWCSBL_DB".fbTeleHandler.xOutConnectionActive OR "IBN".xFahrenOhneTcpPartner, + stInOutMachineState := #stInOutControlUnitCabinetOF1, + stInOutCognexInterface := #arCognexInterface["cScannerBX1104"], + stInOutCognexInterfaceSSCC := #stCognexIntfTro105, + arInOutJamEntr1 := "DB_JamArea0104".stJam0104_3.arCarrier, + stInOutJamEntr1 := "DB_JamArea0104".stJam0104_3.stData, + arInOutJamExit2 := "DB_JamArea0106".stJam0106_2.arCarrier, + stInOutJamExit2 := "DB_JamArea0106".stJam0106_2.stData, + stInOutHMI := "DB_Interface_HMI".stTRO.TRO105, + nOutStateLast => "DB_GLOB_TroState".arTroState["cMainTro105"], + xOutStopper1 => "MB3280"); + + + "bx1104-TriggerEnable" := #arCognexInterface["cScannerBX1104"].xOutCamTriggerEnable; + "bx1104-Trigger" := #arCognexInterface["cScannerBX1104"].xOutCamTrigger; + "bx1104-ResultsAck" := #arCognexInterface["cScannerBX1104"].xOutCamResultsAck; + + //SSCC + "bx1107-TriggerEnable" := #stCognexIntfTro105.xOutCamTriggerEnable; + "bx1107-Trigger" := #stCognexIntfTro105.xOutCamTrigger; + "bx1107-ResultsAck" := #stCognexIntfTro105.xOutCamResultsAck; + + REGION Carr_Glob_Correction + + "FC_CARR_GLOB_CORRECTION"(xInStart := #TRO105.xOutCorrection, //Führe Korrektur aus + nInBarcodeScan := #TRO105.nBarcodeResult, + nInStation := 0, + arOutEventLogInfo => #arDummyEventCorrectionInfo, + InOutCarrierExpect := "DB_JamArea0104".stJam0104_3.arCarrier[1]); + END_REGION + + REGION Write SSCC result TO HMI Interface + IF #TRO105.xOutNewScanSSCC THEN + "DB_Interface_HMI".stSSCC.SSCC1107.stLastMeasurement.nBarcodeTrolley := "DB_JamArea0104".stJam0104_3.arCarrier[1].nBarcode; + "DB_Interface_HMI".stSSCC.SSCC1107.stLastMeasurement.sSSCC := LINT_TO_STRING(#TRO105.nOutScanResultSSCC); + END_IF; + END_REGION + + + REGION Send DReqM to Fortna WCS (SSCC) + // Wenn SSCC Read abgeschlossen, dann Telegram mit spezifizierten Daten generieren und in TCP Sende-FIFO schieben + + IF #TRO105.xOutNewScanSSCC AND "FB_CommunicationWCSBL_DB".fbTeleHandler.xOutConnectionActive + THEN + "FC_Send_GOHDReqM"(sInPLCID := "cPLCID", + xInSSCCReq := TRUE, + xInLengthReq := FALSE, + xInDockDoorReq := TRUE, + xInLaneStatusReq := FALSE, + nInBarcode := "DB_JamArea0104".stJam0104_3.arCarrier[1].nBarcode, + sInSSCC := #TRO105.fbBarcodeReaderSSCC.sOutBarcode,////DELETE(IN := LINT_TO_STRING(#TRO105.nOutScanResultSSCC), L := 1, P := 1), + sInDecisionPoint := "cDP_DOCK_01", + sInDockDoor := '"1"', + sInLengthInfo := '', + arInLaneStatus := #tmpPlaceHolderLaneStatus, + nInLaneCnt := 0, + FIFO := "DB_LGF_FIFO_CommWCSBL", + BUFFER := "DB_Buffer_CommunicationWCSBL".BUFFER, + nInOutSequenceNumber := "DB_CommunicationParameters".nSeqNumWCSBL); + END_IF; + + IF "IBN".xTestTelegramSend THEN + "FC_Send_GOHDReqM"(sInPLCID := "cPLCID", + xInSSCCReq := TRUE, + xInLengthReq := FALSE, + xInDockDoorReq := TRUE, + xInLaneStatusReq := FALSE, + nInBarcode := 22343390,//"DB_JamArea0104".stJam0104_3.arCarrier[1].nBarcode, + sInSSCC := 'Test',//DELETE(IN := LINT_TO_STRING(#TRO105.nOutScanResultSSCC), L := 1, P := 1), + sInDecisionPoint := "cDP_DOCK_01", + sInDockDoor := '"1"', + sInLengthInfo := '', + arInLaneStatus := #tmpPlaceHolderLaneStatus, + nInLaneCnt := 0, + FIFO := "DB_LGF_FIFO_CommWCSBL", + BUFFER := "DB_Buffer_CommunicationWCSBL".BUFFER, + nInOutSequenceNumber := "DB_CommunicationParameters".nSeqNumWCSBL); + "IBN".xTestTelegramSend := FALSE; + END_IF; + + END_REGION + + REGION Send DUM to Fortna WCS + IF #TRO105.xOutBookedDir1 AND "FB_CommunicationWCSBL_DB".fbTeleHandler.xOutConnectionActive THEN + "FC_Send_GOHDUM"(sInPLCID := "cPLCID", + nInBarcode := #TRO105.stOutLastCarrier.nBarcode, + sInDecisionPoint := "cDP_DOCK_01", + sInActionTaken := "cSTRAIGHT", + nReasonCode := "cSUCCESS", + FIFO := "DB_LGF_FIFO_CommWCSBL", + BUFFER := "DB_Buffer_CommunicationWCSBL".BUFFER, + nInOutSequenceNumber := "DB_CommunicationParameters".nSeqNumWCSBL); + END_IF; + END_REGION + + END_REGION + + REGION TRO 106 (1Sep) + #TRO106.stInSeparator1.Settings.nSeparatorNo := "cSep106.1"; + #TRO106.stInSeparator1.Settings.tDelayToNextItem := "TimeForSepWaiting_Short"; + #TRO106.stInSeparator1.Settings.tTrailingTime := t#600ms; + #TRO106.stInSeparator1.Settings.tHandlingTime := t#200ms; + #TRO106.stInSeparator1.Settings.tJam := "TimeForSepJam"; + #TRO106.stInSeparator1.Settings.xPluggedJam := TRUE; + #TRO106.stInSeparator1.Settings.xPluggedPart := FALSE; + #TRO106.stInSeparator1.Settings.xPluggedScanner := FALSE; + #TRO106.stInSeparator1.stSenInSep := "DB_Inputs".Sensors["cInBG3315"]; + #TRO106.stInSenJam2 := "DB_Inputs".Sensors["cInBG3330"]; + + #TRO106.stInSeparator1.Settings.tSenFree := T#1500ms; + #TRO106.stInSeparator1.Settings.tSenWait := T#4000ms; + + IF "DB_JamArea0106".stJam0106_2.arCarrier[1].bStatus.%X0 THEN + "DB_JamArea0106".stJam0106_2.arCarrier[1].nDestination := 100; // NUR ZUM TESTEN + END_IF; + + #TRO106(stInPriorityManager := "DB_Prozessdaten".stPriorityManager.udt_TRO106.TroIn, + stOutPriorityManager => "DB_Prozessdaten".stPriorityManager.udt_TRO106.TroOut, + nInMainTroNo := "cMainTro106", + xInSftyOk := "DB_InterfaceSafety".stFromSafety.EStopMainOF1.Q, + xInAllRdyToStart := TRUE, + xInCancel := "cTodoFalse", + xInRelease := "DB_TRO_TEST".TRO106, + xInCarouselRun := #fbCarousel0102.xOutConveyorFullSpeed, + stInOutMachineState := #stInOutControlUnitCabinetOF1, + stInOutCognexInterface := #stCognexInterfaceDummy, + arInOutJamEntr1 := "DB_JamArea0106".stJam0106_2.arCarrier, + stInOutJamEntr1 := "DB_JamArea0106".stJam0106_2.stData, + arInOutJamExit2 := "DB_JamArea0102".stJam0102_2.arCarrier, + stInOutJamExit2 := "DB_JamArea0102".stJam0102_2.stData, + xOutStopper1 => "MB3315", + nOutStateLast => "DB_GLOB_TroState".arTroState["cMainTro106"], + stInOutHMI := "DB_Interface_HMI".stTRO.TRO106); + + END_REGION + + REGION TRO 107(1Sep1Swi) + #TRO107.stInSeparator1.Settings.nSeparatorNo := "cSep107.1"; + #TRO107.stInSeparator1.Settings.tDelayToNextItem := "TimeForSepWaiting_Short"; + #TRO107.stInSeparator1.Settings.tTrailingTime := t#100ms; + #TRO107.stInSeparator1.Settings.tHandlingTime := t#50ms; + #TRO107.stInSeparator1.Settings.tJam := "TimeForSepJam"; + #TRO107.stInSeparator1.Settings.xPluggedJam := TRUE; + #TRO107.stInSeparator1.Settings.xPluggedPart := FALSE; + #TRO107.stInSeparator1.Settings.xPluggedScanner := FALSE; + #TRO107.stInSeparator1.stSenInSep := "DB_Inputs".Sensors["cInBG3306"]; + #TRO107.stInSenJam2 := "DB_Inputs".Sensors["cInBG3305"]; + #TRO107.stInSenJam3 := "DB_Inputs".Sensors["cInBG3330"]; + + #TRO107.stInSwitch1.Settings.nSwitchNo := "cSwi107.1"; + #TRO107.stInSwitch1.Settings.xPluggedExSen3 := FALSE; + #TRO107.stInSwitch1.Settings.xPluggedExSen4 := FALSE; + #TRO107.stInSwitch1.Settings.nTo1Destinations := 3; //Info nötig für HMI + + // "DB_JamArea0102".stJam0102_1.arCarrier[1].nDestination := 100; // NUR ZUM TESTEN + + #TRO107.stInSettings.xPrioDir2 := TRUE; + #TRO107(stInPriorityManagerDir2 := "DB_Prozessdaten".stPriorityManager.udt_TRO107.TroIn, + stOutPriorityManagerDir2 => "DB_Prozessdaten".stPriorityManager.udt_TRO107.TroOut, + nInMainTroNo := "cMainTro107", + xInSftyOk := "DB_InterfaceSafety".stFromSafety.EStopMainOF1.Q, + xInAllRdyToStart := TRUE, + xInCarouselRun1 := #fbCarousel0102.xOutConveyorFullSpeed, + xInRelease := TRUE, + stInOutMachineState := #stInOutControlUnitCabinetOF1, + stInOutCognexInterface := #stCognexInterfaceDummy, + arInOutJamEntr1 := "DB_JamArea0102".stJam0102_1.arCarrier, + stInOutJamEntr1 := "DB_JamArea0102".stJam0102_1.stData, + arInOutJamExit2 := "DB_JamArea0103".stJam0103_1.arCarrier, + stInOutJamExit2 := "DB_JamArea0103".stJam0103_1.stData, + arInOutJamExit3 := "DB_JamArea0102".stJam0102_2.arCarrier, + stInOutJamExit3 := "DB_JamArea0102".stJam0102_2.stData, + stInOutHMI := "DB_Interface_HMI".stTRO.TRO107, + nOutStateLast => "DB_GLOB_TroState".arTroState["cMainTro107"], + xOutStopper1 => "MB3306", + xOutSw1ExTo3 => "MB3304"); + + + REGION Direction + "FC_Direction"(nInSwitchNo := "cSwi107.1", + nOutDirection => #TRO107.nInDirection, + InOutCarrier := "DB_JamArea0102".stJam0102_1.arCarrier[1]); + + END_REGION + END_REGION + + REGION TRO 108 (1Sep) + #TRO108.stInSeparator1.Settings.nSeparatorNo := "cSep108.1"; + #TRO108.stInSeparator1.Settings.tDelayToNextItem := "TimeForSepWaiting_Short"; + #TRO108.stInSeparator1.Settings.tTrailingTime := t#500ms; + #TRO108.stInSeparator1.Settings.tHandlingTime := t#200ms; + #TRO108.stInSeparator1.Settings.tSenFree := T#1500ms; + #TRO108.stInSeparator1.Settings.tSenWait := T#3000ms; + #TRO108.stInSeparator1.Settings.tJam := "TimeForSepJam"; + #TRO108.stInSeparator1.Settings.xPluggedJam := TRUE; + #TRO108.stInSeparator1.Settings.xPluggedPart := FALSE; + #TRO108.stInSeparator1.Settings.xPluggedScanner := FALSE; + #TRO108.stInSeparator1.stSenInSep := "DB_Inputs".Sensors["cInBG3283"]; + #TRO108.stInSenJam2 := "DB_Inputs".Sensors["cInBG0346"]; + + #TRO108.stInPriorityManager.xReleaseOk := TRUE; //braucht keine Vorfahrtsregelung + + #TRO108(nInMainTroNo := "cMainTro108", + xInSftyOk := "DB_InterfaceSafety".stFromSafety.EStopMainOF1.Q, + xInAllRdyToStart := TRUE, + // xInCancel := "cTodoFalse",//IBN + xInCarouselRun := #fbCarousel0108.xOutConveyorFullSpeed AND #fbConveyor0107.xOutConveyorFullSpeed, + xInRelease := "DB_TRO_TEST".TRO108, + stInOutMachineState := #stInOutControlUnitCabinetOF1, + stInOutCognexInterface := #stCognexInterfaceDummy, + arInOutJamEntr1 := "DB_JamArea0107".stJam0107_1.arCarrier, + stInOutJamEntr1 := "DB_JamArea0107".stJam0107_1.stData, + arInOutJamExit2 := "DB_JamArea0108".stJam0108_1.arCarrier, + stInOutJamExit2 := "DB_JamArea0108".stJam0108_1.stData, + xOutStopper1 => "MB3283", + nOutStateLast => "DB_GLOB_TroState".arTroState["cMainTro108"], + stInOutHMI := "DB_Interface_HMI".stTRO.TRO108); + + END_REGION + + REGION TRO 109 (1Sep)+Scanner + #TRO109.stInSeparator1.Settings.nSeparatorNo := "cSep109.1"; + #TRO109.stInSeparator1.Settings.tDelayToNextItem := "TimeForSepWaiting_Short"; + #TRO109.stInSeparator1.Settings.tTrailingTime := t#100ms; + #TRO109.stInSeparator1.Settings.tHandlingTime := t#50ms; + #TRO109.stInSeparator1.Settings.tJam := "TimeForSepJam"; + #TRO109.stInSeparator1.Settings.xPluggedConfirm := FALSE; + #TRO109.stInSeparator1.Settings.xPluggedNullBT := FALSE; + #TRO109.stInSeparator1.Settings.xPluggedJam := FALSE; + #TRO109.stInSeparator1.Settings.xPluggedPart := FALSE; + #TRO109.stInSeparator1.Settings.xPluggedScanner := TRUE; + #TRO109.stInSeparator1.stSenInSep := "DB_Inputs".Sensors["cInBG0340"]; + + #TRO109.stInBarcodeReader.Settings.xActivateCheckASCI := TRUE; + #TRO109.stInBarcodeReader.Settings.tTimeout := T#5s; + + #arCognexInterface["cScannerBX1105"].xInCamTriggerReady := "bx1105-TriggerReady"; + #arCognexInterface["cScannerBX1105"].xInCamTriggerAck := "bx1105-TriggerAck"; + #arCognexInterface["cScannerBX1105"].xInCamResultsAvailable := "bx1105-Results Available"; + #arCognexInterface["cScannerBX1105"].xInCamGeneralFault := "bx1105-General Fault"; + #arCognexInterface["cScannerBX1105"].hwInCamInspectionResults := "BX1105~Ergebnisse_–_64_Bytes_1"; + + #TRO109.stInPriorityManager.xReleaseOk := TRUE; //braucht keine Vorfahrtsregelung + + #TRO109(nInMainTroNo := "cMainTro109", + xInSftyOk := "DB_InterfaceSafety".stFromSafety.EStopMainOF1.Q, + xInAllRdyToStart := TRUE, + xInCancel := "cTodoFalse", + xInRelease := "DB_TRO_TEST".TRO109, + xInCarouselRun := #fbCarousel0108.xOutConveyorFullSpeed, + stInOutMachineState := #stInOutControlUnitCabinetOF1, + stInOutCognexInterface := #arCognexInterface["cScannerBX1105"], + arInOutJamEntr1 := "DB_JamArea0108".stJam0108_1.arCarrier, + stInOutJamEntr1 := "DB_JamArea0108".stJam0108_1.stData, + arInOutJamExit2 := "DB_JamArea0108".stJam0108_2.arCarrier, + stInOutJamExit2 := "DB_JamArea0108".stJam0108_2.stData, + stInOutHMI := "DB_Interface_HMI".stTRO.TRO109, + nOutStateLast => "DB_GLOB_TroState".arTroState["cMainTro109"], + xOutStopper1 => "MB0340"); + + + "bx1105-TriggerEnable" := #arCognexInterface["cScannerBX1105"].xOutCamTriggerEnable; + "bx1105-Trigger" := #arCognexInterface["cScannerBX1105"].xOutCamTrigger; + "bx1105-ResultsAck" := #arCognexInterface["cScannerBX1105"].xOutCamResultsAck; + + REGION Carr_Glob_Correction + + "FC_CARR_GLOB_CORRECTION"(xInStart := #TRO109.xOutCorrection, //Führe Korrektur aus + nInBarcodeScan := #TRO109.nBarcodeResult, + nInStation := 0, + arOutEventLogInfo => #arDummyEventCorrectionInfo, + InOutCarrierExpect := "DB_JamArea0108".stJam0108_1.arCarrier[1]); + END_REGION + + END_REGION + + REGION TRO 110 (1Sep)+Scanner + + #TRO110.stInSeparator1.Settings.nSeparatorNo := "cSep110.1"; + #TRO110.stInSeparator1.Settings.tDelayToNextItem := "TimeForSepWaiting_Short"; + #TRO110.stInSeparator1.Settings.tTrailingTime := t#600ms; + #TRO110.stInSeparator1.Settings.tHandlingTime := t#200ms; + #TRO110.stInSeparator1.Settings.tJam := "TimeForSepJam"; + #TRO110.stInSeparator1.Settings.xPluggedJam := TRUE; + #TRO110.stInSeparator1.Settings.xPluggedPart := FALSE; + #TRO110.stInSeparator1.Settings.xPluggedScanner := TRUE; + #TRO110.stInSeparator1.stSenInSep := "DB_Inputs".Sensors["cInBG3295"]; + #TRO110.stInSenJam2 := "DB_Inputs".Sensors["cInBG3296"]; + + #TRO110.stInSeparator1.Settings.tSenFree := T#1500ms; + #TRO110.stInSeparator1.Settings.tSenWait := T#4000ms; + + #TRO110.stInBarcodeReader.Settings.xActivateCheckASCI := TRUE; + #TRO110.stInBarcodeReader.Settings.tTimeout := T#3000ms; + + #arCognexInterface["cScannerBX1106"].xInCamTriggerReady := "bx1106-TriggerReady"; + #arCognexInterface["cScannerBX1106"].xInCamTriggerAck := "bx1106-TriggerAck"; + #arCognexInterface["cScannerBX1106"].xInCamResultsAvailable := "bx1106-Results Available"; + #arCognexInterface["cScannerBX1106"].xInCamGeneralFault := "bx1106-General Fault"; + #arCognexInterface["cScannerBX1106"].hwInCamInspectionResults := "BX1106~Ergebnisse_–_64_Bytes_1"; + + // SSCC + #stCognexIntfTro110.xInCamTriggerReady := "bx1108-TriggerReady"; + #stCognexIntfTro110.xInCamTriggerAck := "bx1108-TriggerAck"; + #stCognexIntfTro110.xInCamResultsAvailable := "bx1108-Results Available"; + #stCognexIntfTro110.xInCamGeneralFault := "bx1108-General Fault"; + #stCognexIntfTro110.hwInCamInspectionResults := "BX1108~Ergebnisse_–_64_Bytes_1"; + + #TRO110.stInBarcodeReaderSSCC.Settings.xActivateCheckASCI := TRUE; + #TRO110.stInBarcodeReaderSSCC.Settings.tTimeout := T#3s; + #TRO110.stInBarcodeReaderSSCC.xInPluggedSSCC := TRUE; + #TRO110.stInBarcodeReaderSSCC.stSenEndMeasurement := "DB_Inputs".Sensors["cInBG3296"]; + + #TRO110.stInPriorityManager.xReleaseOk := TRUE; //braucht keine Vorfahrtsregelung + + #TRO110(nInMainTroNo := "cMainTro110", + xInSftyOk := "DB_InterfaceSafety".stFromSafety.EStopMainOF1.Q, + xInAllRdyToStart := TRUE, + xInCancel := "cTodoFalse", + xInCarouselRun := TRUE, //Gefälle + xInRelease := "FB_CommunicationWCSBL_DB".fbTeleHandler.xOutConnectionActive OR "IBN".xFahrenOhneTcpPartner, + stInOutMachineState := #stInOutControlUnitCabinetOF1, + stInOutCognexInterface := #arCognexInterface["cScannerBX1106"], + stInOutCognexInterfaceSSCC := #stCognexIntfTro110, + arInOutJamEntr1 := "DB_JamArea0108".stJam0108_3.arCarrier, + stInOutJamEntr1 := "DB_JamArea0108".stJam0108_3.stData, + arInOutJamExit2 := "DB_JamArea0110".stJam0110_2.arCarrier, + stInOutJamExit2 := "DB_JamArea0110".stJam0110_2.stData, + stInOutHMI := "DB_Interface_HMI".stTRO.TRO110, + nOutStateLast => "DB_GLOB_TroState".arTroState["cMainTro110"], + xOutStopper1 => "MB3295"); + + "bx1106-TriggerEnable" := #arCognexInterface["cScannerBX1106"].xOutCamTriggerEnable; + "bx1106-Trigger" := #arCognexInterface["cScannerBX1106"].xOutCamTrigger; + "bx1106-ResultsAck" := #arCognexInterface["cScannerBX1106"].xOutCamResultsAck; + + //SSCC + "bx1108-TriggerEnable" := #stCognexIntfTro110.xOutCamTriggerEnable; + "bx1108-Trigger" := #stCognexIntfTro110.xOutCamTrigger; + "bx1108-ResultsAck" := #stCognexIntfTro110.xOutCamResultsAck; + + REGION Carr_Glob_Correction + + "FC_CARR_GLOB_CORRECTION"(xInStart := #TRO110.xOutCorrection, //Führe Korrektur aus + nInBarcodeScan := #TRO110.nBarcodeResult, + nInStation := 0, + arOutEventLogInfo => #arDummyEventCorrectionInfo, + InOutCarrierExpect := "DB_JamArea0108".stJam0108_3.arCarrier[1]); + END_REGION + + REGION Write SSCC result TO HMI Interface + IF #TRO110.xOutNewScanSSCC THEN + "DB_Interface_HMI".stSSCC.SSCC1108.stLastMeasurement.nBarcodeTrolley := "DB_JamArea0108".stJam0108_3.arCarrier[1].nBarcode; + "DB_Interface_HMI".stSSCC.SSCC1108.stLastMeasurement.sSSCC := DELETE(IN := LINT_TO_STRING(#TRO110.nOutScanResultSSCC), L := 1, P := 1); + END_IF; + END_REGION + + + REGION Send DReqM to Fortna WCS (SSCC) + // Wenn SSCC Read abgeschlossen, dann Telegram mit spezifizierten Daten generieren und in TCP Sende-FIFO schieben + + IF #TRO110.xOutNewScanSSCC AND "FB_CommunicationWCSBL_DB".fbTeleHandler.xOutConnectionActive THEN + "FC_Send_GOHDReqM"(sInPLCID := "cPLCID", + xInSSCCReq := TRUE, + xInLengthReq := FALSE, + xInDockDoorReq := TRUE, + xInLaneStatusReq := FALSE, + nInBarcode := "DB_JamArea0108".stJam0108_3.arCarrier[1].nBarcode, + sInSSCC := #TRO110.fbBarcodeReaderSSCC.sOutBarcode,//DELETE(IN := LINT_TO_STRING(#TRO110.nOutScanResultSSCC), L := 1, P := 1), + sInDecisionPoint := "cDP_DOCK_02", + sInDockDoor := '"2"', + sInLengthInfo := '', + arInLaneStatus := #tmpPlaceHolderLaneStatus, + nInLaneCnt := 0, + FIFO := "DB_LGF_FIFO_CommWCSBL", + BUFFER := "DB_Buffer_CommunicationWCSBL".BUFFER, + nInOutSequenceNumber := "DB_CommunicationParameters".nSeqNumWCSBL); + END_IF; + + END_REGION + + REGION Send DUM to Fortna WCS + IF #TRO110.xOutBookedDir1 AND "FB_CommunicationWCSBL_DB".fbTeleHandler.xOutConnectionActive THEN + "FC_Send_GOHDUM"(sInPLCID := "cPLCID", + nInBarcode := #TRO110.stOutLastCarrier.nBarcode, + sInDecisionPoint := "cDP_DOCK_02", + sInActionTaken := "cSTRAIGHT", + nReasonCode := "cSUCCESS", + FIFO := "DB_LGF_FIFO_CommWCSBL", + BUFFER := "DB_Buffer_CommunicationWCSBL".BUFFER, + nInOutSequenceNumber := "DB_CommunicationParameters".nSeqNumWCSBL); + END_IF; + END_REGION + + END_REGION + + REGION TRO 111 (1Sep) + #TRO111.stInSeparator1.Settings.nSeparatorNo := "cSep111.1"; + #TRO111.stInSeparator1.Settings.tDelayToNextItem := "TimeForSepWaiting_Short"; + #TRO111.stInSeparator1.Settings.tTrailingTime := t#600ms; + #TRO111.stInSeparator1.Settings.tHandlingTime := t#200ms; + #TRO111.stInSeparator1.Settings.tJam := "TimeForSepJam"; + #TRO111.stInSeparator1.Settings.xPluggedJam := TRUE; + #TRO111.stInSeparator1.Settings.xPluggedPart := FALSE; + #TRO111.stInSeparator1.Settings.xPluggedScanner := FALSE; + #TRO111.stInSeparator1.stSenInSep := "DB_Inputs".Sensors["cInBG3325"]; + #TRO111.stInSenJam2 := "DB_Inputs".Sensors["cInBG3334"]; + + #TRO111.stInSeparator1.Settings.tSenFree := T#1500ms; + #TRO111.stInSeparator1.Settings.tSenWait := T#4000ms; + + IF "DB_JamArea0110".stJam0110_2.arCarrier[1].bStatus.%X0 THEN + "DB_JamArea0110".stJam0110_2.arCarrier[1].nDestination := 100; // NUR ZUM TESTEN + END_IF; + + #TRO111(stInPriorityManager := "DB_Prozessdaten".stPriorityManager.udt_TRO111.TroIn, + stOutPriorityManager => "DB_Prozessdaten".stPriorityManager.udt_TRO111.TroOut, + nInMainTroNo := "cMainTro111", + xInSftyOk := "DB_InterfaceSafety".stFromSafety.EStopMainOF1.Q, + xInAllRdyToStart := TRUE, + xInCancel := "cTodoFalse", + xInRelease := TRUE, + xInCarouselRun := #fbCarousel0102.xOutConveyorFullSpeed, + stInOutMachineState := #stInOutControlUnitCabinetOF1, + stInOutCognexInterface := #stCognexInterfaceDummy, + arInOutJamEntr1 := "DB_JamArea0110".stJam0110_2.arCarrier, + stInOutJamEntr1 := "DB_JamArea0110".stJam0110_2.stData, + arInOutJamExit2 := "DB_JamArea0102".stJam0102_3.arCarrier, + stInOutJamExit2 := "DB_JamArea0102".stJam0102_3.stData, + stInOutHMI := "DB_Interface_HMI".stTRO.TRO111, + nOutStateLast => "DB_GLOB_TroState".arTroState["cMainTro111"], + xOutStopper1 => "MB3325"); + + END_REGION + + REGION TRO 112 (1Sep1Swi) + #TRO112.stInSeparator1.Settings.nSeparatorNo := "cSep112.1"; + #TRO112.stInSeparator1.Settings.tDelayToNextItem := "TimeForSepWaiting_Short"; + #TRO112.stInSeparator1.Settings.tTrailingTime := t#100ms; + #TRO112.stInSeparator1.Settings.tHandlingTime := t#50ms; + #TRO112.stInSeparator1.Settings.tJam := "TimeForSepJam"; + #TRO112.stInSeparator1.Settings.xPluggedJam := TRUE; + #TRO112.stInSeparator1.Settings.xPluggedPart := FALSE; + #TRO112.stInSeparator1.Settings.xPluggedScanner := FALSE; + #TRO112.stInSeparator1.stSenInSep := "DB_Inputs".Sensors["cInBG3332"]; + #TRO112.stInSenJam2 := "DB_Inputs".Sensors["cInBG3331"]; + #TRO112.stInSenJam3 := "DB_Inputs".Sensors["cInBG3334"]; + + #TRO112.stInSwitch1.Settings.nSwitchNo := "cSwi112.1"; + #TRO112.stInSwitch1.Settings.xPluggedExSen3 := FALSE; + #TRO112.stInSwitch1.Settings.xPluggedExSen4 := FALSE; + #TRO112.stInSwitch1.Settings.nTo1Destinations := 3; //Info nötig für HMI + + // "DB_JamArea0102".stJam0102_2.arCarrier[1].nDestination := 100; // NUR ZUM TESTEN + + #TRO112.stInSettings.xPrioDir2 := TRUE; + #TRO112(stInPriorityManagerDir2 := "DB_Prozessdaten".stPriorityManager.udt_TRO112.TroIn, + stOutPriorityManagerDir2 => "DB_Prozessdaten".stPriorityManager.udt_TRO112.TroOut, + nInMainTroNo := "cMainTro112", + xInSftyOk := "DB_InterfaceSafety".stFromSafety.EStopMainOF1.Q, + xInAllRdyToStart := TRUE, + xInCarouselRun1 := #fbCarousel0102.xOutConveyorFullSpeed, + xInRelease := TRUE, + stInOutMachineState := #stInOutControlUnitCabinetOF1, + stInOutCognexInterface := #stCognexInterfaceDummy, + arInOutJamEntr1 := "DB_JamArea0102".stJam0102_2.arCarrier, + stInOutJamEntr1 := "DB_JamArea0102".stJam0102_2.stData, + arInOutJamExit2 := "DB_JamArea0107".stJam0107_1.arCarrier, + stInOutJamExit2 := "DB_JamArea0107".stJam0107_1.stData, + arInOutJamExit3 := "DB_JamArea0102".stJam0102_3.arCarrier, + stInOutJamExit3 := "DB_JamArea0102".stJam0102_3.stData, + stInOutHMI := "DB_Interface_HMI".stTRO.TRO112, + nOutStateLast => "DB_GLOB_TroState".arTroState["cMainTro112"], + xOutStopper1 => "MB3332", + xOutSw1ExTo3 => "MB3330"); + + REGION Direction + "FC_Direction"(nInSwitchNo := "cSwi112.1", + nOutDirection => #TRO112.nInDirection, + InOutCarrier := "DB_JamArea0102".stJam0102_2.arCarrier[1]); + + END_REGION + + END_REGION + + REGION TRO 113 (1Sep)+Scanner + + REGION Schnittstelle RFID - TODO + //TRO113 darf nur rauslassen, wenn RFID Ready = TRUE + //27.11. funktioniert soweit. Wenn Rielec grün leuchtet, fahren wir durch und sie sannen. Wenn nicht, dann stoppen wir vorher + ; + END_REGION + + #TRO113.stInSeparator1.Settings.nSeparatorNo := "cSep113.1"; + #TRO113.stInSeparator1.Settings.tDelayToNextItem := "TimeForSepWaiting_Short"; + #TRO113.stInSeparator1.Settings.tTrailingTime := t#100ms; + #TRO113.stInSeparator1.Settings.tHandlingTime := t#50ms; + #TRO113.stInSeparator1.Settings.tJam := "TimeForSepJam"; + #TRO113.stInSeparator1.Settings.xPluggedConfirm := FALSE; + #TRO113.stInSeparator1.Settings.xPluggedNullBT := FALSE; + #TRO113.stInSeparator1.Settings.xPluggedJam := FALSE; + #TRO113.stInSeparator1.Settings.xPluggedPart := FALSE; + #TRO113.stInSeparator1.Settings.xPluggedScanner := TRUE; + #TRO113.stInSeparator1.stSenInSep := "DB_Inputs".Sensors["cInBG3335"]; + // #TRO113.stInSenJam2 := "DB_Inputs".Sensors["cInBG3336"]; + + #TRO113.stInBarcodeReader.Settings.xActivateCheckASCI := TRUE; + #TRO113.stInBarcodeReader.Settings.tTimeout := T#5s; + + #arCognexInterface["cScannerBX1101"].xInCamTriggerReady := "bx1101-TriggerReady"; + #arCognexInterface["cScannerBX1101"].xInCamTriggerAck := "bx1101-TriggerAck"; + #arCognexInterface["cScannerBX1101"].xInCamResultsAvailable := "bx1101-Results Available"; + #arCognexInterface["cScannerBX1101"].xInCamGeneralFault := "bx1101-General Fault"; + #arCognexInterface["cScannerBX1101"].hwInCamInspectionResults := "BX1101~Ergebnisse_–_64_Bytes_1"; + + #TRO113.stInPriorityManager.xReleaseOk := TRUE; //braucht keine Vorfahrtsregelung + + #TRO113(nInMainTroNo := "cMainTro113", + xInSftyOk := "DB_InterfaceSafety".stFromSafety.EStopMainOF1.Q, + xInAllRdyToStart := TRUE, + xInCarouselRun := #fbCarousel0102.xOutConveyorFullSpeed, + xInRelease := "DB_TRO_TEST".TRO113 AND ("DI0047" OR (NOT "DI0047" AND "DI0042")) AND ("FB_CommunicationWCSBL_DB".fbTeleHandler.xOutConnectionActive OR "IBN".xFahrenOhneTcpPartner), //RFID Freigabe + stInOutMachineState := #stInOutControlUnitCabinetOF1, + stInOutCognexInterface := #arCognexInterface["cScannerBX1101"], + arInOutJamEntr1 := "DB_JamArea0102".stJam0102_3.arCarrier, + stInOutJamEntr1 := "DB_JamArea0102".stJam0102_3.stData, + arInOutJamExit2 := "DB_JamArea0102".stJam0102_4.arCarrier, + stInOutJamExit2 := "DB_JamArea0102".stJam0102_4.stData, + stInOutHMI := "DB_Interface_HMI".stTRO.TRO113, + nOutStateLast => "DB_GLOB_TroState".arTroState["cMainTro113"], + xOutStopper1 => "MB3335"); + + "bx1101-TriggerEnable" := #arCognexInterface["cScannerBX1101"].xOutCamTriggerEnable; + "bx1101-Trigger" := #arCognexInterface["cScannerBX1101"].xOutCamTrigger; + "bx1101-ResultsAck" := #arCognexInterface["cScannerBX1101"].xOutCamResultsAck; + + REGION RFID Austausch + //Simpel zum Testen + + "DQ0042" := #TRO113.nState = 2000; //Wait for release + + "DQ0047" := #TRO113.fbSeparator1.xOutTrolleyReleasedEdge; //Version: Flanke + + // IF #TRO113.fbSeparator1.xOutTrolleyReleasedEdge THEN + // "DQ0047" := TRUE; + // //xxxxxxxxxxxxxxxxx to do + // END_IF; + // + + "DB_Interface_HMI".stRFID.FromPartner.xStationReady := "DI0042"; + "DB_Interface_HMI".stRFID.FromPartner.xBypassMode := "DI0047"; + + "DB_Interface_HMI".stRFID.ToPartner.xLineReady := "DQ0042"; + "DB_Interface_HMI".stRFID.ToPartner.xJetSent := "DQ0047"; + + END_REGION + + + REGION Carr_Glob_Correction + + "FC_CARR_GLOB_CORRECTION"(xInStart := #TRO113.xOutCorrection, //Führe Korrektur aus + nInBarcodeScan := #TRO113.nBarcodeResult, + nInStation := 0, + arOutEventLogInfo => #arDummyEventCorrectionInfo, + InOutCarrierExpect := "DB_JamArea0102".stJam0102_3.arCarrier[1]); + END_REGION + + REGION Längenmessung + "FB_Längenmessung_DB"(xInStartMessung := (#TRO113.nState = 2500 AND #TRO113.fbSeparator1.xOutTrolleyReleasedEdge), + xInEndeMessung := "DB_Inputs".Sensors["cInBG3357"].xDirectEdgeNeg, + xInTeilVorhanden := "DB_Inputs".Sensors["cInBG3354"].xDirectSensor, + xInTeilLang := NOT "DB_Inputs".Sensors["cInBG3355"].xDirectSensor, + xInTeilzuLang := NOT "DB_Inputs".Sensors["cInBG3356"].xDirectSensor); + + #rTrig_LengthMeasurement(CLK := "FB_Längenmessung_DB".xOutFinished); + + IF #rTrig_LengthMeasurement.Q THEN + IF "FB_Längenmessung_DB".xOutTeilKurz THEN + "DB_Interface_HMI".stLengthMeasurement.stLastMeasurement.nBarcode := "DB_JamArea0102".stJam0102_4.arCarrier[1].nBarcode; + "DB_Interface_HMI".stLengthMeasurement.stLastMeasurement.nResult := 1; //kurz + ELSIF "FB_Längenmessung_DB".xOutTeilLang THEN + "DB_Interface_HMI".stLengthMeasurement.stLastMeasurement.nBarcode := "DB_JamArea0102".stJam0102_4.arCarrier[1].nBarcode; + "DB_Interface_HMI".stLengthMeasurement.stLastMeasurement.nResult := 2; //lang + ELSIF "FB_Längenmessung_DB".xOutErrorzuLang THEN + "DB_Interface_HMI".stLengthMeasurement.stLastMeasurement.nBarcode := "DB_JamArea0102".stJam0102_4.arCarrier[1].nBarcode; + "DB_Interface_HMI".stLengthMeasurement.stLastMeasurement.nResult := -1; // zu lang + ELSIF "FB_Längenmessung_DB".xOutLeer THEN + "DB_Interface_HMI".stLengthMeasurement.stLastMeasurement.nBarcode := "DB_JamArea0102".stJam0102_4.arCarrier[1].nBarcode; + "DB_Interface_HMI".stLengthMeasurement.stLastMeasurement.nResult := 10; // leer + ELSE + "DB_Interface_HMI".stLengthMeasurement.stLastMeasurement.nBarcode := "DB_JamArea0102".stJam0102_4.arCarrier[1].nBarcode; + "DB_Interface_HMI".stLengthMeasurement.stLastMeasurement.nResult := -99; //Fehler + END_IF; + END_IF; + + REGION DReqM to Fortna WCS (LM) + // Wenn Längenmessung abgeschlossen dann Telegram mit spezifizierten Daten generieren und in TCP Sende-FIFO schieben + + IF #rTrig_LengthMeasurement.Q AND "FB_CommunicationWCSBL_DB".fbTeleHandler.xOutConnectionActive THEN + IF "FB_Längenmessung_DB".xOutTeilKurz THEN + #sLengthInfo := 'Short'; + ELSIF "FB_Längenmessung_DB".xOutTeilLang THEN + #sLengthInfo := 'Long'; + ELSIF "FB_Längenmessung_DB".xOutErrorzuLang THEN + #sLengthInfo := 'Too Long'; + ELSIF "FB_Längenmessung_DB".xOutLeer THEN + #sLengthInfo := 'Empty'; + ELSE + #sLengthInfo := 'Error'; + END_IF; + + "FC_Send_GOHDReqM"(sInPLCID := "cPLCID", + xInSSCCReq := FALSE, + xInLengthReq := TRUE, + xInDockDoorReq := FALSE, + xInLaneStatusReq := FALSE, + nInBarcode := "DB_JamArea0102".stJam0102_4.arCarrier[1].nBarcode, + sInSSCC := '', + sInDecisionPoint := "cDP_REC_01", + sInDockDoor := '', + sInLengthInfo := #sLengthInfo, + arInLaneStatus := #tmpPlaceHolderLaneStatus, + nInLaneCnt := 0, + FIFO := "DB_LGF_FIFO_CommWCSBL", + BUFFER := "DB_Buffer_CommunicationWCSBL".BUFFER, + nInOutSequenceNumber := "DB_CommunicationParameters".nSeqNumWCSBL); + END_IF; + + END_REGION + + END_REGION + + + END_REGION + + REGION TRO 114 (1Sep1Switch)+Scanner + #TRO114.stInSeparator1.Settings.nSeparatorNo := "cSep114.1"; + #TRO114.stInSeparator1.Settings.tDelayToNextItem := "TimeForSepWaiting_Short"; + #TRO114.stInSeparator1.Settings.tTrailingTime := t#100ms; + #TRO114.stInSeparator1.Settings.tHandlingTime := t#50ms; + #TRO114.stInSeparator1.Settings.tJam := "TimeForSepJam"; + #TRO114.stInSeparator1.Settings.xPluggedJam := TRUE; + #TRO114.stInSeparator1.Settings.xPluggedPart := FALSE; + #TRO114.stInSeparator1.Settings.xPluggedScanner := TRUE; + #TRO114.stInSeparator1.stSenInSep := "DB_Inputs".Sensors["cInBG3337"]; + #TRO114.stInSenJam2 := "DB_Inputs".Sensors["cInBG3340"]; + #TRO114.stInSenJam3 := "DB_Inputs".Sensors["cInBG3341"]; + + #TRO114.stInSwitch1.Settings.nSwitchNo := "cSwi114.1"; + #TRO114.stInSwitch1.Settings.xPluggedExSen3 := FALSE; + #TRO114.stInSwitch1.Settings.xPluggedExSen4 := FALSE; + #TRO114.stInSwitch1.Settings.nTo1Destinations := 3; //Info nötig für HMI + + #TRO114.stInBarcodeReader.Settings.xActivateCheckASCI := TRUE; + #TRO114.stInBarcodeReader.Settings.tTimeout := T#5s; + + #arCognexInterface["cScannerBX1102"].xInCamTriggerReady := "bx1102-TriggerReady"; + #arCognexInterface["cScannerBX1102"].xInCamTriggerAck := "bx1102-TriggerAck"; + #arCognexInterface["cScannerBX1102"].xInCamResultsAvailable := "bx1102-Results Available"; + #arCognexInterface["cScannerBX1102"].xInCamGeneralFault := "bx1102-General Fault"; + #arCognexInterface["cScannerBX1102"].hwInCamInspectionResults := "BX1102~Ergebnisse_–_64_Bytes_1"; + + #TRO114.stInPriorityManagerDir1.xReleaseOk := TRUE; //braucht keine Vorfahrtsregelung + + // "DB_JamArea0102".stJam0102_4.arCarrier[1].nDestination := "cDestInboundOut"; // NUR ZUM TESTEN + + #stJamData4104.Config.nCapacitySet := 1; + + #TRO114(nInMainTroNo := "cMainTro114", + xInSftyOk := "DB_InterfaceSafety".stFromSafety.EStopMainOF1.Q, + xInAllRdyToStart := TRUE, + xInCarouselRun1 := #fbCarousel0102.xOutConveyorFullSpeed, + xInRelease := "DB_TRO_TEST".TRO114 AND ("FB_CommunicationWCSBL_DB".fbTeleHandler.xOutConnectionActive OR "IBN".xFahrenOhneTcpPartner), + stInOutMachineState := #stInOutControlUnitCabinetOF1, + stInOutCognexInterface := #arCognexInterface["cScannerBX1102"], + arInOutJamEntr1 := "DB_JamArea0102".stJam0102_4.arCarrier, + stInOutJamEntr1 := "DB_JamArea0102".stJam0102_4.stData, + arInOutJamExit2 := #arStCarrier4104,//"DB_JamArea4104".stJam4104_1.arCarrier, + stInOutJamExit2 := #stJamData4104,//"DB_JamArea4104".stJam4104_1.stData, + arInOutJamExit3 := "DB_JamArea0102".stJam0102_5.arCarrier, + stInOutJamExit3 := "DB_JamArea0102".stJam0102_5.stData, + stInOutHMI := "DB_Interface_HMI".stTRO.TRO114, + nOutStateLast => "DB_GLOB_TroState".arTroState["cMainTro114"], + xOutStopper1 => "MB3337", + xOutSw1ExTo3 => "MB3340"); + + "bx1102-TriggerEnable" := #arCognexInterface["cScannerBX1102"].xOutCamTriggerEnable; + "bx1102-Trigger" := #arCognexInterface["cScannerBX1102"].xOutCamTrigger; + "bx1102-ResultsAck" := #arCognexInterface["cScannerBX1102"].xOutCamResultsAck; + + REGION Carr_Glob_Correction + + "FC_CARR_GLOB_CORRECTION"(xInStart := #TRO114.xOutCorrection, //Führe Korrektur aus + nInBarcodeScan := #TRO114.nBarcodeResult, + nInStation := 0, + arOutEventLogInfo => #arDummyEventCorrectionInfo, + InOutCarrierExpect := "DB_JamArea0102".stJam0102_4.arCarrier[1]); + END_REGION + + REGION Direction + "FC_Direction"(nInSwitchNo := "cSwi114.1", + nOutDirection => #TRO114.nInDirection, + InOutCarrier := "DB_JamArea0102".stJam0102_4.arCarrier[1]); + + END_REGION + + REGION Send DUM to Fortna WCS + IF #TRO114.xOutBookedDir1 AND "FB_CommunicationWCSBL_DB".fbTeleHandler.xOutConnectionActive THEN + "FC_Send_GOHDUM"(sInPLCID := "cPLCID", + nInBarcode := #TRO114.stOutLastCarrier.nBarcode, + sInDecisionPoint := "cDP_REC_01", + sInActionTaken := "cSTORAGE", + nReasonCode := "cSUCCESS", + FIFO := "DB_LGF_FIFO_CommWCSBL", + BUFFER := "DB_Buffer_CommunicationWCSBL".BUFFER, + nInOutSequenceNumber := "DB_CommunicationParameters".nSeqNumWCSBL); + END_IF; + + IF #TRO114.xOutBookedDir2 AND "FB_CommunicationWCSBL_DB".fbTeleHandler.xOutConnectionActive THEN + "FC_Send_GOHDUM"(sInPLCID := "cPLCID", + nInBarcode := #TRO114.stOutLastCarrier.nBarcode, + sInDecisionPoint := "cDP_REC_01", + sInActionTaken := "cSTRAIGHT", + nReasonCode := "cSUCCESS", + FIFO := "DB_LGF_FIFO_CommWCSBL", + BUFFER := "DB_Buffer_CommunicationWCSBL".BUFFER, + nInOutSequenceNumber := "DB_CommunicationParameters".nSeqNumWCSBL); + END_IF; + + END_REGION + + END_REGION + + REGION TRO 115 (Vario) + #TRO115.stInSeparator1.Settings.nSeparatorNo := "cSep115.1"; + #TRO115.stInSeparator1.Settings.tDelayToNextItem := "TimeForSepWaiting_Short"; + #TRO115.stInSeparator1.Settings.tTrailingTime := t#800ms; + #TRO115.stInSeparator1.Settings.tHandlingTime := t#300ms; + #TRO115.stInSeparator1.Settings.tJam := "TimeForSepJam"; + #TRO115.stInSeparator1.Settings.xPluggedJam := FALSE; + #TRO115.stInSeparator1.Settings.xPluggedPart := FALSE; + #TRO115.stInSeparator1.Settings.xPluggedScanner := FALSE; + #TRO115.stInSeparator1.stSenInSep := "DB_Inputs".Sensors["cInBG3025"]; + + #TRO115.stInSeparator1.Settings.tSenFree := t#2000ms;//T#1200ms; + #TRO115.stInSeparator1.Settings.tSenWait := T#5000ms; + + #TRO115.stInVario.Settings.xContinousEmptying := FALSE; + #TRO115.stInVario.Settings.tWaitForJog := T#300ms; + #TRO115.stInVario.Settings.tConvEmpty := T#45000ms; + #TRO115.stInVario.Settings.nCountCarrier := 1; + #TRO115.stInVario.Settings.tWaitForStop := t#3s; + + #TRO115.stInVario.Settings.tCarrierInPosDelay := t#1200ms; + #TRO115.stInVario.Settings.tCarrierInPosEdgeDelay := t#100ms; + + #TRO115.stInVario.Settings.tRasterHigh := t#5s; + #TRO115.stInVario.Settings.tRasterLow := t#5s; + + #TRO115.stInVario.stSenCarrInPos := "DB_Inputs".Sensors["cInBG3026"]; // MT in Pos + #TRO115.stInVario.stSenFinger := "DB_Inputs".Sensors["cInBG3027"]; // Pusher Dog in Pos + #TRO115.stInVario.stSenLastPos := "DB_Inputs".Sensors["cInBG3000"]; // Conveyor full + #TRO115.stInVario.stSenJam := "DB_Inputs".Sensors["cInBG3001"]; // Jam detector + + #TRO115.stInPriorityManager.xReleaseOk := TRUE; //braucht keine Vorfahrtsregelung + #TRO115.stInVario.Settings.xJamSenDelayActive := TRUE; + #TRO115.stInVario.Settings.tJamSenDelay := T#2s; + + #TRO115.stInSettings.xIsBorner := TRUE; + + #TRO115(nInMainTroNo := "cMainTro115", + xInSftyOk := "DB_InterfaceSafety".stFromSafety.EStopMainOF1.Q, + xInMotorProtection := "FC0145", + xInAllRdyToStart := TRUE, + xInReset := "cTodoFalse", + xInErrorQuit := "SF0002", + xInAutomatic := #t_Automatik_OF1 AND "SF0120", + xInRelease := "DB_TRO_TEST".TRO115, + arInOutJamEntr := "DB_JamArea4104".stJam4104_1.arCarrier, + stInOutJamEntr := "DB_JamArea4104".stJam4104_1.stData, + arInOutJamFinger := "DB_JamArea4103".stJam4103_1.arCarrier, + stInOutJamFinger := "DB_JamArea4103".stJam4103_1.stData, + stInOutMachineState := #stInOutControlUnitCabinetOF1, + stInOutCognexInterface := #stCognexInterfaceDummy, + stInOutHMI := "DB_Interface_HMI".stTRO.TRO115, + nOutStateLast => "DB_GLOB_TroState".arTroState["cMainTro115"], + xOutStopper => "MB3025", + xOutVarioMotor => "MA0145"); + + + END_REGION + + REGION TRO 116 (1Sep) + #TRO116.stInSeparator1.Settings.nSeparatorNo := "cSep116.1"; + #TRO116.stInSeparator1.Settings.tDelayToNextItem := "TimeForSepWaiting_Medium"; + #TRO116.stInSeparator1.Settings.tTrailingTime := t#100ms; + #TRO116.stInSeparator1.Settings.tHandlingTime := t#50ms; + #TRO116.stInSeparator1.Settings.tJam := "TimeForSepJam"; + #TRO116.stInSeparator1.Settings.xPluggedConfirm := FALSE; + #TRO116.stInSeparator1.Settings.xPluggedNullBT := FALSE; + #TRO116.stInSeparator1.Settings.xPluggedJam := TRUE; + #TRO116.stInSeparator1.Settings.xPluggedPart := FALSE; + #TRO116.stInSeparator1.Settings.xPluggedScanner := FALSE; + #TRO116.stInSeparator1.stSenInSep := "DB_Inputs".Sensors["cInBG3316"]; + #TRO116.stInSenJam2 := "DB_Inputs".Sensors["cInBG3300"]; + + #TRO116.stInPriorityManager.xReleaseOk := TRUE; //braucht keine Vorfahrtsregelung + + #TRO116(nInMainTroNo := "cMainTro116", + xInSftyOk := "DB_InterfaceSafety".stFromSafety.EStopMainOF1.Q, + xInAllRdyToStart := TRUE, + xInCarouselRun := #fbCarousel0102.xOutConveyorFullSpeed, + xInRelease := "DB_TRO_TEST".TRO116, + stInOutMachineState := #stInOutControlUnitCabinetOF1, + stInOutCognexInterface := #stCognexInterfaceDummy, + arInOutJamEntr1 := "DB_JamArea0102".stJam0102_5.arCarrier, + stInOutJamEntr1 := "DB_JamArea0102".stJam0102_5.stData, + arInOutJamExit2 := "DB_JamArea0102".stJam0102_6.arCarrier, + stInOutJamExit2 := "DB_JamArea0102".stJam0102_6.stData, + // nOutStateLast => "DB_GLOB_TroState".arTroState["cMainTro116"], + stInOutHMI := "DB_Interface_HMI".stTRO.TRO116, + xOutStopper1 => "MB3316"); + + IF #TRO116.nOutStateLast > 1000 THEN + "DB_GLOB_TroState".arTroState["cMainTro116"] := #TRO116.nOutStateLast; + END_IF; + + END_REGION + + + REGION TRO 117 (1Sep) + Scanner + #TRO117.stInSeparator1.Settings.nSeparatorNo := "cSep117.1"; + #TRO117.stInSeparator1.Settings.tDelayToNextItem := "TimeForSepWaiting_Short"; + #TRO117.stInSeparator1.Settings.tTrailingTime := t#100ms; + #TRO117.stInSeparator1.Settings.tHandlingTime := t#50ms; + #TRO117.stInSeparator1.Settings.tJam := "TimeForSepJam"; + #TRO117.stInSeparator1.Settings.xPluggedJam := TRUE; + + #TRO117.stInSeparator1.Settings.xPluggedPart := TRUE; + #TRO117.stInSettings.bSepType.%X0 := TRUE; + #TRO117.stInSettings.bSepType.%X1 := TRUE; + #TRO117.stInSettings.tPartSenHigh := T#500ms; + #TRO117.stInSettings.tInSenHigh := T#500ms; + #TRO117.stInSeparator1.stSenPart := "DB_Inputs".Sensors["cInBG3301"]; + + #TRO117.stInSeparator1.Settings.xPluggedScanner := TRUE; + #TRO117.stInSeparator1.stSenInSep := "DB_Inputs".Sensors["cInBG3300"]; + #TRO117.stInSenJam2 := "DB_Inputs".Sensors["cInBG3304"]; + + #TRO117.stInBarcodeReader.Settings.xActivateCheckASCI := TRUE; + #TRO117.stInBarcodeReader.Settings.tTimeout := T#5s; + + #arCognexInterface["cScannerBX1100"].xInCamTriggerReady := "bx1100-TriggerReady"; + #arCognexInterface["cScannerBX1100"].xInCamTriggerAck := "bx1100-TriggerAck"; + #arCognexInterface["cScannerBX1100"].xInCamResultsAvailable := "bx1100-Results Available"; + #arCognexInterface["cScannerBX1100"].xInCamGeneralFault := "bx1100-General Fault"; + #arCognexInterface["cScannerBX1100"].hwInCamInspectionResults := "BX1100~Ergebnisse_–_64_Bytes_1"; + + REGION NUR FÜR TEST + + // "DB_JamArea0102".stJam0102_6.arCarrier[1].nDestination := "cDestClearing"; + END_REGION + + #TRO117(stInPriorityManager := "DB_Prozessdaten".stPriorityManager.udt_TRO117.TroIn, + stOutPriorityManager => "DB_Prozessdaten".stPriorityManager.udt_TRO117.TroOut, + nInMainTroNo := "cMainTro117", + xInSftyOk := "DB_InterfaceSafety".stFromSafety.EStopMainOF1.Q, + xInAllRdyToStart := TRUE, + xInCarouselRun := #fbCarousel0102.xOutConveyorFullSpeed, + xInRelease := #rTrig_ClarificationButton.Q, + stInOutMachineState := #stInOutControlUnitCabinetOF1, + stInOutCognexInterface := #arCognexInterface["cScannerBX1100"], + arInOutJamEntr1 := "DB_JamArea0102".stJam0102_6.arCarrier, + stInOutJamEntr1 := "DB_JamArea0102".stJam0102_6.stData, + arInOutJamExit2 := "DB_JamArea0102".stJam0102_1.arCarrier, + stInOutJamExit2 := "DB_JamArea0102".stJam0102_1.stData, + nOutStateLast => "DB_GLOB_TroState".arTroState["cMainTro117"], + stInOutHMI := "DB_Interface_HMI".stTRO.TRO117, + xOutStopper1 => "MB3300"); + + "bx1100-TriggerEnable" := #arCognexInterface["cScannerBX1100"].xOutCamTriggerEnable; + "bx1100-Trigger" := #arCognexInterface["cScannerBX1100"].xOutCamTrigger; + "bx1100-ResultsAck" := #arCognexInterface["cScannerBX1100"].xOutCamResultsAck; + + REGION Carr_Glob_Correction + + "FC_CARR_GLOB_CORRECTION"(xInStart := #TRO117.xOutCorrection, //Führe Korrektur aus + nInBarcodeScan := #TRO117.nBarcodeResult, + nInStation := 0, + arOutEventLogInfo => #arDummyEventCorrectionInfo, + InOutCarrierExpect := "DB_JamArea0102".stJam0102_6.arCarrier[1]); + END_REGION + + REGION Clarification Release + + #rTrig_ClarificationButton(CLK := "SF0032"); + + END_REGION + + REGION Trolley Handling + + IF NOT "DB_Inputs".Sensors["cInBG3300"].xDirectSensor AND + "DB_Interface_HMI".stClearingStation.xDeleteTrolley + THEN + "DB_JamArea0102".stJam0102_6.arCarrier[1] := #stEmptyCarrier; + "DB_Interface_HMI".stClearingStation.xDeleteTrolley := FALSE; + #TRO117.nState := 100; + END_IF; + + IF (* NOT "DB_Inputs".Sensors["cInBG3300"].xDirectSensor AND *) + NOT "BG3301" AND + "DB_Interface_HMI".stClearingStation.xDeleteLoad + THEN + "DB_JamArea0102".stJam0102_6.arCarrier[1].bStatus.%X1 := FALSE; + "DB_Interface_HMI".stClearingStation.xDeleteLoad := FALSE; + END_IF; + + + "DB_Interface_HMI".stClearingStation.stFirstCarrierInStation := "DB_JamArea0102".stJam0102_6.arCarrier[1]; + "DB_Interface_HMI".stClearingStation.xTrolleyInStation := "DB_Inputs".Sensors["cInBG3300"].xDbncdSensor; + END_REGION ; + + + + + + + END_REGION ; + + REGION TRO 120 (Vario) // Loaded To Storage + + #TRO120.stInSeparator1.Settings.nSeparatorNo := "cSep120.1"; + #TRO120.stInSeparator1.Settings.tHandlingTime := T#200ms; + #TRO120.stInSeparator1.Settings.tTrailingTime := T#600ms; + #TRO120.stInSeparator1.Settings.tDelayToNextItem := "TimeForSepWaiting_Short"; + #TRO120.stInSeparator1.Settings.tJam := "TimeForSepJam"; + #TRO120.stInSeparator1.Settings.xPluggedJam := FALSE; + #TRO120.stInSeparator1.Settings.xPluggedPart := FALSE; + #TRO120.stInSeparator1.Settings.xPluggedScanner := FALSE; + #TRO120.stInSeparator1.stSenInSep := "DB_Inputs".Sensors["cInBG3003"]; + + #TRO120.stInSeparator1.Settings.tSenFree := T#2000ms; + #TRO120.stInSeparator1.Settings.tSenWait := T#4300ms; + + #TRO120.stInVario.stSenFinger := "DB_Inputs".Sensors["cInBG3002"]; //Fingrer in Pos + #TRO120.stInVario.stSenLastPos := "DB_Inputs".Sensors["cInBG3006"]; // Conveyor full + #TRO120.stInVario.stSenCarrInPos := "DB_Inputs".Sensors["cInBG3004"]; // MT in Pos + #TRO120.stInVario.stSenJam := "DB_Inputs".Sensors["cInBG3005"]; // Jam detector + + #TRO120.stInVario.Settings.xContinousEmptying := FALSE; + #TRO120.stInVario.Settings.tWaitForJog := T#50ms;//T#400ms; + #TRO120.stInVario.Settings.tConvEmpty := T#90000ms; + #TRO120.stInVario.Settings.nCountCarrier := 1; + #TRO120.stInVario.Settings.tWaitForStop := T#3s; + + #TRO120.stInVario.Settings.xLongSlope := TRUE; + + #TRO120.stInVario.Settings.tCarrierInPosDelay := t#1200ms; + + #TRO120.stInVario.Settings.tRasterHigh := T#2500ms; + #TRO120.stInVario.Settings.tRasterLow := T#2500ms; + + #TRO120.stInVario.Settings.xJamSenDelayActive := TRUE; + #TRO120.stInVario.Settings.tJamSenDelay := T#2s; + + #TRO120.stInPriorityManager.xReleaseOk := TRUE; //braucht keine Vorfahrtsregelung + + #stJamDataLeaveControl.Config.nCapacitySet := 1; + + #TRO120(nInMainTroNo := "cMainTro120", + xInSftyOk := "DB_InterfaceSafety".stFromSafety.EStopMainOF2.Q, + xInAllRdyToStart := TRUE, + xInAutomatic := #t_Automatik_OF2 AND "SF0120" AND "SF0124" AND "SF0126" AND "SF0130", + xInReset := "cTodoFalse", + xInErrorQuit := "SF0121", + xInMotorProtection := "FC0146", + xInRelease := "DB_TRO_TEST".TRO120, + arInOutJamEntr := "DB_JamArea4103".stJam4103_1.arCarrier, + stInOutJamEntr := "DB_JamArea4103".stJam4103_1.stData, + arInOutJamFinger := #arStCarrierLeaveControl,//JAM, Übergabe CPU Level 2! + stInOutJamFinger := #stJamDataLeaveControl, + stInOutMachineState := #stInOutControlUnitCabinetOF2, + stInOutCognexInterface := #stCognexInterfaceDummy, + stInOutHMI := "DB_Interface_HMI".stTRO.TRO120, + nOutStateLast => "DB_GLOB_TroState".arTroState["cMainTro120"], + xOutStopper => "MB3003", + xOutVarioMotor => "MA0146"); + + END_REGION + + REGION TRO 121(Vario) + + #TRO121.stInSeparator1.Settings.nSeparatorNo := "cSep121.1"; + #TRO121.stInSeparator1.Settings.tTrailingTime := T#500ms; + #TRO121.stInSeparator1.Settings.tHandlingTime := T#200ms; + #TRO121.stInSeparator1.Settings.tDelayToNextItem := "TimeForSepWaiting_Short"; + #TRO121.stInSeparator1.Settings.tJam := "TimeForSepJam"; + #TRO121.stInSeparator1.Settings.xPluggedJam := FALSE; + #TRO121.stInSeparator1.Settings.xPluggedPart := FALSE; + #TRO121.stInSeparator1.Settings.xPluggedScanner := FALSE; + #TRO121.stInSeparator1.Settings.xStuckCorrection := 1; + + #TRO121.stInSeparator1.stSenInSep := "DB_Inputs".Sensors["cInBG3080"]; + + #TRO121.stInSeparator1.Settings.tSenFree := T#1500ms; + #TRO121.stInSeparator1.Settings.tSenWait := T#4000ms; + + #TRO121.stInVario.stSenFinger := "DB_Inputs".Sensors["cInBG3081"]; //Finger in Pos + #TRO121.stInVario.stSenLastPos := "DB_Inputs".Sensors["cInBG3062"]; // Conveyor full + #TRO121.stInVario.stSenCarrInPos := "DB_Inputs".Sensors["cInBG3082"]; // MT in Pos + #TRO121.stInVario.stSenJam := "DB_Inputs".Sensors["cInBG3061"]; // Jam detector + + #TRO121.stInVario.Settings.xContinousEmptying := FALSE; + #TRO121.stInVario.Settings.tWaitForJog := T#200ms;//T#400ms; + #TRO121.stInVario.Settings.tConvEmpty := T#45000ms; + #TRO121.stInVario.Settings.nCountCarrier := 1; + + #TRO121.stInVario.Settings.tCarrierInPosDelay := t#1200ms; + #TRO121.stInVario.Settings.tCarrierInPosEdgeDelay := t#100ms; + + #TRO121.stInPriorityManager.xReleaseOk := TRUE; //braucht keine Vorfahrtsregelung + + #TRO121.stInSettings.xIsBorner := TRUE; + #TRO121.stInSettings.nBornerDest := "cDestInboundLS"; + #TRO121(nInMainTroNo := "cMainTro121", + xInSftyOk := "DB_InterfaceSafety".stFromSafety.EStopMainOF2.Q, + xInAllRdyToStart := TRUE, + xInAutomatic := #t_Automatik_OF2, + xInReset := "cTodoFalse", + xInErrorQuit := "SF0117", + xInMotorProtection := "FC0141", + xInRelease := "DB_TRO_TEST".TRO121, + arInOutJamEntr := "DB_JamArea4503".stJam4503_1.arCarrier, + stInOutJamEntr := "DB_JamArea4503".stJam4503_1.stData, + arInOutJamFinger := "DB_JamArea4503".stJam4503_2.arCarrier, + stInOutJamFinger := "DB_JamArea4503".stJam4503_2.stData, + stInOutMachineState := #stInOutControlUnitCabinetOF2, + stInOutCognexInterface := #stCognexInterfaceDummy, + stInOutHMI := "DB_Interface_HMI".stTRO.TRO121, + xOutStopper => "MB3080", + nOutStateLast => "DB_GLOB_TroState".arTroState["cMainTro121"], + xOutVarioMotor => "MA0141"); + + + END_REGION + + REGION TRO 122 (1Sep) + #TRO122.stInSeparator1.Settings.xStuckCorrection := 1; + #TRO122.stInSeparator1.Settings.nSeparatorNo := "cSep107.1"; + #TRO122.stInSeparator1.Settings.tDelayToNextItem := "TimeForSepWaiting_Short"; + #TRO122.stInSeparator1.Settings.tJam := "TimeForSepJam"; + #TRO122.stInSeparator1.Settings.tTrailingTime := t#500ms; + #TRO122.stInSeparator1.Settings.tHandlingTime := t#200ms; + #TRO122.stInSeparator1.Settings.xPluggedJam := FALSE; //nächster InSep mögl., aber Jam wurde erhöht + #TRO122.stInSeparator1.Settings.xPluggedPart := FALSE; + #TRO122.stInSeparator1.Settings.xPluggedScanner := FALSE; + #TRO122.stInSeparator1.stSenInSep := "DB_Inputs".Sensors["cInBG3060"]; + #TRO122.stInSenJam2 := "DB_Inputs".Sensors["cInBG3063"]; + + #TRO122.stInSeparator1.Settings.tSenFree := T#1500ms; + #TRO122.stInSeparator1.Settings.tSenWait := T#3500ms; + + #TRO122.stInPriorityManager.xReleaseOk := "cTodoTRUE"; //Brandschutztor.... + + #TRO122(nInMainTroNo := "cMainTro122", + xInSftyOk := "DB_InterfaceSafety".stFromSafety.EStopMainOF2.Q, + xInAllRdyToStart := TRUE, + xInCancel := "cTodoFalse", + xInRelease := "DB_TRO_TEST".TRO122, + xInCarouselRun := "cTodoTRUE", //Gefälle mit Brandschutztor + stInOutMachineState := #stInOutControlUnitCabinetOF2, + stInOutCognexInterface := #stCognexInterfaceDummy, + arInOutJamEntr1 := "DB_JamArea4503".stJam4503_2.arCarrier, + stInOutJamEntr1 := "DB_JamArea4503".stJam4503_2.stData, + arInOutJamExit2 := "DB_JamArea4502".stJam4502_1.arCarrier, + stInOutJamExit2 := "DB_JamArea4502".stJam4502_1.stData, + nOutStateLast => "DB_GLOB_TroState".arTroState["cMainTro122"], + xOutStopper1 => "MB3060", + stInOutHMI := "DB_Interface_HMI".stTRO.TRO122); + + + END_REGION + + REGION TRO 123 (Vario) + #TRO123.stInSeparator1.Settings.xStuckCorrection := 1; + #TRO123.stInSeparator1.Settings.nSeparatorNo := "cSep123.1"; + #TRO123.stInSeparator1.Settings.tTrailingTime := T#600ms; + #TRO123.stInSeparator1.Settings.tHandlingTime := T#200ms; + #TRO123.stInSeparator1.Settings.tDelayToNextItem := "TimeForSepWaiting_Short"; + #TRO123.stInSeparator1.Settings.tJam := "TimeForSepJam"; + #TRO123.stInSeparator1.Settings.xPluggedJam := FALSE; + #TRO123.stInSeparator1.Settings.xPluggedPart := FALSE; + #TRO123.stInSeparator1.Settings.xPluggedScanner := FALSE; + #TRO123.stInSeparator1.stSenInSep := "DB_Inputs".Sensors["cInBG3063"]; + + #TRO123.stInSeparator1.Settings.tSenFree := T#1500ms; + #TRO123.stInSeparator1.Settings.tSenWait := T#3500ms; + + #TRO123.stInVario.stSenFinger := "DB_Inputs".Sensors["cInBG3065"]; //Finger in Pos + #TRO123.stInVario.stSenLastPos := "DB_Inputs".Sensors["cInBG3066"]; // Conveyor full + #TRO123.stInVario.stSenCarrInPos := "DB_Inputs".Sensors["cInBG3064"]; // MT in Pos + #TRO123.stInVario.stSenJam := "DB_Inputs".Sensors["cInBG3067"]; // Jam detector + + #TRO123.stInVario.Settings.xContinousEmptying := FALSE; + #TRO123.stInVario.Settings.tWaitForJog := T#200ms;//T#400ms; + #TRO123.stInVario.Settings.tConvEmpty := T#30000ms; + #TRO123.stInVario.Settings.nCountCarrier := 1; + #TRO123.stInVario.Settings.tWaitForStop := t#3s; + + #TRO123.stInVario.Settings.xJamSenDelayActive := TRUE; + #TRO123.stInVario.Settings.tJamSenDelay := T#1500ms; + + #TRO123.stInVario.Settings.tCarrierInPosDelay := t#1200ms; + #TRO123.stInVario.Settings.tCarrierInPosEdgeDelay := t#100ms; + + #TRO123.stInVario.Settings.xLongSlope := TRUE; + + #TRO123.stInPriorityManager.xReleaseOk := TRUE; //braucht keine Vorfahrtsregelung + + #TRO123(nInMainTroNo := "cMainTro123", + xInSftyOk := "DB_InterfaceSafety".stFromSafety.EStopMainOF2.Q, + xInAllRdyToStart := TRUE, + xInAutomatic := #t_Automatik_OF2 AND "SF0120", + xInReset := "cTodoFalse", + xInErrorQuit := "SF0121", + xInMotorProtection := "FC0142", + xInRelease := "DB_TRO_TEST".TRO123, + arInOutJamEntr := "DB_JamArea4502".stJam4502_1.arCarrier, + stInOutJamEntr := "DB_JamArea4502".stJam4502_1.stData, + arInOutJamFinger := "DB_JamArea4502".stJam4502_2.arCarrier, + stInOutJamFinger := "DB_JamArea4502".stJam4502_2.stData, + stInOutMachineState := #stInOutControlUnitCabinetOF2, + stInOutCognexInterface := #stCognexInterfaceDummy, + stInOutHMI := "DB_Interface_HMI".stTRO.TRO123, + xOutStopper => "MB3063", + nOutStateLast => "DB_GLOB_TroState".arTroState["cMainTro123"], + xOutVarioMotor => "MA0142"); + + END_REGION + + REGION TRO 124 (1Sep1Switch) + #TRO124.stInSeparator1.Settings.xStuckCorrection := 1; + #TRO124.stInSeparator1.Settings.nSeparatorNo := "cSep124.1"; + #TRO124.stInSeparator1.Settings.tDelayToNextItem := "TimeForSepWaiting_Short"; + #TRO124.stInSeparator1.Settings.tJam := "TimeForSepJam"; + #TRO124.stInSeparator1.Settings.tTrailingTime := t#500ms; + #TRO124.stInSeparator1.Settings.tHandlingTime := t#200ms; + #TRO124.stInSeparator1.Settings.xPluggedJam := TRUE; + #TRO124.stInSeparator1.Settings.xPluggedPart := FALSE; + #TRO124.stInSeparator1.Settings.xPluggedScanner := FALSE; + #TRO124.stInSeparator1.stSenInSep := "DB_Inputs".Sensors["cInBG3024"]; + #TRO124.stInSenJam2 := "DB_Inputs".Sensors["cInBG3015"]; + #TRO124.stInSenJam3 := "DB_Inputs".Sensors["cInBG3017"]; //BG3017 + + #TRO124.stInSwitch1.Settings.nSwitchNo := "cSwi124.1"; + #TRO124.stInSwitch1.Settings.xPluggedExSen3 := FALSE; + #TRO124.stInSwitch1.Settings.xPluggedExSen4 := FALSE; + #TRO124.stInSwitch1.Settings.nTo1Destinations := 4; //Info nötig für HMI + + #TRO124.stInSeparator1.Settings.tSenFree := T#1500ms; + #TRO124.stInSeparator1.Settings.tSenWait := T#4300ms; + + // #TRO124.stInPriorityManager.xReleaseOk := TRUE; + + IF #TRO101.xOutFull AND #TRO102.xOutFull AND + ("DB_JamArea0100".stJam0100_1.stData.Status.nCount >= "DB_JamArea0100".stJam0100_1.stData.Config.nCapacitySet) THEN + "DB_JamArea4502".stJam4502_2.arCarrier[1].nDestination := "cDestHighwayStorage"; + END_IF; + + + #TRO124.stInSettings.xPrioDir1 := TRUE; + #TRO124.stInSettings.xPrioDir2 := TRUE; + #TRO124.stInPriorityManagerDir1.xReleaseOk := TRUE; + #TRO124.stInPriorityManagerDir2.xReleaseOk := TRUE; + #TRO124(nInMainTroNo := "cMainTro124", + xInSftyOk := "DB_InterfaceSafety".stFromSafety.EStopMainOF2.Q, + xInAllRdyToStart := TRUE, + xInCancel := "cTodoFalse", + xInRelease := "DB_TRO_TEST".TRO124 OR #xHighwayPrio124, + xInCarouselRun1 := #fbCarousel4204.xOutConveyorFullSpeed, + xInCarouselRun2 := #fbCarousel4204.xOutConveyorFullSpeed, + stInOutMachineState := #stInOutControlUnitCabinetOF2, + stInOutCognexInterface := #stCognexInterfaceDummy, + arInOutJamEntr1 := "DB_JamArea4502".stJam4502_2.arCarrier, + stInOutJamEntr1 := "DB_JamArea4502".stJam4502_2.stData, + arInOutJamExit2 := "DB_JamArea4204".stJam4204_2.arCarrier, + stInOutJamExit2 := "DB_JamArea4204".stJam4204_2.stData, + arInOutJamExit3 := "DB_JamArea4501".stJam4501_1.arCarrier, + stInOutJamExit3 := "DB_JamArea4501".stJam4501_1.stData, + nOutStateLast => "DB_GLOB_TroState".arTroState["cMainTro124"], + xOutStopper1 => "MB3024", + xOutSw1ExTo4 => "MB3015", + stInOutHMI := "DB_Interface_HMI".stTRO.TRO124); + + REGION Direction + "FC_Direction"(nInSwitchNo := "cSwi124.1", + nOutDirection => #TRO124.nInDirection, + InOutCarrier := "DB_JamArea4502".stJam4502_2.arCarrier[1]); + END_REGION + + REGION TO DO: WAS MACHT SWITCH????? + + IF NOT "DB_Inputs".Sensors["cInBG3024"].xDirectSensor AND "DB_Inputs".Sensors["cInBG3024"].tDirectChangeLast > T#8s THEN + #xHighwayPrio124 := FALSE; //Jam von TRO124 ist schon lange leer. TRO130 darf fahren und TRO124 darf nicht + #xHighwayPrio130 := TRUE; + "MB3015" := TRUE; //Weiche von 1Sep1Swi überschreiben! + ELSIF #xHighwayPrio130 AND + "DB_Inputs".Sensors["cInBG3024"].xDbncdSensor THEN + #xHighwayPrio124 := FALSE; //Wenn TRO130 Prio hatte und Sensor von TRO124 hat wieder eine Belegung. TRO124 darf fahren und TRO130 darf nicht + #xHighwayPrio130 := FALSE; + "MB3015" := TRUE; //Weiche von 1Sep1Swi überschreiben! + ELSIF "DB_Inputs".Sensors["cInBG3024"].xDirectSensor AND "DB_Inputs".Sensors["cInBG3024"].tDirectChangeLast > T#6s THEN + #xHighwayPrio124 := TRUE; //Wenn TRO130 Prio hatte und Sensor von TRO124 hat wieder eine Belegung. TRO124 darf fahren und TRO130 darf nicht + #xHighwayPrio130 := FALSE; + //Weiche von 1Sep1Swi nicht mehr überschreiben! + END_IF; + + REGION !!!!!!für Test auf GERADEAUS manipuliert!!!!!!! + + // "MB3015" := FALSE; // DAS WIEDER AUSKOMMENTIEREN FÜR NORMALBETRIEB + + END_REGION + + + END_REGION ; + + END_REGION + + REGION TRO 125 (1Sep) + + #TRO125.stInSeparator1.Settings.nSeparatorNo := "cSep125.1"; + #TRO125.stInSeparator1.Settings.tDelayToNextItem := "TimeForSepWaiting_Short"; + #TRO125.stInSeparator1.Settings.tJam := "TimeForSepJam"; + #TRO125.stInSeparator1.Settings.tTrailingTime := t#100ms; + #TRO125.stInSeparator1.Settings.tHandlingTime := t#50ms; + #TRO125.stInSeparator1.Settings.xPluggedJam := TRUE; + #TRO125.stInSeparator1.Settings.xPluggedPart := FALSE; + #TRO125.stInSeparator1.Settings.xPluggedScanner := FALSE; + #TRO125.stInSeparator1.stSenInSep := "DB_Inputs".Sensors["cInBG3010"]; + #TRO125.stInSenJam2 := "DB_Inputs".Sensors["cInBG3014"]; + + #TRO125.stInPriorityManager.xReleaseOk := TRUE; //braucht keine Vorfahrtsregelung + + #TRO125(nInMainTroNo := "cMainTro125", + xInSftyOk := "DB_InterfaceSafety".stFromSafety.EStopMainOF2.Q, + xInAllRdyToStart := TRUE, + xInCancel := "cTodoFalse", + xInRelease := "DB_TRO_TEST".TRO125, + xInCarouselRun := #fbCarousel4204.xOutConveyorFullSpeed, + stInOutMachineState := #stInOutControlUnitCabinetOF2, + stInOutCognexInterface := #stCognexInterfaceDummy, + arInOutJamEntr1 := "DB_JamArea4204".stJam4204_2.arCarrier, + stInOutJamEntr1 := "DB_JamArea4204".stJam4204_2.stData, + arInOutJamExit2 := "DB_JamArea4203".stJam4203_1.arCarrier, + stInOutJamExit2 := "DB_JamArea4203".stJam4203_1.stData, + nOutStateLast => "DB_GLOB_TroState".arTroState["cMainTro125"], + xOutStopper1 => "MB3010", + stInOutHMI := "DB_Interface_HMI".stTRO.TRO125); + + + END_REGION + + REGION TRO 126 (Vario) // Empty to Storage + + #TRO126.stInSeparator1.Settings.nSeparatorNo := "cSep126.1"; + #TRO126.stInSeparator1.Settings.tTrailingTime := T#500ms; + #TRO126.stInSeparator1.Settings.tHandlingTime := T#200ms; + #TRO126.stInSeparator1.Settings.tDelayToNextItem := "TimeForSepWaiting_Short"; + #TRO126.stInSeparator1.Settings.tJam := "TimeForSepJam"; + #TRO126.stInSeparator1.Settings.xPluggedJam := FALSE; + #TRO126.stInSeparator1.Settings.xPluggedPart := FALSE; + #TRO126.stInSeparator1.Settings.xPluggedScanner := FALSE; + #TRO126.stInSeparator1.stSenInSep := "DB_Inputs".Sensors["cInBG3120"]; + + #TRO126.stInSeparator1.Settings.tSenFree := T#1500ms; + #TRO126.stInSeparator1.Settings.tSenWait := T#4300ms; + + #TRO126.stInVario.stSenFinger := "DB_Inputs".Sensors["cInBG3122"]; //Pusher Dog in Pos + #TRO126.stInVario.stSenLastPos := "DB_Inputs".Sensors["cInBG3123"]; // Conveyor full + #TRO126.stInVario.stSenCarrInPos := "DB_Inputs".Sensors["cInBG3121"]; // MT in Pos + #TRO126.stInVario.stSenJam := "DB_Inputs".Sensors["cInBG3124"]; // Jam detector + + #TRO126.stInVario.Settings.tRasterHigh := T#5000ms; + #TRO126.stInVario.Settings.tRasterLow := T#5000ms; + + #TRO126.stInVario.Settings.xContinousEmptying := FALSE; + #TRO126.stInVario.Settings.tWaitForJog := T#200ms;//T#400ms; + #TRO126.stInVario.Settings.tConvEmpty := T#50000ms; + #TRO126.stInVario.Settings.nCountCarrier := 1; + #TRO126.stInVario.Settings.tWaitForStop := T#3s; + + #TRO126.stInVario.Settings.xJamSenDelayActive := TRUE; + #TRO126.stInVario.Settings.tJamSenDelay := T#2s; + + #TRO126.stInVario.Settings.tCarrierInPosDelay := t#1300ms; + + #TRO126.stInVario.Settings.xLongSlope := TRUE; + + #TRO126.stInPriorityManager.xReleaseOk := TRUE; //braucht keine Vorfahrtsregelung + + #stJamDataLeaveControl.Config.nCapacitySet := 1; + + #TRO126(nInMainTroNo := "cMainTro126", + xInSftyOk := "DB_InterfaceSafety".stFromSafety.EStopMainOF2.Q, + xInAllRdyToStart := TRUE, + xInAutomatic := #t_Automatik_OF2 AND "SF0120" AND "SF0124" AND "SF0126" AND "SF0130", + xInReset := "cTodoFalse", + xInErrorQuit := "DB_Interface_HMI".stTRO.TRO126.UDT_Ctrl.xErrorQuit OR "SF0125", + xInMotorProtection := "FC0147", + xInRelease := "DB_TRO_TEST".TRO126, + arInOutJamEntr := "DB_JamArea4203".stJam4203_1.arCarrier, + stInOutJamEntr := "DB_JamArea4203".stJam4203_1.stData, + arInOutJamFinger := #arStCarrierLeaveControl, //Übergabe zu UH03 + stInOutJamFinger := #stJamDataLeaveControl, //Übergabe zu UH03 + stInOutMachineState := #stInOutControlUnitCabinetOF2, + stInOutCognexInterface := #stCognexInterfaceDummy, + stInOutHMI := "DB_Interface_HMI".stTRO.TRO126, + xOutStopper => "MB3120", + nOutStateLast => "DB_GLOB_TroState".arTroState["cMainTro126"], + xOutVarioMotor => "MA0147"); + + + END_REGION + + REGION TRO 127 (Vario) + + #TRO127.stInSeparator1.Settings.nSeparatorNo := "cSep127.1"; + #TRO127.stInSeparator1.Settings.tTrailingTime := T#500ms; + #TRO127.stInSeparator1.Settings.tHandlingTime := T#200ms; + #TRO127.stInSeparator1.Settings.tDelayToNextItem := "TimeForSepWaiting_Short"; + #TRO127.stInSeparator1.Settings.tJam := "TimeForSepJam"; + #TRO127.stInSeparator1.Settings.xPluggedJam := FALSE; + #TRO127.stInSeparator1.Settings.xPluggedPart := FALSE; + #TRO127.stInSeparator1.Settings.xPluggedScanner := FALSE; + #TRO127.stInSeparator1.stSenInSep := "DB_Inputs".Sensors["cInBG3020"]; + + #TRO127.stInSeparator1.Settings.tSenFree := T#1500ms; + #TRO127.stInSeparator1.Settings.tSenWait := T#3500ms; + + #TRO127.stInVario.stSenFinger := "DB_Inputs".Sensors["cInBG3021"]; //Finger in Pos + #TRO127.stInVario.stSenLastPos := "DB_Inputs".Sensors["cInBG3023"]; // Conveyor full + #TRO127.stInVario.stSenCarrInPos := "DB_Inputs".Sensors["cInBG3011"]; // MT in Pos + #TRO127.stInVario.stSenJam := "DB_Inputs".Sensors["cInBG3022"]; // Jam detector + + #TRO127.stInVario.Settings.xContinousEmptying := FALSE; + #TRO127.stInVario.Settings.tWaitForJog := T#300ms;//T#400ms; + #TRO127.stInVario.Settings.tConvEmpty := T#35000ms; + #TRO127.stInVario.Settings.nCountCarrier := 1; + #TRO127.stInVario.Settings.tWaitForStop := T#3s; + + #TRO127.stInVario.Settings.tCarrierInPosDelay := t#1200ms; + #TRO127.stInVario.Settings.tCarrierInPosEdgeDelay := t#100ms; + + #TRO127.stInPriorityManager.xReleaseOk := TRUE; //braucht keine Vorfahrtsregelung + + #TRO127(nInMainTroNo := "cMainTro127", + xInSftyOk := "DB_InterfaceSafety".stFromSafety.EStopMainOF2.Q, + xInAllRdyToStart := TRUE, + xInAutomatic := #t_Automatik_OF2 AND "SF0120" AND "SF0124", + xInReset := "cTodoFalse", + xInErrorQuit := "SF0121", + xInMotorProtection := "FC0144", + xInRelease := "DB_TRO_TEST".TRO127, + arInOutJamEntr := "DB_JamArea4501".stJam4501_1.arCarrier, + stInOutJamEntr := "DB_JamArea4501".stJam4501_1.stData, + arInOutJamFinger := "DB_JamArea4501".stJam4501_2.arCarrier, + stInOutJamFinger := "DB_JamArea4501".stJam4501_2.stData, + stInOutMachineState := #stInOutControlUnitCabinetOF2, + stInOutCognexInterface := #stCognexInterfaceDummy, + stInOutHMI := "DB_Interface_HMI".stTRO.TRO127, + nOutStateLast => "DB_GLOB_TroState".arTroState["cMainTro127"], + xOutStopper => "MB3020", + xOutVarioMotor => "MA0144"); + + END_REGION + + REGION TRO 128 (Vario) // Empty to Inbound + + #TRO128.stInSeparator1.Settings.nSeparatorNo := "cSep128.1"; + #TRO128.stInSeparator1.Settings.tTrailingTime := T#500ms; + #TRO128.stInSeparator1.Settings.tHandlingTime := T#200ms; + #TRO128.stInSeparator1.Settings.tDelayToNextItem := "TimeForSepWaiting_Short"; + #TRO128.stInSeparator1.Settings.tJam := "TimeForSepJam"; + #TRO128.stInSeparator1.Settings.xPluggedJam := FALSE; + #TRO128.stInSeparator1.Settings.xPluggedPart := FALSE; + #TRO128.stInSeparator1.Settings.xPluggedScanner := FALSE; + #TRO128.stInSeparator1.stSenInSep := "DB_Inputs".Sensors["cInBG3290"]; + + #TRO128.stInSeparator1.Settings.tSenFree := T#1500ms; + #TRO128.stInSeparator1.Settings.tSenWait := T#4000ms; + + #TRO128.stInVario.stSenFinger := "DB_Inputs".Sensors["cInBG3291"]; //Finger in Pos + #TRO128.stInVario.stSenLastPos := "DB_Inputs".Sensors["cInBG3240"]; // Conveyor full + #TRO128.stInVario.stSenCarrInPos := "DB_Inputs".Sensors["cInBG3292"]; // MT in Pos + #TRO128.stInVario.stSenJam := "DB_Inputs".Sensors["cInBG3241"]; // Jam detector + + #TRO128.stInVario.Settings.xContinousEmptying := FALSE; + #TRO128.stInVario.Settings.tWaitForJog := T#300ms;//T#400ms; + #TRO128.stInVario.Settings.tConvEmpty := T#60000ms; + #TRO128.stInVario.Settings.nCountCarrier := 1; + #TRO128.stInVario.Settings.tWaitForStop := T#3s; + + #TRO128.stInVario.Settings.tCarrierInPosDelay := t#1200ms; + #TRO128.stInVario.Settings.tCarrierInPosEdgeDelay := t#100ms; + + #TRO128.stInPriorityManager.xReleaseOk := TRUE; //braucht keine Vorfahrtsregelung + + #TRO128(nInMainTroNo := "cMainTro128", + xInSftyOk := "DB_InterfaceSafety".stFromSafety.EStopMainOF2.Q, + xInAllRdyToStart := TRUE, + xInAutomatic := #t_Automatik_OF2 AND "SF0120", + xInReset := "cTodoFalse", + xInErrorQuit := "SF0121", + xInMotorProtection := "FC0057", + xInRelease := "DB_TRO_TEST".TRO128, + arInOutJamEntr := "DB_JamArea4501".stJam4501_2.arCarrier, + stInOutJamEntr := "DB_JamArea4501".stJam4501_2.stData, + arInOutJamFinger := "DB_JamArea0100".stJam0100_1.arCarrier, + stInOutJamFinger := "DB_JamArea0100".stJam0100_1.stData, + stInOutMachineState := #stInOutControlUnitCabinetOF2, + stInOutCognexInterface := #stCognexInterfaceDummy, + stInOutHMI := "DB_Interface_HMI".stTRO.TRO128, + nOutStateLast => "DB_GLOB_TroState".arTroState["cMainTro128"], + xOutStopper => "MB3290", + xOutVarioMotor => "MA0057"); + + END_REGION + + REGION TRO 129 (1Sep) + + #TRO129.stInSeparator1.Settings.nSeparatorNo := "cSep129.1"; + #TRO129.stInSeparator1.Settings.tDelayToNextItem := "TimeForSepWaiting_Short"; + #TRO129.stInSeparator1.Settings.tJam := "TimeForSepJam"; + #TRO129.stInSeparator1.Settings.tTrailingTime := t#500ms; + #TRO129.stInSeparator1.Settings.tHandlingTime := t#200ms; + #TRO129.stInSeparator1.Settings.xPluggedJam := TRUE; + #TRO129.stInSeparator1.Settings.xPluggedPart := FALSE; + #TRO129.stInSeparator1.Settings.xPluggedScanner := FALSE; + #TRO129.stInSeparator1.stSenInSep := "DB_Inputs".Sensors["cInBG3125"]; + #TRO129.stInSenJam2 := "DB_Inputs".Sensors["cInBG3012"]; + + #TRO129.stInSeparator1.Settings.tSenFree := T#1500ms; + #TRO129.stInSeparator1.Settings.tSenWait := T#3500ms; + + #TRO129.stInPriorityManager.xReleaseOk := TRUE; //braucht keine Vorfahrtsregelung + + #TRO129(nInMainTroNo := "cMainTro129", + xInSftyOk := "DB_InterfaceSafety".stFromSafety.EStopMainOF2.Q, + xInAllRdyToStart := TRUE, + xInCancel := "cTodoFalse", + xInRelease := "DB_TRO_TEST".TRO129 AND + (NOT #TRO101.xOutFull OR NOT #TRO102.xOutFull OR + ("DB_JamArea0100".stJam0100_1.stData.Status.nCount < "DB_JamArea0100".stJam0100_1.stData.Config.nCapacitySet)), + xInCarouselRun := #fbCarousel4204.xOutConveyorFullSpeed, + stInOutMachineState := #stInOutControlUnitCabinetOF2, + stInOutCognexInterface := #stCognexInterfaceDummy, + arInOutJamEntr1 := "DB_JamArea4302".stJam4302_2.arCarrier, + stInOutJamEntr1 := "DB_JamArea4302".stJam4302_2.stData, + arInOutJamExit2 := "DB_JamArea4204".stJam4204_1.arCarrier, + stInOutJamExit2 := "DB_JamArea4204".stJam4204_1.stData, + nOutStateLast => "DB_GLOB_TroState".arTroState["cMainTro129"], + xOutStopper1 => "MB3125", + stInOutHMI := "DB_Interface_HMI".stTRO.TRO129); + + END_REGION + + REGION TRO 130 (1Sep) + + #TRO130.stInSeparator1.Settings.nSeparatorNo := "cSep130.1"; + #TRO130.stInSeparator1.Settings.tDelayToNextItem := "TimeForSepWaiting_Short"; + #TRO130.stInSeparator1.Settings.tJam := "TimeForSepJam"; + #TRO130.stInSeparator1.Settings.tTrailingTime := t#100ms; + #TRO130.stInSeparator1.Settings.tHandlingTime := t#50ms; + #TRO130.stInSeparator1.Settings.xPluggedJam := TRUE; + #TRO130.stInSeparator1.Settings.xPluggedPart := FALSE; + #TRO130.stInSeparator1.Settings.xPluggedScanner := FALSE; + #TRO130.stInSeparator1.stSenInSep := "DB_Inputs".Sensors["cInBG3013"]; + #TRO130.stInSenJam2 := "DB_Inputs".Sensors["cInBG3017"]; //BG3017!!!!!!!!!!!!!!!!!!!!!!!!!!! + + #TRO130.stInPriorityManager.xReleaseOk := TRUE; //braucht keine Vorfahrtsregelung + #TRO130(nInMainTroNo := "cMainTro130", + xInSftyOk := "DB_InterfaceSafety".stFromSafety.EStopMainOF2.Q, + xInAllRdyToStart := TRUE, + xInCancel := "cTodoFalse", + xInRelease := #xHighwayPrio130 OR "DB_TRO_TEST".TRO130, //Nur wenn Weiche zum Abbiegen geschalten ist und Prio Freigabe true, darf dieser TRO überhaupt fahren + xInCarouselRun := #fbCarousel4204.xOutConveyorFullSpeed, + stInOutMachineState := #stInOutControlUnitCabinetOF2, + stInOutCognexInterface := #stCognexInterfaceDummy, + arInOutJamEntr1 := "DB_JamArea4204".stJam4204_1.arCarrier, + stInOutJamEntr1 := "DB_JamArea4204".stJam4204_1.stData, + arInOutJamExit2 := "DB_JamArea4501".stJam4501_1.arCarrier, //"DB_JamArea4204".stJam4204_2.arCarrier,// + stInOutJamExit2 := "DB_JamArea4501".stJam4501_1.stData, //"DB_JamArea4204".stJam4204_2.stData,// + nOutStateLast => "DB_GLOB_TroState".arTroState["cMainTro130"], + xOutStopper1 => "MB3013", + stInOutHMI := "DB_Interface_HMI".stTRO.TRO130); + + + END_REGION + + REGION TRO 131 (Vario) // Loaded to AMR + + #TRO131.stInSeparator1.Settings.nSeparatorNo := "cSep131.1"; + #TRO131.stInSeparator1.Settings.tTrailingTime := T#500ms; + #TRO131.stInSeparator1.Settings.tHandlingTime := T#400ms; + #TRO131.stInSeparator1.Settings.tDelayToNextItem := "TimeForSepWaiting_Short"; + #TRO131.stInSeparator1.Settings.tJam := "TimeForSepJam"; + #TRO131.stInSeparator1.Settings.xPluggedJam := FALSE; + #TRO131.stInSeparator1.Settings.xPluggedPart := FALSE; + #TRO131.stInSeparator1.Settings.xPluggedScanner := FALSE; + #TRO131.stInSeparator1.stSenInSep := "DB_Inputs".Sensors["cInBG3073"]; + + #TRO131.stInSeparator1.Settings.tSenFree := T#1500ms; + #TRO131.stInSeparator1.Settings.tSenWait := T#4000ms; + + #TRO131.stInVario.stSenFinger := "DB_Inputs".Sensors["cInBG3075"]; //Finger in Pos + #TRO131.stInVario.stSenLastPos := "DB_Inputs".Sensors["cInBG3070"]; // Conveyor full + #TRO131.stInVario.stSenCarrInPos := "DB_Inputs".Sensors["cInBG3074"]; // MT in Pos + #TRO131.stInVario.stSenJam := "DB_Inputs".Sensors["cInBG3071"]; // Jam detector + + #TRO131.stInVario.Settings.xContinousEmptying := FALSE; + #TRO131.stInVario.Settings.tWaitForJog := T#350ms;//T#400ms; + #TRO131.stInVario.Settings.tConvEmpty := T#60000ms; + #TRO131.stInVario.Settings.nCountCarrier := 1; + #TRO131.stInVario.Settings.tWaitForStop := t#3s; + + #TRO131.stInVario.Settings.xJamSenDelayActive := TRUE; + #TRO131.stInVario.Settings.tJamSenDelay := T#2s; + + #TRO131.stInVario.Settings.tCarrierInPosDelay := t#1200ms; + #TRO131.stInVario.Settings.tCarrierInPosEdgeDelay := t#100ms; + #TRO131.stInVario.Settings.tTimeOutCarrierInPos := t#5s; + + #TRO131.stInVario.Settings.xLongSlope := TRUE; + + #TRO131.stInPriorityManager.xReleaseOk := TRUE; //braucht keine Vorfahrtsregelung + + #stJamDataLeaveControl.Config.nCapacitySet := 1; + #TRO131(nInMainTroNo := "cMainTro131", + xInSftyOk := "DB_InterfaceSafety".stFromSafety.EStopMainOF2.Q, + xInAllRdyToStart := TRUE, + xInAutomatic := #t_Automatik_OF2 AND "SF0120" AND "SF0124", + xInReset := "cTodoFalse", + xInErrorQuit := "SF0125", + xInMotorProtection := "FC0143", + xInRelease := "DB_TRO_TEST".TRO131, + arInOutJamEntr := "DB_JamArea4403".stJam4403_1.arCarrier, + stInOutJamEntr := "DB_JamArea4403".stJam4403_1.stData, + arInOutJamFinger := #arStCarrierLeaveControl, //Übergang zu UH04 + stInOutJamFinger := #stJamDataLeaveControl, //Übergang zu UH04 + stInOutMachineState := #stInOutControlUnitCabinetOF2, + stInOutCognexInterface := #stCognexInterfaceDummy, + stInOutHMI := "DB_Interface_HMI".stTRO.TRO131, + xOutStopper => "MB3073", + nOutStateLast => "DB_GLOB_TroState".arTroState["cMainTro131"], + xOutVarioMotor => "MA0143"); + + END_REGION + + // REGION TRO 132 (1Sep) + + // #TRO132.stInSeparator1.Settings.nSeparatorNo := "cSep132.1"; + // #TRO132.stInSeparator1.Settings.tDelayToNextItem := "TimeForSepWaiting_Short"; + // #TRO132.stInSeparator1.Settings.tJam := "TimeForSepJam"; + // #TRO132.stInSeparator1.Settings.tTrailingTime := t#500ms; + // #TRO132.stInSeparator1.Settings.tHandlingTime := t#200ms; + // #TRO132.stInSeparator1.Settings.xPluggedJam := TRUE; + // #TRO132.stInSeparator1.Settings.xPluggedPart := FALSE; + // #TRO132.stInSeparator1.Settings.xPluggedScanner := FALSE; + // #TRO132.stInSeparator1.stSenInSep := "DB_Inputs".Sensors["cInBG3076"]; + // #TRO132.stInSenJam2 := "DB_Inputs".Sensors["cInBG3077"]; + + // #TRO132.stInSeparator1.Settings.tSenFree := T#1500ms; + // #TRO132.stInSeparator1.Settings.tSenWait := T#3500ms; + + // #TRO132.stInPriorityManager.xReleaseOk := TRUE; //Brandschutztor... + + // #stJamDataLeaveControl.Config.nCapacitySet := 1; + + // #TRO132(nInMainTroNo := "cMainTro132", + // xInSftyOk := "DB_InterfaceSafety".stFromSafety.EStopMain.Q, + // xInAllRdyToStart := TRUE, + // xInCancel := "cTodoFalse", + // xInRelease := "DB_TRO_TEST".TRO132, + // xInCarouselRun := "cTodoTRUE", + // stInOutMachineState := #stInOutControlUnitCabinet, + // stInOutCognexInterface := #stCognexInterfaceDummy, + // arInOutJamEntr1 := "DB_JamArea4403".stJam4403_2.arCarrier, + // stInOutJamEntr1 := "DB_JamArea4403".stJam4403_2.stData, + // arInOutJamExit2 := #arStCarrierLeaveControl,//Übergabe zu UH04 + // stInOutJamExit2 := #stJamDataLeaveControl, //Übergabe zu UH04 + // nOutStateLast => "DB_GLOB_TroState".arTroState["cMainTro132"], + // xOutStopper1 => "MB3076", + // stInOutHMI := "DB_Interface_HMI".stTRO.TRO132); + + + + // END_REGION + + REGION TRO 133 (Vario) + + #TRO133.stInSeparator1.Settings.nSeparatorNo := "cSep133.1"; + #TRO133.stInSeparator1.Settings.tTrailingTime := T#500ms; + #TRO133.stInSeparator1.Settings.tHandlingTime := T#200ms; + #TRO133.stInSeparator1.Settings.tDelayToNextItem := "TimeForSepWaiting_Short"; + #TRO133.stInSeparator1.Settings.tJam := "TimeForSepJam"; + #TRO133.stInSeparator1.Settings.xPluggedJam := FALSE; + #TRO133.stInSeparator1.Settings.xPluggedPart := FALSE; + #TRO133.stInSeparator1.Settings.xPluggedScanner := FALSE; + #TRO133.stInSeparator1.stSenInSep := "DB_Inputs".Sensors["cInBG3130"]; + + #TRO133.stInSeparator1.Settings.tSenFree := T#1500ms; + #TRO133.stInSeparator1.Settings.tSenWait := T#4000ms; + + #TRO133.stInVario.stSenFinger := "DB_Inputs".Sensors["cInBG3132"]; //Finger in Pos + #TRO133.stInVario.stSenLastPos := "DB_Inputs".Sensors["cInBG3127"]; // Conveyor full + #TRO133.stInVario.stSenCarrInPos := "DB_Inputs".Sensors["cInBG3131"]; // MT in Pos + #TRO133.stInVario.stSenJam := "DB_Inputs".Sensors["cInBG3126"]; // Jam detector + + #TRO133.stInVario.Settings.xContinousEmptying := FALSE; + #TRO133.stInVario.Settings.tWaitForJog := T#50ms;//T#400ms; + #TRO133.stInVario.Settings.tConvEmpty := T#30000ms; + #TRO133.stInVario.Settings.nCountCarrier := 1; + #TRO133.stInVario.Settings.tWaitForStop := t#3s; + + #TRO133.stInVario.Settings.xLongSlope := TRUE; + + #TRO133.stInVario.Settings.xJamSenDelayActive := TRUE; + #TRO133.stInVario.Settings.tJamSenDelay := T#2s; + + #TRO133.stInVario.Settings.tRasterHigh := t#2500ms; + #TRO133.stInVario.Settings.tRasterLow := t#2500ms; + + #TRO133.stInPriorityManager.xReleaseOk := TRUE; //braucht keine Vorfahrtsregelung + + #TRO133.stInVario.Settings.tCarrierInPosDelay := t#1300ms; + + #TRO133.stInSettings.xIsBorner := TRUE; + #TRO133.stInSettings.nBornerDest := "cDestInboundLS"; //ales was von hier kommt, muss zu Ziel 10 = Ladeschleife + #TRO133(nInMainTroNo := "cMainTro133", + xInSftyOk := "DB_InterfaceSafety".stFromSafety.EStopMainOF2.Q, + xInAllRdyToStart := TRUE, + xInAutomatic := #t_Automatik_OF2 AND "SF0120" AND "SF0124" AND "SF0126" AND "SF0130", + xInReset := "cTodoFalse", + xInErrorQuit := "SF0127" OR "SF0131", + xInMotorProtection := "FC0150", + xInRelease := "DB_TRO_TEST".TRO133, + arInOutJamEntr := "DB_JamArea4302".stJam4302_1.arCarrier, + stInOutJamEntr := "DB_JamArea4302".stJam4302_1.stData, + arInOutJamFinger := "DB_JamArea4302".stJam4302_2.arCarrier, + stInOutJamFinger := "DB_JamArea4302".stJam4302_2.stData, + stInOutMachineState := #stInOutControlUnitCabinetOF2, + stInOutCognexInterface := #stCognexInterfaceDummy, + stInOutHMI := "DB_Interface_HMI".stTRO.TRO133, + xOutStopper => "MB3130", + nOutStateLast => "DB_GLOB_TroState".arTroState["cMainTro133"], + xOutVarioMotor => "MA0150"); + + END_REGION + + REGION TRO 134 (Vario) + + #TRO134.stInSeparator1.Settings.nSeparatorNo := "cSep134.1"; + #TRO134.stInSeparator1.Settings.tTrailingTime := T#500ms; + #TRO134.stInSeparator1.Settings.tHandlingTime := T#400ms; + #TRO134.stInSeparator1.Settings.tDelayToNextItem := "TimeForSepWaiting_Short"; + #TRO134.stInSeparator1.Settings.tJam := "TimeForSepJam"; + #TRO134.stInSeparator1.Settings.xPluggedJam := FALSE; + #TRO134.stInSeparator1.Settings.xPluggedPart := FALSE; + #TRO134.stInSeparator1.Settings.xPluggedScanner := FALSE; + #TRO134.stInSeparator1.stSenInSep := "DB_Inputs".Sensors["cInBG3135"]; + + #TRO134.stInSeparator1.Settings.tSenFree := T#1500ms; + #TRO134.stInSeparator1.Settings.tSenWait := T#4000ms; + + #TRO134.stInVario.stSenFinger := "DB_Inputs".Sensors["cInBG3137"]; //Finger in Pos + #TRO134.stInVario.stSenLastPos := "DB_Inputs".Sensors["cInBG3133"]; // Conveyor full + #TRO134.stInVario.stSenCarrInPos := "DB_Inputs".Sensors["cInBG3136"]; // MT in Pos + #TRO134.stInVario.stSenJam := "DB_Inputs".Sensors["cInBG3134"]; // Jam detector + + #TRO134.stInVario.Settings.xContinousEmptying := FALSE; + #TRO134.stInVario.Settings.tWaitForJog := T#350ms;//T#400ms; + #TRO134.stInVario.Settings.tConvEmpty := T#30000ms; + #TRO134.stInVario.Settings.nCountCarrier := 1; + #TRO134.stInVario.Settings.tWaitForStop := t#3s; + + #TRO134.stInVario.Settings.xJamSenDelayActive := TRUE; + #TRO134.stInVario.Settings.tJamSenDelay := T#2s; + + #TRO134.stInVario.Settings.tCarrierInPosDelay := t#1200ms; + #TRO134.stInVario.Settings.tCarrierInPosEdgeDelay := t#100ms; + #TRO134.stInVario.Settings.tTimeOutCarrierInPos := t#5s; + + #TRO134.stInVario.Settings.xLongSlope := TRUE; + + #TRO134.stInPriorityManager.xReleaseOk := TRUE; //braucht keine Vorfahrtsregelung + + #TRO134.stInSettings.xIsBorner := TRUE; + #TRO134(nInMainTroNo := "cMainTro134", + xInSftyOk := "DB_InterfaceSafety".stFromSafety.EStopMainOF2.Q, + xInAllRdyToStart := TRUE, + xInAutomatic := #t_Automatik_OF2 AND "SF0120" AND "SF0124" AND "SF0126" AND "SF0130", + xInReset := "cTodoFalse", + xInErrorQuit := "SF0127" OR "SF0131", + xInMotorProtection := "FC0151", + xInRelease := "DB_TRO_TEST".TRO134, + arInOutJamEntr := "DB_JamArea4402".stJam4402_1.arCarrier, + stInOutJamEntr := "DB_JamArea4402".stJam4402_1.stData, + arInOutJamFinger := "DB_JamArea4403".stJam4403_1.arCarrier, + stInOutJamFinger := "DB_JamArea4403".stJam4403_1.stData, + stInOutMachineState := #stInOutControlUnitCabinetOF2, + stInOutCognexInterface := #stCognexInterfaceDummy, + stInOutHMI := "DB_Interface_HMI".stTRO.TRO134, + xOutStopper => "MB3135", + nOutStateLast => "DB_GLOB_TroState".arTroState["cMainTro134"], + xOutVarioMotor => "MA0151"); + + END_REGION + + END_REGION ; + + REGION IO_Device Bereichshalte + "IO_Device_UH01_TO_UH03".xAreaStopUZ1105 := "SF0130"; + END_REGION + + REGION Empty Carrier aus Storage anfordern - Simple Test + //Einfache Zweitpunktregelung + IF "DB_JamArea4302".stJam4302_2.stData.Status.nCount <= "DB_JamArea4302".stJam4302_2.stData.Config.nCapacitySet * 20 / 100 THEN //MIN + "IO_Device_UH01_TO_UH03".xNEED_MORE_EMPTY := TRUE; + ELSIF "DB_JamArea4302".stJam4302_2.stData.Status.nCount >= "DB_JamArea4302".stJam4302_2.stData.Config.nCapacitySet * 80 / 100 THEN //MAX + "IO_Device_UH01_TO_UH03".xNEED_MORE_EMPTY := FALSE; + END_IF; + END_REGION ; +END_FUNCTION_BLOCK + diff --git a/=A01+UH01-KF00/Programmbausteine/100_Main/fbMain_DB.xml b/=A01+UH01-KF00/Programmbausteine/100_Main/fbMain_DB.xml new file mode 100644 index 0000000..635a24f --- /dev/null +++ b/=A01+UH01-KF00/Programmbausteine/100_Main/fbMain_DB.xml @@ -0,0 +1,358 @@ + + + + + + FB_Main + FB + +
+
+
+ + +
+
+ + + true + + + + + true + + + + + true + + + + + true + + + + + true + + + + + true + + + + + true + + + + + true + + + + + true + + + + + true + + + + + true + + + + + true + + + + + true + + + + + true + + + + + true + + + + + true + + + + + + + + true + + + + + + true + + + + + + true + + + + + true + + + + + true + + + + + true + + + + + true + + + + + true + + + + + true + + + + + true + + + + + true + + + + + true + + + + + true + + + + + true + + + + + true + + + + + true + + + + + true + + + + + true + + + + + true + + + + + + true + + + + + + true + + + + + + true + + + + + true + + + + + + true + + + + + true + + + + + + + + true + + + + + true + + + + + + true + + + + + + + true + + + + + true + + + + + + + + + + + + + true + + + + + true + + + + + + true + + + + + true + + + + + true + + + + + true + + + + + + +
+ + fbMain_DB + + 59 + DB + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + \ No newline at end of file diff --git a/=A01+UH01-KF00/Programmbausteine/1_BaseSystemLib/100_Common/FB_Blinker.liblink b/=A01+UH01-KF00/Programmbausteine/1_BaseSystemLib/100_Common/FB_Blinker.liblink new file mode 100644 index 0000000..117a864 --- /dev/null +++ b/=A01+UH01-KF00/Programmbausteine/1_BaseSystemLib/100_Common/FB_Blinker.liblink @@ -0,0 +1,2 @@ +TypeGuid: f8c50fdf-18cb-49d8-bf63-620c65163568 +VersionGuid: fa6b40b5-8048-40b8-9a10-460377c0a038 diff --git a/=A01+UH01-KF00/Programmbausteine/1_BaseSystemLib/100_Common/LGF/FIFO/FC_FIFO_Append.liblink b/=A01+UH01-KF00/Programmbausteine/1_BaseSystemLib/100_Common/LGF/FIFO/FC_FIFO_Append.liblink new file mode 100644 index 0000000..5a66e52 --- /dev/null +++ b/=A01+UH01-KF00/Programmbausteine/1_BaseSystemLib/100_Common/LGF/FIFO/FC_FIFO_Append.liblink @@ -0,0 +1,2 @@ +TypeGuid: 909777d2-e8ca-420e-b3b9-f6ae53af035b +VersionGuid: b605d468-bdd6-47e4-b7f5-c931cf8b16ae diff --git a/=A01+UH01-KF00/Programmbausteine/1_BaseSystemLib/100_Common/LGF/FIFO/FC_FIFO_GetFirst.liblink b/=A01+UH01-KF00/Programmbausteine/1_BaseSystemLib/100_Common/LGF/FIFO/FC_FIFO_GetFirst.liblink new file mode 100644 index 0000000..13d5311 --- /dev/null +++ b/=A01+UH01-KF00/Programmbausteine/1_BaseSystemLib/100_Common/LGF/FIFO/FC_FIFO_GetFirst.liblink @@ -0,0 +1,2 @@ +TypeGuid: b6f005ff-2e28-4973-a770-caf1f845319a +VersionGuid: 5f307c66-66a2-4362-98ee-51660aada83e diff --git a/=A01+UH01-KF00/Programmbausteine/1_BaseSystemLib/100_Common/LGF/FIFO/LGF_FIFO.liblink b/=A01+UH01-KF00/Programmbausteine/1_BaseSystemLib/100_Common/LGF/FIFO/LGF_FIFO.liblink new file mode 100644 index 0000000..728f390 --- /dev/null +++ b/=A01+UH01-KF00/Programmbausteine/1_BaseSystemLib/100_Common/LGF/FIFO/LGF_FIFO.liblink @@ -0,0 +1,2 @@ +TypeGuid: 165134c6-89ff-4736-8f52-770c0346080b +VersionGuid: bae66bce-23a3-475d-93bf-65bd96466183 diff --git a/=A01+UH01-KF00/Programmbausteine/1_BaseSystemLib/100_Common/StateMain/FB_StateMain.liblink b/=A01+UH01-KF00/Programmbausteine/1_BaseSystemLib/100_Common/StateMain/FB_StateMain.liblink new file mode 100644 index 0000000..1404c93 --- /dev/null +++ b/=A01+UH01-KF00/Programmbausteine/1_BaseSystemLib/100_Common/StateMain/FB_StateMain.liblink @@ -0,0 +1,2 @@ +TypeGuid: f40dd329-3f8e-45dd-898b-24da6076f332 +VersionGuid: 78bc094a-ba36-410e-bb5c-9dc8345824b9 diff --git a/=A01+UH01-KF00/Programmbausteine/1_BaseSystemLib/100_Common/StateManager/FB_StateManager.liblink b/=A01+UH01-KF00/Programmbausteine/1_BaseSystemLib/100_Common/StateManager/FB_StateManager.liblink new file mode 100644 index 0000000..7ad5bf5 --- /dev/null +++ b/=A01+UH01-KF00/Programmbausteine/1_BaseSystemLib/100_Common/StateManager/FB_StateManager.liblink @@ -0,0 +1,2 @@ +TypeGuid: fc79a2eb-31dd-4847-9624-eb660ce10f25 +VersionGuid: cb3fd588-4989-4a4a-a2a6-5529192cbc90 diff --git a/=A01+UH01-KF00/Programmbausteine/1_BaseSystemLib/110_PROFINET/Barcode-Reader/FB_BarcodeReaderCognex.liblink b/=A01+UH01-KF00/Programmbausteine/1_BaseSystemLib/110_PROFINET/Barcode-Reader/FB_BarcodeReaderCognex.liblink new file mode 100644 index 0000000..2f7ffc9 --- /dev/null +++ b/=A01+UH01-KF00/Programmbausteine/1_BaseSystemLib/110_PROFINET/Barcode-Reader/FB_BarcodeReaderCognex.liblink @@ -0,0 +1,2 @@ +TypeGuid: 3342ee0b-33ee-4d32-9746-e58e39123b17 +VersionGuid: 52e3e154-927c-43ca-a9f1-9b6026af3f8a diff --git a/=A01+UH01-KF00/Programmbausteine/1_BaseSystemLib/110_PROFINET/Barcode-Reader/FB_SsccBarcodeReader.liblink b/=A01+UH01-KF00/Programmbausteine/1_BaseSystemLib/110_PROFINET/Barcode-Reader/FB_SsccBarcodeReader.liblink new file mode 100644 index 0000000..6edaff3 --- /dev/null +++ b/=A01+UH01-KF00/Programmbausteine/1_BaseSystemLib/110_PROFINET/Barcode-Reader/FB_SsccBarcodeReader.liblink @@ -0,0 +1,2 @@ +TypeGuid: 61279537-838f-481a-b050-d5fb621f0c51 +VersionGuid: 37ff235c-f7fc-4930-b3dc-60d27b12fcab diff --git a/=A01+UH01-KF00/Programmbausteine/1_BaseSystemLib/110_PROFINET/Barcode-Reader/FB_SsccReading.scl b/=A01+UH01-KF00/Programmbausteine/1_BaseSystemLib/110_PROFINET/Barcode-Reader/FB_SsccReading.scl new file mode 100644 index 0000000..8c2ca2b --- /dev/null +++ b/=A01+UH01-KF00/Programmbausteine/1_BaseSystemLib/110_PROFINET/Barcode-Reader/FB_SsccReading.scl @@ -0,0 +1,57 @@ +FUNCTION_BLOCK "FB_SsccReading" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + VAR_INPUT + stInSenEndMeasurement : "UDT_Sensor"; + xInCarrierReady : Bool; + xInReadingDone : Bool; + xInCarrierReleased : Bool; + END_VAR + + VAR_OUTPUT + xOutDoneSSCCReading : Bool; + xOutHandShake1 : Bool; + xOutStartTest1 : Bool; + END_VAR + + VAR + nState : Int := 10; + END_VAR + + +BEGIN + REGION _Sscc Reading _ + CASE #nState OF + 10:// STANDBY + #xOutDoneSSCCReading := 0; + #xOutHandShake1 := 0; + #xOutStartTest1 := 0; + IF #xInCarrierReady THEN + #nState := 20; + END_IF; + + 20:// reading + #xOutStartTest1 := 1; + IF #xInReadingDone THEN + #xOutHandShake1 := 1; + #xOutStartTest1 := 0; + #nState := 30; + END_IF; + + 30:// Waiting end sensor + #xOutDoneSSCCReading := 1; + + IF #xInCarrierReleased THEN + #nState := 40; + END_IF; + + 40: + #xOutDoneSSCCReading := 0; + IF #stInSenEndMeasurement.xDirectSensor THEN + #nState := 10; + END_IF; + + END_CASE; + END_REGION +END_FUNCTION_BLOCK + diff --git a/=A01+UH01-KF00/Programmbausteine/1_BaseSystemLib/110_PROFINET/Barcode-Reader/FC_GetAlarmNo.liblink b/=A01+UH01-KF00/Programmbausteine/1_BaseSystemLib/110_PROFINET/Barcode-Reader/FC_GetAlarmNo.liblink new file mode 100644 index 0000000..1587c73 --- /dev/null +++ b/=A01+UH01-KF00/Programmbausteine/1_BaseSystemLib/110_PROFINET/Barcode-Reader/FC_GetAlarmNo.liblink @@ -0,0 +1,2 @@ +TypeGuid: 888dc75b-b6b6-4900-a239-6d2c867697ea +VersionGuid: 46cc0419-40ed-460b-a195-d0a08c48c8de diff --git a/=A01+UH01-KF00/Programmbausteine/1_BaseSystemLib/110_PROFINET/Barcode-Reader/FC_MRoundINT.liblink b/=A01+UH01-KF00/Programmbausteine/1_BaseSystemLib/110_PROFINET/Barcode-Reader/FC_MRoundINT.liblink new file mode 100644 index 0000000..229ba04 --- /dev/null +++ b/=A01+UH01-KF00/Programmbausteine/1_BaseSystemLib/110_PROFINET/Barcode-Reader/FC_MRoundINT.liblink @@ -0,0 +1,2 @@ +TypeGuid: 60039f0c-6948-419b-9eb0-5d641af2177b +VersionGuid: 8c5f4bbf-9313-4dc8-ad58-26945063526b diff --git a/=A01+UH01-KF00/Programmbausteine/1_BaseSystemLib/110_PROFINET/Sensors/FB_SensorInput.liblink b/=A01+UH01-KF00/Programmbausteine/1_BaseSystemLib/110_PROFINET/Sensors/FB_SensorInput.liblink new file mode 100644 index 0000000..b1bf6ca --- /dev/null +++ b/=A01+UH01-KF00/Programmbausteine/1_BaseSystemLib/110_PROFINET/Sensors/FB_SensorInput.liblink @@ -0,0 +1,2 @@ +TypeGuid: a35365d7-dff1-4ac5-9689-8750d7467e8e +VersionGuid: b1b8d1e1-2be4-46f5-8e3b-08cc20f9ff04 diff --git a/=A01+UH01-KF00/Programmbausteine/1_BaseSystemLib/160_Monitoring/FB_Monitoring.liblink b/=A01+UH01-KF00/Programmbausteine/1_BaseSystemLib/160_Monitoring/FB_Monitoring.liblink new file mode 100644 index 0000000..5349cd9 --- /dev/null +++ b/=A01+UH01-KF00/Programmbausteine/1_BaseSystemLib/160_Monitoring/FB_Monitoring.liblink @@ -0,0 +1,2 @@ +TypeGuid: 8024a909-1e3e-4f70-8f13-ffe7958aad3e +VersionGuid: 2e5c8d6b-fd81-4364-8c85-7c635e9e9be3 diff --git a/=A01+UH01-KF00/Programmbausteine/1_BaseSystemLib/160_Monitoring/FB_SetAlarmAndLog.liblink b/=A01+UH01-KF00/Programmbausteine/1_BaseSystemLib/160_Monitoring/FB_SetAlarmAndLog.liblink new file mode 100644 index 0000000..8cd8448 --- /dev/null +++ b/=A01+UH01-KF00/Programmbausteine/1_BaseSystemLib/160_Monitoring/FB_SetAlarmAndLog.liblink @@ -0,0 +1,2 @@ +TypeGuid: 2d4f98e2-307a-4d8c-ad18-172d395d7189 +VersionGuid: da7f5558-c66c-49f0-982d-1c07a6997146 diff --git a/=A01+UH01-KF00/Programmbausteine/1_BaseSystemLib/160_Monitoring/dbDataLogBuffer.xml b/=A01+UH01-KF00/Programmbausteine/1_BaseSystemLib/160_Monitoring/dbDataLogBuffer.xml new file mode 100644 index 0000000..953ffb4 --- /dev/null +++ b/=A01+UH01-KF00/Programmbausteine/1_BaseSystemLib/160_Monitoring/dbDataLogBuffer.xml @@ -0,0 +1,72 @@ + + + + + + +
+ + + + + + true + + +
+
+ Optimized + 100 + dbDataLogBuffer + + 75 + DB +
+ + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + +
+
\ No newline at end of file diff --git a/=A01+UH01-KF00/Programmbausteine/1_BaseSystemLib/170_Communications/TCP/FB_TCP_LCOM_TeleHandler.scl b/=A01+UH01-KF00/Programmbausteine/1_BaseSystemLib/170_Communications/TCP/FB_TCP_LCOM_TeleHandler.scl new file mode 100644 index 0000000..4f44038 --- /dev/null +++ b/=A01+UH01-KF00/Programmbausteine/1_BaseSystemLib/170_Communications/TCP/FB_TCP_LCOM_TeleHandler.scl @@ -0,0 +1,624 @@ +FUNCTION_BLOCK "FB_TCP_LCOM_TeleHandler" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + VAR_INPUT + xInGetFirst : Bool; // Holt das erste älteste Telegram aus dem Puffer + xInReset : Bool; // Setzt den TeleHandler zurück + xInSendTele : Bool; // Das gewünschte Telegram wird versendet + stInTelegramSend : "UDT_TelegramData_Send"; // Das Telegram, dass versendet werden soll + stInTelegramDefinition : "UDT_TelegramDefinition"; // Telegram-Definition + stInTcpTypeConfig : "LCom_typeConfig"; + END_VAR + + VAR_OUTPUT + stOutNewTelegram : "UDT_TelegramData"; // Das erste älteste Telegram, wird mit xInGetFirst geholt + xOutConnectionActive : Bool; // Verbindungszustand zum Partner + xOutTelegramAvailable : Bool; // Zeigt an, ob ein Telegram zur Verfügung steht + xOutError : Bool; // Fehler + sOutErrorText : String; // Fehler Text + END_VAR + + VAR_IN_OUT + xInOutSendTele : Bool; + fbInOutSendFIFO : "LGF_FIFO"; + arFifoSendBuffer : Array[1..100] of "UDT_TelegramData_Send"; + END_VAR + + VAR + stTelegramSend { S7_SetPoint := 'False'} : "UDT_TelegramData_Send"; + xStart : Bool; + arTelegramList { S7_SetPoint := 'False'} : Array[0.."TELEGRAM_RECV_LIST_MAX"] of "UDT_TelegramData"; // Telegramliste mit allen aktuellen Telegrammen + nTelegramListWrite { S7_SetPoint := 'True'} : DInt := 0; // Index zum Schreiben + nTelegramListRead { S7_SetPoint := 'True'} : DInt := 0; // Index zum Lesen + fbTeleRecvFifo : "LGF_FIFO"; + fbTeleSendFifo : "LGF_FIFO"; + fbTcpComm { S7_SetPoint := 'False'} : "LCom_Communication"; // Aufruf TCP-Baustein // IST MULTIINSTANZ HIER SINNVOLL??? + stTcpParam : Struct // TCP-Parameter + xEnable : Bool; // enables TCP/IP connection + xSendRequest : Bool; // triggers a send request + xSending : Bool; + nRcvLen : UInt; // length of data you want to receive from partner (opt. DBs = 0) + nSendLen : UInt; // length of date so send to partner + xAdhocMode : Bool; // activate adhoc Mode to receive data with variable len + xConnectionEstablished { S7_SetPoint := 'True'} : Bool; // connection to partner established + xNdr { S7_SetPoint := 'True'} : Bool; // new data received + xDone { S7_SetPoint := 'True'} : Bool; // send request finished successully + xBusy : Bool; // block is busy + xError : Bool; // error occurred + nRcvdLen : UDInt; // length of received data + nStatusId : UInt; // error location in block + nStatus : Word; // status word from OUC blocks + t_TelegramReceiveBuffer : Array[0..#cTelegramLengthReceive] of Byte; // Empfangspuffer + t_TelegramSendBuffer : Array[0..#cTelegramLengthSend] of Byte; // Sendepuffer + stDiagnosticData : "LCom_typeDiagnostics"; + stTypeConfig : "LCom_typeConfig"; + END_STRUCT; + stRecvFifoParam : Struct // Recv-Fifo Parameter + xEnq : Bool; + xDeq : Bool; + xReset : Bool; + xClear : Bool; + nInitItem : String; + nMaxElementCount : USInt; + sStringIn : String; + sStringOut : String; + arStringBuffer : Array[1..10] of String; + END_STRUCT; + stSendFifoParam : Struct // Send-Fifo Parameter + xEnq : Bool; + xDeq : Bool; + xReset : Bool; + xClear : Bool; + nInitItem : String; + nMaxElementCount : USInt; + sStringIn : String; + sStringOut : String; + arStringBuffer : Array[1..100] of String; + END_STRUCT; + statEdgeGetFirst : Bool; // Flankenmerker GetFirst + statEdgeReset : Bool; // Flankenmerker Reset + statEdgeSend : Bool; // Flankenmerker Send + stTelegramDefinition { S7_SetPoint := 'False'} : "UDT_TelegramDefinition"; // Telegram-Definition + stFirstTelegram : "UDT_TelegramData"; // Das erste älteste Telegram + sBuildString { S7_SetPoint := 'True'} : String; // String zum Versenden wird hier zusammengestellt + nStateConn : Int; // Verbindungszustand TCP + sConnectionStatus : String; // Verbindungzustand TCP Text + tOnRetryEnable {InstructionName := 'TON_TIME'; LibVersion := '1.0'} : TON_TIME; // Totzeit Verbindung neu aufbauen + tOnWatchdogConn {InstructionName := 'TON_TIME'; LibVersion := '1.0'} : TON_TIME; // Überwachungszeit Verbindungsaufbau + arAnalyzeBuffer : Array[0..100000] of Byte; // Zwischenpuffer für Parser + nAnalyzeBufferLen : UDInt := 0; // Länge des Zwischenpuffer + nParseState : Int; // Parse Zustand + nLenTelegram : UDInt; // Hilfsvariable Telegrammlänge + arRecvdTelegram : Array[0..100000] of Byte; // Das empfangene Telegramm in Bytes + xTelegramAvailable { S7_SetPoint := 'True'} : Bool; // Zeigt an, ob ein Telegramm zur Verfügung steht + xTestSend : Bool; + "Char" : Char; + "String" : String[1]; + fbEventLogSending : "FB_EventLog_Root"; + fbEventLogReceiving : "FB_EventLog_Root"; + sLogReceiveMessage : String; + sLogRecvSingle : String[1]; + fTrigSending {InstructionName := 'F_TRIG'; LibVersion := '1.0'} : F_TRIG; + END_VAR + + VAR_TEMP + tempEdgeGetFirst : Bool; + tempEdgeReset : Bool; + tempEdgeSend : Bool; + i : DInt; + x : UDInt; + y : UDInt; + p : UDInt; + n : UDInt; + r : UDInt; + RetVal_MoveBlk_RecvdTele : Int; + RetVal_MoveBlk_Zwischenpuffer : Int; + RetVal_MoveBlk_ZwPu : Int; + Laenge : DInt; + a : UDInt; + RetVal_StartMarkerFound : Bool; + RetVal_EndMarkerFound : Bool; + strLen : UInt; + xSuccess_Append_SendFIFO : Bool; + xSuccess_GF_SendFIFO : Bool; + sInitialEmptyString : String; + j : DInt; + stInitialTelegram : "UDT_TelegramData_Send"; + empty : "UDT_TelegramData_Send"; + xSuccess : Bool; + END_VAR + + VAR CONSTANT + cTelegramLengthSend : UDInt := 65535; // Länge des Sendepuffer + cTelegramLengthReceive : UDInt := 65535; // Länge des Empfangspuffer + cCheckSumLength : UDInt := 10; // Checksumme Länge + STATE_NOTCONNECTED : Int := 0; // State: nicht Verbunden + STATE_CONNECTED : Int := 1; // State: Verbunden + STATE_RECONNECT : Int := 4; // State: Neu verbinden + E_TeleParseState_START : Int := 0; // ParseState: Warte auf Startmarker + E_TeleParseState_DATA : Int := 1; // ParseState: Analyse Daten + END_VAR + + +BEGIN + REGION Edges + // Flankenerkennung + #tempEdgeGetFirst := #xInGetFirst AND NOT #statEdgeGetFirst; + #statEdgeGetFirst := #xInGetFirst; + + #tempEdgeReset := #xInReset AND NOT #statEdgeReset; + #statEdgeReset := #xInReset; + + #tempEdgeSend := #xInOutSendTele AND NOT #statEdgeSend; + #statEdgeSend := #xInOutSendTele; + + END_REGION + + REGION Initialize + // Eingangswerte werden umkopiert + #stTelegramDefinition.sStartMarker := #stInTelegramDefinition.#sStartMarker; + #stTelegramDefinition.nStartMarkerLen := INT_TO_UDINT(LEN(#stInTelegramDefinition.#sStartMarker)); + + #stTelegramDefinition.sEndMarker := #stInTelegramDefinition.#sEndMarker; + #stTelegramDefinition.nEndMarkerLen := INT_TO_UDINT(LEN(#stInTelegramDefinition.#sEndMarker)); + + #stTelegramDefinition.bSeparatorByte := #stInTelegramDefinition.#bSeparatorByte; + + #stTelegramDefinition.sStartMarkerSend := #stInTelegramDefinition.#sStartMarkerSend; + #stTelegramDefinition.nStartMarkerLenSend := INT_TO_UDINT(LEN(#stInTelegramDefinition.#sStartMarkerSend)); + + #stTelegramDefinition.sEndMarkerSend := #stInTelegramDefinition.#sEndMarkerSend; + #stTelegramDefinition.nEndMarkerLenSend := INT_TO_UDINT(LEN(#stInTelegramDefinition.#sEndMarkerSend)); + + #stTelegramDefinition.nLength := #stInTelegramDefinition.#nLength; + + #stTelegramDefinition.nTelegramIDDataField := #stInTelegramDefinition.#nTelegramIDDataField; + #stTelegramDefinition.xTelegramIDIsNumber := #stInTelegramDefinition.#xTelegramIDIsNumber; + + END_REGION + + REGION Reset + // Telehandler rücksetzen + IF #tempEdgeReset THEN + FOR #i := 0 TO 100000 DO + #arAnalyzeBuffer[#i] := 0; + END_FOR; + + // #arAnalyzeBuffer := #arEmptyBuffer; + #nAnalyzeBufferLen := 0; + + FOR #i := 0 TO "TELEGRAM_RECV_LIST_MAX" DO + #arTelegramList[#i].sIDString := ''; + #arTelegramList[#i].nID := 0; + #arTelegramList[#i].xCRC32ValidationResult := FALSE; + FOR #j := 1 TO "TELEGRAM_DATA_MAX" DO + #arTelegramList[#i].arDataString[#j] := ''; + END_FOR; + #arTelegramList[#i].nDataCount := 0; + END_FOR; + + #nTelegramListRead := 0; + #nTelegramListWrite := 0; + + // #stFirstTelegram := #stEmptyTelegram; + #stFirstTelegram.nDataCount := 0; + #stFirstTelegram.nID := 0; + #stFirstTelegram.sIDString := ''; + #stFirstTelegram.xCRC32ValidationResult := FALSE; + FOR #i := 1 TO "TELEGRAM_DATA_MAX" DO + #stFirstTelegram.arDataString[#i] := ''; + END_FOR; + + #stSendFifoParam.xClear := TRUE; + FOR #i := 0 TO 65535 DO + #stTcpParam.t_TelegramSendBuffer[#i] := 0; + END_FOR; + + // #stTcpParam.t_TelegramSendBuffer := #arEmptyBuffer; + + ELSE + #stSendFifoParam.xClear := FALSE; + END_IF; + + END_REGION + + REGION GetFirst + IF #tempEdgeGetFirst THEN // Erstes Telegram holen + IF (#nTelegramListRead <> #nTelegramListWrite) THEN // Liste ist nicht leer + #stFirstTelegram := #arTelegramList[#nTelegramListRead]; // Erstes Telegram schreiben + + #nTelegramListRead := #nTelegramListRead + 1; // Lese-Index inkrementieren + IF (#nTelegramListRead > "TELEGRAM_RECV_LIST_MAX") THEN // Lese-Index rücksetzen wenn Max erreicht + #nTelegramListRead := 0; + END_IF; + + #xTelegramAvailable := (#nTelegramListRead <> #nTelegramListWrite); // Telegramm verfügbar, wenn Indexe ungleich + ELSE + // #stFirstTelegram := #stEmptyTelegram; + #stFirstTelegram.nDataCount := 0; + #stFirstTelegram.nID := 0; + #stFirstTelegram.sIDString := ''; + #stFirstTelegram.xCRC32ValidationResult := FALSE; + FOR #i := 1 TO "TELEGRAM_DATA_MAX" DO + #stFirstTelegram.arDataString[#i] := ''; + END_FOR; + // TODO Error // Fehler erzeugen, weil z.B. FIFO leer ist + END_IF; + END_IF; + + END_REGION + + + REGION Parse + IF (* #xStart *)(#nStateConn = #STATE_CONNECTED) AND #stTcpParam.xNdr THEN // neue Daten? + FOR #p := 0 TO #stTcpParam.nRcvdLen - 1 DO // Alle empfangenen Bytes durchgehen + #arAnalyzeBuffer[#nAnalyzeBufferLen] := #stTcpParam.t_TelegramReceiveBuffer[#p]; // Byte[p] von Empfangspuffer in Analysepuffer kopieren + #nAnalyzeBufferLen := #nAnalyzeBufferLen + 1; // Pufferlänge inkrementieren + + REGION 0000: ParseState = START + // ParseState = Start + IF #nParseState = #E_TeleParseState_START THEN // Start-Zustand + IF #stTelegramDefinition.nStartMarkerLen > 0 THEN // Start Marker definiert? (>0 bedeutet das einer definiert wurde) + IF #nAnalyzeBufferLen >= #stTelegramDefinition.nStartMarkerLen THEN // Wenn die Zeichen im Zwischenpuffer noch geringer sind als die Länge des definierten Startmarkers, dann nichts zu tun, nächstes Zeichen holen --> END_IF + #RetVal_StartMarkerFound := "FC_ParseCheckForStart"(bInNewData := #stTcpParam.t_TelegramReceiveBuffer[#p], //Funktion überprüft den Startmarker + arInBuffer := #arAnalyzeBuffer, + nInBufferLen := #nAnalyzeBufferLen, + stInTelegramDefinition := #stTelegramDefinition); + IF NOT #RetVal_StartMarkerFound THEN + #RetVal_MoveBlk_ZwPu := MOVE_BLK_VARIANT(SRC := #arAnalyzeBuffer, COUNT := #nAnalyzeBufferLen - 1, SRC_INDEX := 1, DEST_INDEX := 0, DEST => #arAnalyzeBuffer); + #nAnalyzeBufferLen := #nAnalyzeBufferLen - 1; + ELSE + #nParseState := #E_TeleParseState_DATA; //StartMarker gefunden, Zustandswechsel zu Daten + END_IF; + END_IF; + ELSE // Es wurde kein StartMarker definiert / ohne Startmarker + #nParseState := #E_TeleParseState_DATA; + END_IF; + END_IF; + END_REGION + + REGION 0001: ParseState = DATA + IF #nParseState = #E_TeleParseState_DATA THEN // Daten-Analyse + #RetVal_EndMarkerFound := "FC_ParseCheckForEnd"(bInNewData := #stTcpParam.t_TelegramReceiveBuffer[#p], // Funktion überprüft den Endmarker + arInBuffer := #arAnalyzeBuffer, + nInBufferLen := #nAnalyzeBufferLen, + stInTelegramDefinition := #stTelegramDefinition); + + #RetVal_StartMarkerFound := "FC_ParseCheckForStart"(bInNewData := #stTcpParam.t_TelegramReceiveBuffer[#p], //Funktion überprüft den Startmarker + arInBuffer := #arAnalyzeBuffer, + nInBufferLen := #nAnalyzeBufferLen, + stInTelegramDefinition := #stTelegramDefinition); + + IF #RetVal_EndMarkerFound THEN // End-Marker wurde gefunden + // reset RecvdTelegram + // #arRecvdTelegram := #arEmptyBuffer; + FOR #i := 0 TO 100000 DO + #arRecvdTelegram[#i] := 0; + END_FOR; + + // Telegram aus Puffer rauskopieren ohne die Marker! + #nLenTelegram := (#nAnalyzeBufferLen - (#stTelegramDefinition.nStartMarkerLen + #stTelegramDefinition.nEndMarkerLen)); + #RetVal_MoveBlk_RecvdTele := MOVE_BLK_VARIANT(SRC := #arAnalyzeBuffer, COUNT := #nLenTelegram, SRC_INDEX := #stTelegramDefinition.nStartMarkerLen, DEST_INDEX := 0, DEST => #arRecvdTelegram); + + // Zwischenpuffer reset + FOR #i := 0 TO 100000 DO + #arAnalyzeBuffer[#i] := 0; + END_FOR; + + // #arAnalyzeBuffer := #arEmptyBuffer; + #nAnalyzeBufferLen := 0; + + //Reset die telegramList-Position wo wir die neuen Daten reinschreiben + // #arTelegramList[#nTelegramListWrite] := #stEmptyTelegram; + + #arTelegramList[#nTelegramListWrite].nID := 0; + #arTelegramList[#nTelegramListWrite].sIDString := ''; + #arTelegramList[#nTelegramListWrite].xCRC32ValidationResult := FALSE; + FOR #i := 1 TO "TELEGRAM_DATA_MAX" DO + #arTelegramList[#nTelegramListWrite].arDataString[#i] := ''; + END_FOR; + #arTelegramList[#nTelegramListWrite].nDataCount := 1; + + IF (#stTelegramDefinition.bSeparatorByte <> 0) THEN // Es gibt ein Separator Byte, ansonsten wird davon ausgegangen, dass es alles am Stück ist + #x := 0; + FOR #y := 0 TO #nLenTelegram DO // Ganzes Telegram durchgehen + IF (#arRecvdTelegram[#y] = #stTelegramDefinition.bSeparatorByte) THEN // Wenn das Byte dem Separator-Byte entspricht + #x := 0; + #arTelegramList[#nTelegramListWrite].nDataCount := #arTelegramList[#nTelegramListWrite].nDataCount + 1; // DataCount inkrementieren, da neues Datenfeld + IF (#arTelegramList[#nTelegramListWrite].nDataCount > "TELEGRAM_DATA_MAX") THEN // Fehler abfangen, wenn zu viele Datenfelder im Telegram sind + // TODO Error erzeugen + EXIT; + END_IF; + ELSE + IF (#x <= "TELEGRAM_DATA_FIELD_MAX") THEN + #String := CHAR_TO_STRING((BYTE_TO_CHAR(#arRecvdTelegram[#y]))); + #arTelegramList[#nTelegramListWrite].arDataString[#arTelegramList[#nTelegramListWrite].nDataCount] := CONCAT(IN1 := #arTelegramList[#nTelegramListWrite].arDataString[#arTelegramList[#nTelegramListWrite].nDataCount], IN2 := #String); + // #arData_Test[#arTelegramList[#nTelegramListWrite].nDataCount, #x + 1] := #arRecvdTelegram[#y]; // Byte in 2D-Array of Byte schreiben + #x := #x + 1; + END_IF; + END_IF; + END_FOR; + ELSE // Wenn kein Separator-Byte definiert wurde, dann das Telegram an die erste Position schreiben + FOR #a := 0 TO #nLenTelegram DO + // #arData_Test[1, #a + 1] := #arRecvdTelegram[#a]; + #String := CHAR_TO_STRING((BYTE_TO_CHAR(#arRecvdTelegram[#a]))); + #arTelegramList[#nTelegramListWrite].arDataString[#arTelegramList[#nTelegramListWrite].nDataCount] := CONCAT(IN1 := #arTelegramList[#nTelegramListWrite].arDataString[#arTelegramList[#nTelegramListWrite].nDataCount], IN2 := #String); + END_FOR; + END_IF; + + // convert each byte field into a string + (* FOR #n := 1 TO DINT_TO_UDINT(#arTelegramList[#nTelegramListWrite].nDataCount) DO //1 TO 64 + Chars_TO_Strg(Chars := #arData_Test[#n], + pChars := 0, + Cnt := "TELEGRAM_DATA_FIELD_MAX", + Strg => #arTelegramList[#nTelegramListWrite].arDataString[#n]); + END_FOR; *) + + // increment write pointer to telegram data ring buffer: + + #sLogReceiveMessage := ''; + FOR #a := 0 TO #nLenTelegram DO + #sLogRecvSingle := CHAR_TO_STRING((BYTE_TO_CHAR(#arRecvdTelegram[#a]))); + #sLogReceiveMessage := CONCAT(IN1 := #sLogReceiveMessage, IN2 := #sLogRecvSingle); + END_FOR; + + + #fbEventLogReceiving.sInMessage := #sLogReceiveMessage; + (* FOR #j := 1 TO #arTelegramList[#nTelegramListWrite].nDataCount DO + #fbEventLogReceiving.sInMessage := CONCAT_STRING(IN1:= #fbEventLogReceiving.sInMessage, IN2:= '',IN3:=#arTelegramList[#nTelegramListWrite].arDataString[#j]); + END_FOR; *) + #fbEventLogReceiving.xInTrigger := 1; + + #nTelegramListWrite := #nTelegramListWrite + 1; + IF (#nTelegramListWrite > "TELEGRAM_RECV_LIST_MAX") THEN // Wenn Maximum an Telegrammen erreicht, dann Index zurücksetzen, ältestes wird überschrieben + #nTelegramListWrite := 0; + END_IF; + + #xTelegramAvailable := TRUE; // Info rausgeben + + #nParseState := #E_TeleParseState_START; // Zustandswechsel + + END_IF; + ELSIF #RetVal_StartMarkerFound AND (#nAnalyzeBufferLen > #stTelegramDefinition.nStartMarkerLen) THEN + // #Laenge := #nAnalyzeBufferLen - #stTelegramDefinition.nStartMarkerLen; // 8192 - ... + #RetVal_MoveBlk_Zwischenpuffer := MOVE_BLK_VARIANT(SRC := #arAnalyzeBuffer, COUNT := ((#cTelegramLengthReceive + 1) - #nAnalyzeBufferLen - #stTelegramDefinition.nStartMarkerLen), SRC_INDEX := UDINT_TO_DINT(#nAnalyzeBufferLen - #stTelegramDefinition.nStartMarkerLen), DEST_INDEX := 0, DEST => #arAnalyzeBuffer); + #nAnalyzeBufferLen := #stTelegramDefinition.nStartMarkerLen; + ELSE + IF (UDINT_TO_DINT(#stTelegramDefinition.nLength) > 0 AND + #nAnalyzeBufferLen >= UDINT_TO_DINT(#stTelegramDefinition.nLength)) THEN + + #RetVal_MoveBlk_Zwischenpuffer := MOVE_BLK_VARIANT(SRC := #arAnalyzeBuffer, COUNT := #cTelegramLengthReceive + 1, SRC_INDEX := 1, DEST_INDEX := 0, DEST => #arAnalyzeBuffer); + + #nAnalyzeBufferLen := #nAnalyzeBufferLen - 1; + + END_IF; + END_IF; + END_REGION + + END_FOR; + FOR #i := 0 TO 65535 DO + #stTcpParam.t_TelegramReceiveBuffer[#i] := 0; + END_FOR; + // #stTcpParam.t_TelegramReceiveBuffer := #temp_TelegramReceiveBuffer; + END_IF; + #xStart := FALSE; + + END_REGION + + (* REGION Sending + IF #tempEdgeSend THEN + REGION Prepare new Telegram and add to Send-FIFO + // add start string + IF (#stTelegramDefinition.sStartMarkerSend <> '') THEN + #sBuildString := #stTelegramDefinition.sStartMarkerSend; + ELSE + #sBuildString[1] := '0'; + END_IF; + + // add data fields: + FOR #i := 1 TO #stInTelegramSend.nDataCount DO + IF (#i > 1) THEN + #sBuildString := CONCAT(IN1 := #sBuildString, IN2 := CHAR_TO_STRING(#stTelegramDefinition.bSeparatorByte)); + END_IF; + + IF (#stInTelegramSend.arDataString[#i] <> '') THEN + #sBuildString := CONCAT(IN1 := #sBuildString, IN2 := #stInTelegramSend.arDataString[#i]); + END_IF; + END_FOR; + + // add end string: + IF (#stTelegramDefinition.sEndMarkerSend <> '') THEN + #sBuildString := CONCAT(IN1 := #sBuildString, IN2 := #stTelegramDefinition.sEndMarkerSend); + END_IF; + + REGION SendStr + // hier dann sBuildString mit Enqueue in SendFIFO schieben zum Versenden + IF NOT #fbTeleSendFifo.isFull THEN + // #stSendFifoParam.sStringIn := #sBuildString; + "FC_FIFO_Append"(DataIn := #sBuildString, + InitialItem := #sInitialEmptyString, + MaxNo := 100, + Success => #xSuccess_Append_SendFIFO, + fifoBuffer := #fbTeleSendFifo, + buffer := #stSendFifoParam.arStringBuffer); + // #stSendFifoParam.xEnq := TRUE; + #xInOutSendTele := FALSE; + #fbEventLogSending.sInMessage := #sBuildString; + #fbEventLogSending.xInTrigger := 1; + ELSE + // Error Todo + ; + END_IF; + END_REGION ; + END_REGION + END_IF; + END_REGION *) + + REGION Send Telegram + IF NOT #fbInOutSendFIFO.isEmpty AND // Es gibt etwas zum Senden? + (#nStateConn = #STATE_CONNECTED) AND // Verbindung zum Partner aufgebaut + //NOT #stSendFifoParam.xDeq AND // FIFO nicht busy + NOT #stTcpParam.xSendRequest AND // Aktuell kein aktiver Sendeauftrag + NOT #stTcpParam.xSending + THEN + "FC_FIFO_GetFirst"(xInInitialItem := #stInitialTelegram, + nInMaxNo := 100, + xOutSuccess => #xSuccess_GF_SendFIFO, + xOutData => #stTelegramSend, + fifoBuffer := #fbInOutSendFIFO, + buffer := #arFifoSendBuffer); + END_IF; + + IF #xSuccess_GF_SendFIFO THEN // Wenn erstes Telegram herausgeholt + "DB_CommunciationParametersLogger".xIsLogger := TRUE; + REGION Log + IF "FB_CommunicationLogger_DB".fbTeleHandler.xOutConnectionActive AND NOT #xInSendTele THEN + + // "DB_CommunciationParametersLogger".xIsLogger := TRUE; + + "FC_FIFO_Append"(DataIn := #stTelegramSend, + InitialItem := #empty, + MaxNo := 100, + Success => #xSuccess, + fifoBuffer := "DB_LGF_FIFO_CommLogger", + buffer := "DB_Buffer_CommunicationLogger".BUFFER); + ; + END_IF; + + END_REGION ; + + + REGION Prepare Telegram for sending + // add start string + IF (#stTelegramDefinition.sStartMarkerSend <> '') THEN + #sBuildString := #stTelegramDefinition.sStartMarkerSend; + ELSE + #sBuildString[1] := '0'; + END_IF; + + // add data fields: + FOR #i := 1 TO #stTelegramSend.nDataCount DO + IF (#i > 1) THEN + #sBuildString := CONCAT(IN1 := #sBuildString, IN2 := CHAR_TO_STRING(#stTelegramDefinition.bSeparatorByte)); + END_IF; + + IF (#stTelegramSend.arDataString[#i] <> '') THEN + #sBuildString := CONCAT(IN1 := #sBuildString, IN2 := #stTelegramSend.arDataString[#i]); + END_IF; + END_FOR; + + // add end string: + IF (#stTelegramDefinition.sEndMarkerSend <> '') THEN + #sBuildString := CONCAT(IN1 := #sBuildString, IN2 := #stTelegramDefinition.sEndMarkerSend); + END_IF; + END_REGION + + #strLen := INT_TO_UINT(LEN(#sBuildString)); // Telegramlänge ermitteln + Strg_TO_Chars(Strg := #sBuildString, // Telegramstring in Array of Byte umwandeln + pChars := 0, + Cnt => #strLen, + Chars := #stTcpParam.t_TelegramSendBuffer); + #stTcpParam.nSendLen := #strLen; // Telegramlänge übergeben + #stTcpParam.xSendRequest := TRUE; // Sendeauftrag starten + END_IF; + + END_REGION + + REGION TCP-Verbindungszustand + CASE #nStateConn OF + + #STATE_RECONNECT: + + REGION STATE: RECONNECT + // Status + #sConnectionStatus := 'RECONNECTING'; + + // Static + #stTcpParam.xSendRequest := FALSE; + #stTcpParam.xEnable := FALSE; // Disable connection + + // Transition + IF #tOnRetryEnable.Q THEN // Totzeit + #nStateConn := #STATE_NOTCONNECTED; + END_IF; + END_REGION + + #STATE_NOTCONNECTED: + + REGION STATE: NOT CONNECTED + // Status + #sConnectionStatus := 'NOT CONNECTED'; + + // Static + #stTcpParam.xSendRequest := FALSE; + #stTcpParam.xEnable := TRUE; // Verbindungsaufbau aktivieren / TCP-Baustein aktivieren + + // Transition + IF #stTcpParam.xConnectionEstablished THEN // Erfolgreich verbunden mit Partner? + #nStateConn := #STATE_CONNECTED; + ELSIF #tOnWatchdogConn.Q THEN // Nach Timeout wird der Verbindungsaufbau neu getriggert + #nStateConn := #STATE_RECONNECT; + END_IF; + END_REGION + + #STATE_CONNECTED: + + REGION STATE: CONNECTED + #sConnectionStatus := 'CONNECTED'; + + IF NOT #stTcpParam.xConnectionEstablished THEN // Verbindung verloren? + #nStateConn := #STATE_RECONNECT; // Neue Verbindung starten + END_IF; + END_REGION + + END_CASE; + + END_REGION + + REGION TCP-Communication: Server + #fbTcpComm(configuration := #stInTcpTypeConfig, + enable := #stTcpParam.xEnable, + send := #stTcpParam.xSendRequest, + sendDataLength := #stTcpParam.nSendLen, + connected => #stTcpParam.xConnectionEstablished, + sending => #stTcpParam.xSending, + dataReceived => #stTcpParam.xNdr, + receivedDataLength => #stTcpParam.nRcvdLen, + busy => #stTcpParam.xBusy, + error => #stTcpParam.xError, + status => #stTcpParam.nStatus, + sendBuffer := #stTcpParam.t_TelegramSendBuffer, + receiveBuffer := #stTcpParam.t_TelegramReceiveBuffer, + diagnostics := #stTcpParam.stDiagnosticData); + + #fTrigSending(CLK:= #stTcpParam.xSending); + + IF #fTrigSending.Q THEN + #stTcpParam.xSendRequest := FALSE; + END_IF; + END_REGION + + REGION Timer + #tOnRetryEnable(IN := #nStateConn = #STATE_RECONNECT, + PT := t#50ms); + + #tOnWatchdogConn(IN := #nStateConn = #STATE_NOTCONNECTED, + PT := t#15s); + END_REGION + + REGION Outputs + #xOutTelegramAvailable := #xTelegramAvailable; + #stOutNewTelegram := #stFirstTelegram; + #xOutConnectionActive := (#nStateConn = #STATE_CONNECTED); + END_REGION + + REGION Logging + #fbEventLogSending(sInInstance := CONCAT(IN1 := ''(* #stInTcpParameters.sInInstance *), IN2 := '-Sending'), + nInLogLevel := 0(* "E_LogLevel.DEBUG" *)); + #fbEventLogSending.xInTrigger := 0; + #fbEventLogReceiving(sInInstance := CONCAT(IN1 := ''(* #stInTcpParameters.sInInstance *), IN2 := '-Receiving'), + nInLogLevel := 0(* "E_LogLevel.DEBUG" *)); + #fbEventLogReceiving.xInTrigger := 0; + END_REGION +END_FUNCTION_BLOCK + diff --git a/=A01+UH01-KF00/Programmbausteine/1_BaseSystemLib/170_Communications/TCP/TeleHandler/FB_EventLog_Root.liblink b/=A01+UH01-KF00/Programmbausteine/1_BaseSystemLib/170_Communications/TCP/TeleHandler/FB_EventLog_Root.liblink new file mode 100644 index 0000000..66f48cf --- /dev/null +++ b/=A01+UH01-KF00/Programmbausteine/1_BaseSystemLib/170_Communications/TCP/TeleHandler/FB_EventLog_Root.liblink @@ -0,0 +1,2 @@ +TypeGuid: 507f060d-3ada-4f0d-be55-ad0a573f4197 +VersionGuid: 0eb2e25d-8a3e-4933-a967-d5e3f0e48bb4 diff --git a/=A01+UH01-KF00/Programmbausteine/1_BaseSystemLib/170_Communications/TCP/TeleHandler/FC_DateAsString.liblink b/=A01+UH01-KF00/Programmbausteine/1_BaseSystemLib/170_Communications/TCP/TeleHandler/FC_DateAsString.liblink new file mode 100644 index 0000000..1c4d8f8 --- /dev/null +++ b/=A01+UH01-KF00/Programmbausteine/1_BaseSystemLib/170_Communications/TCP/TeleHandler/FC_DateAsString.liblink @@ -0,0 +1,2 @@ +TypeGuid: ec1c1f34-0a2d-4751-84a8-f9c4ee84884b +VersionGuid: 4adee4de-c703-4794-9700-da57684c5c9f diff --git a/=A01+UH01-KF00/Programmbausteine/1_BaseSystemLib/170_Communications/TCP/TeleHandler/FC_Loglevel_to_String.liblink b/=A01+UH01-KF00/Programmbausteine/1_BaseSystemLib/170_Communications/TCP/TeleHandler/FC_Loglevel_to_String.liblink new file mode 100644 index 0000000..f271c2b --- /dev/null +++ b/=A01+UH01-KF00/Programmbausteine/1_BaseSystemLib/170_Communications/TCP/TeleHandler/FC_Loglevel_to_String.liblink @@ -0,0 +1,2 @@ +TypeGuid: ecdcb816-c5f6-4500-b05f-1b5b1f79ef0b +VersionGuid: 85d69f29-f857-4428-90a9-872b80e36573 diff --git a/=A01+UH01-KF00/Programmbausteine/1_BaseSystemLib/170_Communications/TCP/TeleHandler/FC_TimeAsString.liblink b/=A01+UH01-KF00/Programmbausteine/1_BaseSystemLib/170_Communications/TCP/TeleHandler/FC_TimeAsString.liblink new file mode 100644 index 0000000..90b5c34 --- /dev/null +++ b/=A01+UH01-KF00/Programmbausteine/1_BaseSystemLib/170_Communications/TCP/TeleHandler/FC_TimeAsString.liblink @@ -0,0 +1,2 @@ +TypeGuid: e790056b-d8d1-47bb-bce9-c6e26c157eec +VersionGuid: 36b9f032-4747-42aa-b87f-9637f121af9c diff --git a/=A01+UH01-KF00/Programmbausteine/1_BaseSystemLib/170_Communications/TCP/TeleHandler/Parser/FC_ParseCheckForEnd.liblink b/=A01+UH01-KF00/Programmbausteine/1_BaseSystemLib/170_Communications/TCP/TeleHandler/Parser/FC_ParseCheckForEnd.liblink new file mode 100644 index 0000000..b4fd484 --- /dev/null +++ b/=A01+UH01-KF00/Programmbausteine/1_BaseSystemLib/170_Communications/TCP/TeleHandler/Parser/FC_ParseCheckForEnd.liblink @@ -0,0 +1,2 @@ +TypeGuid: 7462bbc8-2811-4b0d-bdf1-031a6aa286ee +VersionGuid: c0b69439-324f-4624-bfa7-02fc724e52f7 diff --git a/=A01+UH01-KF00/Programmbausteine/1_BaseSystemLib/170_Communications/TCP/TeleHandler/Parser/FC_ParseCheckForStart.liblink b/=A01+UH01-KF00/Programmbausteine/1_BaseSystemLib/170_Communications/TCP/TeleHandler/Parser/FC_ParseCheckForStart.liblink new file mode 100644 index 0000000..03b0fc9 --- /dev/null +++ b/=A01+UH01-KF00/Programmbausteine/1_BaseSystemLib/170_Communications/TCP/TeleHandler/Parser/FC_ParseCheckForStart.liblink @@ -0,0 +1,2 @@ +TypeGuid: 9058dc9e-b9e7-4405-8e1d-e48b9273bd5f +VersionGuid: 592d2c58-e2fc-4ba6-a0b2-d15ffd39706c diff --git a/=A01+UH01-KF00/Programmbausteine/1_BaseSystemLib/180_Safety/FB_ESTOPhandling.liblink b/=A01+UH01-KF00/Programmbausteine/1_BaseSystemLib/180_Safety/FB_ESTOPhandling.liblink new file mode 100644 index 0000000..8098921 --- /dev/null +++ b/=A01+UH01-KF00/Programmbausteine/1_BaseSystemLib/180_Safety/FB_ESTOPhandling.liblink @@ -0,0 +1,2 @@ +TypeGuid: bd77b34d-de4a-4cf4-b3fa-6af27ab4f306 +VersionGuid: bde5a261-573a-4feb-b079-cd5359d14c09 diff --git a/=A01+UH01-KF00/Programmbausteine/200_MFR/DB_PriorityLogic.xml b/=A01+UH01-KF00/Programmbausteine/200_MFR/DB_PriorityLogic.xml new file mode 100644 index 0000000..6ae4bbd --- /dev/null +++ b/=A01+UH01-KF00/Programmbausteine/200_MFR/DB_PriorityLogic.xml @@ -0,0 +1,75 @@ + + + + + + FB_PriorityLogic + FB + +
+
+
+
+ + + + + + true + + +
+ + DB_PriorityLogic + + 49 + DB + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + \ No newline at end of file diff --git a/=A01+UH01-KF00/Programmbausteine/200_MFR/DB_Prozessdaten.xml b/=A01+UH01-KF00/Programmbausteine/200_MFR/DB_Prozessdaten.xml new file mode 100644 index 0000000..70d6c95 --- /dev/null +++ b/=A01+UH01-KF00/Programmbausteine/200_MFR/DB_Prozessdaten.xml @@ -0,0 +1,176 @@ + + + + + + +
+ + + Prio-Logik + + + + Kreuzung TRO101/TRO106/TRO107 + + + + + Kreuzung TRO102/TRO117 + + + + + Kreuzung TRO101/TRO106/TRO107 + + + + + Kreuzung TRO101/TRO106/TRO107 + + + + + Kreuzung TRO111/TRO112 + + + + + Kreuzung TRO111/TRO112 + + + + + Kreuzung TRO102/TRO117 + + + + + true + + + Kreuzung TRO124/TRO130 + + + + + true + + + Kreuzung TRO124/TRO130 + + + + + + Parameter für Prio-Logik + + + + Kreuzung TRO101/TRO106/TRO107 + + +
+ + 1 + +
+
+
+ + + Kreuzung TRO102/TRO116 + + +
+ + 1 + +
+
+
+ + + Kreuzung TRO111/TRO112 + + +
+ + 1 + +
+
+
+ + + true + + + Kreuzung TRO124/TRO130 + + +
+ + 1 + +
+
+
+
+
+
+ Optimized + 100 + DB_Prozessdaten + + 46 + DB +
+ + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + +
+
\ No newline at end of file diff --git a/=A01+UH01-KF00/Programmbausteine/200_MFR/FB_PriorityLogic.scl b/=A01+UH01-KF00/Programmbausteine/200_MFR/FB_PriorityLogic.scl new file mode 100644 index 0000000..15b4094 --- /dev/null +++ b/=A01+UH01-KF00/Programmbausteine/200_MFR/FB_PriorityLogic.scl @@ -0,0 +1,77 @@ +FUNCTION_BLOCK "FB_PriorityLogic" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + VAR + fbPrioTRO101_TRO106_TRO107 { S7_SetPoint := 'False'} : "Fb_PriorityManagerV2"; + fbPrioTRO102_TRO117 { S7_SetPoint := 'False'} : "Fb_PriorityManagerV2"; + fbPrioTRO111_TRO112 { S7_SetPoint := 'False'} : "Fb_PriorityManagerV2"; + fbPrioTRO124_TRO130 : "Fb_PriorityManagerV2"; + END_VAR + + VAR_TEMP + todo : "udt_InterruptParameter"; + END_VAR + + +BEGIN + REGION Priority-Manager + REGION Kreuzung TRO101/TRO106/TRO107 + #fbPrioTRO101_TRO106_TRO107(xInQuit := "cTodoFalse", + tIn_ReleaseTime1 := T#25s, + tIn_ReleaseTime2 := t#25s, + tIn_ReleaseTime3 := t#25s, + xInClearJam := TRUE, + udtIn_Source1Req := "DB_Prozessdaten".stPriorityManager.udt_TRO101.TroOut, + udtIn_Source2Req := "DB_Prozessdaten".stPriorityManager.udt_TRO106.TroOut, + udtIn_Source3Req := "DB_Prozessdaten".stPriorityManager.udt_TRO107.TroOut, + udtOut_Source1Resp => "DB_Prozessdaten".stPriorityManager.udt_TRO101.TroIn, + udtOut_Source2Resp => "DB_Prozessdaten".stPriorityManager.udt_TRO106.TroIn, + udtOut_Source3Resp => "DB_Prozessdaten".stPriorityManager.udt_TRO107.TroIn, + udt_PrioParameter := "DB_Prozessdaten".stPriorityParameter.udt_TRO101_TRO106_TRO107, + udt_InterruptParameter := #todo); + END_REGION + + REGION Kreuzung TRO102/TRO117 + #fbPrioTRO102_TRO117(xInQuit := "cTodoFalse", + tIn_ReleaseTime1 := T#25s, + tIn_ReleaseTime2 := t#25s, + tIn_SourceChangeDelayTime := T#5s, + xInClearJam := TRUE, + udtIn_Source1Req := "DB_Prozessdaten".stPriorityManager.udt_TRO102.TroOut, + udtIn_Source2Req := "DB_Prozessdaten".stPriorityManager.udt_TRO117.TroOut, + udtOut_Source1Resp => "DB_Prozessdaten".stPriorityManager.udt_TRO102.TroIn, + udtOut_Source2Resp => "DB_Prozessdaten".stPriorityManager.udt_TRO117.TroIn, + udt_PrioParameter := "DB_Prozessdaten".stPriorityParameter.udt_TRO102_TRO117, + udt_InterruptParameter := #todo); + END_REGION + + + REGION Kreuzung TRO111/TRO112 + #fbPrioTRO111_TRO112(xInQuit := "cTodoFalse", + tIn_ReleaseTime1 := T#25s, + tIn_ReleaseTime2 := t#25s, + tIn_SourceChangeDelayTime := T#5s, + xInClearJam := FALSE, + udtIn_Source1Req := "DB_Prozessdaten".stPriorityManager.udt_TRO111.TroOut, + udtIn_Source2Req := "DB_Prozessdaten".stPriorityManager.udt_TRO112.TroOut, + udtOut_Source1Resp => "DB_Prozessdaten".stPriorityManager.udt_TRO111.TroIn, + udtOut_Source2Resp => "DB_Prozessdaten".stPriorityManager.udt_TRO112.TroIn, + udt_PrioParameter := "DB_Prozessdaten".stPriorityParameter.udt_TRO111_TRO112, + udt_InterruptParameter := #todo); + END_REGION + + REGION Kreuzung TRO124/TRO130 NIU + // #fbPrioTRO124_TRO130(xInQuit := "cTodoFalse", + // tIn_ReleaseTime := T#10s, + // tIn_SourceChangeDelayTime := T#5s, + // xInClearJam := FALSE, + // udtIn_Source1Req := "DB_Prozessdaten".stPriorityManager.udt_TRO130.TroOut, + // udtIn_Source2Req := "DB_Prozessdaten".stPriorityManager.udt_TRO124.TroOut, + // udtOut_Source1Resp => "DB_Prozessdaten".stPriorityManager.udt_TRO130.TroIn, + // udtOut_Source2Resp => "DB_Prozessdaten".stPriorityManager.udt_TRO124.TroIn, + // udt_PrioParameter := "DB_Prozessdaten".stPriorityParameter.udt_TRO124_TRO130, + // udt_InterruptParameter := #todo); + END_REGION + END_REGION +END_FUNCTION_BLOCK + diff --git a/=A01+UH01-KF00/Programmbausteine/200_MFR/FC_CARR_GLOB_CORRECTION.scl b/=A01+UH01-KF00/Programmbausteine/200_MFR/FC_CARR_GLOB_CORRECTION.scl new file mode 100644 index 0000000..1f5d68f --- /dev/null +++ b/=A01+UH01-KF00/Programmbausteine/200_MFR/FC_CARR_GLOB_CORRECTION.scl @@ -0,0 +1,568 @@ +FUNCTION "FC_CARR_GLOB_CORRECTION" : Void +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + VAR_INPUT + xInStart : Bool; // Ausführen der Funktion + nInBarcodeScan : DInt; // Gescannter Barcode + nInStation : Int; // Station Nummer + END_VAR + + VAR_OUTPUT + arOutEventLogInfo : Array[0..1] of "stEventCorrectionInfo"; // Informationen für Log-Baustein + END_VAR + + VAR_IN_OUT + InOutCarrierExpect : "stCarrier"; // Erwarteter Carrier in ScannerStation + END_VAR + + VAR_TEMP + tmpPartJam : "stCarrier"; // Zwischengespeicherter Carrier, gefunden in Jambereich + tmpPartHyperJam : "stCarrier"; // Zwischengespeicherter Carrier, gefunden in JHyperjam + tmpDummy : "stCarrier"; // Leerer Dummy mit speziellem Barcode + tmpEmpty : "stCarrier"; // Leerer Carrier + nCounter : DInt; + nIdx1 : Int; // Schleifenindex + tempStatus : Int; + xResult : Bool; + END_VAR + + +BEGIN + (************************************************************************************* + Durchsucht alle Jam- und Lagerberieche nach den Daten die mit dem gescannten Barcode verbunden sind falls am Scanner ein anderes Teil erwartet wird. + -Suche beginnt immer im Hyperjam. + -Wenn fündig im Hyperjam, dann wird erwartetes Teil durch das Teil vom Hyperjam ersetzt, dafür kommt erwartetes Teil in Hyperjam. + -Ansonsten wenn fündig in Jambereichen, dann werden Daten aus dem Jambereich übernommen und diese durch Dummy ersetzt + *************************************************************************************) + + #tmpDummy.nBarcode := 1; + #tmpDummy.bStatus.%X0 := TRUE; + + IF #xInStart AND #nInBarcodeScan > 0 THEN //Barcode muss einen Wert haben + REGION Hyperjam + FOR #nIdx1 := 1 TO "cHyperJam" DO + IF "DB_HyperJam".stHyperJam.arCarrier[#nIdx1].nBarcode = #nInBarcodeScan THEN //Merke gefundenes Teil und lösche ursprüngliches + #tmpPartHyperJam := "DB_HyperJam".stHyperJam.arCarrier[#nIdx1]; + "DB_HyperJam".stHyperJam.arCarrier[#nIdx1] := #tmpEmpty; + + REGION Event Log + #arOutEventLogInfo[0].xTrigger := TRUE; + #arOutEventLogInfo[0].nCorrectionType := 0; + #arOutEventLogInfo[0].sBarcode := DINT_TO_STRING(#nInBarcodeScan); + #arOutEventLogInfo[0].sLoc := 'HyperJam'; + #arOutEventLogInfo[0].sPos := INT_TO_STRING(#nIdx1); + #arOutEventLogInfo[0].sDest := INT_TO_STRING(#tmpPartHyperJam.nDestination); + END_REGION + GOTO END; + END_IF; + END_FOR; + END_REGION + REGION Jam Area 0102_1 + FOR #nIdx1 := 1 TO "cJam0102_1" DO + IF "DB_JamArea0102".stJam0102_1.arCarrier[#nIdx1].nBarcode = #nInBarcodeScan (* AND #InOutCarrierExpect.nBarcode = 0 *)THEN + #tmpPartJam := "DB_JamArea0102".stJam0102_1.arCarrier[#nIdx1]; + #tempStatus := MOVE_BLK_VARIANT(SRC := "DB_JamArea0102".stJam0102_1.arCarrier, + COUNT := INT_TO_UDINT("cJam0102_1" - #nIdx1), //lösche Teil und rücke Rest nach + SRC_INDEX := #nIdx1, + DEST_INDEX := #nIdx1 - 1, + DEST => "DB_JamArea0102".stJam0102_1.arCarrier); + "DB_JamArea0102".stJam0102_1.arCarrier["cJam0102_1"] := #tmpEmpty;//lösche letzte Position + REGION Event Log + #arOutEventLogInfo[0].xTrigger := TRUE; + #arOutEventLogInfo[0].nCorrectionType := 1; + #arOutEventLogInfo[0].sBarcode := DINT_TO_STRING(#nInBarcodeScan); + #arOutEventLogInfo[0].sLoc := 'Jam0102_1'; + #arOutEventLogInfo[0].sPos := INT_TO_STRING(#nIdx1); + #arOutEventLogInfo[0].sDest := INT_TO_STRING(#tmpPartJam.nDestination); + END_REGION + GOTO END; + END_IF; + END_FOR; + END_REGION + REGION Jam Area 0102_2 + FOR #nIdx1 := 1 TO "cJam0102_2" DO + IF "DB_JamArea0102".stJam0102_2.arCarrier[#nIdx1].nBarcode = #nInBarcodeScan (* AND #InOutCarrierExpect.nBarcode = 0 *)THEN + #tmpPartJam := "DB_JamArea0102".stJam0102_2.arCarrier[#nIdx1]; + #tempStatus := MOVE_BLK_VARIANT(SRC := "DB_JamArea0102".stJam0102_2.arCarrier, + COUNT := INT_TO_UDINT("cJam0102_2" - #nIdx1), //lösche Teil und rücke Rest nach + SRC_INDEX := #nIdx1, + DEST_INDEX := #nIdx1 - 1, + DEST => "DB_JamArea0102".stJam0102_2.arCarrier); + "DB_JamArea0102".stJam0102_2.arCarrier["cJam0102_2"] := #tmpEmpty;//lösche letzte Position + REGION Event Log + #arOutEventLogInfo[0].xTrigger := TRUE; + #arOutEventLogInfo[0].nCorrectionType := 1; + #arOutEventLogInfo[0].sBarcode := DINT_TO_STRING(#nInBarcodeScan); + #arOutEventLogInfo[0].sLoc := 'Jam0102_2'; + #arOutEventLogInfo[0].sPos := INT_TO_STRING(#nIdx1); + #arOutEventLogInfo[0].sDest := INT_TO_STRING(#tmpPartJam.nDestination); + END_REGION + GOTO END; + END_IF; + END_FOR; + END_REGION + REGION Jam Area 0102_3 + FOR #nIdx1 := 1 TO "cJam0102_3" DO + IF "DB_JamArea0102".stJam0102_3.arCarrier[#nIdx1].nBarcode = #nInBarcodeScan (* AND #InOutCarrierExpect.nBarcode = 0 *)THEN + #tmpPartJam := "DB_JamArea0102".stJam0102_3.arCarrier[#nIdx1]; + #tempStatus := MOVE_BLK_VARIANT(SRC := "DB_JamArea0102".stJam0102_3.arCarrier, + COUNT := INT_TO_UDINT("cJam0102_3" - #nIdx1), //lösche Teil und rücke Rest nach + SRC_INDEX := #nIdx1, + DEST_INDEX := #nIdx1 - 1, + DEST => "DB_JamArea0102".stJam0102_3.arCarrier); + "DB_JamArea0102".stJam0102_3.arCarrier["cJam0102_3"] := #tmpEmpty;//lösche letzte Position + REGION Event Log + #arOutEventLogInfo[0].xTrigger := TRUE; + #arOutEventLogInfo[0].nCorrectionType := 1; + #arOutEventLogInfo[0].sBarcode := DINT_TO_STRING(#nInBarcodeScan); + #arOutEventLogInfo[0].sLoc := 'Jam0102_3'; + #arOutEventLogInfo[0].sPos := INT_TO_STRING(#nIdx1); + #arOutEventLogInfo[0].sDest := INT_TO_STRING(#tmpPartJam.nDestination); + END_REGION + GOTO END; + END_IF; + END_FOR; + END_REGION + REGION Jam Area 0102_4 + FOR #nIdx1 := 1 TO "cJam0102_4" DO + IF "DB_JamArea0102".stJam0102_4.arCarrier[#nIdx1].nBarcode = #nInBarcodeScan (* AND #InOutCarrierExpect.nBarcode = 0 *)THEN + #tmpPartJam := "DB_JamArea0102".stJam0102_4.arCarrier[#nIdx1]; + #tempStatus := MOVE_BLK_VARIANT(SRC := "DB_JamArea0102".stJam0102_4.arCarrier, + COUNT := INT_TO_UDINT("cJam0102_4" - #nIdx1), //lösche Teil und rücke Rest nach + SRC_INDEX := #nIdx1, + DEST_INDEX := #nIdx1 - 1, + DEST => "DB_JamArea0102".stJam0102_4.arCarrier); + "DB_JamArea0102".stJam0102_4.arCarrier["cJam0102_4"] := #tmpEmpty;//lösche letzte Position + REGION Event Log + #arOutEventLogInfo[0].xTrigger := TRUE; + #arOutEventLogInfo[0].nCorrectionType := 1; + #arOutEventLogInfo[0].sBarcode := DINT_TO_STRING(#nInBarcodeScan); + #arOutEventLogInfo[0].sLoc := 'Jam0102_4'; + #arOutEventLogInfo[0].sPos := INT_TO_STRING(#nIdx1); + #arOutEventLogInfo[0].sDest := INT_TO_STRING(#tmpPartJam.nDestination); + END_REGION + GOTO END; + END_IF; + END_FOR; + END_REGION + REGION Jam Area 0102_5 + FOR #nIdx1 := 1 TO "cJam0102_5" DO + IF "DB_JamArea0102".stJam0102_5.arCarrier[#nIdx1].nBarcode = #nInBarcodeScan (* AND #InOutCarrierExpect.nBarcode = 0 *)THEN + #tmpPartJam := "DB_JamArea0102".stJam0102_5.arCarrier[#nIdx1]; + #tempStatus := MOVE_BLK_VARIANT(SRC := "DB_JamArea0102".stJam0102_5.arCarrier, + COUNT := INT_TO_UDINT("cJam0102_5" - #nIdx1), //lösche Teil und rücke Rest nach + SRC_INDEX := #nIdx1, + DEST_INDEX := #nIdx1 - 1, + DEST => "DB_JamArea0102".stJam0102_5.arCarrier); + "DB_JamArea0102".stJam0102_5.arCarrier["cJam0102_5"] := #tmpEmpty;//lösche letzte Position + REGION Event Log + #arOutEventLogInfo[0].xTrigger := TRUE; + #arOutEventLogInfo[0].nCorrectionType := 1; + #arOutEventLogInfo[0].sBarcode := DINT_TO_STRING(#nInBarcodeScan); + #arOutEventLogInfo[0].sLoc := 'Jam0102_5'; + #arOutEventLogInfo[0].sPos := INT_TO_STRING(#nIdx1); + #arOutEventLogInfo[0].sDest := INT_TO_STRING(#tmpPartJam.nDestination); + END_REGION + GOTO END; + END_IF; + END_FOR; + END_REGION + REGION Jam Area 0102_6 + FOR #nIdx1 := 1 TO "cJam0102_6" DO + IF "DB_JamArea0102".stJam0102_6.arCarrier[#nIdx1].nBarcode = #nInBarcodeScan (* AND #InOutCarrierExpect.nBarcode = 0 *)THEN + #tmpPartJam := "DB_JamArea0102".stJam0102_6.arCarrier[#nIdx1]; + #tempStatus := MOVE_BLK_VARIANT(SRC := "DB_JamArea0102".stJam0102_6.arCarrier, + COUNT := INT_TO_UDINT("cJam0102_6" - #nIdx1), //lösche Teil und rücke Rest nach + SRC_INDEX := #nIdx1, + DEST_INDEX := #nIdx1 - 1, + DEST => "DB_JamArea0102".stJam0102_6.arCarrier); + "DB_JamArea0102".stJam0102_6.arCarrier["cJam0102_6"] := #tmpEmpty;//lösche letzte Position + REGION Event Log + #arOutEventLogInfo[0].xTrigger := TRUE; + #arOutEventLogInfo[0].nCorrectionType := 1; + #arOutEventLogInfo[0].sBarcode := DINT_TO_STRING(#nInBarcodeScan); + #arOutEventLogInfo[0].sLoc := 'Jam0102_6'; + #arOutEventLogInfo[0].sPos := INT_TO_STRING(#nIdx1); + #arOutEventLogInfo[0].sDest := INT_TO_STRING(#tmpPartJam.nDestination); + END_REGION + GOTO END; + END_IF; + END_FOR; + END_REGION + REGION Jam Area 0103_1 + FOR #nIdx1 := 1 TO "cJam0103_1" DO + IF "DB_JamArea0103".stJam0103_1.arCarrier[#nIdx1].nBarcode = #nInBarcodeScan (* AND #InOutCarrierExpect.nBarcode = 0 *)THEN + #tmpPartJam := "DB_JamArea0103".stJam0103_1.arCarrier[#nIdx1]; + #tempStatus := MOVE_BLK_VARIANT(SRC := "DB_JamArea0103".stJam0103_1.arCarrier, + COUNT := INT_TO_UDINT("cJam0103_1" - #nIdx1), //lösche Teil und rücke Rest nach + SRC_INDEX := #nIdx1, + DEST_INDEX := #nIdx1 - 1, + DEST => "DB_JamArea0103".stJam0103_1.arCarrier); + "DB_JamArea0103".stJam0103_1.arCarrier["cJam0103_1"] := #tmpEmpty;//lösche letzte Position + REGION Event Log + #arOutEventLogInfo[0].xTrigger := TRUE; + #arOutEventLogInfo[0].nCorrectionType := 1; + #arOutEventLogInfo[0].sBarcode := DINT_TO_STRING(#nInBarcodeScan); + #arOutEventLogInfo[0].sLoc := 'Jam0103_1'; + #arOutEventLogInfo[0].sPos := INT_TO_STRING(#nIdx1); + #arOutEventLogInfo[0].sDest := INT_TO_STRING(#tmpPartJam.nDestination); + END_REGION + GOTO END; + END_IF; + END_FOR; + END_REGION + + REGION Jam Area 0104_1 + FOR #nIdx1 := 1 TO "cJam0104_1" DO + IF "DB_JamArea0104".stJam0104_1.arCarrier[#nIdx1].nBarcode = #nInBarcodeScan (* AND #InOutCarrierExpect.nBarcode = 0 *)THEN + #tmpPartJam := "DB_JamArea0104".stJam0104_1.arCarrier[#nIdx1]; + #tempStatus := MOVE_BLK_VARIANT(SRC := "DB_JamArea0104".stJam0104_1.arCarrier, + COUNT := INT_TO_UDINT("cJam0104_1" - #nIdx1), //lösche Teil und rücke Rest nach + SRC_INDEX := #nIdx1, + DEST_INDEX := #nIdx1 - 1, + DEST => "DB_JamArea0104".stJam0104_1.arCarrier); + "DB_JamArea0104".stJam0104_1.arCarrier["cJam0104_1"] := #tmpEmpty;//lösche letzte Position + REGION Event Log + #arOutEventLogInfo[0].xTrigger := TRUE; + #arOutEventLogInfo[0].nCorrectionType := 1; + #arOutEventLogInfo[0].sBarcode := DINT_TO_STRING(#nInBarcodeScan); + #arOutEventLogInfo[0].sLoc := 'Jam0104_1'; + #arOutEventLogInfo[0].sPos := INT_TO_STRING(#nIdx1); + #arOutEventLogInfo[0].sDest := INT_TO_STRING(#tmpPartJam.nDestination); + END_REGION + GOTO END; + END_IF; + END_FOR; + END_REGION + + REGION Jam Area 0104_2 + FOR #nIdx1 := 1 TO "cJam0104_2" DO + IF "DB_JamArea0104".stJam0104_2.arCarrier[#nIdx1].nBarcode = #nInBarcodeScan (* AND #InOutCarrierExpect.nBarcode = 0 *)THEN + #tmpPartJam := "DB_JamArea0104".stJam0104_2.arCarrier[#nIdx1]; + #tempStatus := MOVE_BLK_VARIANT(SRC := "DB_JamArea0104".stJam0104_2.arCarrier, + COUNT := INT_TO_UDINT("cJam0104_2" - #nIdx1), //lösche Teil und rücke Rest nach + SRC_INDEX := #nIdx1, + DEST_INDEX := #nIdx1 - 1, + DEST => "DB_JamArea0104".stJam0104_2.arCarrier); + "DB_JamArea0104".stJam0104_2.arCarrier["cJam0104_2"] := #tmpEmpty;//lösche letzte Position + REGION Event Log + #arOutEventLogInfo[0].xTrigger := TRUE; + #arOutEventLogInfo[0].nCorrectionType := 1; + #arOutEventLogInfo[0].sBarcode := DINT_TO_STRING(#nInBarcodeScan); + #arOutEventLogInfo[0].sLoc := 'Jam0104_2'; + #arOutEventLogInfo[0].sPos := INT_TO_STRING(#nIdx1); + #arOutEventLogInfo[0].sDest := INT_TO_STRING(#tmpPartJam.nDestination); + END_REGION + GOTO END; + END_IF; + END_FOR; + END_REGION + + REGION Jam Area 0104_3 + FOR #nIdx1 := 1 TO "cJam0104_3" DO + IF "DB_JamArea0104".stJam0104_3.arCarrier[#nIdx1].nBarcode = #nInBarcodeScan (* AND #InOutCarrierExpect.nBarcode = 0 *)THEN + #tmpPartJam := "DB_JamArea0104".stJam0104_3.arCarrier[#nIdx1]; + #tempStatus := MOVE_BLK_VARIANT(SRC := "DB_JamArea0104".stJam0104_3.arCarrier, + COUNT := INT_TO_UDINT("cJam0104_3" - #nIdx1), //lösche Teil und rücke Rest nach + SRC_INDEX := #nIdx1, + DEST_INDEX := #nIdx1 - 1, + DEST => "DB_JamArea0104".stJam0104_3.arCarrier); + "DB_JamArea0104".stJam0104_3.arCarrier["cJam0104_3"] := #tmpEmpty;//lösche letzte Position + REGION Event Log + #arOutEventLogInfo[0].xTrigger := TRUE; + #arOutEventLogInfo[0].nCorrectionType := 1; + #arOutEventLogInfo[0].sBarcode := DINT_TO_STRING(#nInBarcodeScan); + #arOutEventLogInfo[0].sLoc := 'Jam0104_3'; + #arOutEventLogInfo[0].sPos := INT_TO_STRING(#nIdx1); + #arOutEventLogInfo[0].sDest := INT_TO_STRING(#tmpPartJam.nDestination); + END_REGION + GOTO END; + END_IF; + END_FOR; + END_REGION + + REGION Jam Area 0106_2 + FOR #nIdx1 := 1 TO "cJam0106_2" DO + IF "DB_JamArea0106".stJam0106_2.arCarrier[#nIdx1].nBarcode = #nInBarcodeScan (* AND #InOutCarrierExpect.nBarcode = 0 *)THEN + #tmpPartJam := "DB_JamArea0106".stJam0106_2.arCarrier[#nIdx1]; + #tempStatus := MOVE_BLK_VARIANT(SRC := "DB_JamArea0106".stJam0106_2.arCarrier, + COUNT := INT_TO_UDINT("cJam0106_2" - #nIdx1), //lösche Teil und rücke Rest nach + SRC_INDEX := #nIdx1, + DEST_INDEX := #nIdx1 - 1, + DEST => "DB_JamArea0106".stJam0106_2.arCarrier); + "DB_JamArea0106".stJam0106_2.arCarrier["cJam0106_2"] := #tmpEmpty;//lösche letzte Position + REGION Event Log + #arOutEventLogInfo[0].xTrigger := TRUE; + #arOutEventLogInfo[0].nCorrectionType := 1; + #arOutEventLogInfo[0].sBarcode := DINT_TO_STRING(#nInBarcodeScan); + #arOutEventLogInfo[0].sLoc := 'Jam0106_2'; + #arOutEventLogInfo[0].sPos := INT_TO_STRING(#nIdx1); + #arOutEventLogInfo[0].sDest := INT_TO_STRING(#tmpPartJam.nDestination); + END_REGION + GOTO END; + END_IF; + END_FOR; + END_REGION + + REGION Jam Area 0107_1 + FOR #nIdx1 := 1 TO "cJam0107_1" DO + IF "DB_JamArea0107".stJam0107_1.arCarrier[#nIdx1].nBarcode = #nInBarcodeScan (* AND #InOutCarrierExpect.nBarcode = 0 *)THEN + #tmpPartJam := "DB_JamArea0107".stJam0107_1.arCarrier[#nIdx1]; + #tempStatus := MOVE_BLK_VARIANT(SRC := "DB_JamArea0107".stJam0107_1.arCarrier, + COUNT := INT_TO_UDINT("cJam0107_1" - #nIdx1), //lösche Teil und rücke Rest nach + SRC_INDEX := #nIdx1, + DEST_INDEX := #nIdx1 - 1, + DEST => "DB_JamArea0107".stJam0107_1.arCarrier); + "DB_JamArea0107".stJam0107_1.arCarrier["cJam0107_1"] := #tmpEmpty;//lösche letzte Position + REGION Event Log + #arOutEventLogInfo[0].xTrigger := TRUE; + #arOutEventLogInfo[0].nCorrectionType := 1; + #arOutEventLogInfo[0].sBarcode := DINT_TO_STRING(#nInBarcodeScan); + #arOutEventLogInfo[0].sLoc := 'Jam0107_1'; + #arOutEventLogInfo[0].sPos := INT_TO_STRING(#nIdx1); + #arOutEventLogInfo[0].sDest := INT_TO_STRING(#tmpPartJam.nDestination); + END_REGION + GOTO END; + END_IF; + END_FOR; + END_REGION + + REGION Jam Area 0108_1 + FOR #nIdx1 := 1 TO "cJam0108_1" DO + IF "DB_JamArea0108".stJam0108_1.arCarrier[#nIdx1].nBarcode = #nInBarcodeScan (* AND #InOutCarrierExpect.nBarcode = 0 *)THEN + #tmpPartJam := "DB_JamArea0108".stJam0108_1.arCarrier[#nIdx1]; + #tempStatus := MOVE_BLK_VARIANT(SRC := "DB_JamArea0108".stJam0108_1.arCarrier, + COUNT := INT_TO_UDINT("cJam0108_1" - #nIdx1), //lösche Teil und rücke Rest nach + SRC_INDEX := #nIdx1, + DEST_INDEX := #nIdx1 - 1, + DEST => "DB_JamArea0108".stJam0108_1.arCarrier); + "DB_JamArea0108".stJam0108_1.arCarrier["cJam0108_1"] := #tmpEmpty;//lösche letzte Position + REGION Event Log + #arOutEventLogInfo[0].xTrigger := TRUE; + #arOutEventLogInfo[0].nCorrectionType := 1; + #arOutEventLogInfo[0].sBarcode := DINT_TO_STRING(#nInBarcodeScan); + #arOutEventLogInfo[0].sLoc := 'Jam0108_1'; + #arOutEventLogInfo[0].sPos := INT_TO_STRING(#nIdx1); + #arOutEventLogInfo[0].sDest := INT_TO_STRING(#tmpPartJam.nDestination); + END_REGION + GOTO END; + END_IF; + END_FOR; + END_REGION + + REGION Jam Area 0108_2 + FOR #nIdx1 := 1 TO "cJam0108_2" DO + IF "DB_JamArea0108".stJam0108_2.arCarrier[#nIdx1].nBarcode = #nInBarcodeScan (* AND #InOutCarrierExpect.nBarcode = 0 *)THEN + #tmpPartJam := "DB_JamArea0108".stJam0108_2.arCarrier[#nIdx1]; + #tempStatus := MOVE_BLK_VARIANT(SRC := "DB_JamArea0108".stJam0108_2.arCarrier, + COUNT := INT_TO_UDINT("cJam0108_2" - #nIdx1), //lösche Teil und rücke Rest nach + SRC_INDEX := #nIdx1, + DEST_INDEX := #nIdx1 - 1, + DEST => "DB_JamArea0108".stJam0108_2.arCarrier); + "DB_JamArea0108".stJam0108_2.arCarrier["cJam0108_2"] := #tmpEmpty;//lösche letzte Position + REGION Event Log + #arOutEventLogInfo[0].xTrigger := TRUE; + #arOutEventLogInfo[0].nCorrectionType := 1; + #arOutEventLogInfo[0].sBarcode := DINT_TO_STRING(#nInBarcodeScan); + #arOutEventLogInfo[0].sLoc := 'Jam0108_2'; + #arOutEventLogInfo[0].sPos := INT_TO_STRING(#nIdx1); + #arOutEventLogInfo[0].sDest := INT_TO_STRING(#tmpPartJam.nDestination); + END_REGION + GOTO END; + END_IF; + END_FOR; + END_REGION + + REGION Jam Area 0108_3 + FOR #nIdx1 := 1 TO "cJam0108_3" DO + IF "DB_JamArea0108".stJam0108_3.arCarrier[#nIdx1].nBarcode = #nInBarcodeScan (* AND #InOutCarrierExpect.nBarcode = 0 *)THEN + #tmpPartJam := "DB_JamArea0108".stJam0108_3.arCarrier[#nIdx1]; + #tempStatus := MOVE_BLK_VARIANT(SRC := "DB_JamArea0108".stJam0108_3.arCarrier, + COUNT := INT_TO_UDINT("cJam0108_3" - #nIdx1), //lösche Teil und rücke Rest nach + SRC_INDEX := #nIdx1, + DEST_INDEX := #nIdx1 - 1, + DEST => "DB_JamArea0108".stJam0108_3.arCarrier); + "DB_JamArea0108".stJam0108_3.arCarrier["cJam0108_3"] := #tmpEmpty;//lösche letzte Position + REGION Event Log + #arOutEventLogInfo[0].xTrigger := TRUE; + #arOutEventLogInfo[0].nCorrectionType := 1; + #arOutEventLogInfo[0].sBarcode := DINT_TO_STRING(#nInBarcodeScan); + #arOutEventLogInfo[0].sLoc := 'Jam0108_3'; + #arOutEventLogInfo[0].sPos := INT_TO_STRING(#nIdx1); + #arOutEventLogInfo[0].sDest := INT_TO_STRING(#tmpPartJam.nDestination); + END_REGION + GOTO END; + END_IF; + END_FOR; + END_REGION + + REGION Jam Area 0110_2 + FOR #nIdx1 := 1 TO "cJam0110_2" DO + IF "DB_JamArea0110".stJam0110_2.arCarrier[#nIdx1].nBarcode = #nInBarcodeScan (* AND #InOutCarrierExpect.nBarcode = 0 *)THEN + #tmpPartJam := "DB_JamArea0110".stJam0110_2.arCarrier[#nIdx1]; + #tempStatus := MOVE_BLK_VARIANT(SRC := "DB_JamArea0110".stJam0110_2.arCarrier, + COUNT := INT_TO_UDINT("cJam0110_2" - #nIdx1), //lösche Teil und rücke Rest nach + SRC_INDEX := #nIdx1, + DEST_INDEX := #nIdx1 - 1, + DEST => "DB_JamArea0110".stJam0110_2.arCarrier); + "DB_JamArea0110".stJam0110_2.arCarrier["cJam0110_2"] := #tmpEmpty;//lösche letzte Position + REGION Event Log + #arOutEventLogInfo[0].xTrigger := TRUE; + #arOutEventLogInfo[0].nCorrectionType := 1; + #arOutEventLogInfo[0].sBarcode := DINT_TO_STRING(#nInBarcodeScan); + #arOutEventLogInfo[0].sLoc := 'Jam0110_2'; + #arOutEventLogInfo[0].sPos := INT_TO_STRING(#nIdx1); + #arOutEventLogInfo[0].sDest := INT_TO_STRING(#tmpPartJam.nDestination); + END_REGION + GOTO END; + END_IF; + END_FOR; + END_REGION + + REGION Jam Area 4104_1 + FOR #nIdx1 := 1 TO "cJam4104_1" DO + IF "DB_JamArea4104".stJam4104_1.arCarrier[#nIdx1].nBarcode = #nInBarcodeScan (* AND #InOutCarrierExpect.nBarcode = 0 *)THEN + #tmpPartJam := "DB_JamArea4104".stJam4104_1.arCarrier[#nIdx1]; + #tempStatus := MOVE_BLK_VARIANT(SRC := "DB_JamArea4104".stJam4104_1.arCarrier, + COUNT := INT_TO_UDINT("cJam4104_1" - #nIdx1), //lösche Teil und rücke Rest nach + SRC_INDEX := #nIdx1, + DEST_INDEX := #nIdx1 - 1, + DEST => "DB_JamArea4104".stJam4104_1.arCarrier); + "DB_JamArea4104".stJam4104_1.arCarrier["cJam4104_1"] := #tmpEmpty;//lösche letzte Position + REGION Event Log + #arOutEventLogInfo[0].xTrigger := TRUE; + #arOutEventLogInfo[0].nCorrectionType := 1; + #arOutEventLogInfo[0].sBarcode := DINT_TO_STRING(#nInBarcodeScan); + #arOutEventLogInfo[0].sLoc := 'Jam4104_1'; + #arOutEventLogInfo[0].sPos := INT_TO_STRING(#nIdx1); + #arOutEventLogInfo[0].sDest := INT_TO_STRING(#tmpPartJam.nDestination); + END_REGION + GOTO END; + END_IF; + END_FOR; + END_REGION + REGION Jam Area 4103_1 + FOR #nIdx1 := 1 TO "cJam4103_1" DO + IF "DB_JamArea4103".stJam4103_1.arCarrier[#nIdx1].nBarcode = #nInBarcodeScan (* AND #InOutCarrierExpect.nBarcode = 0 *)THEN + #tmpPartJam := "DB_JamArea4103".stJam4103_1.arCarrier[#nIdx1]; + #tempStatus := MOVE_BLK_VARIANT(SRC := "DB_JamArea4103".stJam4103_1.arCarrier, + COUNT := INT_TO_UDINT("cJam4103_1" - #nIdx1), //lösche Teil und rücke Rest nach + SRC_INDEX := #nIdx1, + DEST_INDEX := #nIdx1 - 1, + DEST => "DB_JamArea4103".stJam4103_1.arCarrier); + "DB_JamArea4103".stJam4103_1.arCarrier["cJam4103_1"] := #tmpEmpty;//lösche letzte Position + REGION Event Log + #arOutEventLogInfo[0].xTrigger := TRUE; + #arOutEventLogInfo[0].nCorrectionType := 1; + #arOutEventLogInfo[0].sBarcode := DINT_TO_STRING(#nInBarcodeScan); + #arOutEventLogInfo[0].sLoc := 'Jam4103_1'; + #arOutEventLogInfo[0].sPos := INT_TO_STRING(#nIdx1); + #arOutEventLogInfo[0].sDest := INT_TO_STRING(#tmpPartJam.nDestination); + END_REGION + GOTO END; + END_IF; + END_FOR; + END_REGION + + END: + ; + REGION Handling + IF #tmpPartHyperJam.nBarcode <> 0 THEN //Gefundenes Teil aus Hyperjam + REGION Teil aus Hyperjam + IF #InOutCarrierExpect.nBarcode > 10000 THEN //Wenn erwarteter Carrier einen Barcode hat, füge ihn am Ende des Hyperjams ein + "FC_TSHR_AddAtEnd"(stInTrolley := #InOutCarrierExpect, + nOutCounter => #nCounter, + xOutResult => #xResult, + arTSHR := "DB_HyperJam".stHyperJam.arCarrier); + + REGION Event log + + #arOutEventLogInfo[1].xTrigger := TRUE; + #arOutEventLogInfo[1].nCorrectionType := 3; + #arOutEventLogInfo[1].sBarcode := DINT_TO_STRING(#InOutCarrierExpect.nBarcode); + #arOutEventLogInfo[1].sLoc := 'HyperJ'; + #arOutEventLogInfo[1].sPos := INT_TO_STRING(#nIdx1); + #arOutEventLogInfo[1].sDest := INT_TO_STRING(#InOutCarrierExpect.nDestination); + + END_REGION + + END_IF; + FOR #nIdx1 := 1 TO "cHyperJam" DO //Durchsuche Hyperjam nach Lücke + IF NOT "DB_HyperJam".stHyperJam.arCarrier[#nIdx1].bStatus.%X0 THEN + #tempStatus := MOVE_BLK_VARIANT(SRC := "DB_HyperJam".stHyperJam.arCarrier, + COUNT := INT_TO_UDINT("cHyperJam" - #nIdx1), //Wo die Lücke im Hyperjam entstanden ist, rücke Rest nach + SRC_INDEX := #nIdx1, + DEST_INDEX := #nIdx1 - 1, + DEST => "DB_HyperJam".stHyperJam.arCarrier); + "DB_HyperJam".stHyperJam.arCarrier["cHyperJam"] := #tmpEmpty; //lösche letztes Teil + EXIT; + END_IF; + END_FOR; + #InOutCarrierExpect := #tmpPartHyperJam; //Gib gefundenes Teil aus + END_REGION + ELSIF #tmpPartJam.nBarcode <> 0 THEN //Gefundenes Teil aus Jambereich + REGION Teil aus Jam + IF #InOutCarrierExpect.nBarcode > 10000 THEN //Wenn erwarteter Carrier einen Barcode hat, füge ihn am Ende des Hyperjams ein + "FC_TSHR_AddAtEnd"(stInTrolley := #InOutCarrierExpect, + nOutCounter => #nCounter, + xOutResult => #xResult, + arTSHR := "DB_HyperJam".stHyperJam.arCarrier); + + REGION Event log + + #arOutEventLogInfo[1].xTrigger := TRUE; + #arOutEventLogInfo[1].nCorrectionType := 3; + #arOutEventLogInfo[1].sBarcode := DINT_TO_STRING(#InOutCarrierExpect.nBarcode); + #arOutEventLogInfo[1].sLoc := 'HyperJ'; + #arOutEventLogInfo[1].sPos := INT_TO_STRING(#nIdx1); + #arOutEventLogInfo[1].sDest := INT_TO_STRING(#InOutCarrierExpect.nDestination); + + END_REGION + + END_IF; + FOR #nIdx1 := 1 TO "cHyperJam" DO //Durchsuche Hyperjam nach Lücke + IF NOT "DB_HyperJam".stHyperJam.arCarrier[#nIdx1].bStatus.%X0 THEN + #tempStatus := MOVE_BLK_VARIANT(SRC := "DB_HyperJam".stHyperJam.arCarrier, + COUNT := INT_TO_UDINT("cHyperJam" - #nIdx1), //Wo die Lücke im Hyperjam entstanden ist, rücke Rest nach + SRC_INDEX := #nIdx1, + DEST_INDEX := #nIdx1 - 1, + DEST => "DB_HyperJam".stHyperJam.arCarrier); + "DB_HyperJam".stHyperJam.arCarrier["cHyperJam"] := #tmpEmpty; //lösche letztes Teil + EXIT; + END_IF; + END_FOR; + #InOutCarrierExpect := #tmpPartJam; //Gib gefundenes Teil aus + END_REGION + ELSE + //Teil bei Suche nicht gefunden, aber das erwartete soll trotzdem in den Hyperjam kommen und außerhalb des FC dann durch den gescannten ersetzt werden + IF #InOutCarrierExpect.nBarcode > 10000 THEN //Wenn erwarteter Carrier einen gültigen Barcode hat, füge ihn am Ende des Hyperjams ein + //Um im EmptyBuffer mit erfundenen Barcodes fahren zu können, werden hier einfach irgendwelche viestelligen Codes benutzt. Die sollen dann am + //Scanner nicht in den Hyperjam sondern einfach durch den echten ersetzt werden. Deswegen wird hier alles < 10.000 ignoriert + "FC_TSHR_AddAtEnd"(stInTrolley := #InOutCarrierExpect, + nOutCounter => #nCounter, + xOutResult => #xResult, + arTSHR := "DB_HyperJam".stHyperJam.arCarrier); + //Es gibt keine Lücke in der Liste die man schließen muss + REGION Event log + + #arOutEventLogInfo[1].xTrigger := TRUE; + #arOutEventLogInfo[1].nCorrectionType := 3; + #arOutEventLogInfo[1].sBarcode := DINT_TO_STRING(#InOutCarrierExpect.nBarcode); + #arOutEventLogInfo[1].sLoc := 'HyperJ'; + #arOutEventLogInfo[1].sPos := INT_TO_STRING(#nIdx1); + #arOutEventLogInfo[1].sDest := INT_TO_STRING(#InOutCarrierExpect.nDestination); + + END_REGION + + END_IF; + + // #xOutNotFound := TRUE; + #InOutCarrierExpect.nDestination := 0; + #InOutCarrierExpect.nBarcode := #nInBarcodeScan; //Hier werden neue Carrier im System angelegt + #InOutCarrierExpect.bStatus.%X0 := TRUE; + END_IF; + END_REGION + END_IF; + +END_FUNCTION + diff --git a/=A01+UH01-KF00/Programmbausteine/200_MFR/FC_ClearJam.scl b/=A01+UH01-KF00/Programmbausteine/200_MFR/FC_ClearJam.scl new file mode 100644 index 0000000..3347158 --- /dev/null +++ b/=A01+UH01-KF00/Programmbausteine/200_MFR/FC_ClearJam.scl @@ -0,0 +1,53 @@ +FUNCTION "FC_ClearJam" : Void +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + VAR_INPUT + xInLocked : Bool; // Bedingung, damit diese Funktion ausgeführt wird + END_VAR + + VAR_IN_OUT + arInOutJam : Array[*] of "stCarrier"; // Zu manipulierende Jam Daten + xInOutStart : Bool; // Start befehlt + END_VAR + + VAR_TEMP + tmpEmptyCarr : "stCarrier"; // Leere Carrier Struktur + nCounter : DInt; + nArrayMax : Int; + nIdx : Int; + nStatus : Int; + xResult : Bool; + END_VAR + + +BEGIN + (* + FC löscht alle Carrierdaten für den verschaltenen Jam + + Man könnte optional noch einbauen, das man eine bestimmte Position löschen kann + *) + + #nArrayMax := DINT_TO_INT(UPPER_BOUND(ARR := #arInOutJam, DIM := 1)); + + REGION Returnbedingung + IF NOT #arInOutJam[1].bStatus.%X0 OR NOT #xInLocked THEN + #xInOutStart := FALSE; + RETURN; + END_IF; + END_REGION + + REGION Funktion ausführen + IF #xInOutStart THEN + FOR #nIdx := 1 TO #nArrayMax DO + IF #arInOutJam[#nIdx].bStatus.%X0 THEN + #arInOutJam[#nIdx] := #tmpEmptyCarr; // Carrierdaten löschen/überschreiben + ELSE + EXIT; //fertig, nichts mehr zu tun + END_IF; + END_FOR; + #xInOutStart := FALSE; + END_IF; + END_REGION + +END_FUNCTION + diff --git a/=A01+UH01-KF00/Programmbausteine/200_MFR/FC_Direction.scl b/=A01+UH01-KF00/Programmbausteine/200_MFR/FC_Direction.scl new file mode 100644 index 0000000..9a895b2 --- /dev/null +++ b/=A01+UH01-KF00/Programmbausteine/200_MFR/FC_Direction.scl @@ -0,0 +1,71 @@ +FUNCTION "FC_Direction" : Void +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + VAR_INPUT + nInSwitchNo : USInt; // Switch Nummer + END_VAR + + VAR_OUTPUT + nOutDirection : USInt; // Ziel für Switch-Baustein + END_VAR + + VAR_IN_OUT + InOutCarrier : "stCarrier"; // Daten vom Carrier + END_VAR + + +BEGIN + // Destination vom Carrier, immer unterschiedlich je nach Anlagenbereich, soll übertragen werden auf universale Switch Direction (1-4) + // + // Es gibt noch mehr Weichen, aber noch unklar nach welchem Prinzip diese angesteuert werden + REGION Vergabe Direction + CASE #nInSwitchNo OF + "cSwi107.1": + REGION Switch 107.1 Boom 1 + IF #InOutCarrier.nDestination = "cDestInboundLS" THEN // zu Ladeschleife + #nOutDirection := 1; // LINKS + ELSIF #InOutCarrier.nDestination = "cDestClearing" OR + #InOutCarrier.nDestination = "cDestInboundOut" OR + #InOutCarrier.nDestination = "cDestInboundLS_Extra" THEN // Zur Clearing-Station (Error-Station) oder Inbound verlassen + #nOutDirection := 2; // RECHTS + ELSE + #nOutDirection := 2; // Fallback, falls unerwartetes Ziel + END_IF; + END_REGION + "cSwi112.1": + REGION Switch 112.1 Boom 2 + IF #InOutCarrier.nDestination = "cDestInboundLS" OR + #InOutCarrier.nDestination = "cDestInboundLS_Extra" THEN // zu Ladeschleife + #nOutDirection := 1; // LINKS + ELSIF #InOutCarrier.nDestination = "cDestClearing" OR + #InOutCarrier.nDestination = "cDestInboundOut" THEN // Zur Clearing-Station (Error-Station) oder Inbound verlassen + #nOutDirection := 2; // RECHTS + ELSE + #nOutDirection := 2; // Fallback, falls unerwartetes Ziel + END_IF; + END_REGION + "cSwi114.1": + REGION Switch 114.1 + IF #InOutCarrier.nDestination = "cDestInboundOut" THEN // Inbound verlassen + #nOutDirection := 1; // LINKS + ELSIF #InOutCarrier.nDestination = "cDestClearing" THEN // Zur Clearing-Station (Error-Station) + #nOutDirection := 2; // RECHTS !!!! + ELSE + #nOutDirection := 0; // Test, Warten + END_IF; + END_REGION + "cSwi124.1": + REGION Switch 124.1 + IF #InOutCarrier.nDestination = "cDestHighwayStorage" THEN // zum Storage fahren (Ausnahmefall) + #nOutDirection := 1; // LINKS + ELSIF #InOutCarrier.nDestination = 0 THEN // Zum Inbound (Standardfall) + #nOutDirection := 2; // RECHTS + ELSE + #nOutDirection := 2; // + END_IF; + END_REGION + END_CASE; + END_REGION + +END_FUNCTION + diff --git a/=A01+UH01-KF00/Programmbausteine/200_MFR/FC_PutToHj.scl b/=A01+UH01-KF00/Programmbausteine/200_MFR/FC_PutToHj.scl new file mode 100644 index 0000000..41d870e --- /dev/null +++ b/=A01+UH01-KF00/Programmbausteine/200_MFR/FC_PutToHj.scl @@ -0,0 +1,92 @@ +FUNCTION "FC_PutToHj" : Void +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + VAR_INPUT + xInLocked : Bool; + END_VAR + + VAR_IN_OUT + arInOutJam : Array[*] of "stCarrier"; + xInOutStart : Bool; + nInOutPos : Int; + END_VAR + + VAR_TEMP + tmpEmptyCarr : "stCarrier"; + nCounter : DInt; + nArrayMax : Int; + nIdx : Int; + nStatus : Int; + xResult : Bool; + END_VAR + + +BEGIN + (* + !!! PRÜFEN OB DAS ALLES NOCH SO PASST! ÜBERNOMMEN VON MUBEA!!! + - Andere Jam Struktur (z.B. bStatus) + - HyperJam + + FC fügt Teil in Staubereich an gewünschter Stelle dem Hyperjam hinzu und rückt den Rest nach + *) + + #nArrayMax := DINT_TO_INT(UPPER_BOUND(ARR := #arInOutJam, DIM := 1)); + + REGION Returnbedingung + IF #nInOutPos < 1 OR #nInOutPos > #nArrayMax OR NOT #arInOutJam[1].bStatus.%X0 OR NOT #xInLocked THEN + //Wenn Positionsangabe zu klein oder zu groß ist, oder in Jam ist gar kein Carrier online, dann beende + #nInOutPos := 1; + #xInOutStart := FALSE; + RETURN; + END_IF; + END_REGION + + REGION Funktion ausführen + IF #xInOutStart THEN + IF #arInOutJam[#nInOutPos].nBarcode > 2 THEN + REGION normale Barcodes + //Füge Carrier am Ende des Hyperjams ein nur wenn nicht Dummy oder BadRead, also nur bei normalem Code + "FC_TSHR_AddAtEnd"(stInTrolley := #arInOutJam[#nInOutPos], + nOutCounter => #nCounter, + xOutResult => #xResult, + arTSHR := "DB_HyperJam".stHyperJam.arCarrier); + //lösche den ausgewählten + #arInOutJam[#nInOutPos] := #tmpEmptyCarr; + IF #nInOutPos < #nArrayMax THEN + //Rücke danach auf um Lücke zu beseitigen aber nur wenn es nicht die letzte Stelle war + #nStatus := MOVE_BLK_VARIANT(SRC := #arInOutJam, + COUNT := INT_TO_UDINT(#nArrayMax - #nInOutPos), + SRC_INDEX := #nInOutPos, + DEST_INDEX := #nInOutPos - 1, + DEST => #arInOutJam); + //letztes löschen damit dort nichts doppeltes drinsteht + #arInOutJam[#nArrayMax] := #tmpEmptyCarr; + END_IF; + //fertig, setze Startbefehl zurück und Position auf Default + #nInOutPos := 1; + #xInOutStart := FALSE; + END_REGION + ELSE + REGION Dummy oder unbekannt + //Falls doch Dummy oder unbekannter Barcode, lösche nur + #arInOutJam[#nInOutPos] := #tmpEmptyCarr; + IF #nInOutPos < #nArrayMax THEN + //Rücke danach auf um Lücke zu beseitigen aber nur wenn es nicht die letzte Stelle war + #nStatus := MOVE_BLK_VARIANT(SRC := #arInOutJam, + COUNT := INT_TO_UDINT(#nArrayMax - #nInOutPos), + SRC_INDEX := #nInOutPos, + DEST_INDEX := #nInOutPos - 1, + DEST => #arInOutJam); + //letztes löschen damit dort nichts doppeltes drinsteht + #arInOutJam[#nArrayMax] := #tmpEmptyCarr; + END_IF; + //fertig, setze Startbefehl zurück und Position auf Default + #nInOutPos := 1; + #xInOutStart := FALSE; + END_REGION + END_IF; + END_IF; + END_REGION + +END_FUNCTION + diff --git a/=A01+UH01-KF00/Programmbausteine/200_MFR/Fb_PriorityManagerV2.liblink b/=A01+UH01-KF00/Programmbausteine/200_MFR/Fb_PriorityManagerV2.liblink new file mode 100644 index 0000000..7e0bfc4 --- /dev/null +++ b/=A01+UH01-KF00/Programmbausteine/200_MFR/Fb_PriorityManagerV2.liblink @@ -0,0 +1,2 @@ +TypeGuid: a394caf2-9e35-454c-b109-30b66c22bddd +VersionGuid: 9a9ac382-d0ec-462d-9753-478a90c82276 diff --git a/=A01+UH01-KF00/Programmbausteine/2_ILSLib/FB/Conveyor/FB_Conveyor.liblink b/=A01+UH01-KF00/Programmbausteine/2_ILSLib/FB/Conveyor/FB_Conveyor.liblink new file mode 100644 index 0000000..84a1e51 --- /dev/null +++ b/=A01+UH01-KF00/Programmbausteine/2_ILSLib/FB/Conveyor/FB_Conveyor.liblink @@ -0,0 +1,2 @@ +TypeGuid: 0fb07577-0755-4aaa-8aa1-ed98c4a96d46 +VersionGuid: 80031440-bc66-4cb7-9dd8-353095fb8de0 diff --git a/=A01+UH01-KF00/Programmbausteine/2_ILSLib/FB/FB_CarrAccumulate1Sep.liblink b/=A01+UH01-KF00/Programmbausteine/2_ILSLib/FB/FB_CarrAccumulate1Sep.liblink new file mode 100644 index 0000000..fed3cf7 --- /dev/null +++ b/=A01+UH01-KF00/Programmbausteine/2_ILSLib/FB/FB_CarrAccumulate1Sep.liblink @@ -0,0 +1,2 @@ +TypeGuid: 7d35be77-2a72-4530-b111-2a609340cc24 +VersionGuid: 2ad8b4f4-249f-4013-ac79-66401f0d4420 diff --git a/=A01+UH01-KF00/Programmbausteine/2_ILSLib/FB/FB_EventLog_Booking.liblink b/=A01+UH01-KF00/Programmbausteine/2_ILSLib/FB/FB_EventLog_Booking.liblink new file mode 100644 index 0000000..99b8fbf --- /dev/null +++ b/=A01+UH01-KF00/Programmbausteine/2_ILSLib/FB/FB_EventLog_Booking.liblink @@ -0,0 +1,2 @@ +TypeGuid: 330e3c73-0c6f-428c-bd04-06e779578b19 +VersionGuid: 6e61feb0-b755-46ad-858d-a6af74114a38 diff --git a/=A01+UH01-KF00/Programmbausteine/2_ILSLib/FB/FB_EventLog_Correction.liblink b/=A01+UH01-KF00/Programmbausteine/2_ILSLib/FB/FB_EventLog_Correction.liblink new file mode 100644 index 0000000..dee516e --- /dev/null +++ b/=A01+UH01-KF00/Programmbausteine/2_ILSLib/FB/FB_EventLog_Correction.liblink @@ -0,0 +1,2 @@ +TypeGuid: 873575bd-45c1-4e5d-ad81-32da723bf561 +VersionGuid: ef6d16a4-e489-47fe-ac26-6e1120abf3dc diff --git a/=A01+UH01-KF00/Programmbausteine/2_ILSLib/FB/FB_EventLog_Scan.liblink b/=A01+UH01-KF00/Programmbausteine/2_ILSLib/FB/FB_EventLog_Scan.liblink new file mode 100644 index 0000000..373181d --- /dev/null +++ b/=A01+UH01-KF00/Programmbausteine/2_ILSLib/FB/FB_EventLog_Scan.liblink @@ -0,0 +1,2 @@ +TypeGuid: 7b2f674e-09cf-4295-8f62-286c90fb1e37 +VersionGuid: 0c32dfac-9456-4f09-94aa-e0c5522ed860 diff --git a/=A01+UH01-KF00/Programmbausteine/2_ILSLib/FB/FC_Ean8_CheckDigit.liblink b/=A01+UH01-KF00/Programmbausteine/2_ILSLib/FB/FC_Ean8_CheckDigit.liblink new file mode 100644 index 0000000..6ec7a2b --- /dev/null +++ b/=A01+UH01-KF00/Programmbausteine/2_ILSLib/FB/FC_Ean8_CheckDigit.liblink @@ -0,0 +1,2 @@ +TypeGuid: 72f65cd0-2f82-4e9a-944e-763573262fcb +VersionGuid: 86087764-f9fa-4e00-99b4-fd1f0d046c81 diff --git a/=A01+UH01-KF00/Programmbausteine/2_ILSLib/FB/MTRO/FB_ILS_MTRO_1Sep.liblink b/=A01+UH01-KF00/Programmbausteine/2_ILSLib/FB/MTRO/FB_ILS_MTRO_1Sep.liblink new file mode 100644 index 0000000..aeca999 --- /dev/null +++ b/=A01+UH01-KF00/Programmbausteine/2_ILSLib/FB/MTRO/FB_ILS_MTRO_1Sep.liblink @@ -0,0 +1,2 @@ +TypeGuid: d0ad9446-bc78-42a5-b84b-49a4797c28ac +VersionGuid: 574d1c63-2f47-400a-81d4-5ae98e38068a diff --git a/=A01+UH01-KF00/Programmbausteine/2_ILSLib/FB/MTRO/FB_ILS_MTRO_1Sep1Swi.liblink b/=A01+UH01-KF00/Programmbausteine/2_ILSLib/FB/MTRO/FB_ILS_MTRO_1Sep1Swi.liblink new file mode 100644 index 0000000..5829363 --- /dev/null +++ b/=A01+UH01-KF00/Programmbausteine/2_ILSLib/FB/MTRO/FB_ILS_MTRO_1Sep1Swi.liblink @@ -0,0 +1,2 @@ +TypeGuid: 2dfa028b-93e2-4db3-a2df-573dd5f5a859 +VersionGuid: 9b45df8c-7bb0-44b6-97db-967b2a2d5925 diff --git a/=A01+UH01-KF00/Programmbausteine/2_ILSLib/FB/MTRO/FB_ILS_MTRO_1Sep_SSCC.liblink b/=A01+UH01-KF00/Programmbausteine/2_ILSLib/FB/MTRO/FB_ILS_MTRO_1Sep_SSCC.liblink new file mode 100644 index 0000000..a09e82e --- /dev/null +++ b/=A01+UH01-KF00/Programmbausteine/2_ILSLib/FB/MTRO/FB_ILS_MTRO_1Sep_SSCC.liblink @@ -0,0 +1,2 @@ +TypeGuid: 63d716e2-f16e-400d-9ae2-7c900ae1baaa +VersionGuid: 7a8bd378-7828-464c-a9cf-27c26d282261 diff --git a/=A01+UH01-KF00/Programmbausteine/2_ILSLib/FB/MTRO/FB_ILS_MTRO_2Sep1Swi.scl b/=A01+UH01-KF00/Programmbausteine/2_ILSLib/FB/MTRO/FB_ILS_MTRO_2Sep1Swi.scl new file mode 100644 index 0000000..f295e47 --- /dev/null +++ b/=A01+UH01-KF00/Programmbausteine/2_ILSLib/FB/MTRO/FB_ILS_MTRO_2Sep1Swi.scl @@ -0,0 +1,1551 @@ +FUNCTION_BLOCK "FB_ILS_MTRO_2Sep1Swi" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + VAR_INPUT + stInSettings : Struct + nTroStopper1 : Int; + nTroStopper2 : Int; + nTroSwitchExit2 : Int; + nTroSwitchExit3 : Int; + xCar2NecRight : Bool; // 2. Kreisel ist notwendig für Richtung rechts + xCar2NecLeft : Bool; // 2. Kreisel ist notwendig für Richtung links + xPrioDir1 : Bool; // Für diese Direction ist Prio Funktion relevant + xPrioDir2 : Bool; // Für diese Direction ist Prio Funktion relevant + xPrioDir3 : Bool; + xPrioDir4 : Bool; + bSep1Type : Byte := 16#0; // X0: TRUE - erstes Bein halten, X1: TRUE- Beladekontrolle, X2: TRUE - Beladeerfassung + bSep2Type : Byte := 16#0; // X0: TRUE - erstes Bein halten, X1: TRUE- Beladekontrolle, X2: TRUE - Beladeerfassung + tPartSenHigh : Time := T#500ms; + tInSenHigh : Time := T#500ms; + xIsBorner1 : Bool; // Hiermit werden Dummys mit Barcode 1000-2000 angelegt + xIsBorner2 : Bool; // Hiermit werden Dummys mit Barcode 1000-2000 angelegt + nBornerDest1 : Int; // Standard Destination festlegen für Borner (variabel) + nBornerDest2 : Int; // Standard Destination festlegen für Borner (variabel) + tDummyTimeNormal : Time := T#3s; // Zeit für Dummy anlegen (Dummy = 1) + tDummyTimeBorner : Time := T#0ms; // Zeit für Dummy anlegen (Dummy = 1000-2000) schneller... + END_STRUCT; + stInSeparator1 : Struct + stSenInSep : "UDT_Sensor"; // Sensor in Stopper + stSenSepLeft : "UDT_Sensor"; // Sensor nach Stopper + stSenPart : "UDT_Sensor"; // Checkt, ob der Bügelträger beladen ist + stSenStartScan : "UDT_Sensor"; // Sensor nach Stopper wenn Scanner vorhanden. Vermutlich startet dieser Sensor den Scanner + Settings : "SettingsSeparator"; + END_STRUCT; + stInSeparator2 : Struct + stSenInSep : "UDT_Sensor"; // Sensor in Stopper + stSenSepLeft : "UDT_Sensor"; // Sensor nach Stopper + stSenPart : "UDT_Sensor"; // Checkt, ob der Bügelträger beladen ist + stSenStartScan : "UDT_Sensor"; // Sensor nach Stopper wenn Scanner vorhanden. Vermutlich startet dieser Sensor den Scanner + Settings : "SettingsSeparator"; + END_STRUCT; + stInSwitch1 : Struct + stSenExit3 : "UDT_Sensor"; + stSenExit4 : "UDT_Sensor"; + Settings : "SettingsSwitch"; + END_STRUCT; + stInBarcodeReader1 : Struct + Settings : "UDT_SettingsBarcodeReader"; + END_STRUCT; + stInBarcodeReader2 : Struct + Settings : "UDT_SettingsBarcodeReader"; + END_STRUCT; + stInPriorityManagerDir1 : "UDT_Response"; // Schnittstelle Prioritätenmanager (z.B. bei Kreuzungen) + stInPriorityManagerDir2 : "UDT_Response"; + stInPriorityManagerDir3 : "UDT_Response"; + stInPriorityManagerDir4 : "UDT_Response"; + stInSenJam2 : "UDT_Sensor"; // Stausensor Exit 2 + stInSenJam3 : "UDT_Sensor"; // Stausensor Exit 3 + nInMainTroNo : UInt; + xInSftyOk : Bool; + xInAllRdyToStart : Bool; + xInJamAtExit2 : Bool; // NIU Stau Exit 2 + xInJamAtExit3 : Bool; // NIU Stau Exit 3 + xInCarouselRun1 : Bool; // Rückmeldesignal von Carousel1: Motor läuft + xInCarouselRun2 : Bool; // Rückmeldesignal von Carousel2: Motor läuft + xInTestMode : Bool; + xInCancel : Bool; + xInAreaStopActive : Bool; // Bereichshalt + xInRelease : Bool; // Freigabe/Anforderung + nInDirection : USInt; + END_VAR + + VAR_OUTPUT + xOutStopper1 : Bool; + xOutStopper2 : Bool; + xOutSw1EntrTo1 : Bool; // Weiche auf Eingang 1 stellen + xOutSw1EntrTo2 : Bool; // Weiche auf Eingang 2 stellen + xOutSw1ExTo3 : Bool; // Weiche auf Ausgang 3 stellen + xOutSw1ExTo4 : Bool; // Weiche auf Ausgang 4 stellen + xOutJamAtEntry1 : Bool; + xOutJamAtEntry2 : Bool; + xOutCarouselReq1 : Bool; // Motor 1 anfordern + xOutCarouselReq2 : Bool; // Motor 2 anfordern + xOutCorrection : Bool; + nOutStateLast : Int; + stOutPriorityManagerDir1 : "UDT_Request"; + stOutPriorityManagerDir2 : "UDT_Request"; + stOutPriorityManagerDir3 : "UDT_Request"; + stOutPriorityManagerDir4 : "UDT_Request"; + xOutBookedDir1 : Bool; + xOutBookedDir2 : Bool; + xOutBookedDir3 : Bool; + xOutBookedDir4 : Bool; + stOutLastCarrier : "stCarrier"; + nOutScanResult : DInt; + xOutNewScan : Bool; + END_VAR + + VAR_IN_OUT + stInOutMachineState : "UDT_MainState"; + stInOutCognexInterface1 : "stCognexInterface"; + stInOutCognexInterface2 : "stCognexInterface"; + arInOutJamEntr1 : Array[*] of "stCarrier"; // Daten Staubereich Eingang 1 + stInOutJamEntr1 : "stJamData"; + arInOutJamEntr2 : Array[*] of "stCarrier"; // Daten Staubereich Eingang 2 + stInOutJamEntr2 : "stJamData"; + arInOutJamExit2 : Array[*] of "stCarrier"; // Daten Staubereich Ausgang 2 + stInOutJamExit2 : "stJamData"; + arInOutJamExit3 : Array[*] of "stCarrier"; // Daten Staubereich Ausgang 3 + stInOutJamExit3 : "stJamData"; + stInOutHMI : "UDT_HMI_TRO"; + END_VAR + + VAR + fbStateManager { S7_SetPoint := 'False'} : "FB_StateManager"; + fbSeparator1 { S7_SetPoint := 'False'} : "FB_ILS_STRO_Sep"; + fbSeparator2 : "FB_ILS_STRO_Sep"; + fbSwitch1 { S7_SetPoint := 'False'} : "FB_ILS_STRO_Switch"; + fbBarcodeReader1 { S7_SetPoint := 'False'} : "FB_BarcodeReaderCognex"; // Instanz Barcode-Reader1 + fbBarcodeReader2 : "FB_BarcodeReaderCognex"; // Instanz Barcode-Reader2 + END_VAR + VAR RETAIN + stActRequest : Struct + xNBT : Bool; // Es handelt sich um einen Nullbügelträger + xCancelled : Bool; // Abbruchanforderung durch MFR + xDirectionChange : Bool; + nActReqIndex : USInt; // 0 = nichts zu tun | 1-200: Aktuell bearbeiteter Index + nActArrIndex : USInt; + nDirection : USInt; // 0: Es bleibt hier alles so wie es ist! | 1: E1->A3 | 2: E1->A4 | 3: E2->A3 | 4: E2->A4 + nLastDirection : USInt; + nRequestedNoBT : USInt; // Anzahl Trolleys die ausgefahren werden sollen + nReasonForStop : USInt; // 0: Nichts | 5: Alle BT ausgefahren | 10: Fehler in SubTro | 15: Kein BT/NBT am Eingang | 20: Stau im nächsten MTRO | 25: NBT | 30: Falsch gefahren | 35: Initial-BT kam nicht am Ziel an | 40: Allgemeiner Fehler | 45: Abbruch durch MFR | 50: Fehler in Anfrage von MRF + nActNoStopper : USInt; // Anzahl der Stopper-öffnungen in diesem Auftrag + nActNoInSwitch : USInt; // Anzahl BT die sich noch in Weiche befinden müssten + nActNoInSwitchLast : USInt; + xLongSignal : Bool; + END_STRUCT; + nState : Int; + END_VAR + VAR + sStateText : String["cStateText"]; // Aktueller State der Schrittkette (textuell) + END_VAR + VAR RETAIN + nSetSwitch1 : USInt; // 0: Es bleibt hier alles so wie es ist! | 1: E1->A2 | 2: E1->A3 + xReleaseTrolleySep1 : Bool; // Öffne-Befehl + xReleaseTrolleySep2 : Bool; + xErrorMotor : Bool; // Fehler weil Motor-Run fehlt + xMTRORdy { S7_SetPoint := 'True'} : Bool; // MainTRO ist bereit für neue Aufträge (Signal an JobManager) + xWrongDirDetect : Bool; // Wrong Dir wurde erkannt + END_VAR + VAR + tOnSvReleaseSep1 {InstructionName := 'TON_TIME'; LibVersion := '1.0'; S7_SetPoint := 'False'} : TON_TIME; // Supervision - Freigabe Separator1 + tOnSvReleaseSep2 {InstructionName := 'TON_TIME'; LibVersion := '1.0'} : TON_TIME; // Supervision - Freigabe Separator2 + xStartScan : Bool; + xHandshakeScan : Bool; + nBarcodeResult : DInt; + nBarcodeHelp : DInt; + sBarcodeString : String; + xCodeEven : Bool; + xTrolleyWithPart1 : Bool; + xTrolleyWithPart2 : Bool; + xTrolleyWoPart1 : Bool; + xTrolleyWoPart2 : Bool; + xReadSecondLeg : Bool; + wErrorWord1 : Word; + wErrorWord2 : Word; + nLastDirection : USInt; + tOnSwitchDelay {InstructionName := 'TON_TIME'; LibVersion := '1.0'} : TON_TIME; + stCarrierDummy { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'; S7_SetPoint := 'False'} : "stCarrier" := (1, (), 16#01); + nArrayMax1 : Int; + nArrayMax2 : Int; + nBarcodeEmpty1 : Int := 0; + nBarcodeEmpty2 : Int; + tOnMonCarrArrive1 {InstructionName := 'TON_TIME'; LibVersion := '1.0'} : TON_TIME; // Überwachungszeit zwischen Carrier Online & Separator Sensor Belegung + tOnMonCarrArrive2 {InstructionName := 'TON_TIME'; LibVersion := '1.0'} : TON_TIME; + fbMonitoringCarrNotArrive1 : "FB_Monitoring"; + fbMonitoringCarrNotArrive2 : "FB_Monitoring"; + fbMonitoringCarrWoData1 : "FB_Monitoring"; + fbMonitoringCarrWoData2 : "FB_Monitoring"; + END_VAR + + VAR_TEMP + nIndex : USInt; + tmpActUnivTon : Bool; + tmpReqFinished : Bool; // Temp Signal für Switch + xBtEmpty : Bool; + xCarouselRun : Bool; + tmpReasonForStop : USInt; // Anhaltegrund in der Schrittkette | 0: Nichts | 5: Alle BT ausgefahren | 10: Fehler in SubTro | 15: Kein BT/NBT am Eingang | 20: Stau im nächsten MTRO | 25: NBT | 30: Falsch gefahren | 35: Initial-BT kam nicht am Ziel an | 40: Allgemeiner Fehler | 45: Abbruch durch MFR | 50: Fehler in Anfrage von MRF | 55: MFR hat TRO pausiert + stEmptyCarrier : "stCarrier"; + stBookingInfo : "stEventBookingInfo"; + arEmptyCarrier : Array[1..1] of "stCarrier"; // Platzhalter für CarrierArray + xGoodRead : Bool; + stEventGoodRead : "stEventScanInfo"; + arEventCorrectionInfo : Array[0..1] of "stEventCorrectionInfo"; + stEventNew : "stEventScanInfo"; + stEventUnknown : "stEventScanInfo"; + xTemp : Bool; + xNewCarrier : Bool; + xUnknownCarrier : Bool; + xTmpCorrection : Bool; + xStartSwitchDelay : Bool; + xBookedDir1 : Bool; + xBookedDir2 : Bool; + xBookedDir3 : Bool; + xBookedDir4 : Bool; + stTempCarrier : "stCarrier"; + tmpCarrierEmpty : "stCarrier"; + END_VAR + + VAR CONSTANT + "2SEP1SWITCH" : USInt := 3; + c0000_StepOff : Int := 0; // Schrittkette aus + c0100_StepUndefined : Int := 100; // Schrittkette undefiniert / Init + c1000_StepWaitForTrolley1 : Int := 1000; // Warte auf Trolley 1 + c1100_StepScannerTrig1 : Int := 1100; // Scanner Triggern + c1200_StepScannerEval1 : Int := 1200; // Scanergebnis auswerten + c1300_StepCheckLoad : Int := 1300; // Beladung prüfen + c1400_StepCheckSep1 : Int := 1400; // Separator checken + c1500_StepReleaseSep1 : Int := 1500; // Freigabe an Separator + c2000_StepWaitForTrolley2 : Int := 2000; // Warte auf Trolley 2 + c2100_StepScannerTrig2 : Int := 2100; // Scanner Triggern (nur wenn 1.Achse kein Ergebnis) + c2200_StepScannerEval2 : Int := 2200; // Scanergebnis auswerten (nur wenn 1.Achse kein Ergebnis) + c2250_StepCheckDir : Int := 2250; + c2225_StepGetDir : Int := 2225; + c2300_StepCheckSep2 : Int := 2300; // Separator checken + c2350_StepCheckSwi : Int := 2350; + c2400_StepCheckJam : Int := 2400; // Stau überprüfen + c2500_StepReleaseSep2 : Int := 2500; // Freigabe an Separator + cCarrierDummy : Int := 1; + cCarrierUnknown : Int := 2; + END_VAR + + +BEGIN + // (* Company: Schönenberger Systeme GmbH / (C) Copyright (2025). All rights reserved. + // ----------------------------------------------------------------------------------------- + // Title: FB_MTRO_1Sep1Swi + // Comment/Function: MainTRO-Function block for controlling TRO with 1x Sep and 1x Switch + // Library/Family: "MainTRO" + // Author: department: "Automatisierung" ; person in charge / contact: E.Yüksel, T. Molina, T.Schiller + // Target System: CPU 1518F-4 PN/DP + // Engineering: TIA Portal V20 + // Restrictions: - + // Requirements: (hardware, technological package, etc.) + // ----------------------------------------------------------------------------------------- + // Change log table: + // Version | Date | Signature (Safety) | Expert in charge | Changes applied + // ------------|------------|--------------------|------------------|----------------------- + // 001.000.000 | 2022-12-15 | - | Yüksel, Molina | Header added on 15.12.2022 + // 002.000.000 | 2025-02-11 | - | Yüksel | Adapt to ILS with Minitrolley, without external MFR + // + // *) + + // REGION Zweiten Motor einbinden + // IF #stInSettings.xCar2NecLeft AND + // (#stActRequest.nDirection = 1 OR #stActRequest.nDirection = 3) THEN + // #xCarouselRun := #xInCarouselRun1 AND #xInCarouselRun2; //Nach links wird 2. Motor gebraucht und aktuelle Richtung ist LINKS + // ELSIF #stInSettings.xCar2NecLeft AND + // (#stActRequest.nDirection = 2 OR #stActRequest.nDirection = 4) THEN + // #xCarouselRun := #xInCarouselRun1; //Nach links wird 2. Motor gebraucht und aktuelle Richtung ist RECHTS + // ELSIF #stInSettings.xCar2NecRight AND + // (#stActRequest.nDirection = 1 OR #stActRequest.nDirection = 3) THEN + // #xCarouselRun := #xInCarouselRun1; //Nach rechts wird 2. Motor gebraucht und aktuelle Richtung ist LINKS + // ELSIF #stInSettings.xCar2NecRight AND + // (#stActRequest.nDirection = 2 OR #stActRequest.nDirection = 4) THEN + // #xCarouselRun := #xInCarouselRun1 AND #xInCarouselRun2; //Nach rechts wird 2. Motor gebraucht und aktuelle Richtung ist RECHTS + // ELSE + // #xCarouselRun := #xInCarouselRun1; //normal + // END_IF; + // END_REGION + + // REGION Schrittkette + // REGION !!!IN ARBEIT - NUR VORBEREITET!!!!! + // (* + // Um Schrittkette herum alles für 2 Seps erweitert, also ganz simpel 1Sep1Swi genommen und alles für den zweiten kopiert, Schrittkette noch nicht gemacht. + // Prinzip lässt sich so aber nicht ohne weiteres umsetzen + // *) + + // END_REGION + + // CASE #nState OF + + // #c0000_StepOff: + // REGION 0000: Off + // //akt. Zustand + // #sStateText := 'OFF'; + // ///////// Ausgänge ///////// + + // ///////// Statics ////////// + // #xReleaseTrolleySep1 := FALSE; + // #xReleaseTrolleySep2 := FALSE; + // #nSetSwitch1 := 0; + // #xOutNewScan := FALSE; + // ///////// Timer ////////// + + // //////// Transition //////// + + // END_REGION + + // #c0100_StepUndefined: + + // REGION 0100: Undefined + // // akt. Zustand + // #sStateText := 'Undefined'; + // ///////// Ausgänge ///////// + + // ///////// Statics ////////// + // #xReleaseTrolleySep1 := FALSE; + // #xReleaseTrolleySep2 := FALSE; + // #nSetSwitch1 := 0; + // #xMTRORdy := FALSE; + // #xCodeEven := FALSE; + + // ///////// Timer ////////// + + // //////// Transition //////// + + // #nState := #c1000_StepWaitForTrolley1; + + // END_REGION + + // #c1000_StepWaitForTrolley1: + // REGION 1000: Wait for Trolley + // //akt. Zustand + // #sStateText := 'Wait for Trolley'; + // ///////// Ausgänge ///////// + + // ///////// Statics ////////// + + // #xReleaseTrolleySep1 := FALSE; + // #xReleaseTrolleySep2 := FALSE; + // #xCodeEven := FALSE; + // #xMTRORdy := TRUE; + // #xOutNewScan := FALSE; + + // //Transition + // IF NOT #stInOutHMI.UDT_Ctrl.xPause THEN + // IF #fbSeparator1.stOutMainTro.xBtPresent THEN //Separator meldet Belegung + // IF #stInSeparator1.Settings.xPluggedScanner THEN //Scanner verbaut? + // #nState := #c1100_StepScannerTrig1; //Nächster Schritt -> Scannen + // ELSIF #arInOutJamEntr1[1].bStatus.%X0 THEN // Kein Scanner verbaut, aber Carrier online (z.B. Dummy wurde angelegt) + // IF #stInSeparator1.Settings.xPluggedPart THEN + // #nState := #c1300_StepCheckLoad; // Nächster Schritt -> Beladung prüfen + // ELSE + // #nState := #c1400_StepCheckSep1; //Nächster Schritt -> Separator chekcen + // END_IF; + // END_IF; + // END_IF; + // END_IF; + + // END_REGION + + // #c1100_StepScannerTrig1: + // REGION 1100: Scanner Trigger 1 + + // // akt. Zustand + // #sStateText := 'Scanner Trigger 1'; + + // ///////// Ausgänge ///////// + + // ///////// Statics ////////// + // #xReleaseTrolleySep1 := FALSE; + + // IF #fbBarcodeReader1.xOutReadyForNewScan THEN //Scanner bereit + // #xStartScan := TRUE; //Startbefehl + // END_IF; + + // ///////// Timer ////////// + + // //////// Transition //////// + + // IF #fbBarcodeReader1.xOutReadingDone THEN //Scanner Rückmeldung + // #xStartScan := FALSE; + // #nState := #c1200_StepScannerEval1; //Weiter + // END_IF; + // END_REGION + + // #c1200_StepScannerEval1: + // REGION 1200: Scanner Evaluation 1 + + // // akt. Zustand + // #sStateText := 'Scanner Evaluation 1'; + + // ///////// Ausgänge ///////// + + // ///////// Statics ////////// + // #xReleaseTrolleySep1 := FALSE; + + // // Logic - TODO in eigenen FC packen?.. + + // IF #fbBarcodeReader1.xOutCodeGood THEN + // #nBarcodeResult := LINT_TO_DINT(#fbBarcodeReader1.#nOutBarcode); // Good read vom Barcode reader übernehmen + + // REGION Event log Good read + // #xGoodRead := TRUE; // Trigger + // #stEventGoodRead.nScanType := 4; + // #stEventGoodRead.sBarcode := DELETE(IN := DINT_TO_STRING(#nBarcodeResult), L := 1, P := 1); + // #stEventGoodRead.sReaderId := DELETE(IN := INT_TO_STRING(#stInBarcodeReader1.Settings.#nStation), L := 1, P := 1); + // END_REGION + + // REGION Gerade Zahl erkannt + // IF (((#nBarcodeResult / 10) MOD 100) MOD 2 <> 1) THEN //anderes Ergebnis als 1 bedeutet, (xxxxxYYx) YY=gerade, also hinteres Bein von MiniTrolley + // #xCodeEven := TRUE; //Bit sagt Separator dass hinteres Bein und nicht erstes zur Korrektur in Schrittkette + // // #nBarcodeTarget := #nBarcodeTarget - 10; //Mache danach die gerade Zahl zur ungeraden UPDATE: WEGEN 8. ZIFFER KLAPPT DAS SO NICHT + // #nBarcodeHelp := (#nBarcodeResult / 10) - 1; + + // "FC_Ean8_CheckDigit"(sInDigits := DELETE(IN := DINT_TO_STRING(IN := #nBarcodeHelp), L := 1, P := 1), + // sOutBarcode => #sBarcodeString, + // nOutBarcode => #nBarcodeResult); + + // // #sOutBarcode := #sBarcodeString; + // END_IF; + // END_REGION + + // ELSIF #fbBarcodeReader1.#xOutCodeBad THEN + // #nBarcodeResult := #arInOutJamEntr1[1].nBarcode; //erwarteter Barcode wird aus JamDaten übernommen + // END_IF; + + // IF (#nBarcodeResult > 100) AND + // (#nBarcodeResult < 2147483647) AND // Good Read (2.147.483.647 Maximum von DINT) + // (#arInOutJamEntr1[1].nBarcode = 0 OR #arInOutJamEntr1[1].nBarcode = 1) THEN //Wenn keine Daten oder ein Dummy erwartet werden + + // #xTmpCorrection := TRUE; + // // REGION Carr_Glob_Correction + + + // // "FC_CARR_GLOB_CORRECTION"(xInStart := TRUE, //Führe Korrektur aus + // // nInBarcodeScan := #nBarcodeResult, + // // nInStation := #stInBarcodeReader.Settings.nStation, + // // xOutNotFound => #xTemp, + // // arOutEventLogInfo => #arEventCorrectionInfo, + // // InOutCarrierExpect := #arInOutJamEntr1[1]); + // // END_REGION + + + // // IF NOT #xTemp THEN + // // ; + // // // #stInOutCarrier.stCarrData.nNrOfScans += 1; + // // ELSE + // // #arInOutJamEntr1[1].nDestination := "cDestNONE"; //neuer Carrier // TODO + // // // #stInOutCarrier.stCarrData.nNrOfScans += 1; + // // #arInOutJamEntr1[1].nBarcode := #nBarcodeResult; //Hier werden neue Carrier im System angelegt + // // #arInOutJamEntr1[1].bStatus.%X0 := TRUE; + // // END_IF; + + // // REGION Event Log New Carrier + + // // #xNewCarrier := TRUE; // Trigger + // // #stEventNew.nScanType := 2; + // // #stEventNew.sBarcode := DELETE(IN := DINT_TO_STRING(#arInOutJamEntr1[1].nBarcode), L := 1, P := 1); + // // #stEventNew.sDest := DELETE(IN := INT_TO_STRING(#arInOutJamEntr1[1].nDestination), L := 1, P := 1); + // // #stEventNew.sReaderId := DELETE(IN := INT_TO_STRING(#stInBarcodeReader.Settings.#nStation), L := 1, P := 1); + + // // END_REGION + + // ELSIF + // (#nBarcodeResult > 100) AND + // (#nBarcodeResult < 2147483647) AND // Good Read (2.147.483.647 Maximum von DINT) + // #arInOutJamEntr1[1].nBarcode = #nBarcodeResult THEN //Barcodes stimmen überein ODER es wird hier gelandet mit BadRead wobei normaler Barcode erwartet wird-> mache normal weiter + // ; + // ELSIF + // (#nBarcodeResult > 100) AND + // (#nBarcodeResult < 2147483647) AND + // #arInOutJamEntr1[1].nBarcode <> #nBarcodeResult AND //Barcodes stimmen nicht überein, erwarteter Carrier enthält aber normalen Barcode + // #arInOutJamEntr1[1].nBarcode <> 0 AND + // #arInOutJamEntr1[1].nBarcode <> 1 THEN + + // #xTmpCorrection := TRUE; + + // // REGION Carr_Glob_Correction + + // // "FC_CARR_GLOB_CORRECTION"(xInStart := TRUE, //Führe Korrektur aus + // // nInBarcodeScan := #nBarcodeResult, + // // nInStation := #stInBarcodeReader.Settings.nStation, + // // xOutNotFound => #xTemp, + // // arOutEventLogInfo => #arEventCorrectionInfo, + // // InOutCarrierExpect := #arInOutJamEntr1[1]); + // // END_REGION + + // // IF NOT #xTemp THEN + // // ; + // // // #stInOutCarrier.stCarrData.nNrOfScans += 1; + // // ELSE + // // #arInOutJamEntr1[1].nDestination := "cDestNONE"; //neuer Carrier // TODO + // // // #stInOutCarrier.stCarrData.nNrOfScans += 1; + // // #arInOutJamEntr1[1].nBarcode := #nBarcodeResult; //Hier werden neue Carrier im System angelegt + // // #arInOutJamEntr1[1].bStatus.%X0 := TRUE; + // // END_IF; + + // // REGION Event Log New Carrier + + // // #xNewCarrier := TRUE; // Trigger + // // #stEventNew.nScanType := 2; + // // #stEventNew.sBarcode := DELETE(IN := DINT_TO_STRING(#arInOutJamEntr1[1].nBarcode), L := 1, P := 1); + // // #stEventNew.sDest := DELETE(IN := INT_TO_STRING(#arInOutJamEntr1[1].nDestination), L := 1, P := 1); + // // #stEventNew.sReaderId := DELETE(IN := INT_TO_STRING(#stInBarcodeReader.Settings.#nStation), L := 1, P := 1); + + // // END_REGION + + + // ELSE // Bad Read, falls nichts oder Dummy erwartet wird -> HANDLING TO DO!!!!!!!!!!!!!!!!!!!!!!!!!!!! + // #arInOutJamEntr1[1].bStatus.%X0 := TRUE; + // #arInOutJamEntr1[1].nBarcode := 2; //unbekannter Carrier mit Badread, erwartet 0 und physikalisch vorhanden + // #arInOutJamEntr1[1].nDestination := 123; //todo + + // REGION Event Log unknown Carrier + + // #xUnknownCarrier := TRUE; // Trigger + // #stEventUnknown.nScanType := 3; + // #stEventUnknown.sBarcode := DELETE(IN := DINT_TO_STRING(#arInOutJamEntr1[1].nBarcode), L := 1, P := 1); + // #stEventUnknown.sDest := DELETE(IN := INT_TO_STRING(#arInOutJamEntr1[1].nDestination), L := 1, P := 1); + // #stEventUnknown.sReaderId := DELETE(IN := INT_TO_STRING(#stInBarcodeReader1.Settings.#nStation + 50), L := 1, P := 1); + + // END_REGION + + // END_IF; + + // #xHandshakeScan := TRUE; + + // #nOutScanResult := #nBarcodeResult; + // #xOutNewScan := TRUE; + // ///////// Timer ////////// + + // //////// Transition //////// + // IF #stInSeparator1.Settings.xPluggedPart AND #stInSettings.bSep1Type.%X2 THEN + // #nState := #c1300_StepCheckLoad; + // ELSIF #xCodeEven THEN + // #xCodeEven := FALSE; + // #nState := #c2000_StepWaitForTrolley2; //Scanner bestätigt zweites Bein gelesen -> Korrigieren! + // ELSE + // #nState := #c1400_StepCheckSep1; + // END_IF; + + // END_REGION + + // #c1300_StepCheckLoad: + // REGION 1300: Check Load + + // // akt. Zustand + // #sStateText := 'Check Load'; + + // ///////// Ausgänge ///////// + // ///////// Statics ////////// + // #xHandshakeScan := FALSE; + // #xReleaseTrolleySep1 := FALSE; + // #xOutNewScan := FALSE; + // ///////// Timer ////////// + + // //////// Transition //////// + // #tmpActUnivTon := TRUE; + // IF (#arInOutJamEntr1[1].bStatus.%X1 AND #xTrolleyWithPart1) OR //Daten und physikalisch -> beladen Ok! + // (NOT #arInOutJamEntr1[1].bStatus.%X1 AND #xTrolleyWoPart1) //Daten und physikalisch -> unbeladen Ok! + // THEN + // #nState := #c1400_StepCheckSep1; // Weiter + // ELSIF #fbStateManager.tOutUnivTonR > T#3s THEN + // #tmpReasonForStop := 123; // TODO: Beladekontrolle Fehler + // END_IF; + + // END_REGION + + // #c1400_StepCheckSep1: + // REGION 1400: Check Separator + // // akt. Zustand + // #sStateText := 'Check Sep'; + + // ///////// Ausgänge ///////// + // ///////// Statics ////////// + // #xReleaseTrolleySep1 := FALSE; + // #xHandshakeScan := FALSE; + // #xOutNewScan := FALSE; + // ///////// Timer ////////// + + // //////// Transition //////// + // #tmpActUnivTon := TRUE; + // IF #fbSeparator1.stOutMainTro.nStatus = "SepState_WaitForReq" THEN // Separator ist bereit + // #nState := #c1500_StepReleaseSep1; + // ELSIF #fbStateManager.tOutUnivTonR > T#3s THEN + // #tmpReasonForStop := "Rsn_SubError"; // SubTRO: Separator ist nicht bereit + // END_IF; + + // END_REGION + + + // #c1500_StepReleaseSep1: + // REGION 1500: Release Sep 1 + // // akt. Zustand + // #sStateText := 'Leave Sep 1'; + + // ///////// Ausgänge ///////// + // ///////// Statics ////////// + + // #xReleaseTrolleySep1 := (#xCarouselRun AND #xInSftyOk) AND + // (NOT #stInSettings.bSep1Type.%X0 OR + // (#xInRelease AND #stInSettings.bSep1Type.%X0 AND NOT #stInSettings.bSep1Type.%X1) OR + // (#xInRelease AND #stInSettings.bSep1Type.%X0 AND #stInSettings.bSep1Type.%X1 AND + // ((#arInOutJamEntr1[1].bStatus.%X1 AND #xTrolleyWithPart1) OR + // (NOT #arInOutJamEntr1[1].bStatus.%X1 AND #xTrolleyWoPart1)))); // Erste Achse darf vereinzelt werden + + // //////// Transition //////// + // IF #fbSeparator1.stOutMainTro.nStatus = "SepState_Finish" THEN + // #nState := #c2000_StepWaitForTrolley2; + // ELSIF #xReleaseTrolleySep1 AND #tOnSvReleaseSep1.Q THEN + // #tmpReasonForStop := "Rsn_SubError"; // Timeout-Fehler im SubTRO "Separator": Freigabe erteilt, aber Separator gibt keine Rückmeldung an MainTRO + // END_IF; + + // END_REGION + + // #c2000_StepWaitForTrolley2: + // REGION 2000: Wait for Trolley 2 + // //akt. Zustand + // #sStateText := 'Wait for Trolley 2'; + // ///////// Ausgänge ///////// + + // ///////// Statics ////////// + + // #xReleaseTrolleySep1 := FALSE; + // #xHandshakeScan := FALSE; + // #xOutNewScan := FALSE; + + // //Korrektur 2.Bein kommt nicht + // (* IF NOT #fbSeparator1.stOutMainTro.xBtPresent (* AND #xInCarouselRun *)AND NOT #stInSeparator1.Settings.xPluggedScanner AND #fbStateManager.tOutTimeInStep > T#3s THEN + // #nState := #c1000_StepWaitForTrolley1; + // END_IF; *) + + + // //Transition + // IF NOT #stInOutHMI.UDT_Ctrl.xPause THEN + // IF #fbSeparator1.stOutMainTro.xBtPresent AND //Separator meldet Belegung + // #arInOutJamEntr1[1].bStatus.%X0 // Carrier ist online + // AND ((#xInRelease AND NOT #stInSettings.bSep1Type.%X0) OR #stInSettings.bSep1Type.%X0)//Freigabe + // THEN + // IF #xReadSecondLeg // zweites Bein muss gelesen werden (TODO!!!!) + // AND #stInSeparator1.Settings.xPluggedScanner // Scanner verbaut? + // THEN + // #nState := #c2100_StepScannerTrig2; // Nächster Schritt -> Scannen + // ELSE + // #nState := #c2225_StepGetDir;//#c2250_StepCheckDir; // Nächster Schritt -> Check Direction + // END_IF; + // END_IF; + // END_IF; + // END_REGION + + // #c2100_StepScannerTrig2: + // REGION 2100: Scanner Trigger 2 + + // // akt. Zustand + // #sStateText := 'Scanner Trigger 2'; + + // ///////// Ausgänge ///////// + + // ///////// Statics ////////// + // #xReleaseTrolleySep1 := FALSE; + + // IF #fbBarcodeReader1.xOutReadyForNewScan THEN + // #xStartScan := TRUE; + // END_IF; + + // ///////// Timer ////////// + + // //////// Transition //////// + + // IF #fbBarcodeReader1.xOutReadingDone THEN + // #xStartScan := FALSE; + // #nState := #c2200_StepScannerEval2; + // END_IF; + // END_REGION + + // #c2200_StepScannerEval2: + // REGION 2200: Scanner Evaluation 2 + + // // akt. Zustand + // #sStateText := 'Scanner Evaluation 2'; + + // ///////// Ausgänge ///////// + + // ///////// Statics ////////// + // #xReleaseTrolleySep1 := FALSE; + + // // Logic + + // IF #fbBarcodeReader1.xOutCodeGood THEN + // #nBarcodeResult := LINT_TO_DINT(#fbBarcodeReader1.#nOutBarcode); // Good read vom Barcode reader + // ELSIF #fbBarcodeReader1.#xOutCodeBad THEN + // #nBarcodeResult := #arInOutJamEntr1[1].nBarcode; //erwarteter Barcode wird aus JamDaten übernommen + // END_IF; + + // IF (#nBarcodeResult > 100) AND + // (#nBarcodeResult < 2147483647) AND // Good Read (2.147.483.647 Maximum von DINT) + // (#arInOutJamEntr1[1].nBarcode = 0 OR #arInOutJamEntr1[1].nBarcode = 1) THEN //Wenn keine Daten oder ein Dummy erwartet werden + // REGION TODO + // (* "FC_CARR_GLOB_CORRECTION"(xInStart := TRUE, //Führe Korrektur aus + // nInBarcodeScan := #nBarcodeResult, + // nInStation := 0, // todo + // xOutNotFound => #xTemp, + // arOutEventLogInfo => #arEventCorrectionInfo, + // InOutCarrierExpect := #arInOutJamEntr1[1]); *) + // END_REGION + + + // IF NOT #xTemp THEN + // ; + // // #stInOutCarrier.stCarrData.nNrOfScans += 1; + // ELSE + // #arInOutJamEntr1[1].nDestination := "cDestNONE"; //neuer Carrier // TODO + // // #stInOutCarrier.stCarrData.nNrOfScans += 1; + // #arInOutJamEntr1[1].nBarcode := #nBarcodeResult; //Hier werden neue Carrier im System angelegt + // #arInOutJamEntr1[1].bStatus.%X0 := TRUE; + // END_IF; + // ELSIF + // (#nBarcodeResult > 100) AND + // (#nBarcodeResult < 2147483647) AND // Good Read (2.147.483.647 Maximum von DINT) + // #arInOutJamEntr1[1].nBarcode = #nBarcodeResult THEN //Barcodes stimmen überein ODER es wird hier gelandet mit BadRead wobei normaler Barcode erwartet wird-> mache normal weiter + // ; + // ELSIF + // (#nBarcodeResult > 100) AND + // (#nBarcodeResult < 2147483647) AND + // #arInOutJamEntr1[1].nBarcode <> #nBarcodeResult AND //Barcodes stimmen nicht überein, erwarteter Carrier enthält aber normalen Barcode + // #arInOutJamEntr1[1].nBarcode <> 0 AND + // #arInOutJamEntr1[1].nBarcode <> 1 THEN + // ; + // REGION TODO + // (* "FC_CARR_GLOB_CORRECTION"(xInStart := TRUE, //Führe Korrektur aus + // nInBarcodeScan := #nBarcodeResult, + // nInStation := 0, // todo + // xOutNotFound => #xTemp, + // arOutEventLogInfo => #arEventCorrectionInfo, + // InOutCarrierExpect := #arInOutJamEntr1[1]); *) + // END_REGION + + // ELSE // Bad Read, falls nichts oder Dummy erwartet wird -> HANDLING TO DO!!!!!!!!!!!!!!!!!!!!!!!!!!!! + // #arInOutJamEntr1[1].bStatus.%X0 := TRUE; + // #arInOutJamEntr1[1].nBarcode := 2; //unbekannter Carrier mit Badread, erwartet 0 und physikalisch vorhanden + // #arInOutJamEntr1[1].nDestination := 123; //todo + // END_IF; + + // #xHandshakeScan := TRUE; + + // ///////// Timer ////////// + + // //////// Transition //////// + // #nState := #c2225_StepGetDir;//#c2250_StepCheckDir; + // END_REGION ; + + // #c2225_StepGetDir: + // REGION 2225: Get Direction + // // akt. Zustand + // #sStateText := 'Get Dir'; + + // ///////// Ausgänge ///////// + + // ///////// Statics ////////// + // #xReleaseTrolleySep1 := FALSE; + + // #stActRequest.nDirection := #nInDirection; + + // IF #stActRequest.nDirection = 0 THEN + // #tmpReasonForStop := "Rsn_MfrMistake"; + // ELSE + // #nState := #c2250_StepCheckDir; + // END_IF; + // END_REGION + + + + // #c2250_StepCheckDir: + // REGION 2250: Check Direction + + // // akt. Zustand + // #sStateText := 'Check Dir'; + + // ///////// Ausgänge ///////// + + // ///////// Statics ////////// + // #xReleaseTrolleySep1 := FALSE; + + // //Richtungswechsel muss noch berücksichtigt werden! + // IF #nLastDirection <> #stActRequest.nDirection THEN // Richtungswechsel -> Warten + // // #tmpActUnivTon := TRUE; + // #xStartSwitchDelay := true; + // IF #tOnSwitchDelay.Q THEN + // #nSetSwitch1 := #stActRequest.nDirection; + // #nLastDirection := #stActRequest.nDirection; + // #nState := #c2300_StepCheckSep2; + // END_IF; + // ELSIF #nLastDirection = #nInDirection THEN // Gleiche Richtung -> Weiter + // #nSetSwitch1 := #stActRequest.nDirection; + // #nLastDirection := #stActRequest.nDirection; + // #nState := #c2300_StepCheckSep2; + // END_IF; + // END_REGION + + + // #c2300_StepCheckSep2: + // REGION 2300: Check Separator + // // akt. Zustand + // #sStateText := 'Check Sep'; + + // ///////// Ausgänge ///////// + // ///////// Statics ////////// + // #xHandshakeScan := FALSE; + // #xReleaseTrolleySep1 := FALSE; + // ///////// Timer ////////// + + // //////// Transition //////// + // #tmpActUnivTon := TRUE; + // IF #fbSeparator1.stOutMainTro.nStatus = "SepState_WaitForReq" THEN // Separator ist bereit + // #nState := #c2350_StepCheckSwi; + // ELSIF #fbStateManager.tOutUnivTonR > T#3s THEN + // #tmpReasonForStop := "Rsn_SubError"; // SubTRO: Separator ist nicht bereit + // END_IF; + + // END_REGION + + + // #c2350_StepCheckSwi: + // REGION 2300: Check Switch + + // //akt. Zustand + // #sStateText := 'Check Switch'; + + // ///////// Ausgänge ///////// + + // ///////// Statics ////////// + // #xReleaseTrolleySep1 := FALSE; + + // #nSetSwitch1 := #stActRequest.nDirection; + // ///////// Timer ////////// + + // //////// Transition //////// + + // CASE #stActRequest.nDirection OF + // 1: + // IF NOT #fbSwitch1.stOutMainTro.xStatusIn AND + // NOT #fbSwitch1.stOutMainTro.xStatusOut AND NOT #fbSwitch1.xOutPermSigOutSen3 THEN + // #fbSwitch1.xInOutEnq := FALSE; + // #nState := #c2400_StepCheckJam; + // ELSE + // #tmpReasonForStop := "Rsn_SubError"; // Fehler im SubTRO: Weiche + // END_IF; + // 2: + // IF NOT #fbSwitch1.stOutMainTro.xStatusIn AND + // #fbSwitch1.stOutMainTro.xStatusOut AND NOT #fbSwitch1.xOutPermSigOutSen4 THEN + // #fbSwitch1.xInOutEnq := FALSE; + // #nState := #c2400_StepCheckJam; + // ELSE + // #tmpReasonForStop := "Rsn_SubError"; // Fehler im SubTRO: Weiche + // END_IF; + // ELSE + // #tmpReasonForStop := "Rsn_GeneralError"; // Allgemeiner Fehler falls Direction irgendetwas anderes ist als 1 oder 2 + // #nState := #c2225_StepGetDir; // zurückgehen zu Get Direction + // END_CASE; + // END_REGION + + // #c2400_StepCheckJam: + // REGION 2400: Check Jam + // // akt. Zustand + // #sStateText := 'Check Jam'; + // ///////// Ausgänge ///////// + // ///////// Statics ////////// + // #xReleaseTrolleySep1 := FALSE; + // #nSetSwitch1 := #stActRequest.nDirection; + + // ///////// Timer ////////// + // //////// Transition //////// + // CASE #stActRequest.nDirection OF + // 1: //Ausgang 2 wird auf Stau geprüft + // IF (#stInOutJamExit2.Status.nCount = #stInOutJamExit2.Config.nCapacitySet) OR #stInSenJam2.xJam THEN //Stau vom nächsten MainTro wird gemeldet + // #tmpReasonForStop := "Rsn_JamNextError"; + // ELSIF #fbSwitch1.stOutMainTro.xJamAtExit3 THEN //Stau vom SubTro wird gemeldet + // #tmpReasonForStop := "Rsn_SubError"; + // ELSE + // #nState := #c2500_StepReleaseSep2; //ohne Stau nächster Schritt + // END_IF; + // 2: //Ausgang 3 wird auf Stau geprüft + // IF (#stInOutJamExit3.Status.nCount = #stInOutJamExit3.Config.nCapacitySet) OR #stInSenJam3.xJam THEN //Stau vom nächsten MainTro wird gemeldet + // #tmpReasonForStop := "Rsn_JamNextError"; + // ELSIF #fbSwitch1.stOutMainTro.xJamAtExit4 THEN //Stau vom SubTro wird gemeldet + // #tmpReasonForStop := "Rsn_SubError"; + // ELSE + // #nState := #c2500_StepReleaseSep2; //ohne Stau nächster Schritt + // END_IF; + // ELSE + // #tmpReasonForStop := "Rsn_GeneralError"; // Allgemeiner Fehler falls Direction irgendetwas anderes ist als 1 oder 2 + // #nState := #c2225_StepGetDir; // zurückgehen zu Get Direction + // END_CASE; + + // END_REGION + + // #c2500_StepReleaseSep2: + // REGION 2500: Leave, Switch confirmed + + // // aktueller Zustand + + // #sStateText := 'Leave Separator'; + + // ///////// Ausgänge ///////// + + // ///////// Statics ////////// + // // Freigabe an Separator, wenn alle Bedingungen erfüllt + // #xReleaseTrolleySep1 := #xInSftyOk AND + // #xCarouselRun AND + // NOT #xWrongDirDetect AND + // NOT #stActRequest.xLongSignal AND + // NOT #stInOutJamEntr1.Status.bByte.%X3 AND + + // (#stInPriorityManagerDir1.xReleaseOk AND #stActRequest.nDirection = 1 AND #stInSettings.xPrioDir1) + // OR (#stActRequest.nDirection = 1 AND NOT #stInSettings.xPrioDir1) + // OR (#stInPriorityManagerDir2.xReleaseOk AND #stActRequest.nDirection = 2 AND #stInSettings.xPrioDir2) + // OR (#stActRequest.nDirection = 2 AND NOT #stInSettings.xPrioDir2) + // OR (NOT #stInSettings.xPrioDir1 AND NOT #stInSettings.xPrioDir2) AND + + // (#stActRequest.nDirection = 1 OR #stActRequest.nDirection = 2); + + // #nSetSwitch1 := #stActRequest.nDirection; + // ///////// Timer ////////// + + // // Reason for Stop + + // // IF #stInMfr.xPause THEN + // // #tmpReasonForStop := "Rsn_MfrPausedTro"; + // // END_IF; + + // IF NOT #xCarouselRun THEN + // #tmpReasonForStop := "Rsn_CarouselError"; + // END_IF; + + // IF #xWrongDirDetect THEN + // #tmpReasonForStop := "Rsn_WrongDirection"; + // END_IF; + + // IF #stActRequest.xLongSignal THEN + // #tmpReasonForStop := "Rsn_LongSignalDetected"; + // END_IF; + + // //////// Transition //////// + + // CASE #stActRequest.nDirection OF + // 1, 2: + // IF #fbSeparator1.stOutMainTro.nStatus = "SepState_Finish" THEN // Separator meldet erfolgreiches Vereinzeln + // REGION NEU: Buchen 1->3 + // IF #stActRequest.nDirection = 1 THEN + // #stTempCarrier := #arInOutJamEntr1[1]; + + // "FC_Route"(xInSingle := FALSE, + // xInSeparate := FALSE, + // xInSepEdge := TRUE, + // xInSensor := FALSE, + // xInDelay := FALSE, + // stInCarrier := #stEmptyCarrier, + // stOutBookingInfo => #stBookingInfo, + // arJamEntr := #arInOutJamEntr1, + // arOnTheWay := #arEmptyCarrier, + // arJamExit := #arInOutJamExit2); + // #xBookedDir1 := TRUE; + // END_IF; + // END_REGION + + // REGION NEU: Buchen 1->4 + // IF #stActRequest.nDirection = 2 THEN + // #stTempCarrier := #arInOutJamEntr1[1]; + // "FC_Route"(xInSingle := FALSE, + // xInSeparate := FALSE, + // xInSepEdge := TRUE, + // xInSensor := FALSE, + // xInDelay := FALSE, + // stInCarrier := #stEmptyCarrier, + // stOutBookingInfo => #stBookingInfo, + // arJamEntr := #arInOutJamEntr1, + // arOnTheWay := #arEmptyCarrier, + // arJamExit := #arInOutJamExit3); + + // #xBookedDir2 := TRUE; + // END_IF; + // END_REGION + + + + // #nState := #c1000_StepWaitForTrolley1; // Nächster Schritt + // ELSIF #xReleaseTrolleySep1 AND #tOnSvReleaseSep1.Q THEN // Überwachungszeit nach Freigabe an Separator abgelaufen + // #tmpReasonForStop := "Rsn_SubError"; // Timeout-Fehler im Separator: Freigabe erteilt, aber Separator gibt keine Rückmeldung an MainTRO + // END_IF; + // ELSE + // #tmpReasonForStop := "Rsn_GeneralError"; // Allgemeiner Fehler + // #nState := #c2225_StepGetDir; + // END_CASE; + // END_REGION + // END_CASE; + + // END_REGION + + // REGION Beladekontrolle + // //Beladekontrolle aktiviert + // REGION Sep1 + // IF #stInSeparator1.Settings.xPluggedPart THEN + + // //Trolley beladen + // #xTrolleyWithPart1 := + // #stInSeparator1.Settings.xPluggedPart AND + // #stInSeparator1.stSenInSep.xDbncdSensor + // AND #stInSeparator1.stSenPart.xDirectSensor + // AND #stInSeparator1.stSenPart.tDirectChangeLast > #stInSettings.tPartSenHigh; + + // //Trolley nicht beladen + // #xTrolleyWoPart1 := + // #stInSeparator1.Settings.xPluggedPart AND + // #stInSeparator1.stSenInSep.xDbncdSensor AND + // #stInSeparator1.stSenInSep.tDirectChangeLast > #stInSettings.tInSenHigh AND + // NOT #stInSeparator1.stSenPart.xDirectSensor; + + // //Plausibel? + // IF #stInSeparator1.Settings.xPluggedPart AND ((#arInOutJamEntr1[1].bStatus.%X1 AND #xTrolleyWoPart1) OR + // (NOT #arInOutJamEntr1[1].bStatus.%X1 AND #xTrolleyWithPart1)) + // THEN + // #wErrorWord1.%X2 := TRUE; + // ELSE + // #wErrorWord1.%X2 := FALSE; + // END_IF; + // ELSE + // #xTrolleyWithPart1 := #xTrolleyWoPart1 := FALSE; // Beladekontrolle (Sensor) nicht verbaut + // END_IF; + // END_REGION + + // REGION Sep2 + // IF #stInSeparator2.Settings.xPluggedPart THEN + + // //Trolley beladen + // #xTrolleyWithPart2 := + // #stInSeparator2.Settings.xPluggedPart AND + // #stInSeparator2.stSenInSep.xDbncdSensor + // AND #stInSeparator2.stSenPart.xDirectSensor + // AND #stInSeparator2.stSenPart.tDirectChangeLast > #stInSettings.tPartSenHigh; + + // //Trolley nicht beladen + // #xTrolleyWoPart2 := + // #stInSeparator2.Settings.xPluggedPart AND + // #stInSeparator2.stSenInSep.xDbncdSensor AND + // #stInSeparator2.stSenInSep.tDirectChangeLast > #stInSettings.tInSenHigh AND + // NOT #stInSeparator2.stSenPart.xDirectSensor; + + // //Plausibel? + // IF #stInSeparator2.Settings.xPluggedPart AND ((#arInOutJamEntr2[1].bStatus.%X1 AND #xTrolleyWoPart2) OR + // (NOT #arInOutJamEntr2[1].bStatus.%X1 AND #xTrolleyWithPart2)) + // THEN + // #wErrorWord2.%X2 := TRUE; + // ELSE + // #wErrorWord2.%X2 := FALSE; + // END_IF; + // ELSE + // #xTrolleyWithPart2 := #xTrolleyWoPart2 := FALSE; // Beladekontrolle (Sensor) nicht verbaut + // END_IF; + // END_REGION + // END_REGION + + // REGION Dummy Handling + + // #nArrayMax1 := DINT_TO_INT(UPPER_BOUND(ARR := #arInOutJamEntr1, DIM := 1)); + // #nArrayMax2 := DINT_TO_INT(UPPER_BOUND(ARR := #arInOutJamEntr2, DIM := 1)); + + // REGION Dummy erstellen + // REGION Sep1 + // IF #stInSettings.xIsBorner1 THEN + // IF #nBarcodeEmpty1 > 1999 OR #nBarcodeEmpty1 < 1000 THEN + // #nBarcodeEmpty1 := 1000; + // ELSE + // IF #nState = 2500 AND #fbSeparator1.xOutTrolleyReleasedEdge THEN + // #nBarcodeEmpty1 += 1; + // END_IF; + // END_IF; + + // IF #fbSeparator1.stOutMainTro.xBtPresent AND + // #fbSeparator1.stOutMainTro.nStatus = "SepState_WaitForReq" AND + // #stInSeparator1.stSenInSep.tDirectChangeLast > #stInSettings.tDummyTimeBorner AND + // #arInOutJamEntr1[1] = #tmpCarrierEmpty + // THEN + // #arInOutJamEntr1[1].nBarcode := #nBarcodeEmpty1; + // #arInOutJamEntr1[1].bStatus.%X0 := TRUE; + // #arInOutJamEntr1[1].nDestination := #stInSettings.nBornerDest1; + // END_IF; + // ELSE + // IF #fbSeparator1.stOutMainTro.xBtPresent AND + // #fbSeparator1.stOutMainTro.nStatus = "SepState_WaitForReq" AND + // #stInSeparator1.stSenInSep.tDirectChangeLast > #stInSettings.tDummyTimeNormal AND //Unterscheidung bei Borner? + // #arInOutJamEntr1[1] = #tmpCarrierEmpty + // THEN + // #arInOutJamEntr1[1].nBarcode := #cCarrierDummy; + // #arInOutJamEntr1[1].bStatus.%X0 := TRUE; + // END_IF; + // END_IF; + // END_REGION + // REGION Sep2 + // IF #stInSettings.xIsBorner2 THEN + // IF #nBarcodeEmpty2 > 1999 OR #nBarcodeEmpty2 < 1000 THEN + // #nBarcodeEmpty2 := 1000; + // ELSE + // IF #nState = 2500 AND #fbSeparator2.xOutTrolleyReleasedEdge THEN + // #nBarcodeEmpty2 += 1; + // END_IF; + // END_IF; + + // IF #fbSeparator2.stOutMainTro.xBtPresent AND + // #fbSeparator2.stOutMainTro.nStatus = "SepState_WaitForReq" AND + // #stInSeparator2.stSenInSep.tDirectChangeLast > #stInSettings.tDummyTimeBorner AND + // #arInOutJamEntr2[1] = #tmpCarrierEmpty + // THEN + // #arInOutJamEntr2[1].nBarcode := #nBarcodeEmpty2; + // #arInOutJamEntr2[1].bStatus.%X0 := TRUE; + // #arInOutJamEntr2[1].nDestination := #stInSettings.nBornerDest2; + // END_IF; + // ELSE + // IF #fbSeparator2.stOutMainTro.xBtPresent AND + // #fbSeparator2.stOutMainTro.nStatus = "SepState_WaitForReq" AND + // #stInSeparator2.stSenInSep.tDirectChangeLast > #stInSettings.tDummyTimeNormal AND //Unterscheidung bei Borner? + // #arInOutJamEntr2[1] = #tmpCarrierEmpty + // THEN + // #arInOutJamEntr2[1].nBarcode := #cCarrierDummy; + // #arInOutJamEntr2[1].bStatus.%X0 := TRUE; + // END_IF; + // END_IF; + // END_REGION + + // END_REGION + + // REGION Dummy löschen + // REGION Sep1 + // IF #nArrayMax1 > 1 THEN //Staubereich mit Capacity > 0 + // IF (#arInOutJamEntr1[1] = #stCarrierDummy) //Dummy an erster Position + // AND #arInOutJamEntr1[2] = #tmpCarrierEmpty AND //Keine Daten an zweiter Position + // NOT #stInSeparator1.stSenInSep.xDirectSensor AND #stInSeparator1.stSenInSep.tDirectChangeLast > T#8s AND //keine Belegung + // #fbSeparator1.stOutMainTro.nStatus = "SepState_WaitForBt" AND #fbSeparator1.#fbStateManager.tOutTimeInStep > T#8s //Separator Zustand abfragen + // THEN + // #arInOutJamEntr1[1] := #tmpCarrierEmpty; //Dummy löschen + // ELSIF (#arInOutJamEntr1[1] = #stCarrierDummy) //Dasselbe wie oben aber mit nachrücken + // AND (#arInOutJamEntr1[2] = #stCarrierDummy OR #arInOutJamEntr1[2] <> #stCarrierDummy) AND + // NOT #stInSeparator1.stSenInSep.xDirectSensor AND #stInSeparator1.stSenInSep.tDirectChangeLast > T#8s AND + // #fbSeparator1.stOutMainTro.nStatus = "SepState_WaitForBt" AND #fbSeparator1.#fbStateManager.tOutTimeInStep > T#8s //Separator Zustand abfragen + // THEN + // #arInOutJamEntr1[1] := #tmpCarrierEmpty; + // "FC_TSHR_Shift"(xInShiftBack := TRUE, + // arTSHR := #arInOutJamEntr1); + // END_IF; + // ELSIF #nArrayMax1 = 1 THEN + // IF (#arInOutJamEntr1[1] = #stCarrierDummy) AND + // NOT #stInSeparator1.stSenInSep.xDirectSensor AND #stInSeparator1.stSenInSep.tDirectChangeLast > T#8s AND + // #fbSeparator1.stOutMainTro.nStatus = "SepState_WaitForBt" AND #fbSeparator1.#fbStateManager.tOutTimeInStep > T#8s //Separator Zustand abfragen + // THEN + // #arInOutJamEntr1[1] := #tmpCarrierEmpty; + // END_IF; + // END_IF; + // END_REGION + // REGION Sep2 + // IF #nArrayMax2 > 1 THEN //Staubereich mit Capacity > 0 + // IF (#arInOutJamEntr2[1] = #stCarrierDummy) //Dummy an erster Position + // AND #arInOutJamEntr2[2] = #tmpCarrierEmpty AND //Keine Daten an zweiter Position + // NOT #stInSeparator2.stSenInSep.xDirectSensor AND #stInSeparator2.stSenInSep.tDirectChangeLast > T#8s AND //keine Belegung + // #fbSeparator2.stOutMainTro.nStatus = "SepState_WaitForBt" AND #fbSeparator2.#fbStateManager.tOutTimeInStep > T#8s //Separator Zustand abfragen + // THEN + // #arInOutJamEntr2[1] := #tmpCarrierEmpty; //Dummy löschen + // ELSIF (#arInOutJamEntr2[1] = #stCarrierDummy) //Dasselbe wie oben aber mit nachrücken + // AND (#arInOutJamEntr2[2] = #stCarrierDummy OR #arInOutJamEntr2[2] <> #stCarrierDummy) AND + // NOT #stInSeparator2.stSenInSep.xDirectSensor AND #stInSeparator2.stSenInSep.tDirectChangeLast > T#8s AND + // #fbSeparator2.stOutMainTro.nStatus = "SepState_WaitForBt" AND #fbSeparator2.#fbStateManager.tOutTimeInStep > T#8s //Separator Zustand abfragen + // THEN + // #arInOutJamEntr2[1] := #tmpCarrierEmpty; + // "FC_TSHR_Shift"(xInShiftBack := TRUE, + // arTSHR := #arInOutJamEntr2); + // END_IF; + // ELSIF #nArrayMax2 = 1 THEN + // IF (#arInOutJamEntr2[1] = #stCarrierDummy) AND + // NOT #stInSeparator2.stSenInSep.xDirectSensor AND #stInSeparator2.stSenInSep.tDirectChangeLast > T#8s AND + // #fbSeparator2.stOutMainTro.nStatus = "SepState_WaitForBt" AND #fbSeparator2.#fbStateManager.tOutTimeInStep > T#8s //Separator Zustand abfragen + // THEN + // #arInOutJamEntr2[1] := #tmpCarrierEmpty; + // END_IF; + // END_IF; + // END_REGION + + // END_REGION + + // END_REGION + + // REGION Monitoring + + // REGION Carrier kommt nicht an / Daten ohne Belegung + // REGION Sep1 + // #tOnMonCarrArrive1(IN := #arInOutJamEntr1[1].bStatus.%X0 AND NOT #stInSeparator1.stSenInSep.xDirectSensor, + // PT := #stInSeparator1.Settings.tDelayToNextItem, + // Q => #wErrorWord1.%X10); //TODO + + // #fbMonitoringCarrNotArrive1.stSettings.nErrorType := 1; + // #fbMonitoringCarrNotArrive1.stSettings.xErrLedIfMachineIsOff := TRUE; + // #fbMonitoringCarrNotArrive1.stSettings.xSelfQuit := TRUE; + // #fbMonitoringCarrNotArrive1(wInTextListId_Function := 1000, + // sInPrefix := #stInOutHMI.UDT_Config.sName, + // wInTextListId_Message := 1000, + // sInSuffix := '', + // xInQuitError := #stInOutMachineState.xQuitError, + // xInSignal := NOT #wErrorWord1.%X10, + // sInAlarmMessage := 'Carrier kommt nicht am Separator 1 an', + // InOutMachineState := #stInOutMachineState); + // END_REGION + // REGION Sep2 + // #tOnMonCarrArrive2(IN := #arInOutJamEntr2[1].bStatus.%X0 AND NOT #stInSeparator2.stSenInSep.xDirectSensor, + // PT := #stInSeparator2.Settings.tDelayToNextItem, + // Q => #wErrorWord2.%X10); //TODO + + // #fbMonitoringCarrNotArrive2.stSettings.nErrorType := 1; + // #fbMonitoringCarrNotArrive2.stSettings.xErrLedIfMachineIsOff := TRUE; + // #fbMonitoringCarrNotArrive2.stSettings.xSelfQuit := TRUE; + // #fbMonitoringCarrNotArrive2(wInTextListId_Function := 1000, + // sInPrefix := #stInOutHMI.UDT_Config.sName, + // wInTextListId_Message := 1000, + // sInSuffix := '', + // xInQuitError := #stInOutMachineState.xQuitError, + // xInSignal := NOT #wErrorWord2.%X10, + // sInAlarmMessage := 'Carrier kommt nicht am Separator 2 an', + // InOutMachineState := #stInOutMachineState); + // END_REGION + + // END_REGION + + // REGION Carrier ohne Daten + + // REGION Sep1 + // IF #stInSeparator1.stSenInSep.xDbncdSensor AND #stInSeparator1.stSenInSep.tDirectChangeLast > T#5s AND NOT #arInOutJamEntr1[1].bStatus.%X0 THEN + // #wErrorWord1.%X5 := TRUE; + // ELSE + // #wErrorWord1.%X5 := FALSE; + // END_IF; + + // #fbMonitoringCarrWoData1.stSettings.nErrorType := 1; + // #fbMonitoringCarrWoData1.stSettings.xErrLedIfMachineIsOff := TRUE; + // #fbMonitoringCarrWoData1.stSettings.xSelfQuit := TRUE; + // #fbMonitoringCarrWoData1(wInTextListId_Function := 1000, + // sInPrefix := #stInOutHMI.UDT_Config.sName, + // wInTextListId_Message := 1001, + // sInSuffix := '', + // InOutMachineState := #stInOutMachineState, + // xInQuitError := #stInOutMachineState.xQuitError, + // xInSignal := NOT #wErrorWord1.%X5, + // sInAlarmMessage := 'Sep1-Belegung ohne Daten'); + // END_REGION + // REGION Sep2 + // IF #stInSeparator2.stSenInSep.xDbncdSensor AND #stInSeparator2.stSenInSep.tDirectChangeLast > T#5s AND NOT #arInOutJamEntr2[1].bStatus.%X0 THEN + // #wErrorWord2.%X5 := TRUE; + // ELSE + // #wErrorWord2.%X5 := FALSE; + // END_IF; + + // #fbMonitoringCarrWoData2.stSettings.nErrorType := 1; + // #fbMonitoringCarrWoData2.stSettings.xErrLedIfMachineIsOff := TRUE; + // #fbMonitoringCarrWoData2.stSettings.xSelfQuit := TRUE; + // #fbMonitoringCarrWoData2(wInTextListId_Function := 1000, + // sInPrefix := #stInOutHMI.UDT_Config.sName, + // wInTextListId_Message := 1001, + // sInSuffix := '', + // InOutMachineState := #stInOutMachineState, + // xInQuitError := #stInOutMachineState.xQuitError, + // xInSignal := NOT #wErrorWord2.%X5, + // sInAlarmMessage := 'Sep2-Belegung ohne Daten'); + // END_REGION + // END_REGION + + // END_REGION + + // REGION Timer - Überwachungszeit + + // #tOnSwitchDelay(IN := #xStartSwitchDelay, + // PT := T#5s); + + // #tOnSvReleaseSep1(IN := ((#nState = #c1500_StepReleaseSep1) OR (#nState = #c2500_StepReleaseSep2)) AND #xReleaseTrolleySep1, + // PT := T#3s); + + // #tOnSvReleaseSep2(IN := ((#nState = #c1500_StepReleaseSep1) OR (#nState = #c2500_StepReleaseSep2)) AND #xReleaseTrolleySep2, + // PT := T#3s); + + // END_REGION + + // REGION Haltegrund Schrittkette + + // #stActRequest.nReasonForStop := #tmpReasonForStop; //tmp aus Schrittkette übernehmen + + // END_REGION + + // REGION Motorüberwachung + + // IF (#nState >= #c1500_StepReleaseSep1) AND (#nState <= #c2500_StepReleaseSep2) AND #fbStateManager.tOutTimeInStep > T#4s AND NOT #xCarouselRun THEN + // #xErrorMotor := TRUE; + // ELSE + // #xErrorMotor := FALSE; + // END_IF; + + // END_REGION + + // REGION StateManager + + // #fbStateManager.stInSettings.nStartState := #c0100_StepUndefined; + // #fbStateManager.stInSettings.nStartStateTestMode := #c0000_StepOff; + // #fbStateManager.stInSettings.xActUnivTOn := TRUE; + // #fbStateManager.stInSettings.xRestartAtStartState := FALSE; + // #fbStateManager(xInFunctionEnabled := #stInOutMachineState.xRunning, + // xInReset := #stInOutHMI.UDT_Ctrl.xReset OR #xInCancel, + // xInRunUnivTOn := #tmpActUnivTon, + // xInTestMode := #xInTestMode, + // nInOutState := #nState); + // END_REGION + + // REGION Aufruf der Sub-TROs + + // REGION Separator 1 + // #fbSeparator1(xInReset := #stInOutHMI.UDT_Ctrl.xReset OR #xInCancel, + // xInErrQuit := #stInOutHMI.UDT_Ctrl.xErrorQuit, + // stInOutMainState := #stInOutMachineState, + // stInSettings := #stInSeparator1.Settings, + // xInConveyorRun := #xCarouselRun, + // stInTrolley := #stInSeparator1.stSenInSep, + // xInReceiveReady := #xReleaseTrolleySep1, + // stInOutHMI := #stInOutHMI.UDT_Separator1, + // stInOutCarrDataInJam := #arInOutJamEntr1); + + // #stInOutHMI.UDT_Separator1.stStatus.xNullBt := #stInOutHMI.UDT_Ctrl.xPause; + // #stInOutHMI.UDT_Separator2.stStatus.xNullBt := #stInOutHMI.UDT_Ctrl.xPause; + // END_REGION + + // REGION Separator 2 + // #fbSeparator2(xInReset := #stInOutHMI.UDT_Ctrl.xReset OR #xInCancel, + // xInErrQuit := #stInOutHMI.UDT_Ctrl.xErrorQuit, + // stInOutMainState := #stInOutMachineState, + // stInSettings := #stInSeparator2.Settings, + // xInConveyorRun := #xCarouselRun, + // stInTrolley := #stInSeparator2.stSenInSep, + // xInReceiveReady := #xReleaseTrolleySep2, + // stInOutHMI := #stInOutHMI.UDT_Separator2, + // stInOutCarrDataInJam := #arInOutJamEntr2); + + // #stInOutHMI.UDT_Separator1.stStatus.xNullBt := #stInOutHMI.UDT_Ctrl.xPause; + // #stInOutHMI.UDT_Separator2.stStatus.xNullBt := #stInOutHMI.UDT_Ctrl.xPause; + // END_REGION + + // REGION Switch 1 + // #fbSwitch1(stInSettings := #stInSwitch1.Settings, + // stInSenExit3 := #stInSwitch1.stSenExit3, + // stInSenExit4 := #stInSwitch1.stSenExit4, + // nInMainTroNo := #nInMainTroNo, + // nInSetSwitch := #nSetSwitch1, + // nInSwitchNo := 0, + // xInErrorQuit := "cTodoFalse", + // xInSftyOk := #xInSftyOk, + // xInAllRdyToStart := #xInAllRdyToStart, + // xInCarouselRun := #xCarouselRun, + // xInCancel := #stInOutHMI.UDT_Ctrl.xReset OR #xInCancel, + // xInReqFinished := #tmpReqFinished, + // xOutSwEntrTo1 => #xOutSw1EntrTo1, + // xOutSwEntrTo2 => #xOutSw1EntrTo2, + // xOutSwExTo3 => #xOutSw1ExTo3, + // xOutSwExTo4 => #xOutSw1ExTo4, + // stInOutMachineState := #stInOutMachineState, + // stInOutHMI := #stInOutHMI.UDT_Switch1); + // END_REGION ; + + // REGION Barcode Reader 1 + // #fbBarcodeReader1(stInSettings := #stInBarcodeReader1.Settings, + // xInHWError := false, // todo + // xInStartReading := #xStartScan, + // xInHandshakeDone := #xHandshakeScan, + // stInOutInterface := #stInOutCognexInterface1, + // stInOutControlUnitCabinet := #stInOutMachineState, + // stInOutHMI := #stInOutHMI.UDT_BarcodeReader1); + // END_REGION + + // REGION Barcode Reader 2 + // #fbBarcodeReader2(stInSettings := #stInBarcodeReader2.Settings, + // xInHWError := false, // todo + // xInStartReading := #xStartScan, + // xInHandshakeDone := #xHandshakeScan, + // stInOutInterface := #stInOutCognexInterface2, + // stInOutControlUnitCabinet := #stInOutMachineState, + // stInOutHMI := #stInOutHMI.UDT_BarcodeReader2); + // END_REGION + // END_REGION + + // REGION BT und NBT zählen + + // #stActRequest.nActNoInSwitch := #fbSwitch1.stOutMainTro.nFifoElementCount; + + // END_REGION + + // REGION Long-Signale von Switch verarbeiten + + // (* //Switch gibt LongSignal aus und hier wird es für MainTRO gemerkt + // IF (#stActRequest.nDirection = 1 AND #fbSwitch1.stOutMainTro.xSen3Long) OR + // (#stActRequest.nDirection = 2 AND #fbSwitch1.stOutMainTro.xSen4Long) THEN + // #stActRequest.xLongSignal := TRUE; + // ELSIF #fbSwitch1.stOutMainTro.xFifoEmpty THEN + // #stActRequest.xLongSignal := FALSE; + // END_IF; + // + // #tOnLongSignal(IN := #stActRequest.xLongSignal, //Extra Timer für Long-Signal um nach dieser Zeit einen einzelnen BT der noch im Switch ist zu quittieren + // PT := #stInSwitch1.Settings.tSenWaitAfterLong); //"TimeLongSignalQuitMax" + // + // #fbSwitch1.xInDeqExternal := //Dequeue wird hier an Switch weitergegeben falls (nachdem Sep gesperrt wurde) nur noch ein einzelenr BT vermisst wird nach LongSignal + // NOT #fbSwitch1.xOutBtLeftSwitchWrongDir AND + // ((#nSetSwitch1 = 1 OR #nSetSwitch1 = 2 OR #nSetSwitch1 = 3 OR #nSetSwitch1 = 4) AND #stActRequest.xLongSignal AND #tOnLongSignal.Q AND #stActRequest.nActNoInSwitch = 1); + // + // + // IF #stActRequest.xLongSignal AND #tOnLongSignal.Q AND #stActRequest.nActNoInSwitch > 1 THEN //Falls nach LongSignal mehrere BT vermisst werden, werden die entsprechenden FIFO-Indizes an MFR als Missing ausgegeben + // #nIndex := 1; + // WHILE #nIndex <= 6 DO + // IF #fbSwitch1.arOutFifo[#nIndex] > 0 AND #fbSwitch1.arOutFifo[#nIndex] <= 6 THEN + // #arReq[#nIndex].xMissingBT := TRUE; + // ELSIF #fbSwitch1.arOutFifo[#nIndex] = 0 THEN + // #arReq[#nIndex].xMissingBT := FALSE; + // END_IF; + // #nIndex += 1; + // END_WHILE; + // ELSE //Wenn FIFO leer z.B. wegen Cancel, dann verschwinden hier die Missing Bits + // #arReq[1].xMissingBT := FALSE; + // #arReq[2].xMissingBT := FALSE; + // #arReq[3].xMissingBT := FALSE; + // #arReq[4].xMissingBT := FALSE; + // #arReq[5].xMissingBT := FALSE; + // #arReq[6].xMissingBT := FALSE; + // END_IF; *) + + // END_REGION + + // REGION WrongDirection Handling + + // (* IF #fbSwitch1.xOutBtLeftSwitchWrongDir THEN + // #xWrongDirDetect := TRUE; + // ELSIF #fbSwitch1.stOutMainTro.xFifoEmpty OR #stActRequest.xCancelled THEN + // #xWrongDirDetect := FALSE; + // END_IF; + // + // IF #xWrongDirDetect THEN + // #nIndex := 1; + // WHILE #nIndex <= 6 DO + // IF #fbSwitch1.arOutFifo[#nIndex] > 0 AND #fbSwitch1.arOutFifo[#nIndex] <= 6 THEN + // #arReq[#fbSwitch1.arOutFifo[#nIndex]].xWrongDirection := TRUE; + // ELSE + // #nIndex += 1; + // END_IF; + // #nIndex += 1; + // END_WHILE; + // ELSE + // #arReq[1].xWrongDirection := FALSE; + // #arReq[2].xWrongDirection := FALSE; + // #arReq[3].xWrongDirection := FALSE; + // #arReq[4].xWrongDirection := FALSE; + // #arReq[5].xWrongDirection := FALSE; + // #arReq[6].xWrongDirection := FALSE; + // END_IF; *) + + // END_REGION + + // REGION HMI + // #stInOutHMI.UDT_Config.nTroType := 4; //1Sep + + // #stInOutHMI.UDT_State.nState := #nState; + // #stInOutHMI.UDT_State.sState := #sStateText; + + // #stInOutHMI.UDT_State.xError := // Error TRO -> + // #fbSeparator1.wOutErrorWord > 0 OR // Error Separator + // #stInOutHMI.UDT_Separator1.stStatus.bStatus = 2 OR //Error Separator + // #wErrorWord1.%X5 OR //Belegung ohne Daten + // #wErrorWord1.%X10 OR // Carrier kommt nicht an + // #stInOutHMI.UDT_BarcodeReader1.bStatus = 2 OR //Error Reader + + // #fbSeparator2.wOutErrorWord > 0 OR // Error Separator + // #stInOutHMI.UDT_Separator2.stStatus.bStatus = 2 OR //Error Separator + // #wErrorWord2.%X5 OR //Belegung ohne Daten + // #wErrorWord2.%X10 OR // Carrier kommt nicht an + // #stInOutHMI.UDT_BarcodeReader2.bStatus = 2; //Error Reader + // //Switch... + // END_REGION + + // REGION Ausgänge schreiben + + // REGION Output + // #xOutCorrection := #xTmpCorrection; + // #xOutBookedDir1 := #xBookedDir1; + // #xOutBookedDir2 := #xBookedDir2; + // #xOutBookedDir3 := #xBookedDir3; + // #xOutBookedDir4 := #xBookedDir4; + // #stOutLastCarrier := #stTempCarrier; + + // #xOutStopper1 := #fbSeparator1.xOutStopper; + // #xOutStopper2 := #fbSeparator2.xOutStopper; + // #xOutSw1EntrTo1 := #fbSwitch1.xOutSwEntrTo1; + // #xOutSw1EntrTo2 := #fbSwitch1.xOutSwEntrTo2; + // #xOutSw1ExTo3 := #fbSwitch1.xOutSwExTo3; + // #xOutSw1ExTo4 := #fbSwitch1.#xOutSwExTo4; + // #xOutJamAtEntry1 := #fbSeparator1.stOutMainTro.xJamAtEntry; + // #xOutJamAtEntry2 := #fbSeparator2.stOutMainTro.xJamAtEntry; + // #xOutCarouselReq1 := (#nState >= #c1500_StepReleaseSep1) AND (#nState <= #c2500_StepReleaseSep2) AND NOT #stInOutHMI.UDT_Ctrl.xPause AND NOT #xInAreaStopActive; + // #xOutCarouselReq2 := #xOutCarouselReq1 AND + // ((#stInSettings.xCar2NecLeft AND (#stActRequest.nDirection = 1 OR #stActRequest.nDirection = 3)) OR + // (#stInSettings.xCar2NecRight AND (#stActRequest.nDirection = 2 OR #stActRequest.nDirection = 4))); + // END_REGION + + // END_REGION + + // REGION Letzten Schritt wegschreiben + // #nOutStateLast := #fbStateManager.nStateLast; + // END_REGION + + // REGION Priority Manager + // #stOutPriorityManagerDir1.nTroId := #nInMainTroNo; + // #stOutPriorityManagerDir1.stJamExit := #stInOutJamExit2; + // // #stOutPriorityManagerDir1.stJamEntry := ; todo + // #stOutPriorityManagerDir1.stSensor := #stInSeparator1.stSenInSep; + // #stOutPriorityManagerDir1.xMovement := #xInCarouselRun1 AND #xInCarouselRun2; + // //#stOutPriorityManagerDir1.xTrolleyPresent := ; // todo für mengengesteuert + + // #stOutPriorityManagerDir2.nTroId := #nInMainTroNo; + // #stOutPriorityManagerDir2.stJamExit := #stInOutJamExit3; + // // #stOutPriorityManagerDir2.stJamEntry := ; todo + // #stOutPriorityManagerDir2.stSensor := #stInSeparator1.stSenInSep; + // #stOutPriorityManagerDir2.xMovement := #xInCarouselRun1 AND #xInCarouselRun2; + // //#stOutPriorityManagerDir2.xTrolleyPresent := ; // todo für mengengesteuert + + // #stOutPriorityManagerDir3.nTroId := #nInMainTroNo; + // #stOutPriorityManagerDir3.stJamExit := #stInOutJamExit2; + // // #stOutPriorityManagerDir3.stJamEntry := ; todo + // #stOutPriorityManagerDir3.stSensor := #stInSeparator2.stSenInSep; + // #stOutPriorityManagerDir3.xMovement := #xInCarouselRun1 AND #xInCarouselRun2; + // //#stOutPriorityManagerDir3.xTrolleyPresent := ; // todo für mengengesteuert + + // #stOutPriorityManagerDir4.nTroId := #nInMainTroNo; + // #stOutPriorityManagerDir4.stJamExit := #stInOutJamExit3; + // // #stOutPriorityManagerDir4.stJamEntry := ; todo + // #stOutPriorityManagerDir4.stSensor := #stInSeparator2.stSenInSep; + // #stOutPriorityManagerDir4.xMovement := #xInCarouselRun1 AND #xInCarouselRun2; + // //#stOutPriorityManagerDir4.xTrolleyPresent := ; // todo für mengengesteuert + + // IF #stInSettings.xPrioDir1 THEN + // #stOutPriorityManagerDir1.xTransportReq := (#stActRequest.nDirection = 1) AND #nState = #c2500_StepReleaseSep2; + // END_IF; + + // IF #stInSettings.xPrioDir2 THEN + // #stOutPriorityManagerDir2.xTransportReq := (#stActRequest.nDirection = 2) AND #nState = #c2500_StepReleaseSep2; + // END_IF; + + // IF #stInSettings.xPrioDir3 THEN + // #stOutPriorityManagerDir3.xTransportReq := (#stActRequest.nDirection = 3) AND #nState = #c2500_StepReleaseSep2; + // END_IF; + + // IF #stInSettings.xPrioDir4 THEN + // #stOutPriorityManagerDir4.xTransportReq := (#stActRequest.nDirection = 4) AND #nState = #c2500_StepReleaseSep2; + // END_IF; + // END_REGION +END_FUNCTION_BLOCK + diff --git a/=A01+UH01-KF00/Programmbausteine/2_ILSLib/FB/MTRO/FB_ILS_MTRO_Vario.liblink b/=A01+UH01-KF00/Programmbausteine/2_ILSLib/FB/MTRO/FB_ILS_MTRO_Vario.liblink new file mode 100644 index 0000000..5ec05c8 --- /dev/null +++ b/=A01+UH01-KF00/Programmbausteine/2_ILSLib/FB/MTRO/FB_ILS_MTRO_Vario.liblink @@ -0,0 +1,2 @@ +TypeGuid: 901da2f1-dd37-4f9f-ad1c-457a2942dfb5 +VersionGuid: ef1f567e-60c2-46dd-a938-0b4684fbae6e diff --git a/=A01+UH01-KF00/Programmbausteine/2_ILSLib/FB/STRO/FB_ILS_STRO_Sep.liblink b/=A01+UH01-KF00/Programmbausteine/2_ILSLib/FB/STRO/FB_ILS_STRO_Sep.liblink new file mode 100644 index 0000000..16aecb3 --- /dev/null +++ b/=A01+UH01-KF00/Programmbausteine/2_ILSLib/FB/STRO/FB_ILS_STRO_Sep.liblink @@ -0,0 +1,2 @@ +TypeGuid: d73846b1-6cd6-414c-ac23-6600e2c98ae1 +VersionGuid: 456c4cee-f3c8-4642-aa97-cf33a9152512 diff --git a/=A01+UH01-KF00/Programmbausteine/2_ILSLib/FB/STRO/FB_ILS_STRO_Switch.liblink b/=A01+UH01-KF00/Programmbausteine/2_ILSLib/FB/STRO/FB_ILS_STRO_Switch.liblink new file mode 100644 index 0000000..313afcb --- /dev/null +++ b/=A01+UH01-KF00/Programmbausteine/2_ILSLib/FB/STRO/FB_ILS_STRO_Switch.liblink @@ -0,0 +1,2 @@ +TypeGuid: 2b644f30-a3a6-4abb-8b59-ef341fedf9f8 +VersionGuid: 91175451-8c0e-4789-b302-fd2c134e9d15 diff --git a/=A01+UH01-KF00/Programmbausteine/2_ILSLib/FB/STRO/FB_ILS_STRO_Vario.liblink b/=A01+UH01-KF00/Programmbausteine/2_ILSLib/FB/STRO/FB_ILS_STRO_Vario.liblink new file mode 100644 index 0000000..aab496b --- /dev/null +++ b/=A01+UH01-KF00/Programmbausteine/2_ILSLib/FB/STRO/FB_ILS_STRO_Vario.liblink @@ -0,0 +1,2 @@ +TypeGuid: fdb28b91-85cc-4257-9a7f-4ee21454e413 +VersionGuid: 2497d8a1-ceea-4dac-b905-551eed5082d8 diff --git a/=A01+UH01-KF00/Programmbausteine/2_ILSLib/FB/STRO/FB_StationUnloadPin.liblink b/=A01+UH01-KF00/Programmbausteine/2_ILSLib/FB/STRO/FB_StationUnloadPin.liblink new file mode 100644 index 0000000..4f46129 --- /dev/null +++ b/=A01+UH01-KF00/Programmbausteine/2_ILSLib/FB/STRO/FB_StationUnloadPin.liblink @@ -0,0 +1,2 @@ +TypeGuid: 3d0c7919-902b-47bd-98b6-b1baea1057d3 +VersionGuid: 3af372a4-e06c-4b34-9436-a82db4db70d2 diff --git a/=A01+UH01-KF00/Programmbausteine/2_ILSLib/FB/STRO/FB_SupervisionRasterSensor.liblink b/=A01+UH01-KF00/Programmbausteine/2_ILSLib/FB/STRO/FB_SupervisionRasterSensor.liblink new file mode 100644 index 0000000..33ab225 --- /dev/null +++ b/=A01+UH01-KF00/Programmbausteine/2_ILSLib/FB/STRO/FB_SupervisionRasterSensor.liblink @@ -0,0 +1,2 @@ +TypeGuid: b2b7bae2-df01-45c1-b728-4f21f6dccf2b +VersionGuid: 3b4a840b-d014-4f13-8b4b-a11a10747b6c diff --git a/=A01+UH01-KF00/Programmbausteine/2_ILSLib/FC/FC_Route.liblink b/=A01+UH01-KF00/Programmbausteine/2_ILSLib/FC/FC_Route.liblink new file mode 100644 index 0000000..3295141 --- /dev/null +++ b/=A01+UH01-KF00/Programmbausteine/2_ILSLib/FC/FC_Route.liblink @@ -0,0 +1,2 @@ +TypeGuid: 487f8a43-4b39-46f6-a1db-76a1b3e0f176 +VersionGuid: a5ef1d68-80ec-445d-a745-78efb8a2a107 diff --git a/=A01+UH01-KF00/Programmbausteine/2_ILSLib/FC/FC_SHR_ExtractedHangerPin.liblink b/=A01+UH01-KF00/Programmbausteine/2_ILSLib/FC/FC_SHR_ExtractedHangerPin.liblink new file mode 100644 index 0000000..c7107d7 --- /dev/null +++ b/=A01+UH01-KF00/Programmbausteine/2_ILSLib/FC/FC_SHR_ExtractedHangerPin.liblink @@ -0,0 +1,2 @@ +TypeGuid: c15aaa61-01ed-4442-82db-06b58abeebb9 +VersionGuid: 94bbd898-ab59-4c22-a0ee-320804d0387a diff --git a/=A01+UH01-KF00/Programmbausteine/2_ILSLib/FC/FC_SHR_TargetSet_ReRoutePin.liblink b/=A01+UH01-KF00/Programmbausteine/2_ILSLib/FC/FC_SHR_TargetSet_ReRoutePin.liblink new file mode 100644 index 0000000..74219b5 --- /dev/null +++ b/=A01+UH01-KF00/Programmbausteine/2_ILSLib/FC/FC_SHR_TargetSet_ReRoutePin.liblink @@ -0,0 +1,2 @@ +TypeGuid: bb985cb7-f19e-4e7f-9500-9a5edcac2865 +VersionGuid: 10277776-2258-4ebc-81af-1e451bc796cc diff --git a/=A01+UH01-KF00/Programmbausteine/2_ILSLib/FC/FC_TSHR_AddAtEnd.liblink b/=A01+UH01-KF00/Programmbausteine/2_ILSLib/FC/FC_TSHR_AddAtEnd.liblink new file mode 100644 index 0000000..58b9557 --- /dev/null +++ b/=A01+UH01-KF00/Programmbausteine/2_ILSLib/FC/FC_TSHR_AddAtEnd.liblink @@ -0,0 +1,2 @@ +TypeGuid: 7fd3f712-0c70-464a-a178-3c0e9f56e7fd +VersionGuid: 42d9ac8f-436d-47fd-ad7b-f96d7f788df8 diff --git a/=A01+UH01-KF00/Programmbausteine/2_ILSLib/FC/FC_TSHR_Shift.liblink b/=A01+UH01-KF00/Programmbausteine/2_ILSLib/FC/FC_TSHR_Shift.liblink new file mode 100644 index 0000000..bb97f88 --- /dev/null +++ b/=A01+UH01-KF00/Programmbausteine/2_ILSLib/FC/FC_TSHR_Shift.liblink @@ -0,0 +1,2 @@ +TypeGuid: d80e8fca-e961-4f74-921c-a6b0d72f1eac +VersionGuid: f6d0468d-7b77-4edd-9872-9c45f88f2433 diff --git a/=A01+UH01-KF00/Programmbausteine/2_ILSLib/FC/FC_Uint2TroString_1.liblink b/=A01+UH01-KF00/Programmbausteine/2_ILSLib/FC/FC_Uint2TroString_1.liblink new file mode 100644 index 0000000..f673b3e --- /dev/null +++ b/=A01+UH01-KF00/Programmbausteine/2_ILSLib/FC/FC_Uint2TroString_1.liblink @@ -0,0 +1,2 @@ +TypeGuid: 080fec55-3e2f-4dd7-a4ef-294c5113ff9e +VersionGuid: 87ef5917-e524-4be6-9c25-711f27819aa2 diff --git a/=A01+UH01-KF00/Programmbausteine/2_ILSLib/FC/FC_usint2String_1.liblink b/=A01+UH01-KF00/Programmbausteine/2_ILSLib/FC/FC_usint2String_1.liblink new file mode 100644 index 0000000..06c015c --- /dev/null +++ b/=A01+UH01-KF00/Programmbausteine/2_ILSLib/FC/FC_usint2String_1.liblink @@ -0,0 +1,2 @@ +TypeGuid: 170b53d4-41f2-4a63-95d5-f1d211def922 +VersionGuid: f6da1f27-73cc-44c0-b509-a32a5cc418eb diff --git a/=A01+UH01-KF00/Programmbausteine/400_BasicFunctions/FC/FC_Int2String.scl b/=A01+UH01-KF00/Programmbausteine/400_BasicFunctions/FC/FC_Int2String.scl new file mode 100644 index 0000000..9c106e8 --- /dev/null +++ b/=A01+UH01-KF00/Programmbausteine/400_BasicFunctions/FC/FC_Int2String.scl @@ -0,0 +1,25 @@ +FUNCTION "FC_Int2String" : String +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + VAR_INPUT + nInNumber : Int; + END_VAR + + VAR_TEMP + sTmp : String; + END_VAR + + +BEGIN + // Funktion wandelt Int zu String. Im Gegensatz zu "Int_To_String" wird das "+" entfernt. Bei negativen Zahlen bleibt das "-" erhalten. + // Autor: Christian Forkl + // 28.07.2021 + + #sTmp := INT_TO_STRING(#nInNumber); + IF #nInNumber >= 0 THEN + #FC_Int2String := RIGHT(IN := #sTmp, L := (LEN(#sTmp) - 1)); + ELSE + #FC_Int2String := #sTmp; + END_IF; +END_FUNCTION + diff --git a/=A01+UH01-KF00/Programmbausteine/400_BasicFunctions/FC/FC_Jam.scl b/=A01+UH01-KF00/Programmbausteine/400_BasicFunctions/FC/FC_Jam.scl new file mode 100644 index 0000000..8e44a38 --- /dev/null +++ b/=A01+UH01-KF00/Programmbausteine/400_BasicFunctions/FC/FC_Jam.scl @@ -0,0 +1,85 @@ +FUNCTION "FC_Jam" : Void +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + VAR_OUTPUT + stOutCarrierStatsStandard : "CarrierStatisticsStandard"; + END_VAR + + VAR_IN_OUT + arInOutJamCarrier : Array[*] of "stCarrier"; + stInOutData : "stJamData"; + END_VAR + + VAR_TEMP + nIdx : Int; + nArrayMax : Int; + END_VAR + + VAR CONSTANT + cDummy : USInt := 1; + END_VAR + + +BEGIN + //Prüft Einstellwert + IF (#stInOutData.Config.nCapacitySet > #stInOutData.Config.nCapacityMax) OR (#stInOutData.Config.nCapacitySet <= 0) THEN + #stInOutData.Config.nCapacitySet := #stInOutData.Config.nCapacityMax; + END_IF; + + //Init + #stOutCarrierStatsStandard.nEmptyCarrier := 0; + #stOutCarrierStatsStandard.nLoadedCarrier := 0; + #stOutCarrierStatsStandard.nDummyCarrier := 0; + + //Ermittelt den Status/Füllstand des Staubereichs + #nArrayMax := DINT_TO_INT(UPPER_BOUND(ARR := #arInOutJamCarrier, DIM := 1)); + + IF NOT #arInOutJamCarrier[1].bStatus.%X0 THEN //Wenn 1. Teil leer, dann muss Schleife nicht ausgeführt werden + #stInOutData.Status.nCount := 0; + #stInOutData.Status.bByte.%X0 := TRUE; + + //Statistik - Jam ist leer + #stOutCarrierStatsStandard.nEmptyCarrier := 0; + #stOutCarrierStatsStandard.nLoadedCarrier := 0; + #stOutCarrierStatsStandard.nDummyCarrier := 0; + + //****Für Statistics muss dies auskommentiert werden + // ELSIF #arInOutJamCarrier[#nArrayMax].xOnline THEN //Wenn letztes Teil belegt, dann muss Schleife nicht ausgeführt werden + // #stInOutData.Status.nCount := #nArrayMax; + // #stInOutData.Status.xEmpty := FALSE; + //***** + + ELSE + FOR #nIdx := 1 TO #nArrayMax DO + //Statistics - nur wenn etwas vorhanden, ansonsten nicht machen + IF #arInOutJamCarrier[#nIdx].nBarcode <> 0 THEN + //Statistics Standard + IF #arInOutJamCarrier[#nIdx].bStatus.%X0 AND NOT #arInOutJamCarrier[#nIdx].bStatus.%X1 AND #arInOutJamCarrier[#nIdx].nBarcode <> #cDummy THEN + #stOutCarrierStatsStandard.nEmptyCarrier += 1; + END_IF; + + IF #arInOutJamCarrier[#nIdx].bStatus.%X0 AND #arInOutJamCarrier[#nIdx].bStatus.%X1 AND #arInOutJamCarrier[#nIdx].nBarcode <> #cDummy THEN + #stOutCarrierStatsStandard.nLoadedCarrier += 1; + END_IF; + + IF #arInOutJamCarrier[#nIdx].bStatus.%X0 AND #arInOutJamCarrier[#nIdx].nBarcode = #cDummy THEN + #stOutCarrierStatsStandard.nDummyCarrier += 1; + END_IF; + END_IF; + + IF #arInOutJamCarrier[#nIdx].nBarcode = 0 THEN //Zählt nicht die Teile sondern merkt sich die Positionen wo ein Teil vorhanden ist (minus 1) + #stInOutData.Status.nCount := INT_TO_UINT(#nIdx - 1); + #stInOutData.Status.bByte.%X0 := FALSE; + EXIT; + //****Für Statistics würde dies benötigt werden + ELSIF #nIdx = #nArrayMax THEN + #stInOutData.Status.nCount := INT_TO_UINT(#nArrayMax); + #stInOutData.Status.bByte.%X0 := FALSE; + EXIT; + //****** + END_IF; + END_FOR; + END_IF; + +END_FUNCTION + diff --git a/=A01+UH01-KF00/Programmbausteine/400_BasicFunctions/FC/FC_StorageLines.scl b/=A01+UH01-KF00/Programmbausteine/400_BasicFunctions/FC/FC_StorageLines.scl new file mode 100644 index 0000000..d4baac3 --- /dev/null +++ b/=A01+UH01-KF00/Programmbausteine/400_BasicFunctions/FC/FC_StorageLines.scl @@ -0,0 +1,137 @@ +FUNCTION "FC_StorageLines" : Void +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + VAR_INPUT + nInDest : Int; // allgemeine Destination für diese Section + END_VAR + + VAR_OUTPUT + nOutStorageLevel : Int; // Gesamt-Füllstand + stOutCarrStats : "CarrierStatisticsStore"; + END_VAR + + VAR_IN_OUT + arInOutStorage : Array[*] of "stStorageLine"; + END_VAR + + VAR_TEMP + nIdx1 : Int; + nIdx2 : Int; + nArrayMax : Int; + nDestMin : Int; // Ziele kleiner gehören raus + nDestMax : Int; // Ziele größer gehören raus + END_VAR + + VAR CONSTANT + cDummy : USInt := 1; + END_VAR + + +BEGIN + //Durchsucht die Lagerlinien um den Status/Füllstand zu ermitteln und gibt dabei Statistikwerte aus + + #stOutCarrStats.nEmptyCarrier := 0; + #stOutCarrStats.nDummy := 0; + #stOutCarrStats.stRdyToLeave.nCount := 0; + + REGION Arraygrenze ermitteln + #nArrayMax := DINT_TO_USINT(UPPER_BOUND(ARR := #arInOutStorage, DIM := 1)); // get array size + #nDestMin := #nInDest; + #nDestMax := #nInDest + #nArrayMax; + END_REGION + + REGION Lager durchsuchen + FOR #nIdx1 := 1 TO #nArrayMax DO + //Prüft Einstellwert + IF (#arInOutStorage[#nIdx1].stData.Config.nCapacitySet > #arInOutStorage[#nIdx1].stData.Config.nCapacityMax) OR (#arInOutStorage[#nIdx1].stData.Config.nCapacitySet <= 0) THEN + #arInOutStorage[#nIdx1].stData.Config.nCapacitySet := #arInOutStorage[#nIdx1].stData.Config.nCapacityMax; + END_IF; + FOR #nIdx2 := 1 TO "cNoPositions" DO + IF #nIdx2 = "cNoPositions" THEN + REGION Linienende erreicht + IF #arInOutStorage[#nIdx1].arCarrier[#nIdx2].nBarcode <> 0 THEN //Zählt nicht die Teile sondern merkt sich die Positionen wo ein Teil vorhanden ist + #arInOutStorage[#nIdx1].stData.Status.nCount := #nIdx2; + #arInOutStorage[#nIdx1].stData.Status.bByte.%X0 := FALSE; + REGION Werte für Statistik ermitteln + IF NOT #arInOutStorage[#nIdx1].arCarrier[#nIdx2].bStatus.%X1 AND #arInOutStorage[#nIdx1].arCarrier[#nIdx2].nBarcode <> #cDummy THEN + #stOutCarrStats.nEmptyCarrier += 1; + END_IF; + IF #arInOutStorage[#nIdx1].arCarrier[#nIdx2].nBarcode = #cDummy THEN + #stOutCarrStats.nDummy += 1; + END_IF; + IF #arInOutStorage[#nIdx1].arCarrier[#nIdx2].nDestination < #nDestMin OR #arInOutStorage[#nIdx1].arCarrier[#nIdx2].nDestination > #nDestMax THEN + #stOutCarrStats.stRdyToLeave.nCount += 1; + #stOutCarrStats.stRdyToLeave.nLine := #nIdx1; + #stOutCarrStats.stRdyToLeave.nPos := #nIdx2; + END_IF; + END_REGION + EXIT; + ELSIF #arInOutStorage[#nIdx1].arCarrier[#nIdx2].nBarcode = 0 THEN //Verlässt Schleife nach letztem gefundenen Teil um nicht die Schleife für leere Plätze auszuführen + REGION Leer + #arInOutStorage[#nIdx1].stData.Status.nCount := 0; + #arInOutStorage[#nIdx1].stData.Status.bByte.%X0 := TRUE; + EXIT; + END_REGION + + END_IF; + END_REGION + ELSIF #nIdx2 < "cNoPositions" THEN + IF (#arInOutStorage[#nIdx1].arCarrier[#nIdx2].nBarcode <> 0 AND #arInOutStorage[#nIdx1].arCarrier[#nIdx2 + 1].nBarcode = 0) THEN //Zählt nicht die Teile sondern merkt sich die Positionen wo ein Teil vorhanden ist + REGION Letzter Carrier erreicht + #arInOutStorage[#nIdx1].stData.Status.nCount := #nIdx2; + #arInOutStorage[#nIdx1].stData.Status.bByte.%X0 := FALSE; + REGION Werte für Statistik ermitteln + IF NOT #arInOutStorage[#nIdx1].arCarrier[#nIdx2].bStatus.%X1 AND #arInOutStorage[#nIdx1].arCarrier[#nIdx2].nBarcode <> #cDummy THEN + #stOutCarrStats.nEmptyCarrier += 1; + END_IF; + IF #arInOutStorage[#nIdx1].arCarrier[#nIdx2].nBarcode = #cDummy THEN + #stOutCarrStats.nDummy += 1; + END_IF; + IF #arInOutStorage[#nIdx1].arCarrier[#nIdx2].nDestination < #nDestMin OR #arInOutStorage[#nIdx1].arCarrier[#nIdx2].nDestination > #nDestMax THEN + #stOutCarrStats.stRdyToLeave.nCount += 1; + #stOutCarrStats.stRdyToLeave.nLine := #nIdx1; + #stOutCarrStats.stRdyToLeave.nPos := #nIdx2; + END_IF; + END_REGION + EXIT; + END_REGION + ELSIF (#arInOutStorage[#nIdx1].arCarrier[#nIdx2].nBarcode = 0) THEN //Verlässt Schleife nach letztem gefundenen Teil um nicht die Schleife für leere Plätze auszuführen + REGION Leer + #arInOutStorage[#nIdx1].stData.Status.nCount := 0; + #arInOutStorage[#nIdx1].stData.Status.bByte.%X0 := TRUE; + EXIT; + END_REGION + END_IF; + ELSE + REGION Suchlauf + REGION Werte für Statistik ermitteln + IF NOT #arInOutStorage[#nIdx1].arCarrier[#nIdx2].bStatus.%X1 AND #arInOutStorage[#nIdx1].arCarrier[#nIdx2].nBarcode <> #cDummy THEN + #stOutCarrStats.nEmptyCarrier += 1; + END_IF; + IF #arInOutStorage[#nIdx1].arCarrier[#nIdx2].nBarcode = #cDummy THEN + #stOutCarrStats.nDummy += 1; + END_IF; + IF #arInOutStorage[#nIdx1].arCarrier[#nIdx2].nDestination < #nDestMin OR #arInOutStorage[#nIdx1].arCarrier[#nIdx2].nDestination > #nDestMax THEN + #stOutCarrStats.stRdyToLeave.nCount += 1; + #stOutCarrStats.stRdyToLeave.nLine := #nIdx1; + #stOutCarrStats.stRdyToLeave.nPos := #nIdx2; + END_IF; + END_REGION + END_REGION + END_IF; + END_FOR; + END_FOR; + END_REGION + + REGION Gesamtfüllstand + //Zählt die einzelnen Füllstände zusammen + #nIdx2 := 0; + FOR #nIdx1 := 1 TO #nArrayMax DO + #nIdx2 := #nIdx2 + #arInOutStorage[#nIdx1].stData.Status.nCount + ; + END_FOR; + #nOutStorageLevel := #nIdx2; + END_REGION + +END_FUNCTION + diff --git a/=A01+UH01-KF00/Programmbausteine/400_BasicFunctions/FC/FC_Uint2TroString.scl b/=A01+UH01-KF00/Programmbausteine/400_BasicFunctions/FC/FC_Uint2TroString.scl new file mode 100644 index 0000000..f5914de --- /dev/null +++ b/=A01+UH01-KF00/Programmbausteine/400_BasicFunctions/FC/FC_Uint2TroString.scl @@ -0,0 +1,53 @@ +FUNCTION "FC_Uint2TroString" : String +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + VAR_INPUT + nInNumber : UInt; + END_VAR + + VAR_TEMP + sTmp : String[5]; + END_VAR + + +BEGIN + // Funktion wandelt Uint zu einem Tro-String. Aus 123 wird 12.3, aus 0 wird 0.0 aus 12345 wird 1234.5 + // Autor: Christian Forkl + // Getestet: Ja + // 03.08.2021 + + #sTmp := RIGHT(IN := UINT_TO_STRING(#nInNumber), L := (LEN(UINT_TO_STRING(#nInNumber)) - 1)); + + #FC_Uint2TroString := ''; + + IF #nInNumber > 9999 THEN + #FC_Uint2TroString[1] := #sTmp[1]; + #FC_Uint2TroString[2] := #sTmp[2]; + #FC_Uint2TroString[3] := #sTmp[3]; + #FC_Uint2TroString[4] := #sTmp[4]; + #FC_Uint2TroString[5] := '.'; + #FC_Uint2TroString[6] := #sTmp[5]; + ELSIF #nInNumber > 999 THEN + #FC_Uint2TroString[1] := #sTmp[1]; + #FC_Uint2TroString[2] := #sTmp[2]; + #FC_Uint2TroString[3] := #sTmp[3]; + #FC_Uint2TroString[4] := '.'; + #FC_Uint2TroString[5] := #sTmp[4]; + ELSIF #nInNumber > 99 THEN + #FC_Uint2TroString[1] := #sTmp[1]; + #FC_Uint2TroString[2] := #sTmp[2]; + #FC_Uint2TroString[3] := '.'; + #FC_Uint2TroString[4] := #sTmp[3]; + ELSIF #nInNumber > 9 THEN + #FC_Uint2TroString[1] := #sTmp[1]; + #FC_Uint2TroString[2] := '.'; + #FC_Uint2TroString[3] := #sTmp[2]; + ELSIF #nInNumber > 0 THEN + #FC_Uint2TroString[1] := '0'; + #FC_Uint2TroString[2] := '.'; + #FC_Uint2TroString[3] := #sTmp[1]; + ELSE + #FC_Uint2TroString := '0.0'; + END_IF; +END_FUNCTION + diff --git a/=A01+UH01-KF00/Programmbausteine/400_BasicFunctions/FC/FC_usint2String.scl b/=A01+UH01-KF00/Programmbausteine/400_BasicFunctions/FC/FC_usint2String.scl new file mode 100644 index 0000000..6566221 --- /dev/null +++ b/=A01+UH01-KF00/Programmbausteine/400_BasicFunctions/FC/FC_usint2String.scl @@ -0,0 +1,25 @@ +FUNCTION "FC_usint2String" : String +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + VAR_INPUT + nInNumber : USInt; + END_VAR + + VAR_TEMP + sTmp : String; + END_VAR + + +BEGIN + // Funktion wandelt Int zu String. Im Gegensatz zu "Int_To_String" wird das "+" entfernt. Bei negativen Zahlen bleibt das "-" erhalten. + // Autor: Christian Forkl + // 28.07.2021 + + #sTmp := USINT_TO_STRING(#nInNumber); + IF #nInNumber >= 0 THEN + #FC_usint2String := RIGHT(IN := #sTmp, L := (LEN(#sTmp) - 1)); + ELSE + #FC_usint2String := #sTmp; + END_IF; +END_FUNCTION + diff --git a/=A01+UH01-KF00/Programmbausteine/700_Jams/DB_HyperJam.xml b/=A01+UH01-KF00/Programmbausteine/700_Jams/DB_HyperJam.xml new file mode 100644 index 0000000..d299d47 --- /dev/null +++ b/=A01+UH01-KF00/Programmbausteine/700_Jams/DB_HyperJam.xml @@ -0,0 +1,93 @@ + + + + + + false + +
+ + + + true + + + + + true + + +
+ + +
+ + 1000 + + + 1000 + +
+
+
+
+
+
+
+
+
+ Optimized + 0 + DB_HyperJam + + 44 + DB +
+ + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + +
+
\ No newline at end of file diff --git a/=A01+UH01-KF00/Programmbausteine/700_Jams/FC_Call_Jams.scl b/=A01+UH01-KF00/Programmbausteine/700_Jams/FC_Call_Jams.scl new file mode 100644 index 0000000..f8fe3a2 --- /dev/null +++ b/=A01+UH01-KF00/Programmbausteine/700_Jams/FC_Call_Jams.scl @@ -0,0 +1,335 @@ +FUNCTION "FC_Call_Jams" : Void +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + VAR_TEMP + nIdx : Int; + END_VAR + + +BEGIN + REGION HyperJam + "FC_Jam"(stOutCarrierStatsStandard => "DB_Statistics".arJamStatisticsStandard["cStatistikHyperJam"], + arInOutJamCarrier := "DB_HyperJam".stHyperJam.arCarrier, + stInOutData := "DB_HyperJam".stHyperJam.stData); + + "DB_Statistics".nJamCount := "DB_HyperJam".stHyperJam.stData.Status.nCount; + END_REGION + + REGION JamArea0100 + "FC_Jam"(stOutCarrierStatsStandard => "DB_Statistics".arJamStatisticsStandard["cStatistikJam0100_1"], + arInOutJamCarrier := "DB_JamArea0100".stJam0100_1.arCarrier, + stInOutData := "DB_JamArea0100".stJam0100_1.stData); + + "DB_Statistics".nJamCount := "DB_Statistics".nJamCount + "DB_JamArea0100".stJam0100_1.stData.Status.nCount; + END_REGION + + REGION JamArea0101 + "FC_Jam"(stOutCarrierStatsStandard => "DB_Statistics".arJamStatisticsStandard["cStatistikJam0101_1"], + arInOutJamCarrier := "DB_JamArea0101".stJam0101_1.arCarrier, + stInOutData := "DB_JamArea0101".stJam0101_1.stData); + + "DB_Statistics".nJamCount := "DB_Statistics".nJamCount + "DB_JamArea0101".stJam0101_1.stData.Status.nCount; + + "FC_Jam"(stOutCarrierStatsStandard => "DB_Statistics".arJamStatisticsStandard["cStatistikJam0101_2"], + arInOutJamCarrier := "DB_JamArea0101".stJam0101_2.arCarrier, + stInOutData := "DB_JamArea0101".stJam0101_2.stData); + + "DB_Statistics".nJamCount := "DB_Statistics".nJamCount + "DB_JamArea0101".stJam0101_2.stData.Status.nCount; + END_REGION + + REGION JamArea0102 + "FC_Jam"(stOutCarrierStatsStandard=>"DB_Statistics".arJamStatisticsStandard["cStatistikJam0102_1"], + arInOutJamCarrier := "DB_JamArea0102".stJam0102_1.arCarrier, + stInOutData := "DB_JamArea0102".stJam0102_1.stData); + + "DB_Statistics".nJamCount := "DB_Statistics".nJamCount + "DB_JamArea0102".stJam0102_1.stData.Status.nCount; + + "FC_Jam"(stOutCarrierStatsStandard=>"DB_Statistics".arJamStatisticsStandard["cStatistikJam0102_2"], + arInOutJamCarrier := "DB_JamArea0102".stJam0102_2.arCarrier, + stInOutData := "DB_JamArea0102".stJam0102_2.stData); + + "DB_Statistics".nJamCount := "DB_Statistics".nJamCount + "DB_JamArea0102".stJam0102_2.stData.Status.nCount; + + "FC_Jam"(stOutCarrierStatsStandard => "DB_Statistics".arJamStatisticsStandard["cStatistikJam0102_3"], + arInOutJamCarrier := "DB_JamArea0102".stJam0102_3.arCarrier, + stInOutData := "DB_JamArea0102".stJam0102_3.stData); + + "DB_Statistics".nJamCount := "DB_Statistics".nJamCount + "DB_JamArea0102".stJam0102_3.stData.Status.nCount; + + "FC_Jam"(stOutCarrierStatsStandard=>"DB_Statistics".arJamStatisticsStandard["cStatistikJam0102_4"], + arInOutJamCarrier := "DB_JamArea0102".stJam0102_4.arCarrier, + stInOutData := "DB_JamArea0102".stJam0102_4.stData); + + "DB_Statistics".nJamCount := "DB_Statistics".nJamCount + "DB_JamArea0102".stJam0102_4.stData.Status.nCount; + + "FC_Jam"(stOutCarrierStatsStandard => "DB_Statistics".arJamStatisticsStandard["cStatistikJam0102_5"], + arInOutJamCarrier := "DB_JamArea0102".stJam0102_5.arCarrier, + stInOutData := "DB_JamArea0102".stJam0102_5.stData); + + "DB_Statistics".nJamCount := "DB_Statistics".nJamCount + "DB_JamArea0102".stJam0102_5.stData.Status.nCount; + + "FC_Jam"(stOutCarrierStatsStandard=>"DB_Statistics".arJamStatisticsStandard["cStatistikJam0102_6"], + arInOutJamCarrier := "DB_JamArea0102".stJam0102_6.arCarrier, + stInOutData := "DB_JamArea0102".stJam0102_6.stData); + + "DB_Statistics".nJamCount := "DB_Statistics".nJamCount + "DB_JamArea0102".stJam0102_6.stData.Status.nCount; + + END_REGION + + REGION JamArea0103 + "FC_Jam"(stOutCarrierStatsStandard=>"DB_Statistics".arJamStatisticsStandard["cStatistikJam0103_1"], + arInOutJamCarrier := "DB_JamArea0103".stJam0103_1.arCarrier, + stInOutData := "DB_JamArea0103".stJam0103_1.stData); + + "DB_Statistics".nJamCount := "DB_Statistics".nJamCount + "DB_JamArea0103".stJam0103_1.stData.Status.nCount; + END_REGION + + REGION JamArea0104 + "FC_Jam"(stOutCarrierStatsStandard => "DB_Statistics".arJamStatisticsStandard["cStatistikJam0104_1"], + arInOutJamCarrier := "DB_JamArea0104".stJam0104_1.arCarrier, + stInOutData := "DB_JamArea0104".stJam0104_1.stData); + + "DB_Statistics".nJamCount := "DB_Statistics".nJamCount + "DB_JamArea0104".stJam0104_1.stData.Status.nCount; + + "FC_Jam"(stOutCarrierStatsStandard=>"DB_Statistics".arJamStatisticsStandard["cStatistikJam0104_2"], + arInOutJamCarrier := "DB_JamArea0104".stJam0104_2.arCarrier, + stInOutData := "DB_JamArea0104".stJam0104_2.stData); + + "DB_Statistics".nJamCount := "DB_Statistics".nJamCount + "DB_JamArea0104".stJam0104_2.stData.Status.nCount; + + "FC_Jam"(stOutCarrierStatsStandard=>"DB_Statistics".arJamStatisticsStandard["cStatistikJam0104_3"], + arInOutJamCarrier := "DB_JamArea0104".stJam0104_3.arCarrier, + stInOutData := "DB_JamArea0104".stJam0104_3.stData); + + "DB_Statistics".nJamCount := "DB_Statistics".nJamCount + "DB_JamArea0104".stJam0104_3.stData.Status.nCount; + + END_REGION + + REGION JamArea0106 + "FC_Jam"(stOutCarrierStatsStandard=>"DB_Statistics".arJamStatisticsStandard["cStatistikJam0106_1"], + arInOutJamCarrier := "DB_JamArea0106".stJam0106_1.arCarrier, + stInOutData := "DB_JamArea0106".stJam0106_1.stData); + + "DB_Statistics".nJamCount := "DB_Statistics".nJamCount + "DB_JamArea0106".stJam0106_1.stData.Status.nCount; + + "FC_Jam"(stOutCarrierStatsStandard=>"DB_Statistics".arJamStatisticsStandard["cStatistikJam0106_2"], + arInOutJamCarrier := "DB_JamArea0106".stJam0106_2.arCarrier, + stInOutData := "DB_JamArea0106".stJam0106_2.stData); + + "DB_Statistics".nJamCount := "DB_Statistics".nJamCount + "DB_JamArea0106".stJam0106_2.stData.Status.nCount; + + END_REGION + + REGION JamArea0107 + "FC_Jam"(stOutCarrierStatsStandard=>"DB_Statistics".arJamStatisticsStandard["cStatistikJam0107_1"], + arInOutJamCarrier := "DB_JamArea0107".stJam0107_1.arCarrier, + stInOutData := "DB_JamArea0107".stJam0107_1.stData); + + "DB_Statistics".nJamCount := "DB_Statistics".nJamCount + "DB_JamArea0107".stJam0107_1.stData.Status.nCount; + + END_REGION + + REGION JamArea0108 + "FC_Jam"(stOutCarrierStatsStandard=>"DB_Statistics".arJamStatisticsStandard["cStatistikJam0108_1"], + arInOutJamCarrier := "DB_JamArea0108".stJam0108_1.arCarrier, + stInOutData := "DB_JamArea0108".stJam0108_1.stData); + + "DB_Statistics".nJamCount := "DB_Statistics".nJamCount + "DB_JamArea0108".stJam0108_1.stData.Status.nCount; + + "FC_Jam"(stOutCarrierStatsStandard=>"DB_Statistics".arJamStatisticsStandard["cStatistikJam0108_2"], + arInOutJamCarrier := "DB_JamArea0108".stJam0108_2.arCarrier, + stInOutData := "DB_JamArea0108".stJam0108_2.stData); + + "DB_Statistics".nJamCount := "DB_Statistics".nJamCount + "DB_JamArea0108".stJam0108_2.stData.Status.nCount; + + "FC_Jam"(stOutCarrierStatsStandard => "DB_Statistics".arJamStatisticsStandard["cStatistikJam0108_3"], + arInOutJamCarrier := "DB_JamArea0108".stJam0108_3.arCarrier, + stInOutData := "DB_JamArea0108".stJam0108_3.stData); + + "DB_Statistics".nJamCount := "DB_Statistics".nJamCount + "DB_JamArea0108".stJam0108_3.stData.Status.nCount; + + END_REGION + + REGION JamArea0110 + "FC_Jam"(stOutCarrierStatsStandard => "DB_Statistics".arJamStatisticsStandard["cStatistikJam0110_1"], + arInOutJamCarrier := "DB_JamArea0110".stJam0110_1.arCarrier, + stInOutData := "DB_JamArea0110".stJam0110_1.stData); + + "DB_Statistics".nJamCount := "DB_Statistics".nJamCount + "DB_JamArea0110".stJam0110_1.stData.Status.nCount; + + "FC_Jam"(stOutCarrierStatsStandard => "DB_Statistics".arJamStatisticsStandard["cStatistikJam0110_2"], + arInOutJamCarrier := "DB_JamArea0110".stJam0110_2.arCarrier, + stInOutData := "DB_JamArea0110".stJam0110_2.stData); + + "DB_Statistics".nJamCount := "DB_Statistics".nJamCount + "DB_JamArea0110".stJam0110_2.stData.Status.nCount; + + END_REGION + + REGION JamArea4103 + "FC_Jam"(stOutCarrierStatsStandard => "DB_Statistics".arJamStatisticsStandard["cStatistikJam4103_1"], + arInOutJamCarrier := "DB_JamArea4103".stJam4103_1.arCarrier, + stInOutData := "DB_JamArea4103".stJam4103_1.stData); + + "DB_Statistics".nJamCount := "DB_Statistics".nJamCount + "DB_JamArea4103".stJam4103_1.stData.Status.nCount; + + // "FC_Jam"(arInOutJamCarrier := "DB_JamArea4103".stJam4103_2.arCarrier, + // stInOutData := "DB_JamArea4103".stJam4103_2.stData); + END_REGION + + REGION JamArea4104 + "FC_Jam"(stOutCarrierStatsStandard=>"DB_Statistics".arJamStatisticsStandard["cStatistikJam4104_1"], + arInOutJamCarrier := "DB_JamArea4104".stJam4104_1.arCarrier, + stInOutData := "DB_JamArea4104".stJam4104_1.stData); + + "DB_Statistics".nJamCount := "DB_Statistics".nJamCount + "DB_JamArea4104".stJam4104_1.stData.Status.nCount; + + END_REGION + + REGION JamArea4203 + "FC_Jam"(stOutCarrierStatsStandard => "DB_Statistics".arJamStatisticsStandard["cStatistikJam4203_1"], + arInOutJamCarrier := "DB_JamArea4203".stJam4203_1.arCarrier, + stInOutData := "DB_JamArea4203".stJam4203_1.stData); + + "DB_Statistics".nJamCount := "DB_Statistics".nJamCount + "DB_JamArea4203".stJam4203_1.stData.Status.nCount; + END_REGION + + REGION JamArea4204 + "FC_Jam"(stOutCarrierStatsStandard=>"DB_Statistics".arJamStatisticsStandard["cStatistikJam4204_1"], + arInOutJamCarrier := "DB_JamArea4204".stJam4204_1.arCarrier, + stInOutData := "DB_JamArea4204".stJam4204_1.stData); + + "DB_Statistics".nJamCount := "DB_Statistics".nJamCount + "DB_JamArea4204".stJam4204_1.stData.Status.nCount; + + "FC_Jam"(stOutCarrierStatsStandard=>"DB_Statistics".arJamStatisticsStandard["cStatistikJam4204_2"], + arInOutJamCarrier := "DB_JamArea4204".stJam4204_2.arCarrier, + stInOutData := "DB_JamArea4204".stJam4204_2.stData); + + "DB_Statistics".nJamCount := "DB_Statistics".nJamCount + "DB_JamArea4204".stJam4204_2.stData.Status.nCount; + + END_REGION + + REGION JamArea4302 + "FC_Jam"(stOutCarrierStatsStandard=>"DB_Statistics".arJamStatisticsStandard["cStatistikJam4302_1"], + arInOutJamCarrier := "DB_JamArea4302".stJam4302_1.arCarrier, + stInOutData := "DB_JamArea4302".stJam4302_1.stData); + + "DB_Statistics".nJamCount := "DB_Statistics".nJamCount + "DB_JamArea4302".stJam4302_1.stData.Status.nCount; + + "FC_Jam"(stOutCarrierStatsStandard => "DB_Statistics".arJamStatisticsStandard["cStatistikJam4302_2"], + arInOutJamCarrier := "DB_JamArea4302".stJam4302_2.arCarrier, + stInOutData := "DB_JamArea4302".stJam4302_2.stData); + + "DB_Statistics".nJamCount := "DB_Statistics".nJamCount + "DB_JamArea4302".stJam4302_2.stData.Status.nCount; + + END_REGION + + REGION JamArea4402 + "FC_Jam"(stOutCarrierStatsStandard=>"DB_Statistics".arJamStatisticsStandard["cStatistikJam4402_1"], + arInOutJamCarrier := "DB_JamArea4402".stJam4402_1.arCarrier, + stInOutData := "DB_JamArea4402".stJam4402_1.stData); + + "DB_Statistics".nJamCount := "DB_Statistics".nJamCount + "DB_JamArea4402".stJam4402_1.stData.Status.nCount; + + END_REGION + + REGION JamArea4403 + "FC_Jam"(stOutCarrierStatsStandard=>"DB_Statistics".arJamStatisticsStandard["cStatistikJam4403_1"], + arInOutJamCarrier := "DB_JamArea4403".stJam4403_1.arCarrier, + stInOutData := "DB_JamArea4403".stJam4403_1.stData); + + "DB_Statistics".nJamCount := "DB_Statistics".nJamCount + "DB_JamArea4403".stJam4403_1.stData.Status.nCount; + + "FC_Jam"(stOutCarrierStatsStandard => "DB_Statistics".arJamStatisticsStandard["cStatistikJam4403_2"], + arInOutJamCarrier := "DB_JamArea4403".stJam4403_2.arCarrier, + stInOutData := "DB_JamArea4403".stJam4403_2.stData); + + "DB_Statistics".nJamCount := "DB_Statistics".nJamCount + "DB_JamArea4403".stJam4403_2.stData.Status.nCount; + + END_REGION + + REGION JamArea4501 + "FC_Jam"(stOutCarrierStatsStandard=>"DB_Statistics".arJamStatisticsStandard["cStatistikJam4501_1"], + arInOutJamCarrier := "DB_JamArea4501".stJam4501_1.arCarrier, + stInOutData := "DB_JamArea4501".stJam4501_1.stData); + + "DB_Statistics".nJamCount := "DB_Statistics".nJamCount + "DB_JamArea4501".stJam4501_1.stData.Status.nCount; + + "FC_Jam"(stOutCarrierStatsStandard => "DB_Statistics".arJamStatisticsStandard["cStatistikJam4501_2"], + arInOutJamCarrier := "DB_JamArea4501".stJam4501_2.arCarrier, + stInOutData := "DB_JamArea4501".stJam4501_2.stData); + + "DB_Statistics".nJamCount := "DB_Statistics".nJamCount + "DB_JamArea4501".stJam4501_2.stData.Status.nCount; + + END_REGION + + REGION JamArea4502 + "FC_Jam"(stOutCarrierStatsStandard=>"DB_Statistics".arJamStatisticsStandard["cStatistikJam4502_1"], + arInOutJamCarrier := "DB_JamArea4502".stJam4502_1.arCarrier, + stInOutData := "DB_JamArea4502".stJam4502_1.stData); + + "DB_Statistics".nJamCount := "DB_Statistics".nJamCount + "DB_JamArea4502".stJam4502_1.stData.Status.nCount; + + "FC_Jam"(stOutCarrierStatsStandard => "DB_Statistics".arJamStatisticsStandard["cStatistikJam4502_2"], + arInOutJamCarrier := "DB_JamArea4502".stJam4502_2.arCarrier, + stInOutData := "DB_JamArea4502".stJam4502_2.stData); + + "DB_Statistics".nJamCount := "DB_Statistics".nJamCount + "DB_JamArea4502".stJam4502_2.stData.Status.nCount; + + END_REGION + + REGION JamArea4503 + "FC_Jam"(stOutCarrierStatsStandard=>"DB_Statistics".arJamStatisticsStandard["cStatistikJam4503_1"], + arInOutJamCarrier := "DB_JamArea4503".stJam4503_1.arCarrier, + stInOutData := "DB_JamArea4503".stJam4503_1.stData); + + "DB_Statistics".nJamCount := "DB_Statistics".nJamCount + "DB_JamArea4503".stJam4503_1.stData.Status.nCount; + + "FC_Jam"(stOutCarrierStatsStandard => "DB_Statistics".arJamStatisticsStandard["cStatistikJam4503_2"], + arInOutJamCarrier := "DB_JamArea4503".stJam4503_2.arCarrier, + stInOutData := "DB_JamArea4503".stJam4503_2.stData); + + "DB_Statistics".nJamCount := "DB_Statistics".nJamCount + "DB_JamArea4503".stJam4503_2.stData.Status.nCount; + + END_REGION + + REGION Auswertung + REGION Leere Carrier + "DB_Statistics".nEmptyCarrierCount := 0; + FOR #nIdx := 0 TO "cNoStatistikJam" DO + "DB_Statistics".nEmptyCarrierCount := "DB_Statistics".nEmptyCarrierCount + "DB_Statistics".arJamStatisticsStandard[#nIdx].nEmptyCarrier; + END_FOR; + + END_REGION + + REGION Beladene Carrier + "DB_Statistics".nLoadedCarrierCount := 0; + FOR #nIdx := 0 TO "cNoStatistikJam" DO + "DB_Statistics".nLoadedCarrierCount := "DB_Statistics".nLoadedCarrierCount + "DB_Statistics".arJamStatisticsStandard[#nIdx].nLoadedCarrier; + END_FOR; + END_REGION + + REGION Dummy + "DB_Statistics".nDummyCount := 0; + FOR #nIdx := 0 TO "cNoStatistikJam" DO + "DB_Statistics".nDummyCount := "DB_Statistics".nDummyCount + "DB_Statistics".arJamStatisticsStandard[#nIdx].nDummyCarrier; + END_FOR; + END_REGION + + END_REGION + + REGION HMI + "DB_Interface_HMI".stStatistics.nJamCount := "DB_Statistics".nJamCount; + "DB_Interface_HMI".stStatistics.nLoadedCount := "DB_Statistics".nLoadedCarrierCount; + "DB_Interface_HMI".stStatistics.nEmptyCount := "DB_Statistics".nEmptyCarrierCount + "DB_Statistics".nStorageCount; //In diesem Fall sind im Storage nur Leercarrier! + "DB_Interface_HMI".stStatistics.nDummyCount := "DB_Statistics".nDummyCount; + + "DB_Interface_HMI".stStatistics.nStorageCount101 := "DB_Statistics".nStorageCount101; + "DB_Interface_HMI".stStatistics.nStorageCount102 := "DB_Statistics".nStorageCount102; + "DB_Interface_HMI".stStatistics.nStorageTotalCount := "DB_Statistics".nStorageCount; + + "DB_Interface_HMI".stStatistics.nTotalCount := "DB_Statistics".nJamCount + "DB_Statistics".nStorageCount; + + END_REGION + +END_FUNCTION + diff --git a/=A01+UH01-KF00/Programmbausteine/700_Jams/Inbound_Oben/DB_JamArea4103.xml b/=A01+UH01-KF00/Programmbausteine/700_Jams/Inbound_Oben/DB_JamArea4103.xml new file mode 100644 index 0000000..1384cdf --- /dev/null +++ b/=A01+UH01-KF00/Programmbausteine/700_Jams/Inbound_Oben/DB_JamArea4103.xml @@ -0,0 +1,88 @@ + + + + + + +
+ + + + + true + + +
+ + +
+ + 70 + + + 70 + +
+
+
+
+
+
+
+
+
+ Optimized + 100 + DB_JamArea4103 + + 6 + DB +
+ + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + +
+
\ No newline at end of file diff --git a/=A01+UH01-KF00/Programmbausteine/700_Jams/Inbound_Oben/DB_JamArea4104.xml b/=A01+UH01-KF00/Programmbausteine/700_Jams/Inbound_Oben/DB_JamArea4104.xml new file mode 100644 index 0000000..3472d51 --- /dev/null +++ b/=A01+UH01-KF00/Programmbausteine/700_Jams/Inbound_Oben/DB_JamArea4104.xml @@ -0,0 +1,88 @@ + + + + + + +
+ + + + + true + + +
+ + +
+ + 8 + + + 8 + +
+
+
+
+
+
+
+
+
+ Optimized + 100 + DB_JamArea4104 + + 5 + DB +
+ + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + +
+
\ No newline at end of file diff --git a/=A01+UH01-KF00/Programmbausteine/700_Jams/Inbound_Oben/DB_JamArea4203.xml b/=A01+UH01-KF00/Programmbausteine/700_Jams/Inbound_Oben/DB_JamArea4203.xml new file mode 100644 index 0000000..16c66d5 --- /dev/null +++ b/=A01+UH01-KF00/Programmbausteine/700_Jams/Inbound_Oben/DB_JamArea4203.xml @@ -0,0 +1,88 @@ + + + + + + +
+ + + + + true + + +
+ + +
+ + 6 + + + 6 + +
+
+
+
+
+
+
+
+
+ Optimized + 100 + DB_JamArea4203 + + 50 + DB +
+ + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + +
+
\ No newline at end of file diff --git a/=A01+UH01-KF00/Programmbausteine/700_Jams/Inbound_Oben/DB_JamArea4204.xml b/=A01+UH01-KF00/Programmbausteine/700_Jams/Inbound_Oben/DB_JamArea4204.xml new file mode 100644 index 0000000..ba4847a --- /dev/null +++ b/=A01+UH01-KF00/Programmbausteine/700_Jams/Inbound_Oben/DB_JamArea4204.xml @@ -0,0 +1,112 @@ + + + + + + +
+ + + + + true + + +
+ + +
+ + 8 + + + 8 + +
+
+
+
+
+
+
+ + + + + true + + +
+ + +
+ + 15 + + + 15 + +
+
+
+
+
+
+
+
+
+ Optimized + 100 + DB_JamArea4204 + + 11 + DB +
+ + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + +
+
\ No newline at end of file diff --git a/=A01+UH01-KF00/Programmbausteine/700_Jams/Inbound_Oben/DB_JamArea4302.xml b/=A01+UH01-KF00/Programmbausteine/700_Jams/Inbound_Oben/DB_JamArea4302.xml new file mode 100644 index 0000000..bf4e7cf --- /dev/null +++ b/=A01+UH01-KF00/Programmbausteine/700_Jams/Inbound_Oben/DB_JamArea4302.xml @@ -0,0 +1,112 @@ + + + + + + +
+ + + + + true + + +
+ + +
+ + 5 + + + 5 + +
+
+
+
+
+
+
+ + + + + true + + +
+ + +
+ + 80 + + + 80 + +
+
+
+
+
+
+
+
+
+ Optimized + 100 + DB_JamArea4302 + + 24 + DB +
+ + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + +
+
\ No newline at end of file diff --git a/=A01+UH01-KF00/Programmbausteine/700_Jams/Inbound_Oben/DB_JamArea4402.xml b/=A01+UH01-KF00/Programmbausteine/700_Jams/Inbound_Oben/DB_JamArea4402.xml new file mode 100644 index 0000000..c56031d --- /dev/null +++ b/=A01+UH01-KF00/Programmbausteine/700_Jams/Inbound_Oben/DB_JamArea4402.xml @@ -0,0 +1,88 @@ + + + + + + +
+ + + + + true + + +
+ + +
+ + 5 + + + 5 + +
+
+
+
+
+
+
+
+
+ Optimized + 100 + DB_JamArea4402 + + 31 + DB +
+ + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + +
+
\ No newline at end of file diff --git a/=A01+UH01-KF00/Programmbausteine/700_Jams/Inbound_Oben/DB_JamArea4403.xml b/=A01+UH01-KF00/Programmbausteine/700_Jams/Inbound_Oben/DB_JamArea4403.xml new file mode 100644 index 0000000..fe66bde --- /dev/null +++ b/=A01+UH01-KF00/Programmbausteine/700_Jams/Inbound_Oben/DB_JamArea4403.xml @@ -0,0 +1,112 @@ + + + + + + +
+ + + + + true + + +
+ + +
+ + 110 + + + 110 + +
+
+
+
+
+
+
+ + + + + true + + +
+ + +
+ + 80 + + + 80 + +
+
+
+
+
+
+
+
+
+ Optimized + 100 + DB_JamArea4403 + + 12 + DB +
+ + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + +
+
\ No newline at end of file diff --git a/=A01+UH01-KF00/Programmbausteine/700_Jams/Inbound_Oben/DB_JamArea4501.xml b/=A01+UH01-KF00/Programmbausteine/700_Jams/Inbound_Oben/DB_JamArea4501.xml new file mode 100644 index 0000000..6b8b892 --- /dev/null +++ b/=A01+UH01-KF00/Programmbausteine/700_Jams/Inbound_Oben/DB_JamArea4501.xml @@ -0,0 +1,112 @@ + + + + + + +
+ + + + + true + + +
+ + +
+ + 5 + + + 5 + +
+
+
+
+
+
+
+ + + + + true + + +
+ + +
+ + 50 + + + 50 + +
+
+
+
+
+
+
+
+
+ Optimized + 100 + DB_JamArea4501 + + 13 + DB +
+ + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + +
+
\ No newline at end of file diff --git a/=A01+UH01-KF00/Programmbausteine/700_Jams/Inbound_Oben/DB_JamArea4502.xml b/=A01+UH01-KF00/Programmbausteine/700_Jams/Inbound_Oben/DB_JamArea4502.xml new file mode 100644 index 0000000..0cdcf34 --- /dev/null +++ b/=A01+UH01-KF00/Programmbausteine/700_Jams/Inbound_Oben/DB_JamArea4502.xml @@ -0,0 +1,112 @@ + + + + + + +
+ + + + + true + + +
+ + +
+ + 3 + + + 3 + +
+
+
+
+
+
+
+ + + + + true + + +
+ + +
+ + 120 + + + 120 + +
+
+
+
+
+
+
+
+
+ Optimized + 100 + DB_JamArea4502 + + 9 + DB +
+ + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + +
+
\ No newline at end of file diff --git a/=A01+UH01-KF00/Programmbausteine/700_Jams/Inbound_Oben/DB_JamArea4503.xml b/=A01+UH01-KF00/Programmbausteine/700_Jams/Inbound_Oben/DB_JamArea4503.xml new file mode 100644 index 0000000..52361a7 --- /dev/null +++ b/=A01+UH01-KF00/Programmbausteine/700_Jams/Inbound_Oben/DB_JamArea4503.xml @@ -0,0 +1,112 @@ + + + + + + +
+ + + + + true + + +
+ + +
+ + 5 + + + 5 + +
+
+
+
+
+
+
+ + + + + true + + +
+ + +
+ + 120 + + + 120 + +
+
+
+
+
+
+
+
+
+ Optimized + 100 + DB_JamArea4503 + + 27 + DB +
+ + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + +
+
\ No newline at end of file diff --git a/=A01+UH01-KF00/Programmbausteine/700_Jams/Inbound_Oben/DB_JamBoom1.xml b/=A01+UH01-KF00/Programmbausteine/700_Jams/Inbound_Oben/DB_JamBoom1.xml new file mode 100644 index 0000000..bca8993 --- /dev/null +++ b/=A01+UH01-KF00/Programmbausteine/700_Jams/Inbound_Oben/DB_JamBoom1.xml @@ -0,0 +1,148 @@ + + + + + + +
+ + + + true + + + + + true + + +
+ + +
+ + 5 + + + 5 + +
+
+
+
+
+
+
+ + + + true + + + + + true + + +
+ + +
+ + 1 + + + 1 + +
+
+
+
+
+
+
+ + + + true + + + + + true + + +
+ + +
+ + 5 + + + 5 + +
+
+
+
+
+
+
+
+
+ Optimized + 100 + DB_JamBoom1 + + 8 + DB +
+ + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + +
+
\ No newline at end of file diff --git a/=A01+UH01-KF00/Programmbausteine/700_Jams/Inbound_Unten/Buffer/DB_JamBuffer101.xml b/=A01+UH01-KF00/Programmbausteine/700_Jams/Inbound_Unten/Buffer/DB_JamBuffer101.xml new file mode 100644 index 0000000..abb8283 --- /dev/null +++ b/=A01+UH01-KF00/Programmbausteine/700_Jams/Inbound_Unten/Buffer/DB_JamBuffer101.xml @@ -0,0 +1,119 @@ + + + + + + +
+ + + true + + +
+ + +
+ + +
+ + + 85 + + + 85 + + + 85 + + + 85 + + + 85 + + + + + 85 + + + 85 + + + 85 + + + 85 + + + 85 + + +
+
+
+
+
+
+
+
+
+
+
+ Optimized + 100 + DB_JamBuffer101 + + 4 + DB +
+ + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + +
+
\ No newline at end of file diff --git a/=A01+UH01-KF00/Programmbausteine/700_Jams/Inbound_Unten/Buffer/DB_JamBuffer102.xml b/=A01+UH01-KF00/Programmbausteine/700_Jams/Inbound_Unten/Buffer/DB_JamBuffer102.xml new file mode 100644 index 0000000..7f63600 --- /dev/null +++ b/=A01+UH01-KF00/Programmbausteine/700_Jams/Inbound_Unten/Buffer/DB_JamBuffer102.xml @@ -0,0 +1,120 @@ + + + + + + false + +
+ + + true + + +
+ + +
+ + +
+ + + 85 + + + 85 + + + 85 + + + 85 + + + 85 + + + + + 85 + + + 85 + + + 85 + + + 85 + + + 85 + + +
+
+
+
+
+
+
+
+
+
+
+ Optimized + 100 + DB_JamBuffer102 + + 35 + DB +
+ + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + +
+
\ No newline at end of file diff --git a/=A01+UH01-KF00/Programmbausteine/700_Jams/Inbound_Unten/DB_JamArea0100.xml b/=A01+UH01-KF00/Programmbausteine/700_Jams/Inbound_Unten/DB_JamArea0100.xml new file mode 100644 index 0000000..8dcb6be --- /dev/null +++ b/=A01+UH01-KF00/Programmbausteine/700_Jams/Inbound_Unten/DB_JamArea0100.xml @@ -0,0 +1,88 @@ + + + + + + +
+ + + + + true + + +
+ + +
+ + 50 + + + 50 + +
+
+
+
+
+
+
+
+
+ Optimized + 100 + DB_JamArea0100 + + 76 + DB +
+ + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + +
+
\ No newline at end of file diff --git a/=A01+UH01-KF00/Programmbausteine/700_Jams/Inbound_Unten/DB_JamArea0101.xml b/=A01+UH01-KF00/Programmbausteine/700_Jams/Inbound_Unten/DB_JamArea0101.xml new file mode 100644 index 0000000..2fee6e3 --- /dev/null +++ b/=A01+UH01-KF00/Programmbausteine/700_Jams/Inbound_Unten/DB_JamArea0101.xml @@ -0,0 +1,116 @@ + + + + + + +
+ + + + + true + + +
+ + +
+ + 10 + + + 10 + +
+
+
+
+
+
+
+ + + + true + + + + + true + + +
+ + +
+ + 10 + + + 10 + +
+
+
+
+
+
+
+
+
+ Optimized + 0 + DB_JamArea0101 + + 22 + DB +
+ + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + +
+
\ No newline at end of file diff --git a/=A01+UH01-KF00/Programmbausteine/700_Jams/Inbound_Unten/DB_JamArea0102.xml b/=A01+UH01-KF00/Programmbausteine/700_Jams/Inbound_Unten/DB_JamArea0102.xml new file mode 100644 index 0000000..5fff6f2 --- /dev/null +++ b/=A01+UH01-KF00/Programmbausteine/700_Jams/Inbound_Unten/DB_JamArea0102.xml @@ -0,0 +1,212 @@ + + + + + + +
+ + + + + true + + +
+ + +
+ + 10 + + + 10 + +
+
+
+
+
+
+
+ + + + true + + + + + true + + +
+ + +
+ + 10 + + + 10 + +
+
+
+
+
+
+
+ + + + + true + + +
+ + +
+ + 3 + + + 3 + +
+
+
+
+
+
+
+ + + + + true + + +
+ + +
+ + 1 + + + 1 + +
+
+
+
+
+
+
+ + + + + true + + +
+ + +
+ + 65 + + + 65 + +
+
+
+
+
+
+
+ + + + + true + + +
+ + +
+ + 1 + + + 1 + +
+
+
+
+
+
+
+
+
+ Optimized + 0 + DB_JamArea0102 + + 33 + DB +
+ + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + +
+
\ No newline at end of file diff --git a/=A01+UH01-KF00/Programmbausteine/700_Jams/Inbound_Unten/DB_JamArea0103.xml b/=A01+UH01-KF00/Programmbausteine/700_Jams/Inbound_Unten/DB_JamArea0103.xml new file mode 100644 index 0000000..f9ded98 --- /dev/null +++ b/=A01+UH01-KF00/Programmbausteine/700_Jams/Inbound_Unten/DB_JamArea0103.xml @@ -0,0 +1,88 @@ + + + + + + +
+ + + + + true + + +
+ + +
+ + 65 + + + 65 + +
+
+
+
+
+
+
+
+
+ Optimized + 0 + DB_JamArea0103 + + 25 + DB +
+ + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + +
+
\ No newline at end of file diff --git a/=A01+UH01-KF00/Programmbausteine/700_Jams/Inbound_Unten/DB_JamArea0104.xml b/=A01+UH01-KF00/Programmbausteine/700_Jams/Inbound_Unten/DB_JamArea0104.xml new file mode 100644 index 0000000..9648a6d --- /dev/null +++ b/=A01+UH01-KF00/Programmbausteine/700_Jams/Inbound_Unten/DB_JamArea0104.xml @@ -0,0 +1,140 @@ + + + + + + +
+ + + + + true + + +
+ + +
+ + 13 + + + 13 + +
+
+
+
+
+
+
+ + + + true + + + + + true + + +
+ + +
+ + 1 + + + 1 + +
+
+
+
+
+
+
+ + + + + true + + +
+ + +
+ + 10 + + + 10 + +
+
+
+
+
+
+
+
+
+ Optimized + 0 + DB_JamArea0104 + + 23 + DB +
+ + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + +
+
\ No newline at end of file diff --git a/=A01+UH01-KF00/Programmbausteine/700_Jams/Inbound_Unten/DB_JamArea0106.xml b/=A01+UH01-KF00/Programmbausteine/700_Jams/Inbound_Unten/DB_JamArea0106.xml new file mode 100644 index 0000000..e76aa2e --- /dev/null +++ b/=A01+UH01-KF00/Programmbausteine/700_Jams/Inbound_Unten/DB_JamArea0106.xml @@ -0,0 +1,112 @@ + + + + + + +
+ + + + + true + + +
+ + +
+ + 10 + + + 10 + +
+
+
+
+
+
+
+ + + + + true + + +
+ + +
+ + 20 + + + 20 + +
+
+
+
+
+
+
+
+
+ Optimized + 0 + DB_JamArea0106 + + 56 + DB +
+ + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + +
+
\ No newline at end of file diff --git a/=A01+UH01-KF00/Programmbausteine/700_Jams/Inbound_Unten/DB_JamArea0107.xml b/=A01+UH01-KF00/Programmbausteine/700_Jams/Inbound_Unten/DB_JamArea0107.xml new file mode 100644 index 0000000..369d17e --- /dev/null +++ b/=A01+UH01-KF00/Programmbausteine/700_Jams/Inbound_Unten/DB_JamArea0107.xml @@ -0,0 +1,88 @@ + + + + + + +
+ + + + + true + + +
+ + +
+ + 65 + + + 65 + +
+
+
+
+
+
+
+
+
+ Optimized + 0 + DB_JamArea0107 + + 60 + DB +
+ + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + +
+
\ No newline at end of file diff --git a/=A01+UH01-KF00/Programmbausteine/700_Jams/Inbound_Unten/DB_JamArea0108.xml b/=A01+UH01-KF00/Programmbausteine/700_Jams/Inbound_Unten/DB_JamArea0108.xml new file mode 100644 index 0000000..583290c --- /dev/null +++ b/=A01+UH01-KF00/Programmbausteine/700_Jams/Inbound_Unten/DB_JamArea0108.xml @@ -0,0 +1,136 @@ + + + + + + +
+ + + + + true + + +
+ + +
+ + 13 + + + 13 + +
+
+
+
+
+
+
+ + + + + true + + +
+ + +
+ + 1 + + + 1 + +
+
+
+
+
+
+
+ + + + + true + + +
+ + +
+ + 10 + + + 10 + +
+
+
+
+
+
+
+
+
+ Optimized + 0 + DB_JamArea0108 + + 29 + DB +
+ + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + +
+
\ No newline at end of file diff --git a/=A01+UH01-KF00/Programmbausteine/700_Jams/Inbound_Unten/DB_JamArea0110.xml b/=A01+UH01-KF00/Programmbausteine/700_Jams/Inbound_Unten/DB_JamArea0110.xml new file mode 100644 index 0000000..84d7c12 --- /dev/null +++ b/=A01+UH01-KF00/Programmbausteine/700_Jams/Inbound_Unten/DB_JamArea0110.xml @@ -0,0 +1,113 @@ + + + + + + false + +
+ + + + + true + + +
+ + +
+ + 10 + + + 10 + +
+
+
+
+
+
+
+ + + + + true + + +
+ + +
+ + 20 + + + 20 + +
+
+
+
+
+
+
+
+
+ Optimized + 0 + DB_JamArea0110 + + 34 + DB +
+ + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + +
+
\ No newline at end of file diff --git a/=A01+UH01-KF00/Programmbausteine/800_Storage/FB_EmptyCarrBuffer.scl b/=A01+UH01-KF00/Programmbausteine/800_Storage/FB_EmptyCarrBuffer.scl new file mode 100644 index 0000000..cff7f64 --- /dev/null +++ b/=A01+UH01-KF00/Programmbausteine/800_Storage/FB_EmptyCarrBuffer.scl @@ -0,0 +1,1236 @@ +FUNCTION_BLOCK "FB_EmptyCarrBuffer" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + VAR_INPUT + nInBufferNr : Int; // 101 oder 102 + xInBufferReq : Bool; // Es soll eingelagert werden + xInPause : Bool; // Es wird pausiert für den anderen Puffer + xInSftyOk : Bool; + xInConveyorRunOut : Bool; + xInBufferRelease : Bool; // Puffer leeren normal + xInBufferReleaseNext : Bool; // Puffer leeren für Nachbarn + arInSep : Array[1..5] of Struct // Separatoren der Linien + stSenTrolley : "UDT_Sensor"; + stSettings : "SettingsSeparator"; + END_STRUCT; + arInJamSensor : Array[1..5] of "UDT_Sensor"; // Jamsensoren der Linien + stInSenJamExit : "UDT_Sensor"; // Stausensor Exitstrecke + stInPriorityManager : "UDT_Response"; // Schnittstelle Prioritätenmanager (z.B. bei Kreuzungen) + stInSettings : Struct + nDestGeneral : Int; + nConvStations : Int; + nStationsMax : Int; + nStorageThreshold : Int := 10; + nNoOfLines : USInt := 5; + nNoOfPositions : USInt := 70; + sJamSrc : String; + sJamDest : String; + END_STRUCT; + END_VAR + + VAR_OUTPUT + xOutBypass : Bool; + nOutLineNr : Int; + xOutReadyToReceive : Bool; + nOutFillLevel : Int; // in Prozent + xOutFull : Bool; + arOutSwitchLine : Array[1..5] of Bool; + nOutStateLast : Int; + nOutActNo : Int; // aktuelle Linie 1-5, oder 0 falls inaktiv + xOutSwitchExitReady : Bool; + xOutSepExitRelease : Bool; + xOutCarouselReq : Bool; + stOutPriorityManager : "UDT_Request"; // Schnittstelle Prioritätenmanager (z.B. bei Kreuzungen) + arOutSeparatorStore : Array[1..5] of Bool; // Ausgänge Separator Lagerstrecken Ventil + END_VAR + + VAR_IN_OUT + stInOutControlUnitCabinet : "UDT_MainState"; // Hauptzustandsmaschine + arInOutStorageLines : Array[*] of "stStorageLine"; // Daten Lagerlinien + arInOutJamExit : Array[*] of "stCarrier"; // Jam nach Linien-Separatoren + stInOutJamExit : "stJamData"; // Konfig+Status-Daten Staubereich Ausgang 1 + stInOutHMI : "UDT_HMI_TRO_PinStore"; // HMI Schnittstelle Separator Lagerlinien + END_VAR + + VAR + fbStateManagerE : "FB_StateManager"; // Schrittkette eingangsseitig + fbStateManagerA : "FB_StateManager"; // Schrittkette ausgangsseitig + arfbSeparatorStorage { S7_SetPoint := 'False'} : Array[1..5] of "FB_ILS_STRO_Sep"; // Aufruf Separatoren Lagerlinien + nStateE : Int; // Schritt eingangsseitig + nStateA : Int; // Schritt ausgangsseitig + sStateTextE : String[100] := ''; // Aktueller State der Schrittkette (textuell) + sStateTextA : String[100]; + nLineNr { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : Int; + nSepNr : Int; + xBypassNextBoom : Bool; + xStart : Bool; + END_VAR + VAR RETAIN + nActLine : Int; + END_VAR + VAR + nLastLine : Int; + nTestStorageOut : Int := 1; + stDummyCarrier { S7_SetPoint := 'False'} : "stCarrier"; + tOnSvReleaseSep {InstructionName := 'TON_TIME'; LibVersion := '1.0'; S7_SetPoint := 'False'} : TON_TIME; // Supervision - Freigabe Separator + xVersatz : Bool; + fbCarrierWaitStore1 : "FB_CarrAccumulate1Sep"; + fbCarrierWaitStore2 : "FB_CarrAccumulate1Sep"; + fbCarrierWaitStore3 : "FB_CarrAccumulate1Sep"; + fbCarrierWaitStore4 : "FB_CarrAccumulate1Sep"; + fbCarrierWaitStore5 : "FB_CarrAccumulate1Sep"; + arArrayMax : Array[1..5] of Int; + stCarrierDummy { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'; S7_SetPoint := 'False'} : "stCarrier" := (1, (), 16#01); + nArrayMax : Int; + fbEventLog_Route2 : "FB_EventLog_Booking"; + fbEventLogCorrection1 : "FB_EventLog_Correction"; + fbEventLogCorrection2 : "FB_EventLog_Correction"; + fbEventLogCarrierUnknown : "FB_EventLog_Scan"; + fbEventLogCarrierNew : "FB_EventLog_Scan"; + fbEventLogGoodRead : "FB_EventLog_Scan"; + END_VAR + + VAR_TEMP + nIdx : Int; + tmpActUnivTonE : Bool; + tmpActUnivTonA : Bool; + tmpReasonForStop : USInt; // Anhaltegrund in der Schrittkette | 0: Nichts | 5: Alle BT ausgefahren | 10: Fehler in SubTro | 15: Kein BT/NBT am Eingang | 20: Stau im nächsten MTRO | 25: NBT | 30: Falsch gefahren | 35: Initial-BT kam nicht am Ziel an | 40: Allgemeiner Fehler | 45: Abbruch durch MFR | 50: Fehler in Anfrage von MRF | 55: MFR hat TRO pausiert + arTmpStorageData : Array[1..5] of "stJamData"; + arTmpSenJamLine : Array[1..5] of "UDT_Sensor"; + arTmpSenInSepLine : Array[1..5] of "UDT_Sensor"; + arLineRelease : Array[1..5] of Bool; + xTmpSepExitRelease : Bool; + nActNo : Int; + nTmpArrayMax1 : Int; + nTmpArrayMax2 : Int; + nTmpArrayMax3 : Int; + nTmpArrayMax4 : Int; + nTmpArrayMax5 : Int; + xTmpSwitchExitReady : Bool; + xTmpSwitch : Bool; + stCognexInterfaceDummy : "stCognexInterface"; + stEmptyCarrier : "stCarrier"; + tmpCarrierEmpty : "stCarrier"; + stBookingInfo : "stEventBookingInfo"; + arEmptyCarrier : Array[1..1] of "stCarrier"; + nCounter : DInt; + xResult : Bool; + xEventLogBookExit : Bool; + arEventCorrectionInfo : Array[0..1] of "stEventCorrectionInfo"; + xUnknownCarrier : Bool; + stEventGoodRead : "stEventScanInfo"; + stEventNew : "stEventScanInfo"; + stEventUnknown : "stEventScanInfo"; + xNewCarrier : Bool; + xGoodRead : Bool; + END_VAR + + VAR CONSTANT + c0000_StepOff : Int := 0; + c0100_StepUndefined : Int := 100; + c0200_StepIdle : Int := 200; + c0400_StepWaitAndSwitch : Int := 400; + c0800_StepSwitch : Int := 800; + c0900_StepWorking : Int := 900; + c1000_StepWaitForTrolley1 : Int := 1000; // Warte auf Trolley 1 + c1200_StepWaitForChange : Int := 1200; + c1400_StepCheckSep1 : Int := 1400; // Separator checken + c1500_StepReleaseSep1 : Int := 1500; // Freigabe an Separator + c2000_StepWaitForTrolley2 : Int := 2000; // Warte auf Trolley 2 + c2300_StepCheckSep2 : Int := 2300; // Separator checken + c2400_StepCheckJam : Int := 2400; // Stau überprüfen + c2500_StepReleaseSep2 : Int := 2500; // Freigabe an Separator + cCarrierDummy : Int := 1; + END_VAR + + +BEGIN + + + REGION Schrittkette Einlagern + + (* zum Kopieren + #cxxxx_Stepxxxx: + REGION xxxx: xxxx + // akt. Zustand + #sStateText := 'xxxx'; + ///////// Ausgänge ///////// + + ///////// Statics ////////// + + ///////// Timer ////////// + + //////// Transition //////// + #nState := #cxxxx_Stepxxxx; + END_REGION + *) + + CASE #nStateE OF + #c0000_StepOff: + REGION 0000: Off + // akt. Zustand + #sStateTextE := 'Off'; + ///////// Ausgänge ///////// + + ///////// Statics ////////// + + ///////// Timer ////////// + + //////// Transition //////// + // SCHRITT 0 WIRD GEBRAUCHT! + //STATE MANAGER KÜMMERT SICH UM TRANSITION! + END_REGION + + #c0100_StepUndefined: + REGION 0100: Undefined + // akt. Zustand + #sStateTextE := 'Undefined'; + ///////// Ausgänge ///////// + + ///////// Statics ////////// + + ///////// Timer ////////// + + //////// Transition //////// + #nStateE := #c0200_StepIdle; + END_REGION + + #c0200_StepIdle: + REGION 0200: Idle + // akt. Zustand + #sStateTextE := 'Idle'; + ///////// Ausgänge ///////// + + ///////// Statics ////////// + + ///////// Timer ////////// + + //////// Transition //////// + IF NOT #xInPause THEN + FOR #nIdx := 1 TO "cNoLines" DO + IF #arInOutStorageLines[#nIdx].stData.Status.nCount (* #arTmpStorageData[#nIdx].Status.nCount *)< #arInOutStorageLines[#nIdx].stData.Config.nCapacitySet AND + NOT #arInJamSensor[#nIdx].xJam (* #arTmpSenJamLine[#nIdx].xJam *)AND NOT #xInPause THEN + #nLineNr := #nIdx; + // #xBypassNextBoom := FALSE; + EXIT; + END_IF; + END_FOR; + ELSE + IF #nInBufferNr = "cMainTro101" THEN + #xBypassNextBoom := TRUE; //geradeaus + // ELSE + // #xBypassNextBoom := FALSE; + END_IF; + END_IF; + + IF #xInBufferReq AND NOT #xInPause AND #nLineNr <> 0 AND NOT #xOutFull THEN + #nStateE := #c0400_StepWaitAndSwitch; + END_IF; + + END_REGION + + #c0400_StepWaitAndSwitch: + REGION 0400: Wait and switch + // akt. Zustand + #sStateTextE := 'Wait and switch'; + ///////// Ausgänge ///////// + + ///////// Statics ////////// + + ///////// Timer ////////// + + //////// Transition //////// + IF ((NOT #xBypassNextBoom AND #nInBufferNr = "cMainTro101") OR + (#nInBufferNr = "cMainTro102")) AND #fbStateManagerE.tOutTimeInStep > T#3s THEN + #nStateE := #c0900_StepWorking; + ELSIF #xBypassNextBoom AND #nInBufferNr = "cMainTro101" AND #fbStateManagerE.tOutTimeInStep > T#12s THEN + #xBypassNextBoom := FALSE; + #nStateE := #c0900_StepWorking; + ELSIF NOT #xInBufferReq THEN + #nStateE := #c0200_StepIdle; + END_IF; + END_REGION + + #c0900_StepWorking: + REGION 900: Working + // akt. Zustand + #sStateTextE := 'Working'; + ///////// Ausgänge ///////// + // #arOutSwitchLine[#xLineNr] := TRUE; + ///////// Statics ////////// + + ///////// Timer ////////// + + //////// Transition //////// + IF (* NOT #xInBufferReq *) (#xInPause AND #fbStateManagerE.tOutTimeInStep > T#5s) OR + #arInOutStorageLines[#nLineNr].stData.Status.nCount (* #arTmpStorageData[#nLineNr].Status.nCount *)>= #arInOutStorageLines[#nLineNr].stData.Config.nCapacitySet OR + #arInJamSensor[#nLineNr].xJam (* #arTmpSenJamLine[#nLineNr].xJam *)THEN + #nStateE := #c1200_StepWaitForChange; + END_IF; + END_REGION + + #c1200_StepWaitForChange: + REGION 1200: Wait for change + // akt. Zustand + #sStateTextE := 'Wait for change'; + ///////// Ausgänge ///////// + // #arOutSwitchLine[#xLineNr] := TRUE; + ///////// Statics ////////// + + ///////// Timer ////////// + + //////// Transition //////// + IF #fbStateManagerE.tOutTimeInStep > T#8s THEN + #nStateE := #c0200_StepIdle; + END_IF; + END_REGION + END_CASE; + + END_REGION + + REGION Schrittkette Auslagern + + (* zum Kopieren + #cxxxx_Stepxxxx: + REGION xxxx: xxxx + // akt. Zustand + #sStateText := 'xxxx'; + ///////// Ausgänge ///////// + + ///////// Statics ////////// + + ///////// Timer ////////// + + //////// Transition //////// + #nState := #cxxxx_Stepxxxx; + END_REGION + *) + + CASE #nStateA OF + #c0000_StepOff: + REGION 0000: Off + // akt. Zustand + #sStateTextA := 'Off'; + ///////// Ausgänge ///////// + // #xTmpSepExitRelease := FALSE; + // #xTmpSwitchExitReady := FALSE; + // #xTmpSwitch := FALSE; + ///////// Statics ////////// + // #xBypassNextBoom := FALSE; + FOR #nIdx := 1 TO 5 DO + #arLineRelease[#nIdx] := FALSE; + END_FOR; + ///////// Timer ////////// + + //////// Transition //////// + // SCHRITT 0 WIRD GEBRAUCHT! + // #nSepNr := 0; + //STATE MANAGER KÜMMERT SICH UM TRANSITION! + END_REGION + + #c0100_StepUndefined: + REGION 0100: Undefined + // akt. Zustand + #sStateTextA := 'Undefined'; + ///////// Ausgänge ///////// + // #xTmpSepExitRelease := FALSE; + // #xTmpSwitchExitReady := FALSE; + // #xTmpSwitch := FALSE; + ///////// Statics ////////// + // #xBypassNextBoom := FALSE; + FOR #nIdx := 1 TO 5 DO + #arLineRelease[#nIdx] := FALSE; + END_FOR; + ///////// Timer ////////// + + //////// Transition //////// + // #nSepNr := 0; + #nStateA := #c1000_StepWaitForTrolley1; + END_REGION + + #c1000_StepWaitForTrolley1: + REGION 1000: Wait for Trolley + + ///////// Statics ////////// + FOR #nIdx := 1 TO 5 DO + #arLineRelease[#nIdx] := FALSE; + END_FOR; + + IF #xStart THEN + IF #nActLine = 0 THEN + #nActLine := 1; + END_IF; + + IF #nActLine <> #nLastLine THEN + #stDummyCarrier.nBarcode := 1000; + END_IF; + #nLastLine := #nActLine; + IF #arfbSeparatorStorage[#nActLine].stOutMainTro.xBtPresent AND #arInOutStorageLines[#nActLine].arCarrier[1].bStatus.%X0 THEN + #nStateA := #c1400_StepCheckSep1; + ELSIF (NOT #arfbSeparatorStorage[#nActLine].stOutMainTro.xBtPresent OR NOT #arInOutStorageLines[#nActLine].arCarrier[1].bStatus.%X0) AND + #fbStateManagerA.tOutTimeInStep > T#3s THEN + FOR #nIdx := 1 TO 5 DO + IF #arfbSeparatorStorage[#nIdx].stOutMainTro.xBtPresent AND #arInOutStorageLines[#nIdx].arCarrier[1].bStatus.%X0 = TRUE THEN + #nActLine := #nIdx; + #nLastLine := #nActLine; + #nStateA := #c1400_StepCheckSep1; + EXIT; + END_IF; + END_FOR; + END_IF; + END_IF; + END_REGION + #c1400_StepCheckSep1: + REGION 1400: Check Separator + + FOR #nIdx := 1 TO 5 DO + #arLineRelease[#nIdx] := FALSE; + END_FOR; + + CASE #nActLine OF + 1: + IF #arfbSeparatorStorage[#nActLine].stOutMainTro.nStatus = "SepState_WaitForReq" THEN // Separator ist bereit + #nStateA := #c1500_StepReleaseSep1; + ELSIF #fbStateManagerE.tOutUnivTonR > T#3s THEN + #tmpReasonForStop := "Rsn_SubError"; // SubTRO: Separator ist nicht bereit + END_IF; + 2: + IF #arfbSeparatorStorage[#nActLine].stOutMainTro.nStatus = "SepState_WaitForReq" THEN // Separator ist bereit + #nStateA := #c1500_StepReleaseSep1; + ELSIF #fbStateManagerE.tOutUnivTonR > T#3s THEN + #tmpReasonForStop := "Rsn_SubError"; // SubTRO: Separator ist nicht bereit + END_IF; + 3: + IF #arfbSeparatorStorage[#nActLine].stOutMainTro.nStatus = "SepState_WaitForReq" THEN // Separator ist bereit + #nStateA := #c1500_StepReleaseSep1; + ELSIF #fbStateManagerE.tOutUnivTonR > T#3s THEN + #tmpReasonForStop := "Rsn_SubError"; // SubTRO: Separator ist nicht bereit + END_IF; + 4: + IF #arfbSeparatorStorage[#nActLine].stOutMainTro.nStatus = "SepState_WaitForReq" THEN // Separator ist bereit + #nStateA := #c1500_StepReleaseSep1; + ELSIF #fbStateManagerE.tOutUnivTonR > T#3s THEN + #tmpReasonForStop := "Rsn_SubError"; // SubTRO: Separator ist nicht bereit + END_IF; + 5: + IF #arfbSeparatorStorage[#nActLine].stOutMainTro.nStatus = "SepState_WaitForReq" THEN // Separator ist bereit + #nStateA := #c1500_StepReleaseSep1; + ELSIF #fbStateManagerE.tOutUnivTonR > T#3s THEN + #tmpReasonForStop := "Rsn_SubError"; // SubTRO: Separator ist nicht bereit + END_IF; + END_CASE; + + END_REGION + + #c1500_StepReleaseSep1: + REGION 1500: Release Sep 1 + // akt. Zustand + #sStateTextA := 'Leave Sep 1'; + + ///////// Ausgänge ///////// + ///////// Statics ////////// + + FOR #nIdx := 1 TO 5 DO + IF #nIdx = #nActLine THEN + #arLineRelease[#nIdx] := TRUE; + ELSE + #arLineRelease[#nIdx] := FALSE; + END_IF; + END_FOR; + + + //////// Transition //////// + CASE #nActLine OF + 1: // Statement section case 1 + IF #arfbSeparatorStorage[#nActLine].stOutMainTro.nStatus = "SepState_Finish" THEN + #nStateA := #c2000_StepWaitForTrolley2; + ELSIF #arLineRelease[#nActLine] AND #tOnSvReleaseSep.Q THEN + #tmpReasonForStop := "Rsn_SubError"; // Timeout-Fehler im SubTRO "Separator": Freigabe erteilt, aber Separator gibt keine Rückmeldung an MainTRO + END_IF; + 2: + IF #arfbSeparatorStorage[#nActLine].stOutMainTro.nStatus = "SepState_Finish" THEN + #nStateA := #c2000_StepWaitForTrolley2; + ELSIF #arLineRelease[#nActLine] AND #tOnSvReleaseSep.Q THEN + #tmpReasonForStop := "Rsn_SubError"; // Timeout-Fehler im SubTRO "Separator": Freigabe erteilt, aber Separator gibt keine Rückmeldung an MainTRO + END_IF; + 3: + IF #arfbSeparatorStorage[#nActLine].stOutMainTro.nStatus = "SepState_Finish" THEN + #nStateA := #c2000_StepWaitForTrolley2; + ELSIF #arLineRelease[#nActLine] AND #tOnSvReleaseSep.Q THEN + #tmpReasonForStop := "Rsn_SubError"; // Timeout-Fehler im SubTRO "Separator": Freigabe erteilt, aber Separator gibt keine Rückmeldung an MainTRO + END_IF; + 4: + IF #arfbSeparatorStorage[#nActLine].stOutMainTro.nStatus = "SepState_Finish" THEN + #nStateA := #c2000_StepWaitForTrolley2; + ELSIF #arLineRelease[#nActLine] AND #tOnSvReleaseSep.Q THEN + #tmpReasonForStop := "Rsn_SubError"; // Timeout-Fehler im SubTRO "Separator": Freigabe erteilt, aber Separator gibt keine Rückmeldung an MainTRO + END_IF; + 5: + IF #arfbSeparatorStorage[#nActLine].stOutMainTro.nStatus = "SepState_Finish" THEN + #nStateA := #c2000_StepWaitForTrolley2; + ELSIF #arLineRelease[#nActLine] AND #tOnSvReleaseSep.Q THEN + #tmpReasonForStop := "Rsn_SubError"; // Timeout-Fehler im SubTRO "Separator": Freigabe erteilt, aber Separator gibt keine Rückmeldung an MainTRO + END_IF; + + END_CASE; + + END_REGION + + #c2000_StepWaitForTrolley2: + REGION 2000: Wait for Trolley 2 + //akt. Zustand + #sStateTextA := 'Wait for Trolley 2'; + ///////// Ausgänge ///////// + + ///////// Statics ////////// + + FOR #nIdx := 1 TO 5 DO + #arLineRelease[#nIdx] := FALSE; + END_FOR; + + + //Transition + CASE #nActLine OF + 1: // Statement section case 1 + IF #arfbSeparatorStorage[#nActLine].stOutMainTro.xBtPresent AND #arInOutStorageLines[#nActLine].arCarrier[1].bStatus.%X0 THEN + #nStateA := #c2300_StepCheckSep2; + END_IF; + 2: // Statement section case 1 + IF #arfbSeparatorStorage[#nActLine].stOutMainTro.xBtPresent AND #arInOutStorageLines[#nActLine].arCarrier[1].bStatus.%X0 THEN + #nStateA := #c2300_StepCheckSep2; + END_IF; + + 3: // Statement section case 1 + IF #arfbSeparatorStorage[#nActLine].stOutMainTro.xBtPresent AND #arInOutStorageLines[#nActLine].arCarrier[1].bStatus.%X0 THEN + #nStateA := #c2300_StepCheckSep2; + END_IF; + + 4: // Statement section case 1 + IF #arfbSeparatorStorage[#nActLine].stOutMainTro.xBtPresent AND #arInOutStorageLines[#nActLine].arCarrier[1].bStatus.%X0 THEN + #nStateA := #c2300_StepCheckSep2; + END_IF; + + 5: // Statement section case 1 + IF #arfbSeparatorStorage[#nActLine].stOutMainTro.xBtPresent AND #arInOutStorageLines[#nActLine].arCarrier[1].bStatus.%X0 THEN + #nStateA := #c2300_StepCheckSep2; + END_IF; + END_CASE; + END_REGION + + #c2300_StepCheckSep2: + REGION 2300: Check Separator + FOR #nIdx := 1 TO 5 DO + #arLineRelease[#nIdx] := FALSE; + END_FOR; + + //Transition + CASE #nActLine OF + 1: // Statement section case 1 + #tmpActUnivTonA := TRUE; + IF #arfbSeparatorStorage[#nActLine].stOutMainTro.nStatus = "SepState_WaitForReq" THEN // Separator ist bereit + #nStateA := #c2400_StepCheckJam; + ELSIF #fbStateManagerE.tOutUnivTonR > T#3s THEN + #tmpReasonForStop := "Rsn_SubError"; // SubTRO: Separator ist nicht bereit + END_IF; + 2: // Statement section case 1 + #tmpActUnivTonA := TRUE; + IF #arfbSeparatorStorage[#nActLine].stOutMainTro.nStatus = "SepState_WaitForReq" THEN // Separator ist bereit + #nStateA := #c2400_StepCheckJam; + ELSIF #fbStateManagerE.tOutUnivTonR > T#3s THEN + #tmpReasonForStop := "Rsn_SubError"; // SubTRO: Separator ist nicht bereit + END_IF; + 3: // Statement section case 1 + #tmpActUnivTonA := TRUE; + IF #arfbSeparatorStorage[#nActLine].stOutMainTro.nStatus = "SepState_WaitForReq" THEN // Separator ist bereit + #nStateA := #c2400_StepCheckJam; + ELSIF #fbStateManagerE.tOutUnivTonR > T#3s THEN + #tmpReasonForStop := "Rsn_SubError"; // SubTRO: Separator ist nicht bereit + END_IF; + 4: // Statement section case 1 + #tmpActUnivTonA := TRUE; + IF #arfbSeparatorStorage[#nActLine].stOutMainTro.nStatus = "SepState_WaitForReq" THEN // Separator ist bereit + #nStateA := #c2400_StepCheckJam; + ELSIF #fbStateManagerE.tOutUnivTonR > T#3s THEN + #tmpReasonForStop := "Rsn_SubError"; // SubTRO: Separator ist nicht bereit + END_IF; + 5: // Statement section case 1 + #tmpActUnivTonA := TRUE; + IF #arfbSeparatorStorage[#nActLine].stOutMainTro.nStatus = "SepState_WaitForReq" THEN // Separator ist bereit + #nStateA := #c2400_StepCheckJam; + ELSIF #fbStateManagerE.tOutUnivTonR > T#3s THEN + #tmpReasonForStop := "Rsn_SubError"; // SubTRO: Separator ist nicht bereit + END_IF; + END_CASE; + + END_REGION + + #c2400_StepCheckJam: + REGION 2400: Check Jam + // akt. Zustand + #sStateTextA := 'Check Jam'; + ///////// Ausgänge ///////// + ///////// Statics ////////// + FOR #nIdx := 1 TO 5 DO + #arLineRelease[#nIdx] := FALSE; + END_FOR; + + ///////// Timer ////////// + //////// Transition //////// + IF (#stInOutJamExit.Status.nCount = #stInOutJamExit.Config.nCapacitySet) //Zielstaubereich ist datentechnisch voll + OR (#arInSep[1].stSettings.xPluggedJam AND #stInSenJamExit.xJam) // Stausensor *) + THEN + #tmpReasonForStop := "Rsn_JamNextError"; + ELSE + #nStateA := #c2500_StepReleaseSep2; + END_IF; + END_REGION + + #c2500_StepReleaseSep2: + REGION 2500: Release Sep Second + // akt. Zustand + #sStateTextA := 'Leave Sep'; + + ///////// Ausgänge ///////// + ///////// Statics ////////// + #stOutPriorityManager.xTransportReq := #xInSftyOk AND #xInConveyorRunOut (* AND NOT #stInMfr.xPause *); + + FOR #nIdx := 1 TO 5 DO + IF #nIdx = #nActLine THEN + #arLineRelease[#nIdx] := #xInSftyOk AND #xInConveyorRunOut AND #stInPriorityManager.xReleaseOk AND NOT #arInOutStorageLines[#nIdx].stData.Status.bByte.%X3; + ELSE + #arLineRelease[#nIdx] := FALSE; + END_IF; + END_FOR; + + //////// Transition //////// + //Transition + + FOR #nIdx := 1 TO #nActLine DO + IF #nIdx = #nActLine THEN + IF #arfbSeparatorStorage[#nActLine].stOutMainTro.nStatus = "SepState_Finish" THEN + //Hier könnte man noch einbauen, ob optional nicht gebucht wird, z.B. für Fehlerkorrektur + REGION Daten buchen Store1 -> ExitJam + IF NOT #xVersatz THEN // Alles normal buchen + "FC_Route"(xInSingle := FALSE, + xInSeparate := FALSE, + xInSepEdge := TRUE, + xInSensor := FALSE, + xInDelay := FALSE, + stInCarrier := #stEmptyCarrier, + stOutBookingInfo => #stBookingInfo, + arJamEntr := #arInOutStorageLines[#nActLine].arCarrier, + arOnTheWay := #arEmptyCarrier, + arJamExit := #arInOutJamExit); + + ELSE // Dummy (=ohne Daten) buchen + "FC_TSHR_AddAtEnd"(stInTrolley := #stDummyCarrier, + nOutCounter => #nCounter, + xOutResult => #xResult, + arTSHR := #arInOutJamExit); + + #stDummyCarrier.nBarcode += 1; + + IF #stDummyCarrier.nBarcode > 1999 THEN + #stDummyCarrier.nBarcode := 1000; + END_IF; + END_IF; + #xVersatz := FALSE; + END_REGION ; + #xEventLogBookExit := TRUE; + #nStateA := #c1000_StepWaitForTrolley1; + EXIT; + END_IF; + END_IF; + END_FOR; + + END_REGION + END_CASE; + + END_REGION + + REGION StateManager Einlagern + #fbStateManagerE.stInSettings.nStartState := #c0100_StepUndefined; + #fbStateManagerE.stInSettings.nStartStateTestMode := #c0000_StepOff; + #fbStateManagerE.stInSettings.xActUnivTOn := TRUE; + #fbStateManagerE.stInSettings.xRestartAtStartState := FALSE; + #fbStateManagerE(xInFunctionEnabled := #stInOutControlUnitCabinet.xRunning, + // xInReset := (* #stInMfr.xCancel OR *)#xInCancel, + xInRunUnivTOn := #tmpActUnivTonE, + nInOutState := #nStateE); + END_REGION + + REGION StateManager Auslagern + #fbStateManagerA.stInSettings.nStartState := #c0100_StepUndefined; + #fbStateManagerA.stInSettings.nStartStateTestMode := #c0000_StepOff; + #fbStateManagerA.stInSettings.xActUnivTOn := TRUE; + #fbStateManagerA.stInSettings.xRestartAtStartState := FALSE; + #fbStateManagerA(xInFunctionEnabled := #stInOutControlUnitCabinet.xRunning, + // xInReset := (* #stInMfr.xCancel OR *)#xInCancel, + xInRunUnivTOn := #tmpActUnivTonA, + nInOutState := #nStateA); + END_REGION + + (* REGION Separator Buffer Lines + + // #fb1Sep1SwiExit.stInSeparator1.Settings.nSeparatorNo := #nActNo; + // #fb1Sep1SwiExit.stInSeparator1.Settings.tDelayToNextItem := "TimeForSepWaiting_Short"; + // #fb1Sep1SwiExit.stInSeparator1.Settings.tTrailingTime := t#0ms; + // #fb1Sep1SwiExit.stInSeparator1.Settings.tHandlingTime := t#0ms; + // #fb1Sep1SwiExit.stInSeparator1.Settings.tJam := "TimeForSepJam"; + // #fb1Sep1SwiExit.stInSeparator1.Settings.xPluggedJam := TRUE; + // #fb1Sep1SwiExit.stInSeparator1.Settings.xPluggedPart := FALSE; + // #fb1Sep1SwiExit.stInSeparator1.Settings.xPluggedScanner := FALSE; + // #fb1Sep1SwiExit.stInSenJam2 := #stInSenJamExitLeft; + // #fb1Sep1SwiExit.stInSenJam3 := #stInSenJamExitRight; + + // #fb1Sep1SwiExit.stInSwitch1.Settings.nSwitchNo := 1; + // #fb1Sep1SwiExit.stInSwitch1.Settings.xPluggedExSen3 := TRUE; + // #fb1Sep1SwiExit.stInSwitch1.Settings.xPluggedExSen4 := TRUE; + + // #fb1Sep1SwiExit.stInPriorityManager.xReleaseOk := #xTmpSwitchExitReady; + + // CASE #nActNo OF + // 1: + // #fb1Sep1SwiExit.stInSeparator1.stSenInSep := #stInSenInSep1; + // 2: + // #fb1Sep1SwiExit.stInSeparator1.stSenInSep := #stInSenInSep2; + // 3: + // #fb1Sep1SwiExit.stInSeparator1.stSenInSep := #stInSenInSep3; + // 4: + // #fb1Sep1SwiExit.stInSeparator1.stSenInSep := #stInSenInSep4; + // 5: + // #fb1Sep1SwiExit.stInSeparator1.stSenInSep := #stInSenInSep5; + // ELSE + // ; + // END_CASE; + + // #fb1Sep1SwiExit(nInMainTroNo := #nInBufferNr, + // xInSftyOk := #xInSafetyOk, + // xInAllRdyToStart := TRUE, + // xInCarouselRun1 := #xInCarRun, + // xInRelease := #xTmpSepExitRelease, + // stInOutMachineState := #stInOutMainState, + // stInOutCognexInterface := #stCognexInterfaceDummy, + // arInOutJamEntr1 := #arInOutCarrierLine[#nActNo], + // stInOutJamEntr1 := #arInOutJamDataLine[#nActNo], + // arInOutJamExit2 := #arInOutJamCarrierExitLeft, + // stInOutJamExit2 := #stInOutDataJamExitLeft, + // arInOutJamExit3:= #arInOutJamCarrierExitRight, + // stInOutJamExit3:= #stInOutDataJamExitRight, + // stInOutHMI := #stInOutHMI, + // nOutStateLast => #nOutStateLast, + // xOutSw1ExTo3 => #xOutSwitchExit); + + // CASE #nActNo OF + // 1: + // #arOutSepLine[1] := #fb1Sep1SwiExit.xOutStopper1; + // 2: + // #arOutSepLine[2] := #fb1Sep1SwiExit.xOutStopper1; + // 3: + // #arOutSepLine[3] := #fb1Sep1SwiExit.xOutStopper1; + // 4: + // #arOutSepLine[4] := #fb1Sep1SwiExit.xOutStopper1; + // 5: + // #arOutSepLine[5] := #fb1Sep1SwiExit.xOutStopper1; + // ELSE + // ; + // END_CASE; + + END_REGION *) + + REGION Separator BufferLines + + REGION Separator Freigabe + //Benötigtem Sep Freigabe erteilen + // FOR #nIdx1 := 1 TO #stInSettings.nNoOfLines DO + // IF #stInStorageCarrStats.stRdyToLeave.nLine = #nIdx1 THEN + // #arLineRelease[#nIdx1] := TRUE; + // END_IF; + // END_FOR; + END_REGION + + REGION Sep 1 + #nActNo := 1; + #arfbSeparatorStorage[#nActNo](stInSettings := #arInSep[#nActNo].stSettings, + xInConveyorRun := #xInConveyorRunOut, + stInTrolley := #arInSep[#nActNo].stSenTrolley, + xInReceiveReady := NOT #fbCarrierWaitStore1.xOutLockSep1 AND #arLineRelease[#nActNo] AND NOT #arInOutJamExit[#arInSep[#nActNo].stSettings.nJamLength].bStatus.%X0, + xOutStopper => #arOutSeparatorStore[#nActNo], + stInOutMainState := #stInOutControlUnitCabinet, + stInOutHMI := #stInOutHMI.UDT_Separator1, + stInOutCarrDataInJam := #arInOutStorageLines[#nActNo].arCarrier); + + REGION Carrier anstauen lassen + #fbCarrierWaitStore1.stInTimes.tFreeSen1 := T#2000ms; + #fbCarrierWaitStore1.stInTimes.tTimerWait := T#3000ms; + #fbCarrierWaitStore1(stInSensor1 := #arInSep[#nActNo].stSenTrolley, + xInConvActive := true); + END_REGION + + REGION Dummy Handling + + #arArrayMax[#nActNo] := 10; + + REGION Dummy erstellen + IF #arfbSeparatorStorage[#nActNo].stOutMainTro.xBtPresent AND + #arfbSeparatorStorage[#nActNo].stOutMainTro.nStatus = "SepState_WaitForReq" AND + #arInSep[#nActNo].stSenTrolley.tDirectChangeLast > T#3s AND // variabel machen, Dummy immer anlegen?, Unterscheidung bei Borner? + #arInOutStorageLines[#nActNo].arCarrier[1] = #tmpCarrierEmpty + THEN + #arInOutStorageLines[#nActNo].arCarrier[1].nBarcode := #cCarrierDummy; + #arInOutStorageLines[#nActNo].arCarrier[1].bStatus.%X0 := TRUE; + END_IF; + + END_REGION + + REGION Dummy löschen + IF #arArrayMax[#nActNo] > 1 THEN //Staubereich mit Capacity > 0 + IF (#arInOutStorageLines[#nActNo].arCarrier[1] = #stCarrierDummy) //Dummy an erster Position + AND #arInOutStorageLines[#nActNo].arCarrier[2] = #tmpCarrierEmpty AND //Keine Daten an zweiter Position + NOT #arInSep[#nActNo].stSenTrolley.xDirectSensor AND #arInSep[#nActNo].stSenTrolley.tDirectChangeLast > T#8s AND //keine Belegung + #arfbSeparatorStorage[#nActNo].stOutMainTro.nStatus = "SepState_WaitForBt" AND #arfbSeparatorStorage[#nActNo].#fbStateManager.tOutTimeInStep > T#8s //Separator Zustand abfragen + THEN + #arInOutStorageLines[#nActNo].arCarrier[1] := #tmpCarrierEmpty; //Dummy löschen + ELSIF (#arInOutStorageLines[#nActNo].arCarrier[1] = #stCarrierDummy) //Dasselbe wie oben aber mit nachrücken + AND (#arInOutStorageLines[#nActNo].arCarrier[2] = #stCarrierDummy OR #arInOutStorageLines[#nActNo].arCarrier[2] <> #stCarrierDummy) AND + NOT #arInSep[#nActNo].stSenTrolley.xDirectSensor AND #arInSep[#nActNo].stSenTrolley.tDirectChangeLast > T#8s AND + #arfbSeparatorStorage[#nActNo].stOutMainTro.nStatus = "SepState_WaitForBt" AND #arfbSeparatorStorage[#nActNo].#fbStateManager.tOutTimeInStep > T#8s //Separator Zustand abfragen + THEN + #arInOutStorageLines[#nActNo].arCarrier[1] := #tmpCarrierEmpty; + "FC_TSHR_Shift"(xInShiftBack := TRUE, + arTSHR := #arInOutStorageLines[#nActNo].arCarrier); + END_IF; + ELSIF #nArrayMax = 1 THEN + IF (#arInOutStorageLines[#nActNo].arCarrier[1] = #stCarrierDummy) AND + NOT #arInSep[#nActNo].stSenTrolley.xDirectSensor AND #arInSep[#nActNo].stSenTrolley.tDirectChangeLast > T#8s AND + #arfbSeparatorStorage[#nActNo].stOutMainTro.nStatus = "SepState_WaitForBt" AND #arfbSeparatorStorage[#nActNo].#fbStateManager.tOutTimeInStep > T#8s //Separator Zustand abfragen + THEN + #arInOutStorageLines[#nActNo].arCarrier[1] := #tmpCarrierEmpty; + END_IF; + END_IF; + + END_REGION + + END_REGION + + END_REGION + + REGION Sep 2 + #nActNo := 2; + IF #stInSettings.nNoOfLines >= #nActNo THEN + #arfbSeparatorStorage[#nActNo](stInSettings := #arInSep[#nActNo].stSettings, + xInConveyorRun := #xInConveyorRunOut, + stInTrolley := #arInSep[#nActNo].stSenTrolley, + xInReceiveReady := NOT #fbCarrierWaitStore2.xOutLockSep1 AND #arLineRelease[#nActNo] AND NOT #arInOutJamExit[#arInSep[#nActNo].stSettings.nJamLength].bStatus.%X0, + stInOutMainState := #stInOutControlUnitCabinet, + xOutStopper => #arOutSeparatorStore[#nActNo], + stInOutHMI := #stInOutHMI.UDT_Separator2, + stInOutCarrDataInJam := #arInOutStorageLines[#nActNo].arCarrier); + END_IF; + + REGION Carrier anstauen lassen + #fbCarrierWaitStore2.stInTimes.tFreeSen1 := T#2000ms; + #fbCarrierWaitStore2.stInTimes.tTimerWait := T#3000ms; + #fbCarrierWaitStore2(stInSensor1 := #arInSep[#nActNo].stSenTrolley, + xInConvActive := true); + END_REGION + + REGION Dummy Handling + + #arArrayMax[#nActNo] := 10; + + REGION Dummy erstellen + IF #arfbSeparatorStorage[#nActNo].stOutMainTro.xBtPresent AND + #arfbSeparatorStorage[#nActNo].stOutMainTro.nStatus = "SepState_WaitForReq" AND + #arInSep[#nActNo].stSenTrolley.tDirectChangeLast > T#3s AND // variabel machen, Dummy immer anlegen?, Unterscheidung bei Borner? + #arInOutStorageLines[#nActNo].arCarrier[1] = #tmpCarrierEmpty + THEN + #arInOutStorageLines[#nActNo].arCarrier[1].nBarcode := #cCarrierDummy; + #arInOutStorageLines[#nActNo].arCarrier[1].bStatus.%X0 := TRUE; + END_IF; + + END_REGION + + REGION Dummy löschen + IF #arArrayMax[#nActNo] > 1 THEN //Staubereich mit Capacity > 0 + IF (#arInOutStorageLines[#nActNo].arCarrier[1] = #stCarrierDummy) //Dummy an erster Position + AND #arInOutStorageLines[#nActNo].arCarrier[2] = #tmpCarrierEmpty AND //Keine Daten an zweiter Position + NOT #arInSep[#nActNo].stSenTrolley.xDirectSensor AND #arInSep[#nActNo].stSenTrolley.tDirectChangeLast > T#8s AND //keine Belegung + #arfbSeparatorStorage[#nActNo].stOutMainTro.nStatus = "SepState_WaitForBt" AND #arfbSeparatorStorage[#nActNo].#fbStateManager.tOutTimeInStep > T#8s //Separator Zustand abfragen + THEN + #arInOutStorageLines[#nActNo].arCarrier[1] := #tmpCarrierEmpty; //Dummy löschen + ELSIF (#arInOutStorageLines[#nActNo].arCarrier[1] = #stCarrierDummy) //Dasselbe wie oben aber mit nachrücken + AND (#arInOutStorageLines[#nActNo].arCarrier[2] = #stCarrierDummy OR #arInOutStorageLines[#nActNo].arCarrier[2] <> #stCarrierDummy) AND + NOT #arInSep[#nActNo].stSenTrolley.xDirectSensor AND #arInSep[#nActNo].stSenTrolley.tDirectChangeLast > T#8s AND + #arfbSeparatorStorage[#nActNo].stOutMainTro.nStatus = "SepState_WaitForBt" AND #arfbSeparatorStorage[#nActNo].#fbStateManager.tOutTimeInStep > T#8s //Separator Zustand abfragen + THEN + #arInOutStorageLines[#nActNo].arCarrier[1] := #tmpCarrierEmpty; + "FC_TSHR_Shift"(xInShiftBack := TRUE, + arTSHR := #arInOutStorageLines[#nActNo].arCarrier); + END_IF; + ELSIF #nArrayMax = 1 THEN + IF (#arInOutStorageLines[#nActNo].arCarrier[1] = #stCarrierDummy) AND + NOT #arInSep[#nActNo].stSenTrolley.xDirectSensor AND #arInSep[#nActNo].stSenTrolley.tDirectChangeLast > T#8s AND + #arfbSeparatorStorage[#nActNo].stOutMainTro.nStatus = "SepState_WaitForBt" AND #arfbSeparatorStorage[#nActNo].#fbStateManager.tOutTimeInStep > T#8s //Separator Zustand abfragen + THEN + #arInOutStorageLines[#nActNo].arCarrier[1] := #tmpCarrierEmpty; + END_IF; + END_IF; + + END_REGION + + END_REGION + + + END_REGION + + REGION Sep 3 + #nActNo := 3; + IF #stInSettings.nNoOfLines >= #nActNo THEN + #arfbSeparatorStorage[#nActNo](stInSettings := #arInSep[#nActNo].stSettings, + xInConveyorRun := #xInConveyorRunOut, + stInTrolley := #arInSep[#nActNo].stSenTrolley, + xInReceiveReady := #arLineRelease[#nActNo] AND NOT #arInOutJamExit[#arInSep[#nActNo].stSettings.nJamLength].bStatus.%X0, + stInOutMainState := #stInOutControlUnitCabinet, + xOutStopper => #arOutSeparatorStore[#nActNo], + stInOutHMI := #stInOutHMI.UDT_Separator3, + stInOutCarrDataInJam := #arInOutStorageLines[#nActNo].arCarrier); + END_IF; + + REGION Carrier anstauen lassen + #fbCarrierWaitStore3.stInTimes.tFreeSen1 := T#2000ms; + #fbCarrierWaitStore3.stInTimes.tTimerWait := T#3000ms; + #fbCarrierWaitStore3(stInSensor1 := #arInSep[#nActNo].stSenTrolley, + xInConvActive := true); + END_REGION + + REGION Dummy Handling + + #arArrayMax[#nActNo] := 10; + + REGION Dummy erstellen + IF #arfbSeparatorStorage[#nActNo].stOutMainTro.xBtPresent AND + #arfbSeparatorStorage[#nActNo].stOutMainTro.nStatus = "SepState_WaitForReq" AND + #arInSep[#nActNo].stSenTrolley.tDirectChangeLast > T#3s AND // variabel machen, Dummy immer anlegen?, Unterscheidung bei Borner? + #arInOutStorageLines[#nActNo].arCarrier[1] = #tmpCarrierEmpty + THEN + #arInOutStorageLines[#nActNo].arCarrier[1].nBarcode := #cCarrierDummy; + #arInOutStorageLines[#nActNo].arCarrier[1].bStatus.%X0 := TRUE; + END_IF; + + END_REGION + + REGION Dummy löschen + IF #arArrayMax[#nActNo] > 1 THEN //Staubereich mit Capacity > 0 + IF (#arInOutStorageLines[#nActNo].arCarrier[1] = #stCarrierDummy) //Dummy an erster Position + AND #arInOutStorageLines[#nActNo].arCarrier[2] = #tmpCarrierEmpty AND //Keine Daten an zweiter Position + NOT #arInSep[#nActNo].stSenTrolley.xDirectSensor AND #arInSep[#nActNo].stSenTrolley.tDirectChangeLast > T#8s AND //keine Belegung + #arfbSeparatorStorage[#nActNo].stOutMainTro.nStatus = "SepState_WaitForBt" AND #arfbSeparatorStorage[#nActNo].#fbStateManager.tOutTimeInStep > T#8s //Separator Zustand abfragen + THEN + #arInOutStorageLines[#nActNo].arCarrier[1] := #tmpCarrierEmpty; //Dummy löschen + ELSIF (#arInOutStorageLines[#nActNo].arCarrier[1] = #stCarrierDummy) //Dasselbe wie oben aber mit nachrücken + AND (#arInOutStorageLines[#nActNo].arCarrier[2] = #stCarrierDummy OR #arInOutStorageLines[#nActNo].arCarrier[2] <> #stCarrierDummy) AND + NOT #arInSep[#nActNo].stSenTrolley.xDirectSensor AND #arInSep[#nActNo].stSenTrolley.tDirectChangeLast > T#8s AND + #arfbSeparatorStorage[#nActNo].stOutMainTro.nStatus = "SepState_WaitForBt" AND #arfbSeparatorStorage[#nActNo].#fbStateManager.tOutTimeInStep > T#8s //Separator Zustand abfragen + THEN + #arInOutStorageLines[#nActNo].arCarrier[1] := #tmpCarrierEmpty; + "FC_TSHR_Shift"(xInShiftBack := TRUE, + arTSHR := #arInOutStorageLines[#nActNo].arCarrier); + END_IF; + ELSIF #nArrayMax = 1 THEN + IF (#arInOutStorageLines[#nActNo].arCarrier[1] = #stCarrierDummy) AND + NOT #arInSep[#nActNo].stSenTrolley.xDirectSensor AND #arInSep[#nActNo].stSenTrolley.tDirectChangeLast > T#8s AND + #arfbSeparatorStorage[#nActNo].stOutMainTro.nStatus = "SepState_WaitForBt" AND #arfbSeparatorStorage[#nActNo].#fbStateManager.tOutTimeInStep > T#8s //Separator Zustand abfragen + THEN + #arInOutStorageLines[#nActNo].arCarrier[1] := #tmpCarrierEmpty; + END_IF; + END_IF; + + END_REGION + + END_REGION + + END_REGION + + REGION Sep 4 + #nActNo := 4; + IF #stInSettings.nNoOfLines >= #nActNo THEN + #arfbSeparatorStorage[#nActNo](stInSettings := #arInSep[#nActNo].stSettings, + xInConveyorRun := #xInConveyorRunOut, + stInTrolley := #arInSep[#nActNo].stSenTrolley, + xInReceiveReady := #arLineRelease[#nActNo] AND NOT #arInOutJamExit[#arInSep[#nActNo].stSettings.nJamLength].bStatus.%X0, + stInOutMainState := #stInOutControlUnitCabinet, + xOutStopper => #arOutSeparatorStore[#nActNo], + stInOutHMI := #stInOutHMI.UDT_Separator4, + stInOutCarrDataInJam := #arInOutStorageLines[#nActNo].arCarrier); + END_IF; + + REGION Carrier anstauen lassen + #fbCarrierWaitStore4.stInTimes.tFreeSen1 := T#2000ms; + #fbCarrierWaitStore4.stInTimes.tTimerWait := T#3000ms; + #fbCarrierWaitStore4(stInSensor1 := #arInSep[#nActNo].stSenTrolley, + xInConvActive := true); + END_REGION + + REGION Dummy Handling + + #arArrayMax[#nActNo] := 10; + + REGION Dummy erstellen + IF #arfbSeparatorStorage[#nActNo].stOutMainTro.xBtPresent AND + #arfbSeparatorStorage[#nActNo].stOutMainTro.nStatus = "SepState_WaitForReq" AND + #arInSep[#nActNo].stSenTrolley.tDirectChangeLast > T#3s AND // variabel machen, Dummy immer anlegen?, Unterscheidung bei Borner? + #arInOutStorageLines[#nActNo].arCarrier[1] = #tmpCarrierEmpty + THEN + #arInOutStorageLines[#nActNo].arCarrier[1].nBarcode := #cCarrierDummy; + #arInOutStorageLines[#nActNo].arCarrier[1].bStatus.%X0 := TRUE; + END_IF; + + END_REGION + + REGION Dummy löschen + IF #arArrayMax[#nActNo] > 1 THEN //Staubereich mit Capacity > 0 + IF (#arInOutStorageLines[#nActNo].arCarrier[1] = #stCarrierDummy) //Dummy an erster Position + AND #arInOutStorageLines[#nActNo].arCarrier[2] = #tmpCarrierEmpty AND //Keine Daten an zweiter Position + NOT #arInSep[#nActNo].stSenTrolley.xDirectSensor AND #arInSep[#nActNo].stSenTrolley.tDirectChangeLast > T#8s AND //keine Belegung + #arfbSeparatorStorage[#nActNo].stOutMainTro.nStatus = "SepState_WaitForBt" AND #arfbSeparatorStorage[#nActNo].#fbStateManager.tOutTimeInStep > T#8s //Separator Zustand abfragen + THEN + #arInOutStorageLines[#nActNo].arCarrier[1] := #tmpCarrierEmpty; //Dummy löschen + ELSIF (#arInOutStorageLines[#nActNo].arCarrier[1] = #stCarrierDummy) //Dasselbe wie oben aber mit nachrücken + AND (#arInOutStorageLines[#nActNo].arCarrier[2] = #stCarrierDummy OR #arInOutStorageLines[#nActNo].arCarrier[2] <> #stCarrierDummy) AND + NOT #arInSep[#nActNo].stSenTrolley.xDirectSensor AND #arInSep[#nActNo].stSenTrolley.tDirectChangeLast > T#8s AND + #arfbSeparatorStorage[#nActNo].stOutMainTro.nStatus = "SepState_WaitForBt" AND #arfbSeparatorStorage[#nActNo].#fbStateManager.tOutTimeInStep > T#8s //Separator Zustand abfragen + THEN + #arInOutStorageLines[#nActNo].arCarrier[1] := #tmpCarrierEmpty; + "FC_TSHR_Shift"(xInShiftBack := TRUE, + arTSHR := #arInOutStorageLines[#nActNo].arCarrier); + END_IF; + ELSIF #nArrayMax = 1 THEN + IF (#arInOutStorageLines[#nActNo].arCarrier[1] = #stCarrierDummy) AND + NOT #arInSep[#nActNo].stSenTrolley.xDirectSensor AND #arInSep[#nActNo].stSenTrolley.tDirectChangeLast > T#8s AND + #arfbSeparatorStorage[#nActNo].stOutMainTro.nStatus = "SepState_WaitForBt" AND #arfbSeparatorStorage[#nActNo].#fbStateManager.tOutTimeInStep > T#8s //Separator Zustand abfragen + THEN + #arInOutStorageLines[#nActNo].arCarrier[1] := #tmpCarrierEmpty; + END_IF; + END_IF; + + END_REGION + + END_REGION + END_REGION + + REGION Sep 5 + #nActNo := 5; + IF #stInSettings.nNoOfLines >= #nActNo THEN + #arfbSeparatorStorage[#nActNo](stInSettings := #arInSep[#nActNo].stSettings, + xInConveyorRun := #xInConveyorRunOut, + stInTrolley := #arInSep[#nActNo].stSenTrolley, + xInReceiveReady := #arLineRelease[#nActNo] AND NOT #arInOutJamExit[#arInSep[#nActNo].stSettings.nJamLength].bStatus.%X0, + stInOutMainState := #stInOutControlUnitCabinet, + xOutStopper => #arOutSeparatorStore[#nActNo], + stInOutHMI := #stInOutHMI.UDT_Separator5, + stInOutCarrDataInJam := #arInOutStorageLines[#nActNo].arCarrier); + END_IF; + + REGION Carrier anstauen lassen + #fbCarrierWaitStore5.stInTimes.tFreeSen1 := T#2000ms; + #fbCarrierWaitStore5.stInTimes.tTimerWait := T#3000ms; + #fbCarrierWaitStore5(stInSensor1 := #arInSep[#nActNo].stSenTrolley, + xInConvActive := true); + END_REGION + + REGION Dummy Handling + + #arArrayMax[#nActNo] := 10; + + REGION Dummy erstellen + IF #arfbSeparatorStorage[#nActNo].stOutMainTro.xBtPresent AND + #arfbSeparatorStorage[#nActNo].stOutMainTro.nStatus = "SepState_WaitForReq" AND + #arInSep[#nActNo].stSenTrolley.tDirectChangeLast > T#3s AND // variabel machen, Dummy immer anlegen?, Unterscheidung bei Borner? + #arInOutStorageLines[#nActNo].arCarrier[1] = #tmpCarrierEmpty + THEN + #arInOutStorageLines[#nActNo].arCarrier[1].nBarcode := #cCarrierDummy; + #arInOutStorageLines[#nActNo].arCarrier[1].bStatus.%X0 := TRUE; + END_IF; + + END_REGION + + REGION Dummy löschen + IF #arArrayMax[#nActNo] > 1 THEN //Staubereich mit Capacity > 0 + IF (#arInOutStorageLines[#nActNo].arCarrier[1] = #stCarrierDummy) //Dummy an erster Position + AND #arInOutStorageLines[#nActNo].arCarrier[2] = #tmpCarrierEmpty AND //Keine Daten an zweiter Position + NOT #arInSep[#nActNo].stSenTrolley.xDirectSensor AND #arInSep[#nActNo].stSenTrolley.tDirectChangeLast > T#8s AND //keine Belegung + #arfbSeparatorStorage[#nActNo].stOutMainTro.nStatus = "SepState_WaitForBt" AND #arfbSeparatorStorage[#nActNo].#fbStateManager.tOutTimeInStep > T#8s //Separator Zustand abfragen + THEN + #arInOutStorageLines[#nActNo].arCarrier[1] := #tmpCarrierEmpty; //Dummy löschen + ELSIF (#arInOutStorageLines[#nActNo].arCarrier[1] = #stCarrierDummy) //Dasselbe wie oben aber mit nachrücken + AND (#arInOutStorageLines[#nActNo].arCarrier[2] = #stCarrierDummy OR #arInOutStorageLines[#nActNo].arCarrier[2] <> #stCarrierDummy) AND + NOT #arInSep[#nActNo].stSenTrolley.xDirectSensor AND #arInSep[#nActNo].stSenTrolley.tDirectChangeLast > T#8s AND + #arfbSeparatorStorage[#nActNo].stOutMainTro.nStatus = "SepState_WaitForBt" AND #arfbSeparatorStorage[#nActNo].#fbStateManager.tOutTimeInStep > T#8s //Separator Zustand abfragen + THEN + #arInOutStorageLines[#nActNo].arCarrier[1] := #tmpCarrierEmpty; + "FC_TSHR_Shift"(xInShiftBack := TRUE, + arTSHR := #arInOutStorageLines[#nActNo].arCarrier); + END_IF; + ELSIF #nArrayMax = 1 THEN + IF (#arInOutStorageLines[#nActNo].arCarrier[1] = #stCarrierDummy) AND + NOT #arInSep[#nActNo].stSenTrolley.xDirectSensor AND #arInSep[#nActNo].stSenTrolley.tDirectChangeLast > T#8s AND + #arfbSeparatorStorage[#nActNo].stOutMainTro.nStatus = "SepState_WaitForBt" AND #arfbSeparatorStorage[#nActNo].#fbStateManager.tOutTimeInStep > T#8s //Separator Zustand abfragen + THEN + #arInOutStorageLines[#nActNo].arCarrier[1] := #tmpCarrierEmpty; + END_IF; + END_IF; + + END_REGION + + END_REGION + END_REGION + + END_REGION + + REGION Ausgänge + + (* VON PIN STORE KOPIERT + REGION Output + #xOutConvReqSort := (#nStateE = #c1500_StepReleaseSep1) OR (#nStateE = #c2500_StepReleaseSep2); //TRUE;//#fbSeparatorPin.xOutConveyorRequest; + #xOutConvReqExit := (#nStateA = #c1500_StepReleaseSep1) OR (#nStateA = #c2500_StepReleaseSep2); + + FOR #nIdx2 := 1 TO #cUnloadingStations DO + IF #arfbStationUnloadPin[#nIdx2].xOutUnloadingError THEN + #xOutUnloadingError := TRUE; + EXIT; + ELSE + #xOutUnloadingError := FALSE; + END_IF; + END_FOR; + + #xOutCorrection := #xTmpCorrection; + END_REGION + *) + + + REGION Einlagern + IF #nLineNr = 0 (* AND #nInBufferNr = "cMainTro102" *) THEN + #nOutLineNr := 1; //nur um Bereichslängenfehler zu vermeiden + ELSE + #nOutLineNr := #nLineNr; + END_IF; + #xOutBypass := #nInBufferNr = "cMainTro101" AND #xBypassNextBoom AND #nStateE = #c0200_StepIdle; + #xOutReadyToReceive := #nStateE = #c0900_StepWorking; + #nOutFillLevel := ( + (* 100/(5*#stInStorageData1.Config.nCapacitySet)* *) + // (#stInStorageData1.Status.nCount + + // #stInStorageData2.Status.nCount + + // #stInStorageData3.Status.nCount + + // #stInStorageData4.Status.nCount + + // #stInStorageData5.Status.nCount) + (#arInOutStorageLines[1].stData.Status.nCount + + #arInOutStorageLines[2].stData.Status.nCount + + #arInOutStorageLines[3].stData.Status.nCount + + #arInOutStorageLines[4].stData.Status.nCount + + #arInOutStorageLines[5].stData.Status.nCount) + ); + IF #nOutFillLevel >= (#arInOutStorageLines[1].stData.Config.nCapacitySet + + #arInOutStorageLines[2].stData.Config.nCapacitySet + + #arInOutStorageLines[3].stData.Config.nCapacitySet + + #arInOutStorageLines[4].stData.Config.nCapacitySet + + #arInOutStorageLines[5].stData.Config.nCapacitySet) THEN + #xOutFull := TRUE; + ELSE + #xOutFull := FALSE; + END_IF; + + FOR #nIdx := 1 TO 5 DO + #arOutSwitchLine[#nIdx] := FALSE; + END_FOR; + IF #nLineNr <> 0 (* AND #nLineNr <> 6 *) AND #nStateE > #c0400_StepWaitAndSwitch THEN + #arOutSwitchLine[#nLineNr] := TRUE; + END_IF; + END_REGION + + REGION Auslagern + // chjchjc + #xOutSepExitRelease := #xTmpSepExitRelease; + #xOutSwitchExitReady := #xTmpSwitchExitReady; + + + #nOutActNo := #nSepNr; + #xOutCarouselReq := #nStateA = #c2500_StepReleaseSep2; + + END_REGION + + END_REGION + + REGION Event Logs + + REGION Event: Umbuchung Lagerlinie auf Exit + IF #nActLine = 1 THEN + #stBookingInfo.sJamSrc := 'JamStore1'; + ELSIF #nActLine = 2 THEN + #stBookingInfo.sJamSrc := 'JamStore2'; + END_IF; + + #stBookingInfo.sJamDest := #stInSettings.sJamDest; + + #fbEventLog_Route2(xInTrigger := #xEventLogBookExit, + stInEventBookingInfo := #stBookingInfo); + END_REGION + + // Pro Event wird ein Aufruf benötigt + REGION Korrekturvorgänge loggen + + #fbEventLogCorrection1(xInTrigger := #arEventCorrectionInfo[0].xTrigger, + stInEventCorrectionInfo := #arEventCorrectionInfo[0]); + + #fbEventLogCorrection2(xInTrigger := #arEventCorrectionInfo[1].xTrigger, + stInEventCorrectionInfo := #arEventCorrectionInfo[1]); + + END_REGION + + #fbEventLogCarrierUnknown(xInTrigger := #xUnknownCarrier, + stInEventScanInfo := #stEventUnknown); + + #fbEventLogCarrierNew(xInTrigger := #xNewCarrier, + stInEventScanInfo := #stEventNew); + + #fbEventLogGoodRead(xInTrigger := #xGoodRead, + stInEventScanInfo := #stEventGoodRead); + + END_REGION + REGION Letzten Schritt wegschreiben + #nOutStateLast := #fbStateManagerA.nStateLast; + END_REGION + REGION Priority Manager + #stOutPriorityManager.nTroId := #nInBufferNr; + #stOutPriorityManager.stJamExit := #stInOutJamExit; + // #stOutPriorityManager.stJamEntry := ; todo + IF #nActNo > 0 THEN + #stOutPriorityManager.stSensor := #arInSep[#nActNo].stSenTrolley; + END_IF; + #stOutPriorityManager.xMovement := #xInConveyorRunOut; + // #stOutPriorityManager.xTrolleyPresent := ; // todo für mengengesteuert + #stOutPriorityManager.xTransportReq := (* (#stActRequest.nDirection = 1) AND *)#nStateA = #c2500_StepReleaseSep2 AND #xStart; + + END_REGION + + REGION HMI + #stInOutHMI.UDT_UnloadingStation1.xInHome := NOT #arOutSwitchLine[1]; + #stInOutHMI.UDT_UnloadingStation1.xInWork := #arOutSwitchLine[1]; + + #stInOutHMI.UDT_UnloadingStation2.xInHome := NOT #arOutSwitchLine[2]; + #stInOutHMI.UDT_UnloadingStation2.xInWork := #arOutSwitchLine[2]; + + #stInOutHMI.UDT_UnloadingStation3.xInHome := NOT #arOutSwitchLine[3]; + #stInOutHMI.UDT_UnloadingStation3.xInWork := #arOutSwitchLine[3]; + + #stInOutHMI.UDT_UnloadingStation4.xInHome := NOT #arOutSwitchLine[4]; + #stInOutHMI.UDT_UnloadingStation4.xInWork := #arOutSwitchLine[4]; + + #stInOutHMI.UDT_UnloadingStation5.xInHome := NOT #arOutSwitchLine[5]; + #stInOutHMI.UDT_UnloadingStation5.xInWork := #arOutSwitchLine[5]; + + END_REGION + + +END_FUNCTION_BLOCK + diff --git a/=A01+UH01-KF00/Programmbausteine/800_Storage/FB_Pin_EmptyBuffer.scl b/=A01+UH01-KF00/Programmbausteine/800_Storage/FB_Pin_EmptyBuffer.scl new file mode 100644 index 0000000..ea4f50e --- /dev/null +++ b/=A01+UH01-KF00/Programmbausteine/800_Storage/FB_Pin_EmptyBuffer.scl @@ -0,0 +1,2796 @@ +FUNCTION_BLOCK "FB_Pin_EmptyBuffer" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + VAR_INPUT + stInEncoderParameter : Struct + nPosActDif : DInt; + nPosPitchPart : DInt; + END_STRUCT; + stInSeparatorPin : Struct // Separator Pin- Band | Lagerblock Eingang + stSenTrolley : "UDT_Sensor"; + stSettings : "SettingsSeparator"; + END_STRUCT; + arInSep : Array[1..5] of Struct + stSenTrolley : "UDT_Sensor"; + stSettings : "SettingsSeparator"; + END_STRUCT; + stInBarcodeReader : Struct // Scanner Einstellungen + Settings : "UDT_SettingsBarcodeReader"; + END_STRUCT; + arInJamSensor : Array[1..5] of "UDT_Sensor"; // Sensor Stau / Abwurf überprüfen + xInPause : Bool; // Es wird pausiert für den anderen Puffer + xInQuitLocal : Bool; // Fehler quittieren + stInStorageCarrStats : "CarrierStatisticsStore"; + xInConveyorRunIn : Bool; // Einlagerkreisel (Pin) + xInConveyorRunOut : Bool; // Auslagerkreisel + stInSensorReference : "UDT_Sensor"; + stInAddHangerSensor : "UDT_Sensor"; // Sensor, der Carrier in das SHR einfügt + stInSettings : Struct + nDestGeneral : Int; + nConvStations : Int; + nStationsMax : Int; + nStorageThreshold : Int := 10; + nNoOfLines : USInt := 5; + nNoOfPositions : USInt := 70; + sJamSrc : String; + sJamDest : String; + END_STRUCT; + stInSenJam2 : "UDT_Sensor"; + xInTestMode : Bool; // Testmodus aktivieren + xInCancel : Bool; // TRO komplett rücksetzen + xInAreaStopActive : Bool; // Bereichshalt + xInRelease : Bool; // Freigabe/Anforderung + nInMainTroNo : UInt; // TRO-Nummer + xInSftyOk : Bool; // Safety ok + xInAllRdyToStart : Bool; // Alles bereit + stInPriorityManager : "UDT_Response"; // Schnittstelle Prioritätenmanager (z.B. bei Kreuzungen) + nInTestTarget : Int; + END_VAR + + VAR_OUTPUT + arOutSwitch : Array[1..5] of Bool; // Ausgänge Ausschleusselemente + arOutUnloadingError : Array[1..5] of Bool; + xOutUnloadingError : Bool; + arOutLineOverloaded : Array[1..5] of Bool; + xOutSeparatorPin : Bool; // Ausgang Separator Pin Ventil + arOutSeparatorStore : Array[1..5] of Bool; // Ausgänge Separator Lagerstrecken Ventil + xOutConvReqSort : Bool; // Einlagerkreisel anfordern + xOutConvReqExit : Bool; // Auslagerkreisel anfordern + stOutPriorityManager : "UDT_Request"; // Schnittstelle Prioritätenmanager (z.B. bei Kreuzungen) + xOutCorrection : Bool; + END_VAR + + VAR_IN_OUT + stInOutControlUnitCabinet : "UDT_MainState"; // Hauptzustandsmaschine + arInOutStorageLines : Array[*] of "stStorageLine"; // Daten Lagerlinien + arInOutJamEntr : Array[*] of "stCarrier"; // Jam vor Separator Pin (?) + stInOutJamEntr : "stJamData"; + arInOutJamExit : Array[*] of "stCarrier"; // Jam nach Linien-Separatoren + stInOutJamExit : "stJamData"; // Konfig+Status-Daten Staubereich Ausgang 1 + arInOutJamBypass : Array[*] of "stCarrier"; + stInOutJamBypass : "stJamData"; + stInOutHMI : "UDT_HMI_TRO_PinStore"; // HMI Schnittstelle Separator Lagerlinien + stCognexInterfacePin : "stCognexInterface"; // Schnittstelle Cognex Barcode Reader + END_VAR + + VAR + stConveyorStations : "stConveyorStations"; + fbSeparatorPin { S7_SetPoint := 'False'} : "FB_ILS_STRO_Sep"; // Aufruf Separator Pin + fbCarrierWaitSepPin : "FB_CarrAccumulate1Sep"; + fbCarrierWaitStore1 : "FB_CarrAccumulate1Sep"; + fbCarrierWaitStore2 : "FB_CarrAccumulate1Sep"; + fbCarrierWaitStore3 : "FB_CarrAccumulate1Sep"; + fbCarrierWaitStore4 : "FB_CarrAccumulate1Sep"; + fbCarrierWaitStore5 : "FB_CarrAccumulate1Sep"; + arfbStationUnloadPin : Array[1..5] of "FB_StationUnloadPin"; // Aufruf Abwurfstationen + fbBarcodeReader1 : "FB_BarcodeReaderCognex"; + fbStateManagerE { S7_SetPoint := 'False'} : "FB_StateManager"; // Schrittketten Manager + fbStateManagerA : "FB_StateManager"; + END_VAR + VAR RETAIN + xStartScan { S7_SetPoint := 'True'} : Bool; + END_VAR + VAR + nBarcodeResult : DInt; + xHandshakeScan : Bool; + xReadSecondLeg : Bool; + END_VAR + VAR RETAIN + nTarget1 : USInt := 11; // Ziel vergeben Pinband + END_VAR + VAR + arfbSeparatorStorage { S7_SetPoint := 'False'} : Array[1..5] of "FB_ILS_STRO_Sep"; // Aufruf Separatoren Lagerlinien + rTrigBypass {InstructionName := 'R_TRIG'; LibVersion := '1.0'; S7_SetPoint := 'False'} : R_TRIG; + nBarcodeBypass : DInt; + END_VAR + VAR RETAIN + nStateE : Int; + nStateA : Int; + END_VAR + VAR + xReleaseTrolleySep1 : Bool; + sStateText : String; + xMTRORdy : Bool; + stCarrierDummy { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'; S7_SetPoint := 'False'} : "stCarrier" := (1, (), 16#01); + xTrolleyWithPart : Bool; + xTrolleyWoPart : Bool; + tOnSvReleaseSep {InstructionName := 'TON_TIME'; LibVersion := '1.0'; S7_SetPoint := 'False'} : TON_TIME; // Supervision - Freigabe Separator + arConveyorEnable : Array[1..2] of Bool; + END_VAR + VAR RETAIN + nActLine : Int; + END_VAR + VAR + nLastLine : Int; + xCodeEven : Bool; + nBarcodeHelp : DInt; + sBarcodeString : String; + fbEventLog_Route1 : "FB_EventLog_Booking"; + fbEventLog_Route2 : "FB_EventLog_Booking"; + fbEventLogCorrection1 : "FB_EventLog_Correction"; + fbEventLogCorrection2 : "FB_EventLog_Correction"; + fbEventLogCarrierUnknown : "FB_EventLog_Scan"; + fbEventLogCarrierNew : "FB_EventLog_Scan"; + fbEventLogGoodRead : "FB_EventLog_Scan"; + nArrayMax : Int; + arArrayMax : Array[1..21] of Int; + nTestStorageOut : Int := 1; + xStart : Bool; + xHand : Bool; + stDummyCarrier : "stCarrier" := (1, 0, 16#1); + xVersatz : Bool; + END_VAR + + VAR_TEMP + nIdx1 : Int; + arStartUnloading : Array[1..5] of Bool; + arStopUnloading : Array[1..5] of Bool; + stEmptyCarrier : "stCarrier"; + stCarrierPin : "stCarrierPin"; + stBookingInfo : "stEventBookingInfo"; + arEmptyCarrier : Array[1..1] of "stCarrier"; + arLineRelease : Array[1.."cNoLines"] of Bool; + nTargetHelp : Int; + nNoOfLines : Int; + nActNo : USInt; + xTemp : Bool; + tmpActUnivTon : Bool; + tmpReasonForStop : USInt; // Anhaltegrund in der Schrittkette | 0: Nichts | 5: Alle BT ausgefahren | 10: Fehler in SubTro | 15: Kein BT/NBT am Eingang | 20: Stau im nächsten MTRO | 25: NBT | 30: Falsch gefahren | 35: Initial-BT kam nicht am Ziel an | 40: Allgemeiner Fehler | 45: Abbruch durch MFR | 50: Fehler in Anfrage von MRF | 55: MFR hat TRO pausiert + nNoOfSameTarget1 : Int; + nIdx2 : Int; + arStoreCount1 : Array[1.."cNoLines"] of Int; + xFreeAhead1 : Bool; + xSepFree : Bool; + arEventCorrectionInfo : Array[0..1] of "stEventCorrectionInfo"; + xEventLogBookSHR : Bool; + xEventLogBookExit : Bool; + stEventNew : "stEventScanInfo"; + stEventUnknown : "stEventScanInfo"; + xNewCarrier : Bool; + xGoodRead : Bool; + xUnknownCarrier : Bool; + stEventGoodRead : "stEventScanInfo"; + tmpCarrierEmpty : "stCarrier"; + xTmpCorrection : Bool; + stDummyHmiUnloading : "UDT_UnloadingStation"; + xBypass : Bool; + nCounter : DInt; + xResult : Bool; + END_VAR + + VAR CONSTANT + c0000_StepOff : Int := 0; // Schrittkette aus + c0100_StepUndefined : Int := 100; // Schrittkette undefiniert / Init + c0200_StepIdle : Int := 200; + c1000_StepWaitForTrolley1 : Int := 1000; // Warte auf Trolley 1 + c1100_StepScannerTrig1 : Int := 1100; // Scanner Triggern + c1200_StepScannerEval1 : Int := 1200; // Scanergebnis auswerten + c1300_StepCheckLoad : Int := 1300; // Beladung prüfen + c1400_StepCheckSep1 : Int := 1400; // Separator checken + c1500_StepReleaseSep1 : Int := 1500; // Freigabe an Separator + c2000_StepWaitForTrolley2 : Int := 2000; // Warte auf Trolley 2 + c2100_StepScannerTrig2 : Int := 2100; // Scanner Triggern (nur wenn 1.Achse kein Ergebnis) + c2200_StepScannerEval2 : Int := 2200; // Scanergebnis auswerten (nur wenn 1.Achse kein Ergebnis) + c2300_StepCheckSep2 : Int := 2300; // Separator checken + c2400_StepCheckJam : Int := 2400; // Stau überprüfen + c2500_StepReleaseSep2 : Int := 2500; // Freigabe an Separator + cUnloadingStations : Int := 22; + cCarrierDummy : Int := 1; + cCarrierUnknown : Int := 2; + END_VAR + + +BEGIN + + // REGION Arraygrößen ermitteln + // #nNoOfLines := DINT_TO_INT(UPPER_BOUND(ARR := #arInOutStorageLines, DIM := 1)); + // END_REGION + + // REGION Prüfung Lager voll + // //Prüfe ob Lager voll + // FOR #nIdx1 := 1 TO USINT_TO_INT(#stInSettings.nNoOfLines) DO //Prüfe ob Lager schon voll ist oder voll wird mit denen die unterwegs sind und gib zusätzlich die resultierenden Gesamtfüllstände aus + // IF #arInOutStorageLines[#nIdx1].stData.Status.nCount < #stInSettings.nStorageThreshold AND NOT #arInOutStorageLines[#nIdx1].stData.Status.bByte.%X2 AND + // NOT #arInJamSensor[#nIdx1].xJam AND NOT #xInPause THEN + // ELSE + + // END_IF; + // END_FOR; + + // IF NOT #xFreeAhead1 THEN //Verhindere dass SepPin überhaupt rauslässt falls alles voll ist + // #xSepFree := FALSE; + // ELSE + // #xSepFree := TRUE; + // END_IF; + // END_REGION + + // REGION Schrittkette Einlagern + // CASE #nStateE OF + // #c0000_StepOff: + // REGION 0000: Off + // // akt. Zustand + // #sStateText := 'OFF'; + // ///////// Ausgänge ///////// + + // ///////// Statics ////////// + // #xReleaseTrolleySep1 := FALSE; + // #xCodeEven := FALSE; + // ///////// Timer ////////// + + // //////// Transition //////// + // // SCHRITT 0 WIRD GEBRAUCHT! + // //STATE MANAGER KÜMMERT SICH UM TRANSITION! + // END_REGION + + // #c0100_StepUndefined: + // REGION 0100: Undefined + // // akt. Zustand + // #sStateText := 'Undefined'; + // ///////// Ausgänge ///////// + + // ///////// Statics ////////// + // #xReleaseTrolleySep1 := FALSE; + // #xMTRORdy := FALSE; + // #xCodeEven := FALSE; + // ///////// Timer ////////// + + // //////// Transition //////// + // #nStateE := #c1000_StepWaitForTrolley1; + // END_REGION + + // #c1000_StepWaitForTrolley1: + // REGION 1000: Wait for Trolley + // //akt. Zustand + // #sStateText := 'Wait for Trolley'; + // ///////// Ausgänge ///////// + + // ///////// Statics ////////// + + // #xReleaseTrolleySep1 := FALSE; + // #xMTRORdy := TRUE; + // #xCodeEven := FALSE; + + // //Transition + // IF #fbSeparatorPin.stOutMainTro.xBtPresent THEN //Separator meldet Belegung + // IF #stInSeparatorPin.stSettings.xPluggedScanner THEN //Scanner verbaut? + // #nStateE := #c1100_StepScannerTrig1; //Nächster Schritt -> Scannen + // ELSIF #arInOutJamEntr[1].bStatus.%X0 THEN // Kein Scanner verbaut, aber Carrier online (z.B. Dummy wurde angelegt) + // IF #stInSeparatorPin.stSettings.xPluggedPart THEN + // #nStateE := #c1300_StepCheckLoad; // Nächster Schritt -> Beladung prüfen + // ELSE + // #nStateE := #c1400_StepCheckSep1; //Nächster Schritt -> Separator chekcen + // END_IF; + // END_IF; + // END_IF; + // END_REGION + + // #"c1100_StepScannerTrig1": + // REGION 1100: Scanner Trigger 1 + + // // akt. Zustand + // #sStateText := 'Scanner Trigger 1'; + + // ///////// Ausgänge ///////// + + // ///////// Statics ////////// + // #xReleaseTrolleySep1 := FALSE; + + // IF #fbBarcodeReader1.xOutReadyForNewScan THEN //Scanner bereit + // #xStartScan := TRUE; //Startbefehl + // END_IF; + + // ///////// Timer ////////// + + // //////// Transition //////// + + // IF #fbBarcodeReader1.xOutReadingDone THEN //Scanner Rückmeldung + // #xStartScan := FALSE; + // #nStateE := #c1200_StepScannerEval1; //Weiter + // END_IF; + // END_REGION + + // #"c1200_StepScannerEval1": + // REGION 1200: Scanner Evaluation 1 + + // // akt. Zustand + // #sStateText := 'Scanner Evaluation 1'; + + // ///////// Ausgänge ///////// + + // ///////// Statics ////////// + // #xReleaseTrolleySep1 := FALSE; + + // // Logic - TODO in eigenen FC packen?.. + + // IF #fbBarcodeReader1.xOutCodeGood THEN + // #nBarcodeResult := LINT_TO_DINT(#fbBarcodeReader1.#nOutBarcode); // Good read vom Barcode reader übernehmen + + // REGION Event log Good read + // #xGoodRead := TRUE; // Trigger + // #stEventGoodRead.nScanType := 4; + // #stEventGoodRead.sBarcode := DELETE(IN := DINT_TO_STRING(#nBarcodeResult), L := 1, P := 1); + // #stEventGoodRead.sReaderId := DELETE(IN := INT_TO_STRING(#stInBarcodeReader.Settings.#nStation), L := 1, P := 1); + // END_REGION + + + // REGION Gerade Zahl erkannt + // IF (((#nBarcodeResult / 10) MOD 100) MOD 2 <> 1) THEN //anderes Ergebnis als 1 bedeutet, (xxxxxYYx) YY=gerade, also hinteres Bein von MiniTrolley + // #xCodeEven := TRUE; //Bit sagt Separator dass hinteres Bein und nicht erstes zur Korrektur in Schrittkette + // // #nBarcodeTarget := #nBarcodeTarget - 10; //Mache danach die gerade Zahl zur ungeraden UPDATE: WEGEN 8. ZIFFER KLAPPT DAS SO NICHT + // #nBarcodeHelp := (#nBarcodeResult / 10) - 1; + + // "FC_Ean8_CheckDigit"(sInDigits := DELETE(IN := DINT_TO_STRING(IN := #nBarcodeHelp), L := 1, P := 1), + // sOutBarcode => #sBarcodeString, + // nOutBarcode => #nBarcodeResult); + + // // #sOutBarcode := #sBarcodeString; + // END_IF; + // END_REGION + + // ELSIF #fbBarcodeReader1.#xOutCodeBad THEN + // #nBarcodeResult := #arInOutJamEntr[1].nBarcode; //erwarteter Barcode wird aus JamDaten übernommen + // END_IF; + + // IF (#nBarcodeResult > 100) AND + // (#nBarcodeResult < 2147483647) AND // Good Read (2.147.483.647 Maximum von DINT) + // (#arInOutJamEntr[1].nBarcode = 0 OR #arInOutJamEntr[1].nBarcode = 1) THEN //Wenn keine Daten oder ein Dummy erwartet werden + + // #xTmpCorrection := TRUE; + + // // REGION Carr_Glob_Correction + + // // "FC_CARR_GLOB_CORRECTION"(xInStart := TRUE, //Führe Korrektur aus + // // nInBarcodeScan := #nBarcodeResult, + // // nInStation:=1, + // // xOutNotFound => #xTemp, + // // arOutEventLogInfo => #arEventCorrectionInfo, + // // InOutCarrierExpect := #arInOutJamEntr[1]); + // // END_REGION + + + // // IF NOT #xTemp THEN + // // ; + // // // #stInOutCarrier.stCarrData.nNrOfScans += 1; + // // ELSE + // // #arInOutJamEntr[1].nDestination := "cDestNONE"; //neuer Carrier // TODO + // // // #stInOutCarrier.stCarrData.nNrOfScans += 1; + // // #arInOutJamEntr[1].nBarcode := #nBarcodeResult; //Hier werden neue Carrier im System angelegt + // // #arInOutJamEntr[1].bStatus.%X0 := TRUE; + // // END_IF; + + // // REGION Event Log New Carrier + + // // #xNewCarrier := TRUE; // Trigger + // // #stEventNew.nScanType := 2; + // // #stEventNew.sBarcode := DELETE(IN := DINT_TO_STRING(#arInOutJamEntr[1].nBarcode), L := 1, P := 1); + // // #stEventNew.sDest := DELETE(IN := INT_TO_STRING(#arInOutJamEntr[1].nDestination), L := 1, P := 1); + // // #stEventNew.sReaderId := DELETE(IN := INT_TO_STRING(#stInBarcodeReader.Settings.#nStation), L := 1, P := 1); + + // // END_REGION + + // ELSIF + // (#nBarcodeResult > 100) AND + // (#nBarcodeResult < 2147483647) AND // Good Read (2.147.483.647 Maximum von DINT) + // #arInOutJamEntr[1].nBarcode = #nBarcodeResult THEN //Barcodes stimmen überein ODER es wird hier gelandet mit BadRead wobei normaler Barcode erwartet wird-> mache normal weiter + // ; + // ELSIF + // (#nBarcodeResult > 100) AND + // (#nBarcodeResult < 2147483647) AND + // #arInOutJamEntr[1].nBarcode <> #nBarcodeResult AND //Barcodes stimmen nicht überein, erwarteter Carrier enthält aber normalen Barcode + // #arInOutJamEntr[1].nBarcode <> 0 AND + // #arInOutJamEntr[1].nBarcode <> 1 THEN + + // #xTmpCorrection := TRUE; + + // // REGION Carr_Glob_Correction + + // // "FC_CARR_GLOB_CORRECTION"(xInStart := TRUE, //Führe Korrektur aus + // // nInBarcodeScan := #nBarcodeResult, + // // nInStation:=1, + // // xOutNotFound => #xTemp, + // // arOutEventLogInfo => #arEventCorrectionInfo, + // // InOutCarrierExpect := #arInOutJamEntr[1]); + // // END_REGION + + // // IF NOT #xTemp THEN + // // ; + // // // #stInOutCarrier.stCarrData.nNrOfScans += 1; + // // ELSE + // // #arInOutJamEntr[1].nDestination := "cDestNONE"; //neuer Carrier // TODO + // // // #stInOutCarrier.stCarrData.nNrOfScans += 1; + // // #arInOutJamEntr[1].nBarcode := #nBarcodeResult; //Hier werden neue Carrier im System angelegt + // // #arInOutJamEntr[1].bStatus.%X0 := TRUE; + // // END_IF; + + // // REGION Event Log New Carrier + + // // #xNewCarrier := TRUE; // Trigger + // // #stEventNew.nScanType := 2; + // // #stEventNew.sBarcode := DELETE(IN := DINT_TO_STRING(#arInOutJamEntr[1].nBarcode), L := 1, P := 1); + // // #stEventNew.sDest := DELETE(IN := INT_TO_STRING(#arInOutJamEntr[1].nDestination), L := 1, P := 1); + // // #stEventNew.sReaderId := DELETE(IN := INT_TO_STRING(#stInBarcodeReader.Settings.#nStation), L := 1, P := 1); + + // // END_REGION + // ELSE // Bad Read, falls nichts oder Dummy erwartet wird -> HANDLING TO DO!!!!!!!!!!!!!!!!!!!!!!!!!!!! + // #arInOutJamEntr[1].bStatus.%X0 := TRUE; + // #arInOutJamEntr[1].nBarcode := 2; //unbekannter Carrier mit Badread, erwartet 0 und physikalisch vorhanden + // #arInOutJamEntr[1].nDestination := 123; //todo + + // REGION Event Log unknown Carrier + + // #xUnknownCarrier := TRUE; // Trigger + // #stEventUnknown.nScanType := 3; + // #stEventUnknown.sBarcode := DELETE(IN := DINT_TO_STRING(#arInOutJamEntr[1].nBarcode), L := 1, P := 1); + // #stEventUnknown.sDest := DELETE(IN := INT_TO_STRING(#arInOutJamEntr[1].nDestination), L := 1, P := 1); + // #stEventUnknown.sReaderId := DELETE(IN := INT_TO_STRING(#stInBarcodeReader.Settings.#nStation + 50), L := 1, P := 1); + // // #stEventUnknown.sJobNo := DELETE(IN := DINT_TO_STRING(#stInOutCarrier.stLoadData.nJobNo), L := 1, P := 1); + // // #stEventUnknown.sProductNo := DELETE(IN := DINT_TO_STRING(#stInOutCarrier.stLoadData.nProductNo), L := 1, P := 1); + + // END_REGION + + // END_IF; + + // #xHandshakeScan := TRUE; + // ///////// Timer ////////// + + // //////// Transition //////// + // IF #stInSeparatorPin.stSettings.xPluggedPart THEN + // #nStateE := #c1300_StepCheckLoad; + // ELSIF #xCodeEven THEN + // #xCodeEven := FALSE; + // #nStateE := #c2000_StepWaitForTrolley2; //Scanner bestätigt zweites Bein gelesen -> Korrigieren! + // ELSE + // #nStateE := #c1400_StepCheckSep1; + // END_IF; + + // END_REGION + // #c1300_StepCheckLoad: + // REGION 1300: Check Load + + // // akt. Zustand + // #sStateText := 'Check Load'; + + // ///////// Ausgänge ///////// + // ///////// Statics ////////// + // #xHandshakeScan := FALSE; + // #xReleaseTrolleySep1 := FALSE; + // ///////// Timer ////////// + + // //////// Transition //////// + // #tmpActUnivTon := TRUE; + // IF (#arInOutJamEntr[1].bStatus.%X1 AND #xTrolleyWithPart) OR //Daten und physikalisch -> beladen Ok! + // (NOT #arInOutJamEntr[1].bStatus.%X1 AND #xTrolleyWoPart) //Daten und physikalisch -> unbeladen Ok! + // THEN + // #nStateE := #c1400_StepCheckSep1; // Weiter + // ELSIF #fbStateManagerE.tOutUnivTonR > T#3s THEN + // #tmpReasonForStop := 123; // TODO: Beladekontrolle Fehler + // END_IF; + + // END_REGION + + // #c1400_StepCheckSep1: + // REGION 1400: Check Separator + // // akt. Zustand + // #sStateText := 'Check Sep'; + + // ///////// Ausgänge ///////// + // ///////// Statics ////////// + // #xReleaseTrolleySep1 := FALSE; + // ///////// Timer ////////// + + // //////// Transition //////// + // #tmpActUnivTon := TRUE; + // IF #fbSeparatorPin.stOutMainTro.nStatus = "SepState_WaitForReq" THEN // Separator ist bereit + // #nStateE := #c1500_StepReleaseSep1; + // ELSIF #fbStateManagerE.tOutUnivTonR > T#3s THEN + // #tmpReasonForStop := "Rsn_SubError"; // SubTRO: Separator ist nicht bereit + // END_IF; + + // END_REGION + + // #c1500_StepReleaseSep1: + // REGION 1500: Release Sep 1 + // // akt. Zustand + // #sStateText := 'Leave Sep 1'; + + // ///////// Ausgänge ///////// + // ///////// Statics ////////// + + // #xReleaseTrolleySep1 := #xInConveyorRunIn AND #xInSftyOk; // Erste Achse darf vereinzelt werden + + // //////// Transition //////// + // IF #fbSeparatorPin.stOutMainTro.nStatus = "SepState_Finish" THEN + // #nStateE := #c2000_StepWaitForTrolley2; + // ELSIF #xReleaseTrolleySep1 AND #tOnSvReleaseSep.Q THEN + // #tmpReasonForStop := "Rsn_SubError"; // Timeout-Fehler im SubTRO "Separator": Freigabe erteilt, aber Separator gibt keine Rückmeldung an MainTRO + // END_IF; + + // END_REGION + + // #c2000_StepWaitForTrolley2: + // REGION 2000: Wait for Trolley 2 + // //akt. Zustand + // #sStateText := 'Wait for Trolley 2'; + // ///////// Ausgänge ///////// + + // ///////// Statics ////////// + + // #xReleaseTrolleySep1 := FALSE; + + // //Korrektur 2.Bein kommt nicht + // // IF NOT #fbSeparatorPin.stOutMainTro.xBtPresent (* AND #xInCarouselRun *) AND NOT #stInSeparatorPin.stSettings.xPluggedScanner AND #fbStateManagerE.tOutTimeInStep > T#3s THEN + // // #nStateE := #c1000_StepWaitForTrolley1; + // // END_IF; + + + // //Transition + // IF #fbSeparatorPin.stOutMainTro.xBtPresent AND //Separator meldet Belegung + // #arInOutJamEntr[1].bStatus.%X0 // Carrier ist online + // AND #xInRelease //Freigabe + // THEN + // IF #xReadSecondLeg // zweites Bein muss gelesen werden (TODO!!!!) + // AND #stInSeparatorPin.stSettings.xPluggedScanner // Scanner verbaut? + // THEN + // #nStateE := #c2100_StepScannerTrig2; // Nächster Schritt -> Scannen + // ELSE + // #nStateE := #c2300_StepCheckSep2; // Nächster Schritt -> Separator + // END_IF; + // END_IF; + // END_REGION + + // #c2100_StepScannerTrig2: + // REGION 2100: Scanner Trigger 2 + + // // akt. Zustand + // #sStateText := 'Scanner Trigger 2'; + + // ///////// Ausgänge ///////// + + // ///////// Statics ////////// + // #xReleaseTrolleySep1 := FALSE; + + // IF #fbBarcodeReader1.xOutReadyForNewScan THEN + // #xStartScan := TRUE; + // END_IF; + + // ///////// Timer ////////// + + // //////// Transition //////// + + // IF #fbBarcodeReader1.xOutReadingDone THEN + // #xStartScan := FALSE; + // #nStateE := #c2200_StepScannerEval2; + // END_IF; + // END_REGION + + // #c2200_StepScannerEval2: + // REGION 2200: Scanner Evaluation 2 + + // // akt. Zustand + // #sStateText := 'Scanner Evaluation 2'; + + // ///////// Ausgänge ///////// + + // ///////// Statics ////////// + // #xReleaseTrolleySep1 := FALSE; + + // // Logic + + // IF #fbBarcodeReader1.xOutCodeGood THEN + // #nBarcodeResult := LINT_TO_DINT(#fbBarcodeReader1.#nOutBarcode); // Good read vom Barcode reader + // ELSIF #fbBarcodeReader1.#xOutCodeBad THEN + // #nBarcodeResult := #arInOutJamEntr[1].nBarcode; //erwarteter Barcode wird aus JamDaten übernommen + // END_IF; + + // IF (#nBarcodeResult > 100) AND + // (#nBarcodeResult < 2147483647) AND // Good Read (2.147.483.647 Maximum von DINT) + // (#arInOutJamEntr[1].nBarcode = 0 OR #arInOutJamEntr[1].nBarcode = 1) THEN //Wenn keine Daten oder ein Dummy erwartet werden + // REGION TODO + // (* "FC_CARR_GLOB_CORRECTION"(xInStart := TRUE, //Führe Korrektur aus + // nInBarcodeScan := #nBarcodeResult, + // nInStation := 0, // todo + // xOutNotFound => #xTemp, + // arOutEventLogInfo => #arEventCorrectionInfo, + // InOutCarrierExpect := #arInOutJamEntr1[1]); *) + // END_REGION + + + // IF NOT #xTemp THEN + // ; + // // #stInOutCarrier.stCarrData.nNrOfScans += 1; + // ELSE + // #arInOutJamEntr[1].nDestination := "cDestNONE"; //neuer Carrier // TODO + // // #stInOutCarrier.stCarrData.nNrOfScans += 1; + // #arInOutJamEntr[1].nBarcode := #nBarcodeResult; //Hier werden neue Carrier im System angelegt + // #arInOutJamEntr[1].bStatus.%X0 := TRUE; + // END_IF; + // ELSIF + // (#nBarcodeResult > 100) AND + // (#nBarcodeResult < 2147483647) AND // Good Read (2.147.483.647 Maximum von DINT) + // #arInOutJamEntr[1].nBarcode = #nBarcodeResult THEN //Barcodes stimmen überein ODER es wird hier gelandet mit BadRead wobei normaler Barcode erwartet wird-> mache normal weiter + // ; + // ELSIF + // (#nBarcodeResult > 100) AND + // (#nBarcodeResult < 2147483647) AND + // #arInOutJamEntr[1].nBarcode <> #nBarcodeResult AND //Barcodes stimmen nicht überein, erwarteter Carrier enthält aber normalen Barcode + // #arInOutJamEntr[1].nBarcode <> 0 AND + // #arInOutJamEntr[1].nBarcode <> 1 THEN + // ; + // REGION TODO + // (* "FC_CARR_GLOB_CORRECTION"(xInStart := TRUE, //Führe Korrektur aus + // nInBarcodeScan := #nBarcodeResult, + // nInStation := 0, // todo + // xOutNotFound => #xTemp, + // arOutEventLogInfo => #arEventCorrectionInfo, + // InOutCarrierExpect := #arInOutJamEntr1[1]); *) + // END_REGION + + // ELSE // Bad Read, falls nichts oder Dummy erwartet wird -> HANDLING TO DO!!!!!!!!!!!!!!!!!!!!!!!!!!!! + // #arInOutJamEntr[1].bStatus.%X0 := TRUE; + // #arInOutJamEntr[1].nBarcode := 2; //unbekannter Carrier mit Badread, erwartet 0 und physikalisch vorhanden + // #arInOutJamEntr[1].nDestination := 123; //todo + // END_IF; + + // #xHandshakeScan := TRUE; + + // ///////// Timer ////////// + + // //////// Transition //////// + // #nStateE := #c2300_StepCheckSep2; + + // END_REGION + + // #c2300_StepCheckSep2: + // REGION 2300: Check Separator + // // akt. Zustand + // #sStateText := 'Check Sep'; + + // ///////// Ausgänge ///////// + // ///////// Statics ////////// + // #xHandshakeScan := FALSE; + // #xReleaseTrolleySep1 := FALSE; + // ///////// Timer ////////// + + // //////// Transition //////// + // #tmpActUnivTon := TRUE; + // IF #fbSeparatorPin.stOutMainTro.nStatus = "SepState_WaitForReq" THEN // Separator ist bereit + // #nStateE := #c2400_StepCheckJam; + // ELSIF #fbStateManagerE.tOutUnivTonR > T#3s THEN + // #tmpReasonForStop := "Rsn_SubError"; // SubTRO: Separator ist nicht bereit + // END_IF; + + // END_REGION + + // #c2400_StepCheckJam: + // REGION 2400: Check Jam + // // akt. Zustand + // #sStateText := 'Check Jam'; + // ///////// Ausgänge ///////// + // ///////// Statics ////////// + // #xReleaseTrolleySep1 := FALSE; + + // ///////// Timer ////////// + // //////// Transition //////// + + // IF (#arInOutJamEntr[1].nDestination <> #stInSettings.nDestGeneral) AND (#arInOutJamEntr[1].nDestination <> 0) + // THEN + // IF (#stInOutJamBypass.Status.nCount >= #stInOutJamBypass.Config.nCapacitySet) + // THEN + // #tmpReasonForStop := "Rsn_JamNextError"; + // ELSE + // #nStateE := #c2500_StepReleaseSep2;//#"c2500_StepReleaseSep2"; + // END_IF; + // ELSE + // IF (* (#stInOutJamExit2.Status.nCount = #stInOutJamExit2.Config.nCapacitySet) //Zielstaubereich ist datentechnisch voll + // OR (#stInSeparatorPin.Settings.xPluggedJam AND #stInSenJam2.xJam) // Stausensor *) + // NOT #xSepFree // Lager voll + // THEN + // #tmpReasonForStop := "Rsn_JamNextError"; + // ELSE + // #nStateE := #c2500_StepReleaseSep2;//#"c2500_StepReleaseSep2"; + // END_IF; + // END_IF; + + // END_REGION + + // 2450: + // REGION 2450: Calculate AND set Target + // // akt. Zustand + // #sStateText := 'CalcSetTarget'; + + // ///////// Statics ////////// + // #xReleaseTrolleySep1 := FALSE; + + // "FC_TargetDecision"(arInStorageLineCalc := #arStoreCount1, + // arInStorage := #arInOutStorageLines, + // arInSenStore := #arInJamSensor, + // nInNoLines := #stInSettings.nNoOfLines, + // nInStorageThreshold := 3,//#stInSettings.nStorageThreshold, + // nInMode := 3, //1 -> Abwechselnd; 2 -> Gleichmäßig befüllen , 3: Jede Linie nacheinander befüllen + // nInOutTarget := #nTarget1, + // xInOutFree := #arConveyorEnable[1], + // stInOutConveyorStations := #stConveyorStations); + + // #nStateE := #c2500_StepReleaseSep2; + + // END_REGION + + // #c2500_StepReleaseSep2: + // REGION 2500: Release Sep Second + // // akt. Zustand + // #sStateText := 'Leave Sep'; + + // ///////// Ausgänge ///////// + // ///////// Statics ////////// + // #stOutPriorityManager.xTransportReq := #xInSftyOk AND #xInConveyorRunIn AND NOT #xInAreaStopActive; + + + // #xReleaseTrolleySep1 := #xInSftyOk AND #xInConveyorRunIn AND NOT #xInAreaStopActive AND + // #stInPriorityManager.xReleaseOk AND + // NOT #fbCarrierWaitSepPin.xOutLockSep1 AND #stInSensorReference.xDirectEdgePos; // Freigabe an Separator + + // //////// Transition //////// + // IF #fbSeparatorPin.stOutMainTro.nStatus = "SepState_Finish" THEN + + // REGION SHR buchen + // // Ziel bestimmen + // // HIER WÄRE HANDMODUS + // IF #xHand THEN + // IF (#arInOutJamEntr[1].nDestination = 0) OR (#arInOutJamEntr[1].nDestination = #stInSettings.nDestGeneral) THEN + // #nTarget1 := #nInTestTarget; //#stInSettings.nNoOfLines; + // ELSE + // #xBypass := TRUE; + // #nTarget1 := #stInSettings.nNoOfLines + 10 + 1; // Bypass + // END_IF; + // ELSE + // IF (#arInOutJamEntr[1].nDestination = 0) OR (#arInOutJamEntr[1].nDestination = #stInSettings.nDestGeneral) THEN + // "FC_TargetDecision"(arInStorageLineCalc := #arStoreCount1, + // arInStorage := #arInOutStorageLines, + // arInSenStore := #arInJamSensor, + // nInNoLines := #stInSettings.nNoOfLines, + // nInStorageThreshold := #stInSettings.nStorageThreshold, + // nInMode := 1, //1 -> Abwechselnd; 2 -> Gleichmäßig befüllen + // nInOutTarget := #nTarget1, + // xInOutFree := #arConveyorEnable[1], + // stInOutConveyorStations := #stConveyorStations); + // ELSE + // #xBypass := TRUE; + // #nTarget1 := #stInSettings.nNoOfLines + 10 + 1; // Bypass + // END_IF; + // END_IF; + + // // Carrier in Zielbereich umbuchen + // #stCarrierPin.stCarrier := #arInOutJamEntr[1]; + // "FC_SHR_HangerAddPin"(stInCarrier := #stCarrierPin, + // nInPos := 2, + // nInTarget := #nTarget1, + // nInConvStations := #stInSettings.nConvStations, + // nInStationsMax := #stInSettings.nStationsMax, + // stInOutConveyorStations := #stConveyorStations); + + // // Quellbereich + // IF NOT #xBypass THEN + // "FC_TSHR_Shift"(xInShiftBack := TRUE, + // arTSHR := #arInOutJamEntr); + // END_IF; + + // #nTarget1 += 1; + + // REGION Daten buchen zum Bypass + // IF #xBypass THEN + // "FC_Route"(xInSingle := FALSE, + // xInSeparate := FALSE, + // xInSepEdge := TRUE, + // xInSensor := FALSE, + // xInDelay := FALSE, + // stInCarrier := #stEmptyCarrier, + // stOutBookingInfo => #stBookingInfo, + // arJamEntr := #arInOutJamEntr, + // arOnTheWay := #arEmptyCarrier, + // arJamExit := #arInOutJamBypass); + // END_IF; + // END_REGION + + // #xEventLogBookSHR := TRUE; + // END_REGION ; + + + // #nStateE := #c1000_StepWaitForTrolley1; + // ELSIF #xReleaseTrolleySep1 AND #tOnSvReleaseSep.Q THEN + // #tmpReasonForStop := "Rsn_SubError"; // Timeout-Fehler im SubTRO "Separator": Freigabe erteilt, aber Separator gibt keine Rückmeldung an MainTRO + // END_IF; + + // END_REGION + + // END_CASE; + + // END_REGION + + // REGION Schrittkette Auslagern + // CASE #nStateA OF + // #c0000_StepOff: + // REGION 0000: Off + // // akt. Zustand + // #sStateText := 'OFF'; + // ///////// Ausgänge ///////// + + // ///////// Statics ////////// + // FOR #nIdx1 := 1 TO 21 DO + // #arLineRelease[#nIdx1] := FALSE; + // END_FOR; + + // ///////// Timer ////////// + + // //////// Transition //////// + // // SCHRITT 0 WIRD GEBRAUCHT! + // //STATE MANAGER KÜMMERT SICH UM TRANSITION! + // END_REGION + + // #c0100_StepUndefined: + // REGION 0100: Undefined + // // akt. Zustand + // #sStateText := 'Undefined'; + // ///////// Ausgänge ///////// + + // ///////// Statics ////////// + // FOR #nIdx1 := 1 TO 21 DO + // #arLineRelease[#nIdx1] := FALSE; + // END_FOR; + // ///////// Timer ////////// + + // //////// Transition //////// + // #nStateA := #c1000_StepWaitForTrolley1; + // END_REGION + + // #c1000_StepWaitForTrolley1: + // REGION 1000: Wait for Trolley + + // ///////// Statics ////////// + // FOR #nIdx1 := 1 TO 21 DO + // #arLineRelease[#nIdx1] := FALSE; + // END_FOR; + + // IF #xStart THEN + // #nActLine := #nTestStorageOut; + // IF #nActLine <> #nLastLine THEN + // #stDummyCarrier.nBarcode := 1; + // END_IF; + // #nLastLine := #nActLine; + // IF #arfbSeparatorStorage[#nActLine].stOutMainTro.xBtPresent AND (#arInOutStorageLines[#nActLine].arCarrier[1].bStatus.%X0 = TRUE) + // THEN + // #nStateA := #c1400_StepCheckSep1; + // END_IF; + // END_IF; + // END_REGION + // #c1400_StepCheckSep1: + // REGION 1400: Check Separator + + // FOR #nIdx1 := 1 TO 21 DO + // #arLineRelease[#nIdx1] := FALSE; + // END_FOR; + + // CASE #nActLine OF + // 1: + // IF #arfbSeparatorStorage[#nActLine].stOutMainTro.nStatus = "SepState_WaitForReq" THEN // Separator ist bereit + // #nStateA := #c1500_StepReleaseSep1; + // ELSIF #fbStateManagerE.tOutUnivTonR > T#3s THEN + // #tmpReasonForStop := "Rsn_SubError"; // SubTRO: Separator ist nicht bereit + // END_IF; + // 2: + // IF #arfbSeparatorStorage[#nActLine].stOutMainTro.nStatus = "SepState_WaitForReq" THEN // Separator ist bereit + // #nStateA := #c1500_StepReleaseSep1; + // ELSIF #fbStateManagerE.tOutUnivTonR > T#3s THEN + // #tmpReasonForStop := "Rsn_SubError"; // SubTRO: Separator ist nicht bereit + // END_IF; + // 3: + // IF #arfbSeparatorStorage[#nActLine].stOutMainTro.nStatus = "SepState_WaitForReq" THEN // Separator ist bereit + // #nStateA := #c1500_StepReleaseSep1; + // ELSIF #fbStateManagerE.tOutUnivTonR > T#3s THEN + // #tmpReasonForStop := "Rsn_SubError"; // SubTRO: Separator ist nicht bereit + // END_IF; + // 4: + // IF #arfbSeparatorStorage[#nActLine].stOutMainTro.nStatus = "SepState_WaitForReq" THEN // Separator ist bereit + // #nStateA := #c1500_StepReleaseSep1; + // ELSIF #fbStateManagerE.tOutUnivTonR > T#3s THEN + // #tmpReasonForStop := "Rsn_SubError"; // SubTRO: Separator ist nicht bereit + // END_IF; + // 5: + // IF #arfbSeparatorStorage[#nActLine].stOutMainTro.nStatus = "SepState_WaitForReq" THEN // Separator ist bereit + // #nStateA := #c1500_StepReleaseSep1; + // ELSIF #fbStateManagerE.tOutUnivTonR > T#3s THEN + // #tmpReasonForStop := "Rsn_SubError"; // SubTRO: Separator ist nicht bereit + // END_IF; + // 6: + // IF #arfbSeparatorStorage[#nActLine].stOutMainTro.nStatus = "SepState_WaitForReq" THEN // Separator ist bereit + // #nStateA := #c1500_StepReleaseSep1; + // ELSIF #fbStateManagerE.tOutUnivTonR > T#3s THEN + // #tmpReasonForStop := "Rsn_SubError"; // SubTRO: Separator ist nicht bereit + // END_IF; + // 7: + // IF #arfbSeparatorStorage[#nActLine].stOutMainTro.nStatus = "SepState_WaitForReq" THEN // Separator ist bereit + // #nStateA := #c1500_StepReleaseSep1; + // ELSIF #fbStateManagerE.tOutUnivTonR > T#3s THEN + // #tmpReasonForStop := "Rsn_SubError"; // SubTRO: Separator ist nicht bereit + // END_IF; + // 8: + // IF #arfbSeparatorStorage[#nActLine].stOutMainTro.nStatus = "SepState_WaitForReq" THEN // Separator ist bereit + // #nStateA := #c1500_StepReleaseSep1; + // ELSIF #fbStateManagerE.tOutUnivTonR > T#3s THEN + // #tmpReasonForStop := "Rsn_SubError"; // SubTRO: Separator ist nicht bereit + // END_IF; + // 9: + // IF #arfbSeparatorStorage[#nActLine].stOutMainTro.nStatus = "SepState_WaitForReq" THEN // Separator ist bereit + // #nStateA := #c1500_StepReleaseSep1; + // ELSIF #fbStateManagerE.tOutUnivTonR > T#3s THEN + // #tmpReasonForStop := "Rsn_SubError"; // SubTRO: Separator ist nicht bereit + // END_IF; + // 10: + // IF #arfbSeparatorStorage[#nActLine].stOutMainTro.nStatus = "SepState_WaitForReq" THEN // Separator ist bereit + // #nStateA := #c1500_StepReleaseSep1; + // ELSIF #fbStateManagerE.tOutUnivTonR > T#3s THEN + // #tmpReasonForStop := "Rsn_SubError"; // SubTRO: Separator ist nicht bereit + // END_IF; + // 11: + // IF #arfbSeparatorStorage[#nActLine].stOutMainTro.nStatus = "SepState_WaitForReq" THEN // Separator ist bereit + // #nStateA := #c1500_StepReleaseSep1; + // ELSIF #fbStateManagerE.tOutUnivTonR > T#3s THEN + // #tmpReasonForStop := "Rsn_SubError"; // SubTRO: Separator ist nicht bereit + // END_IF; + // 12: + // IF #arfbSeparatorStorage[#nActLine].stOutMainTro.nStatus = "SepState_WaitForReq" THEN // Separator ist bereit + // #nStateA := #c1500_StepReleaseSep1; + // ELSIF #fbStateManagerE.tOutUnivTonR > T#3s THEN + // #tmpReasonForStop := "Rsn_SubError"; // SubTRO: Separator ist nicht bereit + // END_IF; + // 13: + // IF #arfbSeparatorStorage[#nActLine].stOutMainTro.nStatus = "SepState_WaitForReq" THEN // Separator ist bereit + // #nStateA := #c1500_StepReleaseSep1; + // ELSIF #fbStateManagerE.tOutUnivTonR > T#3s THEN + // #tmpReasonForStop := "Rsn_SubError"; // SubTRO: Separator ist nicht bereit + // END_IF; + // 14: + // IF #arfbSeparatorStorage[#nActLine].stOutMainTro.nStatus = "SepState_WaitForReq" THEN // Separator ist bereit + // #nStateA := #c1500_StepReleaseSep1; + // ELSIF #fbStateManagerE.tOutUnivTonR > T#3s THEN + // #tmpReasonForStop := "Rsn_SubError"; // SubTRO: Separator ist nicht bereit + // END_IF; + // 15: + // IF #arfbSeparatorStorage[#nActLine].stOutMainTro.nStatus = "SepState_WaitForReq" THEN // Separator ist bereit + // #nStateA := #c1500_StepReleaseSep1; + // ELSIF #fbStateManagerE.tOutUnivTonR > T#3s THEN + // #tmpReasonForStop := "Rsn_SubError"; // SubTRO: Separator ist nicht bereit + // END_IF; + // 16: + // IF #arfbSeparatorStorage[#nActLine].stOutMainTro.nStatus = "SepState_WaitForReq" THEN // Separator ist bereit + // #nStateA := #c1500_StepReleaseSep1; + // ELSIF #fbStateManagerE.tOutUnivTonR > T#3s THEN + // #tmpReasonForStop := "Rsn_SubError"; // SubTRO: Separator ist nicht bereit + // END_IF; + // 17: + // IF #arfbSeparatorStorage[#nActLine].stOutMainTro.nStatus = "SepState_WaitForReq" THEN // Separator ist bereit + // #nStateA := #c1500_StepReleaseSep1; + // ELSIF #fbStateManagerE.tOutUnivTonR > T#3s THEN + // #tmpReasonForStop := "Rsn_SubError"; // SubTRO: Separator ist nicht bereit + // END_IF; + // 18: + // IF #arfbSeparatorStorage[#nActLine].stOutMainTro.nStatus = "SepState_WaitForReq" THEN // Separator ist bereit + // #nStateA := #c1500_StepReleaseSep1; + // ELSIF #fbStateManagerE.tOutUnivTonR > T#3s THEN + // #tmpReasonForStop := "Rsn_SubError"; // SubTRO: Separator ist nicht bereit + // END_IF; + // 19: + // IF #arfbSeparatorStorage[#nActLine].stOutMainTro.nStatus = "SepState_WaitForReq" THEN // Separator ist bereit + // #nStateA := #c1500_StepReleaseSep1; + // ELSIF #fbStateManagerE.tOutUnivTonR > T#3s THEN + // #tmpReasonForStop := "Rsn_SubError"; // SubTRO: Separator ist nicht bereit + // END_IF; + // 20: + // IF #arfbSeparatorStorage[#nActLine].stOutMainTro.nStatus = "SepState_WaitForReq" THEN // Separator ist bereit + // #nStateA := #c1500_StepReleaseSep1; + // ELSIF #fbStateManagerE.tOutUnivTonR > T#3s THEN + // #tmpReasonForStop := "Rsn_SubError"; // SubTRO: Separator ist nicht bereit + // END_IF; + // 21: + // IF #arfbSeparatorStorage[#nActLine].stOutMainTro.nStatus = "SepState_WaitForReq" THEN // Separator ist bereit + // #nStateA := #c1500_StepReleaseSep1; + // ELSIF #fbStateManagerE.tOutUnivTonR > T#3s THEN + // #tmpReasonForStop := "Rsn_SubError"; // SubTRO: Separator ist nicht bereit + // END_IF; + // END_CASE; + + // END_REGION + + // #c1500_StepReleaseSep1: + // REGION 1500: Release Sep 1 + // // akt. Zustand + // #sStateText := 'Leave Sep 1'; + + // ///////// Ausgänge ///////// + // ///////// Statics ////////// + + // FOR #nIdx1 := 1 TO 21 DO + // IF #nIdx1 = #nActLine THEN + // #arLineRelease[#nIdx1] := TRUE; + // ELSE + // #arLineRelease[#nIdx1] := FALSE; + // END_IF; + // END_FOR; + + + // //////// Transition //////// + // CASE #nActLine OF + // 1: // Statement section case 1 + // IF #arfbSeparatorStorage[#nActLine].stOutMainTro.nStatus = "SepState_Finish" THEN + // #nStateA := #c2000_StepWaitForTrolley2; + // ELSIF #arLineRelease[#nActLine] AND #tOnSvReleaseSep.Q THEN + // #tmpReasonForStop := "Rsn_SubError"; // Timeout-Fehler im SubTRO "Separator": Freigabe erteilt, aber Separator gibt keine Rückmeldung an MainTRO + // END_IF; + // 2: + // IF #arfbSeparatorStorage[#nActLine].stOutMainTro.nStatus = "SepState_Finish" THEN + // #nStateA := #c2000_StepWaitForTrolley2; + // ELSIF #arLineRelease[#nActLine] AND #tOnSvReleaseSep.Q THEN + // #tmpReasonForStop := "Rsn_SubError"; // Timeout-Fehler im SubTRO "Separator": Freigabe erteilt, aber Separator gibt keine Rückmeldung an MainTRO + // END_IF; + + // 3: + // IF #arfbSeparatorStorage[#nActLine].stOutMainTro.nStatus = "SepState_Finish" THEN + // #nStateA := #c2000_StepWaitForTrolley2; + // ELSIF #arLineRelease[#nActLine] AND #tOnSvReleaseSep.Q THEN + // #tmpReasonForStop := "Rsn_SubError"; // Timeout-Fehler im SubTRO "Separator": Freigabe erteilt, aber Separator gibt keine Rückmeldung an MainTRO + // END_IF; + // 4: + // IF #arfbSeparatorStorage[#nActLine].stOutMainTro.nStatus = "SepState_Finish" THEN + // #nStateA := #c2000_StepWaitForTrolley2; + // ELSIF #arLineRelease[#nActLine] AND #tOnSvReleaseSep.Q THEN + // #tmpReasonForStop := "Rsn_SubError"; // Timeout-Fehler im SubTRO "Separator": Freigabe erteilt, aber Separator gibt keine Rückmeldung an MainTRO + // END_IF; + // 5: + // IF #arfbSeparatorStorage[#nActLine].stOutMainTro.nStatus = "SepState_Finish" THEN + // #nStateA := #c2000_StepWaitForTrolley2; + // ELSIF #arLineRelease[#nActLine] AND #tOnSvReleaseSep.Q THEN + // #tmpReasonForStop := "Rsn_SubError"; // Timeout-Fehler im SubTRO "Separator": Freigabe erteilt, aber Separator gibt keine Rückmeldung an MainTRO + // END_IF; + // 6: + // IF #arfbSeparatorStorage[#nActLine].stOutMainTro.nStatus = "SepState_Finish" THEN + // #nStateA := #c2000_StepWaitForTrolley2; + // ELSIF #arLineRelease[#nActLine] AND #tOnSvReleaseSep.Q THEN + // #tmpReasonForStop := "Rsn_SubError"; // Timeout-Fehler im SubTRO "Separator": Freigabe erteilt, aber Separator gibt keine Rückmeldung an MainTRO + // END_IF; + // 7: + // IF #arfbSeparatorStorage[#nActLine].stOutMainTro.nStatus = "SepState_Finish" THEN + // #nStateA := #c2000_StepWaitForTrolley2; + // ELSIF #arLineRelease[#nActLine] AND #tOnSvReleaseSep.Q THEN + // #tmpReasonForStop := "Rsn_SubError"; // Timeout-Fehler im SubTRO "Separator": Freigabe erteilt, aber Separator gibt keine Rückmeldung an MainTRO + // END_IF; + // 8: + // IF #arfbSeparatorStorage[#nActLine].stOutMainTro.nStatus = "SepState_Finish" THEN + // #nStateA := #c2000_StepWaitForTrolley2; + // ELSIF #arLineRelease[#nActLine] AND #tOnSvReleaseSep.Q THEN + // #tmpReasonForStop := "Rsn_SubError"; // Timeout-Fehler im SubTRO "Separator": Freigabe erteilt, aber Separator gibt keine Rückmeldung an MainTRO + // END_IF; + // 9: + // IF #arfbSeparatorStorage[#nActLine].stOutMainTro.nStatus = "SepState_Finish" THEN + // #nStateA := #c2000_StepWaitForTrolley2; + // ELSIF #arLineRelease[#nActLine] AND #tOnSvReleaseSep.Q THEN + // #tmpReasonForStop := "Rsn_SubError"; // Timeout-Fehler im SubTRO "Separator": Freigabe erteilt, aber Separator gibt keine Rückmeldung an MainTRO + // END_IF; + // 10: + // IF #arfbSeparatorStorage[#nActLine].stOutMainTro.nStatus = "SepState_Finish" THEN + // #nStateA := #c2000_StepWaitForTrolley2; + // ELSIF #arLineRelease[#nActLine] AND #tOnSvReleaseSep.Q THEN + // #tmpReasonForStop := "Rsn_SubError"; // Timeout-Fehler im SubTRO "Separator": Freigabe erteilt, aber Separator gibt keine Rückmeldung an MainTRO + // END_IF; + // 11: + // IF #arfbSeparatorStorage[#nActLine].stOutMainTro.nStatus = "SepState_Finish" THEN + // #nStateA := #c2000_StepWaitForTrolley2; + // ELSIF #arLineRelease[#nActLine] AND #tOnSvReleaseSep.Q THEN + // #tmpReasonForStop := "Rsn_SubError"; // Timeout-Fehler im SubTRO "Separator": Freigabe erteilt, aber Separator gibt keine Rückmeldung an MainTRO + // END_IF; + // 12: + // IF #arfbSeparatorStorage[#nActLine].stOutMainTro.nStatus = "SepState_Finish" THEN + // #nStateA := #c2000_StepWaitForTrolley2; + // ELSIF #arLineRelease[#nActLine] AND #tOnSvReleaseSep.Q THEN + // #tmpReasonForStop := "Rsn_SubError"; // Timeout-Fehler im SubTRO "Separator": Freigabe erteilt, aber Separator gibt keine Rückmeldung an MainTRO + // END_IF; + // 13: + // IF #arfbSeparatorStorage[#nActLine].stOutMainTro.nStatus = "SepState_Finish" THEN + // #nStateA := #c2000_StepWaitForTrolley2; + // ELSIF #arLineRelease[#nActLine] AND #tOnSvReleaseSep.Q THEN + // #tmpReasonForStop := "Rsn_SubError"; // Timeout-Fehler im SubTRO "Separator": Freigabe erteilt, aber Separator gibt keine Rückmeldung an MainTRO + // END_IF; + // 14: + // IF #arfbSeparatorStorage[#nActLine].stOutMainTro.nStatus = "SepState_Finish" THEN + // #nStateA := #c2000_StepWaitForTrolley2; + // ELSIF #arLineRelease[#nActLine] AND #tOnSvReleaseSep.Q THEN + // #tmpReasonForStop := "Rsn_SubError"; // Timeout-Fehler im SubTRO "Separator": Freigabe erteilt, aber Separator gibt keine Rückmeldung an MainTRO + // END_IF; + // 15: + // IF #arfbSeparatorStorage[#nActLine].stOutMainTro.nStatus = "SepState_Finish" THEN + // #nStateA := #c2000_StepWaitForTrolley2; + // ELSIF #arLineRelease[#nActLine] AND #tOnSvReleaseSep.Q THEN + // #tmpReasonForStop := "Rsn_SubError"; // Timeout-Fehler im SubTRO "Separator": Freigabe erteilt, aber Separator gibt keine Rückmeldung an MainTRO + // END_IF; + // 16: + // IF #arfbSeparatorStorage[#nActLine].stOutMainTro.nStatus = "SepState_Finish" THEN + // #nStateA := #c2000_StepWaitForTrolley2; + // ELSIF #arLineRelease[#nActLine] AND #tOnSvReleaseSep.Q THEN + // #tmpReasonForStop := "Rsn_SubError"; // Timeout-Fehler im SubTRO "Separator": Freigabe erteilt, aber Separator gibt keine Rückmeldung an MainTRO + // END_IF; + // 17: + // IF #arfbSeparatorStorage[#nActLine].stOutMainTro.nStatus = "SepState_Finish" THEN + // #nStateA := #c2000_StepWaitForTrolley2; + // ELSIF #arLineRelease[#nActLine] AND #tOnSvReleaseSep.Q THEN + // #tmpReasonForStop := "Rsn_SubError"; // Timeout-Fehler im SubTRO "Separator": Freigabe erteilt, aber Separator gibt keine Rückmeldung an MainTRO + // END_IF; + // 18: + // IF #arfbSeparatorStorage[#nActLine].stOutMainTro.nStatus = "SepState_Finish" THEN + // #nStateA := #c2000_StepWaitForTrolley2; + // ELSIF #arLineRelease[#nActLine] AND #tOnSvReleaseSep.Q THEN + // #tmpReasonForStop := "Rsn_SubError"; // Timeout-Fehler im SubTRO "Separator": Freigabe erteilt, aber Separator gibt keine Rückmeldung an MainTRO + // END_IF; + // 19: + // IF #arfbSeparatorStorage[#nActLine].stOutMainTro.nStatus = "SepState_Finish" THEN + // #nStateA := #c2000_StepWaitForTrolley2; + // ELSIF #arLineRelease[#nActLine] AND #tOnSvReleaseSep.Q THEN + // #tmpReasonForStop := "Rsn_SubError"; // Timeout-Fehler im SubTRO "Separator": Freigabe erteilt, aber Separator gibt keine Rückmeldung an MainTRO + // END_IF; + // 20: + // IF #arfbSeparatorStorage[#nActLine].stOutMainTro.nStatus = "SepState_Finish" THEN + // #nStateA := #c2000_StepWaitForTrolley2; + // ELSIF #arLineRelease[#nActLine] AND #tOnSvReleaseSep.Q THEN + // #tmpReasonForStop := "Rsn_SubError"; // Timeout-Fehler im SubTRO "Separator": Freigabe erteilt, aber Separator gibt keine Rückmeldung an MainTRO + // END_IF; + // 21: + // IF #arfbSeparatorStorage[#nActLine].stOutMainTro.nStatus = "SepState_Finish" THEN + // #nStateA := #c2000_StepWaitForTrolley2; + // ELSIF #arLineRelease[#nActLine] AND #tOnSvReleaseSep.Q THEN + // #tmpReasonForStop := "Rsn_SubError"; // Timeout-Fehler im SubTRO "Separator": Freigabe erteilt, aber Separator gibt keine Rückmeldung an MainTRO + // END_IF; + // END_CASE; + + // END_REGION + + // #c2000_StepWaitForTrolley2: + // REGION 2000: Wait for Trolley 2 + // //akt. Zustand + // #sStateText := 'Wait for Trolley 2'; + // ///////// Ausgänge ///////// + + // ///////// Statics ////////// + + // FOR #nIdx1 := 1 TO 21 DO + // #arLineRelease[#nIdx1] := FALSE; + // END_FOR; + + + // //Transition + // CASE #nActLine OF + // 1: // Statement section case 1 + // IF #arfbSeparatorStorage[#nActLine].stOutMainTro.xBtPresent AND #arInOutStorageLines[#nActLine].arCarrier[1].bStatus.%X0 THEN + // #nStateA := #c2300_StepCheckSep2; + // END_IF; + // 2: // Statement section case 1 + // IF #arfbSeparatorStorage[#nActLine].stOutMainTro.xBtPresent AND #arInOutStorageLines[#nActLine].arCarrier[1].bStatus.%X0 THEN + // #nStateA := #c2300_StepCheckSep2; + // END_IF; + + // 3: // Statement section case 1 + // IF #arfbSeparatorStorage[#nActLine].stOutMainTro.xBtPresent AND #arInOutStorageLines[#nActLine].arCarrier[1].bStatus.%X0 THEN + // #nStateA := #c2300_StepCheckSep2; + // END_IF; + + // 4: // Statement section case 1 + // IF #arfbSeparatorStorage[#nActLine].stOutMainTro.xBtPresent AND #arInOutStorageLines[#nActLine].arCarrier[1].bStatus.%X0 THEN + // #nStateA := #c2300_StepCheckSep2; + // END_IF; + + // 5: // Statement section case 1 + // IF #arfbSeparatorStorage[#nActLine].stOutMainTro.xBtPresent AND #arInOutStorageLines[#nActLine].arCarrier[1].bStatus.%X0 THEN + // #nStateA := #c2300_StepCheckSep2; + // END_IF; + + // 6: // Statement section case 1 + // IF #arfbSeparatorStorage[#nActLine].stOutMainTro.xBtPresent AND #arInOutStorageLines[#nActLine].arCarrier[1].bStatus.%X0 THEN + // #nStateA := #c2300_StepCheckSep2; + // END_IF; + // 7: // Statement section case 1 + // IF #arfbSeparatorStorage[#nActLine].stOutMainTro.xBtPresent AND #arInOutStorageLines[#nActLine].arCarrier[1].bStatus.%X0 THEN + // #nStateA := #c2300_StepCheckSep2; + // END_IF; + + // 8: // Statement section case 1 + // IF #arfbSeparatorStorage[#nActLine].stOutMainTro.xBtPresent AND #arInOutStorageLines[#nActLine].arCarrier[1].bStatus.%X0 THEN + // #nStateA := #c2300_StepCheckSep2; + // END_IF; + + // 9: // Statement section case 1 + // IF #arfbSeparatorStorage[#nActLine].stOutMainTro.xBtPresent AND #arInOutStorageLines[#nActLine].arCarrier[1].bStatus.%X0 THEN + // #nStateA := #c2300_StepCheckSep2; + // END_IF; + + // 10: // Statement section case 1 + // IF #arfbSeparatorStorage[#nActLine].stOutMainTro.xBtPresent AND #arInOutStorageLines[#nActLine].arCarrier[1].bStatus.%X0 THEN + // #nStateA := #c2300_StepCheckSep2; + // END_IF; + + // 11: // Statement section case 1 + // IF #arfbSeparatorStorage[#nActLine].stOutMainTro.xBtPresent AND #arInOutStorageLines[#nActLine].arCarrier[1].bStatus.%X0 THEN + // #nStateA := #c2300_StepCheckSep2; + // END_IF; + // 12: // Statement section case 1 + // IF #arfbSeparatorStorage[#nActLine].stOutMainTro.xBtPresent AND #arInOutStorageLines[#nActLine].arCarrier[1].bStatus.%X0 THEN + // #nStateA := #c2300_StepCheckSep2; + // END_IF; + + // 13: // Statement section case 1 + // IF #arfbSeparatorStorage[#nActLine].stOutMainTro.xBtPresent AND #arInOutStorageLines[#nActLine].arCarrier[1].bStatus.%X0 THEN + // #nStateA := #c2300_StepCheckSep2; + // END_IF; + + // 14: // Statement section case 1 + // IF #arfbSeparatorStorage[#nActLine].stOutMainTro.xBtPresent AND #arInOutStorageLines[#nActLine].arCarrier[1].bStatus.%X0 THEN + // #nStateA := #c2300_StepCheckSep2; + // END_IF; + + // 15: // Statement section case 1 + // IF #arfbSeparatorStorage[#nActLine].stOutMainTro.xBtPresent AND #arInOutStorageLines[#nActLine].arCarrier[1].bStatus.%X0 THEN + // #nStateA := #c2300_StepCheckSep2; + // END_IF; + + // 16: // Statement section case 1 + // IF #arfbSeparatorStorage[#nActLine].stOutMainTro.xBtPresent AND #arInOutStorageLines[#nActLine].arCarrier[1].bStatus.%X0 THEN + // #nStateA := #c2300_StepCheckSep2; + // END_IF; + // 17: // Statement section case 1 + // IF #arfbSeparatorStorage[#nActLine].stOutMainTro.xBtPresent AND #arInOutStorageLines[#nActLine].arCarrier[1].bStatus.%X0 THEN + // #nStateA := #c2300_StepCheckSep2; + // END_IF; + + // 18: // Statement section case 1 + // IF #arfbSeparatorStorage[#nActLine].stOutMainTro.xBtPresent AND #arInOutStorageLines[#nActLine].arCarrier[1].bStatus.%X0 THEN + // #nStateA := #c2300_StepCheckSep2; + // END_IF; + + // 19: // Statement section case 1 + // IF #arfbSeparatorStorage[#nActLine].stOutMainTro.xBtPresent AND #arInOutStorageLines[#nActLine].arCarrier[1].bStatus.%X0 THEN + // #nStateA := #c2300_StepCheckSep2; + // END_IF; + + // 20: // Statement section case 1 + // IF #arfbSeparatorStorage[#nActLine].stOutMainTro.xBtPresent AND #arInOutStorageLines[#nActLine].arCarrier[1].bStatus.%X0 THEN + // #nStateA := #c2300_StepCheckSep2; + // END_IF; + + // 21: // Statement section case 1 + // IF #arfbSeparatorStorage[#nActLine].stOutMainTro.xBtPresent AND #arInOutStorageLines[#nActLine].arCarrier[1].bStatus.%X0 THEN + // #nStateA := #c2300_StepCheckSep2; + // END_IF; + + // END_CASE; + // END_REGION + + // #c2300_StepCheckSep2: + // REGION 2300: Check Separator + // FOR #nIdx1 := 1 TO 21 DO + // #arLineRelease[#nIdx1] := FALSE; + // END_FOR; + + // //Transition + // CASE #nActLine OF + // 1: // Statement section case 1 + // #tmpActUnivTon := TRUE; + // IF #arfbSeparatorStorage[#nActLine].stOutMainTro.nStatus = "SepState_WaitForReq" THEN // Separator ist bereit + // #nStateA := #c2400_StepCheckJam; + // ELSIF #fbStateManagerE.tOutUnivTonR > T#3s THEN + // #tmpReasonForStop := "Rsn_SubError"; // SubTRO: Separator ist nicht bereit + // END_IF; + // 2: // Statement section case 1 + // #tmpActUnivTon := TRUE; + // IF #arfbSeparatorStorage[#nActLine].stOutMainTro.nStatus = "SepState_WaitForReq" THEN // Separator ist bereit + // #nStateA := #c2400_StepCheckJam; + // ELSIF #fbStateManagerE.tOutUnivTonR > T#3s THEN + // #tmpReasonForStop := "Rsn_SubError"; // SubTRO: Separator ist nicht bereit + // END_IF; + + // 3: // Statement section case 1 + // #tmpActUnivTon := TRUE; + // IF #arfbSeparatorStorage[#nActLine].stOutMainTro.nStatus = "SepState_WaitForReq" THEN // Separator ist bereit + // #nStateA := #c2400_StepCheckJam; + // ELSIF #fbStateManagerE.tOutUnivTonR > T#3s THEN + // #tmpReasonForStop := "Rsn_SubError"; // SubTRO: Separator ist nicht bereit + // END_IF; + // 4: // Statement section case 1 + // #tmpActUnivTon := TRUE; + // IF #arfbSeparatorStorage[#nActLine].stOutMainTro.nStatus = "SepState_WaitForReq" THEN // Separator ist bereit + // #nStateA := #c2400_StepCheckJam; + // ELSIF #fbStateManagerE.tOutUnivTonR > T#3s THEN + // #tmpReasonForStop := "Rsn_SubError"; // SubTRO: Separator ist nicht bereit + // END_IF; + + // 5: // Statement section case 1 + // #tmpActUnivTon := TRUE; + // IF #arfbSeparatorStorage[#nActLine].stOutMainTro.nStatus = "SepState_WaitForReq" THEN // Separator ist bereit + // #nStateA := #c2400_StepCheckJam; + // ELSIF #fbStateManagerE.tOutUnivTonR > T#3s THEN + // #tmpReasonForStop := "Rsn_SubError"; // SubTRO: Separator ist nicht bereit + // END_IF; + + // 6: // Statement section case 1 + // #tmpActUnivTon := TRUE; + // IF #arfbSeparatorStorage[#nActLine].stOutMainTro.nStatus = "SepState_WaitForReq" THEN // Separator ist bereit + // #nStateA := #c2400_StepCheckJam; + // ELSIF #fbStateManagerE.tOutUnivTonR > T#3s THEN + // #tmpReasonForStop := "Rsn_SubError"; // SubTRO: Separator ist nicht bereit + // END_IF; + // 7: // Statement section case 1 + // #tmpActUnivTon := TRUE; + // IF #arfbSeparatorStorage[#nActLine].stOutMainTro.nStatus = "SepState_WaitForReq" THEN // Separator ist bereit + // #nStateA := #c2400_StepCheckJam; + // ELSIF #fbStateManagerE.tOutUnivTonR > T#3s THEN + // #tmpReasonForStop := "Rsn_SubError"; // SubTRO: Separator ist nicht bereit + // END_IF; + + // 8: // Statement section case 1 + // #tmpActUnivTon := TRUE; + // IF #arfbSeparatorStorage[#nActLine].stOutMainTro.nStatus = "SepState_WaitForReq" THEN // Separator ist bereit + // #nStateA := #c2400_StepCheckJam; + // ELSIF #fbStateManagerE.tOutUnivTonR > T#3s THEN + // #tmpReasonForStop := "Rsn_SubError"; // SubTRO: Separator ist nicht bereit + // END_IF; + + // 9: // Statement section case 1 + // #tmpActUnivTon := TRUE; + // IF #arfbSeparatorStorage[#nActLine].stOutMainTro.nStatus = "SepState_WaitForReq" THEN // Separator ist bereit + // #nStateA := #c2400_StepCheckJam; + // ELSIF #fbStateManagerE.tOutUnivTonR > T#3s THEN + // #tmpReasonForStop := "Rsn_SubError"; // SubTRO: Separator ist nicht bereit + // END_IF; + + // 10: // Statement section case 1 + // #tmpActUnivTon := TRUE; + // IF #arfbSeparatorStorage[#nActLine].stOutMainTro.nStatus = "SepState_WaitForReq" THEN // Separator ist bereit + // #nStateA := #c2400_StepCheckJam; + // ELSIF #fbStateManagerE.tOutUnivTonR > T#3s THEN + // #tmpReasonForStop := "Rsn_SubError"; // SubTRO: Separator ist nicht bereit + // END_IF; + + // 11: // Statement section case 1 + // #tmpActUnivTon := TRUE; + // IF #arfbSeparatorStorage[#nActLine].stOutMainTro.nStatus = "SepState_WaitForReq" THEN // Separator ist bereit + // #nStateA := #c2400_StepCheckJam; + // ELSIF #fbStateManagerE.tOutUnivTonR > T#3s THEN + // #tmpReasonForStop := "Rsn_SubError"; // SubTRO: Separator ist nicht bereit + // END_IF; + // 12: // Statement section case 1 + // #tmpActUnivTon := TRUE; + // IF #arfbSeparatorStorage[#nActLine].stOutMainTro.nStatus = "SepState_WaitForReq" THEN // Separator ist bereit + // #nStateA := #c2400_StepCheckJam; + // ELSIF #fbStateManagerE.tOutUnivTonR > T#3s THEN + // #tmpReasonForStop := "Rsn_SubError"; // SubTRO: Separator ist nicht bereit + // END_IF; + + // 13: // Statement section case 1 + // #tmpActUnivTon := TRUE; + // IF #arfbSeparatorStorage[#nActLine].stOutMainTro.nStatus = "SepState_WaitForReq" THEN // Separator ist bereit + // #nStateA := #c2400_StepCheckJam; + // ELSIF #fbStateManagerE.tOutUnivTonR > T#3s THEN + // #tmpReasonForStop := "Rsn_SubError"; // SubTRO: Separator ist nicht bereit + // END_IF; + + // 14: // Statement section case 1 + // #tmpActUnivTon := TRUE; + // IF #arfbSeparatorStorage[#nActLine].stOutMainTro.nStatus = "SepState_WaitForReq" THEN // Separator ist bereit + // #nStateA := #c2400_StepCheckJam; + // ELSIF #fbStateManagerE.tOutUnivTonR > T#3s THEN + // #tmpReasonForStop := "Rsn_SubError"; // SubTRO: Separator ist nicht bereit + // END_IF; + + // 15: // Statement section case 1 + // #tmpActUnivTon := TRUE; + // IF #arfbSeparatorStorage[#nActLine].stOutMainTro.nStatus = "SepState_WaitForReq" THEN // Separator ist bereit + // #nStateA := #c2400_StepCheckJam; + // ELSIF #fbStateManagerE.tOutUnivTonR > T#3s THEN + // #tmpReasonForStop := "Rsn_SubError"; // SubTRO: Separator ist nicht bereit + // END_IF; + + // 16: // Statement section case 1 + // #tmpActUnivTon := TRUE; + // IF #arfbSeparatorStorage[#nActLine].stOutMainTro.nStatus = "SepState_WaitForReq" THEN // Separator ist bereit + // #nStateA := #c2400_StepCheckJam; + // ELSIF #fbStateManagerE.tOutUnivTonR > T#3s THEN + // #tmpReasonForStop := "Rsn_SubError"; // SubTRO: Separator ist nicht bereit + // END_IF; + // 17: // Statement section case 1 + // #tmpActUnivTon := TRUE; + // IF #arfbSeparatorStorage[#nActLine].stOutMainTro.nStatus = "SepState_WaitForReq" THEN // Separator ist bereit + // #nStateA := #c2400_StepCheckJam; + // ELSIF #fbStateManagerE.tOutUnivTonR > T#3s THEN + // #tmpReasonForStop := "Rsn_SubError"; // SubTRO: Separator ist nicht bereit + // END_IF; + + // 18: // Statement section case 1 + // #tmpActUnivTon := TRUE; + // IF #arfbSeparatorStorage[#nActLine].stOutMainTro.nStatus = "SepState_WaitForReq" THEN // Separator ist bereit + // #nStateA := #c2400_StepCheckJam; + // ELSIF #fbStateManagerE.tOutUnivTonR > T#3s THEN + // #tmpReasonForStop := "Rsn_SubError"; // SubTRO: Separator ist nicht bereit + // END_IF; + + // 19: // Statement section case 1 + // #tmpActUnivTon := TRUE; + // IF #arfbSeparatorStorage[#nActLine].stOutMainTro.nStatus = "SepState_WaitForReq" THEN // Separator ist bereit + // #nStateA := #c2400_StepCheckJam; + // ELSIF #fbStateManagerE.tOutUnivTonR > T#3s THEN + // #tmpReasonForStop := "Rsn_SubError"; // SubTRO: Separator ist nicht bereit + // END_IF; + + // 20: // Statement section case 1 + // #tmpActUnivTon := TRUE; + // IF #arfbSeparatorStorage[#nActLine].stOutMainTro.nStatus = "SepState_WaitForReq" THEN // Separator ist bereit + // #nStateA := #c2400_StepCheckJam; + // ELSIF #fbStateManagerE.tOutUnivTonR > T#3s THEN + // #tmpReasonForStop := "Rsn_SubError"; // SubTRO: Separator ist nicht bereit + // END_IF; + + // 21: // Statement section case 1 + // #tmpActUnivTon := TRUE; + // IF #arfbSeparatorStorage[#nActLine].stOutMainTro.nStatus = "SepState_WaitForReq" THEN // Separator ist bereit + // #nStateA := #c2400_StepCheckJam; + // ELSIF #fbStateManagerE.tOutUnivTonR > T#3s THEN + // #tmpReasonForStop := "Rsn_SubError"; // SubTRO: Separator ist nicht bereit + // END_IF; + + // END_CASE; + + + // END_REGION + + // #c2400_StepCheckJam: + // REGION 2400: Check Jam + // // akt. Zustand + // #sStateText := 'Check Jam'; + // ///////// Ausgänge ///////// + // ///////// Statics ////////// + // FOR #nIdx1 := 1 TO 21 DO + // #arLineRelease[#nIdx1] := FALSE; + // END_FOR; + + // ///////// Timer ////////// + // //////// Transition //////// + // IF (#stInOutJamExit.Status.nCount = #stInOutJamExit.Config.nCapacitySet) //Zielstaubereich ist datentechnisch voll + // OR (#arInSep[1].stSettings.xPluggedJam AND #stInSenJam2.xJam) // Stausensor *) + // THEN + // #tmpReasonForStop := "Rsn_JamNextError"; + // ELSE + // #nStateA := #c2500_StepReleaseSep2; + // END_IF; + // END_REGION + + // #c2500_StepReleaseSep2: + // REGION 2500: Release Sep Second + // // akt. Zustand + // #sStateText := 'Leave Sep'; + + // ///////// Ausgänge ///////// + // ///////// Statics ////////// + // #stOutPriorityManager.xTransportReq := #xInSftyOk AND #xInConveyorRunOut (* AND NOT #stInMfr.xPause *)AND NOT #xInAreaStopActive; + + // FOR #nIdx1 := 1 TO 21 DO + // IF #nIdx1 = #nActLine THEN + // #arLineRelease[#nIdx1] := #xInSftyOk AND #xInConveyorRunOut AND NOT #xInAreaStopActive AND #stInPriorityManager.xReleaseOk AND NOT #arInOutStorageLines[#nIdx1].stData.Status.bByte.%X3; + // ELSE + // #arLineRelease[#nIdx1] := FALSE; + // END_IF; + // END_FOR; + + // //////// Transition //////// + // //Transition + + // FOR #nIdx1 := 1 TO #nActLine DO + // IF #nIdx1 = #nActLine THEN + // IF #arfbSeparatorStorage[#nActLine].stOutMainTro.nStatus = "SepState_Finish" THEN + // //Hier könnte man noch einbauen, ob optional nicht gebucht wird, z.B. für Fehlerkorrektur + // REGION Daten buchen Store1 -> ExitJam + // IF NOT #xVersatz THEN // Alles normal buchen + // "FC_Route"(xInSingle := FALSE, + // xInSeparate := FALSE, + // xInSepEdge := TRUE, + // xInSensor := FALSE, + // xInDelay := FALSE, + // stInCarrier := #stEmptyCarrier, + // stOutBookingInfo => #stBookingInfo, + // arJamEntr := #arInOutStorageLines[#nActLine].arCarrier, + // arOnTheWay := #arEmptyCarrier, + // arJamExit := #arInOutJamExit); + + // ELSE // Dummy (=ohne Daten) buchen + // "FC_TSHR_AddAtEnd"(stInTrolley := #stDummyCarrier, + // nOutCounter => #nCounter, + // xOutResult => #xResult, + // arTSHR := #arInOutJamExit); + + // #stDummyCarrier.nBarcode += 1; + + // IF #stDummyCarrier.nBarcode > 99 THEN + // #stDummyCarrier.nBarcode := 1; + // END_IF; + // END_IF; + // #xVersatz := FALSE; + // END_REGION ; + // #xEventLogBookExit := TRUE; + // #nStateA := #c1000_StepWaitForTrolley1; + // EXIT; + // END_IF; + // END_IF; + // END_FOR; + + + + + // (* CASE #nActLine OF + // 1: // Statement section case 1 + // IF #arfbSeparatorStorage[#nActLine].stOutMainTro.nStatus = "SepState_Finish" THEN + // //Hier könnte man noch einbauen, ob optional nicht gebucht wird, z.B. für Fehlerkorrektur + // REGION Daten buchen Store1 -> ExitJam + // "FC_Route"(xInSingle := FALSE, + // xInSeparate := FALSE, + // xInSepEdge := TRUE, + // xInSensor := FALSE, + // xInDelay := FALSE, + // stInCarrier := #stEmptyCarrier, + // stOutBookingInfo => #stBookingInfo, + // arJamEntr := #arInOutStorageLines[#nActLine].arCarrier, + // arOnTheWay := #arEmptyCarrier, + // arJamExit := #arInOutJamExit); + // END_REGION + // #xEventLogBookExit := TRUE; + // #nStateA := #c1000_StepWaitForTrolley1; + // ELSIF #arLineRelease[#nActLine] AND #tOnSvReleaseSep.Q THEN + // #tmpReasonForStop := "Rsn_SubError"; // Timeout-Fehler im SubTRO "Separator": Freigabe erteilt, aber Separator gibt keine Rückmeldung an MainTRO + // END_IF; + // 2: // Statement section case 1 + // IF #arfbSeparatorStorage[#nActLine].stOutMainTro.nStatus = "SepState_Finish" THEN + // //Hier könnte man noch einbauen, ob optional nicht gebucht wird, z.B. für Fehlerkorrektur + // REGION Daten buchen Store1 -> ExitJam - TEST!! + // (* "FC_Route"(xInSingle := FALSE, + // xInSeparate := FALSE, + // xInSepEdge := TRUE, + // xInSensor := FALSE, + // xInDelay := FALSE, + // stInCarrier := #stEmptyCarrier, + // stOutBookingInfo => #stBookingInfo, + // arJamEntr := #arInOutStorageLines[#nActLine].arCarrier, + // arOnTheWay := #arEmptyCarrier, + // arJamExit := #arInOutJamExit); *) + // + // "FC_TSHR_AddAtEnd"(stInTrolley := #stDummyCarrier, + // nOutCounter => #nCounter, + // xOutResult => #xResult, + // arTSHR := #arInOutJamExit); + // + // END_REGION + // #xEventLogBookExit := TRUE; + // #nStateA := #c1000_StepWaitForTrolley1; + // ELSIF #arLineRelease[#nActLine] AND #tOnSvReleaseSep.Q THEN + // #tmpReasonForStop := "Rsn_SubError"; // Timeout-Fehler im SubTRO "Separator": Freigabe erteilt, aber Separator gibt keine Rückmeldung an MainTRO + // END_IF; + // + // 3: // Statement section case 1 + // IF #arfbSeparatorStorage[#nActLine].stOutMainTro.nStatus = "SepState_Finish" THEN + // //Hier könnte man noch einbauen, ob optional nicht gebucht wird, z.B. für Fehlerkorrektur + // REGION Daten buchen Store1 -> ExitJam + // "FC_Route"(xInSingle := FALSE, + // xInSeparate := FALSE, + // xInSepEdge := TRUE, + // xInSensor := FALSE, + // xInDelay := FALSE, + // stInCarrier := #stEmptyCarrier, + // stOutBookingInfo => #stBookingInfo, + // arJamEntr := #arInOutStorageLines[#nActLine].arCarrier, + // arOnTheWay := #arEmptyCarrier, + // arJamExit := #arInOutJamExit); + // END_REGION + // #xEventLogBookExit := TRUE; + // #nStateA := #c1000_StepWaitForTrolley1; + // ELSIF #arLineRelease[#nActLine] AND #tOnSvReleaseSep.Q THEN + // #tmpReasonForStop := "Rsn_SubError"; // Timeout-Fehler im SubTRO "Separator": Freigabe erteilt, aber Separator gibt keine Rückmeldung an MainTRO + // END_IF; + // 4: // Statement section case 1 + // #tmpActUnivTon := TRUE; + // IF #arfbSeparatorStorage[#nActLine].stOutMainTro.nStatus = "SepState_Finish" THEN + // //Hier könnte man noch einbauen, ob optional nicht gebucht wird, z.B. für Fehlerkorrektur + // REGION Daten buchen Store1 -> ExitJam + // "FC_Route"(xInSingle := FALSE, + // xInSeparate := FALSE, + // xInSepEdge := TRUE, + // xInSensor := FALSE, + // xInDelay := FALSE, + // stInCarrier := #stEmptyCarrier, + // stOutBookingInfo => #stBookingInfo, + // arJamEntr := #arInOutStorageLines[#nActLine].arCarrier, + // arOnTheWay := #arEmptyCarrier, + // arJamExit := #arInOutJamExit); + // END_REGION + // #xEventLogBookExit := TRUE; + // #nStateA := #c1000_StepWaitForTrolley1; + // ELSIF #arLineRelease[#nActLine] AND #tOnSvReleaseSep.Q THEN + // #tmpReasonForStop := "Rsn_SubError"; // Timeout-Fehler im SubTRO "Separator": Freigabe erteilt, aber Separator gibt keine Rückmeldung an MainTRO + // END_IF; + // + // 5: // Statement section case 1 + // IF #arfbSeparatorStorage[#nActLine].stOutMainTro.nStatus = "SepState_Finish" THEN + // //Hier könnte man noch einbauen, ob optional nicht gebucht wird, z.B. für Fehlerkorrektur + // REGION Daten buchen Store1 -> ExitJam + // "FC_Route"(xInSingle := FALSE, + // xInSeparate := FALSE, + // xInSepEdge := TRUE, + // xInSensor := FALSE, + // xInDelay := FALSE, + // stInCarrier := #stEmptyCarrier, + // stOutBookingInfo => #stBookingInfo, + // arJamEntr := #arInOutStorageLines[#nActLine].arCarrier, + // arOnTheWay := #arEmptyCarrier, + // arJamExit := #arInOutJamExit); + // END_REGION + // #xEventLogBookExit := TRUE; + // #nStateA := #c1000_StepWaitForTrolley1; + // ELSIF #arLineRelease[#nActLine] AND #tOnSvReleaseSep.Q THEN + // #tmpReasonForStop := "Rsn_SubError"; // Timeout-Fehler im SubTRO "Separator": Freigabe erteilt, aber Separator gibt keine Rückmeldung an MainTRO + // END_IF; + // + // 6: // Statement section case 1 + // IF #arfbSeparatorStorage[#nActLine].stOutMainTro.nStatus = "SepState_Finish" THEN + // //Hier könnte man noch einbauen, ob optional nicht gebucht wird, z.B. für Fehlerkorrektur + // REGION Daten buchen Store1 -> ExitJam + // "FC_Route"(xInSingle := FALSE, + // xInSeparate := FALSE, + // xInSepEdge := TRUE, + // xInSensor := FALSE, + // xInDelay := FALSE, + // stInCarrier := #stEmptyCarrier, + // stOutBookingInfo => #stBookingInfo, + // arJamEntr := #arInOutStorageLines[#nActLine].arCarrier, + // arOnTheWay := #arEmptyCarrier, + // arJamExit := #arInOutJamExit); + // END_REGION + // #xEventLogBookExit := TRUE; + // #nStateA := #c1000_StepWaitForTrolley1; + // ELSIF #arLineRelease[#nActLine] AND #tOnSvReleaseSep.Q THEN + // #tmpReasonForStop := "Rsn_SubError"; // Timeout-Fehler im SubTRO "Separator": Freigabe erteilt, aber Separator gibt keine Rückmeldung an MainTRO + // END_IF; + // 7: // Statement section case 1 + // IF #arfbSeparatorStorage[#nActLine].stOutMainTro.nStatus = "SepState_Finish" THEN + // //Hier könnte man noch einbauen, ob optional nicht gebucht wird, z.B. für Fehlerkorrektur + // REGION Daten buchen Store1 -> ExitJam + // "FC_Route"(xInSingle := FALSE, + // xInSeparate := FALSE, + // xInSepEdge := TRUE, + // xInSensor := FALSE, + // xInDelay := FALSE, + // stInCarrier := #stEmptyCarrier, + // stOutBookingInfo => #stBookingInfo, + // arJamEntr := #arInOutStorageLines[#nActLine].arCarrier, + // arOnTheWay := #arEmptyCarrier, + // arJamExit := #arInOutJamExit); + // END_REGION + // #xEventLogBookExit := TRUE; + // #nStateA := #c1000_StepWaitForTrolley1; + // ELSIF #arLineRelease[#nActLine] AND #tOnSvReleaseSep.Q THEN + // #tmpReasonForStop := "Rsn_SubError"; // Timeout-Fehler im SubTRO "Separator": Freigabe erteilt, aber Separator gibt keine Rückmeldung an MainTRO + // END_IF; + // + // 8: // Statement section case 1 + // IF #arfbSeparatorStorage[#nActLine].stOutMainTro.nStatus = "SepState_Finish" THEN + // //Hier könnte man noch einbauen, ob optional nicht gebucht wird, z.B. für Fehlerkorrektur + // REGION Daten buchen Store1 -> ExitJam + // "FC_Route"(xInSingle := FALSE, + // xInSeparate := FALSE, + // xInSepEdge := TRUE, + // xInSensor := FALSE, + // xInDelay := FALSE, + // stInCarrier := #stEmptyCarrier, + // stOutBookingInfo => #stBookingInfo, + // arJamEntr := #arInOutStorageLines[#nActLine].arCarrier, + // arOnTheWay := #arEmptyCarrier, + // arJamExit := #arInOutJamExit); + // END_REGION + // #xEventLogBookExit := TRUE; + // #nStateA := #c1000_StepWaitForTrolley1; + // ELSIF #arLineRelease[#nActLine] AND #tOnSvReleaseSep.Q THEN + // #tmpReasonForStop := "Rsn_SubError"; // Timeout-Fehler im SubTRO "Separator": Freigabe erteilt, aber Separator gibt keine Rückmeldung an MainTRO + // END_IF; + // + // 9: // Statement section case 1 + // IF #arfbSeparatorStorage[#nActLine].stOutMainTro.nStatus = "SepState_Finish" THEN + // //Hier könnte man noch einbauen, ob optional nicht gebucht wird, z.B. für Fehlerkorrektur + // REGION Daten buchen Store1 -> ExitJam + // "FC_Route"(xInSingle := FALSE, + // xInSeparate := FALSE, + // xInSepEdge := TRUE, + // xInSensor := FALSE, + // xInDelay := FALSE, + // stInCarrier := #stEmptyCarrier, + // stOutBookingInfo => #stBookingInfo, + // arJamEntr := #arInOutStorageLines[#nActLine].arCarrier, + // arOnTheWay := #arEmptyCarrier, + // arJamExit := #arInOutJamExit); + // END_REGION + // #xEventLogBookExit := TRUE; + // #nStateA := #c1000_StepWaitForTrolley1; + // ELSIF #arLineRelease[#nActLine] AND #tOnSvReleaseSep.Q THEN + // #tmpReasonForStop := "Rsn_SubError"; // Timeout-Fehler im SubTRO "Separator": Freigabe erteilt, aber Separator gibt keine Rückmeldung an MainTRO + // END_IF; + // + // 10: // Statement section case 1 + // IF #arfbSeparatorStorage[#nActLine].stOutMainTro.nStatus = "SepState_Finish" THEN + // //Hier könnte man noch einbauen, ob optional nicht gebucht wird, z.B. für Fehlerkorrektur + // REGION Daten buchen Store1 -> ExitJam + // "FC_Route"(xInSingle := FALSE, + // xInSeparate := FALSE, + // xInSepEdge := TRUE, + // xInSensor := FALSE, + // xInDelay := FALSE, + // stInCarrier := #stEmptyCarrier, + // stOutBookingInfo => #stBookingInfo, + // arJamEntr := #arInOutStorageLines[#nActLine].arCarrier, + // arOnTheWay := #arEmptyCarrier, + // arJamExit := #arInOutJamExit); + // END_REGION + // #xEventLogBookExit := TRUE; + // #nStateA := #c1000_StepWaitForTrolley1; + // ELSIF #arLineRelease[#nActLine] AND #tOnSvReleaseSep.Q THEN + // #tmpReasonForStop := "Rsn_SubError"; // Timeout-Fehler im SubTRO "Separator": Freigabe erteilt, aber Separator gibt keine Rückmeldung an MainTRO + // END_IF; + // + // 11: // Statement section case 1 + // IF #arfbSeparatorStorage[#nActLine].stOutMainTro.nStatus = "SepState_Finish" THEN + // //Hier könnte man noch einbauen, ob optional nicht gebucht wird, z.B. für Fehlerkorrektur + // REGION Daten buchen Store1 -> ExitJam + // "FC_Route"(xInSingle := FALSE, + // xInSeparate := FALSE, + // xInSepEdge := TRUE, + // xInSensor := FALSE, + // xInDelay := FALSE, + // stInCarrier := #stEmptyCarrier, + // stOutBookingInfo => #stBookingInfo, + // arJamEntr := #arInOutStorageLines[#nActLine].arCarrier, + // arOnTheWay := #arEmptyCarrier, + // arJamExit := #arInOutJamExit); + // END_REGION + // #xEventLogBookExit := TRUE; + // #nStateA := #c1000_StepWaitForTrolley1; + // ELSIF #arLineRelease[#nActLine] AND #tOnSvReleaseSep.Q THEN + // #tmpReasonForStop := "Rsn_SubError"; // Timeout-Fehler im SubTRO "Separator": Freigabe erteilt, aber Separator gibt keine Rückmeldung an MainTRO + // END_IF; + // 12: // Statement section case 1 + // IF #arfbSeparatorStorage[#nActLine].stOutMainTro.nStatus = "SepState_Finish" THEN + // //Hier könnte man noch einbauen, ob optional nicht gebucht wird, z.B. für Fehlerkorrektur + // REGION Daten buchen Store1 -> ExitJam + // "FC_Route"(xInSingle := FALSE, + // xInSeparate := FALSE, + // xInSepEdge := TRUE, + // xInSensor := FALSE, + // xInDelay := FALSE, + // stInCarrier := #stEmptyCarrier, + // stOutBookingInfo => #stBookingInfo, + // arJamEntr := #arInOutStorageLines[#nActLine].arCarrier, + // arOnTheWay := #arEmptyCarrier, + // arJamExit := #arInOutJamExit); + // END_REGION + // #xEventLogBookExit := TRUE; + // #nStateA := #c1000_StepWaitForTrolley1; + // ELSIF #arLineRelease[#nActLine] AND #tOnSvReleaseSep.Q THEN + // #tmpReasonForStop := "Rsn_SubError"; // Timeout-Fehler im SubTRO "Separator": Freigabe erteilt, aber Separator gibt keine Rückmeldung an MainTRO + // END_IF; + // + // 13: // Statement section case 1 + // IF #arfbSeparatorStorage[#nActLine].stOutMainTro.nStatus = "SepState_Finish" THEN + // //Hier könnte man noch einbauen, ob optional nicht gebucht wird, z.B. für Fehlerkorrektur + // REGION Daten buchen Store1 -> ExitJam + // "FC_Route"(xInSingle := FALSE, + // xInSeparate := FALSE, + // xInSepEdge := TRUE, + // xInSensor := FALSE, + // xInDelay := FALSE, + // stInCarrier := #stEmptyCarrier, + // stOutBookingInfo => #stBookingInfo, + // arJamEntr := #arInOutStorageLines[#nActLine].arCarrier, + // arOnTheWay := #arEmptyCarrier, + // arJamExit := #arInOutJamExit); + // END_REGION + // #xEventLogBookExit := TRUE; + // #nStateA := #c1000_StepWaitForTrolley1; + // ELSIF #arLineRelease[#nActLine] AND #tOnSvReleaseSep.Q THEN + // #tmpReasonForStop := "Rsn_SubError"; // Timeout-Fehler im SubTRO "Separator": Freigabe erteilt, aber Separator gibt keine Rückmeldung an MainTRO + // END_IF; + // + // 14: // Statement section case 1 + // IF #arfbSeparatorStorage[#nActLine].stOutMainTro.nStatus = "SepState_Finish" THEN + // //Hier könnte man noch einbauen, ob optional nicht gebucht wird, z.B. für Fehlerkorrektur + // REGION Daten buchen Store1 -> ExitJam + // "FC_Route"(xInSingle := FALSE, + // xInSeparate := FALSE, + // xInSepEdge := TRUE, + // xInSensor := FALSE, + // xInDelay := FALSE, + // stInCarrier := #stEmptyCarrier, + // stOutBookingInfo => #stBookingInfo, + // arJamEntr := #arInOutStorageLines[#nActLine].arCarrier, + // arOnTheWay := #arEmptyCarrier, + // arJamExit := #arInOutJamExit); + // END_REGION + // #xEventLogBookExit := TRUE; + // #nStateA := #c1000_StepWaitForTrolley1; + // ELSIF #arLineRelease[#nActLine] AND #tOnSvReleaseSep.Q THEN + // #tmpReasonForStop := "Rsn_SubError"; // Timeout-Fehler im SubTRO "Separator": Freigabe erteilt, aber Separator gibt keine Rückmeldung an MainTRO + // END_IF; + // + // 15: // Statement section case 1 + // IF #arfbSeparatorStorage[#nActLine].stOutMainTro.nStatus = "SepState_Finish" THEN + // //Hier könnte man noch einbauen, ob optional nicht gebucht wird, z.B. für Fehlerkorrektur + // REGION Daten buchen Store1 -> ExitJam + // "FC_Route"(xInSingle := FALSE, + // xInSeparate := FALSE, + // xInSepEdge := TRUE, + // xInSensor := FALSE, + // xInDelay := FALSE, + // stInCarrier := #stEmptyCarrier, + // stOutBookingInfo => #stBookingInfo, + // arJamEntr := #arInOutStorageLines[#nActLine].arCarrier, + // arOnTheWay := #arEmptyCarrier, + // arJamExit := #arInOutJamExit); + // END_REGION + // #xEventLogBookExit := TRUE; + // #nStateA := #c1000_StepWaitForTrolley1; + // ELSIF #arLineRelease[#nActLine] AND #tOnSvReleaseSep.Q THEN + // #tmpReasonForStop := "Rsn_SubError"; // Timeout-Fehler im SubTRO "Separator": Freigabe erteilt, aber Separator gibt keine Rückmeldung an MainTRO + // END_IF; + // + // 16: // Statement section case 1 + // IF #arfbSeparatorStorage[#nActLine].stOutMainTro.nStatus = "SepState_Finish" THEN + // //Hier könnte man noch einbauen, ob optional nicht gebucht wird, z.B. für Fehlerkorrektur + // REGION Daten buchen Store1 -> ExitJam + // "FC_Route"(xInSingle := FALSE, + // xInSeparate := FALSE, + // xInSepEdge := TRUE, + // xInSensor := FALSE, + // xInDelay := FALSE, + // stInCarrier := #stEmptyCarrier, + // stOutBookingInfo => #stBookingInfo, + // arJamEntr := #arInOutStorageLines[#nActLine].arCarrier, + // arOnTheWay := #arEmptyCarrier, + // arJamExit := #arInOutJamExit); + // END_REGION + // #xEventLogBookExit := TRUE; + // #nStateA := #c1000_StepWaitForTrolley1; + // ELSIF #arLineRelease[#nActLine] AND #tOnSvReleaseSep.Q THEN + // #tmpReasonForStop := "Rsn_SubError"; // Timeout-Fehler im SubTRO "Separator": Freigabe erteilt, aber Separator gibt keine Rückmeldung an MainTRO + // END_IF; + // 17: // Statement section case 1 + // IF #arfbSeparatorStorage[#nActLine].stOutMainTro.nStatus = "SepState_Finish" THEN + // //Hier könnte man noch einbauen, ob optional nicht gebucht wird, z.B. für Fehlerkorrektur + // REGION Daten buchen Store1 -> ExitJam + // "FC_Route"(xInSingle := FALSE, + // xInSeparate := FALSE, + // xInSepEdge := TRUE, + // xInSensor := FALSE, + // xInDelay := FALSE, + // stInCarrier := #stEmptyCarrier, + // stOutBookingInfo => #stBookingInfo, + // arJamEntr := #arInOutStorageLines[#nActLine].arCarrier, + // arOnTheWay := #arEmptyCarrier, + // arJamExit := #arInOutJamExit); + // END_REGION + // #xEventLogBookExit := TRUE; + // #nStateA := #c1000_StepWaitForTrolley1; + // ELSIF #arLineRelease[#nActLine] AND #tOnSvReleaseSep.Q THEN + // #tmpReasonForStop := "Rsn_SubError"; // Timeout-Fehler im SubTRO "Separator": Freigabe erteilt, aber Separator gibt keine Rückmeldung an MainTRO + // END_IF; + // + // 18: // Statement section case 1 + // IF #arfbSeparatorStorage[#nActLine].stOutMainTro.nStatus = "SepState_Finish" THEN + // //Hier könnte man noch einbauen, ob optional nicht gebucht wird, z.B. für Fehlerkorrektur + // REGION Daten buchen Store1 -> ExitJam + // "FC_Route"(xInSingle := FALSE, + // xInSeparate := FALSE, + // xInSepEdge := TRUE, + // xInSensor := FALSE, + // xInDelay := FALSE, + // stInCarrier := #stEmptyCarrier, + // stOutBookingInfo => #stBookingInfo, + // arJamEntr := #arInOutStorageLines[#nActLine].arCarrier, + // arOnTheWay := #arEmptyCarrier, + // arJamExit := #arInOutJamExit); + // END_REGION + // #xEventLogBookExit := TRUE; + // #nStateA := #c1000_StepWaitForTrolley1; + // ELSIF #arLineRelease[#nActLine] AND #tOnSvReleaseSep.Q THEN + // #tmpReasonForStop := "Rsn_SubError"; // Timeout-Fehler im SubTRO "Separator": Freigabe erteilt, aber Separator gibt keine Rückmeldung an MainTRO + // END_IF; + // + // 19: // Statement section case 1 + // IF #arfbSeparatorStorage[#nActLine].stOutMainTro.nStatus = "SepState_Finish" THEN + // //Hier könnte man noch einbauen, ob optional nicht gebucht wird, z.B. für Fehlerkorrektur + // REGION Daten buchen Store1 -> ExitJam + // "FC_Route"(xInSingle := FALSE, + // xInSeparate := FALSE, + // xInSepEdge := TRUE, + // xInSensor := FALSE, + // xInDelay := FALSE, + // stInCarrier := #stEmptyCarrier, + // stOutBookingInfo => #stBookingInfo, + // arJamEntr := #arInOutStorageLines[#nActLine].arCarrier, + // arOnTheWay := #arEmptyCarrier, + // arJamExit := #arInOutJamExit); + // END_REGION + // #xEventLogBookExit := TRUE; + // #nStateA := #c1000_StepWaitForTrolley1; + // ELSIF #arLineRelease[#nActLine] AND #tOnSvReleaseSep.Q THEN + // #tmpReasonForStop := "Rsn_SubError"; // Timeout-Fehler im SubTRO "Separator": Freigabe erteilt, aber Separator gibt keine Rückmeldung an MainTRO + // END_IF; + // + // 20: // Statement section case 1 + // IF #arfbSeparatorStorage[#nActLine].stOutMainTro.nStatus = "SepState_Finish" THEN + // //Hier könnte man noch einbauen, ob optional nicht gebucht wird, z.B. für Fehlerkorrektur + // REGION Daten buchen Store1 -> ExitJam + // "FC_Route"(xInSingle := FALSE, + // xInSeparate := FALSE, + // xInSepEdge := TRUE, + // xInSensor := FALSE, + // xInDelay := FALSE, + // stInCarrier := #stEmptyCarrier, + // stOutBookingInfo => #stBookingInfo, + // arJamEntr := #arInOutStorageLines[#nActLine].arCarrier, + // arOnTheWay := #arEmptyCarrier, + // arJamExit := #arInOutJamExit); + // END_REGION + // #xEventLogBookExit := TRUE; + // #nStateA := #c1000_StepWaitForTrolley1; + // ELSIF #arLineRelease[#nActLine] AND #tOnSvReleaseSep.Q THEN + // #tmpReasonForStop := "Rsn_SubError"; // Timeout-Fehler im SubTRO "Separator": Freigabe erteilt, aber Separator gibt keine Rückmeldung an MainTRO + // END_IF; + // + // 21: // Statement section case 1 + // IF #arfbSeparatorStorage[#nActLine].stOutMainTro.nStatus = "SepState_Finish" THEN + // //Hier könnte man noch einbauen, ob optional nicht gebucht wird, z.B. für Fehlerkorrektur + // REGION Daten buchen Store1 -> ExitJam + // "FC_Route"(xInSingle := FALSE, + // xInSeparate := FALSE, + // xInSepEdge := TRUE, + // xInSensor := FALSE, + // xInDelay := FALSE, + // stInCarrier := #stEmptyCarrier, + // stOutBookingInfo => #stBookingInfo, + // arJamEntr := #arInOutStorageLines[#nActLine].arCarrier, + // arOnTheWay := #arEmptyCarrier, + // arJamExit := #arInOutJamExit); + // END_REGION + // #xEventLogBookExit := TRUE; + // #nStateA := #c1000_StepWaitForTrolley1; + // ELSIF #arLineRelease[#nActLine] AND #tOnSvReleaseSep.Q THEN + // #tmpReasonForStop := "Rsn_SubError"; // Timeout-Fehler im SubTRO "Separator": Freigabe erteilt, aber Separator gibt keine Rückmeldung an MainTRO + // END_IF; + // + // END_CASE; *) + + // END_REGION + + // END_CASE; + // END_REGION + + // REGION StateManager Einlagern + + // #fbStateManagerE.stInSettings.nStartState := #c0100_StepUndefined; + // #fbStateManagerE.stInSettings.nStartStateTestMode := #c0000_StepOff; + // #fbStateManagerE.stInSettings.xActUnivTOn := TRUE; + // #fbStateManagerE.stInSettings.xRestartAtStartState := FALSE; + // #fbStateManagerE(xInFunctionEnabled := #stInOutControlUnitCabinet.xRunning, // AND #xInSftyOk, + // xInReset := (* #stInMfr.xCancel OR *)#xInCancel, + // xInRunUnivTOn := #tmpActUnivTon, + // xInTestMode := #xInTestMode, + // nInOutState := #nStateE); + + // END_REGION + + // REGION StateManager Auslagern + + // #fbStateManagerA.stInSettings.nStartState := #c0100_StepUndefined; + // #fbStateManagerA.stInSettings.nStartStateTestMode := #c0000_StepOff; + // #fbStateManagerA.stInSettings.xActUnivTOn := TRUE; + // #fbStateManagerA.stInSettings.xRestartAtStartState := FALSE; + // #fbStateManagerA(xInFunctionEnabled := #stInOutControlUnitCabinet.xRunning, // AND #xInSftyOk, + // xInReset := (* #stInMfr.xCancel OR *)#xInCancel, + // xInRunUnivTOn := #tmpActUnivTon, + // xInTestMode := #xInTestMode, + // nInOutState := #nStateA); + + // END_REGION + + // REGION SHR - Cycle + // "FC_SHR_CyclePin"(nInPosDiff := #stInEncoderParameter.nPosActDif, + // nInPosPitchPart := #stInEncoderParameter.nPosPitchPart, + // nInConvStations := #stInSettings.nConvStations, + // nInStationsMax := #stInSettings.nStationsMax, + // stInOutConveyorStations := #stConveyorStations); + // END_REGION + + // REGION SHR - Check Station + // // Funktioniert, aber TIA erlaubt kein Beobachten von Multiinstanzen innerhalb von Schleifen + // (* FOR #index := 1 TO #cUnloadingStations DO + // "FC_SHR_CheckStationPinTEST_1"(nInStation := #index + 10, //11-29 + // xInTargetStation := 1, + // xOutStationHi => #arStartUnloading[#index], + // xOutStationNHi => #arStopUnloading[#index], + // // xOutMiniTrolley=>#fbStationUnloading1_1.xInMiniTrolley, + // xOutStationHiBefore => #arfbStationUnloadPin[#index].xInBefore, + // nOutBarcode => #arfbStationUnloadPin[#index].nInBarcode, + // sOutBarcode => #arfbStationUnloadPin[#index].sInBarcode, + // stConveyorStations := stConveyorStations); + // END_FOR; *) + + // REGION Check US1 + // #nActNo := 1; + // "FC_SHR_CheckStationPin"(nInStation := #nActNo + 10, + // xInTargetStation := TRUE, + // nInConvStations := #stInSettings.nConvStations, + // nInStationsMax := #stInSettings.nStationsMax, + // xOutStationHi => #arStartUnloading[#nActNo], + // xOutStationNHi => #arStopUnloading[#nActNo], + // xOutStationHiBefore => #arfbStationUnloadPin[#nActNo].xInBefore, + // nOutBarcode => #arfbStationUnloadPin[#nActNo].nInBarcode, + // sOutBarcode => #arfbStationUnloadPin[#nActNo].sInBarcode, + // stInOutConveyorStations := #stConveyorStations); + // END_REGION + + // REGION Check US2 + // #nActNo := 2; + // IF #stInSettings.nNoOfLines >= #nActNo THEN + // "FC_SHR_CheckStationPin"(nInStation := #nActNo + 10, + // xInTargetStation := TRUE, + // nInConvStations := #stInSettings.nConvStations, + // nInStationsMax := #stInSettings.nStationsMax, + // xOutStationHi => #arStartUnloading[#nActNo], + // xOutStationNHi => #arStopUnloading[#nActNo], + // xOutStationHiBefore => #arfbStationUnloadPin[#nActNo].xInBefore, + // nOutBarcode => #arfbStationUnloadPin[#nActNo].nInBarcode, + // sOutBarcode => #arfbStationUnloadPin[#nActNo].sInBarcode, + // stInOutConveyorStations := #stConveyorStations); + // END_IF; + // END_REGION + + // REGION Check US3 + // #nActNo := 3; + // IF #stInSettings.nNoOfLines >= #nActNo THEN + // "FC_SHR_CheckStationPin"(nInStation := #nActNo + 10, + // xInTargetStation := TRUE, + // nInConvStations := #stInSettings.nConvStations, + // nInStationsMax := #stInSettings.nStationsMax, + // xOutStationHi => #arStartUnloading[#nActNo], + // xOutStationNHi => #arStopUnloading[#nActNo], + // xOutStationHiBefore => #arfbStationUnloadPin[#nActNo].xInBefore, + // nOutBarcode => #arfbStationUnloadPin[#nActNo].nInBarcode, + // sOutBarcode => #arfbStationUnloadPin[#nActNo].sInBarcode, + // stInOutConveyorStations := #stConveyorStations); + // END_IF; + // END_REGION + + // REGION Check US4 + // #nActNo := 4; + // IF #stInSettings.nNoOfLines >= #nActNo THEN + // "FC_SHR_CheckStationPin"(nInStation := #nActNo + 10, + // xInTargetStation := TRUE, + // nInConvStations := #stInSettings.nConvStations, + // nInStationsMax := #stInSettings.nStationsMax, + // xOutStationHi => #arStartUnloading[#nActNo], + // xOutStationNHi => #arStopUnloading[#nActNo], + // xOutStationHiBefore => #arfbStationUnloadPin[#nActNo].xInBefore, + // nOutBarcode => #arfbStationUnloadPin[#nActNo].nInBarcode, + // sOutBarcode => #arfbStationUnloadPin[#nActNo].sInBarcode, + // stInOutConveyorStations := #stConveyorStations); + // END_IF; + // END_REGION + + // REGION Check US5 + // #nActNo := 5; + // IF #stInSettings.nNoOfLines >= #nActNo THEN + // "FC_SHR_CheckStationPin"(nInStation := #nActNo + 10, + // xInTargetStation := TRUE, + // nInConvStations := #stInSettings.nConvStations, + // nInStationsMax := #stInSettings.nStationsMax, + // xOutStationHi => #arStartUnloading[#nActNo], + // xOutStationNHi => #arStopUnloading[#nActNo], + // xOutStationHiBefore => #arfbStationUnloadPin[#nActNo].xInBefore, + // nOutBarcode => #arfbStationUnloadPin[#nActNo].nInBarcode, + // sOutBarcode => #arfbStationUnloadPin[#nActNo].sInBarcode, + // stInOutConveyorStations := #stConveyorStations); + // END_IF; + // END_REGION + + // REGION BYPASS + // #nActNo := #stInSettings.nNoOfLines + 1; + // //Wird immer aufgerufen und hat die Nummer "letzte Linie + 1" + // "FC_SHR_CheckStationPin"(nInStation := #nActNo + 10,//32, + // xInTargetStation := TRUE, + // nInConvStations := #stInSettings.nConvStations, + // nInStationsMax := #stInSettings.nStationsMax, + // xOutStationHi => #arStartUnloading[#nActNo], + // xOutStationNHi => #arStopUnloading[#nActNo], + // xOutStationHiBefore => #arfbStationUnloadPin[#nActNo].xInBefore, + // nOutBarcode => #arfbStationUnloadPin[#nActNo].nInBarcode, + // sOutBarcode => #arfbStationUnloadPin[#nActNo].sInBarcode, + // stInOutConveyorStations := #stConveyorStations); + + // END_REGION + + // END_REGION + + // REGION Unloading Stations + // // Funktioniert, aber TIA erlaubt kein Beobachten von Multiinstanzen innerhalb von Schleifen + // (* FOR #index := 1 TO #cUnloadingStations DO + // #arfbStationUnloadPin[#index](xInMonitorUnloading := TRUE, + // xInStartUnloading := #arStartUnloading[#index], + // xInStopUnloading := #arStopUnloading[#index], + // xInUnloadingCheckSensor := #arInUnloadingCheckSensor[#index].xDirectEdgePos, + // xInPartAfterSwitch := #arInPartAfterSwitch[#index].xDbncdSensor, + // xInReRouteAllowed := FALSE, + // xInQuitLocal := #arInQuitLocal[#index], + // xOutSwitch => #arOutSwitch[#index], + // stInOutControlUnitCabinet := #stInOutControlUnitCabinet, + // inOutConveyorStations := stConveyorStations, + // InOutCarrierStorage := #arInOutStorageLines[#index], + // stInOutHMI := #arHMIInOutUnloadingStations[#index]); + // END_FOR; *) + + // REGION US 1 + // #nActNo := 1; + // #arfbStationUnloadPin[#nActNo](xInMonitorUnloading := TRUE, + // xInStartUnloading := #arStartUnloading[#nActNo], + // xInStopUnloading := #arStopUnloading[#nActNo], + // xInUnloadingCheckSensor := #arInJamSensor[#nActNo].xDirectEdgePos, + // xInPartAfterSwitch := #arInJamSensor[#nActNo].xDbncdSensor, + // xInReRouteAllowed := FALSE, + // xInQuitLocal := #xInQuitLocal, + // xOutSwitch => #arOutSwitch[#nActNo], + // stInOutControlUnitCabinet := #stInOutControlUnitCabinet, + // stInOutConveyorStations := #stConveyorStations, + // arInOutCarrier := #arInOutStorageLines[#nActNo].arCarrier, + // stInOutHMI := #stInOutHMI.UDT_UnloadingStation1); + // #arOutUnloadingError[#nActNo] := #arfbStationUnloadPin[#nActNo].xOutUnloadingError; + // #arOutLineOverloaded[#nActNo] := #arfbStationUnloadPin[#nActNo].xOutLineOverloaded; + // END_REGION + + // REGION US 2 + // #nActNo := 2; + // IF #stInSettings.nNoOfLines >= #nActNo THEN + // #arfbStationUnloadPin[#nActNo](xInMonitorUnloading := TRUE, + // xInStartUnloading := #arStartUnloading[#nActNo], + // xInStopUnloading := #arStopUnloading[#nActNo], + // xInUnloadingCheckSensor := #arInJamSensor[#nActNo].xDirectEdgePos, + // xInPartAfterSwitch := #arInJamSensor[#nActNo].xDbncdSensor, + // xInReRouteAllowed := FALSE, + // xInQuitLocal := #xInQuitLocal, + // xOutSwitch => #arOutSwitch[#nActNo], + // stInOutControlUnitCabinet := #stInOutControlUnitCabinet, + // stInOutConveyorStations := #stConveyorStations, + // arInOutCarrier := #arInOutStorageLines[#nActNo].arCarrier, + // stInOutHMI := #stInOutHMI.UDT_UnloadingStation2); + // #arOutUnloadingError[#nActNo] := #arfbStationUnloadPin[#nActNo].xOutUnloadingError; + // #arOutLineOverloaded[#nActNo] := #arfbStationUnloadPin[#nActNo].xOutLineOverloaded; + // END_IF; + // END_REGION + + // REGION US 3 + // #nActNo := 3; + // IF #stInSettings.nNoOfLines >= #nActNo THEN + // #arfbStationUnloadPin[#nActNo](xInMonitorUnloading := TRUE, + // xInStartUnloading := #arStartUnloading[#nActNo], + // xInStopUnloading := #arStopUnloading[#nActNo], + // xInUnloadingCheckSensor := #arInJamSensor[#nActNo].xDirectEdgePos, + // xInPartAfterSwitch := #arInJamSensor[#nActNo].xDbncdSensor, + // xInReRouteAllowed := FALSE, + // xInQuitLocal := #xInQuitLocal, + // xOutSwitch => #arOutSwitch[#nActNo], + // stInOutControlUnitCabinet := #stInOutControlUnitCabinet, + // stInOutConveyorStations := #stConveyorStations, + // arInOutCarrier := #arInOutStorageLines[#nActNo].arCarrier, + // stInOutHMI := #stInOutHMI.UDT_UnloadingStation3); + // #arOutUnloadingError[#nActNo] := #arfbStationUnloadPin[#nActNo].xOutUnloadingError; + // #arOutLineOverloaded[#nActNo] := #arfbStationUnloadPin[#nActNo].xOutLineOverloaded; + // END_IF; + // END_REGION + + // REGION US 4 + // #nActNo := 4; + // IF #stInSettings.nNoOfLines >= #nActNo THEN + // #arfbStationUnloadPin[#nActNo](xInMonitorUnloading := TRUE, + // xInStartUnloading := #arStartUnloading[#nActNo], + // xInStopUnloading := #arStopUnloading[#nActNo], + // xInUnloadingCheckSensor := #arInJamSensor[#nActNo].xDirectEdgePos, + // xInPartAfterSwitch := #arInJamSensor[#nActNo].xDbncdSensor, + // xInReRouteAllowed := FALSE, + // xInQuitLocal := #xInQuitLocal, + // xOutSwitch => #arOutSwitch[#nActNo], + // stInOutControlUnitCabinet := #stInOutControlUnitCabinet, + // stInOutConveyorStations := #stConveyorStations, + // arInOutCarrier := #arInOutStorageLines[#nActNo].arCarrier, + // stInOutHMI := #stInOutHMI.UDT_UnloadingStation4); + // #arOutUnloadingError[#nActNo] := #arfbStationUnloadPin[#nActNo].xOutUnloadingError; + // #arOutLineOverloaded[#nActNo] := #arfbStationUnloadPin[#nActNo].xOutLineOverloaded; + // END_IF; + // END_REGION + + // REGION US 5 + // #nActNo := 5; + // IF #stInSettings.nNoOfLines >= #nActNo THEN + // #arfbStationUnloadPin[#nActNo](xInMonitorUnloading := TRUE, + // xInStartUnloading := #arStartUnloading[#nActNo], + // xInStopUnloading := #arStopUnloading[#nActNo], + // xInUnloadingCheckSensor := #arInJamSensor[#nActNo].xDirectEdgePos, + // xInPartAfterSwitch := #arInJamSensor[#nActNo].xDbncdSensor, + // xInReRouteAllowed := FALSE, + // xInQuitLocal := #xInQuitLocal, + // xOutSwitch => #arOutSwitch[#nActNo], + // stInOutControlUnitCabinet := #stInOutControlUnitCabinet, + // stInOutConveyorStations := #stConveyorStations, + // arInOutCarrier := #arInOutStorageLines[#nActNo].arCarrier, + // stInOutHMI := #stInOutHMI.UDT_UnloadingStation5); + // #arOutUnloadingError[#nActNo] := #arfbStationUnloadPin[#nActNo].xOutUnloadingError; + // #arOutLineOverloaded[#nActNo] := #arfbStationUnloadPin[#nActNo].xOutLineOverloaded; + // END_IF; + // END_REGION + + // REGION BYPASS + // #nActNo := #stInSettings.nNoOfLines + 1; + // //Wird immer aufgerufen und hat die Nummer "letzte Linie + 1" + // #arfbStationUnloadPin[#nActNo](xInMonitorUnloading := FALSE, //? + // xInStartUnloading := #arStartUnloading[#nActNo], + // xInStopUnloading := #arStopUnloading[#nActNo], + // xInUnloadingCheckSensor := #arInJamSensor[#nActNo].xDirectEdgePos, + // xInPartAfterSwitch := #arInJamSensor[#nActNo].xDbncdSensor, + // xInReRouteAllowed := FALSE, + // xInQuitLocal := #xInQuitLocal, + // xOutSwitch => #arOutSwitch[#nActNo], + // stInOutControlUnitCabinet := #stInOutControlUnitCabinet, + // stInOutConveyorStations := #stConveyorStations, + // arInOutCarrier := #arInOutStorageLines[#nActNo].arCarrier, + // stInOutHMI := #stDummyHmiUnloading); + + // #arOutUnloadingError[#nActNo] := #arfbStationUnloadPin[#nActNo].xOutUnloadingError; + // #arOutLineOverloaded[#nActNo] := #arfbStationUnloadPin[#nActNo].xOutLineOverloaded; + + // END_REGION + + // END_REGION + + // REGION Separator Pin + // #fbSeparatorPin(stInSettings := #stInSeparatorPin.stSettings, + // xInConveyorRun := #xInConveyorRunIn, + // stInTrolley := #stInSeparatorPin.stSenTrolley, + // xInReceiveReady := #xReleaseTrolleySep1, + // xOutStopper => #xOutSeparatorPin, + // stInOutMainState := #stInOutControlUnitCabinet, + // stInOutHMI := #stInOutHMI.UDT_SeparatorPin, + // stInOutCarrDataInJam := #arInOutJamEntr); + + // REGION Accumulate + // #fbCarrierWaitSepPin.stInTimes.tFreeSen1 := #stInSeparatorPin.stSettings.tSenFree; + // #fbCarrierWaitSepPin.stInTimes.tTimerWait := #stInSeparatorPin.stSettings.tSenWait; + // #fbCarrierWaitSepPin(stInSensor1 := #stInSeparatorPin.stSenTrolley, + // xInConvActive := #xInConveyorRunIn); + // END_REGION + + // REGION Dummy Handling + + // #nArrayMax := DINT_TO_INT(UPPER_BOUND(ARR := #arInOutJamEntr, DIM := 1)); + + // REGION Dummy erstellen + // IF #fbSeparatorPin.stOutMainTro.xBtPresent AND + // #fbSeparatorPin.stOutMainTro.nStatus = "SepState_WaitForReq" AND + // #stInSeparatorPin.stSenTrolley.tDirectChangeLast > T#3s AND // variabel machen, Dummy immer anlegen?, Unterscheidung bei Borner? + // #arInOutJamEntr[1] = #tmpCarrierEmpty + // THEN + // #arInOutJamEntr[1].nBarcode := #cCarrierDummy; + // #arInOutJamEntr[1].bStatus.%X0 := TRUE; + // END_IF; + + // END_REGION + + // REGION Dummy löschen + // IF #nArrayMax > 1 THEN //Staubereich mit Capacity > 0 + // IF (#arInOutJamEntr[1] = #stCarrierDummy) //Dummy an erster Position + // AND #arInOutJamEntr[2] = #tmpCarrierEmpty AND //Keine Daten an zweiter Position + // NOT #stInSeparatorPin.stSenTrolley.xDirectSensor AND #stInSeparatorPin.stSenTrolley.tDirectChangeLast > T#8s AND //keine Belegung + // #fbSeparatorPin.stOutMainTro.nStatus = "SepState_WaitForBt" AND #fbSeparatorPin.#fbStateManager.tOutTimeInStep > T#8s //Separator Zustand abfragen + // THEN + // #arInOutJamEntr[1] := #tmpCarrierEmpty; //Dummy löschen + // ELSIF (#arInOutJamEntr[1] = #stCarrierDummy) //Dasselbe wie oben aber mit nachrücken + // AND (#arInOutJamEntr[2] = #stCarrierDummy OR #arInOutJamEntr[2] <> #stCarrierDummy) AND + // NOT #stInSeparatorPin.stSenTrolley.xDirectSensor AND #stInSeparatorPin.stSenTrolley.tDirectChangeLast > T#8s AND + // #fbSeparatorPin.stOutMainTro.nStatus = "SepState_WaitForBt" AND #fbSeparatorPin.#fbStateManager.tOutTimeInStep > T#8s //Separator Zustand abfragen + // THEN + // #arInOutJamEntr[1] := #tmpCarrierEmpty; + // "FC_TSHR_Shift"(xInShiftBack := TRUE, + // arTSHR := #arInOutJamEntr); + // END_IF; + // ELSIF #nArrayMax = 1 THEN + // IF (#arInOutJamEntr[1] = #stCarrierDummy) AND + // NOT #stInSeparatorPin.stSenTrolley.xDirectSensor AND #stInSeparatorPin.stSenTrolley.tDirectChangeLast > T#8s AND + // #fbSeparatorPin.stOutMainTro.nStatus = "SepState_WaitForBt" AND #fbSeparatorPin.#fbStateManager.tOutTimeInStep > T#8s //Separator Zustand abfragen + // THEN + // #arInOutJamEntr[1] := #tmpCarrierEmpty; + // END_IF; + // END_IF; + + // END_REGION + + // END_REGION + + + + // END_REGION + + // REGION Separator StorageLines + + // REGION Separator Freigabe + // //Benötigtem Sep Freigabe erteilen + // // FOR #nIdx1 := 1 TO #stInSettings.nNoOfLines DO + // // IF #stInStorageCarrStats.stRdyToLeave.nLine = #nIdx1 THEN + // // #arLineRelease[#nIdx1] := TRUE; + // // END_IF; + // // END_FOR; + // END_REGION + + // REGION Sep 1 + // #nActNo := 1; + // #arfbSeparatorStorage[#nActNo](stInSettings := #arInSep[#nActNo].stSettings, + // xInConveyorRun := #xInConveyorRunOut, + // stInTrolley := #arInSep[#nActNo].stSenTrolley, + // xInReceiveReady := NOT #fbCarrierWaitStore1.xOutLockSep1 AND #arLineRelease[#nActNo] AND NOT #arInOutJamExit[#arInSep[#nActNo].stSettings.nJamLength].bStatus.%X0, + // xOutStopper => #arOutSeparatorStore[#nActNo], + // stInOutMainState := #stInOutControlUnitCabinet, + // stInOutHMI := #stInOutHMI.UDT_Separator1, + // stInOutCarrDataInJam := #arInOutStorageLines[#nActNo].arCarrier); + + // REGION Carrier anstauen lassen + // #fbCarrierWaitStore1.stInTimes.tFreeSen1 := T#2000ms; + // #fbCarrierWaitStore1.stInTimes.tTimerWait := T#3000ms; + // #fbCarrierWaitStore1(stInSensor1 := #arInSep[#nActNo].stSenTrolley, + // xInConvActive := true); + // END_REGION + + // REGION Dummy Handling + + // #arArrayMax[#nActNo] := 10; + + // REGION Dummy erstellen + // IF #arfbSeparatorStorage[#nActNo].stOutMainTro.xBtPresent AND + // #arfbSeparatorStorage[#nActNo].stOutMainTro.nStatus = "SepState_WaitForReq" AND + // #arInSep[#nActNo].stSenTrolley.tDirectChangeLast > T#3s AND // variabel machen, Dummy immer anlegen?, Unterscheidung bei Borner? + // #arInOutStorageLines[#nActNo].arCarrier[1] = #tmpCarrierEmpty + // THEN + // #arInOutStorageLines[#nActNo].arCarrier[1].nBarcode := #cCarrierDummy; + // #arInOutStorageLines[#nActNo].arCarrier[1].bStatus.%X0 := TRUE; + // END_IF; + + // END_REGION + + // REGION Dummy löschen + // IF #arArrayMax[#nActNo] > 1 THEN //Staubereich mit Capacity > 0 + // IF (#arInOutStorageLines[#nActNo].arCarrier[1] = #stCarrierDummy) //Dummy an erster Position + // AND #arInOutStorageLines[#nActNo].arCarrier[2] = #tmpCarrierEmpty AND //Keine Daten an zweiter Position + // NOT #arInSep[#nActNo].stSenTrolley.xDirectSensor AND #arInSep[#nActNo].stSenTrolley.tDirectChangeLast > T#8s AND //keine Belegung + // #arfbSeparatorStorage[#nActNo].stOutMainTro.nStatus = "SepState_WaitForBt" AND #arfbSeparatorStorage[#nActNo].#fbStateManager.tOutTimeInStep > T#8s //Separator Zustand abfragen + // THEN + // #arInOutStorageLines[#nActNo].arCarrier[1] := #tmpCarrierEmpty; //Dummy löschen + // ELSIF (#arInOutStorageLines[#nActNo].arCarrier[1] = #stCarrierDummy) //Dasselbe wie oben aber mit nachrücken + // AND (#arInOutStorageLines[#nActNo].arCarrier[2] = #stCarrierDummy OR #arInOutStorageLines[#nActNo].arCarrier[2] <> #stCarrierDummy) AND + // NOT #arInSep[#nActNo].stSenTrolley.xDirectSensor AND #arInSep[#nActNo].stSenTrolley.tDirectChangeLast > T#8s AND + // #arfbSeparatorStorage[#nActNo].stOutMainTro.nStatus = "SepState_WaitForBt" AND #arfbSeparatorStorage[#nActNo].#fbStateManager.tOutTimeInStep > T#8s //Separator Zustand abfragen + // THEN + // #arInOutStorageLines[#nActNo].arCarrier[1] := #tmpCarrierEmpty; + // "FC_TSHR_Shift"(xInShiftBack := TRUE, + // arTSHR := #arInOutStorageLines[#nActNo].arCarrier); + // END_IF; + // ELSIF #nArrayMax = 1 THEN + // IF (#arInOutStorageLines[#nActNo].arCarrier[1] = #stCarrierDummy) AND + // NOT #arInSep[#nActNo].stSenTrolley.xDirectSensor AND #arInSep[#nActNo].stSenTrolley.tDirectChangeLast > T#8s AND + // #arfbSeparatorStorage[#nActNo].stOutMainTro.nStatus = "SepState_WaitForBt" AND #arfbSeparatorStorage[#nActNo].#fbStateManager.tOutTimeInStep > T#8s //Separator Zustand abfragen + // THEN + // #arInOutStorageLines[#nActNo].arCarrier[1] := #tmpCarrierEmpty; + // END_IF; + // END_IF; + + // END_REGION + + // END_REGION + + // END_REGION + + // REGION Sep 2 + // #nActNo := 2; + // IF #stInSettings.nNoOfLines >= #nActNo THEN + // #arfbSeparatorStorage[#nActNo](stInSettings := #arInSep[#nActNo].stSettings, + // xInConveyorRun := #xInConveyorRunOut, + // stInTrolley := #arInSep[#nActNo].stSenTrolley, + // xInReceiveReady := NOT #fbCarrierWaitStore2.xOutLockSep1 AND #arLineRelease[#nActNo] AND NOT #arInOutJamExit[#arInSep[#nActNo].stSettings.nJamLength].bStatus.%X0, + // stInOutMainState := #stInOutControlUnitCabinet, + // xOutStopper => #arOutSeparatorStore[#nActNo], + // stInOutHMI := #stInOutHMI.UDT_Separator2, + // stInOutCarrDataInJam := #arInOutStorageLines[#nActNo].arCarrier); + // END_IF; + + // REGION Carrier anstauen lassen + // #fbCarrierWaitStore2.stInTimes.tFreeSen1 := T#2000ms; + // #fbCarrierWaitStore2.stInTimes.tTimerWait := T#3000ms; + // #fbCarrierWaitStore2(stInSensor1 := #arInSep[#nActNo].stSenTrolley, + // xInConvActive := true); + // END_REGION + + // REGION Dummy Handling + + // #arArrayMax[#nActNo] := 10; + + // REGION Dummy erstellen + // IF #arfbSeparatorStorage[#nActNo].stOutMainTro.xBtPresent AND + // #arfbSeparatorStorage[#nActNo].stOutMainTro.nStatus = "SepState_WaitForReq" AND + // #arInSep[#nActNo].stSenTrolley.tDirectChangeLast > T#3s AND // variabel machen, Dummy immer anlegen?, Unterscheidung bei Borner? + // #arInOutStorageLines[#nActNo].arCarrier[1] = #tmpCarrierEmpty + // THEN + // #arInOutStorageLines[#nActNo].arCarrier[1].nBarcode := #cCarrierDummy; + // #arInOutStorageLines[#nActNo].arCarrier[1].bStatus.%X0 := TRUE; + // END_IF; + + // END_REGION + + // REGION Dummy löschen + // IF #arArrayMax[#nActNo] > 1 THEN //Staubereich mit Capacity > 0 + // IF (#arInOutStorageLines[#nActNo].arCarrier[1] = #stCarrierDummy) //Dummy an erster Position + // AND #arInOutStorageLines[#nActNo].arCarrier[2] = #tmpCarrierEmpty AND //Keine Daten an zweiter Position + // NOT #arInSep[#nActNo].stSenTrolley.xDirectSensor AND #arInSep[#nActNo].stSenTrolley.tDirectChangeLast > T#8s AND //keine Belegung + // #arfbSeparatorStorage[#nActNo].stOutMainTro.nStatus = "SepState_WaitForBt" AND #arfbSeparatorStorage[#nActNo].#fbStateManager.tOutTimeInStep > T#8s //Separator Zustand abfragen + // THEN + // #arInOutStorageLines[#nActNo].arCarrier[1] := #tmpCarrierEmpty; //Dummy löschen + // ELSIF (#arInOutStorageLines[#nActNo].arCarrier[1] = #stCarrierDummy) //Dasselbe wie oben aber mit nachrücken + // AND (#arInOutStorageLines[#nActNo].arCarrier[2] = #stCarrierDummy OR #arInOutStorageLines[#nActNo].arCarrier[2] <> #stCarrierDummy) AND + // NOT #arInSep[#nActNo].stSenTrolley.xDirectSensor AND #arInSep[#nActNo].stSenTrolley.tDirectChangeLast > T#8s AND + // #arfbSeparatorStorage[#nActNo].stOutMainTro.nStatus = "SepState_WaitForBt" AND #arfbSeparatorStorage[#nActNo].#fbStateManager.tOutTimeInStep > T#8s //Separator Zustand abfragen + // THEN + // #arInOutStorageLines[#nActNo].arCarrier[1] := #tmpCarrierEmpty; + // "FC_TSHR_Shift"(xInShiftBack := TRUE, + // arTSHR := #arInOutStorageLines[#nActNo].arCarrier); + // END_IF; + // ELSIF #nArrayMax = 1 THEN + // IF (#arInOutStorageLines[#nActNo].arCarrier[1] = #stCarrierDummy) AND + // NOT #arInSep[#nActNo].stSenTrolley.xDirectSensor AND #arInSep[#nActNo].stSenTrolley.tDirectChangeLast > T#8s AND + // #arfbSeparatorStorage[#nActNo].stOutMainTro.nStatus = "SepState_WaitForBt" AND #arfbSeparatorStorage[#nActNo].#fbStateManager.tOutTimeInStep > T#8s //Separator Zustand abfragen + // THEN + // #arInOutStorageLines[#nActNo].arCarrier[1] := #tmpCarrierEmpty; + // END_IF; + // END_IF; + + // END_REGION + + // END_REGION + + + // END_REGION + + // REGION Sep 3 + // #nActNo := 3; + // IF #stInSettings.nNoOfLines >= #nActNo THEN + // #arfbSeparatorStorage[#nActNo](stInSettings := #arInSep[#nActNo].stSettings, + // xInConveyorRun := #xInConveyorRunOut, + // stInTrolley := #arInSep[#nActNo].stSenTrolley, + // xInReceiveReady := #arLineRelease[#nActNo] AND NOT #arInOutJamExit[#arInSep[#nActNo].stSettings.nJamLength].bStatus.%X0, + // stInOutMainState := #stInOutControlUnitCabinet, + // xOutStopper => #arOutSeparatorStore[#nActNo], + // stInOutHMI := #stInOutHMI.UDT_Separator3, + // stInOutCarrDataInJam := #arInOutStorageLines[#nActNo].arCarrier); + // END_IF; + + // REGION Carrier anstauen lassen + // #fbCarrierWaitStore3.stInTimes.tFreeSen1 := T#2000ms; + // #fbCarrierWaitStore3.stInTimes.tTimerWait := T#3000ms; + // #fbCarrierWaitStore3(stInSensor1 := #arInSep[#nActNo].stSenTrolley, + // xInConvActive := true); + // END_REGION + + // REGION Dummy Handling + + // #arArrayMax[#nActNo] := 10; + + // REGION Dummy erstellen + // IF #arfbSeparatorStorage[#nActNo].stOutMainTro.xBtPresent AND + // #arfbSeparatorStorage[#nActNo].stOutMainTro.nStatus = "SepState_WaitForReq" AND + // #arInSep[#nActNo].stSenTrolley.tDirectChangeLast > T#3s AND // variabel machen, Dummy immer anlegen?, Unterscheidung bei Borner? + // #arInOutStorageLines[#nActNo].arCarrier[1] = #tmpCarrierEmpty + // THEN + // #arInOutStorageLines[#nActNo].arCarrier[1].nBarcode := #cCarrierDummy; + // #arInOutStorageLines[#nActNo].arCarrier[1].bStatus.%X0 := TRUE; + // END_IF; + + // END_REGION + + // REGION Dummy löschen + // IF #arArrayMax[#nActNo] > 1 THEN //Staubereich mit Capacity > 0 + // IF (#arInOutStorageLines[#nActNo].arCarrier[1] = #stCarrierDummy) //Dummy an erster Position + // AND #arInOutStorageLines[#nActNo].arCarrier[2] = #tmpCarrierEmpty AND //Keine Daten an zweiter Position + // NOT #arInSep[#nActNo].stSenTrolley.xDirectSensor AND #arInSep[#nActNo].stSenTrolley.tDirectChangeLast > T#8s AND //keine Belegung + // #arfbSeparatorStorage[#nActNo].stOutMainTro.nStatus = "SepState_WaitForBt" AND #arfbSeparatorStorage[#nActNo].#fbStateManager.tOutTimeInStep > T#8s //Separator Zustand abfragen + // THEN + // #arInOutStorageLines[#nActNo].arCarrier[1] := #tmpCarrierEmpty; //Dummy löschen + // ELSIF (#arInOutStorageLines[#nActNo].arCarrier[1] = #stCarrierDummy) //Dasselbe wie oben aber mit nachrücken + // AND (#arInOutStorageLines[#nActNo].arCarrier[2] = #stCarrierDummy OR #arInOutStorageLines[#nActNo].arCarrier[2] <> #stCarrierDummy) AND + // NOT #arInSep[#nActNo].stSenTrolley.xDirectSensor AND #arInSep[#nActNo].stSenTrolley.tDirectChangeLast > T#8s AND + // #arfbSeparatorStorage[#nActNo].stOutMainTro.nStatus = "SepState_WaitForBt" AND #arfbSeparatorStorage[#nActNo].#fbStateManager.tOutTimeInStep > T#8s //Separator Zustand abfragen + // THEN + // #arInOutStorageLines[#nActNo].arCarrier[1] := #tmpCarrierEmpty; + // "FC_TSHR_Shift"(xInShiftBack := TRUE, + // arTSHR := #arInOutStorageLines[#nActNo].arCarrier); + // END_IF; + // ELSIF #nArrayMax = 1 THEN + // IF (#arInOutStorageLines[#nActNo].arCarrier[1] = #stCarrierDummy) AND + // NOT #arInSep[#nActNo].stSenTrolley.xDirectSensor AND #arInSep[#nActNo].stSenTrolley.tDirectChangeLast > T#8s AND + // #arfbSeparatorStorage[#nActNo].stOutMainTro.nStatus = "SepState_WaitForBt" AND #arfbSeparatorStorage[#nActNo].#fbStateManager.tOutTimeInStep > T#8s //Separator Zustand abfragen + // THEN + // #arInOutStorageLines[#nActNo].arCarrier[1] := #tmpCarrierEmpty; + // END_IF; + // END_IF; + + // END_REGION + + // END_REGION + + // END_REGION + + // REGION Sep 4 + // #nActNo := 4; + // IF #stInSettings.nNoOfLines >= #nActNo THEN + // #arfbSeparatorStorage[#nActNo](stInSettings := #arInSep[#nActNo].stSettings, + // xInConveyorRun := #xInConveyorRunOut, + // stInTrolley := #arInSep[#nActNo].stSenTrolley, + // xInReceiveReady := #arLineRelease[#nActNo] AND NOT #arInOutJamExit[#arInSep[#nActNo].stSettings.nJamLength].bStatus.%X0, + // stInOutMainState := #stInOutControlUnitCabinet, + // xOutStopper => #arOutSeparatorStore[#nActNo], + // stInOutHMI := #stInOutHMI.UDT_Separator4, + // stInOutCarrDataInJam := #arInOutStorageLines[#nActNo].arCarrier); + // END_IF; + + // REGION Carrier anstauen lassen + // #fbCarrierWaitStore4.stInTimes.tFreeSen1 := T#2000ms; + // #fbCarrierWaitStore4.stInTimes.tTimerWait := T#3000ms; + // #fbCarrierWaitStore4(stInSensor1 := #arInSep[#nActNo].stSenTrolley, + // xInConvActive := true); + // END_REGION + + // REGION Dummy Handling + + // #arArrayMax[#nActNo] := 10; + + // REGION Dummy erstellen + // IF #arfbSeparatorStorage[#nActNo].stOutMainTro.xBtPresent AND + // #arfbSeparatorStorage[#nActNo].stOutMainTro.nStatus = "SepState_WaitForReq" AND + // #arInSep[#nActNo].stSenTrolley.tDirectChangeLast > T#3s AND // variabel machen, Dummy immer anlegen?, Unterscheidung bei Borner? + // #arInOutStorageLines[#nActNo].arCarrier[1] = #tmpCarrierEmpty + // THEN + // #arInOutStorageLines[#nActNo].arCarrier[1].nBarcode := #cCarrierDummy; + // #arInOutStorageLines[#nActNo].arCarrier[1].bStatus.%X0 := TRUE; + // END_IF; + + // END_REGION + + // REGION Dummy löschen + // IF #arArrayMax[#nActNo] > 1 THEN //Staubereich mit Capacity > 0 + // IF (#arInOutStorageLines[#nActNo].arCarrier[1] = #stCarrierDummy) //Dummy an erster Position + // AND #arInOutStorageLines[#nActNo].arCarrier[2] = #tmpCarrierEmpty AND //Keine Daten an zweiter Position + // NOT #arInSep[#nActNo].stSenTrolley.xDirectSensor AND #arInSep[#nActNo].stSenTrolley.tDirectChangeLast > T#8s AND //keine Belegung + // #arfbSeparatorStorage[#nActNo].stOutMainTro.nStatus = "SepState_WaitForBt" AND #arfbSeparatorStorage[#nActNo].#fbStateManager.tOutTimeInStep > T#8s //Separator Zustand abfragen + // THEN + // #arInOutStorageLines[#nActNo].arCarrier[1] := #tmpCarrierEmpty; //Dummy löschen + // ELSIF (#arInOutStorageLines[#nActNo].arCarrier[1] = #stCarrierDummy) //Dasselbe wie oben aber mit nachrücken + // AND (#arInOutStorageLines[#nActNo].arCarrier[2] = #stCarrierDummy OR #arInOutStorageLines[#nActNo].arCarrier[2] <> #stCarrierDummy) AND + // NOT #arInSep[#nActNo].stSenTrolley.xDirectSensor AND #arInSep[#nActNo].stSenTrolley.tDirectChangeLast > T#8s AND + // #arfbSeparatorStorage[#nActNo].stOutMainTro.nStatus = "SepState_WaitForBt" AND #arfbSeparatorStorage[#nActNo].#fbStateManager.tOutTimeInStep > T#8s //Separator Zustand abfragen + // THEN + // #arInOutStorageLines[#nActNo].arCarrier[1] := #tmpCarrierEmpty; + // "FC_TSHR_Shift"(xInShiftBack := TRUE, + // arTSHR := #arInOutStorageLines[#nActNo].arCarrier); + // END_IF; + // ELSIF #nArrayMax = 1 THEN + // IF (#arInOutStorageLines[#nActNo].arCarrier[1] = #stCarrierDummy) AND + // NOT #arInSep[#nActNo].stSenTrolley.xDirectSensor AND #arInSep[#nActNo].stSenTrolley.tDirectChangeLast > T#8s AND + // #arfbSeparatorStorage[#nActNo].stOutMainTro.nStatus = "SepState_WaitForBt" AND #arfbSeparatorStorage[#nActNo].#fbStateManager.tOutTimeInStep > T#8s //Separator Zustand abfragen + // THEN + // #arInOutStorageLines[#nActNo].arCarrier[1] := #tmpCarrierEmpty; + // END_IF; + // END_IF; + + // END_REGION + + // END_REGION + // END_REGION + + // REGION Sep 5 + // #nActNo := 5; + // IF #stInSettings.nNoOfLines >= #nActNo THEN + // #arfbSeparatorStorage[#nActNo](stInSettings := #arInSep[#nActNo].stSettings, + // xInConveyorRun := #xInConveyorRunOut, + // stInTrolley := #arInSep[#nActNo].stSenTrolley, + // xInReceiveReady := #arLineRelease[#nActNo] AND NOT #arInOutJamExit[#arInSep[#nActNo].stSettings.nJamLength].bStatus.%X0, + // stInOutMainState := #stInOutControlUnitCabinet, + // xOutStopper => #arOutSeparatorStore[#nActNo], + // stInOutHMI := #stInOutHMI.UDT_Separator5, + // stInOutCarrDataInJam := #arInOutStorageLines[#nActNo].arCarrier); + // END_IF; + + // REGION Carrier anstauen lassen + // #fbCarrierWaitStore5.stInTimes.tFreeSen1 := T#2000ms; + // #fbCarrierWaitStore5.stInTimes.tTimerWait := T#3000ms; + // #fbCarrierWaitStore5(stInSensor1 := #arInSep[#nActNo].stSenTrolley, + // xInConvActive := true); + // END_REGION + + // REGION Dummy Handling + + // #arArrayMax[#nActNo] := 10; + + // REGION Dummy erstellen + // IF #arfbSeparatorStorage[#nActNo].stOutMainTro.xBtPresent AND + // #arfbSeparatorStorage[#nActNo].stOutMainTro.nStatus = "SepState_WaitForReq" AND + // #arInSep[#nActNo].stSenTrolley.tDirectChangeLast > T#3s AND // variabel machen, Dummy immer anlegen?, Unterscheidung bei Borner? + // #arInOutStorageLines[#nActNo].arCarrier[1] = #tmpCarrierEmpty + // THEN + // #arInOutStorageLines[#nActNo].arCarrier[1].nBarcode := #cCarrierDummy; + // #arInOutStorageLines[#nActNo].arCarrier[1].bStatus.%X0 := TRUE; + // END_IF; + + // END_REGION + + // REGION Dummy löschen + // IF #arArrayMax[#nActNo] > 1 THEN //Staubereich mit Capacity > 0 + // IF (#arInOutStorageLines[#nActNo].arCarrier[1] = #stCarrierDummy) //Dummy an erster Position + // AND #arInOutStorageLines[#nActNo].arCarrier[2] = #tmpCarrierEmpty AND //Keine Daten an zweiter Position + // NOT #arInSep[#nActNo].stSenTrolley.xDirectSensor AND #arInSep[#nActNo].stSenTrolley.tDirectChangeLast > T#8s AND //keine Belegung + // #arfbSeparatorStorage[#nActNo].stOutMainTro.nStatus = "SepState_WaitForBt" AND #arfbSeparatorStorage[#nActNo].#fbStateManager.tOutTimeInStep > T#8s //Separator Zustand abfragen + // THEN + // #arInOutStorageLines[#nActNo].arCarrier[1] := #tmpCarrierEmpty; //Dummy löschen + // ELSIF (#arInOutStorageLines[#nActNo].arCarrier[1] = #stCarrierDummy) //Dasselbe wie oben aber mit nachrücken + // AND (#arInOutStorageLines[#nActNo].arCarrier[2] = #stCarrierDummy OR #arInOutStorageLines[#nActNo].arCarrier[2] <> #stCarrierDummy) AND + // NOT #arInSep[#nActNo].stSenTrolley.xDirectSensor AND #arInSep[#nActNo].stSenTrolley.tDirectChangeLast > T#8s AND + // #arfbSeparatorStorage[#nActNo].stOutMainTro.nStatus = "SepState_WaitForBt" AND #arfbSeparatorStorage[#nActNo].#fbStateManager.tOutTimeInStep > T#8s //Separator Zustand abfragen + // THEN + // #arInOutStorageLines[#nActNo].arCarrier[1] := #tmpCarrierEmpty; + // "FC_TSHR_Shift"(xInShiftBack := TRUE, + // arTSHR := #arInOutStorageLines[#nActNo].arCarrier); + // END_IF; + // ELSIF #nArrayMax = 1 THEN + // IF (#arInOutStorageLines[#nActNo].arCarrier[1] = #stCarrierDummy) AND + // NOT #arInSep[#nActNo].stSenTrolley.xDirectSensor AND #arInSep[#nActNo].stSenTrolley.tDirectChangeLast > T#8s AND + // #arfbSeparatorStorage[#nActNo].stOutMainTro.nStatus = "SepState_WaitForBt" AND #arfbSeparatorStorage[#nActNo].#fbStateManager.tOutTimeInStep > T#8s //Separator Zustand abfragen + // THEN + // #arInOutStorageLines[#nActNo].arCarrier[1] := #tmpCarrierEmpty; + // END_IF; + // END_IF; + + // END_REGION + + // END_REGION + // END_REGION + + // END_REGION + + // REGION Barcode Reader 1 + // #fbBarcodeReader1(stInSettings := #stInBarcodeReader.Settings, + // xInHWError := false, // todo + // xInStartReading := #xStartScan, + // xInHandshakeDone := #xHandshakeScan, + // stInOutInterface := #stCognexInterfacePin, + // stInOutControlUnitCabinet := #stInOutControlUnitCabinet, + // stInOutHMI := #stInOutHMI.UDT_BarcodeReader); + // END_REGION + + // REGION Output + // #xOutConvReqSort := (#nStateE = #c1500_StepReleaseSep1) OR (#nStateE = #c2500_StepReleaseSep2); //TRUE;//#fbSeparatorPin.xOutConveyorRequest; + // #xOutConvReqExit := (#nStateA = #c1500_StepReleaseSep1) OR (#nStateA = #c2500_StepReleaseSep2); + + // FOR #nIdx2 := 1 TO #cUnloadingStations DO + // IF #arfbStationUnloadPin[#nIdx2].xOutUnloadingError THEN + // #xOutUnloadingError := TRUE; + // EXIT; + // ELSE + // #xOutUnloadingError := FALSE; + // END_IF; + // END_FOR; + + // #xOutCorrection := #xTmpCorrection; + // END_REGION + + // REGION BlockManager + // // Funktionen die den ganzen Lagerblock betreffen + // // z.B. Schrittkette + // // Füllstandsmanagement + // // Verschiedene Modi (Einlagern, Auslagern, Ein-und Auslagern...) + // REGION Einlagern + // // Zielvergabe nach entsprechender Einlagerstrategie (chaotisch, nach Sorten...) + + // END_REGION + + // REGION Auslagern + // // TRO bearbeitet eine Auftragsliste, die Aufträge (Minitrolley) werden vom WES von außen übergeben + // // Steuerung der Separatoren an den Lagerausgängen, je nachdem was angefordert wird + + // END_REGION + + // REGION Füllgrad + // // Füllgrad der Linien ermitteln / überwachen und nach außen übergeben + + // END_REGION + // END_REGION + + // REGION Event Logs + // REGION Event: Umbuchung SepPin auf SHR + // #stBookingInfo.sJamSrc := #stInSettings.sJamSrc; + // IF #nTarget1 = 11 THEN + // #stBookingInfo.sJamDest := 'SHR'; + // ELSIF #nTarget1 = 12 THEN + // #stBookingInfo.sJamDest := 'SHR'; + // END_IF; + // #fbEventLog_Route1(xInTrigger := #xEventLogBookSHR, + // stInEventBookingInfo := #stBookingInfo); + // END_REGION + + // REGION Event: Umbuchung Lagerlinie auf Exit + // IF #nActLine = 1 THEN + // #stBookingInfo.sJamSrc := 'JamStore1'; + // ELSIF #nActLine = 2 THEN + // #stBookingInfo.sJamSrc := 'JamStore2'; + // END_IF; + + // #stBookingInfo.sJamDest := #stInSettings.sJamDest; + + // #fbEventLog_Route2(xInTrigger := #xEventLogBookExit, + // stInEventBookingInfo := #stBookingInfo); + // END_REGION + + // // Pro Event wird ein Aufruf benötigt + // REGION Korrekturvorgänge loggen + + // #fbEventLogCorrection1(xInTrigger := #arEventCorrectionInfo[0].xTrigger, + // stInEventCorrectionInfo := #arEventCorrectionInfo[0]); + + // #fbEventLogCorrection2(xInTrigger := #arEventCorrectionInfo[1].xTrigger, + // stInEventCorrectionInfo := #arEventCorrectionInfo[1]); + + // END_REGION + + // #fbEventLogCarrierUnknown(xInTrigger := #xUnknownCarrier, + // stInEventScanInfo := #stEventUnknown); + + // #fbEventLogCarrierNew(xInTrigger := #xNewCarrier, + // stInEventScanInfo := #stEventNew); + + // #fbEventLogGoodRead(xInTrigger := #xGoodRead, + // stInEventScanInfo := #stEventGoodRead); + + // END_REGION +END_FUNCTION_BLOCK + diff --git a/=A01+UH01-KF00/Programmbausteine/900_Communications/DB_Buffer_CommunicationWCSBL.xml b/=A01+UH01-KF00/Programmbausteine/900_Communications/DB_Buffer_CommunicationWCSBL.xml new file mode 100644 index 0000000..bbcfe17 --- /dev/null +++ b/=A01+UH01-KF00/Programmbausteine/900_Communications/DB_Buffer_CommunicationWCSBL.xml @@ -0,0 +1,71 @@ + + + + + + +
+ + + false + false + false + + +
+
+ Optimized + 100 + DB_Buffer_CommunicationWCSBL + + 47 + DB +
+ + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + +
+
\ No newline at end of file diff --git a/=A01+UH01-KF00/Programmbausteine/900_Communications/DB_CommunicationParameters.xml b/=A01+UH01-KF00/Programmbausteine/900_Communications/DB_CommunicationParameters.xml new file mode 100644 index 0000000..2b4a05f --- /dev/null +++ b/=A01+UH01-KF00/Programmbausteine/900_Communications/DB_CommunicationParameters.xml @@ -0,0 +1,65 @@ + + + + + + +
+ +
+
+ Optimized + 100 + DB_CommunicationParameters + + 64 + DB +
+ + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + +
+
\ No newline at end of file diff --git a/=A01+UH01-KF00/Programmbausteine/900_Communications/DB_LGF_FIFO_CommWCSBL.xml b/=A01+UH01-KF00/Programmbausteine/900_Communications/DB_LGF_FIFO_CommWCSBL.xml new file mode 100644 index 0000000..8cd62f6 --- /dev/null +++ b/=A01+UH01-KF00/Programmbausteine/900_Communications/DB_LGF_FIFO_CommWCSBL.xml @@ -0,0 +1,142 @@ + + + + + + Siemens_Industry_Support + LGF + LGF_FIFO + LGF_FIFO + FB + +
+ + + + + + +
+
+ + + false + + + + + false + + + + + false + + + + + false + + + + + false + + + + + + +
+
+ + + +
+
+ + + false + false + false + + + + + + + + false + false + false + + + + + false + false + false + + + + + false + false + false + + +
+
+ DB_LGF_FIFO_CommWCSBL + + 48 + DB +
+ + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + +
+
\ No newline at end of file diff --git a/=A01+UH01-KF00/Programmbausteine/900_Communications/FB_CommunicationWCSBL.scl b/=A01+UH01-KF00/Programmbausteine/900_Communications/FB_CommunicationWCSBL.scl new file mode 100644 index 0000000..6721293 --- /dev/null +++ b/=A01+UH01-KF00/Programmbausteine/900_Communications/FB_CommunicationWCSBL.scl @@ -0,0 +1,250 @@ +FUNCTION_BLOCK "FB_CommunicationWCSBL" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + VAR_IN_OUT + fbInOutSendFIFO : "LGF_FIFO"; + arFifoSendBuffer : Array[1..100] of "UDT_TelegramData_Send"; + END_VAR + + VAR + fbTeleHandler : "FB_TCP_LCOM_TeleHandler"; + xReset : Bool; + xSendTele : Bool; + stTelegramToSend : "UDT_TelegramData_Send"; + nState : Int; + xRetVal : Bool; + stNewTelegram { S7_SetPoint := 'False'} : "UDT_TelegramData"; + stTeleGOHDRespM : "UDT_Telegram_GOHDRespM"; + arPayloadHelp : Array[0..200] of Byte; + cnt : UInt; + LStream_JsonDeserializer_Instance : "LStream_JsonDeserializer"; + typeElement { S7_SetPoint := 'False'} : Array[0..10] of "LStream_typeElement" := [(2, 'DecisionPoint', (), (), ()), (3, 'GIN', (), (), ()), (2, 'Barcode', (), (), ()), (1, 'Actions', (), (), true), ((), (), (), (), ()), ((), (), (), (), ()), ((), (), (), (), ()), ((), (), (), (), ()), ((), (), (), (), ()), ((), (), (), (), ()), ((), (), (), (), ())]; + xDone : Bool; + rTrigConnectionActive {InstructionName := 'R_TRIG'; LibVersion := '1.0'} : R_TRIG; + xSendHeartbeat : Bool; + tOnHeartbeat {InstructionName := 'TON_TIME'; LibVersion := '1.0'} : TON_TIME; + END_VAR + + VAR_TEMP + xStart : Bool; + test : "UDT_TelegramData_Send"; + empty : "UDT_TelegramData_Send"; + xSuccess : Bool; + stLogTelegram : "UDT_TelegramData_Send"; + i : Int; + END_VAR + + +BEGIN + REGION Info + // Kommunikation zu Fortna WCSBL + // Telegramme: + // Senden: + // GOHDReqM (Zielanfrage) | Von Schönenberger -> Fortna WCSBL + // GOHDUM (Update) | Von Schönenberger -> Fortna WCSBL + // Empfangen: + // GOHDRespM (Antwort auf Zielanfrage) | Von Fortna WCSBL -> Schönenberger + END_REGION + + REGION Call TeleHandler + // hardware identifier of the local interface, PLC tags--Default tag table--System constant default value: PROFINET_interface_1 = 64 + #fbTeleHandler.stInTcpTypeConfig.connection.interfaceID := "Local~PN-Interface_Customer"; + //unique connection identifier (W#16#0001...W#16#0FFF) + #fbTeleHandler.stInTcpTypeConfig.connection.connectionID := 1; + //used protocol: 1=TCP protocol, 2=LCom protocol + #fbTeleHandler.stInTcpTypeConfig.connection.comService := "LCOM_TCP_CONNECTION"; + //FALSE: passive (server), TRUE: active connection establishment (client) + #fbTeleHandler.stInTcpTypeConfig.connection.isClient := TRUE; + //TRUE: accept requests from all partners, FALSE: only specified partner is allowed in case of server + #fbTeleHandler.stInTcpTypeConfig.connection.acceptUnknownPartner := TRUE; + //local port number (possible values: 1...49151; caution: some may be reserved for internal use; recommended values: 2000...5000) + #fbTeleHandler.stInTcpTypeConfig.connection.localPort := 30650; + //partner port number, use only in case of client or specified partner (possible values: 1...49151; recommended values: 2000...5000) + #fbTeleHandler.stInTcpTypeConfig.connection.partnerPort := 30650; + + //partner IP address xxx.xxx.xxx.xxx = [1].[2].[3].[4], use only in case of client or specified partner + #fbTeleHandler.stInTcpTypeConfig.connection.partnerIP.ADDR[1] := 172; + #fbTeleHandler.stInTcpTypeConfig.connection.partnerIP.ADDR[2] := 22; + #fbTeleHandler.stInTcpTypeConfig.connection.partnerIP.ADDR[3] := 160; + #fbTeleHandler.stInTcpTypeConfig.connection.partnerIP.ADDR[4] := 23; + + #fbTeleHandler.stInTcpTypeConfig.connection.connectType := "LCOM_CON_TYPE_IPV4"; + + // Telegramdefinition + #fbTeleHandler.stInTelegramDefinition.sStartMarker := '$02'; + #fbTeleHandler.stInTelegramDefinition.sEndMarker := '$03'; + #fbTeleHandler.stInTelegramDefinition.sStartMarkerSend := '$02'; + #fbTeleHandler.stInTelegramDefinition.sEndMarkerSend := '$03'; + #fbTeleHandler.stInTelegramDefinition.bSeparatorByte := '$1D'; //','; + #fbTeleHandler.stInTelegramDefinition.nLength := 0; + #fbTeleHandler.stInTelegramDefinition.nTelegramIDDataField := 0; + #fbTeleHandler.stInTelegramDefinition.xTelegramIDIsNumber := FALSE; + + #fbTeleHandler(xInReset := #xReset, + xInOutSendTele := #xSendTele, + stInTelegramSend := #stTelegramToSend, + fbInOutSendFIFO:= #fbInOutSendFIFO, + arFifoSendBuffer:=#arFifoSendBuffer); + END_REGION + + REGION Reset SequenceNumber + #rTrigConnectionActive(CLK:=#fbTeleHandler.xOutConnectionActive); + + IF #rTrigConnectionActive.Q THEN + "DB_CommunicationParameters".nSeqNumWCSBL := 0; + END_IF; + END_REGION + + REGION Send Heartbeat + IF #fbTeleHandler.xOutConnectionActive THEN + #xSendHeartbeat := TRUE; + + IF #tOnHeartbeat.Q THEN + #xSendHeartbeat := FALSE; + "FC_Send_HB"(sInPLCID := "cPLCID", + nInPartnerType:= 1, + FIFO := "DB_LGF_FIFO_CommWCSBL", + BUFFER := "DB_Buffer_CommunicationWCSBL".BUFFER, + nInOutSequenceNumber:="DB_CommunicationParameters".nSeqNumWCSBL); + END_IF; + ELSE + #xSendHeartbeat := FALSE; + END_IF; + + #tOnHeartbeat(IN := #xSendHeartbeat, + PT := t#15s); + END_REGION + + REGION Empfangen + CASE #nState OF + 0: // Waiting + //New Telegram + IF #fbTeleHandler.xOutTelegramAvailable THEN + #fbTeleHandler.xInGetFirst := TRUE; + #nState := 100; + END_IF; + 100: // Get new Telegram + #stNewTelegram := #fbTeleHandler.stOutNewTelegram; + #fbTeleHandler.xInGetFirst := FALSE; + + #stLogTelegram.nDataCount := #stNewTelegram.nDataCount; + + FOR #i := 1 TO 15 DO + #stLogTelegram.arDataString[#i] := #stNewTelegram.arDataString[#i]; + END_FOR; + + REGION LOG + IF "FB_CommunicationLogger_DB".fbTeleHandler.xOutConnectionActive THEN + "FC_FIFO_Append"(DataIn := #stLogTelegram, + InitialItem := #empty, + MaxNo := 100, + Success => #xSuccess, + fifoBuffer := "DB_LGF_FIFO_CommLogger", + buffer := "DB_Buffer_CommunicationLogger".BUFFER); + END_IF; + + END_REGION + + #nState := 200; + 200: //Analyze Telegram + #stTeleGOHDRespM.stHeader.sPlcId := #stNewTelegram.arDataString[1]; + #stTeleGOHDRespM.stHeader.sSeqNum := #stNewTelegram.arDataString[2]; + #stTeleGOHDRespM.stHeader.sMessageType := #stNewTelegram.arDataString[3]; + + IF #stTeleGOHDRespM.stHeader.sMessageType = 'GOHDRespM' THEN + + Strg_TO_Chars(Strg := #stNewTelegram.arDataString[4], + pChars := 0, + Cnt => #cnt, + Chars := #arPayloadHelp); + + #typeElement[0].type := 2; + #typeElement[0].key := 'DecisionPoint'; + #typeElement[1].type := 3; + #typeElement[1].key := 'GIN'; + #typeElement[2].type := 2; + #typeElement[2].key := 'Barcode'; + #typeElement[3].type := 1; + #typeElement[3].key := 'Actions'; + + #xStart := TRUE; + + IF #xDone THEN + #xStart := FALSE; + + #stTeleGOHDRespM.stPayload.sDecisionPoint := #typeElement[0].value; + + STRG_VAL(IN := #typeElement[1].value, + FORMAT := 0, + P := 1, + OUT => #stTeleGOHDRespM.stPayload.nGin); + + STRG_VAL(IN := #typeElement[2].value, + FORMAT := 0, + P := 1, + OUT => #stTeleGOHDRespM.stPayload.nBarcode); + + #stTeleGOHDRespM.stPayload.arActions[0] := #typeElement[4].value; + #stTeleGOHDRespM.stPayload.arActions[1] := #typeElement[5].value; + #stTeleGOHDRespM.stPayload.arActions[2] := #typeElement[6].value; + #stTeleGOHDRespM.stPayload.arActions[3] := #typeElement[7].value; + #stTeleGOHDRespM.stPayload.arActions[4] := #typeElement[8].value; + + IF #stTeleGOHDRespM.stPayload.sDecisionPoint = 'GOH.Rec.01' THEN + IF "DB_JamArea0102".stJam0102_4.arCarrier[1].nBarcode = #stTeleGOHDRespM.stPayload.nBarcode THEN + IF #stTeleGOHDRespM.stPayload.arActions[0] = '1' THEN + "DB_JamArea0102".stJam0102_4.arCarrier[1].nDestination := "cDestInboundOut"; + ELSIF #stTeleGOHDRespM.stPayload.arActions[0] = '-1' THEN + "DB_JamArea0102".stJam0102_4.arCarrier[1].nDestination := "cDestClearing"; + END_IF; + END_IF; + END_IF; + + #xDone := FALSE; + + + + + (* REGION Send ACK + "FC_TeleClear"(#stTelegramToSend); + + #xRetVal := "FC_TeleSetData"(nDataField := 1, + sData := '4711', + stInOutTelegram := #stTelegramToSend); + + #xRetVal := "FC_TeleSetData"(nDataField := 2, + sData := #stNewTelegram.arDataString[2], + stInOutTelegram := #stTelegramToSend); + + #xRetVal := "FC_TeleSetData"(nDataField := 3, + sData := 'ACK', + stInOutTelegram := #stTelegramToSend); + + #xRetVal := "FC_TeleSetData"(nDataField := 4, + sData := '123', + stInOutTelegram := #stTelegramToSend); + #xSendTele := TRUE; + END_REGION *) + + #nState := 0; + END_IF; + + ELSE + #nState := 0; + END_IF; + END_CASE; + END_REGION + + REGION LStream + #LStream_JsonDeserializer_Instance(execute := #xStart, + tree := #typeElement, + raw := #arPayloadHelp); + + IF #LStream_JsonDeserializer_Instance.done THEN + #xDone := TRUE; + END_IF; + END_REGION + + +END_FUNCTION_BLOCK + diff --git a/=A01+UH01-KF00/Programmbausteine/900_Communications/FB_CommunicationWCSBL_DB.xml b/=A01+UH01-KF00/Programmbausteine/900_Communications/FB_CommunicationWCSBL_DB.xml new file mode 100644 index 0000000..588ac87 --- /dev/null +++ b/=A01+UH01-KF00/Programmbausteine/900_Communications/FB_CommunicationWCSBL_DB.xml @@ -0,0 +1,110 @@ + + + + + + FB_CommunicationWCSBL + FB + +
+
+
+ + +
+
+ + + true + + + + + + + true + + + + + + + + true + + + + + + + true + + + + + + + true + + + + + + true + + +
+ + FB_CommunicationWCSBL_DB + + 38 + DB + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + \ No newline at end of file diff --git a/=A01+UH01-KF00/Programmbausteine/900_Communications/FB_FortnaTele_Placeholder.scl b/=A01+UH01-KF00/Programmbausteine/900_Communications/FB_FortnaTele_Placeholder.scl new file mode 100644 index 0000000..2f2029f --- /dev/null +++ b/=A01+UH01-KF00/Programmbausteine/900_Communications/FB_FortnaTele_Placeholder.scl @@ -0,0 +1,36 @@ +FUNCTION_BLOCK "FB_FortnaTele_Placeholder" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + VAR + Static_1 : "UDT_Payload_CRCanM"; + Static_2 : "UDT_Payload_CReqM"; + Static_3 : "UDT_Payload_CRRespM"; + Static_4 : "UDT_Payload_CSRespM"; + Static_5 : "UDT_Payload_CTMP"; + Static_6 : "UDT_Payload_ECNT"; + Static_7 : "UDT_Payload_GOHDReqM"; + Static_8 : "UDT_Payload_GOHDRespM"; + Static_9 : "UDT_Payload_GOHDUM"; + Static_10 : "UDT_Payload_INDX"; + Static_11 : "UDT_Payload_UNLDResp"; + Static_12 : "UDT_Payload_WSAD"; + Static_13 : "UDT_Telegram_CRCanM"; + Static_14 : "UDT_Telegram_CReqM"; + Static_15 : "UDT_Telegram_CRRespM"; + Static_16 : "UDT_Telegram_CSRespM"; + Static_17 : "UDT_Telegram_CTMP"; + Static_18 : "UDT_Telegram_ECNT"; + Static_19 : "UDT_Telegram_GOHDReqM"; + Static_20 : "UDT_Telegram_GOHDRespM"; + Static_21 : "UDT_Telegram_GOHDUM"; + Static_22 : "UDT_Telegram_INDX"; + Static_23 : "UDT_Telegram_UNLDResp"; + Static_24 : "UDT_Telegram_WSAD"; + Static_25 : "UDT_Header"; + Static_26 : "UDT_Workstation"; + END_VAR + + +BEGIN +END_FUNCTION_BLOCK + diff --git a/=A01+UH01-KF00/Programmbausteine/900_Communications/FC_DateAsString_ISO.liblink b/=A01+UH01-KF00/Programmbausteine/900_Communications/FC_DateAsString_ISO.liblink new file mode 100644 index 0000000..293b7b7 --- /dev/null +++ b/=A01+UH01-KF00/Programmbausteine/900_Communications/FC_DateAsString_ISO.liblink @@ -0,0 +1,2 @@ +TypeGuid: 778e978f-0132-4d3e-92e4-bac5ae8c94b4 +VersionGuid: fa6b9e1f-06d9-44db-9f19-f50f411a47a7 diff --git a/=A01+UH01-KF00/Programmbausteine/900_Communications/FC_Get_LaneStatus.scl b/=A01+UH01-KF00/Programmbausteine/900_Communications/FC_Get_LaneStatus.scl new file mode 100644 index 0000000..7d52be2 --- /dev/null +++ b/=A01+UH01-KF00/Programmbausteine/900_Communications/FC_Get_LaneStatus.scl @@ -0,0 +1,23 @@ +FUNCTION "FC_Get_LaneStatus" : String +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + VAR_IN_OUT + stInOutJamData : "stJamData"; // Staubereichs info + stInOutWorkStation : "UDT_Workstation"; // Workstation info + END_VAR + + +BEGIN + IF #stInOutWorkStation.nCountTotal >= #stInOutJamData.Config.nCapacitySet OR //voll + // (#stInOutWorkStation.nActivationStatus = 0) OR auch berücksichtigen?! + #stInOutJamData.Status.nCount >= #stInOutJamData.Config.nCapacitySet OR //voll + #stInOutJamData.Status.bByte.%X1 OR //Stau + #stInOutJamData.Status.bByte.%X2 OR //Einfahrt gesperrt + #stInOutJamData.Status.bByte.%X4 // Error + THEN + #FC_Get_LaneStatus := '0'; + ELSE + #FC_Get_LaneStatus := '1'; + END_IF; +END_FUNCTION + diff --git a/=A01+UH01-KF00/Programmbausteine/900_Communications/FC_Send_GOHDReqM.liblink b/=A01+UH01-KF00/Programmbausteine/900_Communications/FC_Send_GOHDReqM.liblink new file mode 100644 index 0000000..5456236 --- /dev/null +++ b/=A01+UH01-KF00/Programmbausteine/900_Communications/FC_Send_GOHDReqM.liblink @@ -0,0 +1,2 @@ +TypeGuid: 5dd01bcf-9240-4599-b662-501f9aa0983e +VersionGuid: ac5ee7ba-4136-4a93-ac9c-363a28d7ebae diff --git a/=A01+UH01-KF00/Programmbausteine/900_Communications/FC_Send_GOHDUM.liblink b/=A01+UH01-KF00/Programmbausteine/900_Communications/FC_Send_GOHDUM.liblink new file mode 100644 index 0000000..86f5c67 --- /dev/null +++ b/=A01+UH01-KF00/Programmbausteine/900_Communications/FC_Send_GOHDUM.liblink @@ -0,0 +1,2 @@ +TypeGuid: c13bbb3e-468d-4003-bc69-30571b148328 +VersionGuid: a9add86c-6810-4ce0-9e3c-8a4fe1fb5768 diff --git a/=A01+UH01-KF00/Programmbausteine/900_Communications/FC_Send_HB.liblink b/=A01+UH01-KF00/Programmbausteine/900_Communications/FC_Send_HB.liblink new file mode 100644 index 0000000..77fc10c --- /dev/null +++ b/=A01+UH01-KF00/Programmbausteine/900_Communications/FC_Send_HB.liblink @@ -0,0 +1,2 @@ +TypeGuid: b4ee7c11-1f91-4065-ac19-6e95973c6878 +VersionGuid: 76c93bac-8829-4bd8-8eae-21843fddd842 diff --git a/=A01+UH01-KF00/Programmbausteine/900_Communications/FC_SequenceNumber.liblink b/=A01+UH01-KF00/Programmbausteine/900_Communications/FC_SequenceNumber.liblink new file mode 100644 index 0000000..c57746d --- /dev/null +++ b/=A01+UH01-KF00/Programmbausteine/900_Communications/FC_SequenceNumber.liblink @@ -0,0 +1,2 @@ +TypeGuid: 38f9fbd2-eefa-4b3d-9910-bd5a9e03eca6 +VersionGuid: 4ea53fbf-b035-4eda-ac6d-cf23978f7d42 diff --git a/=A01+UH01-KF00/Programmbausteine/900_Communications/FC_TimeAsString_ISO.liblink b/=A01+UH01-KF00/Programmbausteine/900_Communications/FC_TimeAsString_ISO.liblink new file mode 100644 index 0000000..298e4e6 --- /dev/null +++ b/=A01+UH01-KF00/Programmbausteine/900_Communications/FC_TimeAsString_ISO.liblink @@ -0,0 +1,2 @@ +TypeGuid: fa21a558-0fb1-4e2e-ab9e-87ba1a763150 +VersionGuid: beeb038b-f634-485f-9c3c-a77af36bc924 diff --git a/=A01+UH01-KF00/Programmbausteine/900_Communications/LCom_Communication.liblink b/=A01+UH01-KF00/Programmbausteine/900_Communications/LCom_Communication.liblink new file mode 100644 index 0000000..eb607a2 --- /dev/null +++ b/=A01+UH01-KF00/Programmbausteine/900_Communications/LCom_Communication.liblink @@ -0,0 +1,2 @@ +TypeGuid: a43f6dac-4990-428b-8dfa-541ef78c23be +VersionGuid: a520bb7a-dd16-4e88-8188-4df94fd22f7f diff --git a/=A01+UH01-KF00/Programmbausteine/900_Communications/LCom_Communication_DB.xml b/=A01+UH01-KF00/Programmbausteine/900_Communications/LCom_Communication_DB.xml new file mode 100644 index 0000000..e201255 --- /dev/null +++ b/=A01+UH01-KF00/Programmbausteine/900_Communications/LCom_Communication_DB.xml @@ -0,0 +1,321 @@ + + + + + + APC_ERLF + LCom + 2.1 + LCom_Communication + FB + +
+ + + + + +
+
+ + + + + + + +
+
+ + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + + + + + true + + + + + true + + + + + true + + + + + true + + + + + true + + + + + true + + + + + true + + + + + true + + + + + true + + + + + true + + + + + true + + + + + true + + + + + true + + + + + true + + + + + true + + + + + true + + + + + + + + + + + + + + + + + + + +
+
+ LCom_Communication_DB + + 10 + DB +
+ + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + +
+
\ No newline at end of file diff --git a/=A01+UH01-KF00/Programmbausteine/900_Communications/LCom_Example.scl b/=A01+UH01-KF00/Programmbausteine/900_Communications/LCom_Example.scl new file mode 100644 index 0000000..5db9ad1 --- /dev/null +++ b/=A01+UH01-KF00/Programmbausteine/900_Communications/LCom_Example.scl @@ -0,0 +1,150 @@ +ORGANIZATION_BLOCK "LCom_Example" +TITLE = "Main Program Sweep (Cycle)" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +BEGIN + (* REGION CONFIGURATION + // Set configuration values in first call of FB + IF "LCom_ExampleComData".firstCycle THEN + //----------------------------------------------------------- + // Connection parameter + //----------------------------------------------------------- + // hardware identifier of the local interface, PLC tags--Default tag table--System constant default value: PROFINET_interface_1 = 64 + "LCom_Communication_DB".configuration.connection.interfaceID := 64; + //unique connection identifier (W#16#0001...W#16#0FFF) + "LCom_Communication_DB".configuration.connection.connectionID := 16#1F4; + //used protocol: 1=TCP protocol, 2=LCom protocol + "LCom_Communication_DB".configuration.connection.comService := "LCOM_TCP_CONNECTION";//"LCOM_TCP_CONNECTION"; + //FALSE: passive (server), TRUE: active connection establishment (client) + "LCom_Communication_DB".configuration.connection.isClient := FALSE;//FALSE;; + //TRUE: accept requests from all partners, FALSE: only specified partner is allowed in case of server + "LCom_Communication_DB".configuration.connection.acceptUnknownPartner := TRUE; + //local port number (possible values: 1...49151; caution: some may be reserved for internal use; recommended values: 2000...5000) + "LCom_Communication_DB".configuration.connection.localPort := 3456; + //partner port number, use only in case of client or specified partner (possible values: 1...49151; recommended values: 2000...5000) + "LCom_Communication_DB".configuration.connection.partnerPort := 3456; + //partner IP address xxx.xxx.xxx.xxx = [1].[2].[3].[4], use only in case of client or specified partner + "LCom_Communication_DB".configuration.connection.partnerIP.ADDR[1] := 192; + "LCom_Communication_DB".configuration.connection.partnerIP.ADDR[2] := 168; + "LCom_Communication_DB".configuration.connection.partnerIP.ADDR[3] := 1; + "LCom_Communication_DB".configuration.connection.partnerIP.ADDR[4] := 244; + //life sign cycle time if no other data exchange is active (T#1ms...T#24d20h31m23s647ms); only valid with LCom protocol + "LCom_Communication_DB".configuration.connection.lifeSignCycleTime := T#1s; + + //----------------------------------------------------------- + // QDN support since LCom_Communication version 2.1.0 ! + // additionally a DNS server must be configured in PLC + //----------------------------------------------------------- + // value: 1 = IPv4, 10 = QDN (qualified domain name) + "LCom_Communication_DB".configuration.connection.connectType := "LCOM_CON_TYPE_IPV4"; //LCOM_CON_TYPE_QDN; + //define interfaceID and partner domain name with use of QDN + IF "LCom_Communication_DB".configuration.connection.connectType ="LCOM_CON_TYPE_QDN" THEN + // set to "0" for integrated interface; "x" for used CP; + "LCom_Communication_DB".configuration.connection.interfaceID := 0; + // Fully qualified domain name of the partner end point, which must finish with "." + "LCom_Communication_DB".configuration.connection.partnerQDN := 'lcomserver.lan.'; + END_IF; + //----------------------------------------------------------- + + //----------------------------------------------------------- + // Sender configuration + //----------------------------------------------------------- + //time interval for cyclic communication (T#1ms...T#24d20h31m23s647ms) + "LCom_Communication_DB".configuration.sender.cycleTime := T#1s; + //timeout in case of missing confirmation (T#1ms...T#24d20h31m23s647ms); only valid with LCom protocol + "LCom_Communication_DB".configuration.sender.ackTimeout := T#1s; + + //----------------------------------------------------------- + // Configure time synchronization + //----------------------------------------------------------- + //TRUE: synchronize local time with received timestamps, FALSE: do not use received timestamps + "LCom_Communication_DB".configuration.timeSync.usePartnerTimestamps := FALSE; + //time synchronization send mode 0: inactive, 1: cyclic, 2: at time of day + "LCom_Communication_DB".configuration.timeSync.sendMode := "LCOM_CYCLE_TIME_SYNC"; + //time interval for cyclic mode (T#1ms...T#24d20h31m23s647ms) + "LCom_Communication_DB".configuration.timeSync.cycleTime := T#1h; + //time synchronization at specified time of day (for sendMode = 2 only) + // "LCom_Communication_DB".configuration.timeSync.sendAtTimeOfDay := TOD#05:00:0.000; + //----------------------------------------------------------- + + //----------------------------------------------------------- + // Initialize send buffer + //----------------------------------------------------------- + "LCom_ExampleComData".serializePos := 0; + "LCom_ExampleComData".serializeRetval := Serialize(SRC_VARIABLE := "LCom_ExampleComData".userSendData, DEST_ARRAY => "LCom_ExampleComBuffers".sendBuffer, POS := "LCom_ExampleComData".serializePos); + "LCom_ExampleComData".sendDataLength := DINT_TO_UDINT("LCom_ExampleComData".serializePos); + //---------------------------------------------------------- + + "LCom_ExampleComData".comEnable := TRUE; + "LCom_ExampleComData".firstCycle := FALSE; + END_IF; + END_REGION CONFIGURATION + + REGION INCREMENT_DATA_VALUES + // Increment user variables when FB has send data + IF NOT "LCom_ExampleComData".sending AND "LCom_ExampleComData".sendingOld THEN + "LCom_ExampleComData".userSendData.counter := "LCom_ExampleComData".userSendData.counter + 1; + "LCom_ExampleComData".userSendData.value := "LCom_ExampleComData".userSendData.value + 0.1; + + // Serialize data before sending + "LCom_ExampleComData".serializePos := 0; + // "LCom_ExampleComData".serializeRetval := Serialize(SRC_VARIABLE := "LCom_ExampleComData".userSendData, DEST_ARRAY => "LCom_ExampleComBuffers".sendBuffer, POS := "LCom_ExampleComData".serializePos); + // "LCom_ExampleComData".sendDataLength := DINT_TO_UDINT("LCom_ExampleComData".serializePos); + // 68 61 6C 6C 6F 0A + "LCom_ExampleComBuffers".sendBuffer[0] := 16#70; + "LCom_ExampleComBuffers".sendBuffer[1] := 16#65; + "LCom_ExampleComBuffers".sendBuffer[2] := 16#6e; + "LCom_ExampleComBuffers".sendBuffer[3] := 16#69; + "LCom_ExampleComBuffers".sendBuffer[4] := 16#73; + "LCom_ExampleComData".sendDataLength := 5; + END_IF; + "LCom_ExampleComData".sendingOld := "LCom_Communication_DB".sending; + END_REGION INCREMENT_DATA_VALUES + + + REGION CALL_LCOM_FB + // Call Communication FB + // Data is sent cyclic, when function block is connected + "LCom_Communication_DB"(enable := "LCom_ExampleComData".comEnable, + send := "LCom_ExampleComData".connected, + sendDataLength := "LCom_ExampleComData".sendDataLength, + connected => "LCom_ExampleComData".connected, + sending => "LCom_ExampleComData".sending, + dataReceived => "LCom_ExampleComData".dataReceived, + receivedDataLength => "LCom_ExampleComData".receivedDataLength, + busy => "LCom_ExampleComData".comBusy, + error => "LCom_ExampleComData".comError, + status => "LCom_ExampleComData".comStatus, + sendBuffer := "LCom_ExampleComBuffers".sendBuffer, + receiveBuffer := "LCom_ExampleComBuffers".receiveBuffer, + diagnostics := "LCom_ExampleComData".diagnosticData); + END_REGION CALL_LCOM_FB + + REGION ERROR_HANDLING + // Error Handling + IF "LCom_ExampleComData".comError AND NOT "LCom_ExampleComData".comBusy THEN + // User cleared error detected. New rising edge on enable input is necessary to clear the error. + // E.g. a wrong configuration value can be a user cleared error + "LCom_ExampleComData".comEnable := FALSE; + + ELSIF "LCom_ExampleComData".comError THEN + // Autmatically cleared error detected. The FB tries to solve the problem on it's own. + // E.g. if the connection is lost, the FB tries a reconnect to the partner + ; + + ELSE + ; // No error detected + END_IF; + END_REGION ERROR_HANDLING + + REGION DESERIALIZE + // Deserialize data after receiving + IF "LCom_ExampleComData".dataReceived THEN + "LCom_ExampleComData".deserializePos := 0; + "LCom_ExampleComData".deserializeRetval := Deserialize(SRC_ARRAY := "LCom_ExampleComBuffers".receiveBuffer, DEST_VARIABLE => "LCom_ExampleComData".userReceiveData, POS := "LCom_ExampleComData".deserializePos); + END_IF; + END_REGION DESERIALIZE + *) +END_ORGANIZATION_BLOCK + diff --git a/=A01+UH01-KF00/Programmbausteine/900_Communications/LCom_ExampleComBuffers.xml b/=A01+UH01-KF00/Programmbausteine/900_Communications/LCom_ExampleComBuffers.xml new file mode 100644 index 0000000..54522b0 --- /dev/null +++ b/=A01+UH01-KF00/Programmbausteine/900_Communications/LCom_ExampleComBuffers.xml @@ -0,0 +1,80 @@ + + + + + + APC_ERLF + LCom + 2.0 + +
+ + + false + false + false + + + + + false + false + false + + +
+
+ Standard + LCom_ExampleComBuffers + + 37 + DB +
+ + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + +
+
\ No newline at end of file diff --git a/=A01+UH01-KF00/Programmbausteine/900_Communications/LCom_ExampleComData.xml b/=A01+UH01-KF00/Programmbausteine/900_Communications/LCom_ExampleComData.xml new file mode 100644 index 0000000..259a06b --- /dev/null +++ b/=A01+UH01-KF00/Programmbausteine/900_Communications/LCom_ExampleComData.xml @@ -0,0 +1,197 @@ + + + + + + APC_ERLF + LCom + 2.0 + +
+ + + + true + + + + + true + + + + + false + false + false + + + + + false + false + false + + + + + false + false + false + + + + + false + false + false + + + + + false + false + false + + + + + false + false + false + + + + + false + false + false + + + + + false + false + false + + + + + false + false + false + + + + + false + false + false + + + + + false + false + false + + + + + false + false + false + + + + + false + false + false + + + + + false + false + false + + + + + false + false + false + + + + + false + false + false + + + + + + + true + + +
+
+ Optimized + 100 + LCom_ExampleComData + + 26 + DB +
+ + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + +
+
\ No newline at end of file diff --git a/=A01+UH01-KF00/Programmbausteine/900_Communications/LStream_JsonDeserializer.liblink b/=A01+UH01-KF00/Programmbausteine/900_Communications/LStream_JsonDeserializer.liblink new file mode 100644 index 0000000..ebe9bdb --- /dev/null +++ b/=A01+UH01-KF00/Programmbausteine/900_Communications/LStream_JsonDeserializer.liblink @@ -0,0 +1,2 @@ +TypeGuid: 394bf871-31f1-482e-98f1-90a597991a44 +VersionGuid: 30f8b229-5390-4515-8015-9e9a8fae930c diff --git a/=A01+UH01-KF00/Programmbausteine/900_Communications/Others_Communication/LGF_DTLtoString_ISO.scl b/=A01+UH01-KF00/Programmbausteine/900_Communications/Others_Communication/LGF_DTLtoString_ISO.scl new file mode 100644 index 0000000..010f860 --- /dev/null +++ b/=A01+UH01-KF00/Programmbausteine/900_Communications/Others_Communication/LGF_DTLtoString_ISO.scl @@ -0,0 +1,211 @@ +FUNCTION "LGF_DTLtoString_ISO" : String +TITLE = LGF_DTLtoString_ISO +{ S7_Optimized_Access := 'TRUE' } +AUTHOR : Siemens_Digital_Industry +FAMILY : LGF +NAME : LGF_DTLtoString_ISO +//Diese Funktion konvertiert ein Datum vom Datentyp DTL in eine Zeichenkette vom Datentyp STRING im internationalen Format (YYYY MM DD ...). + VAR_INPUT + "date" {InstructionName := 'DTL'; LibVersion := '1.0'} : DTL; // Datum zum Konvertieren im Format DTL + separator : Char; // Trennzeichen zwischen den Komponenten des ausgegebenen Datums. + END_VAR + + VAR_TEMP + tempString : String; // Temp string to setup the date string + tempIndex : DInt; // Temp iterator for replacing withspaces with '0' in nanosecondstring + END_VAR + + VAR CONSTANT + CONVERT_SIZE_YEAR : USInt := 4; // Number of character positions for Year + CONVERT_SIZE_MONTH_DAY_HOUR_MINUTE_SECOND : USInt := 2; // Number of character positions for Month, Day, Minute and Second + CONVERT_SIZE_NANOSECOND : USInt := 9; // Number of character positions for Nanoseconds + CONVERT_PRECISION : USInt := 0; // Number of decimal places to convert + CONVERT_FORMAT_TO_STRING : Word := 16#0000; // Output format of the characters + CONVERT_START_POSITION_YEAR : UInt := 1; // Character starting in string at which position the result is written. + CONVERT_START_POSITION_MONTH : UInt := 6; // Character starting in string at which position the result is written. + CONVERT_START_POSITION_DAY : UInt := 9; // Character starting in string at which position the result is written. + CONVERT_START_POSITION_HOUR : UInt := 12; // Character starting in string at which position the result is written. + CONVERT_START_POSITION_MINUTE : UInt := 15; // Character starting in string at which position the result is written. + CONVERT_START_POSITION_SECOND : UInt := 18; // Character starting in string at which position the result is written. + CONVERT_START_POSITION_NANOSECOND : UInt := 21; // Character starting in string at which position the result is written. + SEPARATOR_POSITION_YEAR_MONTH : UInt := 5; // Character starting in string at which position the result is written. + SEPARATOR_POSITION_MONTH_DAY : UInt := 8; // Character starting in string at which position the result is written. + SEPARATOR_POSITION_HOUR_MINUTE : UInt := 14; // Character starting in string at which position the result is written. + SEPARATOR_POSITION_MINUTE_SECOND : UInt := 17; // Character starting in string at which position the result is written. + SEPARATOR_POSITION_SECOND_NANOSECOND : UInt := 20; // Character starting in string at which position the result is written. + SEPARATOR_NANOSECOND : Char := '.'; // Seperator for Nanosecond + SEPARATOR_TIME : Char := '_'; // Seperator for Time + SEPARATOR_DATE : Char := '-'; // Default separator for Date + REPLACE_NANOSECOND_COUNT : DInt := 8; // Number of Nonosecond characters to be checked for replacing withspaces wit '0' + END_VAR + + +BEGIN + REGION BLOCK INFO HEADER + //=============================================================================== + // SIEMENS AG / (c)Copyright 2019 + //------------------------------------------------------------------------------- + // Title: LGF_DTLtoString_ISO + // Comment/Function: This function converts a date of data type DTL into a character string of data type STRING in international format (YYYY MM DD…). + // Library/Family: LGF (Library General Functions) + // Author: Siemens Digital Industry Support + // Tested with: S7-PLCSIM Advanced V2.0 SP1 + // Engineering: TIA Portal V15.1 + // Restrictions: ENO mechanism is not used, no error handling + // Requirements: PLC (S7-1200 / S7-1500) + //------------------------------------------------------------------------------- + // Change log table: + // Version | Date | Expert in charge | Changes applied + //----------|------------|------------------------|------------------------------ + // 01.00.00 | 15.06.2016 | Siemens Industry Online Support + // First released version + // 01.00.01 | 02.01.2017 | Siemens Industry Online Support + // Upgrade: TIA Portal V14 Update 1 + // 01.00.02 | 17.08.2018 | Siemens Industry Online Support + // Upgrade: TIA V15 Update 2 + // 01.00.03 | 23.11.2018 | Siemens Industry Online Support + // Upgrade: TIA V15.1 + // 01.00.04 | 17.07.2019 | Simatic Systems Support + // Bugfix - nanosecond precision and '0' filling + // 01.00.05 | 18.07.2019 | Simatic Systems Support + // Renamed from "LGF_DTLtoString" to "LGF_DTLtoString_ISO" + // Split into two blocks, removed "format" input + // 03.00.00 | 23.04.2020 | Simatic Systems Support | Set version to V3.0.0 + // Harmonize the version of the whole library + // 03.00.01 | 23.02.2021 | Simatic Systems Support + // Insert documentation + //============================================================================= + END_REGION Block info header + + REGION DESCRIPTION + (/* + Der Baustein liest ein Datum vom Datentyp DTL ein und konvertiert die einzelnen Komponenten des Datums (Jahr, Monat, Tag, Stunde...) in eine Zeichenkette und gibt diese im internationalen Format aus. Das Trennzeichen zwischen den Komponenten des Datums ist variabel. + + ##### Internationales Format (ISO 8601): + + {.imagePageWidth} + ![LGF_DTLtoString_ISO - Aufbau der Zeichenkette nach ISO 8601](LGF_DTLtoString_ISO.png "LGF_DTLtoString_ISO - Aufbau der Zeichenkette nach ISO 8601") + + ##### Trennzeichen: + + Am Eingangsparameter `separatorDate` geben Sie das Trennzeichen zwischen den Komponenten des Kalenderdatums vor. + + ##### Beispiel: + + * separatorDate = `/` - outString = `2016/03/16…` + * separatorDate = `-` - outString = `2016-03-16…` + */) + END_REGION DESCRIPTION + + REGION INITIALISATION + #tempString := ''; + END_REGION + + REGION CONVERTER + // Set format parameters for output string + // International ISO 8601 + // DTL | Y| Y| Y| Y| -| M| M| -| D| D| | H| H| :| M| M| :| S| S| .|NS|NS|NS|NS|NS|NS|NS|NS|NS + // -----|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|-- + // Pos | 1| 2| 3| 4| 5| 6| 7| 8| 9|10|11|12|13|14|15|16|17|18|19|20|21|22|23|24|25|26|27|28|29 + + // Convert "Value" into "String" and place at the right position + VAL_STRG(FORMAT := #CONVERT_FORMAT_TO_STRING, + IN := #date.YEAR, + P := #CONVERT_START_POSITION_YEAR, + PREC := #CONVERT_PRECISION, + SIZE := #CONVERT_SIZE_YEAR, + OUT => #tempString); // DTL YEAR --> String --> #tempPosYear + + VAL_STRG(FORMAT := #CONVERT_FORMAT_TO_STRING, + IN := #date.MONTH, + P := #CONVERT_START_POSITION_MONTH, + PREC := #CONVERT_PRECISION, + SIZE := #CONVERT_SIZE_MONTH_DAY_HOUR_MINUTE_SECOND, + OUT => #tempString); // DTL MONTH --> String --> #tempPosMonth + + VAL_STRG(FORMAT := #CONVERT_FORMAT_TO_STRING, + IN := #date.DAY, + P := #CONVERT_START_POSITION_DAY, + PREC := #CONVERT_PRECISION, + SIZE := #CONVERT_SIZE_MONTH_DAY_HOUR_MINUTE_SECOND, + OUT => #tempString); // DTL DAY --> String --> #tempPosDay + + VAL_STRG(FORMAT := #CONVERT_FORMAT_TO_STRING, + IN := #date.HOUR, + P := #CONVERT_START_POSITION_HOUR, + PREC := #CONVERT_PRECISION, + SIZE := #CONVERT_SIZE_MONTH_DAY_HOUR_MINUTE_SECOND, + OUT => #tempString); // DTL HOUR --> String --> #tempPosHour + + VAL_STRG(FORMAT := #CONVERT_FORMAT_TO_STRING, + IN := #date.MINUTE, + P := #CONVERT_START_POSITION_MINUTE, + PREC := #CONVERT_PRECISION, + SIZE := #CONVERT_SIZE_MONTH_DAY_HOUR_MINUTE_SECOND, + OUT => #tempString); // DTL MINUTE --> String --> #tempPosMinute + + VAL_STRG(FORMAT := #CONVERT_FORMAT_TO_STRING, + IN := #date.SECOND, + P := #CONVERT_START_POSITION_SECOND, + PREC := #CONVERT_PRECISION, + SIZE := #CONVERT_SIZE_MONTH_DAY_HOUR_MINUTE_SECOND, + OUT => #tempString); // DTL SECOND --> String --> #tempPosSecond + + VAL_STRG(FORMAT := #CONVERT_FORMAT_TO_STRING, + IN := #date.NANOSECOND, + P := #CONVERT_START_POSITION_NANOSECOND, + PREC := #CONVERT_PRECISION, + SIZE := #CONVERT_SIZE_NANOSECOND, + OUT => #tempString); // DTL NANOSECOND --> String --> #tempPosNanosecond + + // Place separators at the right position in the string + IF #separator = '' THEN + #tempString[#SEPARATOR_POSITION_YEAR_MONTH] := #SEPARATOR_DATE; + #tempString[#SEPARATOR_POSITION_MONTH_DAY] := #SEPARATOR_DATE; + ELSE + #tempString[#SEPARATOR_POSITION_YEAR_MONTH] := #separator; + #tempString[#SEPARATOR_POSITION_MONTH_DAY] := #separator; + END_IF; + #tempString[#SEPARATOR_POSITION_HOUR_MINUTE] := #SEPARATOR_TIME; + #tempString[#SEPARATOR_POSITION_MINUTE_SECOND] := #SEPARATOR_TIME; + #tempString[#SEPARATOR_POSITION_SECOND_NANOSECOND] := #SEPARATOR_NANOSECOND; + + // Correcting the string, due to the conversion of a leading "0" value into a "blank". + // Replacing of "blank" by "0" + IF (#tempString[#CONVERT_START_POSITION_MONTH] = ' ') THEN + #tempString[#CONVERT_START_POSITION_MONTH] := '0'; + END_IF; + + IF (#tempString[#CONVERT_START_POSITION_DAY] = ' ') THEN + #tempString[#CONVERT_START_POSITION_DAY] := '0'; + END_IF; + + IF (#tempString[#CONVERT_START_POSITION_HOUR] = ' ') THEN + #tempString[#CONVERT_START_POSITION_HOUR] := '0'; + END_IF; + + IF (#tempString[#CONVERT_START_POSITION_MINUTE] = ' ') THEN + #tempString[#CONVERT_START_POSITION_MINUTE] := '0'; + END_IF; + + IF (#tempString[#CONVERT_START_POSITION_SECOND] = ' ') THEN + #tempString[#CONVERT_START_POSITION_SECOND] := '0'; + END_IF; + + FOR #tempIndex := 0 TO #REPLACE_NANOSECOND_COUNT DO + IF (#tempString[UINT_TO_SINT(#CONVERT_START_POSITION_NANOSECOND) + #tempIndex] = ' ') THEN + #tempString[UINT_TO_SINT(#CONVERT_START_POSITION_NANOSECOND) + #tempIndex] := '0'; + ELSE + EXIT; + END_IF; + END_FOR; + END_REGION + + REGION OUTPUTS + #LGF_DTLtoString_ISO := #tempString; + // no error handling needed + ENO := TRUE; + END_REGION + +END_FUNCTION + diff --git a/=A01+UH01-KF00/Programmbausteine/900_Communications/TCP-Logger/DB_Buffer_CommunicationLogger.xml b/=A01+UH01-KF00/Programmbausteine/900_Communications/TCP-Logger/DB_Buffer_CommunicationLogger.xml new file mode 100644 index 0000000..59e0065 --- /dev/null +++ b/=A01+UH01-KF00/Programmbausteine/900_Communications/TCP-Logger/DB_Buffer_CommunicationLogger.xml @@ -0,0 +1,71 @@ + + + + + + +
+ + + false + false + false + + +
+
+ Optimized + 100 + DB_Buffer_CommunicationLogger + + 68 + DB +
+ + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + +
+
\ No newline at end of file diff --git a/=A01+UH01-KF00/Programmbausteine/900_Communications/TCP-Logger/DB_CommunciationParametersLogger.xml b/=A01+UH01-KF00/Programmbausteine/900_Communications/TCP-Logger/DB_CommunciationParametersLogger.xml new file mode 100644 index 0000000..cd479f1 --- /dev/null +++ b/=A01+UH01-KF00/Programmbausteine/900_Communications/TCP-Logger/DB_CommunciationParametersLogger.xml @@ -0,0 +1,66 @@ + + + + + + +
+ + +
+
+ Optimized + 100 + DB_CommunciationParametersLogger + + 71 + DB +
+ + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + +
+
\ No newline at end of file diff --git a/=A01+UH01-KF00/Programmbausteine/900_Communications/TCP-Logger/DB_LGF_FIFO_CommLogger.xml b/=A01+UH01-KF00/Programmbausteine/900_Communications/TCP-Logger/DB_LGF_FIFO_CommLogger.xml new file mode 100644 index 0000000..96d121c --- /dev/null +++ b/=A01+UH01-KF00/Programmbausteine/900_Communications/TCP-Logger/DB_LGF_FIFO_CommLogger.xml @@ -0,0 +1,142 @@ + + + + + + Siemens_Industry_Support + LGF + LGF_FIFO + LGF_FIFO + FB + +
+ + + + + + +
+
+ + + false + + + + + false + + + + + false + + + + + false + + + + + false + + + + + + +
+
+ + + +
+
+ + + false + false + false + + + + + + + + false + false + false + + + + + false + false + false + + + + + false + false + false + + +
+
+ DB_LGF_FIFO_CommLogger + + 69 + DB +
+ + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + +
+
\ No newline at end of file diff --git a/=A01+UH01-KF00/Programmbausteine/900_Communications/TCP-Logger/FB_CommunicationLogger.scl b/=A01+UH01-KF00/Programmbausteine/900_Communications/TCP-Logger/FB_CommunicationLogger.scl new file mode 100644 index 0000000..9e7e7c6 --- /dev/null +++ b/=A01+UH01-KF00/Programmbausteine/900_Communications/TCP-Logger/FB_CommunicationLogger.scl @@ -0,0 +1,228 @@ +FUNCTION_BLOCK "FB_CommunicationLogger" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + VAR_IN_OUT + fbInOutSendFIFO : "LGF_FIFO"; + arFifoSendBuffer : Array[1..100] of "UDT_TelegramData_Send"; + END_VAR + + VAR + fbTeleHandler : "FB_TCP_LCOM_TeleHandler"; + xReset : Bool; + xSendTele : Bool; + stTelegramToSend : "UDT_TelegramData_Send"; + nState : Int; + xRetVal : Bool; + stNewTelegram { S7_SetPoint := 'False'} : "UDT_TelegramData"; + stTeleGOHDRespM : "UDT_Telegram_GOHDRespM"; + arPayloadHelp : Array[0..200] of Byte; + cnt : UInt; + LStream_JsonDeserializer_Instance : "LStream_JsonDeserializer"; + typeElement { S7_SetPoint := 'False'} : Array[0..10] of "LStream_typeElement" := [(2, 'DecisionPoint', (), (), ()), (3, 'GIN', (), (), ()), (2, 'Barcode', (), (), ()), (1, 'Actions', (), (), true), ((), (), (), (), ()), ((), (), (), (), ()), ((), (), (), (), ()), ((), (), (), (), ()), ((), (), (), (), ()), ((), (), (), (), ()), ((), (), (), (), ())]; + xDone : Bool; + rTrigConnectionActive {InstructionName := 'R_TRIG'; LibVersion := '1.0'} : R_TRIG; + xSendHeartbeat : Bool; + tOnHeartbeat {InstructionName := 'TON_TIME'; LibVersion := '1.0'} : TON_TIME; + END_VAR + + VAR_TEMP + xStart : Bool; + test : "UDT_TelegramData_Send"; + END_VAR + + +BEGIN + REGION Info + // Kommunikation zu Fortna WCSBL + // Telegramme: + // Senden: + // GOHDReqM (Zielanfrage) | Von Schönenberger -> Fortna WCSBL + // GOHDUM (Update) | Von Schönenberger -> Fortna WCSBL + // Empfangen: + // GOHDRespM (Antwort auf Zielanfrage) | Von Fortna WCSBL -> Schönenberger + END_REGION + + REGION Call TeleHandler + // hardware identifier of the local interface, PLC tags--Default tag table--System constant default value: PROFINET_interface_1 = 64 + #fbTeleHandler.stInTcpTypeConfig.connection.interfaceID := "Local~PN-Interface_SchSy"; //"Local"~PN-Interface_Customer"; + //unique connection identifier (W#16#0001...W#16#0FFF) + #fbTeleHandler.stInTcpTypeConfig.connection.connectionID := 99; + //used protocol: 1=TCP protocol, 2=LCom protocol + #fbTeleHandler.stInTcpTypeConfig.connection.comService := "LCOM_TCP_CONNECTION"; + //FALSE: passive (server), TRUE: active connection establishment (client) + #fbTeleHandler.stInTcpTypeConfig.connection.isClient := TRUE; + //TRUE: accept requests from all partners, FALSE: only specified partner is allowed in case of server + #fbTeleHandler.stInTcpTypeConfig.connection.acceptUnknownPartner := TRUE; + //local port number (possible values: 1...49151; caution: some may be reserved for internal use; recommended values: 2000...5000) + #fbTeleHandler.stInTcpTypeConfig.connection.localPort := 4711; + //partner port number, use only in case of client or specified partner (possible values: 1...49151; recommended values: 2000...5000) + #fbTeleHandler.stInTcpTypeConfig.connection.partnerPort := 4711; + + //partner IP address xxx.xxx.xxx.xxx = [1].[2].[3].[4], use only in case of client or specified partner + #fbTeleHandler.stInTcpTypeConfig.connection.partnerIP.ADDR[1] := 192; + #fbTeleHandler.stInTcpTypeConfig.connection.partnerIP.ADDR[2] := 168; + #fbTeleHandler.stInTcpTypeConfig.connection.partnerIP.ADDR[3] := 3; + #fbTeleHandler.stInTcpTypeConfig.connection.partnerIP.ADDR[4] := 245; + + #fbTeleHandler.stInTcpTypeConfig.connection.connectType := "LCOM_CON_TYPE_IPV4"; + + // Telegramdefinition + #fbTeleHandler.stInTelegramDefinition.sStartMarker := '$02'; + #fbTeleHandler.stInTelegramDefinition.sEndMarker := '$03'; + #fbTeleHandler.stInTelegramDefinition.sStartMarkerSend := '$02'; + #fbTeleHandler.stInTelegramDefinition.sEndMarkerSend := '$03'; + #fbTeleHandler.stInTelegramDefinition.bSeparatorByte := '$1D'; //','; + #fbTeleHandler.stInTelegramDefinition.nLength := 0; + #fbTeleHandler.stInTelegramDefinition.nTelegramIDDataField := 0; + #fbTeleHandler.stInTelegramDefinition.xTelegramIDIsNumber := FALSE; + + #fbTeleHandler(xInReset := #xReset, + xInSendTele := true, + xInOutSendTele := #xSendTele, + stInTelegramSend := #stTelegramToSend, + fbInOutSendFIFO:= #fbInOutSendFIFO, + arFifoSendBuffer:=#arFifoSendBuffer); + END_REGION + + REGION Reset SequenceNumber + #rTrigConnectionActive(CLK:=#fbTeleHandler.xOutConnectionActive); + + IF #rTrigConnectionActive.Q THEN + "DB_CommunciationParametersLogger".nSeqNum := 0; + END_IF; + END_REGION + + REGION Send Heartbeat + (* IF #fbTeleHandler.xOutConnectionActive THEN + #xSendHeartbeat := TRUE; + + IF #tOnHeartbeat.Q THEN + #xSendHeartbeat := FALSE; + "FC_Send_HB"(sInPLCID := "cPLCID", + FIFO := "DB_LGF_FIFO_CommLogger", + BUFFER := "DB_Buffer_CommunicationLogger".BUFFER, + nInOutSequenceNumber:="DB_CommunciationParametersLogger".nSeqNum); + END_IF; + ELSE + #xSendHeartbeat := FALSE; + END_IF; + + #tOnHeartbeat(IN := #xSendHeartbeat, + PT := t#15s); *) + END_REGION + + REGION Empfangen + //Wird nicht benötigt + CASE #nState OF + 0: // Waiting + //New Telegram + IF #fbTeleHandler.xOutTelegramAvailable THEN + #fbTeleHandler.xInGetFirst := TRUE; + #nState := 100; + END_IF; + 100: // Get new Telegram + #stNewTelegram := #fbTeleHandler.stOutNewTelegram; + #fbTeleHandler.xInGetFirst := FALSE; + #nState := 200; + 200: //Analyze Telegram + #stTeleGOHDRespM.stHeader.sPlcId := #stNewTelegram.arDataString[1]; + #stTeleGOHDRespM.stHeader.sSeqNum := #stNewTelegram.arDataString[2]; + #stTeleGOHDRespM.stHeader.sMessageType := #stNewTelegram.arDataString[3]; + + IF #stTeleGOHDRespM.stHeader.sMessageType = 'GOHDRespM' THEN + + Strg_TO_Chars(Strg := #stNewTelegram.arDataString[4], + pChars := 0, + Cnt => #cnt, + Chars := #arPayloadHelp); + + #typeElement[0].type := 2; + #typeElement[0].key := 'DecisionPoint'; + #typeElement[1].type := 3; + #typeElement[1].key := 'GIN'; + #typeElement[2].type := 2; + #typeElement[2].key := 'Barcode'; + #typeElement[3].type := 1; + #typeElement[3].key := 'Actions'; + + #xStart := TRUE; + + IF #xDone THEN + #xStart := FALSE; + + #stTeleGOHDRespM.stPayload.sDecisionPoint := #typeElement[0].value; + + STRG_VAL(IN := #typeElement[1].value, + FORMAT := 0, + P := 1, + OUT => #stTeleGOHDRespM.stPayload.nGin); + + STRG_VAL(IN := #typeElement[2].value, + FORMAT := 0, + P := 1, + OUT => #stTeleGOHDRespM.stPayload.nBarcode); + + #stTeleGOHDRespM.stPayload.arActions[0] := #typeElement[4].value; + #stTeleGOHDRespM.stPayload.arActions[1] := #typeElement[5].value; + #stTeleGOHDRespM.stPayload.arActions[2] := #typeElement[6].value; + #stTeleGOHDRespM.stPayload.arActions[3] := #typeElement[7].value; + #stTeleGOHDRespM.stPayload.arActions[4] := #typeElement[8].value; + + IF #stTeleGOHDRespM.stPayload.sDecisionPoint = 'GOH.Rec.01' THEN + IF "DB_JamArea0102".stJam0102_4.arCarrier[1].nBarcode = #stTeleGOHDRespM.stPayload.nBarcode THEN + IF #stTeleGOHDRespM.stPayload.arActions[0] = '1' THEN + "DB_JamArea0102".stJam0102_4.arCarrier[1].nDestination := "cDestInboundOut"; + ELSIF #stTeleGOHDRespM.stPayload.arActions[0] = '-1' THEN + "DB_JamArea0102".stJam0102_4.arCarrier[1].nDestination := "cDestClearing"; + END_IF; + END_IF; + END_IF; + + #xDone := FALSE; + + + + + (* REGION Send ACK + "FC_TeleClear"(#stTelegramToSend); + + #xRetVal := "FC_TeleSetData"(nDataField := 1, + sData := '4711', + stInOutTelegram := #stTelegramToSend); + + #xRetVal := "FC_TeleSetData"(nDataField := 2, + sData := #stNewTelegram.arDataString[2], + stInOutTelegram := #stTelegramToSend); + + #xRetVal := "FC_TeleSetData"(nDataField := 3, + sData := 'ACK', + stInOutTelegram := #stTelegramToSend); + + #xRetVal := "FC_TeleSetData"(nDataField := 4, + sData := '123', + stInOutTelegram := #stTelegramToSend); + #xSendTele := TRUE; + END_REGION *) + + #nState := 0; + END_IF; + + ELSE + #nState := 0; + END_IF; + END_CASE; + END_REGION + + REGION LStream + #LStream_JsonDeserializer_Instance(execute := #xStart, + tree := #typeElement, + raw := #arPayloadHelp); + + IF #LStream_JsonDeserializer_Instance.done THEN + #xDone := TRUE; + END_IF; + END_REGION + + +END_FUNCTION_BLOCK + diff --git a/=A01+UH01-KF00/Programmbausteine/900_Communications/TCP-Logger/FB_CommunicationLogger_DB.xml b/=A01+UH01-KF00/Programmbausteine/900_Communications/TCP-Logger/FB_CommunicationLogger_DB.xml new file mode 100644 index 0000000..6142894 --- /dev/null +++ b/=A01+UH01-KF00/Programmbausteine/900_Communications/TCP-Logger/FB_CommunicationLogger_DB.xml @@ -0,0 +1,110 @@ + + + + + + FB_CommunicationLogger + FB + +
+
+
+ + +
+
+ + + true + + + + + + + true + + + + + + + + true + + + + + + + true + + + + + + + true + + + + + + true + + +
+ + FB_CommunicationLogger_DB + + 67 + DB + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + \ No newline at end of file diff --git a/=A01+UH01-KF00/Programmbausteine/900_Communications/Testumgebung/DB_TestBaustein.xml b/=A01+UH01-KF00/Programmbausteine/900_Communications/Testumgebung/DB_TestBaustein.xml new file mode 100644 index 0000000..f5847b8 --- /dev/null +++ b/=A01+UH01-KF00/Programmbausteine/900_Communications/Testumgebung/DB_TestBaustein.xml @@ -0,0 +1,81 @@ + + + + + + TestBaustein + FB + +
+
+
+
+ + + + + + + + + + true + + + + +
+ + DB_TestBaustein + + 28 + DB + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + \ No newline at end of file diff --git a/=A01+UH01-KF00/Programmbausteine/900_Communications/Testumgebung/TestBaustein.scl b/=A01+UH01-KF00/Programmbausteine/900_Communications/Testumgebung/TestBaustein.scl new file mode 100644 index 0000000..7d8542d --- /dev/null +++ b/=A01+UH01-KF00/Programmbausteine/900_Communications/Testumgebung/TestBaustein.scl @@ -0,0 +1,124 @@ +FUNCTION_BLOCK "TestBaustein" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + VAR + retVal : Bool; + retValStat : Bool; + "String" : String; + ArrayByte : Array[1..254] of Byte; + cnt : UInt; + myBuffer : Array[0..10] of Byte; + trig : Bool; + trigger {InstructionName := 'R_TRIG'; LibVersion := '1.0'} : R_TRIG; + arRohDaten : Array[0..1000] of Byte; + sNewTelegram : WString[16382]; + END_VAR + + VAR_TEMP + des : Int; + "var" : DInt; + retVal_1 : Bool; + temp : "UDT_TelegramDefinition"; + END_VAR + + +BEGIN + (* (* "R_TRIG_DB"(CLK := "TestVariables".Append); + "R_TRIG_DB_1"(CLK:="TestVariables".xClear); + + + IF "R_TRIG_DB".Q THEN + #retVal_1:= "FC_TeleSetData"(nDataField := "TestVariables".nDataField, + sData := "TestVariables".nString, + stInOutTelegram := "TestVariables".TelegramToSend); + END_IF; + + IF "R_TRIG_DB_1".Q THEN + "FC_TeleClear"("TestVariables".TelegramToSend); + END_IF; + + + REGION TeleHandler Test - SSI Schäfer MyTheresa + + #fbTeleHandler_Test.stInTcpParameters.tcpConnParam.InterfaceId := 64; //TIA V17: Alle Variablen --> Systemkonstanten -> entsprechendes Hw_Interface + #fbTeleHandler_Test.stInTcpParameters.tcpConnParam.ID := 1; // connection reference ID, beliebig innerhalb der Grenzwerte + #fbTeleHandler_Test.stInTcpParameters.xInAdhocMode := TRUE; // TRUE = Variable Länge der Empfangsdaten aktiviert, FALSE = Feste Länge + #fbTeleHandler_Test.stInTcpParameters.tcpConnParam.LocalPort := 4424; // Muss übereinstimmen im Server (Absprache Kommunikationspartner + #fbTeleHandler_Test.stInTcpParameters.tcpConnParam.RemotePort := 0; // Auf 0 lassen! + + // Statische IP-Addresse des Partner-Port (PC): + #fbTeleHandler_Test.stInTcpParameters.tcpConnParam.RemoteAddress.ADDR[1] := 192; + #fbTeleHandler_Test.stInTcpParameters.tcpConnParam.RemoteAddress.ADDR[2] := 168; + #fbTeleHandler_Test.stInTcpParameters.tcpConnParam.RemoteAddress.ADDR[3] := 178; + #fbTeleHandler_Test.stInTcpParameters.tcpConnParam.RemoteAddress.ADDR[4] := 224; + + + #fbTeleHandler_Test.stInTelegramDefinition.sStartMarker := '$02'; + #fbTeleHandler_Test.stInTelegramDefinition.sEndMarker := '$03'; + #fbTeleHandler_Test.stInTelegramDefinition.sStartMarkerSend := '$02'; + #fbTeleHandler_Test.stInTelegramDefinition.sEndMarkerSend := '$03'; + #fbTeleHandler_Test.stInTelegramDefinition.bSeparatorByte := ','; + #fbTeleHandler_Test.stInTelegramDefinition.nLength := 0; + #fbTeleHandler_Test.stInTelegramDefinition.nTelegramIDDataField := 0; + #fbTeleHandler_Test.stInTelegramDefinition.xTelegramIDIsNumber := FALSE; + + #fbTeleHandler_Test(xInGetFirst:="TestVariables".xGetFirstTelegram, + xInReset:="TestVariables".xResetTeleHandler, + xInOutSendTele:="TestVariables".xSendTelegram, + stInTelegramSend:="TestVariables".TelegramToSend, + xOutNewTelegram => "TestVariables".FirstTelegram); + END_REGION *) + + #trigger(CLK :="TestVariables".Append); + + IF #trigger.Q THEN + #retVal_1 := "FC_TeleSetData"(nDataField := "TestVariables".nDataField, + sData := "TestVariables".nString, + stInOutTelegram := "TestVariables".TelegramToSend); + END_IF; + + IF "TestVariables".xAddDataField THEN + "TestVariables".xAddDataField := FALSE; + #retVal_1 := "FC_TeleAddDataField"(sData := "TestVariables".nString, + stInOutTelegram := "TestVariables".TelegramToSend); + END_IF; + + IF "TestVariables".xClear THEN + "TestVariables".xClear := FALSE; + "FC_TeleClear"("TestVariables".TelegramToSend); + END_IF; + + #fbTeleHandler_Test.stInTcpParameters.tcpConnParam.InterfaceId := 64; //TIA V17: Alle Variablen --> Systemkonstanten -> entsprechendes Hw_Interface + #fbTeleHandler_Test.stInTcpParameters.tcpConnParam.ID := 1; // connection reference ID, beliebig innerhalb der Grenzwerte + #fbTeleHandler_Test.stInTcpParameters.xInAdhocMode := TRUE; // TRUE = Variable Länge der Empfangsdaten aktiviert, FALSE = Feste Länge + #fbTeleHandler_Test.stInTcpParameters.tcpConnParam.LocalPort := 4424; // Muss übereinstimmen im Server (Absprache Kommunikationspartner + #fbTeleHandler_Test.stInTcpParameters.tcpConnParam.RemotePort := 0; // Auf 0 lassen! + + // Statische IP-Addresse des Partner-Port (PC): + #fbTeleHandler_Test.stInTcpParameters.tcpConnParam.RemoteAddress.ADDR[1] := 192; + #fbTeleHandler_Test.stInTcpParameters.tcpConnParam.RemoteAddress.ADDR[2] := 168; + #fbTeleHandler_Test.stInTcpParameters.tcpConnParam.RemoteAddress.ADDR[3] := 0; + #fbTeleHandler_Test.stInTcpParameters.tcpConnParam.RemoteAddress.ADDR[4] := 166; + + // Telegramdefinition + #fbTeleHandler_Test.stInTelegramDefinition.sStartMarker := '$02'; + #fbTeleHandler_Test.stInTelegramDefinition.sEndMarker := '$03'; + #fbTeleHandler_Test.stInTelegramDefinition.sStartMarkerSend := '$02'; + #fbTeleHandler_Test.stInTelegramDefinition.sEndMarkerSend := '$03'; + #fbTeleHandler_Test.stInTelegramDefinition.bSeparatorByte := ','; + #fbTeleHandler_Test.stInTelegramDefinition.nLength := 0; + #fbTeleHandler_Test.stInTelegramDefinition.nTelegramIDDataField := 0; + #fbTeleHandler_Test.stInTelegramDefinition.xTelegramIDIsNumber := FALSE; + + + #fbTeleHandler_Test(xInGetFirst := "TestVariables".xGetFirstTelegram, + xInReset := "TestVariables".xResetTeleHandler, + xInOutSendTele := "TestVariables".xSendTelegram, + stInTelegramSend := "TestVariables".TelegramToSend, + xOutNewTelegram => "TestVariables".FirstTelegram); + + + + *) +END_FUNCTION_BLOCK + diff --git a/=A01+UH01-KF00/Programmbausteine/900_Communications/Testumgebung/TestVariables.xml b/=A01+UH01-KF00/Programmbausteine/900_Communications/Testumgebung/TestVariables.xml new file mode 100644 index 0000000..5acbbf4 --- /dev/null +++ b/=A01+UH01-KF00/Programmbausteine/900_Communications/Testumgebung/TestVariables.xml @@ -0,0 +1,124 @@ + + + + + + +
+ + + + true + + + Damit kann man einen String an das gewünschte Datenfeld schreiben + + + + + String der hinzugefügt werden soll + + '' + + + + Position an der, der String hinzugefügt werden soll + + 0 + + + + Löschen + + + + + Das Telegram das gesendet werden soll + + + + + true + + + Telegram senden + + + + + true + + + Erstes Telegram holen + + + + + true + + + Rücksetzen Telehandler + + + + + Erstes Telegram + + +
+
+ Optimized + 100 + TestVariables + + 30 + DB +
+ + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + +
+
\ No newline at end of file diff --git a/=A01+UH01-KF00/Programmbausteine/970_Visu/DB_Interface_HMI.xml b/=A01+UH01-KF00/Programmbausteine/970_Visu/DB_Interface_HMI.xml new file mode 100644 index 0000000..b514acd --- /dev/null +++ b/=A01+UH01-KF00/Programmbausteine/970_Visu/DB_Interface_HMI.xml @@ -0,0 +1,2611 @@ + + + + + + +
+ + + Staubereiche und Lager + + + + Jams + + + +
+ + +
+ + 'HyperJam' + +
+
+
+
+
+
+ + + +
+ + +
+ + 'Jam0100_1' + +
+
+
+
+
+
+
+ + + +
+ + +
+ + 'Jam0101_1' + +
+
+
+
+
+
+ + + true + + +
+ + +
+ + 'Jam0101_2' + +
+
+
+
+
+
+
+ + + +
+ + +
+ + 'Jam0102_1' + +
+
+
+
+
+
+ + + true + + +
+ + +
+ + 'Jam0102_2' + +
+
+
+
+
+
+ + + true + + +
+ + +
+ + 'Jam0102_3' + +
+
+
+
+
+
+ + + true + + +
+ + +
+ + 'Jam0102_4' + +
+
+
+
+
+
+ + + true + + +
+ + +
+ + 'Jam0102_5' + +
+
+
+
+
+
+ + + true + + +
+ + +
+ + 'Jam0102_6' + +
+
+
+
+
+
+
+ + + +
+ + +
+ + 'Jam0103_1' + +
+
+
+
+
+
+
+ + + +
+ + +
+ + 'Jam0104_1' + +
+
+
+
+
+
+ + +
+ + +
+ + 'Jam0104_2' + +
+
+
+
+
+
+ + +
+ + +
+ + 'Jam0104_3' + +
+
+
+
+
+
+
+ + + +
+ + +
+ + 'Jam0106_1' + +
+
+
+
+
+
+ + +
+ + +
+ + 'Jam0106_2' + +
+
+
+
+
+
+
+ + + +
+ + +
+ + 'Jam0107_1' + +
+
+
+
+
+
+
+ + + +
+ + +
+ + 'Jam0108_1' + +
+
+
+
+
+
+ + +
+ + +
+ + 'Jam0108_2' + +
+
+
+
+
+
+ + + true + + +
+ + +
+ + 'Jam0108_3' + +
+
+
+
+
+
+
+ + + +
+ + +
+ + 'Jam0110_1' + +
+
+
+
+
+
+ + +
+ + +
+ + 'Jam0110_2' + +
+
+
+
+
+
+
+ + + +
+ + +
+ + 'Jam4103_1' + +
+
+
+
+
+
+
+ + + +
+ + +
+ + 'Jam4104_1' + +
+
+
+
+
+
+
+ + + +
+ + +
+ + 'Jam4203_1' + +
+
+
+
+
+
+
+ + + +
+ + +
+ + 'Jam4204_1' + +
+
+
+
+
+
+ + + true + + +
+ + +
+ + 'Jam4204_2' + +
+
+
+
+
+
+
+ + + +
+ + +
+ + 'Jam4302_1' + +
+
+
+
+
+
+ + + true + + +
+ + +
+ + 'Jam4302_2' + +
+
+
+
+
+
+
+ + + +
+ + +
+ + 'Jam4402_1' + +
+
+
+
+
+
+
+ + + +
+ + +
+ + 'Jam4403_1' + +
+
+
+
+
+
+ + +
+ + +
+ + 'Jam4403_2' + +
+
+
+
+
+
+
+ + + +
+ + +
+ + 'Jam4501_1' + +
+
+
+
+
+
+ + +
+ + +
+ + 'Jam4501_2' + +
+
+
+
+
+
+
+ + + +
+ + +
+ + 'Jam4502_1' + +
+
+
+
+
+
+ + +
+ + +
+ + 'Jam4502_2' + +
+
+
+
+
+
+
+ + + +
+ + +
+ + 'Jam4503_1' + +
+
+
+
+
+
+ + +
+ + +
+ + 'Jam4503_2' + +
+
+
+
+
+
+
+
+ + + Storage Blocks/Lines + + + + + true + + + + + + Jam List + + + + + true + + + + + + true + + + + + true + + + + + true + + + + + true + + + + + true + + + + + true + + + + + true + + + + + true + + + + + true + + + + + true + + + + + true + + + + + true + + + + + true + + + + + true + + + + + true + + + + + true + + + + + true + + + + + true + + + + + true + + + + + true + + + + + true + + + + + true + + + + + true + + + + + true + + + + + true + + + + + true + + + + + true + + + + + true + + + + + true + + + + + true + + + + + true + + + + + true + + + + + true + + + + + true + + + + + true + + + + + true + + + + + true + + + + + true + + + + + + + + Sensoren + + + + + Not-Halt Tableaus + + +
+ + + + c_UH01 + + + + + c_UZ0101 + + + + + c_UZ0102 + + + + + c_UZ0103 + + + + + c_UZ0104 + + + + + c_UZ0110_1 + + + + + c_UZ0111_1 + + + + + c_UC011 (Highway) + + + + + c_UH01_Extern (Reserve) + + + + + c_UC011_Extern (Schnittstelle UH06 Omniflo) + + + + + frei + + + + + frei + + + + + frei + + + + + + TRO + + + + true + + + 1Sep + + +
+ + +
+ + +
+ + 'TRO100.Sep1' + +
+
+
+
+
+
+
+
+
+ + + true + + + 1Sep + + +
+ + +
+ + 1 + + + 'TRO101In' + +
+
+
+
+
+
+ + + true + + + Store + + + + + true + + + 1Sep + + +
+ + +
+ + 'TRO102In' + +
+
+
+
+
+
+ + + true + + + Store + + + + + true + + + 1Sep (Übergabe an Bürstenförderer) + + + + + true + + + 1Sep + + +
+ + +
+ + 'BX1103' + + + 'TRO 104' + + + '192.168.1.103' + + + 99.9 + +
+
+
+
+
+
+ + + true + + + 1Sep + SSCC Barcode Reader + + +
+ + +
+ + 'BX1104' + + + 'TRO 105' + + + '192.168.1.104' + + + 99.9 + +
+
+
+ + +
+ + 'BX1107' + + + 'TRO 105' + + + '192.168.1.107' + + + 99.9 + +
+
+
+
+
+
+ + + true + + + 1Sep + + + + + true + + + 1Sep1Switch + + + + + true + + + 1Sep (Übergabe an Bürstenförderer) + + + + + true + + + 1Sep + + +
+ + +
+ + 'BX1105' + + + 'TRO 109' + + + '192.168.1.105' + + + 99.9 + +
+
+
+
+
+
+ + + true + + + 1Sep + SSCC Barcode Reader + + +
+ + +
+ + 'BX1106' + + + 'TRO 110' + + + '192.168.1.106' + + + 99.9 + +
+
+
+ + +
+ + 'BX1108' + + + 'TRO 110' + + + '192.168.1.108' + + + 99.9 + +
+
+
+
+
+
+ + + true + + + 1Sep + + + + + true + + + 1Sep1Switch + + + + + true + + + 1Sep + + +
+ + +
+ + 'BX1101' + + + 'TRO 113' + + + '192.168.1.101' + + + 99.9 + +
+
+
+
+
+
+ + + true + + + 1Sep1Switch + + +
+ + +
+ + 'BX1102' + + + 'TRO 114' + + + '192.168.1.102' + + + 99.9 + +
+
+
+
+
+
+ + + true + + + Vario + + +
+ + +
+ + +
+ + 'TRO115.Var1' + + + 'MA0145' + +
+
+
+
+
+
+
+
+
+ + + true + + + 1Sep + + + + + true + + + frei + + +
+ + +
+ + 'BX1100' + + + 'TRO 117' + + + '192.168.1.100' + + + 99.9 + +
+
+
+
+
+
+ + + true + + + frei + + + + + true + + + frei + + + + + true + + + Vario (Highway, volle MT zu Level 2) + + +
+ + +
+ + +
+ + 'TRO120.Var1' + + + 'MA0146' + +
+
+
+
+
+
+
+
+
+ + + true + + + Vario (Von AMR) + + +
+ + +
+ + +
+ + 'TRO121.Var1' + + + 'MA0141' + +
+
+
+
+
+
+
+
+
+ + + true + + + 1Sep (Highway vor Fire Wall 3) + + + + + true + + + Vario (Highway nach Fire Wall 3) + + +
+ + +
+ + +
+ + 'TRO123.Var1' + + + 'MA0142' + +
+
+
+
+
+
+
+
+
+ + + true + + + 1Sep1Switch (Highway) + + +
+ + +
+ + 2 + +
+
+
+
+
+
+ + + true + + + 1Sep (Highway) + + + + + true + + + Vario (Highway, leere MT zu Level 2) + + +
+ + +
+ + +
+ + 'TRO126.Var1' + + + 'MA0147' + +
+
+
+
+
+
+
+
+
+ + + true + + + Vario (Highway, leere MT zu Inbound) + + +
+ + +
+ + +
+ + 'TRO127.Var1' + + + 'MA0144' + +
+
+
+
+
+
+
+
+
+ + + true + + + Vario (Highway, leere MT zu Inbound) + + +
+ + +
+ + +
+ + 'TRO128.Var1' + + + 'MA0057' + +
+
+
+
+
+
+
+
+
+ + + true + + + 1Sep (Highway, leere MT zu Inbound) + + + + + true + + + 1Sep (Highway, leere MT zu Inbound) + + + + + true + + + Vario (Highway, volle MT zu AMR) + + +
+ + +
+ + +
+ + 'TRO131.Var1' + + + 'MA0143' + +
+
+
+
+
+
+
+
+
+ + + true + + + 1Sep (Highway vor BST) + + + + + true + + + Vario (Highway, leere von Level 2) + + +
+ + +
+ + +
+ + 'TRO133.Var1' + + + 'MA0150' + +
+
+
+
+
+
+
+
+
+ + + true + + + Vario (Highway, volle von Level 2) + + +
+ + +
+ + +
+ + 'TRO134.Var1' + + + 'MA0151' + +
+
+
+
+
+
+
+
+
+
+ + + FB_StateMain + + + + + Conveyors + + + + Kreisel + + + + true + + + Eingangskreisel + + +
+ + 'KR-M0101' + + + 4 + + + 'MA0060' + +
+
+
+ + + true + + + Ausgangskreisel + + +
+ + 'KR-M0102' + + + 4 + + + 'MA0061' + +
+
+
+ + + true + + + Bürstenförderer + + +
+ + 'KR-M0103' + + + 5 + + + 'MA0062' + +
+
+
+ + + true + + + Loading Boom 1 Kreisel + + +
+ + 'KR-M0104' + + + 4 + + + 'MA0320' + +
+
+
+ + + true + + + Bürstenförderer + + +
+ + 'KR-M0106' + + + 5 + + + 'MA0064' + +
+
+
+ + + true + + + Bürstenförderer + + +
+ + 'KR-M0107' + + + 5 + + + 'MA0065' + +
+
+
+ + + true + + + Loading Boom 2 Kreisel + + +
+ + 'KR-M0108' + + + 4 + + + 'MA0380' + +
+
+
+ + + true + + + Bürstenförderer + + +
+ + 'KR-M0110' + + + 5 + + + 'MA0067' + +
+
+
+ + + true + + + Kleiner Kreisel Highway + + +
+ + 'KR-M4204' + + + 4 + + + 'MA0140' + +
+
+
+ + + true + + + Bürstenförderer + + +
+ + 'KR-M4103_B' + + + 5 + + + 'MA0152' + +
+
+
+ + + true + + + Bürstenförderer + + +
+ + 'KR-M4203_B' + + + 5 + + + 'MA0153' + +
+
+
+ + + true + + + Bürstenförderer + + +
+ + 'KR-M4302_A' + + + 5 + + + 'MA0154' + +
+
+
+ + + true + + + Bürstenförderer + + +
+ + 'KR-M4402_A' + + + 5 + + + 'MA0155' + +
+
+
+
+
+ + + Systemzustand + + + + Motorschutz + + + + Motorschutz UH01 + + + + + Motorschutz UC011 + + + + + Motorschutz UC0110 + + + + + Motorschutz UC0111 + + + + + + Phasenüberwachung + + + + Phasenüberwachung 400V UH01 + + + + + + Sicherungsfall + + + + Sicherungsautomat UH01 + + + + + 400V UC011 + + + + + true + + + 24V UH01 + + + + + true + + + 24V UC011 + + + + + + Druckluft + + + + UH01 + + + + + UC011 + + + + + + Hauptschütze + + + + UH01 + + + + + true + + + + + UC011 + + + + + true + + + + + UC0110 + + + + + UC0111 + + + + + + Brandschutzsteuerung + + + + Brandmeldeanlage: Kein Feueralarm FAS + + + + + Tor: Kein Feueralarm (Normally closed) + + + + + Tor: Kein Fehler (Normally closed) + + + + + Tor: Tor offen (Normally closed) + + + + + + Sammerfehler + + + + UH01 + + + + + UC011 + + + + + E-Stop Gesamt + + + + + + Externe Signale (z.B. Not-Halt Schnittstelle) + + + + NIU + + + + + true + + + NIU + + + + + true + + + + + + + Ladeschleifen Einstellungen + + + + Ladeschleife 1 Informationen + + + + Anzeigename: Time Tilt Diff | Eingabe/Ausgabe-Feld + + T#1500ms + + + + Anzeigename: Time Tilt Zero | Eingabe/Ausgabe-Feld + + T#1500ms + + + + Anzeigename: Tilt Überwachung Aktiv | Button (Invertieren) + + + + + Anzeigename: Tilt Nullen | Abweichung wird durch User mit eingerechnet | Eingabe/Ausgabe-Feld + + -30 + + + + Anzeigename: Tilt Offset | dieser Wert wird vom akt. Wert addiert/subtrahiert als Toleranz | Eingabe/Ausgabe-Feld + + 15 + + + + Anzeigename: Tilt Zero | zu diesem Wert +- muss sich genähert werden | Eingabe/Ausgabe-Feld + + 5 + + + + Anzeigename: Tilt Teach | Button (Setzen/Rücksetzen) + + + + + Anzeigename: Tilt Teach Req | 1: Aktion Erforderlich, 0: Ok + + + + + Anzeigename: Distance Zero | Eingabe/Ausgabe-Feld + + 2460 + + + + Anzeigename: Distance Diff | Eingabe/Ausgabe-Feld + + 100 + + + + Anzeigename: Time Distance Diff | Eingabe/Ausgabe-Feld + + T#1000ms + + + + Anzeigename: Teach Distance | Button (Setzen/Rücksetzen) + + + + + Anzeigename: Teach Distance Req | 1: Aktion Erforderlich, 0: Ok + + + + + Ladeschleife aktiv + + + + + %X0: HW Endlage eingefahren, %X1: SW Endlage eingefahren, %X2: Auslage < 2m, %X3: SW Endlage ausgefahren, %X4: HW Endlage ausgefahren + + + + + Ladeschleife ist in Bewegung + + + + + 0: Stopper1 (seitlich) aktiv, 1: Stopper2 (stirnseitig) aktiv + + + + + + noch nicht umgesetzt + + + + + + + + + Ladeschleife 2 Informationen + + + + Anzeigename: Time Tilt Diff | Eingabe/Ausgabe-Feld + + T#1500ms + + + + Anzeigename: Time Tilt Zero | Eingabe/Ausgabe-Feld + + T#1500ms + + + + Anzeigename: Tilt Überwachung Aktiv | Button (Invertieren) + + + + + Anzeigename: Tilt Nullen | Abweichung wird durch User mit eingerechnet | Eingabe/Ausgabe-Feld + + -30 + + + + Anzeigename: Tilt Offset | dieser Wert wird vom akt. Wert addiert/subtrahiert als Toleranz | Eingabe/Ausgabe-Feld + + 15 + + + + Anzeigename: Tilt Zero | zu diesem Wert +- muss sich genähert werden | Eingabe/Ausgabe-Feld + + 5 + + + + Anzeigename: Tilt Teach | Button (Setzen/Rücksetzen) + + + + + Anzeigename: Tilt Teach Req | 1: Aktion Erforderlich, 0: Ok + + + + + Anzeigename: Distance Zero | Eingabe/Ausgabe-Feld + + 2400 + + + + Anzeigename: Distance Diff | Eingabe/Ausgabe-Feld + + 100 + + + + Anzeigename: Time Distance Diff | Eingabe/Ausgabe-Feld + + T#1000ms + + + + Anzeigename: Teach Distance | Button (Setzen/Rücksetzen) + + + + + Anzeigename: Teach Distance Req | 1: Aktion Erforderlich, 0: Ok + + + + + Ladeschleife aktiv + + + + + %X0: HW Endlage eingefahren, %X1: SW Endlage eingefahren, %X2: Auslage < 2m, %X3: SW Endlage ausgefahren, %X4: HW Endlage ausgefahren + + + + + Ladeschleife ist in Bewegung + + + + + 0: Stopper1 (seitlich) aktiv, 1: Stopper2 (stirnseitig) aktiv + + + + + + noch nicht umgesetzt + + + + + + + + + + Clustag RFID Interface + + + + von RFID + + + + RFID Station ist bereit + + + + + Bypass Modus von RFID angefordert + + + + + + zu RFID + + + + Schönenberger bereit + + + + + Ein Trolley wurde in die Station losgeschickt + + + + + + + Längenmessung + + + + + true + + + + + Letzte Messungen + + + + + + Clearing / Error Station + + + + + Längenmessung + + + + + + true + + + + + Letzte Messungen + + + + + + + + true + + + + + Letzte Messungen + + + + + + + + Staubereiche + + + + + Beladen + + + + + Leer + + + + + Dummy + + + + + Lagerblock 1.1 + + + + + Lagerblock 1.2 + + + + + Lager gesamt + + + + + Gesamt + + + + + + true + + + TCP Verbindungen + + + + + true + + +
+
+ Optimized + 100 + DB_Interface_HMI + + 18 + DB + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + \ No newline at end of file diff --git a/=A01+UH01-KF00/Programmbausteine/970_Visu/DB_Visu_Jams.xml b/=A01+UH01-KF00/Programmbausteine/970_Visu/DB_Visu_Jams.xml new file mode 100644 index 0000000..b7006cd --- /dev/null +++ b/=A01+UH01-KF00/Programmbausteine/970_Visu/DB_Visu_Jams.xml @@ -0,0 +1,263 @@ + + + + + + FB_Visu_Jams + FB + +
+
+
+
+ + + + true + + + + + true + + + + + true + + + + + true + + + + + true + + + + + true + + + + + true + + + + + true + + + + + true + + + + + true + + + + + true + + + + + true + + + + + true + + + + + true + + + + + true + + + + + true + + + + + true + + + + + true + + + + + true + + + + + true + + + + + true + + + + + true + + + + + true + + + + + true + + + + + true + + + + + true + + + + + true + + + + + true + + + + + true + + + + + true + + + + + true + + + + + true + + + + + true + + + + + true + + + + + true + + + + + true + + + + + true + + + + + true + + + + + true + + +
+ + DB_Visu_Jams + + 63 + DB + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + \ No newline at end of file diff --git a/=A01+UH01-KF00/Programmbausteine/970_Visu/FB_LaengenmessungAI.scl b/=A01+UH01-KF00/Programmbausteine/970_Visu/FB_LaengenmessungAI.scl new file mode 100644 index 0000000..20812c5 --- /dev/null +++ b/=A01+UH01-KF00/Programmbausteine/970_Visu/FB_LaengenmessungAI.scl @@ -0,0 +1,59 @@ +FUNCTION_BLOCK "FB_LaengenmessungAI" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + VAR_INPUT + udt_LetzteMessung : "udt_LengtMeasurementHMI"; + END_VAR + + VAR_IN_OUT + udt_LengthMeasurementHMI : Array[0..9] of "udt_LengtMeasurementHMI"; + xInOutClear : Bool; + END_VAR + + VAR + Lrtrig_S_SchiebenUm1 {InstructionName := 'R_TRIG'; LibVersion := '1.0'; S7_SetPoint := 'False'} : R_TRIG; + Li_S_IndexSchieberegister { S7_SetPoint := 'True'} : Int; + END_VAR + + VAR_TEMP + udt_LengthMeasurementHMI_leer : Array[0..9] of "udt_LengtMeasurementHMI"; + END_VAR + + +BEGIN + REGION Info + (* ------------------------------------------------------------------------------------------------ + Modulname : FB_LaengenmessungAI + Date : 20.10.2025 + Author : Kannler Thomas / Automated-Intelligence + Info : FB für die Visualisierung der letzten 10 Messungen + + ChangeLog: : + ---------------------------------------------------------------------------------------------- *) + END_REGION + + REGION Flankenauswertung + #Lrtrig_S_SchiebenUm1(CLK := #udt_LetzteMessung <> #udt_LengthMeasurementHMI[0]); + + END_REGION + + REGION Schieberegister + IF #Lrtrig_S_SchiebenUm1.Q THEN + // Von vorne nach hinten schieben: 8 -> 9, 7 -> 8, 6 -> 7, ..., 0 -> 1 + FOR #Li_S_IndexSchieberegister := 9 TO 1 BY -1 DO + #udt_LengthMeasurementHMI[#Li_S_IndexSchieberegister] := #udt_LengthMeasurementHMI[#Li_S_IndexSchieberegister - 1]; + END_FOR; + + // Neuen Datensatz vorne an Index 0 speichern + #udt_LengthMeasurementHMI[0] := #udt_LetzteMessung; + END_IF; + END_REGION + + REGION Liste leeren + IF #xInOutClear THEN + #xInOutClear := FALSE; + #udt_LengthMeasurementHMI := #udt_LengthMeasurementHMI_leer; + END_IF; + END_REGION +END_FUNCTION_BLOCK + diff --git a/=A01+UH01-KF00/Programmbausteine/970_Visu/FB_SSCCAI.scl b/=A01+UH01-KF00/Programmbausteine/970_Visu/FB_SSCCAI.scl new file mode 100644 index 0000000..793f1ef --- /dev/null +++ b/=A01+UH01-KF00/Programmbausteine/970_Visu/FB_SSCCAI.scl @@ -0,0 +1,60 @@ +FUNCTION_BLOCK "FB_SSCCAI" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + VAR_INPUT + udt_LetzteMessung : "udt_SSCCMeasurement"; + END_VAR + + VAR_IN_OUT + udt_SSCC : Array[0..9] of "udt_SSCCMeasurement"; + xInOutClear : Bool; + END_VAR + + VAR + Lrtrig_S_SchiebenUm1 {InstructionName := 'R_TRIG'; LibVersion := '1.0'; S7_SetPoint := 'False'} : R_TRIG; + Li_S_IndexSchieberegister { S7_SetPoint := 'True'} : Int; + END_VAR + + VAR_TEMP + udt_SSCC_leer : Array[0..9] of "udt_SSCCMeasurement"; + END_VAR + + +BEGIN + REGION Info + (* ------------------------------------------------------------------------------------------------ + Modulname : FB_LaengenmessungAI + Date : 20.10.2025 + Author : Kannler Thomas / Automated-Intelligence + Info : FB für die Visualisierung der letzten 10 Messungen + + ChangeLog: : + ---------------------------------------------------------------------------------------------- *) + END_REGION + + REGION Flankenauswertung + #Lrtrig_S_SchiebenUm1(CLK:=#udt_LetzteMessung <> #udt_SSCC[0]); + + END_REGION + + REGION Schieberegister + IF #Lrtrig_S_SchiebenUm1.Q THEN + // Von vorne nach hinten schieben: 8 -> 9, 7 -> 8, 6 -> 7, ..., 0 -> 1 + FOR #Li_S_IndexSchieberegister := 9 TO 1 BY -1 DO + #udt_SSCC[#Li_S_IndexSchieberegister] := #udt_SSCC[#Li_S_IndexSchieberegister - 1]; + END_FOR; + + // Neuen Datensatz vorne an Index 0 speichern + #udt_SSCC[0] := #udt_LetzteMessung; + END_IF; + END_REGION + + REGION Liste leeren + IF #xInOutClear THEN + #xInOutClear := FALSE; + #udt_SSCC := #udt_SSCC_leer; + END_IF; + END_REGION + +END_FUNCTION_BLOCK + diff --git a/=A01+UH01-KF00/Programmbausteine/970_Visu/FB_Visu.scl b/=A01+UH01-KF00/Programmbausteine/970_Visu/FB_Visu.scl new file mode 100644 index 0000000..9224bef --- /dev/null +++ b/=A01+UH01-KF00/Programmbausteine/970_Visu/FB_Visu.scl @@ -0,0 +1,172 @@ +FUNCTION_BLOCK "FB_Visu" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + VAR + Lfb_S_SCL_LaengenmessungAI : "FB_LaengenmessungAI"; + Lfb_S_SCL_SSCC1108 : "FB_SSCCAI"; + Lfb_S_SCL_SSCC1107 : "FB_SSCCAI"; + fbMeldAreaStopUZ1101 : "FB_SetAlarmAndLog"; + fbMeldAreaStopUZ1102 : "FB_SetAlarmAndLog"; // NIU + fbMeldAreaStopUZ1103 : "FB_SetAlarmAndLog"; + fbMeldAreaStopUZ1104 : "FB_SetAlarmAndLog"; + fbMeldAreaStopUZ1105 : "FB_SetAlarmAndLog"; + END_VAR + + VAR_TEMP + nIdx : Int; + END_VAR + + +BEGIN + REGION Konfiguration TRO-Nummern und Namen + "DB_Interface_HMI".stTRO.TRO100.UDT_Config.sName := 'TRO100'; + "DB_Interface_HMI".stTRO.TRO101.UDT_Config.sName := 'TRO101'; //Pin Storage + "DB_Interface_HMI".stTRO.TRO102.UDT_Config.sName := 'TRO102'; //Pin Storage + "DB_Interface_HMI".stTRO.TRO103.UDT_Config.sName := 'TRO103'; + "DB_Interface_HMI".stTRO.TRO104.UDT_Config.sName := 'TRO104'; + "DB_Interface_HMI".stTRO.TRO105.UDT_Config.sName := 'TRO105'; + "DB_Interface_HMI".stTRO.TRO106.UDT_Config.sName := 'TRO106'; + "DB_Interface_HMI".stTRO.TRO107.UDT_Config.sName := 'TRO107'; + "DB_Interface_HMI".stTRO.TRO108.UDT_Config.sName := 'TRO108'; + "DB_Interface_HMI".stTRO.TRO109.UDT_Config.sName := 'TRO109'; + "DB_Interface_HMI".stTRO.TRO110.UDT_Config.sName := 'TRO110'; + "DB_Interface_HMI".stTRO.TRO111.UDT_Config.sName := 'TRO111'; + "DB_Interface_HMI".stTRO.TRO112.UDT_Config.sName := 'TRO112'; + "DB_Interface_HMI".stTRO.TRO113.UDT_Config.sName := 'TRO113'; + "DB_Interface_HMI".stTRO.TRO114.UDT_Config.sName := 'TRO114'; + "DB_Interface_HMI".stTRO.TRO115.UDT_Config.sName := 'TRO115'; + "DB_Interface_HMI".stTRO.TRO116.UDT_Config.sName := 'TRO116'; + "DB_Interface_HMI".stTRO.TRO117.UDT_Config.sName := 'TRO117'; + "DB_Interface_HMI".stTRO.TRO118.UDT_Config.sName := 'TRO118'; + "DB_Interface_HMI".stTRO.TRO119.UDT_Config.sName := 'TRO119'; + "DB_Interface_HMI".stTRO.TRO120.UDT_Config.sName := 'TRO120'; + "DB_Interface_HMI".stTRO.TRO121.UDT_Config.sName := 'TRO121'; + "DB_Interface_HMI".stTRO.TRO122.UDT_Config.sName := 'TRO122'; + "DB_Interface_HMI".stTRO.TRO123.UDT_Config.sName := 'TRO123'; + "DB_Interface_HMI".stTRO.TRO124.UDT_Config.sName := 'TRO124'; + "DB_Interface_HMI".stTRO.TRO125.UDT_Config.sName := 'TRO125'; + "DB_Interface_HMI".stTRO.TRO126.UDT_Config.sName := 'TRO126'; + "DB_Interface_HMI".stTRO.TRO127.UDT_Config.sName := 'TRO127'; + "DB_Interface_HMI".stTRO.TRO128.UDT_Config.sName := 'TRO128'; + "DB_Interface_HMI".stTRO.TRO129.UDT_Config.sName := 'TRO129'; + "DB_Interface_HMI".stTRO.TRO130.UDT_Config.sName := 'TRO130'; + "DB_Interface_HMI".stTRO.TRO131.UDT_Config.sName := 'TRO131'; + "DB_Interface_HMI".stTRO.TRO132.UDT_Config.sName := 'TRO132'; + "DB_Interface_HMI".stTRO.TRO133.UDT_Config.sName := 'TRO133'; + "DB_Interface_HMI".stTRO.TRO134.UDT_Config.sName := 'TRO134'; + END_REGION + + REGION Group-Error Schaltschränke + REGION UH01 + "DB_Interface_HMI".stSystem.stGroupError.xUH01 := + "DB_Interface_HMI".arEStops[0].xEStopActive OR + NOT "DB_Interface_HMI".stSystem.stFuse.UH01_24V.xSigOk OR + NOT "DB_Interface_HMI".stSystem.stFuse.UH01_400V.xSigOk OR + NOT "DB_Interface_HMI".stSystem.stMainContactor.UH01.xSigOk OR + NOT "DB_Interface_HMI".stSystem.stMotorProtection.UH01.xSigOk OR + NOT "DB_Interface_HMI".stSystem.stPhase.UH01_400V.xSigOk OR + NOT "DB_Interface_HMI".stSystem.stPressure.UH01.xSigOk OR + NOT "DB_Interface_HMI".stSystem.stFireControl.NoFireAlarmFAS.xSigOk; + END_REGION + + REGION UC011 + "DB_Interface_HMI".stSystem.stGroupError.xUC011 := + "DB_Interface_HMI".arEStops[7].xEStopActive OR + NOT "DB_Interface_HMI".stSystem.stFuse.UC011_400V.xSigOk OR + NOT "DB_Interface_HMI".stSystem.stFuse.UC011_24V.xSigOk OR + NOT "DB_Interface_HMI".stSystem.stMainContactor.UC011.xSigOk OR + NOT "DB_Interface_HMI".stSystem.stMainContactor.UC011toUC061.xSigOk OR + NOT "DB_Interface_HMI".stSystem.stMotorProtection.UC011.xSigOk OR + NOT "DB_Interface_HMI".stSystem.stPressure.UC011.xSigOk OR + NOT "DB_Interface_HMI".stSystem.stFireControl.FPCOpened.xSigOk OR + NOT "DB_Interface_HMI".stSystem.stFireControl.NoFault.xSigOk OR + NOT "DB_Interface_HMI".stSystem.stFireControl.NoFireAlarmFPG.xSigOk; + END_REGION + END_REGION + + REGION Sammelnothalt + "DB_Interface_HMI".stSystem.stGroupError.UDT_Panel_EmergencyStopCollected.xEStopActive := + "DB_Interface_HMI".arEStops[0].xEStopActive OR + "DB_Interface_HMI".arEStops[1].xEStopActive OR + "DB_Interface_HMI".arEStops[2].xEStopActive OR + "DB_Interface_HMI".arEStops[3].xEStopActive OR + "DB_Interface_HMI".arEStops[4].xEStopActive OR + "DB_Interface_HMI".arEStops[5].xEStopActive OR + "DB_Interface_HMI".arEStops[6].xEStopActive OR + "DB_Interface_HMI".arEStops[7].xEStopActive OR + "DB_Interface_HMI".arEStops[8].xEStopActive OR + "DB_Interface_HMI".arEStops[9].xEStopActive OR + "DB_Interface_HMI".arEStops[10].xEStopActive OR + "DB_Interface_HMI".arEStops[11].xEStopActive OR + "DB_Interface_HMI".arEStops[12].xEStopActive; + END_REGION + + REGION Längenmessung + //INPUT FÜR AKTUELLE MESSUNG NOCH BELEGEN! MIT EMBI KLÄREN OB ABFRAGE FÜR TRIGGER ANGEPASST WERDEN MUSS + #Lfb_S_SCL_LaengenmessungAI(udt_LetzteMessung := "DB_Interface_HMI".stLengthMeasurement.stLastMeasurement, + udt_LengthMeasurementHMI := "DB_Interface_HMI".stLengthMeasurement.arLastMeasurement, + xInOutClear := "DB_Interface_HMI".stLengthMeasurement.xClear); + END_REGION + + REGION SSCC + #Lfb_S_SCL_SSCC1108(udt_LetzteMessung := "DB_Interface_HMI".stSSCC.SSCC1108.stLastMeasurement, + udt_SSCC := "DB_Interface_HMI".stSSCC.SSCC1108.arLastMeasurement, + xInOutClear := "DB_Interface_HMI".stSSCC.SSCC1108.xClear); + + #Lfb_S_SCL_SSCC1107(udt_LetzteMessung := "DB_Interface_HMI".stSSCC.SSCC1107.stLastMeasurement, + udt_SSCC := "DB_Interface_HMI".stSSCC.SSCC1107.arLastMeasurement, + xInOutClear := "DB_Interface_HMI".stSSCC.SSCC1107.xClear); + END_REGION + + REGION Bereichshalt + REGION UZ1101 + #fbMeldAreaStopUZ1101.stSettings.nNoMaxErrors := 1; + #fbMeldAreaStopUZ1101.stSettings.nType := 1; + #fbMeldAreaStopUZ1101(xInAlarm := NOT "SF0120", + nInAlarmNumber := 0, + wInTextListId_Function := 30, + sInPrefix := 'UZ1101', + sInSuffix := 'SF0120', + wInTextListId_Message := 30, + stInOutControlUnitCabinet := "DB_MachineGlobal".stStateMainOF2); + END_REGION + + REGION UZ1103 + #fbMeldAreaStopUZ1103.stSettings.nNoMaxErrors := 1; + #fbMeldAreaStopUZ1103.stSettings.nType := 1; + #fbMeldAreaStopUZ1103(xInAlarm := NOT "SF0124", + nInAlarmNumber := 0, + wInTextListId_Function := 30, + sInPrefix := 'UZ1103', + sInSuffix := 'SF0124', + wInTextListId_Message := 30, + stInOutControlUnitCabinet := "DB_MachineGlobal".stStateMainOF2); + END_REGION + + REGION UZ1104 + #fbMeldAreaStopUZ1104.stSettings.nNoMaxErrors := 1; + #fbMeldAreaStopUZ1104.stSettings.nType := 1; + #fbMeldAreaStopUZ1104(xInAlarm := NOT "SF0126", + nInAlarmNumber := 0, + wInTextListId_Function := 30, + sInPrefix := 'UZ1104', + sInSuffix := 'SF0126', + wInTextListId_Message := 30, + stInOutControlUnitCabinet := "DB_MachineGlobal".stStateMainOF2); + END_REGION + + REGION UZ1105 + #fbMeldAreaStopUZ1105.stSettings.nNoMaxErrors := 1; + #fbMeldAreaStopUZ1105.stSettings.nType := 1; + #fbMeldAreaStopUZ1105(xInAlarm := NOT "SF0130", + nInAlarmNumber := 0, + wInTextListId_Function := 30, + sInPrefix := 'UZ1105', + sInSuffix := 'SF0130', + wInTextListId_Message := 30, + stInOutControlUnitCabinet := "DB_MachineGlobal".stStateMainOF2); + END_REGION + + END_REGION +END_FUNCTION_BLOCK + diff --git a/=A01+UH01-KF00/Programmbausteine/970_Visu/FB_Visu_DB.xml b/=A01+UH01-KF00/Programmbausteine/970_Visu/FB_Visu_DB.xml new file mode 100644 index 0000000..72ef08d --- /dev/null +++ b/=A01+UH01-KF00/Programmbausteine/970_Visu/FB_Visu_DB.xml @@ -0,0 +1,108 @@ + + + + + + false + FB_Visu + FB + +
+
+
+
+ + + true + + + + + true + + + + + true + + + + + true + + + + + true + + + + + true + + + + + true + + + + + true + + +
+ + FB_Visu_DB + + 42 + DB + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + \ No newline at end of file diff --git a/=A01+UH01-KF00/Programmbausteine/970_Visu/FB_Visu_Jam.scl b/=A01+UH01-KF00/Programmbausteine/970_Visu/FB_Visu_Jam.scl new file mode 100644 index 0000000..2e6f71d --- /dev/null +++ b/=A01+UH01-KF00/Programmbausteine/970_Visu/FB_Visu_Jam.scl @@ -0,0 +1,206 @@ +FUNCTION_BLOCK "FB_Visu_Jam" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + VAR_INPUT + nInJamCount : UInt; + END_VAR + + VAR_IN_OUT + arInOutJam : Array[*] of "stCarrier"; // Jam Daten + stInOutHMIJam : "UDT_Visu_Jam_List"; + stInOutHMIData : "UDT_HMI_JamData"; // Jam Daten HMI Schnittstelle + END_VAR + + VAR + xReInit : Bool; + nUpperBound : Int; + END_VAR + + VAR_TEMP + nIdx : Int; + nIdxMerker : Int; + END_VAR + + +BEGIN + // Hier werden die Carrierlisten für die Visu erstellt + // Auf Knopfdruck am HMI werden Aktionen durchgeführt, um die Liste zu scrollen + // Aktuell werden immer 10 Carrier gleichzeitig angezeigt + + #stInOutHMIJam.#upperBound := DINT_TO_INT(UPPER_BOUND(ARR := #arInOutJam, DIM := 1)); + #nUpperBound := DINT_TO_INT(UPPER_BOUND(ARR := #arInOutJam, DIM := 1)); + REGION Jam Daten Liste + // Beim ersten Aufruf nach reinit ausführen, damit Daten drinstehen + IF NOT #xReInit THEN + #stInOutHMIJam.nIndex := 1; + #nIdxMerker := #stInOutHMIJam.nIndex; + FOR #nIdx := 1 TO 10 DO + #stInOutHMIJam.arJamList[#nIdx - 1] := #arInOutJam[#nIdxMerker]; + #nIdxMerker += 1; + IF #nIdx >= #nUpperBound OR #nIdxMerker > #nUpperBound THEN + EXIT; + END_IF; + END_FOR; + #xReInit := TRUE; + END_IF; + + // Wenn nichts an der Liste gemacht wird, Daten nur aktualisieren + IF NOT #stInOutHMIJam.#DecOne AND NOT #stInOutHMIJam.#DecFive AND NOT #stInOutHMIJam.#IncOne AND NOT #stInOutHMIJam.#IncFive AND NOT #stInOutHMIJam.#ScrollEnd AND NOT #stInOutHMIJam.#ScrollStart THEN + #nIdxMerker := #stInOutHMIJam.nIndex; + FOR #nIdx := 1 TO 10 DO + #stInOutHMIJam.arJamList[#nIdx - 1] := #arInOutJam[#nIdxMerker]; + #nIdxMerker += 1; + IF #nIdx >= #nUpperBound OR #nIdxMerker > #nUpperBound THEN + EXIT; + END_IF; + END_FOR; + END_IF; + + // Liste um eins nach oben bewegen + IF #stInOutHMIJam.#DecOne THEN + #stInOutHMIJam.#nIndex -= 1; + IF #stInOutHMIJam.#nIndex < 1 THEN + #stInOutHMIJam.#nIndex := 1; + END_IF; + + #nIdxMerker := #stInOutHMIJam.nIndex; + + FOR #nIdx := 1 TO 10 DO + #stInOutHMIJam.arJamList[#nIdx - 1] := #arInOutJam[#nIdxMerker]; + #nIdxMerker += 1; + IF #nIdx >= #nUpperBound OR #nIdxMerker > #nUpperBound THEN + EXIT; + END_IF; + END_FOR; + + + + #stInOutHMIJam.#DecOne := FALSE; + END_IF; + + // Liste um fünf nach oben bewegen + IF #stInOutHMIJam.#DecFive THEN + #stInOutHMIJam.#nIndex -= 5; + IF #stInOutHMIJam.#nIndex < 1 THEN + #stInOutHMIJam.#nIndex := 1; + END_IF; + + #nIdxMerker := #stInOutHMIJam.nIndex; + + FOR #nIdx := 1 TO 10 DO + #stInOutHMIJam.arJamList[#nIdx - 1] := #arInOutJam[#nIdxMerker]; + #nIdxMerker += 1; + IF #nIdx >= #nUpperBound OR #nIdxMerker > #nUpperBound THEN + EXIT; + END_IF; + END_FOR; + #stInOutHMIJam.#DecFive := FALSE; + END_IF; + + // Liste um eins nach unten bewegen + IF #stInOutHMIJam.#IncOne THEN + #stInOutHMIJam.#nIndex += 1; + IF #stInOutHMIJam.#nIndex > #stInOutHMIJam.#upperBound - 9 THEN + #stInOutHMIJam.#nIndex := #stInOutHMIJam.#upperBound - 9; + IF #stInOutHMIJam.nIndex <= 0 THEN + #stInOutHMIJam.nIndex := 1; + END_IF; + END_IF; + + #nIdxMerker := #stInOutHMIJam.nIndex; + + FOR #nIdx := 1 TO 10 DO + #stInOutHMIJam.arJamList[#nIdx - 1] := #arInOutJam[#nIdxMerker]; + #nIdxMerker += 1; + IF #nIdx >= #nUpperBound OR #nIdxMerker > #nUpperBound THEN + EXIT; + END_IF; + END_FOR; + #stInOutHMIJam.#IncOne := FALSE; + END_IF; + + // Liste um fünf nach unten bewegen + IF #stInOutHMIJam.#IncFive THEN + #stInOutHMIJam.#nIndex += 5; + IF #stInOutHMIJam.#nIndex > #stInOutHMIJam.#upperBound - 9 THEN + #stInOutHMIJam.#nIndex := #stInOutHMIJam.#upperBound - 9; + IF #stInOutHMIJam.nIndex < 0 THEN + #stInOutHMIJam.nIndex := 1; + END_IF; + END_IF; + + #nIdxMerker := #stInOutHMIJam.nIndex; + + FOR #nIdx := 1 TO 10 DO + #stInOutHMIJam.arJamList[#nIdx - 1] := #arInOutJam[#nIdxMerker]; + #nIdxMerker += 1; + IF #nIdx >= #nUpperBound OR #nIdxMerker > #nUpperBound THEN + EXIT; + END_IF; + END_FOR; + #stInOutHMIJam.#IncFive := FALSE; + END_IF; + + // Zum Listenanfang springen + IF #stInOutHMIJam.#ScrollStart THEN + #stInOutHMIJam.#nIndex := 1; + + #nIdxMerker := #stInOutHMIJam.nIndex; + + FOR #nIdx := 1 TO 10 DO + #stInOutHMIJam.arJamList[#nIdx - 1] := #arInOutJam[#nIdxMerker]; + #nIdxMerker += 1; + IF #nIdx >= #nUpperBound OR #nIdxMerker > #nUpperBound THEN + EXIT; + END_IF; + END_FOR; + + #stInOutHMIJam.#ScrollStart := FALSE; + END_IF; + // Zum Listenende springen + IF #stInOutHMIJam.#ScrollEnd THEN + #stInOutHMIJam.#nIndex := #stInOutHMIJam.#upperBound - 9; + IF #stInOutHMIJam.nIndex < 0 THEN + #stInOutHMIJam.nIndex := 1; + END_IF; + + #nIdxMerker := #stInOutHMIJam.nIndex; + + FOR #nIdx := 1 TO 10 DO + #stInOutHMIJam.arJamList[#nIdx - 1] := #arInOutJam[#nIdxMerker]; + #nIdxMerker += 1; + IF #nIdx >= #nUpperBound OR #nIdxMerker > #nUpperBound THEN + EXIT; + END_IF; + END_FOR; + + #stInOutHMIJam.#ScrollEnd := FALSE; + END_IF; + END_REGION + + REGION Carrier Manipulation + + // "FC_CARR_MOVE"(nInCommand := #stHMIJam.stCarMove.nCommand, + // nInJamNr := #nInJamNr,//braucht nicht von HMI zu kommen - #stHMIJam.stCarMove.nJamNr, + // nInTarget := #stHMIJam.stCarMove.nTarget, + // xInStart := #stHMIJam.stCarMove.xStart, + // xOutError => #stHMIJam.stCarMove.xError); + + // #stInOutHMIJam.stCarMove.xStart := FALSE; + + "FC_CarrierManipulator"(stInOutHMIJamData:= #stInOutHMIData, + stInOutHMIJamList:= #stInOutHMIJam, + arInOutJam:= #arInOutJam, + arInOutHyperJam:= "DB_HyperJam".stHyperJam.arCarrier); + + #stInOutHMIJam.stCarMove.xStart := FALSE; + + END_REGION + + REGION Manuelle Zielvergabe für Jam + IF #stInOutHMIData.stStatus.bByte.%X7 THEN //%X7: Manuelle Zielvergabe aktiviert + #arInOutJam[1].nDestination := #stInOutHMIData.stJamConfig.nManualDest; //Sorgt dafür, dass Carrier ein festes Ziel bekommen + END_IF; + END_REGION +END_FUNCTION_BLOCK + diff --git a/=A01+UH01-KF00/Programmbausteine/970_Visu/FB_Visu_JamStorage.scl b/=A01+UH01-KF00/Programmbausteine/970_Visu/FB_Visu_JamStorage.scl new file mode 100644 index 0000000..4b85e53 --- /dev/null +++ b/=A01+UH01-KF00/Programmbausteine/970_Visu/FB_Visu_JamStorage.scl @@ -0,0 +1,199 @@ +FUNCTION_BLOCK "FB_Visu_JamStorage" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + VAR_INPUT + nInJamCount : UInt; + END_VAR + + VAR_IN_OUT + arInOutJam : Array[*] of "stCarrier"; // Jam Daten + stInOutHMIJam : "UDT_Visu_Jam_List"; + stInOutHMIData : "UDT_HMI_StorageData"; // Jam Daten HMI Schnittstelle + END_VAR + + VAR + xReInit : Bool; + nUpperBound : Int; + END_VAR + + VAR_TEMP + nIdx : Int; + nIdxMerker : Int; + END_VAR + + +BEGIN + // Hier werden die Carrierlisten für die Visu erstellt + // Auf Knopfdruck am HMI werden Aktionen durchgeführt, um die Liste zu scrollen + // Aktuell werden immer 10 Carrier gleichzeitig angezeigt + + #stInOutHMIJam.#upperBound := DINT_TO_INT(UPPER_BOUND(ARR := #arInOutJam, DIM := 1)); + #nUpperBound := DINT_TO_INT(UPPER_BOUND(ARR := #arInOutJam, DIM := 1)); + REGION Jam Daten Liste + // Beim ersten Aufruf nach reinit ausführen, damit Daten drinstehen + IF NOT #xReInit THEN + #stInOutHMIJam.nIndex := 1; + #nIdxMerker := #stInOutHMIJam.nIndex; + FOR #nIdx := 1 TO 10 DO + #stInOutHMIJam.arJamList[#nIdx - 1] := #arInOutJam[#nIdxMerker]; + #nIdxMerker += 1; + IF #nIdx >= #nUpperBound OR #nIdxMerker > #nUpperBound THEN + EXIT; + END_IF; + END_FOR; + #xReInit := TRUE; + END_IF; + + // Wenn nichts an der Liste gemacht wird, Daten nur aktualisieren + IF NOT #stInOutHMIJam.#DecOne AND NOT #stInOutHMIJam.#DecFive AND NOT #stInOutHMIJam.#IncOne AND NOT #stInOutHMIJam.#IncFive AND NOT #stInOutHMIJam.#ScrollEnd AND NOT #stInOutHMIJam.#ScrollStart THEN + #nIdxMerker := #stInOutHMIJam.nIndex; + FOR #nIdx := 1 TO 10 DO + #stInOutHMIJam.arJamList[#nIdx - 1] := #arInOutJam[#nIdxMerker]; + #nIdxMerker += 1; + IF #nIdx >= #nUpperBound OR #nIdxMerker > #nUpperBound THEN + EXIT; + END_IF; + END_FOR; + END_IF; + + // Liste um eins nach oben bewegen + IF #stInOutHMIJam.#DecOne THEN + #stInOutHMIJam.#nIndex -= 1; + IF #stInOutHMIJam.#nIndex < 1 THEN + #stInOutHMIJam.#nIndex := 1; + END_IF; + + #nIdxMerker := #stInOutHMIJam.nIndex; + + FOR #nIdx := 1 TO 10 DO + #stInOutHMIJam.arJamList[#nIdx - 1] := #arInOutJam[#nIdxMerker]; + #nIdxMerker += 1; + IF #nIdx >= #nUpperBound OR #nIdxMerker > #nUpperBound THEN + EXIT; + END_IF; + END_FOR; + + + + #stInOutHMIJam.#DecOne := FALSE; + END_IF; + + // Liste um fünf nach oben bewegen + IF #stInOutHMIJam.#DecFive THEN + #stInOutHMIJam.#nIndex -= 5; + IF #stInOutHMIJam.#nIndex < 1 THEN + #stInOutHMIJam.#nIndex := 1; + END_IF; + + #nIdxMerker := #stInOutHMIJam.nIndex; + + FOR #nIdx := 1 TO 10 DO + #stInOutHMIJam.arJamList[#nIdx - 1] := #arInOutJam[#nIdxMerker]; + #nIdxMerker += 1; + IF #nIdx >= #nUpperBound OR #nIdxMerker > #nUpperBound THEN + EXIT; + END_IF; + END_FOR; + #stInOutHMIJam.#DecFive := FALSE; + END_IF; + + // Liste um eins nach unten bewegen + IF #stInOutHMIJam.#IncOne THEN + #stInOutHMIJam.#nIndex += 1; + IF #stInOutHMIJam.#nIndex > #stInOutHMIJam.#upperBound - 9 THEN + #stInOutHMIJam.#nIndex := #stInOutHMIJam.#upperBound - 9; + IF #stInOutHMIJam.nIndex <= 0 THEN + #stInOutHMIJam.nIndex := 1; + END_IF; + END_IF; + + #nIdxMerker := #stInOutHMIJam.nIndex; + + FOR #nIdx := 1 TO 10 DO + #stInOutHMIJam.arJamList[#nIdx - 1] := #arInOutJam[#nIdxMerker]; + #nIdxMerker += 1; + IF #nIdx >= #nUpperBound OR #nIdxMerker > #nUpperBound THEN + EXIT; + END_IF; + END_FOR; + #stInOutHMIJam.#IncOne := FALSE; + END_IF; + + // Liste um fünf nach unten bewegen + IF #stInOutHMIJam.#IncFive THEN + #stInOutHMIJam.#nIndex += 5; + IF #stInOutHMIJam.#nIndex > #stInOutHMIJam.#upperBound - 9 THEN + #stInOutHMIJam.#nIndex := #stInOutHMIJam.#upperBound - 9; + IF #stInOutHMIJam.nIndex < 0 THEN + #stInOutHMIJam.nIndex := 1; + END_IF; + END_IF; + + #nIdxMerker := #stInOutHMIJam.nIndex; + + FOR #nIdx := 1 TO 10 DO + #stInOutHMIJam.arJamList[#nIdx - 1] := #arInOutJam[#nIdxMerker]; + #nIdxMerker += 1; + IF #nIdx >= #nUpperBound OR #nIdxMerker > #nUpperBound THEN + EXIT; + END_IF; + END_FOR; + #stInOutHMIJam.#IncFive := FALSE; + END_IF; + + // Zum Listenanfang springen + IF #stInOutHMIJam.#ScrollStart THEN + #stInOutHMIJam.#nIndex := 1; + + #nIdxMerker := #stInOutHMIJam.nIndex; + + FOR #nIdx := 1 TO 10 DO + #stInOutHMIJam.arJamList[#nIdx - 1] := #arInOutJam[#nIdxMerker]; + #nIdxMerker += 1; + IF #nIdx >= #nUpperBound OR #nIdxMerker > #nUpperBound THEN + EXIT; + END_IF; + END_FOR; + + #stInOutHMIJam.#ScrollStart := FALSE; + END_IF; + // Zum Listenende springen + IF #stInOutHMIJam.#ScrollEnd THEN + #stInOutHMIJam.#nIndex := #stInOutHMIJam.#upperBound - 9; + IF #stInOutHMIJam.nIndex < 0 THEN + #stInOutHMIJam.nIndex := 1; + END_IF; + + #nIdxMerker := #stInOutHMIJam.nIndex; + + FOR #nIdx := 1 TO 10 DO + #stInOutHMIJam.arJamList[#nIdx - 1] := #arInOutJam[#nIdxMerker]; + #nIdxMerker += 1; + IF #nIdx >= #nUpperBound OR #nIdxMerker > #nUpperBound THEN + EXIT; + END_IF; + END_FOR; + + #stInOutHMIJam.#ScrollEnd := FALSE; + END_IF; + END_REGION + + REGION FC_CAR_MOVE + + // "FC_CARR_MOVE"(nInCommand := #stHMIJam.stCarMove.nCommand, + // nInJamNr := #nInJamNr,//braucht nicht von HMI zu kommen - #stHMIJam.stCarMove.nJamNr, + // nInTarget := #stHMIJam.stCarMove.nTarget, + // xInStart := #stHMIJam.stCarMove.xStart, + // xOutError => #stHMIJam.stCarMove.xError); + + #stInOutHMIJam.stCarMove.xStart := FALSE; + + END_REGION + + REGION HMI + IF #stInOutHMIData.stStatus.bByte.%X7 THEN //%X7: Manuelle Zielvergabe aktiviert + #arInOutJam[1].nDestination := #stInOutHMIData.stConfig.nCapacitySetHMI; //Sorgt dafür, dass Carrier ein festes Ziel bekommen + END_IF; + END_REGION +END_FUNCTION_BLOCK + diff --git a/=A01+UH01-KF00/Programmbausteine/970_Visu/FB_Visu_Jams.scl b/=A01+UH01-KF00/Programmbausteine/970_Visu/FB_Visu_Jams.scl new file mode 100644 index 0000000..23e6169 --- /dev/null +++ b/=A01+UH01-KF00/Programmbausteine/970_Visu/FB_Visu_Jams.scl @@ -0,0 +1,638 @@ +FUNCTION_BLOCK "FB_Visu_Jams" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + VAR + "arfbJamStorage1.1" { S7_SetPoint := 'False'} : Array[1.."cNoLines"] of "FB_Visu_JamStorage"; + "arfbJamStorage1.2" : Array[1.."cNoLines"] of "FB_Visu_JamStorage"; + fbJamHyper : "FB_Visu_Jam"; + fbJam0100_1 : "FB_Visu_Jam"; + fbJam0101_1 : "FB_Visu_Jam"; + fbJam0101_2 : "FB_Visu_Jam"; + fbJam0102_1 : "FB_Visu_Jam"; + fbJam0102_2 : "FB_Visu_Jam"; + fbJam0102_3 : "FB_Visu_Jam"; + fbJam0102_4 : "FB_Visu_Jam"; + fbJam0102_5 : "FB_Visu_Jam"; + fbJam0102_6 : "FB_Visu_Jam"; + fbJam0103_1 : "FB_Visu_Jam"; + fbJam0104_1 : "FB_Visu_Jam"; + fbJam0104_2 : "FB_Visu_Jam"; + fbJam0104_3 : "FB_Visu_Jam"; + fbJam0106_1 : "FB_Visu_Jam"; + fbJam0106_2 : "FB_Visu_Jam"; + fbJam0107_1 : "FB_Visu_Jam"; + fbJam0108_1 : "FB_Visu_Jam"; + fbJam0108_2 : "FB_Visu_Jam"; + fbJam0108_3 : "FB_Visu_Jam"; + fbJam0110_1 : "FB_Visu_Jam"; + fbJam0110_2 : "FB_Visu_Jam"; + fbJam4103_1 : "FB_Visu_Jam"; + fbJam4104_1 : "FB_Visu_Jam"; + fbJam4204_1 : "FB_Visu_Jam"; + fbJam4204_2 : "FB_Visu_Jam"; + fbJam4203_1 : "FB_Visu_Jam"; + fbJam4302_1 : "FB_Visu_Jam"; + fbJam4302_2 : "FB_Visu_Jam"; + fbJam4402_1 : "FB_Visu_Jam"; + fbJam4403_1 : "FB_Visu_Jam"; + fbJam4403_2 : "FB_Visu_Jam"; + fbJam4501_1 : "FB_Visu_Jam"; + fbJam4501_2 : "FB_Visu_Jam"; + fbJam4502_1 : "FB_Visu_Jam"; + fbJam4502_2 : "FB_Visu_Jam"; + fbJam4503_1 : "FB_Visu_Jam"; + fbJam4503_2 : "FB_Visu_Jam"; + END_VAR + + VAR_TEMP + idx : Int; + END_VAR + + +BEGIN + REGION Visu Jam Aufrufe + REGION Jam-Listen + REGION HyperJam + // Statement section REGION + #fbJamHyper(stInOutHMIJam := "DB_Interface_HMI".stJamsAndStorage.stJamLists.stJam.stHyperJam, + arInOutJam := "DB_HyperJam".stHyperJam.arCarrier, + nInJamCount := "DB_HyperJam".stHyperJam.stData.Status.nCount, + stInOutHMIData := "DB_Interface_HMI".stJamsAndStorage.stJams.stHyperJam); + END_REGION + + + REGION Jam0100 + #fbJam0100_1(stInOutHMIJam := "DB_Interface_HMI".stJamsAndStorage.stJamLists.stJam.stJam0100_1, + arInOutJam := "DB_JamArea0100".stJam0100_1.arCarrier, + nInJamCount := "DB_JamArea0100".stJam0100_1.stData.Status.nCount, + stInOutHMIData := "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea0100.stJam0100_1); + END_REGION + + REGION Jam0101 + #fbJam0101_1(stInOutHMIJam := "DB_Interface_HMI".stJamsAndStorage.stJamLists.stJam.stJam0101_1, + arInOutJam := "DB_JamArea0101".stJam0101_1.arCarrier, + nInJamCount := "DB_JamArea0101".stJam0101_1.stData.Status.nCount, + stInOutHMIData := "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea0101.stJam0101_1); + + #fbJam0101_2(stInOutHMIJam := "DB_Interface_HMI".stJamsAndStorage.stJamLists.stJam.stJam0101_2, + arInOutJam := "DB_JamArea0101".stJam0101_2.arCarrier, + nInJamCount := "DB_JamArea0101".stJam0101_2.stData.Status.nCount, + stInOutHMIData := "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea0101.stJam0101_2); + END_REGION + + REGION Jam0102 + #fbJam0102_1(stInOutHMIJam := "DB_Interface_HMI".stJamsAndStorage.stJamLists.stJam.stJam0102_1, + arInOutJam := "DB_JamArea0102".stJam0102_1.arCarrier, + nInJamCount := "DB_JamArea0102".stJam0102_1.stData.Status.nCount, + stInOutHMIData := "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea0102.stJam0102_1); + + #fbJam0102_2(stInOutHMIJam := "DB_Interface_HMI".stJamsAndStorage.stJamLists.stJam.stJam0102_2, + arInOutJam := "DB_JamArea0102".stJam0102_2.arCarrier, + nInJamCount := "DB_JamArea0102".stJam0102_2.stData.Status.nCount, + stInOutHMIData := "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea0102.stJam0102_2); + + #fbJam0102_3(stInOutHMIJam := "DB_Interface_HMI".stJamsAndStorage.stJamLists.stJam.stJam0102_3, + arInOutJam := "DB_JamArea0102".stJam0102_3.arCarrier, + nInJamCount := "DB_JamArea0102".stJam0102_3.stData.Status.nCount, + stInOutHMIData := "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea0102.stJam0102_3); + + #fbJam0102_4(stInOutHMIJam := "DB_Interface_HMI".stJamsAndStorage.stJamLists.stJam.stJam0102_4, + arInOutJam := "DB_JamArea0102".stJam0102_4.arCarrier, + nInJamCount := "DB_JamArea0102".stJam0102_4.stData.Status.nCount, + stInOutHMIData := "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea0102.stJam0102_4); + + #fbJam0102_5(stInOutHMIJam := "DB_Interface_HMI".stJamsAndStorage.stJamLists.stJam.stJam0102_5, + arInOutJam := "DB_JamArea0102".stJam0102_5.arCarrier, + nInJamCount := "DB_JamArea0102".stJam0102_5.stData.Status.nCount, + stInOutHMIData := "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea0102.stJam0102_5); + + #fbJam0102_6(stInOutHMIJam := "DB_Interface_HMI".stJamsAndStorage.stJamLists.stJam.stJam0102_6, + arInOutJam := "DB_JamArea0102".stJam0102_6.arCarrier, + nInJamCount := "DB_JamArea0102".stJam0102_6.stData.Status.nCount, + stInOutHMIData := "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea0102.stJam0102_6); + END_REGION + + REGION Jam0103 + #fbJam0103_1(stInOutHMIJam := "DB_Interface_HMI".stJamsAndStorage.stJamLists.stJam.stJam0103_1, + arInOutJam := "DB_JamArea0103".stJam0103_1.arCarrier, + nInJamCount := "DB_JamArea0103".stJam0103_1.stData.Status.nCount, + stInOutHMIData := "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea0103.stJam0103_1); + END_REGION + + REGION Jam0104 + #fbJam0104_1(stInOutHMIJam := "DB_Interface_HMI".stJamsAndStorage.stJamLists.stJam.stJam0104_1, + arInOutJam := "DB_JamArea0104".stJam0104_1.arCarrier, + nInJamCount := "DB_JamArea0104".stJam0104_1.stData.Status.nCount, + stInOutHMIData := "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea0104.stJam0104_1); + + #fbJam0104_2(stInOutHMIJam := "DB_Interface_HMI".stJamsAndStorage.stJamLists.stJam.stJam0104_2, + arInOutJam := "DB_JamArea0104".stJam0104_2.arCarrier, + nInJamCount := "DB_JamArea0104".stJam0104_2.stData.Status.nCount, + stInOutHMIData := "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea0104.stJam0104_2); + + #fbJam0104_3(stInOutHMIJam := "DB_Interface_HMI".stJamsAndStorage.stJamLists.stJam.stJam0104_3, + arInOutJam := "DB_JamArea0104".stJam0104_3.arCarrier, + nInJamCount := "DB_JamArea0104".stJam0104_3.stData.Status.nCount, + stInOutHMIData := "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea0104.stJam0104_3); + + + END_REGION + + REGION Jam0106 + #fbJam0106_1(stInOutHMIJam := "DB_Interface_HMI".stJamsAndStorage.stJamLists.stJam.stJam0106_1, + arInOutJam := "DB_JamArea0106".stJam0106_1.arCarrier, + nInJamCount := "DB_JamArea0106".stJam0106_1.stData.Status.nCount, + stInOutHMIData := "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea0106.stJam0106_1); + + #fbJam0106_2(stInOutHMIJam := "DB_Interface_HMI".stJamsAndStorage.stJamLists.stJam.stJam0106_2, + arInOutJam := "DB_JamArea0106".stJam0106_2.arCarrier, + nInJamCount := "DB_JamArea0106".stJam0106_2.stData.Status.nCount, + stInOutHMIData := "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea0106.stJam0106_2); + END_REGION + + REGION Jam0107 + #fbJam0107_1(stInOutHMIJam := "DB_Interface_HMI".stJamsAndStorage.stJamLists.stJam.stJam0107_1, + arInOutJam := "DB_JamArea0107".stJam0107_1.arCarrier, + nInJamCount := "DB_JamArea0107".stJam0107_1.stData.Status.nCount, + stInOutHMIData := "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea0107.stJam0107_1); + END_REGION + + REGION Jam0108 + #fbJam0108_1(stInOutHMIJam := "DB_Interface_HMI".stJamsAndStorage.stJamLists.stJam.stJam0108_1, + arInOutJam := "DB_JamArea0108".stJam0108_1.arCarrier, + nInJamCount := "DB_JamArea0108".stJam0108_1.stData.Status.nCount, + stInOutHMIData := "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea0108.stJam0108_1); + + #fbJam0108_2(stInOutHMIJam := "DB_Interface_HMI".stJamsAndStorage.stJamLists.stJam.stJam0108_2, + arInOutJam := "DB_JamArea0108".stJam0108_2.arCarrier, + nInJamCount := "DB_JamArea0108".stJam0108_2.stData.Status.nCount, + stInOutHMIData := "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea0108.stJam0108_2); + + #fbJam0108_3(stInOutHMIJam := "DB_Interface_HMI".stJamsAndStorage.stJamLists.stJam.stJam0108_3, + arInOutJam := "DB_JamArea0108".stJam0108_3.arCarrier, + nInJamCount := "DB_JamArea0108".stJam0108_3.stData.Status.nCount, + stInOutHMIData := "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea0108.stJam0108_3); + END_REGION + + REGION Jam0110 + #fbJam0110_1(stInOutHMIJam := "DB_Interface_HMI".stJamsAndStorage.stJamLists.stJam.stJam0110_1, + arInOutJam := "DB_JamArea0110".stJam0110_1.arCarrier, + nInJamCount := "DB_JamArea0110".stJam0110_1.stData.Status.nCount, + stInOutHMIData := "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea0110.stJam0110_1); + + #fbJam0110_2(stInOutHMIJam := "DB_Interface_HMI".stJamsAndStorage.stJamLists.stJam.stJam0110_2, + arInOutJam := "DB_JamArea0110".stJam0110_2.arCarrier, + nInJamCount := "DB_JamArea0110".stJam0110_2.stData.Status.nCount, + stInOutHMIData := "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea0110.stJam0110_2); + END_REGION + + REGION Jam4103 + #fbJam4103_1(stInOutHMIJam := "DB_Interface_HMI".stJamsAndStorage.stJamLists.stJam.stJam4103_1, + arInOutJam := "DB_JamArea4103".stJam4103_1.arCarrier, + nInJamCount := "DB_JamArea4103".stJam4103_1.stData.Status.nCount, + stInOutHMIData := "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea4103.stJam4103_1); + END_REGION + + REGION Jam4104 + #fbJam4104_1(stInOutHMIJam := "DB_Interface_HMI".stJamsAndStorage.stJamLists.stJam.stJam4104_1, + arInOutJam := "DB_JamArea4104".stJam4104_1.arCarrier, + nInJamCount := "DB_JamArea4104".stJam4104_1.stData.Status.nCount, + stInOutHMIData := "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea4104.stJam4104_1); + END_REGION + + REGION Jam4203 + #fbJam4203_1(stInOutHMIJam := "DB_Interface_HMI".stJamsAndStorage.stJamLists.stJam.stJam4203_1, + arInOutJam := "DB_JamArea4203".stJam4203_1.arCarrier, + nInJamCount := "DB_JamArea4203".stJam4203_1.stData.Status.nCount, + stInOutHMIData := "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea4203.stJam4203_1); + END_REGION + + REGION Jam4204 + #fbJam4204_1(stInOutHMIJam := "DB_Interface_HMI".stJamsAndStorage.stJamLists.stJam.stJam4204_1, + arInOutJam := "DB_JamArea4204".stJam4204_1.arCarrier, + nInJamCount := "DB_JamArea4204".stJam4204_1.stData.Status.nCount, + stInOutHMIData := "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea4204.stJam4204_1); + + #fbJam4204_2(stInOutHMIJam := "DB_Interface_HMI".stJamsAndStorage.stJamLists.stJam.stJam4204_2, + arInOutJam := "DB_JamArea4204".stJam4204_2.arCarrier, + nInJamCount := "DB_JamArea4204".stJam4204_2.stData.Status.nCount, + stInOutHMIData := "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea4204.stJam4204_2); + END_REGION + + REGION Jam4302 + #fbJam4302_1(stInOutHMIJam := "DB_Interface_HMI".stJamsAndStorage.stJamLists.stJam.stJam4302_1, + arInOutJam := "DB_JamArea4302".stJam4302_1.arCarrier, + nInJamCount := "DB_JamArea4302".stJam4302_1.stData.Status.nCount, + stInOutHMIData := "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea4302.stJam4302_1); + + #fbJam4302_2(stInOutHMIJam := "DB_Interface_HMI".stJamsAndStorage.stJamLists.stJam.stJam4302_2, + arInOutJam := "DB_JamArea4302".stJam4302_2.arCarrier, + nInJamCount := "DB_JamArea4302".stJam4302_2.stData.Status.nCount, + stInOutHMIData := "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea4302.stJam4302_2); + END_REGION + + REGION Jam4402 + #fbJam4402_1(stInOutHMIJam := "DB_Interface_HMI".stJamsAndStorage.stJamLists.stJam.stJam4402_1, + arInOutJam := "DB_JamArea4402".stJam4402_1.arCarrier, + nInJamCount := "DB_JamArea4402".stJam4402_1.stData.Status.nCount, + stInOutHMIData := "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea4402.stJam4402_1); + END_REGION + + REGION Jam4403 + #fbJam4403_1(stInOutHMIJam := "DB_Interface_HMI".stJamsAndStorage.stJamLists.stJam.stJam4403_1, + arInOutJam := "DB_JamArea4403".stJam4403_1.arCarrier, + nInJamCount := "DB_JamArea4403".stJam4403_1.stData.Status.nCount, + stInOutHMIData := "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea4403.stJam4403_1); + + #fbJam4403_2(stInOutHMIJam := "DB_Interface_HMI".stJamsAndStorage.stJamLists.stJam.stJam4403_2, + arInOutJam := "DB_JamArea4403".stJam4403_2.arCarrier, + nInJamCount := "DB_JamArea4403".stJam4403_2.stData.Status.nCount, + stInOutHMIData := "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea4403.stJam4403_2); + END_REGION + + REGION Jam4501 + #fbJam4501_1(stInOutHMIJam := "DB_Interface_HMI".stJamsAndStorage.stJamLists.stJam.stJam4501_1, + arInOutJam := "DB_JamArea4501".stJam4501_1.arCarrier, + nInJamCount := "DB_JamArea4501".stJam4501_1.stData.Status.nCount, + stInOutHMIData := "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea4501.stJam4501_1); + + #fbJam4501_2(stInOutHMIJam := "DB_Interface_HMI".stJamsAndStorage.stJamLists.stJam.stJam4501_2, + arInOutJam := "DB_JamArea4501".stJam4501_2.arCarrier, + nInJamCount := "DB_JamArea4501".stJam4501_2.stData.Status.nCount, + stInOutHMIData := "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea4501.stJam4501_2); + END_REGION + + REGION Jam4502 + #fbJam4502_1(stInOutHMIJam := "DB_Interface_HMI".stJamsAndStorage.stJamLists.stJam.stJam4502_1, + arInOutJam := "DB_JamArea4502".stJam4502_1.arCarrier, + nInJamCount := "DB_JamArea4502".stJam4502_1.stData.Status.nCount, + stInOutHMIData := "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea4502.stJam4502_1); + + #fbJam4502_2(stInOutHMIJam := "DB_Interface_HMI".stJamsAndStorage.stJamLists.stJam.stJam4502_2, + arInOutJam := "DB_JamArea4502".stJam4502_2.arCarrier, + nInJamCount := "DB_JamArea4502".stJam4502_2.stData.Status.nCount, + stInOutHMIData := "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea4502.stJam4502_2); + END_REGION + + REGION Jam4503 + #fbJam4503_1(stInOutHMIJam := "DB_Interface_HMI".stJamsAndStorage.stJamLists.stJam.stJam4503_1, + arInOutJam := "DB_JamArea4503".stJam4503_1.arCarrier, + nInJamCount := "DB_JamArea4503".stJam4503_1.stData.Status.nCount, + stInOutHMIData := "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea4503.stJam4503_1); + + #fbJam4503_2(stInOutHMIJam := "DB_Interface_HMI".stJamsAndStorage.stJamLists.stJam.stJam4503_2, + arInOutJam := "DB_JamArea4503".stJam4503_2.arCarrier, + nInJamCount := "DB_JamArea4503".stJam4503_2.stData.Status.nCount, + stInOutHMIData := "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea4503.stJam4503_2); + END_REGION + + END_REGION ; + + REGION Jams Status, config + REGION HyperJam + "DB_Interface_HMI".stJamsAndStorage.stJams.stHyperJam.stStatus := "DB_HyperJam".stHyperJam.stData.Status; + "DB_Interface_HMI".stJamsAndStorage.stJams.stHyperJam.stJamConfig.nCapacityPLC := "DB_HyperJam".stHyperJam.stData.Config.nCapacitySet; + + END_REGION + + + + REGION Jam0100_1 + "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea0100.stJam0100_1.stStatus := "DB_JamArea0100".stJam0100_1.stData.Status; + "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea0100.stJam0100_1.stJamConfig.nCapacityPLC := "DB_JamArea0100".stJam0100_1.stData.Config.nCapacitySet; + "DB_JamArea0100".stJam0100_1.stData.Status.bByte.%X2 := "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea0100.stJam0100_1.stJamConfig.xLockEntry; + "DB_JamArea0100".stJam0100_1.stData.Status.bByte.%X3 := "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea0100.stJam0100_1.stJamConfig.xLockExit; + "DB_JamArea0100".stJam0100_1.stData.Status.bByte.%X7 := "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea0100.stJam0100_1.stJamConfig.xActivateManualDest; + + END_REGION + + REGION Jam0101_1 + "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea0101.stJam0101_1.stStatus := "DB_JamArea0101".stJam0101_1.stData.Status; + "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea0101.stJam0101_1.stJamConfig.nCapacityPLC := "DB_JamArea0101".stJam0101_1.stData.Config.nCapacitySet; + "DB_JamArea0101".stJam0101_1.stData.Status.bByte.%X2 := "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea0101.stJam0101_1.stJamConfig.xLockEntry; + "DB_JamArea0101".stJam0101_1.stData.Status.bByte.%X3 := "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea0101.stJam0101_1.stJamConfig.xLockExit; + "DB_JamArea0101".stJam0101_1.stData.Status.bByte.%X7 := "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea0101.stJam0101_1.stJamConfig.xActivateManualDest; + END_REGION + + REGION Jam0101_2 + "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea0101.stJam0101_2.stStatus := "DB_JamArea0101".stJam0101_2.stData.Status; + "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea0101.stJam0101_2.stJamConfig.nCapacityPLC := "DB_JamArea0101".stJam0101_2.stData.Config.nCapacitySet; + "DB_JamArea0101".stJam0101_2.stData.Status.bByte.%X2 := "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea0101.stJam0101_2.stJamConfig.xLockEntry; + "DB_JamArea0101".stJam0101_2.stData.Status.bByte.%X3 := "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea0101.stJam0101_2.stJamConfig.xLockExit; + "DB_JamArea0101".stJam0101_2.stData.Status.bByte.%X7 := "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea0101.stJam0101_2.stJamConfig.xActivateManualDest; + END_REGION + + REGION Jam0102_1 + "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea0102.stJam0102_1.stStatus := "DB_JamArea0102".stJam0102_1.stData.Status; + "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea0102.stJam0102_1.stJamConfig.nCapacityPLC := "DB_JamArea0102".stJam0102_1.stData.Config.nCapacitySet; + "DB_JamArea0102".stJam0102_1.stData.Status.bByte.%X2 := "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea0102.stJam0102_1.stJamConfig.xLockEntry; + "DB_JamArea0102".stJam0102_1.stData.Status.bByte.%X3 := "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea0102.stJam0102_1.stJamConfig.xLockExit; + "DB_JamArea0102".stJam0102_1.stData.Status.bByte.%X7 := "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea0102.stJam0102_1.stJamConfig.xActivateManualDest; + END_REGION + + REGION Jam0102_2 + "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea0102.stJam0102_2.stStatus := "DB_JamArea0102".stJam0102_2.stData.Status; + "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea0102.stJam0102_2.stJamConfig.nCapacityPLC := "DB_JamArea0102".stJam0102_2.stData.Config.nCapacitySet; + "DB_JamArea0102".stJam0102_2.stData.Status.bByte.%X2 := "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea0102.stJam0102_2.stJamConfig.xLockEntry; + "DB_JamArea0102".stJam0102_2.stData.Status.bByte.%X3 := "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea0102.stJam0102_2.stJamConfig.xLockExit; + "DB_JamArea0102".stJam0102_2.stData.Status.bByte.%X7 := "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea0102.stJam0102_2.stJamConfig.xActivateManualDest; + END_REGION + + REGION Jam0102_3 + "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea0102.stJam0102_3.stStatus := "DB_JamArea0102".stJam0102_3.stData.Status; + "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea0102.stJam0102_3.stJamConfig.nCapacityPLC := "DB_JamArea0102".stJam0102_3.stData.Config.nCapacitySet; + "DB_JamArea0102".stJam0102_3.stData.Status.bByte.%X2 := "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea0102.stJam0102_3.stJamConfig.xLockEntry; + "DB_JamArea0102".stJam0102_3.stData.Status.bByte.%X3 := "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea0102.stJam0102_3.stJamConfig.xLockExit; + "DB_JamArea0102".stJam0102_3.stData.Status.bByte.%X7 := "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea0102.stJam0102_3.stJamConfig.xActivateManualDest; + END_REGION + + REGION Jam0102_4 + "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea0102.stJam0102_4.stStatus := "DB_JamArea0102".stJam0102_4.stData.Status; + "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea0102.stJam0102_4.stJamConfig.nCapacityPLC := "DB_JamArea0102".stJam0102_4.stData.Config.nCapacitySet; + "DB_JamArea0102".stJam0102_4.stData.Status.bByte.%X2 := "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea0102.stJam0102_4.stJamConfig.xLockEntry; + "DB_JamArea0102".stJam0102_4.stData.Status.bByte.%X3 := "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea0102.stJam0102_4.stJamConfig.xLockExit; + "DB_JamArea0102".stJam0102_4.stData.Status.bByte.%X7 := "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea0102.stJam0102_4.stJamConfig.xActivateManualDest; + END_REGION + + REGION Jam0102_5 + "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea0102.stJam0102_5.stStatus := "DB_JamArea0102".stJam0102_5.stData.Status; + "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea0102.stJam0102_5.stJamConfig.nCapacityPLC := "DB_JamArea0102".stJam0102_5.stData.Config.nCapacitySet; + "DB_JamArea0102".stJam0102_5.stData.Status.bByte.%X2 := "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea0102.stJam0102_5.stJamConfig.xLockEntry; + "DB_JamArea0102".stJam0102_5.stData.Status.bByte.%X3 := "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea0102.stJam0102_5.stJamConfig.xLockExit; + "DB_JamArea0102".stJam0102_5.stData.Status.bByte.%X7 := "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea0102.stJam0102_5.stJamConfig.xActivateManualDest; + END_REGION + + REGION Jam0102_6 + "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea0102.stJam0102_6.stStatus := "DB_JamArea0102".stJam0102_6.stData.Status; + "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea0102.stJam0102_6.stJamConfig.nCapacityPLC := "DB_JamArea0102".stJam0102_6.stData.Config.nCapacitySet; + "DB_JamArea0102".stJam0102_6.stData.Status.bByte.%X2 := "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea0102.stJam0102_6.stJamConfig.xLockEntry; + "DB_JamArea0102".stJam0102_6.stData.Status.bByte.%X3 := "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea0102.stJam0102_6.stJamConfig.xLockExit; + "DB_JamArea0102".stJam0102_6.stData.Status.bByte.%X7 := "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea0102.stJam0102_6.stJamConfig.xActivateManualDest; + END_REGION + + REGION Jam0103_1 + "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea0103.stJam0103_1.stStatus := "DB_JamArea0103".stJam0103_1.stData.Status; + "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea0103.stJam0103_1.stJamConfig.nCapacityPLC := "DB_JamArea0103".stJam0103_1.stData.Config.nCapacitySet; + "DB_JamArea0103".stJam0103_1.stData.Status.bByte.%X2 := "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea0103.stJam0103_1.stJamConfig.xLockEntry; + "DB_JamArea0103".stJam0103_1.stData.Status.bByte.%X3 := "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea0103.stJam0103_1.stJamConfig.xLockExit; + "DB_JamArea0103".stJam0103_1.stData.Status.bByte.%X7 := "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea0103.stJam0103_1.stJamConfig.xActivateManualDest; + END_REGION + + REGION Jam0104_1 + "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea0104.stJam0104_1.stStatus := "DB_JamArea0104".stJam0104_1.stData.Status; + "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea0104.stJam0104_1.stJamConfig.nCapacityPLC := "DB_JamArea0104".stJam0104_1.stData.Config.nCapacitySet; + "DB_JamArea0104".stJam0104_1.stData.Status.bByte.%X2 := "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea0104.stJam0104_1.stJamConfig.xLockEntry; + "DB_JamArea0104".stJam0104_1.stData.Status.bByte.%X3 := "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea0104.stJam0104_1.stJamConfig.xLockExit; + "DB_JamArea0104".stJam0104_1.stData.Status.bByte.%X7 := "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea0104.stJam0104_1.stJamConfig.xActivateManualDest; + END_REGION + + REGION Jam0104_2 + "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea0104.stJam0104_2.stStatus := "DB_JamArea0104".stJam0104_2.stData.Status; + "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea0104.stJam0104_2.stJamConfig.nCapacityPLC := "DB_JamArea0104".stJam0104_2.stData.Config.nCapacitySet; + "DB_JamArea0104".stJam0104_2.stData.Status.bByte.%X2 := "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea0104.stJam0104_2.stJamConfig.xLockEntry; + "DB_JamArea0104".stJam0104_2.stData.Status.bByte.%X3 := "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea0104.stJam0104_2.stJamConfig.xLockExit; + "DB_JamArea0104".stJam0104_2.stData.Status.bByte.%X7 := "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea0104.stJam0104_2.stJamConfig.xActivateManualDest; + END_REGION + + REGION Jam0104_3 + "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea0104.stJam0104_3.stStatus := "DB_JamArea0104".stJam0104_3.stData.Status; + "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea0104.stJam0104_3.stJamConfig.nCapacityPLC := "DB_JamArea0104".stJam0104_3.stData.Config.nCapacitySet; + "DB_JamArea0104".stJam0104_3.stData.Status.bByte.%X2 := "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea0104.stJam0104_3.stJamConfig.xLockEntry; + "DB_JamArea0104".stJam0104_3.stData.Status.bByte.%X3 := "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea0104.stJam0104_3.stJamConfig.xLockExit; + "DB_JamArea0104".stJam0104_3.stData.Status.bByte.%X7 := "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea0104.stJam0104_3.stJamConfig.xActivateManualDest; + + END_REGION + + REGION Jam0106_1 + "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea0106.stJam0106_1.stStatus := "DB_JamArea0106".stJam0106_1.stData.Status; + "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea0106.stJam0106_1.stJamConfig.nCapacityPLC := "DB_JamArea0106".stJam0106_1.stData.Config.nCapacitySet; + "DB_JamArea0106".stJam0106_1.stData.Status.bByte.%X2 := "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea0106.stJam0106_1.stJamConfig.xLockEntry; + "DB_JamArea0106".stJam0106_1.stData.Status.bByte.%X3 := "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea0106.stJam0106_1.stJamConfig.xLockExit; + "DB_JamArea0106".stJam0106_1.stData.Status.bByte.%X7 := "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea0106.stJam0106_1.stJamConfig.xActivateManualDest; + + END_REGION + + REGION Jam0106_2 + "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea0106.stJam0106_2.stStatus := "DB_JamArea0106".stJam0106_2.stData.Status; + "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea0106.stJam0106_2.stJamConfig.nCapacityPLC := "DB_JamArea0106".stJam0106_2.stData.Config.nCapacitySet; + "DB_JamArea0106".stJam0106_2.stData.Status.bByte.%X2 := "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea0106.stJam0106_2.stJamConfig.xLockEntry; + "DB_JamArea0106".stJam0106_2.stData.Status.bByte.%X3 := "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea0106.stJam0106_2.stJamConfig.xLockExit; + "DB_JamArea0106".stJam0106_2.stData.Status.bByte.%X7 := "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea0106.stJam0106_2.stJamConfig.xActivateManualDest; + END_REGION + + REGION Jam0107_1 + "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea0107.stJam0107_1.stStatus := "DB_JamArea0107".stJam0107_1.stData.Status; + "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea0107.stJam0107_1.stJamConfig.nCapacityPLC := "DB_JamArea0107".stJam0107_1.stData.Config.nCapacitySet; + "DB_JamArea0107".stJam0107_1.stData.Status.bByte.%X2 := "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea0107.stJam0107_1.stJamConfig.xLockEntry; + "DB_JamArea0107".stJam0107_1.stData.Status.bByte.%X3 := "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea0107.stJam0107_1.stJamConfig.xLockExit; + "DB_JamArea0107".stJam0107_1.stData.Status.bByte.%X7 := "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea0107.stJam0107_1.stJamConfig.xActivateManualDest; + END_REGION + + REGION Jam0108_1 + "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea0108.stJam0108_1.stStatus := "DB_JamArea0108".stJam0108_1.stData.Status; + "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea0108.stJam0108_1.stJamConfig.nCapacityPLC := "DB_JamArea0108".stJam0108_1.stData.Config.nCapacitySet; + "DB_JamArea0108".stJam0108_1.stData.Status.bByte.%X2 := "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea0108.stJam0108_1.stJamConfig.xLockEntry; + "DB_JamArea0108".stJam0108_1.stData.Status.bByte.%X3 := "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea0108.stJam0108_1.stJamConfig.xLockExit; + "DB_JamArea0108".stJam0108_1.stData.Status.bByte.%X7 := "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea0108.stJam0108_1.stJamConfig.xActivateManualDest; + END_REGION + + REGION Jam0108_2 + "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea0108.stJam0108_2.stStatus := "DB_JamArea0108".stJam0108_2.stData.Status; + "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea0108.stJam0108_2.stJamConfig.nCapacityPLC := "DB_JamArea0108".stJam0108_2.stData.Config.nCapacitySet; + "DB_JamArea0108".stJam0108_2.stData.Status.bByte.%X2 := "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea0108.stJam0108_2.stJamConfig.xLockEntry; + "DB_JamArea0108".stJam0108_2.stData.Status.bByte.%X3 := "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea0108.stJam0108_2.stJamConfig.xLockExit; + "DB_JamArea0108".stJam0108_2.stData.Status.bByte.%X7 := "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea0108.stJam0108_2.stJamConfig.xActivateManualDest; + END_REGION + + REGION Jam0108_3 + "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea0108.stJam0108_3.stStatus := "DB_JamArea0108".stJam0108_3.stData.Status; + "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea0108.stJam0108_3.stJamConfig.nCapacityPLC := "DB_JamArea0108".stJam0108_3.stData.Config.nCapacitySet; + "DB_JamArea0108".stJam0108_3.stData.Status.bByte.%X2 := "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea0108.stJam0108_3.stJamConfig.xLockEntry; + "DB_JamArea0108".stJam0108_3.stData.Status.bByte.%X3 := "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea0108.stJam0108_3.stJamConfig.xLockExit; + "DB_JamArea0108".stJam0108_3.stData.Status.bByte.%X7 := "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea0108.stJam0108_3.stJamConfig.xActivateManualDest; + END_REGION + + REGION Jam0110_1 + "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea0110.stJam0110_1.stStatus := "DB_JamArea0110".stJam0110_1.stData.Status; + "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea0110.stJam0110_1.stJamConfig.nCapacityPLC := "DB_JamArea0110".stJam0110_1.stData.Config.nCapacitySet; + "DB_JamArea0110".stJam0110_1.stData.Status.bByte.%X2 := "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea0110.stJam0110_1.stJamConfig.xLockEntry; + "DB_JamArea0110".stJam0110_1.stData.Status.bByte.%X3 := "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea0110.stJam0110_1.stJamConfig.xLockExit; + "DB_JamArea0110".stJam0110_1.stData.Status.bByte.%X7 := "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea0110.stJam0110_1.stJamConfig.xActivateManualDest; + END_REGION + + REGION Jam0110_2 + "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea0110.stJam0110_2.stStatus := "DB_JamArea0110".stJam0110_2.stData.Status; + "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea0110.stJam0110_2.stJamConfig.nCapacityPLC := "DB_JamArea0110".stJam0110_2.stData.Config.nCapacitySet; + "DB_JamArea0110".stJam0110_2.stData.Status.bByte.%X2 := "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea0110.stJam0110_2.stJamConfig.xLockEntry; + "DB_JamArea0110".stJam0110_2.stData.Status.bByte.%X3 := "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea0110.stJam0110_2.stJamConfig.xLockExit; + "DB_JamArea0110".stJam0110_2.stData.Status.bByte.%X7 := "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea0110.stJam0110_2.stJamConfig.xActivateManualDest; + END_REGION + + REGION Jam4103_1 + "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea4103.stJam4103_1.stStatus := "DB_JamArea4103".stJam4103_1.stData.Status; + "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea4103.stJam4103_1.stJamConfig.nCapacityPLC := "DB_JamArea4103".stJam4103_1.stData.Config.nCapacitySet; + "DB_JamArea4103".stJam4103_1.stData.Status.bByte.%X2 := "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea4103.stJam4103_1.stJamConfig.xLockEntry; + "DB_JamArea4103".stJam4103_1.stData.Status.bByte.%X3 := "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea4103.stJam4103_1.stJamConfig.xLockExit; + "DB_JamArea4103".stJam4103_1.stData.Status.bByte.%X7 := "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea4103.stJam4103_1.stJamConfig.xActivateManualDest; + END_REGION + + REGION Jam4104_1 + "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea4104.stJam4104_1.stStatus := "DB_JamArea4104".stJam4104_1.stData.Status; + "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea4104.stJam4104_1.stJamConfig.nCapacityPLC := "DB_JamArea4104".stJam4104_1.stData.Config.nCapacitySet; + "DB_JamArea4104".stJam4104_1.stData.Status.bByte.%X2 := "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea4104.stJam4104_1.stJamConfig.xLockEntry; + "DB_JamArea4104".stJam4104_1.stData.Status.bByte.%X3 := "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea4104.stJam4104_1.stJamConfig.xLockExit; + "DB_JamArea4104".stJam4104_1.stData.Status.bByte.%X7 := "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea4104.stJam4104_1.stJamConfig.xActivateManualDest; + END_REGION + + REGION Jam4203_1 + "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea4203.stJam4203_1.stStatus := "DB_JamArea4203".stJam4203_1.stData.Status; + "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea4203.stJam4203_1.stJamConfig.nCapacityPLC := "DB_JamArea4203".stJam4203_1.stData.Config.nCapacitySet; + "DB_JamArea4203".stJam4203_1.stData.Status.bByte.%X2 := "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea4203.stJam4203_1.stJamConfig.xLockEntry; + "DB_JamArea4203".stJam4203_1.stData.Status.bByte.%X3 := "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea4203.stJam4203_1.stJamConfig.xLockExit; + "DB_JamArea4203".stJam4203_1.stData.Status.bByte.%X7 := "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea4203.stJam4203_1.stJamConfig.xActivateManualDest; + END_REGION + + REGION Jam4204_1 + "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea4204.stJam4204_1.stStatus := "DB_JamArea4204".stJam4204_1.stData.Status; + "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea4204.stJam4204_1.stJamConfig.nCapacityPLC := "DB_JamArea4204".stJam4204_1.stData.Config.nCapacitySet; + "DB_JamArea4204".stJam4204_1.stData.Status.bByte.%X2 := "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea4204.stJam4204_1.stJamConfig.xLockEntry; + "DB_JamArea4204".stJam4204_1.stData.Status.bByte.%X3 := "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea4204.stJam4204_1.stJamConfig.xLockExit; + "DB_JamArea4204".stJam4204_1.stData.Status.bByte.%X7 := "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea4204.stJam4204_1.stJamConfig.xActivateManualDest; + END_REGION + + REGION Jam4204_2 + "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea4204.stJam4204_2.stStatus := "DB_JamArea4204".stJam4204_2.stData.Status; + "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea4204.stJam4204_2.stJamConfig.nCapacityPLC := "DB_JamArea4204".stJam4204_2.stData.Config.nCapacitySet; + "DB_JamArea4204".stJam4204_2.stData.Status.bByte.%X2 := "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea4204.stJam4204_2.stJamConfig.xLockEntry; + "DB_JamArea4204".stJam4204_2.stData.Status.bByte.%X3 := "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea4204.stJam4204_2.stJamConfig.xLockExit; + "DB_JamArea4204".stJam4204_2.stData.Status.bByte.%X7 := "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea4204.stJam4204_2.stJamConfig.xActivateManualDest; + END_REGION + + REGION Jam4302_1 + "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea4302.stJam4302_1.stStatus := "DB_JamArea4302".stJam4302_1.stData.Status; + "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea4302.stJam4302_1.stJamConfig.nCapacityPLC := "DB_JamArea4302".stJam4302_1.stData.Config.nCapacitySet; + "DB_JamArea4302".stJam4302_1.stData.Status.bByte.%X2 := "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea4302.stJam4302_1.stJamConfig.xLockEntry; + "DB_JamArea4302".stJam4302_1.stData.Status.bByte.%X3 := "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea4302.stJam4302_1.stJamConfig.xLockExit; + "DB_JamArea4302".stJam4302_1.stData.Status.bByte.%X7 := "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea4302.stJam4302_1.stJamConfig.xActivateManualDest; + END_REGION + + REGION Jam4302_2 + "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea4302.stJam4302_2.stStatus := "DB_JamArea4302".stJam4302_2.stData.Status; + "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea4302.stJam4302_2.stJamConfig.nCapacityPLC := "DB_JamArea4302".stJam4302_2.stData.Config.nCapacitySet; + "DB_JamArea4302".stJam4302_2.stData.Status.bByte.%X2 := "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea4302.stJam4302_2.stJamConfig.xLockEntry; + "DB_JamArea4302".stJam4302_2.stData.Status.bByte.%X3 := "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea4302.stJam4302_2.stJamConfig.xLockExit; + "DB_JamArea4302".stJam4302_2.stData.Status.bByte.%X7 := "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea4302.stJam4302_2.stJamConfig.xActivateManualDest; + END_REGION + + REGION Jam4402_1 + "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea4402.stJam4402_1.stStatus := "DB_JamArea4402".stJam4402_1.stData.Status; + "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea4402.stJam4402_1.stJamConfig.nCapacityPLC := "DB_JamArea4402".stJam4402_1.stData.Config.nCapacitySet; + "DB_JamArea4402".stJam4402_1.stData.Status.bByte.%X2 := "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea4402.stJam4402_1.stJamConfig.xLockEntry; + "DB_JamArea4402".stJam4402_1.stData.Status.bByte.%X3 := "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea4402.stJam4402_1.stJamConfig.xLockExit; + "DB_JamArea4402".stJam4402_1.stData.Status.bByte.%X7 := "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea4402.stJam4402_1.stJamConfig.xActivateManualDest; + END_REGION + + REGION Jam4403_1 + "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea4403.stJam4403_1.stStatus := "DB_JamArea4403".stJam4403_1.stData.Status; + "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea4403.stJam4403_1.stJamConfig.nCapacityPLC := "DB_JamArea4403".stJam4403_1.stData.Config.nCapacitySet; + "DB_JamArea4403".stJam4403_1.stData.Status.bByte.%X2 := "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea4403.stJam4403_1.stJamConfig.xLockEntry; + "DB_JamArea4403".stJam4403_1.stData.Status.bByte.%X3 := "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea4403.stJam4403_1.stJamConfig.xLockExit; + "DB_JamArea4403".stJam4403_1.stData.Status.bByte.%X7 := "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea4403.stJam4403_1.stJamConfig.xActivateManualDest; + END_REGION + + REGION Jam4403_2 + "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea4403.stJam4403_2.stStatus := "DB_JamArea4403".stJam4403_2.stData.Status; + "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea4403.stJam4403_2.stJamConfig.nCapacityPLC := "DB_JamArea4403".stJam4403_2.stData.Config.nCapacitySet; + "DB_JamArea4403".stJam4403_2.stData.Status.bByte.%X2 := "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea4403.stJam4403_2.stJamConfig.xLockEntry; + "DB_JamArea4403".stJam4403_2.stData.Status.bByte.%X3 := "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea4403.stJam4403_2.stJamConfig.xLockExit; + "DB_JamArea4403".stJam4403_2.stData.Status.bByte.%X7 := "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea4403.stJam4403_2.stJamConfig.xActivateManualDest; + END_REGION + + REGION Jam4501_1 + "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea4501.stJam4501_1.stStatus := "DB_JamArea4501".stJam4501_1.stData.Status; + "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea4501.stJam4501_1.stJamConfig.nCapacityPLC := "DB_JamArea4501".stJam4501_1.stData.Config.nCapacitySet; + "DB_JamArea4501".stJam4501_1.stData.Status.bByte.%X2 := "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea4501.stJam4501_1.stJamConfig.xLockEntry; + "DB_JamArea4501".stJam4501_1.stData.Status.bByte.%X3 := "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea4501.stJam4501_1.stJamConfig.xLockExit; + "DB_JamArea4501".stJam4501_1.stData.Status.bByte.%X7 := "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea4501.stJam4501_1.stJamConfig.xActivateManualDest; + END_REGION + + REGION Jam4501_2 + "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea4501.stJam4501_2.stStatus := "DB_JamArea4501".stJam4501_2.stData.Status; + "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea4501.stJam4501_2.stJamConfig.nCapacityPLC := "DB_JamArea4501".stJam4501_2.stData.Config.nCapacitySet; + "DB_JamArea4501".stJam4501_2.stData.Status.bByte.%X2 := "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea4501.stJam4501_2.stJamConfig.xLockEntry; + "DB_JamArea4501".stJam4501_2.stData.Status.bByte.%X3 := "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea4501.stJam4501_2.stJamConfig.xLockExit; + "DB_JamArea4501".stJam4501_2.stData.Status.bByte.%X7 := "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea4501.stJam4501_2.stJamConfig.xActivateManualDest; + END_REGION + + REGION Jam4502_1 + "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea4502.stJam4502_1.stStatus := "DB_JamArea4502".stJam4502_1.stData.Status; + "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea4502.stJam4502_1.stJamConfig.nCapacityPLC := "DB_JamArea4502".stJam4502_1.stData.Config.nCapacitySet; + "DB_JamArea4502".stJam4502_1.stData.Status.bByte.%X2 := "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea4502.stJam4502_1.stJamConfig.xLockEntry; + "DB_JamArea4502".stJam4502_1.stData.Status.bByte.%X3 := "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea4502.stJam4502_1.stJamConfig.xLockExit; + "DB_JamArea4502".stJam4502_1.stData.Status.bByte.%X7 := "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea4502.stJam4502_1.stJamConfig.xActivateManualDest; + END_REGION + + REGION Jam4502_2 + "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea4502.stJam4502_2.stStatus := "DB_JamArea4502".stJam4502_2.stData.Status; + "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea4502.stJam4502_2.stJamConfig.nCapacityPLC := "DB_JamArea4502".stJam4502_2.stData.Config.nCapacitySet; + "DB_JamArea4502".stJam4502_2.stData.Status.bByte.%X2 := "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea4502.stJam4502_2.stJamConfig.xLockEntry; + "DB_JamArea4502".stJam4502_2.stData.Status.bByte.%X3 := "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea4502.stJam4502_2.stJamConfig.xLockExit; + "DB_JamArea4502".stJam4502_2.stData.Status.bByte.%X7 := "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea4502.stJam4502_2.stJamConfig.xActivateManualDest; + END_REGION + + REGION Jam4503_1 + "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea4503.stJam4503_1.stStatus := "DB_JamArea4503".stJam4503_1.stData.Status; + "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea4503.stJam4503_1.stJamConfig.nCapacityPLC := "DB_JamArea4503".stJam4503_1.stData.Config.nCapacitySet; + "DB_JamArea4503".stJam4503_1.stData.Status.bByte.%X2 := "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea4503.stJam4503_1.stJamConfig.xLockEntry; + "DB_JamArea4503".stJam4503_1.stData.Status.bByte.%X3 := "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea4503.stJam4503_1.stJamConfig.xLockExit; + "DB_JamArea4503".stJam4503_1.stData.Status.bByte.%X7 := "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea4503.stJam4503_1.stJamConfig.xActivateManualDest; + END_REGION + + REGION Jam4503_2 + "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea4503.stJam4503_2.stStatus := "DB_JamArea4503".stJam4503_2.stData.Status; + "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea4503.stJam4503_2.stJamConfig.nCapacityPLC := "DB_JamArea4503".stJam4503_2.stData.Config.nCapacitySet; + "DB_JamArea4503".stJam4503_2.stData.Status.bByte.%X2 := "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea4503.stJam4503_2.stJamConfig.xLockEntry; + "DB_JamArea4503".stJam4503_2.stData.Status.bByte.%X3 := "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea4503.stJam4503_2.stJamConfig.xLockExit; + "DB_JamArea4503".stJam4503_2.stData.Status.bByte.%X7 := "DB_Interface_HMI".stJamsAndStorage.stJams.stJamArea4503.stJam4503_2.stJamConfig.xActivateManualDest; + END_REGION + + END_REGION + + END_REGION + + REGION Visu Storage Aufrufe + REGION Buffer 1.1 (TRO102) + FOR #idx := 1 TO "cNoLines" DO + #"arfbJamStorage1.1"[#idx](arInOutJam := "DB_JamBuffer102".arLine[#idx].arCarrier, + nInJamCount := "DB_JamBuffer102".arLine[#idx].stData.Status.nCount, + stInOutHMIJam := "DB_Interface_HMI".stJamsAndStorage.stJamLists."arStorageJams1.1"[#idx], + stInOutHMIData:= "DB_Interface_HMI".stJamsAndStorage.stStorageBlocks."arStorage1.1.1"[#idx]); + END_FOR; + END_REGION + + + REGION Buffer 1.2 (TRO101) + FOR #idx := 1 TO "cNoLines" DO + #"arfbJamStorage1.2"[#idx](arInOutJam := "DB_JamBuffer101".arLine[#idx].arCarrier, + nInJamCount := "DB_JamBuffer101".arLine[#idx].stData.Status.nCount, + stInOutHMIJam := "DB_Interface_HMI".stJamsAndStorage.stJamLists."arStorageJams1.2"[#idx], + stInOutHMIData:= "DB_Interface_HMI".stJamsAndStorage.stStorageBlocks."arStorage1.1.2"[#idx]); + END_FOR; + END_REGION + + + REGION Empty Buffer Storages + FOR #idx := 1 TO "cNoLines" DO + "DB_Interface_HMI".stJamsAndStorage.stStorageBlocks."arStorage1.1.1"[#idx].stStatus := "DB_JamBuffer102".arLine[#idx].stData.Status; + "DB_Interface_HMI".stJamsAndStorage.stStorageBlocks."arStorage1.1.1"[#idx].stConfig.nCapacityPLC := "DB_JamBuffer102".arLine[#idx].stData.Config.nCapacitySet; + END_FOR; + + FOR #idx := 1 TO "cNoLines" DO + "DB_Interface_HMI".stJamsAndStorage.stStorageBlocks."arStorage1.1.2"[#idx].stStatus := "DB_JamBuffer101".arLine[#idx].stData.Status; + "DB_Interface_HMI".stJamsAndStorage.stStorageBlocks."arStorage1.1.2"[#idx].stConfig.nCapacityPLC := "DB_JamBuffer101".arLine[#idx].stData.Config.nCapacitySet; + END_FOR; + END_REGION + + END_REGION +END_FUNCTION_BLOCK + diff --git a/=A01+UH01-KF00/Programmbausteine/970_Visu/FC_CarrierManipulator.scl b/=A01+UH01-KF00/Programmbausteine/970_Visu/FC_CarrierManipulator.scl new file mode 100644 index 0000000..3dbc0be --- /dev/null +++ b/=A01+UH01-KF00/Programmbausteine/970_Visu/FC_CarrierManipulator.scl @@ -0,0 +1,159 @@ +FUNCTION "FC_CarrierManipulator" : Void +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + VAR_IN_OUT + stInOutHMIJamData : "UDT_HMI_JamData"; // Jam Daten HMI + stInOutHMIJamList : "UDT_Visu_Jam_List"; // Jam Liste HMI + arInOutJam : Array[*] of "stCarrier"; // Jam SPS + arInOutHyperJam : Array[*] of "stCarrier"; + END_VAR + + VAR_TEMP + tmpEmptyCarr : "stCarrier"; + nCounter : DInt; + nArrayMax : Int; + nIdx : Int; + nStatus : Int; + xResult : Bool; + END_VAR + + VAR CONSTANT + cFirstAhead : Int := 1; // Carrier weiterbuchen + cLastBack : Int := 2; // Carrier zurückbuchen + cSwapFirstLast : Int := 3; // Ersten und letzten Carrier im Jam tauschen + cDeleteAll : Int := 4; // Alle Jam Daten löschen (macht Sinn, wenn Jam unklar und man einfach bereinigen will) + cDeletePos : Int := 5; // Position, falls bestimmter Carrier gelöscht werden soll (macht Sinn, wenn man Carrier entnimmt) + cPutToHyperJam : Int := 6; // Position, falls bestimmter Carrier zum HyperJam soll (macht Sinn, wenn Carrier nicht auffindbar) + END_VAR + + +BEGIN + REGION Info + (* + Funktionen + + - Alle carrier daten in einem jam leeren - check + - bestimmten carrier löschen - check + + MUBEA bereits gemacht: + - Carrier in Hyper-Jam - check + - Weiterbuchen + - Zurückbuchen + - Tauschen (erster und letzter) + *) + END_REGION + + REGION Array-Grenzen + #nArrayMax := DINT_TO_INT(UPPER_BOUND(ARR := #arInOutJam, DIM := 1)); + END_REGION + + REGION Befehl ausführen + CASE #stInOutHMIJamList.stCarMove.nCommand OF + #cDeleteAll: + REGION Jam bereinigen + IF #stInOutHMIJamList.stCarMove.xStart THEN + IF NOT #arInOutJam[1].bStatus.%X0 OR NOT #stInOutHMIJamData.stStatus.bByte.%X2 OR NOT #stInOutHMIJamData.stStatus.bByte.%X3 THEN + #stInOutHMIJamList.stCarMove.xStart := FALSE; + RETURN; + END_IF; + + FOR #nIdx := 1 TO #nArrayMax DO + IF #arInOutJam[#nIdx].bStatus.%X0 THEN + #arInOutJam[#nIdx] := #tmpEmptyCarr; // Carrierdaten löschen/überschreiben + ELSE + EXIT; //fertig, nichts mehr zu tun + END_IF; + END_FOR; + #stInOutHMIJamList.stCarMove.xStart := FALSE; + END_IF; + END_REGION + + #cDeletePos: + REGION Bestimmten Carrier löschen + IF #stInOutHMIJamList.stCarMove.xStart THEN + + IF #stInOutHMIJamList.stCarMove.nPosDeleteCarrier < 1 OR #stInOutHMIJamList.stCarMove.nPosDeleteCarrier > #nArrayMax OR NOT #arInOutJam[1].bStatus.%X0 OR NOT #stInOutHMIJamData.stStatus.bByte.%X2 OR NOT #stInOutHMIJamData.stStatus.bByte.%X3 THEN + //Wenn Positionsangabe zu klein oder zu groß ist, oder in Jam ist gar kein Carrier online, dann beende + #stInOutHMIJamList.stCarMove.nPosDeleteCarrier := 1; + #stInOutHMIJamList.stCarMove.xStart := FALSE; + RETURN; + END_IF; + + //lösche den ausgewählten + #arInOutJam[#stInOutHMIJamList.stCarMove.nPosDeleteCarrier] := #tmpEmptyCarr; + IF #stInOutHMIJamList.stCarMove.nPosDeleteCarrier < #nArrayMax THEN + //Rücke danach auf um Lücke zu beseitigen aber nur wenn es nicht die letzte Stelle war + #nStatus := MOVE_BLK_VARIANT(SRC := #arInOutJam, + COUNT := INT_TO_UDINT(#nArrayMax - #stInOutHMIJamList.stCarMove.nPosDeleteCarrier), + SRC_INDEX := #stInOutHMIJamList.stCarMove.nPosDeleteCarrier, + DEST_INDEX := #stInOutHMIJamList.stCarMove.nPosDeleteCarrier - 1, + DEST => #arInOutJam); + //letztes löschen damit dort nichts doppeltes drinsteht + #arInOutJam[#nArrayMax] := #tmpEmptyCarr; + END_IF; + //fertig, setze Startbefehl zurück und Position auf Default + #stInOutHMIJamList.stCarMove.nPosDeleteCarrier := 1; + #stInOutHMIJamList.stCarMove.xStart := FALSE; + END_IF; + END_REGION + + #cPutToHyperJam: + REGION Carrier zum Hyper-Jam + + IF #stInOutHMIJamList.stCarMove.xStart THEN + IF #stInOutHMIJamList.stCarMove.nPosTransferHj < 1 OR #stInOutHMIJamList.stCarMove.nPosTransferHj > #nArrayMax OR NOT #arInOutJam[1].bStatus.%X0 OR NOT #stInOutHMIJamData.stStatus.bByte.%X2 OR NOT #stInOutHMIJamData.stStatus.bByte.%X3 THEN + //Wenn Positionsangabe zu klein oder zu groß ist, oder in Jam ist gar kein Carrier online, dann beende + #stInOutHMIJamList.stCarMove.nPosTransferHj := 1; + #stInOutHMIJamList.stCarMove.xStart := FALSE; + RETURN; + END_IF; + + IF #arInOutJam[#stInOutHMIJamList.stCarMove.nPosTransferHj].nBarcode > 2 THEN + REGION normale Barcodes + //Füge Carrier am Ende des Hyperjams ein nur wenn nicht Dummy oder BadRead, also nur bei normalem Code + "FC_TSHR_AddAtEnd"(stInTrolley := #arInOutJam[#stInOutHMIJamList.stCarMove.nPosTransferHj], + nOutCounter => #nCounter, + xOutResult => #xResult, + arTSHR := #arInOutHyperJam); + //lösche den ausgewählten + #arInOutJam[#stInOutHMIJamList.stCarMove.nPosTransferHj] := #tmpEmptyCarr; + IF #stInOutHMIJamList.stCarMove.nPosTransferHj < #nArrayMax THEN + //Rücke danach auf um Lücke zu beseitigen aber nur wenn es nicht die letzte Stelle war + #nStatus := MOVE_BLK_VARIANT(SRC := #arInOutJam, + COUNT := INT_TO_UDINT(#nArrayMax - #stInOutHMIJamList.stCarMove.nPosTransferHj), + SRC_INDEX := #stInOutHMIJamList.stCarMove.nPosTransferHj, + DEST_INDEX := #stInOutHMIJamList.stCarMove.nPosTransferHj - 1, + DEST => #arInOutJam); + //letztes löschen damit dort nichts doppeltes drinsteht + #arInOutJam[#nArrayMax] := #tmpEmptyCarr; + END_IF; + //fertig, setze Startbefehl zurück und Position auf Default + #stInOutHMIJamList.stCarMove.nPosTransferHj := 1; + #stInOutHMIJamList.stCarMove.xStart := FALSE; + END_REGION + ELSE + REGION Dummy oder unbekannt + //Falls doch Dummy oder unbekannter Barcode, lösche nur + #arInOutJam[#stInOutHMIJamList.stCarMove.nPosTransferHj] := #tmpEmptyCarr; + IF #stInOutHMIJamList.stCarMove.nPosTransferHj < #nArrayMax THEN + //Rücke danach auf um Lücke zu beseitigen aber nur wenn es nicht die letzte Stelle war + #nStatus := MOVE_BLK_VARIANT(SRC := #arInOutJam, + COUNT := INT_TO_UDINT(#nArrayMax - #stInOutHMIJamList.stCarMove.nPosTransferHj), + SRC_INDEX := #stInOutHMIJamList.stCarMove.nPosTransferHj, + DEST_INDEX := #stInOutHMIJamList.stCarMove.nPosTransferHj - 1, + DEST => #arInOutJam); + //letztes löschen damit dort nichts doppeltes drinsteht + #arInOutJam[#nArrayMax] := #tmpEmptyCarr; + END_IF; + //fertig, setze Startbefehl zurück und Position auf Default + #stInOutHMIJamList.stCarMove.nPosTransferHj := 1; + #stInOutHMIJamList.stCarMove.xStart := FALSE; + END_REGION + END_IF; + END_IF; + END_REGION + + END_CASE; + END_REGION +END_FUNCTION + diff --git a/=A01+UH01-KF00/Programmbausteine/999_Safety/DB_InterfaceSafety.xml b/=A01+UH01-KF00/Programmbausteine/999_Safety/DB_InterfaceSafety.xml new file mode 100644 index 0000000..95a3555 --- /dev/null +++ b/=A01+UH01-KF00/Programmbausteine/999_Safety/DB_InterfaceSafety.xml @@ -0,0 +1,253 @@ + + + + + + +
+ + + + + + Bedienterminal am Tor LS1 + + + + + Bedienteil an Ausgangskreisel NO READ + + + + + Bedienteil 6-fach an LS1 + + + + + Bedienteil 6-fach an LS2 + + + + + Schaltschrank oben + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + + + + + true + + + + + true + + + + + true + + + + + true + + + + + true + + + Bedienterminal am Tor LS1 + + + + + true + + + Bedienteil an Ausgangskreisel NO READ + + + + + true + + + Bedienteil 6-fach an LS1 + + + + + true + + + Bedienteil 6-fach an LS2 + + + + + true + + + Bedienteil an Arbeitsplatz LS1 + + + + + true + + + Bedienteil an Arbeitsplatz LS2 + + + + + true + + + Schaltschrank oben + + + + + true + + + + + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ Optimized + 100 + DB_InterfaceSafety + + 7 + DB +
+ + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + +
+
\ No newline at end of file diff --git a/=A01+UH01-KF00/Programmbausteine/DB_IO_Device_Test.xml b/=A01+UH01-KF00/Programmbausteine/DB_IO_Device_Test.xml new file mode 100644 index 0000000..da59e64 --- /dev/null +++ b/=A01+UH01-KF00/Programmbausteine/DB_IO_Device_Test.xml @@ -0,0 +1,66 @@ + + + + + + +
+ + +
+
+ Optimized + 0 + DB_IO_Device_Test + + 39 + DB +
+ + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + +
+
\ No newline at end of file diff --git a/=A01+UH01-KF00/Programmbausteine/DB_Platzhalter_IoDevice.xml b/=A01+UH01-KF00/Programmbausteine/DB_Platzhalter_IoDevice.xml new file mode 100644 index 0000000..48c97b6 --- /dev/null +++ b/=A01+UH01-KF00/Programmbausteine/DB_Platzhalter_IoDevice.xml @@ -0,0 +1,89 @@ + + + + + + +
+ + + true + + + + + true + + + + + true + + + + + true + + + + + true + + +
+
+ Optimized + 100 + DB_Platzhalter_IoDevice + + 32 + DB +
+ + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + +
+
\ No newline at end of file diff --git a/=A01+UH01-KF00/Programmbausteine/FC_BARCODE_SEARCH.scl b/=A01+UH01-KF00/Programmbausteine/FC_BARCODE_SEARCH.scl new file mode 100644 index 0000000..df24ae0 --- /dev/null +++ b/=A01+UH01-KF00/Programmbausteine/FC_BARCODE_SEARCH.scl @@ -0,0 +1,188 @@ +FUNCTION "FC_BARCODE_SEARCH" : Void +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + VAR_INPUT + nInArea : Int; // Suchort eingrenzen: 0 = alles durchsuchen / xxx00 = nur hier suchen + xInActive : Bool; // Flanke für Starten des Abrufes + END_VAR + + VAR_OUTPUT + xOutNewRetrieve : Bool; // Flanke als Ausgang dass neuer Abruf VOM LAGER stattfindet + nOutMissingBarcode : DInt; // Fehlteil + xOutError : Bool; // FALSE: Kein Fehler | TRUE: Während der Bearbeitung ist ein Fehler aufgetreten + nOutStatus : Int; // Fehlercodes + END_VAR + + VAR_IN_OUT + InOutTest : Array[*] of "stCarrier"; // Liste mit dem Jambereich des Lagerausgangs + InOutStructRetrieve : Struct // Struktur in der Abruf vorgegeben wird + nBarcode : DInt; + nDestination : USInt; + END_STRUCT; + InOutLocalized : "SearchResult"; // Ergebnis + END_VAR + + VAR_TEMP + nBarcode : DInt; + nDestination : Int; + nIdx1 : Int; + nIdx2 : Int; + nIdx3 : Int; + nLine : Int; // Zwischenmerker für Suchergebnis + nPos : Int; // Zwischenmerker für Suchergebnis + nArrTestMax : Int; + xPartFound : Bool; // Zwischenmerker Teil gefunden + END_VAR + + VAR CONSTANT + ERR_RETRIEVE_INVALID : Int := 3000; // Ungültige Eingaben jeglicher Art + ERR_RETRIEVE_EMPTY : Int := 3001; // NIU + ERR_RETRIEVE_NOT_FOUND : Int := 3001; // Nicht gefunden + ERR_RETRIEVE_MISCERROR : Int := 3003; // NIU + "Store1.1.1" : Int := 1; + "Store1.1.2" : Int := 2; + END_VAR + + +BEGIN + (* + ************************************************************************************ + Sucht in Vorsortierlinie sowie Lager nach dem Teil welches als EXPRESS abgerufen werden soll + ************************************************************************************ + *) + + IF #xInActive THEN + + REGION Array-Größen ermitteln + #nArrTestMax := DINT_TO_INT(UPPER_BOUND(ARR := #InOutTest, DIM := 1)); + END_REGION + + REGION Return Bedingung TO DO + IF #InOutStructRetrieve.nDestination < "cDestLvl1B1" OR #InOutStructRetrieve.nDestination > "cDestExit" OR //kein gültiges Ziel + (#InOutStructRetrieve.nBarcode / 10000000 <> 2) OR //Wenn hier etwas anderes als 2 rauskommt, dann ist der angeforderte Barcode nicht 8-stellig oder beginnt nicht mit 2 für "MiniTrolley" + (((#InOutStructRetrieve.nBarcode / 10) MOD 100) MOD 2 <> 1) //Wenn hier etwas anderes als 1 rauskommt, dann ist die 10er Stelle nicht ungerade + THEN + #xOutError := TRUE; + #nOutStatus := #ERR_RETRIEVE_INVALID; + #nOutMissingBarcode := 0; + RETURN;//Abruf ungültig + ELSE //Wenn Eingaben in Ordnung, dann speichere in Temp + #nBarcode := #InOutStructRetrieve.nBarcode; + #nDestination := #InOutStructRetrieve.nDestination; + END_IF; + END_REGION + + REGION Durchsuche TEST + + // FOR #nIdx1 := 1 TO #nArrTestMax DO + // IF #nBarcode = #InOutTest[#nIdx1].stLoadData.nProductNo AND + // #InOutTest[#nIdx1].stLoadData.nDestinationNo <> INT_TO_USINT(#nTarget) AND + // #InOutTest[#nIdx1].stLoadData.nDestinationNo <> "cDestQUALITY" (* AND + // #InOutExitArray[#nIdx1].stLoadData.nDestinationNo <> "cDestSEAT" AND + // #InOutExitArray[#nIdx1].stLoadData.nDestinationNo <> "cDestREST" *) THEN + // // #tempPartFound := TRUE; + // REGION Schreibe Daten + // "FC_GetBackFcPart"(stInPart := #InOutTest[#nIdx1], + // xOutput => "DB_RetrieveSearchResult".xGetBackFc); + // #InOutTest[#nIdx1].stLoadData.nDestinationNo := INT_TO_USINT(#nTarget); + // #InOutTest[#nIdx1].stLoadData.nJobNo := #nJobNo; + // END_REGION + // #InOutLocalized.nBarcode := #nBarcode; + // #InOutLocalized.Storage.Line := 0; + // #InOutLocalized.Storage.Pos := 0; + // #InOutLocalized.JamTest := #nIdx1; + // #InOutLocalized.205_1 := 0; + // #InOutLocalized.205_2 := 0; + // // #xOutNewRetrieve := TRUE; + // #xOutError := FALSE; + // #nOutStatus := 0; + // #nOutMissingBarcode[1] := 0; + // #nOutMissingBarcode[2] := 0; + // RETURN; //Suche unterbrechen wenn Teil gefunden wurde + // END_IF; + // END_FOR; + + END_REGION + + REGION Durchsuche Lager 1.1 + IF #nInArea = 0 OR #nInArea = "cDest1100" THEN + FOR #nIdx1 := 1 TO "cNoLines" DO //Lagerlinien + FOR #nIdx2 := 1 TO "cNoPositions" DO //Positionen pro Linie + IF #nBarcode = "DB_JamBuffer101".arLine[#nIdx1].arCarrier[#nIdx2].nBarcode AND + // "DB_Storage2.1.1".arLine[#nIdx1].arCarrier[#nIdx2].nTarget <> INT_TO_USINT(#nTarget) AND + (#nPos = 0 OR #nPos > #nIdx2) THEN + //***********falls gefunden********* + #nLine := #nIdx1; + #nPos := #nIdx2; + // #tempPartFound := TRUE; + EXIT; //Suche unterbrechen wenn Teil gefunden wurde + END_IF; + IF #nIdx2 = "cNoPositions" THEN + EXIT; //nach letzter Position -> Schleife beenden + END_IF; + END_FOR; + IF #nIdx1 = "cNoLines" THEN + EXIT; //nach letzter Linie -> Schleife beenden + END_IF; + END_FOR; + END_IF; + + REGION Schreibe Daten + IF #nPos > 0 THEN + "DB_JamBuffer101".arLine[#nLine].arCarrier[#nPos].nDestination := INT_TO_USINT(#nDestination); + #InOutLocalized.nBarcode := #nBarcode; + #InOutLocalized.Storage.Store := #"Store1.1.1"; + #InOutLocalized.Storage.Line := #nLine; + #InOutLocalized.Storage.Pos := #nPos; + #InOutLocalized.JamTest := 0; + #xOutNewRetrieve := TRUE; + #xOutError := FALSE; + #nOutStatus := 0; + #nOutMissingBarcode := 0; + RETURN; + END_IF; + END_REGION + END_REGION + REGION Durchsuche Lager 1.2 + IF #nInArea = 0 OR #nInArea = "cDest1200" THEN + FOR #nIdx1 := 1 TO "cNoLines" DO //Lagerlinien + FOR #nIdx2 := 1 TO "cNoPositions" DO //Positionen pro Linie + IF #nBarcode = "DB_JamBuffer102".arLine[#nIdx1].arCarrier[#nIdx2].nBarcode AND + // "DB_Storage2.1.2".arLine[#nIdx1].arCarrier[#nIdx2].nTarget <> INT_TO_USINT(#nTarget) AND + (#nPos = 0 OR #nPos > #nIdx2) THEN + //***********falls gefunden********* + #nLine := #nIdx1; + #nPos := #nIdx2; + // #tempPartFound := TRUE; + EXIT; //Suche unterbrechen wenn Teil gefunden wurde + END_IF; + IF #nIdx2 = "cNoPositions" THEN + EXIT; //nach letzter Position -> Schleife beenden + END_IF; + END_FOR; + IF #nIdx1 = "cNoLines" THEN + EXIT; //nach letzter Linie -> Schleife beenden + END_IF; + END_FOR; + END_IF; + + REGION Schreibe Daten + IF #nPos > 0 THEN + "DB_JamBuffer102".arLine[#nLine].arCarrier[#nPos].nDestination := INT_TO_USINT(#nDestination); + #InOutLocalized.nBarcode := #nBarcode; + #InOutLocalized.Storage.Store := #"Store1.1.2"; + #InOutLocalized.Storage.Line := #nLine; + #InOutLocalized.Storage.Pos := #nPos; + #InOutLocalized.JamTest := 0; + #xOutNewRetrieve := TRUE; + #xOutError := FALSE; + #nOutStatus := 0; + #nOutMissingBarcode := 0; + RETURN; + END_IF; + END_REGION + END_REGION + + END_IF; +END_FUNCTION + diff --git a/=A01+UH01-KF00/Programmbausteine/LStream/Utilities/LStream_FindStringInByteCharArrayAdv.liblink b/=A01+UH01-KF00/Programmbausteine/LStream/Utilities/LStream_FindStringInByteCharArrayAdv.liblink new file mode 100644 index 0000000..b28e0b0 --- /dev/null +++ b/=A01+UH01-KF00/Programmbausteine/LStream/Utilities/LStream_FindStringInByteCharArrayAdv.liblink @@ -0,0 +1,2 @@ +TypeGuid: 55baebfc-df40-4eda-91a7-cb092d016de9 +VersionGuid: 47330ceb-d57e-468c-a486-82f7e135e800 diff --git a/=A01+UH01-KF00/Programmbausteine/Längenmessung/FB_Längenmessung.scl b/=A01+UH01-KF00/Programmbausteine/Längenmessung/FB_Längenmessung.scl new file mode 100644 index 0000000..16455ce --- /dev/null +++ b/=A01+UH01-KF00/Programmbausteine/Längenmessung/FB_Längenmessung.scl @@ -0,0 +1,210 @@ +FUNCTION_BLOCK "FB_Längenmessung" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + VAR_INPUT + xInStartMessung : Bool; // Startsignal vom TRO (z.B. Separator Flanke) + xInEndeMessung : Bool; // Ende Sensor -> Sensor verschalten UDT_Sensor + xInTeilVorhanden : Bool; // UDT_Sensor + xInTeilLang : Bool; // UDT_Sensor + xInTeilzuLang : Bool; // UDT_Sensor + tInWaitingTime : Time := T#20000ms; // Timeout + tInWaitForEnd : Time := T#1500ms; + END_VAR + + VAR_OUTPUT + xOutTeilLang : Bool; + xOutErrorzuLang : Bool; + xOutErrorHängt : Bool; + xOutLeer : Bool; + xOutEndMessung : Bool; + sOutLänge : String; + xOutFinished : Bool; + xOutTeilKurz : Bool; + END_VAR + + VAR + xFlagTeilVorhanden : Bool; + xFlagTeilLang : Bool; + xFlagTeilzuLang : Bool; + xFlagStartMessung : Bool; + XFlagEndMessung : Bool; + xLastSensorLang : Bool; + xLastSensorVorhanden : Bool; + xLastSensorzuLang : Bool; + xLastSensorEndMessung : Bool; + xTeilLang : Bool; + xTeilZuLang : Bool; + xTeilVorhanden : Bool; + xEndMessung : Bool; + nState : Int := 10; + tOnTimeOut {InstructionName := 'TON_TIME'; LibVersion := '1.0'; S7_SetPoint := 'False'} : TON_TIME; + tOnWaitForEnd {InstructionName := 'TON_TIME'; LibVersion := '1.0'} : TON_TIME; + xOnWaiting { S7_SetPoint := 'True'} : Bool; + END_VAR + + +BEGIN + REGION Längenmessung + + CASE #nState OF + + 10: //waiting To start + #xOnWaiting := 0; + #xTeilLang := FALSE; + #xTeilZuLang := FALSE; + #xTeilVorhanden := FALSE; + #xEndMessung := FALSE; + IF #xInStartMessung AND NOT #xFlagStartMessung THEN + #xOutFinished := FALSE; + #xOnWaiting := 1; + #xTeilLang := FALSE; + #xTeilZuLang := FALSE; + #xTeilVorhanden := FALSE; + #xOutErrorHängt := FALSE; + #xOutLeer := FALSE; + #xOutTeilKurz := FALSE; + #xOutTeilLang := FALSE; + #xOutErrorzuLang := FALSE; + #sOutLänge := ''; + #xOutEndMessung := FALSE; + #nState := 20; + END_IF; + 20: // überprüfen ob Teil vorhanden + + IF #xInTeilVorhanden THEN + // #xOnwaiting := 1; + #xOutLeer := FALSE; + #nState := 30; + ELSIF #xInEndeMessung AND NOT #xInTeilVorhanden THEN + #nState := 10; + #xOutLeer := TRUE; + #xOutFinished := TRUE; + #sOutLänge := 'Leer'; + ELSIF NOT #xInEndeMessung AND (#tOnTimeOut.Q) THEN + #xOutErrorHängt := TRUE; + #nState := 10; + END_IF; + + + 30: // Messung + + IF NOT #xInEndeMessung THEN + IF NOT #xTeilLang THEN + #xOutTeilKurz := TRUE; + #sOutLänge := 'Teil Kurz'; + ELSIF + #xTeilLang AND NOT #xTeilZuLang THEN + #xOutTeilKurz := FALSE; + #xOutTeilLang := TRUE; + #xOutErrorzuLang := FALSE; + #xOutLeer := FALSE; + #sOutLänge := 'Teil Lang'; + ELSIF #xTeilLang AND #xTeilZuLang THEN + #xOutTeilKurz := FALSE; + #xOutErrorzuLang := TRUE; + #xOutTeilLang := FALSE; + #xOutLeer := FALSE; + #sOutLänge := 'Teil zu Lang'; + ELSIF (#tOnTimeOut.Q) THEN + #xOutErrorHängt := TRUE; + END_IF; + ELSE + //#xOutEndMessung := TRUE; + #nState := 35; + END_IF; + 35: //noch kurz warten + IF #tOnWaitForEnd.ET < #tInWaitForEnd THEN + IF NOT #xTeilLang THEN + #xOutTeilKurz := TRUE; + #sOutLänge := 'Teil Kurz'; + ELSIF + #xTeilLang AND NOT #xTeilZuLang THEN + #xOutTeilKurz := FALSE; + #xOutTeilLang := TRUE; + #xOutErrorzuLang := FALSE; + #xOutLeer := FALSE; + #sOutLänge := 'Teil Lang'; + ELSIF #xTeilLang AND #xTeilZuLang THEN + #xOutTeilKurz := FALSE; + #xOutErrorzuLang := TRUE; + #xOutTeilLang := FALSE; + #xOutLeer := FALSE; + #sOutLänge := 'Teil zu Lang'; + ELSIF (#tOnTimeOut.Q) THEN + #xOutErrorHängt := TRUE; + END_IF; + ELSE + #nState := 40; + END_IF; + 40: // Messung finished + #xOutFinished := TRUE; + #nState := 10; + + + + END_CASE; + + END_REGION + + REGION State Manager + // Bei Bedarf + END_REGION + + REGION sensor Flags + IF #xInTeilLang THEN + #xTeilLang := TRUE; + END_IF; + IF #xInTeilzuLang THEN + #xTeilZuLang := TRUE; + END_IF; + + // IF #xFlagTeilLang THEN + // #xTeilLang := TRUE; + // END_IF; + // IF #xFlagTeilzuLang THEN + // #xTeilZuLang := TRUE; + // END_IF; + // IF #xFlagTeilVorhanden THEN + // #xTeilVorhanden := TRUE; + // END_IF; + // IF #XFlagEndMessung THEN + // #xEndMessung := TRUE; + // END_IF; + + + + + // #xFlagTeilLang := #xInTeilLang AND NOT #xLastSensorLang ; + // #xFlagTeilzuLang := #xInTeilzuLang AND NOT #xLastSensorzuLang; + // #xFlagTeilVorhanden := #xInTeilVorhanden AND NOT #xLastSensorVorhanden; + // #xFlagStartMessung := #xInStartMessung; + // #XFlagEndMessung := #xInEndeMessung AND NOT #xLastSensorEndMessung; + // #xLastSensorLang := #xInTeilLang; + // #xLastSensorzuLang := #xInTeilzuLang; + // #xLastSensorVorhanden := #xInTeilVorhanden; + // #xLastSensorEndMessung := #xInEndeMessung; + + + END_REGION + REGION Timer + //so lange warten + #tOnTimeOut(IN := #xOnWaiting, + PT := #tInWaitingTime); + + #tOnWaitForEnd(IN := #xOnWaiting, + PT := #tInWaitingTime); + + (* IF #xInStartMessung THEN + #xInStartMessung := FALSE; + END_IF; *) + + END_REGION + + REGION Monitoring + //Fehler hinzufügen + + END_REGION + + +END_FUNCTION_BLOCK + diff --git a/=A01+UH01-KF00/Programmbausteine/Längenmessung/FB_Längenmessung_DB.xml b/=A01+UH01-KF00/Programmbausteine/Längenmessung/FB_Längenmessung_DB.xml new file mode 100644 index 0000000..745cd9d --- /dev/null +++ b/=A01+UH01-KF00/Programmbausteine/Längenmessung/FB_Längenmessung_DB.xml @@ -0,0 +1,109 @@ + + + + + + FB_Längenmessung + FB + +
+ + + + + + + +
+
+ + + + + + + + +
+
+
+ + + + + + + + + + + + + + + + + + true + + + + + true + + +
+ + FB_Längenmessung_DB + + 45 + DB + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + \ No newline at end of file diff --git a/=A01+UH01-KF00/Programmbausteine/OB1.xml b/=A01+UH01-KF00/Programmbausteine/OB1.xml new file mode 100644 index 0000000..3ae6bb0 --- /dev/null +++ b/=A01+UH01-KF00/Programmbausteine/OB1.xml @@ -0,0 +1,5908 @@ + + + + + + +
+ + + Initial call of this OB + Initial call of this OB + Initial call of this OB + + + + + =True, if remanent data are available + =True, if remanent data are available + =True, if remanent data are available + + +
+
+ + + + + + + + +
+
+ + Optimized + OB1 + + 1 + FBD + ProgramCycle + false + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + + + true + + + + + + + + + + + FALSE + + + + + + Wird in OB121 auf TRUE gesetzt + + + + + + + + + + + + + + + + + + + + + + + + + + + Änderung um einchecken zu testen + + + SCL + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + cs-CZ + + + + + + de-DE + Zykluszeit genau ermitteln START + + + + + en-US + + + + + + + + + + + + + + + + true + + + + + + + + + + + 0 + + + + + + + + + "DB_Error".sErrorText.....Reaktion, Meldung etc. + + + + + + + + + + + true + + + + + + + + + + Quittieren + + + + + + + true + + + + + + + + + + + 0 + + + + + + + + + true + + + + + + + + + + + 0 + + + + + + + + + true + + + + + + + + + + + 0 + + + + + + + + + true + + + + + + + + + + + 0 + + + + + + + + + true + + + + + + + + + + + 0 + + + + + + + + + true + + + + + + + + + + + 0 + + + + + + + + + true + + + + + + + + + + + 0 + + + + + + + + + true + + + + + + + + + + + 0 + + + + + + + + + true + + + + + + + + + + + 0 + + + + + + + + + true + + + + + + + + + + + '' + + + + + + + + + true + + + + + + + + + + + FALSE + + + + + + + + SCL + + + + + + + cs-CZ + + + + + + de-DE + OB 121 zeigt bei Programmierfehler in DB_Error die Infos an. Infos können hier gelöscht werden. + + + + + en-US + + + + + + + + + + cs-CZ + + + + + + de-DE + Programmierfehler Handling + + + + + en-US + + + + + + + + + + + + + + + true + + + + + + + + + true + + + + + + + + + + + + + + + true + + + + + + + + + + + + SCL + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + cs-CZ + + + + + + de-DE + Call Sensors + + + + + en-US + + + + + + + + + + + + + + + true + + + + + + + + + + + true + + + + + + + + + + + + + + + + + true + + + + + + + + + + + + SCL + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + cs-CZ + + + + + + de-DE + PreMain + + + + + en-US + + + + + + + + + + + + + + + true + + + + + + + + + + + true + + + + + + + + + + + + + + + + + true + + + + + + + + + + + + + + + + true + + + + + + + + + SCL + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + cs-CZ + + + + + + de-DE + Main + + + + + en-US + + + + + + + + + + + + + + + true + + + + + + + + + + SCL + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + cs-CZ + + + + + + de-DE + Priority Logic + + + + + en-US + + + + + + + + + + + + + + true + + + + + + + + + + + TRUE + + + + + + + + + true + + + + + + + + + + + true + + + + + + + + + + + + + + + true + + + + + + + + + + + + + + + + true + + + + + + + + + + + true + + + + + + + + + + + + + + + true + + + + + + + + + + + + SCL + + + + + + + cs-CZ + + + + + + de-DE + Schnittstelle Fortna WCS/WES, TCP Logging + + + + + en-US + + + + + + + + + + cs-CZ + + + + + + de-DE + Communications + + + + + en-US + + + + + + + + + + + + + Lager füllen + + + + + + + + true + + + + + + + + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1234 + + + + + + + + + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1234 + + + + + + + + + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + + + + + + + + + + + + + + + + + + + + + true + + + + + + + + + + + FALSE + + + + + + + + + Lager leeren + + + + + + + + true + + + + + + + + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0 + + + + + + + + + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + FALSE + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0 + + + + + + + + + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + FALSE + + + + + + + + + + + + + + + FOR #nIdx1 := 1 TO "cNoLines1.1.3" DO + FOR #nIdx2 := 1 TO "cNoPositionsBlock1" DO + "DB_Storage1.1.3".arLine[#nIdx1].arCarrier[#nIdx2].nBarcode := 0; + "DB_Storage1.1.3".arLine[#nIdx1].arCarrier[#nIdx2].bStatus.%X0 := FALSE; + END_FOR; + END_FOR; + FOR #nIdx1 := 1 TO "cNoLines1.1.4" DO + FOR #nIdx2 := 1 TO "cNoPositionsBlock1" DO + "DB_Storage1.1.4".arLine[#nIdx1].arCarrier[#nIdx2].nBarcode := 0; + "DB_Storage1.1.4".arLine[#nIdx1].arCarrier[#nIdx2].bStatus.%X0 := FALSE; + END_FOR; + END_FOR; + FOR #nIdx1 := 1 TO "cNoLines1.2.1" DO + FOR #nIdx2 := 1 TO "cNoPositionsBlock2" DO + "DB_Storage1.2.1".arLine[#nIdx1].arCarrier[#nIdx2].nBarcode := 0; + "DB_Storage1.2.1".arLine[#nIdx1].arCarrier[#nIdx2].bStatus.%X0 := FALSE; + END_FOR; + END_FOR; + FOR #nIdx1 := 1 TO "cNoLines1.2.2" DO + FOR #nIdx2 := 1 TO "cNoPositionsBlock2" DO + "DB_Storage1.2.2".arLine[#nIdx1].arCarrier[#nIdx2].nBarcode := 0; + "DB_Storage1.2.2".arLine[#nIdx1].arCarrier[#nIdx2].bStatus.%X0 := FALSE; + END_FOR; + END_FOR; + FOR #nIdx1 := 1 TO "cNoLines1.2.3" DO + FOR #nIdx2 := 1 TO "cNoPositionsBlock2" DO + "DB_Storage1.2.3".arLine[#nIdx1].arCarrier[#nIdx2].nBarcode := 0; + "DB_Storage1.2.3".arLine[#nIdx1].arCarrier[#nIdx2].bStatus.%X0 := FALSE; + END_FOR; + END_FOR; + FOR #nIdx1 := 1 TO "cNoLines1.2.4" DO + FOR #nIdx2 := 1 TO "cNoPositionsBlock2" DO + "DB_Storage1.2.4".arLine[#nIdx1].arCarrier[#nIdx2].nBarcode := 0; + "DB_Storage1.2.4".arLine[#nIdx1].arCarrier[#nIdx2].bStatus.%X0 := FALSE; + END_FOR; + END_FOR; + FOR #nIdx1 := 1 TO "cNoLines1.3.1" DO + FOR #nIdx2 := 1 TO "cNoPositionsBlock3" DO + "DB_Storage1.3.1".arLine[#nIdx1].arCarrier[#nIdx2].nBarcode := 0; + "DB_Storage1.3.1".arLine[#nIdx1].arCarrier[#nIdx2].bStatus.%X0 := FALSE; + END_FOR; + END_FOR; + FOR #nIdx1 := 1 TO "cNoLines1.3.2" DO + FOR #nIdx2 := 1 TO "cNoPositionsBlock3" DO + "DB_Storage1.3.2".arLine[#nIdx1].arCarrier[#nIdx2].nBarcode := 0; + "DB_Storage1.3.2".arLine[#nIdx1].arCarrier[#nIdx2].bStatus.%X0 := FALSE; + END_FOR; + END_FOR; + FOR #nIdx1 := 1 TO "cNoLines1.3.3" DO + FOR #nIdx2 := 1 TO "cNoPositionsBlock3" DO + "DB_Storage1.3.3".arLine[#nIdx1].arCarrier[#nIdx2].nBarcode := 0; + "DB_Storage1.3.3".arLine[#nIdx1].arCarrier[#nIdx2].bStatus.%X0 := FALSE; + END_FOR; + END_FOR; + FOR #nIdx1 := 1 TO "cNoLines1.3.4" DO + FOR #nIdx2 := 1 TO "cNoPositionsBlock3" DO + "DB_Storage1.3.4".arLine[#nIdx1].arCarrier[#nIdx2].nBarcode := 0; + "DB_Storage1.3.4".arLine[#nIdx1].arCarrier[#nIdx2].bStatus.%X0 := FALSE; + END_FOR; + END_FOR; + + + + + + + + + + + true + + + + + + + + + + + FALSE + + + + + + + + + Jam füllen + + + + + + + + true + + + + + + + + + + + + HyperJam + + + + FOR #nIdxHyper := 1 TO "cHyperJam" -1 DO + + + + + "DB_HyperJam".stHyperJam.arCarrier[#nIdxHyper].nBarcode := 20000015; + + + + + "DB_HyperJam".stHyperJam.arCarrier[#nIdxHyper].bStatus.%X0 := true; + + + + + END_FOR; + + + + + + + + + Conveyor + + + + FOR #nIdx2 := 1 TO "cJamConv1_1" -1 DO + + + + + "DB_JamAreaConv1".stJamConv1_1.arCarrier[#nIdx2].nBarcode := 20000015; + + + + + "DB_JamAreaConv1".stJamConv1_1.arCarrier[#nIdx2].bStatus.%X0 := true; + + + + + END_FOR; + + + + + FOR #nIdx2 := 1 TO "cJamConv1_2" -1 DO + + + + + "DB_JamAreaConv1".stJamConv1_2.arCarrier[#nIdx2].nBarcode := 20000015; + + + + + "DB_JamAreaConv1".stJamConv1_2.arCarrier[#nIdx2].bStatus.%X0 := true; + + + + + END_FOR; + + + + + FOR #nIdx2 := 1 TO "cJamConv1_3" -1 DO + + + + + "DB_JamAreaConv1".stJamConv1_3.arCarrier[#nIdx2].nBarcode := 20000015; + + + + + "DB_JamAreaConv1".stJamConv1_3.arCarrier[#nIdx2].bStatus.%X0 := true; + + + + + END_FOR; + + + + + FOR #nIdx2 := 1 TO "cJamConv1_4" -1 DO + + + + + "DB_JamAreaConv1".stJamConv1_4.arCarrier[#nIdx2].nBarcode := 20000015; + + + + + "DB_JamAreaConv1".stJamConv1_4.arCarrier[#nIdx2].bStatus.%X0 := true; + + + + + END_FOR; + + + + + FOR #nIdx2 := 1 TO "cJamConv2" -1 DO + + + + + "DB_JamAreaConv2".stJamConv2.arCarrier[#nIdx2].nBarcode := 20000015; + + + + + "DB_JamAreaConv2".stJamConv2.arCarrier[#nIdx2].bStatus.%X0 := true; + + + + + END_FOR; + + + + + + + + + Block 1 + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + 35 + + + + + + + + + + true + + + + + + + + + + + + + + + + + + + + + + + 1015 + + + + + + + + + true + + + + + + + + + + + + + + + + + + + + + + + + + TRUE + + + + + + + + + + + FOR #nIdx2 := 1 TO "cJam0100_2" -1 DO + + + + + "DB_JamArea0101".stJam0101_2.arCarrier[#nIdx2].nBarcode := 20000015; + + + + + "DB_JamArea0101".stJam0101_2.arCarrier[#nIdx2].bStatus.%X0 := true; + + + + + END_FOR; + + + + + FOR #nIdx2 := 1 TO "cJam0101_1" - 1 DO + + + + + "DB_JamArea0101".stJam0101_1.arCarrier[#nIdx2].nBarcode := 20000015; + + + + + "DB_JamArea0101".stJam0101_1.arCarrier[#nIdx2].bStatus.%X0 := true; + + + + + END_FOR; + + + + + FOR #nIdx2 := 1 TO "cJam0101_2" -1 DO + + + + + "DB_JamArea0101".stJam0101_2.arCarrier[#nIdx2].nBarcode := 20000015; + + + + + "DB_JamArea0101".stJam0101_2.arCarrier[#nIdx2].bStatus.%X0 := true; + + + + + END_FOR; + + + + + FOR #nIdx2 := 1 TO "cJam0101_3" -1 DO + "DB_JamArea1102".stJam1102_3.arCarrier[#nIdx2].nBarcode := 20000015; + "DB_JamArea1102".stJam1102_3.arCarrier[#nIdx2].bStatus.%X0 := true; + END_FOR; + FOR #nIdx2 := 1 TO "cJam0101_4" -1 DO + "DB_JamArea1102".stJam1102_4.arCarrier[#nIdx2].nBarcode := 20000015; + "DB_JamArea1102".stJam1102_4.arCarrier[#nIdx2].bStatus.%X0 := true; + END_FOR; + + + + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + 6 + + + + + + + + + + true + + + + + + + + + + + + + + + + + + + + + + + 1015 + + + + + + + + + true + + + + + + + + + + + + + + + + + + + + + + + + + true + + + + + + + + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + 7 + + + + + + + + + + true + + + + + + + + + + + + + + + + + + + + + + + 1015 + + + + + + + + + true + + + + + + + + + + + + + + + + + + + + + + + + + true + + + + + + + + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + 59 + + + + + + + + + + true + + + + + + + + + + + + + + + + + + + + + + + 1015 + + + + + + + + + true + + + + + + + + + + + + + + + + + + + + + + + + + true + + + + + + + + + + + FOR #nIdx2 := 1 TO "cJam0103_2" -1 DO + + + + + "DB_JamArea0103".stJam0103_2.arCarrier[#nIdx2].nBarcode := 20000015; + + + + + "DB_JamArea0103".stJam0103_2.arCarrier[#nIdx2].bStatus.%X0 := true; + + + + + END_FOR; + + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + + true + + + + + + + + + + + + + + + + + + + + + + + 1015 + + + + + + + + + true + + + + + + + + + + + + + + + + + + + + + + + + + true + + + + + + + + + + + FOR #nIdx2 := 1 TO "cJam0104_2" -1 DO + + + + + "DB_JamArea0104".stJam0104_2.arCarrier[#nIdx2].nBarcode := 20000015; + + + + + "DB_JamArea0104".stJam0104_2.arCarrier[#nIdx2].bStatus.%X0 := true; + + + + + END_FOR; + + + + + + + + + FOR #nIdx2 := 1 TO "cJam0105_1" - 1 DO + + + + + "DB_JamArea0105".stJam0105_1.arCarrier[#nIdx2].nBarcode := 20000015; + + + + + "DB_JamArea0105".stJam0105_1.arCarrier[#nIdx2].bStatus.%X0 := true; + + + + + END_FOR; + + + + + + + + + FOR #nIdx2 := 1 TO "cJam0106_1" - 1 DO + + + + + "DB_JamArea0106".stJam0106_1.arCarrier[#nIdx2].nBarcode := 20000015; + + + + + "DB_JamArea0106".stJam0106_1.arCarrier[#nIdx2].bStatus.%X0 := true; + + + + + END_FOR; + + + + + FOR #nIdx2 := 1 TO "cJam0106_2" -1 DO + + + + + "DB_JamArea0106".stJam0106_2.arCarrier[#nIdx2].nBarcode := 20000015; + + + + + "DB_JamArea0106".stJam0106_2.arCarrier[#nIdx2].bStatus.%X0 := true; + + + + + END_FOR; + + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + 12 + + + + + + + + + + true + + + + + + + + + + + + + + + + + + + + + + + 1015 + + + + + + + + + true + + + + + + + + + + + + + + + + + + + + + + + + + true + + + + + + + + + + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + + true + + + + + + + + + + + + + + + + + + + + + + + 1015 + + + + + + + + + true + + + + + + + + + + + + + + + + + + + + + + + + + true + + + + + + + + + + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + 37 + + + + + + + + + + true + + + + + + + + + + + + + + + + + + + + + + + 1015 + + + + + + + + + true + + + + + + + + + + + + + + + + + + + + + + + + + true + + + + + + + + + + + + + + + + + + + + + + true + + + + + + + + + + + FALSE + + + + + + + + + Jam leeren + + + + + + + + true + + + + + + + + + + + + HyperJam + + + + FOR #nIdxHyper := 1 TO "cHyperJam" DO + + + + + "DB_HyperJam".stHyperJam.arCarrier[#nIdxHyper].nBarcode := 0; + + + + + "DB_HyperJam".stHyperJam.arCarrier[#nIdxHyper].bStatus.%X0 := false; + + + + + END_FOR; + + + + + + + + + Conveyor + + + + FOR #nIdx2 := 1 TO "cJamConv1_1" DO + + + + + "DB_JamAreaConv1".stJamConv1_1.arCarrier[#nIdx2].nBarcode := 0; + + + + + "DB_JamAreaConv1".stJamConv1_1.arCarrier[#nIdx2].bStatus.%X0 := false; + + + + + END_FOR; + + + + + FOR #nIdx2 := 1 TO "cJamConv1_2" DO + + + + + "DB_JamAreaConv1".stJamConv1_2.arCarrier[#nIdx2].nBarcode := 0; + + + + + "DB_JamAreaConv1".stJamConv1_2.arCarrier[#nIdx2].bStatus.%X0 := false; + + + + + END_FOR; + + + + + FOR #nIdx2 := 1 TO "cJamConv1_3" DO + + + + + "DB_JamAreaConv1".stJamConv1_3.arCarrier[#nIdx2].nBarcode := 0; + + + + + "DB_JamAreaConv1".stJamConv1_3.arCarrier[#nIdx2].bStatus.%X0 := false; + + + + + END_FOR; + + + + + FOR #nIdx2 := 1 TO "cJamConv1_4" DO + + + + + "DB_JamAreaConv1".stJamConv1_4.arCarrier[#nIdx2].nBarcode := 0; + + + + + "DB_JamAreaConv1".stJamConv1_4.arCarrier[#nIdx2].bStatus.%X0 := false; + + + + + END_FOR; + + + + + FOR #nIdx2 := 1 TO "cJamConv2" DO + + + + + "DB_JamAreaConv2".stJamConv2.arCarrier[#nIdx2].nBarcode := 0; + + + + + "DB_JamAreaConv2".stJamConv2.arCarrier[#nIdx2].bStatus.%X0 := false; + + + + + END_FOR; + + + + + + + + + Block 1 + + + + FOR #nIdx2 := 1 TO "cJam0100_1" DO + + + + + "DB_JamArea0101".stJam0101_1.arCarrier[#nIdx2].nBarcode := 0; + + + + + "DB_JamArea0101".stJam0101_1.arCarrier[#nIdx2].bStatus.%X0 := false; + + + + + END_FOR; + + + + + FOR #nIdx2 := 1 TO "cJam0100_2" DO + + + + + "DB_JamArea0101".stJam0101_2.arCarrier[#nIdx2].nBarcode := 0; + + + + + "DB_JamArea0101".stJam0101_2.arCarrier[#nIdx2].bStatus.%X0 := false; + + + + + END_FOR; + + + + + FOR #nIdx2 := 1 TO "cJam0101_1" DO + + + + + "DB_JamArea0101".stJam0101_1.arCarrier[#nIdx2].nBarcode := 0; + + + + + "DB_JamArea0101".stJam0101_1.arCarrier[#nIdx2].bStatus.%X0 := false; + + + + + END_FOR; + + + + + FOR #nIdx2 := 1 TO "cJam0101_2" DO + + + + + "DB_JamArea0102".stJam0102_2.arCarrier[#nIdx2].nBarcode := 0; + + + + + "DB_JamArea0102".stJam0102_2.arCarrier[#nIdx2].bStatus.%X0 := false; + + + + + END_FOR; + + + + + + + FOR #nIdx2 := 1 TO "cJam0102_1" DO + + + + + "DB_JamArea0102".stJam0102_1.arCarrier[#nIdx2].nBarcode := 0; + + + + + "DB_JamArea0102".stJam0102_1.arCarrier[#nIdx2].bStatus.%X0 := false; + + + + + END_FOR; + + + + + FOR #nIdx2 := 1 TO "cJam0103_1" DO + + + + + "DB_JamArea0103".stJam0103_1.arCarrier[#nIdx2].nBarcode := 0; + + + + + "DB_JamArea0103".stJam0103_1.arCarrier[#nIdx2].bStatus.%X0 := false; + + + + + END_FOR; + + + + + FOR #nIdx2 := 1 TO "cJam0103_2" DO + + + + + "DB_JamArea0103".stJam0103_2.arCarrier[#nIdx2].nBarcode := 0; + + + + + "DB_JamArea0103".stJam0103_2.arCarrier[#nIdx2].bStatus.%X0 := false; + + + + + END_FOR; + + + + + FOR #nIdx2 := 1 TO "cJam0104_1" DO + + + + + "DB_JamArea0104".stJam0104_1.arCarrier[#nIdx2].nBarcode := 0; + + + + + "DB_JamArea0104".stJam0104_1.arCarrier[#nIdx2].bStatus.%X0 := false; + + + + + END_FOR; + + + + + FOR #nIdx2 := 1 TO "cJam0104_2" DO + + + + + "DB_JamArea0104".stJam0104_2.arCarrier[#nIdx2].nBarcode := 0; + + + + + "DB_JamArea0104".stJam0104_2.arCarrier[#nIdx2].bStatus.%X0 := false; + + + + + END_FOR; + + + + + + + FOR #nIdx2 := 1 TO "cJam0105_1" DO + + + + + "DB_JamArea0105".stJam0105_1.arCarrier[#nIdx2].nBarcode := 0; + + + + + "DB_JamArea0105".stJam0105_1.arCarrier[#nIdx2].bStatus.%X0 := false; + + + + + END_FOR; + + + + + + + FOR #nIdx2 := 1 TO "cJam0106_1" DO + + + + + "DB_JamArea0106".stJam0106_1.arCarrier[#nIdx2].nBarcode := 0; + + + + + "DB_JamArea0106".stJam0106_1.arCarrier[#nIdx2].bStatus.%X0 := false; + + + + + END_FOR; + + + + + FOR #nIdx2 := 1 TO "cJam0106_2" DO + + + + + "DB_JamArea0106".stJam0106_2.arCarrier[#nIdx2].nBarcode := 0; + + + + + "DB_JamArea0106".stJam0106_2.arCarrier[#nIdx2].bStatus.%X0 := false; + + + + + END_FOR; + + + + + FOR #nIdx2 := 1 TO "cJam0107_1" DO + + + + + "DB_JamArea0107".stJam0107_1.arCarrier[#nIdx2].nBarcode := 0; + + + + + "DB_JamArea0107".stJam0107_1.arCarrier[#nIdx2].bStatus.%X0 := false; + + + + + END_FOR; + + + + + + + FOR #nIdx2 := 1 TO "cJam0108_1" DO + + + + + "DB_JamArea0108".stJam0108_1.arCarrier[#nIdx2].nBarcode := 0; + + + + + "DB_JamArea0108".stJam0108_1.arCarrier[#nIdx2].bStatus.%X0 := false; + + + + + END_FOR; + + + + + + + + + + + + + + + + + + + true + + + + + + + + + + + FALSE + + + + + + + SCL + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + cs-CZ + + + + + + de-DE + TEST-SCHLEIFEN + + + + + en-US + + + + + + + + + + + + + + + + + + + + + + + + 0 + + + + + + + + + + + + true + + + + + + + + + + + + + + + true + + + + + + + + + + + + + + + + + true + + + + + + + + + + + + + + + + + + + + + + + + + 0 + + + + + + + + + + + + + + true + + + + + + + + + + + + + + + + + true + + + + + + + + + + + + + + + + + true + + + + + + + + + + + + + + + + + + true + + + + + + + + + + + + true + + + + + + + + + + + + true + + + + + + + + + + SCL + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + cs-CZ + + + + + + de-DE + Storage Füllstände + + + + + en-US + + + + + + + + + + + + + + + + + + + + + + SCL + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + cs-CZ + + + + + + de-DE + Jam Füllstände + + + + + en-US + + + + + + + + + + + + + + + true + + + + + + + + + + + + + true + + + + + + + + + SCL + + + + + + + cs-CZ + + + + + + de-DE + Visu + + + + + en-US + + + + + + + + + + cs-CZ + + + + + + de-DE + Visu + + + + + en-US + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + + + + + + + + + + + + + + + + + + + + + + + 1000.0 + + + + + + + + + + in Millisekunden anzeigen + + + + "IBN".TRO112_Ok := "DB_MachineGlobal".stStateMain.xRunning AND "SF0001"; + + + SCL + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + cs-CZ + + + + + + de-DE + Zykluszeit genau ermitteln ENDE + + + + + en-US + + + + + + + + + + + + + + true + + + + + + + + + + + + + + true + + + + + + + + UH01 weiterreichen + + + + + + true + + + + + + + + + + + + true + + + + + + + + + + + an UH02 weitergeben + + + + + + + true + + + + + + + + + + + + true + + + + + + + + + + + an UH03 weitergeben + + + + + + + true + + + + + + + + + + + + true + + + + + + + + + + + an UH04 weitergeben + + + + + + + true + + + + + + + + + + + + true + + + + + + + + + + + an UH05 weitergeben + + + + + + + UH02 empfangen / weiterreichen + + + + + + true + + + + + + + + + + + + true + + + + + + + selber verwenden + + + + + + + true + + + + + + + + + + true + + + + + + + an UH02 weitergeben + + + + + + + true + + + + + + + + + + true + + + + + + + an UH03 weitergeben + + + + + + + true + + + + + + + + + + true + + + + + + + an UH04 weitergeben + + + + + + + true + + + + + + + + + + true + + + + + + + an UH05 weitergeben + + + + + + + UH03 empfangen / weiterreichen + + + + + + true + + + + + + + + + + + + true + + + + + + + selber verwenden + + + + + + + true + + + + + + + + + + true + + + + + + + an UH02 weitergeben + + + + + + + true + + + + + + + + + + true + + + + + + + an UH03 weitergeben + + + + + + + true + + + + + + + + + + true + + + + + + + an UH04 weitergeben + + + + + + + true + + + + + + + + + + true + + + + + + + an UH05 weitergeben + + + + + + + UH04 empfangen / weiterreichen + + + + + + true + + + + + + + + + + + + true + + + + + + + selber verwenden + + + + + + + true + + + + + + + + + + true + + + + + + + an UH02 weitergeben + + + + + + + true + + + + + + + + + + true + + + + + + + an UH03 weitergeben + + + + + + + true + + + + + + + + + + true + + + + + + + an UH04 weitergeben + + + + + + + true + + + + + + + + + + true + + + + + + + an UH05 weitergeben + + + + + + + UH05 empfangen / weiterreichen + + + + + + true + + + + + + + + + + + + true + + + + + + + selber verwenden + + + + + + + true + + + + + + + + + + true + + + + + + + an UH02 weitergeben + + + + + + + true + + + + + + + + + + true + + + + + + + an UH03 weitergeben + + + + + + + true + + + + + + + + + + true + + + + + + + an UH04 weitergeben + + + + + + + true + + + + + + + + + + true + + + + + + + an UH05 weitergeben + + + + + + SCL + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + cs-CZ + + + + + + de-DE + IO Device Datenübergabe + + + + + en-US + + + + + + + + + + + + + + + + + + + + + + SCL + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + cs-CZ + + + + + + de-DE + PROFINET DEVICE STATE + + + + + en-US + + + + + + + + + + + + + + + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ' ' + + + + + + + + + + + + + + + + + + + + + + + + + + "MA0057" := "IBN".MA0057; + + + + + + + + "MA0140" := "IBN".MA0140; + + + + "MA0141" := "IBN".MA0141; + + + + "MA0142" := "IBN".MA0142; + + + + "MA0143" := "IBN".MA0143; + + + + "MA0144" := "IBN".MA0144; + + + + "MA0145" := "IBN".MA0145; + + + + "MA0146" := "IBN".MA0146; + + + + "MA0147" := "IBN".MA0147; + + + + "MA0150" := "IBN".MA0150; + + + + "MA0151" := "IBN".MA0151; + + + + + + + + "MA0152" := "IBN".MA0152; + + + + "MA0153" := "IBN".MA0153; + + + + "MA0154" := "IBN".MA0154; + + + + "MA0155" := "IBN".MA0155; + + + + Ausgänge + + + + "MB3003" := "IBN".MB3003; + + + + "MB3010" := "IBN".MB3010; + + + + "MB3013" := "IBN".MB3013; + + + + "MB3015" := "IBN".MB3015; + + + + "MB3020" := "IBN".MB3020; + + + + "MB3024" := "IBN".MB3024; + + + + "MB3025" := "IBN".MB3025; + + + + "MB3060" := "IBN".MB3060; + + + + "MB3063" := "IBN".MB3063; + + + + "MB3073" := "IBN".MB3073; + + + + "MB3076" := "IBN".MB3076; + + + + "MB3080" := "IBN".MB3080; + + + + "MB3120" := "IBN".MB3120; + + + + "MB3125" := "IBN".MB3125; + + + + "MB3130" := "IBN".MB3130; + + + + "MB3135" := "IBN".MB3135; + + + + "MB3242" := "IBN".MB3242; + + + + "MB3246" := "IBN".MB3246; + + + + "MB3250" := "IBN".MB3250; + + + + "MB3251" := "IBN".MB3251; + + + + "MB3252" := "IBN".MB3252; + + + + "MB3253" := "IBN".MB3253; + + + + "MB3254" := "IBN".MB3254; + + + + "MB3257" := "IBN".MB3257; + + + + "MB3260" := "IBN".MB3260; + + + + "MB3261" := "IBN".MB3261; + + + + "MB3262" := "IBN".MB3262; + + + + "MB3263" := "IBN".MB3263; + + + + "MB3264" := "IBN".MB3264; + + + + "MB3271" := "IBN".MB3271; + + + + "MB3273" := "IBN".MB3273; + + + + "MB3280" := "IBN".MB3280; + + + + "MB3283" := "IBN".MB3283; + + + + "MB3285" := "IBN".MB3285; + + + + "MB3290" := "IBN".MB3290; + + + + "MB3295" := "IBN".MB3295; + + + + "MB3300" := "IBN".MB3300; + + + + "MB3304" := "IBN".MB3304; + + + + "MB3306" := "IBN".MB3306; + + + + "MB3310" := "IBN".MB3310; + + + + "MB3311" := "IBN".MB3311; + + + + "MB3312" := "IBN".MB3312; + + + + "MB3313" := "IBN".MB3313; + + + + "MB3314" := "IBN".MB3314; + + + + "MB3315" := "IBN".MB3315; + + + + "MB3320" := "IBN".MB3320; + + + + "MB3321" := "IBN".MB3321; + + + + "MB3322" := "IBN".MB3322; + + + + "MB3323" := "IBN".MB3323; + + + + "MB3324" := "IBN".MB3324; + + + + "MB3325" := "IBN".MB3325; + + + + "MB3330" := "IBN".MB3330; + + + + "MB3332" := "IBN".MB3332; + + + + "MB3335" := "IBN".MB3335; + + + + "MB3337" := "IBN".MB3337; + + + + "MB3340" := "IBN".MB3340; + + + + ***************************** +FÜR PERFORMANCE MESSUNG: +20.01. +1 - 106.1 +2 - 114.1 +21.01. +1 - 111.1 + + + + + + + + true + + + + + + + + + 104 + + + + + + + Sep-Nr. für Auflistung der Messungen (TRO104 -> gibt es als Konstante nicht + + + + + + + + + + true + + + + + + + + + + + + + + ReleasedEdge des jeweiligen Seps + + + + + + + + + T#86400s + + + + + + + + + + + 398 + + + + + + + + + + gewünschte zu ermittelnde Anzahl + + + + + + + true + + + + + + + + + + + + + + "cSep106.1", //Sep-Nr. für Auflistung der Messungen + + + + + + + + + + true + + + + + + + + + + + + + 2500 + + + + + + + + + true + + + + + + + + + + + + + + ReleasedEdge des jeweiligen Seps + + + + + + + + + T#86400s + + + + + + + + + + + 398 + + + + + + + + + + gewünschte zu ermittelnde Anzahl + + + + + + + true + + + + + + + + + + + + + + + Sep-Nr. für Auflistung der Messungen + + + + + + + + + + + true + + + + + + + + + + + + + 2500 + + + + + + + + + true + + + + + + + + + + + + + + ReleasedEdge des jeweiligen Seps + + + + + + + + + + T#86400s + + + + + + + + + + + 398 + + + + + + + + + + gewünschte zu ermittelnde Anzahl + + + + ////////////////////////////////////////////////////////////////////////////// + + + + + + + true + + + + + + + + + 109 + + + + + + + Sep-Nr. für Auflistung der Messungen (TRO104 -> gibt es als Konstante nicht + + + + + + + + + + true + + + + + + + + + + + + + + ReleasedEdge des jeweiligen Seps + + + + + + + + + T#86400s + + + + + + + + + + + 398 + + + + + + + + + + + + + true + + + + + + + + + + + + + + "cSep106.1", //Sep-Nr. für Auflistung der Messungen + + + + + + + + + + true + + + + + + + + + + + + + 2500 + + + + + + + + + true + + + + + + + + + + + + + + ReleasedEdge des jeweiligen Seps + + + + + + + + + T#86400s + + + + + + + + + + + 398 + + + + + + + + + + ***************************** + + + + + + + true + + + + + + + + + + + + + + + Sep-Nr. für Auflistung der Messungen + + + + + + + + + + + true + + + + + + + + + + + + + 2500 + + + + + + + + + true + + + + + + + + + + + + + + ReleasedEdge des jeweiligen Seps + + + + + + + + + + T#86400s + + + + + + + + + + + + + 398 + + + + + + + + + + gewünschte zu ermittelnde Anzahl + + + + + + + true + + + + + + + + + + + + + + + Sep-Nr. für Auflistung der Messungen + + + + + + + + + + + true + + + + + + + + + + + + + 2500 + + + + + + + + + true + + + + + + + + + + + + + + ReleasedEdge des jeweiligen Seps + + + + + + + + + + T#86400s + + + + + + + + + + + + + 398 + + + + + + + + + + gewünschte zu ermittelnde Anzahl + + + + + + + true + + + + + + + + + + + + + + + Sep-Nr. für Auflistung der Messungen + + + + + + + + + + + true + + + + + + + + + + + + + 2600 + + + + + + + + + true + + + + + + + + + + + + + + ReleasedEdge des jeweiligen Seps + + + + + + + + + + T#86400s + + + + + + + + + + + + + 498 + + + + + + + + + + SCL + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + cs-CZ + + + + + + de-DE + IBN Test + + + + + en-US + + + + + + + + + + + + cs-CZ + "Main Program Sweep (Cycle)" + + + + + de-DE + "Main Program Sweep (Cycle)" + + + + + en-US + "Main Program Sweep (Cycle)" + + + + + + + \ No newline at end of file diff --git a/=A01+UH01-KF00/Programmbausteine/PROFINET/DB_PROFINET_DEVICE_STATES.xml b/=A01+UH01-KF00/Programmbausteine/PROFINET/DB_PROFINET_DEVICE_STATES.xml new file mode 100644 index 0000000..1fcfeaa --- /dev/null +++ b/=A01+UH01-KF00/Programmbausteine/PROFINET/DB_PROFINET_DEVICE_STATES.xml @@ -0,0 +1,66 @@ + + + + + + +
+ + +
+
+ Optimized + 100 + DB_PROFINET_DEVICE_STATES + + 62 + DB +
+ + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + +
+
\ No newline at end of file diff --git a/=A01+UH01-KF00/Programmbausteine/PROFINET/FC_GET_PROFINET_DEVICE_STATES.scl b/=A01+UH01-KF00/Programmbausteine/PROFINET/FC_GET_PROFINET_DEVICE_STATES.scl new file mode 100644 index 0000000..e1fcf14 --- /dev/null +++ b/=A01+UH01-KF00/Programmbausteine/PROFINET/FC_GET_PROFINET_DEVICE_STATES.scl @@ -0,0 +1,27 @@ +FUNCTION "FC_GET_PROFINET_DEVICE_STATES" : Void +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + VAR_TEMP + nRetValExist : Int; + nRetValFaulty : Int; + END_VAR + + +BEGIN + REGION Device States + + REGION Get MODE Exist + #nRetValExist := DeviceStates(LADDR := "Local~PROFINET_IO-System", // IO-System + MODE := 4, // vorhanden / nicht vorhanden + STATE := "DB_PROFINET_DEVICE_STATES".arPN_DEV_STATE_EXIST); // Status + END_REGION + + REGION Get MODE Fault + #nRetValFaulty := DeviceStates(LADDR := "Local~PROFINET_IO-System", // IO-System + MODE := 2, // Störung + STATE := "DB_PROFINET_DEVICE_STATES".arPN_DEV_STATE_FAULTY); // Status + END_REGION + + END_REGION +END_FUNCTION + diff --git a/=A01+UH01-KF00/Programmbausteine/Programming error.scl b/=A01+UH01-KF00/Programmbausteine/Programming error.scl new file mode 100644 index 0000000..0b5d1ec --- /dev/null +++ b/=A01+UH01-KF00/Programmbausteine/Programming error.scl @@ -0,0 +1,32 @@ +ORGANIZATION_BLOCK "Programming error" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +BEGIN + "DB_Error".BlockNr := #BlockNr; + "DB_Error".Reaction := #Reaction; + "DB_Error".Fault_ID := #Fault_ID; + "DB_Error".BlockType := #BlockType; + "DB_Error".Area := #Area; + "DB_Error".DBNr := #DBNr; + "DB_Error".Csg_OBNr := #Csg_OBNr; + "DB_Error".Csg_Prio := #Csg_Prio; + "DB_Error".Width := #Width; + "DB_Error".xErrorActive := TRUE; //Wird am Anfang von OB1 wieder auf FALSE gesetzt + CASE #BlockType OF + 16#01: + //Fehler in OB + "DB_Error".sErrorText := CONCAT_STRING(IN1 := 'Programming Error in OB ', IN2 := UINT_TO_STRING(#BlockNr)); + 16#02: + //Fehler in FC + "DB_Error".sErrorText := CONCAT_STRING(IN1 := 'Programming Error in FC ', IN2 := UINT_TO_STRING(#BlockNr)); + 16#03: + //Fehler in FB + "DB_Error".sErrorText := CONCAT_STRING(IN1 := 'Programming Error in FB ', IN2 := UINT_TO_STRING(#BlockNr)); + 16#06: + //Fehler in DB + "DB_Error".sErrorText := CONCAT_STRING(IN1 := 'Programming Error in DB ', IN2 := UINT_TO_STRING(#BlockNr)); + END_CASE; + +END_ORGANIZATION_BLOCK + diff --git a/=A01+UH01-KF00/Programmbausteine/SCADA/DB_Status.xml b/=A01+UH01-KF00/Programmbausteine/SCADA/DB_Status.xml new file mode 100644 index 0000000..983a5b7 --- /dev/null +++ b/=A01+UH01-KF00/Programmbausteine/SCADA/DB_Status.xml @@ -0,0 +1,81 @@ + + + + + + +
+ + + false + + + Fortna specific system status (check documentation for value descriptions) + + +
+ + + Fortna specific system status (check documentation for value descriptions) + + +
+
+
+
+
+ Optimized + 100 + DB_Status + + 66 + DB +
+ + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + +
+
\ No newline at end of file diff --git a/=A01+UH01-KF00/Programmbausteine/SCADA/FB-OPC_UA_System-Stat.scl b/=A01+UH01-KF00/Programmbausteine/SCADA/FB-OPC_UA_System-Stat.scl new file mode 100644 index 0000000..4951105 --- /dev/null +++ b/=A01+UH01-KF00/Programmbausteine/SCADA/FB-OPC_UA_System-Stat.scl @@ -0,0 +1,72 @@ +FUNCTION_BLOCK "FB-OPC_UA_System-Stat" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + VAR_INPUT + nInSystemStat : Int; // Main State + xInFireAlarm : Bool; // Feueralarm + xInSafetyStop : Bool; // Not-Halt + xInError : Bool; // Störung + xInCommunicationError : Bool; // Kommunikationsstörung + END_VAR + + VAR_OUTPUT + nOutScadaStatus : Int; + END_VAR + + +BEGIN + //Priority Chain + //Emergency + //Fault/Restore + //Manual + //Energy Saving + //Cleaning / Warning + //Running/Stopped + + IF #xInFireAlarm THEN + #nOutScadaStatus := 1; + ELSIF #xInSafetyStop THEN + #nOutScadaStatus := 3; + ELSIF #xInError THEN + #nOutScadaStatus := 5; + ELSIF #xInCommunicationError THEN + #nOutScadaStatus := 23; + ELSIF #nInSystemStat = "E_DeviceState.eExecute" THEN + #nOutScadaStatus := 19; + ELSIF (#nInSystemStat = "E_DeviceState.eStopped") OR (#nInSystemStat = "E_DeviceState.eIdle") THEN + #nOutScadaStatus := 17; + END_IF; + + (* CASE #nInSystemStat OF + + "E_DeviceState.eStopped": + #nOutScadaStatus := 17; + + "E_DeviceState.eIdle": + #nOutScadaStatus := 17; + + "E_DeviceState.eExecute": + #nOutScadaStatus := 19; + + "E_DeviceState.eHolding": + #nOutScadaStatus := 3; + + "E_DeviceState.eHeld": + #nOutScadaStatus := 13; + + "E_DeviceState.eSuspended": + #nOutScadaStatus := 13; + + "E_DeviceState.eStarting", + 120, + "E_DeviceState.eUnholding", + "E_DeviceState.eUnsuspending", + "E_DeviceState.eStopping": + #nOutScadaStatus := 7; + + ELSE + #nOutScadaStatus := 5; + + END_CASE; *) +END_FUNCTION_BLOCK + diff --git a/=A01+UH01-KF00/Programmbausteine/SCADA/FB-OPC_UA_System-Stat_DB.xml b/=A01+UH01-KF00/Programmbausteine/SCADA/FB-OPC_UA_System-Stat_DB.xml new file mode 100644 index 0000000..42a41a7 --- /dev/null +++ b/=A01+UH01-KF00/Programmbausteine/SCADA/FB-OPC_UA_System-Stat_DB.xml @@ -0,0 +1,74 @@ + + + + + + FB-OPC_UA_System-Stat + FB + +
+ + + + + +
+
+ +
+
+
+ + FB-OPC_UA_System-Stat_DB + + 77 + DB + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + \ No newline at end of file diff --git a/=A01+UH01-KF00/Programmbausteine/SCADA/OPC_UA/1_ServerDiagnostics/Instances/InstReadServerDiagnostics.xml b/=A01+UH01-KF00/Programmbausteine/SCADA/OPC_UA/1_ServerDiagnostics/Instances/InstReadServerDiagnostics.xml new file mode 100644 index 0000000..7e6cf00 --- /dev/null +++ b/=A01+UH01-KF00/Programmbausteine/SCADA/OPC_UA/1_ServerDiagnostics/Instances/InstReadServerDiagnostics.xml @@ -0,0 +1,200 @@ + + + + + + ReadServerDiagnostics + FB + +
+ + + false + false + false + + +
+
+ + + false + false + false + + + + + false + false + false + + + + + false + false + false + + + + + false + false + false + + + + + false + false + false + + + + + false + false + false + + +
+
+
+ + + false + false + false + + + + + false + false + false + + + + + false + false + false + + + + + false + false + false + + + + + false + false + false + + + + + false + false + false + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + false + false + false + + +
+ + InstReadServerDiagnostics + + 78 + DB + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + \ No newline at end of file diff --git a/=A01+UH01-KF00/Programmbausteine/SCADA/OPC_UA/1_ServerDiagnostics/ReadServerDiagnostics.scl b/=A01+UH01-KF00/Programmbausteine/SCADA/OPC_UA/1_ServerDiagnostics/ReadServerDiagnostics.scl new file mode 100644 index 0000000..0b4234a --- /dev/null +++ b/=A01+UH01-KF00/Programmbausteine/SCADA/OPC_UA/1_ServerDiagnostics/ReadServerDiagnostics.scl @@ -0,0 +1,170 @@ +FUNCTION_BLOCK "ReadServerDiagnostics" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + VAR_INPUT + read { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : Bool; + END_VAR + + VAR_OUTPUT + done { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : Bool; + busy { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : Bool; + error { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : Bool; + status { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : DWord; + server { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : "typeServer"; + simaticDevice { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : "typeSimaticDevice"; + END_VAR + + VAR + statConnectionHdl { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : DWord := -42; + statNodeCount { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : UInt := #NODES_COUNT; + statNodeIds {InstructionName := 'OPC_UA_NodeId'; LibVersion := '1.0'; ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'; S7_SetPoint := 'False'} : Array[0..#NODES_UPPERBOUND] of OPC_UA_NodeId := [((), WSTRING#'2256', ()), ((), WSTRING#'2255', ()), ((), WSTRING#'2275', ()), ((), WSTRING#'3707', ()), ((), WSTRING#'3708', ()), ((), WSTRING#'2290', ()), ((), WSTRING#'2254', ()), (3, WSTRING#'DeviceManual', 1), (3, WSTRING#'DeviceRevision', 1), (3, WSTRING#'EngineeringRevision', 1), (3, WSTRING#'HardwareRevision', 1), (3, WSTRING#'Manufacturer', 1), (3, WSTRING#'Model', 1), (3, WSTRING#'OperatingMode', 1), (3, WSTRING#'OrderNumber', 1), (3, WSTRING#'RevisionCounter', 1), (3, WSTRING#'SerialNumber', 1), (3, WSTRING#'SoftwareRevision', 1), ((), WSTRING#'11702', ()), ((), WSTRING#'2735', ()), ((), WSTRING#'12911', ()), ((), WSTRING#'2737', ()), ((), WSTRING#'2736', ()), ((), WSTRING#'11703', ()), ((), WSTRING#'2272', ()), ((), WSTRING#'11714', ()), ((), WSTRING#'11710', ()), ((), WSTRING#'11709', ()), ((), WSTRING#'11705', ()), ((), WSTRING#'11711', ()), ((), WSTRING#'11712', ()), ((), WSTRING#'11707', ()), ((), WSTRING#'2269', ())]; + statNodeStatusList { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : Array[0..#NODES_UPPERBOUND] of DWord; + statTimeStamps { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : Array[0..#NODES_UPPERBOUND] of LDT; + statVariable { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : Struct + ServerStatus { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'; S7_SetPoint := 'False'} : "typeServerStatus"; + NamespaceArray { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : Array[0.."NAMESPACEARRAY_UPPERBOUND"] of String; + ServerDiagnosticsSummary { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'; S7_SetPoint := 'False'} : "typeServerDiagnosticsSummary"; + SessionDiagnosticsArray { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'; S7_SetPoint := 'False'} : Array[0.."SESSIONS_UPPERBOUND"] of "typeSessionDiagnostics"; + SessionSecurityDiagnosticsArray { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'; S7_SetPoint := 'False'} : Array[0.."SESSIONS_UPPERBOUND"] of "typeSessionSecurityDiagnosticsData"; + SubscriptionDiagnosticsArray { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'; S7_SetPoint := 'False'} : Array[0.."SUBSCRIPTIONS_UPPERBOUND"] of "typeSubscriptionDiagnostics"; + ServerArray { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : Array[0.."SERVERARRAY_UPPERBOUND"] of String; + DeviceManual { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : String; + DeviceRevision { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : String; + EngineeringRevision { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : String; + HardwareRevision { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : String; + Manufacturer { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'; S7_SetPoint := 'False'} : "typeLocalizedText" := (16#0002, (), ()); + Model { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'; S7_SetPoint := 'False'} : "typeLocalizedText" := (16#0002, (), ()); + OperatingMode { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : DInt; + OrderNumber { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : String; + RevisionCounter { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : DInt; + SerialNumber { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : String; + SoftwareRevision { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : String; + MaxArrayLength { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : UDInt; + MaxBrowseContinuationPoints { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : UInt; + MaxByteStringLength { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : UDInt; + MaxHistoryContinuationPoints { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : UInt; + MaxQueryContinuationPoints { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : UInt; + MaxStringLength { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : UDInt; + MinSupportedSampleRate { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : LReal; + MaxMonitoredItemsPerCall { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : UDInt; + MaxNodesPerBrowse { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : UDInt; + MaxNodesPerMethodCall { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : UDInt; + MaxNodesPerRead { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : UDInt; + MaxNodesPerRegisterNodes { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : UDInt; + MaxNodesPerTranslateBrowsePathsToNodeIds { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : UDInt; + MaxNodesPerWrite { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : UDInt; + ServerProfileArray { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : Array[0.."SERVERPROFILES_UPPERBOUND"] of WString; + END_STRUCT; + instOpcUaReadList {InstructionName := 'OPC_UA_ReadList'; LibVersion := '1.0'; ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'; S7_SetPoint := 'False'} : OPC_UA_ReadList; + END_VAR + + VAR_TEMP + tempDone : Bool; + tempBusy : Bool; + tempError : Bool; + tempStatus : DWord; + END_VAR + + VAR CONSTANT + NODES_UPPERBOUND : DInt := 32; + NODES_COUNT : UInt := 33; + END_VAR + + +BEGIN + REGION Description header + //================================================================================== + // SIEMENS / (C) Copyright 2023 + //---------------------------------------------------------------------------------- + // Title: ReadServerDiagnostics + // Comment/Function: reads out the Server node data of the internal OPC UA server + // Library/Family: + // Author: SIEMENS SIMATIC Systems Support (SUP) + // Target System: + // Engineering: TIA Portal (>= V18) + // Restrictions: + // Requirements: FW 3.0 (1500) + //---------------------------------------------------------------------------------- + // Change log table: + // Version | Date | Expert in charge | Changes applied + //-------------|------------|------------------|------------------------------------ + // 001.000.000 | 2023-02-13 | SUP SPH | First released version + //================================================================================== + END_REGION Description header + + REGION OPC_UA_ReadList instance + #instOpcUaReadList(REQ := #read, + ConnectionHdl := #statConnectionHdl, + NodeHdlCount := #statNodeCount, + NodeHdls := #statNodeIds, + Done => #tempDone, + Busy => #tempBusy, + Error => #tempError, + Status => #tempStatus, + NodeStatusList := #statNodeStatusList, + TimeStamps := #statTimeStamps, + Variable := #statVariable); + END_REGION OPC_UA_ReadList instance + + REGION Write results + IF #tempDone THEN + + //ServerStatus + #server.serverStatus := #statVariable.ServerStatus; + + //NamespaceArray + #server.namespaceArray := #statVariable.NamespaceArray; + + //ServerArray + #server.serverArray := #statVariable.ServerArray; + + //Diagnostics + #server.serverDiagnostics.serverDiagnosticsSummary := #statVariable.ServerDiagnosticsSummary; + #server.serverDiagnostics.sessionDiagnosticsArray := #statVariable.SessionDiagnosticsArray; + #server.serverDiagnostics.sessionSecurityDiagnosticsArray := #statVariable.SessionSecurityDiagnosticsArray; + #server.serverDiagnostics.subscriptionDiagnosticsArray := #statVariable.SubscriptionDiagnosticsArray; + + //ServerCapabilities: + #server.serverCapabilities.MaxArrayLength := #statVariable.MaxArrayLength; + #server.serverCapabilities.MaxBrowseContinuationPoints := #statVariable.MaxBrowseContinuationPoints; + #server.serverCapabilities.MaxByteStringLength := #statVariable.MaxByteStringLength; + #server.serverCapabilities.MaxHistoryContinuationPoints := #statVariable.MaxHistoryContinuationPoints; + #server.serverCapabilities.MaxQueryContinuationPoints := #statVariable.MaxQueryContinuationPoints; + #server.serverCapabilities.MaxStringLength := #statVariable.MaxStringLength; + #server.serverCapabilities.MinSupportedSampleRate := #statVariable.MinSupportedSampleRate; + #server.serverCapabilities.OperationLimits.MaxMonitoredItemsPerCall := #statVariable.MaxMonitoredItemsPerCall; + #server.serverCapabilities.OperationLimits.MaxNodesPerBrowse := #statVariable.MaxNodesPerBrowse; + #server.serverCapabilities.OperationLimits.MaxNodesPerMethodCall := #statVariable.MaxNodesPerMethodCall; + #server.serverCapabilities.OperationLimits.MaxNodesPerRead := #statVariable.MaxNodesPerRead; + #server.serverCapabilities.OperationLimits.MaxNodesPerRegisterNodes := #statVariable.MaxNodesPerRegisterNodes; + #server.serverCapabilities.OperationLimits.MaxNodesPerTranslateBrowsePathsToNodeIds := #statVariable.MaxNodesPerTranslateBrowsePathsToNodeIds; + #server.serverCapabilities.OperationLimits.MaxNodesPerWrite := #statVariable.MaxNodesPerWrite; + #server.serverCapabilities.ServerProfileArray := #statVariable.ServerProfileArray; + + //SimaticDevice + #simaticDevice.#deviceManual := STRING_TO_WSTRING(#statVariable.DeviceManual); + #simaticDevice.#deviceRevision := STRING_TO_WSTRING(#statVariable.DeviceRevision); + #simaticDevice.#engineeringRevision := STRING_TO_WSTRING(#statVariable.EngineeringRevision); + #simaticDevice.#hardwareRevision := STRING_TO_WSTRING(#statVariable.HardwareRevision); + #simaticDevice.manufacturer := #statVariable.Manufacturer; + #simaticDevice.#model := #statVariable.Model; + #simaticDevice.#orderNumber := STRING_TO_WSTRING(#statVariable.OrderNumber); + #simaticDevice.#revisionCounter := #statVariable.RevisionCounter; + #simaticDevice.#serialNumber := STRING_TO_WSTRING(#statVariable.SerialNumber); + #simaticDevice.#softwareRevision := STRING_TO_WSTRING(#statVariable.SoftwareRevision); + + END_IF; + + END_REGION Write results + + REGION Outputs + + //simply pass output parameters + #done := #tempDone; + #error := #tempError; + #status := #tempStatus; + #busy := #tempBusy; + + END_REGION Outputs +END_FUNCTION_BLOCK + diff --git a/=A01+UH01-KF00/Programmbausteine/SCADA/OPC_UA/1_ServerDiagnostics/ServerDiagnostics.xml b/=A01+UH01-KF00/Programmbausteine/SCADA/OPC_UA/1_ServerDiagnostics/ServerDiagnostics.xml new file mode 100644 index 0000000..7c74654 --- /dev/null +++ b/=A01+UH01-KF00/Programmbausteine/SCADA/OPC_UA/1_ServerDiagnostics/ServerDiagnostics.xml @@ -0,0 +1,144 @@ + + + + + + false + false + +
+ + + false + false + false + + + Flag for triggering the Read instruction. + + + + + false + false + false + + + execution is finished + + + + + false + false + false + + + execution is running + + + + + false + false + false + + + error has occured during execution + + + + + false + false + false + + + execution status + + + + + false + false + false + + +
+ + + NamespaceArray defines an array of namespace URIs. This Variable is also referred as namespace table. + + + + + ServerArray defines an array of Server URIs. This Variable is also referred to as the server table. + + +
+
+
+ + + false + false + false + + +
+
+ Optimized + 100 + ServerDiagnostics + + 79 + DB +
+ + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + +
+
\ No newline at end of file diff --git a/=A01+UH01-KF00/Programmbausteine/SCADA/OPC_UA/2_SessionDiagnostics/Instances/InstReadSessionDiagnostics.xml b/=A01+UH01-KF00/Programmbausteine/SCADA/OPC_UA/2_SessionDiagnostics/Instances/InstReadSessionDiagnostics.xml new file mode 100644 index 0000000..bad85a9 --- /dev/null +++ b/=A01+UH01-KF00/Programmbausteine/SCADA/OPC_UA/2_SessionDiagnostics/Instances/InstReadSessionDiagnostics.xml @@ -0,0 +1,370 @@ + + + + + + false + false + ReadSessionDiagnostics + FB + +
+ + + false + false + false + + + + + false + false + false + + + + + false + false + false + + + + + false + false + false + + +
+
+ + + false + false + false + + + + + false + false + false + + + + + false + false + false + + + + + false + false + false + + + + + false + false + false + + +
+
+ +
+
+ + + false + false + false + + + + + false + false + false + + + + + false + false + false + + + + + false + false + false + + + + + false + false + false + + + + + false + false + false + + + + + false + false + false + + + + + false + false + false + + + + + false + false + false + + + + + false + false + false + + + + + false + false + false + + + + + false + false + false + + + + + false + false + false + + + + + false + false + false + + + + + false + false + false + + + + + false + false + false + + + + + false + false + false + + + + + + false + false + false + + + + + false + false + false + + + + + false + false + false + + + + + false + false + false + + + + + false + false + false + + + + + + false + false + false + + + + + + false + false + false + + + + + + false + false + false + + + + + + false + false + false + + + + + + false + false + false + + + + + + false + false + false + + + + + + false + false + false + + + + + + false + false + false + + + + + + false + false + false + + + + + false + false + false + + +
+
+ InstReadSessionDiagnostics + + 80 + DB +
+ + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + +
+
\ No newline at end of file diff --git a/=A01+UH01-KF00/Programmbausteine/SCADA/OPC_UA/2_SessionDiagnostics/ReadSessionDiagnostics.scl b/=A01+UH01-KF00/Programmbausteine/SCADA/OPC_UA/2_SessionDiagnostics/ReadSessionDiagnostics.scl new file mode 100644 index 0000000..d320f43 --- /dev/null +++ b/=A01+UH01-KF00/Programmbausteine/SCADA/OPC_UA/2_SessionDiagnostics/ReadSessionDiagnostics.scl @@ -0,0 +1,515 @@ +FUNCTION_BLOCK "ReadSessionDiagnostics" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + VAR_INPUT + sessionNameSubstring { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : String; + nodeIdExtension { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : WString; + read { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : Bool; + enable { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : Bool; + END_VAR + + VAR_OUTPUT + done { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : Bool; + busy { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : Bool; + error { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : Bool; + status { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : DWord; + sessionsFound { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : UInt; + END_VAR + + VAR_IN_OUT + readValue : Variant; + END_VAR + + VAR + statRead { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : Bool; + statReadHandled { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : Bool; + statREQ1 { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : Bool; + statREQ2 { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : Bool; + statSessionsFound { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : UInt; + statSessionIdentifier { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : WString; + statState { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : USInt := #STATE_FINDSESSION; + statDone { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : Bool; + statError { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : Bool; + statStatus { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : DWord; + statBusy { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : Bool; + statConnectionHdl { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : DWord := -42; + statNodeCount1 { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : UInt := #NODES_COUNT_1; + statNodeIds1 {InstructionName := 'OPC_UA_NodeId'; LibVersion := '1.0'; ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'; S7_SetPoint := 'False'} : Array[0..#NODES_UPPERBOUND_1] of OPC_UA_NodeId := [((), WSTRING#'3707', ())]; + statNodeStatusList1 { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : Array[0..#NODES_UPPERBOUND_1] of DWord; + statTimeStamps1 { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : Array[0..#NODES_UPPERBOUND_1] of LDT; + statVariable1 { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : Struct + SessionDiagnosticsArray { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'; S7_SetPoint := 'False'} : Array[0.."SESSIONS_UPPERBOUND"] of "typeSessionDiagnostics"; + END_STRUCT; + statNodeCount2 { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : UInt := #NODES_COUNT_2; + statNodeIds2 {InstructionName := 'OPC_UA_NodeId'; LibVersion := '1.0'; ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'; S7_SetPoint := 'False'} : Array[0..#NODES_UPPERBOUND_2] of OPC_UA_NodeId := [(1, #NODEID_SUFFIX, 1)]; + statNodeStatusList2 { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : Array[0..#NODES_UPPERBOUND_2] of DWord; + statTimeStamps2 { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : Array[0..#NODES_UPPERBOUND_2] of LDT; + statVariable2SessionDiagnostics { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : Struct + Value { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'; S7_SetPoint := 'False'} : "typeSessionDiagnostics"; + END_STRUCT; + statVariable2ServiceCounter { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : Struct + Value { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'; S7_SetPoint := 'False'} : "typeServiceCounter"; + END_STRUCT; + statVariable2UDInt { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : Struct + Value { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : UDInt; + END_STRUCT; + statVariable2LDT { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : Struct + Value { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : LDT; + END_STRUCT; + statVariable2LReal { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : Struct + Value { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : LReal; + END_STRUCT; + statVariable2Array05String { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : Struct + Value { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : Array[0..5] of String; + END_STRUCT; + statVariable2String { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : Struct + Value { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : String; + END_STRUCT; + statVariable2ApplicationDescription { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : Struct + Value { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'; S7_SetPoint := 'False'} : "typeApplicationDescription"; + END_STRUCT; + statVariable2OpcUaNodeId { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : Struct + Value {InstructionName := 'OPC_UA_NodeId'; LibVersion := '1.0'; ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'; S7_SetPoint := 'False'} : OPC_UA_NodeId; + END_STRUCT; + instOpcUaReadList1 {InstructionName := 'OPC_UA_ReadList'; LibVersion := '1.0'; ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'; S7_SetPoint := 'False'} : OPC_UA_ReadList; + instOpcUaReadList2 {InstructionName := 'OPC_UA_ReadList'; LibVersion := '1.0'; ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'; S7_SetPoint := 'False'} : OPC_UA_ReadList; + END_VAR + + VAR_TEMP + tempRead1Done : Bool; + tempRead1Error : Bool; + tempRead1Busy : Bool; + tempRead1Status : DWord; + tempRead2Done : Bool; + tempRead2Error : Bool; + tempRead2Busy : Bool; + tempRead2Status : DWord; + tempSessionCounter : DInt; + tempStringFound : Int; + END_VAR + + VAR CONSTANT + STATE_IDLE : USInt := 0; + STATE_FINDSESSION_PRE : USInt := 10; + STATE_FINDSESSION : USInt := 11; + STATE_READSESSIONDIAGNOSTICS_PRE : USInt := 20; + STATE_READSESSIONDIAGNOSTICS : USInt := 21; + STATE_ERROR : USInt := 99; + STATUS_GOOD : DWord := 16#00000000; + STATUS_NODENOTEXISTING : DWord := 16#80340000; + STATUS_NODATA : DWord := 16#80370000; + STATUS_UNEXPECTEDTYPE : DWord := 16#82000000; + STATUS_INCORRECTSTATE : DWord := 16#82010000; + STATUS_NOSESSIONFOUND : DWord := 16#90010000; + NODES_UPPERBOUND_1 : DInt := 0; + NODES_COUNT_1 : UInt := 1; + NODES_UPPERBOUND_2 : DInt := 0; + NODES_COUNT_2 : UInt := 1; + NODEID_PREFIX : WString := WSTRING#'Session_'; + NODEID_SUFFIX : WString := WSTRING#'SessionDiagnostics'; + NODEID_SEPERATOR : WString := WSTRING#'.'; + END_VAR + + +BEGIN + REGION Description header + //================================================================================== + // SIEMENS / (C) Copyright 2023 + //---------------------------------------------------------------------------------- + // Title: GetLastContact + // Comment/Function: reads out the Server node data of the internal OPC UA server to retrieve the LastContactTime + // Library/Family: + // Author: SIEMENS SIMATIC Systems Support (SUP) + // Target System: + // Engineering: TIA Portal (>= V18) + // Restrictions: + // Requirements: FW 3.0 (1500) + //---------------------------------------------------------------------------------- + // Change log table: + // Version | Date | Expert in charge | Changes applied + //-------------|------------|------------------|------------------------------------ + // 001.000.000 | 2023-02-13 | SUP SPH | First released version + //================================================================================== + END_REGION Description header + + REGION OPC_UA_ReadList Instances + + // 1 - Read SessionDiagnosticsArray + #instOpcUaReadList1(REQ := #statREQ1, + ConnectionHdl := #statConnectionHdl, + NodeHdlCount := #statNodeCount1, + NodeHdls := #statNodeIds1, + Done => #tempRead1Done, + Busy => #tempRead1Busy, + Error => #tempRead1Error, + Status => #tempRead1Status, + NodeStatusList := #statNodeStatusList1, + TimeStamps := #statTimeStamps1, + Variable := #statVariable1); + + // 2 - Read SessionDiagnostics + REGION #instOPC_UA_ReadList2 + + CASE TypeOf(#readValue) OF + + typeSessionDiagnostics: + //addressing SessionDiagnostiocs as a whole + #instOpcUaReadList2(REQ := #statREQ2, + ConnectionHdl := #statConnectionHdl, + NodeHdlCount := #statNodeCount2, + NodeHdls := #statNodeIds2, + Done => #tempRead2Done, + Busy => #tempRead2Busy, + Error => #tempRead2Error, + Status => #tempRead2Status, + NodeStatusList := #statNodeStatusList2, + TimeStamps := #statTimeStamps2, + Variable := #statVariable2SessionDiagnostics); + + typeServiceCounter: + //e.g. addressing SessionDiagnostics.ReadCount or .WriteCount + #instOpcUaReadList2(REQ := #statREQ2, + ConnectionHdl := #statConnectionHdl, + NodeHdlCount := #statNodeCount2, + NodeHdls := #statNodeIds2, + Done => #tempRead2Done, + Busy => #tempRead2Busy, + Error => #tempRead2Error, + Status => #tempRead2Status, + NodeStatusList := #statNodeStatusList2, + TimeStamps := #statTimeStamps2, + Variable := #statVariable2ServiceCounter); + + UDInt: + //e.g. addressing SessionDiagnostics.MaxResponseMessageSize + #instOpcUaReadList2(REQ := #statREQ2, + ConnectionHdl := #statConnectionHdl, + NodeHdlCount := #statNodeCount2, + NodeHdls := #statNodeIds2, + Done => #tempRead2Done, + Busy => #tempRead2Busy, + Error => #tempRead2Error, + Status => #tempRead2Status, + NodeStatusList := #statNodeStatusList2, + TimeStamps := #statTimeStamps2, + Variable := #statVariable2UDInt); + + LDT: + //e.g. addressing SessionDiagnostics.ClientConnectionTime or .ClientLastContactTime + #instOpcUaReadList2(REQ := #statREQ2, + ConnectionHdl := #statConnectionHdl, + NodeHdlCount := #statNodeCount2, + NodeHdls := #statNodeIds2, + Done => #tempRead2Done, + Busy => #tempRead2Busy, + Error => #tempRead2Error, + Status => #tempRead2Status, + NodeStatusList := #statNodeStatusList2, + TimeStamps := #statTimeStamps2, + Variable := #statVariable2LDT); + + LReal: + //e.g. addressing SessionDiagnostics.ActualSessionTimeout + #instOpcUaReadList2(REQ := #statREQ2, + ConnectionHdl := #statConnectionHdl, + NodeHdlCount := #statNodeCount2, + NodeHdls := #statNodeIds2, + Done => #tempRead2Done, + Busy => #tempRead2Busy, + Error => #tempRead2Error, + Status => #tempRead2Status, + NodeStatusList := #statNodeStatusList2, + TimeStamps := #statTimeStamps2, + Variable := #statVariable2LReal); + + String: + //e.g. addressing SessionDiagnostics.ServerUri or .EndpointUrl + #instOpcUaReadList2(REQ := #statREQ2, + ConnectionHdl := #statConnectionHdl, + NodeHdlCount := #statNodeCount2, + NodeHdls := #statNodeIds2, + Done => #tempRead2Done, + Busy => #tempRead2Busy, + Error => #tempRead2Error, + Status => #tempRead2Status, + NodeStatusList := #statNodeStatusList2, + TimeStamps := #statTimeStamps2, + Variable := #statVariable2String); + + typeApplicationDescription: + //e.g. addressing SessionDiagnostics.ClientDescription + #instOpcUaReadList2(REQ := #statREQ2, + ConnectionHdl := #statConnectionHdl, + NodeHdlCount := #statNodeCount2, + NodeHdls := #statNodeIds2, + Done => #tempRead2Done, + Busy => #tempRead2Busy, + Error => #tempRead2Error, + Status => #tempRead2Status, + NodeStatusList := #statNodeStatusList2, + TimeStamps := #statTimeStamps2, + Variable := #statVariable2ApplicationDescription); + + OPC_UA_NodeId: + //e.g. addressing SessionDiagnostics.SessionId + #instOpcUaReadList2(REQ := #statREQ2, + ConnectionHdl := #statConnectionHdl, + NodeHdlCount := #statNodeCount2, + NodeHdls := #statNodeIds2, + Done => #tempRead2Done, + Busy => #tempRead2Busy, + Error => #tempRead2Error, + Status => #tempRead2Status, + NodeStatusList := #statNodeStatusList2, + TimeStamps := #statTimeStamps2, + Variable := #statVariable2OpcUaNodeId); + ELSE + #statStatus := #STATUS_UNEXPECTEDTYPE; + #statState := #STATE_ERROR; + END_CASE; + END_REGION #instOPC_UA_ReadList2 + + END_REGION OPC_UA_ReadList Instances + + REGION Check Trigger Input + + IF (#statState <> #STATE_ERROR) THEN + IF NOT #read AND NOT #enable THEN + #statState := #STATE_IDLE; + #statReadHandled := FALSE; + ELSE + IF #statReadHandled = FALSE THEN + #statRead := TRUE; + #statReadHandled := TRUE; + END_IF; + END_IF; + END_IF; + + END_REGION Check Trigger Input + + REGION State Handling + + CASE #statState OF + + #STATE_IDLE: //idle mode, waiting for start command + REGION #STATE_IDLE + #statREQ2 := FALSE; + + #statDone := FALSE; + #statError := FALSE; + #statStatus := #STATUS_GOOD; + #statSessionsFound := 0; + + IF (#statRead) THEN + #statRead := FALSE; + #statNodeIds2[0].Identifier := #NODEID_SUFFIX; + #statBusy := TRUE; + #statState := #STATE_FINDSESSION_PRE; + ELSE + #statBusy := FALSE; + #statREQ1 := FALSE; + END_IF; + END_REGION #STATE_IDLE + + #STATE_FINDSESSION_PRE: //prepare finding the required client session + REGION #STATE_FINDSESSION_PRE + #statREQ1 := TRUE; + #statSessionsFound := 0; + #statState := #STATE_FINDSESSION; + END_REGION #STATE_FINDSESSION_PRE + #STATE_FINDSESSION: //try to find required session name in current sessions + REGION #STATE_FINDSESSION + + //check if execution is finished + IF #tempRead1Done OR #tempRead1Error THEN + + //reset trigger flag + #statREQ1 := FALSE; + + //check if everything was successful + IF #tempRead1Done AND NOT #tempRead1Error AND #statNodeStatusList1[0] = #STATUS_GOOD THEN + + //Search specified client session substring in list of returned sessions + FOR #tempSessionCounter := 0 TO "SESSIONS_UPPERBOUND" DO + + IF (LEN(IN := #statVariable1.SessionDiagnosticsArray[#tempSessionCounter].sessionName) > 0) THEN + + //find sessionNameSubstring in sessionName + #tempStringFound := FIND(IN1 := #statVariable1.SessionDiagnosticsArray[#tempSessionCounter].sessionName, IN2 := #sessionNameSubstring); + + IF #tempStringFound > 0 THEN + + #statSessionsFound += 1; + + //first best result is taken for later use + IF (#statSessionsFound = 1) THEN + #statSessionIdentifier := #statVariable1.SessionDiagnosticsArray[#tempSessionCounter].sessionId.Identifier; + END_IF; + + END_IF; + END_IF; + + END_FOR; + + //no matching session name was found + IF NOT (#statSessionsFound > 0) THEN + #statStatus := #STATUS_NOSESSIONFOUND; + END_IF; + + ELSIF #tempRead1Error THEN//error occurred + #statStatus := #tempRead1Status; + ELSIF #statNodeStatusList1[0] = #STATUS_NODATA THEN//read delivered no data + #statStatus := #STATUS_NODATA; + ELSIF #statNodeStatusList1[0] <> #STATUS_GOOD THEN//read returned bad node status + #statStatus := #statNodeStatusList1[0]; + END_IF; + + //if the required session was found go to next state + IF (#statSessionsFound > 0) THEN + #statState := #STATE_READSESSIONDIAGNOSTICS_PRE; + ELSE + IF (#enable) THEN //try to find session repeatedly + #statState := #STATE_FINDSESSION_PRE; + ELSE //go to idle mode because only a single read was requested + #statState := #STATE_IDLE; + #statError := TRUE; + END_IF; + END_IF; + + END_IF; + END_REGION #STATE_FINDSESSION + + #STATE_READSESSIONDIAGNOSTICS_PRE: //prepare reading the SessionDiagnostics or a subelement + REGION #STATE_READSESSIONDIAGNOSTICS_PRE + + //Build session-specific NodeId of SessionDiagnostics node + #statNodeIds2[0].Identifier := CONCAT_WSTRING(IN1 := #NODEID_PREFIX, IN2 := #statSessionIdentifier, IN3 := WSTRING#'.', IN4 := #NODEID_SUFFIX); + + //if a subelement is to be addressed, extend the NodeId + IF (LEN(#nodeIdExtension) > 0) THEN + //check whether NodeId extension was already given with a '.' + IF (FIND(IN1 := #nodeIdExtension, IN2 := #NODEID_SEPERATOR) = 1) THEN + #statNodeIds2[0].Identifier := CONCAT_WSTRING(IN1 := #statNodeIds2[0].Identifier, IN2 := #nodeIdExtension); + ELSE + #statNodeIds2[0].Identifier := CONCAT_WSTRING(IN1 := #statNodeIds2[0].Identifier, IN2 := #NODEID_SEPERATOR, IN3 := #nodeIdExtension); + END_IF; + END_IF; + + #statREQ2 := TRUE; + #statDone := FALSE; + #statState := #STATE_READSESSIONDIAGNOSTICS; + END_REGION #STATE_READSESSIONDIAGNOSTICS_PRE + #STATE_READSESSIONDIAGNOSTICS: //read SessionDiagnostics or a subelement + REGION #STATE_READSESSIONDIAGNOSTICS + + //check if execution is finished + IF #tempRead2Done OR #tempRead2Error THEN + + //reset trigger flag + #statREQ2 := FALSE; + + //check if everything was successful + IF #tempRead2Done AND NOT #tempRead2Error AND #statNodeStatusList2[0] = #STATUS_GOOD THEN + + #statDone := TRUE; + + IF #enable THEN + #statState := #STATE_READSESSIONDIAGNOSTICS_PRE; //read values repeatedly + ELSE + #statState := #STATE_IDLE; //go to idle mode because only a single read was requested + END_IF; + + ELSE + IF #statNodeStatusList2[0] = #STATUS_NODENOTEXISTING THEN //session specific node is not existing + #statStatus := #STATUS_NODENOTEXISTING; + + IF #enable THEN + #statState := #STATE_FINDSESSION_PRE; //go back to finding the session again + ELSE + #statError := TRUE; + #statState := #STATE_IDLE; //go to idle mode because only a single read was requested + END_IF; + ELSIF #statNodeStatusList2[0] <> #STATUS_GOOD THEN//read returned bad node status + #statStatus := #statNodeStatusList2[0]; + + IF #enable THEN + #statState := #STATE_READSESSIONDIAGNOSTICS_PRE; //try reading the node again + ELSE + #statError := TRUE; + #statState := #STATE_IDLE; //go to idle mode because only a single read was requested + END_IF; + ELSE//read instruction returned any unexpected status + #statStatus := #tempRead2Status; + + IF #enable THEN + #statState := #STATE_READSESSIONDIAGNOSTICS_PRE; //try read again + ELSE + #statError := TRUE; + #statState := #STATE_IDLE; //go to idle mode because only a single read was requested + END_IF; + END_IF; + END_IF; + + END_IF; + + END_REGION #STATE_READSESSIONDIAGNOSTICS + + #STATE_ERROR: //something is configured incorrectly. no further execution any more + REGION #STATE_ERROR + #statError := TRUE; + #statBusy := FALSE; + #statDone := FALSE; + END_REGION #STATE_ERROR + + ELSE //should never come here + #statStatus := #STATUS_INCORRECTSTATE; + #statState := #STATE_ERROR; + + END_CASE; + END_REGION State Handling + + REGION Set Output + IF (#statDone AND #statState <> #STATE_ERROR) THEN + + //pass the matching read value back to the InOut Variant readValue + CASE TypeOf(#readValue) OF + typeSessionDiagnostics: + VariantPut(SRC := #statVariable2SessionDiagnostics.Value, + DST := #readValue); + typeServiceCounter: + VariantPut(SRC := #statVariable2ServiceCounter.Value, + DST := #readValue); + UDInt: + VariantPut(SRC := #statVariable2UDInt.Value, + DST := #readValue); + LDT: + VariantPut(SRC := #statVariable2LDT.Value, + DST := #readValue); + LReal: + VariantPut(SRC := #statVariable2LReal.Value, + DST := #readValue); + String: + VariantPut(SRC := #statVariable2String.Value, + DST := #readValue); + typeApplicationDescription: + VariantPut(SRC := #statVariable2ApplicationDescription.Value, + DST := #readValue); + OPC_UA_NodeId: + VariantPut(SRC := #statVariable2OpcUaNodeId.Value, + DST := #readValue); + ELSE + #statStatus := #STATUS_UNEXPECTEDTYPE; + #statState := #STATE_ERROR; + END_CASE; + END_IF; + + //set output signals + #sessionsFound := #statSessionsFound; + #error := #statError; + #status := #statStatus; + #busy := #statBusy; + #done := #statDone; + END_REGION Set Output + +END_FUNCTION_BLOCK + diff --git a/=A01+UH01-KF00/Programmbausteine/SCADA/OPC_UA/2_SessionDiagnostics/SessionDiagnostics.xml b/=A01+UH01-KF00/Programmbausteine/SCADA/OPC_UA/2_SessionDiagnostics/SessionDiagnostics.xml new file mode 100644 index 0000000..7f2aa21 --- /dev/null +++ b/=A01+UH01-KF00/Programmbausteine/SCADA/OPC_UA/2_SessionDiagnostics/SessionDiagnostics.xml @@ -0,0 +1,143 @@ + + + + + + +
+ + + false + false + false + true + + + substring of the client session name, e.g. "UaExpert" + + 'd58bc88f-f367-40de-90fd-257d73ba586e' + + + + false + false + false + + + trigger execution as single read + + + + + false + false + false + + + execution is finished + + + + + false + false + false + + + execution is running + + + + + false + false + false + + + error ocurred during execution + + + + + false + false + false + + + execution status + + + + + false + false + false + + + number of sessions found + + + + + false + false + false + + +
+
+ Optimized + 100 + SessionDiagnostics + + 81 + DB +
+ + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + +
+
\ No newline at end of file diff --git a/=A01+UH01-KF00/Programmbausteine/SCADA/OPC_UA/3_SessionDiagnostics.ClientLastContactTime/CheckForTimeOut.scl b/=A01+UH01-KF00/Programmbausteine/SCADA/OPC_UA/3_SessionDiagnostics.ClientLastContactTime/CheckForTimeOut.scl new file mode 100644 index 0000000..ed0709c --- /dev/null +++ b/=A01+UH01-KF00/Programmbausteine/SCADA/OPC_UA/3_SessionDiagnostics.ClientLastContactTime/CheckForTimeOut.scl @@ -0,0 +1,74 @@ +FUNCTION_BLOCK "CheckForTimeOut" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + VAR_INPUT + lastContactTime { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : LDT; + timeOut { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : LTime; + enable { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : Bool; + END_VAR + + VAR_OUTPUT + isTimedOut { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : Bool; + END_VAR + + VAR + statCurrentTime { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : LDT; + statTimeDiff { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : LTime; + instProgramAlarm {InstructionName := 'Program_Alarm'; LibVersion := '1.0'; ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'; S7_SetPoint := 'False'} : Program_Alarm; + END_VAR + + VAR_TEMP + tempRetValueSysTime : Int; + tempIsTimedOut : Bool; + END_VAR + + +BEGIN + REGION Description header + //================================================================================== + // SIEMENS / (C) Copyright 2023 + //---------------------------------------------------------------------------------- + // Title: CheckForTimeOut + // Comment/Function: compares LastContactTime to a timeOut + // Library/Family: + // Author: SIEMENS SIMATIC Systems Support (SUP) + // Target System: + // Engineering: + // Restrictions: + // Requirements: + //---------------------------------------------------------------------------------- + // Change log table: + // Version | Date | Expert in charge | Changes applied + //-------------|------------|------------------|------------------------------------ + // 001.000.000 | 2023-02-13 | SUP SPH | First released version + //================================================================================== + END_REGION Description header + + IF #enable THEN + + REGION Check Timeout + //Read system time + #tempRetValueSysTime := RD_SYS_T(#statCurrentTime); + + //calculate time difference + #statTimeDiff := T_DIFF(IN1 := #statCurrentTime, IN2 := #lastContactTime); + + //compare time difference to timeOut + IF #statTimeDiff > #timeOut THEN + #tempIsTimedOut := TRUE; + ELSE + #tempIsTimedOut := FALSE; + END_IF; + //fire program alarm + #instProgramAlarm(SIG := false);//#tempIsTimedOut); + END_REGION Check Timeout + + ELSE + #tempIsTimedOut := FALSE; + END_IF; + + REGION Write Output + #isTimedOut := #tempIsTimedOut; + END_REGION Write Output +END_FUNCTION_BLOCK + diff --git a/=A01+UH01-KF00/Programmbausteine/SCADA/OPC_UA/3_SessionDiagnostics.ClientLastContactTime/ClientStatus.xml b/=A01+UH01-KF00/Programmbausteine/SCADA/OPC_UA/3_SessionDiagnostics.ClientLastContactTime/ClientStatus.xml new file mode 100644 index 0000000..f429646 --- /dev/null +++ b/=A01+UH01-KF00/Programmbausteine/SCADA/OPC_UA/3_SessionDiagnostics.ClientLastContactTime/ClientStatus.xml @@ -0,0 +1,113 @@ + + + + + + +
+ + + true + + 'd58bc88f-f367-40de-90fd-257d73ba586e' + + + true + + + + + + + WSTRING#'ClientLastContactTime' + + + + + true + + LT#10s + + + + + true + + + + + true + + + + + true + + + + + true + + + + + true + + +
+
+ Optimized + 100 + ClientStatus + + 83 + DB +
+ + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + +
+
\ No newline at end of file diff --git a/=A01+UH01-KF00/Programmbausteine/SCADA/OPC_UA/3_SessionDiagnostics.ClientLastContactTime/Instances/InstCheckForTimeOut.xml b/=A01+UH01-KF00/Programmbausteine/SCADA/OPC_UA/3_SessionDiagnostics.ClientLastContactTime/Instances/InstCheckForTimeOut.xml new file mode 100644 index 0000000..f2a64b0 --- /dev/null +++ b/=A01+UH01-KF00/Programmbausteine/SCADA/OPC_UA/3_SessionDiagnostics.ClientLastContactTime/Instances/InstCheckForTimeOut.xml @@ -0,0 +1,118 @@ + + + + + + CheckForTimeOut + FB + +
+ + + false + false + false + + + + + false + false + false + + + + + false + false + false + + +
+
+ + + false + false + false + + +
+
+
+ + + false + false + false + + + + + false + false + false + + + + + false + false + false + + +
+ + InstCheckForTimeOut + + 84 + DB + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + \ No newline at end of file diff --git a/=A01+UH01-KF00/Programmbausteine/SCADA/OPC_UA/3_SessionDiagnostics.ClientLastContactTime/Instances/InstReadSessionDiagnostics.ClientLastContactTime.xml b/=A01+UH01-KF00/Programmbausteine/SCADA/OPC_UA/3_SessionDiagnostics.ClientLastContactTime/Instances/InstReadSessionDiagnostics.ClientLastContactTime.xml new file mode 100644 index 0000000..5075c16 --- /dev/null +++ b/=A01+UH01-KF00/Programmbausteine/SCADA/OPC_UA/3_SessionDiagnostics.ClientLastContactTime/Instances/InstReadSessionDiagnostics.ClientLastContactTime.xml @@ -0,0 +1,368 @@ + + + + + + ReadSessionDiagnostics + FB + +
+ + + false + false + false + + + + + false + false + false + + + + + false + false + false + + + + + false + false + false + + +
+
+ + + false + false + false + + + + + false + false + false + + + + + false + false + false + + + + + false + false + false + + + + + false + false + false + + +
+
+ +
+
+ + + false + false + false + + + + + false + false + false + + + + + false + false + false + + + + + false + false + false + + + + + false + false + false + + + + + false + false + false + + + + + false + false + false + + + + + false + false + false + + + + + false + false + false + + + + + false + false + false + + + + + false + false + false + + + + + false + false + false + + + + + false + false + false + + + + + false + false + false + + + + + false + false + false + + + + + false + false + false + + + + + false + false + false + + + + + + false + false + false + + + + + false + false + false + + + + + false + false + false + + + + + false + false + false + + + + + false + false + false + + + + + + false + false + false + + + + + + false + false + false + + + + + + false + false + false + + + + + + false + false + false + + + + + + false + false + false + + + + + + false + false + false + + + + + + false + false + false + + + + + + false + false + false + + + + + + false + false + false + + + + + false + false + false + + +
+
+ InstReadSessionDiagnostics.ClientLastContactTime + + 82 + DB +
+ + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + +
+
\ No newline at end of file diff --git a/=A01+UH01-KF00/Programmbausteine/SCADA/OPC_UA/Diagnostics.xml b/=A01+UH01-KF00/Programmbausteine/SCADA/OPC_UA/Diagnostics.xml new file mode 100644 index 0000000..e7bb25a --- /dev/null +++ b/=A01+UH01-KF00/Programmbausteine/SCADA/OPC_UA/Diagnostics.xml @@ -0,0 +1,1637 @@ + + + + + + +
+ + + Initial call of this OB + + + + + Events discarded + + +
+
+
+ + Optimized + Diagnostics + + 30 + FBD + CyclicInterrupt + false + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + FBD + + + + + + + cs-CZ + + + + + + de-DE + Calling "ReadServerDiagnostics" to read diagnostic information from Server object elements of the own OPC UA Server of the PLC. + + + + + en-US + Calling "ReadServerDiagnostics" to read diagnostic information from Server object elements of the own OPC UA Server of the PLC. + + + + + + + + + cs-CZ + + + + + + de-DE + Read Server Diagnostics + + + + + en-US + Read Server Diagnostics + + + + + + + + + + + + + + + + true + + + + + + + + + + + + true + + + + + + + + + + + + + + true + + + + + + + + + + + + + + true + + + + + + + + + + + + true + + + + + + + + + + + + true + + + + + + + + + + + + true + + + + + + + + + + + + true + + + + + + + + + + + + true + + + + + + + + + + + SCL + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + cs-CZ + + + + + + de-DE + Pass return values to global DB for display + + + + + en-US + Pass return values to global DB for display + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + FBD + + + + + + + cs-CZ + + + + + + de-DE + Calling "ReadSessionDisgnostics" to read out Session-specific information of the own OPC UA Server of the PLC. The NodeId of the specific SessionDiagnostics is determined by searching for an active client session name containing the sepcified "sessionNameSubstring". The input parameter "NodeIdExtension" allows to address subelements of a "SessionDiagnostics" and is left empty here to address the top node. A rising edge at the "read" input triggers a single read execution. + + + + + en-US + Calling "ReadSessionDisgnostics" to read out Session-specific information of the own OPC UA Server of the PLC. The NodeId of the specific SessionDiagnostics is determined by searching for an active client session name containing the sepcified "sessionNameSubstring". The input parameter "NodeIdExtension" allows to address subelements of a "SessionDiagnostics" and is left empty here to address the top node. A rising edge at the "read" input triggers a single read execution. + + + + + + + + + cs-CZ + + + + + + de-DE + Read Session Diagnostics + + + + + en-US + Read Session Diagnostics + + + + + + + + + + + + + + + + true + + + + + + + + + + + + true + + + + + + + + + + + + + + true + + + + + + + + + + + + + + true + + + + + + + + + + + + true + + + + + + + + + + + + true + + + + + + + + + + + + true + + + + + + + + + + + + true + + + + + + + + + + + + true + + + + + + + + + + + + true + + + + + + + + + + + + true + + + + + + + + + + + SCL + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + cs-CZ + + + + + + de-DE + Pass return values to global DB for display + + + + + en-US + Pass return values to global DB for display + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + FBD + + + + + + + cs-CZ + + + + + + de-DE + Calling "ReadSessionDisgnostics" to read out session-specific node "ClientLastContactTime" of the own OPC UA Server of the PLC. The NodeId of a specific "SessionDiagnostics" is determined by searching for an active client session name containing the sepcified "sessionNameSubstring". The input parameter "NodeIdExtension" allows to address subelements of a "SessionDiagnostics" variable because the NodeId is simply extended with the name of the data point, e.g. "Session_XY.ClientLastContactTime". The input "enable" activates a repeated read access (polling). + +"CheckForTimeOut" compares the "ClientLastContactTime" and sets "isTimedOut" if the treshhold "timeOut" is exceeded. + + + + + en-US + Calling "ReadSessionDisgnostics" to read out session-specific node "ClientLastContactTime" of the own OPC UA Server of the PLC. The NodeId of a specific "SessionDiagnostics" is determined by searching for an active client session name containing the sepcified "sessionNameSubstring". The input parameter "NodeIdExtension" allows to address subelements of a "SessionDiagnostics" variable because the NodeId is simply extended with the name of the data point, e.g. "Session_XY.ClientLastContactTime". The input "enable" activates a repeated read access (polling). + +"CheckForTimeOut" compares the "ClientLastContactTime" and sets "isTimedOut" if the treshhold "timeOut" is exceeded. + + + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + Read Session Diagnostics - ClientLastContactTime + + + + + + + + + + + + + + + true + + + + + + + + + + + + + true + + + + + + + + + + + TRUE + + + + + + Alle 30 sekunden Server Diagnose aktualisieren + + + + + + + + + + + true + + + + + + + + + + + + true + + + + + + + + + + + + + + true + + + + + + + + + + + FALSE + + + + + + Rücksetzen wenn Baustein fertig + + + + + + + + + true + + + + + + + + + + + + true + + + + + + + + + + + 0 + + + + + + + + + + + + + Enable + + + + + + + + + + true + + + + + + + + + + + + 0 + + + + + + Init + + + + + + + true + + + + + + + + + + + FALSE + + + + + + + + + + + + + true + + + + + + + + + + + + + true + + + + + + + + + + + 3 + + + + + + + + + true + + + + + + + + + + + TRUE + + + + + + + + + + + + 1 + + + + + + Active + + + + + + + true + + + + + + + + + + + TRUE + + + + + + + + + + + true + + + + + + + + + + + + true + + + + + + + + + + + + + true + + + + + + + + + + + 2 + + + + + + + + + + + + 2 + + + + + + Reenable after timeout + + + + + + + true + + + + + + + + + + + FALSE + + + + + + + + + + + true + + + + + + + + + + + + + + + true + + + + + + + + + + + 3 + + + + + + + + + + + + 3 + + + + + + Wait + + + + + + + true + + + + + + + + + + + TRUE + + + + + + + + + + + true + + + + + + + + + + + + + + + true + + + + + + + + + + + 1 + + + + + + + + + + + + + + + + + + + true + + + + + + + + + + + + + + + + true + + + + + + + + + + + 2 + + + + + + + + + + + + + T#10s + + + + + + + + + + + + + + + true + + + + + + + + + + + + + + + true + + + + + + + + + + + 3 + + + + + + + + + + + + T#3s + + + + + + + + + + + + + + true + + + + + + + + + + + + + + + + + + true + + + + + + + + + + + + + + + + T#30s + + + + + + + + + + + + + + true + + + + + + + + + + + + SCL + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + \ No newline at end of file diff --git a/=A01+UH01-KF00/Programmbausteine/_IBN/DB_Error.xml b/=A01+UH01-KF00/Programmbausteine/_IBN/DB_Error.xml new file mode 100644 index 0000000..f636830 --- /dev/null +++ b/=A01+UH01-KF00/Programmbausteine/_IBN/DB_Error.xml @@ -0,0 +1,115 @@ + + + + + + +
+ + + Number of causing block + + + + + 0:ignore, 1:substitute, 2:skip + + + + + Fault identifier + + + + + 16#01:OB, 16#02:FC, 16#03:FB, 16#04:SFC, 16#05:SFB, 16#06:DB: Type of block causing the error + + + + + Area where the error occured + + + + + DB number if Area = DB or DI + + + + + Number of OB causing the error + + + + + Priority of OB causing the error + + + + + 0:bit, 1:byte, 2:word, 3:dword, 4:lword + + + + + + Ist nur true wenn OB121 ausgeführt wird + + +
+
+ Optimized + 100 + DB_Error + + 20 + DB +
+ + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + +
+
\ No newline at end of file diff --git a/=A01+UH01-KF00/Programmbausteine/_IBN/DB_S7.xml b/=A01+UH01-KF00/Programmbausteine/_IBN/DB_S7.xml new file mode 100644 index 0000000..644dbd0 --- /dev/null +++ b/=A01+UH01-KF00/Programmbausteine/_IBN/DB_S7.xml @@ -0,0 +1,98 @@ + + + + + + false + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ Standard + DB_S7 + + 99 + DB +
+ + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + +
+
\ No newline at end of file diff --git a/=A01+UH01-KF00/Programmbausteine/_IBN/DB_TRO_TEST.xml b/=A01+UH01-KF00/Programmbausteine/_IBN/DB_TRO_TEST.xml new file mode 100644 index 0000000..1707dc9 --- /dev/null +++ b/=A01+UH01-KF00/Programmbausteine/_IBN/DB_TRO_TEST.xml @@ -0,0 +1,178 @@ + + + + + + +
+ + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + false + + + true + + + true + + + true + + + true + + + true + + + false + + + true + + + true + + + true + + + true + + + true + + + true + + + + +
+
+ Optimized + 100 + DB_TRO_TEST + + 2 + DB +
+ + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + +
+
\ No newline at end of file diff --git a/=A01+UH01-KF00/Programmbausteine/_IBN/DB_Test.xml b/=A01+UH01-KF00/Programmbausteine/_IBN/DB_Test.xml new file mode 100644 index 0000000..4f50d7f --- /dev/null +++ b/=A01+UH01-KF00/Programmbausteine/_IBN/DB_Test.xml @@ -0,0 +1,120 @@ + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + true + + + + + + + + true + + + + + true + + + + + + true + + + + + true + + + + + +
+
+ Optimized + 100 + DB_Test + + 40 + DB +
+ + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + +
+
\ No newline at end of file diff --git a/=A01+UH01-KF00/Programmbausteine/_IBN/DB_Test_HMI.xml b/=A01+UH01-KF00/Programmbausteine/_IBN/DB_Test_HMI.xml new file mode 100644 index 0000000..4944dbc --- /dev/null +++ b/=A01+UH01-KF00/Programmbausteine/_IBN/DB_Test_HMI.xml @@ -0,0 +1,74 @@ + + + + + + +
+ + + true + + + + + true + + +
+
+ Optimized + 100 + DB_Test_HMI + + 70 + DB +
+ + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + +
+
\ No newline at end of file diff --git a/=A01+UH01-KF00/Programmbausteine/_IBN/FB_TestMain.scl b/=A01+UH01-KF00/Programmbausteine/_IBN/FB_TestMain.scl new file mode 100644 index 0000000..d9d2039 --- /dev/null +++ b/=A01+UH01-KF00/Programmbausteine/_IBN/FB_TestMain.scl @@ -0,0 +1,86 @@ +FUNCTION_BLOCK "FB_TestMain" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + VAR + rTrigPUT {InstructionName := 'R_TRIG'; LibVersion := '1.0'} : R_TRIG; + rTrigGET {InstructionName := 'R_TRIG'; LibVersion := '1.0'} : R_TRIG; + END_VAR + + +BEGIN + IF "DB_Test".xBit THEN + "DB_Test".rTimeResult := RUNTIME("DB_Test".rTimeMem); + "FC_BARCODE_SEARCH"(nInArea := "DB_Test".nSearchInStore, + xInActive := "DB_Test".xBit, + xOutNewRetrieve => "DB_Test".xNewRetrieve, + nOutMissingBarcode => "DB_Test".nMissingBarcode, + xOutError => "DB_Test".xError, + nOutStatus => "DB_Test".nStatus, + InOutTest := "DB_Test".arTest, + InOutStructRetrieve := "DB_Test".stRetrieve, + InOutLocalized := "DB_Test".stResult); + "DB_Test".xBit := FALSE; + "DB_Test".rTimeResult := RUNTIME("DB_Test".rTimeMem); + END_IF; + + IF "DB_Test".xActivate THEN + "DB_Test".rTimeResult := RUNTIME("DB_Test".rTimeMem); + "FC_CARR_GLOB_CORRECTION"(xInStart := "DB_Test".xActivate, + nInBarcodeScan := "DB_Test".stCarrScan.nBarcode, + nInStation:= 0, + arOutEventLogInfo => "DB_Test".arCorrectionInfo, + InOutCarrierExpect := "DB_Test".stCarrExpect); + "DB_Test".xActivate := FALSE; + "DB_Test".rTimeResult := RUNTIME("DB_Test".rTimeMem); + END_IF; + + REGION S7 + REGION PUT + #rTrigPUT(CLK := "DB_S7".stFunction.stPut.xStart); + IF #rTrigPUT.Q THEN + "DB_Test".rTimeResult := RUNTIME("DB_Test".rTimeMem); + END_IF; + + "PUT_DB"(REQ := "DB_S7".stFunction.stPut.xStart, + ID := W#16#118, + ADDR_1 := P#DB99.DBX14.0 BYTE 1,//Partner + SD_1 := "DB_S7".stSnd);//Quelle + + IF "PUT_DB".ERROR THEN + "DB_S7".stFunction.stPut.xError := "PUT_DB".ERROR; + END_IF; + IF "PUT_DB".STATUS <> 0 THEN + "DB_S7".stFunction.stPut.wStatus := "PUT_DB".STATUS; + END_IF; + IF "PUT_DB".DONE THEN + "DB_Test".rTimeResult := RUNTIME("DB_Test".rTimeMem); + "DB_S7".stFunction.stPut.xStart := FALSE; + END_IF; + END_REGION + + REGION GET + #rTrigGET(CLK := "DB_S7".stFunction.stGet.xStart); + IF #rTrigGET.Q THEN + "DB_Test".rTimeResult := RUNTIME("DB_Test".rTimeMem); + END_IF; + + "GET_DB"(REQ := "DB_S7".stFunction.stGet.xStart, + ADDR_1 := P#DB99.DBX40.0 INT 400,//Partner CPU + RD_1 := "DB_S7".aaa, //Eigene CPU + ID := W#16#118); + + IF "GET_DB".ERROR THEN + "DB_S7".stFunction.stGet.xError := "GET_DB".ERROR; + END_IF; + IF "GET_DB".STATUS <> 0 THEN + "DB_S7".stFunction.stGet.wStatus := "GET_DB".STATUS; + END_IF; + IF "GET_DB".NDR THEN + "DB_Test".rTimeResult := RUNTIME("DB_Test".rTimeMem); + "DB_S7".stFunction.stGet.xStart := FALSE; + END_IF; + END_REGION + + END_REGION +END_FUNCTION_BLOCK + diff --git a/=A01+UH01-KF00/Programmbausteine/_IBN/FC_S7.scl b/=A01+UH01-KF00/Programmbausteine/_IBN/FC_S7.scl new file mode 100644 index 0000000..4578357 --- /dev/null +++ b/=A01+UH01-KF00/Programmbausteine/_IBN/FC_S7.scl @@ -0,0 +1,62 @@ +FUNCTION "FC_S7" : Void +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + VAR_INPUT + wInID : Word; + END_VAR + + VAR_IN_OUT + xInOutStart : Bool; + xInOutError : Bool; + wInOutStatus : Word; + InOutAddr : Remote; + InOutOrigin : Variant; + END_VAR + + VAR_TEMP + xDone : Bool; + xError : Bool; + wStatus : Word; + END_VAR + + +BEGIN + + + REGION PUT + + + + "PUT_DB"(REQ := #xInOutStart, + ADDR_1 := #InOutAddr,//P#DB99.DBX68.0 BYTE 1,//Partner CPU, + SD_1 := #InOutOrigin,//Eigene CPU + ID := #wInID); + + IF "PUT_DB".ERROR THEN + #xInOutError := "PUT_DB".ERROR; + END_IF; + IF "PUT_DB".STATUS <> 0 THEN + #wInOutStatus := "PUT_DB".STATUS; + END_IF; + IF "PUT_DB".DONE THEN + #xInOutStart := FALSE; + END_IF; + END_REGION + + // REGION GET + // #rTrigGET(CLK := "DB_S7".xGetStart); + // IF #rTrigGET.Q THEN + // "DB_Test".rTimeResult := RUNTIME("DB_Test".rTimeMem); + // END_IF; + // "GET_DB"(REQ := "DB_S7".xGetStart, + // NDR => #xTemp, + // ADDR_1 := P#DB99.DBX2.0 DINT 1,//Partner CPU + // RD_1 := "DB_S7".arCarrier[1].nBarcode, //Eigene CPU + // ID := W#16#117); + // IF "GET_DB".NDR THEN + // "DB_Test".rTimeResult := RUNTIME("DB_Test".rTimeMem); + // "DB_S7".xGetStart := FALSE; + // END_IF; + // END_REGION +END_FUNCTION + diff --git a/=A01+UH01-KF00/Programmbausteine/_IBN/IBN.xml b/=A01+UH01-KF00/Programmbausteine/_IBN/IBN.xml new file mode 100644 index 0000000..eb544d9 --- /dev/null +++ b/=A01+UH01-KF00/Programmbausteine/_IBN/IBN.xml @@ -0,0 +1,201 @@ + + + + + + +
+ + + Ohne Kommunikation zum Partner fahren + + + + + + + Freigabe so dass nur wir die Anlage bedienen können + + + + + true + + + + + + + + + + + + + + + + + + + + + + + + + + true + + + true + + + false + + + true + + + true + + + true + + + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ Optimized + 100 + IBN + + 3 + DB +
+ + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + +
+
\ No newline at end of file diff --git a/=A01+UH01-KF00/Programmbausteine/_IBN/fbTestMain_DB.xml b/=A01+UH01-KF00/Programmbausteine/_IBN/fbTestMain_DB.xml new file mode 100644 index 0000000..6c85c5d --- /dev/null +++ b/=A01+UH01-KF00/Programmbausteine/_IBN/fbTestMain_DB.xml @@ -0,0 +1,77 @@ + + + + + + FB_TestMain + FB + +
+
+
+
+ + + true + + + + + true + + +
+ + fbTestMain_DB + + 41 + DB + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + \ No newline at end of file diff --git a/=A01+UH01-KF00/Programmbausteine/_Ladeschleife/400_Modules/FB_BoomWorkStation.scl b/=A01+UH01-KF00/Programmbausteine/_Ladeschleife/400_Modules/FB_BoomWorkStation.scl new file mode 100644 index 0000000..5229199 --- /dev/null +++ b/=A01+UH01-KF00/Programmbausteine/_Ladeschleife/400_Modules/FB_BoomWorkStation.scl @@ -0,0 +1,416 @@ +FUNCTION_BLOCK "FB_BoomWorkStation" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + VAR_INPUT + xInRunning : Bool; + xInSwitchPosition2 : Bool; // true=Position 2 aktivieren, also Stopper 1! + xInReceivingMT : Bool; // MT empfangen + xInReleaseMT : Bool; // MT rauslassen + stInSenStopper1 : "UDT_Sensor"; // "IN" Sensor, bzw der Sensor kurz vor Stopper 1 + stInSenStopper2 : "UDT_Sensor"; // IN Sensor des Stopper 2 + stInSenJamExit1 : "UDT_Sensor"; // Sensor Stau vor Vario am Ausgang + stInSenJamExit2 : "UDT_Sensor"; // Sensor Stau am Ende von Vario + tInSenWaitStopper1 : Time := T#300ms; // Wartezeit zwischen Sensor und Stopper + tInWaitAfterReleaseStopper1 : Time := T#4000ms; // Wartezeit nach MT Release + tInWaitBeforeSwitchStopper2 : Time := T#4000ms; // Wartezeit bevor von Stopper 1 zu Stopper 2 geschalten werden kann nachdem ein Teil losgeschickt wurde + tInTrailingStopper2 : Time := T#1500ms; // Zeit wie lange ohne Belegung offen sein muss + END_VAR + + VAR_OUTPUT + xOutStationMovement : Bool; + xOutReadyForReceiving : Bool; + nOutState : Int; + xOutStopper1Clamp : Bool; + xOutStopper1 : Bool; + xOutStopper2 : Bool; + END_VAR + + VAR_IN_OUT + arInOutCarrierStopper : Array[1..1] of "stCarrier"; // Carrierdaten im Stopper + arInOutCarrierExit : Array[*] of "stCarrier"; // Carrierdaten im Exitbereich + stInOutCarrierExit : "stJamData"; // JamStatus im Exitbereich + END_VAR + + VAR + fbStateManager : "FB_StateManager"; + stBookingInfo : "stEventBookingInfo"; + nState : Int; + END_VAR + VAR RETAIN + nActiveStopperNo : Int; // 1=Stopper 1, 2=Stopper 2 + xStopperFull : Bool; + nCountSensor1 { S7_SetPoint := 'True'} : Int := 0; // Flankenzähler vom Sensor Stopper 1 + nCountSensor2 : Int := 0; // Flankenzähler vom Sensor Stopper 2 + END_VAR + VAR + tOnTrailingStopper2 {InstructionName := 'TON_TIME'; LibVersion := '1.0'} : TON_TIME; // Timer für Öffnungszeit Stopper 2 + END_VAR + + VAR_TEMP + stTmpEmptyCarrier : "stCarrier"; + stTmpArrayEmptyCarrier : Array[1..1] of "stCarrier"; + xTmpActUnivTon : Bool; + xTmpCloseClampStopper1 : Bool; + xTmpOpenStopper1 : Bool; + xTmpOpenStopper2 : Bool; + xTmpMovement : Bool; + xTmpTrailingStopper2 : Bool; + xTmpReleaseDoneStopper1 : Bool; + xTmpReleaseDoneStopper2 : Bool; + xTmpReadyForReceiving : Bool; + END_VAR + + VAR CONSTANT + cStepOff : Int := 0; + cStepUndefined : Int := 100; + cStepIdle : Int := 200; + cStepStopper1Receive : Int := 1300; + cStepStopper1Clamp : Int := 1350; + cStepStopper1Hold : Int := 1400; + cStepStopper1Release : Int := 1500; + cStepStopper1Wait : Int := 1600; + cStepStopper2Receive : Int := 2300; + cStepStopper2Hold : Int := 2400; + cStepStopper2Release : Int := 2500; + cStepStopper2Wait : Int := 2600; + cStepWaitForChange : Int := 3000; + END_VAR + + +BEGIN + + REGION Count Sensor + //zählt Sensorflanken vom In Sensor beim Einfahren, + //da sich der Sensor etwas weiter VOR dem Stopper befindet + IF #nState = #cStepStopper1Receive THEN + IF #stInSenStopper1.xDirectEdgePos THEN + #nCountSensor1 += 1; + END_IF; + ELSE + #nCountSensor1 := 0; + END_IF; + + //zählt Sensorflanken vom nächsten Sensor beim Durchfahren, + //da dies die einzige Rückmeldung beim Ausfahren ist + IF #nState = #cStepStopper2Release OR #nState = #cStepStopper1Wait OR + (#nState = #cStepIdle AND #fbStateManager.tOutTimeInStep < #tInWaitBeforeSwitchStopper2) THEN + IF #stInSenStopper2.xDirectEdgeNeg THEN + #nCountSensor2 += 1; + END_IF; + ELSE + #nCountSensor2 := 0; + END_IF; + + END_REGION + + REGION Schrittkette + CASE #nState OF + #cStepOff: + REGION 000: Off + #nOutState := #cStepOff; + + #xTmpCloseClampStopper1 := FALSE; + #xTmpOpenStopper1 := FALSE; + #xTmpOpenStopper2 := FALSE; + #xTmpReadyForReceiving := FALSE; + #xTmpMovement := FALSE; + ////////////////////////////////////// + + END_REGION + + #cStepUndefined: + REGION 100: Undefined + #nOutState := #cStepUndefined; + + #xTmpCloseClampStopper1 := FALSE; + #xTmpOpenStopper1 := FALSE; + #xTmpOpenStopper2 := FALSE; + #xTmpReadyForReceiving := FALSE; + #xTmpMovement := FALSE; + ////////////////////////////////////// + + #nState := #cStepIdle; + + END_REGION + + #cStepIdle: + REGION 200: Idle + #nOutState := #cStepIdle; + + // #xTmpCloseClampStopper1 := FALSE; + // #xTmpOpenStopper1 := FALSE; + // #xTmpOpenStopper2 := FALSE; + #xTmpReadyForReceiving := NOT #xStopperFull; + #xTmpMovement := FALSE; + /////////////////////////////////////// + IF #xInSwitchPosition2 THEN + #nActiveStopperNo := 1; + #xTmpCloseClampStopper1 := FALSE; + #xTmpOpenStopper1 := FALSE; + #xTmpOpenStopper2 := TRUE; + ELSIF NOT #xInSwitchPosition2 AND (#nCountSensor2 >= 2 OR #fbStateManager.tOutTimeInStep > #tInWaitBeforeSwitchStopper2) THEN + #nActiveStopperNo := 2; + #xTmpCloseClampStopper1 := FALSE; + #xTmpOpenStopper1 := TRUE; + #xTmpOpenStopper2 := FALSE; + ELSE + #xTmpCloseClampStopper1 := FALSE; + #xTmpOpenStopper1 := FALSE; + #xTmpOpenStopper2 := TRUE; + END_IF; + + IF (* #xInReceivingMT *) #xStopperFull AND #nActiveStopperNo = 1 THEN + #nState := #cStepStopper1Receive; + ELSIF (* #xInReceivingMT *) #xStopperFull AND #nActiveStopperNo = 2 THEN + #nState := #cStepStopper2Receive; + END_IF; + + END_REGION + + REGION ///// STOPPER 1 ///// + END_REGION + + #cStepStopper1Receive: + REGION 1300: Stopper 1 Receive + #nOutState := #cStepStopper1Receive; + + #xTmpCloseClampStopper1 := FALSE; + #xTmpOpenStopper1 := FALSE; + #xTmpOpenStopper2 := TRUE; + #xTmpReadyForReceiving := FALSE; + #xTmpMovement := TRUE; + /////////////////////////////////////// + + + IF #nCountSensor1 >= 2 THEN + #nState := #cStepStopper1Clamp; + END_IF; + + + END_REGION + + #cStepStopper1Clamp: + REGION 1350: Stopper 1 Clamp + #nOutState := #cStepStopper1Clamp; + + #xTmpCloseClampStopper1 := FALSE; + #xTmpOpenStopper1 := FALSE; + #xTmpOpenStopper2 := TRUE; + #xTmpReadyForReceiving := FALSE; + #xTmpMovement := TRUE; + /////////////////////////////////////// + + IF #fbStateManager.tOutTimeInStep > #tInSenWaitStopper1 THEN + #xTmpCloseClampStopper1 := TRUE; + #nState := #cStepStopper1Hold; + END_IF; + + END_REGION + + #cStepStopper1Hold: + REGION 1400: Stopper 1 Hold + #nOutState := #cStepStopper1Hold; + + #xTmpCloseClampStopper1 := TRUE; + #xTmpOpenStopper1 := FALSE; + #xTmpOpenStopper2 := TRUE; + #xTmpReadyForReceiving := FALSE; + #xTmpMovement := FALSE; + /////////////////////////////////////// + + IF #xInReleaseMT AND + #stInOutCarrierExit.Status.nCount < #stInOutCarrierExit.Config.nCapacitySet AND + NOT #stInSenJamExit1.xJam AND NOT #stInSenJamExit2.xJam THEN + #xTmpCloseClampStopper1 := FALSE; + #xTmpOpenStopper1 := TRUE; + #nState := #cStepStopper1Release; + END_IF; + + + END_REGION + + #cStepStopper1Release: + REGION 1500: Stopper 1 Release + #nOutState := #cStepStopper1Release; + + #xTmpCloseClampStopper1 := FALSE; + #xTmpOpenStopper1 := TRUE; + #xTmpOpenStopper2 := TRUE; + #xTmpReadyForReceiving := FALSE; + #xTmpMovement := TRUE; + /////////////////////////////////////// + IF NOT #xInSwitchPosition2 THEN + #nState := #cStepStopper1Wait; + ELSIF ((* NOT #xInSwitchReq AND *) #fbStateManager.tOutTimeInStep > #tInWaitAfterReleaseStopper1) THEN + // #xTmpOpenStopper := TRUE; + #xTmpReleaseDoneStopper1 := TRUE; + #nState := #cStepIdle;//#cStepWait; + END_IF; + + END_REGION + + #cStepStopper1Wait: + REGION 1600: Stopper 1 Wait + #nOutState := #cStepStopper1Wait; + + #xTmpCloseClampStopper1 := FALSE; + #xTmpOpenStopper1 := TRUE; + #xTmpOpenStopper2 := TRUE; + #xTmpReadyForReceiving := FALSE; + #xTmpMovement := TRUE; + /////////////////////////////////////// + + IF #nCountSensor2 >= 2 THEN + #xTmpReleaseDoneStopper1 := TRUE; + #nState := #cStepIdle; + END_IF; + + END_REGION + + REGION ///// STOPPER 2 ///// + END_REGION + + #cStepStopper2Receive: + REGION 2300: Stopper 2 Receive + #nOutState := #cStepStopper2Receive; + + #xTmpCloseClampStopper1 := FALSE; + #xTmpOpenStopper1 := TRUE; + #xTmpOpenStopper2 := FALSE; + #xTmpReadyForReceiving := FALSE; + #xTmpMovement := TRUE; + + /////////////////////////////////////// + + IF #stInSenStopper2.xDbncdSensor THEN + #nState := #cStepStopper2Hold; + END_IF; + + END_REGION + + #cStepStopper2Hold: + REGION 2400: Stopper 2 Hold + #nOutState := #cStepStopper2Hold; + + #xTmpCloseClampStopper1 := FALSE; + #xTmpOpenStopper1 := TRUE; + #xTmpOpenStopper2 := FALSE; + #xTmpReadyForReceiving := FALSE; + #xTmpMovement := FALSE; + + /////////////////////////////////////// + + // IF NOT #stInSenStopper2.xDirectSensor THEN + // #nState := #cStepStopper2Receive; + // ELS + IF #xInReleaseMT AND #stInSenStopper2.xDbncdSensor AND + #stInOutCarrierExit.Status.nCount < #stInOutCarrierExit.Config.nCapacitySet AND + NOT #stInSenJamExit1.xJam AND NOT #stInSenJamExit2.xJam THEN + #nState := #cStepStopper2Release; + END_IF; + + + END_REGION + + #cStepStopper2Release: + REGION 2500: Stopper 2 Release + #nOutState := #cStepStopper2Release; + + #xTmpCloseClampStopper1 := FALSE; + #xTmpOpenStopper1 := TRUE; + #xTmpOpenStopper2 := TRUE; + #xTmpReadyForReceiving := FALSE; + #xTmpMovement := TRUE; + + //////////////////////////////////// + + IF #nCountSensor2 >= 2 THEN + #nState := #cStepStopper2Wait; + END_IF; + + END_REGION + + #cStepStopper2Wait: + REGION 2600: Stopper 2 Wait + #nOutState := #cStepStopper2Wait; + + #xTmpCloseClampStopper1 := FALSE; + #xTmpOpenStopper1 := TRUE; + #xTmpOpenStopper2 := TRUE; + #xTmpReadyForReceiving := FALSE; + #xTmpMovement := FALSE; + + #xTmpTrailingStopper2 := NOT #stInSenStopper2.xDirectSensor; + /////////////////////////////////////// + + IF #tOnTrailingStopper2.Q THEN + #xTmpReleaseDoneStopper2 := TRUE; + #nState := #cStepIdle; + END_IF; + + END_REGION + + #cStepWaitForChange: + REGION 3000: Wait For Change + #nOutState := #cStepWaitForChange; + + + /////////////////////////////////////// + + ; + + + END_REGION + + ELSE // Statement section ELSE + + #nState := #cStepUndefined; + END_CASE; + END_REGION + + REGION State Manager + + #fbStateManager.stInSettings.nStartState := #cStepUndefined; + #fbStateManager.stInSettings.xActUnivTOn := TRUE; + #fbStateManager.stInSettings.xRestartAtStartState := FALSE; + #fbStateManager(xInFunctionEnabled := #xInRunning, + xInRunUnivTOn := #xTmpActUnivTon, + nInOutState := #nState); + END_REGION + + REGION Timer + #tOnTrailingStopper2(IN := #xTmpTrailingStopper2, + PT := #tInTrailingStopper2); + END_REGION + + REGION Belegung + IF #nState > #cStepIdle OR #xInReceivingMT THEN + #xStopperFull := TRUE; + ELSIF #xTmpReleaseDoneStopper1 OR #xTmpReleaseDoneStopper2 THEN + #xStopperFull := FALSE; + END_IF; + END_REGION + + + REGION Stopper FC_Route + "FC_Route"(xInSingle := FALSE, + xInSeparate := FALSE, + xInSepEdge := #xTmpReleaseDoneStopper1 OR #xTmpReleaseDoneStopper2, + xInSensor := FALSE, + xInDelay := FALSE, + stInCarrier := #stTmpEmptyCarrier, + stOutBookingInfo => #stBookingInfo, + arJamEntr := #arInOutCarrierStopper, + arOnTheWay := #stTmpArrayEmptyCarrier, + arJamExit := #arInOutCarrierExit); + END_REGION + + REGION Ausgänge + #xOutStopper1Clamp := #xTmpCloseClampStopper1; + #xOutStopper1 := #xTmpOpenStopper1; + #xOutStopper2 := #xTmpOpenStopper2; + #xOutStationMovement := #xTmpMovement; + #xOutReadyForReceiving := #xTmpReadyForReceiving; + END_REGION +END_FUNCTION_BLOCK + diff --git a/=A01+UH01-KF00/Programmbausteine/_Ladeschleife/400_Modules/FB_ButtonAck.scl b/=A01+UH01-KF00/Programmbausteine/_Ladeschleife/400_Modules/FB_ButtonAck.scl new file mode 100644 index 0000000..848df25 --- /dev/null +++ b/=A01+UH01-KF00/Programmbausteine/_Ladeschleife/400_Modules/FB_ButtonAck.scl @@ -0,0 +1,90 @@ +FUNCTION_BLOCK "FB_ButtonAck" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + VAR_INPUT + tInPeriodicTime : Time := T#500ms; + sInDeviceName : String; + xInButtonNIU : Bool; + xInAckReqLocal : Bool; + xInEstopOkLocal : Bool; + xInAckReqGlobal : Bool; + xInSafetyNotOkGlobal : Bool; + xInGlobFunctionActive : Bool; + END_VAR + + VAR_OUTPUT + xOutLed : Bool; + xOutSafetyNotOk : Bool; + xOutAckReq : Bool; + END_VAR + + VAR_IN_OUT + stInOutControlUnitCabinet : "UDT_MainState"; + END_VAR + + VAR + FB_Blinker { S7_SetPoint := 'False'} : "FB_Blinker"; + fbMonitoringEStop : "FB_Monitoring"; + END_VAR + + +BEGIN + REGION Blinker + #FB_Blinker(tInPeriodicTime := #tInPeriodicTime, + xInActivate:=TRUE); + END_REGION + + REGION Logic + + IF NOT #xInGlobFunctionActive THEN + + IF NOT #xInEstopOkLocal AND #xInAckReqLocal THEN + #xOutLed := #FB_Blinker.xOutput; + #xOutSafetyNotOk := FALSE; + #xOutAckReq := TRUE; + ELSIF NOT #xInEstopOkLocal AND NOT #xInAckReqLocal THEN + #xOutLed := TRUE; + #xOutSafetyNotOk := TRUE; + #xOutAckReq := FALSE; + ELSIF #xInEstopOkLocal AND NOT #xInAckReqLocal THEN + #xOutLed := FALSE; + #xOutSafetyNotOk := FALSE; + #xOutAckReq := FALSE; + ELSE + #xOutLed := TRUE; + #xOutSafetyNotOk := TRUE; + #xOutAckReq := FALSE; + END_IF; + + ELSE + + IF ((NOT #xInEstopOkLocal AND #xInAckReqLocal AND NOT #xInAckReqGlobal) OR + (#xInEstopOkLocal AND NOT #xInAckReqLocal AND #xInAckReqGlobal) OR + (NOT #xInEstopOkLocal AND #xInAckReqLocal AND #xInAckReqGlobal)) + AND NOT #xInSafetyNotOkGlobal THEN + #xOutLed := #FB_Blinker.xOutput; + ELSIF (NOT #xInEstopOkLocal AND NOT #xInAckReqLocal) OR #xInSafetyNotOkGlobal THEN + #xOutLed := true; + ELSIF #xInEstopOkLocal AND NOT #xInAckReqLocal THEN + #xOutLed := false; + ELSE + #xOutLed := true; + END_IF; + + END_IF; + END_REGION + + REGION Monitoring + + #fbMonitoringEStop.stSettings.nErrorType := 2; + #fbMonitoringEStop.stSettings.xErrLedIfMachineIsOff := TRUE; + #fbMonitoringEStop.stSettings.xSelfQuit := TRUE; + #fbMonitoringEStop(sInFctnName := 'E-Stop', + xInQuitError := #stInOutControlUnitCabinet.xQuitError, + xInSignal := #xInEstopOkLocal, + sInAlarmMessage := 'Not-Halt gedrueckt', + InOutMachineState:=#stInOutControlUnitCabinet); + + END_REGION +END_FUNCTION_BLOCK + diff --git a/=A01+UH01-KF00/Programmbausteine/_Ladeschleife/400_Modules/FB_DistanceFoot.scl b/=A01+UH01-KF00/Programmbausteine/_Ladeschleife/400_Modules/FB_DistanceFoot.scl new file mode 100644 index 0000000..019c9fe --- /dev/null +++ b/=A01+UH01-KF00/Programmbausteine/_Ladeschleife/400_Modules/FB_DistanceFoot.scl @@ -0,0 +1,95 @@ +FUNCTION_BLOCK "FB_DistanceFoot" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + VAR_INPUT + xInUp : Bool; // true = fährt gerade hoch + xInDown : Bool; // true = fährt gerade runter + wInDistance { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : Word; // Rohwerte von Sensor + nInStartSlow { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : Int; // Unterhalb diesen Wertes wird langsam gefahren + nInStartFast { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : Int; // Oberhalb diesen Wertes wird schnell gefahren + nInDistanceZero : Int := 2460; // Abstand der für Bodenkontakt steht + nInDiff : Int := 250; // Dieser Wert +- ist die Grenze ab der ein Fehler generiert wird bei Bodenkontakt + tInDiff : Time := T#1500ms; // Zeit wie lange die Differenz ansteht bis ein Fehler generiert wird + xInComp : Bool; // Teach Bit um die Werte beizubringen + xInOver2m : Bool; // Signal dass sich Ladeschleife über 2m Auslage befindet + END_VAR + + VAR_OUTPUT + nOutDistance { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : Int; // Distanzwert INT + xOutBelowThreshold : Bool; // Unter Schwelle Kriechgang + xOutAboveThreshold : Bool; // Über Schwelle Kriechgang + xOutError : Bool; // Fehler allgemein + xOutGroundContact : Bool; // Bodenkontakt ermittelt + xOutTeachNec : Bool; // Teachen notwendig + END_VAR + + VAR RETAIN + xCrawl : Bool; // Kriechgang aktiv + nDistance { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : Int; // Abstandswert INT + nDistanceZero : Int; // Eingestellter Sollwert der für Bodenkontakt steht + nDiff : Int; // Wert +- um DistanceZero Sollwert der die gültige Toleranz darstellt + tOnDiff {InstructionName := 'TON_TIME'; LibVersion := '1.0'; S7_SetPoint := 'False'} : TON_TIME; // Solange muss Sollwert abweichen damit Fehler kommt + tOnrUp {InstructionName := 'TONR_TIME'; LibVersion := '1.0'; S7_SetPoint := 'False'} : TONR_TIME; // NIU + tOnrDown {InstructionName := 'TONR_TIME'; LibVersion := '1.0'} : TONR_TIME; // NIU + xGroundContact : Bool; // Es besteht Bodenkontakt + xError : Bool; // Fehlerbit allgemein + END_VAR + + +BEGIN + REGION Umwandeln + #nOutDistance := #nDistance := WORD_TO_INT(#wInDistance); + END_REGION + + REGION Kriechgang ermitteln + IF #nDistance < #nInStartSlow THEN + #xCrawl := TRUE; + ELSIF #nDistance > #nInStartFast THEN + #xCrawl := FALSE; + END_IF; + + IF #nDistance <= #nDistanceZero + #nDiff THEN + #xGroundContact := TRUE; + ELSIF #nDistance > #nDistanceZero + #nDiff + 50 THEN + #xGroundContact := FALSE; + END_IF; + END_REGION + + + + REGION Zero-Wert Teachen + IF #xInComp THEN + IF #nInDistanceZero > 0 AND #nInDiff > 0 THEN + #nDistanceZero := #nInDistanceZero; + #nDiff := #nInDiff; + END_IF; + END_IF; + END_REGION + + REGION Timer + #tOnDiff(IN:=#nDistance = 0 OR + (#xGroundContact AND #xInOver2m AND + ((#nDistance > #nDistanceZero + #nDiff) OR (#nDistance < #nDistanceZero - #nDiff))), + PT:=#tInDiff); + END_REGION + + REGION Fehler + IF #tOnDiff.Q OR + (#xInOver2m AND NOT #xGroundContact AND NOT #xInUp AND NOT #xInDown) + THEN + #xError := TRUE; + ELSE + #xError := FALSE; + END_IF; + END_REGION + + REGION Ausgänge + #xOutBelowThreshold := #xCrawl; + #xOutAboveThreshold := NOT #xCrawl; + #xOutError := #xError; + #xOutGroundContact := #xGroundContact; + #xOutTeachNec := #nDistanceZero = 0 OR #nDiff = 0; + END_REGION + +END_FUNCTION_BLOCK + diff --git a/=A01+UH01-KF00/Programmbausteine/_Ladeschleife/400_Modules/FB_LoadingBoom_INBOUND.scl b/=A01+UH01-KF00/Programmbausteine/_Ladeschleife/400_Modules/FB_LoadingBoom_INBOUND.scl new file mode 100644 index 0000000..df75c9c --- /dev/null +++ b/=A01+UH01-KF00/Programmbausteine/_Ladeschleife/400_Modules/FB_LoadingBoom_INBOUND.scl @@ -0,0 +1,898 @@ +FUNCTION_BLOCK "FB_LoadingBoom_INBOUND" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + VAR_INPUT + stInControl : Struct // Bedienelemente + xBtnReleaseMT1 : Bool; // Taster 1 Freigabe für MT + xSwitchLoadingPos2 : Bool; // Knebelschalter Loading Pos 1 oder 2, true=2, false=1 + xBtnBack : Bool; // Taster "Einfahren" + xBtnForth : Bool; // Taster "Ausfahren" + xBtnReleaseMT2 : Bool; // Taster 2 Freigabe für MT + xSwitchFootUp : Bool; // Knebelschalter "Hochfahren" + xSwitchFootDown : Bool; // Knebelschalter "Runterfahren" + xSwitchLightOnOff : Bool; // Knebelschalter Licht AN/AUS + xBtnBoomActive : Bool; // Taster Ladeschleife AN/AUS + xBtnReset : Bool; // Taster Reset + xSwitchFootManual : Bool; // Schlüsselschalter "Stützfuß verfahren" + END_STRUCT; + stInBoom : Struct // In Signale für Ausleger + xMotorProtection1 : Bool; // Meldekontakt Motorschutzschalter Motor 1 + xMotorProtection2 : Bool; // **NIU**Meldekontakt Motorschutzschalter Motor 2 + xLimitForth : Bool; // Endlage Vorne normal + xLimitForthEmergency : Bool; // Endlage Vorne NOT (normal überschritten) + xLimitBack : Bool; // Endlage Hinten normal + xLimitBackEmergency : Bool; // Endlage Hinten NOT (normal überschritten) + xBumperOk : Bool; // Bumper Stirnseitig + END_STRUCT; + stInFoot : Struct // In Signale für Stützfuß + xMotorProtection : Bool; // Meldekontakt Motorschutzschalter Stützfuß + xLimitUp : Bool; // Obere Endlage + xLimitDown : Bool; // Untere Endlage + END_STRUCT; + stInSettings : Struct + tBoomInput : Time := T#3500ms; // Zeit für Bediener-Eingabe Boom + tWheelInput : Time := T#3500ms; // Zeit für Bediener-Eingabe Wheel + tWaitForMove : Time := T#2500ms; // Zeit die bei Bewegungswunsch gewartet wird + tSenWaitStopper1 : Time := T#300ms; // Wartezeit zwischen Sensor und Stopper Clamp + tWaitAfterReleaseStopper1 : Time := T#4000ms; // Wartezeit nach MT Release + tWaitBeforeSwitchStopper2 : Time := T#4000ms; + tTrailingStopper2 : Time := T#1500ms; // Zeit wie lange ohne Belegung offen sein muss + END_STRUCT; + stInTilt : Struct // Neigungssensorik + wTilt : Word; // Eingangswert von Sensor + xClock : Bool; // Frequenz für Mittelwert Ermittlung + tDiff : Time; // Solange muss Abweichung bestehen damit nachgeregelt wird + tZero : Time; // Solange muss ca. Null bestehen damit gestoppt wird + nDiff : Int; // Abweichung > oder < als nDiff? ---> Nachregeln + nZeroOk : Int; // Bereich um Null in welchem nachregeln aufgehört wird + xComp : Bool; // Flanke um Kompensationswert einzustellen + nTiltComp : Int; // Wert von User um Tilt zu kompensieren, +X um größer zu werden, -X um kleiner zu werden + END_STRUCT; + stInDistance : Struct // Signale für Distanzsensor + wDistance : Word; // Rohwerte von Sensor + nStartSlow : Int; // Unterhalb diesen Wertes wird langsam gefahren + nStartFast : Int; // Oberhalb diesen Wertes wird schnell gefahren + nDistanceZero : Int; // Abstand der für Bodenkontakt steht + nDiff : Int; // Dieser Wert +- ist die Grenze ab der ein Fehler generiert wird bei Bodenkontakt + tDiff : Time; // Zeit wie lange die Differenz ansteht bis ein Fehler generiert wird + xComp : Bool; // Teach Bit um die Werte beizubringen + END_STRUCT; + stInSen2mThreshold : "UDT_Sensor"; // Induktiver Sensor Position 2m, true= unter 2m. false=über 2m + stInSenJamEntr : "UDT_Sensor"; // Sensor Stau nach Vario am Eingang + stInSenJamExit1 : "UDT_Sensor"; // Sensor Stau vor Vario am Ausgang + stInSenJamExit2 : "UDT_Sensor"; // Sensor Stau am Ende von Vario + stInSenStopper1 : "UDT_Sensor"; // Sensor KURZ VOR Stopper 1 von Arbeitsplatz + stInSenStopper2 : "UDT_Sensor"; // Sensor IN Stopper 2 von Arbeitsplatz + stInSenGrid : "UDT_Sensor"; // Sensor "Karussell dreht sich" + xInMachineRunning : Bool; // Machine Running + xInTrolleyInSep : Bool; // Separator vor dem Stopper hat einen Trolley + xInSafety : Bool; // Safety ok + END_VAR + + VAR_OUTPUT + xOutLedMovement : Bool; // Orangene Warn Leuchte für Bewegung der Ladeschleife + xOutLight : Bool; // Beleuchtung Ladeschleife an der Decke + xOutBoomActive : Bool; // LS eingeschaltet, ready for use + xOutReady : Bool; // Bereit für TROs + xOutMoveReq : Bool; // Bereit um auf Bewegung der Ladeschleife umzuschalten + END_VAR + VAR_OUTPUT RETAIN + stOutStopper : Struct // Ausgänge Stopper allgemein + xStopper1Clamp : Bool; // Schiebe Stopper 1 vor + xStopper1Finger : Bool; // Schalte Stopper 1 runter + xStopper2 : Bool; // Öffne Stopper 2 + xStopperEmpty : Bool; // Stopperstatus leer + xStopperFreeEdge : Bool; // Flanke dass Stopper frei wird + xStopperReceive : Bool; // Flanke dass Stopper aufnehmen will + END_STRUCT; + END_VAR + VAR_OUTPUT + stOutBoom : Struct // Ausgänge Ladeschleife allgemein + xBoomForth1 : Bool; // Rausfahren Motor 1 + xBoomForth2 : Bool; // Rausfahren Motor 2 + xBoomBack1 : Bool; // Zurückfahren Motor 1 + xBoomBack2 : Bool; // Zurückfahren Motor 2 + END_STRUCT; + stOutFoot : Struct // Ausgänge Stützfuß allgemein + xFootUp : Bool; // Hochfahren + xFootDown : Bool; // Runterfahren + xFootSpeed1 : Bool; // Geschwindigkeit 1 (Kriechgang) + END_STRUCT; + xOutCarousel : Bool; // Rechtslauf drehen + nOutState : Int; // Zustand des Bausteins + xOutLedBumper : Bool; // LED Bumper ausgelöst + xOutStopperState : Bool; + END_VAR + + VAR_IN_OUT + arInOutCarrierStopper : Array[1..1] of "stCarrier"; // Carrierdaten im Stopper + arInOutCarrierExit : Array[*] of "stCarrier"; // Carrierdaten im Exitbereich + stInOutCarrierExit : "stJamData"; // JamStatus im Exitbereich + END_VAR + + VAR + fbTiltSensor : "FB_Tilt_TEST"; + fbDistanceFoot : "FB_DistanceFoot"; + fbWorkSation : "FB_BoomWorkStation"; + END_VAR + VAR RETAIN + nState : Int; + END_VAR + VAR + fbStateManager : "FB_StateManager"; + rTrigBoomActive {InstructionName := 'R_TRIG'; LibVersion := '1.0'} : R_TRIG; // Flanke von Ladeschleife einschalten + rTrigBtnForth {InstructionName := 'R_TRIG'; LibVersion := '1.0'} : R_TRIG; // Flanke für VOR-Taster + rTrigBtnBack {InstructionName := 'R_TRIG'; LibVersion := '1.0'} : R_TRIG; // Flanke für ZURÜCK-Taster + rTrigBtnReleaseMT {InstructionName := 'R_TRIG'; LibVersion := '1.0'} : R_TRIG; // Flanke für Taster 1 und 2 am Arbeitsplatz + rTrigBtnReset {InstructionName := 'R_TRIG'; LibVersion := '1.0'} : R_TRIG; // Flanke für Resettaster + rTrigLimitForth {InstructionName := 'R_TRIG'; LibVersion := '1.0'} : R_TRIG; // Flanke für Endlage Vorne + rTrigLimitForthEmergency {InstructionName := 'R_TRIG'; LibVersion := '1.0'} : R_TRIG; // Flanke für Endlage Vorne Rollenschalter + rTrigLimitBack {InstructionName := 'R_TRIG'; LibVersion := '1.0'} : R_TRIG; // Flanke für Endlage Hinten + rTrigLimitBackEmergency {InstructionName := 'R_TRIG'; LibVersion := '1.0'} : R_TRIG; // Flanke für Endlage Hinten Rollenschalter + rTrigLimitUp {InstructionName := 'R_TRIG'; LibVersion := '1.0'} : R_TRIG; // Flanke für Endlage Oben + rTrigLimitDown {InstructionName := 'R_TRIG'; LibVersion := '1.0'} : R_TRIG; // Flanke für Endlage Unten + rTrigStopperFull {InstructionName := 'R_TRIG'; LibVersion := '1.0'} : R_TRIG; // Flanke für das Einfahren in den Stopper + tOnBoomInput {InstructionName := 'TON_TIME'; LibVersion := '1.0'} : TON_TIME; // Timer der abläuft wenn länger keine Eingabe durch Bediener erfolgt + tOnFootInput {InstructionName := 'TON_TIME'; LibVersion := '1.0'} : TON_TIME; // Timer der abläuft wenn länger keine Eingabe durch Bediener erfolgt + END_VAR + VAR RETAIN + tOnStopper2 {InstructionName := 'TON_TIME'; LibVersion := '1.0'} : TON_TIME; // Timer für Stopper 2 Release + tOnStopper1 {InstructionName := 'TON_TIME'; LibVersion := '1.0'} : TON_TIME; // Timer für Stopper 1 Release + xBoomActive : Bool; // Ladeschleife ist eingeschaltet + xErrorLogical : Bool; // Fehlerbit Schrittkette + xErrorSensor : Bool; // **NIU**Fehlerbit Sensorik + xHightInvalid : Bool; // Höhenanpassung notwendig + xFloorReached : Bool; // Bodenhöhe erreicht für Schleichfahrt + xAbove2m : Bool; // Ausleger 2 m überschritten + xLight : Bool; // Lichtbit + xStopper1Active : Bool; // Stopper 1 ist aktiviert + xStopperBusy : Bool; // jeweiliger Stopper belegt + stTilt : Struct + nTiltRaw : Int; + nTiltMed : Int; + nTiltComp : Int; + xTiltPositive : Bool; // Neigungssensor zu hoch + xTiltNegative : Bool; // Neigungssensor zu niedrig + END_STRUCT; + END_VAR + + VAR_TEMP + stTmpActuator : Struct + xForth : Bool; + xBack : Bool; + xUp : Bool; + xDown : Bool; + xCarousel : Bool; + END_STRUCT; + xTmpReady : Bool; // Signal dass Ausleger einsatzbereit bereit + xTmpMoveReq : Bool; + xTmpActUnivTon : Bool; + xTmpMtOnTheWay : Bool; // Es wird MT an Stopper geschickt + END_VAR + + VAR CONSTANT + cStepOff : Int := 0; + cStepUndefined : Int := 100; + cStepIdle : Int := 200; + cStepStopper : Int := 250; + cStepWait : Int := 300; + cStepWaitForBoom : Int := 1000; + cStepMoveBoom : Int := 1500; + cStepWaitForFootMan : Int := 2000; + cStepMoveFootMan : Int := 2500; + cStepWaitForFootAutUp : Int := 3000; + cStepMoveFootAutUp : Int := 3500; + cStepWaitForFootAutDown : Int := 4000; + cStepMoveFootAutDown : Int := 4500; + cStepError : Int := 9999; + END_VAR + + +BEGIN + (* + Vor- und Zurückfahren: Nur manuell per Button. Nach Bumperauslösung nur zurück. + Normale induktive Endlagen melden Limit. Werden diese überfahren, dann kommt Rollenschalter der Strom abschaltet. + + Hoch- und Runterfahren: 4 Bit => 1 oder 2 entspr. L oder R, beide false oder beide true entspr. AUS. 3 oder 4 entspr. v1 oder v2, 3 und 4 entspr. v1+v2 + Nach induktivem 2m-Sensor -> automatisches Ausfahren + + Baustein managed: + - das Verfahren vor/zurück/hoch/runter + - die Logik für den Arbeitsplatz + - das Regeln des Auslegers + - den Zustand des Auslegers (bereit aufzunehmen, Anforderung das Teile benötigt werden, busy, Position des Auslegers, Stoppen aller MTROs wenn gerade verfahren wird, Kreisel fahren/stoppen) + + TROs auf dem Ausleger sind separat und kommunizieren extern mit ihm. Aufwand zu groß, die Schnittstellen der MainTROs nach außen zu führen, + sowie extra für Loading Boom alles extra mit SubTROs intern zu realisieren. + + -Wenn zu viel MT nach Vario sind, dann darf nicht zurückgefahren werden + -normaler Separator vor Arbeiter hat Scanner + -Am Arbeitsplatz NACH Separator ist ein besonderer Stopper an der Strinseite und danach zusätzlich ein einfacher Stopper (Sep mit nur einem Stachel) + -Wird begonnen seitlich -> MT fährt an offenem ersten Stopper vorbei und Taster 1 lässt MT am zweiten Stopper raus + -Später wenn Boom weiter draußen ist wird am geschlossnem ersten Stopper gearbeitet und MT mit Taster 2 rausgelassen, worauf MT danach durch offenen zweiten Stopper fährt + *) + + REGION Eingänge + (* + Beispiel: + c==========================Ausleger + |___ Abstand zu Boden 2 m + | + |___ Abstand zu Boden 60cm (>= 60cm schnell fahren - xFloorReachedEnd) + | + |___ Abstand zu Boden 50cm (<= 40cm langsam fahren - xFloorReachedStart) + | + O + + ///////////////////////////////Boden + *) + + IF #fbDistanceFoot.xOutBelowThreshold(* #stInFoot.xFloorReachedStart *) THEN + #xFloorReached := TRUE; + ELSIF #fbDistanceFoot.xOutAboveThreshold (* #stInFoot.xFloorReachedEnd *) THEN + #xFloorReached := FALSE; + END_IF; + + //ab 2 m ist Verwendung des Stützrades notwenig + // #x2mReached := #stInSen2mThreshold.xDbncdSensor; //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Regelung für Foot außerhalb von Schrittkette mit FB aufrufen!!!!!!!!!!!!! + IF (#stInSen2mThreshold.xDbncdEdgeNeg AND #stInControl.xBtnForth) OR (NOT #stInSen2mThreshold.xDbncdSensor AND #stInSen2mThreshold.tDirectChangeLast > T#500ms) THEN + #xAbove2m := TRUE; //provisorisch + ELSIF (#stInSen2mThreshold.xDbncdEdgePos AND #stInControl.xBtnBack) OR (#stInSen2mThreshold.xDbncdSensor AND #stInSen2mThreshold.tDirectChangeLast > T#500ms) THEN + #xAbove2m := FALSE; + // ELSIF #rTrigBtnBack.Q OR #rTrigBtnForth.Q THEN + // #xAbove2m := FALSE; //provisorisch + END_IF; + + REGION Flanken + + #rTrigBoomActive(CLK:=#stInControl.xBtnBoomActive); //Ladeschleife einschalten + + #rTrigBtnForth(CLK := #stInControl.xBtnForth); //Flanke für VOR-Taster + #rTrigBtnBack(CLK := #stInControl.xBtnBack); //Flanke für ZURÜCK-Taster + #rTrigBtnReleaseMT(CLK := #stInControl.xBtnReleaseMT1 OR #stInControl.xBtnReleaseMT2); //Flanke für Taster 1 und 2 am Arbeitsplatz + #rTrigBtnReset(CLK := #stInControl.xBtnReset); //Flanke für Resettaster + + #rTrigLimitForth(CLK := #stInBoom.xLimitForth); //Flanke für Endlage Vorne + #rTrigLimitForthEmergency(CLK := #stInBoom.xLimitForthEmergency); //Flanke für Endlage Vorne Rollenschalter + #rTrigLimitBack(CLK := #stInBoom.xLimitBack); //Flanke für Endlage Hinten + #rTrigLimitBackEmergency(CLK := #stInBoom.xLimitBackEmergency); //Flanke für Endlage Hinten Rollenschalter + #rTrigLimitUp(CLK := #stInFoot.xLimitUp); //Flanke für Endlage Oben + #rTrigLimitDown(CLK := #stInFoot.xLimitDown); //Flanke für Endlage Unten + END_REGION + + END_REGION + + REGION Timer + //In Schritt MoveBoom wird Eingabe erwartet, wenn nichts kommt -> Schrittwechsel + #tOnBoomInput(IN := #nState = #cStepMoveBoom AND NOT #stInControl.xBtnForth AND NOT #stInControl.xBtnBack, + PT := #stInSettings.tBoomInput); + + //In Schritt MoveWheel wird Eingabe erwartet, wenn nichts kommt -> Schrittwechsel + #tOnFootInput(IN := #nState = #cStepMoveFootMan AND NOT #stInControl.xSwitchFootUp AND NOT #stInControl.xSwitchFootDown, + PT := #stInSettings.tWheelInput); + + // #tOnStopper1(IN:=#xStopper1Active AND #fbStopper1.nOutState >= 500, + // PT:=_time_in_); + + END_REGION + + REGION Distance Sensor + //IBN + // IF #fbDistanceFoot.nDistanceZero = 0 THEN + // //Entsrpicht in LL ungefähr dem Distance Abstand am Boden + // #fbDistanceFoot.nDistanceZero := 2460; + // END_IF; + // IF #fbDistanceFoot.nDiff = 0 THEN + // #fbDistanceFoot.nDiff := 50; + // END_IF; + //IBN + + #fbDistanceFoot(xInUp:=#stOutFoot.xFootUp, + xInDown:=#stOutFoot.xFootDown, + wInDistance := #stInDistance.wDistance, + nInStartSlow := #stInDistance.nStartSlow, // Format z.B. 2799 für 2799mm + nInStartFast := #stInDistance.nStartFast, + nInDistanceZero := #stInDistance.nDistanceZero, + nInDiff := #stInDistance.nDiff, + tInDiff := #stInDistance.tDiff, + xInComp := #stInDistance.xComp, + xInOver2m := NOT #stInSen2mThreshold.xDbncdSensor); + // nOutDistance => "IBN".nDistance); VERSCHALTEN!!!!!!!! + END_REGION + + REGION Logik Regelung / Neigung + + //Ab Winkel +-X starte Nachregeln + // #xHightInvalid := "cTodoFalse"; //Höhenanpassung notwendig - to do + + #fbTiltSensor.stInSettings.tDiff := #stInTilt.tDiff;//"DB_Interface_HMI_INBOUND".stBoomData1.tDiff; + #fbTiltSensor.stInSettings.tZero := #stInTilt.tZero;//"DB_Interface_HMI_INBOUND".stBoomData1.tZero; + #fbTiltSensor.stInSettings.nDiff := #stInTilt.nDiff;//"DB_Interface_HMI_INBOUND".stBoomData1.nTiltAbweichung; + #fbTiltSensor.stInSettings.nZeroOk := #stInTilt.nZeroOk;//"DB_Interface_HMI_INBOUND".stBoomData1.nTiltBereichZero; + #fbTiltSensor.stInSettings.xComp := #stInTilt.xComp;//"DB_Interface_HMI_INBOUND".stBoomData1.xComp; + #fbTiltSensor.stInSettings.nTiltComp := #stInTilt.nTiltComp;//"DB_Interface_HMI_INBOUND".stBoomData1.nTiltNullen; + #fbTiltSensor(wInTilt := #stInTilt.wTilt, //"wTiltSensor" + xInClock := #stInTilt.xClock, //"Clock_10Hz",// + xInTiltActive:= NOT #stInSen2mThreshold.xDbncdSensor,//"DB_Interface_HMI_INBOUND".stBoomData1.xTiltÜberwachungActive, + xInTiltAdjust:= #nState = #cStepWait); + + #stTilt.nTiltMed := #fbTiltSensor.stOutTilt.nTiltCompMed; + + #xHightInvalid := #fbTiltSensor.xOutToHigh OR #fbTiltSensor.xOutToLow; + + + //Format 1/100 Grad + //Beispiel: + //+4 = +0.04 Grad + //+14 = +0.14 Grad + //+114 = +1.14 Grad + //etc. + + END_REGION + + REGION Schrittkette + CASE #nState OF + #cStepOff: + REGION 000: Off + #nOutState := #cStepOff; + + #stTmpActuator.xForth := FALSE; + #stTmpActuator.xBack := FALSE; + #stTmpActuator.xUp := FALSE; + #stTmpActuator.xDown := FALSE; + #stTmpActuator.xCarousel := FALSE; + + #xTmpReady := FALSE; + #xTmpMoveReq := FALSE; + END_REGION + + #cStepUndefined: + REGION 100: Undefined + #nOutState := #cStepUndefined; + + #stTmpActuator.xForth := FALSE; + #stTmpActuator.xBack := FALSE; + #stTmpActuator.xUp := FALSE; + #stTmpActuator.xDown := FALSE; + #stTmpActuator.xCarousel := FALSE; + + #xTmpReady := FALSE; + #xTmpMoveReq := FALSE; + ////////////////////////////////////// + + + IF NOT #xErrorLogical AND #fbStateManager.tOutTimeInStep > T#1000ms THEN + #nState := #cStepIdle; + END_IF; + END_REGION + + #cStepIdle: + REGION 200: Idle + //Idle Zustand in welchem Kreisel bereit ist und die MTROs normal arbeiten können + #nOutState := #cStepIdle; + + #stTmpActuator.xForth := FALSE; + #stTmpActuator.xBack := FALSE; + #stTmpActuator.xUp := FALSE; + #stTmpActuator.xDown := FALSE; + #stTmpActuator.xCarousel := FALSE; + + #xTmpReady := TRUE; + #xTmpMoveReq := FALSE; + /////////////////////////////////////// + + IF ((#rTrigBtnBack.Q AND NOT #stInBoom.xLimitBack) OR (#rTrigBtnForth.Q AND NOT #stInBoom.xLimitForth) OR NOT #stInBoom.xBumperOk) AND + NOT #fbWorkSation.xOutStationMovement THEN + #nState := #cStepWaitForBoom; + END_IF; + + IF (#stInControl.xSwitchFootManual AND ((#stInControl.xSwitchFootUp AND NOT #stInFoot.xLimitUp) OR (#stInControl.xSwitchFootDown AND NOT #stInFoot.xLimitDown (* AND NOT #fbDistanceFoot.xOutGroundContact *)))) AND + NOT #fbWorkSation.xOutStationMovement THEN + #nState := #cStepWaitForFootMan; + END_IF; + + // IF #xStopperBusy THEN + // #xTmpMtOnTheWay := TRUE; + // #nState := #cStepStopper; + // END_IF; + + // IF #xHightInvalid THEN + // #nState := #cStepWait; + // END_IF; + + IF #xErrorLogical THEN + #nState := #cStepError; + END_IF; + END_REGION + + // #cStepStopper: + // REGION 250: Stopper arbeitet + // // Warten für Stopperarbeit + // #nOutState := #cStepStopper; + + // #stTmpActuator.xForth := FALSE; + // #stTmpActuator.xBack := FALSE; + // #stTmpActuator.xUp := FALSE; + // #stTmpActuator.xDown := FALSE; + // #stTmpActuator.xCarousel := FALSE; + + // #xTmpReady := TRUE; + // #xTmpMoveReq := FALSE; + // ////////////////////////////////////////////// + + // // IF NOT #xHightInvalid THEN + // // #nState := #cStepMoveBoom;//#cStepUndefined; + // // END_IF; + + // // AND NOT #fbWorkSation.xOutStationMovement .... + + + // // IF ((#rTrigBtnBack.Q AND NOT #stInBoom.xLimitBack) OR (#rTrigBtnForth.Q AND NOT #stInBoom.xLimitForth) OR NOT #stInBoom.xBumperOk) AND + // // ((#xStopper1Active AND NOT #fbStopper1.xOutStopper) OR (NOT #xStopper1Active AND NOT #fbStopper2.xOutStopper)) THEN + // // #nState := #cStepWaitForBoom; + // // END_IF; + + // // IF (#stInControl.xSwitchFootManual AND ((#stInControl.xSwitchFootUp AND NOT #stInFoot.xLimitUp) OR (#stInControl.xSwitchFootDown AND NOT #stInFoot.xLimitDown AND NOT #fbDistanceFoot.xOutGroundContact))) AND + // // ((#xStopper1Active AND NOT #fbStopper1.xOutStopper) OR (NOT #xStopper1Active AND NOT #fbStopper2.xOutStopper)) THEN + // // #nState := #cStepWaitForFootMan; + // // END_IF; + + // // IF (NOT #xStopper1Active AND #fbStopper2.xOutReleaseDone) OR + // // (#xStopper1Active AND #fbStopper1.xOutReleaseDone) THEN + // // #xStopperBusy := FALSE; + // // #xTmpStopperFreeEdge := TRUE; + // // #nState := #cStepIdle; + // // END_IF; + + // IF #xErrorLogical THEN + // #nState := #cStepError; + // END_IF; + // END_REGION + + #cStepWait: + REGION 300: Wait + // Warten für Zustandswechsel + #nOutState := #cStepWait; + + #stTmpActuator.xForth := FALSE; + #stTmpActuator.xBack := FALSE; + #stTmpActuator.xUp := #fbTiltSensor.xOutToHigh; + #stTmpActuator.xDown := #fbTiltSensor.xOutToLow; + #stTmpActuator.xCarousel := FALSE; + + #xTmpReady := FALSE; + #xTmpMoveReq := FALSE; + ////////////////////////////////////////////// + + IF NOT #xHightInvalid THEN + #nState := #cStepMoveBoom;//#cStepUndefined; + END_IF; + + IF #xErrorLogical THEN + #nState := #cStepError; + END_IF; + END_REGION + + #cStepWaitForBoom: + REGION 1000: Wait for Boom + #nOutState := #cStepWaitForBoom; + + #stTmpActuator.xForth := FALSE; + #stTmpActuator.xBack := FALSE; + #stTmpActuator.xUp := FALSE; + #stTmpActuator.xDown := FALSE; + #stTmpActuator.xCarousel := FALSE; + + #xTmpReady := FALSE; + #xTmpMoveReq := TRUE; + /////////////////////////////////////////////// + + + IF #fbStateManager.tOutTimeInStep > #stInSettings.tWaitForMove OR NOT #stInBoom.xBumperOk THEN + #nState := #cStepMoveBoom; + END_IF; + + // IF #xHightInvalid THEN + // #nState := #cStepWait; + // END_IF; + + IF #xErrorLogical THEN + #nState := #cStepError; + END_IF; + END_REGION + + #cStepMoveBoom: + REGION 1500: Move Boom + #nOutState := #cStepMoveBoom; + + #stTmpActuator.xForth := #stInControl.xBtnForth AND NOT #stInControl.xBtnBack AND NOT #stInBoom.xLimitForth AND NOT #fbDistanceFoot.xOutError AND ((NOT #xAbove2m AND #stInFoot.xLimitUp) OR (#xAbove2m AND #fbDistanceFoot.xOutGroundContact)); + #stTmpActuator.xBack := #stInControl.xBtnBack AND NOT #stInControl.xBtnForth AND NOT #stInBoom.xLimitBack AND NOT #fbDistanceFoot.xOutError AND ((NOT #xAbove2m AND #stInFoot.xLimitUp) OR (#xAbove2m AND #fbDistanceFoot.xOutGroundContact)); + #stTmpActuator.xUp := FALSE; + #stTmpActuator.xDown := FALSE; + #stTmpActuator.xCarousel := FALSE; + + #xTmpReady := FALSE; + #xTmpMoveReq := FALSE; + //////////////////////////////////////////// + + // IF #stInLimitBoom.stSenThreshold.xDbncdSensor + + IF #tOnBoomInput.Q AND #stInBoom.xBumperOk THEN + #nState := #cStepIdle; + END_IF; + + IF #stInSen2mThreshold.xDbncdEdgeNeg AND #stInControl.xBtnForth THEN + #nState := #cStepWaitForFootAutDown; + END_IF; + + IF (#stInSen2mThreshold.xDbncdEdgePos AND #stInControl.xBtnBack) OR + (#stInSen2mThreshold.xDirectSensor AND NOT #stInFoot.xLimitUp AND #stInControl.xBtnBack) THEN + #nState := #cStepWaitForFootAutUp; + END_IF; + + IF #xHightInvalid THEN + #nState := #cStepWait; + END_IF; + + IF #xErrorLogical THEN + #nState := #cStepError; + END_IF; + END_REGION + + #cStepWaitForFootMan: + REGION 2000: Wait for Foot Manually + #nOutState := #cStepWaitForFootMan; + + #stTmpActuator.xForth := FALSE; + #stTmpActuator.xBack := FALSE; + #stTmpActuator.xUp := FALSE;//#stInControl.xSwitchFootUp AND NOT #stInControl.xSwitchFootDown AND NOT #stInFoot.xLimitUp; + #stTmpActuator.xDown := FALSE;//#stInControl.xSwitchFootDown AND NOT #stInControl.xSwitchFootUp AND NOT #stInFoot.xLimitDown; + #stTmpActuator.xCarousel := FALSE; + + #xTmpReady := FALSE; + #xTmpMoveReq := TRUE; + /////////////////////////////////////////////// + + IF NOT #stInControl.xSwitchFootManual THEN + #nState := #cStepIdle; + END_IF; + + IF #fbStateManager.tOutTimeInStep > #stInSettings.tWaitForMove THEN + #nState := #cStepMoveFootMan; + END_IF; + + // IF #xHightInvalid THEN + // #nState := #cStepWait; + // END_IF; + + IF #xErrorLogical THEN + #nState := #cStepError; + END_IF; + END_REGION + + #cStepMoveFootMan: + REGION 2500: Move Foot Manually + #nOutState := #cStepMoveFootMan; + + #stTmpActuator.xForth := FALSE; + #stTmpActuator.xBack := FALSE; + #stTmpActuator.xUp := #stInControl.xSwitchFootUp AND NOT #stInControl.xSwitchFootDown AND NOT #stInFoot.xLimitUp; + #stTmpActuator.xDown := #stInControl.xSwitchFootDown AND NOT #stInControl.xSwitchFootUp AND NOT #stInFoot.xLimitDown(* AND NOT #fbDistanceFoot.xOutGroundContact *); + #stTmpActuator.xCarousel := FALSE; + + #xTmpReady := FALSE; + #xTmpMoveReq := FALSE; + ///////////////////////////////////////////// + + + IF #tOnFootInput.Q OR NOT #stInControl.xSwitchFootManual THEN + #nState := #cStepIdle; + END_IF; + + // IF #xHightInvalid THEN + // #nState := #cStepWait; + // END_IF; + + IF #xErrorLogical THEN + #nState := #cStepError; + END_IF; + END_REGION + + + #cStepWaitForFootAutUp: + REGION 3000: Wait for Foot Automatic Up + #nOutState := #cStepWaitForFootAutUp; + + #stTmpActuator.xForth := FALSE; + #stTmpActuator.xBack := FALSE; + #stTmpActuator.xUp := FALSE; + #stTmpActuator.xDown := FALSE; + #stTmpActuator.xCarousel := FALSE; + + #xTmpReady := FALSE; + #xTmpMoveReq := FALSE; + /////////////////////////////////////////////// + + IF #fbStateManager.tOutTimeInStep > #stInSettings.tWaitForMove THEN + #nState := #cStepMoveFootAutUp; + END_IF; + + // IF #xHightInvalid THEN + // #nState := #cStepWait; + // END_IF; + + IF #xErrorLogical THEN + #nState := #cStepError; + END_IF; + END_REGION + + #cStepMoveFootAutUp: + REGION 3500: Move Foot Automatic Up + #nOutState := #cStepMoveFootAutUp; + + #stTmpActuator.xForth := FALSE; + #stTmpActuator.xBack := FALSE; + #stTmpActuator.xUp := NOT #stInFoot.xLimitUp; + #stTmpActuator.xDown := FALSE; + #stTmpActuator.xCarousel := FALSE; + + #xTmpReady := FALSE; + #xTmpMoveReq := FALSE; + ///////////////////////////////////////////// + + //Nur zum Testen dieses IF + IF #stInFoot.xLimitUp THEN + #nState := #cStepIdle; + END_IF; + + // IF #xHightInvalid THEN + // #nState := #cStepWait; + // END_IF; + + IF #xErrorLogical THEN + #nState := #cStepError; + END_IF; + END_REGION + + #cStepWaitForFootAutDown: + REGION 4000: Wait for Foot Automatic Down + #nOutState := #cStepWaitForFootAutDown; + + #stTmpActuator.xForth := FALSE; + #stTmpActuator.xBack := FALSE; + #stTmpActuator.xUp := FALSE; + #stTmpActuator.xDown := FALSE; + #stTmpActuator.xCarousel := FALSE; + + #xTmpReady := FALSE; + #xTmpMoveReq := FALSE; + /////////////////////////////////////////////// + + IF #fbStateManager.tOutTimeInStep > #stInSettings.tWaitForMove THEN + #nState := #cStepMoveFootAutDown; + END_IF; + + // IF #xHightInvalid THEN + // #nState := #cStepWait; + // END_IF; + + IF #xErrorLogical THEN + #nState := #cStepError; + END_IF; + END_REGION + + #cStepMoveFootAutDown: + REGION 4500: Move Foot Automatic Down + #nOutState := #cStepMoveFootAutDown; + + #stTmpActuator.xForth := FALSE; + #stTmpActuator.xBack := FALSE; + #stTmpActuator.xUp := FALSE; + #stTmpActuator.xDown := NOT (#fbDistanceFoot.nOutDistance <= 2460 AND #fbDistanceFoot.nOutDistance >= 2455) AND #stInControl.xBtnForth; + #stTmpActuator.xCarousel := FALSE; + + #xTmpReady := FALSE; + #xTmpMoveReq := FALSE; + ///////////////////////////////////////////// + + + IF #fbDistanceFoot.nOutDistance <= 2460 AND #fbDistanceFoot.nOutDistance >= 2455 THEN + #nState := #cStepIdle; + END_IF; + + // IF #xHightInvalid THEN + // #nState := #cStepWait; + // END_IF; + + IF #xErrorLogical THEN + #nState := #cStepError; + END_IF; + END_REGION + + #cStepError: + REGION 9999: Error + #nOutState := #cStepError; + + #stTmpActuator.xForth := FALSE; + #stTmpActuator.xBack := FALSE; + #stTmpActuator.xUp := FALSE; + #stTmpActuator.xDown := FALSE; + #stTmpActuator.xCarousel := FALSE; + + #xTmpReady := FALSE; + #xTmpMoveReq := FALSE; + ///////////////////////////////////////////////// + + + IF NOT #xErrorLogical THEN + #nState := #cStepUndefined; + END_IF; + END_REGION + + ELSE // Statement section ELSE + #stTmpActuator.xForth := FALSE; + #stTmpActuator.xBack := FALSE; + #stTmpActuator.xUp := FALSE; + #stTmpActuator.xDown := FALSE; + #stTmpActuator.xCarousel := FALSE; + + #xTmpReady := FALSE; + #xTmpMoveReq := FALSE; + + #nState := #cStepUndefined; + END_CASE; + END_REGION + + REGION State Manager + + IF #rTrigBoomActive.Q AND #xInMachineRunning AND #xInSafety(* AND NOT #xAbove2m AND #stInBoom.xLimitBack AND #stInFoot.xLimitUp AND NOT #xErrorLogical *) THEN + // IF #nState = #cStepIdle THEN + #xBoomActive := NOT #xBoomActive; + // END_IF; + ELSIF NOT #xInMachineRunning OR NOT #xInSafety THEN + #xBoomActive := FALSE; + END_IF; + + #fbStateManager.stInSettings.nStartState := #cStepUndefined; + #fbStateManager.stInSettings.xActUnivTOn := TRUE; + #fbStateManager.stInSettings.xRestartAtStartState := FALSE; + #fbStateManager(xInFunctionEnabled := #xBoomActive,// stInControl.xBtnBoomActive + xInRunUnivTOn := #xTmpActUnivTon, + nInOutState := #nState); + END_REGION + + + REGION Stopper Arbeitsplatz + + #fbWorkSation(xInRunning := #xBoomActive, + xInSwitchPosition2 := #stInControl.xSwitchLoadingPos2, + xInReceivingMT := #xInTrolleyInSep, + xInReleaseMT := #rTrigBtnReleaseMT.Q AND #nState = #cStepIdle, + stInSenStopper1 := #stInSenStopper1, + stInSenStopper2 := #stInSenStopper2, + stInSenJamExit1:= #stInSenJamExit1, + stInSenJamExit2:= #stInSenJamExit2, + tInSenWaitStopper1 := #stInSettings.tSenWaitStopper1, + tInWaitAfterReleaseStopper1 := #stInSettings.tWaitAfterReleaseStopper1, + tInWaitBeforeSwitchStopper2:=#stInSettings.tWaitBeforeSwitchStopper2, + tInTrailingStopper2 := #stInSettings.tTrailingStopper2, + // xOutReadyForReceiving => #stOutStopper.xStopperReceive, + xOutStopper1Clamp => #stOutStopper.xStopper1Clamp, + xOutStopper1 => #stOutStopper.xStopper1Finger, + xOutStopper2 => #stOutStopper.xStopper2, + arInOutCarrierStopper := #arInOutCarrierStopper, + arInOutCarrierExit := #arInOutCarrierExit, + stInOutCarrierExit:= #stInOutCarrierExit); + + #xOutStopperState := #fbWorkSation.xStopperFull; + + // #rTrigStopperFull(CLK:=#arInOutCarrierStopper[1].bStatus.%X0 OR #xInTrolleyInSep); + // IF #rTrigStopperFull.Q THEN + // #xStopperBusy := TRUE; + // //wird in Schrittkette zurückgesetzt + // END_IF; + + // IF #nState = #cStepIdle THEN + + // IF #stInControl.xSwitchLoadingPos1 AND NOT #xStopperBusy THEN + // #xStopper1Active := TRUE; + // ELSIF NOT #stInControl.xSwitchLoadingPos1 AND NOT #xStopperBusy THEN + // #xStopper1Active := FALSE; + // END_IF; + + // END_IF; + + + + // #fbStopper1(stInSensor := #stInSenStopper1, + // stInSensorNext:=#stInSenStopper2, + // tInSenWait := #stInSettings.tStopper1SenWait,//T#300ms, + // tInWaitAfterRelease := #stInSettings.tStopper1WaitAfterRelease,//T#4000ms, + // xInActive:=#xStopper1Active, + // xInSwitchReq:=NOT #stInControl.xSwitchLoadingPos1, + // xInRelease := #rTrigBtnReleaseMT.Q AND #nState = #cStepStopper, + // xInReceive := #xTmpMtOnTheWay, + // xOutClamp => #stOutStopper.xStopper1Clamp, + // xOutStopper => #stOutStopper.xStopper1Finger); + + // #fbStopper2(stInSensor := #stInSenStopper2, + // tInTrailing := #stInSettings.tStopper2Trailing,//T#1500ms, + // xInActive := NOT #xStopper1Active, + // xInRelease := #rTrigBtnReleaseMT.Q AND #nState = #cStepStopper, + // xInReceive := #xTmpMtOnTheWay, + // xOutStopper => #stOutStopper.xStopper2); + + END_REGION + REGION Fehler Handling + + IF (* NOT #xInSafety OR *) NOT #stInBoom.xMotorProtection1 OR NOT #stInFoot.xMotorProtection OR + #fbTiltSensor.xOutTeachNec OR #fbDistanceFoot.xOutTeachNec OR + (#stInBoom.xLimitForth AND #stInBoom.xLimitBack) OR + (#stInBoom.xLimitForthEmergency AND #stInBoom.xLimitBackEmergency) OR + (#stInFoot.xLimitUp AND #stInFoot.xLimitDown) OR + (#stTmpActuator.xForth AND (#rTrigLimitBack.Q OR #rTrigLimitBackEmergency.Q OR #rTrigLimitForthEmergency.Q)) OR + (#stTmpActuator.xBack AND (#rTrigLimitForth.Q OR #rTrigLimitForthEmergency.Q OR #rTrigLimitBackEmergency.Q)) OR + (#stTmpActuator.xUp AND #rTrigLimitDown.Q) OR + (#stTmpActuator.xDown AND #rTrigLimitUp.Q) THEN + #xErrorLogical := TRUE; //Fehler + ELSIF #xInSafety AND #stInBoom.xMotorProtection1 AND #stInFoot.xMotorProtection AND #stInControl.xBtnReset THEN + #xErrorLogical := FALSE; + END_IF; + + END_REGION + + REGION Ausgänge + + REGION Licht / Leuchtmelder + // IF #rTrigBtnLight.Q THEN + // #xLight := NOT #xLight; + // END_IF; + + //Licht an-/ausschalten am Arbeitsplatz + #xOutLight := #xLight := #stInControl.xSwitchLightOnOff; + + //LED Boom ready for use + #xOutBoomActive := #xBoomActive; + + #xOutLedMovement := + //Dauerleuchten=Boom wartet und Sep stoppt + //Langsam blinken=Nivellieren + //Schnell blinken=Boom oder Foot fährt + //Sehr schnell blinken = Endlage bereits erreicht + (#nState = #cStepWaitForBoom OR #nState = #cStepWaitForFootMan OR #nState = #cStepWaitForFootAutDown OR #nState = #cStepWaitForFootAutUp) OR + (#nState = #cStepWait AND "Clock_1Hz") OR + ((#nState = #cStepMoveBoom OR #nState = #cStepMoveFootMan OR #nState = #cStepMoveFootAutUp OR #nState = #cStepMoveFootAutDown) AND "Clock_2.5Hz") OR + (((#nState = #cStepIdle (* OR #nState = #cStepStopper *)) AND ((#stInControl.xBtnBack AND #stInBoom.xLimitBack) OR (#stInControl.xBtnForth AND #stInBoom.xLimitForth) OR (#stInControl.xSwitchFootDown AND #fbDistanceFoot.xOutGroundContact AND #stInControl.xSwitchFootManual) OR (#stInControl.xSwitchFootUp AND #stInFoot.xLimitUp AND #stInControl.xSwitchFootManual))) AND "Clock_10Hz"); + + #xOutLedBumper := NOT #stInBoom.xBumperOk; + END_REGION + + REGION Antriebe + + #xOutCarousel := #stTmpActuator.xCarousel; + + #stOutBoom.xBoomForth2 := #stOutBoom.xBoomForth1 := #stTmpActuator.xForth AND #stInBoom.xBumperOk; + #stOutBoom.xBoomBack2 := #stOutBoom.xBoomBack1 := #stTmpActuator.xBack; + + // #xOutFoot400V := "cTodoFalse"; //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + #stOutFoot.xFootUp := #stTmpActuator.xUp; + #stOutFoot.xFootDown := #stTmpActuator.xDown; + IF #xFloorReached THEN //Boden erreicht + #stOutFoot.xFootSpeed1 := TRUE; //langsam + // #xOutFootSpeed2 := FALSE; //schnell NIU + ELSE //Boden noch nicht erreicht + #stOutFoot.xFootSpeed1 := FALSE; //langsam + // #xOutFootSpeed2 := TRUE; //schnell NIU + END_IF; + END_REGION + + #xOutReady := #xTmpReady; + #xOutMoveReq := #xTmpMoveReq; + + #stOutStopper.xStopperEmpty := NOT #xStopperBusy; + #stOutStopper.xStopperReceive := #nState = #cStepIdle AND NOT #fbWorkSation.xOutStationMovement AND #fbWorkSation.xOutReadyForReceiving; + + END_REGION + +END_FUNCTION_BLOCK + diff --git a/=A01+UH01-KF00/Programmbausteine/_Ladeschleife/400_Modules/FB_MotorSimple_INBOUND.scl b/=A01+UH01-KF00/Programmbausteine/_Ladeschleife/400_Modules/FB_MotorSimple_INBOUND.scl new file mode 100644 index 0000000..da52974 --- /dev/null +++ b/=A01+UH01-KF00/Programmbausteine/_Ladeschleife/400_Modules/FB_MotorSimple_INBOUND.scl @@ -0,0 +1,166 @@ +FUNCTION_BLOCK "FB_MotorSimple_INBOUND" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + VAR_INPUT + stInMachineState : "UDT_MainState"; + stInSettings : Struct + tInRightAfter : Time := T#0ms; // Nachlaufzeit rechts + tInLeftAfter : Time := T#0ms; // Nachlaufzeit links + END_STRUCT; + xInQuitErrorOpt : Bool := false; // Optionaler Start-Nach-Störungs-Button + xInSafetyOk : Bool := false; + xInFuse : Bool := false; // Alle Sicherung i.O. + xInMotorOk : Bool := false; // Statusbit von MoviMot + sInFctnName : String := ''; + xInDriveRight : Bool := false; + xInDriveLeft : Bool := false; + END_VAR + + VAR_OUTPUT + xOutRight : Bool := false; + xOutLeft : Bool := false; + xOutEnable24V : Bool := false; + xOutEnable400V : Bool := false; + xOutError : Bool := false; + xOutAckReq : Bool := false; + xOutStatMtrLeft : Bool := false; + xOutStatMtrRight : Bool := false; + xOutMotOk : Bool := false; + END_VAR + + VAR_IN_OUT + stInOutControlUnitCabinet : "UDT_MainState"; + END_VAR + + VAR RETAIN + xRight : Bool := false; + xLeft : Bool := false; + tOfTimerRight {InstructionName := 'TOF_TIME'; LibVersion := '1.0'} : TOF_TIME; + tOfTimerLeft {InstructionName := 'TOF_TIME'; LibVersion := '1.0'} : TOF_TIME; + tOnMoviMotEnabled {InstructionName := 'TON_TIME'; LibVersion := '1.0'} : TON_TIME; + xQuitErrorFlag : Bool := false; + xErrorQuitPosEdge : Bool := false; + END_VAR + VAR + fbSetAlarmAndLog : "FB_SetAlarmAndLog"; + END_VAR + VAR RETAIN + xError : Bool := false; + END_VAR + + +BEGIN + REGION Fahren + #xRight := + #xInFuse AND + #xInSafetyOk AND + #stInMachineState.xRunning AND + NOT #xError AND + NOT #stInMachineState.xError AND + #tOfTimerRight.Q AND + NOT #tOfTimerLeft.Q AND + #xInMotorOk; + + #xLeft := + #xInFuse AND + #xInSafetyOk AND + #stInMachineState.xRunning AND + NOT #xError AND + NOT #stInMachineState.xError AND + #tOfTimerLeft.Q AND + NOT #tOfTimerRight.Q AND + #xInMotorOk; + + #xOutEnable400V := + #xOutEnable24V := #xInFuse AND + #xInSafetyOk AND + NOT #xError AND + #stInMachineState.xRunning AND + NOT #stInMachineState.xError; + END_REGION + + REGION Fehler + + IF (#xInDriveLeft AND #xInDriveRight) THEN + #xError := TRUE; + #fbSetAlarmAndLog.nInAlarmNumber := 0; + #fbSetAlarmAndLog.xInAlarm := TRUE; + #fbSetAlarmAndLog.sInAlarmMessage := 'Motor Li und Re'; + ELSE + #fbSetAlarmAndLog.xInAlarm := FALSE; + END_IF; + + IF NOT #xInFuse AND #stInMachineState.xRunning THEN + #xError := TRUE; + #fbSetAlarmAndLog.nInAlarmNumber := 1; + #fbSetAlarmAndLog.xInAlarm := TRUE; + #fbSetAlarmAndLog.sInAlarmMessage := 'Motorsicherung'; + ELSE + #fbSetAlarmAndLog.xInAlarm := FALSE; + END_IF; + + IF #tOnMoviMotEnabled.ET > T#10S AND + NOT #xInMotorOk THEN + #xError := TRUE; + #fbSetAlarmAndLog.nInAlarmNumber := 2; + #fbSetAlarmAndLog.xInAlarm := TRUE; + #fbSetAlarmAndLog.sInAlarmMessage := 'Movimot Fehler'; + END_IF; + + END_REGION + + REGION Timer + #tOfTimerRight(IN := #xInDriveRight, + PT := #stInSettings.tInRightAfter); + + #tOfTimerLeft(IN := #xInDriveLeft, + PT := #stInSettings.tInLeftAfter); + + #tOnMoviMotEnabled(IN := #xOutEnable24V AND #xOutEnable400V, + PT := T#1000s); + + END_REGION + + REGION Fehler Quittieren + + IF #xErrorQuitPosEdge AND + #xInFuse AND + NOT (#xInDriveLeft AND #xInDriveRight) AND + #xError THEN + #xError := FALSE; + END_IF; + + END_REGION + + REGION Flanke + #xErrorQuitPosEdge := (#stInMachineState.xQuitError OR #xInQuitErrorOpt) AND + NOT #xQuitErrorFlag; + #xQuitErrorFlag := #stInMachineState.xQuitError OR #xInQuitErrorOpt; + END_REGION + + REGION Ausgänge schreiben + #xOutLeft := #xLeft; + + #xOutRight := #xRight; + + #xOutAckReq := #xError AND + NOT (#xInDriveLeft AND #xInDriveRight) AND + #xInFuse; + + #xOutError := #xError; + + #xOutStatMtrLeft := #xLeft AND #xInMotorOk; + + #xOutStatMtrRight := #xRight AND #xInMotorOk; + + #xOutMotOk := #stInMachineState.xRunning AND #xInSafetyOk AND #xInFuse; + END_REGION + + REGION Monitoring + #fbSetAlarmAndLog.stSettings.nNoMaxErrors := 3; + #fbSetAlarmAndLog.stSettings.nType := 1; + #fbSetAlarmAndLog.stSettings.sFctnName := #sInFctnName; + #fbSetAlarmAndLog(stInOutControlUnitCabinet:= #stInOutControlUnitCabinet); + END_REGION +END_FUNCTION_BLOCK + diff --git a/=A01+UH01-KF00/Programmbausteine/_Ladeschleife/400_Modules/FB_StopperSimple.scl b/=A01+UH01-KF00/Programmbausteine/_Ladeschleife/400_Modules/FB_StopperSimple.scl new file mode 100644 index 0000000..9e778bc --- /dev/null +++ b/=A01+UH01-KF00/Programmbausteine/_Ladeschleife/400_Modules/FB_StopperSimple.scl @@ -0,0 +1,197 @@ +FUNCTION_BLOCK "FB_StopperSimple" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + VAR_INPUT + stInSensor : "UDT_Sensor"; // IN Sensor + tInTrailing : Time := T#1500ms; // Zeit wie lange ohne Belegung offen sein muss + END_VAR + VAR_INPUT RETAIN + xInActive : Bool; // Stopper aktiviert + END_VAR + VAR_INPUT + xInRelease : Bool; // MT rauslassen + xInReceive : Bool; // MT aufnehmen + END_VAR + + VAR_OUTPUT + nOutState : Int; // Ausgang für aktuellen Schritt + xOutStopper : Bool; // MT Rauslassen + xOutReleaseDone : Bool; // Flanke dass MT rausgelassen + END_VAR + + VAR RETAIN + nState : Int; + END_VAR + VAR + fbStateManager : "FB_StateManager"; + tOnTrailing {InstructionName := 'TON_TIME'; LibVersion := '1.0'} : TON_TIME; // Timer für Öffnungszeit + END_VAR + VAR RETAIN + nCountSensor { S7_SetPoint := 'True'} : Int; // Flankenzähler vom eigenen Sensor + END_VAR + + VAR_TEMP + tmpActUnivTon : Bool; + xTmpOpenStopper : Bool; + xTmpTrailing : Bool; + xTmpReleaseDone : Bool; + END_VAR + + VAR CONSTANT + cStepOff : Int := 0; + cStepUndefined : Int := 100; + cStepIdle : Int := 200; + cStepReceive : Int := 300; + cStepHold : Int := 400; + cStepRelease : Int := 500; + cStepWait : Int := 600; + END_VAR + + +BEGIN + REGION Count Sensor + //zählt Sensorflanken beim Ausfahren/Durchfahren vom In Sensor + IF #nState = #cStepRelease THEN + IF #stInSensor.xDirectEdgeNeg THEN + #nCountSensor += 1; + END_IF; + ELSE + #nCountSensor := 0; + END_IF; + END_REGION + + REGION Schrittkette + CASE #nState OF + #cStepOff: + REGION 000: Off + #nOutState := #cStepOff; + + IF #xInActive THEN + #xTmpOpenStopper := FALSE; + ELSE + #xTmpOpenStopper := TRUE; + END_IF; + + + END_REGION + + #cStepUndefined: + REGION 100: Undefined + #nOutState := #cStepUndefined; + + IF #xInActive THEN + #xTmpOpenStopper := FALSE; + ELSE + #xTmpOpenStopper := TRUE; + END_IF; + + ////////////////////////////////////// + + #nState := #cStepIdle; + + END_REGION + + #cStepIdle: + REGION 200: Idle + #nOutState := #cStepIdle; + + IF #xInActive THEN + #xTmpOpenStopper := FALSE; + ELSE + #xTmpOpenStopper := TRUE; + END_IF; + + /////////////////////////////////////// + + IF #xInReceive AND #xInActive THEN + #nState := #cStepReceive; + END_IF; + + END_REGION + + #cStepReceive: + REGION 300: Receive + #nOutState := #cStepReceive; + + #xTmpOpenStopper := FALSE; + /////////////////////////////////////// + + IF #stInSensor.xDbncdSensor THEN + #nState := #cStepHold; + END_IF; + + END_REGION + + #cStepHold: + REGION 400: Hold + #nOutState := #cStepHold; + + #xTmpOpenStopper := FALSE; + /////////////////////////////////////// + + IF NOT #stInSensor.xDirectSensor THEN + #nState := #cStepReceive; + ELSIF #xInRelease AND #stInSensor.xDbncdSensor THEN + #nState := #cStepRelease; + END_IF; + + + END_REGION + + #cStepRelease: + REGION 500: Release + #nOutState := #cStepRelease; + + #xTmpOpenStopper := TRUE; + //////////////////////////////////// + // IF NOT #stInSensor.xDbncdSensor THEN + // #nState := #cStepWait; + // END_IF; + IF #nCountSensor >= 2 THEN + #nState := #cStepWait; + END_IF; + + END_REGION + + #cStepWait: + REGION 600: Wait + #nOutState := #cStepWait; + + #xTmpOpenStopper := TRUE; + #xTmpTrailing := NOT #stInSensor.xDirectSensor; + /////////////////////////////////////// + + IF #tOnTrailing.Q THEN + #xTmpOpenStopper := TRUE; + #xTmpReleaseDone := TRUE; + #nState := #cStepIdle; + END_IF; + + END_REGION + + ELSE // Statement section ELSE + + + #nState := #cStepUndefined; + END_CASE; + END_REGION + + REGION State Manager + #fbStateManager.stInSettings.nStartState := #cStepUndefined; + #fbStateManager.stInSettings.xActUnivTOn := TRUE; + #fbStateManager.stInSettings.xRestartAtStartState := FALSE; + #fbStateManager(xInFunctionEnabled := TRUE, + xInRunUnivTOn := #tmpActUnivTon, + nInOutState := #nState); + END_REGION + REGION Timer + #tOnTrailing(IN:=#xTmpTrailing, + PT:=#tInTrailing); + END_REGION + + REGION Ausgänge + #xOutStopper := #xTmpOpenStopper; + #xOutReleaseDone := #xTmpReleaseDone; + END_REGION ; +END_FUNCTION_BLOCK + diff --git a/=A01+UH01-KF00/Programmbausteine/_Ladeschleife/400_Modules/FB_StopperSpecial.scl b/=A01+UH01-KF00/Programmbausteine/_Ladeschleife/400_Modules/FB_StopperSpecial.scl new file mode 100644 index 0000000..c5cf116 --- /dev/null +++ b/=A01+UH01-KF00/Programmbausteine/_Ladeschleife/400_Modules/FB_StopperSpecial.scl @@ -0,0 +1,243 @@ +FUNCTION_BLOCK "FB_StopperSpecial" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + VAR_INPUT + stInSensor : "UDT_Sensor"; // "IN" Sensor, bzw der Sensor kurz vor Stopper + stInSensorNext : "UDT_Sensor"; // IN Sensor des folgenden Stoppers + tInSenWait : Time := T#3000ms; // Wartezeit zwischen Sensor und Stopper + tInWaitAfterRelease : Time := T#2000ms; // Wartezeit nach MT Release + END_VAR + VAR_INPUT RETAIN + xInActive : Bool; // Stopper aktiviert + END_VAR + VAR_INPUT + xInSwitchReq : Bool; // Schalter zum Umschalten des Stoppers + xInRelease : Bool; // MT rauslassen + xInReceive : Bool; // MT aufnehmen + END_VAR + + VAR_OUTPUT + nOutState : Int; // Ausgang für aktuellen Schritt + END_VAR + VAR_OUTPUT RETAIN + xOutClamp : Bool; // MT Fixieren + xOutStopper : Bool; // MT Rauslassen + END_VAR + VAR_OUTPUT + xOutReleaseDone : Bool; // Flanke dass MT rausgelassen + END_VAR + + VAR RETAIN + nState : Int; + END_VAR + VAR + fbStateManager : "FB_StateManager"; + END_VAR + VAR RETAIN + nCountSensor { S7_SetPoint := 'True'} : Int; // Flankenzähler vom eigenen Sensor + nCountSensorNext : Int; // Flankenzähler vom nächsten Sensor + END_VAR + + VAR_TEMP + tmpActUnivTon : Bool; + xTmpCloseClamp : Bool; + xTmpOpenStopper : Bool; + xTmpReleaseDone : Bool; + END_VAR + + VAR CONSTANT + cStepOff : Int := 0; + cStepUndefined : Int := 100; + cStepIdle : Int := 200; + cStepReceive : Int := 300; + cStepClamp : Int := 350; + cStepHold : Int := 400; + cStepRelease : Int := 500; + cStepWait : Int := 600; + END_VAR + + +BEGIN + REGION Count Sensor + //zählt Sensorflanken vom In Sensor beim Einfahren, + //da sich der Sensor etwas weiter VOR dem Stopper befindet + IF #nState = #cStepReceive THEN + IF #stInSensor.xDirectEdgePos THEN + #nCountSensor += 1; + END_IF; + ELSE + #nCountSensor := 0; + END_IF; + + //zählt Sensorflanken vom nächsten Sensor beim Durchfahren, + //da dies die einzige Rückmeldung beim Ausfahren ist + IF #nState = #cStepRelease OR #nState = #cStepWait THEN + IF #stInSensorNext.xDirectEdgeNeg THEN + #nCountSensorNext += 1; + END_IF; + ELSE + #nCountSensorNext := 0; + END_IF; + + END_REGION + + REGION Schrittkette + CASE #nState OF + #cStepOff: + REGION 000: Off + #nOutState := #cStepOff; + + IF #xInActive THEN + #xTmpCloseClamp := FALSE; + #xTmpOpenStopper := FALSE; + ELSE + #xTmpCloseClamp := FALSE; + #xTmpOpenStopper := TRUE; + END_IF; + + + END_REGION + + #cStepUndefined: + REGION 100: Undefined + #nOutState := #cStepUndefined; + + IF #xInActive THEN + #xTmpCloseClamp := FALSE; + #xTmpOpenStopper := FALSE; + ELSE + #xTmpCloseClamp := FALSE; + #xTmpOpenStopper := TRUE; + END_IF; + + ////////////////////////////////////// + + #nState := #cStepIdle; + + END_REGION + + #cStepIdle: + REGION 200: Idle + #nOutState := #cStepIdle; + + IF #xInActive THEN + #xTmpCloseClamp := FALSE; + #xTmpOpenStopper := FALSE; + ELSE + #xTmpCloseClamp := FALSE; + #xTmpOpenStopper := TRUE; + END_IF; + + /////////////////////////////////////// + + IF #xInReceive AND #xInActive THEN + #nState := #cStepReceive; + END_IF; + + END_REGION + + #cStepReceive: + REGION 300: Receive + #nOutState := #cStepReceive; + + #xTmpCloseClamp := FALSE; + #xTmpOpenStopper := FALSE; + /////////////////////////////////////// + + // IF #stInSensor.xDirectEdgePos THEN + // #nState := #cStepClamp; + // END_IF; + IF #nCountSensor >= 2 THEN + #nState := #cStepClamp; + END_IF; + + + END_REGION + + #cStepClamp: + REGION 350: Clamp + #nOutState := #cStepClamp; + + #xTmpCloseClamp := FALSE; + #xTmpOpenStopper := FALSE; + /////////////////////////////////////// + + IF #fbStateManager.tOutTimeInStep > #tInSenWait THEN + #xTmpCloseClamp := TRUE; + #nState := #cStepHold; + END_IF; + + END_REGION + + #cStepHold: + REGION 400: Hold + #nOutState := #cStepHold; + + #xTmpCloseClamp := TRUE; + #xTmpOpenStopper := FALSE; + /////////////////////////////////////// + + IF #xInRelease THEN + #xTmpCloseClamp := FALSE; + #xTmpOpenStopper := TRUE; + #nState := #cStepRelease; + END_IF; + + + END_REGION + + #cStepRelease: + REGION 500: Release + #nOutState := #cStepRelease; + + #xTmpCloseClamp := FALSE; + #xTmpOpenStopper := TRUE; + /////////////////////////////////////// + IF (#xInSwitchReq) THEN + #nState := #cStepWait; + ELSIF (NOT #xInSwitchReq AND #fbStateManager.tOutTimeInStep > #tInWaitAfterRelease) THEN + #xTmpOpenStopper := TRUE; + #xTmpReleaseDone := TRUE; + #nState := #cStepIdle;//#cStepWait; + END_IF; + + END_REGION + + #cStepWait: + REGION 600: Wait + #nOutState := #cStepWait; + + #xTmpCloseClamp := FALSE; + #xTmpOpenStopper := TRUE; + /////////////////////////////////////// + + IF #nCountSensorNext >= 2 THEN + #xTmpReleaseDone := TRUE; + #nState := #cStepIdle; + END_IF; + + END_REGION + + ELSE // Statement section ELSE + + + #nState := #cStepUndefined; + END_CASE; + END_REGION + + REGION State Manager + #fbStateManager.stInSettings.nStartState := #cStepUndefined; + #fbStateManager.stInSettings.xActUnivTOn := TRUE; + #fbStateManager.stInSettings.xRestartAtStartState := FALSE; + #fbStateManager(xInFunctionEnabled := TRUE, + xInRunUnivTOn := #tmpActUnivTon, + nInOutState := #nState); + END_REGION + + REGION Ausgänge + #xOutClamp := #xTmpCloseClamp; + #xOutStopper := #xTmpOpenStopper; + #xOutReleaseDone := #xTmpReleaseDone; + END_REGION ; +END_FUNCTION_BLOCK + diff --git a/=A01+UH01-KF00/Programmbausteine/_Ladeschleife/400_Modules/FB_Tilt_TEST.scl b/=A01+UH01-KF00/Programmbausteine/_Ladeschleife/400_Modules/FB_Tilt_TEST.scl new file mode 100644 index 0000000..466623a --- /dev/null +++ b/=A01+UH01-KF00/Programmbausteine/_Ladeschleife/400_Modules/FB_Tilt_TEST.scl @@ -0,0 +1,182 @@ +FUNCTION_BLOCK "FB_Tilt_TEST" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + VAR_INPUT + wInTilt { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : Word; // Eingangswert von Sensor + xInClock : Bool; // Frequenz für Mittelwert Ermittlung + xInTiltActive : Bool; // Aktiviert die Überwachung + xInTiltAdjust : Bool; // Es wird aktiv nachgeregelt + stInSettings : Struct + tDiff : Time := T#1000ms; // Solange muss Abweichung bestehen damit nachgeregelt wird + tZero : Time := T#1000ms; // Solange muss ca. Null bestehen damit gestoppt wird + nDiff : Int := 10; // Abweichung > oder < als nDiff? ---> Nachregeln + nZeroOk : Int := 5; // Bereich um Null in welchem nachregeln aufgehört wird + xComp : Bool; // Flanke um Kompensationswert einzustellen + nTiltComp : Int := 0; // Wert von User um Tilt zu kompensieren, +X um größer zu werden, -X um kleiner zu werden + END_STRUCT; + END_VAR + + VAR_OUTPUT + stOutTilt : Struct + nTiltRaw { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : Int; // Neigungswert Raw in 1/100 Grad + nTiltComp : Int; // Neigungswert Raw in 1/100 Grad kompensiert durch User + nTiltRawMed : Int; // Neigung-Mittelswert Raw + nTiltCompMed : Int; // Neigungs-Mittelwert in 1/100 Grad kompensiert durch User + END_STRUCT; + xOutToHigh : Bool; // Merker dass Winkel zu hoch + xOutToLow : Bool; // Merker dass Winkel zu niedrig + xOutTeachNec : Bool; // Teachen notwendig + END_VAR + + VAR + nCountINT : Int; // Zählt in eingestellter Frequenz hoch + rTrigClock {InstructionName := 'R_TRIG'; LibVersion := '1.0'; S7_SetPoint := 'False'} : R_TRIG; // Hochzählzeitpunkt + nTilt { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : Int; // aktueller Wert mit welchem gerechnet wird + nTiltMed : Int; // errechneter Mittelwert + nSum : Int; // Summe für Mittelwert + END_VAR + VAR RETAIN + nTiltComp : Int; // Offset welcher zum Rohwert hinzugerechnet wird + END_VAR + VAR + tOnDiff {InstructionName := 'TON_TIME'; LibVersion := '1.0'} : TON_TIME; // Timer zum Feststellen der Abweichung + tOnZero {InstructionName := 'TON_TIME'; LibVersion := '1.0'} : TON_TIME; // Timer zum Feststellen ob wieder Null + END_VAR + VAR RETAIN + xDiff : Bool; // Abweichung vorhanden + xZeroReached : Bool; // Näherung ausreichend gegen Null + xAimForZero : Bool; // Merker dass nach Abweichung nun gegen Null gefahren wird + xToHigh : Bool; // Merker dass Winkel zu hoch + xToLow : Bool; // Merker dass Winkel zu niedrig + END_VAR + + VAR CONSTANT + cMaxCount : Int := 10; + END_VAR + + +BEGIN + REGION Kompensationswert prüfen + IF #stInSettings.xComp THEN + IF #stInSettings.nTiltComp <> 0 AND (#stInSettings.nTiltComp < -1000 OR #stInSettings.nTiltComp > 1000) THEN + #nTiltComp := 0; + ELSE + #nTiltComp := #stInSettings.nTiltComp; + END_IF; + END_IF; + END_REGION + + REGION Rohwert umwandeln + #stOutTilt.#nTiltRaw := #nTilt := WORD_TO_INT(#wInTilt); + #stOutTilt.nTiltComp := #nTilt := #nTilt + #nTiltComp; + END_REGION + + #rTrigClock(CLK:=#xInClock); + + REGION INT Berechnung Mittelwert + IF #rTrigClock.Q THEN + IF #nCountINT < #cMaxCount THEN + #nSum := #nSum + #nTilt; + #nCountINT := #nCountINT + 1; + ELSE + // Wenn die maximale Anzahl erreicht ist, den ältesten Wert abziehen + #nSum := #nSum - (#nSum / #nCountINT); + #nCountINT := 1; + END_IF; + + // Mittelwert berechnen + IF #nCountINT = 1 THEN + (* #stOutTilt.nTiltRawMed *) #stOutTilt.nTiltCompMed := #nTiltMed := (#nSum / #nCountINT) / 10; + #nSum := 0; + ELSE + (* #stOutTilt.nTiltRawMed *) #stOutTilt.nTiltCompMed := #nTiltMed; + END_IF; + END_IF; + END_REGION + + REGION Abweichung feststellen + IF #xInTiltActive THEN + + REGION aktuell Abweichung? + IF #nTiltMed > #stInSettings.nDiff OR #nTiltMed < ( - #stInSettings.nDiff) THEN + #xDiff := TRUE; + ELSE + #xDiff := FALSE; + END_IF; + END_REGION + + REGION Merken in welche Richtung + IF #tOnDiff.Q AND #nTiltMed > #stInSettings.nDiff THEN + #xAimForZero := TRUE; + #xToHigh := TRUE; + #xToLow := FALSE; + ELSIF #tOnDiff.Q AND #nTiltMed < ( - #stInSettings.nDiff) THEN + #xAimForZero := TRUE; + #xToHigh := FALSE; + #xToLow := TRUE; + ELSE + #xAimForZero := FALSE; + #xToHigh := FALSE; + #xToLow := FALSE; + END_IF; + END_REGION + + ELSIF NOT #xInTiltActive OR #tOnZero.Q THEN + //nicht mehr aktiv + #xDiff := FALSE; + #xAimForZero := FALSE; + #xToHigh := FALSE; + #xToLow := FALSE; + // #xZeroReached := FALSE; + END_IF; + + END_REGION + + REGION Nachregeln prüfen + IF #xInTiltAdjust AND #xAimForZero THEN + IF #nTiltMed < #stInSettings.nZeroOk AND #nTiltMed > (- #stInSettings.nZeroOk) THEN + #xZeroReached := TRUE; + ELSE + #xZeroReached := FALSE; + END_IF; + END_IF; + END_REGION + + REGION Timer + #tOnDiff(IN := #xDiff, + PT := #stInSettings.tDiff); + #tOnZero(IN := #xZeroReached, + PT := #stInSettings.tZero); + END_REGION + + REGION Ausgänge + #xOutToHigh := #xToHigh; + #xOutToLow := #xToLow; + #xOutTeachNec := #nTiltComp = 0; + END_REGION + (* // #rTilt := INT_TO_REAL(#nTilt); + // #rOutTiltRaw := #rTilt := #rTilt / 100; + // REGION REAL + // // Berechnung des Mittelwerts + // IF #rTrigClock.Q THEN + // IF #nCountREAL < #cMaxCount THEN + // #rSum := #rSum + #rTilt; + // #nCountREAL := #nCountREAL + 1; + // ELSE + // // Wenn die maximale Anzahl erreicht ist, den ältesten Wert abziehen + // #rSum := #rSum - (#rSum / INT_TO_REAL(#nCountREAL)); + // #nCountREAL := 1; + // END_IF; + + // // Mittelwert berechnen + // IF #nCountREAL = 1 THEN + // #rOutTiltMed := #rTiltMed := (#rSum / INT_TO_REAL(#nCountREAL)) / 10.0; + // #rSum := 0.0; + // ELSE + // #rOutTiltMed := #rTiltMed; + // END_IF; + // END_IF; + // END_REGION *) + +END_FUNCTION_BLOCK + diff --git a/=A01+UH01-KF00/Programmbausteine/_Ladeschleife/DB_GLOB_StopperState.xml b/=A01+UH01-KF00/Programmbausteine/_Ladeschleife/DB_GLOB_StopperState.xml new file mode 100644 index 0000000..bf9e977 --- /dev/null +++ b/=A01+UH01-KF00/Programmbausteine/_Ladeschleife/DB_GLOB_StopperState.xml @@ -0,0 +1,74 @@ + + + + + + +
+ + + Zustand vom Stopper merken, wegen ReInit + + + + + Zustand vom Stopper merken, wegen ReInit + + +
+
+ Optimized + 100 + DB_GLOB_StopperState + + 73 + DB +
+ + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + +
+
\ No newline at end of file diff --git a/=A01+UH01-KF00/Programmbausteine/_Ladeschleife/TEST_INBOUND_DB.xml b/=A01+UH01-KF00/Programmbausteine/_Ladeschleife/TEST_INBOUND_DB.xml new file mode 100644 index 0000000..393f8d4 --- /dev/null +++ b/=A01+UH01-KF00/Programmbausteine/_Ladeschleife/TEST_INBOUND_DB.xml @@ -0,0 +1,95 @@ + + + + + + +
+ + + + + + true + + + + + true + + + + + + + + + + + + + + + + + + + + +
+
+ Optimized + 100 + TEST_INBOUND_DB + + 74 + DB +
+ + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + +
+
\ No newline at end of file diff --git a/=A01+UH01-KF00/Programmbausteine/_PerformanceMeasurement_/FB_PerfTest.scl b/=A01+UH01-KF00/Programmbausteine/_PerformanceMeasurement_/FB_PerfTest.scl new file mode 100644 index 0000000..b5f6472 --- /dev/null +++ b/=A01+UH01-KF00/Programmbausteine/_PerformanceMeasurement_/FB_PerfTest.scl @@ -0,0 +1,104 @@ +FUNCTION_BLOCK "FB_PerfTest" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + VAR_INPUT + nInSepNo : Int; // Nummer welche hinter Sep-Konstante steckt + xInSepFlag : Bool; // Flanke vom Release pro MiniTrolley + xInReset : Bool; + tInTimeMeasurement : Time := T#86400s; // Default 24h + nInGoalFlags : Int; // Anzahl der Releases welche Messung stoppen + END_VAR + + VAR + tOnTimer {InstructionName := 'TON_TIME'; LibVersion := '1.0'; S7_SetPoint := 'False'} : TON_TIME; + xTestActive : Bool; // true = Messung läuft + xTimerRun : Bool; // Signal für Timer + nCount : Int; // MiniTrolleys pro Sep während Messung + Date_And_TimeStart : Date_And_Time; // Beginn mit erstem MiniTrolley + Date_And_TimeLap : Date_And_Time; // Zeit bei jedem weiteren MiniTrolley + tTimeResult : Time; // jeweiliges Ergebnis + rTrigRun {InstructionName := 'R_TRIG'; LibVersion := '1.0'} : R_TRIG; + fTrigRun {InstructionName := 'F_TRIG'; LibVersion := '1.0'} : F_TRIG; + fTrigSepFlag {InstructionName := 'F_TRIG'; LibVersion := '1.0'} : F_TRIG; + END_VAR + VAR RETAIN + arTrolley : Array[1..500] of Struct + nCountNo : Int; // Aktuelle Schaltung + tTimeEvent : Date_And_Time; // Zeitstempel bei Release + tTimeResult : Time; // Differenz seit Start + END_STRUCT; + nTrolleyNo : Int; // aktuelle Zeile in Array in welche geschrieben wird + END_VAR + + VAR_TEMP + nTmpTimeReturn : Int; + nIdx : Int; + END_VAR + + +BEGIN + IF #nTrolleyNo = 0 THEN + #nTrolleyNo := 1; + END_IF; + + REGION Flanken erfassen + #rTrigRun(CLK := #xTestActive); + #fTrigRun(CLK := #xTestActive); + #fTrigSepFlag(CLK := #xInSepFlag); + END_REGION + + REGION Nullen bei neuer Messung + IF #xInReset THEN + #Date_And_TimeLap := DT#1990-01-01-00:00:00; + #Date_And_TimeStart := DT#1990-01-01-00:00:00; + #tTimeResult := T#0s; + #nTrolleyNo := 1; + FOR #nIdx := 1 TO 500 DO + #arTrolley[#nIdx].nCountNo := 0; + #arTrolley[#nIdx].tTimeEvent := DT#1990-01-01-00:00:00; + #arTrolley[#nIdx].tTimeResult := T#0s; + END_FOR; + ELSIF #rTrigRun.Q THEN + #Date_And_TimeLap := DT#1990-01-01-00:00:00; + #Date_And_TimeStart := DT#1990-01-01-00:00:00; + #tTimeResult := T#0s; + #nTrolleyNo := 1; + #xTimerRun := TRUE; + END_IF; + END_REGION + + REGION Sep-Flanken während Messung erfassen + //Während Messtimer läuft und 1. Flanke kommt, ermittle Zeit und schreibe sie weg und erhöhe Pos für nächste Zeile. + //Danach so weiter machen aber dann immer die Zeitdifferenz wegschreiben + IF #tOnTimer.ET > T#0s AND #tOnTimer.ET < #tInTimeMeasurement AND #fTrigSepFlag.Q THEN + IF #nTrolleyNo = 1 THEN //Nur beim ersten Trolley die Startzeit ermitteln + #nTmpTimeReturn := RD_SYS_T(#Date_And_TimeStart); + END_IF; + #nTmpTimeReturn := RD_SYS_T(#Date_And_TimeLap); //Flankenzeitpunkt für Differenz aus diesem und Startzeitpunkt + #tTimeResult := T_DIFF(IN1 := #Date_And_TimeLap, IN2 := #Date_And_TimeStart); + //Daten wegschreiben + #arTrolley[#nTrolleyNo].nCountNo := #nTrolleyNo; + #arTrolley[#nTrolleyNo].tTimeEvent := #Date_And_TimeLap; + #arTrolley[#nTrolleyNo].tTimeResult := #tTimeResult; + //erhöhen für nächste Zeile oder beende Messung + IF #nTrolleyNo <= #nInGoalFlags THEN + #nTrolleyNo += 1; + ELSIF #tOnTimer.ET >= #tInTimeMeasurement OR #fTrigRun.Q OR #nTrolleyNo > #nInGoalFlags THEN + #xTimerRun := FALSE; + #xTestActive := FALSE; + END_IF; + + END_IF; + IF #tOnTimer.ET >= #tInTimeMeasurement OR #fTrigRun.Q OR #nTrolleyNo > #nInGoalFlags THEN + #xTimerRun := FALSE; + #xTestActive := FALSE; + END_IF; + END_REGION + + REGION Timer + #tOnTimer(IN := #xTimerRun, + PT := #tInTimeMeasurement); + END_REGION + +END_FUNCTION_BLOCK + diff --git a/=A01+UH01-KF00/Programmbausteine/_PerformanceMeasurement_/fbPerfTestAfterRFID.xml b/=A01+UH01-KF00/Programmbausteine/_PerformanceMeasurement_/fbPerfTestAfterRFID.xml new file mode 100644 index 0000000..671dae7 --- /dev/null +++ b/=A01+UH01-KF00/Programmbausteine/_PerformanceMeasurement_/fbPerfTestAfterRFID.xml @@ -0,0 +1,102 @@ + + + + + + false + FB_PerfTest + FB + +
+ + + + + +
+
+
+
+ + + + + + + + + + true + + + + + true + + + + + true + + + + + + + + +
+ + fbPerfTestAfterRFID + + 61 + DB + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + \ No newline at end of file diff --git a/=A01+UH01-KF00/Programmbausteine/_PerformanceMeasurement_/fbPerfTestBeforeRFID.xml b/=A01+UH01-KF00/Programmbausteine/_PerformanceMeasurement_/fbPerfTestBeforeRFID.xml new file mode 100644 index 0000000..037bf9f --- /dev/null +++ b/=A01+UH01-KF00/Programmbausteine/_PerformanceMeasurement_/fbPerfTestBeforeRFID.xml @@ -0,0 +1,102 @@ + + + + + + false + FB_PerfTest + FB + +
+ + + + + +
+
+
+
+ + + + + + + + + + true + + + + + true + + + + + true + + + + + + + + +
+ + fbPerfTestBeforeRFID + + 58 + DB + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + \ No newline at end of file diff --git a/=A01+UH01-KF00/Programmbausteine/_PerformanceMeasurement_/fbPerfTestEnd1_1_DB.xml b/=A01+UH01-KF00/Programmbausteine/_PerformanceMeasurement_/fbPerfTestEnd1_1_DB.xml new file mode 100644 index 0000000..d1b9c9e --- /dev/null +++ b/=A01+UH01-KF00/Programmbausteine/_PerformanceMeasurement_/fbPerfTestEnd1_1_DB.xml @@ -0,0 +1,101 @@ + + + + + + FB_PerfTest + FB + +
+ + + + + +
+
+
+
+ + + + + + + + + + true + + + + + true + + + + + true + + + + + + + + +
+ + fbPerfTestEnd1_1_DB + + 55 + DB + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + \ No newline at end of file diff --git a/=A01+UH01-KF00/Programmbausteine/_PerformanceMeasurement_/fbPerfTestEnd1_DB.xml b/=A01+UH01-KF00/Programmbausteine/_PerformanceMeasurement_/fbPerfTestEnd1_DB.xml new file mode 100644 index 0000000..325cedb --- /dev/null +++ b/=A01+UH01-KF00/Programmbausteine/_PerformanceMeasurement_/fbPerfTestEnd1_DB.xml @@ -0,0 +1,101 @@ + + + + + + FB_PerfTest + FB + +
+ + + + + +
+
+
+
+ + + + + + + + + + true + + + + + true + + + + + true + + + + + + + + +
+ + fbPerfTestEnd1_DB + + 52 + DB + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + \ No newline at end of file diff --git a/=A01+UH01-KF00/Programmbausteine/_PerformanceMeasurement_/fbPerfTestEnd2_DB.xml b/=A01+UH01-KF00/Programmbausteine/_PerformanceMeasurement_/fbPerfTestEnd2_DB.xml new file mode 100644 index 0000000..a63ad02 --- /dev/null +++ b/=A01+UH01-KF00/Programmbausteine/_PerformanceMeasurement_/fbPerfTestEnd2_DB.xml @@ -0,0 +1,101 @@ + + + + + + FB_PerfTest + FB + +
+ + + + + +
+
+
+
+ + + + + + + + + + true + + + + + true + + + + + true + + + + + + + + +
+ + fbPerfTestEnd2_DB + + 51 + DB + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + \ No newline at end of file diff --git a/=A01+UH01-KF00/Programmbausteine/_PerformanceMeasurement_/fbPerfTestStart1_1_DB.xml b/=A01+UH01-KF00/Programmbausteine/_PerformanceMeasurement_/fbPerfTestStart1_1_DB.xml new file mode 100644 index 0000000..5219e93 --- /dev/null +++ b/=A01+UH01-KF00/Programmbausteine/_PerformanceMeasurement_/fbPerfTestStart1_1_DB.xml @@ -0,0 +1,101 @@ + + + + + + FB_PerfTest + FB + +
+ + + + + +
+
+
+
+ + + + + + + + + + true + + + + + true + + + + + true + + + + + + + + +
+ + fbPerfTestStart1_1_DB + + 54 + DB + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + \ No newline at end of file diff --git a/=A01+UH01-KF00/Programmbausteine/_PerformanceMeasurement_/fbPerfTestStart1_DB.xml b/=A01+UH01-KF00/Programmbausteine/_PerformanceMeasurement_/fbPerfTestStart1_DB.xml new file mode 100644 index 0000000..e8b4e92 --- /dev/null +++ b/=A01+UH01-KF00/Programmbausteine/_PerformanceMeasurement_/fbPerfTestStart1_DB.xml @@ -0,0 +1,101 @@ + + + + + + FB_PerfTest + FB + +
+ + + + + +
+
+
+
+ + + + + + + + + + true + + + + + true + + + + + true + + + + + + + + +
+ + fbPerfTestStart1_DB + + 53 + DB + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + \ No newline at end of file diff --git a/=A01+UH01-KF00/Programmbausteine/_PerformanceMeasurement_/fbPerfTestTRO115_FU_DB.xml b/=A01+UH01-KF00/Programmbausteine/_PerformanceMeasurement_/fbPerfTestTRO115_FU_DB.xml new file mode 100644 index 0000000..5028660 --- /dev/null +++ b/=A01+UH01-KF00/Programmbausteine/_PerformanceMeasurement_/fbPerfTestTRO115_FU_DB.xml @@ -0,0 +1,101 @@ + + + + + + FB_PerfTest + FB + +
+ + + + + +
+
+
+
+ + + + + + + + + + true + + + + + true + + + + + true + + + + + + + + +
+ + fbPerfTestTRO115_FU_DB + + 72 + DB + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + + + cs-CZ + + + + + + de-DE + + + + + + en-US + + + + + + + + \ No newline at end of file