Fixes incorrect modbus status

This commit is contained in:
Patrick McDonagh
2018-02-05 15:02:36 -06:00
parent 808d650496
commit 8f45ef23f1
43 changed files with 50 additions and 131 deletions

View File

@@ -2531,8 +2531,8 @@ Controller.Micro820.Micro820.SolarPanelMb.temp_ArrayFault
Controller.Micro820.Micro820.SolarPanelMb.temp_ChargeState
Controller.Micro820.Micro820.sts_ArrayFault
Controller.Micro820.Micro820.sts_ChargeState
Controller.Micro820.Micro820.sts_FlowmeterModbusError
Controller.Micro820.Micro820.sts_SolarModbusError
Controller.Micro820.Micro820.sts_FlowmeterModbusOK
Controller.Micro820.Micro820.sts_SolarModbusOK
Controller.Micro820.Micro820.val_FlowRate
Controller.Micro820.Micro820.val_FlowTotalizerA
Controller.Micro820.Micro820.val_FlowTotalizerAUnits
1 Controller.Micro820.Micro820.__SYSVA_ABORT_CYCLE
2531 Controller.Micro820.Micro820.SolarPanelMb.temp_ChargeState
2532 Controller.Micro820.Micro820.sts_ArrayFault
2533 Controller.Micro820.Micro820.sts_ChargeState
2534 Controller.Micro820.Micro820.sts_FlowmeterModbusError Controller.Micro820.Micro820.sts_FlowmeterModbusOK
2535 Controller.Micro820.Micro820.sts_SolarModbusError Controller.Micro820.Micro820.sts_SolarModbusOK
2536 Controller.Micro820.Micro820.val_FlowRate
2537 Controller.Micro820.Micro820.val_FlowTotalizerA
2538 Controller.Micro820.Micro820.val_FlowTotalizerAUnits

View File

@@ -1,9 +1,9 @@
MODBUSTIMER.IN@FLOWMETERMB,__TMPB__TON__IN,BOOL
MODBUSTIMER.PT@FLOWMETERMB,MODBUSSCANRATE,TIME
MODBUSERRORTIMER.IN@FLOWMETERMB,__TMPB__TON__IN,BOOL
MODBUSERRORTIMER.PT@FLOWMETERMB,MODBUSERRORDURATION,TIME
WAIT_TO_RESET_TON.IN@FLOWMETERMB,CMD_CLEARRESETTOTALIZER@FLOWMETERMB,BOOL
WAIT_TO_RESET_TON.PT@FLOWMETERMB,PAR_TIMETOWAITTOCLEARRESETTOTALIZER@FLOWMETERMB,TIME
MODBUSERRORTIMER.IN@FLOWMETERMB,__TMPB__TON__IN,BOOL
MODBUSERRORTIMER.PT@FLOWMETERMB,MODBUSERRORDURATION,TIME
MODBUSTIMER.IN@SOLARPANELMB,__TMPB__TON__IN,BOOL
MODBUSTIMER.PT@SOLARPANELMB,MODBUSSCANRATE,TIME
MODBUSERRORTIMER.IN@SOLARPANELMB,__TMPB__TON__IN,BOOL

View File

@@ -180,19 +180,6 @@ 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
__TMPB__TON__IN := __TMPB1
__FBL_RET := _PUSHCALLFB TON MODBUSERRORTIMER
__TMPB1 := MODBUSERRORTIMER [ __CDINT00000004 ]
STS_FLOWMETERMODBUSERROR := __TMPB1
__TMPUIN1 := VAL_STATUS0 + VAL_STATUS1
__TMPUIN1 := __TMPUIN1 + VAL_STATUS2
__TMPB1 := __TMPUIN1 = __UINT_NULL
@@ -772,3 +759,19 @@ VAL_FLOWTOTALIZERCUNITS := __TMPM3
_GOTO __LAB76
__LAB75 :
__LAB76 :
__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
__TMPB6 := MBS_UNITS_MSG [ __CDINT0000000D ]
__TMPB1 := __TMPB1 _OR __TMPB6
__TMPB1 := _NOT __TMPB1
__TMPB__TON__IN := __TMPB1
__FBL_RET := _PUSHCALLFB TON MODBUSERRORTIMER
__TMPB1 := MODBUSERRORTIMER [ __CDINT00000004 ]
STS_FLOWMETERMODBUSOK := __TMPB1

