CoDeSys+ @@2.3.5.6~ @ConfigExtensionf CommConfigEx7CommConfigExEndME_ME_EndCMsCM_EndCTCT_EndPP_EndCTCT_EndPP_EndCTCT_EndP P_EndCT%CT_EndP<P_EndCTWCT_EndPnP_EndCTCT_EndPP_EndCTCT_EndPP_EndCTCT_EndPP_EndCTCT_EndP6P_EndCTQCT_EndPhP_EndCTCT_EndPP_EndCTCT_EndPP_EndCTCT_EndPP_EndCTCT_EndP0P_EndCTKCT_EndYCCcCC_EndCTCT_EndCCCC_EndCTCT_EndCCCC_EndCTCT_EndCCCC_EndCT;CT_EndICCSCC_EndCToCT_End}CCCC_EndCTCT_EndCCCC_EndCTCT_End  !%CC/CC_EndCTKCT_EndY]aeimquy}CCCC_EndCTCT_EndCCCC_EndCTCT_End!CC+CC_EndCTGCT_EndUCC_CC_EndCT{CT_EndCCCC_EndCTCT_EndCCCC_EndCTCT_EndCCCC_EndCTCT_End%CC/CC_EndCTKCT_EndYCCcCC_EndCTCT_EndMEME_EndCMCM_EndCTCT_EndCCCC_EndCTCT_EndCCCC_EndCT6CT_EndDCCNCC_EndCTjCT_EndxCCCC_EndCTCT_EndCCCC_EndCTCT_EndCCCC_EndCT CT_End CC CC_EndCT: CT_EndH CCR CC_EndCTn CT_EndME ME_EndCM CM_EndCT CT_End CC CC_EndCT CT_End CC CC_EndCT% CT_End3 CC= CC_EndCTY CT_Endg CCq CC_EndCT CT_End CC CC_EndCT CT_End CC CC_EndCT CT_End CC CC_EndCT) CT_End7 CCA CC_EndCT] CT_EndME| ME_EndCM CM_EndCT CT_End CC CC_EndCT CT_End        " & * ME? ME_EndCMS CM_EndCTo CT_EndME ME_EndCM CM_EndCT CT_EndME ME_EndCM CM_EndCT CT_EndME, ME_EndCM@ CM_EndCT\ CT_EndConfigExtensionEnd@bK +@k:G1@ NC:\Program Files\Common Files\CAA-Targets\Moeller\Lib_Common\XS40_MollerFB.lib DATASCALEERR_ZEROERR_IRERR_ORERR_OLLSTA_ZEROSTA_OLLSTA_OLHSTA_IRBSTA_IREx_Active i_SetInputRangeBegin!i_SetInputRangeEnd"i_SetOutputLimitLow#i_SetOutputLimitHigh$r_FaktorSteigung%i_FaktorOffset&SetTrig R_TRIG'Set InputValueInputRangeBegin InputRangeEnd OutputRangeBegin OutputRangeEnd OutputLimitLow OutputLimitHigh  OutputValueStatusErrorbK DATCONCATXtime_mstime_stime_mtime_h tod_timeTOD dw_date_d dw_date_m dw_date_y dw_date_g dw_timeTOD tod_OutputTODdate_DATdt_YEAR ui_year_abs x_leap_year! ui_leap_days"SecondMinuteHour Day Month Year  OutputDATErrorbK DATECONCAT tod_timeTOD dw_date_d dw_date_m dw_date_y dw_date_g dw_timeTOD tod_OutputTODdate_DATdt_YEAR ui_year_abs x_leap_year ui_leap_daysDayMonthYear OutputDATE Error bK DATESPLIT dw_day_leap_g dw_day_monthdw_day_gdw_year_number dw_date_rest dw_date_g dw_date_ydw_year_offset_seconds dw_leap_blockdw_leapblocks_secondsdw_day_secondsQdw_year_seconds3dw_offset_seconds_73dw_leapblock_seconds  InputDateDay Month Year Error bK DATSPLITX dw_date_g dw_date_rest dw_date_y dw_leap_blockdw_day_gdw_year_numberdw_leapblocks_seconds dw_day_leap_g dw_day_monthdw_year_offset_seconds dw_time_restdw_hours dw_minuts dw_day_secondsQ#dw_year_seconds3$dw_offset_seconds_73%dw_leapblock_seconds&InputDATSecond Minute Hour Weekday sunday = 0, monday=1,...DayMonthYearErrorbKFIFOBX Fifoarray  InputCounter OutputCounterNumberOfElements_limitedR_Trig_FillPulse R_TRIGR_Trig_ReadOutPulse R_TRIG FillPulse ReadOutPulseReSet DataInputNumberOfElements1 to 128Full Empty DataOutput ElementsIncluded bKFIFOWX Fifoarray  InputCounter OutputCounterNumberOfElements_limitedR_Trig_FillPulse R_TRIGR_Trig_ReadOutPulse R_TRIG FillPulse ReadOutPulseReSet DataInputNumberOfElements1 to 128Full Empty DataOutput ElementsIncluded bK IEEE_TO_REALpt_Realdw_IEEEEXPO_In Mant_2_In Mant_1_In Mant_0_In Real_Out Error bKLIFOBX Lifoarray NumberOfElements_limitedR_Trig_FillPulse R_TRIGR_Trig_ReadOutPulse R_TRIG FillPulse ReadOutPulseReSet DataInputNumberOfElements1 to 128Full Empty DataOutput ElementsIncluded bKLIFOWX Lifoarray NumberOfElements_limitedR_Trig_FillPulse R_TRIGR_Trig_ReadOutPulse R_TRIG FillPulse ReadOutPulseReSet DataInputNumberOfElements1 to 128Full Empty DataOutput ElementsIncluded bK MI4NETDP16 ui_Offset ui_DataLenipt_MBptrui_MV4_DataByteNrb_Status b_ar_IB b_ar_QB bK MI4NETDP32 ui_Offset ui_DataLenipt_MBptrui_MV4_DataByteNrb_Status b_ar_IB b_ar_QB bKMS_TIMEFALLING x_setSetzflagx_holdHoldflagx_IN Timer set/runx_Q Timer Ausgangx_flankeTrigger Eingang x_flanke_QTrigger Ausgangtime_STgespeicherte ElapsedTimetime_PTStartzeit interntime_ETRestzeit interntime_ETQRestzeit Ausgang fb_flanke R_TRIG Setzflankefb_TimeFalling TOFZeitglied AbfallverzgerungSet" Startbedingung, steigende Flanke ReSet Rcksetzbedingung Hold Zeitunterbrechung PresetTime Zeit-Sollwert in Millisekunden  OutputControl  Steuerausgang ElapsedTime  Zeit-Istwert in Millisekunden bK MS_TIMERISING x_setSetzflagx_holdHoldflagx_IN Timer set/runx_Q Timer Ausgangx_flankeTrigger Eingang x_flanke_QTrigger Ausgangtime_STgespeicherte ElapsedTimetime_PTStartzeit interntime_ETRestzeit interntime_ETQRestzeit Ausgang fb_flanke R_TRIG Setzflanke fb_TimeRising TONZeitglied AnzugsverzgerungSet" Startbedingung, steigende Flanke ReSet Rcksetzbedingung Hold Zeitunterbrechung PresetTime Zeit-Sollwert in Millisekunden  OutputControl  Steuerausgang ElapsedTime  Zeit-Istwert in Millisekunden bK MV4NETDP38 ui_Offset ui_DataLenipt_MBptrui_MV4_DataByteNrb_Status b_ar_IB %b_ar_QB %bK MV4NETDP70 ui_Offset ui_DataLenipt_MBptrui_MV4_DataByteNrb_Status b_ar_IB Eb_ar_QB EbK REAL_TO_IEEEpt_IEEEdw_IEEEReal_InEXPO_Out Mant_2_Out Mant_1_Out Mant_0_Out bKS40_16BITCOUNTERForward_R_Trig R_TrigBackward_R_Trig R_Trig Set_R_Trig R_TrigForwardBackwardSetReSet InputValueZero OutputValue bKS40_32BITCOUNTERForward_R_Trig R_TrigBackward_R_Trig R_Trig Set_R_Trig R_TrigForwardBackwardSetReSet InputValueZero OutputValue bK S_TIMEFALLING x_setSetzflagx_holdHoldflagx_IN Timer set/runx_Q Timer Ausgangx_flankeTrigger Eingang x_flanke_QTrigger Ausgangtime_STgespeicherte ElapsedTimetime_PTStartzeit interntime_ETRestzeit interntime_ETQRestzeit Ausgang fb_flanke R_TRIG Setzflankefb_TimeFalling TOFZeitglied AbfallverzgerungSet" Startbedingung, steigende Flanke ReSet Rcksetzbedingung Hold Zeitunterbrechung PresetTime Zeit-Sollwert in Millisekunden  OutputControl  Steuerausgang ElapsedTime  Zeit-Istwert in Millisekunden bK S_TIMERISING x_setSetzflagx_holdHoldflagx_IN Timer set/runx_Q Timer Ausgangx_flankeTrigger Eingang x_flanke_QTrigger Ausgangtime_STgespeicherte ElapsedTimetime_PTStartzeit interntime_ETRestzeit interntime_ETQRestzeit Ausgang fb_flanke R_TRIG Setzflanke fb_TimeRising TONZeitglied AnzugsverzgerungSet" Startbedingung, steigende Flanke ReSet Rcksetzbedingung Hold Zeitunterbrechung PresetTime Zeit-Sollwert in Millisekunden  OutputControl  Steuerausgang ElapsedTime  Zeit-Istwert in Millisekunden bKSR_X uiCounterNumberOfElements_limitedR_Trig_ForwardPulse R_TRIGR_Trig_BackwardPulse R_TRIG ReSet_R_Trig R_TRIG ForwardPulse BackwardPulseReSet ForwardData BackwardDataNumberOfElements1 to 128Output  bKSRB_X uiCounterNumberOfElements_limitedR_Trig_ForwardPulse R_TRIGR_Trig_BackwardPulse R_TRIG ReSet_R_Trig R_TRIG ForwardPulse BackwardPulseReSet ForwardData BackwardDataNumberOfElements1 to 128Output  bKSRW_X uiCounterNumberOfElements_limitedR_Trig_ForwardPulse R_TRIGR_Trig_BackwardPulse R_TRIG ReSet_R_Trig R_TRIG ForwardPulse BackwardPulseReSet ForwardData BackwardDataNumberOfElements1 to 128Output  bK TIMECONCATX udint_ms udint_ms_sec udint_ms_sub udint_ms_rest udint_ms_sum udint_ms_timeudint_m udint_h!udint_d" udint_m_carry# udint_m_sub$ udint_m_rest% MilliSecondsSecondsMinutesHoursDays OutputTimeOverflowOverflowCounterbK TIMEGENERATOR x_set Setzflagx_IN Timer set/run x_flanke_QTrigger Ausgangx_QRx_QFtime_PTStartzeit intern fb_flanke R_TRIG Setzflanke fb_TimeRising TONZeitglied Anzugsverzgerungfb_TimeFalling TOFZeitglied AbfallverzgerungSet" Startbedingung, steigende Flanke Period Periodendauer in Millisekunden  PulseOutput  Steuerausgang bK TIMEPULSE x_setSetzflagx_IN Timer set/runx_Q Timer Ausgangx_flankeTrigger Eingang x_flanke_QTrigger Ausgangtime_PTStartzeit interntime_ETRestzeit intern fb_flanke R_TRIG Setzflanke fb_TimeRising TONZeitglied AnzugsverzgerungSet" Startbedingung, steigende Flanke ReSet Rcksetzbedingung PresetTime Zeit-Sollwert in Millisekunden  PulseOutput  Steuerausgang ElapsedTime  Zeit-Istwert in Millisekunden bK TIMESPLITXdw_time dw_seconds dw_time_restdw_hours dw_minutsdw_day_mseconds\&! InputTime MilliSecondsSecondsMinutesHoursDaysbK TODCONCATtime_mstime_stime_mtime_h MilliSecondSecondMinuteHour  OutputTOD Error bKTODSPLITdw_time dw_seconds dw_time_restdw_hours dw_minutsInputTOD MilliSecond Second Minute Hour bKJC:\Program Files\Common Files\CAA-Targets\Moeller\Lib_CPU201\SysLibRtc.libSYSRTCCHECKBATTERYbDummySysRtcCheckBatterybKSYSRTCGETHOURMODEbDummySysRtcGetHourModebK SYSRTCGETTIMEdummy SysRtcGetTimebK SYSRTCSETTIMEActDateAndTime SysRtcSetTimebKRC:\Program Files\Common Files\CAA-Targets\Moeller\Lib_Common\XS40_MollerFB_RTC.libS40_GETREALTIMECLOCK DATsplitX1  DATsplitXVar_Date_and_TimeDays_since_1970Year+double figures, examples: 2004->4, 1998->98MonthDayWeekday sunday = 0, monday=1,...Hour Minute Second bKS40_RTC EN_R_Trig R_TRIG ENPDTQCDT bKS40_SETREALTIMECLOCK DATconcatX1  DATconcatX set_R_Trig R_TRIGset syslibrtc.lib has to be includedYear+double figures, examples: 2004=>4, 1998=>98MonthDayHourMinute Second Error bKIC:\Program Files\Common Files\CAA-Targets\Moeller\Lib_Common\Standard.libCONCATSTR1STR2CONCATbKCTDM Variable for CD Edge DetectionCD Count Down on rising edge LOAD Load Start Value PV Start Value Q  Counter reached 0 CV  Current Counter Value bKCTUM Variable for CU Edge Detection CU Count Up RESET Reset Counter to 0 PV Counter Limit Q  Counter reached the Limit CV  Current Counter Value bKCTUDMU Variable for CU Edge Detection MD Variable for CD Edge Detection CU Count Up CD Count Down RESET  Reset Counter to Null LOAD  Load Start Value PV  Start Value / Counter Limit QU Counter reached Limit QD Counter reached Null CV Current Counter Value bKDELETESTRLENPOSDELETEbKF_TRIGM CLK Signal to detect Q Edge detected bKFINDSTR1STR2FINDbKINSERTSTR1STR2POSINSERTbKLEFTSTRSIZELEFTbKLENSTRLENbKMIDSTRLENPOSMIDbKR_TRIGM CLK Signal to detect Q Edge detected bKREPLACESTR1STR2LPREPLACEbKRIGHTSTRSIZERIGHTbKRSSETRESET1Q1 bKRTCM DiffTime ENPDTQCDTbKSEMAXCLAIM RELEASE BUSY bKSRSET1RESETQ1 bKTOFM  internal variable StartTime internal variable IN? starts timer with falling edge, resets timer with rising edge PT time to pass, before Q is set Q 2 is FALSE, PT seconds after IN had a falling edge ET  elapsed time bKTONM  internal variable StartTime internal variable IN? starts timer with rising edge, resets timer with falling edge PT time to pass, before Q is set Q 0 is TRUE, PT seconds after IN had a rising edge ET  elapsed time bKTP StartTime  internal variable IN! Trigger for Start of the Signal PT' The length of the High-Signal in 10ms Q The pulse ET & The current phase of the High-Signal bKOC:\Program Files\Common Files\CAA-Targets\Moeller\Lib_CPU201\SYSLIBCALLBACK.LIBSYSCALLBACKREGISTER iPOUIndex! POU Index of callback function. Event  RTS_EVENT Event to register SysCallbackRegisterbKSYSCALLBACKUNREGISTER iPOUIndex! POU Index of callback function. Event  RTS_EVENT Event to register SysCallbackUnregisterbKKC:\Program Files\Common Files\CAA-Targets\Moeller\Lib_CPU201\xSysCom200.lib XSYSCOMCLOSEdwHandle xSysComClosebKXSYSCOMGETVERSION1000bDummyxSysComGetVersion1000bK XSYSCOMOPENPort COMPORTS% Port-Nummer, see: Enumeration PORTS  xSysComOpenbK XSYSCOMREADdwHandledwBufferAddress dwBytesToRead dwTimeout xSysComReadbKXSYSCOMREADCONTROLdwHandleControl  COMCONTROLxSysComReadControlbKXSYSCOMSETSETTINGSdwHandle ComSettings  COMSETTINGSxSysComSetSettingsbK XSYSCOMWRITEdwHandledwBufferAddressdwBytesToWrite dwTimeout xSysComWritebKXSYSCOMWRITECONTROLdwHandleControl  COMCONTROLxSysComWriteControlbKMC:\Program Files\Common Files\CAA-Targets\Moeller\Lib_Common\ModbusMaster.lib MODBUSMASTER:bERRfc2# usiMODfailCode = 1: MOD-Illegal FCbERRadr3, usiMODfailCode = 2: MOD-Error Data address bERRval4* usiMODfailCode = 3: MOD-Error Data value bERRLength5/ usiMODfailCode = 4: MOD-Error telegram length bERRparam 7& usiMODfailCode = 10: Parameter Error bERRinitFail 87 usiMODfailCode = 11: COMport open/initializing failed bERRcrc 9 usiMODfailCode = 12: CRC-Error bERRtimeOut :% usiMODfailCode = 13: MODBUS TimeOut bERRSlaveAdr;) usiMODfailCode = 14: Error slave address bERRSlaveFC<- usiMODfailCode = 15: Slave responds wrong FCbERRSlaveNrByte=? usiMODfailCode = 16: Slave responds wrong Nr. or Adr. of data typBaudrate  COMBAUDRATEAD Baudrate: BAUD_4800, BAUD_9600, BAUD_19200, BAUD_38400, BAUD_57600 typStopbits  COMSTOPBITSB% Stopbits: ONE_STOPBIT, TWO_STOPBITS dwTimeoutReadDdwModbusHandleEdwBytesToReadCmdFInitCom  COMSETTINGSG usiComStateHdwModbusReadBufferAdresseIdwModbusWriteBufferAdresseJusiBytesToReadKdwTimeoutWriteL bInputbuffer M bOutputbuffer N dwReadNumberO uiByteCounterP xInitStopBitQxPLCstatRxStartFirstCycleSdwModbusHandleOldT xReadCom1onU uiStartAdrV uiRegNumWoW uiRegNumByXwCRCY dwBytesTotalZuiOutputByteNr[ uiTraLength\dwDum1]wInCRC^i_ii`uiBytesToCheckaxCOM1buiMaxRegTelegramcuiMaxCoilTelegramd uiCoilNume uiCoilNumModfxCoilModgbDum1h usiMODfcBckiuiMODdatOffBckj uiMODdatNrBckkusiMODslaveAdrBckl MODtimeOut TONm uiMODdatOffMn uiCoilCounterouiCoilCounterMaxp xEnable ) Enable COM port for MODBUS comunication usiComPort  Number of COMport: 2,3,4,5 uiBaudrate%+ Baudrate: 4800, 9600, 19200, 38400, 57600 usiParity+ Parity: 0 = no parity , 1 = odd, 2 = even usiStopbits Stopbits: 1, 2 usiMODSlaveAdr Address of MODBUS Slave usiMODfc Function Code uiMODdatOff Offset of data uiMODdatNr Number of data tMODtimeOut' Timeout for answer xMODfcStrobe Start MODBUS request  xComPortActiv% Status of COMport, MODBUS activated xMODtransActive MODBUS transmission aktiv xMODtransOk MODBUS request anwered ok usiMODslaveAdrDone  Last addressed MODBUS slave usiMODfcDone! Last Function Code uiMODdatOffDone" Last Offset of data uiMODdatNrDone# Last Number of data usiMODfailCode$ MODBUS failcode : 1: MOD-Illegal FC 2: MOD-Error Data address 3: MOD-Error Data value 4: MOD-Error telegram length 10: Parameter Error 11: COMport initializing failed 12: CRC-Error 13: MODBUS TimeOut 14: Error slave address 15: Slave responds wrong FC 16: Slave responds wrong Nr. or Adr. of datawarMODRegister x) Buffer for Holding- and Input Registers xarMODCoil  Buffer for Coils and Inputs bKMODBUSMASTER_COILMAXuiCoilCounterMax uiCoilCounterModbusMaster_CoilMaxbKMODBUSMASTER_CRC16iii xCarryFlag wCrc  ptr_bDataBuf/ pointer to the first byte for CRC calculation uiBufSize$ count of bytes for CRC calculation ModbusMaster_CRC16bKMODBUSMASTER_EVENTSTOP usiCounter dwEventdwFilterdwOwnerModbusMaster_EventStopbKNC:\Program Files\Common Files\CAA-Targets\Moeller\Lib_CPU201\SysLibSockets.lib SYSSOCKACCEPTdiSocket pSockAddr( Address of SocketAddress (SOCKADDRESS) piSockAddrSize& Address of socket address size (DINT) SysSockAcceptbK SYSSOCKBINDdiSocket pSockAddr( Address of SocketAddress (SOCKADDRESS) diSockAddrSize Size of socket address  SysSockBindbK SYSSOCKCLOSEdiSocket SysSockClosebKSYSSOCKCONNECTdiSocket pSockAddr( Address of SocketAddress (SOCKADDRESS) diSockAddrSize Size of socket address SysSockConnectbK SYSSOCKCREATEdiAddressFamilydiType diProtocol SysSockCreatebKSYSSOCKGETHOSTBYNAME stHostNameQQSysSockGetHostByNamebKSYSSOCKGETHOSTNAME stHostNameQQ diNameLengthSysSockGetHostNamebKSYSSOCKGETOPTIONdiSocketdiLeveldiOption pOptionValue Address of option piOptionLength Address of option size (DINT) SysSockGetOptionbK SYSSOCKHTONLdwHost SysSockHtonlbK SYSSOCKHTONSwHost SysSockHtonsbKSYSSOCKINETADDRstIPAddrQQSysSockInetAddrbKSYSSOCKINETNTOAInAddr INADDRstIPAddrQQ diIPAddrSizeSysSockInetNtoabK SYSSOCKIOCTLdiSocket diCommand piParameter Address of parameter (DINT)  SysSockIoctlbK SYSSOCKLISTENdiSocketdiMaxConnections SysSockListenbK SYSSOCKNTOHLdwNet SysSockNtohlbK SYSSOCKNTOHSwNet SysSockNtohsbK SYSSOCKRECVdiSocket pbyBuffer Address of buffer to receive diBufferSizediFlags SysSockRecvbKSYSSOCKRECVFROMdiSocket pbyBuffer Address of buffer to receive diBufferSizediFlags pSockAddr& Address of socket address SOCKADDRESSdiSockAddrSize Size of socket address SysSockRecvFrombK SYSSOCKSELECTdiWidth Typically SOCKET_FD_SETSIZE fdRead Address of SOCKET_FD_SET fdWrite Address of SOCKET_FD_SET fdExcept Address of SOCKET_FD_SET ptvTimeout Address of SOCKET_TIMEVAL  SysSockSelectbK SYSSOCKSENDdiSocket pbyBuffer Address of buffer to receive diBufferSizediFlags SysSockSendbK SYSSOCKSENDTOdiSocket pbyBuffer Address of buffer to receive diBufferSizediFlags pSockAddr' Address of socket address SOCKADDRESS diSockAddrSize Size of socket address  SysSockSendTobKSYSSOCKSETIPADDRESS stCardNameQQ stIPAddressQQSysSockSetIPAddressbKSYSSOCKSETOPTIONdiSocketdiLeveldiOption pOptionValue Address of option diOptionLength Length of option SysSockSetOptionbKSYSSOCKSHUTDOWNdiSocketdiHowSysSockShutdownbKJC:\Program Files\Common Files\CAA-Targets\Moeller\Lib_CPU201\ModbusTCP.libCALLBACK_RESETi dwEventdwFilterdwOwnerCallback_ResetbK CALLBACK_STOPi dwEventdwFilterdwOwner Callback_StopbKMB_EXCHANGEWORDwInputMB_ExchangeWordbK MB_MAKEIPbIP1bIP2bIP3bIP4 MB_MakeIPbKMBM_CLOSEALLCONNECTIONSibKMBM_CLOSECONNECTIONiActuali dwIPAddressbKMBM_COMMUNICATE xStrobeDummyMdata TModbusBufferTypeitbDataptr bBitptr bValue xStrobe dwIPAddresswPortwTransactionIdentifierbUnitIdentifier bFunctioncode wOffset wCount wOffsetAdd wCountAdd warDataOut  xarDataOut xCloseImmediatetTimeout xBusy iErrorCode wDatacount warDataIn  xarDataIn bK MBM_LOOPBACK xStrobeDummyMdata TModbusBufferTypeitbDataptrbValue xStrobe dwIPAddresswPortbUnitIdentifierwTransactionIdentifierbData0 bData1 xCloseImmediate tTimeout  xBusy iErrorCodebKMBM_READCOILSTATUS xStrobeDummyMdata TModbusBufferTypeitbDataptrbBitptr xStrobe dwIPAddresswPortbUnitIdentifierwTransactionIdentifierwOffset wCount xCloseImmediate tTimeout  xBusy iErrorcode wDatacountxarData bKMBM_READHOLDINGREGISTERS xStrobeDummyMdata TModbusBufferTypeitbDataptr xStrobe dwIPAddresswPortbUnitIdentifierwTransactionIdentifierwOffset wCount xCloseImmediate tTimeout  xBusy iErrorCode wDatacountwarData bKMBM_READINPUTREGISTERS xStrobeDummyMdata TModbusBufferTypeitbDataptr xStrobe dwIPAddresswPortbUnitIdentifierwTransactionIdentifierwOffset wCount xCloseImmediate tTimeout  xBusy iErrorCode wDatacountwarData bKMBM_READINPUTSTATUS xStrobeDummyMdata TModbusBufferTypeitbDataptrbBitptr xStrobe dwIPAddresswPortbUnitIdentifierwTransactionIdentifierwOffset wCount xCloseImmediate tTimeout  xBusy iErrorcode wDatacountxarData bKMBM_READWRITEREGISTERS xStrobeDummyMdata TModbusBufferTypeitbDataptr xStrobe dwIPAddresswPortbUnitIdentifierwTransactionIdentifier wOffsetRead wCountRead wOffsetWrite wCountWrite warDataWrite  xCloseImmediatetTimeout xBusy iErrorCode wDatacount warDataRead bKMBM_SENDi stSockAddr  TSockAddr stFDSet TSockSet stTimeval  TSockTimeval AF_INET SOCK_STREAM IPPROTO_TCPpMbdata PModbusBufferTypexCloseImmediatetTimeoutMBM_SendbKMBM_WRITEMULTIPLECOILS xStrobeDummyMdata TModbusBufferTypeitbDataptrbBitptr xStrobe dwIPAddresswPortbUnitIdentifierwTransactionIdentifierwOffset wCount xarData  xCloseImmediate tTimeout  xBusy iErrorCodebKMBM_WRITEMULTIPLEREGISTERS xStrobeDummyMdata TModbusBufferTypeitbDataptr xStrobe dwIPAddresswPortbUnitIdentifierwTransactionIdentifierwOffset wCount warData  xCloseImmediate tTimeout  xBusy iErrorCodebKMBM_WRITESINGLECOIL xStrobeDummyMdata TModbusBufferTypeitbDataptrbValue xStrobe dwIPAddresswPortbUnitIdentifierwTransactionIdentifierwOffset xValue xCloseImmediate tTimeout  xBusy iErrorCodebKMBM_WRITESINGLEREGISTER xStrobeDummyMdata TModbusBufferTypeitbDataptr xStrobe dwIPAddresswPortbUnitIdentifierwTransactionIdentifierwOffset wValue xCloseImmediate tTimeout  xBusy iErrorCodebKMBS_ADDSECUREADDRESSi dwIPAddressMBS_AddSecureAddressbK MBS_ANSWER xStrobeDummyMdata TModbusBufferTypeitiStatebBitptrbDataptr bFunctionCodewOffsetwCountwarData xarData  iErrorCode bKMBS_CLEARSECUREADDRESSESbKMBS_CLOSEALLCONNECTIONSibKMBS_DELETESECUREADDRESSit dwIPAddressMBS_DeleteSecureAddressbKMBS_POLLdiSize xStrobeDummyMdata TModbusBufferTypestFDSet TSockSet stTimeval  TSockTimeval stSockAddr  TSockAddr Connectdata  TConnectType iActserver iActclient iServerposiStateiIpfounditbBitptrxStrobe xBusy xAvailable bFunctionCode wOffset wCount wOffsetAdd wCountAdd iErrorCode warData xarData bK MBS_SETUP xStrobeDummyiState bActserver stSockAddr  TSockAddrhosthostaddrAF_INET SOCK_STREAM IPPROTO_TCPxStrobe wDefaultPortxDefaultPortActivewAdditionalPort'xAdditionalPortActive xSecureMode bUnitIdentifier tTimeout'  xBusy iErrorCodebKEC:\Program Files\Common Files\CAA-Targets\Moeller\Lib_Common\Util.lib BCD_TO_INTB BCD_TO_INTbKBLINKCLOCK TP ENABLE TRUE to run Blink TIMELOW Time for OUT=FALSE TIMEHIGH Time for OUT=TRUE OUT bK CHARCURVEIIN Anzupassendes Signal N& Anzahl Punkte fr Kennlinie 2<=N<=11 OUT Ausgabe ERR Fehler : 1 : ARRAY falsch (wird nur vollstndig getestet, wenn IN gleich dem betragsgrten X-Wert vom ARRAY) 2 : IN liegt auerhalb der von P gegebenen Grenzen 4 : Anzahl Kennpunkte (N) nicht zulssig P  POINT) N Punkte, die die Kennlinie beschreiben bK DERIVATIVEX3  vorherige Eingabe X2  vorherige Eingabe X1  vorherige Eingabe T2 vorherige Zeitintervalle T1 vorherige Zeitintervalle INIT neu initialisieren IN Eingabe TM Zeitintervallbreite in msec RESET Reset OUT  Differezenquotient bKEXTRACTXNEXTRACTbKGENCETPERCOUNTERCLOCK TONMODE GEN_MODEK Typ : TRIANGLE Dreieck von - AMPL. bis + AMPL. TRIANGLE_POS Dreieck von 0 bis AMPL. SAWTOOTH_RISE Sgezahn steigend von -AMPL. bis +AMPL. SAWTOOTH_FALL Sgezahn fallend von AMPL bis -AMPL RECTANGLE Rechteck -AMPL. bis +AMPL SINUS Sinus COSINUS Cosinus BASE , Periodenbezug : FALSE /Aufruf ; TRUE /Zeit PERIOD  Periodendauer, wenn BASE=TRUE CYCLES! Zyklen/Periode, wenn BASE=FALSE AMPLITUDE Amplitude der Funktion RESET Reset OUTbK HYSTERESISINHIGHLOWOUT bK INT_TO_BCDI INT_TO_BCDbKINTEGRALIN Eingabe TM Zeitdifferenz in msec RESET Reset OUT  Integralwert OVERFLOW bK LIMITALARMIN Eingang HIGH Obergrenze LOW Untergrenze O  berschreitung U  Unterschreitung IL Im Limit bKPACKPB0B1B2B3B4B5 B6 B7 PACKbKPDCLOCK TOND  DERIVATIVETMDIFFERRORINIT ACTUAL* actual value, process variable / Istwert SET_POINT% desired value, set point / Sollwert KP3 proportionality const. / Proportionalittskoeff. TV2 rate time, derivative time / Vorhaltzeit in msec Y_OFFSETD offset for manipulated variable / Stellwert-Nullpunktsverschiebung Y_MIN > minimum value for manipulated variable / minimaler Stellwert Y_MAX > maximum value for manipulated variable / maximaler Stellwert MANUAL ( TRUE: manual / TRUE: manueller Betrieb RESET Y. manipulated variable, set value / Stellgre LIMITS_ACTIVEbKPIDCLOCK TONI INTEGRALD  DERIVATIVETMDIFFERRORINIT ACTUAL* actual value, process variable / Istwert SET_POINT% desired value, set point / Sollwert KP3 proportionality const. / Proportionalittskoeff. TN$ reset time / Nachstellzeit in msec TV2 rate time, derivative time / Vorhaltzeit in msec Y_OFFSET D offset for manipulated variable / Stellwert-Nullpunktsverschiebung Y_MIN > minimum value for manipulated variable / minimaler Stellwert Y_MAX > maximum value for manipulated variable / maximaler Stellwert MANUAL ( TRUE: manual / TRUE: manueller Betrieb RESET Y. manipulated variable, set value / Stellgre LIMITS_ACTIVEOVERFLOWbKPUTBITXNBPUTBITbKRAMP_INTDIFFOLD_INTBCETCHCLOCK TONIN Eingabe ASCEND Maximalwert der Zunahme DESCEND/ Maximalwert der Abnahme (nichtnegativer Wert) TIMEBASEx Bezugswert fr ASCEND/DESCEND : t#0s : Ab-/Zunahme pro Aufruf sonst: Ab-/Zunahme pro TIMEBASE RESET  Reset OUT bK RAMP_REALDIFFOLD_INTBCETCLOCK TONprobeIN Eingabe ASCEND Maximalwert der Zunahme DESCEND/ Maximalwert der Abnahme (nichtnegativer Wert) TIMEBASEx Bezugswert fr ASCEND/DESCEND : t#0s : Ab-/Zunahme pro Aufruf sonst: Ab-/Zunahme pro TIMEBASE RESET  Reset OUT bKSTATISTICS_INTSUM Summe COUNTER Zhler IN Eingabe RESET Zurcksetzen MN Minimum MX Maximum AVG  Durchschnitt bKSTATISTICS_REALCOUNTER SUMIN Eingabe RESET Zurcksetzen MNa3e+38 Minimum MX1e-37 Maximum AVG  Durchschnitt bKUNPACKBB0B1B2 B3 B4 B5 B6 B7bKVARIANCEZ A B IN Eingabe RESET Reset OUT Varianz bKVERSIONbKMOD_READbK@MOD_WRITE_BOOLindex[mod_Write_BoolbK@MOD_WRITE_DWORDIndex\mod_Write_dWordbK@MOD_WRITE_STRINGIndex]mod_Write_StringbK@MOD_WRITE_WORDIndex^mod_Write_WordbK@OBDELAVAANALOGNIHVHODOV FB_SkaliranjeTempTIA1  Skaliranje.FB_SkaliranjeTempTIA2  Skaliranje.FB_SkaliranjeTempTIA3  Skaliranje. FB_SkaliranjeTempTIA4  Skaliranje. FB_SkaliranjeTempTIA5  Skaliranje. FB_SkaliranjeTempTIA6  Skaliranje. FB_SkaliranjeTempTIA7  Skaliranje. FB_SkaliranjeTempTIA8  Skaliranje.FB_SkaliranjeVlagaHIA1  Skaliranje.FB_SkaliranjeVlagaHIA2  Skaliranje.FB_SkaliranjeVlagaHIA3  Skaliranje.FB_SkaliranjeVlagaHIA4  Skaliranje.FB_SkaliranjeVlagaHIA5  Skaliranje.FB_SkaliranjeVlagaHIA6  Skaliranje.FB_SkaliranjeVlagaHIA7  Skaliranje.FB_SkaliranjeVlagaHIA8  Skaliranje.PomNapakaTSTempTIA1.PomNapakaTSTempTIA2.PomNapakaTSTempTIA3.PomNapakaTSTempTIA4.PomNapakaTSTempTIA5.PomNapakaTSTempTIA6.PomNapakaTSTempTIA7.PomNapakaTSTempTIA8. PomNapakaSenzorVlagaHIA1."PomNapakaSenzorVlagaHIA2.#PomNapakaSenzorVlagaHIA3.$PomNapakaSenzorVlagaHIA4.%PomNapakaSenzorVlagaHIA5.&PomNapakaSenzorVlagaHIA6.'PomNapakaSenzorVlagaHIA7.(PomNapakaSenzorVlagaHIA8.)bK@PANEL ComIzpadPanel TON- Com_Panel TON-FB_kom_serverA SCADA_komunikacija-FB_kom_serverB SCADA_komunikacija-Skupno_razlitje-bK@PLC_PRGFB_ObdelavaAnalognihVhodov ObdelavaAnalognihVhodov)bK@PLC_PRG_MODNET Slave_Adresa` Slave_Port` SlaveSetup  MBS_Setup` SlavePoll MBS_Poll` SlaveAnswer  MBS_Answer`step` end` i` cycle` First cycle OpenDefaultPort` Write_16`Write_15`Write_5`j`slavepollwOffset_temp`slaveanswerwCount_temp`slaveanswerwoffset_temp` Dodano 8.12.2009 prvi_zagon`prvi_zagon_int`bK@ READ_DWORDdVARaloahia Read_dWordbK@ READ_REALrVARblobhib Read_RealbK@ READ_STRINGsVarQQcstartc Read_StringbK@SCADA_KOMUNIKACIJAComIzpad TON, ComIzpad1 TON, cas_za_izpad_kom,GNastavitev casa po katerem naj javi krmilnik izpad komunikacije s scadosprem_iz_scade,Stanje, ki se vrne v scado sprem_v_scado,Stanje, ki se posilja na scadonapaka_kom_scada_alarm,4Spremenljivka, ki javi napako v komunikaciji s scadobK@ SKALIRANJESmerniKoeficientPremice+VrednostVTockiNic+PomTrenutnaVrednost+ TrenVzorec+TrenutnaVrednost1+Omogoci+ StVzorcenj+TrenutnaVrednost+ObmocjeVhodaLo+ObmocjeVhodaHi+ObmocjeIzhodaLo+ObmocjeIzhodaHi+ SkaliranaVrednost+ NapakaSenzor+ bK@ USERANDTIMESetTime S40_SetRealTimeClock`/ TempError`/ SetTimeNegFl F_TRIG`/ SetTimePosFl R_TRIG`/TimeSinhroTimer TON`/bK@  +,/1.)-[\]Zd`(@K-@K;@KI@K^@k@+localhostt \XSoftexeAde_P00w-.w,.  8D  4AHZJTcp/Ip (Level 2 Route)ST33S Tcp/Ip Level 2 Router Driver6AddressIP address or hostname 10.1.1.234PortTargetId7dMotorola byteorderNoYes2AHZJTcp/Ip (Level 2 Route)Master_example.propto3S Tcp/Ip Level 2 Router Driver6AddressIP address or hostname 8.3.15.254PortTargetId7dMotorola byteorderNoYesAHZJTcp/Ip (Level 2 Route)testpto3S Tcp/Ip Level 2 Router Driver5AddressIP address or hostname 10.1.6.33PortTargetId7dMotorola byteorderNoYes AHZJTcp/Ip (Level 2 Route)ST2TCP/IP3S Tcp/Ip Level 2 Router Driver;AddressIP address or hostname 192.168.119.200PortTargetId7dMotorola byteorderNoYesAHZJTcp/Ip (Level 2 Route)TCP/IP_Cigal3S Tcp/Ip Level 2 Router Driver6AddressIP address or hostname 10.1.1.234PortTargetId7dMotorola byteorderNoYesAHZJTcp/Ip (Level 2 Route)ST33S Tcp/Ip Level 2 Router Driver6AddressIP address or hostname 10.1.1.234PortTargetId7dMotorola byteorderNoYesAHZJTcp/Ip (Level 2 Route)ST2.proIPKO3S Tcp/Ip Level 2 Router Driver5AddressIP address or hostname 10.1.6.34PortTargetId7dMotorola byteorderNoYesK@bK,,:8CoDeSys 1-2.2@B "$ '(P~@@@@@@MNOP`atyzbcde_Q\RKUXZ  "!#$^fghijkFHJLNPRUSTVWlopqrsuv|~xz(%@& IJK LM@B"$ '(PMNO`tyzbcde_Q\1-100RKUCANXZ16#2000-16#5fff  "!#$fghijkFHJLNPRUSTVWopqrsuv%@& IJK LMAB"$ '(PMNO`tyzbcde_Q\1-100RKUCANXZ16#2000-16#5fff  "!#$fghijkFHJLNPRUSTVWopqrsuvw%@& IJK LM Name Index  SubIndex Accesslevel!lowmiddlehighAccessright1 read only write only read-write Variable  ValueVariableMinVariableMaxVariable5 Name Index  SubIndex Accesslevel!lowmiddlehighAccessright1 read only write only read-write Type~INTUINTDINTUDINTLINTULINTSINTUSINTBYTEWORDDWORDREALLREALSTRING Value Type Default TypeMin TypeMax Type5 Name Index  SubIndex Accesslevel!lowmiddlehighAccessright1 read only write only read-write Type~INTUINTDINTUDINTLINTULINTSINTUSINTBYTEWORDDWORDREALLREALSTRING Value Type Default TypeMin TypeMax Typed Member Index-Offset SubIndex-Offset Accesslevel!lowmiddlehighAccessright1 read only write only read-writeMinMemberMaxMember Name Member  ValueMember Index  SubIndex Accesslevel!lowmiddlehighAccessright1 read only write only read-writeMinMemberMaxMember Name Index  SubIndex Accesslevel!lowmiddlehighAccessright1 read only write only read-write Variable  ValueVariableMinVariableMaxVariable_Dummy@@@@@@@@@@v@@;@+v@4@v@D@ @f@4@f@v@f@@u@f@  Module.Root-1 __not_found__Parameter.PXC101_11 Module.Root WARMSTART WARMSTARTINTParameter.PXC101INT2 Module.Root655360DWORDParameter.PXC101INT3 Module.Root1310720DWORDParameter.PXC101INT4 Module.Root00DWORDParameter.PXC101INT5 Module.Root00DWORDParameter.PX101PARWORD6 Module.Root00WORDParameter.PX101PARWORD7 Module.Root00WORDParameter.PX101PARWORD8 Module.Root00WORDParameter.PXC101ROUTING19 Module.Root125KBaud125KBaudINTParameter.PXC101ROUTING210 Module.Root127127INTParameter.PXC101INT11 Module.Root10485760DWORDParameter.PXC101INT12 Module.Root20971520DWORDParameter.PXC101ROUTING313 Module.Root11DWORDParameter.PXC101ROUTING414 Module.Root00DWORD&Configuration XC-CPU201-EC512K-8DI-6DOIB%QB%MB%MLocal Inputs/CounterChannel.LocalInput1 Module.RootIB%Bit 0Bit 1Bit 2Bit 3Bit 4Bit 5Bit 6Bit 7MStateChannel.LokalBitin2012 Module.RootIX%MN0Channel.LokalBitin2013 Module.RootIX%MN1Channel.LokalBitin2014 Module.RootIX%MErrorChannel.LokalBitin2015 Module.RootIX%MReferencing activatedChannel.LokalBitin2016 Module.RootIX%MCounter-Value Low-WordChannel.WordInput7 Module.RootIW%Bit 0Bit 1Bit 2Bit 3Bit 4Bit 5Bit 6Bit 7Bit 8Bit 9Bit 10Bit 11Bit 12Bit 13Bit 14Bit 15MCounter-Value High-WordChannel.WordInput8 Module.RootIW%Bit 0Bit 1Bit 2Bit 3Bit 4Bit 5Bit 6Bit 7Bit 8Bit 9Bit 10Bit 11Bit 12Bit 13Bit 14Bit 15M Local OutputsChannel.LocalOutput9 Module.RootQB%Bit 0Bit 1Bit 2Bit 3Bit 4Bit 5Bit 6Bit 7MReference WindowChannel.LokalBitout20110 Module.RootQX%MReset Counter0Channel.LokalBitout20111 Module.RootQX%MReset Counter1Channel.LokalBitout20112 Module.RootQX%MN0 QuitChannel.LokalBitout20113 Module.RootQX%MN1 QuitChannel.LokalBitout20114 Module.RootQX%M Error QuitChannel.LokalBitout20115 Module.RootQX%M32BitCounter/Counter0 EnableChannel.LokalBitout20116 Module.RootQX%MCounter1 EnableChannel.LokalBitout20117 Module.RootQX%oModule.XIOC_IA8II20 Module.Root XIOC-8AI-I2IB%QB%MB%M 4-20mA InputChannel.AnalogInput1Module.XIOC_IA8II2IW%M 4-20mA InputChannel.AnalogInput2Module.XIOC_IA8II2IW%M 4-20mA InputChannel.AnalogInput3Module.XIOC_IA8II2IW %M 4-20mA InputChannel.AnalogInput4Module.XIOC_IA8II2IW %M 4-20mA InputChannel.AnalogInput5Module.XIOC_IA8II2IW%M 4-20mA InputChannel.AnalogInput6Module.XIOC_IA8II2IW%M 4-20mA InputChannel.AnalogInput7Module.XIOC_IA8II2IW%M 4-20mA InputChannel.AnalogInput8Module.XIOC_IA8II2IW%oModule.XIOC_IA8II21 Module.Root XIOC-8AI-I2IB%QB%MB%M 4-20mA InputChannel.AnalogInput1Module.XIOC_IA8II2IW%M 4-20mA InputChannel.AnalogInput2Module.XIOC_IA8II2IW%M 4-20mA InputChannel.AnalogInput3Module.XIOC_IA8II2IW%M 4-20mA InputChannel.AnalogInput4Module.XIOC_IA8II2IW%M 4-20mA InputChannel.AnalogInput5Module.XIOC_IA8II2IW%M 4-20mA InputChannel.AnalogInput6Module.XIOC_IA8II2IW %M 4-20mA InputChannel.AnalogInput7Module.XIOC_IA8II2IW"%M 4-20mA InputChannel.AnalogInput8Module.XIOC_IA8II2IW$%oModule.XIOC_ID162 Module.Root XIOC-16DIIB&%QB%MB%M 16 InputsChannel.WordInput1Module.XIOC_ID16IW&%Bit 0Bit 1Bit 2Bit 3Bit 4Bit 5Bit 6Bit 7Bit 8Bit 9Bit 10Bit 11Bit 12Bit 13Bit 14Bit 15oModule.XIOC_EMPTY3 Module.Root EMPTY-SLOTIB(%QB%MB%oModule.XIOC_EMPTY4 Module.Root EMPTY-SLOTIB(%QB%MB%oModule.XIOC_EMPTY5 Module.Root EMPTY-SLOTIB(%QB%MB%oModule.XIOC_EMPTY6 Module.Root EMPTY-SLOTIB(%QB%MB%bK bKVAR_GLOBAL END_VAR ",PLC_PRG PLC_PRG();modnetPLC_PRG_modnet();bKStartCalled when program startsPROGRAM systemevent@BStopCalled when program stopsPROGRAM systemevent@BIO-Interrupt 1Interrupt-Channel 1PROGRAM systemevent@BIO-Interrupt 2Interrupt-Channel 2PROGRAM systemevent@BIO-Interrupt 3Interrupt-Channel 3PROGRAM systemevent@BIO-Interrupt 4Interrupt-Channel 4PROGRAM systemevent@BIO-Interrupt 5Interrupt-Channel 5PROGRAM systemevent@BIO-Interrupt 6Interrupt-Channel 6PROGRAM systemevent@B$Standardk:G k:G bKVAR_CONFIG END_VAR ',wDGlobal_Variables@d PrevisokaTemp ups_polnjenjeNapakaSenzorVlagaHIA1NapakaSenzorVlagaHIA2NapakaSenzorVlagaHIA3NapakaSenzorVlagaHIA4NapakaSenzorVlagaHIA5NapakaSenzorVlagaHIA6NapakaSenzorVlagaHIA7NapakaSenzorVlagaHIA8ControlXVHtxt1XVHtxt2XVHtxt3XVHtxt4ComSCADA XVH_UPSstatusDateTimeComError ComSCADA1 ComSCADA2 ComSCADA3UserCurrentNameSlabaBaterijaPLC TIA1_temp TIA2_tempNapakaTSTempTIA1 TIA3_tempNapakaTSTempTIA2 TIA4_tempNapakaTSTempTIA3 TIA5_tempNapakaTSTempTIA4 TIA6_tempNapakaTSTempTIA5 TIA7_tempNapakaTSTempTIA6 TIA8_tempNapakaTSTempTIA7NapakaTSTempTIA8 Date_Timenapaka_kom_scada ups_alarm HIA1_vlaga HIA2_vlaganapaka_kom_panel HIA3_vlaga HIA4_vlagaSetDateTimeError HIA5_vlaga HIA6_vlaga HIA7_vlaga HIA8_vlagaUserCurrentLevelTIA1_previs_tempTIA2_previs_tempTIA3_previs_tempTIA4_previs_tempnapaka_kom_scada2TIA5_previs_tempTIA6_previs_tempTIA7_previs_tempSetDateTimeDemandTIA8_previs_tempXVHdepltedBatery1XVHdepltedBatery2 SetDateTime UserDisplay TIA1_temp_s TIA2_temp_s TIA3_temp_s TIA4_temp_s TIA5_temp_s TIA6_temp_s TIA7_temp_s TIA8_temp_s XVH_AlarmOn razlitjeLAH1 razlitjeLAH2 razlitjeLAH3 razlitjeLAH4 razlitjeLAH5 razlitjeLAH6 razlitjeLAH7 razlitjeLAH8NapakaSenzorSkupnoups_baterijski_nac HIA1_vlaga_s HIA2_vlaga_s HIA3_vlaga_s HIA4_vlaga_s HIA5_vlaga_s HIA6_vlaga_s HIA7_vlaga_s HIA8_vlaga_s UserLoggedInSetDateTimeFinishedStatus XVHlowBatery1 XVHlowBatery2bK bK VAR_GLOBAL (* Digitalni vhodi *) ups_alarm AT %IX0.0:BOOL; (*UPS NAPAJALNIK ALARM*) ups_baterijski_nac AT %IX0.1:BOOL; (*UPS NAPAJALNIK BATERIJSKI NACIN*) ups_polnjenje AT %IX0.2:BOOL; (*UPS NAPAJALNIK POLNJENJE*) razlitjeLAH1 AT %IX0.3:BOOL; (*DETEKTOR RAZLITJA VODE RAZLITJE VODE*) razlitjeLAH2 AT %IX0.4:BOOL; (*DETEKTOR RAZLITJA VODE RAZLITJE VODE*) razlitjeLAH3 AT %IX0.5:BOOL; (*DETEKTOR RAZLITJA VODE RAZLITJE VODE*) razlitjeLAH4 AT %IX0.6:BOOL; (*DETEKTOR RAZLITJA VODE RAZLITJE VODE*) razlitjeLAH5 AT %IX0.7:BOOL; (*DETEKTOR RAZLITJA VODE RAZLITJE VODE*) (* Analogni vhodi *) (*1: XIOC-8AI-I2*) TIA1_temp AT %IW6:WORD; (*MERILNIK TEMP. IN VLAGE 060C/420mA*) HIA1_vlaga AT %IW8:WORD; (*MERILNIK TEMP. IN VLAGE 0100%/420mA*) TIA2_temp AT %IW10:WORD; (*MERILNIK TEMP. IN VLAGE 060C/420mA*) HIA2_vlaga AT %IW12:WORD; (*MERILNIK TEMP. IN VLAGE 0100%/420mA*) TIA3_temp AT %IW14:WORD; (*MERILNIK TEMP. IN VLAGE 060C/420mA*) HIA3_vlaga AT %IW16:WORD; (*MERILNIK TEMP. IN VLAGE 0100%/420mA*) TIA4_temp AT %IW18:WORD; (*MERILNIK TEMP. IN VLAGE 060C/420mA*) HIA4_vlaga AT %IW20:WORD; (*MERILNIK TEMP. IN VLAGE 0100%/420mA*) (*2: XIOC-8AI-I2*) TIA5_temp AT %IW22:WORD; (*MERILNIK TEMP. IN VLAGE 060C/420mA*) HIA5_vlaga AT %IW24:WORD; (*MERILNIK TEMP. IN VLAGE 0100%/420mA*) TIA6_temp AT %IW26:WORD; (*MERILNIK TEMP. IN VLAGE 060C/420mA*) HIA6_vlaga AT %IW28:WORD; (*MERILNIK TEMP. IN VLAGE 0100%/420mA*) TIA7_temp AT %IW30:WORD; (*MERILNIK TEMP. IN VLAGE 060C/420mA*) HIA7_vlaga AT %IW32:WORD; (*MERILNIK TEMP. IN VLAGE 0100%/420mA*) TIA8_temp AT %IW34:WORD; (*MERILNIK TEMP. IN VLAGE 060C/420mA*) HIA8_vlaga AT %IW36:WORD; (*MERILNIK TEMP. IN VLAGE 0100%/420mA*) (*Digitalni vhodi*) razlitjeLAH6 AT %IX38.0:BOOL; (*DETEKTOR RAZLITJA VODE RAZLITJE VODE*) razlitjeLAH7 AT %IX38.1:BOOL; (*DETEKTOR RAZLITJA VODE RAZLITJE VODE*) razlitjeLAH8 AT %IX38.2:BOOL; (*DETEKTOR RAZLITJA VODE RAZLITJE VODE*) (*Za testiranje*) (* (* Digitalni vhodi *) ups_alarm:BOOL; (*UPS NAPAJALNIK ALARM*) ups_baterijski_nac:BOOL; (*UPS NAPAJALNIK BATERIJSKI NACIN*) ups_polnjenje:BOOL; (*UPS NAPAJALNIK POLNJENJE*) razlitjeLAH1:BOOL; (*DETEKTOR RAZLITJA VODE RAZLITJE VODE*) razlitjeLAH2:BOOL; (*DETEKTOR RAZLITJA VODE RAZLITJE VODE*) razlitjeLAH3:BOOL; (*DETEKTOR RAZLITJA VODE RAZLITJE VODE*) razlitjeLAH4:BOOL; (*DETEKTOR RAZLITJA VODE RAZLITJE VODE*) razlitjeLAH5:BOOL; (*DETEKTOR RAZLITJA VODE RAZLITJE VODE*) razlitjeLAH6:BOOL; (*DETEKTOR RAZLITJA VODE RAZLITJE VODE*) razlitjeLAH7:BOOL; (*DETEKTOR RAZLITJA VODE RAZLITJE VODE*) razlitjeLAH8:BOOL; (*DETEKTOR RAZLITJA VODE RAZLITJE VODE*) (* Analogni vhodi *) (*1: XIOC-8AI-I2*) TIA1_temp:WORD; (*MERILNIK TEMP. IN VLAGE 060C/420mA*) HIA1_vlaga:WORD; (*MERILNIK TEMP. IN VLAGE 0100%/420mA*) TIA2_temp:WORD; (*MERILNIK TEMP. IN VLAGE 060C/420mA*) HIA2_vlaga:WORD; (*MERILNIK TEMP. IN VLAGE 0100%/420mA*) TIA3_temp:WORD; (*MERILNIK TEMP. IN VLAGE 060C/420mA*) HIA3_vlaga:WORD; (*MERILNIK TEMP. IN VLAGE 0100%/420mA*) TIA4_temp:WORD; (*MERILNIK TEMP. IN VLAGE 060C/420mA*) HIA4_vlaga:WORD; (*MERILNIK TEMP. IN VLAGE 0100%/420mA*) (*2: XIOC-8AI-I2*) TIA5_temp:WORD; (*MERILNIK TEMP. IN VLAGE 060C/420mA*) HIA5_vlaga:WORD; (*MERILNIK TEMP. IN VLAGE 0100%/420mA*) TIA6_temp:WORD; (*MERILNIK TEMP. IN VLAGE 060C/420mA*) HIA6_vlaga:WORD; (*MERILNIK TEMP. IN VLAGE 0100%/420mA*) TIA7_temp:WORD; (*MERILNIK TEMP. IN VLAGE 060C/420mA*) HIA7_vlaga:WORD; (*MERILNIK TEMP. IN VLAGE 0100%/420mA*) TIA8_temp:WORD; (*MERILNIK TEMP. IN VLAGE 060C/420mA*) HIA8_vlaga:WORD; (*MERILNIK TEMP. IN VLAGE 0100%/420mA*) *) (*Temperature in vlage*) TIA1_temp_s:INT; HIA1_vlaga_s : INT; TIA2_temp_s:INT; HIA2_vlaga_s : INT; TIA3_temp_s:INT; HIA3_vlaga_s : INT; TIA4_temp_s:INT; HIA4_vlaga_s : INT; TIA5_temp_s:INT; HIA5_vlaga_s : INT; TIA6_temp_s:INT; HIA6_vlaga_s : INT; TIA7_temp_s:INT; HIA7_vlaga_s : INT; TIA8_temp_s:INT; HIA8_vlaga_s : INT; (*Napake senzorjev ki so prikljuceni na analogne vhode*) NapakaTSTempTIA1 : BOOL; NapakaTSTempTIA2 : BOOL; NapakaTSTempTIA3 : BOOL; NapakaTSTempTIA4 : BOOL; NapakaTSTempTIA5 : BOOL; NapakaTSTempTIA6 : BOOL; NapakaTSTempTIA7 : BOOL; NapakaTSTempTIA8 : BOOL; NapakaSenzorVlagaHIA1: BOOL; NapakaSenzorVlagaHIA2: BOOL; NapakaSenzorVlagaHIA3: BOOL; NapakaSenzorVlagaHIA4: BOOL; NapakaSenzorVlagaHIA5: BOOL; NapakaSenzorVlagaHIA6: BOOL; NapakaSenzorVlagaHIA7: BOOL; NapakaSenzorVlagaHIA8: BOOL; (* Nastavljanje alarma za temperature*) TIA1_previs_temp:BOOL; TIA2_previs_temp:BOOL; TIA3_previs_temp:BOOL; TIA4_previs_temp:BOOL; TIA5_previs_temp:BOOL; TIA6_previs_temp:BOOL; TIA7_previs_temp:BOOL; TIA8_previs_temp:BOOL; PrevisokaTemp:BOOL; (*Previsoka temp. v kateremkoli prostoru*) NapakaSenzorSkupno:BOOL; (* Skupna stanja naprav za prikaz na panelu*) XVH_UPSstatus:BYTE; (* status UPSa za napajanje krmilnika *) (* Napake v komunikacijah*) napaka_kom_panel : BOOL; napaka_kom_scada : BOOL; (*Napaka v komunikaciji s scado za prvi racunalnik (server A)*) napaka_kom_scada2 : BOOL; (*Napaka v komunikaciji s scado za drugi racunalnik (server B)*) (* Skupna napaka v komunikacijah *) ComError:BOOL; (* Spremenljivke za preverjanje napak v komunikacijo s scadami*) ComSCADA1: BOOL:=FALSE; (* spremenljivka, ki se prenese iz scade za preverjanje komunikacije server A*) ComSCADA: BOOL:=FALSE; (* spremenljivka, ki se prenese na scado za preverjanje komunikacije server A*) ComSCADA2: BOOL:=FALSE; (* spremenljivka, ki se prenese na scado za preverjanje komunikacije server B*) ComSCADA3: BOOL:=FALSE; (* spremenljivka, ki se prenese iz scade za preverjanje komunikacije server B*) (* XVH300 kontrolne strukture *) Control: ARRAY [0..8] OF WORD; Status: ARRAY [0..8] OF WORD; (*bit Status[0].0 = 0 pomeni da ni komunikacije s panelom*) Date_Time:ARRAY [0..3] OF WORD; SlabaBaterijaPLC : BOOL; (* Uporabnik in njegova stopnja *) UserCurrentLevel: BYTE := 2; UserLoggedIn:BOOL; UserCurrentName:STRING[40]; UserDisplay:STRING[40]; (* Nastavljanje ure in datuma s Scade *) SetDateTime:BOOL; (* na pozitivno fronto se sprozi prenos ure na krmilnik in panel *) SetDateTimeFinished:BOOL; (* nastavljanje na panelu in krmilniku uspelo *) SetDateTimeError:BOOL; (* napaka pri nastavljanju ure in datuma - na krmilniku ali panelu *) SetDateTimeDemand:BOOL;(* Zahteva panela po prenosu podatkov ure in casa - odgovor scade naj bi bil SetDateTime *) DateTime:DateTimeS; (* ura in datum *) XVHtxt1:STRING[40]; XVHtxt2:STRING[40]; XVHlowBatery1,XVHdepltedBatery1:REAL; (* za sliko baterije UPSa *) XVHtxt3:STRING[40]; XVHtxt4:STRING[40]; XVHlowBatery2,XVHdepltedBatery2:REAL; (* Barvanje gumba za alarm ob kateremukoli alarmu *) XVH_AlarmOn:BOOL; END_VAR'd,RGlobal_Variables_ModnetbK bKdpVAR_GLOBAL (*delovno polje za modnet komunikacijo*) mind :ARRAY [0..9999] OF WORD; mind_bool :ARRAY [0..9999] OF BOOL; (*Buffer-Array*) (*Delovni markerji //*) Bit_0 AT %MX0.0 : BOOL; Byte_0 AT %MB0 : BYTE; Byte_1 AT %MB1 : BYTE; Byte_2 AT %MB2 : BYTE; Byte_3 AT %MB3 : BYTE; Real_0 AT %MR0:REAL; DWord_0 AT %MD0:DWORD; Word_01 AT %MW0:WORD; Word_23 AT %MW2:WORD; String_0 AT %MW10:STRING; wStr_0 AT %MW10:WORD; wStr_1 AT %MW12:WORD; wStr_2 AT %MW14:WORD; wStr_3 AT %MW16:WORD; wStr_4 AT %MW18:WORD; wStr_5 AT %MW20:WORD; wStr_6 AT %MW22:WORD; wStr_7 AT %MW24:WORD; wStr_8 AT %MW26:WORD; wStr_9 AT %MW28:WORD; wStr_10 AT %MW30:WORD; wStr_11 AT %MW32:WORD; wStr_12 AT %MW34:WORD; wStr_13 AT %MW36:WORD; wStr_14 AT %MW38:WORD; bStr_00 AT %MB10:BYTE; bStr_01 AT %MB11:BYTE; bStr_02 AT %MB12:BYTE; bStr_03 AT %MB13:BYTE; bStr_04 AT %MB14:BYTE; bStr_05 AT %MB15:BYTE; bStr_06 AT %MB16:BYTE; bStr_07 AT %MB17:BYTE; bStr_08 AT %MB18:BYTE; bStr_09 AT %MB19:BYTE; bStr_10 AT %MB20:BYTE; bStr_11 AT %MB21:BYTE; bStr_12 AT %MB22:BYTE; bStr_13 AT %MB23:BYTE; bStr_14 AT %MB24:BYTE; bStr_15 AT %MB25:BYTE; bStr_16 AT %MB26:BYTE; bStr_17 AT %MB27:BYTE; bStr_18 AT %MB28:BYTE; bStr_19 AT %MB29:BYTE; bStr_20 AT %MB30:BYTE; bStr_21 AT %MB31:BYTE; bStr_22 AT %MB32:BYTE; bStr_23 AT %MB33:BYTE; bStr_24 AT %MB34:BYTE; bStr_25 AT %MB35:BYTE; bStr_26 AT %MB36:BYTE; bStr_27 AT %MB37:BYTE; bStr_28 AT %MB38:BYTE; bStr_29 AT %MB39:BYTE; (********************************************) END_VAR '1,nztGlobal_Variables_RETAIN_PERISISTENT@ TIA1_alarm TIA2_alarm TIA3_alarm TIA4_alarm TIA5_alarm TIA6_alarm TIA7_alarm TIA8_alarmkom_nast_cas_izpadabK bK1VAR_GLOBAL RETAIN PERSISTENT TIA1_alarm : INT:=32; TIA2_alarm : INT:=32; TIA3_alarm : INT:=32; TIA4_alarm : INT:=32; TIA5_alarm : INT:=32; TIA6_alarm : INT:=32; TIA7_alarm : INT:=32; TIA8_alarm : INT:=32; kom_nast_cas_izpada:UINT:=180; (*v sekundah*) END_VAR' ,BW(tVariable_ConfigurationbK bK VAR_CONFIG END_VAR |0|0~3DEFAULTSystem|0|0 hh':'mm':'ssdd'-'MM'-'yyyy' _,Re DateTimeSbK bKTYPE DateTimeS :STRUCT Sekunda:BYTE; Minuta : BYTE; Ura : BYTE; Dan : BYTE; Mesec : BYTE; Leto:BYTE; Leto2: INT; END_STRUCT END_TYPEZ, `mod_ReadbK bKPROGRAM mod_Read VAR END_VARq (*Branje BOOL*) (**) mind_bool[0]:=ComError; mind_bool[1]:=ComSCADA; mind_bool[2]:=ComSCADA1; mind_bool[3]:=ComSCADA2; mind_bool[4]:=ComSCADA3; mind_bool[5]:=napaka_kom_panel; mind_bool[6]:=napaka_kom_scada; mind_bool[7]:=napaka_kom_scada2; mind_bool[8]:=NapakaSenzorSkupno; mind_bool[9]:=NapakaSenzorVlagaHIA1; mind_bool[10]:=NapakaSenzorVlagaHIA2; mind_bool[11]:=NapakaSenzorVlagaHIA3; mind_bool[12]:=NapakaSenzorVlagaHIA4; mind_bool[13]:=NapakaSenzorVlagaHIA5; mind_bool[14]:=NapakaSenzorVlagaHIA6; mind_bool[15]:=NapakaSenzorVlagaHIA7; mind_bool[16]:=NapakaSenzorVlagaHIA8; mind_bool[17]:=NapakaTSTempTIA1; mind_bool[18]:=NapakaTSTempTIA2; mind_bool[19]:=NapakaTSTempTIA3; mind_bool[20]:=NapakaTSTempTIA4; mind_bool[21]:=NapakaTSTempTIA5; mind_bool[22]:=NapakaTSTempTIA6; mind_bool[23]:=NapakaTSTempTIA7; mind_bool[24]:=NapakaTSTempTIA8; mind_bool[25]:=PrevisokaTemp; mind_bool[26]:=razlitjeLAH1; mind_bool[27]:=razlitjeLAH2; mind_bool[28]:=razlitjeLAH3; mind_bool[29]:=razlitjeLAH4; mind_bool[30]:=razlitjeLAH5; mind_bool[31]:=razlitjeLAH6; mind_bool[32]:=razlitjeLAH7; mind_bool[33]:=razlitjeLAH8; mind_bool[34]:=SetDateTime; mind_bool[35]:=SetDateTimeDemand; mind_bool[36]:=SetDateTimeError; mind_bool[37]:=SetDateTimeFinished; mind_bool[38]:=SlabaBaterijaPLC; mind_bool[39]:=TIA1_previs_temp; mind_bool[40]:=TIA2_previs_temp; mind_bool[41]:=TIA3_previs_temp; mind_bool[42]:=TIA4_previs_temp; mind_bool[43]:=TIA5_previs_temp; mind_bool[44]:=TIA6_previs_temp; mind_bool[45]:=TIA7_previs_temp; mind_bool[46]:=TIA8_previs_temp; mind_bool[47]:=ups_alarm; mind_bool[48]:=ups_baterijski_nac; mind_bool[49]:=ups_polnjenje; mind_bool[50]:=UserLoggedIn; mind_bool[51]:=XVH_AlarmOn; (*Branje INT*) (**) mind[0]:=DateTime.Dan; mind[1]:=DateTime.Leto; mind[2]:=DateTime.Leto2; mind[3]:=DateTime.Mesec; mind[4]:=DateTime.Minuta; mind[5]:=DateTime.Sekunda; mind[6]:=DateTime.Ura; mind[7]:=HIA1_vlaga_s; mind[8]:=HIA2_vlaga_s; mind[9]:=HIA3_vlaga_s; mind[10]:=HIA4_vlaga_s; mind[11]:=HIA5_vlaga_s; mind[12]:=HIA6_vlaga_s; mind[13]:=HIA7_vlaga_s; mind[14]:=HIA8_vlaga_s; mind[15]:=TIA1_alarm; mind[16]:=TIA1_temp_s; mind[17]:=TIA2_alarm; mind[18]:=TIA2_temp_s; mind[19]:=TIA3_alarm; mind[20]:=TIA3_temp_s; mind[21]:=TIA4_alarm; mind[22]:=TIA4_temp_s; mind[23]:=TIA5_alarm; mind[24]:=TIA5_temp_s; mind[25]:=TIA6_alarm; mind[26]:=TIA6_temp_s; mind[27]:=TIA7_alarm; mind[28]:=TIA7_temp_s; mind[29]:=TIA8_alarm; mind[30]:=TIA8_temp_s; mind[31]:=UserCurrentLevel; mind[32]:=XVH_UPSstatus; (*Branje UINT*) (**) mind[6000]:=kom_nast_cas_izpada; (*Branje LONG*) (**) (*Branje REAL*) (**) Read_Real(rVar:=rVersion,lo:=4000,hi:=4001); Read_Real(rVar:=XVHdepltedBatery1,lo:=4002,hi:=4003); Read_Real(rVar:=XVHdepltedBatery2,lo:=4004,hi:=4005); Read_Real(rVar:=XVHlowBatery1,lo:=4006,hi:=4007); Read_Real(rVar:=XVHlowBatery2,lo:=4008,hi:=4009); (*Branje STRING*) (**) (*Read_String(sVar:=Date_Time[0],start:=5000); Read_String(sVar:=Date_Time[1],start:=5015); Read_String(sVar:=Date_Time[2],start:=5030); Read_String(sVar:=Date_Time[3],start:=5045);*) Read_String(sVar:=UserCurrentName,start:=5060);[,Xtdmod_Write_BoolbK bKOFUNCTION mod_Write_Bool : BOOL VAR_INPUT index: INT; END_VAR VAR END_VAR(*vpis iz scade*) CASE index OF (*Pisanje BOOL*) (**) 0:ComError:=Bit_0; 1:ComSCADA:=Bit_0; 2:ComSCADA1:=Bit_0; 3:ComSCADA2:=Bit_0; 4:ComSCADA3:=Bit_0; 5:napaka_kom_panel:=Bit_0; 6:napaka_kom_scada:=Bit_0; 7:napaka_kom_scada2:=Bit_0; 8:NapakaSenzorSkupno:=Bit_0; 9:NapakaSenzorVlagaHIA1:=Bit_0; 10:NapakaSenzorVlagaHIA2:=Bit_0; 11:NapakaSenzorVlagaHIA3:=Bit_0; 12:NapakaSenzorVlagaHIA4:=Bit_0; 13:NapakaSenzorVlagaHIA5:=Bit_0; 14:NapakaSenzorVlagaHIA6:=Bit_0; 15:NapakaSenzorVlagaHIA7:=Bit_0; 16:NapakaSenzorVlagaHIA8:=Bit_0; 17:NapakaTSTempTIA1:=Bit_0; 18:NapakaTSTempTIA2:=Bit_0; 19:NapakaTSTempTIA3:=Bit_0; 20:NapakaTSTempTIA4:=Bit_0; 21:NapakaTSTempTIA5:=Bit_0; 22:NapakaTSTempTIA6:=Bit_0; 23:NapakaTSTempTIA7:=Bit_0; 24:NapakaTSTempTIA8:=Bit_0; 25:PrevisokaTemp:=Bit_0; (*26:razlitjeLAH1:=Bit_0; 27:razlitjeLAH2:=Bit_0; 28:razlitjeLAH3:=Bit_0; 29:razlitjeLAH4:=Bit_0; 30:razlitjeLAH5:=Bit_0; 31:razlitjeLAH6:=Bit_0; 32:razlitjeLAH7:=Bit_0; 33:razlitjeLAH8:=Bit_0;*) 34:SetDateTime:=Bit_0; 35:SetDateTimeDemand:=Bit_0; 36:SetDateTimeError:=Bit_0; 37:SetDateTimeFinished:=Bit_0; 38:SlabaBaterijaPLC:=Bit_0; 39:TIA1_previs_temp:=Bit_0; 40:TIA2_previs_temp:=Bit_0; 41:TIA3_previs_temp:=Bit_0; 42:TIA4_previs_temp:=Bit_0; 43:TIA5_previs_temp:=Bit_0; 44:TIA6_previs_temp:=Bit_0; 45:TIA7_previs_temp:=Bit_0; 46:TIA8_previs_temp:=Bit_0; (*47:ups_alarm:=Bit_0; 48:ups_baterijski_nac:=Bit_0; 49:ups_polnjenje:=Bit_0;*) 50:UserLoggedIn:=Bit_0; 51:XVH_AlarmOn:=Bit_0; (*BOOL*) END_CASE\,nzmod_Write_dWordbK bKOFUNCTION mod_Write_dWord : BOOL VAR_INPUT Index:INT; END_VAR VAR END_VAR(*vpis iz scade*) CASE index OF (*Pisanje LONG*) (**) (*Pisanje REAL*) (**) (*4001:rVersion:=Real_0;*) 4003:XVHdepltedBatery1:=Real_0; 4005:XVHdepltedBatery2:=Real_0; 4007:XVHlowBatery1:=Real_0; 4009:XVHlowBatery2:=Real_0; END_CASE],mod_Write_StringbK bKPFUNCTION mod_Write_String : BOOL VAR_INPUT Index:INT; END_VAR VAR END_VAR(*vpis iz scade*) CASE index OF (*Pisanje STRING*) (**) (*5000:Date_Time[0]:=String_0; 5015:Date_Time[1]:=String_0; 5030:Date_Time[2]:=String_0; 5045:Date_Time[3]:=String_0;*) 5060:UserCurrentName:=String_0; END_CASE^mod_Write_WordbK bKNFUNCTION mod_Write_Word : BOOL VAR_INPUT Index:INT; END_VAR VAR END_VAR(*vpis iz scade*) CASE index OF (*Pisanje INT*) (**) 0:DateTime.Dan:=Byte_0; 1:DateTime.Leto:=Byte_0; 2:DateTime.Leto2:=Word_01; 3:DateTime.Mesec:=Byte_0; 4:DateTime.Minuta:=Byte_0; 5:DateTime.Sekunda:=Byte_0; 6:DateTime.Ura:=Byte_0; 7:HIA1_vlaga_s:=Word_01; 8:HIA2_vlaga_s:=Word_01; 9:HIA3_vlaga_s:=Word_01; 10:HIA4_vlaga_s:=Word_01; 11:HIA5_vlaga_s:=Word_01; 12:HIA6_vlaga_s:=Word_01; 13:HIA7_vlaga_s:=Word_01; 14:HIA8_vlaga_s:=Word_01; 15:TIA1_alarm:=Word_01; 16:TIA1_temp_s:=Word_01; 17:TIA2_alarm:=Word_01; 18:TIA2_temp_s:=Word_01; 19:TIA3_alarm:=Word_01; 20:TIA3_temp_s:=Word_01; 21:TIA4_alarm:=Word_01; 22:TIA4_temp_s:=Word_01; 23:TIA5_alarm:=Word_01; 24:TIA5_temp_s:=Word_01; 25:TIA6_alarm:=Word_01; 26:TIA6_temp_s:=Word_01; 27:TIA7_alarm:=Word_01; 28:TIA7_temp_s:=Word_01; 29:TIA8_alarm:=Word_01; 30:TIA8_temp_s:=Word_01; 31:UserCurrentLevel:=Byte_0; 32:XVH_UPSstatus:=Byte_0; (*Pisanje UINT*) (**) 6000:kom_nast_cas_izpada:=Word_01; ; END_CASE.,BWObdelavaAnalognihVhodovbK bKFUNCTION_BLOCK ObdelavaAnalognihVhodov VAR_INPUT END_VAR VAR_OUTPUT END_VAR VAR FB_SkaliranjeTempTIA1 : Skaliranje; FB_SkaliranjeTempTIA2 : Skaliranje; FB_SkaliranjeTempTIA3 : Skaliranje; FB_SkaliranjeTempTIA4 : Skaliranje; FB_SkaliranjeTempTIA5 : Skaliranje; FB_SkaliranjeTempTIA6 : Skaliranje; FB_SkaliranjeTempTIA7 : Skaliranje; FB_SkaliranjeTempTIA8 : Skaliranje; FB_SkaliranjeVlagaHIA1 : Skaliranje; FB_SkaliranjeVlagaHIA2 : Skaliranje; FB_SkaliranjeVlagaHIA3 : Skaliranje; FB_SkaliranjeVlagaHIA4 : Skaliranje; FB_SkaliranjeVlagaHIA5 : Skaliranje; FB_SkaliranjeVlagaHIA6 : Skaliranje; FB_SkaliranjeVlagaHIA7 : Skaliranje; FB_SkaliranjeVlagaHIA8 : Skaliranje; PomNapakaTSTempTIA1: BOOL; PomNapakaTSTempTIA2: BOOL; PomNapakaTSTempTIA3: BOOL; PomNapakaTSTempTIA4: BOOL; PomNapakaTSTempTIA5: BOOL; PomNapakaTSTempTIA6: BOOL; PomNapakaTSTempTIA7: BOOL; PomNapakaTSTempTIA8: BOOL; PomNapakaSenzorVlagaHIA1: BOOL; PomNapakaSenzorVlagaHIA2: BOOL; PomNapakaSenzorVlagaHIA3: BOOL; PomNapakaSenzorVlagaHIA4: BOOL; PomNapakaSenzorVlagaHIA5: BOOL; PomNapakaSenzorVlagaHIA6: BOOL; PomNapakaSenzorVlagaHIA7: BOOL; PomNapakaSenzorVlagaHIA8: BOOL; END_VARm (*TEMPERATURE*) FB_SkaliranjeTempTIA1( Omogoci:=TRUE , StVzorcenj:=50, TrenutnaVrednost:=TIA1_temp, ObmocjeVhodaLo:=0, ObmocjeVhodaHi:=4095, ObmocjeIzhodaLo:=0, ObmocjeIzhodaHi:=700, SkaliranaVrednost=>TIA1_temp_s, NapakaSenzor=>PomNapakaTSTempTIA1); NapakaTSTempTIA1:=PomNapakaTSTempTIA1; FB_SkaliranjeTempTIA2( Omogoci:=TRUE , StVzorcenj:=50, TrenutnaVrednost:=TIA2_temp, ObmocjeVhodaLo:=0, ObmocjeVhodaHi:=4095, ObmocjeIzhodaLo:=0, ObmocjeIzhodaHi:=700, SkaliranaVrednost=>TIA2_temp_s, NapakaSenzor=>PomNapakaTSTempTIA2); NapakaTSTempTIA2:=PomNapakaTSTempTIA2; FB_SkaliranjeTempTIA3( Omogoci:=TRUE , StVzorcenj:=50, TrenutnaVrednost:=TIA3_temp, ObmocjeVhodaLo:=0, ObmocjeVhodaHi:=4095, ObmocjeIzhodaLo:=0, ObmocjeIzhodaHi:=700, SkaliranaVrednost=>TIA3_temp_s, NapakaSenzor=>PomNapakaTSTempTIA3); NapakaTSTempTIA3:=PomNapakaTSTempTIA3; FB_SkaliranjeTempTIA4( Omogoci:=TRUE , StVzorcenj:=50, TrenutnaVrednost:=TIA4_temp, ObmocjeVhodaLo:=0, ObmocjeVhodaHi:=4095, ObmocjeIzhodaLo:=0, ObmocjeIzhodaHi:=700, SkaliranaVrednost=>TIA4_temp_s, NapakaSenzor=>PomNapakaTSTempTIA4); NapakaTSTempTIA4:=PomNapakaTSTempTIA4; FB_SkaliranjeTempTIA5( Omogoci:=TRUE , StVzorcenj:=50, TrenutnaVrednost:=TIA5_temp, ObmocjeVhodaLo:=0, ObmocjeVhodaHi:=4095, ObmocjeIzhodaLo:=0, ObmocjeIzhodaHi:=700, SkaliranaVrednost=>TIA5_temp_s, NapakaSenzor=>PomNapakaTSTempTIA5); NapakaTSTempTIA5:=PomNapakaTSTempTIA5; FB_SkaliranjeTempTIA6( Omogoci:=TRUE , StVzorcenj:=50, TrenutnaVrednost:=TIA6_temp, ObmocjeVhodaLo:=0, ObmocjeVhodaHi:=4095, ObmocjeIzhodaLo:=0, ObmocjeIzhodaHi:=700, SkaliranaVrednost=>TIA6_temp_s, NapakaSenzor=>PomNapakaTSTempTIA6); NapakaTSTempTIA6:=PomNapakaTSTempTIA6; FB_SkaliranjeTempTIA7( Omogoci:=TRUE , StVzorcenj:=50, TrenutnaVrednost:=TIA7_temp, ObmocjeVhodaLo:=0, ObmocjeVhodaHi:=4095, ObmocjeIzhodaLo:=0, ObmocjeIzhodaHi:=700, SkaliranaVrednost=>TIA7_temp_s, NapakaSenzor=>PomNapakaTSTempTIA7); NapakaTSTempTIA7:=PomNapakaTSTempTIA7; FB_SkaliranjeTempTIA8( Omogoci:=TRUE , StVzorcenj:=50, TrenutnaVrednost:=TIA8_temp, ObmocjeVhodaLo:=0, ObmocjeVhodaHi:=4095, ObmocjeIzhodaLo:=0, ObmocjeIzhodaHi:=700, SkaliranaVrednost=>TIA8_temp_s, NapakaSenzor=>PomNapakaTSTempTIA8 ); NapakaTSTempTIA8:=PomNapakaTSTempTIA8; (*VLAGE*) FB_SkaliranjeVlagaHIA1( Omogoci:=TRUE, StVzorcenj:=50, TrenutnaVrednost:=HIA1_vlaga, ObmocjeVhodaLo:=0, ObmocjeVhodaHi:=4095, ObmocjeIzhodaLo:=0, ObmocjeIzhodaHi:=1000, SkaliranaVrednost=>HIA1_vlaga_s, NapakaSenzor=>PomNapakaSenzorVlagaHIA1); NapakaSenzorVlagaHIA1:=PomNapakaSenzorVlagaHIA1; FB_SkaliranjeVlagaHIA2( Omogoci:=TRUE, StVzorcenj:=50, TrenutnaVrednost:=HIA2_vlaga, ObmocjeVhodaLo:=0, ObmocjeVhodaHi:=4095, ObmocjeIzhodaLo:=0, ObmocjeIzhodaHi:=1000, SkaliranaVrednost=>HIA2_vlaga_s, NapakaSenzor=>PomNapakaSenzorVlagaHIA2); NapakaSenzorVlagaHIA2:=PomNapakaSenzorVlagaHIA2; FB_SkaliranjeVlagaHIA3( Omogoci:=TRUE, StVzorcenj:=50, TrenutnaVrednost:=HIA3_vlaga, ObmocjeVhodaLo:=0, ObmocjeVhodaHi:=4095, ObmocjeIzhodaLo:=0, ObmocjeIzhodaHi:=1000, SkaliranaVrednost=>HIA3_vlaga_s, NapakaSenzor=>PomNapakaSenzorVlagaHIA3); NapakaSenzorVlagaHIA3:=PomNapakaSenzorVlagaHIA3; FB_SkaliranjeVlagaHIA4( Omogoci:=TRUE, StVzorcenj:=50, TrenutnaVrednost:=HIA4_vlaga, ObmocjeVhodaLo:=0, ObmocjeVhodaHi:=4095, ObmocjeIzhodaLo:=0, ObmocjeIzhodaHi:=1000, SkaliranaVrednost=>HIA4_vlaga_s, NapakaSenzor=>PomNapakaSenzorVlagaHIA4); NapakaSenzorVlagaHIA4:=PomNapakaSenzorVlagaHIA4; FB_SkaliranjeVlagaHIA5( Omogoci:=TRUE, StVzorcenj:=50, TrenutnaVrednost:=HIA5_vlaga, ObmocjeVhodaLo:=0, ObmocjeVhodaHi:=4095, ObmocjeIzhodaLo:=0, ObmocjeIzhodaHi:=1000, SkaliranaVrednost=>HIA5_vlaga_s, NapakaSenzor=>PomNapakaSenzorVlagaHIA5); NapakaSenzorVlagaHIA5:=PomNapakaSenzorVlagaHIA5; FB_SkaliranjeVlagaHIA6( Omogoci:=TRUE, StVzorcenj:=50, TrenutnaVrednost:=HIA6_vlaga, ObmocjeVhodaLo:=0, ObmocjeVhodaHi:=4095, ObmocjeIzhodaLo:=0, ObmocjeIzhodaHi:=1000, SkaliranaVrednost=>HIA6_vlaga_s, NapakaSenzor=>PomNapakaSenzorVlagaHIA6); NapakaSenzorVlagaHIA6:=PomNapakaSenzorVlagaHIA6; FB_SkaliranjeVlagaHIA7( Omogoci:=TRUE, StVzorcenj:=50, TrenutnaVrednost:=HIA7_vlaga, ObmocjeVhodaLo:=0, ObmocjeVhodaHi:=4095, ObmocjeIzhodaLo:=0, ObmocjeIzhodaHi:=1000, SkaliranaVrednost=>HIA7_vlaga_s, NapakaSenzor=>PomNapakaSenzorVlagaHIA7); NapakaSenzorVlagaHIA7:=PomNapakaSenzorVlagaHIA7; FB_SkaliranjeVlagaHIA8( Omogoci:=TRUE, StVzorcenj:=50, TrenutnaVrednost:=HIA8_vlaga, ObmocjeVhodaLo:=0, ObmocjeVhodaHi:=4095, ObmocjeIzhodaLo:=0, ObmocjeIzhodaHi:=1000, SkaliranaVrednost=>HIA8_vlaga_s, NapakaSenzor=>PomNapakaSenzorVlagaHIA8); NapakaSenzorVlagaHIA8:=PomNapakaSenzorVlagaHIA8; (*Dodano l. 2008 Albin Lorenci - histereza za vklop alarma pri temperaturah*) IF TIA1_temp_s>TIA1_alarm*10 THEN TIA1_previs_temp:=TRUE; ELSIF TIA1_temp_sTIA2_alarm*10 THEN TIA2_previs_temp:=TRUE; ELSIF TIA2_temp_sTIA3_alarm*10 THEN TIA3_previs_temp:=TRUE; ELSIF TIA3_temp_sTIA4_alarm*10 THEN TIA4_previs_temp:=TRUE; ELSIF TIA4_temp_sTIA5_alarm*10 THEN TIA5_previs_temp:=TRUE; ELSIF TIA5_temp_sTIA6_alarm*10 THEN TIA6_previs_temp:=TRUE; ELSIF TIA6_temp_sTIA7_alarm*10 THEN TIA7_previs_temp:=TRUE; ELSIF TIA7_temp_sTIA8_alarm*10 THEN TIA8_previs_temp:=TRUE; ELSIF TIA8_temp_snapaka_kom_panel ); (*Napaka pri komunikaciji s SCADO*) FB_kom_serverA(cas_za_izpad_kom:=kom_nast_cas_izpada , sprem_iz_scade:=ComSCADA1 , sprem_v_scado=>ComSCADA , napaka_kom_scada_alarm=>napaka_kom_scada ); FB_kom_serverB(cas_za_izpad_kom:=kom_nast_cas_izpada , sprem_iz_scade:=ComSCADA3 , sprem_v_scado=>ComSCADA2 , napaka_kom_scada_alarm=>napaka_kom_scada2 ); (*Barvanje gumb za komunikacijo*) ComError:=napaka_kom_panel OR napaka_kom_scada; (*Previsoke temp.*) PrevisokaTemp:=TIA1_previs_temp OR TIA2_previs_temp OR TIA3_previs_temp OR TIA4_previs_temp OR TIA5_previs_temp OR TIA6_previs_temp OR TIA7_previs_temp OR TIA8_previs_temp; (*skupno razlitje*) Skupno_razlitje:=razlitjeLAH1 OR razlitjeLAH2 OR razlitjeLAH3 OR razlitjeLAH4 OR razlitjeLAH5 OR razlitjeLAH6 OR razlitjeLAH7 OR razlitjeLAH8; (*Barvanje alarmnega gumba ko je katerikoli alarm*) XVH_AlarmOn:=ComError OR NapakaSenzorSkupno OR PrevisokaTemp OR Skupno_razlitje ; ),H/PLC_PRG@FB_ObdelavaAnalognihVhodovbK bKUPROGRAM PLC_PRG VAR FB_ObdelavaAnalognihVhodov : ObdelavaAnalognihVhodov; END_VARUFB_ObdelavaAnalognihVhodov(); Panel; UserAndTime; (****Stanje baterije****) SlabaBaterijaPLC:=NOT SysRtcCheckBattery(TRUE); (* 1 = OK, 0 = Prazna *) ups_alarm; ups_baterijski_nac; ups_polnjenje; razlitjeLAH1; razlitjeLAH2; razlitjeLAH3; razlitjeLAH4; razlitjeLAH5; razlitjeLAH6; razlitjeLAH7; razlitjeLAH8;`,PLC_PRG_modnetbK bK(*Modbus Slave Example*) PROGRAM PLC_PRG_modnet VAR Slave_Adresa:BYTE:=16; Slave_Port:INT:=508; SlaveSetup:MBS_Setup; SlavePoll:MBS_Poll; SlaveAnswer:MBS_Answer; step: USINT; end :BOOL; i: INT; cycle :BOOL := FALSE; (* First cycle *) OpenDefaultPort: BOOL; Write_16: BOOL; Write_15: BOOL; Write_5: BOOL; j: INT; slavepollwOffset_temp: INT; slaveanswerwCount_temp: INT; slaveanswerwoffset_temp: INT; (* Dodano 8.12.2009 *) prvi_zagon: BOOL; prvi_zagon_int: INT; END_VAR: (* Dodano 8.12.2009 *) IF prvi_zagon=FALSE THEN prvi_zagon_int:=prvi_zagon_int+1; IF prvi_zagon_int=10 THEN MBS_ClearSecureAddresses; MBS_CloseAllConnections; END_IF; IF prvi_zagon_int=20 THEN end:=TRUE; END_IF; IF prvi_zagon_int=25 THEN end:=FALSE; END_IF; IF prvi_zagon_int=30 THEN OpenDefaultPort:=TRUE; prvi_zagon:=TRUE; prvi_zagon_int:=0; END_IF; END_IF; (*Modbus Slave Example*) IF Write_16=TRUE THEN (**) FOR j := 0 TO (slaveanswerwCount_temp-1)/15 BY 1 DO (*vpie se dword, real*) wStr_0:=mind[slaveanswerwoffset_temp+j]; wStr_1:=mind[slaveanswerwoffset_temp+j+1]; wStr_2 :=mind[slaveanswerwoffset_temp+j+2]; wStr_3:=mind[slaveanswerwoffset_temp+j+3]; wStr_4:=mind[slaveanswerwoffset_temp+j+4]; wStr_5 :=mind[slaveanswerwoffset_temp+j+5]; wStr_6:=mind[slaveanswerwoffset_temp+j+6]; wStr_7:=mind[slaveanswerwoffset_temp+j+7]; wStr_8:=mind[slaveanswerwoffset_temp+j+8]; wStr_9:=mind[slaveanswerwoffset_temp+j+9]; wStr_10:=mind[slaveanswerwoffset_temp+j+10]; wStr_11:=mind[slaveanswerwoffset_temp+j+11]; wStr_12:=mind[slaveanswerwoffset_temp+j+12]; wStr_13:=mind[slaveanswerwoffset_temp+j+13]; wStr_14:=mind[slaveanswerwoffset_temp+j+14]; bStr_29:=0; mod_Write_String(index:=slaveanswerwoffset_temp+j); (*vpis real in string*) END_FOR; FOR j := 1 TO slaveanswerwCount_temp-1 BY 2 DO (*vpie se dword, real*) Word_01:=mind[slaveanswerwoffset_temp+j-1]; Word_23:=mind[slaveanswerwoffset_temp+j]; mod_Write_dWord(index:=slaveanswerwoffset_temp+j); (*vpis real in dword*) END_FOR; FOR j := 0 TO slaveanswerwCount_temp-1 BY 1 DO (*vpie se word*) Word_01:=mind[slaveanswerwoffset_temp+j]; mod_Write_Word(index:=slaveanswerwoffset_temp+j); (*vpis word*) END_FOR; Write_16:=FALSE; END_IF; IF Write_5=TRUE OR Write_15=TRUE THEN (**) FOR j := 0 TO slaveanswerwCount_temp-1 BY 1 DO Bit_0:=mind_bool[slaveanswerwoffset_temp+j]; mod_Write_Bool(index:=slaveanswerwoffset_temp+j); (*vpis spremembe v spremenljivko*) END_FOR; Write_5:=FALSE; Write_15:=FALSE; END_IF; (*iz scade ni komande za branje*) IF Write_16=FALSE AND Write_5=FALSE AND Write_15=FALSE THEN mod_Read();(*branje spremenljivk za scado*) END_IF (*Close all sockets on corresponding event*) IF cycle = FALSE THEN SysCallbackRegister(INDEXOF(Callback_Stop),event_stop); SysCallbackRegister(INDEXOF(Callback_Reset),event_before_reset); SysCallbackRegister(INDEXOF(Callback_Reset),event_shutdown); cycle := TRUE; END_IF (*Close all connections via application *) IF end = TRUE THEN MBS_CloseAllConnections(); SlaveSetup (xstrobe:= TRUE,bUnitIdentifier:=Slave_Adresa,wDefaultPort:=Slave_Port,xDefaultPortActive:=FALSE); (*Close port*) step := 0; END_IF IF OpenDefaultPort=TRUE THEN SlaveSetup (xstrobe:= TRUE,bUnitIdentifier:=Slave_Adresa,wDefaultPort:=Slave_Port,xDefaultPortActive:=TRUE); (*Close port*) step := 0; OpenDefaultPort:=FALSE; END_IF (* State machine for setup, poll and answer *) CASE step OF 0:(**) SlaveSetup.bUnitIdentifier:=Slave_Adresa;(*Subunitnumber*) slavesetup.wDefaultPort:=Slave_Port;(*Standartport *) SlaveSetup.xAdditionalPortActive:=FALSE;(*Port opened or closed*) SlaveSetup.xSecureMode:=FALSE;(*If TRUE only preset IPs are accepted*) SlaveSetup.tTimeout:=T#3m;(*Timeout if no communication with slave established*) SlaveSetup(xStrobe:=TRUE);(*Strobe starts function*) IF slavesetup.xBusy = FALSE THEN slavesetup(xstrobe := FALSE); step := 1 ; END_IF; 1:(**) SlavePoll(xStrobe:=TRUE);(*Searching for master commands*) IF NOT SlavePoll.xBusy THEN step:=2; SlavePoll(xStrobe:=FALSE); END_IF; 2:(**) step:= 1; CASE SlavePoll.bFunctionCode OF (*Connect accepted pollparameters with answerparameters*) 8:(**)(*Poll answers*) ; 15: slaveanswer.bFunctionCode:=slavepoll.bFunctionCode; slaveanswer.wCount:=slavepoll.wCount; slaveanswer.wOffset:=slavepoll.wOffset; slaveanswerwoffset_temp:=slaveanswer.woffset; slaveanswerwCount_temp:=slaveanswer.wCount; FOR i := 0 TO slaveanswer.wCount-1 BY 1 DO mind_bool[slaveanswer.woffset+i] := slavepoll.xarData[i];(*Write to Data-array*) END_FOR; slaveanswer.xarData:=slavepoll.xarData; Write_15:=TRUE; 16: slaveanswer.bFunctionCode:=slavepoll.bFunctionCode; slaveanswer.wCount:=slavepoll.wCount; slaveanswer.wOffset:=slavepoll.wOffset; slaveanswerwoffset_temp:=slaveanswer.woffset; slaveanswerwCount_temp:=slaveanswer.wCount; FOR i := 0 TO slaveanswer.wCount-1 BY 1 DO mind[slaveanswer.woffset+i] := slavepoll.warData[i];(*Write to Data-array*) END_FOR; slaveanswer.wardata := slavepoll.warData; Write_16:=TRUE; 1,2: slaveanswer.bFunctionCode:=slavepoll.bFunctionCode; slaveanswer.wCount:=slavepoll.wCount; slaveanswer.wOffset:=slavepoll.wOffset; FOR i:= 0 TO slavepoll.wcount-1 BY 1 DO slaveanswer.xarData[i]:=mind_bool[slavepoll.woffset+i]; (*Read from Data-array*) END_FOR 3,4: slaveanswer.bFunctionCode:=slavepoll.bFunctionCode; slaveanswer.wCount:=slavepoll.wCount; slaveanswer.wOffset:=slavepoll.wOffset; FOR i:= 0 TO slaveanswer.wCount-1 BY 1 DO slaveanswer.warData[i]:=mind[slavepoll.woffset+i];(*Read from Data-array*) END_FOR 5: slaveanswer.bFunctionCode:=slavepoll.bFunctionCode; mind_bool[slavepoll.woffset]:=slavepoll.xarData[0];(*Write to Data-array*) slaveanswer.wOffset:=slavepoll.wOffset; slaveanswer.wCount:=slavepoll.wCount; slaveanswer.xarData := slavepoll.xardata; slaveanswerwoffset_temp:=slaveanswer.woffset; slaveanswerwCount_temp:=slaveanswer.wCount; Write_5:=TRUE; 6: slaveanswer.bFunctionCode:= slavepoll.bFunctionCode; mind[slavepoll.woffset]:= slavepoll.warData[0];(*Write to Data-array*) slaveanswer.wOffset:= slavepoll.wOffset; slaveanswer.wCount:=slavepoll.wCount; slaveanswer.wardata := slavepoll.wardata; 23: slaveanswer.bFunctionCode:=slavepoll.bFunctionCode; slaveanswer.wOffset:=slavepoll.wOffset; slaveanswer.wCount:=slavepoll.wCount; FOR i:= 0 TO slavepoll.wCountAdd-1 BY 1 DO mind[slavepoll.woffsetadd+i] := slavepoll.warData[i];(*Write to Data-array*) END_FOR; FOR i := 0 TO slavepoll.wCount BY 1 DO slaveanswer.warData[i] := mind[1+slavepoll.woffset+i];(*Read from Data-array*) END_FOR; END_CASE; IF slavepoll.xAvailable = TRUE THEN slaveanswer();(*When Data ready, send answer*) END_IF END_CASE;a Read_dWordbK bKbFUNCTION Read_dWord : BOOL VAR_INPUT dVAR: DWORD; lo:INT; hi:INT; END_VAR VAR END_VAR2DWord_0:=dVar;mind[lo]:=Word_01;mind[hi]:=Word_23;b Read_RealbK bK`FUNCTION Read_Real : BOOL VAR_INPUT rVAR: REAL; lo:INT; hi:INT; END_VAR VAR END_VAR1Real_0:=rVar;mind[lo]:=Word_01;mind[hi]:=Word_23;c Read_StringbK bK\FUNCTION Read_String : BOOL VAR_INPUT sVar: STRING; start:INT; END_VAR VAR END_VARString_0:=LEFT (sVar,29); mind[start]:=wStr_0; mind[start+1]:=wStr_1; mind[start+2]:=wStr_2; mind[start+3]:=wStr_3; mind[start+4]:=wStr_4; mind[start+5]:=wStr_5; mind[start+6]:=wStr_6; mind[start+7]:=wStr_7; mind[start+8]:=wStr_8; mind[start+9]:=wStr_9; mind[start+10]:=wStr_10; mind[start+11]:=wStr_11; mind[start+12]:=wStr_12; mind[start+13]:=wStr_13; bStr_29:=0; mind[start+14]:=wStr_14;,,SCADA_komunikacijabK bKFUNCTION_BLOCK SCADA_komunikacija VAR_INPUT cas_za_izpad_kom:UINT:=30; (*Nastavitev casa po katerem naj javi krmilnik izpad komunikacije s scado*) sprem_iz_scade:BOOL; (*Stanje, ki se vrne v scado*) END_VAR VAR_OUTPUT sprem_v_scado:BOOL; (*Stanje, ki se posilja na scado*) napaka_kom_scada_alarm : BOOL; (*Spremenljivka, ki javi napako v komunikaciji s scado*) END_VAR VAR ComIzpad: TON; ComIzpad1: TON; END_VAR(*Preverjanje izpada komunikacije s scado*) IF sprem_iz_scade THEN sprem_v_scado:=FALSE; ELSE sprem_v_scado:=TRUE; END_IF; IF (cas_za_izpad_kom > 60000) THEN cas_za_izpad_kom:=60000; END_IF; (*Omejitev casa za izpad komunikacije na 1000 minut*) ComIzpad(IN:=sprem_iz_scade , PT:=UINT_TO_TIME(cas_za_izpad_kom*1000)); ComIzpad1(IN:=NOT sprem_iz_scade , PT:=UINT_TO_TIME(cas_za_izpad_kom*1000)); napaka_kom_scada_alarm:= ComIzpad.Q OR ComIzpad1.Q;+, SkaliranjebK bKFUNCTION_BLOCK Skaliranje VAR_INPUT Omogoci : BOOL; StVzorcenj : INT; TrenutnaVrednost : INT; ObmocjeVhodaLo : REAL; ObmocjeVhodaHi : REAL; ObmocjeIzhodaLo : REAL; ObmocjeIzhodaHi : REAL; END_VAR VAR_OUTPUT SkaliranaVrednost : INT; NapakaSenzor : BOOL; END_VAR VAR SmerniKoeficientPremice : REAL; VrednostVTockiNic : REAL; PomTrenutnaVrednost : UDINT; TrenVzorec : INT; TrenutnaVrednost1 : INT; END_VARb NapakaSenzor:=FALSE; (*Spremeni TrenutnaVrednost v programu v TrenutnaVrednost1, spremeniti je potrebno tudi konfiguracijo modula!!!! (* Raziritev obmoja modula iz 4-20mA na 0-20mA*) TrenutnaVrednost1:=REAL_TO_INT(TrenutnaVrednost*1.25-1023.75); *) (**** Povpreenje vhoda ****) IF Omogoci THEN IF TrenVzorecObmocjeVhodaHi-5 THEN NapakaSenzor:=TRUE; END_IF; ELSE; SkaliranaVrednost:=0; END_IF;/,Xt UserAndTimebK bKPROGRAM UserAndTime VAR {flag noread, nowrite on} SetTime:S40_SetRealTimeClock; TempError:BOOL; SetTimeNegFl:F_TRIG; SetTimePosFl:R_TRIG; TimeSinhroTimer:TON; {flag off} END_VAR(* Uporabnik *) UserLoggedIn:=(UserCurrentLevel=0) OR (UserCurrentLevel=1); IF UserLoggedIn THEN UserDisplay:=CONCAT('Uporabnik: ',UserCurrentName); ELSE UserDisplay:=''; END_IF (* Nastavljanje casa na panelu in krmilniku *) TimeSinhroTimer(IN:=SetDateTime , PT:=t#3s , Q=> , ET=> ); (* tri sekunde za izvrsitev ukaza *) SetTimePosFl(CLK:=SetDateTime OR SetDateTimeDemand , Q=> ); (* Cas se nastavi ob pozitivni fronti SetDateTime sprem. *) IF SetTimePosFl.Q THEN SetDateTimeFinished:=FALSE; SetDateTimeDemand:=FALSE; SetDateTimeError:=FALSE; (* Prepis podatkov o casu in datumu v podatkovno tabelo Date_Time XVH300 *) Date_Time[0]:=DateTime.Minuta*256+DateTime.Sekunda; Date_Time[1]:=DateTime.Ura; Date_Time[2]:=DateTime.Mesec*256+DateTime.Dan; Date_Time[3]:=2000+DateTime.Leto; Control[0].10:=TRUE; (* Ukaz panelu naj nastavi cas *) END_IF; SetTime(set:=SetDateTime, (* nastavi cas krmilniku *) Year:=DateTime.Leto , Month:=DateTime.Mesec , Day:=DateTime.Dan , Hour:=DateTime.Ura , Minute:=DateTime.Minuta , Second:=DateTime.Sekunda , Error=>TempError ); IF Status[0].10 THEN Control[0].10:=FALSE; END_IF; (* panel nastavlja cas - zahteve ne rabi vec *) (* preverjanje nastavljanja casa na panelu - kdo bo prej Timer ali negativna fronta signala Status[0].10 *) SetTimeNegFl(CLK:=Status[0].10 , Q=> ); (* negativna fronta pomeni konec nastavljanja casa *) IF SetTimeNegFl.Q OR TimeSinhroTimer.Q THEN SetDateTimeFinished:=TRUE; SetDateTimeError:=TempError OR TimeSinhroTimer.Q; SetDateTime:=FALSE; (* ne glede na zmagovalca je sinhronizacije konec *) END_IF;,Xv (XS40_MollerFB.lib 19.1.05 11:23:52@85A#SysLibRtc.lib 4.4.03 08:42:00@H7>-XS40_MollerFB_RTC.lib 29.11.04 16:14:24@