Adds working driver, working modbus program, and HMI
This commit is contained in:
@@ -0,0 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<DevicePreferences xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
|
||||
<Micro800ConnectionPath>PATRICKMCDO8E0A!HenryPump\10.20.4.40</Micro800ConnectionPath>
|
||||
</DevicePreferences>
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1 @@
|
||||
COMPILED
|
||||
@@ -0,0 +1 @@
|
||||
COMPILED
|
||||
@@ -0,0 +1 @@
|
||||
COMPILED
|
||||
Binary file not shown.
@@ -1,2 +1,5 @@
|
||||
FLOWMETERMB
|
||||
WATCHDOG
|
||||
WORDSTOREAL
|
||||
FLOWRATEUNITS
|
||||
FLOWTOTALUNITS
|
||||
|
||||
@@ -1,20 +1,52 @@
|
||||
MODBUSTIMER.IN@FLOWMETERMB,__TMPB__TON__IN,BOOL
|
||||
MODBUSTIMER.PT@FLOWMETERMB,MODBUSSCANRATE,TIME
|
||||
MBS_FLOWTOTALPOS_MSG.IN@FLOWMETERMB,__TMPB__MSG_MODBUS__IN,BOOL
|
||||
MBS_FLOWTOTALPOS_MSG.CANCEL@FLOWMETERMB,MBS_CANCEL@FLOWMETERMB,BOOL
|
||||
MBS_FLOWTOTALPOS_MSG.LOCALCFG@FLOWMETERMB,<NOT USED>,MODBUSLOCPARA
|
||||
MBS_FLOWTOTALPOS_MSG.TARGETCFG@FLOWMETERMB,<NOT USED>,MODBUSTARPARA
|
||||
MBS_FLOWTOTALPOS_MSG.LOCALADDR@FLOWMETERMB,<NOT USED>,MODBUSLOCADDR
|
||||
MBS_FLOWTOTALPOS_MSG.__ADI_LOCALADDR@FLOWMETERMB,<NOT USED>,UINT
|
||||
MBS_FLOWTOTALNEG_MSG.IN@FLOWMETERMB,__TMPB__MSG_MODBUS__IN,BOOL
|
||||
MBS_FLOWTOTALNEG_MSG.CANCEL@FLOWMETERMB,MBS_CANCEL@FLOWMETERMB,BOOL
|
||||
MBS_FLOWTOTALNEG_MSG.LOCALCFG@FLOWMETERMB,<NOT USED>,MODBUSLOCPARA
|
||||
MBS_FLOWTOTALNEG_MSG.TARGETCFG@FLOWMETERMB,<NOT USED>,MODBUSTARPARA
|
||||
MBS_FLOWTOTALNEG_MSG.LOCALADDR@FLOWMETERMB,<NOT USED>,MODBUSLOCADDR
|
||||
MBS_FLOWTOTALNEG_MSG.__ADI_LOCALADDR@FLOWMETERMB,<NOT USED>,UINT
|
||||
MBS_FLOWGROSS_MSG.IN@FLOWMETERMB,__TMPB__MSG_MODBUS__IN,BOOL
|
||||
MBS_FLOWGROSS_MSG.CANCEL@FLOWMETERMB,MBS_CANCEL@FLOWMETERMB,BOOL
|
||||
MBS_FLOWGROSS_MSG.LOCALCFG@FLOWMETERMB,<NOT USED>,MODBUSLOCPARA
|
||||
MBS_FLOWGROSS_MSG.TARGETCFG@FLOWMETERMB,<NOT USED>,MODBUSTARPARA
|
||||
MBS_FLOWGROSS_MSG.LOCALADDR@FLOWMETERMB,<NOT USED>,MODBUSLOCADDR
|
||||
MBS_FLOWGROSS_MSG.__ADI_LOCALADDR@FLOWMETERMB,<NOT USED>,UINT
|
||||
WAIT_TO_RESET_TON.IN@FLOWMETERMB,CMD_CLEARRESETTOTALIZER@FLOWMETERMB,BOOL
|
||||
WAIT_TO_RESET_TON.PT@FLOWMETERMB,PAR_TIMETOWAITTOCLEARRESETTOTALIZER@FLOWMETERMB,TIME
|
||||
MBS_FLOWRATE_MSG.IN@FLOWMETERMB,__TMPB__MSG_MODBUS__IN,BOOL
|
||||
MBS_FLOWRATE_MSG.CANCEL@FLOWMETERMB,MBS_CANCEL@FLOWMETERMB,BOOL
|
||||
MBS_FLOWRATE_MSG.LOCALCFG@FLOWMETERMB,<NOT USED>,MODBUSLOCPARA
|
||||
MBS_FLOWRATE_MSG.TARGETCFG@FLOWMETERMB,<NOT USED>,MODBUSTARPARA
|
||||
MBS_FLOWRATE_MSG.LOCALADDR@FLOWMETERMB,<NOT USED>,MODBUSLOCADDR
|
||||
MBS_FLOWRATE_MSG.__ADI_LOCALADDR@FLOWMETERMB,<NOT USED>,UINT
|
||||
MBS_FLOWTOTALIZERA_MSG.IN@FLOWMETERMB,__TMPB__MSG_MODBUS__IN,BOOL
|
||||
MBS_FLOWTOTALIZERA_MSG.CANCEL@FLOWMETERMB,MBS_CANCEL@FLOWMETERMB,BOOL
|
||||
MBS_FLOWTOTALIZERA_MSG.LOCALCFG@FLOWMETERMB,<NOT USED>,MODBUSLOCPARA
|
||||
MBS_FLOWTOTALIZERA_MSG.TARGETCFG@FLOWMETERMB,<NOT USED>,MODBUSTARPARA
|
||||
MBS_FLOWTOTALIZERA_MSG.LOCALADDR@FLOWMETERMB,<NOT USED>,MODBUSLOCADDR
|
||||
MBS_FLOWTOTALIZERA_MSG.__ADI_LOCALADDR@FLOWMETERMB,<NOT USED>,UINT
|
||||
MBS_FLOWTOTALIZERB_MSG.IN@FLOWMETERMB,__TMPB__MSG_MODBUS__IN,BOOL
|
||||
MBS_FLOWTOTALIZERB_MSG.CANCEL@FLOWMETERMB,MBS_CANCEL@FLOWMETERMB,BOOL
|
||||
MBS_FLOWTOTALIZERB_MSG.LOCALCFG@FLOWMETERMB,<NOT USED>,MODBUSLOCPARA
|
||||
MBS_FLOWTOTALIZERB_MSG.TARGETCFG@FLOWMETERMB,<NOT USED>,MODBUSTARPARA
|
||||
MBS_FLOWTOTALIZERB_MSG.LOCALADDR@FLOWMETERMB,<NOT USED>,MODBUSLOCADDR
|
||||
MBS_FLOWTOTALIZERB_MSG.__ADI_LOCALADDR@FLOWMETERMB,<NOT USED>,UINT
|
||||
MBS_FLOWTOTALIZERC_MSG.IN@FLOWMETERMB,__TMPB__MSG_MODBUS__IN,BOOL
|
||||
MBS_FLOWTOTALIZERC_MSG.CANCEL@FLOWMETERMB,MBS_CANCEL@FLOWMETERMB,BOOL
|
||||
MBS_FLOWTOTALIZERC_MSG.LOCALCFG@FLOWMETERMB,<NOT USED>,MODBUSLOCPARA
|
||||
MBS_FLOWTOTALIZERC_MSG.TARGETCFG@FLOWMETERMB,<NOT USED>,MODBUSTARPARA
|
||||
MBS_FLOWTOTALIZERC_MSG.LOCALADDR@FLOWMETERMB,<NOT USED>,MODBUSLOCADDR
|
||||
MBS_FLOWTOTALIZERC_MSG.__ADI_LOCALADDR@FLOWMETERMB,<NOT USED>,UINT
|
||||
MBS_STATUS_MSG.IN@FLOWMETERMB,__TMPB__MSG_MODBUS__IN,BOOL
|
||||
MBS_STATUS_MSG.CANCEL@FLOWMETERMB,MBS_CANCEL@FLOWMETERMB,BOOL
|
||||
MBS_STATUS_MSG.LOCALCFG@FLOWMETERMB,<NOT USED>,MODBUSLOCPARA
|
||||
MBS_STATUS_MSG.TARGETCFG@FLOWMETERMB,<NOT USED>,MODBUSTARPARA
|
||||
MBS_STATUS_MSG.LOCALADDR@FLOWMETERMB,<NOT USED>,MODBUSLOCADDR
|
||||
MBS_STATUS_MSG.__ADI_LOCALADDR@FLOWMETERMB,<NOT USED>,UINT
|
||||
MBS_RESETTOTALIZER_MSG.IN@FLOWMETERMB,CMD_RESETTOTALIZER@FLOWMETERMB,BOOL
|
||||
MBS_RESETTOTALIZER_MSG.CANCEL@FLOWMETERMB,MBS_CANCEL@FLOWMETERMB,BOOL
|
||||
MBS_RESETTOTALIZER_MSG.LOCALCFG@FLOWMETERMB,<NOT USED>,MODBUSLOCPARA
|
||||
MBS_RESETTOTALIZER_MSG.TARGETCFG@FLOWMETERMB,<NOT USED>,MODBUSTARPARA
|
||||
MBS_RESETTOTALIZER_MSG.LOCALADDR@FLOWMETERMB,<NOT USED>,MODBUSLOCADDR
|
||||
MBS_RESETTOTALIZER_MSG.__ADI_LOCALADDR@FLOWMETERMB,<NOT USED>,UINT
|
||||
MBS_CLEARRESETTOTALIZER_MSG.IN@FLOWMETERMB,__TMPB__MSG_MODBUS__IN,BOOL
|
||||
MBS_CLEARRESETTOTALIZER_MSG.CANCEL@FLOWMETERMB,MBS_CANCEL@FLOWMETERMB,BOOL
|
||||
MBS_CLEARRESETTOTALIZER_MSG.LOCALCFG@FLOWMETERMB,<NOT USED>,MODBUSLOCPARA
|
||||
MBS_CLEARRESETTOTALIZER_MSG.TARGETCFG@FLOWMETERMB,<NOT USED>,MODBUSTARPARA
|
||||
MBS_CLEARRESETTOTALIZER_MSG.LOCALADDR@FLOWMETERMB,<NOT USED>,MODBUSLOCADDR
|
||||
MBS_CLEARRESETTOTALIZER_MSG.__ADI_LOCALADDR@FLOWMETERMB,<NOT USED>,UINT
|
||||
MBS_UNITS_MSG.IN@FLOWMETERMB,__TMPB__MSG_MODBUS__IN,BOOL
|
||||
MBS_UNITS_MSG.CANCEL@FLOWMETERMB,MBS_CANCEL@FLOWMETERMB,BOOL
|
||||
MBS_UNITS_MSG.LOCALCFG@FLOWMETERMB,<NOT USED>,MODBUSLOCPARA
|
||||
MBS_UNITS_MSG.TARGETCFG@FLOWMETERMB,<NOT USED>,MODBUSTARPARA
|
||||
MBS_UNITS_MSG.LOCALADDR@FLOWMETERMB,<NOT USED>,MODBUSLOCADDR
|
||||
MBS_UNITS_MSG.__ADI_LOCALADDR@FLOWMETERMB,<NOT USED>,UINT
|
||||
|
||||
@@ -1 +1 @@
|
||||
FLOWMETERMB(147):F,WORDSTOREAL(148);
|
||||
FLOWMETERMB(147):F,WORDSTOREAL(148);F,RIGHT();F,MLEN();F,FLOWRATEUNITS(150);F,FLOWTOTALUNITS(151);
|
||||
@@ -2,105 +2,770 @@ __TMPB1 := MODBUSTIMER [ __CDINT00000004 ]
|
||||
__TMPB1 := _NOT __TMPB1
|
||||
__TMPB__TON__IN := __TMPB1
|
||||
__FBL_RET := _PUSHCALLFB TON MODBUSTIMER
|
||||
MBS_FLOWTOTALPOS_TARGETCFG [ __DINT_NULL ] := CFG_FLOWTOTALPOS_REGISTER
|
||||
MBS_FLOWTOTALPOS_TARGETCFG [ __CDINT00000004 ] := CFG_FLOWMETER_MODBUSNODE
|
||||
MBS_FLOWTOTALPOS_LOCALCFG [ __DINT_NULL ] := __CUINT00000002
|
||||
MBS_FLOWTOTALPOS_LOCALCFG [ __CDINT00000003 ] := READ_CMD
|
||||
MBS_FLOWTOTALPOS_LOCALCFG [ __CDINT00000002 ] := MBS_TRIGGERTYPE
|
||||
MBS_FLOWTOTALPOS_LOCALCFG [ __CDINT00000004 ] := __CUINT00000002
|
||||
MBS_FLOWRATE_TARGETCFG [ __DINT_NULL ] := CFG_FLOWRATE_REGISTER
|
||||
MBS_FLOWRATE_TARGETCFG [ __CDINT00000004 ] := CFG_FLOWMETER_MODBUSNODE
|
||||
MBS_FLOWRATE_LOCALCFG [ __DINT_NULL ] := __CUINT00000002
|
||||
MBS_FLOWRATE_LOCALCFG [ __CDINT00000003 ] := READ_CMD
|
||||
MBS_FLOWRATE_LOCALCFG [ __CDINT00000002 ] := MBS_TRIGGERTYPE
|
||||
MBS_FLOWRATE_LOCALCFG [ __CDINT00000004 ] := __CUINT00000002
|
||||
__TMPB1 := MODBUSTIMER [ __CDINT00000004 ]
|
||||
__TMPV1 := MBS_FLOWTOTALPOS_LOCALCFG [ __DINT_NULL ]
|
||||
__TMPV2 := MBS_FLOWTOTALPOS_TARGETCFG [ __DINT_NULL ]
|
||||
__TMPV3 := MBS_FLOWTOTALPOS_DATA [ __DINT_NULL ]
|
||||
__TMPV1 := MBS_FLOWRATE_LOCALCFG [ __DINT_NULL ]
|
||||
__TMPV2 := MBS_FLOWRATE_TARGETCFG [ __DINT_NULL ]
|
||||
__TMPV3 := MBS_FLOWRATE_DATA [ __DINT_NULL ]
|
||||
__TMPB__MSG_MODBUS__IN := __TMPB1
|
||||
__TMPV4 := MBS_FLOWTOTALPOS_MSG [ __CDINT00000004 ]
|
||||
__TMPV4 := MBS_FLOWRATE_MSG [ __CDINT00000004 ]
|
||||
__TMPV4 := __TMPV1
|
||||
__TMPV5 := MBS_FLOWTOTALPOS_MSG [ __CDINT00000006 ]
|
||||
__TMPV5 := MBS_FLOWRATE_MSG [ __CDINT00000006 ]
|
||||
__TMPV5 := __TMPV2
|
||||
__TMPV6 := MBS_FLOWTOTALPOS_MSG [ __CDINT00000008 ]
|
||||
__TMPV6 := MBS_FLOWRATE_MSG [ __CDINT00000008 ]
|
||||
__TMPV6 := __TMPV3
|
||||
MBS_FLOWTOTALPOS_MSG [ __CDINT0000000A ] := __ADI__FLOWMETERMB_0_0
|
||||
__FBL_RET := _PUSHCALLFB MSG_MODBUS MBS_FLOWTOTALPOS_MSG
|
||||
__TMPB1 := MBS_FLOWTOTALPOS_MSG [ __CDINT0000000C ]
|
||||
MBS_FLOWRATE_MSG [ __CDINT0000000A ] := __ADI__FLOWMETERMB_0_0
|
||||
__FBL_RET := _PUSHCALLFB MSG_MODBUS MBS_FLOWRATE_MSG
|
||||
__TMPB1 := MBS_FLOWRATE_MSG [ __CDINT0000000C ]
|
||||
_IF _NOT __TMPB1 _GOTO __LAB1
|
||||
__TMPI1 := __CDINT00000002 - __CDINT00000001
|
||||
__TMPI1 := __CDINT00000001 - __CDINT00000001
|
||||
__TMPI1 := __TMPI1 * __CDINT00000002
|
||||
__TMPUIN1 := MBS_FLOWTOTALPOS_DATA [ __TMPI1 ]
|
||||
__TMPI2 := __CDINT00000001 - __CDINT00000001
|
||||
__TMPUIN1 := MBS_FLOWRATE_DATA [ __TMPI1 ]
|
||||
__TMPI2 := __CDINT00000002 - __CDINT00000001
|
||||
__TMPI2 := __TMPI2 * __CDINT00000002
|
||||
__TMPUIN2 := MBS_FLOWTOTALPOS_DATA [ __TMPI2 ]
|
||||
__TMPUIN2 := MBS_FLOWRATE_DATA [ __TMPI2 ]
|
||||
_PUSH_PAR __TMPUIN1
|
||||
_PUSH_PAR __TMPUIN2
|
||||
__TMPR1 := _CALL WORDSTOREAL
|
||||
VAL_FLOWTOTALPOS := __TMPR1
|
||||
VAL_FLOWRATE := __TMPR1
|
||||
_GOTO __LAB2
|
||||
__LAB1 :
|
||||
__LAB2 :
|
||||
MBS_FLOWTOTALNEG_TARGETCFG [ __DINT_NULL ] := CFG_FLOWTOTALNEG_REGISTER
|
||||
MBS_FLOWTOTALNEG_TARGETCFG [ __CDINT00000004 ] := CFG_FLOWMETER_MODBUSNODE
|
||||
MBS_FLOWTOTALNEG_LOCALCFG [ __DINT_NULL ] := __CUINT00000002
|
||||
MBS_FLOWTOTALNEG_LOCALCFG [ __CDINT00000003 ] := READ_CMD
|
||||
MBS_FLOWTOTALNEG_LOCALCFG [ __CDINT00000002 ] := MBS_TRIGGERTYPE
|
||||
MBS_FLOWTOTALNEG_LOCALCFG [ __CDINT00000004 ] := __CUINT00000002
|
||||
MBS_FLOWTOTALIZERA_TARGETCFG [ __DINT_NULL ] := CFG_FLOWTOTALIZERA_REGISTER
|
||||
MBS_FLOWTOTALIZERA_TARGETCFG [ __CDINT00000004 ] := CFG_FLOWMETER_MODBUSNODE
|
||||
MBS_FLOWTOTALIZERA_LOCALCFG [ __DINT_NULL ] := __CUINT00000002
|
||||
MBS_FLOWTOTALIZERA_LOCALCFG [ __CDINT00000003 ] := READ_CMD
|
||||
MBS_FLOWTOTALIZERA_LOCALCFG [ __CDINT00000002 ] := MBS_TRIGGERTYPE
|
||||
MBS_FLOWTOTALIZERA_LOCALCFG [ __CDINT00000004 ] := __CUINT00000002
|
||||
__TMPB1 := MODBUSTIMER [ __CDINT00000004 ]
|
||||
__TMPV1 := MBS_FLOWTOTALNEG_LOCALCFG [ __DINT_NULL ]
|
||||
__TMPV2 := MBS_FLOWTOTALNEG_TARGETCFG [ __DINT_NULL ]
|
||||
__TMPV3 := MBS_FLOWTOTALNEG_DATA [ __DINT_NULL ]
|
||||
__TMPV1 := MBS_FLOWTOTALIZERA_LOCALCFG [ __DINT_NULL ]
|
||||
__TMPV2 := MBS_FLOWTOTALIZERA_TARGETCFG [ __DINT_NULL ]
|
||||
__TMPV3 := MBS_FLOWTOTALIZERA_DATA [ __DINT_NULL ]
|
||||
__TMPB__MSG_MODBUS__IN := __TMPB1
|
||||
__TMPV4 := MBS_FLOWTOTALNEG_MSG [ __CDINT00000004 ]
|
||||
__TMPV4 := MBS_FLOWTOTALIZERA_MSG [ __CDINT00000004 ]
|
||||
__TMPV4 := __TMPV1
|
||||
__TMPV5 := MBS_FLOWTOTALNEG_MSG [ __CDINT00000006 ]
|
||||
__TMPV5 := MBS_FLOWTOTALIZERA_MSG [ __CDINT00000006 ]
|
||||
__TMPV5 := __TMPV2
|
||||
__TMPV6 := MBS_FLOWTOTALNEG_MSG [ __CDINT00000008 ]
|
||||
__TMPV6 := MBS_FLOWTOTALIZERA_MSG [ __CDINT00000008 ]
|
||||
__TMPV6 := __TMPV3
|
||||
MBS_FLOWTOTALNEG_MSG [ __CDINT0000000A ] := __ADI__FLOWMETERMB_0_1
|
||||
__FBL_RET := _PUSHCALLFB MSG_MODBUS MBS_FLOWTOTALNEG_MSG
|
||||
__TMPB1 := MBS_FLOWTOTALNEG_MSG [ __CDINT0000000C ]
|
||||
MBS_FLOWTOTALIZERA_MSG [ __CDINT0000000A ] := __ADI__FLOWMETERMB_0_1
|
||||
__FBL_RET := _PUSHCALLFB MSG_MODBUS MBS_FLOWTOTALIZERA_MSG
|
||||
__TMPB1 := MBS_FLOWTOTALIZERA_MSG [ __CDINT0000000C ]
|
||||
_IF _NOT __TMPB1 _GOTO __LAB3
|
||||
__TMPI1 := __CDINT00000002 - __CDINT00000001
|
||||
__TMPI1 := __CDINT00000001 - __CDINT00000001
|
||||
__TMPI1 := __TMPI1 * __CDINT00000002
|
||||
__TMPUIN1 := MBS_FLOWTOTALNEG_DATA [ __TMPI1 ]
|
||||
__TMPI2 := __CDINT00000001 - __CDINT00000001
|
||||
__TMPUIN1 := MBS_FLOWTOTALIZERA_DATA [ __TMPI1 ]
|
||||
__TMPI2 := __CDINT00000002 - __CDINT00000001
|
||||
__TMPI2 := __TMPI2 * __CDINT00000002
|
||||
__TMPUIN2 := MBS_FLOWTOTALNEG_DATA [ __TMPI2 ]
|
||||
__TMPUIN2 := MBS_FLOWTOTALIZERA_DATA [ __TMPI2 ]
|
||||
_PUSH_PAR __TMPUIN1
|
||||
_PUSH_PAR __TMPUIN2
|
||||
__TMPR1 := _CALL WORDSTOREAL
|
||||
VAL_FLOWTOTALNEG := __TMPR1
|
||||
VAL_FLOWTOTALIZERA := __TMPR1
|
||||
_GOTO __LAB4
|
||||
__LAB3 :
|
||||
__LAB4 :
|
||||
MBS_FLOWGROSS_TARGETCFG [ __DINT_NULL ] := CFG_FLOWGROSS_REGISTER
|
||||
MBS_FLOWGROSS_TARGETCFG [ __CDINT00000004 ] := CFG_FLOWMETER_MODBUSNODE
|
||||
MBS_FLOWGROSS_LOCALCFG [ __DINT_NULL ] := __CUINT00000002
|
||||
MBS_FLOWGROSS_LOCALCFG [ __CDINT00000003 ] := READ_CMD
|
||||
MBS_FLOWGROSS_LOCALCFG [ __CDINT00000002 ] := MBS_TRIGGERTYPE
|
||||
MBS_FLOWGROSS_LOCALCFG [ __CDINT00000004 ] := __CUINT00000002
|
||||
MBS_FLOWTOTALIZERB_TARGETCFG [ __DINT_NULL ] := CFG_FLOWTOTALIZERB_REGISTER
|
||||
MBS_FLOWTOTALIZERB_TARGETCFG [ __CDINT00000004 ] := CFG_FLOWMETER_MODBUSNODE
|
||||
MBS_FLOWTOTALIZERB_LOCALCFG [ __DINT_NULL ] := __CUINT00000002
|
||||
MBS_FLOWTOTALIZERB_LOCALCFG [ __CDINT00000003 ] := READ_CMD
|
||||
MBS_FLOWTOTALIZERB_LOCALCFG [ __CDINT00000002 ] := MBS_TRIGGERTYPE
|
||||
MBS_FLOWTOTALIZERB_LOCALCFG [ __CDINT00000004 ] := __CUINT00000002
|
||||
__TMPB1 := MODBUSTIMER [ __CDINT00000004 ]
|
||||
__TMPV1 := MBS_FLOWGROSS_LOCALCFG [ __DINT_NULL ]
|
||||
__TMPV2 := MBS_FLOWGROSS_TARGETCFG [ __DINT_NULL ]
|
||||
__TMPV3 := MBS_FLOWGROSS_DATA [ __DINT_NULL ]
|
||||
__TMPV1 := MBS_FLOWTOTALIZERB_LOCALCFG [ __DINT_NULL ]
|
||||
__TMPV2 := MBS_FLOWTOTALIZERB_TARGETCFG [ __DINT_NULL ]
|
||||
__TMPV3 := MBS_FLOWTOTALIZERB_DATA [ __DINT_NULL ]
|
||||
__TMPB__MSG_MODBUS__IN := __TMPB1
|
||||
__TMPV4 := MBS_FLOWGROSS_MSG [ __CDINT00000004 ]
|
||||
__TMPV4 := MBS_FLOWTOTALIZERB_MSG [ __CDINT00000004 ]
|
||||
__TMPV4 := __TMPV1
|
||||
__TMPV5 := MBS_FLOWGROSS_MSG [ __CDINT00000006 ]
|
||||
__TMPV5 := MBS_FLOWTOTALIZERB_MSG [ __CDINT00000006 ]
|
||||
__TMPV5 := __TMPV2
|
||||
__TMPV6 := MBS_FLOWGROSS_MSG [ __CDINT00000008 ]
|
||||
__TMPV6 := MBS_FLOWTOTALIZERB_MSG [ __CDINT00000008 ]
|
||||
__TMPV6 := __TMPV3
|
||||
MBS_FLOWGROSS_MSG [ __CDINT0000000A ] := __ADI__FLOWMETERMB_0_2
|
||||
__FBL_RET := _PUSHCALLFB MSG_MODBUS MBS_FLOWGROSS_MSG
|
||||
__TMPB1 := MBS_FLOWGROSS_MSG [ __CDINT0000000C ]
|
||||
MBS_FLOWTOTALIZERB_MSG [ __CDINT0000000A ] := __ADI__FLOWMETERMB_0_2
|
||||
__FBL_RET := _PUSHCALLFB MSG_MODBUS MBS_FLOWTOTALIZERB_MSG
|
||||
__TMPB1 := MBS_FLOWTOTALIZERB_MSG [ __CDINT0000000C ]
|
||||
_IF _NOT __TMPB1 _GOTO __LAB5
|
||||
__TMPI1 := __CDINT00000002 - __CDINT00000001
|
||||
__TMPI1 := __CDINT00000001 - __CDINT00000001
|
||||
__TMPI1 := __TMPI1 * __CDINT00000002
|
||||
__TMPUIN1 := MBS_FLOWGROSS_DATA [ __TMPI1 ]
|
||||
__TMPI2 := __CDINT00000001 - __CDINT00000001
|
||||
__TMPUIN1 := MBS_FLOWTOTALIZERB_DATA [ __TMPI1 ]
|
||||
__TMPI2 := __CDINT00000002 - __CDINT00000001
|
||||
__TMPI2 := __TMPI2 * __CDINT00000002
|
||||
__TMPUIN2 := MBS_FLOWGROSS_DATA [ __TMPI2 ]
|
||||
__TMPUIN2 := MBS_FLOWTOTALIZERB_DATA [ __TMPI2 ]
|
||||
_PUSH_PAR __TMPUIN1
|
||||
_PUSH_PAR __TMPUIN2
|
||||
__TMPR1 := _CALL WORDSTOREAL
|
||||
VAL_FLOWGROSS := __TMPR1
|
||||
VAL_FLOWTOTALIZERB := __TMPR1
|
||||
_GOTO __LAB6
|
||||
__LAB5 :
|
||||
__LAB6 :
|
||||
MBS_FLOWTOTALIZERC_TARGETCFG [ __DINT_NULL ] := CFG_FLOWTOTALIZERC_REGISTER
|
||||
MBS_FLOWTOTALIZERC_TARGETCFG [ __CDINT00000004 ] := CFG_FLOWMETER_MODBUSNODE
|
||||
MBS_FLOWTOTALIZERC_LOCALCFG [ __DINT_NULL ] := __CUINT00000002
|
||||
MBS_FLOWTOTALIZERC_LOCALCFG [ __CDINT00000003 ] := READ_CMD
|
||||
MBS_FLOWTOTALIZERC_LOCALCFG [ __CDINT00000002 ] := MBS_TRIGGERTYPE
|
||||
MBS_FLOWTOTALIZERC_LOCALCFG [ __CDINT00000004 ] := __CUINT00000002
|
||||
__TMPB1 := MODBUSTIMER [ __CDINT00000004 ]
|
||||
__TMPV1 := MBS_FLOWTOTALIZERC_LOCALCFG [ __DINT_NULL ]
|
||||
__TMPV2 := MBS_FLOWTOTALIZERC_TARGETCFG [ __DINT_NULL ]
|
||||
__TMPV3 := MBS_FLOWTOTALIZERC_DATA [ __DINT_NULL ]
|
||||
__TMPB__MSG_MODBUS__IN := __TMPB1
|
||||
__TMPV4 := MBS_FLOWTOTALIZERC_MSG [ __CDINT00000004 ]
|
||||
__TMPV4 := __TMPV1
|
||||
__TMPV5 := MBS_FLOWTOTALIZERC_MSG [ __CDINT00000006 ]
|
||||
__TMPV5 := __TMPV2
|
||||
__TMPV6 := MBS_FLOWTOTALIZERC_MSG [ __CDINT00000008 ]
|
||||
__TMPV6 := __TMPV3
|
||||
MBS_FLOWTOTALIZERC_MSG [ __CDINT0000000A ] := __ADI__FLOWMETERMB_0_3
|
||||
__FBL_RET := _PUSHCALLFB MSG_MODBUS MBS_FLOWTOTALIZERC_MSG
|
||||
__TMPB1 := MBS_FLOWTOTALIZERC_MSG [ __CDINT0000000C ]
|
||||
_IF _NOT __TMPB1 _GOTO __LAB7
|
||||
__TMPI1 := __CDINT00000001 - __CDINT00000001
|
||||
__TMPI1 := __TMPI1 * __CDINT00000002
|
||||
__TMPUIN1 := MBS_FLOWTOTALIZERC_DATA [ __TMPI1 ]
|
||||
__TMPI2 := __CDINT00000002 - __CDINT00000001
|
||||
__TMPI2 := __TMPI2 * __CDINT00000002
|
||||
__TMPUIN2 := MBS_FLOWTOTALIZERC_DATA [ __TMPI2 ]
|
||||
_PUSH_PAR __TMPUIN1
|
||||
_PUSH_PAR __TMPUIN2
|
||||
__TMPR1 := _CALL WORDSTOREAL
|
||||
VAL_FLOWTOTALIZERC := __TMPR1
|
||||
_GOTO __LAB8
|
||||
__LAB7 :
|
||||
__LAB8 :
|
||||
MBS_STATUS_TARGETCFG [ __DINT_NULL ] := CFG_STATUS_REGISTER
|
||||
MBS_STATUS_TARGETCFG [ __CDINT00000004 ] := CFG_FLOWMETER_MODBUSNODE
|
||||
MBS_STATUS_LOCALCFG [ __DINT_NULL ] := __CUINT00000002
|
||||
MBS_STATUS_LOCALCFG [ __CDINT00000003 ] := READ_CMD
|
||||
MBS_STATUS_LOCALCFG [ __CDINT00000002 ] := MBS_TRIGGERTYPE
|
||||
MBS_STATUS_LOCALCFG [ __CDINT00000004 ] := __CUINT00000003
|
||||
__TMPB1 := MODBUSTIMER [ __CDINT00000004 ]
|
||||
__TMPV1 := MBS_STATUS_LOCALCFG [ __DINT_NULL ]
|
||||
__TMPV2 := MBS_STATUS_TARGETCFG [ __DINT_NULL ]
|
||||
__TMPV3 := MBS_STATUS_DATA [ __DINT_NULL ]
|
||||
__TMPB__MSG_MODBUS__IN := __TMPB1
|
||||
__TMPV4 := MBS_STATUS_MSG [ __CDINT00000004 ]
|
||||
__TMPV4 := __TMPV1
|
||||
__TMPV5 := MBS_STATUS_MSG [ __CDINT00000006 ]
|
||||
__TMPV5 := __TMPV2
|
||||
__TMPV6 := MBS_STATUS_MSG [ __CDINT00000008 ]
|
||||
__TMPV6 := __TMPV3
|
||||
MBS_STATUS_MSG [ __CDINT0000000A ] := __ADI__FLOWMETERMB_0_4
|
||||
__FBL_RET := _PUSHCALLFB MSG_MODBUS MBS_STATUS_MSG
|
||||
__TMPB1 := MBS_STATUS_MSG [ __CDINT0000000C ]
|
||||
_IF _NOT __TMPB1 _GOTO __LAB9
|
||||
__TMPI1 := __CDINT00000001 - __CDINT00000001
|
||||
__TMPI1 := __TMPI1 * __CDINT00000002
|
||||
__TMPUIN1 := MBS_STATUS_DATA [ __TMPI1 ]
|
||||
_PUSH_PAR __TMPUIN1
|
||||
__TMPUIN2 := _CALL ANY_TO_UINT
|
||||
VAL_STATUS0 := __TMPUIN2
|
||||
__TMPI1 := __CDINT00000002 - __CDINT00000001
|
||||
__TMPI1 := __TMPI1 * __CDINT00000002
|
||||
__TMPUIN1 := MBS_STATUS_DATA [ __TMPI1 ]
|
||||
_PUSH_PAR __TMPUIN1
|
||||
__TMPUIN2 := _CALL ANY_TO_UINT
|
||||
VAL_STATUS1 := __TMPUIN2
|
||||
__TMPI1 := __CDINT00000003 - __CDINT00000001
|
||||
__TMPI1 := __TMPI1 * __CDINT00000002
|
||||
__TMPUIN1 := MBS_STATUS_DATA [ __TMPI1 ]
|
||||
_PUSH_PAR __TMPUIN1
|
||||
__TMPUIN2 := _CALL ANY_TO_UINT
|
||||
VAL_STATUS2 := __TMPUIN2
|
||||
_GOTO __LABa
|
||||
__LAB9 :
|
||||
__LABa :
|
||||
__TMPB1 := MBS_FLOWRATE_MSG [ __CDINT0000000D ]
|
||||
__TMPB2 := MBS_FLOWTOTALIZERA_MSG [ __CDINT0000000D ]
|
||||
__TMPB1 := __TMPB1 _OR __TMPB2
|
||||
__TMPB3 := MBS_FLOWTOTALIZERB_MSG [ __CDINT0000000D ]
|
||||
__TMPB1 := __TMPB1 _OR __TMPB3
|
||||
__TMPB4 := MBS_FLOWTOTALIZERC_MSG [ __CDINT0000000D ]
|
||||
__TMPB1 := __TMPB1 _OR __TMPB4
|
||||
__TMPB5 := MBS_STATUS_MSG [ __CDINT0000000D ]
|
||||
__TMPB1 := __TMPB1 _OR __TMPB5
|
||||
STS_MODBUSERROR := __TMPB1
|
||||
__TMPUIN1 := VAL_STATUS0 + VAL_STATUS1
|
||||
__TMPUIN1 := __TMPUIN1 + VAL_STATUS2
|
||||
__TMPB1 := __TMPUIN1 = __UINT_NULL
|
||||
_IF _NOT __TMPB1 _GOTO __LABb
|
||||
VAL_STATUSSTRING := __TMPM1
|
||||
_GOTO __LABc
|
||||
__LABb :
|
||||
VAL_STATUSSTRING := __STRING_NULL
|
||||
_PUSH_PAR VAL_STATUS0
|
||||
_PUSH_PAR __DINT_NULL
|
||||
__TMPB1 := _CALL __ANARBIT
|
||||
_IF _NOT __TMPB1 _GOTO __LABd
|
||||
__TMPM3 := VAL_STATUSSTRING + __TMPM2
|
||||
VAL_STATUSSTRING := __TMPM3
|
||||
_GOTO __LABe
|
||||
__LABd :
|
||||
__LABe :
|
||||
_PUSH_PAR VAL_STATUS0
|
||||
_PUSH_PAR __CDINT00000001
|
||||
__TMPB1 := _CALL __ANARBIT
|
||||
_IF _NOT __TMPB1 _GOTO __LABf
|
||||
__TMPM3 := VAL_STATUSSTRING + __TMPM4
|
||||
VAL_STATUSSTRING := __TMPM3
|
||||
_GOTO __LAB10
|
||||
__LABf :
|
||||
__LAB10 :
|
||||
_PUSH_PAR VAL_STATUS0
|
||||
_PUSH_PAR __CDINT00000002
|
||||
__TMPB1 := _CALL __ANARBIT
|
||||
_IF _NOT __TMPB1 _GOTO __LAB11
|
||||
__TMPM3 := VAL_STATUSSTRING + __TMPM5
|
||||
VAL_STATUSSTRING := __TMPM3
|
||||
_GOTO __LAB12
|
||||
__LAB11 :
|
||||
__LAB12 :
|
||||
_PUSH_PAR VAL_STATUS0
|
||||
_PUSH_PAR __CDINT00000003
|
||||
__TMPB1 := _CALL __ANARBIT
|
||||
_IF _NOT __TMPB1 _GOTO __LAB13
|
||||
__TMPM3 := VAL_STATUSSTRING + __TMPM6
|
||||
VAL_STATUSSTRING := __TMPM3
|
||||
_GOTO __LAB14
|
||||
__LAB13 :
|
||||
__LAB14 :
|
||||
_PUSH_PAR VAL_STATUS0
|
||||
_PUSH_PAR __CDINT00000004
|
||||
__TMPB1 := _CALL __ANARBIT
|
||||
_IF _NOT __TMPB1 _GOTO __LAB15
|
||||
__TMPM3 := VAL_STATUSSTRING + __TMPM7
|
||||
VAL_STATUSSTRING := __TMPM3
|
||||
_GOTO __LAB16
|
||||
__LAB15 :
|
||||
__LAB16 :
|
||||
_PUSH_PAR VAL_STATUS0
|
||||
_PUSH_PAR __CDINT00000005
|
||||
__TMPB1 := _CALL __ANARBIT
|
||||
_IF _NOT __TMPB1 _GOTO __LAB17
|
||||
__TMPM3 := VAL_STATUSSTRING + __TMPM8
|
||||
VAL_STATUSSTRING := __TMPM3
|
||||
_GOTO __LAB18
|
||||
__LAB17 :
|
||||
__LAB18 :
|
||||
_PUSH_PAR VAL_STATUS0
|
||||
_PUSH_PAR __CDINT00000006
|
||||
__TMPB1 := _CALL __ANARBIT
|
||||
_IF _NOT __TMPB1 _GOTO __LAB19
|
||||
__TMPM3 := VAL_STATUSSTRING + __TMPM9
|
||||
VAL_STATUSSTRING := __TMPM3
|
||||
_GOTO __LAB1a
|
||||
__LAB19 :
|
||||
__LAB1a :
|
||||
_PUSH_PAR VAL_STATUS0
|
||||
_PUSH_PAR __CDINT00000007
|
||||
__TMPB1 := _CALL __ANARBIT
|
||||
_IF _NOT __TMPB1 _GOTO __LAB1b
|
||||
__TMPM3 := VAL_STATUSSTRING + __TMPM10
|
||||
VAL_STATUSSTRING := __TMPM3
|
||||
_GOTO __LAB1c
|
||||
__LAB1b :
|
||||
__LAB1c :
|
||||
_PUSH_PAR VAL_STATUS0
|
||||
_PUSH_PAR __CDINT00000008
|
||||
__TMPB1 := _CALL __ANARBIT
|
||||
_IF _NOT __TMPB1 _GOTO __LAB1d
|
||||
__TMPM3 := VAL_STATUSSTRING + __TMPM11
|
||||
VAL_STATUSSTRING := __TMPM3
|
||||
_GOTO __LAB1e
|
||||
__LAB1d :
|
||||
__LAB1e :
|
||||
_PUSH_PAR VAL_STATUS0
|
||||
_PUSH_PAR __CDINT00000009
|
||||
__TMPB1 := _CALL __ANARBIT
|
||||
_IF _NOT __TMPB1 _GOTO __LAB1f
|
||||
__TMPM3 := VAL_STATUSSTRING + __TMPM12
|
||||
VAL_STATUSSTRING := __TMPM3
|
||||
_GOTO __LAB20
|
||||
__LAB1f :
|
||||
__LAB20 :
|
||||
_PUSH_PAR VAL_STATUS0
|
||||
_PUSH_PAR __CDINT0000000A
|
||||
__TMPB1 := _CALL __ANARBIT
|
||||
_IF _NOT __TMPB1 _GOTO __LAB21
|
||||
__TMPM3 := VAL_STATUSSTRING + __TMPM13
|
||||
VAL_STATUSSTRING := __TMPM3
|
||||
_GOTO __LAB22
|
||||
__LAB21 :
|
||||
__LAB22 :
|
||||
_PUSH_PAR VAL_STATUS0
|
||||
_PUSH_PAR __CDINT0000000B
|
||||
__TMPB1 := _CALL __ANARBIT
|
||||
_IF _NOT __TMPB1 _GOTO __LAB23
|
||||
__TMPM3 := VAL_STATUSSTRING + __TMPM14
|
||||
VAL_STATUSSTRING := __TMPM3
|
||||
_GOTO __LAB24
|
||||
__LAB23 :
|
||||
__LAB24 :
|
||||
_PUSH_PAR VAL_STATUS0
|
||||
_PUSH_PAR __CDINT0000000C
|
||||
__TMPB1 := _CALL __ANARBIT
|
||||
_IF _NOT __TMPB1 _GOTO __LAB25
|
||||
__TMPM3 := VAL_STATUSSTRING + __TMPM15
|
||||
VAL_STATUSSTRING := __TMPM3
|
||||
_GOTO __LAB26
|
||||
__LAB25 :
|
||||
__LAB26 :
|
||||
_PUSH_PAR VAL_STATUS0
|
||||
_PUSH_PAR __CDINT0000000D
|
||||
__TMPB1 := _CALL __ANARBIT
|
||||
_IF _NOT __TMPB1 _GOTO __LAB27
|
||||
__TMPM3 := VAL_STATUSSTRING + __TMPM16
|
||||
VAL_STATUSSTRING := __TMPM3
|
||||
_GOTO __LAB28
|
||||
__LAB27 :
|
||||
__LAB28 :
|
||||
_PUSH_PAR VAL_STATUS0
|
||||
_PUSH_PAR __CDINT0000000E
|
||||
__TMPB1 := _CALL __ANARBIT
|
||||
_IF _NOT __TMPB1 _GOTO __LAB29
|
||||
__TMPM3 := VAL_STATUSSTRING + __TMPM17
|
||||
VAL_STATUSSTRING := __TMPM3
|
||||
_GOTO __LAB2a
|
||||
__LAB29 :
|
||||
__LAB2a :
|
||||
_PUSH_PAR VAL_STATUS0
|
||||
_PUSH_PAR __CDINT0000000F
|
||||
__TMPB1 := _CALL __ANARBIT
|
||||
_IF _NOT __TMPB1 _GOTO __LAB2b
|
||||
__TMPM3 := VAL_STATUSSTRING + __TMPM18
|
||||
VAL_STATUSSTRING := __TMPM3
|
||||
_GOTO __LAB2c
|
||||
__LAB2b :
|
||||
__LAB2c :
|
||||
_PUSH_PAR VAL_STATUS1
|
||||
_PUSH_PAR __DINT_NULL
|
||||
__TMPB1 := _CALL __ANARBIT
|
||||
_IF _NOT __TMPB1 _GOTO __LAB2d
|
||||
__TMPM3 := VAL_STATUSSTRING + __TMPM19
|
||||
VAL_STATUSSTRING := __TMPM3
|
||||
_GOTO __LAB2e
|
||||
__LAB2d :
|
||||
__LAB2e :
|
||||
_PUSH_PAR VAL_STATUS1
|
||||
_PUSH_PAR __CDINT00000001
|
||||
__TMPB1 := _CALL __ANARBIT
|
||||
_IF _NOT __TMPB1 _GOTO __LAB2f
|
||||
__TMPM3 := VAL_STATUSSTRING + __TMPM20
|
||||
VAL_STATUSSTRING := __TMPM3
|
||||
_GOTO __LAB30
|
||||
__LAB2f :
|
||||
__LAB30 :
|
||||
_PUSH_PAR VAL_STATUS1
|
||||
_PUSH_PAR __CDINT00000002
|
||||
__TMPB1 := _CALL __ANARBIT
|
||||
_IF _NOT __TMPB1 _GOTO __LAB31
|
||||
__TMPM3 := VAL_STATUSSTRING + __TMPM21
|
||||
VAL_STATUSSTRING := __TMPM3
|
||||
_GOTO __LAB32
|
||||
__LAB31 :
|
||||
__LAB32 :
|
||||
_PUSH_PAR VAL_STATUS1
|
||||
_PUSH_PAR __CDINT00000003
|
||||
__TMPB1 := _CALL __ANARBIT
|
||||
_IF _NOT __TMPB1 _GOTO __LAB33
|
||||
__TMPM3 := VAL_STATUSSTRING + __TMPM22
|
||||
VAL_STATUSSTRING := __TMPM3
|
||||
_GOTO __LAB34
|
||||
__LAB33 :
|
||||
__LAB34 :
|
||||
_PUSH_PAR VAL_STATUS1
|
||||
_PUSH_PAR __CDINT00000004
|
||||
__TMPB1 := _CALL __ANARBIT
|
||||
_IF _NOT __TMPB1 _GOTO __LAB35
|
||||
__TMPM3 := VAL_STATUSSTRING + __TMPM23
|
||||
VAL_STATUSSTRING := __TMPM3
|
||||
_GOTO __LAB36
|
||||
__LAB35 :
|
||||
__LAB36 :
|
||||
_PUSH_PAR VAL_STATUS1
|
||||
_PUSH_PAR __CDINT00000005
|
||||
__TMPB1 := _CALL __ANARBIT
|
||||
_IF _NOT __TMPB1 _GOTO __LAB37
|
||||
__TMPM3 := VAL_STATUSSTRING + __TMPM24
|
||||
VAL_STATUSSTRING := __TMPM3
|
||||
_GOTO __LAB38
|
||||
__LAB37 :
|
||||
__LAB38 :
|
||||
_PUSH_PAR VAL_STATUS1
|
||||
_PUSH_PAR __CDINT00000006
|
||||
__TMPB1 := _CALL __ANARBIT
|
||||
_IF _NOT __TMPB1 _GOTO __LAB39
|
||||
__TMPM3 := VAL_STATUSSTRING + __TMPM25
|
||||
VAL_STATUSSTRING := __TMPM3
|
||||
_GOTO __LAB3a
|
||||
__LAB39 :
|
||||
__LAB3a :
|
||||
_PUSH_PAR VAL_STATUS1
|
||||
_PUSH_PAR __CDINT00000007
|
||||
__TMPB1 := _CALL __ANARBIT
|
||||
_IF _NOT __TMPB1 _GOTO __LAB3b
|
||||
__TMPM3 := VAL_STATUSSTRING + __TMPM26
|
||||
VAL_STATUSSTRING := __TMPM3
|
||||
_GOTO __LAB3c
|
||||
__LAB3b :
|
||||
__LAB3c :
|
||||
_PUSH_PAR VAL_STATUS1
|
||||
_PUSH_PAR __CDINT00000008
|
||||
__TMPB1 := _CALL __ANARBIT
|
||||
_IF _NOT __TMPB1 _GOTO __LAB3d
|
||||
__TMPM3 := VAL_STATUSSTRING + __TMPM27
|
||||
VAL_STATUSSTRING := __TMPM3
|
||||
_GOTO __LAB3e
|
||||
__LAB3d :
|
||||
__LAB3e :
|
||||
_PUSH_PAR VAL_STATUS1
|
||||
_PUSH_PAR __CDINT00000009
|
||||
__TMPB1 := _CALL __ANARBIT
|
||||
_IF _NOT __TMPB1 _GOTO __LAB3f
|
||||
__TMPM3 := VAL_STATUSSTRING + __TMPM28
|
||||
VAL_STATUSSTRING := __TMPM3
|
||||
_GOTO __LAB40
|
||||
__LAB3f :
|
||||
__LAB40 :
|
||||
_PUSH_PAR VAL_STATUS1
|
||||
_PUSH_PAR __CDINT0000000A
|
||||
__TMPB1 := _CALL __ANARBIT
|
||||
_IF _NOT __TMPB1 _GOTO __LAB41
|
||||
__TMPM3 := VAL_STATUSSTRING + __TMPM29
|
||||
VAL_STATUSSTRING := __TMPM3
|
||||
_GOTO __LAB42
|
||||
__LAB41 :
|
||||
__LAB42 :
|
||||
_PUSH_PAR VAL_STATUS1
|
||||
_PUSH_PAR __CDINT0000000B
|
||||
__TMPB1 := _CALL __ANARBIT
|
||||
_IF _NOT __TMPB1 _GOTO __LAB43
|
||||
__TMPM3 := VAL_STATUSSTRING + __TMPM30
|
||||
VAL_STATUSSTRING := __TMPM3
|
||||
_GOTO __LAB44
|
||||
__LAB43 :
|
||||
__LAB44 :
|
||||
_PUSH_PAR VAL_STATUS1
|
||||
_PUSH_PAR __CDINT0000000C
|
||||
__TMPB1 := _CALL __ANARBIT
|
||||
_IF _NOT __TMPB1 _GOTO __LAB45
|
||||
__TMPM3 := VAL_STATUSSTRING + __TMPM31
|
||||
VAL_STATUSSTRING := __TMPM3
|
||||
_GOTO __LAB46
|
||||
__LAB45 :
|
||||
__LAB46 :
|
||||
_PUSH_PAR VAL_STATUS1
|
||||
_PUSH_PAR __CDINT0000000D
|
||||
__TMPB1 := _CALL __ANARBIT
|
||||
_IF _NOT __TMPB1 _GOTO __LAB47
|
||||
__TMPM3 := VAL_STATUSSTRING + __TMPM32
|
||||
VAL_STATUSSTRING := __TMPM3
|
||||
_GOTO __LAB48
|
||||
__LAB47 :
|
||||
__LAB48 :
|
||||
_PUSH_PAR VAL_STATUS1
|
||||
_PUSH_PAR __CDINT0000000E
|
||||
__TMPB1 := _CALL __ANARBIT
|
||||
_IF _NOT __TMPB1 _GOTO __LAB49
|
||||
__TMPM3 := VAL_STATUSSTRING + __TMPM33
|
||||
VAL_STATUSSTRING := __TMPM3
|
||||
_GOTO __LAB4a
|
||||
__LAB49 :
|
||||
__LAB4a :
|
||||
_PUSH_PAR VAL_STATUS1
|
||||
_PUSH_PAR __CDINT0000000F
|
||||
__TMPB1 := _CALL __ANARBIT
|
||||
_IF _NOT __TMPB1 _GOTO __LAB4b
|
||||
__TMPM3 := VAL_STATUSSTRING + __TMPM34
|
||||
VAL_STATUSSTRING := __TMPM3
|
||||
_GOTO __LAB4c
|
||||
__LAB4b :
|
||||
__LAB4c :
|
||||
_PUSH_PAR VAL_STATUS2
|
||||
_PUSH_PAR __DINT_NULL
|
||||
__TMPB1 := _CALL __ANARBIT
|
||||
_IF _NOT __TMPB1 _GOTO __LAB4d
|
||||
__TMPM3 := VAL_STATUSSTRING + __TMPM35
|
||||
VAL_STATUSSTRING := __TMPM3
|
||||
_GOTO __LAB4e
|
||||
__LAB4d :
|
||||
__LAB4e :
|
||||
_PUSH_PAR VAL_STATUS2
|
||||
_PUSH_PAR __CDINT00000001
|
||||
__TMPB1 := _CALL __ANARBIT
|
||||
_IF _NOT __TMPB1 _GOTO __LAB4f
|
||||
__TMPM3 := VAL_STATUSSTRING + __TMPM36
|
||||
VAL_STATUSSTRING := __TMPM3
|
||||
_GOTO __LAB50
|
||||
__LAB4f :
|
||||
__LAB50 :
|
||||
_PUSH_PAR VAL_STATUS2
|
||||
_PUSH_PAR __CDINT00000002
|
||||
__TMPB1 := _CALL __ANARBIT
|
||||
_IF _NOT __TMPB1 _GOTO __LAB51
|
||||
__TMPM3 := VAL_STATUSSTRING + __TMPM37
|
||||
VAL_STATUSSTRING := __TMPM3
|
||||
_GOTO __LAB52
|
||||
__LAB51 :
|
||||
__LAB52 :
|
||||
_PUSH_PAR VAL_STATUS2
|
||||
_PUSH_PAR __CDINT00000003
|
||||
__TMPB1 := _CALL __ANARBIT
|
||||
_IF _NOT __TMPB1 _GOTO __LAB53
|
||||
__TMPM3 := VAL_STATUSSTRING + __TMPM38
|
||||
VAL_STATUSSTRING := __TMPM3
|
||||
_GOTO __LAB54
|
||||
__LAB53 :
|
||||
__LAB54 :
|
||||
_PUSH_PAR VAL_STATUS2
|
||||
_PUSH_PAR __CDINT00000004
|
||||
__TMPB1 := _CALL __ANARBIT
|
||||
_IF _NOT __TMPB1 _GOTO __LAB55
|
||||
__TMPM3 := VAL_STATUSSTRING + __TMPM39
|
||||
VAL_STATUSSTRING := __TMPM3
|
||||
_GOTO __LAB56
|
||||
__LAB55 :
|
||||
__LAB56 :
|
||||
_PUSH_PAR VAL_STATUS2
|
||||
_PUSH_PAR __CDINT00000005
|
||||
__TMPB1 := _CALL __ANARBIT
|
||||
_IF _NOT __TMPB1 _GOTO __LAB57
|
||||
__TMPM3 := VAL_STATUSSTRING + __TMPM40
|
||||
VAL_STATUSSTRING := __TMPM3
|
||||
_GOTO __LAB58
|
||||
__LAB57 :
|
||||
__LAB58 :
|
||||
_PUSH_PAR VAL_STATUS2
|
||||
_PUSH_PAR __CDINT00000006
|
||||
__TMPB1 := _CALL __ANARBIT
|
||||
_IF _NOT __TMPB1 _GOTO __LAB59
|
||||
__TMPM3 := VAL_STATUSSTRING + __TMPM41
|
||||
VAL_STATUSSTRING := __TMPM3
|
||||
_GOTO __LAB5a
|
||||
__LAB59 :
|
||||
__LAB5a :
|
||||
_PUSH_PAR VAL_STATUS2
|
||||
_PUSH_PAR __CDINT00000007
|
||||
__TMPB1 := _CALL __ANARBIT
|
||||
_IF _NOT __TMPB1 _GOTO __LAB5b
|
||||
__TMPM3 := VAL_STATUSSTRING + __TMPM42
|
||||
VAL_STATUSSTRING := __TMPM3
|
||||
_GOTO __LAB5c
|
||||
__LAB5b :
|
||||
__LAB5c :
|
||||
_PUSH_PAR VAL_STATUS2
|
||||
_PUSH_PAR __CDINT00000008
|
||||
__TMPB1 := _CALL __ANARBIT
|
||||
_IF _NOT __TMPB1 _GOTO __LAB5d
|
||||
__TMPM3 := VAL_STATUSSTRING + __TMPM43
|
||||
VAL_STATUSSTRING := __TMPM3
|
||||
_GOTO __LAB5e
|
||||
__LAB5d :
|
||||
__LAB5e :
|
||||
_PUSH_PAR VAL_STATUS2
|
||||
_PUSH_PAR __CDINT00000009
|
||||
__TMPB1 := _CALL __ANARBIT
|
||||
_IF _NOT __TMPB1 _GOTO __LAB5f
|
||||
__TMPM3 := VAL_STATUSSTRING + __TMPM44
|
||||
VAL_STATUSSTRING := __TMPM3
|
||||
_GOTO __LAB60
|
||||
__LAB5f :
|
||||
__LAB60 :
|
||||
_PUSH_PAR VAL_STATUS2
|
||||
_PUSH_PAR __CDINT0000000A
|
||||
__TMPB1 := _CALL __ANARBIT
|
||||
_IF _NOT __TMPB1 _GOTO __LAB61
|
||||
__TMPM3 := VAL_STATUSSTRING + __TMPM45
|
||||
VAL_STATUSSTRING := __TMPM3
|
||||
_GOTO __LAB62
|
||||
__LAB61 :
|
||||
__LAB62 :
|
||||
_PUSH_PAR VAL_STATUS2
|
||||
_PUSH_PAR __CDINT0000000B
|
||||
__TMPB1 := _CALL __ANARBIT
|
||||
_IF _NOT __TMPB1 _GOTO __LAB63
|
||||
__TMPM3 := VAL_STATUSSTRING + __TMPM46
|
||||
VAL_STATUSSTRING := __TMPM3
|
||||
_GOTO __LAB64
|
||||
__LAB63 :
|
||||
__LAB64 :
|
||||
_PUSH_PAR VAL_STATUS2
|
||||
_PUSH_PAR __CDINT0000000C
|
||||
__TMPB1 := _CALL __ANARBIT
|
||||
_IF _NOT __TMPB1 _GOTO __LAB65
|
||||
__TMPM3 := VAL_STATUSSTRING + __TMPM47
|
||||
VAL_STATUSSTRING := __TMPM3
|
||||
_GOTO __LAB66
|
||||
__LAB65 :
|
||||
__LAB66 :
|
||||
_PUSH_PAR VAL_STATUS2
|
||||
_PUSH_PAR __CDINT0000000D
|
||||
__TMPB1 := _CALL __ANARBIT
|
||||
_IF _NOT __TMPB1 _GOTO __LAB67
|
||||
__TMPM3 := VAL_STATUSSTRING + __TMPM48
|
||||
VAL_STATUSSTRING := __TMPM3
|
||||
_GOTO __LAB68
|
||||
__LAB67 :
|
||||
__LAB68 :
|
||||
_PUSH_PAR VAL_STATUS2
|
||||
_PUSH_PAR __CDINT0000000E
|
||||
__TMPB1 := _CALL __ANARBIT
|
||||
_IF _NOT __TMPB1 _GOTO __LAB69
|
||||
__TMPM3 := VAL_STATUSSTRING + __TMPM49
|
||||
VAL_STATUSSTRING := __TMPM3
|
||||
_GOTO __LAB6a
|
||||
__LAB69 :
|
||||
__LAB6a :
|
||||
_PUSH_PAR VAL_STATUS2
|
||||
_PUSH_PAR __CDINT0000000F
|
||||
__TMPB1 := _CALL __ANARBIT
|
||||
_IF _NOT __TMPB1 _GOTO __LAB6b
|
||||
__TMPM3 := VAL_STATUSSTRING + __TMPM50
|
||||
VAL_STATUSSTRING := __TMPM3
|
||||
_GOTO __LAB6c
|
||||
__LAB6b :
|
||||
__LAB6c :
|
||||
_PUSH_PAR VAL_STATUSSTRING
|
||||
__TMPI1 := _CALL MLEN
|
||||
__TMPI1 := __TMPI1 - __CDINT00000002
|
||||
_PUSH_PAR VAL_STATUSSTRING
|
||||
_PUSH_PAR __TMPI1
|
||||
__TMPM3 := _CALL RIGHT
|
||||
VAL_STATUSSTRING := __TMPM3
|
||||
__LABc :
|
||||
__TMPB1 := CMD_RESETTOTALIZERA _OR CMD_RESETTOTALIZERB
|
||||
__TMPB1 := __TMPB1 _OR CMD_RESETTOTALIZERC
|
||||
CMD_RESETTOTALIZER := __TMPB1
|
||||
_IF _NOT CMD_RESETTOTALIZERA _GOTO __LAB6d
|
||||
MBS_RESETTOTALIZER_TARGETCFG [ __DINT_NULL ] := CFG_RESETTOTALIZERA_COIL
|
||||
_GOTO __LAB6e
|
||||
__LAB6d :
|
||||
_IF _NOT CMD_RESETTOTALIZERB _GOTO __LAB6f
|
||||
MBS_RESETTOTALIZER_TARGETCFG [ __DINT_NULL ] := CFG_RESETTOTALIZERA_COIL
|
||||
_GOTO __LAB6e
|
||||
__LAB6f :
|
||||
_IF _NOT CMD_RESETTOTALIZERC _GOTO __LAB70
|
||||
MBS_RESETTOTALIZER_TARGETCFG [ __DINT_NULL ] := CFG_RESETTOTALIZERC_COIL
|
||||
_GOTO __LAB6e
|
||||
__LAB70 :
|
||||
__LAB6e :
|
||||
MBS_RESETTOTALIZER_TARGETCFG [ __CDINT00000004 ] := CFG_FLOWMETER_MODBUSNODE
|
||||
MBS_RESETTOTALIZER_LOCALCFG [ __DINT_NULL ] := __CUINT00000002
|
||||
MBS_RESETTOTALIZER_LOCALCFG [ __CDINT00000003 ] := WRITECOIL_CMD
|
||||
MBS_RESETTOTALIZER_LOCALCFG [ __CDINT00000002 ] := __USINT_NULL
|
||||
MBS_RESETTOTALIZER_LOCALCFG [ __CDINT00000004 ] := __CUINT00000001
|
||||
__TMPI1 := __CDINT00000001 - __CDINT00000001
|
||||
__TMPI1 := __TMPI1 * __CDINT00000002
|
||||
MBS_RESETTOTALIZER_DATA [ __TMPI1 ] := __CUINT00000001
|
||||
__TMPV1 := MBS_RESETTOTALIZER_LOCALCFG [ __DINT_NULL ]
|
||||
__TMPV2 := MBS_RESETTOTALIZER_TARGETCFG [ __DINT_NULL ]
|
||||
__TMPV3 := MBS_RESETTOTALIZER_DATA [ __DINT_NULL ]
|
||||
__TMPV4 := MBS_RESETTOTALIZER_MSG [ __CDINT00000004 ]
|
||||
__TMPV4 := __TMPV1
|
||||
__TMPV5 := MBS_RESETTOTALIZER_MSG [ __CDINT00000006 ]
|
||||
__TMPV5 := __TMPV2
|
||||
__TMPV6 := MBS_RESETTOTALIZER_MSG [ __CDINT00000008 ]
|
||||
__TMPV6 := __TMPV3
|
||||
MBS_RESETTOTALIZER_MSG [ __CDINT0000000A ] := __ADI__FLOWMETERMB_0_5
|
||||
__FBL_RET := _PUSHCALLFB MSG_MODBUS MBS_RESETTOTALIZER_MSG
|
||||
__TMPB1 := MBS_RESETTOTALIZER_MSG [ __CDINT0000000C ]
|
||||
__TMPB2 := MBS_RESETTOTALIZER_MSG [ __CDINT0000000D ]
|
||||
__TMPB1 := __TMPB1 _OR __TMPB2
|
||||
_IF _NOT __TMPB1 _GOTO __LAB71
|
||||
CMD_CLEARRESETTOTALIZER := TRUE
|
||||
CMD_RESETTOTALIZERA := FALSE
|
||||
CMD_RESETTOTALIZERB := FALSE
|
||||
CMD_RESETTOTALIZERC := FALSE
|
||||
_GOTO __LAB72
|
||||
__LAB71 :
|
||||
__LAB72 :
|
||||
__FBL_RET := _PUSHCALLFB TON WAIT_TO_RESET_TON
|
||||
__TMPUDI1 := MBS_RESETTOTALIZER_TARGETCFG [ __DINT_NULL ]
|
||||
MBS_CLEARRESETTOTALIZER_TARGETCFG [ __DINT_NULL ] := __TMPUDI1
|
||||
__TMPUSI1 := MBS_RESETTOTALIZER_TARGETCFG [ __CDINT00000004 ]
|
||||
MBS_CLEARRESETTOTALIZER_TARGETCFG [ __CDINT00000004 ] := __TMPUSI1
|
||||
__TMPUIN1 := MBS_RESETTOTALIZER_LOCALCFG [ __DINT_NULL ]
|
||||
MBS_CLEARRESETTOTALIZER_LOCALCFG [ __DINT_NULL ] := __TMPUIN1
|
||||
__TMPUSI1 := MBS_RESETTOTALIZER_LOCALCFG [ __CDINT00000003 ]
|
||||
MBS_CLEARRESETTOTALIZER_LOCALCFG [ __CDINT00000003 ] := __TMPUSI1
|
||||
__TMPUSI1 := MBS_RESETTOTALIZER_LOCALCFG [ __CDINT00000002 ]
|
||||
MBS_CLEARRESETTOTALIZER_LOCALCFG [ __CDINT00000002 ] := __TMPUSI1
|
||||
__TMPUIN1 := MBS_RESETTOTALIZER_LOCALCFG [ __CDINT00000004 ]
|
||||
MBS_CLEARRESETTOTALIZER_LOCALCFG [ __CDINT00000004 ] := __TMPUIN1
|
||||
__TMPI1 := __CDINT00000001 - __CDINT00000001
|
||||
__TMPI1 := __TMPI1 * __CDINT00000002
|
||||
MBS_CLEARRESETTOTALIZER_DATA [ __TMPI1 ] := __UINT_NULL
|
||||
__TMPB1 := WAIT_TO_RESET_TON [ __CDINT00000004 ]
|
||||
__TMPV1 := MBS_CLEARRESETTOTALIZER_LOCALCFG [ __DINT_NULL ]
|
||||
__TMPV2 := MBS_CLEARRESETTOTALIZER_TARGETCFG [ __DINT_NULL ]
|
||||
__TMPV3 := MBS_CLEARRESETTOTALIZER_DATA [ __DINT_NULL ]
|
||||
__TMPB__MSG_MODBUS__IN := __TMPB1
|
||||
__TMPV4 := MBS_CLEARRESETTOTALIZER_MSG [ __CDINT00000004 ]
|
||||
__TMPV4 := __TMPV1
|
||||
__TMPV5 := MBS_CLEARRESETTOTALIZER_MSG [ __CDINT00000006 ]
|
||||
__TMPV5 := __TMPV2
|
||||
__TMPV6 := MBS_CLEARRESETTOTALIZER_MSG [ __CDINT00000008 ]
|
||||
__TMPV6 := __TMPV3
|
||||
MBS_CLEARRESETTOTALIZER_MSG [ __CDINT0000000A ] := __ADI__FLOWMETERMB_0_6
|
||||
__FBL_RET := _PUSHCALLFB MSG_MODBUS MBS_CLEARRESETTOTALIZER_MSG
|
||||
__TMPB1 := MBS_CLEARRESETTOTALIZER_MSG [ __CDINT0000000C ]
|
||||
__TMPB2 := MBS_CLEARRESETTOTALIZER_MSG [ __CDINT0000000D ]
|
||||
__TMPB1 := __TMPB1 _OR __TMPB2
|
||||
_IF _NOT __TMPB1 _GOTO __LAB73
|
||||
CMD_CLEARRESETTOTALIZER := FALSE
|
||||
_GOTO __LAB74
|
||||
__LAB73 :
|
||||
__LAB74 :
|
||||
MBS_UNITS_TARGETCFG [ __DINT_NULL ] := CFG_UNITS_REGISTER
|
||||
MBS_UNITS_TARGETCFG [ __CDINT00000004 ] := CFG_FLOWMETER_MODBUSNODE
|
||||
MBS_UNITS_LOCALCFG [ __DINT_NULL ] := __CUINT00000002
|
||||
MBS_UNITS_LOCALCFG [ __CDINT00000003 ] := READ_CMD
|
||||
MBS_UNITS_LOCALCFG [ __CDINT00000002 ] := MBS_TRIGGERTYPE
|
||||
MBS_UNITS_LOCALCFG [ __CDINT00000004 ] := __CUINT00000004
|
||||
__TMPB1 := MODBUSTIMER [ __CDINT00000004 ]
|
||||
__TMPV1 := MBS_UNITS_LOCALCFG [ __DINT_NULL ]
|
||||
__TMPV2 := MBS_UNITS_TARGETCFG [ __DINT_NULL ]
|
||||
__TMPV3 := MBS_UNITS_DATA [ __DINT_NULL ]
|
||||
__TMPB__MSG_MODBUS__IN := __TMPB1
|
||||
__TMPV4 := MBS_UNITS_MSG [ __CDINT00000004 ]
|
||||
__TMPV4 := __TMPV1
|
||||
__TMPV5 := MBS_UNITS_MSG [ __CDINT00000006 ]
|
||||
__TMPV5 := __TMPV2
|
||||
__TMPV6 := MBS_UNITS_MSG [ __CDINT00000008 ]
|
||||
__TMPV6 := __TMPV3
|
||||
MBS_UNITS_MSG [ __CDINT0000000A ] := __ADI__FLOWMETERMB_0_7
|
||||
__FBL_RET := _PUSHCALLFB MSG_MODBUS MBS_UNITS_MSG
|
||||
__TMPB1 := MBS_UNITS_MSG [ __CDINT0000000C ]
|
||||
_IF _NOT __TMPB1 _GOTO __LAB75
|
||||
__TMPI1 := __CDINT00000001 - __CDINT00000001
|
||||
__TMPI1 := __TMPI1 * __CDINT00000002
|
||||
__TMPUIN1 := MBS_UNITS_DATA [ __TMPI1 ]
|
||||
_PUSH_PAR __TMPUIN1
|
||||
__TMPM3 := _CALL FLOWRATEUNITS
|
||||
VAL_FLOWUNITS := __TMPM3
|
||||
__TMPI1 := __CDINT00000002 - __CDINT00000001
|
||||
__TMPI1 := __TMPI1 * __CDINT00000002
|
||||
__TMPUIN1 := MBS_UNITS_DATA [ __TMPI1 ]
|
||||
_PUSH_PAR __TMPUIN1
|
||||
__TMPM3 := _CALL FLOWTOTALUNITS
|
||||
VAL_FLOWTOTALIZERAUNITS := __TMPM3
|
||||
__TMPI1 := __CDINT00000003 - __CDINT00000001
|
||||
__TMPI1 := __TMPI1 * __CDINT00000002
|
||||
__TMPUIN1 := MBS_UNITS_DATA [ __TMPI1 ]
|
||||
_PUSH_PAR __TMPUIN1
|
||||
__TMPM3 := _CALL FLOWTOTALUNITS
|
||||
VAL_FLOWTOTALIZERBUNITS := __TMPM3
|
||||
__TMPI1 := __CDINT00000004 - __CDINT00000001
|
||||
__TMPI1 := __TMPI1 * __CDINT00000002
|
||||
__TMPUIN1 := MBS_UNITS_DATA [ __TMPI1 ]
|
||||
_PUSH_PAR __TMPUIN1
|
||||
__TMPM3 := _CALL FLOWTOTALUNITS
|
||||
VAL_FLOWTOTALIZERCUNITS := __TMPM3
|
||||
_GOTO __LAB76
|
||||
__LAB75 :
|
||||
__LAB76 :
|
||||
|
||||
Binary file not shown.
@@ -0,0 +1,147 @@
|
||||
__TMPB1 := INTEGERVALUE = __CUINT000000F1
|
||||
_IF _NOT __TMPB1 _GOTO __LAB1
|
||||
FLOWRATEUNITS := __TMPM1
|
||||
_GOTO __LAB2
|
||||
__LAB1 :
|
||||
__TMPB1 := INTEGERVALUE = __CUINT000000F2
|
||||
_IF _NOT __TMPB1 _GOTO __LAB3
|
||||
FLOWRATEUNITS := __TMPM2
|
||||
_GOTO __LAB2
|
||||
__LAB3 :
|
||||
__TMPB1 := INTEGERVALUE = __CUINT000000F3
|
||||
_IF _NOT __TMPB1 _GOTO __LAB4
|
||||
FLOWRATEUNITS := __TMPM3
|
||||
_GOTO __LAB2
|
||||
__LAB4 :
|
||||
__TMPB1 := INTEGERVALUE = __CUINT000000F4
|
||||
_IF _NOT __TMPB1 _GOTO __LAB5
|
||||
FLOWRATEUNITS := __TMPM4
|
||||
_GOTO __LAB2
|
||||
__LAB5 :
|
||||
__TMPB1 := INTEGERVALUE = __CUINT00000084
|
||||
_IF _NOT __TMPB1 _GOTO __LAB6
|
||||
FLOWRATEUNITS := __TMPM5
|
||||
_GOTO __LAB2
|
||||
__LAB6 :
|
||||
__TMPB1 := INTEGERVALUE = __CUINT00000085
|
||||
_IF _NOT __TMPB1 _GOTO __LAB7
|
||||
FLOWRATEUNITS := __TMPM6
|
||||
_GOTO __LAB2
|
||||
__LAB7 :
|
||||
__TMPB1 := INTEGERVALUE = __CUINT00000086
|
||||
_IF _NOT __TMPB1 _GOTO __LAB8
|
||||
FLOWRATEUNITS := __TMPM7
|
||||
_GOTO __LAB2
|
||||
__LAB8 :
|
||||
__TMPB1 := INTEGERVALUE = __CUINT00000087
|
||||
_IF _NOT __TMPB1 _GOTO __LAB9
|
||||
FLOWRATEUNITS := __TMPM8
|
||||
_GOTO __LAB2
|
||||
__LAB9 :
|
||||
__TMPB1 := INTEGERVALUE = __CUINT000000F8
|
||||
_IF _NOT __TMPB1 _GOTO __LABa
|
||||
FLOWRATEUNITS := __TMPM9
|
||||
_GOTO __LAB2
|
||||
__LABa :
|
||||
__TMPB1 := INTEGERVALUE = __CUINT0000001A
|
||||
_IF _NOT __TMPB1 _GOTO __LABb
|
||||
FLOWRATEUNITS := __TMPM10
|
||||
_GOTO __LAB2
|
||||
__LABb :
|
||||
__TMPB1 := INTEGERVALUE = __CUINT0000000F
|
||||
_IF _NOT __TMPB1 _GOTO __LABc
|
||||
FLOWRATEUNITS := __TMPM11
|
||||
_GOTO __LAB2
|
||||
__LABc :
|
||||
__TMPB1 := INTEGERVALUE = __CUINT00000082
|
||||
_IF _NOT __TMPB1 _GOTO __LABd
|
||||
FLOWRATEUNITS := __TMPM12
|
||||
_GOTO __LAB2
|
||||
__LABd :
|
||||
__TMPB1 := INTEGERVALUE = __CUINT0000001B
|
||||
_IF _NOT __TMPB1 _GOTO __LABe
|
||||
FLOWRATEUNITS := __TMPM13
|
||||
_GOTO __LAB2
|
||||
__LABe :
|
||||
__TMPB1 := INTEGERVALUE = __CUINT0000001C
|
||||
_IF _NOT __TMPB1 _GOTO __LABf
|
||||
FLOWRATEUNITS := __TMPM14
|
||||
_GOTO __LAB2
|
||||
__LABf :
|
||||
__TMPB1 := INTEGERVALUE = __CUINT00000083
|
||||
_IF _NOT __TMPB1 _GOTO __LAB10
|
||||
FLOWRATEUNITS := __TMPM15
|
||||
_GOTO __LAB2
|
||||
__LAB10 :
|
||||
__TMPB1 := INTEGERVALUE = __CUINT00000013
|
||||
_IF _NOT __TMPB1 _GOTO __LAB11
|
||||
FLOWRATEUNITS := __TMPM16
|
||||
_GOTO __LAB2
|
||||
__LAB11 :
|
||||
__TMPB1 := INTEGERVALUE = __CUINT0000001D
|
||||
_IF _NOT __TMPB1 _GOTO __LAB12
|
||||
FLOWRATEUNITS := __TMPM17
|
||||
_GOTO __LAB2
|
||||
__LAB12 :
|
||||
__TMPB1 := INTEGERVALUE = __CUINT00000016
|
||||
_IF _NOT __TMPB1 _GOTO __LAB13
|
||||
FLOWRATEUNITS := __TMPM18
|
||||
_GOTO __LAB2
|
||||
__LAB13 :
|
||||
__TMPB1 := INTEGERVALUE = __CUINT00000010
|
||||
_IF _NOT __TMPB1 _GOTO __LAB14
|
||||
FLOWRATEUNITS := __TMPM19
|
||||
_GOTO __LAB2
|
||||
__LAB14 :
|
||||
__TMPB1 := INTEGERVALUE = __CUINT00000088
|
||||
_IF _NOT __TMPB1 _GOTO __LAB15
|
||||
FLOWRATEUNITS := __TMPM20
|
||||
_GOTO __LAB2
|
||||
__LAB15 :
|
||||
__TMPB1 := INTEGERVALUE = __CUINT000000EB
|
||||
_IF _NOT __TMPB1 _GOTO __LAB16
|
||||
FLOWRATEUNITS := __TMPM21
|
||||
_GOTO __LAB2
|
||||
__LAB16 :
|
||||
__TMPB1 := INTEGERVALUE = __CUINT00000089
|
||||
_IF _NOT __TMPB1 _GOTO __LAB17
|
||||
FLOWRATEUNITS := __TMPM22
|
||||
_GOTO __LAB2
|
||||
__LAB17 :
|
||||
__TMPB1 := INTEGERVALUE = __CUINT00000012
|
||||
_IF _NOT __TMPB1 _GOTO __LAB18
|
||||
FLOWRATEUNITS := __TMPM23
|
||||
_GOTO __LAB2
|
||||
__LAB18 :
|
||||
__TMPB1 := INTEGERVALUE = __CUINT0000001E
|
||||
_IF _NOT __TMPB1 _GOTO __LAB19
|
||||
FLOWRATEUNITS := __TMPM24
|
||||
_GOTO __LAB2
|
||||
__LAB19 :
|
||||
__TMPB1 := INTEGERVALUE = __CUINT0000001F
|
||||
_IF _NOT __TMPB1 _GOTO __LAB1a
|
||||
FLOWRATEUNITS := __TMPM25
|
||||
_GOTO __LAB2
|
||||
__LAB1a :
|
||||
__TMPB1 := INTEGERVALUE = __CUINT00000018
|
||||
_IF _NOT __TMPB1 _GOTO __LAB1b
|
||||
FLOWRATEUNITS := __TMPM26
|
||||
_GOTO __LAB2
|
||||
__LAB1b :
|
||||
__TMPB1 := INTEGERVALUE = __CUINT00000011
|
||||
_IF _NOT __TMPB1 _GOTO __LAB1c
|
||||
FLOWRATEUNITS := __TMPM27
|
||||
_GOTO __LAB2
|
||||
__LAB1c :
|
||||
__TMPB1 := INTEGERVALUE = __CUINT0000008A
|
||||
_IF _NOT __TMPB1 _GOTO __LAB1d
|
||||
FLOWRATEUNITS := __TMPM28
|
||||
_GOTO __LAB2
|
||||
__LAB1d :
|
||||
__TMPB1 := INTEGERVALUE = __CUINT000000F0
|
||||
_IF _NOT __TMPB1 _GOTO __LAB1e
|
||||
FLOWRATEUNITS := __TMPM29
|
||||
_GOTO __LAB2
|
||||
__LAB1e :
|
||||
FLOWRATEUNITS := __TMPM30
|
||||
__LAB2 :
|
||||
Binary file not shown.
@@ -0,0 +1,42 @@
|
||||
__TMPB1 := INTEGERINPUT = __CUINT00000028
|
||||
_IF _NOT __TMPB1 _GOTO __LAB1
|
||||
FLOWTOTALUNITS := __TMPM1
|
||||
_GOTO __LAB2
|
||||
__LAB1 :
|
||||
__TMPB1 := INTEGERINPUT = __CUINT00000029
|
||||
_IF _NOT __TMPB1 _GOTO __LAB3
|
||||
FLOWTOTALUNITS := __TMPM2
|
||||
_GOTO __LAB2
|
||||
__LAB3 :
|
||||
__TMPB1 := INTEGERINPUT = __CUINT0000002A
|
||||
_IF _NOT __TMPB1 _GOTO __LAB4
|
||||
FLOWTOTALUNITS := __TMPM3
|
||||
_GOTO __LAB2
|
||||
__LAB4 :
|
||||
__TMPB1 := INTEGERINPUT = __CUINT0000002B
|
||||
_IF _NOT __TMPB1 _GOTO __LAB5
|
||||
FLOWTOTALUNITS := __TMPM4
|
||||
_GOTO __LAB2
|
||||
__LAB5 :
|
||||
__TMPB1 := INTEGERINPUT = __CUINT0000002E
|
||||
_IF _NOT __TMPB1 _GOTO __LAB6
|
||||
FLOWTOTALUNITS := __TMPM5
|
||||
_GOTO __LAB2
|
||||
__LAB6 :
|
||||
__TMPB1 := INTEGERINPUT = __CUINT00000070
|
||||
_IF _NOT __TMPB1 _GOTO __LAB7
|
||||
FLOWTOTALUNITS := __TMPM6
|
||||
_GOTO __LAB2
|
||||
__LAB7 :
|
||||
__TMPB1 := INTEGERINPUT = __CUINT000000F6
|
||||
_IF _NOT __TMPB1 _GOTO __LAB8
|
||||
FLOWTOTALUNITS := __TMPM7
|
||||
_GOTO __LAB2
|
||||
__LAB8 :
|
||||
__TMPB1 := INTEGERINPUT = __CUINT000000F7
|
||||
_IF _NOT __TMPB1 _GOTO __LAB9
|
||||
FLOWTOTALUNITS := __TMPM8
|
||||
_GOTO __LAB2
|
||||
__LAB9 :
|
||||
FLOWTOTALUNITS := __TMPM9
|
||||
__LAB2 :
|
||||
Binary file not shown.
@@ -2,54 +2,307 @@ PROGRAM FlowMeterMb
|
||||
ModbusTimer(NOT ModbusTimer.Q, ModbusScanRate);
|
||||
|
||||
(* ============== *)
|
||||
(* FLOW TOTAL + *)
|
||||
(* FLOW RATE *)
|
||||
(* ============== *)
|
||||
mbs_FlowTotalPos_TargetCfg.Addr := cfg_FlowTotalPos_Register;
|
||||
mbs_FlowTotalPos_TargetCfg.Node := cfg_Flowmeter_ModbusNode;
|
||||
mbs_FlowRate_TargetCfg.Addr := cfg_FlowRate_Register;
|
||||
mbs_FlowRate_TargetCfg.Node := cfg_Flowmeter_ModbusNode;
|
||||
|
||||
mbs_FlowTotalPos_LocalCfg.Channel := 2;
|
||||
mbs_FlowTotalPos_LocalCfg.Cmd := READ_CMD;
|
||||
mbs_FlowTotalPos_LocalCfg.TriggerType := mbs_TriggerType;
|
||||
mbs_FlowTotalPos_LocalCfg.ElementCnt := 2;
|
||||
mbs_FlowTotalPos_MSG(ModbusTimer.Q, mbs_Cancel, mbs_FlowTotalPos_LocalCfg, mbs_FlowTotalPos_TargetCfg, mbs_FlowTotalPos_Data);
|
||||
mbs_FlowRate_LocalCfg.Channel := 2;
|
||||
mbs_FlowRate_LocalCfg.Cmd := READ_CMD;
|
||||
mbs_FlowRate_LocalCfg.TriggerType := mbs_TriggerType;
|
||||
mbs_FlowRate_LocalCfg.ElementCnt := 2;
|
||||
mbs_FlowRate_MSG(ModbusTimer.Q, mbs_Cancel, mbs_FlowRate_LocalCfg, mbs_FlowRate_TargetCfg, mbs_FlowRate_Data);
|
||||
|
||||
IF mbs_FlowTotalPos_MSG.Q THEN
|
||||
val_FlowTotalPos := WordsToReal(mbs_FlowTotalPos_Data[2], mbs_FlowTotalPos_Data[1]);
|
||||
IF mbs_FlowRate_MSG.Q THEN
|
||||
val_FlowRate := WordsToReal(mbs_FlowRate_Data[1], mbs_FlowRate_Data[2]);
|
||||
END_IF;
|
||||
|
||||
(* ============== *)
|
||||
(* FLOW TOTAL - *)
|
||||
(* FLOW TOTALIZER A *)
|
||||
(* ============== *)
|
||||
mbs_FlowTotalNeg_TargetCfg.Addr := cfg_FlowTotalNeg_Register;
|
||||
mbs_FlowTotalNeg_TargetCfg.Node := cfg_Flowmeter_ModbusNode;
|
||||
mbs_FlowTotalizerA_TargetCfg.Addr := cfg_FlowTotalizerA_Register;
|
||||
mbs_FlowTotalizerA_TargetCfg.Node := cfg_Flowmeter_ModbusNode;
|
||||
|
||||
mbs_FlowTotalNeg_LocalCfg.Channel := 2;
|
||||
mbs_FlowTotalNeg_LocalCfg.Cmd := READ_CMD;
|
||||
mbs_FlowTotalNeg_LocalCfg.TriggerType := mbs_TriggerType;
|
||||
mbs_FlowTotalNeg_LocalCfg.ElementCnt := 2;
|
||||
mbs_FlowTotalNeg_MSG(ModbusTimer.Q, mbs_Cancel, mbs_FlowTotalNeg_LocalCfg, mbs_FlowTotalNeg_TargetCfg, mbs_FlowTotalNeg_Data);
|
||||
mbs_FlowTotalizerA_LocalCfg.Channel := 2;
|
||||
mbs_FlowTotalizerA_LocalCfg.Cmd := READ_CMD;
|
||||
mbs_FlowTotalizerA_LocalCfg.TriggerType := mbs_TriggerType;
|
||||
mbs_FlowTotalizerA_LocalCfg.ElementCnt := 2;
|
||||
mbs_FlowTotalizerA_MSG(ModbusTimer.Q, mbs_Cancel, mbs_FlowTotalizerA_LocalCfg, mbs_FlowTotalizerA_TargetCfg, mbs_FlowTotalizerA_Data);
|
||||
|
||||
IF mbs_FlowTotalNeg_MSG.Q THEN
|
||||
val_FlowTotalNeg := WordsToReal(mbs_FlowTotalNeg_Data[2], mbs_FlowTotalNeg_Data[1]);
|
||||
IF mbs_FlowTotalizerA_MSG.Q THEN
|
||||
val_FlowTotalizerA := WordsToReal(mbs_FlowTotalizerA_Data[1], mbs_FlowTotalizerA_Data[2]);
|
||||
END_IF;
|
||||
|
||||
|
||||
(* ============== *)
|
||||
(* FLOW GROSS *)
|
||||
(* FLOW TOTALIZER B *)
|
||||
(* ============== *)
|
||||
mbs_FlowGross_TargetCfg.Addr := cfg_FlowGross_Register;
|
||||
mbs_FlowGross_TargetCfg.Node := cfg_Flowmeter_ModbusNode;
|
||||
mbs_FlowTotalizerB_TargetCfg.Addr := cfg_FlowTotalizerB_Register;
|
||||
mbs_FlowTotalizerB_TargetCfg.Node := cfg_Flowmeter_ModbusNode;
|
||||
|
||||
mbs_FlowGross_LocalCfg.Channel := 2;
|
||||
mbs_FlowGross_LocalCfg.Cmd := READ_CMD;
|
||||
mbs_FlowGross_LocalCfg.TriggerType := mbs_TriggerType;
|
||||
mbs_FlowGross_LocalCfg.ElementCnt := 2;
|
||||
mbs_FlowGross_MSG(ModbusTimer.Q, mbs_Cancel, mbs_FlowGross_LocalCfg, mbs_FlowGross_TargetCfg, mbs_FlowGross_Data);
|
||||
mbs_FlowTotalizerB_LocalCfg.Channel := 2;
|
||||
mbs_FlowTotalizerB_LocalCfg.Cmd := READ_CMD;
|
||||
mbs_FlowTotalizerB_LocalCfg.TriggerType := mbs_TriggerType;
|
||||
mbs_FlowTotalizerB_LocalCfg.ElementCnt := 2;
|
||||
mbs_FlowTotalizerB_MSG(ModbusTimer.Q, mbs_Cancel, mbs_FlowTotalizerB_LocalCfg, mbs_FlowTotalizerB_TargetCfg, mbs_FlowTotalizerB_Data);
|
||||
|
||||
IF mbs_FlowGross_MSG.Q THEN
|
||||
val_FlowGross := WordsToReal(mbs_FlowGross_Data[2], mbs_FlowGross_Data[1]);
|
||||
IF mbs_FlowTotalizerB_MSG.Q THEN
|
||||
val_FlowTotalizerB := WordsToReal(mbs_FlowTotalizerB_Data[1], mbs_FlowTotalizerB_Data[2]);
|
||||
END_IF;
|
||||
|
||||
(* ============== *)
|
||||
(* FLOW TOTALIZER C *)
|
||||
(* ============== *)
|
||||
mbs_FlowTotalizerC_TargetCfg.Addr := cfg_FlowTotalizerC_Register;
|
||||
mbs_FlowTotalizerC_TargetCfg.Node := cfg_Flowmeter_ModbusNode;
|
||||
|
||||
mbs_FlowTotalizerC_LocalCfg.Channel := 2;
|
||||
mbs_FlowTotalizerC_LocalCfg.Cmd := READ_CMD;
|
||||
mbs_FlowTotalizerC_LocalCfg.TriggerType := mbs_TriggerType;
|
||||
mbs_FlowTotalizerC_LocalCfg.ElementCnt := 2;
|
||||
mbs_FlowTotalizerC_MSG(ModbusTimer.Q, mbs_Cancel, mbs_FlowTotalizerC_LocalCfg, mbs_FlowTotalizerC_TargetCfg, mbs_FlowTotalizerC_Data);
|
||||
|
||||
IF mbs_FlowTotalizerC_MSG.Q THEN
|
||||
val_FlowTotalizerC := WordsToReal(mbs_FlowTotalizerC_Data[1], mbs_FlowTotalizerC_Data[2]);
|
||||
END_IF;
|
||||
|
||||
(* ============== *)
|
||||
(* STATUS *)
|
||||
(* ============== *)
|
||||
mbs_Status_TargetCfg.Addr := cfg_Status_Register;
|
||||
mbs_Status_TargetCfg.Node := cfg_Flowmeter_ModbusNode;
|
||||
|
||||
mbs_Status_LocalCfg.Channel := 2;
|
||||
mbs_Status_LocalCfg.Cmd := READ_CMD;
|
||||
mbs_Status_LocalCfg.TriggerType := mbs_TriggerType;
|
||||
mbs_Status_LocalCfg.ElementCnt := 3;
|
||||
mbs_Status_MSG(ModbusTimer.Q, mbs_Cancel, mbs_Status_LocalCfg, mbs_Status_TargetCfg, mbs_Status_Data);
|
||||
|
||||
IF mbs_Status_MSG.Q THEN
|
||||
val_Status0 := ANY_TO_UINT(mbs_Status_Data[1]);
|
||||
val_Status1 := ANY_TO_UINT(mbs_Status_Data[2]);
|
||||
val_Status2 := ANY_TO_UINT(mbs_Status_Data[3]);
|
||||
END_IF;
|
||||
|
||||
sts_ModbusError := mbs_FlowRate_MSG.Error OR mbs_FlowTotalizerA_MSG.Error OR mbs_FlowTotalizerB_MSG.Error OR mbs_FlowTotalizerC_MSG.Error OR mbs_Status_MSG.Error;
|
||||
|
||||
IF (val_Status0 + val_Status1 + val_Status2) = 0 THEN
|
||||
val_StatusString := 'OK';
|
||||
ELSE
|
||||
val_StatusString := '';
|
||||
IF val_Status0.0 THEN
|
||||
val_StatusString := val_StatusString + ', Sensor Out of Range';
|
||||
END_IF;
|
||||
IF val_Status0.1 THEN
|
||||
val_StatusString := val_StatusString + ', Empty Pipe';
|
||||
END_IF;
|
||||
IF val_Status0.2 THEN
|
||||
val_StatusString := val_StatusString + ', I/O Processor Failure';
|
||||
END_IF;
|
||||
IF val_Status0.3 THEN
|
||||
val_StatusString := val_StatusString + ', Pulse Output- Out of Range';
|
||||
END_IF;
|
||||
IF val_Status0.4 THEN
|
||||
val_StatusString := val_StatusString + ', Update Missed';
|
||||
END_IF;
|
||||
IF val_Status0.5 THEN
|
||||
val_StatusString := val_StatusString + ', Output at Alarm Level';
|
||||
END_IF;
|
||||
IF val_Status0.6 THEN
|
||||
val_StatusString := val_StatusString + ', Modbus Nonvolatile Memory Error';
|
||||
END_IF;
|
||||
IF val_Status0.7 THEN
|
||||
val_StatusString := val_StatusString + ', Pulse Output Fixed';
|
||||
END_IF;
|
||||
IF val_Status0.8 THEN
|
||||
val_StatusString := val_StatusString + ', EPROM Checksum Error';
|
||||
END_IF;
|
||||
IF val_Status0.9 THEN
|
||||
val_StatusString := val_StatusString + ', NOVRAM Checksum Error';
|
||||
END_IF;
|
||||
IF val_Status0.10 THEN
|
||||
val_StatusString := val_StatusString + ', RAM Checksum Error';
|
||||
END_IF;
|
||||
IF val_Status0.11 THEN
|
||||
val_StatusString := val_StatusString + ', Factory NOVRAM Checksum Error';
|
||||
END_IF;
|
||||
IF val_Status0.12 THEN
|
||||
val_StatusString := val_StatusString + ', Continuous Meter Verification Error';
|
||||
END_IF;
|
||||
IF val_Status0.13 THEN
|
||||
val_StatusString := val_StatusString + ', PZR Output is Active';
|
||||
END_IF;
|
||||
IF val_Status0.14 THEN
|
||||
val_StatusString := val_StatusString + ', Coil Drive Current is Zero';
|
||||
END_IF;
|
||||
IF val_Status0.15 THEN
|
||||
val_StatusString := val_StatusString + ', Reverse Flow Rate Detected';
|
||||
END_IF;
|
||||
|
||||
IF val_Status1.0 THEN
|
||||
val_StatusString := val_StatusString + ', Internal Flow Simulation Test Error';
|
||||
END_IF;
|
||||
IF val_Status1.1 THEN
|
||||
val_StatusString := val_StatusString + ', Excess Auto Zero Correction- ZR Too High';
|
||||
END_IF;
|
||||
IF val_Status1.2 THEN
|
||||
val_StatusString := val_StatusString + ', Excess Auto Zero Correction- ZR Too Low';
|
||||
END_IF;
|
||||
IF val_Status1.3 THEN
|
||||
val_StatusString := val_StatusString + ', Auto Zero Attempt with Non-zero Flow';
|
||||
END_IF;
|
||||
IF val_Status1.4 THEN
|
||||
val_StatusString := val_StatusString + ', Totalizer Limit 1 Alert';
|
||||
END_IF;
|
||||
IF val_Status1.5 THEN
|
||||
val_StatusString := val_StatusString + ', Universal Trim Failure';
|
||||
END_IF;
|
||||
IF val_Status1.6 THEN
|
||||
val_StatusString := val_StatusString + ', Flow Limit Alert 1';
|
||||
END_IF;
|
||||
IF val_Status1.7 THEN
|
||||
val_StatusString := val_StatusString + ', Flow Limit Alert 2';
|
||||
END_IF;
|
||||
IF val_Status1.8 THEN
|
||||
val_StatusString := val_StatusString + ', Electrode Coated Limit 1';
|
||||
END_IF;
|
||||
IF val_Status1.9 THEN
|
||||
val_StatusString := val_StatusString + ', Electrode Coated Limit 2';
|
||||
END_IF;
|
||||
IF val_Status1.10 THEN
|
||||
val_StatusString := val_StatusString + ', Excess Calibration Correction, GN too Low';
|
||||
END_IF;
|
||||
IF val_Status1.11 THEN
|
||||
val_StatusString := val_StatusString + ', Excess Calibration Correction, GN too High';
|
||||
END_IF;
|
||||
IF val_Status1.12 THEN
|
||||
val_StatusString := val_StatusString + ', Calibration Attempt without Calibrator';
|
||||
END_IF;
|
||||
IF val_Status1.13 THEN
|
||||
val_StatusString := val_StatusString + ', Grounding/Wiring Fault';
|
||||
END_IF;
|
||||
IF val_Status1.14 THEN
|
||||
val_StatusString := val_StatusString + ', High Process Noise Detected';
|
||||
END_IF;
|
||||
IF val_Status1.15 THEN
|
||||
val_StatusString := val_StatusString + ', Electronics Temperature Out of Range';
|
||||
END_IF;
|
||||
|
||||
IF val_Status2.0 THEN
|
||||
val_StatusString := val_StatusString + ', Digital I/O 1 Active';
|
||||
END_IF;
|
||||
IF val_Status2.1 THEN
|
||||
val_StatusString := val_StatusString + ', Digital I/O 2 Active';
|
||||
END_IF;
|
||||
IF val_Status2.2 THEN
|
||||
val_StatusString := val_StatusString + ', Diagnostic Status Alert Active';
|
||||
END_IF;
|
||||
IF val_Status2.3 THEN
|
||||
val_StatusString := val_StatusString + ', Modbus in Listen Only Mode';
|
||||
END_IF;
|
||||
IF val_Status2.4 THEN
|
||||
val_StatusString := val_StatusString + ', I/O Processor Comm Failure';
|
||||
END_IF;
|
||||
IF val_Status2.5 THEN
|
||||
val_StatusString := val_StatusString + ', Coil Over Current Detected';
|
||||
END_IF;
|
||||
IF val_Status2.6 THEN
|
||||
val_StatusString := val_StatusString + ', Sensor Electrode Saturated';
|
||||
END_IF;
|
||||
IF val_Status2.7 THEN
|
||||
val_StatusString := val_StatusString + ', Coil Power Limit';
|
||||
END_IF;
|
||||
IF val_Status2.8 THEN
|
||||
val_StatusString := val_StatusString + ', Electronics Failure';
|
||||
END_IF;
|
||||
IF val_Status2.9 THEN
|
||||
val_StatusString := val_StatusString + ', Coil Resistance Error';
|
||||
END_IF;
|
||||
IF val_Status2.10 THEN
|
||||
val_StatusString := val_StatusString + ', Coil Inductance Error';
|
||||
END_IF;
|
||||
IF val_Status2.11 THEN
|
||||
val_StatusString := val_StatusString + ', Digital Trim Failure';
|
||||
END_IF;
|
||||
IF val_Status2.12 THEN
|
||||
val_StatusString := val_StatusString + ', Reverse Flow Detected';
|
||||
END_IF;
|
||||
IF val_Status2.13 THEN
|
||||
val_StatusString := val_StatusString + ', Electrode Resistance Error';
|
||||
END_IF;
|
||||
IF val_Status2.14 THEN
|
||||
val_StatusString := val_StatusString + ', Auto Zero Failure';
|
||||
END_IF;
|
||||
IF val_Status2.15 THEN
|
||||
val_StatusString := val_StatusString + ', Reserved for Status Bit';
|
||||
END_IF;
|
||||
|
||||
val_StatusString := RIGHT(val_StatusString, MLEN(val_StatusString) - 2);
|
||||
END_IF;
|
||||
|
||||
|
||||
(* ============== *)
|
||||
(* RESET TOTALIZER *)
|
||||
(* ============== *)
|
||||
cmd_ResetTotalizer := cmd_ResetTotalizerA OR cmd_ResetTotalizerB OR cmd_ResetTotalizerC;
|
||||
|
||||
IF cmd_ResetTotalizerA THEN
|
||||
mbs_ResetTotalizer_TargetCfg.Addr := cfg_ResetTotalizerA_Coil;
|
||||
ELSIF cmd_ResetTotalizerB THEN
|
||||
mbs_ResetTotalizer_TargetCfg.Addr := cfg_ResetTotalizerA_Coil;
|
||||
ELSIF cmd_ResetTotalizerC THEN
|
||||
mbs_ResetTotalizer_TargetCfg.Addr := cfg_ResetTotalizerC_Coil;
|
||||
END_IF;
|
||||
|
||||
mbs_ResetTotalizer_TargetCfg.Node := cfg_Flowmeter_ModbusNode;
|
||||
|
||||
mbs_ResetTotalizer_LocalCfg.Channel := 2;
|
||||
mbs_ResetTotalizer_LocalCfg.Cmd := WRITECOIL_CMD;
|
||||
mbs_ResetTotalizer_LocalCfg.TriggerType := 0;
|
||||
mbs_ResetTotalizer_LocalCfg.ElementCnt := 1;
|
||||
mbs_ResetTotalizer_Data[1] := 1;
|
||||
|
||||
mbs_ResetTotalizer_MSG(cmd_ResetTotalizer, mbs_Cancel, mbs_ResetTotalizer_LocalCfg, mbs_ResetTotalizer_TargetCfg, mbs_ResetTotalizer_Data);
|
||||
IF mbs_ResetTotalizer_MSG.Q OR mbs_ResetTotalizer_MSG.Error THEN
|
||||
cmd_ClearResetTotalizer := TRUE;
|
||||
cmd_ResetTotalizerA := FALSE;
|
||||
cmd_ResetTotalizerB := FALSE;
|
||||
cmd_ResetTotalizerC := FALSE;
|
||||
END_IF;
|
||||
|
||||
Wait_To_Reset_TON(cmd_ClearResetTotalizer, par_TimeToWaitToClearResetTotalizer);
|
||||
|
||||
mbs_ClearResetTotalizer_TargetCfg.Addr := mbs_ResetTotalizer_TargetCfg.Addr;
|
||||
mbs_ClearResetTotalizer_TargetCfg.Node := mbs_ResetTotalizer_TargetCfg.Node;
|
||||
mbs_ClearResetTotalizer_LocalCfg.Channel := mbs_ResetTotalizer_LocalCfg.Channel;
|
||||
mbs_ClearResetTotalizer_LocalCfg.Cmd := mbs_ResetTotalizer_LocalCfg.Cmd;
|
||||
mbs_ClearResetTotalizer_LocalCfg.TriggerType := mbs_ResetTotalizer_LocalCfg.TriggerType;
|
||||
mbs_ClearResetTotalizer_LocalCfg.ElementCnt := mbs_ResetTotalizer_LocalCfg.ElementCnt;
|
||||
mbs_ClearResetTotalizer_Data[1] := 0;
|
||||
mbs_ClearResetTotalizer_MSG(Wait_To_Reset_TON.Q, mbs_Cancel, mbs_ClearResetTotalizer_LocalCfg, mbs_ClearResetTotalizer_TargetCfg, mbs_ClearResetTotalizer_Data);
|
||||
|
||||
IF mbs_ClearResetTotalizer_MSG.Q OR mbs_ClearResetTotalizer_MSG.Error THEN
|
||||
cmd_ClearResetTotalizer := FALSE;
|
||||
END_IF;
|
||||
|
||||
|
||||
(* ============== *)
|
||||
(* UNITS *)
|
||||
(* ============== *)
|
||||
mbs_Units_TargetCfg.Addr := cfg_Units_Register;
|
||||
mbs_Units_TargetCfg.Node := cfg_Flowmeter_ModbusNode;
|
||||
|
||||
mbs_Units_LocalCfg.Channel := 2;
|
||||
mbs_Units_LocalCfg.Cmd := READ_CMD;
|
||||
mbs_Units_LocalCfg.TriggerType := mbs_TriggerType;
|
||||
mbs_Units_LocalCfg.ElementCnt := 4;
|
||||
mbs_Units_MSG(ModbusTimer.Q, mbs_Cancel, mbs_Units_LocalCfg, mbs_Units_TargetCfg, mbs_Units_Data);
|
||||
|
||||
IF mbs_Units_MSG.Q THEN
|
||||
val_FlowUnits := FlowRateUnits(mbs_Units_Data[1]);
|
||||
val_FlowTotalizerAUnits := FlowTotalUnits(mbs_Units_Data[2]);
|
||||
val_FlowTotalizerBUnits := FlowTotalUnits(mbs_Units_Data[3]);
|
||||
val_FlowTotalizerCUnits := FlowTotalUnits(mbs_Units_Data[4]);
|
||||
END_IF;
|
||||
|
||||
END_PROGRAM
|
||||
@@ -0,0 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Root Version="6">
|
||||
<LanguageContainerStyle CommentTextColor="Green" CommentFont="Courier New, 10pt" PonctuationTextColor="Black" PonctuationFont="Courier New, 10pt" IdentifierTextColor="Black" IdentifierFont="Courier New, 10pt" OperatorTextColor="Black" OperatorFont="Courier New, 10pt" ReservedWordTextColor="Fuchsia" ReservedWordFont="Courier New, 10pt" PouTextColor="BlueViolet" PouFont="Courier New, 10pt" NumberTextColor="Firebrick" NumberFont="Courier New, 10pt" StringTextColor="Gray" StringFont="Courier New, 10pt" EditorTextAreaBackgroundColor="White" EditorFont="Courier New, 10pt" Index="0" />
|
||||
</Root>
|
||||
@@ -0,0 +1,63 @@
|
||||
FUNCTION FlowRateUnits
|
||||
IF integerValue = 241 THEN
|
||||
FlowRateUnits := 'B31/sec';
|
||||
ELSIF integerValue = 242 THEN
|
||||
FlowRateUnits := 'B31/min';
|
||||
ELSIF integerValue = 243 THEN
|
||||
FlowRateUnits := 'B31/hour';
|
||||
ELSIF integerValue = 244 THEN
|
||||
FlowRateUnits := 'B31/day';
|
||||
ELSIF integerValue = 132 THEN
|
||||
FlowRateUnits := 'B42/sec';
|
||||
ELSIF integerValue = 133 THEN
|
||||
FlowRateUnits := 'B42/min';
|
||||
ELSIF integerValue = 134 THEN
|
||||
FlowRateUnits := 'B42/hour';
|
||||
ELSIF integerValue = 135 THEN
|
||||
FlowRateUnits := 'B42/day';
|
||||
ELSIF integerValue = 248 THEN
|
||||
FlowRateUnits := 'cm3/sec';
|
||||
ELSIF integerValue = 26 THEN
|
||||
FlowRateUnits := 'ft3/sec';
|
||||
ELSIF integerValue = 15 THEN
|
||||
FlowRateUnits := 'ft3/min';
|
||||
ELSIF integerValue = 130 THEN
|
||||
FlowRateUnits := 'ft3/hour';
|
||||
ELSIF integerValue = 27 THEN
|
||||
FlowRateUnits := 'ft3/day';
|
||||
ELSIF integerValue = 28 THEN
|
||||
FlowRateUnits := 'm3/sec';
|
||||
ELSIF integerValue = 131 THEN
|
||||
FlowRateUnits := 'm3/min';
|
||||
ELSIF integerValue = 19 THEN
|
||||
FlowRateUnits := 'm3/hour';
|
||||
ELSIF integerValue = 29 THEN
|
||||
FlowRateUnits := 'm3/day';
|
||||
ELSIF integerValue = 22 THEN
|
||||
FlowRateUnits := 'gal/sec';
|
||||
ELSIF integerValue = 16 THEN
|
||||
FlowRateUnits := 'gal/min';
|
||||
ELSIF integerValue = 136 THEN
|
||||
FlowRateUnits := 'gal/hour';
|
||||
ELSIF integerValue = 235 THEN
|
||||
FlowRateUnits := 'gal/day';
|
||||
ELSIF integerValue = 137 THEN
|
||||
FlowRateUnits := 'gal (Imp.)/sec';
|
||||
ELSIF integerValue = 18 THEN
|
||||
FlowRateUnits := 'gal (Imp.)/min';
|
||||
ELSIF integerValue = 30 THEN
|
||||
FlowRateUnits := 'gal (Imp.)/hour';
|
||||
ELSIF integerValue = 31 THEN
|
||||
FlowRateUnits := 'gal (Imp.)/day';
|
||||
ELSIF integerValue = 24 THEN
|
||||
FlowRateUnits := 'L/sec';
|
||||
ELSIF integerValue = 17 THEN
|
||||
FlowRateUnits := 'L/min';
|
||||
ELSIF integerValue = 138 THEN
|
||||
FlowRateUnits := 'L/hour';
|
||||
ELSIF integerValue = 240 THEN
|
||||
FlowRateUnits := 'L/day';
|
||||
ELSE
|
||||
FlowRateUnits := 'Unknown';
|
||||
END_IF;
|
||||
END_FUNCTION
|
||||
@@ -0,0 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Root Version="6">
|
||||
<LanguageContainerStyle CommentTextColor="Green" CommentFont="Courier New, 10pt" PonctuationTextColor="Black" PonctuationFont="Courier New, 10pt" IdentifierTextColor="Black" IdentifierFont="Courier New, 10pt" OperatorTextColor="Black" OperatorFont="Courier New, 10pt" ReservedWordTextColor="Fuchsia" ReservedWordFont="Courier New, 10pt" PouTextColor="BlueViolet" PouFont="Courier New, 10pt" NumberTextColor="Firebrick" NumberFont="Courier New, 10pt" StringTextColor="Gray" StringFont="Courier New, 10pt" EditorTextAreaBackgroundColor="White" EditorFont="Courier New, 10pt" Index="0" />
|
||||
</Root>
|
||||
@@ -0,0 +1,21 @@
|
||||
FUNCTION FlowTotalUnits
|
||||
IF integerInput = 40 THEN
|
||||
FlowTotalUnits := 'Gallons';
|
||||
ELSIF integerInput = 41 THEN
|
||||
FlowTotalUnits := 'Liters';
|
||||
ELSIF integerInput = 42 THEN
|
||||
FlowTotalUnits := 'Imp. Gallons';
|
||||
ELSIF integerInput = 43 THEN
|
||||
FlowTotalUnits := 'Cubic Meters';
|
||||
ELSIF integerInput = 46 THEN
|
||||
FlowTotalUnits := 'BBL42';
|
||||
ELSIF integerInput = 112 THEN
|
||||
FlowTotalUnits := 'Cubic Feet';
|
||||
ELSIF integerInput = 246 THEN
|
||||
FlowTotalUnits := 'Cubic cm';
|
||||
ELSIF integerInput = 247 THEN
|
||||
FlowTotalUnits := 'BBL31';
|
||||
ELSE
|
||||
FlowTotalUnits := 'Unknown';
|
||||
END_IF;
|
||||
END_FUNCTION
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -1,2 +1,5 @@
|
||||
FLOWMETERMB(147):F,WORDSTOREAL(148);
|
||||
WATCHDOG(149):
|
||||
FLOWRATEUNITS(150):
|
||||
FLOWMETERMB(147):F,WORDSTOREAL(148);F,FLOWRATEUNITS(150);F,FLOWTOTALUNITS(151);
|
||||
WORDSTOREAL(148):
|
||||
FLOWTOTALUNITS(151):
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -1,10 +1,10 @@
|
||||
[MEMORY]
|
||||
Offset0=0x1044
|
||||
Offset1=0x1844
|
||||
Offset2=0x1844
|
||||
Offset3=0x1844
|
||||
Memory Usage Estimate(Code)=0x8D8
|
||||
Memory Usage Estimate(Data)=0x3A24
|
||||
Memory Usage Estimate(Retain)=0x10
|
||||
Memory Usage Estimate(Temporary variables)=0x1DC
|
||||
Offset0=0x19D8
|
||||
Offset1=0x21D8
|
||||
Offset2=0x21D8
|
||||
Offset3=0x21D8
|
||||
Memory Usage Estimate(Code)=0x193C
|
||||
Memory Usage Estimate(Data)=0x4B64
|
||||
Memory Usage Estimate(Retain)=0x2D
|
||||
Memory Usage Estimate(Temporary variables)=0x988
|
||||
Offset4=0x414
|
||||
|
||||
@@ -0,0 +1,10 @@
|
||||
[MEMORY]
|
||||
Offset0=0x19D8
|
||||
Offset1=0x21D8
|
||||
Offset2=0x21D8
|
||||
Offset3=0x21D8
|
||||
Memory Usage Estimate(Code)=0x193C
|
||||
Memory Usage Estimate(Data)=0x4B64
|
||||
Memory Usage Estimate(Retain)=0x2D
|
||||
Memory Usage Estimate(Temporary variables)=0x988
|
||||
Offset4=0x414
|
||||
@@ -5,12 +5,12 @@ ON_LINE=N
|
||||
TBL_CONF=Y
|
||||
CRC_ORG=0x0
|
||||
CRC_OLD=
|
||||
CRC_NEW=0xB340F0E7
|
||||
CRC_NEW=0x61395B12
|
||||
DAT_ORG=0
|
||||
DAT_OLD=0
|
||||
DAT_NEW=1515783534
|
||||
DAT_NEW=1517002116
|
||||
VER_ORG=0
|
||||
VER_OLD=0
|
||||
VER_NEW=1
|
||||
VER_NEW=23
|
||||
CRC_ALL_OLD=
|
||||
CRC_ALL_NEW=0x0ED94E07
|
||||
CRC_ALL_NEW=0x7C3289A7
|
||||
@@ -1,9 +1,9 @@
|
||||
[MEMORY]
|
||||
Memory Usage Estimate(Temporary variables)=0x1DC
|
||||
Memory Usage Estimate(Temporary variables)=0x988
|
||||
Biggest online change user variable memory block size=0x800
|
||||
Currently added user variables=0x0
|
||||
Total data size=0x1220
|
||||
User variables size=0x1044
|
||||
Maximum size for temporary variables=0x21DC
|
||||
Memory Usage Estimate(Data)=0x3A20
|
||||
Total data size=0x2360
|
||||
User variables size=0x19D8
|
||||
Maximum size for temporary variables=0x2988
|
||||
Memory Usage Estimate(Data)=0x4B60
|
||||
Free memory for user variables=0x800
|
||||
|
||||
@@ -0,0 +1,9 @@
|
||||
[MEMORY]
|
||||
Memory Usage Estimate(Temporary variables)=0x988
|
||||
Biggest online change user variable memory block size=0x800
|
||||
Currently added user variables=0x0
|
||||
Total data size=0x2360
|
||||
User variables size=0x19D8
|
||||
Maximum size for temporary variables=0x2988
|
||||
Memory Usage Estimate(Data)=0x4B60
|
||||
Free memory for user variables=0x800
|
||||
@@ -1,4 +1,10 @@
|
||||
<INPUT>,MODBUSTIMER@FLOWMETERMB,TON,IN,__TMPB__TON__IN,BOOL,PT,MODBUSSCANRATE,TIME
|
||||
<INPUT>,MBS_FLOWTOTALPOS_MSG@FLOWMETERMB,MSG_MODBUS,IN,__TMPB__MSG_MODBUS__IN,BOOL,CANCEL,MBS_CANCEL@FLOWMETERMB,BOOL,LOCALCFG,<NOT USED>,MODBUSLOCPARA,TARGETCFG,<NOT USED>,MODBUSTARPARA,LOCALADDR,<NOT USED>,MODBUSLOCADDR,__ADI_LOCALADDR,<NOT USED>,UINT
|
||||
<INPUT>,MBS_FLOWTOTALNEG_MSG@FLOWMETERMB,MSG_MODBUS,IN,__TMPB__MSG_MODBUS__IN,BOOL,CANCEL,MBS_CANCEL@FLOWMETERMB,BOOL,LOCALCFG,<NOT USED>,MODBUSLOCPARA,TARGETCFG,<NOT USED>,MODBUSTARPARA,LOCALADDR,<NOT USED>,MODBUSLOCADDR,__ADI_LOCALADDR,<NOT USED>,UINT
|
||||
<INPUT>,MBS_FLOWGROSS_MSG@FLOWMETERMB,MSG_MODBUS,IN,__TMPB__MSG_MODBUS__IN,BOOL,CANCEL,MBS_CANCEL@FLOWMETERMB,BOOL,LOCALCFG,<NOT USED>,MODBUSLOCPARA,TARGETCFG,<NOT USED>,MODBUSTARPARA,LOCALADDR,<NOT USED>,MODBUSLOCADDR,__ADI_LOCALADDR,<NOT USED>,UINT
|
||||
<INPUT>,MBS_FLOWRATE_MSG@FLOWMETERMB,MSG_MODBUS,IN,__TMPB__MSG_MODBUS__IN,BOOL,CANCEL,MBS_CANCEL@FLOWMETERMB,BOOL,LOCALCFG,<NOT USED>,MODBUSLOCPARA,TARGETCFG,<NOT USED>,MODBUSTARPARA,LOCALADDR,<NOT USED>,MODBUSLOCADDR,__ADI_LOCALADDR,<NOT USED>,UINT
|
||||
<INPUT>,MBS_FLOWTOTALIZERA_MSG@FLOWMETERMB,MSG_MODBUS,IN,__TMPB__MSG_MODBUS__IN,BOOL,CANCEL,MBS_CANCEL@FLOWMETERMB,BOOL,LOCALCFG,<NOT USED>,MODBUSLOCPARA,TARGETCFG,<NOT USED>,MODBUSTARPARA,LOCALADDR,<NOT USED>,MODBUSLOCADDR,__ADI_LOCALADDR,<NOT USED>,UINT
|
||||
<INPUT>,MBS_FLOWTOTALIZERB_MSG@FLOWMETERMB,MSG_MODBUS,IN,__TMPB__MSG_MODBUS__IN,BOOL,CANCEL,MBS_CANCEL@FLOWMETERMB,BOOL,LOCALCFG,<NOT USED>,MODBUSLOCPARA,TARGETCFG,<NOT USED>,MODBUSTARPARA,LOCALADDR,<NOT USED>,MODBUSLOCADDR,__ADI_LOCALADDR,<NOT USED>,UINT
|
||||
<INPUT>,MBS_FLOWTOTALIZERC_MSG@FLOWMETERMB,MSG_MODBUS,IN,__TMPB__MSG_MODBUS__IN,BOOL,CANCEL,MBS_CANCEL@FLOWMETERMB,BOOL,LOCALCFG,<NOT USED>,MODBUSLOCPARA,TARGETCFG,<NOT USED>,MODBUSTARPARA,LOCALADDR,<NOT USED>,MODBUSLOCADDR,__ADI_LOCALADDR,<NOT USED>,UINT
|
||||
<INPUT>,MBS_STATUS_MSG@FLOWMETERMB,MSG_MODBUS,IN,__TMPB__MSG_MODBUS__IN,BOOL,CANCEL,MBS_CANCEL@FLOWMETERMB,BOOL,LOCALCFG,<NOT USED>,MODBUSLOCPARA,TARGETCFG,<NOT USED>,MODBUSTARPARA,LOCALADDR,<NOT USED>,MODBUSLOCADDR,__ADI_LOCALADDR,<NOT USED>,UINT
|
||||
<INPUT>,MBS_RESETTOTALIZER_MSG@FLOWMETERMB,MSG_MODBUS,IN,CMD_RESETTOTALIZER@FLOWMETERMB,BOOL,CANCEL,MBS_CANCEL@FLOWMETERMB,BOOL,LOCALCFG,<NOT USED>,MODBUSLOCPARA,TARGETCFG,<NOT USED>,MODBUSTARPARA,LOCALADDR,<NOT USED>,MODBUSLOCADDR,__ADI_LOCALADDR,<NOT USED>,UINT
|
||||
<INPUT>,WAIT_TO_RESET_TON@FLOWMETERMB,TON,IN,CMD_CLEARRESETTOTALIZER@FLOWMETERMB,BOOL,PT,PAR_TIMETOWAITTOCLEARRESETTOTALIZER@FLOWMETERMB,TIME
|
||||
<INPUT>,MBS_CLEARRESETTOTALIZER_MSG@FLOWMETERMB,MSG_MODBUS,IN,__TMPB__MSG_MODBUS__IN,BOOL,CANCEL,MBS_CANCEL@FLOWMETERMB,BOOL,LOCALCFG,<NOT USED>,MODBUSLOCPARA,TARGETCFG,<NOT USED>,MODBUSTARPARA,LOCALADDR,<NOT USED>,MODBUSLOCADDR,__ADI_LOCALADDR,<NOT USED>,UINT
|
||||
<INPUT>,MBS_UNITS_MSG@FLOWMETERMB,MSG_MODBUS,IN,__TMPB__MSG_MODBUS__IN,BOOL,CANCEL,MBS_CANCEL@FLOWMETERMB,BOOL,LOCALCFG,<NOT USED>,MODBUSLOCPARA,TARGETCFG,<NOT USED>,MODBUSTARPARA,LOCALADDR,<NOT USED>,MODBUSLOCADDR,__ADI_LOCALADDR,<NOT USED>,UINT
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -1,22 +1,54 @@
|
||||
[BEGIN FB INPUTS]
|
||||
I1=micro820.micro820.flowmetermb/modbustimer.in,0x1845,BOOL
|
||||
I2=micro820.micro820.flowmetermb/modbustimer.pt,0x4BC,TIME
|
||||
I3=micro820.micro820.flowmetermb/mbs_flowtotalpos_msg.in,0x1846,BOOL
|
||||
I4=micro820.micro820.flowmetermb/mbs_flowtotalpos_msg.cancel,0x455,BOOL
|
||||
I5=micro820.micro820.flowmetermb/mbs_flowtotalpos_msg.localcfg,0xFFFFFFFF,MODBUSLOCPARA
|
||||
I6=micro820.micro820.flowmetermb/mbs_flowtotalpos_msg.targetcfg,0xFFFFFFFF,MODBUSTARPARA
|
||||
I7=micro820.micro820.flowmetermb/mbs_flowtotalpos_msg.localaddr,0xFFFFFFFF,MODBUSLOCADDR
|
||||
I8=micro820.micro820.flowmetermb/mbs_flowtotalpos_msg.__adi_localaddr,0xFFFFFFFF,UINT
|
||||
I9=micro820.micro820.flowmetermb/mbs_flowtotalneg_msg.in,0x1846,BOOL
|
||||
I10=micro820.micro820.flowmetermb/mbs_flowtotalneg_msg.cancel,0x455,BOOL
|
||||
I11=micro820.micro820.flowmetermb/mbs_flowtotalneg_msg.localcfg,0xFFFFFFFF,MODBUSLOCPARA
|
||||
I12=micro820.micro820.flowmetermb/mbs_flowtotalneg_msg.targetcfg,0xFFFFFFFF,MODBUSTARPARA
|
||||
I13=micro820.micro820.flowmetermb/mbs_flowtotalneg_msg.localaddr,0xFFFFFFFF,MODBUSLOCADDR
|
||||
I14=micro820.micro820.flowmetermb/mbs_flowtotalneg_msg.__adi_localaddr,0xFFFFFFFF,UINT
|
||||
I15=micro820.micro820.flowmetermb/mbs_flowgross_msg.in,0x1846,BOOL
|
||||
I16=micro820.micro820.flowmetermb/mbs_flowgross_msg.cancel,0x455,BOOL
|
||||
I17=micro820.micro820.flowmetermb/mbs_flowgross_msg.localcfg,0xFFFFFFFF,MODBUSLOCPARA
|
||||
I18=micro820.micro820.flowmetermb/mbs_flowgross_msg.targetcfg,0xFFFFFFFF,MODBUSTARPARA
|
||||
I19=micro820.micro820.flowmetermb/mbs_flowgross_msg.localaddr,0xFFFFFFFF,MODBUSLOCADDR
|
||||
I20=micro820.micro820.flowmetermb/mbs_flowgross_msg.__adi_localaddr,0xFFFFFFFF,UINT
|
||||
I1=micro820.micro820.flowmetermb/modbustimer.in,0x21D9,BOOL
|
||||
I2=micro820.micro820.flowmetermb/modbustimer.pt,0x4EC,TIME
|
||||
I3=micro820.micro820.flowmetermb/wait_to_reset_ton.in,0x45B,BOOL
|
||||
I4=micro820.micro820.flowmetermb/wait_to_reset_ton.pt,0x4F0,TIME
|
||||
I5=micro820.micro820.flowmetermb/mbs_flowrate_msg.in,0x21DA,BOOL
|
||||
I6=micro820.micro820.flowmetermb/mbs_flowrate_msg.cancel,0x459,BOOL
|
||||
I7=micro820.micro820.flowmetermb/mbs_flowrate_msg.localcfg,0xFFFFFFFF,MODBUSLOCPARA
|
||||
I8=micro820.micro820.flowmetermb/mbs_flowrate_msg.targetcfg,0xFFFFFFFF,MODBUSTARPARA
|
||||
I9=micro820.micro820.flowmetermb/mbs_flowrate_msg.localaddr,0xFFFFFFFF,MODBUSLOCADDR
|
||||
I10=micro820.micro820.flowmetermb/mbs_flowrate_msg.__adi_localaddr,0xFFFFFFFF,UINT
|
||||
I11=micro820.micro820.flowmetermb/mbs_flowtotalizera_msg.in,0x21DA,BOOL
|
||||
I12=micro820.micro820.flowmetermb/mbs_flowtotalizera_msg.cancel,0x459,BOOL
|
||||
I13=micro820.micro820.flowmetermb/mbs_flowtotalizera_msg.localcfg,0xFFFFFFFF,MODBUSLOCPARA
|
||||
I14=micro820.micro820.flowmetermb/mbs_flowtotalizera_msg.targetcfg,0xFFFFFFFF,MODBUSTARPARA
|
||||
I15=micro820.micro820.flowmetermb/mbs_flowtotalizera_msg.localaddr,0xFFFFFFFF,MODBUSLOCADDR
|
||||
I16=micro820.micro820.flowmetermb/mbs_flowtotalizera_msg.__adi_localaddr,0xFFFFFFFF,UINT
|
||||
I17=micro820.micro820.flowmetermb/mbs_flowtotalizerb_msg.in,0x21DA,BOOL
|
||||
I18=micro820.micro820.flowmetermb/mbs_flowtotalizerb_msg.cancel,0x459,BOOL
|
||||
I19=micro820.micro820.flowmetermb/mbs_flowtotalizerb_msg.localcfg,0xFFFFFFFF,MODBUSLOCPARA
|
||||
I20=micro820.micro820.flowmetermb/mbs_flowtotalizerb_msg.targetcfg,0xFFFFFFFF,MODBUSTARPARA
|
||||
I21=micro820.micro820.flowmetermb/mbs_flowtotalizerb_msg.localaddr,0xFFFFFFFF,MODBUSLOCADDR
|
||||
I22=micro820.micro820.flowmetermb/mbs_flowtotalizerb_msg.__adi_localaddr,0xFFFFFFFF,UINT
|
||||
I23=micro820.micro820.flowmetermb/mbs_flowtotalizerc_msg.in,0x21DA,BOOL
|
||||
I24=micro820.micro820.flowmetermb/mbs_flowtotalizerc_msg.cancel,0x459,BOOL
|
||||
I25=micro820.micro820.flowmetermb/mbs_flowtotalizerc_msg.localcfg,0xFFFFFFFF,MODBUSLOCPARA
|
||||
I26=micro820.micro820.flowmetermb/mbs_flowtotalizerc_msg.targetcfg,0xFFFFFFFF,MODBUSTARPARA
|
||||
I27=micro820.micro820.flowmetermb/mbs_flowtotalizerc_msg.localaddr,0xFFFFFFFF,MODBUSLOCADDR
|
||||
I28=micro820.micro820.flowmetermb/mbs_flowtotalizerc_msg.__adi_localaddr,0xFFFFFFFF,UINT
|
||||
I29=micro820.micro820.flowmetermb/mbs_status_msg.in,0x21DA,BOOL
|
||||
I30=micro820.micro820.flowmetermb/mbs_status_msg.cancel,0x459,BOOL
|
||||
I31=micro820.micro820.flowmetermb/mbs_status_msg.localcfg,0xFFFFFFFF,MODBUSLOCPARA
|
||||
I32=micro820.micro820.flowmetermb/mbs_status_msg.targetcfg,0xFFFFFFFF,MODBUSTARPARA
|
||||
I33=micro820.micro820.flowmetermb/mbs_status_msg.localaddr,0xFFFFFFFF,MODBUSLOCADDR
|
||||
I34=micro820.micro820.flowmetermb/mbs_status_msg.__adi_localaddr,0xFFFFFFFF,UINT
|
||||
I35=micro820.micro820.flowmetermb/mbs_resettotalizer_msg.in,0x45A,BOOL
|
||||
I36=micro820.micro820.flowmetermb/mbs_resettotalizer_msg.cancel,0x459,BOOL
|
||||
I37=micro820.micro820.flowmetermb/mbs_resettotalizer_msg.localcfg,0xFFFFFFFF,MODBUSLOCPARA
|
||||
I38=micro820.micro820.flowmetermb/mbs_resettotalizer_msg.targetcfg,0xFFFFFFFF,MODBUSTARPARA
|
||||
I39=micro820.micro820.flowmetermb/mbs_resettotalizer_msg.localaddr,0xFFFFFFFF,MODBUSLOCADDR
|
||||
I40=micro820.micro820.flowmetermb/mbs_resettotalizer_msg.__adi_localaddr,0xFFFFFFFF,UINT
|
||||
I41=micro820.micro820.flowmetermb/mbs_clearresettotalizer_msg.in,0x21DA,BOOL
|
||||
I42=micro820.micro820.flowmetermb/mbs_clearresettotalizer_msg.cancel,0x459,BOOL
|
||||
I43=micro820.micro820.flowmetermb/mbs_clearresettotalizer_msg.localcfg,0xFFFFFFFF,MODBUSLOCPARA
|
||||
I44=micro820.micro820.flowmetermb/mbs_clearresettotalizer_msg.targetcfg,0xFFFFFFFF,MODBUSTARPARA
|
||||
I45=micro820.micro820.flowmetermb/mbs_clearresettotalizer_msg.localaddr,0xFFFFFFFF,MODBUSLOCADDR
|
||||
I46=micro820.micro820.flowmetermb/mbs_clearresettotalizer_msg.__adi_localaddr,0xFFFFFFFF,UINT
|
||||
I47=micro820.micro820.flowmetermb/mbs_units_msg.in,0x21DA,BOOL
|
||||
I48=micro820.micro820.flowmetermb/mbs_units_msg.cancel,0x459,BOOL
|
||||
I49=micro820.micro820.flowmetermb/mbs_units_msg.localcfg,0xFFFFFFFF,MODBUSLOCPARA
|
||||
I50=micro820.micro820.flowmetermb/mbs_units_msg.targetcfg,0xFFFFFFFF,MODBUSTARPARA
|
||||
I51=micro820.micro820.flowmetermb/mbs_units_msg.localaddr,0xFFFFFFFF,MODBUSLOCADDR
|
||||
I52=micro820.micro820.flowmetermb/mbs_units_msg.__adi_localaddr,0xFFFFFFFF,UINT
|
||||
[END]
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,60 @@
|
||||
[__DEFIO_CPXDVC]
|
||||
Nb = 1
|
||||
NotMDF = 0, 1, AB_, OPTIMUS_, IO_Base
|
||||
MDF = -1
|
||||
RIdx = 0
|
||||
|
||||
|
||||
[__DEFIO_SPLDVC]
|
||||
Nb = 4
|
||||
NotMDF = 0, 0, 1, AB_, OPTIMUS_, digitOut_Base
|
||||
MDF = -1
|
||||
RIdx = 0, 0
|
||||
NotMDF = 0, 1, 1, AB_, OPTIMUS_, digitIn_Base
|
||||
MDF = -1
|
||||
RIdx = 0, 0
|
||||
NotMDF = 0, 2, 1, AB_, OPTIMUS_, analogIn_Base
|
||||
MDF = -1
|
||||
RIdx = 0, 0
|
||||
NotMDF = 0, 3, 1, AB_, OPTIMUS_, analogOut_Base
|
||||
MDF = -1
|
||||
RIdx = 0, 0
|
||||
|
||||
|
||||
[__DEFIO_CHAN]
|
||||
RIdx = 0, 0, 0
|
||||
Nb = 7
|
||||
MDF = 1\1, 1, 0, 0, -1, _IO_EM_DO_00
|
||||
MDF = 1\1, 1, 0, 1, -1, _IO_EM_DO_01
|
||||
MDF = 1\1, 1, 0, 2, -1, _IO_EM_DO_02
|
||||
MDF = 1\1, 1, 0, 3, -1, _IO_EM_DO_03
|
||||
MDF = 1\1, 1, 0, 4, -1, _IO_EM_DO_04
|
||||
MDF = 1\1, 1, 0, 5, -1, _IO_EM_DO_05
|
||||
MDF = 1\1, 1, 0, 6, -1, _IO_EM_DO_06
|
||||
RIdx = 0, 0, 1
|
||||
Nb = 12
|
||||
MDF = 1\1, 1, 0, 0, -1, _IO_EM_DI_00
|
||||
MDF = 1\1, 1, 0, 1, -1, _IO_EM_DI_01
|
||||
MDF = 1\1, 1, 0, 2, -1, _IO_EM_DI_02
|
||||
MDF = 1\1, 1, 0, 3, -1, _IO_EM_DI_03
|
||||
MDF = 1\1, 1, 0, 4, -1, _IO_EM_DI_04
|
||||
MDF = 1\1, 1, 0, 5, -1, _IO_EM_DI_05
|
||||
MDF = 1\1, 1, 0, 6, -1, _IO_EM_DI_06
|
||||
MDF = 1\1, 1, 0, 7, -1, _IO_EM_DI_07
|
||||
MDF = 1\1, 1, 0, 8, -1, _IO_EM_DI_08
|
||||
MDF = 1\1, 1, 0, 9, -1, _IO_EM_DI_09
|
||||
MDF = 1\1, 1, 0, 10, -1, _IO_EM_DI_10
|
||||
MDF = 1\1, 1, 0, 11, -1, _IO_EM_DI_11
|
||||
RIdx = 0, 0, 2
|
||||
Nb = 4
|
||||
MDF = 1\1, 1, 0, 0, -1, _IO_EM_AI_00
|
||||
MDF = 1\1, 1, 0, 1, -1, _IO_EM_AI_01
|
||||
MDF = 1\1, 1, 0, 2, -1, _IO_EM_AI_02
|
||||
MDF = 1\1, 1, 0, 3, -1, _IO_EM_AI_03
|
||||
RIdx = 0, 0, 3
|
||||
Nb = 1
|
||||
MDF = 1\1, 1, 0, 0, -1, _IO_EM_AO_00
|
||||
|
||||
|
||||
[__READONLY_VALUES]
|
||||
Nb = 0
|
||||
@@ -0,0 +1,9 @@
|
||||
__TMPB1 := WATCHDOG_INT = WATCHDOG_INT_PREV
|
||||
__TMPB1 := _NOT __TMPB1
|
||||
_IF _NOT __TMPB1 _GOTO __LAB1
|
||||
__TMPINT1 := WATCHDOG_INT - __CINT00000001
|
||||
WATCHDOG_INT := __TMPINT1
|
||||
WATCHDOG_INT_PREV := WATCHDOG_INT
|
||||
_GOTO __LAB2
|
||||
__LAB1 :
|
||||
__LAB2 :
|
||||
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Root Version="6">
|
||||
<LanguageContainerStyle CommentTextColor="Green" CommentFont="Courier New, 10pt" PonctuationTextColor="Black" PonctuationFont="Courier New, 10pt" IdentifierTextColor="Black" IdentifierFont="Courier New, 10pt" OperatorTextColor="Black" OperatorFont="Courier New, 10pt" ReservedWordTextColor="Fuchsia" ReservedWordFont="Courier New, 10pt" PouTextColor="BlueViolet" PouFont="Courier New, 10pt" NumberTextColor="Firebrick" NumberFont="Courier New, 10pt" StringTextColor="Gray" StringFont="Courier New, 10pt" EditorTextAreaBackgroundColor="White" EditorFont="Courier New, 10pt" Index="0" />
|
||||
</Root>
|
||||
@@ -0,0 +1,6 @@
|
||||
PROGRAM Watchdog
|
||||
IF NOT (watchdog_INT = watchdog_INT_prev) THEN
|
||||
watchdog_INT := watchdog_INT - 1;
|
||||
watchdog_INT_prev := watchdog_INT;
|
||||
END_IF;
|
||||
END_PROGRAM
|
||||
Binary file not shown.
@@ -1,2 +1,2 @@
|
||||
[RMDManager]
|
||||
TASK=BUILD
|
||||
TASK=REBUILD
|
||||
|
||||
@@ -1,43 +0,0 @@
|
||||
Controller.Micro820.Micro820.skid_Latitude
|
||||
Controller.Micro820.Micro820.skid_Longitude
|
||||
Controller.Micro820.Micro820.FlowMeterMb.mbs_FlowTotalPos_MSG
|
||||
Controller.Micro820.Micro820.FlowMeterMb.mbs_Enable
|
||||
Controller.Micro820.Micro820.FlowMeterMb.mbs_Cancel
|
||||
Controller.Micro820.Micro820.FlowMeterMb.mbs_FlowTotalPos_LocalCfg
|
||||
Controller.Micro820.Micro820.FlowMeterMb.mbs_FlowTotalPos_TargetCfg
|
||||
Controller.Micro820.Micro820.FlowMeterMb.mbs_FlowTotalPos_Data
|
||||
Controller.Micro820.Micro820.FlowMeterMb.mbs_FlowTotalNeg_MSG
|
||||
Controller.Micro820.Micro820.FlowMeterMb.mbs_FlowTotalNeg_LocalCfg
|
||||
Controller.Micro820.Micro820.FlowMeterMb.mbs_FlowTotalNeg_TargetCfg
|
||||
Controller.Micro820.Micro820.FlowMeterMb.mbs_FlowTotalNeg_Data
|
||||
Controller.Micro820.Micro820.FlowMeterMb.mbs_FlowGross_LocalCfg
|
||||
Controller.Micro820.Micro820.FlowMeterMb.mbs_FlowGross_TargetCfg
|
||||
Controller.Micro820.Micro820.FlowMeterMb.mbs_FlowGross_Data
|
||||
Controller.Micro820.Micro820.FlowMeterMb.mbs_FlowGross_MSG
|
||||
Controller.Micro820.Micro820.FlowMeterMb.READ_CMD
|
||||
Controller.Micro820.Micro820.FlowMeterMb.mbs_TriggerType
|
||||
Controller.Micro820.Micro820.FlowMeterMb.ModbusTimer
|
||||
Controller.Micro820.Micro820.WordsToReal.WordsToReal
|
||||
Controller.Micro820.Micro820.WordsToReal.Word1
|
||||
Controller.Micro820.Micro820.WordsToReal.Word2
|
||||
Controller.Micro820.Micro820.WordsToReal.Output_sign
|
||||
Controller.Micro820.Micro820.WordsToReal.Output_expt
|
||||
Controller.Micro820.Micro820.WordsToReal.Output_mantissa
|
||||
Controller.Micro820.Micro820.WordsToReal.temp_exponent
|
||||
Controller.Micro820.Micro820.WordsToReal.exponent
|
||||
Controller.Micro820.Micro820.WordsToReal.mantissa
|
||||
Controller.Micro820.Micro820.WordsToReal.index
|
||||
Controller.Micro820.Micro820.WordsToReal.index_exp
|
||||
Controller.Micro820.Micro820.WordsToReal.index_add
|
||||
Controller.Micro820.Micro820.WordsToReal.mantissa_result
|
||||
Controller.Micro820.Micro820.WordsToReal.exponent_real
|
||||
Controller.Micro820.Micro820.WordsToReal.Input1
|
||||
Controller.Micro820.Micro820.WordsToReal.Input2
|
||||
Controller.Micro820.Micro820.val_FlowTotalPos
|
||||
Controller.Micro820.Micro820.val_FlowTotalNeg
|
||||
Controller.Micro820.Micro820.val_FlowGross
|
||||
Controller.Micro820.Micro820.ModbusScanRate
|
||||
Controller.Micro820.Micro820.cfg_Flowmeter_ModbusNode
|
||||
Controller.Micro820.Micro820.cfg_FlowTotalPos_Register
|
||||
Controller.Micro820.Micro820.cfg_FlowTotalNeg_Register
|
||||
Controller.Micro820.Micro820.cfg_FlowGross_Register
|
||||
|
||||
Binary file not shown.
BIN
Pioneer Ghost Meters/Controller/Controller_Backup.zip
Normal file
BIN
Pioneer Ghost Meters/Controller/Controller_Backup.zip
Normal file
Binary file not shown.
@@ -1,7 +1,11 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<ProjectElements>
|
||||
<AcfElementGuid Guid="1f8f27de-e718-45df-9429-35b1463a9e4e" />
|
||||
<AcfElementGuid Guid="23b6cc54-7135-422a-8743-f460b52a26b3" />
|
||||
<AcfElementGuid Guid="3e90d2bb-e548-4dc3-a89b-4dede9914c73" />
|
||||
<AcfElementGuid Guid="4abfa14a-9a16-4913-a742-278fd478b028" />
|
||||
<AcfElementGuid Guid="6baaf1eb-2019-4bda-b9e7-8119676bf9bd" />
|
||||
<AcfElementGuid Guid="985f9591-f3ba-4dcb-837f-f4a3058ef166" />
|
||||
<AcfElementGuid Guid="b347dfd1-4943-49d5-9124-df6855433dbd" />
|
||||
<AcfElementGuid Guid="d9cd1c27-0f51-4f96-b960-a629f4aa554a" />
|
||||
</ProjectElements>
|
||||
@@ -2,4 +2,5 @@
|
||||
<ProjectElements>
|
||||
<AcfElementGuid Guid="4abfa14a-9a16-4913-a742-278fd478b028" />
|
||||
<AcfElementGuid Guid="b347dfd1-4943-49d5-9124-df6855433dbd" />
|
||||
<AcfElementGuid Guid="d9cd1c27-0f51-4f96-b960-a629f4aa554a" />
|
||||
</ProjectElements>
|
||||
@@ -3,7 +3,16 @@
|
||||
<AcfElementGuid Guid="1f8f27de-e718-45df-9429-35b1463a9e4e">
|
||||
<File>WordsToReal.AcfMlge</File>
|
||||
</AcfElementGuid>
|
||||
<AcfElementGuid Guid="23b6cc54-7135-422a-8743-f460b52a26b3">
|
||||
<File>FlowTotalUnits.AcfMlge</File>
|
||||
</AcfElementGuid>
|
||||
<AcfElementGuid Guid="6baaf1eb-2019-4bda-b9e7-8119676bf9bd">
|
||||
<File>FlowRateUnits.AcfMlge</File>
|
||||
</AcfElementGuid>
|
||||
<AcfElementGuid Guid="b347dfd1-4943-49d5-9124-df6855433dbd">
|
||||
<File>FlowMeterMb.AcfMlge</File>
|
||||
</AcfElementGuid>
|
||||
<AcfElementGuid Guid="d9cd1c27-0f51-4f96-b960-a629f4aa554a">
|
||||
<File>Watchdog.AcfMlge</File>
|
||||
</AcfElementGuid>
|
||||
</ProjectElements>
|
||||
1
Pioneer Ghost Meters/PVc Project/Library.pvc
Normal file
1
Pioneer Ghost Meters/PVc Project/Library.pvc
Normal file
@@ -0,0 +1 @@
|
||||
PV800_PioneerFracMeter;2711R-T4T;\\Mac\Home\GitHub\Henry-Pump\Pioneer-GhostMeters\Pioneer Ghost Meters\PVc Project
|
||||
BIN
Pioneer Ghost Meters/PVc Project/PV800_PioneerFracMeter.cha
Normal file
BIN
Pioneer Ghost Meters/PVc Project/PV800_PioneerFracMeter.cha
Normal file
Binary file not shown.
16
Pioneer Ghost Meters/PVc Project/PVc Project.acfproj
Normal file
16
Pioneer Ghost Meters/PVc Project/PVc Project.acfproj
Normal file
@@ -0,0 +1,16 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<PropertyGroup>
|
||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||
<SchemaVersion>2.0</SchemaVersion>
|
||||
<ProjectGuid>{99999999-9999-9999-9999-999999999999}</ProjectGuid>
|
||||
<OutputType>Exe</OutputType>
|
||||
<RootNamespace>MyRootNamespace</RootNamespace>
|
||||
<AssemblyName>MyAssemblyName</AssemblyName>
|
||||
<EnableUnmanagedDebugging>false</EnableUnmanagedDebugging>
|
||||
<CAMProjectFile>Library.pvc</CAMProjectFile>
|
||||
<UniqueProjectId>{99999999-9999-9999-9999-999999999999}</UniqueProjectId>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)' == 'Online' " />
|
||||
<Import Project="$(DevEnvDir)\PackagesToLoad\Targets\ISaGRAF.ISaGRAF5.targets" />
|
||||
</Project>
|
||||
Binary file not shown.
Binary file not shown.
1
pioneerfracskid/html-templates/Alerts.html
Normal file
1
pioneerfracskid/html-templates/Alerts.html
Normal file
@@ -0,0 +1 @@
|
||||
<module>Alerts</module>
|
||||
42
pioneerfracskid/html-templates/Device.html
Normal file
42
pioneerfracskid/html-templates/Device.html
Normal file
@@ -0,0 +1,42 @@
|
||||
<div class="row row-flex box-me">
|
||||
<div class="col-md-6 text-center">
|
||||
<h2 class="uppercase">Public IP Address</h2>
|
||||
<p><%= channels["pioneerfracskid.public_ip_address"].value %><p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<style>
|
||||
.uppercase {
|
||||
text-transform: uppercase;
|
||||
font-size: 14px;
|
||||
color: #666;
|
||||
font-weight: 400;
|
||||
letter-spacing: 1px;
|
||||
z-index: 100;
|
||||
}
|
||||
|
||||
.box-me {
|
||||
position: relative;
|
||||
padding: 0.5em;
|
||||
padding-bottom: 1.5em;
|
||||
border: 1px solid #eee;
|
||||
/*margin: 1em 0;*/
|
||||
}
|
||||
.row-flex {
|
||||
display: -webkit-box;
|
||||
display: -webkit-flex;
|
||||
display: -ms-flexbox;
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
}
|
||||
|
||||
.row-flex > [class*='col-'] {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
}
|
||||
|
||||
p {
|
||||
font-size: 1.25em;
|
||||
}
|
||||
|
||||
</style>
|
||||
6
pioneerfracskid/html-templates/NodeDetailHeader.html
Normal file
6
pioneerfracskid/html-templates/NodeDetailHeader.html
Normal file
@@ -0,0 +1,6 @@
|
||||
<div class='col-xs-1'>
|
||||
<div class="<%= nodecolors.statuscolor %> nodecolor"></div>
|
||||
</div>
|
||||
<div class='col-xs-6'>
|
||||
<h3><%= node.vanityname %></h3>
|
||||
</div>
|
||||
31
pioneerfracskid/html-templates/Nodelist.html
Normal file
31
pioneerfracskid/html-templates/Nodelist.html
Normal file
@@ -0,0 +1,31 @@
|
||||
<style>
|
||||
.header h4 {
|
||||
position: relative;
|
||||
top: 0.9em;
|
||||
}
|
||||
.header h2 {
|
||||
text-transform: uppercase;
|
||||
font-size: 14px;
|
||||
color: #aaa;
|
||||
margin: 0.75em 0;
|
||||
}
|
||||
.header p {
|
||||
font-size: 24px;
|
||||
color: black;
|
||||
font-weight: 600;
|
||||
}
|
||||
</style>
|
||||
|
||||
<div class="row header">
|
||||
<div class="col-xs-1">
|
||||
<div class="<%= nodecolors.statuscolor %> nodecolor"></div>
|
||||
</div>
|
||||
|
||||
<div class="col-xs-2">
|
||||
<img src="<%= nodeimgurl %>" />
|
||||
</div>
|
||||
|
||||
<div class="col-xs-4">
|
||||
<h4><%= node.vanityname %></h4>
|
||||
</div>
|
||||
</div>
|
||||
121
pioneerfracskid/html-templates/Overview.html
Normal file
121
pioneerfracskid/html-templates/Overview.html
Normal file
@@ -0,0 +1,121 @@
|
||||
|
||||
<div class="row row-flex box-me">
|
||||
<div class="col-xs-12 text-center">
|
||||
<h1>HEADER 1</h1>
|
||||
</div>
|
||||
<div class="col-xs-4 text-center">
|
||||
<h2>CHANNEL 1</h2>
|
||||
<div class="gauge-box">
|
||||
<div data-labelheight="10"
|
||||
style="height: 170px; background: transparent; margin: 0 auto;"
|
||||
id="gauge-channel_1"
|
||||
data-chart="solidgauge"
|
||||
data-nodename="pioneerfracskid.channel_1"
|
||||
data-units="UNITS"
|
||||
data-min="0"
|
||||
data-max="100"
|
||||
data-decimalplaces="2"
|
||||
data-colors="0.1:#DF5353,0.5:#DDDF0D,0.9:#55BF3B"
|
||||
data-valuefontsize="18px">
|
||||
</div>
|
||||
<div class- "timestamp-box">
|
||||
<a href="#" data-channelId="<%= channels['pioneerfracskid.channel_1'].channelId %>" class="data-table" title="Download Channel History">
|
||||
<i class="fa fa-download"></i>
|
||||
</a>
|
||||
</div>
|
||||
<span data-timeupdate="channel_1">
|
||||
<%= channels["pioneerfracskid.channel_1"].timestamp %>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<style>
|
||||
|
||||
.box-me {
|
||||
position: relative;
|
||||
padding: 0.5em;
|
||||
padding-bottom: 1.5em;
|
||||
border: 1px solid #eee;
|
||||
/*margin: 1em 0;*/
|
||||
}
|
||||
|
||||
.box-me .gauge-box {
|
||||
margin-top: -0.25em;
|
||||
}
|
||||
|
||||
.pad15 {
|
||||
margin: 15px 15px;
|
||||
}
|
||||
|
||||
.box-me h2 {
|
||||
text-transform: uppercase;
|
||||
font-size: 14px;
|
||||
color: #666;
|
||||
font-weight: 400;
|
||||
letter-spacing: 1px;
|
||||
z-index: 100;
|
||||
}
|
||||
|
||||
.dynamic-chart-form {
|
||||
background-color: whiteSmoke;
|
||||
padding: 1em 0.5em;
|
||||
margin-top: 1em;
|
||||
}
|
||||
|
||||
.row-flex {
|
||||
display: -webkit-box;
|
||||
display: -webkit-flex;
|
||||
display: -ms-flexbox;
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
}
|
||||
|
||||
.row-flex > [class*='col-'] {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
}
|
||||
|
||||
#systemStatusTimelineContainer h2 {
|
||||
text-transform: uppercase;
|
||||
font-size: 14px;
|
||||
color: #666;
|
||||
font-weight: 400;
|
||||
letter-spacing: 1px;
|
||||
z-index: 100;
|
||||
}
|
||||
|
||||
.slice.node-detail hr {
|
||||
border-color: #ccc;
|
||||
}
|
||||
.slice.node-detail #alarms li {
|
||||
margin-bottom: 1em;
|
||||
padding: 0.5em;
|
||||
}
|
||||
.slice.node-detail #alarms li:nth-child(even){
|
||||
background-color: whiteSmoke;
|
||||
}
|
||||
.slice.node-detail #alarms li span {
|
||||
margin-left: 1em;
|
||||
color: #aaa;
|
||||
}
|
||||
</style>
|
||||
|
||||
<script>
|
||||
|
||||
$('.val_box').each(function(topLevel){
|
||||
$(this).change(function(){
|
||||
var id = "#" + $(this).closest(".entry-top-level").attr('id');
|
||||
if (id !== "#undefined"){
|
||||
var val = $(id).find('.val_box').val();
|
||||
var tag = $(id).find('.setstatic').attr('data-staticsend', val);
|
||||
console.log($(id).find('.setstatic').attr('data-staticsend'));
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
</script>
|
||||
15
pioneerfracskid/html-templates/Sidebar.html
Normal file
15
pioneerfracskid/html-templates/Sidebar.html
Normal file
@@ -0,0 +1,15 @@
|
||||
<a href="#"
|
||||
data-channelId="<%= channels["pioneerfracskid.log"].channelId %>"
|
||||
class="data-table btn-block btn btn-theme animated"
|
||||
title="Device Log"><i style='margin-left: 0.5em; cursor: pointer' class="fa fa-th-list icon-theme"></i> Device Log</a>
|
||||
|
||||
<a href="#"
|
||||
data-refreshpause="1"
|
||||
data-staticsend="1"
|
||||
data-channelId="<%= channels["pioneerfracskid.sync"].channelId %>"
|
||||
data-techname="<%=channels["pioneerfracskid.sync"].techName %>"
|
||||
data-name="<%= channels["pioneerfracskid.sync"].name%>"
|
||||
data-nodechannelcurrentId="<%= channels["pioneerfracskid.sync"].nodechannelcurrentId %>"
|
||||
id="<%= channels["pioneerfracskid.sync"].channelId %>"
|
||||
class="btn btn-large btn-block btn-theme animated setstatic mqtt">
|
||||
<i class="icon-repeat icon-white mqtt" ></i>Sync All Data</a>
|
||||
37
pioneerfracskid/html-templates/Trends.html
Normal file
37
pioneerfracskid/html-templates/Trends.html
Normal file
@@ -0,0 +1,37 @@
|
||||
<div class='col-xs-12' style="padding-top: 1em; margin-bottom: 1em;">
|
||||
<div class="input-daterange input-group" id="datepicker">
|
||||
<input data-chartid="dynamicChart" id="fromDate" data-daysofhistory="7" type="text" class="form-control" name="start">
|
||||
<span class="input-group-addon">to</span>
|
||||
<input class="form-control" data-chartid="dynamicChart" id="toDate" type="text" name="end">
|
||||
<span class='input-group-btn'>
|
||||
<a href="#!" data-chartid="dynamicChart" data-otherchartids="statusTimeline" class="btn chart-update btn-theme">Run</a>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
<hr>
|
||||
<div class='clearfix col-xs-12'
|
||||
style='height: 450px'
|
||||
id="dynamicChart"
|
||||
data-chart="dynamicchart"
|
||||
data-daysofhistory="7"
|
||||
data-chartlabel="Data"
|
||||
data-ylabel=""
|
||||
data-xlabel="Date"
|
||||
data-units=""
|
||||
data-channelnames="pioneerfracskid.channel_1,">
|
||||
</div>
|
||||
<style>
|
||||
.dynamic-chart-form {
|
||||
background-color: whiteSmoke;
|
||||
padding: 1em 0.5em;
|
||||
margin-top: 1em;
|
||||
}
|
||||
#systemStatusTimelineContainer h2 {
|
||||
text-transform: uppercase;
|
||||
font-size: 14px;
|
||||
color: #666;
|
||||
font-weight: 400;
|
||||
letter-spacing: 1px;
|
||||
z-index: 100;
|
||||
}
|
||||
</style>
|
||||
285
pioneerfracskid/python-driver/Channel.py
Normal file
285
pioneerfracskid/python-driver/Channel.py
Normal file
@@ -0,0 +1,285 @@
|
||||
"""Define Meshify channel class."""
|
||||
from pycomm.ab_comm.clx import Driver as ClxDriver
|
||||
from pycomm.cip.cip_base import CommError, DataError
|
||||
import time
|
||||
|
||||
|
||||
def binarray(intval):
|
||||
"""Split an integer into its bits."""
|
||||
bin_string = '{0:08b}'.format(intval)
|
||||
bin_arr = [i for i in bin_string]
|
||||
bin_arr.reverse()
|
||||
return bin_arr
|
||||
|
||||
|
||||
def read_tag(addr, tag, plc_type="CLX"):
|
||||
"""Read a tag from the PLC."""
|
||||
direct = plc_type == "Micro800"
|
||||
c = ClxDriver()
|
||||
try:
|
||||
if c.open(addr, direct_connection=direct):
|
||||
try:
|
||||
v = c.read_tag(tag)
|
||||
return v
|
||||
except DataError as e:
|
||||
c.close()
|
||||
print("Data Error during readTag({}, {}): {}".format(addr, tag, e))
|
||||
except CommError:
|
||||
# err = c.get_status()
|
||||
c.close()
|
||||
print("Could not connect during readTag({}, {})".format(addr, tag))
|
||||
# print err
|
||||
except AttributeError as e:
|
||||
c.close()
|
||||
print("AttributeError during readTag({}, {}): \n{}".format(addr, tag, e))
|
||||
c.close()
|
||||
return False
|
||||
|
||||
|
||||
def read_array(addr, tag, start, end, plc_type="CLX"):
|
||||
"""Read an array from the PLC."""
|
||||
direct = plc_type == "Micro800"
|
||||
c = ClxDriver()
|
||||
if c.open(addr, direct_connection=direct):
|
||||
arr_vals = []
|
||||
try:
|
||||
for i in range(start, end):
|
||||
tag_w_index = tag + "[{}]".format(i)
|
||||
v = c.read_tag(tag_w_index)
|
||||
# print('{} - {}'.format(tag_w_index, v))
|
||||
arr_vals.append(round(v[0], 4))
|
||||
# print(v)
|
||||
if len(arr_vals) > 0:
|
||||
return arr_vals
|
||||
else:
|
||||
print("No length for {}".format(addr))
|
||||
return False
|
||||
except Exception:
|
||||
print("Error during readArray({}, {}, {}, {})".format(addr, tag, start, end))
|
||||
err = c.get_status()
|
||||
c.close()
|
||||
print err
|
||||
pass
|
||||
c.close()
|
||||
|
||||
|
||||
def write_tag(addr, tag, val, plc_type="CLX"):
|
||||
"""Write a tag value to the PLC."""
|
||||
direct = plc_type == "Micro800"
|
||||
c = ClxDriver()
|
||||
if c.open(addr, direct_connection=direct):
|
||||
try:
|
||||
cv = c.read_tag(tag)
|
||||
wt = c.write_tag(tag, val, cv[1])
|
||||
return wt
|
||||
except Exception:
|
||||
print("Error during writeTag({}, {}, {})".format(addr, tag, val))
|
||||
err = c.get_status()
|
||||
c.close()
|
||||
print err
|
||||
c.close()
|
||||
|
||||
|
||||
class Channel(object):
|
||||
"""Holds the configuration for a Meshify channel."""
|
||||
|
||||
def __init__(self, mesh_name, data_type, chg_threshold, guarantee_sec, map_=False, write_enabled=False):
|
||||
"""Initialize the channel."""
|
||||
self.mesh_name = mesh_name
|
||||
self.data_type = data_type
|
||||
self.last_value = None
|
||||
self.value = None
|
||||
self.last_send_time = 0
|
||||
self.chg_threshold = chg_threshold
|
||||
self.guarantee_sec = guarantee_sec
|
||||
self.map_ = map_
|
||||
self.write_enabled = write_enabled
|
||||
|
||||
def __str__(self):
|
||||
"""Create a string for the channel."""
|
||||
return "{}\nvalue: {}, last_send_time: {}".format(self.mesh_name, self.value, self.last_send_time)
|
||||
|
||||
def check(self, new_value, force_send=False):
|
||||
"""Check to see if the new_value needs to be stored."""
|
||||
send_needed = False
|
||||
send_reason = ""
|
||||
if self.data_type == 'BOOL' or self.data_type == 'STRING':
|
||||
if self.last_send_time == 0:
|
||||
send_needed = True
|
||||
send_reason = "no send time"
|
||||
elif self.value is None:
|
||||
send_needed = True
|
||||
send_reason = "no value"
|
||||
elif not (self.value == new_value):
|
||||
if self.map_:
|
||||
if not self.value == self.map_[new_value]:
|
||||
send_needed = True
|
||||
send_reason = "value change"
|
||||
else:
|
||||
send_needed = True
|
||||
send_reason = "value change"
|
||||
elif (time.time() - self.last_send_time) > self.guarantee_sec:
|
||||
send_needed = True
|
||||
send_reason = "guarantee sec"
|
||||
elif force_send:
|
||||
send_needed = True
|
||||
send_reason = "forced"
|
||||
else:
|
||||
if self.last_send_time == 0:
|
||||
send_needed = True
|
||||
send_reason = "no send time"
|
||||
elif self.value is None:
|
||||
send_needed = True
|
||||
send_reason = "no value"
|
||||
elif abs(self.value - new_value) > self.chg_threshold:
|
||||
send_needed = True
|
||||
send_reason = "change threshold"
|
||||
elif (time.time() - self.last_send_time) > self.guarantee_sec:
|
||||
send_needed = True
|
||||
send_reason = "guarantee sec"
|
||||
elif force_send:
|
||||
send_needed = True
|
||||
send_reason = "forced"
|
||||
if send_needed:
|
||||
self.last_value = self.value
|
||||
if self.map_:
|
||||
try:
|
||||
self.value = self.map_[new_value]
|
||||
except KeyError:
|
||||
print("Cannot find a map value for {} in {} for {}".format(new_value, self.map_, self.mesh_name))
|
||||
self.value = new_value
|
||||
else:
|
||||
self.value = new_value
|
||||
self.last_send_time = time.time()
|
||||
print("Sending {} for {} - {}".format(self.value, self.mesh_name, send_reason))
|
||||
return send_needed
|
||||
|
||||
def read(self):
|
||||
"""Read the value."""
|
||||
pass
|
||||
|
||||
|
||||
def identity(sent):
|
||||
"""Return exactly what was sent to it."""
|
||||
return sent
|
||||
|
||||
|
||||
class ModbusChannel(Channel):
|
||||
"""Modbus channel object."""
|
||||
|
||||
def __init__(self, mesh_name, register_number, data_type, chg_threshold, guarantee_sec, channel_size=1, map_=False, write_enabled=False, transformFn=identity):
|
||||
"""Initialize the channel."""
|
||||
super(ModbusChannel, self).__init__(mesh_name, data_type, chg_threshold, guarantee_sec, map_, write_enabled)
|
||||
self.mesh_name = mesh_name
|
||||
self.register_number = register_number
|
||||
self.channel_size = channel_size
|
||||
self.data_type = data_type
|
||||
self.last_value = None
|
||||
self.value = None
|
||||
self.last_send_time = 0
|
||||
self.chg_threshold = chg_threshold
|
||||
self.guarantee_sec = guarantee_sec
|
||||
self.map_ = map_
|
||||
self.write_enabled = write_enabled
|
||||
self.transformFn = transformFn
|
||||
|
||||
def read(self, mbsvalue):
|
||||
"""Return the transformed read value."""
|
||||
return self.transformFn(mbsvalue)
|
||||
|
||||
|
||||
class PLCChannel(Channel):
|
||||
"""PLC Channel Object."""
|
||||
|
||||
def __init__(self, ip, mesh_name, plc_tag, data_type, chg_threshold, guarantee_sec, map_=False, write_enabled=False):
|
||||
"""Initialize the channel."""
|
||||
super(PLCChannel, self).__init__(mesh_name, data_type, chg_threshold, guarantee_sec, map_, write_enabled)
|
||||
self.plc_ip = ip
|
||||
self.mesh_name = mesh_name
|
||||
self.plc_tag = plc_tag
|
||||
self.data_type = data_type
|
||||
self.last_value = None
|
||||
self.value = None
|
||||
self.last_send_time = 0
|
||||
self.chg_threshold = chg_threshold
|
||||
self.guarantee_sec = guarantee_sec
|
||||
self.map_ = map_
|
||||
self.write_enabled = write_enabled
|
||||
|
||||
def read(self):
|
||||
"""Read the value."""
|
||||
plc_value = None
|
||||
if self.plc_tag and self.plc_ip:
|
||||
read_value = read_tag(self.plc_ip, self.plc_tag)
|
||||
if read_value:
|
||||
plc_value = read_value[0]
|
||||
|
||||
return plc_value
|
||||
|
||||
|
||||
class BoolArrayChannels(Channel):
|
||||
"""Hold the configuration for a set of boolean array channels."""
|
||||
|
||||
def __init__(self, ip, mesh_name, plc_tag, data_type, chg_threshold, guarantee_sec, map_=False, write_enabled=False):
|
||||
"""Initialize the channel."""
|
||||
self.plc_ip = ip
|
||||
self.mesh_name = mesh_name
|
||||
self.plc_tag = plc_tag
|
||||
self.data_type = data_type
|
||||
self.last_value = None
|
||||
self.value = None
|
||||
self.last_send_time = 0
|
||||
self.chg_threshold = chg_threshold
|
||||
self.guarantee_sec = guarantee_sec
|
||||
self.map_ = map_
|
||||
self.write_enabled = write_enabled
|
||||
|
||||
def compare_values(self, new_val_dict):
|
||||
"""Compare new values to old values to see if the values need storing."""
|
||||
send = False
|
||||
for idx in new_val_dict:
|
||||
try:
|
||||
if new_val_dict[idx] != self.last_value[idx]:
|
||||
send = True
|
||||
except KeyError:
|
||||
print("Key Error in self.compare_values for index {}".format(idx))
|
||||
send = True
|
||||
return send
|
||||
|
||||
def read(self, force_send=False):
|
||||
"""Read the value and check to see if needs to be stored."""
|
||||
send_needed = False
|
||||
send_reason = ""
|
||||
if self.plc_tag:
|
||||
v = read_tag(self.plc_ip, self.plc_tag)
|
||||
if v:
|
||||
bool_arr = binarray(v[0])
|
||||
new_val = {}
|
||||
for idx in self.map_:
|
||||
try:
|
||||
new_val[self.map_[idx]] = bool_arr[idx]
|
||||
except KeyError:
|
||||
print("Not able to get value for index {}".format(idx))
|
||||
|
||||
if self.last_send_time == 0:
|
||||
send_needed = True
|
||||
send_reason = "no send time"
|
||||
elif self.value is None:
|
||||
send_needed = True
|
||||
send_reason = "no value"
|
||||
elif self.compare_values(new_val):
|
||||
send_needed = True
|
||||
send_reason = "value change"
|
||||
elif (time.time() - self.last_send_time) > self.guarantee_sec:
|
||||
send_needed = True
|
||||
send_reason = "guarantee sec"
|
||||
elif force_send:
|
||||
send_needed = True
|
||||
send_reason = "forced"
|
||||
|
||||
if send_needed:
|
||||
self.value = new_val
|
||||
self.last_value = self.value
|
||||
self.last_send_time = time.time()
|
||||
print("Sending {} for {} - {}".format(self.value, self.mesh_name, send_reason))
|
||||
return send_needed
|
||||
BIN
pioneerfracskid/python-driver/Channel.pyc
Normal file
BIN
pioneerfracskid/python-driver/Channel.pyc
Normal file
Binary file not shown.
12
pioneerfracskid/python-driver/config.txt
Normal file
12
pioneerfracskid/python-driver/config.txt
Normal file
@@ -0,0 +1,12 @@
|
||||
{
|
||||
"files": {
|
||||
"file3": "persistence.py",
|
||||
"file2": "utilities.py",
|
||||
"file1": "fracskid.py",
|
||||
"file4": "Channel.py"
|
||||
},
|
||||
"deviceName": "fracskid",
|
||||
"driverId": "0200",
|
||||
"releaseVersion": "1",
|
||||
"driverFileName": "fracskid.py"
|
||||
}
|
||||
12
pioneerfracskid/python-driver/driverConfig.json
Normal file
12
pioneerfracskid/python-driver/driverConfig.json
Normal file
@@ -0,0 +1,12 @@
|
||||
{
|
||||
"name": "fracskid",
|
||||
"driverFilename": "fracskid.py",
|
||||
"driverId": "0000",
|
||||
"additionalDriverFiles": [
|
||||
"utilities.py",
|
||||
"persistence.py",
|
||||
"Channel.py"
|
||||
],
|
||||
"version": 1,
|
||||
"s3BucketName": "fracskid"
|
||||
}
|
||||
142
pioneerfracskid/python-driver/fracskid.py
Normal file
142
pioneerfracskid/python-driver/fracskid.py
Normal file
@@ -0,0 +1,142 @@
|
||||
"""Driver for fracskid"""
|
||||
|
||||
import threading
|
||||
import sys
|
||||
from device_base import deviceBase
|
||||
from Channel import Channel, read_tag, write_tag
|
||||
import persistence
|
||||
from random import randint
|
||||
from utilities import get_public_ip_address
|
||||
import json
|
||||
import time
|
||||
import logging
|
||||
|
||||
|
||||
# LOGGING SETUP
|
||||
from logging.handlers import RotatingFileHandler
|
||||
|
||||
_ = None
|
||||
|
||||
|
||||
log_formatter = logging.Formatter('%(asctime)s %(levelname)s %(funcName)s(%(lineno)d) %(message)s')
|
||||
logFile = './fracskid.log'
|
||||
my_handler = RotatingFileHandler(logFile, mode='a', maxBytes=500*1024, backupCount=2, encoding=None, delay=0)
|
||||
my_handler.setFormatter(log_formatter)
|
||||
my_handler.setLevel(logging.INFO)
|
||||
logger = logging.getLogger('fracskid')
|
||||
logger.setLevel(logging.INFO)
|
||||
logger.addHandler(my_handler)
|
||||
|
||||
console_out = logging.StreamHandler(sys.stdout)
|
||||
console_out.setFormatter(log_formatter)
|
||||
logger.addHandler(console_out)
|
||||
|
||||
logger.info("fracskid startup")
|
||||
|
||||
# GLOBAL VARIABLES
|
||||
WATCHDOG_SEND_PERIOD = 3600 # Seconds, the longest amount of time before sending the watchdog status
|
||||
PLC_IP_ADDRESS = "10.20.4.40"
|
||||
CHANNELS = []
|
||||
|
||||
# PERSISTENCE FILE
|
||||
persist = persistence.load()
|
||||
|
||||
|
||||
class start(threading.Thread, deviceBase):
|
||||
"""Start class required by Meshify."""
|
||||
|
||||
def __init__(self, name=None, number=None, mac=None, Q=None, mcu=None, companyId=None, offset=None, mqtt=None, Nodes=None):
|
||||
"""Initialize the driver."""
|
||||
threading.Thread.__init__(self)
|
||||
deviceBase.__init__(self, name=name, number=number, mac=mac, Q=Q, mcu=mcu, companyId=companyId, offset=offset, mqtt=mqtt, Nodes=Nodes)
|
||||
|
||||
self.daemon = True
|
||||
self.version = "1"
|
||||
self.finished = threading.Event()
|
||||
self.forceSend = False
|
||||
threading.Thread.start(self)
|
||||
|
||||
# this is a required function for all drivers, its goal is to upload some piece of data
|
||||
# about your device so it can be seen on the web
|
||||
def register(self):
|
||||
"""Register the driver."""
|
||||
# self.sendtodb("log", "BOOM! Booted.", 0)
|
||||
pass
|
||||
|
||||
def run(self):
|
||||
"""Actually run the driver."""
|
||||
global persist
|
||||
wait_sec = 60
|
||||
for i in range(0, wait_sec):
|
||||
print("fracskid driver will start in {} seconds".format(wait_sec - i))
|
||||
time.sleep(1)
|
||||
logger.info("BOOM! Starting fracskid driver...")
|
||||
|
||||
public_ip_address = get_public_ip_address()
|
||||
self.sendtodbDev(1, 'public_ip_address', public_ip_address, 0, 'fracskid')
|
||||
watchdog = self.fracskid_watchdog()
|
||||
self.sendtodbDev(1, 'watchdog', watchdog, 0, 'fracskid')
|
||||
watchdog_send_timestamp = time.time()
|
||||
|
||||
send_loops = 0
|
||||
watchdog_loops = 0
|
||||
watchdog_check_after = 5000
|
||||
while True:
|
||||
if self.forceSend:
|
||||
logger.warning("FORCE SEND: TRUE")
|
||||
|
||||
gps = self.mcu.gps.split(',')
|
||||
latitude = float(gps[0])
|
||||
longitude = float(gps[1])
|
||||
write_tag(PLC_IP_ADDRESS, "skid_latitude", latitude, plc_type="Micro800")
|
||||
write_tag(PLC_IP_ADDRESS, "skid_longitude", longitude, plc_type="Micro800")
|
||||
logger.info("Wrote {},{} to PLC at {}.".format(latitude, longitude, PLC_IP_ADDRESS))
|
||||
if self.forceSend:
|
||||
if send_loops > 2:
|
||||
logger.warning("Turning off forceSend")
|
||||
self.forceSend = False
|
||||
send_loops = 0
|
||||
else:
|
||||
send_loops += 1
|
||||
|
||||
watchdog_loops += 1
|
||||
if (watchdog_loops >= watchdog_check_after):
|
||||
test_watchdog = self.fracskid_watchdog()
|
||||
if not test_watchdog == watchdog or (time.time() - watchdog_send_timestamp) > WATCHDOG_SEND_PERIOD:
|
||||
self.sendtodbDev(1, 'watchdog', test_watchdog, 0, 'fracskid')
|
||||
watchdog = test_watchdog
|
||||
|
||||
test_public_ip = get_public_ip_address()
|
||||
if not test_public_ip == public_ip_address:
|
||||
self.sendtodbDev(1, 'public_ip_address', test_public_ip, 0, 'fracskid')
|
||||
public_ip_address = test_public_ip
|
||||
watchdog_loops = 0
|
||||
time.sleep(10)
|
||||
|
||||
def fracskid_watchdog(self):
|
||||
"""Write a random integer to the PLC and then 1 seconds later check that it has been decremented by 1."""
|
||||
randval = randint(0, 32767)
|
||||
write_tag(str(PLC_IP_ADDRESS), 'watchdog_INT', randval)
|
||||
time.sleep(1)
|
||||
watchdog_val = read_tag(str(PLC_IP_ADDRESS), 'watchdog_INT')
|
||||
try:
|
||||
return (randval - 1) == watchdog_val[0]
|
||||
except (KeyError, TypeError):
|
||||
return False
|
||||
|
||||
def fracskid_sync(self, name, value):
|
||||
"""Sync all data from the driver."""
|
||||
self.forceSend = True
|
||||
# self.sendtodb("log", "synced", 0)
|
||||
return True
|
||||
|
||||
def fracskid_writeplctag(self, name, value):
|
||||
"""Write a value to the PLC."""
|
||||
new_val = json.loads(str(value).replace("'", '"'))
|
||||
tag_n = str(new_val['tag']) # "cmd_Start"
|
||||
val_n = new_val['val']
|
||||
w = write_tag(str(PLC_IP_ADDRESS), tag_n, val_n)
|
||||
print("Result of fracskid_writeplctag(self, {}, {}) = {}".format(name, value, w))
|
||||
if w is None:
|
||||
w = "Error writing to PLC..."
|
||||
return w
|
||||
21
pioneerfracskid/python-driver/persistence.py
Normal file
21
pioneerfracskid/python-driver/persistence.py
Normal file
@@ -0,0 +1,21 @@
|
||||
"""Data persistance functions."""
|
||||
# if more advanced persistence is needed, use a sqlite database
|
||||
import json
|
||||
|
||||
|
||||
def load(filename="persist.json"):
|
||||
"""Load persisted settings from the specified file."""
|
||||
try:
|
||||
with open(filename, 'r') as persist_file:
|
||||
return json.load(persist_file)
|
||||
except Exception:
|
||||
return False
|
||||
|
||||
|
||||
def store(persist_obj, filename="persist.json"):
|
||||
"""Store the persisting settings into the specified file."""
|
||||
try:
|
||||
with open(filename, 'w') as persist_file:
|
||||
return json.dump(persist_obj, persist_file)
|
||||
except Exception:
|
||||
return False
|
||||
54
pioneerfracskid/python-driver/utilities.py
Normal file
54
pioneerfracskid/python-driver/utilities.py
Normal file
@@ -0,0 +1,54 @@
|
||||
"""Utility functions for the driver."""
|
||||
import socket
|
||||
import struct
|
||||
|
||||
|
||||
def get_public_ip_address():
|
||||
"""Find the public IP Address of the host device."""
|
||||
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
|
||||
s.connect(("8.8.8.8", 80))
|
||||
ip = s.getsockname()[0]
|
||||
s.close()
|
||||
return ip
|
||||
|
||||
|
||||
def int_to_float16(int_to_convert):
|
||||
"""Convert integer into float16 representation."""
|
||||
bin_rep = ('0' * 16 + '{0:b}'.format(int_to_convert))[-16:]
|
||||
sign = 1.0
|
||||
if int(bin_rep[0]) == 1:
|
||||
sign = -1.0
|
||||
exponent = float(int(bin_rep[1:6], 2))
|
||||
if exponent == 30:
|
||||
fraction = float(int("1" + bin_rep[7:17], 2))
|
||||
else:
|
||||
fraction = float(int(bin_rep[7:17], 2))
|
||||
|
||||
if exponent == float(0b00000):
|
||||
return sign * 2 ** -14 * fraction / (2.0 ** 10.0)
|
||||
elif exponent == float(0b11111):
|
||||
if fraction == 0:
|
||||
return sign * float("inf")
|
||||
else:
|
||||
return float("NaN")
|
||||
else:
|
||||
frac_part = 1.0 + fraction / (2.0 ** 10.0)
|
||||
return sign * (2 ** (exponent - 15)) * frac_part
|
||||
|
||||
|
||||
def ints_to_float(int1, int2):
|
||||
"""Convert 2 registers into a floating point number."""
|
||||
mypack = struct.pack('>HH', int1, int2)
|
||||
f = struct.unpack('>f', mypack)
|
||||
print("[{}, {}] >> {}".format(int1, int2, f[0]))
|
||||
return f[0]
|
||||
|
||||
|
||||
def degf_to_degc(temp_f):
|
||||
"""Convert deg F to deg C."""
|
||||
return (temp_f - 32.0) * (5.0/9.0)
|
||||
|
||||
|
||||
def degc_to_degf(temp_c):
|
||||
"""Convert deg C to deg F."""
|
||||
return temp_c * 1.8 + 32.0
|
||||
BIN
pioneerfracskid/python-driver/utilities.pyc
Normal file
BIN
pioneerfracskid/python-driver/utilities.pyc
Normal file
Binary file not shown.
Reference in New Issue
Block a user