View File

@@ -84,8 +84,7 @@ IF mbs_Status_MSG.Q THEN
val_Status2 := ANY_TO_UINT(mbs_Status_Data[3]);
END_IF;
ModbusErrorTimer(mbs_FlowRate_MSG.Error OR mbs_FlowTotalizerA_MSG.Error OR mbs_FlowTotalizerB_MSG.Error OR mbs_FlowTotalizerC_MSG.Error OR mbs_Status_MSG.Error, ModbusErrorDuration);
sts_FlowmeterModbusError := ModbusErrorTimer.Q;
IF (val_Status0 + val_Status1 + val_Status2) = 0 THEN
val_StatusString := 'OK';
@@ -306,4 +305,12 @@ IF mbs_Units_MSG.Q THEN
val_FlowTotalizerCUnits := FlowTotalUnits(mbs_Units_Data[4]);
END_IF;
ModbusErrorTimer(NOT(mbs_FlowRate_MSG.Error OR
mbs_FlowTotalizerA_MSG.Error OR
mbs_FlowTotalizerB_MSG.Error OR
mbs_FlowTotalizerC_MSG.Error OR
mbs_Status_MSG.Error OR
mbs_Units_MSG.Error), ModbusErrorDuration);
sts_FlowmeterModbusOK := ModbusErrorTimer.Q;
END_PROGRAM

View File

@@ -3,7 +3,7 @@ Offset0=0x1C64
Offset1=0x2464
Offset2=0x2464
Offset3=0x2464
Memory Usage Estimate(Code)=0x26C4
Memory Usage Estimate(Code)=0x26DC
Memory Usage Estimate(Data)=0x5030
Memory Usage Estimate(Retain)=0x34
Memory Usage Estimate(Temporary variables)=0xBC8

View File

@@ -1,10 +0,0 @@
[MEMORY]
Offset0=0x1C64
Offset1=0x2464
Offset2=0x2464
Offset3=0x2464
Memory Usage Estimate(Code)=0x26C4
Memory Usage Estimate(Data)=0x5030
Memory Usage Estimate(Retain)=0x34
Memory Usage Estimate(Temporary variables)=0xBC8
Offset4=0x414

View File

@@ -5,12 +5,12 @@ ON_LINE=N
TBL_CONF=Y
CRC_ORG=0x0
CRC_OLD=
CRC_NEW=0xF767B173
CRC_NEW=0x2625A20D
DAT_ORG=0
DAT_OLD=0
DAT_NEW=1517442743
DAT_NEW=1517863824
VER_ORG=0
VER_OLD=0
VER_NEW=36
VER_NEW=37
CRC_ALL_OLD=
CRC_ALL_NEW=0xEDEFD638
CRC_ALL_NEW=0x5DF21E41

View File

@@ -1,9 +0,0 @@
[MEMORY]
Memory Usage Estimate(Temporary variables)=0xBC8
Biggest online change user variable memory block size=0x800
Currently added user variables=0x0
Total data size=0x282C
User variables size=0x1C64
Maximum size for temporary variables=0x2BC8
Memory Usage Estimate(Data)=0x502C
Free memory for user variables=0x800

View File

@@ -4,8 +4,8 @@
<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>,MODBUSERRORTIMER@FLOWMETERMB,TON,IN,__TMPB__TON__IN,BOOL,PT,MODBUSERRORDURATION,TIME
<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
<INPUT>,MODBUSERRORTIMER@FLOWMETERMB,TON,IN,__TMPB__TON__IN,BOOL,PT,MODBUSERRORDURATION,TIME

View File

