CoDeSys+ @@2.3.5.6 nx9010@ConfigExtension 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_EndCCCC_EndCTCT_End)-159=AEICCSCC_EndCToCT_End}CCCC_EndCTCT_EndCCCC_EndCTCT_EndCCCC_EndCT CT_EndCC#CC_EndCT?CT_EndMCCWCC_EndCTsCT_EndCCCC_EndCTCT_End  !%)-15CC?CC_EndCT[CT_Endimquy}CCCC_EndCTCT_EndCCCC_EndCTCT_EndCCCC_EndCTCT_End%CC/CC_EndCTKCT_EndYCCcCC_EndCTCT_EndCCCC_EndCTCT_EndCCCC_EndCTCT_EndCCCC_EndCTCT_EndME:ME_EndCMNCM_EndCTjCT_EndPP_EndCTCT_EndPP_EndCTCT_EndPP_EndCTCT_EndPP_EndCT2CT_EndPIP_EndCTdCT_EndP{P_EndCTCT_EndPP_EndCTCT_EndPP_EndCTCT_EndP P_EndCT, CT_EndPC P_EndCT^ CT_EndPu P_EndCT CT_EndP P_EndCT CT_EndP P_EndCT CT_EndP P_EndCT& CT_EndP= P_EndCTX CT_EndPo P_EndCT CT_EndP P_EndCT CT_EndP P_EndCT CT_EndME ME_EndCM! CM_EndCT= CT_EndPT P_EndCTo CT_EndP P_EndCT CT_EndP P_EndCT CT_EndP P_EndCT CT_EndP P_EndCT7 CT_EndPN P_EndCTi CT_EndP P_EndCT CT_EndP P_EndCT CT_EndP P_EndCT CT_EndP P_EndCT1 CT_EndPH P_EndCTc CT_EndPz P_EndCT CT_EndP P_EndCT CT_EndP P_EndCT CT_EndPP_EndCT+CT_EndPBP_EndCT]CT_EndPtP_EndCTCT_EndPP_EndCTCT_EndMEME_EndCMCM_EndCTCT_EndP'P_EndCTBCT_EndPYP_EndCTtCT_EndPP_EndCTCT_EndPP_EndCTCT_EndPP_EndCT CT_EndP!P_EndCT<CT_EndPSP_EndCTnCT_EndPP_EndCTCT_EndPP_EndCTCT_EndPP_EndCTCT_EndPP_EndCT6CT_EndPMP_EndCThCT_EndPP_EndCTCT_EndPP_EndCTCT_EndPP_EndCTCT_EndPP_EndCT0CT_EndPGP_EndCTbCT_EndPyP_EndCTCT_EndMEME_EndCMCM_EndCTCT_EndCCCC_EndCTCT_End%CC/CC_EndCTKCT_EndYCCcCC_EndCTCT_EndCCCC_EndCTCT_EndCCCC_EndCTCT_EndCCCC_EndCTCT_End)CC3CC_EndCTOCT_End]CCgCC_EndCTCT_EndMEME_EndCMCM_EndCTCT_EndCCCC_EndCTCT_EndCCCC_EndCT:CT_EndHCCRCC_EndCTnCT_End|CCCC_EndCTCT_EndCCCC_EndCTCT_EndCCCC_EndCT CT_EndCC"CC_EndCT>CT_EndLCCVCC_EndCTrCT_EndMEME_EndCMCM_EndCTCT_EndCCCC_EndCTCT_End #'+/37;?METME_EndCMhCM_EndCTCT_EndCCCC_EndCTCT_EndConfigExtensionEnd@$K +@@ޅG'@ MC:\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 $KMODBUSMASTER_COILMAXuiCoilCounterMax uiCoilCounterModbusMaster_CoilMax$KMODBUSMASTER_CRC16iii xCarryFlag wCrc  ptr_bDataBuf/ pointer to the first byte for CRC calculation uiBufSize$ count of bytes for CRC calculation ModbusMaster_CRC16$KMODBUSMASTER_EVENTSTOP usiCounter dwEventdwFilterdwOwnerModbusMaster_EventStop$KRC:\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 $KS40_RTC EN_R_Trig R_TRIG ENPDTQCDT $KS40_SETREALTIMECLOCK DATconcatX1  DATconcatX set_R_Trig R_TRIGset syslibrtc.lib has to be includedYear+double figures, examples: 2004=>4, 1998=>98MonthDayHourMinute Second Error $KKC:\PROGRAM FILES\COMMON FILES\CAA-TARGETS\MOELLER\LIB_CPU201\XSYSCOM200.LIB XSYSCOMCLOSEdwHandle xSysComClose$KXSYSCOMGETVERSION1000bDummyxSysComGetVersion1000$K XSYSCOMOPENPort COMPORTS% Port-Nummer, see: Enumeration PORTS  xSysComOpen$K XSYSCOMREADdwHandledwBufferAddress dwBytesToRead dwTimeout xSysComRead$KXSYSCOMREADCONTROLdwHandleControl  COMCONTROLxSysComReadControl$KXSYSCOMSETSETTINGSdwHandle ComSettings  COMSETTINGSxSysComSetSettings$K XSYSCOMWRITEdwHandledwBufferAddressdwBytesToWrite dwTimeout xSysComWrite$KXSYSCOMWRITECONTROLdwHandleControl  COMCONTROLxSysComWriteControl$KNC:\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  OutputValueStatusError$K 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  OutputDATError$K 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 $K 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 $K 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,...DayMonthYearError$KFIFOBX Fifoarray  InputCounter OutputCounterNumberOfElements_limitedR_Trig_FillPulse R_TRIGR_Trig_ReadOutPulse R_TRIG FillPulse ReadOutPulseReSet DataInputNumberOfElements1 to 128Full Empty DataOutput ElementsIncluded $KFIFOWX Fifoarray  InputCounter OutputCounterNumberOfElements_limitedR_Trig_FillPulse R_TRIGR_Trig_ReadOutPulse R_TRIG FillPulse ReadOutPulseReSet DataInputNumberOfElements1 to 128Full Empty DataOutput ElementsIncluded $K IEEE_TO_REALpt_Realdw_IEEEEXPO_In Mant_2_In Mant_1_In Mant_0_In Real_Out Error $KLIFOBX Lifoarray NumberOfElements_limitedR_Trig_FillPulse R_TRIGR_Trig_ReadOutPulse R_TRIG FillPulse ReadOutPulseReSet DataInputNumberOfElements1 to 128Full Empty DataOutput ElementsIncluded $KLIFOWX Lifoarray NumberOfElements_limitedR_Trig_FillPulse R_TRIGR_Trig_ReadOutPulse R_TRIG FillPulse ReadOutPulseReSet DataInputNumberOfElements1 to 128Full Empty DataOutput ElementsIncluded $K MI4NETDP16 ui_Offset ui_DataLenipt_MBptrui_MV4_DataByteNrb_Status b_ar_IB b_ar_QB $K MI4NETDP32 ui_Offset ui_DataLenipt_MBptrui_MV4_DataByteNrb_Status b_ar_IB b_ar_QB $KMS_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 $K 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 $K MV4NETDP38 ui_Offset ui_DataLenipt_MBptrui_MV4_DataByteNrb_Status b_ar_IB %b_ar_QB %$K MV4NETDP70 ui_Offset ui_DataLenipt_MBptrui_MV4_DataByteNrb_Status b_ar_IB Eb_ar_QB E$K REAL_TO_IEEEpt_IEEEdw_IEEEReal_InEXPO_Out Mant_2_Out Mant_1_Out Mant_0_Out $KS40_16BITCOUNTERForward_R_Trig R_TrigBackward_R_Trig R_Trig Set_R_Trig R_TrigForwardBackwardSetReSet InputValueZero OutputValue $KS40_32BITCOUNTERForward_R_Trig R_TrigBackward_R_Trig R_Trig Set_R_Trig R_TrigForwardBackwardSetReSet InputValueZero OutputValue $K 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 $K 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 $KSR_X uiCounterNumberOfElements_limitedR_Trig_ForwardPulse R_TRIGR_Trig_BackwardPulse R_TRIG ReSet_R_Trig R_TRIG ForwardPulse BackwardPulseReSet ForwardData BackwardDataNumberOfElements1 to 128Output  $KSRB_X uiCounterNumberOfElements_limitedR_Trig_ForwardPulse R_TRIGR_Trig_BackwardPulse R_TRIG ReSet_R_Trig R_TRIG ForwardPulse BackwardPulseReSet ForwardData BackwardDataNumberOfElements1 to 128Output  $KSRW_X uiCounterNumberOfElements_limitedR_Trig_ForwardPulse R_TRIGR_Trig_BackwardPulse R_TRIG ReSet_R_Trig R_TRIG ForwardPulse BackwardPulseReSet ForwardData BackwardDataNumberOfElements1 to 128Output  $K 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 OutputTimeOverflowOverflowCounter$K 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 $K 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 $K TIMESPLITXdw_time dw_seconds dw_time_restdw_hours dw_minutsdw_day_mseconds\&! InputTime MilliSecondsSecondsMinutesHoursDays$K TODCONCATtime_mstime_stime_mtime_h MilliSecondSecondMinuteHour  OutputTOD Error $KTODSPLITdw_time dw_seconds dw_time_restdw_hours dw_minutsInputTOD MilliSecond Second Minute Hour $KJC:\PROGRAM FILES\COMMON FILES\CAA-TARGETS\MOELLER\LIB_CPU201\SYSLIBRTC.LIBSYSRTCCHECKBATTERYbDummySysRtcCheckBattery$KSYSRTCGETHOURMODEbDummySysRtcGetHourMode$K SYSRTCGETTIMEdummy SysRtcGetTime$K SYSRTCSETTIMEActDateAndTime SysRtcSetTime$KIC:\PROGRAM FILES\COMMON FILES\CAA-TARGETS\MOELLER\LIB_COMMON\STANDARD.LIBCONCATSTR1STR2CONCAT$KCTDM 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 $KCTUM 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 $KCTUDMU 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 $KDELETESTRLENPOSDELETE$KF_TRIGM CLK Signal to detect Q Edge detected $KFINDSTR1STR2FIND$KINSERTSTR1STR2POSINSERT$KLEFTSTRSIZELEFT$KLENSTRLEN$KMIDSTRLENPOSMID$KR_TRIGM CLK Signal to detect Q Edge detected $KREPLACESTR1STR2LPREPLACE$KRIGHTSTRSIZERIGHT$KRSSETRESET1Q1 $KRTCM DiffTime ENPDTQCDT$KSEMAXCLAIM RELEASE BUSY $KSRSET1RESETQ1 $KTOFM  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 $KTONM  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 $KTP 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 $KOC:\PROGRAM FILES\COMMON FILES\CAA-TARGETS\MOELLER\LIB_CPU201\SYSLIBCALLBACK.LIBSYSCALLBACKREGISTER iPOUIndex! POU Index of callback function. Event  RTS_EVENT Event to register SysCallbackRegister$KSYSCALLBACKUNREGISTER iPOUIndex! POU Index of callback function. Event  RTS_EVENT Event to register SysCallbackUnregister$KNC:\PROGRAM FILES\COMMON FILES\CAA-TARGETS\MOELLER\LIB_CPU201\SYSLIBSOCKETS.LIB SYSSOCKACCEPTdiSocket pSockAddr( Address of SocketAddress (SOCKADDRESS) piSockAddrSize& Address of socket address size (DINT) SysSockAccept$K SYSSOCKBINDdiSocket pSockAddr( Address of SocketAddress (SOCKADDRESS) diSockAddrSize Size of socket address  SysSockBind$K SYSSOCKCLOSEdiSocket SysSockClose$KSYSSOCKCONNECTdiSocket pSockAddr( Address of SocketAddress (SOCKADDRESS) diSockAddrSize Size of socket address SysSockConnect$K SYSSOCKCREATEdiAddressFamilydiType diProtocol SysSockCreate$KSYSSOCKGETHOSTBYNAME stHostNameQQSysSockGetHostByName$KSYSSOCKGETHOSTNAME stHostNameQQ diNameLengthSysSockGetHostName$KSYSSOCKGETOPTIONdiSocketdiLeveldiOption pOptionValue Address of option piOptionLength Address of option size (DINT) SysSockGetOption$K SYSSOCKHTONLdwHost SysSockHtonl$K SYSSOCKHTONSwHost SysSockHtons$KSYSSOCKINETADDRstIPAddrQQSysSockInetAddr$KSYSSOCKINETNTOAInAddr INADDRstIPAddrQQ diIPAddrSizeSysSockInetNtoa$K SYSSOCKIOCTLdiSocket diCommand piParameter Address of parameter (DINT)  SysSockIoctl$K SYSSOCKLISTENdiSocketdiMaxConnections SysSockListen$K SYSSOCKNTOHLdwNet SysSockNtohl$K SYSSOCKNTOHSwNet SysSockNtohs$K SYSSOCKRECVdiSocket pbyBuffer Address of buffer to receive diBufferSizediFlags SysSockRecv$KSYSSOCKRECVFROMdiSocket pbyBuffer Address of buffer to receive diBufferSizediFlags pSockAddr& Address of socket address SOCKADDRESSdiSockAddrSize Size of socket address SysSockRecvFrom$K 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  SysSockSelect$K SYSSOCKSENDdiSocket pbyBuffer Address of buffer to receive diBufferSizediFlags SysSockSend$K SYSSOCKSENDTOdiSocket pbyBuffer Address of buffer to receive diBufferSizediFlags pSockAddr' Address of socket address SOCKADDRESS diSockAddrSize Size of socket address  SysSockSendTo$KSYSSOCKSETIPADDRESS stCardNameQQ stIPAddressQQSysSockSetIPAddress$KSYSSOCKSETOPTIONdiSocketdiLeveldiOption pOptionValue Address of option diOptionLength Length of option SysSockSetOption$KSYSSOCKSHUTDOWNdiSocketdiHowSysSockShutdown$KJC:\PROGRAM FILES\COMMON FILES\CAA-TARGETS\MOELLER\LIB_CPU201\MODBUSTCP.LIBCALLBACK_RESETi dwEventdwFilterdwOwnerCallback_Reset$K CALLBACK_STOPi dwEventdwFilterdwOwner Callback_Stop$KMB_EXCHANGEWORDwInputMB_ExchangeWord$K MB_MAKEIPbIP1bIP2bIP3bIP4 MB_MakeIP$KMBM_CLOSEALLCONNECTIONSi$KMBM_CLOSECONNECTIONiActuali dwIPAddress$KMBM_COMMUNICATE xStrobeDummyMdata TModbusBufferTypeitbDataptr bBitptr bValue xStrobe dwIPAddresswPortwTransactionIdentifierbUnitIdentifier bFunctioncode wOffset wCount wOffsetAdd wCountAdd warDataOut  xarDataOut xCloseImmediatetTimeout xBusy iErrorCode wDatacount warDataIn  xarDataIn $K MBM_LOOPBACK xStrobeDummyMdata TModbusBufferTypeitbDataptrbValue xStrobe dwIPAddresswPortbUnitIdentifierwTransactionIdentifierbData0 bData1 xCloseImmediate tTimeout  xBusy iErrorCode$KMBM_READCOILSTATUS xStrobeDummyMdata TModbusBufferTypeitbDataptrbBitptr xStrobe dwIPAddresswPortbUnitIdentifierwTransactionIdentifierwOffset wCount xCloseImmediate tTimeout  xBusy iErrorcode wDatacountxarData $KMBM_READHOLDINGREGISTERS xStrobeDummyMdata TModbusBufferTypeitbDataptr xStrobe dwIPAddresswPortbUnitIdentifierwTransactionIdentifierwOffset wCount xCloseImmediate tTimeout  xBusy iErrorCode wDatacountwarData $KMBM_READINPUTREGISTERS xStrobeDummyMdata TModbusBufferTypeitbDataptr xStrobe dwIPAddresswPortbUnitIdentifierwTransactionIdentifierwOffset wCount xCloseImmediate tTimeout  xBusy iErrorCode wDatacountwarData $KMBM_READINPUTSTATUS xStrobeDummyMdata TModbusBufferTypeitbDataptrbBitptr xStrobe dwIPAddresswPortbUnitIdentifierwTransactionIdentifierwOffset wCount xCloseImmediate tTimeout  xBusy iErrorcode wDatacountxarData $KMBM_READWRITEREGISTERS xStrobeDummyMdata TModbusBufferTypeitbDataptr xStrobe dwIPAddresswPortbUnitIdentifierwTransactionIdentifier wOffsetRead wCountRead wOffsetWrite wCountWrite warDataWrite  xCloseImmediatetTimeout xBusy iErrorCode wDatacount warDataRead $KMBM_SENDi stSockAddr  TSockAddr stFDSet TSockSet stTimeval  TSockTimeval AF_INET SOCK_STREAM IPPROTO_TCPpMbdata PModbusBufferTypexCloseImmediatetTimeoutMBM_Send$KMBM_WRITEMULTIPLECOILS xStrobeDummyMdata TModbusBufferTypeitbDataptrbBitptr xStrobe dwIPAddresswPortbUnitIdentifierwTransactionIdentifierwOffset wCount xarData  xCloseImmediate tTimeout  xBusy iErrorCode$KMBM_WRITEMULTIPLEREGISTERS xStrobeDummyMdata TModbusBufferTypeitbDataptr xStrobe dwIPAddresswPortbUnitIdentifierwTransactionIdentifierwOffset wCount warData  xCloseImmediate tTimeout  xBusy iErrorCode$KMBM_WRITESINGLECOIL xStrobeDummyMdata TModbusBufferTypeitbDataptrbValue xStrobe dwIPAddresswPortbUnitIdentifierwTransactionIdentifierwOffset xValue xCloseImmediate tTimeout  xBusy iErrorCode$KMBM_WRITESINGLEREGISTER xStrobeDummyMdata TModbusBufferTypeitbDataptr xStrobe dwIPAddresswPortbUnitIdentifierwTransactionIdentifierwOffset wValue xCloseImmediate tTimeout  xBusy iErrorCode$KMBS_ADDSECUREADDRESSi dwIPAddressMBS_AddSecureAddress$K MBS_ANSWER xStrobeDummyMdata TModbusBufferTypeitiStatebBitptrbDataptr bFunctionCodewOffsetwCountwarData xarData  iErrorCode $KMBS_CLEARSECUREADDRESSES$KMBS_CLOSEALLCONNECTIONSi$KMBS_DELETESECUREADDRESSit dwIPAddressMBS_DeleteSecureAddress$KMBS_POLLdiSize xStrobeDummyMdata TModbusBufferTypestFDSet TSockSet stTimeval  TSockTimeval stSockAddr  TSockAddr Connectdata  TConnectType iActserver iActclient iServerposiStateiIpfounditbBitptrxStrobe xBusy xAvailable bFunctionCode wOffset wCount wOffsetAdd wCountAdd iErrorCode warData xarData $K MBS_SETUP xStrobeDummyiState bActserver stSockAddr  TSockAddrhosthostaddrAF_INET SOCK_STREAM IPPROTO_TCPxStrobe wDefaultPortxDefaultPortActivewAdditionalPort'xAdditionalPortActive xSecureMode bUnitIdentifier tTimeout'  xBusy iErrorCode$KANALIZATOR_RAZLIKA_ENERGIJE RTRIG_Racun R_TRIGEven_Dan R_TRIG Even_Teden R_TRIG Even_Mesec R_TRIG Indeks_RACUN $K@ CIRCUTORVALUERegHIyRegLOy CircutorValue$K@ KLIMEVKLOPI Izbira_klime CasKlimeVklop TONnTIMsec1 TON TIMsec2 TON TIMmin1 TIMmin2 klima1_napaka TOF napaka_klima1 klima2_napaka TOF napaka_klima2$K@MOD_READ$K@MOD_WRITE_BOOLindexmod_Write_Bool$K@MOD_WRITE_DWORDIndexmod_Write_dWord$K@MOD_WRITE_STRINGIndexmod_Write_String$K@MOD_WRITE_WORDIndexmod_Write_Word$K@ MODBUS_CP2 ModBusComm , ModBusM_RW`] Registers x`] Registers Coils `]  Coils DataReady`] DataIndex`] Ind1`]Ind2`]Dev`]index]UPSno]TmpW]ComPort  MComPortParam] Transactions ( MModMasterDefinition] WriteTrans ( MModMasterWriteDef]$K@MODBUS_KOMUNIKACIJA ModBus_CP2inst  ModBus_CP2`^ModBus_UPS_V23  ModBus_UPS`^ModBus_UPS_V25  ModBus_UPS`^Index`^Jndex`^Mult`^ TimerKlima1 TON`^ TimerKlima2 TON`^ TimerUPSMGE TON`^ T_cas_modbus_izpad`^ $K@ MODBUS_UPS ModBusComm , ModBusM_RW`~ Registers x`~ Registers Coils `~  Coils Index`~ DataReady`~ DataIndex`~TmpW`~UPSno~ComPort  MComPortParam~ Transactions ( MModMasterDefinition~ WriteTrans ( MModMasterWriteDef~$K@ MODBUSM_RWOnErrorDisableCycles_b how many read cycles is transaction left out after error (1 means - read it again in next cycle) SlaveResponseTimeout_ ModbusMaster response timeout ModMaster O ModbusMaster_ from MODBUSMASTER.LIB MB_NextTrans _ MB_StartTrans _MB_ReadRunning _MB_WriteRunning _ BlockStatus _ * Block step - 0 Next transaction, 1 - ... WriteCycleON_ > After every readin -> WriteCycleON=TRUE - Check WriteTransa WriteIndex(_ ! Current write transaction index TransIndex(_ ! Current read transaction index SecondTry_  try two consequent questions TransOrder ( 40(1)(_@ transaction order down counter - vhen it reaches 0 - read data TempByte_ ComPortActiv_ Status of COM port ComPortError_ MODfcStrobe_ Start job MODtransActive_ MODBUS job active MODtransOk_ Job finished successfully MODslaveAdrDone_ Last addressed slave MODfcDone_ Last Function Code MODdatOffDone_ Last offset of data MODdatNrDone_ Last number of data MODfailCode_ Error code MODSlaveAdr_, Address of MODBUS Slave to connect to is 1 MODfc_ Function code MODdatOff_ Data Offset MODdatNr_  Number of Data Enable_# Block enabled ComPort  MComPortParam_$ Communication port parameters Reset_% Reset block to initial state Q_ComPortActiv_(! Com port ready for transactions Q_ComPortError_) Com port error Q_WriteCycleON_*& Block is sending values to the slave Q_WriteFinished_+Write cycle finished Q_WriteIndex_,1 Index of command in progress( WriteTrans table) Q_ReadFinished_-Q_NewDataReady_.A Block received new data block - one cycle puls only - move data Q_ReadIndex_/Y Index of last received block - use in case in move data procedure or in error set proc. Q_TransError_0 Transaction ended with error  Registers x_3 Registers Coils _4 Coils Transactions ( MModMasterDefinition_5 WriteTrans ( MModMasterWriteDef_6$K@OBDELAVAANALOGNIHVHODOVFB_SkaliranjeTempTIA1  Skaliranje+FB_SkaliranjeTempTIA2  Skaliranje+FB_SkaliranjeTempTIA3  Skaliranje+ FB_SkaliranjeTempTIA4  Skaliranje+ FB_SkaliranjeTempTIA5  Skaliranje+ FB_SkaliranjeTempTIA6  Skaliranje+ FB_SkaliranjeTempTIA7  Skaliranje+ FB_SkaliranjeVlagaHIA1  Skaliranje+FB_SkaliranjeVlagaHIA2  Skaliranje+FB_SkaliranjeVlagaHIA3  Skaliranje+FB_SkaliranjeVlagaHIA4  Skaliranje+FB_SkaliranjeVlagaHIA5  Skaliranje+FB_SkaliranjeVlagaHIA6  Skaliranje+FB_SkaliranjeVlagaHIA7  Skaliranje+PomNapakaTSTempTIA1+PomNapakaTSTempTIA2+PomNapakaTSTempTIA3+PomNapakaTSTempTIA4+PomNapakaTSTempTIA5+PomNapakaTSTempTIA6+PomNapakaTSTempTIA7+PomNapakaSenzorVlagaHIA1+PomNapakaSenzorVlagaHIA2+ PomNapakaSenzorVlagaHIA3+!PomNapakaSenzorVlagaHIA4+"PomNapakaSenzorVlagaHIA5+#PomNapakaSenzorVlagaHIA6+$PomNapakaSenzorVlagaHIA7+%$K@PANEL ComIzpadPanel TON, Com_Panel TON,FB_kom_serverA SCADA_komunikacija,FB_kom_serverB SCADA_komunikacija,R1,R2,R3, R4, R5, R6, index,PMM2x17*Tok, VsotaNapakAl, VsotaNapakOp, Prag60_X16F9600, Prag80_X16HF12800, Prag60_X32F19200, Prag80_X32F25600, Prag60_X50`F30000, Prag80_X50@G40000,Tokovi,$K@PLC_PRGFB_ObdelavaAnalognihVhodov ObdelavaAnalognihVhodov): Ton1:TON; Ton2:TON; Spr1:BOOL; Spr2:BOOL; $K@PLC_PRG_MODNET Slave_Adresa Slave_Port SlaveSetup  MBS_Setup SlavePoll MBS_Poll SlaveAnswer  MBS_Answerstep end i cycle First cycle OpenDefaultPort Write_16Write_15Write_5jslavepollwOffset_tempslaveanswerwCount_tempslaveanswerwoffset_temp Dodano 8.12.2009 prvi_zagonprvi_zagon_int$K@ READ_DWORDdVARlohi Read_dWord$K@ READ_REALrVARlohi Read_Real$K@ READ_STRINGsVarQQstart Read_String$K@SCADA_KOMUNIKACIJAComIzpad TON3 ComIzpad1 TON3 cas_za_izpad_kom3GNastavitev casa po katerem naj javi krmilnik izpad komunikacije s scadosprem_iz_scade3Stanje, ki se vrne v scado sprem_v_scado3Stanje, ki se posilja na scadonapaka_kom_scada_alarm34Spremenljivka, ki javi napako v komunikaciji s scado$K@ SKALIRANJESmerniKoeficientPremice*VrednostVTockiNic*PomTrenutnaVrednost* TrenVzorec*TrenutnaVrednost1*Omogoci* StVzorcenj*TrenutnaVrednost*ObmocjeVhodaLo*ObmocjeVhodaHi*ObmocjeIzhodaLo*ObmocjeIzhodaHi* SkaliranaVrednost* NapakaSenzor* $K@ USERANDTIMESetTime S40_SetRealTimeClock`4GetTime S40_GetRealTimeClock`4Analizator_Razlika_Energije Analizator_Razlika_Energije`4 TempError`4 SetTimeNegFl F_TRIG`4 SetTimePosFl R_TRIG`4 TimeSinhroTimer TON`4 $K@ "^}~z]+_ 4*35{x`abc|)\,(+AK9AKGAKUAKjAwA+AHZJTcp/Ip (Level 2 Route)GSM_Centrala3S Tcp/Ip Level 2 Router Driver6AddressIP address or hostname 10.1.1.228PortTargetId7dMotorola byteorderNoYesAHZJTcp/Ip (Level 2 Route)XC200_AgPr.proDefaultIP3S Tcp/Ip Level 2 Router Driver;AddressIP address or hostname 192.168.119.200PortTargetId7dMotorola byteorderNoYesAHZJTcp/Ip (Level 2 Route)XC200_SMS.proEthernet23S Tcp/Ip Level 2 Router Driver6AddressIP address or hostname 10.1.1.228PortTargetId7dMotorola byteorderNoYeswQs/`SSerial (RS232)COM23S Serial RS232 driver,PortCOM2COM3YBaudrate4800%9600K1920038400576001152004ParityNoEvenOdd3Stop bits11,527dMotorola byteorderNoYesAHZJTcp/Ip (Level 2 Route)GSM_Centrala3S Tcp/Ip Level 2 Router Driver6AddressIP address or hostname 10.1.1.228PortTargetId7dMotorola byteorderNoYesAHZJTcp/Ip (Level 2 Route)XC200_SMS.proEthernet13S Tcp/Ip Level 2 Router Driver5AddressIP address or hostname 10.1.6.32PortTargetId7dMotorola byteorderNoYesd5"WK"Serial (RS232) (Level 2 Route)Krmilnik_KO1.proCOM83S RS232 Level 2 Router Driver,PortCOM3COM8YBaudrate%4800%9600K1920038400576001152004ParityNoEvenOdd3Stop bits11,527dMotorola byteorderNoYesTargetIdAHZJTcp/Ip (Level 2 Route)Elektro_prostor_1.proTCP/IP3S Tcp/Ip Level 2 Router Driver5AddressIP address or hostname 10.1.6.35PortTargetId7dMotorola byteorderNoYesK@$K, CoDeSys 1-2.2 @B "$ '(P~@@@@@@MNOP`atyzbcde_Q\RKUXZ  "!#$^fghijkFHJLNPRUSTVWlopqrsuv|~xz(%@& IJK LMCB"$ '(PMNO`tyzbcde_Q\1-100RKUCANXZ16#2000-16#5fff  "!#$fghijkFHJLNPRUSTVWopqrsuvw%@& IJK LM@B"$ '(PMNO`tyzbcde_Q\1-100RKUCANXZ16#2000-16#5fff  "!#$fghijkFHJLNPRUSTVWopqrsuv%@& IJK LM,,:A\ 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  ValueVariableMinVariableMaxVariableTYLO_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.Root20971520DWORD&Configuration XC-CPU201-EC512K-8DI-6DOIBpp%QBE!%MB!%MLocal Inputs/CounterChannel.LocalInput1 Module.RootIBAd %Bit 0Bit 1Bit 2Bit 3Bit 4Bit 5Bit 6Bit 7MStateChannel.LokalBitin2012 Module.RootIX!Via%MN0Channel.LokalBitin2013 Module.RootIXPTn%MN1Channel.LokalBitin2014 Module.RootIX l %MErrorChannel.LokalBitin2015 Module.RootIXE%MReferencing activatedChannel.LokalBitin2016 Module.RootIX OO%MCounter-Value Low-WordChannel.WordInput7 Module.RootIWo%Bit 0Bit 1Bit 2Bit 3Bit 4Bit 5Bit 6Bit 7Bit 0Bit 1Bit 2Bit 3Bit 4Bit 5Bit 6Bit 7MCounter-Value High-WordChannel.WordInput8 Module.RootIW%Bit 0Bit 1Bit 2Bit 3Bit 4Bit 5Bit 6Bit 7Bit 0Bit 1Bit 2Bit 3Bit 4Bit 5Bit 6Bit 7M Local OutputsChannel.LocalOutput9 Module.RootQBT%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 0%MN1 QuitChannel.LokalBitout20114 Module.RootQX%M Error QuitChannel.LokalBitout20115 Module.RootQX`%M32BitCounter/Counter0 EnableChannel.LokalBitout20116 Module.RootQX%MCounter1 EnableChannel.LokalBitout20117 Module.RootQXT%oModule.XIOC_SER0 Module.RootParameter.PX101PARBYTE1Module.XIOC_SER22BYTEParameter.PX101PARBYTE2Module.XIOC_SER88BYTEParameter.PX101PARBYTE3Module.XIOC_SER7272BYTEParameter.PX101PARBYTE4Module.XIOC_SER6767BYTEParameter.PX101PARBYTE5Module.XIOC_SER7777BYTEParameter.PX101PARBYTE6Module.XIOC_SER33BYTEParameter.PX101PARBYTE7Module.XIOC_SER55BYTEParameter.PX101PARBYTE8Module.XIOC_SER229229BYTEParameter.PX101PARBYTE9Module.XIOC_SER162162BYTEParameter.PX101PARBYTE10Module.XIOC_SER22BYTEParameter.PX101PARBYTE11Module.XIOC_SER33BYTEParameter.PX101PARBYTE12Module.XIOC_SER88BYTEParameter.PX101PARBYTE13Module.XIOC_SER132132BYTEParameter.PX101PARBYTE14Module.XIOC_SER6464BYTEParameter.PX101PARBYTE15Module.XIOC_SER00BYTEParameter.PX101PARBYTE16Module.XIOC_SER5050BYTEParameter.PX101PARBYTE17Module.XIOC_SER22BYTEParameter.PX101XIOCSER18Module.XIOC_SERCOM2COM2INTXIOC-SERIB%QB%MB%oModule.XIOC_SER1 Module.RootParameter.PX101PARBYTE1Module.XIOC_SER22BYTEParameter.PX101PARBYTE2Module.XIOC_SER88BYTEParameter.PX101PARBYTE3Module.XIOC_SER7272BYTEParameter.PX101PARBYTE4Module.XIOC_SER6767BYTEParameter.PX101PARBYTE5Module.XIOC_SER7777BYTEParameter.PX101PARBYTE6Module.XIOC_SER33BYTEParameter.PX101PARBYTE7Module.XIOC_SER55BYTEParameter.PX101PARBYTE8Module.XIOC_SER229229BYTEParameter.PX101PARBYTE9Module.XIOC_SER162162BYTEParameter.PX101PARBYTE10Module.XIOC_SER22BYTEParameter.PX101PARBYTE11Module.XIOC_SER33BYTEParameter.PX101PARBYTE12Module.XIOC_SER88BYTEParameter.PX101PARBYTE13Module.XIOC_SER132132BYTEParameter.PX101PARBYTE14Module.XIOC_SER6464BYTEParameter.PX101PARBYTE15Module.XIOC_SER00BYTEParameter.PX101PARBYTE16Module.XIOC_SER5050BYTEParameter.PX101PARBYTE17Module.XIOC_SER22BYTEParameter.PX101XIOCSER18Module.XIOC_SERCOM3COM2INTXIOC-SERIB%QB1%MBNoreva%oModule.XIOC_SER2 Module.RootParameter.PX101PARBYTE1Module.XIOC_SER22BYTEParameter.PX101PARBYTE2Module.XIOC_SER88BYTEParameter.PX101PARBYTE3Module.XIOC_SER7272BYTEParameter.PX101PARBYTE4Module.XIOC_SER6767BYTEParameter.PX101PARBYTE5Module.XIOC_SER7777BYTEParameter.PX101PARBYTE6Module.XIOC_SER33BYTEParameter.PX101PARBYTE7Module.XIOC_SER55BYTEParameter.PX101PARBYTE8Module.XIOC_SER229229BYTEParameter.PX101PARBYTE9Module.XIOC_SER162162BYTEParameter.PX101PARBYTE10Module.XIOC_SER22BYTEParameter.PX101PARBYTE11Module.XIOC_SER33BYTEParameter.PX101PARBYTE12Module.XIOC_SER88BYTEParameter.PX101PARBYTE13Module.XIOC_SER132132BYTEParameter.PX101PARBYTE14Module.XIOC_SER6464BYTEParameter.PX101PARBYTE15Module.XIOC_SER00BYTEParameter.PX101PARBYTE16Module.XIOC_SER5050BYTEParameter.PX101PARBYTE17Module.XIOC_SER22BYTEParameter.PX101XIOCSER18Module.XIOC_SERCOM4COM2INTXIOC-SERIB%QB%MB%oModule.XIOC_IA8II23 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 pP%M 4-20mA InputChannel.AnalogInput5Module.XIOC_IA8II2IWp1X%M 4-20mA InputChannel.AnalogInput6Module.XIOC_IA8II2IW€$%M 4-20mA InputChannel.AnalogInput7Module.XIOC_IA8II2IWh'%M 4-20mA InputChannel.AnalogInput8Module.XIOC_IA8II2IW0%oModule.XIOC_IA8II24 Module.Root XIOC-8AI-I2IBp1%QB,%MB%M 4-20mA InputChannel.AnalogInput1Module.XIOC_IA8II2IW4OI%M 4-20mA InputChannel.AnalogInput2Module.XIOC_IA8II2IWNT''%M 4-20mA InputChannel.AnalogInput3Module.XIOC_IA8II2IWP!XC-%M 4-20mA InputChannel.AnalogInput4Module.XIOC_IA8II2IW0!XC_%M 4-20mA InputChannel.AnalogInput5Module.XIOC_IA8II2IW\be%M 4-20mA InputChannel.AnalogInput6Module.XIOC_IA8II2IW %M 4-20mA InputChannel.AnalogInput7Module.XIOC_IA8II2IW"0%M 4-20mA InputChannel.AnalogInput8Module.XIOC_IA8II2IW$0!XC_%oModule.XIOC_ID165 Module.Root XIOC-16DIIB&!%QB!%MB !%M 16 InputsChannel.WordInput1Module.XIOC_ID16IW&%Bit 0Bit 1Bit 2Bit 3Bit 4Bit 5Bit 6Bit 7Bit 0Bit 1Bit 2Bit 3Bit 4Bit 5Bit 6Bit 7oModule.XIOC_ID166 Module.Root XIOC-16DIIB(xx@%QB7Te=ot%MBDeulXI_E%M 16 InputsChannel.WordInput1Module.XIOC_ID16IW(T%Bit 0Bit 1Bit 2Bit 3Bit 4Bit 5Bit 6Bit 7Bit 0Bit 1Bit 2Bit 3Bit 4Bit 5Bit 6Bit 7$K $K N:n2 VAR_GLOBAL END_VAR ", "NewTask PLC_PRG();modnetPLC_PRG_modnet();$KStartCalled 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$Standard>E >EH $K8hyVAR_CONFIG END_VAR '\,Global_Modbus_definitions$K $K\!g_VAR_GLOBAL {flag noread,nowrite on} (* comm port definitions (BaudRate, Parity, Stopbit) npr: (Baudrate:= 9600,Parity:=0 No Parity, Stopbit:=1 One Stopbit) uporabni porti od 2 do 5, glede na HW konfigurtacijo *) ComPort2:MComPortParam:=(PortNo:=2,Baudrate:=9600,Parity:=0,Stopbit:=1); ComPort3:MComPortParam:=(PortNo:=3,Baudrate:=9600,Parity:=0,Stopbit:=1); ComPort4:MComPortParam:=(PortNo:=4,Baudrate:=9600,Parity:=0,Stopbit:=1); (* ComPort 2 - UPS_A_V23, KLIMA1, KLIMA2, Circutor, PMM *) ModBusTransPort2:ARRAY[1..40] OF MModMasterDefinition:= (*1true*) (TransActive:=TRUE,SlaveAddress:=1,FunctionCode:=3,DataOffset:=1,DataNumber:=40,SecondTry:=FALSE,Error:=FALSE,ErrorCode:=0,ErrorCount:=0), (*Circutor*) (*2true*) (TransActive:=TRUE,SlaveAddress:=1,FunctionCode:=3,DataOffset:=41,DataNumber:=34,SecondTry:=FALSE,Error:=FALSE,ErrorCode:=0,ErrorCount:=0), (*Circutor*) (*3true*) (TransActive:=TRUE,SlaveAddress:=5,FunctionCode:=3,DataOffset:=2,DataNumber:=56,SecondTry:=FALSE,Error:=FALSE,ErrorCode:=0,ErrorCount:=0), (*IMP Klima1*) (*4true*) (TransActive:=TRUE,SlaveAddress:=5,FunctionCode:=3,DataOffset:=139,DataNumber:=12,SecondTry:=FALSE,Error:=FALSE,ErrorCode:=0,ErrorCount:=0), (*IMP Klima1*) (*5true*) (TransActive:=TRUE,SlaveAddress:=5,FunctionCode:=1,DataOffset:=4,DataNumber:=50,SecondTry:=FALSE,Error:=FALSE,ErrorCode:=0,ErrorCount:=0), (*IMP Klima1*) (*6true*) (TransActive:=TRUE,SlaveAddress:=6,FunctionCode:=3,DataOffset:=2,DataNumber:=56,SecondTry:=FALSE,Error:=FALSE,ErrorCode:=0,ErrorCount:=0), (*IMP Klima2*) (*7true*) (TransActive:=TRUE,SlaveAddress:=6,FunctionCode:=3,DataOffset:=139,DataNumber:=12,SecondTry:=FALSE,Error:=FALSE,ErrorCode:=0,ErrorCount:=0), (*IMP Klima2*) (*8true*) (TransActive:=TRUE,SlaveAddress:=6,FunctionCode:=1,DataOffset:=4,DataNumber:=50,SecondTry:=FALSE,Error:=FALSE,ErrorCode:=0,ErrorCount:=0), (*IMP Klima2*) (*9*) (TransActive:=FALSE,SlaveAddress:=2,FunctionCode:=3,DataOffset:=65,DataNumber:=16,SecondTry:=FALSE,Error:=FALSE,ErrorCode:=0,ErrorCount:=0), (*UPS Galaxy 3000-UPS odstranjen 10.1.2008*) (*10*) (TransActive:=FALSE,SlaveAddress:=2,FunctionCode:=3,DataOffset:=257,DataNumber:=40,SecondTry:=FALSE,Error:=FALSE,ErrorCode:=0,ErrorCount:=0), (*UPS Galaxy 3000-UPS odstranjen 10.1.2008*) (*11*) (TransActive:=FALSE,SlaveAddress:=2,FunctionCode:=3,DataOffset:=297,DataNumber:=40,SecondTry:=FALSE,Error:=FALSE,ErrorCode:=0,ErrorCount:=0), (*UPS Galaxy 3000-UPS odstranjen 10.1.2008*) (*12true*) (TransActive:=TRUE,SlaveAddress:=97,FunctionCode:=3,DataOffset:=1,DataNumber:=42,SecondTry:=FALSE,Error:=FALSE,ErrorCode:=0,ErrorCount:=0), (* PMM Tokovi faza 1 *) (*13true*) (TransActive:=TRUE,SlaveAddress:=97,FunctionCode:=3,DataOffset:=127,DataNumber:=3,SecondTry:=FALSE,Error:=FALSE,ErrorCode:=0,ErrorCount:=0), (* PMM WARNING REGISTRI *) (*14true*) (TransActive:=TRUE,SlaveAddress:=97,FunctionCode:=3,DataOffset:=136,DataNumber:=3,SecondTry:=FALSE,Error:=FALSE,ErrorCode:=0,ErrorCount:=0), (* PMM WARNING REGISTRI *) (*15*) (TransActive:=FALSE,SlaveAddress:=97,FunctionCode:=3,DataOffset:=145,DataNumber:=54,SecondTry:=FALSE,Error:=FALSE,ErrorCode:=0,ErrorCount:=0), (* PMM Meritve vir A *) (* odpade !*) (*16*) (TransActive:=FALSE,SlaveAddress:=97,FunctionCode:=3,DataOffset:=231,DataNumber:=54,SecondTry:=FALSE,Error:=FALSE,ErrorCode:=0,ErrorCount:=0), (* PMM Meritve vir B *) (* odpade !*) (*17*) (TransActive:=TRUE,SlaveAddress:=16,FunctionCode:=4,DataOffset:=101,DataNumber:=43,SecondTry:=FALSE,Error:=FALSE,ErrorCode:=0,ErrorCount:=0), (* UPS_V23_A -dodan 10.1.2008*) (TransActive:=TRUE,SlaveAddress:=1,FunctionCode:=3,DataOffset:=99,DataNumber:=22,SecondTry:=FALSE,Error:=FALSE,ErrorCode:=0,ErrorCount:=0), (*Circutor*) 22((TransActive:=FALSE,SlaveAddress:=0,FunctionCode:=0,DataOffset:=1,DataNumber:=0,SecondTry:=0,Error:=FALSE,ErrorCode:=0,ErrorCount:=0)); (* ComPort 3 - UPS_V23 *) ModBusTransPort3:ARRAY[1..40] OF MModMasterDefinition:= (TransActive:=TRUE,SlaveAddress:=14,FunctionCode:=4,DataOffset:=101,DataNumber:=43,SecondTry:=FALSE,Error:=FALSE,ErrorCode:=0,ErrorCount:=0), (* UPS_V23*) (TransActive:=TRUE,SlaveAddress:=254,FunctionCode:=4,DataOffset:=101,DataNumber:=43,SecondTry:=TRUE,Error:=FALSE,ErrorCode:=0,ErrorCount:=0),(**Neveljavno poizvedovanje, na katerega ne bo odgovora in prinese dovolj zakasnitve, da se UPS ne zacikla_18_8_2006**) 38((TransActive:=FALSE,SlaveAddress:=0,FunctionCode:=0,DataOffset:=1,DataNumber:=0,SecondTry:=FALSE,Error:=FALSE,ErrorCode:=0,ErrorCount:=0)); (* ComPort 4 - UPS_V25 *) ModBusTransPort4:ARRAY[1..40] OF MModMasterDefinition:= (TransActive:=TRUE,SlaveAddress:=15,FunctionCode:=4,DataOffset:=101,DataNumber:=43,SecondTry:=FALSE,Error:=FALSE,ErrorCode:=0,ErrorCount:=0), (* UPS_V25 *) (TransActive:=TRUE,SlaveAddress:=254,FunctionCode:=4,DataOffset:=101,DataNumber:=43,SecondTry:=TRUE,Error:=FALSE,ErrorCode:=0,ErrorCount:=0),(**Neveljavno poizvedovanje, na katerega ne bo odgovora in prinese dovolj zakasnitve, da se UPS ne zacikla_18_8_2006**) 38((TransActive:=FALSE,SlaveAddress:=0,FunctionCode:=0,DataOffset:=1,DataNumber:=0,SecondTry:=FALSE,Error:=FALSE,ErrorCode:=0,ErrorCount:=0)); (* Write variables for ComPorts *) ModBusWritePort2:ARRAY[1..40] OF MModMasterWriteDef:= (Write:=FALSE,Finished:=FALSE,SlaveAddress:=1,FunctionCode:=5,DataOffset:=1,Coil:=FALSE,Register:=0,Error:=FALSE,ErrorCode:=0), 39((Write:=FALSE,Finished:=FALSE,SlaveAddress:=1,FunctionCode:=5,DataOffset:=1,Coil:=FALSE,Register:=0,Error:=FALSE,ErrorCode:=0)); (* dodano l.2008 - Albin Lorenci*) ModBusWritePort3:ARRAY[1..40] OF MModMasterWriteDef:= 40((Write:=FALSE,Finished:=FALSE,SlaveAddress:=1,FunctionCode:=5,DataOffset:=1,Coil:=FALSE,Register:=0,Error:=FALSE,ErrorCode:=0)); ModBusWritePort4:ARRAY[1..40] OF MModMasterWriteDef:= 40((Write:=FALSE,Finished:=FALSE,SlaveAddress:=1,FunctionCode:=5,DataOffset:=1,Coil:=FALSE,Register:=0,Error:=FALSE,ErrorCode:=0)); {flag off} END_VAR ',))Global_Variables@ PrevisokaTemp PMMskupniTokA PMMskupniTokB ups_polnjenjeKLIMAT1_napakaKLIMAT2_napakaNapakaSenzorVlagaHIA1NapakaSenzorVlagaHIA2NapakaSenzorVlagaHIA3NapakaSenzorVlagaHIA4NapakaSenzorVlagaHIA5NapakaSenzorVlagaHIA6NapakaSenzorVlagaHIA7Q12_izkljucenoControlXVHtxt1XVHtxt2XVHtxt3UPS_V23_napakaXVHtxt4XVHtxt5UPS_V25_napakaXVHtxt6K1PreobMotVentK2PreobMotVentComSCADA XVH_UPSstatusErrorComUPSMGEDateTimeAlarmPMM1VirATokVisokAlarmPMM1VirBTokVisokKlime_vklopi_nKLIMA_m1_napakaKLIMA_m2_napakaK1_SkupnaNapakaAlarmGenUPS_V23K2_SkupnaNapakaK3_SkupnaNapakaAlarmGenUPS_V25ComErrorK1OkvaraVlazNapK2OkvaraVlazNap ComSCADA1 ComSCADA2 PMMfaza01 PMMfaza10 ComSCADA3 PMMfaza02 PMMfaza11 PMMfaza20K1PreobMotCrpGr PMMfaza03 PMMfaza12 PMMfaza21 PMMfaza30N_UPS_A_V23_delovanjeK2PreobMotCrpGr PMMfaza04 PMMfaza13 PMMfaza22 PMMfaza31 PMMfaza40 PMMfaza05 PMMfaza14 PMMfaza23 PMMfaza32 PMMfaza41 PMMfaza06 PMMfaza15 PMMfaza24 PMMfaza33 PMMfaza42 PMMfaza07 PMMfaza16 PMMfaza25 PMMfaza34 PMMfaza08 PMMfaza17 PMMfaza26 PMMfaza35 PMMfaza09 PMMfaza18 PMMfaza27 PMMfaza36 PMMfaza19 PMMfaza28 PMMfaza37 PMMfaza29 PMMfaza38 PMMfaza39 Q12stanjeF1_1_zascita_ok Q12_izpadUserCurrentNameSlabaBaterijaPLCAlarmPMM2x17nad80 K3_delujeVLAZILEC1_napakaVLAZILEC2_napaka TIA1_temp TIA2_tempNapakaTSTempTIA1 TIA3_tempNapakaTSTempTIA2 TIA4_tempNapakaTSTempTIA3 TIA5_tempNapakaTSTempTIA4 TIA6_tempNapakaTSTempTIA5 TIA7_tempNapakaTSTempTIA6NapakaTSTempTIA7 Date_Time KlimeAVTO ErrComPMMN_KLIMAT1_napakaN_KLIMAT2_napakanapaka_kom_scada ErrComUPS ups_alarmKLIMA1_kke_pogonUPS_A_V23_napakaTempPovp56Previs HIA1_vlaga HIA2_vlaganapaka_kom_panel HIA3_vlaga HIA4_vlagaSetDateTimeError HIA5_vlaga HIA6_vlaga HIA7_vlagaN_UPS_V23_napakaN_UPS_V25_napakaK1_vklop_izklop_potekaK2_vklop_izklop_poteka TempPovp56UserCurrentLevelTIA1_previs_temp ErrComCircTIA2_previs_tempKLIMAT1_vklop_delovanjaTIA3_previs_tempKLIMAT2_vklop_delovanjaTIA4_previs_tempnapaka_kom_scada2TIA5_previs_tempTIA6_previs_tempTIA7_previs_tempSetDateTimeDemandKLIMAT1_delovanjeKLIMAT2_delovanjeTempPovp234PrevisKlima1_izkljucenaKlima2_izkljucenaKlima3_izkljucenaXVHdepltedBatery1XVHdepltedBatery2OpozoriloPMM2x17med60in80XVHdepltedBatery3 UPS1ErrorsAlarmGenUPS_A_V23 UPS2Errors UPS3ErrorsK1OkvaraRototermaK2OkvaraRototerma TempPovp234UPS_V23_delovanjeUPS_V25_delovanjeKLIMAT1_R_zakleniKLIMAT2_R_zakleniN_F1_1_zascita_ok K1NiPretoka K2NiPretokaKLIMA1_krm_nap_okAlarmPMM1VirATokPrevisok ErrComKlimaAlarmPMM1VirBTokPrevisok N_Q12_izpad SetDateTimeKLIMAT1_vklop_delovanjaRKLIMAT2_vklop_delovanjaR ErrComPort2 ErrComPort3 ErrComPort4KLIMA_m1_delovanjeKLIMA_m2_delovanjeN_VLAZILEC1_napakaK1ZamasenostFiltraN_VLAZILEC2_napakaK2ZamasenostFiltra ErrorComPMM UserDisplay TIA1_temp_s TIA2_temp_s TIA3_temp_s TIA4_temp_s N_KlimeAVTO TIA5_temp_s TIA6_temp_s TIA7_temp_s XVH_AlarmOn ErrorComUPS razlitjeLAH1 razlitjeLAH2 razlitjeLAH3 razlitjeLAH4N_UPS_A_V23_napakaNapakaSenzorSkupnoups_baterijski_nac HIA1_vlaga_s HIA2_vlaga_s HIA3_vlaga_s HIA4_vlaga_s HIA5_vlaga_s HIA6_vlaga_s HIA7_vlaga_s UserLoggedIn ErrorComCirc SkupneNapakeNaprav_PMM17VirBVirAVLAZILEC1_delovanjeVLAZILEC2_delovanjeSetDateTimeFinished Q0_vkljucenoK1KlimaZdruzenAlarmK2KlimaZdruzenAlarm ErrComUPSMGE UPSMGEErrorsUPS_A_V23_delovanje K1AlarmPozara K2AlarmPozaraPMM1OverCurrentBetwK1ProtizamrzZascAktK2ProtizamrzZascAktUPS1_StatusBaterijeUPS2_StatusBaterijeUPS3_StatusBaterijeN_UPS_V23_delovanjePMM1OverCurrentOver Q12_vkljucenoN_UPS_V25_delovanjeXVH_enopolna_napaka ErrorComKlimaStatusN_KLIMA1_krm_nap_ok Q0_izkljuceno XVHlowBatery1 XVHlowBatery2 XVHlowBatery3$K $K !_=VAR_GLOBAL Circ_Vpis_Dnevne_energija_scada1:BOOL; Circ_Vpis_Dnevne_energija_scada2:BOOL; Circ_Vpis_Tedenska_energija_scada1:BOOL; Circ_Vpis_Tedenska_energija_scada2:BOOL; Circ_Vpis_Mesecna_energija_scada1:BOOL; Circ_Vpis_Mesecna_energija_scada2:BOOL; (* 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*) Q0_vkljuceno AT %IX38.0:BOOL; (*GLAVNO STIKALO VKLJUCENO*) F1_1_zascita_ok AT %IX38.1:BOOL; (*PRENAPETOSTNA ZASCITA ZASCITA_OK*) Q12_izpad AT %IX38.2:BOOL; (*ODCEP ZA USMERNIK GSM R-EC IZPAD*) Q12_vkljuceno AT %IX38.3:BOOL; (*ODCEP ZA USMERNIK GSM R-EC VKLJUCENO*) KLIMAT1_delovanje AT %IX38.4:BOOL; (*KLIMAT DELOVANJE*) KLIMAT1_napaka AT %IX38.5:BOOL; (*KLIMAT NAPAKA*) KLIMAT2_delovanje AT %IX38.6:BOOL; (*KLIMAT DELOVANJE*) KLIMAT2_napaka AT %IX38.7:BOOL; (*KLIMAT NAPAKA*) VLAZILEC1_delovanje AT %IX39.0:BOOL; (*VLAZILEC DELOVANJE*) VLAZILEC1_napaka AT %IX39.1:BOOL; (*VLAZILEC NAPAKA*) (*napaka odpade - signaliziramo samo delovanje*) VLAZILEC2_delovanje AT %IX39.2:BOOL; (*VLAZILEC DELOVANJE*) VLAZILEC2_napaka AT %IX39.3:BOOL; (*VLAZILEC NAPAKA*) (*napaka odpade - signaliziramo samo delovanje*) KLIMA_m1_delovanje AT %IX39.4:BOOL; (*KLIMA M1_DELOVANJE*) KLIMA_m1_napaka AT %IX39.5:BOOL; (*KLIMA M1_NAPAKA*) KLIMA_m2_delovanje AT %IX39.6:BOOL; (*KLIMA M2_DELOVANJE*) KLIMA_m2_napaka AT %IX39.7:BOOL; (*KLIMA M2_NAPAKA*) KLIMA1_kke_pogon AT %IX40.0:BOOL; (*KLIMA KKE_POGON*) KLIMA1_krm_nap_ok AT %IX40.1:BOOL; (*KLIMA KRMILNA_NAPETOST_OK*) UPS_A_V23_delovanje AT %IX40.2:BOOL; (*GENERAL FAULT - odpiralni kontakt*) UPS_A_V23_napaka AT %IX40.3:BOOL; (*ON BATTERY - odpiralni kontakt*) UPS_V23_delovanje AT %IX40.4:BOOL; (*NAPAKA VHODA - odpiralni kontakt*) UPS_V23_napaka AT %IX40.5:BOOL; (*NAPAKA IZHODA - odpiralni kontakt*) UPS_V25_delovanje AT %IX40.6:BOOL; (*NAPAKA VHODA - odpiralni kontakt*) UPS_V25_napaka AT %IX40.7:BOOL; (*NAPAKA IZHODA - odpiralni kotakt*) (* Dodal Alja zaradi negiranihv hodov 23.2.09 *) ALM_GSM_PozCent_napaka AT %IX41.0:BOOL; (*3. klet GSM centrala - Napaka v poarni centrali*) ALM_GSM_PozSenzor_okvara AT %IX41.1:BOOL; (*3. klet GSM centrala - Okvara senzorja poara-1. alarm*) ALM_GSM_Gasenje_alarm AT %IX41.2:BOOL; (*3. klet GSM centrala - Alarm za gaenje-2.alarm*) ALM_AGR_PozCent_napaka AT %IX41.3:BOOL; (*3. klet Agregati - Napaka v poarni centrali*) ALM_AGR_PozSenzor_okvara AT %IX41.4:BOOL; (*3. klet Agregati - Okvara senzorja poara-1. alarm*) ALM_AGR_Gasenje_alarm AT %IX41.5:BOOL; (*3. klet Agregati - Alarm za gaenje-2.alarm*) GSM_PozCent_napaka :BOOL; (*3. klet GSM centrala - Napaka v poarni centrali*) GSM_PozSenzor_okvara :BOOL; (*3. klet GSM centrala - Okvara senzorja poara-1. alarm*) GSM_Gasenje_alarm :BOOL; (*3. klet GSM centrala - Alarm za gaenje-2.alarm*) AGR_PozCent_napaka :BOOL; (*3. klet Agregati - Napaka v poarni centrali*) AGR_PozSenzor_okvara :BOOL; (*3. klet Agregati - Okvara senzorja poara-1. alarm*) AGR_Gasenje_alarm :BOOL; (*3. klet Agregati - Alarm za gaenje-2.alarm*) (* Digitalni izhodi *) KLIMAT1_vklop_delovanja AT %QX0.0:BOOL; (*KLIMAT VKLOP_DELOVANJA*) KLIMAT2_vklop_delovanja AT %QX0.1:BOOL; (*KLIMAT VKLOP_DELOVANJA*) (* Analogni vhodi *) 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*) 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*) (*******************************************************************************************************************************************************************************************************) (*Za potrebe testiranja*) (* (* 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*) Q0_vkljuceno:BOOL; (*GLAVNO STIKALO VKLJUCENO*) F1_1_zascita_ok:BOOL; (*PRENAPETOSTNA ZASCITA ZASCITA_OK*) Q12_izpad:BOOL; (*ODCEP ZA USMERNIK GSM R-EC IZPAD*) Q12_vkljuceno:BOOL; (*ODCEP ZA USMERNIK GSM R-EC VKLJUCENO*) KLIMAT1_delovanje:BOOL; (*KLIMAT DELOVANJE*) KLIMAT1_napaka:BOOL; (*KLIMAT NAPAKA*) KLIMAT2_delovanje:BOOL; (*KLIMAT DELOVANJE*) KLIMAT2_napaka:BOOL; (*KLIMAT NAPAKA*) VLAZILEC1_delovanje:BOOL; (*VLAZILEC DELOVANJE*) VLAZILEC1_napaka:BOOL; (*VLAZILEC NAPAKA*) (*napaka odpade - signaliziramo samo delovanje*) VLAZILEC2_delovanje:BOOL; (*VLAZILEC DELOVANJE*) VLAZILEC2_napaka:BOOL; (*VLAZILEC NAPAKA*) (*napaka odpade - signaliziramo samo delovanje*) KLIMA_m1_delovanje:BOOL; (*KLIMA M1_DELOVANJE*) KLIMA_m1_napaka:BOOL; (*KLIMA M1_NAPAKA*) KLIMA_m2_delovanje:BOOL; (*KLIMA M2_DELOVANJE*) KLIMA_m2_napaka:BOOL; (*KLIMA M2_NAPAKA*) KLIMA1_kke_pogon:BOOL; (*KLIMA KKE_POGON*) KLIMA1_krm_nap_ok:BOOL; (*KLIMA KRMILNA_NAPETOST_OK*) UPS_A_V23_delovanje:BOOL; (*GENERAL FAULT - odpiralni kontakt*) UPS_A_V23_napaka:BOOL; (*ON BATTERY - odpiralni kontakt*) UPS_V23_delovanje:BOOL; (*NAPAKA VHODA - odpiralni kontakt*) UPS_V23_napaka:BOOL; (*NAPAKA IZHODA - odpiralni kontakt*) UPS_V25_delovanje:BOOL; (*NAPAKA VHODA - odpiralni kontakt*) UPS_V25_napaka:BOOL; (*NAPAKA IZHODA - odpiralni konatkt*) (* Digitalni izhodi *) KLIMAT1_vklop_delovanja:BOOL; (*KLIMAT VKLOP_DELOVANJA*) KLIMAT2_vklop_delovanja:BOOL; (*KLIMAT VKLOP_DELOVANJA*) (* Analogni vhodi *) 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*) 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*) *) (*******************************************************************************************************************************************************************************************************) (*Negirani odpiralni kontakti*) N_F1_1_zascita_ok:BOOL; N_Q12_izpad:BOOL; N_KLIMAT1_napaka:BOOL; N_KLIMAT2_napaka:BOOL; N_VLAZILEC1_napaka:BOOL; N_VLAZILEC2_napaka:BOOL; N_KLIMA1_krm_nap_ok:BOOL; N_UPS_A_V23_delovanje:BOOL; (*BYPASS ON*) N_UPS_A_V23_napaka:BOOL; N_UPS_V23_delovanje:BOOL; (*BYPASS ON*) N_UPS_V23_napaka:BOOL; N_UPS_V25_delovanje:BOOL; (*BYPASS ON*) N_UPS_V25_napaka:BOOL; (*alarmiranje za izklope *) Klima1_izkljucena:BOOL; Klima2_izkljucena:BOOL; Klima3_izkljucena:BOOL; Q12_izkljuceno:BOOL; Q0_izkljuceno:BOOL; (* stanja stikal 0-off, 1-on, +2 izpad (=2 ali 3) *) Q12stanje:BYTE; (* Bravanje gumba za prehod na enopolno shemo ob napaki *) XVH_enopolna_napaka:BOOL; (*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; (*Napake senzorjev ki so prikljuceni na analogne vhode*) NapakaTSTempTIA1 : BOOL; NapakaTSTempTIA2 : BOOL; NapakaTSTempTIA3 : BOOL; NapakaTSTempTIA4 : BOOL; NapakaTSTempTIA5 : BOOL; NapakaTSTempTIA6 : BOOL; NapakaTSTempTIA7 : BOOL; NapakaSenzorVlagaHIA1: BOOL; NapakaSenzorVlagaHIA2: BOOL; NapakaSenzorVlagaHIA3: BOOL; NapakaSenzorVlagaHIA4: BOOL; NapakaSenzorVlagaHIA5: BOOL; NapakaSenzorVlagaHIA6: BOOL; NapakaSenzorVlagaHIA7: 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; 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)*) ErrComPort2:BOOL; ErrComPort3:BOOL; ErrComPort4:BOOL; ErrorComCirc:ARRAY [1..1] OF MErrorComm; ErrorComKlima:ARRAY [1..2] OF MErrorComm; ErrorComUPSMGE:ARRAY [1..1] OF MErrorComm; ErrorComUPS:ARRAY [1..3] OF MErrorComm; ErrorComPMM:ARRAY [1..1] OF MErrorComm; ErrComCirc:ARRAY [1..1] OF BOOL; ErrComKlima: ARRAY [1..2] OF BOOL; ErrComUPSMGE: ARRAY [1..1] OF BOOL; ErrComUPS:ARRAY [1..3] OF BOOL; ErrComPMM:ARRAY [1..1] OF BOOL; (* 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..7] OF WORD; Status: ARRAY [0..7] 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: DateTime; (* ura in datum *) (* Skupna napaka v poarni centrali *) PozarnaCentrala_skupno:BOOL; (* Klime alarmi za panel *) K1ProtizamrzZascAkt : BOOL; K1AlarmPozara : BOOL; K1NiPretoka : BOOL; K1PreobMotVent : BOOL; K1PreobMotCrpGr : BOOL; K1ZamasenostFiltra : BOOL; K1KlimaZdruzenAlarm : BOOL; K1OkvaraVlazNap : BOOL; K1OkvaraRototerma : BOOL; K2ProtizamrzZascAkt : BOOL; K2AlarmPozara : BOOL; K2NiPretoka : BOOL; K2PreobMotVent : BOOL; K2PreobMotCrpGr : BOOL; K2ZamasenostFiltra : BOOL; K2KlimaZdruzenAlarm : BOOL; K2OkvaraVlazNap : BOOL; K2OkvaraRototerma : BOOL; K1_SkupnaNapaka:BOOL; K2_SkupnaNapaka:BOOL; K3_SkupnaNapaka:BOOL; (* Delovanje klime 3 *) K3_deluje:BOOL; (* UPS alarmi - lepo po vrsti, kot so v seznamu - za XVH300 error tabele *) UPS1Errors:ARRAY[1..25] OF BOOL; UPS2Errors:ARRAY[1..25] OF BOOL; UPS3Errors:ARRAY[1..25] OF BOOL; (*ta ups je zamenjal upsMGE 10.1.2008*) UPSMGEErrors:ARRAY[1..17] OF BOOL; (*UPS skupne napake *) AlarmGenUPS_V23:BOOL; AlarmGenUPS_V25:BOOL; AlarmGenUPS_A_V23:BOOL; XVHtxt1:STRING[40]; XVHtxt2:STRING[40]; XVHlowBatery1,XVHdepltedBatery1:REAL; (* za sliko baterije UPSa *) XVHtxt3:STRING[40]; XVHtxt4:STRING[40]; XVHlowBatery2,XVHdepltedBatery2:REAL; XVHtxt5:STRING[40]; XVHtxt6:STRING[40]; XVHlowBatery3,XVHdepltedBatery3:REAL; (* Barvanje gumba za alarm ob kateremukoli alarmu *) XVH_AlarmOn:BOOL; (* previsoki tokovi na izhodih in napetosti na vhodu PMM *) PMM1OverCurrentBetw:ARRAY [1..3] OF BOOL; PMM1OverCurrentOver:ARRAY [1..3] OF BOOL; AlarmPMM1VirBTokVisok:BOOL; AlarmPMM1VirBTokPrevisok:BOOL; AlarmPMM1VirATokVisok:BOOL; AlarmPMM1VirATokPrevisok:BOOL; (**Alarmni registri za pmm 2x14**) OpozoriloPMM2x17med60in80:ARRAY [1..42] OF BOOL; AlarmPMM2x17nad80:ARRAY [1..42] OF BOOL; SkupneNapakeNaprav_PMM17VirBVirA:BOOL; (* PMMfaza60,PMMfaza80:ARRAY [1..42] OF REAL; (* vrednost faze, alarm 60% in alarm 80% *)*) (* tale idiotske vrstice so zaradi Galilea - meje lahko dolocis le celi tabeli in ne posameznim el. tabele! *) PMMfaza01,PMMfaza02,PMMfaza03,PMMfaza04,PMMfaza05,PMMfaza06,PMMfaza07,PMMfaza08,PMMfaza09,PMMfaza10:REAL; PMMfaza11,PMMfaza12,PMMfaza13,PMMfaza14,PMMfaza15,PMMfaza16,PMMfaza17,PMMfaza18,PMMfaza19,PMMfaza20:REAL; PMMfaza21,PMMfaza22,PMMfaza23,PMMfaza24,PMMfaza25,PMMfaza26,PMMfaza27,PMMfaza28,PMMfaza29,PMMfaza30:REAL; PMMfaza31,PMMfaza32,PMMfaza33,PMMfaza34,PMMfaza35,PMMfaza36,PMMfaza37,PMMfaza38,PMMfaza39,PMMfaza40:REAL; PMMfaza41,PMMfaza42:REAL; PMMskupniTokA:REAL; PMMskupniTokB:REAL; (*Povprecne temperature*) TempPovp234:INT; TempPovp56:INT; TempPovp234Previs:BOOL; TempPovp56Previs:BOOL; KlimeAVTO:BOOL; N_KlimeAVTO:BOOL; KLIMAT1_vklop_delovanjaR:BOOL; (*zahteva za vklopklime 1 iz panela v rocnem rezimu*) KLIMAT2_vklop_delovanjaR:BOOL; (*zahteva za vklopklime 2 iz panela v rocnem rezimu*) KLIMAT1_R_zakleni:BOOL; (* preprecitev rocnega vklopa klime 1 v AVTO rezimu in takoj po podani zahtevi za vklop/izklop v rocnem rezimu*) KLIMAT2_R_zakleni:BOOL;(* preprecitev rocnega vklopa klime 2 v AVTO rezimu in takoj po podani zahtevi za vklop/izklop v rocnem rezimu*) K1_vklop_izklop_poteka:BOOL; (* izpis med cakanjem na vklop/izklop klime 1 po zahtevi za vklop/izklop *) K2_vklop_izklop_poteka:BOOL; (* izpis med cakanjem na vklop/izklop klime 2 po zahtevi za vklop/izklop *) Klime_vklopi_n:INT; (*UPS status baterije za panel*) UPS1_StatusBaterije:WORD; UPS2_StatusBaterije:WORD; UPS3_StatusBaterije:WORD; END_VAR'Global_Variables_Modnet$K $KpVAR_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 'z,?Global_VarRetain@UPS_MGETempPovp56AlarmTempPovp234AlarmK1_obr_u_skupnoK2_obr_u_skupnoTempZaVklopKlim1TempZaVklopKlim2 TIA1_alarm TIA2_alarm TIA3_alarmPMM TIA4_alarm TIA5_alarm TIA6_alarm TIA7_alarmcas_modbus_izpadUPSCircKlimaIzklopObrUre K1obrat_ure K2obrat_ureKlimakom_nast_cas_izpada TempHistereza$K $KzemljkakiVAR_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; TempPovp234Alarm:INT:=32; TempPovp56Alarm:INT:=32; K1obrat_ure: UINT; (* trenutne obratovalne ure po preklopu klima 1*) K2obrat_ure: UINT; (* trenutne obratovalne ure po preklopu klima 2*) K1_obr_u_skupno:UINT; (* skupne obratovalne ure klima 1*) K2_obr_u_skupno:UINT; (* skupne obratovalne ure klima 2*) KlimaIzklopObrUre:INT:=150; TempZaVklopKlim1:INT:=28; TempZaVklopKlim2:INT:=28; TempHistereza:INT:=1; kom_nast_cas_izpada:UINT:=180; (*v sekundah*) (* ModBus spremenljivke *) Circ:ARRAY[1..1] OF MCircutorDataStructure; Klima:ARRAY[1..2] OF KlimatskaNaprava; UPS_MGE:ARRAY[1..1] OF UPS_Gal3000; UPS:ARRAY[1..3] OF MUPSdataStructure; PMM:ARRAY[1..1] OF MPMMdataStructure; (*zakasnitev javljanja izpada modbus komunikacije*) cas_modbus_izpad:UINT:=180; (*v sekundah*) END_VAR ' ,,: \Variable_Configuration$K $K VAR_CONFIG END_VAR |0|0~3DEFAULTSystem|0|0 hh':'mm':'ssdd'-'MM'-'yyyy' 5,uDateTime$K $K1X TYPE DateTime :STRUCT Sekunda:BYTE; Minuta : BYTE; Ura : BYTE; Dan : BYTE; Mesec : BYTE; Leto:BYTE; Leto2: INT; PLC_Sekunda:BYTE; PLC_Minuta : BYTE; PLC_Ura : BYTE; PLC_Dan : BYTE; PLC_Mesec : BYTE; PLC_Leto:BYTE; PLC_DanVTednu:BYTE; END_STRUCT END_TYPE {,,: \KlimatskaNaprava$K $KDetoPoavTYPE KlimatskaNaprava : STRUCT Temperatura_prostora : INT; Temperatura_dovoda : INT; Protizamrz_zascita : INT; Zunanja_temp : INT; Zel_temp_eko_hlajenja : INT; Zel_temp_eko_gretja : INT; Zel_temp_komf_hlajenja : INT; Zel_temp_komf_gretja : INT; Pol_komp_zacetek : INT; Pol_komp_konec : INT; Pol_komp_sprem_zel_vr : INT; Zim_komp_zacetek : INT; Zim_komp_konec : INT; Zim_komp_sprem_zel_vr : INT; ZimKompMinVpihZac : INT; ZimKompMinVpihKonec : INT; ZkompMinVpihSpremZelVr : INT; Min_vpih : INT; Max_vpih : INT; Dejanska_zel_temp : INT; Analog_izh_VentGrelnika : INT; Analog_izh_VentHlajenja : INT; Analog_izh_rekuperator : INT; Analog_izh_mesanje : INT; VlagaVstopZrakaProstor : INT; Vlaga_v_prostoru : INT; TempPredPloscnimRekup : INT; TempZaPloscnimRekup : INT; Hitrost_del_vent_disp : INT; PreklopHitDelVent : INT; Rezim_delovanja : INT; Obrat_ure_Vent_h1 : INT; (*hitrost 1*) Obrat_ure_Vent_h2 : INT; (* hitrost 2*) Alarm_pozar : BOOL; Ni_pretoka : BOOL; PreobMotVent : BOOL; PreobMotCrpGrel : BOOL; ProtizamrzZascAktivna : BOOL; ZamasenostFiltra : BOOL; ZdruzAlarmA : BOOL; ZdruzAlarmB : BOOL; VklopRegKlimata : BOOL; DelVentHit1 : BOOL; (* spremenjeno v delovanje kompresor 1*) DelVentHit2 : BOOL; (* spremenjeno v delovanje kompresor 2*) OkvaraVlazNap : BOOL; OkvaraRototerm : BOOL; END_STRUCT END_TYPE x,?MCircutorDataStructure$K $KhTYPE MCircutorDataStructure : STRUCT Napetost_L1_N:REAL; Tok_L1:REAL; DelovnaMoc_L1:REAL; JalovaMoc_L1:REAL; PowerFactor_L1:REAL; Napetost_L2_N:REAL; Tok_L2:REAL; DelovnaMoc_L2:REAL; JalovaMoc_L2:REAL; PowerFactor_L2:REAL; Napetost_L3_N:REAL; Tok_L3:REAL; DelovnaMoc_L3:REAL; JalovaMoc_L3:REAL; PowerFactor_L3:REAL; DelovnaMoc_III:REAL; InduktivnaMoc_III:REAL; KapacitivnaMoc_III:REAL; CosFi_III:REAL; PowerFactor_III:REAL; Frekvenca_L1:REAL; Napetost_L1_L2:REAL; Napetost_L2_L3:REAL; Napetost_L3_L1:REAL; THDV_L1:REAL; THDV_L2:REAL; THDV_L3:REAL; THDI_L1:REAL; THDI_L2:REAL; THDI_L3:REAL; DelovnaEnergija:REAL; InduktivnaEnergija:REAL; KapacitivnaEnergija:REAL; NavideznaMoc_III:REAL; MaximumDemand:REAL; TokPovprecje_III:REAL; NicelniTok:REAL; MaximumDemandA2:REAL; MaximumDemandA3:REAL; RazEner_D:REAL; RazEner_D_SCADA:REAL; RazEner_D_TEMP:REAL; RazEner_T:REAL; RazEner_T_SCADA:REAL; RazEner_T_TEMP:REAL; RazEner_M:REAL; RazEner_M_SCADA:REAL; RazEner_M_TEMP:REAL; DelovnaEnergija_TEMP:REAL; END_STRUCT END_TYPE `,BWNy MComPortParam$K $KraFis\mmTYPE MComPortParam : STRUCT PortNo:USINT; (*Port number *) Baudrate:INT; (* Baudrate *) Parity:USINT; (* Parity *) Stopbit:USINT; (* Stopbit *) Error:BOOL; (* Modbusmaster cannot open port *) END_STRUCT END_TYPE ,PMCurentPhaseTable$K $KYTYPE MCurentPhaseTable : STRUCT Current:ARRAY [1..42] OF REAL; END_STRUCT END_TYPE ,fMCurrentAlarmsStruct$K $K,?=TYPE MCurrentAlarmsStruct : STRUCT GlobalAlarmReg: INT; C01_16_60to80:UINT; C17_32_60to80:UINT; C33_42_60to80:UINT; C01_16_over80:UINT; C17_32_over80:UINT; C33_42_over80:UINT; END_STRUCT END_TYPE a,6!X MErrorComm$K $K1 @D_CLTYPE MErrorComm : STRUCT Error:BOOL; (* Error sum (status>0)*) Status:INT; (* Error bit image *) Code:ARRAY[1..17] OF BYTE; (* Transaction error codes *) END_STRUCT END_TYPE b,MModMasterDefinition$K $K>TYPE MModMasterDefinition : STRUCT (* vhodi v blok MODBUSMASTER*) TransActive : BOOL; (* Aktivnost transakcije (Enabled) *) SlaveAddress :USINT; (* Address of MODBUS Slave *) FunctionCode :USINT; (* Function code *) DataOffset :UINT; (* Data Offset *) DataNumber :UINT; (* Number OF Data *) SecondTry:BOOL; (* Two questions in a row *) (* izhodi bloka MODBUSMASTER*) Error : BOOL; (* Napaka pri prenosu *) ErrorCode : USINT; (* Index napake pri prenosu *) ErrorCount:INT; (* Repetition error count for device *) END_STRUCT END_TYPE c,lxMModMasterWriteDef$K $Kp3TYPE MModMasterWriteDef : STRUCT (* vhodi v blok MODBUSMASTER*) Write : BOOL; (* Aktivnost transakcije (Enabled) *) Finished: BOOL; (* Write finished *) SlaveAddress :USINT; (* Address of MODBUS Slave *) FunctionCode :USINT; (* Function code 05 write coil, 06 write register *) DataOffset :UINT; (* Data Offset *) Coil:BOOL; (* Coil value *) Register:UINT; (* Register value *) (* izhodi bloka MODBUSMASTER*) Error : BOOL; (* Napaka pri prenosu *) ErrorCode : USINT; (* Index napake pri prenosu *) END_STRUCT END_TYPE ,n:MPMMdataStructure$K $K TYPE MPMMdataStructure : STRUCT (* Read from addresses N*16+2 (PhaseA - array[1,x]) N*16+3 (PhaseB - array[2,x]) N*16+4 (PhaseC - array[3,x]*) (* DataOffset =1, DataLength=42 *) Phase:ARRAY[1..3] OF MCurentPhaseTable; (* DataOffset 1..42*) (*DataOffset 43 DataLength=1& DataOffset=281, DataLength=6*) AlarmPhase:ARRAY [1..3] OF MCurrentAlarmsStruct; (* Read from address N*16+9 *) ActiveEnergyConsumed_kWh:REAL; ReactiveEnergyConsumed_kVARh:REAL; TotalActivePower_kW:REAL; TotalReactivePower_kVAR:REAL; TotalAparentPower_kVA:REAL; TotalPowerFactor:REAL; AveragePhaseToPhase_V:REAL; AveragePhaseToNeutral_V:REAL; AverageCurrent_A:REAL; Frequency_Hz:REAL; ActivePowerPhaseA_kW:REAL; ActivePowerPhaseB_kW:REAL; ActivePowerPhaseC_kW:REAL; (* PowerFactorPhaseA:REAL; PowerFactorPhaseB:REAL; PowerFactorPhaseC:REAL;*) VoltageBetweenPhaseAB_V:REAL; VoltageBetweenPhaseBC_V:REAL; VoltageBetweenPhaseCA_V:REAL; VoltageBetweenPhaseAN_V:REAL; VoltageBetweenPhaseBN_V:REAL; VoltageBetweenPhaseCN_V:REAL; CurrentInPhaseA_A:REAL; CurrentInPhaseB_A:REAL; CurrentInPhaseC_A:REAL; (*NeutralCurrent_A:REAL; Alarms:INT;*) PowerFactorSys:REAL; AparentPowerPhaseA:REAL; AparentPowerPhaseB:REAL; AparentPowerPhaseC:REAL; ReactivePowerPhaseA:REAL; ReactivePowerPhaseB:REAL; ReactivePowerPhaseC:REAL; VirA_Usys:REAL; VirA_Isys:REAL; VirA_Psys:REAL; VirA_Qsys:REAL; VirA_Ssys:REAL; VirA_PFsys:REAL; VirA_fsys:REAL; VirBActiveEnergyConsumed_kWh:REAL; VirBReactiveEnergyConsumed_kVARh:REAL; VirBTotalActivePower_kW:REAL; VirBTotalReactivePower_kVAR:REAL; VirBTotalAparentPower_kVA:REAL; VirBTotalPowerFactor:REAL; VirBAveragePhaseToPhase_V:REAL; VirBAveragePhaseToNeutral_V:REAL; VirBAverageCurrent_A:REAL; VirBFrequency_Hz:REAL; VirBActivePowerPhaseA_kW:REAL; VirBActivePowerPhaseB_kW:REAL; VirBActivePowerPhaseC_kW:REAL; (* VirBPowerFactorPhaseA:REAL; VirBPowerFactorPhaseB:REAL; VirBPowerFactorPhaseC:REAL;*) VirBVoltageBetweenPhaseAB_V:REAL; VirBVoltageBetweenPhaseBC_V:REAL; VirBVoltageBetweenPhaseCA_V:REAL; VirBVoltageBetweenPhaseAN_V:REAL; VirBVoltageBetweenPhaseBN_V:REAL; VirBVoltageBetweenPhaseCN_V:REAL; VirBCurrentInPhaseA_A:REAL; VirBCurrentInPhaseB_A:REAL; VirBCurrentInPhaseC_A:REAL; (* VirBNeutralCurrent_A:REAL; VirBAlarms:INT;*) VirBPowerFactorSys:REAL; VirBAparentPowerPhaseA:REAL; VirBAparentPowerPhaseB:REAL; VirBAparentPowerPhaseC:REAL; VirBReactivePowerPhaseA:REAL; VirBReactivePowerPhaseB:REAL; VirBReactivePowerPhaseC:REAL; VirB_Usys:REAL; VirB_Isys:REAL; VirB_Psys:REAL; VirB_Qsys:REAL; VirB_Ssys:REAL; VirB_PFsys:REAL; VirB_fsys:REAL; END_STRUCT END_TYPE },BW eMUPSdataStructure$K $KDomes\bi;TYPE MUPSdataStructure : STRUCT StatusBaterije:WORD; SteviloIzpadovVhodneLinije:INT; VhodFrekvencaL1:REAL; VhodNapetostL1:REAL; VhodFrekvencaL2:REAL; VhodNapetostL2:REAL; VhodFrekvencaL3:REAL; VhodNapetostL3:REAL; IzhodMocL1:REAL; IzhodMocL2:REAL; IzhodMocL3:REAL; EstimatedMinutesRemaining:REAL; EstimatedChargeRemaining:REAL; NapetostBaterije:REAL; TemperaturaBaterije:REAL; UnitStatus:INT; OutputStatus:INT; InverterStatus:INT; Napaka:BOOL; AlarmSlabaBaterija:BOOL; AlarmOnBattery:BOOL; AlarmLowBattery:BOOL; AlarmDepletedBattery:BOOL; AlarmTemperaturaIzvenToleranc:BOOL; AlarmStanjeVhodaIzvenToleranc:BOOL; AlarmStanjeIzhodaIzvenToleranc:BOOL; AlarmIzhodPreobremenjen:BOOL; AlarmOnBypass:BOOL; AlarmBypassBad:BOOL; AlarmIzhodOffKotZahtevano:BOOL; AlarmUPSOffKotZahtevano:BOOL; AlarmChargerFailed:BOOL; AlarmUPSIzhodOff:BOOL; AlarmUPSSystemOff:BOOL; AlarmNapakaNaVentilatorju:BOOL; AlarmNapakaNaVarovalki:BOOL; AlarmSplosnaNapaka:BOOL; AlarmDiagnosticTestFailed:BOOL; AlarmCommunicationsLost:BOOL; AlarmAwaitingPower:BOOL; AlarmShutdownPending:BOOL; AlarmShutdownImminent:BOOL; AlarmTestInProgres:BOOL; AlarmInverterError:BOOL; StatusEcomodeAktiven:BOOL; StatusStopOperation:BOOL; StatusInverterIsOn:BOOL; END_STRUCT END_TYPE |,Xt7 UPS_Gal3000$K $K0,ro=FSEXTYPE UPS_Gal3000 : STRUCT Skupna_napaka:BOOL; NapakaNaVarovalkah:BOOL; StatusBaterije:BYTE; UPS_coupled:BOOL; UPS_error:BOOL; (*MajorUPSfault OR UnitGeneralAlarm *) UPS_in_backup:BOOL; BatteryLowWarning:BOOL; DeviceVentilationFault:BOOL; ManualBypassSwitch:BOOL; BatteryCompInProgress:BOOL; BatteryTempOutOfToler:BOOL; BatteryFuseFault:BOOL; BatteryCircuitBreaker:BOOL; RectifierOn:BOOL; Mains1VoltOutOfToler:BOOL; RectifierThermOverload:BOOL; MaintenancePosition:BOOL; Mains2Overload:BOOL; Mains2VoltOutOfToler:BOOL; BypassInFreeFrequency:BOOL; ChargerGeneralFault:BOOL; BatteryChargedState:BOOL; InverterOverload:BOOL; InverterThermalOverload:BOOL; OutputThermalOverload:BOOL; OutputOverload:BOOL; InverterFuseFault:BOOL; OutputInShortCircuit:BOOL; I1output:INT; I2output:INT; I3output:INT; U12mains1:INT; U23mains1:INT; U31mains1:INT; U1N_inverter:INT; U2N_inverter:INT; U3N_inverter:INT; U12mains2:INT; U23mains2:INT; U31mains2:INT; U1N_output:INT; U2N_output:INT; U3N_output:INT; U_battery:INT; OutputActivePower1:INT; OutputActivePower2:INT; OutputActivePower3:INT; OutputLoadLevel:INT; InverterFrequency:INT; OutputFrequency:INT; BatteryBackupTime:INT; BatteryChargingLevel:INT; BatteryRechargeDuration:INT; END_STRUCT END_TYPE,BW6yAnalizator_Razlika_Energije$K $KFUNCTION_BLOCK Analizator_Razlika_Energije VAR_INPUT END_VAR VAR_OUTPUT END_VAR VAR RTRIG_Racun:R_TRIG; Even_Dan:R_TRIG; Even_Teden:R_TRIG; Even_Mesec:R_TRIG; Indeks_RACUN:INT; END_VAR RTRIG_Racun(CLK:= (DateTime.PLC_Sekunda=30 OR DateTime.PLC_Sekunda=0)); IF RTRIG_Racun.Q THEN FOR Indeks_RACUN:=1 TO 1 DO IF NOT(Circ[Indeks_RACUN].RazEner_D_TEMP>Circ[Indeks_RACUN].DelovnaEnergija) THEN Circ[Indeks_RACUN].RazEner_D:= Circ[Indeks_RACUN].RazEner_D+Circ[Indeks_RACUN].DelovnaEnergija - Circ[Indeks_RACUN].RazEner_D_TEMP; Circ[Indeks_RACUN].RazEner_D_TEMP:=Circ[Indeks_RACUN].DelovnaEnergija; ELSE Circ[Indeks_RACUN].RazEner_D_TEMP:=Circ[Indeks_RACUN].DelovnaEnergija; END_IF END_FOR END_IF IF RTRIG_Racun.Q THEN FOR Indeks_RACUN:=1 TO 1 DO IF NOT(Circ[Indeks_RACUN].RazEner_T_TEMP>Circ[Indeks_RACUN].DelovnaEnergija) THEN Circ[Indeks_RACUN].RazEner_T := Circ[Indeks_RACUN].RazEner_T+Circ[Indeks_RACUN].DelovnaEnergija - Circ[Indeks_RACUN].RazEner_T_TEMP; Circ[Indeks_RACUN].RazEner_T_TEMP := Circ[Indeks_RACUN].DelovnaEnergija; ELSE Circ[Indeks_RACUN].RazEner_T_TEMP:=Circ[Indeks_RACUN].DelovnaEnergija; END_IF END_FOR END_IF IF RTRIG_Racun.Q=TRUE THEN FOR Indeks_RACUN:=1 TO 1 DO IF NOT(Circ[Indeks_RACUN].RazEner_M_TEMP>Circ[Indeks_RACUN].DelovnaEnergija) THEN Circ[Indeks_RACUN].RazEner_M :=Circ[Indeks_RACUN].RazEner_M + Circ[Indeks_RACUN].DelovnaEnergija - Circ[Indeks_RACUN].RazEner_M_TEMP; Circ[Indeks_RACUN].RazEner_M_TEMP := Circ[Indeks_RACUN].DelovnaEnergija; ELSE Circ[Indeks_RACUN].RazEner_M_TEMP := Circ[Indeks_RACUN].DelovnaEnergija; END_IF END_FOR END_IF Even_Dan(CLK:= (DateTime.PLC_Sekunda=0 AND DateTime.PLC_Minuta=0 AND DateTime.PLC_Ura=0)); (* Dnevni event*) Even_Teden(CLK:= (DateTime.PLC_Sekunda=0 AND DateTime.PLC_Minuta=0 AND DateTime.PLC_Ura=0 AND DateTime.PLC_DanVTednu=1)); (* Tedenski event*) Even_Mesec(CLK:= (DateTime.PLC_Sekunda=0 AND DateTime.PLC_Minuta=0 AND DateTime.PLC_Ura=0 AND DateTime.Dan=1)); (* Mesecni event*) IF Even_Dan.Q=TRUE THEN FOR Indeks_RACUN:=1 TO 1 DO Circ[Indeks_RACUN].RazEner_D_SCADA:=Circ[Indeks_RACUN].RazEner_D; END_FOR FOR Indeks_RACUN:=1 TO 1 DO Circ[Indeks_RACUN].RazEner_D:=0; END_FOR Circ_Vpis_Dnevne_energija_scada1:=TRUE; Circ_Vpis_Dnevne_energija_scada2:=TRUE; END_IF IF Even_Teden.Q=TRUE THEN FOR Indeks_RACUN:=1 TO 1 DO Circ[Indeks_RACUN].RazEner_T_SCADA:=Circ[Indeks_RACUN].RazEner_T; END_FOR FOR Indeks_RACUN:=1 TO 1 DO Circ[Indeks_RACUN].RazEner_T:=0; END_FOR Circ_Vpis_Tedenska_energija_scada1:=TRUE; Circ_Vpis_Tedenska_energija_scada2:=TRUE; END_IF IF Even_Mesec.Q=TRUE THEN FOR Indeks_RACUN:=1 TO 1 DO Circ[Indeks_RACUN].RazEner_M_SCADA:=Circ[Indeks_RACUN].RazEner_M; END_FOR FOR Indeks_RACUN:=1 TO 1 DO Circ[Indeks_RACUN].RazEner_M:=0; END_FOR Circ_Vpis_Mesecna_energija_scada1:=TRUE; Circ_Vpis_Mesecna_energija_scada2:=TRUE; END_IF y,BW!y CircutorValue$K $KOI@[FUNCTION CircutorValue : REAL VAR_INPUT RegHI:WORD; RegLO:WORD; END_VAR VAR END_VARIF (RegHI AND 32768)=32768 THEN (* negativna vrednost *) CircutorValue:=-DWORD_TO_REAL(((RegHI*65536+RegLO) XOR (65536*65535+65535))+1); ELSE (* pozitivna vrednost *) CircutorValue:= INT_TO_REAL(RegHI)*65536+INT_TO_REAL(RegLO); END_IF;,?KlimeVklopi@ TIMsec1TIMsec2TIMmin1TIMmin2n Izbira_klime klima1_napaka napaka_klima1 klima2_napaka napaka_klima2 CasKlimeVklop$K $K1(ovPROGRAM KlimeVklopi VAR Izbira_klime:USINT; CasKlimeVklop:TON; n:USINT:=1; TIMsec1:TON; TIMsec2:TON; TIMmin1:USINT; TIMmin2:USINT; klima1_napaka:TOF; napaka_klima1: BOOL; klima2_napaka:TOF; napaka_klima2: BOOL; END_VAR(*Izracun povprecnih temperatur*) TempPovp234:=REAL_TO_INT((TIA2_temp_s + TIA3_temp_s + TIA4_temp_s)/3); TempPovp56:=REAL_TO_INT((TIA5_temp_s + TIA6_temp_s)/2); (*Obratovalne ure klim*) TIMsec1(IN:=(KLIMAT1_delovanje AND NOT TIMsec1.Q) , PT:=T#60s ); IF TIMsec1.Q THEN TIMmin1:=TIMmin1+1; END_IF; IF TIMmin1 >= 60 THEN TIMmin1:=0; K1obrat_ure:=K1obrat_ure+1; K1_obr_u_skupno:=K1_obr_u_skupno+1; IF K1_obr_u_skupno > 65500 THEN K1_obr_u_skupno:=0; END_IF; END_IF; TIMsec2(IN:=(KLIMAT2_delovanje AND NOT TIMsec2.Q) , PT:=T#60s ); IF TIMsec2.Q THEN TIMmin2:=TIMmin2+1; END_IF; IF TIMmin2 >= 60 THEN TIMmin2:=0; K2obrat_ure:=K2obrat_ure+1; K2_obr_u_skupno:=K2_obr_u_skupno+1; IF K2_obr_u_skupno > 65500 THEN K2_obr_u_skupno:=0; END_IF; END_IF; CasKlimeVklop(IN:=(KlimeAVTO AND (KLIMAT1_delovanje OR KLIMAT2_delovanje) AND ((TempPovp234 > TempZaVklopKlim1 * 10) OR (TempPovp56 > TempZaVklopKlim2 * 10))) , PT:=T#3s); klima1_napaka(IN:=N_KLIMAT1_napaka , PT:=T#5s , Q=>napaka_klima1); klima2_napaka(IN:=N_KLIMAT2_napaka , PT:=T#5s , Q=>napaka_klima2); IF KlimeAVTO THEN (*Delovanje klim avtomatsko*) KLIMAT1_R_zakleni:=TRUE; KLIMAT2_R_zakleni:=TRUE; K1_vklop_izklop_poteka:=FALSE; K2_vklop_izklop_poteka:=FALSE; KLIMAT1_vklop_delovanjaR:=KLIMAT1_vklop_delovanja; KLIMAT2_vklop_delovanjaR:=KLIMAT2_vklop_delovanja; CASE n OF 1: IF (KLIMAT1_vklop_delovanja AND KLIMAT2_vklop_delovanja) THEN (* z vklopom v AVTO se vklopi ali ze deluje vedno tudi ena klima *) IF K2_obr_u_skupno > K1_obr_u_skupno THEN KLIMAT2_vklop_delovanja:=FALSE; ELSE KLIMAT1_vklop_delovanja:=FALSE; END_IF; n:=2; ELSIF (NOT KLIMAT1_vklop_delovanja AND NOT KLIMAT2_vklop_delovanja AND NOT napaka_klima1 AND NOT napaka_klima2) THEN IF K2_obr_u_skupno < K1_obr_u_skupno THEN KLIMAT2_vklop_delovanja:=TRUE; ELSE KLIMAT1_vklop_delovanja:=TRUE; END_IF; n:=2; ELSIF (KLIMAT1_vklop_delovanja OR KLIMAT2_vklop_delovanja) THEN n:=2; ELSIF NOT napaka_klima1 THEN KLIMAT1_vklop_delovanja:=TRUE; n:=2; ELSIF NOT KLIMAT1_vklop_delovanja AND NOT napaka_klima2 THEN KLIMAT2_vklop_delovanja:=TRUE; n:=2; ELSIF napaka_klima1 AND napaka_klima2 THEN KLIMAT1_vklop_delovanja:=TRUE; n:=2; ELSE n:=1; END_IF; 2: IF (napaka_klima1 AND KLIMAT1_vklop_delovanja) OR (napaka_klima2 AND KLIMAT2_vklop_delovanja) THEN KLIMAT1_vklop_delovanja:=TRUE; KLIMAT2_vklop_delovanja:=TRUE; n:=2; ELSIF KLIMAT1_vklop_delovanja AND KLIMAT2_vklop_delovanja AND NOT napaka_klima1 AND NOT napaka_klima2 AND (TempPovp234 <= (TempZaVklopKlim1*10 - TempHistereza*10)) AND (TempPovp56 <= (TempZaVklopKlim2*10 - TempHistereza*10)) THEN IF K1_obr_u_skupno > K2_obr_u_skupno THEN KLIMAT1_vklop_delovanja:=FALSE; ELSE KLIMAT2_vklop_delovanja:=FALSE; END_IF; n:=2; ELSIF KLIMAT1_vklop_delovanja AND KLIMAT1_delovanje AND NOT KLIMAT2_vklop_delovanja AND NOT KLIMAT2_delovanje AND NOT napaka_klima1 THEN n:=3; ELSIF KLIMAT2_vklop_delovanja AND KLIMAT2_delovanje AND NOT KLIMAT1_vklop_delovanja AND NOT KLIMAT1_delovanje AND NOT napaka_klima2 THEN n:=3; ELSIF NOT KLIMAT1_vklop_delovanja AND NOT KLIMAT2_vklop_delovanja THEN n:=1; END_IF; 3: IF (napaka_klima1 AND KLIMAT1_vklop_delovanja) OR (napaka_klima2 AND KLIMAT2_vklop_delovanja) THEN n:=2; ELSIF CasKlimeVklop.Q THEN (* vklop druge klime zaradi previsokih ene ali obeh povprecnih temperatur *) IF (KLIMAT1_delovanje AND NOT KLIMAT2_delovanje) THEN KLIMAT2_vklop_delovanja:=TRUE; izbira_klime:= 2; n:=4; ELSIF (KLIMAT2_delovanje AND NOT KLIMAT1_delovanje) THEN KLIMAT1_vklop_delovanja:=TRUE; izbira_klime:= 1; n:=4; ELSE n:=2; END_IF; ELSE (* preverjanje ce so obratovalne ure presezene*) n:=5; END_IF; 4: IF NOT(KLIMAT1_vklop_delovanja AND KLIMAT2_vklop_delovanja) OR napaka_klima1 OR napaka_klima2 THEN n:=2; ELSIF (TempPovp234 <= (TempZaVklopKlim1*10 - TempHistereza*10)) AND (TempPovp56 <= (TempZaVklopKlim2*10 - TempHistereza*10)) THEN (* izklop druge klime po doseeni. el. temp.*) IF (izbira_klime = 1) THEN KLIMAT1_vklop_delovanja:=FALSE; ELSIF (izbira_klime = 2) THEN KLIMAT2_vklop_delovanja:=FALSE; END_IF; izbira_klime:= 0; n:=3; END_IF; 5: IF (KLIMAT1_delovanje AND (K1obrat_ure > KlimaIzklopObrUre) AND NOT napaka_klima2 ) THEN (* preklop med klimama glede na doseene obratovalne ure*) KLIMAT1_vklop_delovanja:=FALSE; K1obrat_ure:=0; KLIMAT2_vklop_delovanja:=TRUE; ELSIF (KLIMAT2_delovanje AND (K2obrat_ure > KlimaIzklopObrUre) AND NOT napaka_klima1) THEN KLIMAT2_vklop_delovanja:=FALSE; K2obrat_ure:=0; KLIMAT1_vklop_delovanja:=TRUE; END_IF; n:=2; END_CASE; ELSE (* delovanje klim rocno *) n:=1; IF KLIMAT1_vklop_delovanjaR AND NOT KLIMAT1_delovanje THEN KLIMAT1_vklop_delovanja:=TRUE; K1_vklop_izklop_poteka:=TRUE; KLIMAT1_R_zakleni:=TRUE; (* za prikaz na panelu*) ELSIF NOT KLIMAT1_vklop_delovanjaR AND KLIMAT1_delovanje THEN KLIMAT1_vklop_delovanja:=FALSE; K1_vklop_izklop_poteka:=TRUE; KLIMAT1_R_zakleni:=TRUE; ELSE K1_vklop_izklop_poteka:=FALSE; KLIMAT1_R_zakleni:=FALSE; END_IF; IF KLIMAT2_vklop_delovanjaR AND NOT KLIMAT2_delovanje THEN KLIMAT2_vklop_delovanja:=TRUE; K2_vklop_izklop_poteka:=TRUE; KLIMAT2_R_zakleni:=TRUE; ELSIF NOT KLIMAT2_vklop_delovanjaR AND KLIMAT2_delovanje THEN KLIMAT2_vklop_delovanja:=FALSE; K2_vklop_izklop_poteka:=TRUE; KLIMAT2_R_zakleni:=TRUE; ELSE K2_vklop_izklop_poteka:=FALSE; KLIMAT2_R_zakleni:=FALSE; END_IF; END_IF; Klime_vklopi_n:=n; ,Xtdmod_Read$K $KPROGRAM mod_Read VAR END_VAR(*Branje BOOL*) (**) mind_bool[0]:=AlarmGenUPS_A_V23; mind_bool[1]:=AlarmGenUPS_V23; mind_bool[2]:=AlarmGenUPS_V25; mind_bool[3]:=AlarmPMM1VirATokPrevisok; mind_bool[4]:=AlarmPMM1VirATokVisok; mind_bool[5]:=AlarmPMM1VirBTokPrevisok; mind_bool[6]:=AlarmPMM1VirBTokVisok; mind_bool[7]:=AlarmPMM2x17nad80[10]; mind_bool[8]:=AlarmPMM2x17nad80[11]; mind_bool[9]:=AlarmPMM2x17nad80[12]; mind_bool[10]:=AlarmPMM2x17nad80[13]; mind_bool[11]:=AlarmPMM2x17nad80[14]; mind_bool[12]:=AlarmPMM2x17nad80[15]; mind_bool[13]:=AlarmPMM2x17nad80[16]; mind_bool[14]:=AlarmPMM2x17nad80[17]; mind_bool[15]:=AlarmPMM2x17nad80[18]; mind_bool[16]:=AlarmPMM2x17nad80[19]; mind_bool[17]:=AlarmPMM2x17nad80[1]; mind_bool[18]:=AlarmPMM2x17nad80[20]; mind_bool[19]:=AlarmPMM2x17nad80[21]; mind_bool[20]:=AlarmPMM2x17nad80[22]; mind_bool[21]:=AlarmPMM2x17nad80[23]; mind_bool[22]:=AlarmPMM2x17nad80[24]; mind_bool[23]:=AlarmPMM2x17nad80[25]; mind_bool[24]:=AlarmPMM2x17nad80[26]; mind_bool[25]:=AlarmPMM2x17nad80[27]; mind_bool[26]:=AlarmPMM2x17nad80[28]; mind_bool[27]:=AlarmPMM2x17nad80[29]; mind_bool[28]:=AlarmPMM2x17nad80[2]; mind_bool[29]:=AlarmPMM2x17nad80[30]; mind_bool[30]:=AlarmPMM2x17nad80[31]; mind_bool[31]:=AlarmPMM2x17nad80[32]; mind_bool[32]:=AlarmPMM2x17nad80[33]; mind_bool[33]:=AlarmPMM2x17nad80[34]; mind_bool[34]:=AlarmPMM2x17nad80[35]; mind_bool[35]:=AlarmPMM2x17nad80[36]; mind_bool[36]:=AlarmPMM2x17nad80[37]; mind_bool[37]:=AlarmPMM2x17nad80[38]; mind_bool[38]:=AlarmPMM2x17nad80[39]; mind_bool[39]:=AlarmPMM2x17nad80[3]; mind_bool[40]:=AlarmPMM2x17nad80[40]; mind_bool[41]:=AlarmPMM2x17nad80[41]; mind_bool[42]:=AlarmPMM2x17nad80[42]; mind_bool[43]:=AlarmPMM2x17nad80[4]; mind_bool[44]:=AlarmPMM2x17nad80[5]; mind_bool[45]:=AlarmPMM2x17nad80[6]; mind_bool[46]:=AlarmPMM2x17nad80[7]; mind_bool[47]:=AlarmPMM2x17nad80[8]; mind_bool[48]:=AlarmPMM2x17nad80[9]; mind_bool[49]:=ComError; mind_bool[50]:=ComSCADA; mind_bool[51]:=ComSCADA1; mind_bool[52]:=ComSCADA2; mind_bool[53]:=ComSCADA3; mind_bool[54]:=ErrComCirc[1]; mind_bool[55]:=ErrComKlima[1]; mind_bool[56]:=ErrComKlima[2]; mind_bool[57]:=ErrComPMM[1]; mind_bool[58]:=ErrComPort2; mind_bool[59]:=ErrComPort3; mind_bool[60]:=ErrComPort4; mind_bool[61]:=ErrComUPS[1]; mind_bool[62]:=ErrComUPS[2]; mind_bool[63]:=ErrComUPSMGE[1]; mind_bool[64]:=ErrorComCirc[1].Error; mind_bool[65]:=ErrorComKlima[1].Error; mind_bool[66]:=ErrorComKlima[2].Error; mind_bool[67]:=ErrorComPMM[1].Error; mind_bool[68]:=ErrorComUPS[1].Error; mind_bool[69]:=ErrorComUPS[2].Error; mind_bool[70]:=ErrorComUPSMGE[1].Error; mind_bool[71]:=F1_1_zascita_ok; mind_bool[72]:=K1_SkupnaNapaka; mind_bool[73]:=K1AlarmPozara; mind_bool[74]:=K1KlimaZdruzenAlarm; mind_bool[75]:=K1NiPretoka; mind_bool[76]:=K1OkvaraRototerma; mind_bool[77]:=K1OkvaraVlazNap; mind_bool[78]:=K1PreobMotCrpGr; mind_bool[79]:=K1PreobMotVent; mind_bool[80]:=K1ProtizamrzZascAkt; mind_bool[81]:=K1ZamasenostFiltra; mind_bool[82]:=K2_SkupnaNapaka; mind_bool[83]:=K2AlarmPozara; mind_bool[84]:=K2KlimaZdruzenAlarm; mind_bool[85]:=K2NiPretoka; mind_bool[86]:=K2OkvaraRototerma; mind_bool[87]:=K2OkvaraVlazNap; mind_bool[88]:=K2PreobMotCrpGr; mind_bool[89]:=K2PreobMotVent; mind_bool[90]:=K2ProtizamrzZascAkt; mind_bool[91]:=K2ZamasenostFiltra; mind_bool[92]:=K3_deluje; mind_bool[93]:=K3_SkupnaNapaka; mind_bool[94]:=Klima1_izkljucena; mind_bool[95]:=KLIMA1_kke_pogon; mind_bool[96]:=KLIMA1_krm_nap_ok; mind_bool[97]:=Klima2_izkljucena; mind_bool[98]:=Klima3_izkljucena; mind_bool[99]:=Klima[1].Alarm_pozar; mind_bool[100]:=Klima[1].DelVentHit1; mind_bool[101]:=Klima[1].DelVentHit2; mind_bool[102]:=Klima[1].Ni_pretoka; mind_bool[103]:=Klima[1].OkvaraRototerm; mind_bool[104]:=Klima[1].OkvaraVlazNap; mind_bool[105]:=Klima[1].PreobMotCrpGrel; mind_bool[106]:=Klima[1].PreobMotVent; mind_bool[107]:=Klima[1].ProtizamrzZascAktivna; mind_bool[108]:=Klima[1].VklopRegKlimata; mind_bool[109]:=Klima[1].ZamasenostFiltra; mind_bool[110]:=Klima[1].ZdruzAlarmA; mind_bool[111]:=Klima[1].ZdruzAlarmB; mind_bool[112]:=Klima[2].Alarm_pozar; mind_bool[113]:=Klima[2].DelVentHit1; mind_bool[114]:=Klima[2].DelVentHit2; mind_bool[115]:=Klima[2].Ni_pretoka; mind_bool[116]:=Klima[2].OkvaraRototerm; mind_bool[117]:=Klima[2].OkvaraVlazNap; mind_bool[118]:=Klima[2].PreobMotCrpGrel; mind_bool[119]:=Klima[2].PreobMotVent; mind_bool[120]:=Klima[2].ProtizamrzZascAktivna; mind_bool[121]:=Klima[2].VklopRegKlimata; mind_bool[122]:=Klima[2].ZamasenostFiltra; mind_bool[123]:=Klima[2].ZdruzAlarmA; mind_bool[124]:=Klima[2].ZdruzAlarmB; mind_bool[125]:=KLIMA_m1_delovanje; mind_bool[126]:=KLIMA_m1_napaka; mind_bool[127]:=KLIMA_m2_delovanje; mind_bool[128]:=KLIMA_m2_napaka; mind_bool[129]:=KLIMAT1_delovanje; mind_bool[130]:=KLIMAT1_napaka; mind_bool[131]:=KLIMAT1_vklop_delovanja; mind_bool[132]:=KLIMAT2_delovanje; mind_bool[133]:=KLIMAT2_napaka; mind_bool[134]:=KLIMAT2_vklop_delovanja; mind_bool[135]:=KlimeAVTO; mind_bool[136]:=N_F1_1_zascita_ok; mind_bool[137]:=N_KLIMA1_krm_nap_ok; mind_bool[138]:=N_KLIMAT1_napaka; mind_bool[139]:=N_KLIMAT2_napaka; mind_bool[140]:=N_Q12_izpad; mind_bool[141]:=N_UPS_A_V23_delovanje; mind_bool[142]:=N_UPS_A_V23_napaka; mind_bool[143]:=N_UPS_V23_delovanje; mind_bool[144]:=N_UPS_V23_napaka; mind_bool[145]:=N_UPS_V25_delovanje; mind_bool[146]:=N_UPS_V25_napaka; mind_bool[147]:=N_VLAZILEC1_napaka; mind_bool[148]:=N_VLAZILEC2_napaka; mind_bool[149]:=napaka_kom_panel; mind_bool[150]:=napaka_kom_scada; mind_bool[151]:=napaka_kom_scada2; mind_bool[152]:=NapakaSenzorSkupno; mind_bool[153]:=NapakaSenzorVlagaHIA1; mind_bool[154]:=NapakaSenzorVlagaHIA2; mind_bool[155]:=NapakaSenzorVlagaHIA3; mind_bool[156]:=NapakaSenzorVlagaHIA4; mind_bool[157]:=NapakaSenzorVlagaHIA5; mind_bool[158]:=NapakaSenzorVlagaHIA6; mind_bool[159]:=NapakaSenzorVlagaHIA7; mind_bool[160]:=NapakaTSTempTIA1; mind_bool[161]:=NapakaTSTempTIA2; mind_bool[162]:=NapakaTSTempTIA3; mind_bool[163]:=NapakaTSTempTIA4; mind_bool[164]:=NapakaTSTempTIA5; mind_bool[165]:=NapakaTSTempTIA6; mind_bool[166]:=NapakaTSTempTIA7; mind_bool[167]:=OpozoriloPMM2x17med60in80[10]; mind_bool[168]:=OpozoriloPMM2x17med60in80[11]; mind_bool[169]:=OpozoriloPMM2x17med60in80[12]; mind_bool[170]:=OpozoriloPMM2x17med60in80[13]; mind_bool[171]:=OpozoriloPMM2x17med60in80[14]; mind_bool[172]:=OpozoriloPMM2x17med60in80[15]; mind_bool[173]:=OpozoriloPMM2x17med60in80[16]; mind_bool[174]:=OpozoriloPMM2x17med60in80[17]; mind_bool[175]:=OpozoriloPMM2x17med60in80[18]; mind_bool[176]:=OpozoriloPMM2x17med60in80[19]; mind_bool[177]:=OpozoriloPMM2x17med60in80[1]; mind_bool[178]:=OpozoriloPMM2x17med60in80[20]; mind_bool[179]:=OpozoriloPMM2x17med60in80[21]; mind_bool[180]:=OpozoriloPMM2x17med60in80[22]; mind_bool[181]:=OpozoriloPMM2x17med60in80[23]; mind_bool[182]:=OpozoriloPMM2x17med60in80[24]; mind_bool[183]:=OpozoriloPMM2x17med60in80[25]; mind_bool[184]:=OpozoriloPMM2x17med60in80[26]; mind_bool[185]:=OpozoriloPMM2x17med60in80[27]; mind_bool[186]:=OpozoriloPMM2x17med60in80[28]; mind_bool[187]:=OpozoriloPMM2x17med60in80[29]; mind_bool[188]:=OpozoriloPMM2x17med60in80[2]; mind_bool[189]:=OpozoriloPMM2x17med60in80[30]; mind_bool[190]:=OpozoriloPMM2x17med60in80[31]; mind_bool[191]:=OpozoriloPMM2x17med60in80[32]; mind_bool[192]:=OpozoriloPMM2x17med60in80[33]; mind_bool[193]:=OpozoriloPMM2x17med60in80[34]; mind_bool[194]:=OpozoriloPMM2x17med60in80[35]; mind_bool[195]:=OpozoriloPMM2x17med60in80[36]; mind_bool[196]:=OpozoriloPMM2x17med60in80[37]; mind_bool[197]:=OpozoriloPMM2x17med60in80[38]; mind_bool[198]:=OpozoriloPMM2x17med60in80[39]; mind_bool[199]:=OpozoriloPMM2x17med60in80[3]; mind_bool[200]:=OpozoriloPMM2x17med60in80[40]; mind_bool[201]:=OpozoriloPMM2x17med60in80[41]; mind_bool[202]:=OpozoriloPMM2x17med60in80[42]; mind_bool[203]:=OpozoriloPMM2x17med60in80[4]; mind_bool[204]:=OpozoriloPMM2x17med60in80[5]; mind_bool[205]:=OpozoriloPMM2x17med60in80[6]; mind_bool[206]:=OpozoriloPMM2x17med60in80[7]; mind_bool[207]:=OpozoriloPMM2x17med60in80[8]; mind_bool[208]:=OpozoriloPMM2x17med60in80[9]; mind_bool[209]:=PMM1OverCurrentBetw[1]; mind_bool[210]:=PMM1OverCurrentBetw[2]; mind_bool[211]:=PMM1OverCurrentBetw[3]; mind_bool[212]:=PMM1OverCurrentOver[1]; mind_bool[213]:=PMM1OverCurrentOver[2]; mind_bool[214]:=PMM1OverCurrentOver[3]; mind_bool[215]:=PrevisokaTemp; mind_bool[216]:=Q0_izkljuceno; mind_bool[217]:=Q0_vkljuceno; mind_bool[218]:=Q12_izkljuceno; mind_bool[219]:=Q12_izpad; mind_bool[220]:=Q12_vkljuceno; mind_bool[221]:=razlitjeLAH1; mind_bool[222]:=razlitjeLAH2; mind_bool[223]:=razlitjeLAH3; mind_bool[224]:=razlitjeLAH4; mind_bool[225]:=SetDateTime; mind_bool[226]:=SetDateTimeDemand; mind_bool[227]:=SetDateTimeError; mind_bool[228]:=SetDateTimeFinished; mind_bool[229]:=SkupneNapakeNaprav_PMM17VirBVirA; mind_bool[230]:=SlabaBaterijaPLC; mind_bool[231]:=TempPovp234Previs; mind_bool[232]:=TempPovp56Previs; mind_bool[233]:=TIA1_previs_temp; mind_bool[234]:=TIA2_previs_temp; mind_bool[235]:=TIA3_previs_temp; mind_bool[236]:=TIA4_previs_temp; mind_bool[237]:=TIA5_previs_temp; mind_bool[238]:=TIA6_previs_temp; mind_bool[239]:=TIA7_previs_temp; mind_bool[240]:=UPS1Errors[10]; mind_bool[241]:=UPS1Errors[11]; mind_bool[242]:=UPS1Errors[12]; mind_bool[243]:=UPS1Errors[13]; mind_bool[244]:=UPS1Errors[14]; mind_bool[245]:=UPS1Errors[15]; mind_bool[246]:=UPS1Errors[16]; mind_bool[247]:=UPS1Errors[17]; mind_bool[248]:=UPS1Errors[18]; mind_bool[249]:=UPS1Errors[19]; mind_bool[250]:=UPS1Errors[1]; mind_bool[251]:=UPS1Errors[20]; mind_bool[252]:=UPS1Errors[21]; mind_bool[253]:=UPS1Errors[22]; mind_bool[254]:=UPS1Errors[23]; mind_bool[255]:=UPS1Errors[24]; mind_bool[256]:=UPS1Errors[25]; mind_bool[257]:=UPS1Errors[2]; mind_bool[258]:=UPS1Errors[3]; mind_bool[259]:=UPS1Errors[4]; mind_bool[260]:=UPS1Errors[5]; mind_bool[261]:=UPS1Errors[6]; mind_bool[262]:=UPS1Errors[7]; mind_bool[263]:=UPS1Errors[8]; mind_bool[264]:=UPS1Errors[9]; mind_bool[265]:=UPS2Errors[10]; mind_bool[266]:=UPS2Errors[11]; mind_bool[267]:=UPS2Errors[12]; mind_bool[268]:=UPS2Errors[13]; mind_bool[269]:=UPS2Errors[14]; mind_bool[270]:=UPS2Errors[15]; mind_bool[271]:=UPS2Errors[16]; mind_bool[272]:=UPS2Errors[17]; mind_bool[273]:=UPS2Errors[18]; mind_bool[274]:=UPS2Errors[19]; mind_bool[275]:=UPS2Errors[1]; mind_bool[276]:=UPS2Errors[20]; mind_bool[277]:=UPS2Errors[21]; mind_bool[278]:=UPS2Errors[22]; mind_bool[279]:=UPS2Errors[23]; mind_bool[280]:=UPS2Errors[24]; mind_bool[281]:=UPS2Errors[25]; mind_bool[282]:=UPS2Errors[2]; mind_bool[283]:=UPS2Errors[3]; mind_bool[284]:=UPS2Errors[4]; mind_bool[285]:=UPS2Errors[5]; mind_bool[286]:=UPS2Errors[6]; mind_bool[287]:=UPS2Errors[7]; mind_bool[288]:=UPS2Errors[8]; mind_bool[289]:=UPS2Errors[9]; mind_bool[290]:=UPS[1].AlarmAwaitingPower; mind_bool[291]:=UPS[1].AlarmBypassBad; mind_bool[292]:=UPS[1].AlarmChargerFailed; mind_bool[293]:=UPS[1].AlarmCommunicationsLost; mind_bool[294]:=UPS[1].AlarmDepletedBattery; mind_bool[295]:=UPS[1].AlarmDiagnosticTestFailed; mind_bool[296]:=UPS[1].AlarmInverterError; mind_bool[297]:=UPS[1].AlarmIzhodOffKotZahtevano; mind_bool[298]:=UPS[1].AlarmIzhodPreobremenjen; mind_bool[299]:=UPS[1].AlarmLowBattery; mind_bool[300]:=UPS[1].AlarmNapakaNaVarovalki; mind_bool[301]:=UPS[1].AlarmNapakaNaVentilatorju; mind_bool[302]:=UPS[1].AlarmOnBattery; mind_bool[303]:=UPS[1].AlarmOnBypass; mind_bool[304]:=UPS[1].AlarmShutdownImminent; mind_bool[305]:=UPS[1].AlarmShutdownPending; mind_bool[306]:=UPS[1].AlarmSlabaBaterija; mind_bool[307]:=UPS[1].AlarmSplosnaNapaka; mind_bool[308]:=UPS[1].AlarmStanjeIzhodaIzvenToleranc; mind_bool[309]:=UPS[1].AlarmStanjeVhodaIzvenToleranc; mind_bool[310]:=UPS[1].AlarmTemperaturaIzvenToleranc; mind_bool[311]:=UPS[1].AlarmTestInProgres; mind_bool[312]:=UPS[1].AlarmUPSIzhodOff; mind_bool[313]:=UPS[1].AlarmUPSOffKotZahtevano; mind_bool[314]:=UPS[1].AlarmUPSSystemOff; mind_bool[315]:=UPS[1].Napaka; mind_bool[316]:=UPS[1].StatusEcomodeAktiven; mind_bool[317]:=UPS[1].StatusInverterIsOn; mind_bool[318]:=UPS[1].StatusStopOperation; mind_bool[319]:=UPS[2].AlarmAwaitingPower; mind_bool[320]:=UPS[2].AlarmBypassBad; mind_bool[321]:=UPS[2].AlarmChargerFailed; mind_bool[322]:=UPS[2].AlarmCommunicationsLost; mind_bool[323]:=UPS[2].AlarmDepletedBattery; mind_bool[324]:=UPS[2].AlarmDiagnosticTestFailed; mind_bool[325]:=UPS[2].AlarmInverterError; mind_bool[326]:=UPS[2].AlarmIzhodOffKotZahtevano; mind_bool[327]:=UPS[2].AlarmIzhodPreobremenjen; mind_bool[328]:=UPS[2].AlarmLowBattery; mind_bool[329]:=UPS[2].AlarmNapakaNaVarovalki; mind_bool[330]:=UPS[2].AlarmNapakaNaVentilatorju; mind_bool[331]:=UPS[2].AlarmOnBattery; mind_bool[332]:=UPS[2].AlarmOnBypass; mind_bool[333]:=UPS[2].AlarmShutdownImminent; mind_bool[334]:=UPS[2].AlarmShutdownPending; mind_bool[335]:=UPS[2].AlarmSlabaBaterija; mind_bool[336]:=UPS[2].AlarmSplosnaNapaka; mind_bool[337]:=UPS[2].AlarmStanjeIzhodaIzvenToleranc; mind_bool[338]:=UPS[2].AlarmStanjeVhodaIzvenToleranc; mind_bool[339]:=UPS[2].AlarmTemperaturaIzvenToleranc; mind_bool[340]:=UPS[2].AlarmTestInProgres; mind_bool[341]:=UPS[2].AlarmUPSIzhodOff; mind_bool[342]:=UPS[2].AlarmUPSOffKotZahtevano; mind_bool[343]:=UPS[2].AlarmUPSSystemOff; mind_bool[344]:=UPS[2].Napaka; mind_bool[345]:=UPS[2].StatusEcomodeAktiven; mind_bool[346]:=UPS[2].StatusInverterIsOn; mind_bool[347]:=UPS[2].StatusStopOperation; mind_bool[348]:=UPS_A_V23_delovanje; mind_bool[349]:=UPS_A_V23_napaka; mind_bool[350]:=ups_alarm; mind_bool[351]:=ups_baterijski_nac; mind_bool[352]:=UPS_MGE[1].BatteryChargedState; mind_bool[353]:=UPS_MGE[1].BatteryCircuitBreaker; mind_bool[354]:=UPS_MGE[1].BatteryCompInProgress; mind_bool[355]:=UPS_MGE[1].BatteryFuseFault; mind_bool[356]:=UPS_MGE[1].BatteryLowWarning; mind_bool[357]:=UPS_MGE[1].BatteryTempOutOfToler; mind_bool[358]:=UPS_MGE[1].BypassInFreeFrequency; mind_bool[359]:=UPS_MGE[1].ChargerGeneralFault; mind_bool[360]:=UPS_MGE[1].DeviceVentilationFault; mind_bool[361]:=UPS_MGE[1].InverterFuseFault; mind_bool[362]:=UPS_MGE[1].InverterOverload; mind_bool[363]:=UPS_MGE[1].InverterThermalOverload; mind_bool[364]:=UPS_MGE[1].Mains1VoltOutOfToler; mind_bool[365]:=UPS_MGE[1].Mains2Overload; mind_bool[366]:=UPS_MGE[1].Mains2VoltOutOfToler; mind_bool[367]:=UPS_MGE[1].MaintenancePosition; mind_bool[368]:=UPS_MGE[1].ManualBypassSwitch; mind_bool[369]:=UPS_MGE[1].NapakaNaVarovalkah; mind_bool[370]:=UPS_MGE[1].OutputInShortCircuit; mind_bool[371]:=UPS_MGE[1].OutputOverload; mind_bool[372]:=UPS_MGE[1].OutputThermalOverload; mind_bool[373]:=UPS_MGE[1].RectifierOn; mind_bool[374]:=UPS_MGE[1].RectifierThermOverload; mind_bool[375]:=UPS_MGE[1].Skupna_napaka; mind_bool[376]:=UPS_MGE[1].UPS_coupled; mind_bool[377]:=UPS_MGE[1].UPS_error; mind_bool[378]:=UPS_MGE[1].UPS_in_backup; mind_bool[379]:=ups_polnjenje; mind_bool[380]:=UPS_V23_delovanje; mind_bool[381]:=UPS_V23_napaka; mind_bool[382]:=UPS_V25_delovanje; mind_bool[383]:=UPS_V25_napaka; mind_bool[384]:=UPSMGEErrors[10]; mind_bool[385]:=UPSMGEErrors[11]; mind_bool[386]:=UPSMGEErrors[12]; mind_bool[387]:=UPSMGEErrors[13]; mind_bool[388]:=UPSMGEErrors[14]; mind_bool[389]:=UPSMGEErrors[15]; mind_bool[390]:=UPSMGEErrors[16]; mind_bool[391]:=UPSMGEErrors[17]; mind_bool[392]:=UPSMGEErrors[1]; mind_bool[393]:=UPSMGEErrors[2]; mind_bool[394]:=UPSMGEErrors[3]; mind_bool[395]:=UPSMGEErrors[4]; mind_bool[396]:=UPSMGEErrors[5]; mind_bool[397]:=UPSMGEErrors[6]; mind_bool[398]:=UPSMGEErrors[7]; mind_bool[399]:=UPSMGEErrors[8]; mind_bool[400]:=UPSMGEErrors[9]; mind_bool[401]:=UserLoggedIn; mind_bool[402]:=VLAZILEC1_delovanje; mind_bool[403]:=VLAZILEC1_napaka; mind_bool[404]:=VLAZILEC2_delovanje; mind_bool[405]:=VLAZILEC2_napaka; mind_bool[406]:=XVH_AlarmOn; mind_bool[407]:=XVH_enopolna_napaka; mind_bool[408]:=KLIMAT1_vklop_delovanjaR; mind_bool[409]:=KLIMAT2_vklop_delovanjaR; mind_bool[410]:=KLIMAT1_R_zakleni; mind_bool[411]:=KLIMAT2_R_zakleni; mind_bool[412]:=K1_vklop_izklop_poteka; mind_bool[413]:=K2_vklop_izklop_poteka; mind_bool[414]:=N_KlimeAVTO; mind_bool[415]:=UPS[3].AlarmAwaitingPower; mind_bool[416]:=UPS[3].AlarmBypassBad; mind_bool[417]:=UPS[3].AlarmChargerFailed; mind_bool[418]:=UPS[3].AlarmCommunicationsLost; mind_bool[419]:=UPS[3].AlarmDepletedBattery; mind_bool[420]:=UPS[3].AlarmDiagnosticTestFailed; mind_bool[421]:=UPS[3].AlarmInverterError; mind_bool[422]:=UPS[3].AlarmIzhodOffKotZahtevano; mind_bool[423]:=UPS[3].AlarmIzhodPreobremenjen; mind_bool[424]:=UPS[3].AlarmLowBattery; mind_bool[425]:=UPS[3].AlarmNapakaNaVarovalki; mind_bool[426]:=UPS[3].AlarmNapakaNaVentilatorju; mind_bool[427]:=UPS[3].AlarmOnBattery; mind_bool[428]:=UPS[3].AlarmOnBypass; mind_bool[429]:=UPS[3].AlarmShutdownImminent; mind_bool[430]:=UPS[3].AlarmShutdownPending; mind_bool[431]:=UPS[3].AlarmSlabaBaterija; mind_bool[432]:=UPS[3].AlarmSplosnaNapaka; mind_bool[433]:=UPS[3].AlarmStanjeIzhodaIzvenToleranc; mind_bool[434]:=UPS[3].AlarmStanjeVhodaIzvenToleranc; mind_bool[435]:=UPS[3].AlarmTemperaturaIzvenToleranc; mind_bool[436]:=UPS[3].AlarmTestInProgres; mind_bool[437]:=UPS[3].AlarmUPSIzhodOff; mind_bool[438]:=UPS[3].AlarmUPSOffKotZahtevano; mind_bool[439]:=UPS[3].AlarmUPSSystemOff; mind_bool[440]:=UPS[3].Napaka; mind_bool[441]:=UPS[3].StatusEcomodeAktiven; mind_bool[442]:=UPS[3].StatusInverterIsOn; mind_bool[443]:=UPS[3].StatusStopOperation; mind_bool[444]:=ErrComUPS[3]; mind_bool[445]:=GSM_PozCent_napaka; mind_bool[446]:=GSM_PozSenzor_okvara; mind_bool[447]:=GSM_Gasenje_alarm; mind_bool[448]:=AGR_PozCent_napaka; mind_bool[449]:=AGR_PozSenzor_okvara; mind_bool[450]:=AGR_Gasenje_alarm; mind_bool[451]:=Circ_Vpis_Dnevne_energija_scada1; mind_bool[452]:=Circ_Vpis_Dnevne_energija_scada2; mind_bool[453]:=Circ_Vpis_Tedenska_energija_scada1; mind_bool[454]:=Circ_Vpis_Tedenska_energija_scada2; mind_bool[455]:=Circ_Vpis_Mesecna_energija_scada1; mind_bool[456]:=Circ_Vpis_Mesecna_energija_scada2; mind_bool[457]:=PozarnaCentrala_skupno; (*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]:=ErrorComCirc[1].Code[10]; mind[8]:=ErrorComCirc[1].Code[11]; mind[9]:=ErrorComCirc[1].Code[12]; mind[10]:=ErrorComCirc[1].Code[13]; mind[11]:=ErrorComCirc[1].Code[14]; mind[12]:=ErrorComCirc[1].Code[15]; mind[13]:=ErrorComCirc[1].Code[1]; mind[14]:=ErrorComCirc[1].Code[2]; mind[15]:=ErrorComCirc[1].Code[3]; mind[16]:=ErrorComCirc[1].Code[4]; mind[17]:=ErrorComCirc[1].Code[5]; mind[18]:=ErrorComCirc[1].Code[6]; mind[19]:=ErrorComCirc[1].Code[7]; mind[20]:=ErrorComCirc[1].Code[8]; mind[21]:=ErrorComCirc[1].Code[9]; mind[22]:=ErrorComCirc[1].Status; mind[23]:=ErrorComKlima[1].Code[10]; mind[24]:=ErrorComKlima[1].Code[11]; mind[25]:=ErrorComKlima[1].Code[12]; mind[26]:=ErrorComKlima[1].Code[13]; mind[27]:=ErrorComKlima[1].Code[14]; mind[28]:=ErrorComKlima[1].Code[15]; mind[29]:=ErrorComKlima[1].Code[1]; mind[30]:=ErrorComKlima[1].Code[2]; mind[31]:=ErrorComKlima[1].Code[3]; mind[32]:=ErrorComKlima[1].Code[4]; mind[33]:=ErrorComKlima[1].Code[5]; mind[34]:=ErrorComKlima[1].Code[6]; mind[35]:=ErrorComKlima[1].Code[7]; mind[36]:=ErrorComKlima[1].Code[8]; mind[37]:=ErrorComKlima[1].Code[9]; mind[38]:=ErrorComKlima[1].Status; mind[39]:=ErrorComKlima[2].Code[10]; mind[40]:=ErrorComKlima[2].Code[11]; mind[41]:=ErrorComKlima[2].Code[12]; mind[42]:=ErrorComKlima[2].Code[13]; mind[43]:=ErrorComKlima[2].Code[14]; mind[44]:=ErrorComKlima[2].Code[15]; mind[45]:=ErrorComKlima[2].Code[1]; mind[46]:=ErrorComKlima[2].Code[2]; mind[47]:=ErrorComKlima[2].Code[3]; mind[48]:=ErrorComKlima[2].Code[4]; mind[49]:=ErrorComKlima[2].Code[5]; mind[50]:=ErrorComKlima[2].Code[6]; mind[51]:=ErrorComKlima[2].Code[7]; mind[52]:=ErrorComKlima[2].Code[8]; mind[53]:=ErrorComKlima[2].Code[9]; mind[54]:=ErrorComKlima[2].Status; mind[55]:=ErrorComPMM[1].Code[10]; mind[56]:=ErrorComPMM[1].Code[11]; mind[57]:=ErrorComPMM[1].Code[12]; mind[58]:=ErrorComPMM[1].Code[13]; mind[59]:=ErrorComPMM[1].Code[14]; mind[60]:=ErrorComPMM[1].Code[15]; mind[61]:=ErrorComPMM[1].Code[1]; mind[62]:=ErrorComPMM[1].Code[2]; mind[63]:=ErrorComPMM[1].Code[3]; mind[64]:=ErrorComPMM[1].Code[4]; mind[65]:=ErrorComPMM[1].Code[5]; mind[66]:=ErrorComPMM[1].Code[6]; mind[67]:=ErrorComPMM[1].Code[7]; mind[68]:=ErrorComPMM[1].Code[8]; mind[69]:=ErrorComPMM[1].Code[9]; mind[70]:=ErrorComPMM[1].Status; mind[71]:=ErrorComUPS[1].Code[10]; mind[72]:=ErrorComUPS[1].Code[11]; mind[73]:=ErrorComUPS[1].Code[12]; mind[74]:=ErrorComUPS[1].Code[13]; mind[75]:=ErrorComUPS[1].Code[14]; mind[76]:=ErrorComUPS[1].Code[15]; mind[77]:=ErrorComUPS[1].Code[1]; mind[78]:=ErrorComUPS[1].Code[2]; mind[79]:=ErrorComUPS[1].Code[3]; mind[80]:=ErrorComUPS[1].Code[4]; mind[81]:=ErrorComUPS[1].Code[5]; mind[82]:=ErrorComUPS[1].Code[6]; mind[83]:=ErrorComUPS[1].Code[7]; mind[84]:=ErrorComUPS[1].Code[8]; mind[85]:=ErrorComUPS[1].Code[9]; mind[86]:=ErrorComUPS[1].Status; mind[87]:=ErrorComUPS[2].Code[10]; mind[88]:=ErrorComUPS[2].Code[11]; mind[89]:=ErrorComUPS[2].Code[12]; mind[90]:=ErrorComUPS[2].Code[13]; mind[91]:=ErrorComUPS[2].Code[14]; mind[92]:=ErrorComUPS[2].Code[15]; mind[93]:=ErrorComUPS[2].Code[1]; mind[94]:=ErrorComUPS[2].Code[2]; mind[95]:=ErrorComUPS[2].Code[3]; mind[96]:=ErrorComUPS[2].Code[4]; mind[97]:=ErrorComUPS[2].Code[5]; mind[98]:=ErrorComUPS[2].Code[6]; mind[99]:=ErrorComUPS[2].Code[7]; mind[100]:=ErrorComUPS[2].Code[8]; mind[101]:=ErrorComUPS[2].Code[9]; mind[102]:=ErrorComUPS[2].Status; mind[103]:=ErrorComUPSMGE[1].Code[10]; mind[104]:=ErrorComUPSMGE[1].Code[11]; mind[105]:=ErrorComUPSMGE[1].Code[12]; mind[106]:=ErrorComUPSMGE[1].Code[13]; mind[107]:=ErrorComUPSMGE[1].Code[14]; mind[108]:=ErrorComUPSMGE[1].Code[15]; mind[109]:=ErrorComUPSMGE[1].Code[1]; mind[110]:=ErrorComUPSMGE[1].Code[2]; mind[111]:=ErrorComUPSMGE[1].Code[3]; mind[112]:=ErrorComUPSMGE[1].Code[4]; mind[113]:=ErrorComUPSMGE[1].Code[5]; mind[114]:=ErrorComUPSMGE[1].Code[6]; mind[115]:=ErrorComUPSMGE[1].Code[7]; mind[116]:=ErrorComUPSMGE[1].Code[8]; mind[117]:=ErrorComUPSMGE[1].Code[9]; mind[118]:=ErrorComUPSMGE[1].Status; mind[119]:=HIA1_vlaga_s; mind[120]:=HIA2_vlaga_s; mind[121]:=HIA3_vlaga_s; mind[122]:=HIA4_vlaga_s; mind[123]:=HIA5_vlaga_s; mind[124]:=HIA6_vlaga_s; mind[125]:=HIA7_vlaga_s; mind[126]:=Klima[1].Analog_izh_mesanje; mind[127]:=Klima[1].Analog_izh_rekuperator; mind[128]:=Klima[1].Analog_izh_VentGrelnika; mind[129]:=Klima[1].Analog_izh_VentHlajenja; mind[130]:=Klima[1].Dejanska_zel_temp; mind[131]:=Klima[1].Hitrost_del_vent_disp; mind[132]:=Klima[1].Max_vpih; mind[133]:=Klima[1].Min_vpih; mind[134]:=Klima[1].Obrat_ure_Vent_h1; mind[135]:=Klima[1].Obrat_ure_Vent_h2; mind[136]:=Klima[1].Pol_komp_konec; mind[137]:=Klima[1].Pol_komp_sprem_zel_vr; mind[138]:=Klima[1].Pol_komp_zacetek; mind[139]:=Klima[1].PreklopHitDelVent; mind[140]:=Klima[1].Protizamrz_zascita; mind[141]:=Klima[1].Rezim_delovanja; mind[142]:=Klima[1].Temperatura_dovoda; mind[143]:=Klima[1].Temperatura_prostora; mind[144]:=Klima[1].TempPredPloscnimRekup; mind[145]:=Klima[1].TempZaPloscnimRekup; mind[146]:=Klima[1].Vlaga_v_prostoru; mind[147]:=Klima[1].VlagaVstopZrakaProstor; mind[148]:=Klima[1].Zel_temp_eko_gretja; mind[149]:=Klima[1].Zel_temp_eko_hlajenja; mind[150]:=Klima[1].Zel_temp_komf_gretja; mind[151]:=Klima[1].Zel_temp_komf_hlajenja; mind[152]:=Klima[1].Zim_komp_konec; mind[153]:=Klima[1].Zim_komp_sprem_zel_vr; mind[154]:=Klima[1].Zim_komp_zacetek; mind[155]:=Klima[1].ZimKompMinVpihKonec; mind[156]:=Klima[1].ZimKompMinVpihZac; mind[157]:=Klima[1].ZkompMinVpihSpremZelVr; mind[158]:=Klima[1].Zunanja_temp; mind[159]:=Klima[2].Analog_izh_mesanje; mind[160]:=Klima[2].Analog_izh_rekuperator; mind[161]:=Klima[2].Analog_izh_VentGrelnika; mind[162]:=Klima[2].Analog_izh_VentHlajenja; mind[163]:=Klima[2].Dejanska_zel_temp; mind[164]:=Klima[2].Hitrost_del_vent_disp; mind[165]:=Klima[2].Max_vpih; mind[166]:=Klima[2].Min_vpih; mind[167]:=Klima[2].Obrat_ure_Vent_h1; mind[168]:=Klima[2].Obrat_ure_Vent_h2; mind[169]:=Klima[2].Pol_komp_konec; mind[170]:=Klima[2].Pol_komp_sprem_zel_vr; mind[171]:=Klima[2].Pol_komp_zacetek; mind[172]:=Klima[2].PreklopHitDelVent; mind[173]:=Klima[2].Protizamrz_zascita; mind[174]:=Klima[2].Rezim_delovanja; mind[175]:=Klima[2].Temperatura_dovoda; mind[176]:=Klima[2].Temperatura_prostora; mind[177]:=Klima[2].TempPredPloscnimRekup; mind[178]:=Klima[2].TempZaPloscnimRekup; mind[179]:=Klima[2].Vlaga_v_prostoru; mind[180]:=Klima[2].VlagaVstopZrakaProstor; mind[181]:=Klima[2].Zel_temp_eko_gretja; mind[182]:=Klima[2].Zel_temp_eko_hlajenja; mind[183]:=Klima[2].Zel_temp_komf_gretja; mind[184]:=Klima[2].Zel_temp_komf_hlajenja; mind[185]:=Klima[2].Zim_komp_konec; mind[186]:=Klima[2].Zim_komp_sprem_zel_vr; mind[187]:=Klima[2].Zim_komp_zacetek; mind[188]:=Klima[2].ZimKompMinVpihKonec; mind[189]:=Klima[2].ZimKompMinVpihZac; mind[190]:=Klima[2].ZkompMinVpihSpremZelVr; mind[191]:=Klima[2].Zunanja_temp; mind[192]:=KlimaIzklopObrUre; mind[193]:=PMM[1].AlarmPhase[1].GlobalAlarmReg; mind[194]:=PMM[1].AlarmPhase[2].GlobalAlarmReg; mind[195]:=PMM[1].AlarmPhase[3].GlobalAlarmReg; mind[196]:=Q12stanje; mind[197]:=TempHistereza; mind[198]:=TempPovp234; mind[199]:=TempPovp234Alarm; mind[200]:=TempPovp56; mind[201]:=TempPovp56Alarm; mind[202]:=TempZaVklopKlim1; mind[203]:=TempZaVklopKlim2; mind[204]:=TIA1_alarm; mind[205]:=TIA1_temp_s; mind[206]:=TIA2_alarm; mind[207]:=TIA2_temp_s; mind[208]:=TIA3_alarm; mind[209]:=TIA3_temp_s; mind[210]:=TIA4_alarm; mind[211]:=TIA4_temp_s; mind[212]:=TIA5_alarm; mind[213]:=TIA5_temp_s; mind[214]:=TIA6_alarm; mind[215]:=TIA6_temp_s; mind[216]:=TIA7_alarm; mind[217]:=TIA7_temp_s; mind[218]:=UPS[1].InverterStatus; mind[219]:=UPS[1].OutputStatus; mind[220]:=UPS[1].SteviloIzpadovVhodneLinije; mind[221]:=UPS[1].UnitStatus; mind[222]:=UPS[2].InverterStatus; mind[223]:=UPS[2].OutputStatus; mind[224]:=UPS[2].SteviloIzpadovVhodneLinije; mind[225]:=UPS[2].UnitStatus; mind[226]:=UPS_MGE[1].BatteryBackupTime; mind[227]:=UPS_MGE[1].BatteryChargingLevel; mind[228]:=UPS_MGE[1].BatteryRechargeDuration; mind[229]:=UPS_MGE[1].I1output; mind[230]:=UPS_MGE[1].I2output; mind[231]:=UPS_MGE[1].I3output; mind[232]:=UPS_MGE[1].InverterFrequency; mind[233]:=UPS_MGE[1].OutputActivePower1; mind[234]:=UPS_MGE[1].OutputActivePower2; mind[235]:=UPS_MGE[1].OutputActivePower3; mind[236]:=UPS_MGE[1].OutputFrequency; mind[237]:=UPS_MGE[1].OutputLoadLevel; mind[238]:=UPS_MGE[1].StatusBaterije; mind[239]:=UPS_MGE[1].U12mains1; mind[240]:=UPS_MGE[1].U12mains2; mind[241]:=UPS_MGE[1].U1N_inverter; mind[242]:=UPS_MGE[1].U1N_output; mind[243]:=UPS_MGE[1].U23mains1; mind[244]:=UPS_MGE[1].U23mains2; mind[245]:=UPS_MGE[1].U2N_inverter; mind[246]:=UPS_MGE[1].U2N_output; mind[247]:=UPS_MGE[1].U31mains1; mind[248]:=UPS_MGE[1].U31mains2; mind[249]:=UPS_MGE[1].U3N_inverter; mind[250]:=UPS_MGE[1].U3N_output; mind[251]:=UPS_MGE[1].U_battery; mind[252]:=UserCurrentLevel; mind[253]:=XVH_UPSstatus; mind[254]:=UPS[3].InverterStatus; mind[255]:=UPS[3].OutputStatus; mind[256]:=UPS[3].SteviloIzpadovVhodneLinije; mind[257]:=UPS[3].UnitStatus; (*Branje UINT*) (**) mind[6000]:=kom_nast_cas_izpada; mind[6001]:=PMM[1].AlarmPhase[1].C01_16_60to80; mind[6002]:=PMM[1].AlarmPhase[1].C01_16_over80; mind[6003]:=PMM[1].AlarmPhase[1].C17_32_60to80; mind[6004]:=PMM[1].AlarmPhase[1].C17_32_over80; mind[6005]:=PMM[1].AlarmPhase[1].C33_42_60to80; mind[6006]:=PMM[1].AlarmPhase[1].C33_42_over80; mind[6007]:=PMM[1].AlarmPhase[2].C01_16_60to80; mind[6008]:=PMM[1].AlarmPhase[2].C01_16_over80; mind[6009]:=PMM[1].AlarmPhase[2].C17_32_60to80; mind[6010]:=PMM[1].AlarmPhase[2].C17_32_over80; mind[6011]:=PMM[1].AlarmPhase[2].C33_42_60to80; mind[6012]:=PMM[1].AlarmPhase[2].C33_42_over80; mind[6013]:=PMM[1].AlarmPhase[3].C01_16_60to80; mind[6014]:=PMM[1].AlarmPhase[3].C01_16_over80; mind[6015]:=PMM[1].AlarmPhase[3].C17_32_60to80; mind[6016]:=PMM[1].AlarmPhase[3].C17_32_over80; mind[6017]:=PMM[1].AlarmPhase[3].C33_42_60to80; mind[6018]:=PMM[1].AlarmPhase[3].C33_42_over80; mind[6019]:=UPS[1].StatusBaterije; mind[6020]:=UPS[2].StatusBaterije; mind[6021]:=K1_obr_u_skupno; mind[6022]:=K2_obr_u_skupno; mind[6023]:=UPS[3].StatusBaterije; (*Branje LONG*) (**) (*Branje REAL*) (**) Read_Real(rVar:=Circ[1].CosFi_III,lo:=4000,hi:=4001); Read_Real(rVar:=Circ[1].DelovnaEnergija,lo:=4002,hi:=4003); Read_Real(rVar:=Circ[1].DelovnaMoc_III,lo:=4004,hi:=4005); Read_Real(rVar:=Circ[1].DelovnaMoc_L1,lo:=4006,hi:=4007); Read_Real(rVar:=Circ[1].DelovnaMoc_L2,lo:=4008,hi:=4009); Read_Real(rVar:=Circ[1].DelovnaMoc_L3,lo:=4010,hi:=4011); Read_Real(rVar:=Circ[1].Frekvenca_L1,lo:=4012,hi:=4013); Read_Real(rVar:=Circ[1].InduktivnaEnergija,lo:=4014,hi:=4015); Read_Real(rVar:=Circ[1].InduktivnaMoc_III,lo:=4016,hi:=4017); Read_Real(rVar:=Circ[1].JalovaMoc_L1,lo:=4018,hi:=4019); Read_Real(rVar:=Circ[1].JalovaMoc_L2,lo:=4020,hi:=4021); Read_Real(rVar:=Circ[1].JalovaMoc_L3,lo:=4022,hi:=4023); Read_Real(rVar:=Circ[1].KapacitivnaEnergija,lo:=4024,hi:=4025); Read_Real(rVar:=Circ[1].KapacitivnaMoc_III,lo:=4026,hi:=4027); Read_Real(rVar:=Circ[1].MaximumDemand,lo:=4028,hi:=4029); Read_Real(rVar:=Circ[1].Napetost_L1_L2,lo:=4030,hi:=4031); Read_Real(rVar:=Circ[1].Napetost_L1_N,lo:=4032,hi:=4033); Read_Real(rVar:=Circ[1].Napetost_L2_L3,lo:=4034,hi:=4035); Read_Real(rVar:=Circ[1].Napetost_L2_N,lo:=4036,hi:=4037); Read_Real(rVar:=Circ[1].Napetost_L3_L1,lo:=4038,hi:=4039); Read_Real(rVar:=Circ[1].Napetost_L3_N,lo:=4040,hi:=4041); Read_Real(rVar:=Circ[1].NavideznaMoc_III,lo:=4042,hi:=4043); Read_Real(rVar:=Circ[1].NicelniTok,lo:=4044,hi:=4045); Read_Real(rVar:=Circ[1].PowerFactor_III,lo:=4046,hi:=4047); Read_Real(rVar:=Circ[1].PowerFactor_L1,lo:=4048,hi:=4049); Read_Real(rVar:=Circ[1].PowerFactor_L2,lo:=4050,hi:=4051); Read_Real(rVar:=Circ[1].PowerFactor_L3,lo:=4052,hi:=4053); Read_Real(rVar:=Circ[1].THDI_L1,lo:=4054,hi:=4055); Read_Real(rVar:=Circ[1].THDI_L2,lo:=4056,hi:=4057); Read_Real(rVar:=Circ[1].THDI_L3,lo:=4058,hi:=4059); Read_Real(rVar:=Circ[1].THDV_L1,lo:=4060,hi:=4061); Read_Real(rVar:=Circ[1].THDV_L2,lo:=4062,hi:=4063); Read_Real(rVar:=Circ[1].THDV_L3,lo:=4064,hi:=4065); Read_Real(rVar:=Circ[1].Tok_L1,lo:=4066,hi:=4067); Read_Real(rVar:=Circ[1].Tok_L2,lo:=4068,hi:=4069); Read_Real(rVar:=Circ[1].Tok_L3,lo:=4070,hi:=4071); Read_Real(rVar:=Circ[1].TokPovprecje_III,lo:=4072,hi:=4073); Read_Real(rVar:=PMM[1].ActiveEnergyConsumed_kWh,lo:=4074,hi:=4075); Read_Real(rVar:=PMM[1].ActivePowerPhaseA_kW,lo:=4076,hi:=4077); Read_Real(rVar:=PMM[1].ActivePowerPhaseB_kW,lo:=4078,hi:=4079); Read_Real(rVar:=PMM[1].ActivePowerPhaseC_kW,lo:=4080,hi:=4081); Read_Real(rVar:=PMM[1].AparentPowerPhaseA,lo:=4082,hi:=4083); Read_Real(rVar:=PMM[1].AparentPowerPhaseB,lo:=4084,hi:=4085); Read_Real(rVar:=PMM[1].AparentPowerPhaseC,lo:=4086,hi:=4087); Read_Real(rVar:=PMM[1].AverageCurrent_A,lo:=4088,hi:=4089); Read_Real(rVar:=PMM[1].AveragePhaseToNeutral_V,lo:=4090,hi:=4091); Read_Real(rVar:=PMM[1].AveragePhaseToPhase_V,lo:=4092,hi:=4093); Read_Real(rVar:=PMM[1].CurrentInPhaseA_A,lo:=4094,hi:=4095); Read_Real(rVar:=PMM[1].CurrentInPhaseB_A,lo:=4096,hi:=4097); Read_Real(rVar:=PMM[1].CurrentInPhaseC_A,lo:=4098,hi:=4099); Read_Real(rVar:=PMM[1].Frequency_Hz,lo:=4100,hi:=4101); Read_Real(rVar:=PMM[1].Phase[1].Current[10],lo:=4102,hi:=4103); Read_Real(rVar:=PMM[1].Phase[1].Current[11],lo:=4104,hi:=4105); Read_Real(rVar:=PMM[1].Phase[1].Current[12],lo:=4106,hi:=4107); Read_Real(rVar:=PMM[1].Phase[1].Current[13],lo:=4108,hi:=4109); Read_Real(rVar:=PMM[1].Phase[1].Current[14],lo:=4110,hi:=4111); Read_Real(rVar:=PMM[1].Phase[1].Current[15],lo:=4112,hi:=4113); Read_Real(rVar:=PMM[1].Phase[1].Current[16],lo:=4114,hi:=4115); Read_Real(rVar:=PMM[1].Phase[1].Current[17],lo:=4116,hi:=4117); Read_Real(rVar:=PMM[1].Phase[1].Current[18],lo:=4118,hi:=4119); Read_Real(rVar:=PMM[1].Phase[1].Current[19],lo:=4120,hi:=4121); Read_Real(rVar:=PMM[1].Phase[1].Current[1],lo:=4122,hi:=4123); Read_Real(rVar:=PMM[1].Phase[1].Current[20],lo:=4124,hi:=4125); Read_Real(rVar:=PMM[1].Phase[1].Current[21],lo:=4126,hi:=4127); Read_Real(rVar:=PMM[1].Phase[1].Current[22],lo:=4128,hi:=4129); Read_Real(rVar:=PMM[1].Phase[1].Current[23],lo:=4130,hi:=4131); Read_Real(rVar:=PMM[1].Phase[1].Current[24],lo:=4132,hi:=4133); Read_Real(rVar:=PMM[1].Phase[1].Current[25],lo:=4134,hi:=4135); Read_Real(rVar:=PMM[1].Phase[1].Current[26],lo:=4136,hi:=4137); Read_Real(rVar:=PMM[1].Phase[1].Current[27],lo:=4138,hi:=4139); Read_Real(rVar:=PMM[1].Phase[1].Current[28],lo:=4140,hi:=4141); Read_Real(rVar:=PMM[1].Phase[1].Current[29],lo:=4142,hi:=4143); Read_Real(rVar:=PMM[1].Phase[1].Current[2],lo:=4144,hi:=4145); Read_Real(rVar:=PMM[1].Phase[1].Current[30],lo:=4146,hi:=4147); Read_Real(rVar:=PMM[1].Phase[1].Current[31],lo:=4148,hi:=4149); Read_Real(rVar:=PMM[1].Phase[1].Current[32],lo:=4150,hi:=4151); Read_Real(rVar:=PMM[1].Phase[1].Current[33],lo:=4152,hi:=4153); Read_Real(rVar:=PMM[1].Phase[1].Current[34],lo:=4154,hi:=4155); Read_Real(rVar:=PMM[1].Phase[1].Current[35],lo:=4156,hi:=4157); Read_Real(rVar:=PMM[1].Phase[1].Current[36],lo:=4158,hi:=4159); Read_Real(rVar:=PMM[1].Phase[1].Current[37],lo:=4160,hi:=4161); Read_Real(rVar:=PMM[1].Phase[1].Current[38],lo:=4162,hi:=4163); Read_Real(rVar:=PMM[1].Phase[1].Current[39],lo:=4164,hi:=4165); Read_Real(rVar:=PMM[1].Phase[1].Current[3],lo:=4166,hi:=4167); Read_Real(rVar:=PMM[1].Phase[1].Current[40],lo:=4168,hi:=4169); Read_Real(rVar:=PMM[1].Phase[1].Current[41],lo:=4170,hi:=4171); Read_Real(rVar:=PMM[1].Phase[1].Current[42],lo:=4172,hi:=4173); Read_Real(rVar:=PMM[1].Phase[1].Current[4],lo:=4174,hi:=4175); Read_Real(rVar:=PMM[1].Phase[1].Current[5],lo:=4176,hi:=4177); Read_Real(rVar:=PMM[1].Phase[1].Current[6],lo:=4178,hi:=4179); Read_Real(rVar:=PMM[1].Phase[1].Current[7],lo:=4180,hi:=4181); Read_Real(rVar:=PMM[1].Phase[1].Current[8],lo:=4182,hi:=4183); Read_Real(rVar:=PMM[1].Phase[1].Current[9],lo:=4184,hi:=4185); Read_Real(rVar:=PMM[1].Phase[2].Current[10],lo:=4186,hi:=4187); Read_Real(rVar:=PMM[1].Phase[2].Current[11],lo:=4188,hi:=4189); Read_Real(rVar:=PMM[1].Phase[2].Current[12],lo:=4190,hi:=4191); Read_Real(rVar:=PMM[1].Phase[2].Current[13],lo:=4192,hi:=4193); Read_Real(rVar:=PMM[1].Phase[2].Current[14],lo:=4194,hi:=4195); Read_Real(rVar:=PMM[1].Phase[2].Current[15],lo:=4196,hi:=4197); Read_Real(rVar:=PMM[1].Phase[2].Current[16],lo:=4198,hi:=4199); Read_Real(rVar:=PMM[1].Phase[2].Current[17],lo:=4200,hi:=4201); Read_Real(rVar:=PMM[1].Phase[2].Current[18],lo:=4202,hi:=4203); Read_Real(rVar:=PMM[1].Phase[2].Current[19],lo:=4204,hi:=4205); Read_Real(rVar:=PMM[1].Phase[2].Current[1],lo:=4206,hi:=4207); Read_Real(rVar:=PMM[1].Phase[2].Current[20],lo:=4208,hi:=4209); Read_Real(rVar:=PMM[1].Phase[2].Current[21],lo:=4210,hi:=4211); Read_Real(rVar:=PMM[1].Phase[2].Current[22],lo:=4212,hi:=4213); Read_Real(rVar:=PMM[1].Phase[2].Current[23],lo:=4214,hi:=4215); Read_Real(rVar:=PMM[1].Phase[2].Current[24],lo:=4216,hi:=4217); Read_Real(rVar:=PMM[1].Phase[2].Current[25],lo:=4218,hi:=4219); Read_Real(rVar:=PMM[1].Phase[2].Current[26],lo:=4220,hi:=4221); Read_Real(rVar:=PMM[1].Phase[2].Current[27],lo:=4222,hi:=4223); Read_Real(rVar:=PMM[1].Phase[2].Current[28],lo:=4224,hi:=4225); Read_Real(rVar:=PMM[1].Phase[2].Current[29],lo:=4226,hi:=4227); Read_Real(rVar:=PMM[1].Phase[2].Current[2],lo:=4228,hi:=4229); Read_Real(rVar:=PMM[1].Phase[2].Current[30],lo:=4230,hi:=4231); Read_Real(rVar:=PMM[1].Phase[2].Current[31],lo:=4232,hi:=4233); Read_Real(rVar:=PMM[1].Phase[2].Current[32],lo:=4234,hi:=4235); Read_Real(rVar:=PMM[1].Phase[2].Current[33],lo:=4236,hi:=4237); Read_Real(rVar:=PMM[1].Phase[2].Current[34],lo:=4238,hi:=4239); Read_Real(rVar:=PMM[1].Phase[2].Current[35],lo:=4240,hi:=4241); Read_Real(rVar:=PMM[1].Phase[2].Current[36],lo:=4242,hi:=4243); Read_Real(rVar:=PMM[1].Phase[2].Current[37],lo:=4244,hi:=4245); Read_Real(rVar:=PMM[1].Phase[2].Current[38],lo:=4246,hi:=4247); Read_Real(rVar:=PMM[1].Phase[2].Current[39],lo:=4248,hi:=4249); Read_Real(rVar:=PMM[1].Phase[2].Current[3],lo:=4250,hi:=4251); Read_Real(rVar:=PMM[1].Phase[2].Current[40],lo:=4252,hi:=4253); Read_Real(rVar:=PMM[1].Phase[2].Current[41],lo:=4254,hi:=4255); Read_Real(rVar:=PMM[1].Phase[2].Current[42],lo:=4256,hi:=4257); Read_Real(rVar:=PMM[1].Phase[2].Current[4],lo:=4258,hi:=4259); Read_Real(rVar:=PMM[1].Phase[2].Current[5],lo:=4260,hi:=4261); Read_Real(rVar:=PMM[1].Phase[2].Current[6],lo:=4262,hi:=4263); Read_Real(rVar:=PMM[1].Phase[2].Current[7],lo:=4264,hi:=4265); Read_Real(rVar:=PMM[1].Phase[2].Current[8],lo:=4266,hi:=4267); Read_Real(rVar:=PMM[1].Phase[2].Current[9],lo:=4268,hi:=4269); Read_Real(rVar:=PMM[1].Phase[3].Current[10],lo:=4270,hi:=4271); Read_Real(rVar:=PMM[1].Phase[3].Current[11],lo:=4272,hi:=4273); Read_Real(rVar:=PMM[1].Phase[3].Current[12],lo:=4274,hi:=4275); Read_Real(rVar:=PMM[1].Phase[3].Current[13],lo:=4276,hi:=4277); Read_Real(rVar:=PMM[1].Phase[3].Current[14],lo:=4278,hi:=4279); Read_Real(rVar:=PMM[1].Phase[3].Current[15],lo:=4280,hi:=4281); Read_Real(rVar:=PMM[1].Phase[3].Current[16],lo:=4282,hi:=4283); Read_Real(rVar:=PMM[1].Phase[3].Current[17],lo:=4284,hi:=4285); Read_Real(rVar:=PMM[1].Phase[3].Current[18],lo:=4286,hi:=4287); Read_Real(rVar:=PMM[1].Phase[3].Current[19],lo:=4288,hi:=4289); Read_Real(rVar:=PMM[1].Phase[3].Current[1],lo:=4290,hi:=4291); Read_Real(rVar:=PMM[1].Phase[3].Current[20],lo:=4292,hi:=4293); Read_Real(rVar:=PMM[1].Phase[3].Current[21],lo:=4294,hi:=4295); Read_Real(rVar:=PMM[1].Phase[3].Current[22],lo:=4296,hi:=4297); Read_Real(rVar:=PMM[1].Phase[3].Current[23],lo:=4298,hi:=4299); Read_Real(rVar:=PMM[1].Phase[3].Current[24],lo:=4300,hi:=4301); Read_Real(rVar:=PMM[1].Phase[3].Current[25],lo:=4302,hi:=4303); Read_Real(rVar:=PMM[1].Phase[3].Current[26],lo:=4304,hi:=4305); Read_Real(rVar:=PMM[1].Phase[3].Current[27],lo:=4306,hi:=4307); Read_Real(rVar:=PMM[1].Phase[3].Current[28],lo:=4308,hi:=4309); Read_Real(rVar:=PMM[1].Phase[3].Current[29],lo:=4310,hi:=4311); Read_Real(rVar:=PMM[1].Phase[3].Current[2],lo:=4312,hi:=4313); Read_Real(rVar:=PMM[1].Phase[3].Current[30],lo:=4314,hi:=4315); Read_Real(rVar:=PMM[1].Phase[3].Current[31],lo:=4316,hi:=4317); Read_Real(rVar:=PMM[1].Phase[3].Current[32],lo:=4318,hi:=4319); Read_Real(rVar:=PMM[1].Phase[3].Current[33],lo:=4320,hi:=4321); Read_Real(rVar:=PMM[1].Phase[3].Current[34],lo:=4322,hi:=4323); Read_Real(rVar:=PMM[1].Phase[3].Current[35],lo:=4324,hi:=4325); Read_Real(rVar:=PMM[1].Phase[3].Current[36],lo:=4326,hi:=4327); Read_Real(rVar:=PMM[1].Phase[3].Current[37],lo:=4328,hi:=4329); Read_Real(rVar:=PMM[1].Phase[3].Current[38],lo:=4330,hi:=4331); Read_Real(rVar:=PMM[1].Phase[3].Current[39],lo:=4332,hi:=4333); Read_Real(rVar:=PMM[1].Phase[3].Current[3],lo:=4334,hi:=4335); Read_Real(rVar:=PMM[1].Phase[3].Current[40],lo:=4336,hi:=4337); Read_Real(rVar:=PMM[1].Phase[3].Current[41],lo:=4338,hi:=4339); Read_Real(rVar:=PMM[1].Phase[3].Current[42],lo:=4340,hi:=4341); Read_Real(rVar:=PMM[1].Phase[3].Current[4],lo:=4342,hi:=4343); Read_Real(rVar:=PMM[1].Phase[3].Current[5],lo:=4344,hi:=4345); Read_Real(rVar:=PMM[1].Phase[3].Current[6],lo:=4346,hi:=4347); Read_Real(rVar:=PMM[1].Phase[3].Current[7],lo:=4348,hi:=4349); Read_Real(rVar:=PMM[1].Phase[3].Current[8],lo:=4350,hi:=4351); Read_Real(rVar:=PMM[1].Phase[3].Current[9],lo:=4352,hi:=4353); Read_Real(rVar:=PMM[1].PowerFactorSys,lo:=4354,hi:=4355); Read_Real(rVar:=PMM[1].ReactiveEnergyConsumed_kVARh,lo:=4356,hi:=4357); Read_Real(rVar:=PMM[1].ReactivePowerPhaseA,lo:=4358,hi:=4359); Read_Real(rVar:=PMM[1].ReactivePowerPhaseB,lo:=4360,hi:=4361); Read_Real(rVar:=PMM[1].ReactivePowerPhaseC,lo:=4362,hi:=4363); Read_Real(rVar:=PMM[1].TotalActivePower_kW,lo:=4364,hi:=4365); Read_Real(rVar:=PMM[1].TotalAparentPower_kVA,lo:=4366,hi:=4367); Read_Real(rVar:=PMM[1].TotalPowerFactor,lo:=4368,hi:=4369); Read_Real(rVar:=PMM[1].TotalReactivePower_kVAR,lo:=4370,hi:=4371); Read_Real(rVar:=PMM[1].VirA_fsys,lo:=4372,hi:=4373); Read_Real(rVar:=PMM[1].VirA_Isys,lo:=4374,hi:=4375); Read_Real(rVar:=PMM[1].VirA_PFsys,lo:=4376,hi:=4377); Read_Real(rVar:=PMM[1].VirA_Psys,lo:=4378,hi:=4379); Read_Real(rVar:=PMM[1].VirA_Qsys,lo:=4380,hi:=4381); Read_Real(rVar:=PMM[1].VirA_Ssys,lo:=4382,hi:=4383); Read_Real(rVar:=PMM[1].VirA_Usys,lo:=4384,hi:=4385); Read_Real(rVar:=PMM[1].VirB_fsys,lo:=4386,hi:=4387); Read_Real(rVar:=PMM[1].VirB_Isys,lo:=4388,hi:=4389); Read_Real(rVar:=PMM[1].VirB_PFsys,lo:=4390,hi:=4391); Read_Real(rVar:=PMM[1].VirB_Psys,lo:=4392,hi:=4393); Read_Real(rVar:=PMM[1].VirB_Qsys,lo:=4394,hi:=4395); Read_Real(rVar:=PMM[1].VirB_Ssys,lo:=4396,hi:=4397); Read_Real(rVar:=PMM[1].VirB_Usys,lo:=4398,hi:=4399); Read_Real(rVar:=PMM[1].VirBActiveEnergyConsumed_kWh,lo:=4400,hi:=4401); Read_Real(rVar:=PMM[1].VirBActivePowerPhaseA_kW,lo:=4402,hi:=4403); Read_Real(rVar:=PMM[1].VirBActivePowerPhaseB_kW,lo:=4404,hi:=4405); Read_Real(rVar:=PMM[1].VirBActivePowerPhaseC_kW,lo:=4406,hi:=4407); Read_Real(rVar:=PMM[1].VirBAparentPowerPhaseA,lo:=4408,hi:=4409); Read_Real(rVar:=PMM[1].VirBAparentPowerPhaseB,lo:=4410,hi:=4411); Read_Real(rVar:=PMM[1].VirBAparentPowerPhaseC,lo:=4412,hi:=4413); Read_Real(rVar:=PMM[1].VirBAverageCurrent_A,lo:=4414,hi:=4415); Read_Real(rVar:=PMM[1].VirBAveragePhaseToNeutral_V,lo:=4416,hi:=4417); Read_Real(rVar:=PMM[1].VirBAveragePhaseToPhase_V,lo:=4418,hi:=4419); Read_Real(rVar:=PMM[1].VirBCurrentInPhaseA_A,lo:=4420,hi:=4421); Read_Real(rVar:=PMM[1].VirBCurrentInPhaseB_A,lo:=4422,hi:=4423); Read_Real(rVar:=PMM[1].VirBCurrentInPhaseC_A,lo:=4424,hi:=4425); Read_Real(rVar:=PMM[1].VirBFrequency_Hz,lo:=4426,hi:=4427); Read_Real(rVar:=PMM[1].VirBPowerFactorSys,lo:=4428,hi:=4429); Read_Real(rVar:=PMM[1].VirBReactiveEnergyConsumed_kVARh,lo:=4430,hi:=4431); Read_Real(rVar:=PMM[1].VirBReactivePowerPhaseA,lo:=4432,hi:=4433); Read_Real(rVar:=PMM[1].VirBReactivePowerPhaseB,lo:=4434,hi:=4435); Read_Real(rVar:=PMM[1].VirBReactivePowerPhaseC,lo:=4436,hi:=4437); Read_Real(rVar:=PMM[1].VirBTotalActivePower_kW,lo:=4438,hi:=4439); Read_Real(rVar:=PMM[1].VirBTotalAparentPower_kVA,lo:=4440,hi:=4441); Read_Real(rVar:=PMM[1].VirBTotalPowerFactor,lo:=4442,hi:=4443); Read_Real(rVar:=PMM[1].VirBTotalReactivePower_kVAR,lo:=4444,hi:=4445); Read_Real(rVar:=PMM[1].VirBVoltageBetweenPhaseAB_V,lo:=4446,hi:=4447); Read_Real(rVar:=PMM[1].VirBVoltageBetweenPhaseAN_V,lo:=4448,hi:=4449); Read_Real(rVar:=PMM[1].VirBVoltageBetweenPhaseBC_V,lo:=4450,hi:=4451); Read_Real(rVar:=PMM[1].VirBVoltageBetweenPhaseBN_V,lo:=4452,hi:=4453); Read_Real(rVar:=PMM[1].VirBVoltageBetweenPhaseCA_V,lo:=4454,hi:=4455); Read_Real(rVar:=PMM[1].VirBVoltageBetweenPhaseCN_V,lo:=4456,hi:=4457); Read_Real(rVar:=PMM[1].VoltageBetweenPhaseAB_V,lo:=4458,hi:=4459); Read_Real(rVar:=PMM[1].VoltageBetweenPhaseAN_V,lo:=4460,hi:=4461); Read_Real(rVar:=PMM[1].VoltageBetweenPhaseBC_V,lo:=4462,hi:=4463); Read_Real(rVar:=PMM[1].VoltageBetweenPhaseBN_V,lo:=4464,hi:=4465); Read_Real(rVar:=PMM[1].VoltageBetweenPhaseCA_V,lo:=4466,hi:=4467); Read_Real(rVar:=PMM[1].VoltageBetweenPhaseCN_V,lo:=4468,hi:=4469); Read_Real(rVar:=PMMfaza01,lo:=4470,hi:=4471); Read_Real(rVar:=PMMfaza02,lo:=4472,hi:=4473); Read_Real(rVar:=PMMfaza03,lo:=4474,hi:=4475); Read_Real(rVar:=PMMfaza04,lo:=4476,hi:=4477); Read_Real(rVar:=PMMfaza05,lo:=4478,hi:=4479); Read_Real(rVar:=PMMfaza06,lo:=4480,hi:=4481); Read_Real(rVar:=PMMfaza07,lo:=4482,hi:=4483); Read_Real(rVar:=PMMfaza08,lo:=4484,hi:=4485); Read_Real(rVar:=PMMfaza09,lo:=4486,hi:=4487); Read_Real(rVar:=PMMfaza10,lo:=4488,hi:=4489); Read_Real(rVar:=PMMfaza11,lo:=4490,hi:=4491); Read_Real(rVar:=PMMfaza12,lo:=4492,hi:=4493); Read_Real(rVar:=PMMfaza13,lo:=4494,hi:=4495); Read_Real(rVar:=PMMfaza14,lo:=4496,hi:=4497); Read_Real(rVar:=PMMfaza15,lo:=4498,hi:=4499); Read_Real(rVar:=PMMfaza16,lo:=4500,hi:=4501); Read_Real(rVar:=PMMfaza17,lo:=4502,hi:=4503); Read_Real(rVar:=PMMfaza18,lo:=4504,hi:=4505); Read_Real(rVar:=PMMfaza19,lo:=4506,hi:=4507); Read_Real(rVar:=PMMfaza20,lo:=4508,hi:=4509); Read_Real(rVar:=PMMfaza21,lo:=4510,hi:=4511); Read_Real(rVar:=PMMfaza22,lo:=4512,hi:=4513); Read_Real(rVar:=PMMfaza23,lo:=4514,hi:=4515); Read_Real(rVar:=PMMfaza24,lo:=4516,hi:=4517); Read_Real(rVar:=PMMfaza25,lo:=4518,hi:=4519); Read_Real(rVar:=PMMfaza26,lo:=4520,hi:=4521); Read_Real(rVar:=PMMfaza27,lo:=4522,hi:=4523); Read_Real(rVar:=PMMfaza28,lo:=4524,hi:=4525); Read_Real(rVar:=PMMfaza29,lo:=4526,hi:=4527); Read_Real(rVar:=PMMfaza30,lo:=4528,hi:=4529); Read_Real(rVar:=PMMfaza31,lo:=4530,hi:=4531); Read_Real(rVar:=PMMfaza32,lo:=4532,hi:=4533); Read_Real(rVar:=PMMfaza33,lo:=4534,hi:=4535); Read_Real(rVar:=PMMfaza34,lo:=4536,hi:=4537); Read_Real(rVar:=PMMfaza35,lo:=4538,hi:=4539); Read_Real(rVar:=PMMfaza36,lo:=4540,hi:=4541); Read_Real(rVar:=PMMfaza37,lo:=4542,hi:=4543); Read_Real(rVar:=PMMfaza38,lo:=4544,hi:=4545); Read_Real(rVar:=PMMfaza39,lo:=4546,hi:=4547); Read_Real(rVar:=PMMfaza40,lo:=4548,hi:=4549); Read_Real(rVar:=PMMfaza41,lo:=4550,hi:=4551); Read_Real(rVar:=PMMfaza42,lo:=4552,hi:=4553); Read_Real(rVar:=UPS[1].EstimatedChargeRemaining,lo:=4554,hi:=4555); Read_Real(rVar:=UPS[1].EstimatedMinutesRemaining,lo:=4556,hi:=4557); Read_Real(rVar:=UPS[1].IzhodMocL1,lo:=4558,hi:=4559); Read_Real(rVar:=UPS[1].IzhodMocL2,lo:=4560,hi:=4561); Read_Real(rVar:=UPS[1].IzhodMocL3,lo:=4562,hi:=4563); Read_Real(rVar:=UPS[1].NapetostBaterije,lo:=4564,hi:=4565); Read_Real(rVar:=UPS[1].TemperaturaBaterije,lo:=4566,hi:=4567); Read_Real(rVar:=UPS[1].VhodFrekvencaL1,lo:=4568,hi:=4569); Read_Real(rVar:=UPS[1].VhodFrekvencaL2,lo:=4570,hi:=4571); Read_Real(rVar:=UPS[1].VhodFrekvencaL3,lo:=4572,hi:=4573); Read_Real(rVar:=UPS[1].VhodNapetostL1,lo:=4574,hi:=4575); Read_Real(rVar:=UPS[1].VhodNapetostL2,lo:=4576,hi:=4577); Read_Real(rVar:=UPS[1].VhodNapetostL3,lo:=4578,hi:=4579); Read_Real(rVar:=UPS[2].EstimatedChargeRemaining,lo:=4580,hi:=4581); Read_Real(rVar:=UPS[2].EstimatedMinutesRemaining,lo:=4582,hi:=4583); Read_Real(rVar:=UPS[2].IzhodMocL1,lo:=4584,hi:=4585); Read_Real(rVar:=UPS[2].IzhodMocL2,lo:=4586,hi:=4587); Read_Real(rVar:=UPS[2].IzhodMocL3,lo:=4588,hi:=4589); Read_Real(rVar:=UPS[2].NapetostBaterije,lo:=4590,hi:=4591); Read_Real(rVar:=UPS[2].TemperaturaBaterije,lo:=4592,hi:=4593); Read_Real(rVar:=UPS[2].VhodFrekvencaL1,lo:=4594,hi:=4595); Read_Real(rVar:=UPS[2].VhodFrekvencaL2,lo:=4596,hi:=4597); Read_Real(rVar:=UPS[2].VhodFrekvencaL3,lo:=4598,hi:=4599); Read_Real(rVar:=UPS[2].VhodNapetostL1,lo:=4600,hi:=4601); Read_Real(rVar:=UPS[2].VhodNapetostL2,lo:=4602,hi:=4603); Read_Real(rVar:=UPS[2].VhodNapetostL3,lo:=4604,hi:=4605); Read_Real(rVar:=XVHdepltedBatery1,lo:=4606,hi:=4607); Read_Real(rVar:=XVHdepltedBatery2,lo:=4608,hi:=4609); Read_Real(rVar:=XVHlowBatery1,lo:=4610,hi:=4611); Read_Real(rVar:=XVHlowBatery2,lo:=4612,hi:=4613); Read_Real(rVar:=PMMskupniTokA,lo:=4614,hi:=4615); Read_Real(rVar:=PMMskupniTokB,lo:=4616,hi:=4617); Read_Real(rVar:=UPS[3].EstimatedChargeRemaining,lo:=4618,hi:=4619); Read_Real(rVar:=UPS[3].EstimatedMinutesRemaining,lo:=4620,hi:=4621); Read_Real(rVar:=UPS[3].IzhodMocL1,lo:=4622,hi:=4623); Read_Real(rVar:=UPS[3].IzhodMocL2,lo:=4624,hi:=4625); Read_Real(rVar:=UPS[3].IzhodMocL3,lo:=4626,hi:=4627); Read_Real(rVar:=UPS[3].NapetostBaterije,lo:=4628,hi:=4629); Read_Real(rVar:=UPS[3].TemperaturaBaterije,lo:=4630,hi:=4631); Read_Real(rVar:=UPS[3].VhodFrekvencaL1,lo:=4632,hi:=4633); Read_Real(rVar:=UPS[3].VhodFrekvencaL2,lo:=4634,hi:=4635); Read_Real(rVar:=UPS[3].VhodFrekvencaL3,lo:=4636,hi:=4637); Read_Real(rVar:=UPS[3].VhodNapetostL1,lo:=4638,hi:=4639); Read_Real(rVar:=UPS[3].VhodNapetostL2,lo:=4640,hi:=4641); Read_Real(rVar:=UPS[3].VhodNapetostL3,lo:=4642,hi:=4643); Read_Real(rVar:=Circ[1].MaximumDemandA2,lo:=4644,hi:=4645); Read_Real(rVar:=Circ[1].MaximumDemandA3,lo:=4646,hi:=4647); Read_Real(rVar:=Circ[1].RazEner_D_SCADA,lo:=4648,hi:=4649); Read_Real(rVar:=Circ[1].RazEner_T_SCADA,lo:=4650,hi:=4651); Read_Real(rVar:=Circ[1].RazEner_M_SCADA,lo:=4652,hi:=4653); (*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);,"(mod_Write_Bool$K $KOFUNCTION mod_Write_Bool : BOOL VAR_INPUT index: INT; END_VAR VAR END_VAR>(*vpis iz scade*) CASE index OF (*Pisanje BOOL*) (**) 0:AlarmGenUPS_A_V23:=Bit_0; 1:AlarmGenUPS_V23:=Bit_0; 2:AlarmGenUPS_V25:=Bit_0; 3:AlarmPMM1VirATokPrevisok:=Bit_0; 4:AlarmPMM1VirATokVisok:=Bit_0; 5:AlarmPMM1VirBTokPrevisok:=Bit_0; 6:AlarmPMM1VirBTokVisok:=Bit_0; 7:AlarmPMM2x17nad80[10]:=Bit_0; 8:AlarmPMM2x17nad80[11]:=Bit_0; 9:AlarmPMM2x17nad80[12]:=Bit_0; 10:AlarmPMM2x17nad80[13]:=Bit_0; 11:AlarmPMM2x17nad80[14]:=Bit_0; 12:AlarmPMM2x17nad80[15]:=Bit_0; 13:AlarmPMM2x17nad80[16]:=Bit_0; 14:AlarmPMM2x17nad80[17]:=Bit_0; 15:AlarmPMM2x17nad80[18]:=Bit_0; 16:AlarmPMM2x17nad80[19]:=Bit_0; 17:AlarmPMM2x17nad80[1]:=Bit_0; 18:AlarmPMM2x17nad80[20]:=Bit_0; 19:AlarmPMM2x17nad80[21]:=Bit_0; 20:AlarmPMM2x17nad80[22]:=Bit_0; 21:AlarmPMM2x17nad80[23]:=Bit_0; 22:AlarmPMM2x17nad80[24]:=Bit_0; 23:AlarmPMM2x17nad80[25]:=Bit_0; 24:AlarmPMM2x17nad80[26]:=Bit_0; 25:AlarmPMM2x17nad80[27]:=Bit_0; 26:AlarmPMM2x17nad80[28]:=Bit_0; 27:AlarmPMM2x17nad80[29]:=Bit_0; 28:AlarmPMM2x17nad80[2]:=Bit_0; 29:AlarmPMM2x17nad80[30]:=Bit_0; 30:AlarmPMM2x17nad80[31]:=Bit_0; 31:AlarmPMM2x17nad80[32]:=Bit_0; 32:AlarmPMM2x17nad80[33]:=Bit_0; 33:AlarmPMM2x17nad80[34]:=Bit_0; 34:AlarmPMM2x17nad80[35]:=Bit_0; 35:AlarmPMM2x17nad80[36]:=Bit_0; 36:AlarmPMM2x17nad80[37]:=Bit_0; 37:AlarmPMM2x17nad80[38]:=Bit_0; 38:AlarmPMM2x17nad80[39]:=Bit_0; 39:AlarmPMM2x17nad80[3]:=Bit_0; 40:AlarmPMM2x17nad80[40]:=Bit_0; 41:AlarmPMM2x17nad80[41]:=Bit_0; 42:AlarmPMM2x17nad80[42]:=Bit_0; 43:AlarmPMM2x17nad80[4]:=Bit_0; 44:AlarmPMM2x17nad80[5]:=Bit_0; 45:AlarmPMM2x17nad80[6]:=Bit_0; 46:AlarmPMM2x17nad80[7]:=Bit_0; 47:AlarmPMM2x17nad80[8]:=Bit_0; 48:AlarmPMM2x17nad80[9]:=Bit_0; 49:ComError:=Bit_0; 50:ComSCADA:=Bit_0; 51:ComSCADA1:=Bit_0; 52:ComSCADA2:=Bit_0; 53:ComSCADA3:=Bit_0; 54:ErrComCirc[1]:=Bit_0; 55:ErrComKlima[1]:=Bit_0; 56:ErrComKlima[2]:=Bit_0; 57:ErrComPMM[1]:=Bit_0; 58:ErrComPort2:=Bit_0; 59:ErrComPort3:=Bit_0; 60:ErrComPort4:=Bit_0; 61:ErrComUPS[1]:=Bit_0; 62:ErrComUPS[2]:=Bit_0; 63:ErrComUPSMGE[1]:=Bit_0; 64:ErrorComCirc[1].Error:=Bit_0; 65:ErrorComKlima[1].Error:=Bit_0; 66:ErrorComKlima[2].Error:=Bit_0; 67:ErrorComPMM[1].Error:=Bit_0; 68:ErrorComUPS[1].Error:=Bit_0; 69:ErrorComUPS[2].Error:=Bit_0; 70:ErrorComUPSMGE[1].Error:=Bit_0; (*71:F1_1_zascita_ok:=Bit_0;*) 72:K1_SkupnaNapaka:=Bit_0; 73:K1AlarmPozara:=Bit_0; 74:K1KlimaZdruzenAlarm:=Bit_0; 75:K1NiPretoka:=Bit_0; 76:K1OkvaraRototerma:=Bit_0; 77:K1OkvaraVlazNap:=Bit_0; 78:K1PreobMotCrpGr:=Bit_0; 79:K1PreobMotVent:=Bit_0; 80:K1ProtizamrzZascAkt:=Bit_0; 81:K1ZamasenostFiltra:=Bit_0; 82:K2_SkupnaNapaka:=Bit_0; 83:K2AlarmPozara:=Bit_0; 84:K2KlimaZdruzenAlarm:=Bit_0; 85:K2NiPretoka:=Bit_0; 86:K2OkvaraRototerma:=Bit_0; 87:K2OkvaraVlazNap:=Bit_0; 88:K2PreobMotCrpGr:=Bit_0; 89:K2PreobMotVent:=Bit_0; 90:K2ProtizamrzZascAkt:=Bit_0; 91:K2ZamasenostFiltra:=Bit_0; 92:K3_deluje:=Bit_0; 93:K3_SkupnaNapaka:=Bit_0; 94:Klima1_izkljucena:=Bit_0; (*95:KLIMA1_kke_pogon:=Bit_0;*) (*96:KLIMA1_krm_nap_ok:=Bit_0;*) 97:Klima2_izkljucena:=Bit_0; 98:Klima3_izkljucena:=Bit_0; 99:Klima[1].Alarm_pozar:=Bit_0; 100:Klima[1].DelVentHit1:=Bit_0; 101:Klima[1].DelVentHit2:=Bit_0; 102:Klima[1].Ni_pretoka:=Bit_0; 103:Klima[1].OkvaraRototerm:=Bit_0; 104:Klima[1].OkvaraVlazNap:=Bit_0; 105:Klima[1].PreobMotCrpGrel:=Bit_0; 106:Klima[1].PreobMotVent:=Bit_0; 107:Klima[1].ProtizamrzZascAktivna:=Bit_0; 108:Klima[1].VklopRegKlimata:=Bit_0; 109:Klima[1].ZamasenostFiltra:=Bit_0; 110:Klima[1].ZdruzAlarmA:=Bit_0; 111:Klima[1].ZdruzAlarmB:=Bit_0; 112:Klima[2].Alarm_pozar:=Bit_0; 113:Klima[2].DelVentHit1:=Bit_0; 114:Klima[2].DelVentHit2:=Bit_0; 115:Klima[2].Ni_pretoka:=Bit_0; 116:Klima[2].OkvaraRototerm:=Bit_0; 117:Klima[2].OkvaraVlazNap:=Bit_0; 118:Klima[2].PreobMotCrpGrel:=Bit_0; 119:Klima[2].PreobMotVent:=Bit_0; 120:Klima[2].ProtizamrzZascAktivna:=Bit_0; 121:Klima[2].VklopRegKlimata:=Bit_0; 122:Klima[2].ZamasenostFiltra:=Bit_0; 123:Klima[2].ZdruzAlarmA:=Bit_0; 124:Klima[2].ZdruzAlarmB:=Bit_0; (*125:KLIMA_m1_delovanje:=Bit_0;*) (*126:KLIMA_m1_napaka:=Bit_0;*) (*127:KLIMA_m2_delovanje:=Bit_0;*) (*128:KLIMA_m2_napaka:=Bit_0;*) (*129:KLIMAT1_delovanje:=Bit_0;*) (*130:KLIMAT1_napaka:=Bit_0;*) 131:KLIMAT1_vklop_delovanja:=Bit_0; (*132:KLIMAT2_delovanje:=Bit_0;*) (*133:KLIMAT2_napaka:=Bit_0;*) 134:KLIMAT2_vklop_delovanja:=Bit_0; 135:KlimeAVTO:=Bit_0; 136:N_F1_1_zascita_ok:=Bit_0; 137:N_KLIMA1_krm_nap_ok:=Bit_0; 138:N_KLIMAT1_napaka:=Bit_0; 139:N_KLIMAT2_napaka:=Bit_0; 140:N_Q12_izpad:=Bit_0; 141:N_UPS_A_V23_delovanje:=Bit_0; 142:N_UPS_A_V23_napaka:=Bit_0; 143:N_UPS_V23_delovanje:=Bit_0; 144:N_UPS_V23_napaka:=Bit_0; 145:N_UPS_V25_delovanje:=Bit_0; 146:N_UPS_V25_napaka:=Bit_0; 147:N_VLAZILEC1_napaka:=Bit_0; 148:N_VLAZILEC2_napaka:=Bit_0; 149:napaka_kom_panel:=Bit_0; 150:napaka_kom_scada:=Bit_0; 151:napaka_kom_scada2:=Bit_0; 152:NapakaSenzorSkupno:=Bit_0; 153:NapakaSenzorVlagaHIA1:=Bit_0; 154:NapakaSenzorVlagaHIA2:=Bit_0; 155:NapakaSenzorVlagaHIA3:=Bit_0; 156:NapakaSenzorVlagaHIA4:=Bit_0; 157:NapakaSenzorVlagaHIA5:=Bit_0; 158:NapakaSenzorVlagaHIA6:=Bit_0; 159:NapakaSenzorVlagaHIA7:=Bit_0; 160:NapakaTSTempTIA1:=Bit_0; 161:NapakaTSTempTIA2:=Bit_0; 162:NapakaTSTempTIA3:=Bit_0; 163:NapakaTSTempTIA4:=Bit_0; 164:NapakaTSTempTIA5:=Bit_0; 165:NapakaTSTempTIA6:=Bit_0; 166:NapakaTSTempTIA7:=Bit_0; 167:OpozoriloPMM2x17med60in80[10]:=Bit_0; 168:OpozoriloPMM2x17med60in80[11]:=Bit_0; 169:OpozoriloPMM2x17med60in80[12]:=Bit_0; 170:OpozoriloPMM2x17med60in80[13]:=Bit_0; 171:OpozoriloPMM2x17med60in80[14]:=Bit_0; 172:OpozoriloPMM2x17med60in80[15]:=Bit_0; 173:OpozoriloPMM2x17med60in80[16]:=Bit_0; 174:OpozoriloPMM2x17med60in80[17]:=Bit_0; 175:OpozoriloPMM2x17med60in80[18]:=Bit_0; 176:OpozoriloPMM2x17med60in80[19]:=Bit_0; 177:OpozoriloPMM2x17med60in80[1]:=Bit_0; 178:OpozoriloPMM2x17med60in80[20]:=Bit_0; 179:OpozoriloPMM2x17med60in80[21]:=Bit_0; 180:OpozoriloPMM2x17med60in80[22]:=Bit_0; 181:OpozoriloPMM2x17med60in80[23]:=Bit_0; 182:OpozoriloPMM2x17med60in80[24]:=Bit_0; 183:OpozoriloPMM2x17med60in80[25]:=Bit_0; 184:OpozoriloPMM2x17med60in80[26]:=Bit_0; 185:OpozoriloPMM2x17med60in80[27]:=Bit_0; 186:OpozoriloPMM2x17med60in80[28]:=Bit_0; 187:OpozoriloPMM2x17med60in80[29]:=Bit_0; 188:OpozoriloPMM2x17med60in80[2]:=Bit_0; 189:OpozoriloPMM2x17med60in80[30]:=Bit_0; 190:OpozoriloPMM2x17med60in80[31]:=Bit_0; 191:OpozoriloPMM2x17med60in80[32]:=Bit_0; 192:OpozoriloPMM2x17med60in80[33]:=Bit_0; 193:OpozoriloPMM2x17med60in80[34]:=Bit_0; 194:OpozoriloPMM2x17med60in80[35]:=Bit_0; 195:OpozoriloPMM2x17med60in80[36]:=Bit_0; 196:OpozoriloPMM2x17med60in80[37]:=Bit_0; 197:OpozoriloPMM2x17med60in80[38]:=Bit_0; 198:OpozoriloPMM2x17med60in80[39]:=Bit_0; 199:OpozoriloPMM2x17med60in80[3]:=Bit_0; 200:OpozoriloPMM2x17med60in80[40]:=Bit_0; 201:OpozoriloPMM2x17med60in80[41]:=Bit_0; 202:OpozoriloPMM2x17med60in80[42]:=Bit_0; 203:OpozoriloPMM2x17med60in80[4]:=Bit_0; 204:OpozoriloPMM2x17med60in80[5]:=Bit_0; 205:OpozoriloPMM2x17med60in80[6]:=Bit_0; 206:OpozoriloPMM2x17med60in80[7]:=Bit_0; 207:OpozoriloPMM2x17med60in80[8]:=Bit_0; 208:OpozoriloPMM2x17med60in80[9]:=Bit_0; 209:PMM1OverCurrentBetw[1]:=Bit_0; 210:PMM1OverCurrentBetw[2]:=Bit_0; 211:PMM1OverCurrentBetw[3]:=Bit_0; 212:PMM1OverCurrentOver[1]:=Bit_0; 213:PMM1OverCurrentOver[2]:=Bit_0; 214:PMM1OverCurrentOver[3]:=Bit_0; 215:PrevisokaTemp:=Bit_0; 216:Q0_izkljuceno:=Bit_0; (*217:Q0_vkljuceno:=Bit_0;*) 218:Q12_izkljuceno:=Bit_0; (*219:Q12_izpad:=Bit_0;*) (*220:Q12_vkljuceno:=Bit_0;*) (*221:razlitjeLAH1:=Bit_0;*) (*222:razlitjeLAH2:=Bit_0;*) (*223:razlitjeLAH3:=Bit_0;*) (*224:razlitjeLAH4:=Bit_0;*) 225:SetDateTime:=Bit_0; 226:SetDateTimeDemand:=Bit_0; 227:SetDateTimeError:=Bit_0; 228:SetDateTimeFinished:=Bit_0; 229:SkupneNapakeNaprav_PMM17VirBVirA:=Bit_0; 230:SlabaBaterijaPLC:=Bit_0; 231:TempPovp234Previs:=Bit_0; 232:TempPovp56Previs:=Bit_0; 233:TIA1_previs_temp:=Bit_0; 234:TIA2_previs_temp:=Bit_0; 235:TIA3_previs_temp:=Bit_0; 236:TIA4_previs_temp:=Bit_0; 237:TIA5_previs_temp:=Bit_0; 238:TIA6_previs_temp:=Bit_0; 239:TIA7_previs_temp:=Bit_0; 240:UPS1Errors[10]:=Bit_0; 241:UPS1Errors[11]:=Bit_0; 242:UPS1Errors[12]:=Bit_0; 243:UPS1Errors[13]:=Bit_0; 244:UPS1Errors[14]:=Bit_0; 245:UPS1Errors[15]:=Bit_0; 246:UPS1Errors[16]:=Bit_0; 247:UPS1Errors[17]:=Bit_0; 248:UPS1Errors[18]:=Bit_0; 249:UPS1Errors[19]:=Bit_0; 250:UPS1Errors[1]:=Bit_0; 251:UPS1Errors[20]:=Bit_0; 252:UPS1Errors[21]:=Bit_0; 253:UPS1Errors[22]:=Bit_0; 254:UPS1Errors[23]:=Bit_0; 255:UPS1Errors[24]:=Bit_0; 256:UPS1Errors[25]:=Bit_0; 257:UPS1Errors[2]:=Bit_0; 258:UPS1Errors[3]:=Bit_0; 259:UPS1Errors[4]:=Bit_0; 260:UPS1Errors[5]:=Bit_0; 261:UPS1Errors[6]:=Bit_0; 262:UPS1Errors[7]:=Bit_0; 263:UPS1Errors[8]:=Bit_0; 264:UPS1Errors[9]:=Bit_0; 265:UPS2Errors[10]:=Bit_0; 266:UPS2Errors[11]:=Bit_0; 267:UPS2Errors[12]:=Bit_0; 268:UPS2Errors[13]:=Bit_0; 269:UPS2Errors[14]:=Bit_0; 270:UPS2Errors[15]:=Bit_0; 271:UPS2Errors[16]:=Bit_0; 272:UPS2Errors[17]:=Bit_0; 273:UPS2Errors[18]:=Bit_0; 274:UPS2Errors[19]:=Bit_0; 275:UPS2Errors[1]:=Bit_0; 276:UPS2Errors[20]:=Bit_0; 277:UPS2Errors[21]:=Bit_0; 278:UPS2Errors[22]:=Bit_0; 279:UPS2Errors[23]:=Bit_0; 280:UPS2Errors[24]:=Bit_0; 281:UPS2Errors[25]:=Bit_0; 282:UPS2Errors[2]:=Bit_0; 283:UPS2Errors[3]:=Bit_0; 284:UPS2Errors[4]:=Bit_0; 285:UPS2Errors[5]:=Bit_0; 286:UPS2Errors[6]:=Bit_0; 287:UPS2Errors[7]:=Bit_0; 288:UPS2Errors[8]:=Bit_0; 289:UPS2Errors[9]:=Bit_0; 290:UPS[1].AlarmAwaitingPower:=Bit_0; 291:UPS[1].AlarmBypassBad:=Bit_0; 292:UPS[1].AlarmChargerFailed:=Bit_0; 293:UPS[1].AlarmCommunicationsLost:=Bit_0; 294:UPS[1].AlarmDepletedBattery:=Bit_0; 295:UPS[1].AlarmDiagnosticTestFailed:=Bit_0; 296:UPS[1].AlarmInverterError:=Bit_0; 297:UPS[1].AlarmIzhodOffKotZahtevano:=Bit_0; 298:UPS[1].AlarmIzhodPreobremenjen:=Bit_0; 299:UPS[1].AlarmLowBattery:=Bit_0; 300:UPS[1].AlarmNapakaNaVarovalki:=Bit_0; 301:UPS[1].AlarmNapakaNaVentilatorju:=Bit_0; 302:UPS[1].AlarmOnBattery:=Bit_0; 303:UPS[1].AlarmOnBypass:=Bit_0; 304:UPS[1].AlarmShutdownImminent:=Bit_0; 305:UPS[1].AlarmShutdownPending:=Bit_0; 306:UPS[1].AlarmSlabaBaterija:=Bit_0; 307:UPS[1].AlarmSplosnaNapaka:=Bit_0; 308:UPS[1].AlarmStanjeIzhodaIzvenToleranc:=Bit_0; 309:UPS[1].AlarmStanjeVhodaIzvenToleranc:=Bit_0; 310:UPS[1].AlarmTemperaturaIzvenToleranc:=Bit_0; 311:UPS[1].AlarmTestInProgres:=Bit_0; 312:UPS[1].AlarmUPSIzhodOff:=Bit_0; 313:UPS[1].AlarmUPSOffKotZahtevano:=Bit_0; 314:UPS[1].AlarmUPSSystemOff:=Bit_0; 315:UPS[1].Napaka:=Bit_0; 316:UPS[1].StatusEcomodeAktiven:=Bit_0; 317:UPS[1].StatusInverterIsOn:=Bit_0; 318:UPS[1].StatusStopOperation:=Bit_0; 319:UPS[2].AlarmAwaitingPower:=Bit_0; 320:UPS[2].AlarmBypassBad:=Bit_0; 321:UPS[2].AlarmChargerFailed:=Bit_0; 322:UPS[2].AlarmCommunicationsLost:=Bit_0; 323:UPS[2].AlarmDepletedBattery:=Bit_0; 324:UPS[2].AlarmDiagnosticTestFailed:=Bit_0; 325:UPS[2].AlarmInverterError:=Bit_0; 326:UPS[2].AlarmIzhodOffKotZahtevano:=Bit_0; 327:UPS[2].AlarmIzhodPreobremenjen:=Bit_0; 328:UPS[2].AlarmLowBattery:=Bit_0; 329:UPS[2].AlarmNapakaNaVarovalki:=Bit_0; 330:UPS[2].AlarmNapakaNaVentilatorju:=Bit_0; 331:UPS[2].AlarmOnBattery:=Bit_0; 332:UPS[2].AlarmOnBypass:=Bit_0; 333:UPS[2].AlarmShutdownImminent:=Bit_0; 334:UPS[2].AlarmShutdownPending:=Bit_0; 335:UPS[2].AlarmSlabaBaterija:=Bit_0; 336:UPS[2].AlarmSplosnaNapaka:=Bit_0; 337:UPS[2].AlarmStanjeIzhodaIzvenToleranc:=Bit_0; 338:UPS[2].AlarmStanjeVhodaIzvenToleranc:=Bit_0; 339:UPS[2].AlarmTemperaturaIzvenToleranc:=Bit_0; 340:UPS[2].AlarmTestInProgres:=Bit_0; 341:UPS[2].AlarmUPSIzhodOff:=Bit_0; 342:UPS[2].AlarmUPSOffKotZahtevano:=Bit_0; 343:UPS[2].AlarmUPSSystemOff:=Bit_0; 344:UPS[2].Napaka:=Bit_0; 345:UPS[2].StatusEcomodeAktiven:=Bit_0; 346:UPS[2].StatusInverterIsOn:=Bit_0; 347:UPS[2].StatusStopOperation:=Bit_0; (*348:UPS_A_V23_delovanje:=Bit_0;*) (*349:UPS_A_V23_napaka:=Bit_0;*) (*350:ups_alarm:=Bit_0;*) (*351:ups_baterijski_nac:=Bit_0;*) 352:UPS_MGE[1].BatteryChargedState:=Bit_0; 353:UPS_MGE[1].BatteryCircuitBreaker:=Bit_0; 354:UPS_MGE[1].BatteryCompInProgress:=Bit_0; 355:UPS_MGE[1].BatteryFuseFault:=Bit_0; 356:UPS_MGE[1].BatteryLowWarning:=Bit_0; 357:UPS_MGE[1].BatteryTempOutOfToler:=Bit_0; 358:UPS_MGE[1].BypassInFreeFrequency:=Bit_0; 359:UPS_MGE[1].ChargerGeneralFault:=Bit_0; 360:UPS_MGE[1].DeviceVentilationFault:=Bit_0; 361:UPS_MGE[1].InverterFuseFault:=Bit_0; 362:UPS_MGE[1].InverterOverload:=Bit_0; 363:UPS_MGE[1].InverterThermalOverload:=Bit_0; 364:UPS_MGE[1].Mains1VoltOutOfToler:=Bit_0; 365:UPS_MGE[1].Mains2Overload:=Bit_0; 366:UPS_MGE[1].Mains2VoltOutOfToler:=Bit_0; 367:UPS_MGE[1].MaintenancePosition:=Bit_0; 368:UPS_MGE[1].ManualBypassSwitch:=Bit_0; 369:UPS_MGE[1].NapakaNaVarovalkah:=Bit_0; 370:UPS_MGE[1].OutputInShortCircuit:=Bit_0; 371:UPS_MGE[1].OutputOverload:=Bit_0; 372:UPS_MGE[1].OutputThermalOverload:=Bit_0; 373:UPS_MGE[1].RectifierOn:=Bit_0; 374:UPS_MGE[1].RectifierThermOverload:=Bit_0; 375:UPS_MGE[1].Skupna_napaka:=Bit_0; 376:UPS_MGE[1].UPS_coupled:=Bit_0; 377:UPS_MGE[1].UPS_error:=Bit_0; 378:UPS_MGE[1].UPS_in_backup:=Bit_0; (*379:ups_polnjenje:=Bit_0;*) (*380:UPS_V23_delovanje:=Bit_0;*) (*381:UPS_V23_napaka:=Bit_0;*) (*382:UPS_V25_delovanje:=Bit_0;*) (*383:UPS_V25_napaka:=Bit_0;*) 384:UPSMGEErrors[10]:=Bit_0; 385:UPSMGEErrors[11]:=Bit_0; 386:UPSMGEErrors[12]:=Bit_0; 387:UPSMGEErrors[13]:=Bit_0; 388:UPSMGEErrors[14]:=Bit_0; 389:UPSMGEErrors[15]:=Bit_0; 390:UPSMGEErrors[16]:=Bit_0; 391:UPSMGEErrors[17]:=Bit_0; 392:UPSMGEErrors[1]:=Bit_0; 393:UPSMGEErrors[2]:=Bit_0; 394:UPSMGEErrors[3]:=Bit_0; 395:UPSMGEErrors[4]:=Bit_0; 396:UPSMGEErrors[5]:=Bit_0; 397:UPSMGEErrors[6]:=Bit_0; 398:UPSMGEErrors[7]:=Bit_0; 399:UPSMGEErrors[8]:=Bit_0; 400:UPSMGEErrors[9]:=Bit_0; 401:UserLoggedIn:=Bit_0; (*402:VLAZILEC1_delovanje:=Bit_0;*) (*403:VLAZILEC1_napaka:=Bit_0;*) (*404:VLAZILEC2_delovanje:=Bit_0;*) (*405:VLAZILEC2_napaka:=Bit_0;*) 406:XVH_AlarmOn:=Bit_0; 407:XVH_enopolna_napaka:=Bit_0; 408:KLIMAT1_vklop_delovanjaR:=Bit_0; 409:KLIMAT2_vklop_delovanjaR:=Bit_0; 410:KLIMAT1_R_zakleni:=Bit_0; 411:KLIMAT2_R_zakleni:=Bit_0; 412:K1_vklop_izklop_poteka:=Bit_0; 413:K2_vklop_izklop_poteka:=Bit_0; 414:N_KlimeAVTO:=Bit_0; 415:UPS[3].AlarmAwaitingPower:=Bit_0; 416:UPS[3].AlarmBypassBad:=Bit_0; 417:UPS[3].AlarmChargerFailed:=Bit_0; 418:UPS[3].AlarmCommunicationsLost:=Bit_0; 419:UPS[3].AlarmDepletedBattery:=Bit_0; 420:UPS[3].AlarmDiagnosticTestFailed:=Bit_0; 421:UPS[3].AlarmInverterError:=Bit_0; 422:UPS[3].AlarmIzhodOffKotZahtevano:=Bit_0; 423:UPS[3].AlarmIzhodPreobremenjen:=Bit_0; 424:UPS[3].AlarmLowBattery:=Bit_0; 425:UPS[3].AlarmNapakaNaVarovalki:=Bit_0; 426:UPS[3].AlarmNapakaNaVentilatorju:=Bit_0; 427:UPS[3].AlarmOnBattery:=Bit_0; 428:UPS[3].AlarmOnBypass:=Bit_0; 429:UPS[3].AlarmShutdownImminent:=Bit_0; 430:UPS[3].AlarmShutdownPending:=Bit_0; 431:UPS[3].AlarmSlabaBaterija:=Bit_0; 432:UPS[3].AlarmSplosnaNapaka:=Bit_0; 433:UPS[3].AlarmStanjeIzhodaIzvenToleranc:=Bit_0; 434:UPS[3].AlarmStanjeVhodaIzvenToleranc:=Bit_0; 435:UPS[3].AlarmTemperaturaIzvenToleranc:=Bit_0; 436:UPS[3].AlarmTestInProgres:=Bit_0; 437:UPS[3].AlarmUPSIzhodOff:=Bit_0; 438:UPS[3].AlarmUPSOffKotZahtevano:=Bit_0; 439:UPS[3].AlarmUPSSystemOff:=Bit_0; 440:UPS[3].Napaka:=Bit_0; 441:UPS[3].StatusEcomodeAktiven:=Bit_0; 442:UPS[3].StatusInverterIsOn:=Bit_0; 443:UPS[3].StatusStopOperation:=Bit_0; 444:ErrComUPS[3]:=Bit_0; 445:GSM_PozCent_napaka:=Bit_0; 446:GSM_PozSenzor_okvara:=Bit_0; 447:GSM_Gasenje_alarm:=Bit_0; 448:AGR_PozCent_napaka:=Bit_0; 449:AGR_PozSenzor_okvara:=Bit_0; 450:AGR_Gasenje_alarm:=Bit_0; 451:Circ_Vpis_Dnevne_energija_scada1:=Bit_0; 452:Circ_Vpis_Dnevne_energija_scada2:=Bit_0; 453:Circ_Vpis_Tedenska_energija_scada1:=Bit_0; 454:Circ_Vpis_Tedenska_energija_scada2:=Bit_0; 455:Circ_Vpis_Mesecna_energija_scada1:=Bit_0; 456:Circ_Vpis_Mesecna_energija_scada2:=Bit_0; 457:PozarnaCentrala_skupno:=Bit_0; (*BOOL*) END_CASEmod_Write_dWord$K $KOFUNCTION mod_Write_dWord : BOOL VAR_INPUT Index:INT; END_VAR VAR END_VAR2(*vpis iz scade*) CASE index OF (*Pisanje LONG*) (**) (*Pisanje REAL*) (**) 4001:Circ[1].CosFi_III:=Real_0; 4003:Circ[1].DelovnaEnergija:=Real_0; 4005:Circ[1].DelovnaMoc_III:=Real_0; 4007:Circ[1].DelovnaMoc_L1:=Real_0; 4009:Circ[1].DelovnaMoc_L2:=Real_0; 4011:Circ[1].DelovnaMoc_L3:=Real_0; 4013:Circ[1].Frekvenca_L1:=Real_0; 4015:Circ[1].InduktivnaEnergija:=Real_0; 4017:Circ[1].InduktivnaMoc_III:=Real_0; 4019:Circ[1].JalovaMoc_L1:=Real_0; 4021:Circ[1].JalovaMoc_L2:=Real_0; 4023:Circ[1].JalovaMoc_L3:=Real_0; 4025:Circ[1].KapacitivnaEnergija:=Real_0; 4027:Circ[1].KapacitivnaMoc_III:=Real_0; 4029:Circ[1].MaximumDemand:=Real_0; 4031:Circ[1].Napetost_L1_L2:=Real_0; 4033:Circ[1].Napetost_L1_N:=Real_0; 4035:Circ[1].Napetost_L2_L3:=Real_0; 4037:Circ[1].Napetost_L2_N:=Real_0; 4039:Circ[1].Napetost_L3_L1:=Real_0; 4041:Circ[1].Napetost_L3_N:=Real_0; 4043:Circ[1].NavideznaMoc_III:=Real_0; 4045:Circ[1].NicelniTok:=Real_0; 4047:Circ[1].PowerFactor_III:=Real_0; 4049:Circ[1].PowerFactor_L1:=Real_0; 4051:Circ[1].PowerFactor_L2:=Real_0; 4053:Circ[1].PowerFactor_L3:=Real_0; 4055:Circ[1].THDI_L1:=Real_0; 4057:Circ[1].THDI_L2:=Real_0; 4059:Circ[1].THDI_L3:=Real_0; 4061:Circ[1].THDV_L1:=Real_0; 4063:Circ[1].THDV_L2:=Real_0; 4065:Circ[1].THDV_L3:=Real_0; 4067:Circ[1].Tok_L1:=Real_0; 4069:Circ[1].Tok_L2:=Real_0; 4071:Circ[1].Tok_L3:=Real_0; 4073:Circ[1].TokPovprecje_III:=Real_0; 4075:PMM[1].ActiveEnergyConsumed_kWh:=Real_0; 4077:PMM[1].ActivePowerPhaseA_kW:=Real_0; 4079:PMM[1].ActivePowerPhaseB_kW:=Real_0; 4081:PMM[1].ActivePowerPhaseC_kW:=Real_0; 4083:PMM[1].AparentPowerPhaseA:=Real_0; 4085:PMM[1].AparentPowerPhaseB:=Real_0; 4087:PMM[1].AparentPowerPhaseC:=Real_0; 4089:PMM[1].AverageCurrent_A:=Real_0; 4091:PMM[1].AveragePhaseToNeutral_V:=Real_0; 4093:PMM[1].AveragePhaseToPhase_V:=Real_0; 4095:PMM[1].CurrentInPhaseA_A:=Real_0; 4097:PMM[1].CurrentInPhaseB_A:=Real_0; 4099:PMM[1].CurrentInPhaseC_A:=Real_0; 4101:PMM[1].Frequency_Hz:=Real_0; 4103:PMM[1].Phase[1].Current[10]:=Real_0; 4105:PMM[1].Phase[1].Current[11]:=Real_0; 4107:PMM[1].Phase[1].Current[12]:=Real_0; 4109:PMM[1].Phase[1].Current[13]:=Real_0; 4111:PMM[1].Phase[1].Current[14]:=Real_0; 4113:PMM[1].Phase[1].Current[15]:=Real_0; 4115:PMM[1].Phase[1].Current[16]:=Real_0; 4117:PMM[1].Phase[1].Current[17]:=Real_0; 4119:PMM[1].Phase[1].Current[18]:=Real_0; 4121:PMM[1].Phase[1].Current[19]:=Real_0; 4123:PMM[1].Phase[1].Current[1]:=Real_0; 4125:PMM[1].Phase[1].Current[20]:=Real_0; 4127:PMM[1].Phase[1].Current[21]:=Real_0; 4129:PMM[1].Phase[1].Current[22]:=Real_0; 4131:PMM[1].Phase[1].Current[23]:=Real_0; 4133:PMM[1].Phase[1].Current[24]:=Real_0; 4135:PMM[1].Phase[1].Current[25]:=Real_0; 4137:PMM[1].Phase[1].Current[26]:=Real_0; 4139:PMM[1].Phase[1].Current[27]:=Real_0; 4141:PMM[1].Phase[1].Current[28]:=Real_0; 4143:PMM[1].Phase[1].Current[29]:=Real_0; 4145:PMM[1].Phase[1].Current[2]:=Real_0; 4147:PMM[1].Phase[1].Current[30]:=Real_0; 4149:PMM[1].Phase[1].Current[31]:=Real_0; 4151:PMM[1].Phase[1].Current[32]:=Real_0; 4153:PMM[1].Phase[1].Current[33]:=Real_0; 4155:PMM[1].Phase[1].Current[34]:=Real_0; 4157:PMM[1].Phase[1].Current[35]:=Real_0; 4159:PMM[1].Phase[1].Current[36]:=Real_0; 4161:PMM[1].Phase[1].Current[37]:=Real_0; 4163:PMM[1].Phase[1].Current[38]:=Real_0; 4165:PMM[1].Phase[1].Current[39]:=Real_0; 4167:PMM[1].Phase[1].Current[3]:=Real_0; 4169:PMM[1].Phase[1].Current[40]:=Real_0; 4171:PMM[1].Phase[1].Current[41]:=Real_0; 4173:PMM[1].Phase[1].Current[42]:=Real_0; 4175:PMM[1].Phase[1].Current[4]:=Real_0; 4177:PMM[1].Phase[1].Current[5]:=Real_0; 4179:PMM[1].Phase[1].Current[6]:=Real_0; 4181:PMM[1].Phase[1].Current[7]:=Real_0; 4183:PMM[1].Phase[1].Current[8]:=Real_0; 4185:PMM[1].Phase[1].Current[9]:=Real_0; 4187:PMM[1].Phase[2].Current[10]:=Real_0; 4189:PMM[1].Phase[2].Current[11]:=Real_0; 4191:PMM[1].Phase[2].Current[12]:=Real_0; 4193:PMM[1].Phase[2].Current[13]:=Real_0; 4195:PMM[1].Phase[2].Current[14]:=Real_0; 4197:PMM[1].Phase[2].Current[15]:=Real_0; 4199:PMM[1].Phase[2].Current[16]:=Real_0; 4201:PMM[1].Phase[2].Current[17]:=Real_0; 4203:PMM[1].Phase[2].Current[18]:=Real_0; 4205:PMM[1].Phase[2].Current[19]:=Real_0; 4207:PMM[1].Phase[2].Current[1]:=Real_0; 4209:PMM[1].Phase[2].Current[20]:=Real_0; 4211:PMM[1].Phase[2].Current[21]:=Real_0; 4213:PMM[1].Phase[2].Current[22]:=Real_0; 4215:PMM[1].Phase[2].Current[23]:=Real_0; 4217:PMM[1].Phase[2].Current[24]:=Real_0; 4219:PMM[1].Phase[2].Current[25]:=Real_0; 4221:PMM[1].Phase[2].Current[26]:=Real_0; 4223:PMM[1].Phase[2].Current[27]:=Real_0; 4225:PMM[1].Phase[2].Current[28]:=Real_0; 4227:PMM[1].Phase[2].Current[29]:=Real_0; 4229:PMM[1].Phase[2].Current[2]:=Real_0; 4231:PMM[1].Phase[2].Current[30]:=Real_0; 4233:PMM[1].Phase[2].Current[31]:=Real_0; 4235:PMM[1].Phase[2].Current[32]:=Real_0; 4237:PMM[1].Phase[2].Current[33]:=Real_0; 4239:PMM[1].Phase[2].Current[34]:=Real_0; 4241:PMM[1].Phase[2].Current[35]:=Real_0; 4243:PMM[1].Phase[2].Current[36]:=Real_0; 4245:PMM[1].Phase[2].Current[37]:=Real_0; 4247:PMM[1].Phase[2].Current[38]:=Real_0; 4249:PMM[1].Phase[2].Current[39]:=Real_0; 4251:PMM[1].Phase[2].Current[3]:=Real_0; 4253:PMM[1].Phase[2].Current[40]:=Real_0; 4255:PMM[1].Phase[2].Current[41]:=Real_0; 4257:PMM[1].Phase[2].Current[42]:=Real_0; 4259:PMM[1].Phase[2].Current[4]:=Real_0; 4261:PMM[1].Phase[2].Current[5]:=Real_0; 4263:PMM[1].Phase[2].Current[6]:=Real_0; 4265:PMM[1].Phase[2].Current[7]:=Real_0; 4267:PMM[1].Phase[2].Current[8]:=Real_0; 4269:PMM[1].Phase[2].Current[9]:=Real_0; 4271:PMM[1].Phase[3].Current[10]:=Real_0; 4273:PMM[1].Phase[3].Current[11]:=Real_0; 4275:PMM[1].Phase[3].Current[12]:=Real_0; 4277:PMM[1].Phase[3].Current[13]:=Real_0; 4279:PMM[1].Phase[3].Current[14]:=Real_0; 4281:PMM[1].Phase[3].Current[15]:=Real_0; 4283:PMM[1].Phase[3].Current[16]:=Real_0; 4285:PMM[1].Phase[3].Current[17]:=Real_0; 4287:PMM[1].Phase[3].Current[18]:=Real_0; 4289:PMM[1].Phase[3].Current[19]:=Real_0; 4291:PMM[1].Phase[3].Current[1]:=Real_0; 4293:PMM[1].Phase[3].Current[20]:=Real_0; 4295:PMM[1].Phase[3].Current[21]:=Real_0; 4297:PMM[1].Phase[3].Current[22]:=Real_0; 4299:PMM[1].Phase[3].Current[23]:=Real_0; 4301:PMM[1].Phase[3].Current[24]:=Real_0; 4303:PMM[1].Phase[3].Current[25]:=Real_0; 4305:PMM[1].Phase[3].Current[26]:=Real_0; 4307:PMM[1].Phase[3].Current[27]:=Real_0; 4309:PMM[1].Phase[3].Current[28]:=Real_0; 4311:PMM[1].Phase[3].Current[29]:=Real_0; 4313:PMM[1].Phase[3].Current[2]:=Real_0; 4315:PMM[1].Phase[3].Current[30]:=Real_0; 4317:PMM[1].Phase[3].Current[31]:=Real_0; 4319:PMM[1].Phase[3].Current[32]:=Real_0; 4321:PMM[1].Phase[3].Current[33]:=Real_0; 4323:PMM[1].Phase[3].Current[34]:=Real_0; 4325:PMM[1].Phase[3].Current[35]:=Real_0; 4327:PMM[1].Phase[3].Current[36]:=Real_0; 4329:PMM[1].Phase[3].Current[37]:=Real_0; 4331:PMM[1].Phase[3].Current[38]:=Real_0; 4333:PMM[1].Phase[3].Current[39]:=Real_0; 4335:PMM[1].Phase[3].Current[3]:=Real_0; 4337:PMM[1].Phase[3].Current[40]:=Real_0; 4339:PMM[1].Phase[3].Current[41]:=Real_0; 4341:PMM[1].Phase[3].Current[42]:=Real_0; 4343:PMM[1].Phase[3].Current[4]:=Real_0; 4345:PMM[1].Phase[3].Current[5]:=Real_0; 4347:PMM[1].Phase[3].Current[6]:=Real_0; 4349:PMM[1].Phase[3].Current[7]:=Real_0; 4351:PMM[1].Phase[3].Current[8]:=Real_0; 4353:PMM[1].Phase[3].Current[9]:=Real_0; 4355:PMM[1].PowerFactorSys:=Real_0; 4357:PMM[1].ReactiveEnergyConsumed_kVARh:=Real_0; 4359:PMM[1].ReactivePowerPhaseA:=Real_0; 4361:PMM[1].ReactivePowerPhaseB:=Real_0; 4363:PMM[1].ReactivePowerPhaseC:=Real_0; 4365:PMM[1].TotalActivePower_kW:=Real_0; 4367:PMM[1].TotalAparentPower_kVA:=Real_0; 4369:PMM[1].TotalPowerFactor:=Real_0; 4371:PMM[1].TotalReactivePower_kVAR:=Real_0; 4373:PMM[1].VirA_fsys:=Real_0; 4375:PMM[1].VirA_Isys:=Real_0; 4377:PMM[1].VirA_PFsys:=Real_0; 4379:PMM[1].VirA_Psys:=Real_0; 4381:PMM[1].VirA_Qsys:=Real_0; 4383:PMM[1].VirA_Ssys:=Real_0; 4385:PMM[1].VirA_Usys:=Real_0; 4387:PMM[1].VirB_fsys:=Real_0; 4389:PMM[1].VirB_Isys:=Real_0; 4391:PMM[1].VirB_PFsys:=Real_0; 4393:PMM[1].VirB_Psys:=Real_0; 4395:PMM[1].VirB_Qsys:=Real_0; 4397:PMM[1].VirB_Ssys:=Real_0; 4399:PMM[1].VirB_Usys:=Real_0; 4401:PMM[1].VirBActiveEnergyConsumed_kWh:=Real_0; 4403:PMM[1].VirBActivePowerPhaseA_kW:=Real_0; 4405:PMM[1].VirBActivePowerPhaseB_kW:=Real_0; 4407:PMM[1].VirBActivePowerPhaseC_kW:=Real_0; 4409:PMM[1].VirBAparentPowerPhaseA:=Real_0; 4411:PMM[1].VirBAparentPowerPhaseB:=Real_0; 4413:PMM[1].VirBAparentPowerPhaseC:=Real_0; 4415:PMM[1].VirBAverageCurrent_A:=Real_0; 4417:PMM[1].VirBAveragePhaseToNeutral_V:=Real_0; 4419:PMM[1].VirBAveragePhaseToPhase_V:=Real_0; 4421:PMM[1].VirBCurrentInPhaseA_A:=Real_0; 4423:PMM[1].VirBCurrentInPhaseB_A:=Real_0; 4425:PMM[1].VirBCurrentInPhaseC_A:=Real_0; 4427:PMM[1].VirBFrequency_Hz:=Real_0; 4429:PMM[1].VirBPowerFactorSys:=Real_0; 4431:PMM[1].VirBReactiveEnergyConsumed_kVARh:=Real_0; 4433:PMM[1].VirBReactivePowerPhaseA:=Real_0; 4435:PMM[1].VirBReactivePowerPhaseB:=Real_0; 4437:PMM[1].VirBReactivePowerPhaseC:=Real_0; 4439:PMM[1].VirBTotalActivePower_kW:=Real_0; 4441:PMM[1].VirBTotalAparentPower_kVA:=Real_0; 4443:PMM[1].VirBTotalPowerFactor:=Real_0; 4445:PMM[1].VirBTotalReactivePower_kVAR:=Real_0; 4447:PMM[1].VirBVoltageBetweenPhaseAB_V:=Real_0; 4449:PMM[1].VirBVoltageBetweenPhaseAN_V:=Real_0; 4451:PMM[1].VirBVoltageBetweenPhaseBC_V:=Real_0; 4453:PMM[1].VirBVoltageBetweenPhaseBN_V:=Real_0; 4455:PMM[1].VirBVoltageBetweenPhaseCA_V:=Real_0; 4457:PMM[1].VirBVoltageBetweenPhaseCN_V:=Real_0; 4459:PMM[1].VoltageBetweenPhaseAB_V:=Real_0; 4461:PMM[1].VoltageBetweenPhaseAN_V:=Real_0; 4463:PMM[1].VoltageBetweenPhaseBC_V:=Real_0; 4465:PMM[1].VoltageBetweenPhaseBN_V:=Real_0; 4467:PMM[1].VoltageBetweenPhaseCA_V:=Real_0; 4469:PMM[1].VoltageBetweenPhaseCN_V:=Real_0; 4471:PMMfaza01:=Real_0; 4473:PMMfaza02:=Real_0; 4475:PMMfaza03:=Real_0; 4477:PMMfaza04:=Real_0; 4479:PMMfaza05:=Real_0; 4481:PMMfaza06:=Real_0; 4483:PMMfaza07:=Real_0; 4485:PMMfaza08:=Real_0; 4487:PMMfaza09:=Real_0; 4489:PMMfaza10:=Real_0; 4491:PMMfaza11:=Real_0; 4493:PMMfaza12:=Real_0; 4495:PMMfaza13:=Real_0; 4497:PMMfaza14:=Real_0; 4499:PMMfaza15:=Real_0; 4501:PMMfaza16:=Real_0; 4503:PMMfaza17:=Real_0; 4505:PMMfaza18:=Real_0; 4507:PMMfaza19:=Real_0; 4509:PMMfaza20:=Real_0; 4511:PMMfaza21:=Real_0; 4513:PMMfaza22:=Real_0; 4515:PMMfaza23:=Real_0; 4517:PMMfaza24:=Real_0; 4519:PMMfaza25:=Real_0; 4521:PMMfaza26:=Real_0; 4523:PMMfaza27:=Real_0; 4525:PMMfaza28:=Real_0; 4527:PMMfaza29:=Real_0; 4529:PMMfaza30:=Real_0; 4531:PMMfaza31:=Real_0; 4533:PMMfaza32:=Real_0; 4535:PMMfaza33:=Real_0; 4537:PMMfaza34:=Real_0; 4539:PMMfaza35:=Real_0; 4541:PMMfaza36:=Real_0; 4543:PMMfaza37:=Real_0; 4545:PMMfaza38:=Real_0; 4547:PMMfaza39:=Real_0; 4549:PMMfaza40:=Real_0; 4551:PMMfaza41:=Real_0; 4553:PMMfaza42:=Real_0; 4555:UPS[1].EstimatedChargeRemaining:=Real_0; 4557:UPS[1].EstimatedMinutesRemaining:=Real_0; 4559:UPS[1].IzhodMocL1:=Real_0; 4561:UPS[1].IzhodMocL2:=Real_0; 4563:UPS[1].IzhodMocL3:=Real_0; 4565:UPS[1].NapetostBaterije:=Real_0; 4567:UPS[1].TemperaturaBaterije:=Real_0; 4569:UPS[1].VhodFrekvencaL1:=Real_0; 4571:UPS[1].VhodFrekvencaL2:=Real_0; 4573:UPS[1].VhodFrekvencaL3:=Real_0; 4575:UPS[1].VhodNapetostL1:=Real_0; 4577:UPS[1].VhodNapetostL2:=Real_0; 4579:UPS[1].VhodNapetostL3:=Real_0; 4581:UPS[2].EstimatedChargeRemaining:=Real_0; 4583:UPS[2].EstimatedMinutesRemaining:=Real_0; 4585:UPS[2].IzhodMocL1:=Real_0; 4587:UPS[2].IzhodMocL2:=Real_0; 4589:UPS[2].IzhodMocL3:=Real_0; 4591:UPS[2].NapetostBaterije:=Real_0; 4593:UPS[2].TemperaturaBaterije:=Real_0; 4595:UPS[2].VhodFrekvencaL1:=Real_0; 4597:UPS[2].VhodFrekvencaL2:=Real_0; 4599:UPS[2].VhodFrekvencaL3:=Real_0; 4601:UPS[2].VhodNapetostL1:=Real_0; 4603:UPS[2].VhodNapetostL2:=Real_0; 4605:UPS[2].VhodNapetostL3:=Real_0; 4607:XVHdepltedBatery1:=Real_0; 4609:XVHdepltedBatery2:=Real_0; 4611:XVHlowBatery1:=Real_0; 4613:XVHlowBatery2:=Real_0; 4615:PMMskupniTokA:=Real_0; 4617:PMMskupniTokB:=Real_0; 4619:UPS[3].EstimatedChargeRemaining:=Real_0; 4621:UPS[3].EstimatedMinutesRemaining:=Real_0; 4623:UPS[3].IzhodMocL1:=Real_0; 4625:UPS[3].IzhodMocL2:=Real_0; 4627:UPS[3].IzhodMocL3:=Real_0; 4629:UPS[3].NapetostBaterije:=Real_0; 4631:UPS[3].TemperaturaBaterije:=Real_0; 4633:UPS[3].VhodFrekvencaL1:=Real_0; 4635:UPS[3].VhodFrekvencaL2:=Real_0; 4637:UPS[3].VhodFrekvencaL3:=Real_0; 4639:UPS[3].VhodNapetostL1:=Real_0; 4641:UPS[3].VhodNapetostL2:=Real_0; 4643:UPS[3].VhodNapetostL3:=Real_0; 4645:Circ[1].MaximumDemandA2:=Real_0; 4647:Circ[1].MaximumDemandA3:=Real_0; 4649:Circ[1].RazEner_D_SCADA:=Real_0; 4651:Circ[1].RazEner_T_SCADA:=Real_0; 4653:Circ[1].RazEner_M_SCADA:=Real_0; END_CASE,  mod_Write_String$K $KPFUNCTION 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_CASEmod_Write_Word$K $KNFUNCTION 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:ErrorComCirc[1].Code[10]:=Byte_0; 8:ErrorComCirc[1].Code[11]:=Byte_0; 9:ErrorComCirc[1].Code[12]:=Byte_0; 10:ErrorComCirc[1].Code[13]:=Byte_0; 11:ErrorComCirc[1].Code[14]:=Byte_0; 12:ErrorComCirc[1].Code[15]:=Byte_0; 13:ErrorComCirc[1].Code[1]:=Byte_0; 14:ErrorComCirc[1].Code[2]:=Byte_0; 15:ErrorComCirc[1].Code[3]:=Byte_0; 16:ErrorComCirc[1].Code[4]:=Byte_0; 17:ErrorComCirc[1].Code[5]:=Byte_0; 18:ErrorComCirc[1].Code[6]:=Byte_0; 19:ErrorComCirc[1].Code[7]:=Byte_0; 20:ErrorComCirc[1].Code[8]:=Byte_0; 21:ErrorComCirc[1].Code[9]:=Byte_0; 22:ErrorComCirc[1].Status:=Word_01; 23:ErrorComKlima[1].Code[10]:=Byte_0; 24:ErrorComKlima[1].Code[11]:=Byte_0; 25:ErrorComKlima[1].Code[12]:=Byte_0; 26:ErrorComKlima[1].Code[13]:=Byte_0; 27:ErrorComKlima[1].Code[14]:=Byte_0; 28:ErrorComKlima[1].Code[15]:=Byte_0; 29:ErrorComKlima[1].Code[1]:=Byte_0; 30:ErrorComKlima[1].Code[2]:=Byte_0; 31:ErrorComKlima[1].Code[3]:=Byte_0; 32:ErrorComKlima[1].Code[4]:=Byte_0; 33:ErrorComKlima[1].Code[5]:=Byte_0; 34:ErrorComKlima[1].Code[6]:=Byte_0; 35:ErrorComKlima[1].Code[7]:=Byte_0; 36:ErrorComKlima[1].Code[8]:=Byte_0; 37:ErrorComKlima[1].Code[9]:=Byte_0; 38:ErrorComKlima[1].Status:=Word_01; 39:ErrorComKlima[2].Code[10]:=Byte_0; 40:ErrorComKlima[2].Code[11]:=Byte_0; 41:ErrorComKlima[2].Code[12]:=Byte_0; 42:ErrorComKlima[2].Code[13]:=Byte_0; 43:ErrorComKlima[2].Code[14]:=Byte_0; 44:ErrorComKlima[2].Code[15]:=Byte_0; 45:ErrorComKlima[2].Code[1]:=Byte_0; 46:ErrorComKlima[2].Code[2]:=Byte_0; 47:ErrorComKlima[2].Code[3]:=Byte_0; 48:ErrorComKlima[2].Code[4]:=Byte_0; 49:ErrorComKlima[2].Code[5]:=Byte_0; 50:ErrorComKlima[2].Code[6]:=Byte_0; 51:ErrorComKlima[2].Code[7]:=Byte_0; 52:ErrorComKlima[2].Code[8]:=Byte_0; 53:ErrorComKlima[2].Code[9]:=Byte_0; 54:ErrorComKlima[2].Status:=Word_01; 55:ErrorComPMM[1].Code[10]:=Byte_0; 56:ErrorComPMM[1].Code[11]:=Byte_0; 57:ErrorComPMM[1].Code[12]:=Byte_0; 58:ErrorComPMM[1].Code[13]:=Byte_0; 59:ErrorComPMM[1].Code[14]:=Byte_0; 60:ErrorComPMM[1].Code[15]:=Byte_0; 61:ErrorComPMM[1].Code[1]:=Byte_0; 62:ErrorComPMM[1].Code[2]:=Byte_0; 63:ErrorComPMM[1].Code[3]:=Byte_0; 64:ErrorComPMM[1].Code[4]:=Byte_0; 65:ErrorComPMM[1].Code[5]:=Byte_0; 66:ErrorComPMM[1].Code[6]:=Byte_0; 67:ErrorComPMM[1].Code[7]:=Byte_0; 68:ErrorComPMM[1].Code[8]:=Byte_0; 69:ErrorComPMM[1].Code[9]:=Byte_0; 70:ErrorComPMM[1].Status:=Word_01; 71:ErrorComUPS[1].Code[10]:=Byte_0; 72:ErrorComUPS[1].Code[11]:=Byte_0; 73:ErrorComUPS[1].Code[12]:=Byte_0; 74:ErrorComUPS[1].Code[13]:=Byte_0; 75:ErrorComUPS[1].Code[14]:=Byte_0; 76:ErrorComUPS[1].Code[15]:=Byte_0; 77:ErrorComUPS[1].Code[1]:=Byte_0; 78:ErrorComUPS[1].Code[2]:=Byte_0; 79:ErrorComUPS[1].Code[3]:=Byte_0; 80:ErrorComUPS[1].Code[4]:=Byte_0; 81:ErrorComUPS[1].Code[5]:=Byte_0; 82:ErrorComUPS[1].Code[6]:=Byte_0; 83:ErrorComUPS[1].Code[7]:=Byte_0; 84:ErrorComUPS[1].Code[8]:=Byte_0; 85:ErrorComUPS[1].Code[9]:=Byte_0; 86:ErrorComUPS[1].Status:=Word_01; 87:ErrorComUPS[2].Code[10]:=Byte_0; 88:ErrorComUPS[2].Code[11]:=Byte_0; 89:ErrorComUPS[2].Code[12]:=Byte_0; 90:ErrorComUPS[2].Code[13]:=Byte_0; 91:ErrorComUPS[2].Code[14]:=Byte_0; 92:ErrorComUPS[2].Code[15]:=Byte_0; 93:ErrorComUPS[2].Code[1]:=Byte_0; 94:ErrorComUPS[2].Code[2]:=Byte_0; 95:ErrorComUPS[2].Code[3]:=Byte_0; 96:ErrorComUPS[2].Code[4]:=Byte_0; 97:ErrorComUPS[2].Code[5]:=Byte_0; 98:ErrorComUPS[2].Code[6]:=Byte_0; 99:ErrorComUPS[2].Code[7]:=Byte_0; 100:ErrorComUPS[2].Code[8]:=Byte_0; 101:ErrorComUPS[2].Code[9]:=Byte_0; 102:ErrorComUPS[2].Status:=Word_01; 103:ErrorComUPSMGE[1].Code[10]:=Byte_0; 104:ErrorComUPSMGE[1].Code[11]:=Byte_0; 105:ErrorComUPSMGE[1].Code[12]:=Byte_0; 106:ErrorComUPSMGE[1].Code[13]:=Byte_0; 107:ErrorComUPSMGE[1].Code[14]:=Byte_0; 108:ErrorComUPSMGE[1].Code[15]:=Byte_0; 109:ErrorComUPSMGE[1].Code[1]:=Byte_0; 110:ErrorComUPSMGE[1].Code[2]:=Byte_0; 111:ErrorComUPSMGE[1].Code[3]:=Byte_0; 112:ErrorComUPSMGE[1].Code[4]:=Byte_0; 113:ErrorComUPSMGE[1].Code[5]:=Byte_0; 114:ErrorComUPSMGE[1].Code[6]:=Byte_0; 115:ErrorComUPSMGE[1].Code[7]:=Byte_0; 116:ErrorComUPSMGE[1].Code[8]:=Byte_0; 117:ErrorComUPSMGE[1].Code[9]:=Byte_0; 118:ErrorComUPSMGE[1].Status:=Word_01; 119:HIA1_vlaga_s:=Word_01; 120:HIA2_vlaga_s:=Word_01; 121:HIA3_vlaga_s:=Word_01; 122:HIA4_vlaga_s:=Word_01; 123:HIA5_vlaga_s:=Word_01; 124:HIA6_vlaga_s:=Word_01; 125:HIA7_vlaga_s:=Word_01; 126:Klima[1].Analog_izh_mesanje:=Word_01; 127:Klima[1].Analog_izh_rekuperator:=Word_01; 128:Klima[1].Analog_izh_VentGrelnika:=Word_01; 129:Klima[1].Analog_izh_VentHlajenja:=Word_01; 130:Klima[1].Dejanska_zel_temp:=Word_01; 131:Klima[1].Hitrost_del_vent_disp:=Word_01; 132:Klima[1].Max_vpih:=Word_01; 133:Klima[1].Min_vpih:=Word_01; 134:Klima[1].Obrat_ure_Vent_h1:=Word_01; 135:Klima[1].Obrat_ure_Vent_h2:=Word_01; 136:Klima[1].Pol_komp_konec:=Word_01; 137:Klima[1].Pol_komp_sprem_zel_vr:=Word_01; 138:Klima[1].Pol_komp_zacetek:=Word_01; 139:Klima[1].PreklopHitDelVent:=Word_01; 140:Klima[1].Protizamrz_zascita:=Word_01; 141:Klima[1].Rezim_delovanja:=Word_01; 142:Klima[1].Temperatura_dovoda:=Word_01; 143:Klima[1].Temperatura_prostora:=Word_01; 144:Klima[1].TempPredPloscnimRekup:=Word_01; 145:Klima[1].TempZaPloscnimRekup:=Word_01; 146:Klima[1].Vlaga_v_prostoru:=Word_01; 147:Klima[1].VlagaVstopZrakaProstor:=Word_01; 148:Klima[1].Zel_temp_eko_gretja:=Word_01; 149:Klima[1].Zel_temp_eko_hlajenja:=Word_01; 150:Klima[1].Zel_temp_komf_gretja:=Word_01; 151:Klima[1].Zel_temp_komf_hlajenja:=Word_01; 152:Klima[1].Zim_komp_konec:=Word_01; 153:Klima[1].Zim_komp_sprem_zel_vr:=Word_01; 154:Klima[1].Zim_komp_zacetek:=Word_01; 155:Klima[1].ZimKompMinVpihKonec:=Word_01; 156:Klima[1].ZimKompMinVpihZac:=Word_01; 157:Klima[1].ZkompMinVpihSpremZelVr:=Word_01; 158:Klima[1].Zunanja_temp:=Word_01; 159:Klima[2].Analog_izh_mesanje:=Word_01; 160:Klima[2].Analog_izh_rekuperator:=Word_01; 161:Klima[2].Analog_izh_VentGrelnika:=Word_01; 162:Klima[2].Analog_izh_VentHlajenja:=Word_01; 163:Klima[2].Dejanska_zel_temp:=Word_01; 164:Klima[2].Hitrost_del_vent_disp:=Word_01; 165:Klima[2].Max_vpih:=Word_01; 166:Klima[2].Min_vpih:=Word_01; 167:Klima[2].Obrat_ure_Vent_h1:=Word_01; 168:Klima[2].Obrat_ure_Vent_h2:=Word_01; 169:Klima[2].Pol_komp_konec:=Word_01; 170:Klima[2].Pol_komp_sprem_zel_vr:=Word_01; 171:Klima[2].Pol_komp_zacetek:=Word_01; 172:Klima[2].PreklopHitDelVent:=Word_01; 173:Klima[2].Protizamrz_zascita:=Word_01; 174:Klima[2].Rezim_delovanja:=Word_01; 175:Klima[2].Temperatura_dovoda:=Word_01; 176:Klima[2].Temperatura_prostora:=Word_01; 177:Klima[2].TempPredPloscnimRekup:=Word_01; 178:Klima[2].TempZaPloscnimRekup:=Word_01; 179:Klima[2].Vlaga_v_prostoru:=Word_01; 180:Klima[2].VlagaVstopZrakaProstor:=Word_01; 181:Klima[2].Zel_temp_eko_gretja:=Word_01; 182:Klima[2].Zel_temp_eko_hlajenja:=Word_01; 183:Klima[2].Zel_temp_komf_gretja:=Word_01; 184:Klima[2].Zel_temp_komf_hlajenja:=Word_01; 185:Klima[2].Zim_komp_konec:=Word_01; 186:Klima[2].Zim_komp_sprem_zel_vr:=Word_01; 187:Klima[2].Zim_komp_zacetek:=Word_01; 188:Klima[2].ZimKompMinVpihKonec:=Word_01; 189:Klima[2].ZimKompMinVpihZac:=Word_01; 190:Klima[2].ZkompMinVpihSpremZelVr:=Word_01; 191:Klima[2].Zunanja_temp:=Word_01; 192:KlimaIzklopObrUre:=Word_01; 193:PMM[1].AlarmPhase[1].GlobalAlarmReg:=Word_01; 194:PMM[1].AlarmPhase[2].GlobalAlarmReg:=Word_01; 195:PMM[1].AlarmPhase[3].GlobalAlarmReg:=Word_01; 196:Q12stanje:=Byte_0; 197:TempHistereza:=Word_01; 198:TempPovp234:=Word_01; 199:TempPovp234Alarm:=Word_01; 200:TempPovp56:=Word_01; 201:TempPovp56Alarm:=Word_01; 202:TempZaVklopKlim1:=Word_01; 203:TempZaVklopKlim2:=Word_01; 204:TIA1_alarm:=Word_01; 205:TIA1_temp_s:=Word_01; 206:TIA2_alarm:=Word_01; 207:TIA2_temp_s:=Word_01; 208:TIA3_alarm:=Word_01; 209:TIA3_temp_s:=Word_01; 210:TIA4_alarm:=Word_01; 211:TIA4_temp_s:=Word_01; 212:TIA5_alarm:=Word_01; 213:TIA5_temp_s:=Word_01; 214:TIA6_alarm:=Word_01; 215:TIA6_temp_s:=Word_01; 216:TIA7_alarm:=Word_01; 217:TIA7_temp_s:=Word_01; 218:UPS[1].InverterStatus:=Word_01; 219:UPS[1].OutputStatus:=Word_01; 220:UPS[1].SteviloIzpadovVhodneLinije:=Word_01; 221:UPS[1].UnitStatus:=Word_01; 222:UPS[2].InverterStatus:=Word_01; 223:UPS[2].OutputStatus:=Word_01; 224:UPS[2].SteviloIzpadovVhodneLinije:=Word_01; 225:UPS[2].UnitStatus:=Word_01; 226:UPS_MGE[1].BatteryBackupTime:=Word_01; 227:UPS_MGE[1].BatteryChargingLevel:=Word_01; 228:UPS_MGE[1].BatteryRechargeDuration:=Word_01; 229:UPS_MGE[1].I1output:=Word_01; 230:UPS_MGE[1].I2output:=Word_01; 231:UPS_MGE[1].I3output:=Word_01; 232:UPS_MGE[1].InverterFrequency:=Word_01; 233:UPS_MGE[1].OutputActivePower1:=Word_01; 234:UPS_MGE[1].OutputActivePower2:=Word_01; 235:UPS_MGE[1].OutputActivePower3:=Word_01; 236:UPS_MGE[1].OutputFrequency:=Word_01; 237:UPS_MGE[1].OutputLoadLevel:=Word_01; 238:UPS_MGE[1].StatusBaterije:=Byte_0; 239:UPS_MGE[1].U12mains1:=Word_01; 240:UPS_MGE[1].U12mains2:=Word_01; 241:UPS_MGE[1].U1N_inverter:=Word_01; 242:UPS_MGE[1].U1N_output:=Word_01; 243:UPS_MGE[1].U23mains1:=Word_01; 244:UPS_MGE[1].U23mains2:=Word_01; 245:UPS_MGE[1].U2N_inverter:=Word_01; 246:UPS_MGE[1].U2N_output:=Word_01; 247:UPS_MGE[1].U31mains1:=Word_01; 248:UPS_MGE[1].U31mains2:=Word_01; 249:UPS_MGE[1].U3N_inverter:=Word_01; 250:UPS_MGE[1].U3N_output:=Word_01; 251:UPS_MGE[1].U_battery:=Word_01; 252:UserCurrentLevel:=Byte_0; 253:XVH_UPSstatus:=Byte_0; 254:UPS[3].InverterStatus:=Word_01; 255:UPS[3].OutputStatus:=Word_01; 256:UPS[3].SteviloIzpadovVhodneLinije:=Word_01; 257:UPS[3].UnitStatus:=Word_01; (*Pisanje UINT*) (**) 6000:kom_nast_cas_izpada:=Word_01; 6001:PMM[1].AlarmPhase[1].C01_16_60to80:=Word_01; 6002:PMM[1].AlarmPhase[1].C01_16_over80:=Word_01; 6003:PMM[1].AlarmPhase[1].C17_32_60to80:=Word_01; 6004:PMM[1].AlarmPhase[1].C17_32_over80:=Word_01; 6005:PMM[1].AlarmPhase[1].C33_42_60to80:=Word_01; 6006:PMM[1].AlarmPhase[1].C33_42_over80:=Word_01; 6007:PMM[1].AlarmPhase[2].C01_16_60to80:=Word_01; 6008:PMM[1].AlarmPhase[2].C01_16_over80:=Word_01; 6009:PMM[1].AlarmPhase[2].C17_32_60to80:=Word_01; 6010:PMM[1].AlarmPhase[2].C17_32_over80:=Word_01; 6011:PMM[1].AlarmPhase[2].C33_42_60to80:=Word_01; 6012:PMM[1].AlarmPhase[2].C33_42_over80:=Word_01; 6013:PMM[1].AlarmPhase[3].C01_16_60to80:=Word_01; 6014:PMM[1].AlarmPhase[3].C01_16_over80:=Word_01; 6015:PMM[1].AlarmPhase[3].C17_32_60to80:=Word_01; 6016:PMM[1].AlarmPhase[3].C17_32_over80:=Word_01; 6017:PMM[1].AlarmPhase[3].C33_42_60to80:=Word_01; 6018:PMM[1].AlarmPhase[3].C33_42_over80:=Word_01; 6019:UPS[1].StatusBaterije:=Word_01; 6020:UPS[2].StatusBaterije:=Word_01; 6021:K1_obr_u_skupno:=Word_01; 6022:K2_obr_u_skupno:=Word_01; 6023:UPS[3].StatusBaterije:=Word_01; ; END_CASE], ModBus_CP2$K $K!llyFUNCTION_BLOCK ModBus_CP2 VAR_INPUT END_VAR VAR_OUTPUT END_VAR VAR {flag noread,nowrite on} ModBusComm:ModBusM_RW; Registers: ARRAY[1..120] OF WORD; (* Registers *) Coils: ARRAY[1..1200] OF BOOL; (* Coils *) DataReady:BOOL; DataIndex:BYTE; Ind1,Ind2,Dev:BYTE; {flag off} index: BYTE; UPSno: INT:=3; TmpW:WORD; END_VAR VAR_IN_OUT ComPort:MComPortParam; Transactions: ARRAY[1..40] OF MModMasterDefinition; WriteTrans: ARRAY[1..40] OF MModMasterWriteDef; END_VAR RModBusComm( Enable:=TRUE , ComPort:=ComPort , Reset:= , Registers:=Registers, Coils:=Coils, Transactions:=Transactions , WriteTrans:=WriteTrans , Q_ComPortActiv=> , Q_ComPortError=>ComPort.Error, Q_WriteCycleON=> , Q_WriteFinished=> , Q_WriteIndex=> , Q_ReadFinished=> , Q_NewDataReady=>DataReady , Q_ReadIndex=>DataIndex , Q_TransError=> ); IF DataReady THEN CASE DataIndex OF 1:(* Circutor registers 1-40 *) Dev:=1; Circ[Dev].Napetost_L1_N:=CircutorValue(Registers[1],Registers[2])/10; Circ[Dev].Tok_L1:= CircutorValue(Registers[3],Registers[4])/1000; Circ[Dev].DelovnaMoc_L1:= CircutorValue(Registers[5],Registers[6])/1000; Circ[Dev].JalovaMoc_L1:= CircutorValue(Registers[7],Registers[8])/1000; Circ[Dev].PowerFactor_L1:=CircutorValue(Registers[9],Registers[10])/100; Circ[Dev].Napetost_L2_N:= CircutorValue(Registers[11],Registers[12])/10; Circ[Dev].Tok_L2:= CircutorValue(Registers[13],Registers[14])/1000; Circ[Dev].DelovnaMoc_L2:= CircutorValue(Registers[15],Registers[16])/1000; Circ[Dev].JalovaMoc_L2:= CircutorValue(Registers[17],Registers[18])/1000; Circ[Dev].PowerFactor_L2:= CircutorValue(Registers[19],Registers[20])/100; Circ[Dev].Napetost_L3_N:=CircutorValue(Registers[21],Registers[22])/10; Circ[Dev].Tok_L3:= CircutorValue(Registers[23],Registers[24])/1000; Circ[Dev].DelovnaMoc_L3:= CircutorValue(Registers[25],Registers[26])/1000; Circ[Dev].JalovaMoc_L3:= CircutorValue(Registers[27],Registers[28])/1000; Circ[Dev].PowerFactor_L3:=CircutorValue(Registers[29],Registers[30])/100; Circ[Dev].DelovnaMoc_III:= CircutorValue(Registers[31],Registers[32])/1000; Circ[Dev].InduktivnaMoc_III:= CircutorValue(Registers[33],Registers[34])/1000; Circ[Dev].KapacitivnaMoc_III:= CircutorValue(Registers[35],Registers[36])/1000; Circ[Dev].CosFi_III:=CircutorValue(Registers[37],Registers[38])/100; Circ[Dev].PowerFactor_III:=CircutorValue(Registers[39],Registers[40])/100; 2:(* Circutor registers 41-85 *) Dev:=1; Circ[Dev].Frekvenca_L1:=CircutorValue(Registers[1],Registers[2])/10; Circ[Dev].Napetost_L1_L2:=CircutorValue(Registers[3],Registers[4])/10; Circ[Dev].Napetost_L2_L3:=CircutorValue(Registers[5],Registers[6])/10; Circ[Dev].Napetost_L3_L1:= CircutorValue(Registers[7],Registers[8])/10; Circ[Dev].THDV_L1:= CircutorValue(Registers[9],Registers[10])/10; Circ[Dev].THDV_L2:= CircutorValue(Registers[11],Registers[12])/10; Circ[Dev].THDV_L3:= CircutorValue(Registers[13],Registers[14])/10; Circ[Dev].THDI_L1:= CircutorValue(Registers[15],Registers[16])/10; Circ[Dev].THDI_L2:=CircutorValue(Registers[17],Registers[18])/10; Circ[Dev].THDI_L3:= CircutorValue(Registers[19],Registers[20])/10; Circ[Dev].DelovnaEnergija:= CircutorValue(Registers[21],Registers[22])/1000; Circ[Dev].InduktivnaEnergija:= CircutorValue(Registers[23],Registers[24])/1000; Circ[Dev].KapacitivnaEnergija:= CircutorValue(Registers[25],Registers[26])/1000; Circ[Dev].NavideznaMoc_III:= CircutorValue(Registers[27],Registers[28])/1000; (*Circ[Dev].MaximumDemand:= CircutorValue(Registers[29],Registers[30])/1000; *) Circ[Dev].TokPovprecje_III:= CircutorValue(Registers[31],Registers[32])/1000; Circ[Dev].NicelniTok:= CircutorValue(Registers[33],Registers[34])/1000; 3,6: (* Klima Registers 1*) Dev:=DataIndex/3; Klima[Dev].Temperatura_prostora:=Registers[1]; Klima[Dev].Temperatura_dovoda:=Registers[2]; Klima[Dev].Protizamrz_zascita:=Registers[4]; Klima[Dev].Zunanja_temp:=Registers[5]; Klima[Dev].Zel_temp_eko_hlajenja:=Registers[25]; Klima[Dev].Zel_temp_eko_gretja:=Registers[26]; Klima[Dev].Zel_temp_komf_hlajenja:=Registers[27]; Klima[Dev].Zel_temp_komf_gretja:=Registers[28]; Klima[Dev].Pol_komp_zacetek:=Registers[31]; Klima[Dev].Pol_komp_konec:=Registers[32]; Klima[Dev].Pol_komp_sprem_zel_vr:=Registers[33]; Klima[Dev].Zim_komp_zacetek:=Registers[34]; Klima[Dev].Zim_komp_konec:=Registers[35]; Klima[Dev].Zim_komp_sprem_zel_vr:=Registers[36]; Klima[Dev].ZimKompMinVpihZac:=Registers[37]; Klima[Dev].ZimKompMinVpihKonec:=Registers[38]; Klima[Dev].ZkompMinVpihSpremZelVr :=Registers[39]; Klima[Dev].Min_vpih :=Registers[40]; Klima[Dev].Max_vpih :=Registers[41]; Klima[Dev].Dejanska_zel_temp :=Registers[49]; Klima[Dev].Analog_izh_VentGrelnika :=Registers[51]; Klima[Dev].Analog_izh_VentHlajenja :=Registers[52]; Klima[Dev].Analog_izh_rekuperator :=Registers[53]; Klima[Dev].Analog_izh_mesanje :=Registers[54]; Klima[Dev].TempPredPloscnimRekup :=Registers[55]; Klima[Dev].TempZaPloscnimRekup :=Registers[56]; 4,7: (* Klima Registers 2*) Dev:=(DataIndex - 1)/3; Klima[Dev].Hitrost_del_vent_disp :=Registers[1]; Klima[Dev].PreklopHitDelVent :=Registers[2]; Klima[Dev].Rezim_delovanja :=Registers[10]; Klima[Dev].Obrat_ure_Vent_h1 :=Registers[11]; Klima[Dev].Obrat_ure_Vent_h2 :=Registers[12]; 5,8: (* Klima Colis *) Dev:=(DataIndex - 2)/3; Klima[Dev].Alarm_pozar :=Coils[1]; Klima[Dev].Ni_pretoka :=Coils[2]; Klima[Dev].PreobMotVent :=Coils[3]; Klima[Dev].PreobMotCrpGrel :=Coils[4]; Klima[Dev].ProtizamrzZascAktivna :=Coils[5]; Klima[Dev].ZamasenostFiltra :=Coils[12]; Klima[Dev].ZdruzAlarmA :=Coils[13]; Klima[Dev].ZdruzAlarmB :=Coils[14]; Klima[Dev].VklopRegKlimata :=Coils[29]; Klima[Dev].DelVentHit1 :=Coils[33]; (* spremenjeno v delovanje kompresor 1*) Klima[Dev].DelVentHit2 :=Coils[34]; (* spremenjeno v delovanje kompresor 2*) Klima[Dev].OkvaraVlazNap :=Coils[48]; Klima[Dev].OkvaraRototerm :=Coils[51]; 9: (* UPS MGE GALAXY 3000 registers *) Dev:=1; UPS_MGE[Dev].UPS_coupled:=Registers[1].1; UPS_MGE[Dev].UPS_error:=Registers[13].1; UPS_MGE[Dev].UPS_in_backup:=Registers[1].4; UPS_MGE[Dev].BatteryLowWarning:=Registers[1].5; UPS_MGE[Dev].DeviceVentilationFault:=Registers[1].14; UPS_MGE[Dev].ManualBypassSwitch:=Registers[2].6; UPS_MGE[Dev].BatteryCompInProgress:=Registers[3].5; UPS_MGE[Dev].BatteryTempOutOfToler:=Registers[3].10; UPS_MGE[Dev].BatteryFuseFault:=Registers[3].11; UPS_MGE[Dev].BatteryCircuitBreaker:=Registers[3].15; UPS_MGE[Dev].RectifierOn:=Registers[5].2; UPS_MGE[Dev].Mains1VoltOutOfToler:=Registers[5].8; UPS_MGE[Dev].RectifierThermOverload:=Registers[5].12; UPS_MGE[Dev].MaintenancePosition:=Registers[7].1; UPS_MGE[Dev].Mains2Overload:=Registers[7].5; UPS_MGE[Dev].Mains2VoltOutOfToler:=Registers[7].10; UPS_MGE[Dev].BypassInFreeFrequency:=Registers[8].8; UPS_MGE[Dev].ChargerGeneralFault:=Registers[10].0; UPS_MGE[Dev].BatteryChargedState:=Registers[10].3; UPS_MGE[Dev].InverterOverload:=Registers[13].2; UPS_MGE[Dev].InverterThermalOverload:=Registers[13].3; UPS_MGE[Dev].OutputThermalOverload:=Registers[14].15; UPS_MGE[Dev].OutputOverload:=Registers[16].0; UPS_MGE[Dev].InverterFuseFault:=Registers[13].5; UPS_MGE[Dev].OutputInShortCircuit:=Registers[16].1; 10: (* UPS MGE GALAXY 3000 registers *) Dev:=1; UPS_MGE[Dev].I1output:=Registers[10]; UPS_MGE[Dev].I2output:=Registers[11]; UPS_MGE[Dev].I3output:=Registers[12]; UPS_MGE[Dev].U12mains1:=Registers[22]; UPS_MGE[Dev].U23mains1:=Registers[23]; UPS_MGE[Dev].U31mains1:=Registers[24]; UPS_MGE[Dev].U1N_inverter:=Registers[25]; UPS_MGE[Dev].U2N_inverter:=Registers[26]; UPS_MGE[Dev].U3N_inverter:=Registers[27]; UPS_MGE[Dev].U12mains2:=Registers[34]; UPS_MGE[Dev].U23mains2:=Registers[35]; UPS_MGE[Dev].U31mains2:=Registers[36]; UPS_MGE[Dev].U1N_output:=Registers[37]; UPS_MGE[Dev].U2N_output:=Registers[38]; UPS_MGE[Dev].U3N_output:=Registers[39]; 11: (* UPS MGE GALAXY 3000 registers *) Dev:=1; UPS_MGE[Dev].U_battery:=Registers[6]; UPS_MGE[Dev].OutputActivePower1:=Registers[9]; UPS_MGE[Dev].OutputActivePower2:=Registers[10]; UPS_MGE[Dev].OutputActivePower3:=Registers[11]; UPS_MGE[Dev].OutputLoadLevel:=Registers[18]; UPS_MGE[Dev].InverterFrequency:=Registers[24]; UPS_MGE[Dev].OutputFrequency:=Registers[26]; UPS_MGE[Dev].BatteryBackupTime:=Registers[34]; UPS_MGE[Dev].BatteryChargingLevel:=Registers[36]; UPS_MGE[Dev].BatteryRechargeDuration:=Registers[40]; 12: (* PMM 2X17 registers *) FOR Ind2:=1 TO 42 DO PMM[1].Phase[1].Current[Ind2]:=(INT_TO_REAL(Registers[Ind2]))/1000; END_FOR; 13: (* PMM 2X17 registers *) Dev:=1; PMM[Dev].AlarmPhase[1].C01_16_60to80:=Registers[1]; PMM[Dev].AlarmPhase[1].C17_32_60to80:=Registers[2]; PMM[Dev].AlarmPhase[1].C33_42_60to80:=Registers[3]; 14: (* PMM 2X17 registers *) Dev:=1; PMM[Dev].AlarmPhase[1].C01_16_over80:=Registers[1]; PMM[Dev].AlarmPhase[1].C17_32_over80:=Registers[2]; PMM[Dev].AlarmPhase[1].C33_42_over80:=Registers[3]; (* 15: (* PMM 2X17 registers *) (* odpade*) Dev:=1; PMM[Dev].VirA_Usys:=(INT_TO_REAL( Registers[1])+INT_TO_REAL(Registers[2])*65536)/10; PMM[Dev].VirA_Isys:=(INT_TO_REAL( Registers[3])+INT_TO_REAL(Registers[4])*65536)/10; PMM[Dev].VirA_Psys:=(INT_TO_REAL( Registers[5])+INT_TO_REAL(Registers[6])*65536)/10; PMM[Dev].VirA_Ssys:=(INT_TO_REAL( Registers[7])+INT_TO_REAL(Registers[8])*65536)/10; PMM[Dev].VirA_Qsys:=(INT_TO_REAL( Registers[9])+INT_TO_REAL(Registers[10])*65536)/10; PMM[Dev].VirA_PFsys:=(INT_TO_REAL( Registers[11])+INT_TO_REAL(Registers[12])*65536)/10; PMM[Dev].VirA_fsys:=(INT_TO_REAL( Registers[13])+INT_TO_REAL(Registers[14])*65536)/10; PMM[Dev].TotalActivePower_kW:=(INT_TO_REAL( Registers[5])+INT_TO_REAL(Registers[6])*65536)/10; PMM[Dev].TotalReactivePower_kVAR:=(INT_TO_REAL( Registers[9])+INT_TO_REAL(Registers[10])*65536)/10; PMM[Dev].TotalAparentPower_kVA:=(INT_TO_REAL( Registers[7])+INT_TO_REAL(Registers[8])*65536)/10; PMM[Dev].TotalPowerFactor:=(INT_TO_REAL( Registers[11])+INT_TO_REAL(Registers[12])*65536)/10; PMM[Dev].AveragePhaseToPhase_V:=(((INT_TO_REAL( Registers[15])+INT_TO_REAL(Registers[16])*65536)/10)+((INT_TO_REAL( Registers[17])+INT_TO_REAL(Registers[18])*65536)/10)+((INT_TO_REAL( Registers[19])+INT_TO_REAL(Registers[20])*65536)/10))/3; PMM[Dev].AveragePhaseToNeutral_V:=( (INT_TO_REAL( Registers[21])+INT_TO_REAL(Registers[22]))/10 + (INT_TO_REAL( Registers[23])+INT_TO_REAL(Registers[24]))/10 + (INT_TO_REAL( Registers[21])+INT_TO_REAL(Registers[26]))/10)/3; PMM[Dev].AverageCurrent_A:=( ( ( INT_TO_REAL( Registers[27])+INT_TO_REAL(Registers[28])*65536)/10) +( ( INT_TO_REAL( Registers[29])+INT_TO_REAL(Registers[30])*65536)/10) +( ( INT_TO_REAL( Registers[31])+INT_TO_REAL(Registers[32])*65536)/10) )/3; PMM[Dev].Frequency_Hz:=(INT_TO_REAL( Registers[13])+INT_TO_REAL(Registers[14])*65536)/10; PMM[Dev].ActivePowerPhaseA_kW:=(INT_TO_REAL( Registers[33])+INT_TO_REAL(Registers[34])*65536)/10; PMM[Dev].ActivePowerPhaseB_kW:=(INT_TO_REAL( Registers[35])+INT_TO_REAL(Registers[36])*65536)/10; PMM[Dev].ActivePowerPhaseC_kW:=(INT_TO_REAL( Registers[37])+INT_TO_REAL(Registers[38])*65536)/10; PMM[Dev].PowerFactorSys:=(INT_TO_REAL( Registers[11])+INT_TO_REAL(Registers[12])*65536)/10; PMM[Dev].VoltageBetweenPhaseAB_V:=(INT_TO_REAL( Registers[15])+INT_TO_REAL(Registers[16])*65536)/10; PMM[Dev].VoltageBetweenPhaseBC_V:=(INT_TO_REAL( Registers[17])+INT_TO_REAL(Registers[18])*65536)/10; PMM[Dev].VoltageBetweenPhaseCA_V:=(INT_TO_REAL( Registers[19])+INT_TO_REAL(Registers[20])*65536)/10; PMM[Dev].VoltageBetweenPhaseAN_V:=(INT_TO_REAL( Registers[21])+INT_TO_REAL(Registers[22])*65536)/10; PMM[Dev].VoltageBetweenPhaseBN_V:=(INT_TO_REAL( Registers[23])+INT_TO_REAL(Registers[24])*65536)/10; PMM[Dev].VoltageBetweenPhaseCN_V:=(INT_TO_REAL( Registers[25])+INT_TO_REAL(Registers[26])*65536)/10; PMM[Dev].CurrentInPhaseA_A:=(INT_TO_REAL( Registers[27])+INT_TO_REAL(Registers[28])*65536)/10; PMM[Dev].CurrentInPhaseB_A:=(INT_TO_REAL( Registers[29])+INT_TO_REAL(Registers[30])*65536)/10; PMM[Dev].CurrentInPhaseC_A:=(INT_TO_REAL( Registers[31])+INT_TO_REAL(Registers[32])*65536)/10; PMM[Dev].AparentPowerPhaseA:=(INT_TO_REAL( Registers[39])+INT_TO_REAL(Registers[40])*65536)/10; PMM[Dev].AparentPowerPhaseB:=(INT_TO_REAL( Registers[41])+INT_TO_REAL(Registers[42])*65536)/10; PMM[Dev].AparentPowerPhaseC:=(INT_TO_REAL( Registers[43])+INT_TO_REAL(Registers[44])*65536)/10; PMM[Dev].ReactivePowerPhaseA:=(INT_TO_REAL( Registers[45])+INT_TO_REAL(Registers[46])*65536)/10; PMM[Dev].ReactivePowerPhaseB:=(INT_TO_REAL( Registers[47])+INT_TO_REAL(Registers[48])*65536)/10; PMM[Dev].ReactivePowerPhaseC:=(INT_TO_REAL( Registers[49])+INT_TO_REAL(Registers[50])*65536)/10; PMM[Dev].ActiveEnergyConsumed_kWh:=(INT_TO_REAL( Registers[51])+INT_TO_REAL(Registers[52])*65536)/10; PMM[Dev].ReactiveEnergyConsumed_kVARh:=(INT_TO_REAL( Registers[53])+INT_TO_REAL(Registers[54])*65536)/10; 16: (* PMM 2X17 registers *) (*odpade*) Dev:=1; PMM[Dev].VirB_Usys:=(INT_TO_REAL( Registers[1])+INT_TO_REAL(Registers[2])*65536)/10; PMM[Dev].VirB_Isys:=(INT_TO_REAL( Registers[3])+INT_TO_REAL(Registers[4])*65536)/10; PMM[Dev].VirB_Psys:=(INT_TO_REAL( Registers[5])+INT_TO_REAL(Registers[6])*65536)/10; PMM[Dev].VirB_Ssys:=(INT_TO_REAL( Registers[7])+INT_TO_REAL(Registers[8])*65536)/10; PMM[Dev].VirB_Qsys:=(INT_TO_REAL( Registers[9])+INT_TO_REAL(Registers[10])*65536)/10; PMM[Dev].VirB_PFsys:=(INT_TO_REAL( Registers[11])+INT_TO_REAL(Registers[12])*65536)/10; PMM[Dev].VirB_fsys:=(INT_TO_REAL( Registers[13])+INT_TO_REAL(Registers[14])*65536)/10; PMM[Dev].VirBTotalActivePower_kW:=(INT_TO_REAL( Registers[5])+INT_TO_REAL(Registers[6])*65536)/10; PMM[Dev].VirBTotalReactivePower_kVAR:=(INT_TO_REAL( Registers[9])+INT_TO_REAL(Registers[10])*65536)/10; PMM[Dev].VirBTotalAparentPower_kVA:=(INT_TO_REAL( Registers[7])+INT_TO_REAL(Registers[8])*65536)/10; PMM[Dev].VirBTotalPowerFactor:=(INT_TO_REAL( Registers[11])+INT_TO_REAL(Registers[12])*65536)/10; PMM[Dev].VirBAveragePhaseToPhase_V:=(((INT_TO_REAL( Registers[15])+INT_TO_REAL(Registers[16])*65536)/10)+((INT_TO_REAL( Registers[17])+INT_TO_REAL(Registers[18])*65536)/10)+((INT_TO_REAL( Registers[19])+INT_TO_REAL(Registers[20])*65536)/10))/3; PMM[Dev].VirBAveragePhaseToNeutral_V:=( (INT_TO_REAL( Registers[21])+INT_TO_REAL(Registers[22]))/10 + (INT_TO_REAL( Registers[23])+INT_TO_REAL(Registers[24]))/10 + (INT_TO_REAL( Registers[21])+INT_TO_REAL(Registers[26]))/10)/3; PMM[Dev].VirBAverageCurrent_A:=( ( ( INT_TO_REAL( Registers[27])+INT_TO_REAL(Registers[28])*65536)/10) +( ( INT_TO_REAL( Registers[29])+INT_TO_REAL(Registers[30])*65536)/10) +( ( INT_TO_REAL( Registers[31])+INT_TO_REAL(Registers[32])*65536)/10) )/3; PMM[Dev].VirBFrequency_Hz:=(INT_TO_REAL( Registers[13])+INT_TO_REAL(Registers[14])*65536)/10; PMM[Dev].VirBActivePowerPhaseA_kW:=(INT_TO_REAL( Registers[33])+INT_TO_REAL(Registers[34])*65536)/10; PMM[Dev].VirBActivePowerPhaseB_kW:=(INT_TO_REAL( Registers[35])+INT_TO_REAL(Registers[36])*65536)/10; PMM[Dev].VirBActivePowerPhaseC_kW:=(INT_TO_REAL( Registers[37])+INT_TO_REAL(Registers[38])*65536)/10; PMM[Dev].VirBPowerFactorSys:=(INT_TO_REAL( Registers[11])+INT_TO_REAL(Registers[12])*65536)/10; PMM[Dev].VirBVoltageBetweenPhaseAB_V:=(INT_TO_REAL( Registers[15])+INT_TO_REAL(Registers[16])*65536)/10; PMM[Dev].VirBVoltageBetweenPhaseBC_V:=(INT_TO_REAL( Registers[17])+INT_TO_REAL(Registers[18])*65536)/10; PMM[Dev].VirBVoltageBetweenPhaseCA_V:=(INT_TO_REAL( Registers[19])+INT_TO_REAL(Registers[20])*65536)/10; PMM[Dev].VirBVoltageBetweenPhaseAN_V:=(INT_TO_REAL( Registers[21])+INT_TO_REAL(Registers[22])*65536)/10; PMM[Dev].VirBVoltageBetweenPhaseBN_V:=(INT_TO_REAL( Registers[23])+INT_TO_REAL(Registers[24])*65536)/10; PMM[Dev].VirBVoltageBetweenPhaseCN_V:=(INT_TO_REAL( Registers[25])+INT_TO_REAL(Registers[26])*65536)/10; PMM[Dev].VirBCurrentInPhaseA_A:=(INT_TO_REAL( Registers[27])+INT_TO_REAL(Registers[28])*65536)/10; PMM[Dev].VirBCurrentInPhaseB_A:=(INT_TO_REAL( Registers[29])+INT_TO_REAL(Registers[30])*65536)/10; PMM[Dev].VirBCurrentInPhaseC_A:=(INT_TO_REAL( Registers[31])+INT_TO_REAL(Registers[32])*65536)/10; PMM[Dev].VirBAparentPowerPhaseA:=(INT_TO_REAL( Registers[39])+INT_TO_REAL(Registers[40])*65536)/10; PMM[Dev].VirBAparentPowerPhaseB:=(INT_TO_REAL( Registers[41])+INT_TO_REAL(Registers[42])*65536)/10; PMM[Dev].VirBAparentPowerPhaseC:=(INT_TO_REAL( Registers[43])+INT_TO_REAL(Registers[44])*65536)/10; PMM[Dev].VirBReactivePowerPhaseA:=(INT_TO_REAL( Registers[45])+INT_TO_REAL(Registers[46])*65536)/10; PMM[Dev].VirBReactivePowerPhaseB:=(INT_TO_REAL( Registers[47])+INT_TO_REAL(Registers[48])*65536)/10; PMM[Dev].VirBReactivePowerPhaseC:=(INT_TO_REAL( Registers[49])+INT_TO_REAL(Registers[50])*65536)/10; PMM[Dev].VirBActiveEnergyConsumed_kWh:=(INT_TO_REAL( Registers[51])+INT_TO_REAL(Registers[52])*65536)/10; PMM[Dev].VirBReactiveEnergyConsumed_kVARh:=(INT_TO_REAL( Registers[53])+INT_TO_REAL(Registers[54])*65536)/10; *) 17: (* UPS 3 (UPS A - V23) *) (* prepis v polja napak za panel *) UPSno:=3; (*UPS A_V23 je definiran kot UPS3*) FOR index:=1 TO 24 DO UPS3Errors[Index]:=Registers[Index+15]>0; END_FOR UPS[UPSno].AlarmSlabaBaterija:=Registers[16]>0; UPS[UPSno].AlarmOnBattery:=Registers[17]>0; UPS[UPSno].AlarmLowBattery:=Registers[18]>0; UPS[UPSno].AlarmDepletedBattery:=Registers[19]>0; UPS[UPSno].AlarmTemperaturaIzvenToleranc:=Registers[20]>0; UPS[UPSno].AlarmStanjeVhodaIzvenToleranc:=Registers[21]>0; UPS[UPSno].AlarmStanjeIzhodaIzvenToleranc:=Registers[22]>0; UPS[UPSno].AlarmIzhodPreobremenjen:=Registers[23]>0; UPS[UPSno].AlarmOnBypass:=Registers[24]>0; UPS[UPSno].AlarmBypassBad:=Registers[25]>0; UPS[UPSno].AlarmIzhodOffKotZahtevano:=Registers[26]>0; UPS[UPSno].AlarmUPSOffKotZahtevano:=Registers[27]>0; UPS[UPSno].AlarmChargerFailed:=Registers[28]>0; UPS[UPSno].AlarmUPSIzhodOff:=Registers[29]>0; UPS[UPSno].AlarmUPSSystemOff:=Registers[30]>0; UPS[UPSno].AlarmNapakaNaVentilatorju:=Registers[31]>0; UPS[UPSno].AlarmNapakaNaVarovalki:=Registers[32]>0; UPS[UPSno].AlarmSplosnaNapaka:=Registers[33]>0; UPS[UPSno].AlarmDiagnosticTestFailed:=Registers[34]>0; UPS[UPSno].AlarmCommunicationsLost:=Registers[35]>0; UPS[UPSno].AlarmAwaitingPower:=Registers[36]>0; UPS[UPSno].AlarmShutdownPending:=Registers[37]>0; UPS[UPSno].AlarmShutdownImminent:=Registers[38]>0; UPS[UPSno].AlarmTestInProgres:=Registers[39]>0; UPS[UPSno].StatusBaterije:=Registers[10]; TmpW:=UPS[UPSno].StatusBaterije; (* alarm in statusi iz statusnege besede *) UPS[UPSno].AlarmInverterError:=(TmpW AND 512)>0; UPS[UPSno].StatusEcomodeAktiven:=(TmpW AND 2048)>0; UPS[UPSno].StatusStopOperation:=(TmpW AND 2)>0; UPS[UPSno].StatusInverterIsOn:=(TmpW AND 4)>0; (*IF (UPSno=1) THEN UPS1Errors[25]:=UPS[UPSno].AlarmInverterError; END_IF IF (UPSno=2) THEN UPS2Errors[25]:=UPS[UPSno].AlarmInverterError; END_IF*) UPS3Errors[25]:=UPS[UPSno].AlarmInverterError; UPS[UPSno].OutputStatus:=BOOL_TO_INT(UPS[UPSno].AlarmIzhodOffKotZahtevano OR UPS[UPSno].AlarmUPSIzhodOff); UPS[UPSno].UnitStatus:=BOOL_TO_INT(UPS[UPSno].AlarmUPSOffKotZahtevano OR UPS[UPSno].AlarmUPSSystemOff) + 2*BOOL_TO_INT(UPS[UPSno].AlarmShutdownImminent OR UPS[UPSno].AlarmShutdownPending OR UPS[UPSno].StatusStopOperation); UPS[UPSno].InverterStatus:=BOOL_TO_INT(UPS[UPSno].StatusInverterIsOn)+2*BOOL_TO_INT(UPS[UPSno].AlarmInverterError); UPS[UPSno].SteviloIzpadovVhodneLinije:=WORD_TO_UINT(Registers[15]); UPS[UPSno].VhodFrekvencaL1:=WORD_TO_REAL(Registers[12]); UPS[UPSno].VhodNapetostL1:=WORD_TO_REAL(Registers[5]); UPS[UPSno].VhodFrekvencaL2:=WORD_TO_REAL(Registers[13]); UPS[UPSno].VhodNapetostL2:=WORD_TO_REAL(Registers[6]); UPS[UPSno].VhodFrekvencaL3:=WORD_TO_REAL(Registers[14]); UPS[UPSno].VhodNapetostL3:=WORD_TO_REAL(Registers[7]); UPS[UPSno].IzhodMocL1:=WORD_TO_REAL(Registers[1]); UPS[UPSno].IzhodMocL2:=WORD_TO_REAL(Registers[2]); UPS[UPSno].IzhodMocL3:=WORD_TO_REAL(Registers[3]); UPS[UPSno].EstimatedMinutesRemaining:=WORD_TO_REAL(Registers[9]); UPS[UPSno].EstimatedChargeRemaining:=WORD_TO_REAL(Registers[4]); UPS[UPSno].NapetostBaterije:=WORD_TO_REAL(Registers[11]); UPS[UPSno].TemperaturaBaterije:=WORD_TO_REAL(Registers[8]); 18: (* Circutor registers 83-4 *) Dev:=1; Circ[Dev].MaximumDemand:= CircutorValue(Registers[1],Registers[2])/1000; (* Al *) Circ[Dev].MaximumDemandA2:= CircutorValue(Registers[11],Registers[12])/1000; (*dodano l.2008 - Albin Lorenci*) Circ[Dev].MaximumDemandA3:= CircutorValue(Registers[21],Registers[22])/1000; (*dodano l.2008 - Albin Lorenci*) END_CASE (* DataIndex *) END_IF (* DataReady *)^,\hModBus_komunikacija$K $KPROGRAM ModBus_komunikacija VAR {flag noread,nowrite on} ModBus_CP2inst:ModBus_CP2; ModBus_UPS_V23:ModBus_UPS; ModBus_UPS_V25:ModBus_UPS; Index,Jndex,Mult:INT; TimerKlima1:TON; TimerKlima2:TON; TimerUPSMGE:TON; T_cas_modbus_izpad:DINT; {flag off} END_VAR(* Modbus communication block calls *) ModBus_CP2inst( ComPort:=ComPort2 , Transactions:=ModBusTransPort2, WriteTrans:=ModBusWritePort2 ); ModBus_UPS_V23( ComPort:=ComPort3 , Transactions:= ModBusTransPort3, WriteTrans:=ModBusWritePort3, UPSNo:=1); ModBus_UPS_V25( ComPort:=ComPort4 , Transactions:=ModBusTransPort4, WriteTrans:=ModBusWritePort4, UPSNo:=2); (*zakasnitev javljanja izpada modbus komunikacije*) T_cas_modbus_izpad:=UINT_TO_DINT(cas_modbus_izpad) * 1000; (*Ugotavljanje napak v modbus komunikaciji*) (* Circutor *) Index:=1; ErrorComCirc[Index].Status:=BOOL_TO_INT(ModBusTransPort2[1].ErrorCount>6)*1+BOOL_TO_INT(ModBusTransPort2[2].ErrorCount>6)*2; ErrorComCirc[Index].Error:=ErrorComCirc[Index].Status>0; ErrComCirc[Index]:=ErrorComCirc[Index].Error; FOR Jndex:=1 TO 2 DO ErrorComCirc[Index].Code[Jndex]:=ModBusTransPort2[Jndex].ErrorCode; END_FOR; (*Klimi*) FOR Index:=1 TO 2 DO ErrorComKlima[index].Status:=BOOL_TO_INT(ModBusTransPort2[index*3].ErrorCount>6)*1+BOOL_TO_INT(ModBusTransPort2[index*3+1].ErrorCount>6)*2+BOOL_TO_INT(ModBusTransPort2[index*3+2].ErrorCount>6)*4; ErrorComKlima[index].Error:=ErrorComKlima[index].Status>6; (* ErrComKlima[index]:=ErrorComKlima[index].Error;*) FOR Jndex:=1 TO 3 DO ErrorComKlima[index].Code[Jndex]:=ModBusTransPort2[index*3 -1+Jndex].ErrorCode; END_FOR; END_FOR; TimerKlima1(IN:=ErrorComKlima[1].Error , PT:=DINT_TO_TIME(T_cas_modbus_izpad) , Q=>ErrComKlima[1]);(*Dodan timer za ugotavljanje izpada komunikacije zaradi veckratnih nekaj sekundnih izpadov*) TimerKlima2(IN:=ErrorComKlima[2].Error , PT:=DINT_TO_TIME(T_cas_modbus_izpad) , Q=>ErrComKlima[2]);(*Dodan timer za ugotavljanje izpada komunikacije zaradi veckratnih nekaj sekundnih izpadov*) (*UPS MGE Galaxy 3000*) Index:=1; ErrorComUPSMGE[index].Status:=BOOL_TO_INT(ModBusTransPort2[9].ErrorCount>6)*1+BOOL_TO_INT(ModBusTransPort2[10].ErrorCount>6)*2+BOOL_TO_INT(ModBusTransPort2[11].ErrorCount>6)*4; ErrorComUPSMGE[index].Error:=ErrorComUPSMGE[index].Status>6; (* ErrComUPSMGE[index]:=ErrorComUPSMGE[index].Error;*) FOR Jndex:=9 TO 11 DO ErrorComUPSMGE[index].Code[Jndex]:=ModBusTransPort2[Jndex].ErrorCode; END_FOR; TimerUPSMGE(IN:=ErrorComUPSMGE[1].Error , PT:=DINT_TO_TIME(T_cas_modbus_izpad) , Q=>ErrComUPSMGE[1]);(*Dodan timer za ugotavljanje izpada komunikacije zaradi veckratnih nekaj sekundnih izpadov*) (*UPS A V23 na com protu 2 - zamenjal je UPS MGE Galaxy 3000 *) ErrorComUPS[3].Status:=BOOL_TO_INT(ModBusTransPort2[17].ErrorCount>6)*1; ErrorComUPS[3].Error:=ErrorComUPS[3].Status>0; ErrComUPS[3]:=ErrorComUPS[3].Error; ErrorComUPS[3].Code[17]:=ModBusTransPort2[17].ErrorCode; (* PMM *) ErrorComPMM[1].Status:=0; Mult:=1; FOR Jndex:=1 TO 5 DO ErrorComPMM[1].Status:=ErrorComPMM[1].Status+BOOL_TO_INT(ModBusTransPort2[Jndex+11].ErrorCount>6)*Mult; Mult:=Mult*2; ErrorComPMM[1].Code[Jndex]:=ModBusTransPort2[Jndex+11].ErrorCode; END_FOR; ErrorComPMM[1].Error:=ErrorComPMM[1].Status>0; ErrComPMM[1]:=ErrorComPMM[1].Error; (* UPS V23 - com port 3 *) ErrorComUPS[1].Status:=BOOL_TO_INT(ModBusTransPort3[1].ErrorCount>6)*1; ErrorComUPS[1].Error:=ErrorComUPS[1].Status>0; ErrComUPS[1]:=ErrorComUPS[1].Error; FOR Index:=1 TO 2 DO ErrorComUPS[1].Code[Index]:=ModBusTransPort3[Index].ErrorCode; END_FOR; (* UPS V25 - com port 4 *) ErrorComUPS[2].Status:=BOOL_TO_INT(ModBusTransPort4[1].ErrorCount>6)*1; ErrorComUPS[2].Error:=ErrorComUPS[2].Status>0; ErrComUPS[2]:=ErrorComUPS[2].Error; FOR Index:=1 TO 2 DO ErrorComUPS[2].Code[Index]:=ModBusTransPort4[Index].ErrorCode; END_FOR; (* Napake com portov *) ErrComPort2:=ComPort2.Error; ErrComPort3:=ComPort3.Error; ErrComPort4:=ComPort4.Error;~,X ! ModBus_UPS$K $K!XC--PFUNCTION_BLOCK ModBus_UPS VAR_INPUT UPSno:BYTE; END_VAR VAR_OUTPUT END_VAR VAR {flag noread,nowrite on} ModBusComm:ModBusM_RW; Registers: ARRAY[1..120] OF WORD; (* Registers *) Coils: ARRAY[1..1200] OF BOOL; (* Coils *) Index:BYTE; DataReady:BOOL; DataIndex:BYTE; TmpW:WORD; {flag off} END_VAR VAR_IN_OUT ComPort:MComPortParam; Transactions: ARRAY[1..40] OF MModMasterDefinition; WriteTrans: ARRAY[1..40] OF MModMasterWriteDef; END_VAR ModBusComm( Enable:=TRUE , ComPort:=ComPort , Reset:= , Registers:=Registers, Coils:=Coils, Transactions:=Transactions , WriteTrans:=WriteTrans, Q_ComPortActiv=> , Q_ComPortError=>ComPort.Error, Q_WriteCycleON=> , Q_WriteFinished=> , Q_WriteIndex=> , Q_ReadFinished=> , Q_NewDataReady=>DataReady , Q_ReadIndex=>DataIndex , Q_TransError=> ); IF DataReady THEN CASE DataIndex OF 1: (* prepis v polja napak za panel *) IF (UPSno=1) THEN FOR index:=1 TO 24 DO UPS1Errors[Index]:=Registers[Index+15]>0; END_FOR; END_IF IF (UPSno=2) THEN FOR index:=1 TO 24 DO UPS2Errors[Index]:=Registers[Index+15]>0; END_FOR; END_IF UPS[UPSno].AlarmSlabaBaterija:=Registers[16]>0; UPS[UPSno].AlarmOnBattery:=Registers[17]>0; UPS[UPSno].AlarmLowBattery:=Registers[18]>0; UPS[UPSno].AlarmDepletedBattery:=Registers[19]>0; UPS[UPSno].AlarmTemperaturaIzvenToleranc:=Registers[20]>0; UPS[UPSno].AlarmStanjeVhodaIzvenToleranc:=Registers[21]>0; UPS[UPSno].AlarmStanjeIzhodaIzvenToleranc:=Registers[22]>0; UPS[UPSno].AlarmIzhodPreobremenjen:=Registers[23]>0; UPS[UPSno].AlarmOnBypass:=Registers[24]>0; UPS[UPSno].AlarmBypassBad:=Registers[25]>0; UPS[UPSno].AlarmIzhodOffKotZahtevano:=Registers[26]>0; UPS[UPSno].AlarmUPSOffKotZahtevano:=Registers[27]>0; UPS[UPSno].AlarmChargerFailed:=Registers[28]>0; UPS[UPSno].AlarmUPSIzhodOff:=Registers[29]>0; UPS[UPSno].AlarmUPSSystemOff:=Registers[30]>0; UPS[UPSno].AlarmNapakaNaVentilatorju:=Registers[31]>0; UPS[UPSno].AlarmNapakaNaVarovalki:=Registers[32]>0; UPS[UPSno].AlarmSplosnaNapaka:=Registers[33]>0; UPS[UPSno].AlarmDiagnosticTestFailed:=Registers[34]>0; UPS[UPSno].AlarmCommunicationsLost:=Registers[35]>0; UPS[UPSno].AlarmAwaitingPower:=Registers[36]>0; UPS[UPSno].AlarmShutdownPending:=Registers[37]>0; UPS[UPSno].AlarmShutdownImminent:=Registers[38]>0; UPS[UPSno].AlarmTestInProgres:=Registers[39]>0; UPS[UPSno].StatusBaterije:=Registers[10]; TmpW:=UPS[UPSno].StatusBaterije; (* alarm in statusi iz statusnege besede *) UPS[UPSno].AlarmInverterError:=(TmpW AND 512)>0; UPS[UPSno].StatusEcomodeAktiven:=(TmpW AND 2048)>0; UPS[UPSno].StatusStopOperation:=(TmpW AND 2)>0; UPS[UPSno].StatusInverterIsOn:=(TmpW AND 4)>0; IF (UPSno=1) THEN UPS1Errors[25]:=UPS[UPSno].AlarmInverterError; END_IF IF (UPSno=2) THEN UPS2Errors[25]:=UPS[UPSno].AlarmInverterError; END_IF UPS[UPSno].OutputStatus:=BOOL_TO_INT(UPS[UPSno].AlarmIzhodOffKotZahtevano OR UPS[UPSno].AlarmUPSIzhodOff); UPS[UPSno].UnitStatus:=BOOL_TO_INT(UPS[UPSno].AlarmUPSOffKotZahtevano OR UPS[UPSno].AlarmUPSSystemOff) + 2*BOOL_TO_INT(UPS[UPSno].AlarmShutdownImminent OR UPS[UPSno].AlarmShutdownPending OR UPS[UPSno].StatusStopOperation); UPS[UPSno].InverterStatus:=BOOL_TO_INT(UPS[UPSno].StatusInverterIsOn)+2*BOOL_TO_INT(UPS[UPSno].AlarmInverterError); UPS[UPSno].SteviloIzpadovVhodneLinije:=WORD_TO_UINT(Registers[15]); UPS[UPSno].VhodFrekvencaL1:=WORD_TO_REAL(Registers[12]); UPS[UPSno].VhodNapetostL1:=WORD_TO_REAL(Registers[5]); UPS[UPSno].VhodFrekvencaL2:=WORD_TO_REAL(Registers[13]); UPS[UPSno].VhodNapetostL2:=WORD_TO_REAL(Registers[6]); UPS[UPSno].VhodFrekvencaL3:=WORD_TO_REAL(Registers[14]); UPS[UPSno].VhodNapetostL3:=WORD_TO_REAL(Registers[7]); UPS[UPSno].IzhodMocL1:=WORD_TO_REAL(Registers[1]); UPS[UPSno].IzhodMocL2:=WORD_TO_REAL(Registers[2]); UPS[UPSno].IzhodMocL3:=WORD_TO_REAL(Registers[3]); UPS[UPSno].EstimatedMinutesRemaining:=WORD_TO_REAL(Registers[9]); UPS[UPSno].EstimatedChargeRemaining:=WORD_TO_REAL(Registers[4]); UPS[UPSno].NapetostBaterije:=WORD_TO_REAL(Registers[11]); UPS[UPSno].TemperaturaBaterije:=WORD_TO_REAL(Registers[8]); END_CASE (* DataIndex *) END_IF (* DataReady *)_,3?} ModBusM_RW$K $K`OCP FUNCTION_BLOCK ModBusM_RW VAR CONSTANT OnErrorDisableCycles:BYTE:=1; (* how many read cycles is transaction left out after error (1 means - read it again in next cycle) *) SlaveResponseTimeout:TIME:=t#2s; (* ModbusMaster response timeout *) END_VAR VAR ModMaster: ModbusMaster; (* from MODBUSMASTER.LIB *) BlockStatus: (MB_NextTrans,MB_StartTrans,MB_ReadRunning,MB_WriteRunning) :=0; (* Block step - 0 Next transaction, 1 - ... *) WriteCycleON:BOOL:=FALSE; (* After every readin -> WriteCycleON=TRUE - Check WriteTransa *) WriteIndex:BYTE:=40; (* Current write transaction index *) TransIndex: BYTE := 40; (* Current read transaction index *) SecondTry:BOOL:=FALSE; (* try two consequent questions *) TransOrder: ARRAY [1..40] OF BYTE := 40(1); (* transaction order down counter - vhen it reaches 0 - read data *) TempByte: BYTE; ComPortActiv: BOOL; (* Status of COM port *) ComPortError: BOOL := FALSE; MODfcStrobe: BOOL; (* Start job *) MODtransActive: BOOL; (* MODBUS job active *) MODtransOk: BOOL; (* Job finished successfully *) MODslaveAdrDone: USINT; (* Last addressed slave *) MODfcDone: USINT; (* Last Function Code *) MODdatOffDone: UINT; (* Last offset of data *) MODdatNrDone: UINT; (* Last number of data *) MODfailCode: USINT; (* Error code *) MODSlaveAdr:USINT; (* Address of MODBUS Slave to connect to is 1 *) MODfc:USINT; (* Function code *) MODdatOff:UINT; (* Data Offset *) MODdatNr:UINT; (* Number of Data *) END_VAR VAR_INPUT Enable: BOOL; (* Block enabled *) ComPort: MComPortParam; (* Communication port parameters *) Reset:BOOL; (* Reset block to initial state *) END_VAR VAR_OUTPUT Q_ComPortActiv: BOOL; (* Com port ready for transactions *) Q_ComPortError: BOOL; (* Com port error *) Q_WriteCycleON: BOOL; (* Block is sending values to the slave *) Q_WriteFinished:BOOL; (*Write cycle finished *) Q_WriteIndex: BYTE; (* Index of command in progress( WriteTrans table) *) Q_ReadFinished:BOOL; Q_NewDataReady: BOOL; (* Block received new data block - one cycle puls only - move data *) Q_ReadIndex: BYTE; (* Index of last received block - use in case in move data procedure or in error set proc. *) Q_TransError: BOOL; (* Transaction ended with error *) END_VAR VAR_IN_OUT Registers: ARRAY[1..120] OF WORD; (* Registers *) Coils: ARRAY[1..1200] OF BOOL; (* Coils *) Transactions: ARRAY[1..40] OF MModMasterDefinition; WriteTrans: ARRAY[1..40] OF MModMasterWriteDef; END_VAR (* Set or delete block outputs *) (* block status *) Q_ComPortActiv:=ComPortActiv; IF NOT MODtransActive THEN Q_ComPortError:=(MODfailCode=11); END_IF; (*Q_ComPortError:=ComPortError;*) Q_WriteCycleON:=WriteCycleON; (* one cycle pulses only ! *) Q_WriteFinished:=FALSE; Q_WriteIndex:=0; Q_ReadFinished:=FALSE; Q_NewDataReady:=FALSE; Q_ReadIndex:=0; Q_TransError:=FALSE; (* Check block status - do apropriate action for current state and incomming event*) CASE BlockStatus OF MB_NextTrans: (* find next transaction - every read is followd by possible write, every write is followed by read *) IF NOT WriteCycleON THEN (* if last cycle was read cycle - check for new write demand *) TempByte:=WriteIndex; (* check WriteTrans array only once *) REPEAT (* find next write demand in cycle (or go around WritTrans array one time) *) WriteIndex:=WriteIndex+1; IF WriteIndex>40 THEN WriteIndex:=1; END_IF; UNTIL WriteTrans[WriteIndex].Write OR (TempByte=WriteIndex) END_REPEAT; IF WriteTrans[WriteIndex].Write THEN (* Transaction found *) WriteCycleON:=TRUE; (* Start write cycle *) WriteTrans[WriteIndex].Write:=FALSE; (* Reset write demand and finished flag*) WriteTrans[WriteIndex].Finished:=FALSE; BlockStatus:=MB_StartTrans; END_IF; END_IF IF BlockStatus<>MB_StartTrans THEN (* BlockStatus not changed for write cycle find new read transaction *) WriteCycleON:=FALSE; TempByte:=TransIndex; REPEAT (* find next read demand in cycle (or go around Transactions array one time) *) TransIndex:=TransIndex+1; IF TransIndex>40 THEN TransIndex:=1; END_IF; TransOrder[TransIndex]:=TransOrder[TransIndex]-1; UNTIL (TransOrder[TransIndex]=0) AND Transactions[TransIndex].TransActive OR (TempByte=TransIndex) END_REPEAT; IF TransOrder[TransIndex]=0 AND Transactions[TransIndex].TransActive THEN (* Transaction found *) TransOrder[TransIndex]:=1; (* set value for next read *) (* if last read finished with error, delay next reading too *) IF Transactions[TransIndex].Error THEN TransOrder[TransIndex]:=OnErrorDisableCycles; END_IF; SecondTry:=Transactions[TransIndex].SecondTry; BlockStatus:=MB_StartTrans; END_IF; END_IF; MB_WriteRunning: (* wait for MODbusMaster block to finish current writing *) IF NOT ModTransActive THEN MODfcStrobe:=FALSE; Q_WriteFinished:=TRUE; Q_WriteIndex:=WriteIndex; WriteTrans[WriteIndex].ErrorCode:=MODfailCode; WriteTrans[WriteIndex].Finished:=TRUE; IF MODTransOk AND WriteTrans[WriteIndex].SlaveAddress=MODslaveAdrDone (* Last addressed slave *) AND WriteTrans[WriteIndex].FunctionCode=MODfcDone (* Last Function Code *) AND WriteTrans[WriteIndex].DataOffset=MODdatOffDone (* Last offset of data *) THEN Q_WriteFinished:=TRUE; WriteTrans[WriteIndex].Error:=FALSE; ELSE Q_TransError:=TRUE; WriteTrans[WriteIndex].Error:=TRUE; END_IF; BlockStatus:=MB_NextTrans; END_IF; MB_ReadRunning: IF NOT ModTransActive THEN MODfcStrobe:=FALSE; Q_ReadFinished:=TRUE; Q_ReadIndex:=TransIndex; Transactions[TransIndex].ErrorCode:=MODfailCode; IF MODTransOk AND Transactions[TransIndex].SlaveAddress=MODslaveAdrDone (* Last addressed slave *) AND Transactions[TransIndex].FunctionCode=MODfcDone (* Last Function Code *) AND Transactions[TransIndex].DataOffset=MODdatOffDone (* Last offset of data *) AND Transactions[TransIndex].DataNumber=MODdatNrDone (* Last number of data *) THEN Q_NewDataReady:=TRUE; Transactions[TransIndex].Error:=FALSE; Transactions[TransIndex].ErrorCount:=0; BlockStatus:=MB_NextTrans; ELSE IF NOT SecondTry THEN Q_TransError:=TRUE; Transactions[TransIndex].Error:=TRUE; Transactions[TransIndex].ErrorCount:=Transactions[TransIndex].ErrorCount+1; IF Transactions[TransIndex].ErrorCount>10000 THEN Transactions[TransIndex].ErrorCount:=11111; END_IF;(* Device is broken *) BlockStatus:=MB_NextTrans; ELSE SecondTry:=FALSE; BlockStatus:=MB_StartTrans; END_IF; END_IF; END_IF; MB_StartTrans: (* it is executed twice, since ModTransActive output is set one cycle after MODfcStrobe becomes TRUE *) MODfcStrobe:=TRUE; IF WriteCycleON THEN (* set wariablews for ModMaster according to cycle type and transaction index *) IF MODtransActive THEN BlockStatus:=MB_WriteRunning; END_IF; MODSlaveAdr:= WriteTrans[WriteIndex].SlaveAddress; (* Address of MODBUS Slave to connect to is 1 *) MODfc:= WriteTrans[WriteIndex].FunctionCode; (* Function code *) MODdatOff:= WriteTrans[WriteIndex].DataOffset; (* Data Offset *) MODdatNr:=1; (* Number of Data *) Registers[1]:=WriteTrans[WriteIndex].Register; Coils[1]:=WriteTrans[WriteIndex].Coil; ELSE IF MODtransActive THEN BlockStatus:=MB_ReadRunning; END_IF; MODSlaveAdr:= Transactions[TransIndex].SlaveAddress; (* Address of MODBUS Slave to connect to is 1 *) MODfc:= Transactions[TransIndex].FunctionCode; (* Function code *) MODdatOff:= Transactions[TransIndex].DataOffset; (* Data Offset *) MODdatNr:=Transactions[TransIndex].DataNumber; (* Number of Data *) END_IF; END_CASE (*CASE BlockStatus OF*) (* ModBus from MODBUSMASTER.lib call *) ModMaster( xEnable:= Enable, (* Enable COM port preseted with true *) usiComPort:=ComPort.PortNo, (* COM port *) uiBaudrate:= ComPort.Baudrate, (* Baudrate *) usiParity:=ComPort.Parity , (* Parity *) usiStopbits:=ComPort.Stopbit , (* Stopbit *) usiMODSlaveAdr:=MODSlaveAdr , (* Address of MODBUS Slave to connect to is 1 *) usiMODfc:= MODfc, (* Function code *) uiMODdatOff:= MODdatOff, (* Data Offset *) uiMODdatNr:=MODdatNr, (* Number of Data *) tMODtimeOut:=SlaveResponseTimeout, (* Timeout for Slave response 2s *) xMODfcStrobe:=MODfcStrobe, (* Start job *) warMODRegister:=Registers, (* Registers *) xarMODCoil:=Coils, (* Coils *) xComPortActiv=>ComPortActiv , (* Status of COM port *) xMODtransActive=>MODtransActive, (* MODBUS job active *) xMODtransOk=>MODtransOk, (* Job finished successfully *) usiMODslaveAdrDone=>MODslaveAdrDone, (* Last addressed slave *) usiMODfcDone=>MODfcDone, (* Last Function Code *) uiMODdatOffDone=>MODdatOffDone, (* Last offset of data *) uiMODdatNrDone=>MODdatNrDone, (* Last number of data *) usiMODfailCode=>MODfailCode); (* Error code *)+,ObdelavaAnalognihVhodov$K $Kosr\207FUNCTION_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_SkaliranjeVlagaHIA1 : Skaliranje; FB_SkaliranjeVlagaHIA2 : Skaliranje; FB_SkaliranjeVlagaHIA3 : Skaliranje; FB_SkaliranjeVlagaHIA4 : Skaliranje; FB_SkaliranjeVlagaHIA5 : Skaliranje; FB_SkaliranjeVlagaHIA6 : Skaliranje; FB_SkaliranjeVlagaHIA7 : Skaliranje; PomNapakaTSTempTIA1: BOOL; PomNapakaTSTempTIA2: BOOL; PomNapakaTSTempTIA3: BOOL; PomNapakaTSTempTIA4: BOOL; PomNapakaTSTempTIA5: BOOL; PomNapakaTSTempTIA6: BOOL; PomNapakaTSTempTIA7: BOOL; PomNapakaSenzorVlagaHIA1: BOOL; PomNapakaSenzorVlagaHIA2: BOOL; PomNapakaSenzorVlagaHIA3: BOOL; PomNapakaSenzorVlagaHIA4: BOOL; PomNapakaSenzorVlagaHIA5: BOOL; PomNapakaSenzorVlagaHIA6: BOOL; PomNapakaSenzorVlagaHIA7: BOOL; END_VAR (*TEMPERATURE*) FB_SkaliranjeTempTIA1( Omogoci:=TRUE , StVzorcenj:=50, TrenutnaVrednost:=TIA1_temp, ObmocjeVhodaLo:=0, ObmocjeVhodaHi:=4095, ObmocjeIzhodaLo:=0, ObmocjeIzhodaHi:=600, SkaliranaVrednost=>TIA1_temp_s, NapakaSenzor=>PomNapakaTSTempTIA1 ); NapakaTSTempTIA1:=PomNapakaTSTempTIA1; FB_SkaliranjeTempTIA2( Omogoci:=TRUE , StVzorcenj:=50, TrenutnaVrednost:=TIA2_temp, ObmocjeVhodaLo:=0, ObmocjeVhodaHi:=4095, ObmocjeIzhodaLo:=0, ObmocjeIzhodaHi:=600, SkaliranaVrednost=>TIA2_temp_s, NapakaSenzor=>PomNapakaTSTempTIA2 ); NapakaTSTempTIA2:=PomNapakaTSTempTIA2; FB_SkaliranjeTempTIA3( Omogoci:=TRUE , StVzorcenj:=50, TrenutnaVrednost:=TIA3_temp, ObmocjeVhodaLo:=0, ObmocjeVhodaHi:=4095, ObmocjeIzhodaLo:=0, ObmocjeIzhodaHi:=600, SkaliranaVrednost=>TIA3_temp_s, NapakaSenzor=>PomNapakaTSTempTIA3 ); NapakaTSTempTIA3:=PomNapakaTSTempTIA3; FB_SkaliranjeTempTIA4( Omogoci:=TRUE , StVzorcenj:=50, TrenutnaVrednost:=TIA4_temp, ObmocjeVhodaLo:=0, ObmocjeVhodaHi:=4095, ObmocjeIzhodaLo:=0, ObmocjeIzhodaHi:=600, SkaliranaVrednost=>TIA4_temp_s, NapakaSenzor=>PomNapakaTSTempTIA4 ); NapakaTSTempTIA4:=PomNapakaTSTempTIA4; FB_SkaliranjeTempTIA5( Omogoci:=TRUE , StVzorcenj:=50, TrenutnaVrednost:=TIA5_temp, ObmocjeVhodaLo:=0, ObmocjeVhodaHi:=4095, ObmocjeIzhodaLo:=0, ObmocjeIzhodaHi:=600, SkaliranaVrednost=>TIA5_temp_s, NapakaSenzor=>PomNapakaTSTempTIA5 ); NapakaTSTempTIA5:=PomNapakaTSTempTIA5; FB_SkaliranjeTempTIA6( Omogoci:=TRUE , StVzorcenj:=50, TrenutnaVrednost:=TIA6_temp, ObmocjeVhodaLo:=0, ObmocjeVhodaHi:=4095, ObmocjeIzhodaLo:=0, ObmocjeIzhodaHi:=600, SkaliranaVrednost=>TIA6_temp_s, NapakaSenzor=>PomNapakaTSTempTIA6 ); NapakaTSTempTIA6:=PomNapakaTSTempTIA6; FB_SkaliranjeTempTIA7( Omogoci:=TRUE , StVzorcenj:=50, TrenutnaVrednost:=TIA7_temp, ObmocjeVhodaLo:=0, ObmocjeVhodaHi:=4095, ObmocjeIzhodaLo:=0, ObmocjeIzhodaHi:=600, SkaliranaVrednost=>TIA7_temp_s, NapakaSenzor=>PomNapakaTSTempTIA7 ); NapakaTSTempTIA7:=PomNapakaTSTempTIA7; (*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; 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_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 ); (*Bravanje gumb za komunikacijo*) ComError:=napaka_kom_panel OR napaka_kom_scada OR napaka_kom_scada2 OR ErrComPort2 OR ErrComPort3 OR ErrComPort4 OR ErrComCirc[1] OR ErrComKlima[1] OR ErrComKlima[2] OR ErrComUPS[1] OR ErrComUPS[2] OR ErrComUPS[3] OR ErrComPMM[1] ; (*Barvanje alarmnega gumba ko je katerikoli alarm*) XVH_AlarmOn:=ComError OR NapakaSenzorSkupno OR PrevisokaTemp OR XVH_enopolna_napaka OR K1_SkupnaNapaka OR K2_SkupnaNapaka OR K3_SkupnaNapaka OR UPS[1].Napaka OR UPS[2].Napaka OR UPS[3].Napaka OR SkupneNapakeNaprav_PMM17VirBVirA OR PozarnaCentrala_skupno; (*Klime alarmi *) K1ProtizamrzZascAkt:=Klima[1].ProtizamrzZascAktivna; K1AlarmPozara:=Klima[1].Alarm_pozar; K1NiPretoka:=Klima[1].Ni_pretoka; K1PreobMotVent:=Klima[1].PreobMotVent; K1PreobMotCrpGr:=Klima[1].PreobMotCrpGrel; K1ZamasenostFiltra:=Klima[1].ZamasenostFiltra; K1KlimaZdruzenAlarm:=Klima[1].ZdruzAlarmA OR Klima[1].ZdruzAlarmB OR N_KLIMAT1_napaka; K1OkvaraVlazNap:=Klima[1].OkvaraVlazNap; K1OkvaraRototerma:=Klima[1].OkvaraRototerm; K1_SkupnaNapaka:=K1ProtizamrzZascAkt OR K1AlarmPozara OR K1NiPretoka OR K1PreobMotVent OR K1PreobMotCrpGr OR K1ZamasenostFiltra OR K1KlimaZdruzenAlarm OR K1OkvaraVlazNap OR K1OkvaraRototerma; K2ProtizamrzZascAkt:=Klima[2].ProtizamrzZascAktivna; K2AlarmPozara:=Klima[2].Alarm_pozar; K2NiPretoka:=Klima[2].Ni_pretoka; K2PreobMotVent:=Klima[2].PreobMotVent; K2PreobMotCrpGr:=Klima[2].PreobMotCrpGrel; K2ZamasenostFiltra:=Klima[2].ZamasenostFiltra; K2KlimaZdruzenAlarm:=Klima[2].ZdruzAlarmA OR Klima[2].ZdruzAlarmB OR N_KLIMAT2_napaka; K2OkvaraVlazNap:=Klima[2].OkvaraVlazNap; K2OkvaraRototerma:=Klima[2].OkvaraRototerm; K2_SkupnaNapaka:=K2ProtizamrzZascAkt OR K2AlarmPozara OR K2NiPretoka OR K2PreobMotVent OR K2PreobMotCrpGr OR K2ZamasenostFiltra OR K2KlimaZdruzenAlarm OR K2OkvaraVlazNap OR K2OkvaraRototerma; (* Alarmi klima 3 za katero pobiramo stanja samo preko DI *) K3_SkupnaNapaka:=N_KLIMA1_krm_nap_ok OR KLIMA_m1_napaka OR KLIMA_m2_napaka; (* Klima 3 delovanje *) K3_deluje:=KLIMA_m1_delovanje OR KLIMA_m2_delovanje; (* UPS -a setevki napak*) AlarmGenUPS_V23:=UPS[1].AlarmSlabaBaterija OR UPS[1].AlarmDepletedBattery OR UPS[1].AlarmTemperaturaIzvenToleranc OR UPS[1].AlarmStanjeVhodaIzvenToleranc OR UPS[1].AlarmStanjeIzhodaIzvenToleranc OR UPS[1].AlarmIzhodPreobremenjen OR UPS[1].AlarmBypassBad OR UPS[1].AlarmChargerFailed OR UPS[1].AlarmNapakaNaVentilatorju OR UPS[1].AlarmNapakaNaVarovalki OR UPS[1].AlarmSplosnaNapaka OR UPS[1].AlarmDiagnosticTestFailed OR UPS[1].AlarmShutdownImminent OR UPS[1].AlarmInverterError OR N_UPS_V23_napaka OR N_UPS_V23_delovanje; AlarmGenUPS_V25:=UPS[2].AlarmSlabaBaterija OR UPS[2].AlarmDepletedBattery OR UPS[2].AlarmTemperaturaIzvenToleranc OR UPS[2].AlarmStanjeVhodaIzvenToleranc OR UPS[2].AlarmStanjeIzhodaIzvenToleranc OR UPS[2].AlarmIzhodPreobremenjen OR UPS[2].AlarmBypassBad OR UPS[2].AlarmChargerFailed OR UPS[2].AlarmNapakaNaVentilatorju OR UPS[2].AlarmNapakaNaVarovalki OR UPS[2].AlarmSplosnaNapaka OR UPS[2].AlarmDiagnosticTestFailed OR UPS[2].AlarmShutdownImminent OR UPS[2].AlarmInverterError OR N_UPS_V25_napaka OR N_UPS_V25_delovanje; AlarmGenUPS_A_V23:=UPS[3].AlarmSlabaBaterija OR UPS[3].AlarmDepletedBattery OR UPS[3].AlarmTemperaturaIzvenToleranc OR UPS[3].AlarmStanjeVhodaIzvenToleranc OR UPS[3].AlarmStanjeIzhodaIzvenToleranc OR UPS[3].AlarmIzhodPreobremenjen OR UPS[3].AlarmBypassBad OR UPS[3].AlarmChargerFailed OR UPS[3].AlarmNapakaNaVentilatorju OR UPS[3].AlarmNapakaNaVarovalki OR UPS[3].AlarmSplosnaNapaka OR UPS[3].AlarmDiagnosticTestFailed OR UPS[3].AlarmShutdownImminent OR UPS[3].AlarmInverterError OR N_UPS_A_V23_delovanje OR N_UPS_A_V23_napaka; UPS[1].Napaka:=AlarmGenUPS_V23; UPS[2].Napaka:=AlarmGenUPS_V25; UPS[3].Napaka:=AlarmGenUPS_A_V23; (*UPS_MGE[1].NapakaNaVarovalkah:=UPS_MGE[1].BatteryFuseFault OR UPS_MGE[1].InverterFuseFault;*) (* 1-polnjenje, 2-praznjenje, 3-polnjenje/praznjenje *) (*UPS_MGE[1].StatusBaterije:=BOOL_TO_BYTE(UPS_MGE[1].BatteryChargedState)*1 + BOOL_TO_BYTE(UPS_MGE[1].UPS_in_backup)*2;*) (* ZAENKRAT!!! *) (* AlarmGenUPS_A_V23:= N_UPS_A_V23_delovanje OR N_UPS_A_V23_napaka OR UPS_MGE[1].UPS_error; UPS_MGE[1].Skupna_napaka:=AlarmGenUPS_A_V23;*) (*ALARMI za UPS A_V23 za panel*) (*UPSMGEErrors[1]:=UPS_MGE[1].UPS_error; UPSMGEErrors[2]:=UPS_MGE[1].BatteryLowWarning; UPSMGEErrors[3]:=UPS_MGE[1].DeviceVentilationFault; UPSMGEErrors[4]:=UPS_MGE[1].BatteryCompInProgress; UPSMGEErrors[5]:=UPS_MGE[1].BatteryTempOutOfToler; UPSMGEErrors[6]:=UPS_MGE[1].BatteryFuseFault; UPSMGEErrors[7]:=UPS_MGE[1].Mains1VoltOutOfToler; UPSMGEErrors[8]:=UPS_MGE[1].RectifierThermOverload; UPSMGEErrors[9]:=UPS_MGE[1].MaintenancePosition; UPSMGEErrors[10]:=UPS_MGE[1].ChargerGeneralFault; UPSMGEErrors[11]:=UPS_MGE[1].BatteryChargedState; UPSMGEErrors[12]:=UPS_MGE[1].InverterOverload; UPSMGEErrors[13]:=UPS_MGE[1].InverterThermalOverload; UPSMGEErrors[14]:=UPS_MGE[1].OutputThermalOverload; UPSMGEErrors[15]:=UPS_MGE[1].OutputOverload; UPSMGEErrors[16]:=UPS_MGE[1].InverterFuseFault; UPSMGEErrors[17]:=UPS_MGE[1].OutputInShortCircuit;*) (* UPS_V23 izpisi na panelu *) CASE UPS[1].OutputStatus OF 0: XVHtxt1:=''; 1:XVHtxt1:='OFF'; ELSE XVHtxt1:='ON->OFF'; END_CASE; CASE UPS[1].UnitStatus OF 0: XVHtxt2:=''; 1:XVHtxt2:='OFF'; ELSE XVHtxt2:='ON->OFF'; END_CASE UPS1_StatusBaterije:=BOOL_TO_BYTE(UPS[1].AlarmOnBattery)*2; R1:=-99; R2:=-100; IF UPS[1].AlarmLowBattery THEN R1:=9999; END_IF; IF UPS[1].AlarmDepletedBattery THEN R2:=9998; R1:=9999; END_IF; XVHlowBatery1:=R1; XVHdepltedBatery1:=R2; (* UPS_V25 izpisi na panelu *) CASE UPS[2].OutputStatus OF 0: XVHtxt4:=''; 1:XVHtxt4:='OFF'; ELSE XVHtxt4:='ON->OFF'; END_CASE; CASE UPS[2].UnitStatus OF 0: XVHtxt3:=''; 1:XVHtxt3:='OFF'; ELSE XVHtxt3:='ON->OFF'; END_CASE UPS2_StatusBaterije:=BOOL_TO_BYTE(UPS[2].AlarmOnBattery)*2; R3:=-99; R4:=-100; IF UPS[2].AlarmLowBattery THEN R3:=9999; END_IF; IF UPS[2].AlarmDepletedBattery THEN R4:=9998; R3:=9999; END_IF; XVHlowBatery2:=R3; XVHdepltedBatery2:=R4; (* UPS_A_V23 izpisi na panelu *) CASE UPS[3].OutputStatus OF 0: XVHtxt5:=''; 1:XVHtxt5:='OFF'; ELSE XVHtxt4:='ON->OFF'; END_CASE; CASE UPS[2].UnitStatus OF 0: XVHtxt6:=''; 1:XVHtxt6:='OFF'; ELSE XVHtxt6:='ON->OFF'; END_CASE UPS3_StatusBaterije:=BOOL_TO_BYTE(UPS[3].AlarmOnBattery)*2; R5:=-99; R6:=-100; IF UPS[3].AlarmLowBattery THEN R5:=9999; END_IF; IF UPS[3].AlarmDepletedBattery THEN R5:=9998; R6:=9999; END_IF; XVHlowBatery3:=R5; XVHdepltedBatery3:=R6; (***************************************************************************************************************************************************************************************************************************) (* PMM *) (* Razporeditev tokov *) (* vir A *) PMMfaza01:=PMM[1].Phase[1].Current[42];(**Taka razporeditev je zaradi napake Pintarja pri razporeditvi tokov!!!!**) PMMfaza02:=PMM[1].Phase[1].Current[41]; PMMfaza03:=PMM[1].Phase[1].Current[40]; PMMfaza04:=PMM[1].Phase[1].Current[39]; PMMfaza05:=PMM[1].Phase[1].Current[38]; PMMfaza06:=PMM[1].Phase[1].Current[37]; PMMfaza07:=PMM[1].Phase[1].Current[36]; PMMfaza08:=PMM[1].Phase[1].Current[35]; PMMfaza09:=PMM[1].Phase[1].Current[34]; PMMfaza10:=PMM[1].Phase[1].Current[33]; PMMfaza11:=PMM[1].Phase[1].Current[32]; PMMfaza12:=PMM[1].Phase[1].Current[31]; PMMfaza13:=PMM[1].Phase[1].Current[30]; PMMfaza14:=PMM[1].Phase[1].Current[29]; (*vir B *) PMMfaza15:=PMM[1].Phase[1].Current[1]; PMMfaza16:=PMM[1].Phase[1].Current[2]; PMMfaza17:=PMM[1].Phase[1].Current[3]; PMMfaza18:=PMM[1].Phase[1].Current[4]; PMMfaza19:=PMM[1].Phase[1].Current[5]; PMMfaza20:=PMM[1].Phase[1].Current[6]; PMMfaza21:=PMM[1].Phase[1].Current[7]; PMMfaza22:=PMM[1].Phase[1].Current[8]; PMMfaza23:=PMM[1].Phase[1].Current[9]; PMMfaza24:=PMM[1].Phase[1].Current[10]; PMMfaza25:=PMM[1].Phase[1].Current[11]; PMMfaza26:=PMM[1].Phase[1].Current[12]; PMMfaza27:=PMM[1].Phase[1].Current[13]; PMMfaza28:=PMM[1].Phase[1].Current[14]; (* PMMfaza29 .... PMMfaza42 odpade! *) (*vsota vseh tokov glede na vir*) PMMskupniTokA:=PMMfaza01+PMMfaza02+PMMfaza03+PMMfaza04+PMMfaza05+PMMfaza06+PMMfaza07+PMMfaza08+PMMfaza09+PMMfaza10+PMMfaza11+PMMfaza12+PMMfaza13+PMMfaza14; PMMskupniTokB:=PMMfaza15+PMMfaza16+PMMfaza17+PMMfaza18+PMMfaza19+PMMfaza20+PMMfaza21+PMMfaza22+PMMfaza23+PMMfaza24+PMMfaza25+PMMfaza26+PMMfaza27+PMMfaza28; (* (* Dolocanje napak PMMov *) FOR Index:=1 TO 3 DO PMM1OverCurrentBetw [Index]:=(PMM[1].AlarmPhase[Index].C01_16_60to80>0) OR (PMM[1].AlarmPhase[Index].C17_32_60to80>0) OR (PMM[1].AlarmPhase[Index].C33_42_60to80>0); PMM1OverCurrentOver [Index]:=(PMM[1].AlarmPhase[Index].C01_16_over80>0) OR (PMM[1].AlarmPhase[Index].C17_32_over80>0) OR (PMM[1].AlarmPhase[Index].C33_42_over80>0); END_FOR; *) SkupneNapakeNaprav_PMM17VirBVirA:=AlarmPMM1VirATokPrevisok OR AlarmPMM1VirBTokPrevisok; (**generiranje alarmov glede na vrednost pragov za PMM2x14**) (**VirA**) FOR Tok:=1 TO 14 DO IF (PMM[1].Phase[1].Current[43 - Tok]*1000 > 9600) AND (PMM[1].Phase[1].Current[43 - Tok]*1000 <= 12800) THEN OpozoriloPMM2x17med60in80[Tok]:=TRUE; ELSE OpozoriloPMM2x17med60in80[Tok]:=FALSE; END_IF IF (PMM[1].Phase[1].Current[43 - Tok]*1000 > 12800) THEN AlarmPMM2x17nad80[Tok]:=TRUE; ELSE AlarmPMM2x17nad80[Tok]:=FALSE; END_IF END_FOR (**VirB**) FOR Tok:=15 TO 28 DO IF (PMM[1].Phase[1].Current[Tok - 14]*1000 > 9600) AND (PMM[1].Phase[1].Current[Tok - 14]*1000 <= 12800) THEN OpozoriloPMM2x17med60in80[Tok]:=TRUE; ELSE OpozoriloPMM2x17med60in80[Tok]:=FALSE; END_IF IF (PMM[1].Phase[1].Current[Tok - 14]*1000 > 12800) THEN AlarmPMM2x17nad80[Tok]:=TRUE; ELSE AlarmPMM2x17nad80[Tok]:=FALSE; END_IF END_FOR (**Racunanje povisanega in previsokega toka za vsak vir za PMM2x14**) (**VirA**) VsotaNapakAl:=0; VsotaNapakOp:=0; FOR Tok:=1 TO 14 DO VsotaNapakAl:=VsotaNapakAl + BOOL_TO_BYTE(AlarmPMM2x17nad80[Tok]); VsotaNapakOp:=VsotaNapakOp + BOOL_TO_BYTE(OpozoriloPMM2x17med60in80[Tok]); END_FOR AlarmPMM1VirATokVisok:=(VsotaNapakOp>0) AND (NOT AlarmPMM1VirATokPrevisok); AlarmPMM1VirATokPrevisok:=VsotaNapakAl>0; (**VirB**) VsotaNapakAl:=0; VsotaNapakOp:=0; FOR Tok:=15 TO 28 DO VsotaNapakAl:=VsotaNapakAl + BOOL_TO_BYTE(AlarmPMM2x17nad80[Tok]); VsotaNapakOp:=VsotaNapakOp + BOOL_TO_BYTE(OpozoriloPMM2x17med60in80[Tok]); END_FOR AlarmPMM1VirBTokVisok:=(VsotaNapakOp>0) AND (NOT AlarmPMM1VirBTokPrevisok); AlarmPMM1VirBTokPrevisok:=VsotaNapakAl>0; ),\~/PLC_PRG@FB_ObdelavaAnalognihVhodov$K $KPROGRAM PLC_PRG VAR FB_ObdelavaAnalognihVhodov : ObdelavaAnalognihVhodov; (* Ton1:TON; Ton2:TON; Spr1:BOOL; Spr2:BOOL; *) END_VAR  (**** Obdelava analognih vhodov ****) FB_ObdelavaAnalognihVhodov(); (***Modbus***) ModBus_komunikacija; (***Panel****) Panel; (****Uporabnik in nastavitev casa na panelu ****) UserAndTime; (***Vklopi klim Rocno/AVTO***) KlimeVklopi(); (****Stanje baterije****) SlabaBaterijaPLC:=NOT SysRtcCheckBattery(TRUE); (* 1 = OK, 0 = Prazna *) (*Digitalni vhodi, ki niso uporabljeni*) ups_alarm; ups_baterijski_nac; ups_polnjenje; razlitjeLAH1; razlitjeLAH2; razlitjeLAH3; razlitjeLAH4; KLIMAT1_delovanje; KLIMAT2_delovanje; VLAZILEC1_delovanje; VLAZILEC2_delovanje; KLIMA_m1_delovanje; KLIMA_m1_napaka; KLIMA_m2_delovanje; KLIMA_m2_napaka; KLIMA1_kke_pogon; Q12_izpad; Q12_vkljuceno; (*Negiranje odpiralnih kontaktov*) N_F1_1_zascita_ok:=NOT F1_1_zascita_ok; N_Q12_izpad:=NOT Q12_izpad; N_KLIMAT1_napaka:=NOT KLIMAT1_napaka; N_KLIMAT2_napaka:=NOT KLIMAT2_napaka; N_VLAZILEC1_napaka:=NOT VLAZILEC1_delovanje; (*napaka odpade - signaliziramo samo delovanje*) N_VLAZILEC2_napaka:=NOT VLAZILEC2_delovanje; (*napaka odpade - signaliziramo samo delovanje*) N_KLIMA1_krm_nap_ok:=NOT KLIMA1_krm_nap_ok; N_UPS_A_V23_delovanje:=NOT UPS_A_V23_delovanje; (* UPS_A_V23_delovanje: 1 - OK, 0 - Bypass ON *) N_UPS_A_V23_napaka:=NOT UPS_A_V23_napaka; N_UPS_V23_delovanje:=NOT UPS_V23_delovanje; (* 1 - OK, 0 - Bypass ON *) N_UPS_V23_napaka:=NOT UPS_V23_napaka; N_UPS_V25_delovanje:=NOT UPS_V25_delovanje; (* 1 - OK, 0 - Bypass ON *) N_UPS_V25_napaka:=NOT UPS_V25_napaka; N_KlimeAVTO:= NOT KlimeAVTO; Klima1_izkljucena:=NOT KLIMAT1_delovanje; Klima2_izkljucena:=NOT KLIMAT2_delovanje; Klima3_izkljucena:=NOT K3_deluje; Q0_izkljuceno:=NOT Q0_vkljuceno; Q12_izkljuceno:=NOT Q12_vkljuceno; (* Dodan prepis zaradi negiranih vhodov 23.2.09, Aljaz *) GSM_PozCent_napaka := NOT ALM_GSM_PozCent_napaka ; (*3. klet GSM centrala - Napaka v poarni centrali*) GSM_PozSenzor_okvara := NOT ALM_GSM_PozSenzor_okvara ; (*3. klet GSM centrala - Okvara senzorja poara-1. alarm*) GSM_Gasenje_alarm := NOT ALM_GSM_Gasenje_alarm ; (*3. klet GSM centrala - Alarm za gaenje-2.alarm*) AGR_PozCent_napaka:= NOT ALM_AGR_PozCent_napaka; (*3. klet Agregati - Napaka v poarni centrali*) AGR_PozSenzor_okvara := NOT ALM_AGR_PozSenzor_okvara; (*3. klet Agregati - Okvara senzorja poara-1. alarm*) AGR_Gasenje_alarm := NOT ALM_AGR_Gasenje_alarm; (*3. klet Agregati - Alarm za gaenje-2.alarm*) (* Mogoce bo potrebno dodati *) (* (*****************************************************************************************************************************) (*Koda za bremzanje branja Fibernet XC101 krmilnika PMM!!!!!!!! *) Spr1; Spr2; Ton2(IN:=NOT( Spr2), PT:=T#2s); IF Ton2.Q=TRUE THEN Spr1:=FALSE; Spr2:=TRUE; END_IF Ton1(IN:=NOT( Spr1), PT:=T#2s); IF Ton1.Q=TRUE THEN Spr2:=FALSE; Spr1:=TRUE; END_IF ModBusTransPort2[12].TransActive:=Spr1; (*Prepis na Global ModBus Trans branje faze....... izmenicno *) (*Koda za bremzanje branja Fibernet XC101 krmilnika PMM!!!!!!!! *) (*****************************************************************************************************************************) *) ,jPLC_PRG_modnet$K $K(*Modbus Slave Example*) PROGRAM PLC_PRG_modnet VAR Slave_Adresa:BYTE:=14; 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; Read_dWord$K $KbFUNCTION 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; Read_Real$K $K`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; Read_String$K $K\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;3,1SCADA_komunikacija$K $Kocen a SFUNCTION_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;*, Skaliranje$K $Kelgrati FUNCTION_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;4,"? UserAndTime$K $K!PROGRAM UserAndTime VAR {flag noread, nowrite on} SetTime:S40_SetRealTimeClock; GetTime:S40_GetRealTimeClock; Analizator_Razlika_Energije:Analizator_Razlika_Energije; 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; GetTime(Year=>DateTime.PLC_Leto , Month=>DateTime.PLC_Mesec , Day=>DateTime.PLC_Dan , Hour=>DateTime.PLC_Ura , Minute=>DateTime.PLC_Minuta , Second=>DateTime.PLC_Sekunda, Weekday=>DateTime.PLC_DanVTednu); Analizator_Razlika_Energije(); ,Xtd 'ModbusMaster.lib 17.5.05 15:55:00@B-XS40_MollerFB_RTC.lib 29.11.04 16:14:24@"Standard.lib 7.6.02 09:26:00@n=(SYSLIBCALLBACK.LIB 9.7.02 16:14:54@*=)SysLibSockets.lib 12.11.04 09:21:08@trA$ModbusTCP.lib 24.5.05 14:50:18@1BModbusMaster@ModbusMaster_CoilMax@ModbusMaster_CRC16@ModbusMaster_EventStop@|Global_Variables@ModbusMaster_xComPortActiv ModbusMaster_dwarHandle ModbusMaster_xStartFirstCycle "S40_GetRealTimeClock@ S40_Rtc@S40_SetRealTimeClock@Globale_Variablen@xSysComClose@ COMBAUDRATE COMCONTROL COMDATALEN COMPARITYCOMPORTS COMSETTINGS COMSTOPBITSxSysComGetVersion1000@xSysComOpen@xSysComRead@xSysComReadControl@xSysComSetSettings@xSysComWrite@xSysComWriteControl@*DataScale@ DAY_OF_WEEKDATconcatX@DateConcat@DateSplit@DATsplitX@ FifoBx@ FifoWx@IEEE_To_Real@ LifoBx@ LifoWx@MI4netDP16@MI4netDP32@MS_TimeFalling@MS_TimeRising@MV4netDP38@MV4netDP70@Real_To_IEEE@S_TimeFalling@S_TimeRising@S40_16BitCounter@S40_32BitCounter@ SR_x@ SRB_x@ SRW_x@TimeConcatX@TimeGenerator@TimePulse@TimeSplitX@TODconcat@TODsplit@Globale_Variablen@ SysRtcCheckBattery@SysRtcGetHourMode@SysRtcGetTime@SysRtcSetTime@Globale_Variablen@CONCAT@ CTD@ CTU@ CTUD@ DELETE@ F_TRIG@ FIND@ INSERT@ LEFT@ LEN@ MID@ R_TRIG@ REPLACE@ RIGHT@RS@ RTC@ SEMA@SR@ TOF@ TON@TP@Global Variables 0@bSysCallbackRegister@ RTS_EVENTRTS_EVENT_FILTERRTS_EVENT_SOURCESysCallbackUnregister@Globale_Variablen@Version@rVersionb|SysSockAccept@INADDR SOCKADDRESS SOCKET_FD_SET SOCKET_LINGERSOCKET_TIMEVALSysSockBind@SysSockClose@SysSockConnect@SysSockCreate@SysSockGetHostByName@SysSockGetHostName@SysSockGetOption@SysSockHtonl@SysSockHtons@SysSockInetAddr@SysSockInetNtoa@SysSockIoctl@SysSockListen@SysSockNtohl@SysSockNtohs@SysSockRecv@SysSockRecvFrom@SysSockSelect@SysSockSend@SysSockSendTo@SysSockSetIPAddress@SysSockSetOption@SysSockShutdown@Globale_Variablen@Callback_Reset@PModbusBufferType TConnectTypeTModbusBufferType TSlaveType TSockAddrTSockSet TSockTimevalCallback_Stop@MB_ExchangeWord@MB_MakeIP@MBM_CloseAllConnections@MBM_CloseConnection@MBM_Communicate@MBM_Loopback@MBM_ReadCoilStatus@MBM_ReadHoldingRegisters@MBM_ReadInputRegisters@MBM_ReadInputStatus@MBM_ReadWriteRegisters@MBM_Send@MBM_WriteMultipleCoils@ MBM_WriteMultipleRegisters@MBM_WriteSingleCoil@MBM_WriteSingleRegister@MBS_AddSecureAddress@MBS_Answer@MBS_ClearSecureAddresses@MBS_CloseAllConnections@MBS_DeleteSecureAddress@MBS_Poll@MBS_Setup@Globale_Variablen@n2 ,+?,BWWyPOUsModnet mod_Readmod_Write_Boolmod_Write_dWordmod_Write_Stringmod_Write_WordPLC_PRG_modnet Read_dWord Read_Real Read_StringScale_AO_AI_Values CircutorValueyAnalizator_Razlika_Energije KlimeVklopi ModBus_CP2]ModBus_komunikacija^ ModBus_UPS~ ModBusM_RW_ObdelavaAnalognihVhodov+Panel,PLC_PRG)SCADA_komunikacija3 Skaliranje* UserAndTime4 Data types DateTime5KlimatskaNaprava{MCircutorDataStructurex MComPortParam`MCurentPhaseTableMCurrentAlarmsStruct MErrorCommaMModMasterDefinitionbMModMasterWriteDefcMPMMdataStructureMUPSdataStructure} UPS_Gal3000|VisualizationsGlobal VariablesGlobal_Modbus_definitions\Global_VariablesGlobal_Variables_ModnetGlobal_VarRetainzVariable_Configuration !P?E@B@B localhostP localhostP localhostPX