@@ -1,10 +1,10 @@
[BEGIN FB INPUTS]
I1=micro820.micro820.flowmetermb/modbustimer.in,0x2465,BOOL
I2=micro820.micro820.flowmetermb/modbustimer.pt,0x55C,TIME
I3=micro820.micro820.flowmetermb/modbuserrortimer.in,0x2465,BOOL
I4=micro820.micro820.flowmetermb/modbuserrortimer.pt,0x560,TIME
I5=micro820.micro820.flowmetermb/wait_to_reset_ton.in,0x464,BOOL
I6=micro820.micro820.flowmetermb/wait_to_reset_ton.pt,0x564,TIME
I3=micro820.micro820.flowmetermb/wait_to_reset_ton.in,0x464,BOOL
I4=micro820.micro820.flowmetermb/wait_to_reset_ton.pt,0x564,TIME
I5=micro820.micro820.flowmetermb/modbuserrortimer.in,0x2465,BOOL
I6=micro820.micro820.flowmetermb/modbuserrortimer.pt,0x560,TIME
I7=micro820.micro820.solarpanelmb/modbustimer.in,0x2465,BOOL
I8=micro820.micro820.solarpanelmb/modbustimer.pt,0x55C,TIME
I9=micro820.micro820.solarpanelmb/modbuserrortimer.in,0x2465,BOOL

View File

@@ -1,75 +0,0 @@
[__DEFIO_CPXDVC]
Nb = 2
NotMDF = 0, 1, AB_, OPTIMUS_, IO_Base
MDF = -1
RIdx = 0
NotMDF = 101, 1, AB_, OPTIMUS_, IOUP_Analog
MDF = -1
RIdx = 0
[__DEFIO_SPLDVC]
Nb = 6
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
NotMDF = 101, 0, 1, AB_, OPTIMUS_, analogOut_UP
MDF = -1
RIdx = 0, 1
NotMDF = 101, 1, 1, AB_, OPTIMUS_, analogIn_UP
MDF = -1
RIdx = 0, 1
[__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
RIdx = 0, 1, 4
Nb = 0
RIdx = 0, 1, 5
Nb = 2
MDF = 1\1, 0, 0, 0, -1, _IO_P1_AI_00
MDF = 1\1, 0, 0, 1, -1, _IO_P1_AI_01
[__READONLY_VALUES]
Nb = 0

View File

@@ -84,11 +84,6 @@ TEMP_ARRAYFAULT := __TMPUIN2
_GOTO __LAB2
__LAB1 :
__LAB2 :
__TMPB1 := MBS_SOLARPANEL_MSG [ __CDINT0000000D ]
__TMPB__TON__IN := __TMPB1
__FBL_RET := _PUSHCALLFB TON MODBUSERRORTIMER
__TMPB1 := MODBUSERRORTIMER [ __CDINT00000004 ]
STS_SOLARMODBUSERROR := __TMPB1
__TMPB1 := TEMP_CHARGESTATE = __UINT_NULL
_IF _NOT __TMPB1 _GOTO __LAB3
STS_CHARGESTATE := __TMPM1
@@ -247,3 +242,9 @@ _PUSH_PAR __TMPI1
__TMPM13 := _CALL RIGHT
STS_ARRAYFAULT := __TMPM13
__LABe :
__TMPB1 := MBS_SOLARPANEL_MSG [ __CDINT0000000D ]
__TMPB1 := _NOT __TMPB1
__TMPB__TON__IN := __TMPB1
__FBL_RET := _PUSHCALLFB TON MODBUSERRORTIMER
__TMPB1 := MODBUSERRORTIMER [ __CDINT00000004 ]
STS_SOLARMODBUSOK := __TMPB1

View File

@@ -25,8 +25,7 @@ IF mbs_SolarPanel_MSG.Q THEN
temp_ArrayFault := ANY_TO_UINT(mbs_SolarPanel_Data[35]);
END_IF;
ModbusErrorTimer(mbs_SolarPanel_MSG.Error, ModbusErrorDuration);
sts_SolarModbusError := ModbusErrorTimer.Q;
(* Map Charge State *)
IF temp_ChargeState = 0 THEN
@@ -84,5 +83,8 @@ ELSE
sts_ArrayFault := RIGHT(sts_ArrayFault, MLEN(sts_ArrayFault) - 2);
END_IF;
ModbusErrorTimer(NOT(mbs_SolarPanel_MSG.Error), ModbusErrorDuration);
sts_SolarModbusOK := ModbusErrorTimer.Q;
END_PROGRAM