7 Commits

Author SHA1 Message Date
Patrick McDonagh
0c2defa280 Configured files for Driver V3 and uploaded to S3 2016-08-12 10:26:57 -05:00
Patrick McDonagh
75040109c5 Completes IPP-68 by mapping E300 status to a string 2016-08-08 12:17:45 -05:00
Patrick McDonagh
4e75523e2c Completes IPP-104, Flow now added to driver. Starts working on mapping E300 faults to strings, and then to one final string. IPP-68 2016-08-04 16:38:13 -05:00
Patrick McDonagh
4d8e3c1791 Merge pull request #3 in IPP/e300-ipp from feature/IPP-97-Flow-and-Totalization to master
* commit '1e6c5f3bec5eb7f719d8c40444b88336d3d1ab0b':
  Added HMI Screens and Flow Totalizer Logic. Resolution is 10 seconds.
  Added scaled flow to Analog Input 1
2016-08-01 20:00:06 +00:00
Patrick McDonagh
1e6c5f3bec Added HMI Screens and Flow Totalizer Logic. Resolution is 10 seconds. 2016-07-31 18:59:38 -05:00
Patrick McDonagh
cd26d7af5e Added scaled flow to Analog Input 1 2016-07-31 18:04:31 -05:00
Patrick McDonagh
38869bc514 Resolves IPP- 59. Enables writing to E300 after the tag value is set. Needs testing 2016-07-18 16:13:56 -05:00
125 changed files with 1719 additions and 5055 deletions

View File

@@ -3,4 +3,4 @@
1::0002-0003::CONTROLLER: 0 error(s), 0 warning(s)
0::0021-0003::Checking database...
0::0007-0003::-------------------- Build project: CONTROLLER --------------------
1::0002-0003::CONTROLLER: 0 error(s), 1 warning(s)
1::0002-0003::CONTROLLER: 0 error(s), 0 warning(s)

View File

@@ -28,7 +28,7 @@
</DLGRCP_VarVA>
<DLGRCP_VarVA>
<ArrayLength>1</ArrayLength>
<VirtualAddress>2181</VirtualAddress>
<VirtualAddress>2201</VirtualAddress>
<Name>DH_DownholeStatus</Name>
<Index>3</Index>
<ISaDataType>STRING</ISaDataType>

View File

@@ -206,24 +206,14 @@ Controller.Micro820.Micro820.cmd_Run FALSE
Controller.Micro820.Micro820.cmd_TimerRun
Controller.Micro820.Micro820.Contactor_Status FALSE
Controller.Micro820.Micro820.Control.cmd_AutoModeTimerStart
Controller.Micro820.Micro820.Control.Epoch_Time_1.day_seconds
Controller.Micro820.Micro820.Control.Epoch_Time_1.Epoch
Controller.Micro820.Micro820.Control.Epoch_Time_1.hour_seconds
Controller.Micro820.Micro820.Control.Epoch_Time_1.min_seconds
Controller.Micro820.Micro820.Control.Epoch_Time_1.prev_months_days
Controller.Micro820.Micro820.Control.Epoch_Time_1.RTC_READ_1.Enable
Controller.Micro820.Micro820.Control.Epoch_Time_1.RTC_READ_1.RTCBatLow
Controller.Micro820.Micro820.Control.Epoch_Time_1.RTC_READ_1.RTCData.Day
Controller.Micro820.Micro820.Control.Epoch_Time_1.RTC_READ_1.RTCData.DayOfWeek
Controller.Micro820.Micro820.Control.Epoch_Time_1.RTC_READ_1.RTCData.Hours
Controller.Micro820.Micro820.Control.Epoch_Time_1.RTC_READ_1.RTCData.Minutes
Controller.Micro820.Micro820.Control.Epoch_Time_1.RTC_READ_1.RTCData.Month
Controller.Micro820.Micro820.Control.Epoch_Time_1.RTC_READ_1.RTCData.Seconds
Controller.Micro820.Micro820.Control.Epoch_Time_1.RTC_READ_1.RTCData.Year
Controller.Micro820.Micro820.Control.Epoch_Time_1.RTC_READ_1.RTCEnabled
Controller.Micro820.Micro820.Control.Epoch_Time_1.RTC_READ_1.RTCPresent
Controller.Micro820.Micro820.Control.Epoch_Time_1.RTC_READ_ENABLED
Controller.Micro820.Micro820.Control.Epoch_Time_1.year_seconds
Controller.Micro820.Micro820.Control.LinearScale_Flow.b
Controller.Micro820.Micro820.Control.LinearScale_Flow.EU_Max
Controller.Micro820.Micro820.Control.LinearScale_Flow.EU_Min
Controller.Micro820.Micro820.Control.LinearScale_Flow.EU_Out
Controller.Micro820.Micro820.Control.LinearScale_Flow.m
Controller.Micro820.Micro820.Control.LinearScale_Flow.Raw_Inp
Controller.Micro820.Micro820.Control.LinearScale_Flow.Raw_Max
Controller.Micro820.Micro820.Control.LinearScale_Flow.Raw_Min
Controller.Micro820.Micro820.Control.LinearScale_Pressure.b 300.0
Controller.Micro820.Micro820.Control.LinearScale_Pressure.EU_Max 300.0
Controller.Micro820.Micro820.Control.LinearScale_Pressure.EU_Min 300.0
@@ -239,6 +229,30 @@ Controller.Micro820.Micro820.Control.RTrig_AutoMode.Redge
Controller.Micro820.Micro820.Control.TEST_started
Controller.Micro820.Micro820.Control.Time_Until_Startup_Min
Controller.Micro820.Micro820.Control.Time_Until_Startup_Sec
Controller.Micro820.Micro820.CurrentTimeRTC.day
Controller.Micro820.Micro820.CurrentTimeRTC.day_seconds
Controller.Micro820.Micro820.CurrentTimeRTC.Epoch
Controller.Micro820.Micro820.CurrentTimeRTC.hour
Controller.Micro820.Micro820.CurrentTimeRTC.hour_seconds
Controller.Micro820.Micro820.CurrentTimeRTC.min_seconds
Controller.Micro820.Micro820.CurrentTimeRTC.minute
Controller.Micro820.Micro820.CurrentTimeRTC.month
Controller.Micro820.Micro820.CurrentTimeRTC.prev_months_days
Controller.Micro820.Micro820.CurrentTimeRTC.RTC_READ_1.Enable
Controller.Micro820.Micro820.CurrentTimeRTC.RTC_READ_1.RTCBatLow
Controller.Micro820.Micro820.CurrentTimeRTC.RTC_READ_1.RTCData.Day
Controller.Micro820.Micro820.CurrentTimeRTC.RTC_READ_1.RTCData.DayOfWeek
Controller.Micro820.Micro820.CurrentTimeRTC.RTC_READ_1.RTCData.Hours
Controller.Micro820.Micro820.CurrentTimeRTC.RTC_READ_1.RTCData.Minutes
Controller.Micro820.Micro820.CurrentTimeRTC.RTC_READ_1.RTCData.Month
Controller.Micro820.Micro820.CurrentTimeRTC.RTC_READ_1.RTCData.Seconds
Controller.Micro820.Micro820.CurrentTimeRTC.RTC_READ_1.RTCData.Year
Controller.Micro820.Micro820.CurrentTimeRTC.RTC_READ_1.RTCEnabled
Controller.Micro820.Micro820.CurrentTimeRTC.RTC_READ_1.RTCPresent
Controller.Micro820.Micro820.CurrentTimeRTC.RTC_READ_ENABLED
Controller.Micro820.Micro820.CurrentTimeRTC.second
Controller.Micro820.Micro820.CurrentTimeRTC.year
Controller.Micro820.Micro820.CurrentTimeRTC.year_seconds
Controller.Micro820.Micro820.Device_Status 'Not ready to start'
Controller.Micro820.Micro820.DH_DischargePressure 0
Controller.Micro820.Micro820.DH_DischargeTemperature 0
@@ -5356,6 +5370,29 @@ Controller.Micro820.Micro820.E300Data.WriteE300ConfigData.REAL_COP.Sts 0
Controller.Micro820.Micro820.E300Data.WriteE300ConfigData.REAL_COP.Swap FALSE
Controller.Micro820.Micro820.E300Data.WriteE300ConfigData.UpdateRate_ms 1000
Controller.Micro820.Micro820.Enable_IO_Read TRUE
Controller.Micro820.Micro820.Flow_EU_Max
Controller.Micro820.Micro820.Flow_EU_Min
Controller.Micro820.Micro820.Flow_Today
Controller.Micro820.Micro820.Flow_Yesterday
Controller.Micro820.Micro820.Flowrate
Controller.Micro820.Micro820.FlowTotalizer.COP_1.__ADI_Dest
Controller.Micro820.Micro820.FlowTotalizer.COP_1.__ADI_Src
Controller.Micro820.Micro820.FlowTotalizer.COP_1.__DTI_Dest
Controller.Micro820.Micro820.FlowTotalizer.COP_1.__DTI_Src
Controller.Micro820.Micro820.FlowTotalizer.COP_1.Dest[1]
Controller.Micro820.Micro820.FlowTotalizer.COP_1.DestOffset
Controller.Micro820.Micro820.FlowTotalizer.COP_1.Enable
Controller.Micro820.Micro820.FlowTotalizer.COP_1.Length
Controller.Micro820.Micro820.FlowTotalizer.COP_1.Src[1]
Controller.Micro820.Micro820.FlowTotalizer.COP_1.SrcOffset
Controller.Micro820.Micro820.FlowTotalizer.COP_1.Sts
Controller.Micro820.Micro820.FlowTotalizer.COP_1.Swap
Controller.Micro820.Micro820.FlowTotalizer.TON_Totalizer.ET
Controller.Micro820.Micro820.FlowTotalizer.TON_Totalizer.IN
Controller.Micro820.Micro820.FlowTotalizer.TON_Totalizer.Pdate
Controller.Micro820.Micro820.FlowTotalizer.TON_Totalizer.PT
Controller.Micro820.Micro820.FlowTotalizer.TON_Totalizer.Q
Controller.Micro820.Micro820.FlowTotalizer.TON_Totalizer.Redge
Controller.Micro820.Micro820.Hand_Mode FALSE
Controller.Micro820.Micro820.Modbus_Read0[1] 0
Controller.Micro820.Micro820.Modbus_Read0[10] 0
1 Controller.Micro820.Micro820.__SYSVA_ABORT_CYCLE FALSE
206 Controller.Micro820.Micro820.cmd_TimerRun
207 Controller.Micro820.Micro820.Contactor_Status FALSE
208 Controller.Micro820.Micro820.Control.cmd_AutoModeTimerStart
209 Controller.Micro820.Micro820.Control.Epoch_Time_1.day_seconds Controller.Micro820.Micro820.Control.LinearScale_Flow.b
210 Controller.Micro820.Micro820.Control.Epoch_Time_1.Epoch Controller.Micro820.Micro820.Control.LinearScale_Flow.EU_Max
211 Controller.Micro820.Micro820.Control.Epoch_Time_1.hour_seconds Controller.Micro820.Micro820.Control.LinearScale_Flow.EU_Min
212 Controller.Micro820.Micro820.Control.Epoch_Time_1.min_seconds Controller.Micro820.Micro820.Control.LinearScale_Flow.EU_Out
213 Controller.Micro820.Micro820.Control.Epoch_Time_1.prev_months_days Controller.Micro820.Micro820.Control.LinearScale_Flow.m
214 Controller.Micro820.Micro820.Control.Epoch_Time_1.RTC_READ_1.Enable Controller.Micro820.Micro820.Control.LinearScale_Flow.Raw_Inp
215 Controller.Micro820.Micro820.Control.Epoch_Time_1.RTC_READ_1.RTCBatLow Controller.Micro820.Micro820.Control.LinearScale_Flow.Raw_Max
216 Controller.Micro820.Micro820.Control.Epoch_Time_1.RTC_READ_1.RTCData.Day Controller.Micro820.Micro820.Control.LinearScale_Flow.Raw_Min
Controller.Micro820.Micro820.Control.Epoch_Time_1.RTC_READ_1.RTCData.DayOfWeek
Controller.Micro820.Micro820.Control.Epoch_Time_1.RTC_READ_1.RTCData.Hours
Controller.Micro820.Micro820.Control.Epoch_Time_1.RTC_READ_1.RTCData.Minutes
Controller.Micro820.Micro820.Control.Epoch_Time_1.RTC_READ_1.RTCData.Month
Controller.Micro820.Micro820.Control.Epoch_Time_1.RTC_READ_1.RTCData.Seconds
Controller.Micro820.Micro820.Control.Epoch_Time_1.RTC_READ_1.RTCData.Year
Controller.Micro820.Micro820.Control.Epoch_Time_1.RTC_READ_1.RTCEnabled
Controller.Micro820.Micro820.Control.Epoch_Time_1.RTC_READ_1.RTCPresent
Controller.Micro820.Micro820.Control.Epoch_Time_1.RTC_READ_ENABLED
Controller.Micro820.Micro820.Control.Epoch_Time_1.year_seconds
217 Controller.Micro820.Micro820.Control.LinearScale_Pressure.b 300.0
218 Controller.Micro820.Micro820.Control.LinearScale_Pressure.EU_Max 300.0
219 Controller.Micro820.Micro820.Control.LinearScale_Pressure.EU_Min 300.0
229 Controller.Micro820.Micro820.Control.TEST_started
230 Controller.Micro820.Micro820.Control.Time_Until_Startup_Min
231 Controller.Micro820.Micro820.Control.Time_Until_Startup_Sec
232 Controller.Micro820.Micro820.CurrentTimeRTC.day
233 Controller.Micro820.Micro820.CurrentTimeRTC.day_seconds
234 Controller.Micro820.Micro820.CurrentTimeRTC.Epoch
235 Controller.Micro820.Micro820.CurrentTimeRTC.hour
236 Controller.Micro820.Micro820.CurrentTimeRTC.hour_seconds
237 Controller.Micro820.Micro820.CurrentTimeRTC.min_seconds
238 Controller.Micro820.Micro820.CurrentTimeRTC.minute
239 Controller.Micro820.Micro820.CurrentTimeRTC.month
240 Controller.Micro820.Micro820.CurrentTimeRTC.prev_months_days
241 Controller.Micro820.Micro820.CurrentTimeRTC.RTC_READ_1.Enable
242 Controller.Micro820.Micro820.CurrentTimeRTC.RTC_READ_1.RTCBatLow
243 Controller.Micro820.Micro820.CurrentTimeRTC.RTC_READ_1.RTCData.Day
244 Controller.Micro820.Micro820.CurrentTimeRTC.RTC_READ_1.RTCData.DayOfWeek
245 Controller.Micro820.Micro820.CurrentTimeRTC.RTC_READ_1.RTCData.Hours
246 Controller.Micro820.Micro820.CurrentTimeRTC.RTC_READ_1.RTCData.Minutes
247 Controller.Micro820.Micro820.CurrentTimeRTC.RTC_READ_1.RTCData.Month
248 Controller.Micro820.Micro820.CurrentTimeRTC.RTC_READ_1.RTCData.Seconds
249 Controller.Micro820.Micro820.CurrentTimeRTC.RTC_READ_1.RTCData.Year
250 Controller.Micro820.Micro820.CurrentTimeRTC.RTC_READ_1.RTCEnabled
251 Controller.Micro820.Micro820.CurrentTimeRTC.RTC_READ_1.RTCPresent
252 Controller.Micro820.Micro820.CurrentTimeRTC.RTC_READ_ENABLED
253 Controller.Micro820.Micro820.CurrentTimeRTC.second
254 Controller.Micro820.Micro820.CurrentTimeRTC.year
255 Controller.Micro820.Micro820.CurrentTimeRTC.year_seconds
256 Controller.Micro820.Micro820.Device_Status 'Not ready to start'
257 Controller.Micro820.Micro820.DH_DischargePressure 0
258 Controller.Micro820.Micro820.DH_DischargeTemperature 0
5370 Controller.Micro820.Micro820.E300Data.WriteE300ConfigData.REAL_COP.Swap FALSE
5371 Controller.Micro820.Micro820.E300Data.WriteE300ConfigData.UpdateRate_ms 1000
5372 Controller.Micro820.Micro820.Enable_IO_Read TRUE
5373 Controller.Micro820.Micro820.Flow_EU_Max
5374 Controller.Micro820.Micro820.Flow_EU_Min
5375 Controller.Micro820.Micro820.Flow_Today
5376 Controller.Micro820.Micro820.Flow_Yesterday
5377 Controller.Micro820.Micro820.Flowrate
5378 Controller.Micro820.Micro820.FlowTotalizer.COP_1.__ADI_Dest
5379 Controller.Micro820.Micro820.FlowTotalizer.COP_1.__ADI_Src
5380 Controller.Micro820.Micro820.FlowTotalizer.COP_1.__DTI_Dest
5381 Controller.Micro820.Micro820.FlowTotalizer.COP_1.__DTI_Src
5382 Controller.Micro820.Micro820.FlowTotalizer.COP_1.Dest[1]
5383 Controller.Micro820.Micro820.FlowTotalizer.COP_1.DestOffset
5384 Controller.Micro820.Micro820.FlowTotalizer.COP_1.Enable
5385 Controller.Micro820.Micro820.FlowTotalizer.COP_1.Length
5386 Controller.Micro820.Micro820.FlowTotalizer.COP_1.Src[1]
5387 Controller.Micro820.Micro820.FlowTotalizer.COP_1.SrcOffset
5388 Controller.Micro820.Micro820.FlowTotalizer.COP_1.Sts
5389 Controller.Micro820.Micro820.FlowTotalizer.COP_1.Swap
5390 Controller.Micro820.Micro820.FlowTotalizer.TON_Totalizer.ET
5391 Controller.Micro820.Micro820.FlowTotalizer.TON_Totalizer.IN
5392 Controller.Micro820.Micro820.FlowTotalizer.TON_Totalizer.Pdate
5393 Controller.Micro820.Micro820.FlowTotalizer.TON_Totalizer.PT
5394 Controller.Micro820.Micro820.FlowTotalizer.TON_Totalizer.Q
5395 Controller.Micro820.Micro820.FlowTotalizer.TON_Totalizer.Redge
5396 Controller.Micro820.Micro820.Hand_Mode FALSE
5397 Controller.Micro820.Micro820.Modbus_Read0[1] 0
5398 Controller.Micro820.Micro820.Modbus_Read0[10] 0

View File

@@ -1,5 +1,5 @@
__FBL_RET := _PUSHCALLFB EPOCH_TIME EPOCH_TIME_1
__TMPULI1 := EPOCH_TIME_1 [ __CDINT00000004 ]
__FBL_RET := _PUSHCALLFB EPOCH_TIME CURRENTTIMERTC
__TMPULI1 := CURRENTTIMERTC [ __CDINT00000004 ]
_PUSH_PAR __TMPULI1
__TMPI1 := _CALL ANY_TO_ULINT
TIME_CURRENTTIME := __TMPI1
@@ -13,8 +13,14 @@ _PUSH_PAR _IO_P1_AI_00
__TMPR3 := _CALL ANY_TO_UINT
__TMPR__LINEARSCALE__RAW_INP := __TMPR3
__FBL_RET := _PUSHCALLFB LINEARSCALE LINEARSCALE_PRESSURE
_PUSH_PAR _IO_P1_AI_01
__TMPR3 := _CALL ANY_TO_UINT
__TMPR__LINEARSCALE__RAW_INP := __TMPR3
__FBL_RET := _PUSHCALLFB LINEARSCALE LINEARSCALE_FLOW
__TMPR3 := LINEARSCALE_PRESSURE [ __CDINT0000000C ]
PRESSURE_IN := __TMPR3
__TMPR3 := LINEARSCALE_FLOW [ __CDINT0000000C ]
FLOWRATE := __TMPR3
_GOTO __LAB2
__LAB1 :
CONTACTOR_STATUS := CMD_RUN

View File

@@ -1,8 +1,8 @@
PROGRAM Control
(* CURRENT TIME IN SECONDS... this doesn't really correlate to anything other than a second counter *)
(* time_CurrentTime := ANY_TO_DINT( __SYSVA_CYCLEDATE) / 1000;*)
Epoch_Time_1(TRUE);
time_CurrentTime := ANY_TO_DINT(Epoch_Time_1.Epoch);
CurrentTimeRTC(TRUE);
time_CurrentTime := ANY_TO_DINT(CurrentTimeRTC.Epoch);
(*IO Mapping*)
@@ -12,7 +12,9 @@ IF NOT Test_Mode THEN
Auto_Mode := DigitalInput_Status_2;
Hand_Mode := DigitalInput_Status_3;
LinearScale_Pressure(13107.0, 65535.0, Pressure_EU_Min, Pressure_EU_Max, ANY_TO_REAL(_IO_P1_AI_00));
LinearScale_Flow(13107.0, 65535.0, Flow_EU_Min, Flow_EU_Max, ANY_TO_REAL(_IO_P1_AI_01));
Pressure_In := LinearScale_Pressure.EU_Out;
Flowrate := LinearScale_Flow.EU_Out;
ELSE
Contactor_Status := cmd_Run;
VoltageOK := TRUE;

View File

@@ -1,6 +1,7 @@
READDOWNHOLEDATA
CONTROL
E300DATA
CONTROL
FLOWTOTALIZER
RA_CIP_ELECTRICAL_ENERGY_OBJ
RA_E300_OUTPUT_CONTROL
READE300IO

View File

@@ -1,76 +1,76 @@
__TMPV1 := __EPOCH_TIME [ __DINT_NULL ]
__TMPB1 := __TMPV1 [ __DINT_NULL ]
__TMPV2 := __EPOCH_TIME [ __CDINT0000000C ]
__TMPV2 := __EPOCH_TIME [ __CDINT00000018 ]
__TMPB__RTC_READ__ENABLE := __TMPB1
__FBL_RET := _PUSHCALLFB RTC_READ __TMPV2
__TMPI1 := __CDINT00000002 + __CDINT00000002
__TMPI2 := __CDINT0000000C + __TMPI1
__TMPI2 := __CDINT00000018 + __TMPI1
__TMPUIN1 := __EPOCH_TIME [ __TMPI2 ]
_PUSH_PAR __TMPUIN1
__TMPI3 := _CALL ANY_TO_UINT
__TMPB2 := __TMPI3 <> __CDINT00000001
_IF __TMPB2 _GOTO __LAB2
__EPOCH_TIME [ __CDINT00000020 ] := __UINT_NULL
__EPOCH_TIME [ __CDINT0000002C ] := __UINT_NULL
_GOTO __LAB1
__LAB2 :
__TMPB2 := __TMPI3 <> __CDINT00000002
_IF __TMPB2 _GOTO __LAB3
__EPOCH_TIME [ __CDINT00000020 ] := __CUINT0000001F
__EPOCH_TIME [ __CDINT0000002C ] := __CUINT0000001F
_GOTO __LAB1
__LAB3 :
__TMPB2 := __TMPI3 <> __CDINT00000003
_IF __TMPB2 _GOTO __LAB4
__EPOCH_TIME [ __CDINT00000020 ] := __CUINT0000003B
__EPOCH_TIME [ __CDINT0000002C ] := __CUINT0000003B
_GOTO __LAB1
__LAB4 :
__TMPB2 := __TMPI3 <> __CDINT00000004
_IF __TMPB2 _GOTO __LAB5
__EPOCH_TIME [ __CDINT00000020 ] := __CUINT0000005A
__EPOCH_TIME [ __CDINT0000002C ] := __CUINT0000005A
_GOTO __LAB1
__LAB5 :
__TMPB2 := __TMPI3 <> __CDINT00000005
_IF __TMPB2 _GOTO __LAB6
__EPOCH_TIME [ __CDINT00000020 ] := __CUINT00000079
__EPOCH_TIME [ __CDINT0000002C ] := __CUINT00000079
_GOTO __LAB1
__LAB6 :
__TMPB2 := __TMPI3 <> __CDINT00000006
_IF __TMPB2 _GOTO __LAB7
__EPOCH_TIME [ __CDINT00000020 ] := __CUINT00000097
__EPOCH_TIME [ __CDINT0000002C ] := __CUINT00000097
_GOTO __LAB1
__LAB7 :
__TMPB2 := __TMPI3 <> __CDINT00000007
_IF __TMPB2 _GOTO __LAB8
__EPOCH_TIME [ __CDINT00000020 ] := __CUINT000000B5
__EPOCH_TIME [ __CDINT0000002C ] := __CUINT000000B5
_GOTO __LAB1
__LAB8 :
__TMPB2 := __TMPI3 <> __CDINT00000008
_IF __TMPB2 _GOTO __LAB9
__EPOCH_TIME [ __CDINT00000020 ] := __CUINT000000D4
__EPOCH_TIME [ __CDINT0000002C ] := __CUINT000000D4
_GOTO __LAB1
__LAB9 :
__TMPB2 := __TMPI3 <> __CDINT00000009
_IF __TMPB2 _GOTO __LABa
__EPOCH_TIME [ __CDINT00000020 ] := __CUINT000000F3
__EPOCH_TIME [ __CDINT0000002C ] := __CUINT000000F3
_GOTO __LAB1
__LABa :
__TMPB2 := __TMPI3 <> __CDINT0000000A
_IF __TMPB2 _GOTO __LABb
__EPOCH_TIME [ __CDINT00000020 ] := __CUINT00000111
__EPOCH_TIME [ __CDINT0000002C ] := __CUINT00000111
_GOTO __LAB1
__LABb :
__TMPB2 := __TMPI3 <> __CDINT0000000B
_IF __TMPB2 _GOTO __LABc
__EPOCH_TIME [ __CDINT00000020 ] := __CUINT00000130
__EPOCH_TIME [ __CDINT0000002C ] := __CUINT00000130
_GOTO __LAB1
__LABc :
__TMPB2 := __TMPI3 <> __CDINT0000000C
_IF __TMPB2 _GOTO __LABd
__EPOCH_TIME [ __CDINT00000020 ] := __CUINT0000014E
__EPOCH_TIME [ __CDINT0000002C ] := __CUINT0000014E
_GOTO __LAB1
__LABd :
__LAB1 :
__TMPI1 := __CDINT00000002 + __DINT_NULL
__TMPI2 := __CDINT0000000C + __TMPI1
__TMPI2 := __CDINT00000018 + __TMPI1
__TMPUIN1 := __EPOCH_TIME [ __TMPI2 ]
_PUSH_PAR __TMPUIN1
__TMPI3 := _CALL ANY_TO_UINT
@@ -80,13 +80,13 @@ __TMPI4 := _CALL MOD
__TMPB2 := __TMPI4 = __DINT_NULL
_IF _NOT __TMPB2 _GOTO __LABe
__TMPI5 := __CDINT00000002 + __CDINT00000002
__TMPI6 := __CDINT0000000C + __TMPI5
__TMPI6 := __CDINT00000018 + __TMPI5
__TMPUIN2 := __EPOCH_TIME [ __TMPI6 ]
__TMPB3 := __TMPUIN2 > __CUINT00000002
_IF _NOT __TMPB3 _GOTO __LABf
__TMPUIN3 := __EPOCH_TIME [ __CDINT00000020 ]
__TMPUIN3 := __EPOCH_TIME [ __CDINT0000002C ]
__TMPUIN3 := __TMPUIN3 + __CUINT00000001
__EPOCH_TIME [ __CDINT00000020 ] := __TMPUIN3
__EPOCH_TIME [ __CDINT0000002C ] := __TMPUIN3
_GOTO __LAB10
__LABf :
__LAB10 :
@@ -94,7 +94,7 @@ _GOTO __LAB11
__LABe :
__LAB11 :
__TMPI1 := __CDINT00000002 + __DINT_NULL
__TMPI2 := __CDINT0000000C + __TMPI1
__TMPI2 := __CDINT00000018 + __TMPI1
__TMPUIN1 := __EPOCH_TIME [ __TMPI2 ]
_PUSH_PAR __CDINT000007B2
__TMPUIN2 := _CALL ANY_TO_DINT
@@ -104,10 +104,10 @@ __TMPULI1 := _CALL ANY_TO_UINT
_PUSH_PAR __CDINT01E1853E
__TMPULI2 := _CALL ANY_TO_DINT
__TMPULI1 := __TMPULI1 * __TMPULI2
__EPOCH_TIME [ __CDINT00000024 ] := __TMPULI1
__TMPUIN1 := __EPOCH_TIME [ __CDINT00000020 ]
__EPOCH_TIME [ __CDINT00000030 ] := __TMPULI1
__TMPUIN1 := __EPOCH_TIME [ __CDINT0000002C ]
__TMPI1 := __CDINT00000002 + __CDINT00000004
__TMPI2 := __CDINT0000000C + __TMPI1
__TMPI2 := __CDINT00000018 + __TMPI1
__TMPUIN2 := __EPOCH_TIME [ __TMPI2 ]
__TMPUIN1 := __TMPUIN1 + __TMPUIN2
_PUSH_PAR __CDINT00015180
@@ -115,28 +115,28 @@ __TMPUIN3 := _CALL ANY_TO_DINT
__TMPUIN1 := __TMPUIN1 * __TMPUIN3
_PUSH_PAR __TMPUIN1
__TMPULI1 := _CALL ANY_TO_UINT
__EPOCH_TIME [ __CDINT0000002C ] := __TMPULI1
__EPOCH_TIME [ __CDINT00000038 ] := __TMPULI1
__TMPI1 := __CDINT00000002 + __CDINT00000006
__TMPI2 := __CDINT0000000C + __TMPI1
__TMPI2 := __CDINT00000018 + __TMPI1
__TMPUIN1 := __EPOCH_TIME [ __TMPI2 ]
__TMPUIN1 := __TMPUIN1 * __CUINT00000E10
_PUSH_PAR __TMPUIN1
__TMPULI1 := _CALL ANY_TO_UINT
__EPOCH_TIME [ __CDINT0000003C ] := __TMPULI1
__EPOCH_TIME [ __CDINT00000048 ] := __TMPULI1
__TMPI1 := __CDINT00000002 + __CDINT00000008
__TMPI2 := __CDINT0000000C + __TMPI1
__TMPI2 := __CDINT00000018 + __TMPI1
__TMPUIN1 := __EPOCH_TIME [ __TMPI2 ]
__TMPUIN1 := __TMPUIN1 * __CUINT0000003C
_PUSH_PAR __TMPUIN1
__TMPULI1 := _CALL ANY_TO_UINT
__EPOCH_TIME [ __CDINT00000034 ] := __TMPULI1
__TMPULI1 := __EPOCH_TIME [ __CDINT00000024 ]
__TMPULI2 := __EPOCH_TIME [ __CDINT0000002C ]
__EPOCH_TIME [ __CDINT00000040 ] := __TMPULI1
__TMPULI1 := __EPOCH_TIME [ __CDINT00000030 ]
__TMPULI2 := __EPOCH_TIME [ __CDINT00000038 ]
__TMPULI1 := __TMPULI1 + __TMPULI2
__TMPULI3 := __EPOCH_TIME [ __CDINT0000003C ]
__TMPULI3 := __EPOCH_TIME [ __CDINT00000048 ]
__TMPULI1 := __TMPULI1 + __TMPULI3
__TMPI1 := __CDINT00000002 + __CDINT0000000A
__TMPI2 := __CDINT0000000C + __TMPI1
__TMPI2 := __CDINT00000018 + __TMPI1
__TMPUIN1 := __EPOCH_TIME [ __TMPI2 ]
_PUSH_PAR __TMPUIN1
__TMPULI4 := _CALL ANY_TO_UINT

View File

@@ -55,6 +55,8 @@ E300_READENERGY.INT_COP.__DTI_SRC@E300DATA,<NOT USED>,SINT
E300_READENERGY.INT_COP.__DTI_DEST@E300DATA,<NOT USED>,SINT
MODBUSCYCLETIMER.IN@READDOWNHOLEDATA,__TMPB__TON__IN,BOOL
MODBUSCYCLETIMER.PT@READDOWNHOLEDATA,MODBUSCYCLETIME,TIME
TON_TOTALIZER.IN@FLOWTOTALIZER,__TMPB__TON__IN,BOOL
TON_TOTALIZER.PT@FLOWTOTALIZER,__CTIME00002710,TIME
WRITEE300CONFIGDATA.FBEN@E300DATA,TRUE,BOOL
WRITEE300CONFIGDATA.IPADDRESS@E300DATA,E300_IP_ADDRESS,STRING
WRITEE300CONFIGDATA.UPDATERATE_MS@E300DATA,E300_SCAN_RATE,UINT
@@ -72,7 +74,7 @@ E300_OUTPUT.FBEN@E300DATA,E300_OUTPUT_ENABLE,BOOL
E300_OUTPUT.IPADDRESS@E300DATA,E300_IP_ADDRESS,STRING
E300_OUTPUT.OUTPUTNUMBER@E300DATA,E300_OUTPUT_NUMBER,USINT
E300_OUTPUT.OUTPUTSETTING@E300DATA,CMD_RUN,BOOL
EPOCH_TIME_1.RTC_READ_ENABLED@CONTROL,TRUE,BOOL
CURRENTTIMERTC.RTC_READ_ENABLED,TRUE,BOOL
D2S_FLASETTING.INP_DINT@E300DATA,__TMPUDI__UDINT_TO_USINT__INP_DINT,UDINT
WRITEE300CONFIGDATA.FBEN_FTRIG.CLK@E300DATA,__TMPB__F_TRIG__CLK,BOOL
E300_OUTPUT.OUTPUTSETTING_FTRIG.CLK@E300DATA,__TMPB__F_TRIG__CLK,BOOL
@@ -166,6 +168,11 @@ LINEARSCALE_PRESSURE.RAW_MAX@CONTROL,__TMPR2@CONTROL,REAL
LINEARSCALE_PRESSURE.EU_MIN@CONTROL,PRESSURE_EU_MIN,REAL
LINEARSCALE_PRESSURE.EU_MAX@CONTROL,PRESSURE_EU_MAX,REAL
LINEARSCALE_PRESSURE.RAW_INP@CONTROL,__TMPR__LINEARSCALE__RAW_INP,REAL
LINEARSCALE_FLOW.RAW_MIN@CONTROL,__TMPR1@CONTROL,REAL
LINEARSCALE_FLOW.RAW_MAX@CONTROL,__TMPR2@CONTROL,REAL
LINEARSCALE_FLOW.EU_MIN@CONTROL,FLOW_EU_MIN,REAL
LINEARSCALE_FLOW.EU_MAX@CONTROL,FLOW_EU_MAX,REAL
LINEARSCALE_FLOW.RAW_INP@CONTROL,__TMPR__LINEARSCALE__RAW_INP,REAL
E300_READ_DIGITALINPUT0.FBEN@E300DATA,TRUE,BOOL
E300_READ_DIGITALINPUT0.IPADDRESS@E300DATA,E300_IP_ADDRESS,STRING
E300_READ_DIGITALINPUT0.UPDATERATE_MS@E300DATA,E300_SCAN_RATE,UINT
@@ -200,7 +207,7 @@ U2S_UNDERPFLAGTRIPLEVEL.SINT_SRC_1@E300DATA,__TMPUSI__USINT_TO_SINT__SINT_SRC_1,
U2S_UNDERPFLAGWARNINGLEVEL.SINT_SRC_1@E300DATA,__TMPUSI__USINT_TO_SINT__SINT_SRC_1,USINT
U2S_OVERPFLAGTRIPLEVEL.SINT_SRC_1@E300DATA,__TMPUSI__USINT_TO_SINT__SINT_SRC_1,USINT
U2S_OVERPFLAGWARNINGLEVEL.SINT_SRC_1@E300DATA,__TMPUSI__USINT_TO_SINT__SINT_SRC_1,USINT
EPOCH_TIME_1.RTC_READ_1.ENABLE@CONTROL,__TMPB__RTC_READ__ENABLE,BOOL
CURRENTTIMERTC.RTC_READ_1.ENABLE,__TMPB__RTC_READ__ENABLE,BOOL
RTRIG_AUTOMODE.CLK@CONTROL,AUTO_MODE,BOOL
WRITEE300CONFIGDATA.MSGOBJREAD_Q_RTRIG.CLK@E300DATA,__TMPB__R_TRIG__CLK,BOOL
WRITEE300CONFIGDATA.FBEN_RTRIG.CLK@E300DATA,__TMPB__R_TRIG__CLK,BOOL

View File

@@ -1,18 +1,18 @@
USINT_TO_UINT:
USINT_TO_DINT:
USINT_TO_UINT:
USINT_TO_SINT:
EPOCH_TIME:
READE300TRIPRESET:
READE300CONFIG:
READE300TRIPRESET:
WRITEE300TRIPRESET:
READE300IO:
WRITEE300CONFIG:
UINT_TO_USINT:
RA_E300_OUTPUT_CONTROL:
USINT_TO_UDINT:
UINT_TO_USINT:
READE300PARAM:
USINT_TO_UDINT:
UDINT_TO_USINT:
LINEARSCALE:
RA_CIP_ELECTRICAL_ENERGY_OBJ:
DINT_TO_USINT:
LINEARSCALE:
SINT_TO_USINT:
DINT_TO_USINT:

View File

@@ -1,51 +1,51 @@
0::0046-0003::-------------------- Pre-build resource: MICRO820 Configuration: MICRO820 --------------
0::0044-0003::Pre-compiling for 2080LC2020QWBI
0::0000-0003::RA_CIP_ELECTRICAL_ENERGY_OBJ
0:C:\USERS\PATRICK\DOCUMENTS\HENRY_PUMP\IPP_PANEL\CONTROLLER\CONTROLLER\MICRO820\MICRO820\RA_CIP_ELECTRICAL_ENERGY_OBJ:0000-0003::RA_E300_OUTPUT_CONTROL
0:C:\USERS\PATRICK\DOCUMENTS\HENRY_PUMP\IPP_PANEL\CONTROLLER\CONTROLLER\MICRO820\MICRO820\RA_E300_OUTPUT_CONTROL:0000-0003::READE300IO
0:C:\USERS\PATRICK\DOCUMENTS\HENRY_PUMP\IPP_PANEL\CONTROLLER\CONTROLLER\MICRO820\MICRO820\READE300IO:0000-0003::READE300CONFIG
0:C:\USERS\PATRICK\DOCUMENTS\HENRY_PUMP\IPP_PANEL\CONTROLLER\CONTROLLER\MICRO820\MICRO820\READE300CONFIG:0000-0003::READE300TRIPRESET
0:C:\USERS\PATRICK\DOCUMENTS\HENRY_PUMP\IPP_PANEL\CONTROLLER\CONTROLLER\MICRO820\MICRO820\READE300TRIPRESET:0000-0003::READE300PARAM
0:C:\USERS\PATRICK\DOCUMENTS\HENRY_PUMP\IPP_PANEL\CONTROLLER\CONTROLLER\MICRO820\MICRO820\READE300PARAM:0000-0003::USINT_TO_UDINT
0:C:\USERS\PATRICK\DOCUMENTS\HENRY_PUMP\IPP_PANEL\CONTROLLER\CONTROLLER\MICRO820\MICRO820\USINT_TO_UDINT:0000-0003::USINT_TO_DINT
0:C:\USERS\PATRICK\DOCUMENTS\HENRY_PUMP\IPP_PANEL\CONTROLLER\CONTROLLER\MICRO820\MICRO820\USINT_TO_DINT:0000-0003::USINT_TO_UINT
0:C:\USERS\PATRICK\DOCUMENTS\HENRY_PUMP\IPP_PANEL\CONTROLLER\CONTROLLER\MICRO820\MICRO820\USINT_TO_UINT:0000-0003::USINT_TO_SINT
0:C:\USERS\PATRICK\DOCUMENTS\HENRY_PUMP\IPP_PANEL\CONTROLLER\CONTROLLER\MICRO820\MICRO820\USINT_TO_SINT:0000-0003::UDINT_TO_USINT
0:C:\USERS\PATRICK\DOCUMENTS\HENRY_PUMP\IPP_PANEL\CONTROLLER\CONTROLLER\MICRO820\MICRO820\UDINT_TO_USINT:0000-0003::DINT_TO_USINT
0:C:\USERS\PATRICK\DOCUMENTS\HENRY_PUMP\IPP_PANEL\CONTROLLER\CONTROLLER\MICRO820\MICRO820\DINT_TO_USINT:0000-0003::UINT_TO_USINT
0:C:\USERS\PATRICK\DOCUMENTS\HENRY_PUMP\IPP_PANEL\CONTROLLER\CONTROLLER\MICRO820\MICRO820\UINT_TO_USINT:0000-0003::SINT_TO_USINT
0:C:\USERS\PATRICK\DOCUMENTS\HENRY_PUMP\IPP_PANEL\CONTROLLER\CONTROLLER\MICRO820\MICRO820\SINT_TO_USINT:0000-0003::WRITEE300CONFIG
0:C:\USERS\PATRICK\DOCUMENTS\HENRY_PUMP\IPP_PANEL\CONTROLLER\CONTROLLER\MICRO820\MICRO820\WRITEE300CONFIG:0000-0003::WRITEE300TRIPRESET
0:C:\USERS\PATRICK\DOCUMENTS\HENRY_PUMP\IPP_PANEL\CONTROLLER\CONTROLLER\MICRO820\MICRO820\WRITEE300TRIPRESET:0000-0003::LINEARSCALE
0:C:\USERS\PATRICK\DOCUMENTS\HENRY_PUMP\IPP_PANEL\CONTROLLER\CONTROLLER\MICRO820\MICRO820\LINEARSCALE:0000-0003::EPOCH_TIME
0:C:\USERS\PATRICK\DOCUMENTS\HENRY_PUMP\IPP_PANEL\CONTROLLER\CONTROLLER\MICRO820\MICRO820\EPOCH_TIME:0000-0003::READDOWNHOLEDATA
0:C:\USERS\PATRICK\DOCUMENTS\HENRY_PUMP\IPP_PANEL\CONTROLLER\CONTROLLER\MICRO820\MICRO820\READDOWNHOLEDATA:0000-0003::CONTROL
0:C:\USERS\PATRICK\DOCUMENTS\HENRY_PUMP\IPP_PANEL\CONTROLLER\CONTROLLER\MICRO820\MICRO820\CONTROL:0000-0003::E300DATA
0:C:\USERS\PATRICK\DOCUMENTS\HENRY_PUMP\IPP_PANEL\CONTROLLER\CONTROLLER\MICRO820\MICRO820\E300DATA:0002-0003::MICRO820: 0 error(s), 0 warning(s)
0:C:\USERS\PATRICK\HENRY_PUMP\E300-IPP\CONTROLLER\CONTROLLER\MICRO820\MICRO820\RA_CIP_ELECTRICAL_ENERGY_OBJ:0000-0003::RA_E300_OUTPUT_CONTROL
0:C:\USERS\PATRICK\HENRY_PUMP\E300-IPP\CONTROLLER\CONTROLLER\MICRO820\MICRO820\RA_E300_OUTPUT_CONTROL:0000-0003::READE300IO
0:C:\USERS\PATRICK\HENRY_PUMP\E300-IPP\CONTROLLER\CONTROLLER\MICRO820\MICRO820\READE300IO:0000-0003::READE300CONFIG
0:C:\USERS\PATRICK\HENRY_PUMP\E300-IPP\CONTROLLER\CONTROLLER\MICRO820\MICRO820\READE300CONFIG:0000-0003::READE300TRIPRESET
0:C:\USERS\PATRICK\HENRY_PUMP\E300-IPP\CONTROLLER\CONTROLLER\MICRO820\MICRO820\READE300TRIPRESET:0000-0003::READE300PARAM
0:C:\USERS\PATRICK\HENRY_PUMP\E300-IPP\CONTROLLER\CONTROLLER\MICRO820\MICRO820\READE300PARAM:0000-0003::USINT_TO_UDINT
0:C:\USERS\PATRICK\HENRY_PUMP\E300-IPP\CONTROLLER\CONTROLLER\MICRO820\MICRO820\USINT_TO_UDINT:0000-0003::USINT_TO_DINT
0:C:\USERS\PATRICK\HENRY_PUMP\E300-IPP\CONTROLLER\CONTROLLER\MICRO820\MICRO820\USINT_TO_DINT:0000-0003::USINT_TO_UINT
0:C:\USERS\PATRICK\HENRY_PUMP\E300-IPP\CONTROLLER\CONTROLLER\MICRO820\MICRO820\USINT_TO_UINT:0000-0003::USINT_TO_SINT
0:C:\USERS\PATRICK\HENRY_PUMP\E300-IPP\CONTROLLER\CONTROLLER\MICRO820\MICRO820\USINT_TO_SINT:0000-0003::UDINT_TO_USINT
0:C:\USERS\PATRICK\HENRY_PUMP\E300-IPP\CONTROLLER\CONTROLLER\MICRO820\MICRO820\UDINT_TO_USINT:0000-0003::DINT_TO_USINT
0:C:\USERS\PATRICK\HENRY_PUMP\E300-IPP\CONTROLLER\CONTROLLER\MICRO820\MICRO820\DINT_TO_USINT:0000-0003::UINT_TO_USINT
0:C:\USERS\PATRICK\HENRY_PUMP\E300-IPP\CONTROLLER\CONTROLLER\MICRO820\MICRO820\UINT_TO_USINT:0000-0003::SINT_TO_USINT
0:C:\USERS\PATRICK\HENRY_PUMP\E300-IPP\CONTROLLER\CONTROLLER\MICRO820\MICRO820\SINT_TO_USINT:0000-0003::WRITEE300CONFIG
0:C:\USERS\PATRICK\HENRY_PUMP\E300-IPP\CONTROLLER\CONTROLLER\MICRO820\MICRO820\WRITEE300CONFIG:0000-0003::WRITEE300TRIPRESET
0:C:\USERS\PATRICK\HENRY_PUMP\E300-IPP\CONTROLLER\CONTROLLER\MICRO820\MICRO820\WRITEE300TRIPRESET:0000-0003::LINEARSCALE
0:C:\USERS\PATRICK\HENRY_PUMP\E300-IPP\CONTROLLER\CONTROLLER\MICRO820\MICRO820\LINEARSCALE:0000-0003::EPOCH_TIME
0:C:\USERS\PATRICK\HENRY_PUMP\E300-IPP\CONTROLLER\CONTROLLER\MICRO820\MICRO820\EPOCH_TIME:0000-0003::READDOWNHOLEDATA
0:C:\USERS\PATRICK\HENRY_PUMP\E300-IPP\CONTROLLER\CONTROLLER\MICRO820\MICRO820\READDOWNHOLEDATA:0000-0003::E300DATA
0:C:\USERS\PATRICK\HENRY_PUMP\E300-IPP\CONTROLLER\CONTROLLER\MICRO820\MICRO820\E300DATA:0000-0003::CONTROL
0:C:\USERS\PATRICK\HENRY_PUMP\E300-IPP\CONTROLLER\CONTROLLER\MICRO820\MICRO820\CONTROL:0000-0003::FLOWTOTALIZER
0:C:\USERS\PATRICK\HENRY_PUMP\E300-IPP\CONTROLLER\CONTROLLER\MICRO820\MICRO820\FLOWTOTALIZER:0002-0003::MICRO820: 0 error(s), 0 warning(s)
0::0006-0003::-------------------- Build resource: MICRO820 Configuration: MICRO820 --------------
0::0001-0003::Compiling for 2080LC2020QWBI
0::0000-0003::RA_CIP_ELECTRICAL_ENERGY_OBJ
0:C:\USERS\PATRICK\DOCUMENTS\HENRY_PUMP\IPP_PANEL\CONTROLLER\CONTROLLER\MICRO820\MICRO820\RA_CIP_ELECTRICAL_ENERGY_OBJ:0000-0003::RA_E300_OUTPUT_CONTROL
0:C:\USERS\PATRICK\DOCUMENTS\HENRY_PUMP\IPP_PANEL\CONTROLLER\CONTROLLER\MICRO820\MICRO820\RA_E300_OUTPUT_CONTROL:0000-0003::READE300IO
0:C:\USERS\PATRICK\DOCUMENTS\HENRY_PUMP\IPP_PANEL\CONTROLLER\CONTROLLER\MICRO820\MICRO820\READE300IO:0000-0003::READE300CONFIG
0:C:\USERS\PATRICK\DOCUMENTS\HENRY_PUMP\IPP_PANEL\CONTROLLER\CONTROLLER\MICRO820\MICRO820\READE300CONFIG:0000-0003::READE300TRIPRESET
0:C:\USERS\PATRICK\DOCUMENTS\HENRY_PUMP\IPP_PANEL\CONTROLLER\CONTROLLER\MICRO820\MICRO820\READE300TRIPRESET:0000-0003::READE300PARAM
0:C:\USERS\PATRICK\DOCUMENTS\HENRY_PUMP\IPP_PANEL\CONTROLLER\CONTROLLER\MICRO820\MICRO820\READE300PARAM:0000-0003::USINT_TO_UDINT
0:C:\USERS\PATRICK\DOCUMENTS\HENRY_PUMP\IPP_PANEL\CONTROLLER\CONTROLLER\MICRO820\MICRO820\USINT_TO_UDINT:0000-0003::USINT_TO_DINT
0:C:\USERS\PATRICK\DOCUMENTS\HENRY_PUMP\IPP_PANEL\CONTROLLER\CONTROLLER\MICRO820\MICRO820\USINT_TO_DINT:0000-0003::USINT_TO_UINT
0:C:\USERS\PATRICK\DOCUMENTS\HENRY_PUMP\IPP_PANEL\CONTROLLER\CONTROLLER\MICRO820\MICRO820\USINT_TO_UINT:0000-0003::USINT_TO_SINT
0:C:\USERS\PATRICK\DOCUMENTS\HENRY_PUMP\IPP_PANEL\CONTROLLER\CONTROLLER\MICRO820\MICRO820\USINT_TO_SINT:0000-0003::UDINT_TO_USINT
0:C:\USERS\PATRICK\DOCUMENTS\HENRY_PUMP\IPP_PANEL\CONTROLLER\CONTROLLER\MICRO820\MICRO820\UDINT_TO_USINT:0000-0003::DINT_TO_USINT
0:C:\USERS\PATRICK\DOCUMENTS\HENRY_PUMP\IPP_PANEL\CONTROLLER\CONTROLLER\MICRO820\MICRO820\DINT_TO_USINT:0000-0003::UINT_TO_USINT
0:C:\USERS\PATRICK\DOCUMENTS\HENRY_PUMP\IPP_PANEL\CONTROLLER\CONTROLLER\MICRO820\MICRO820\UINT_TO_USINT:0000-0003::SINT_TO_USINT
0:C:\USERS\PATRICK\DOCUMENTS\HENRY_PUMP\IPP_PANEL\CONTROLLER\CONTROLLER\MICRO820\MICRO820\SINT_TO_USINT:0000-0003::WRITEE300CONFIG
0:C:\USERS\PATRICK\DOCUMENTS\HENRY_PUMP\IPP_PANEL\CONTROLLER\CONTROLLER\MICRO820\MICRO820\WRITEE300CONFIG:0000-0003::WRITEE300TRIPRESET
0:C:\USERS\PATRICK\DOCUMENTS\HENRY_PUMP\IPP_PANEL\CONTROLLER\CONTROLLER\MICRO820\MICRO820\WRITEE300TRIPRESET:0000-0003::LINEARSCALE
0:C:\USERS\PATRICK\DOCUMENTS\HENRY_PUMP\IPP_PANEL\CONTROLLER\CONTROLLER\MICRO820\MICRO820\LINEARSCALE:0000-0003::EPOCH_TIME
0:C:\USERS\PATRICK\DOCUMENTS\HENRY_PUMP\IPP_PANEL\CONTROLLER\CONTROLLER\MICRO820\MICRO820\EPOCH_TIME:0000-0003::READDOWNHOLEDATA
0:C:\USERS\PATRICK\DOCUMENTS\HENRY_PUMP\IPP_PANEL\CONTROLLER\CONTROLLER\MICRO820\MICRO820\READDOWNHOLEDATA:0000-0003::CONTROL
0:C:\USERS\PATRICK\DOCUMENTS\HENRY_PUMP\IPP_PANEL\CONTROLLER\CONTROLLER\MICRO820\MICRO820\CONTROL:0000-0003::E300DATA
0:C:\USERS\PATRICK\DOCUMENTS\HENRY_PUMP\IPP_PANEL\CONTROLLER\CONTROLLER\MICRO820\MICRO820\E300DATA:0003-0003::Linking for 2080LC2020QWBI
0:C:\USERS\PATRICK\DOCUMENTS\HENRY_PUMP\IPP_PANEL\CONTROLLER\CONTROLLER\MICRO820\MICRO820\E300DATA:0,0:0039-0001::WARNING: The structure of the user defined function block instance EPOCH_TIME_1@CONTROL has changed and will be reinitialized.
0:C:\USERS\PATRICK\DOCUMENTS\HENRY_PUMP\IPP_PANEL\CONTROLLER\CONTROLLER\MICRO820\MICRO820\E300DATA:0002-0003:: 0 error(s), 1 warning(s)
0:C:\USERS\PATRICK\DOCUMENTS\HENRY_PUMP\IPP_PANEL\CONTROLLER\CONTROLLER\MICRO820\MICRO820\E300DATA:0002-0003::MICRO820: 0 error(s), 1 warning(s)
0:C:\USERS\PATRICK\HENRY_PUMP\E300-IPP\CONTROLLER\CONTROLLER\MICRO820\MICRO820\RA_CIP_ELECTRICAL_ENERGY_OBJ:0000-0003::RA_E300_OUTPUT_CONTROL
0:C:\USERS\PATRICK\HENRY_PUMP\E300-IPP\CONTROLLER\CONTROLLER\MICRO820\MICRO820\RA_E300_OUTPUT_CONTROL:0000-0003::READE300IO
0:C:\USERS\PATRICK\HENRY_PUMP\E300-IPP\CONTROLLER\CONTROLLER\MICRO820\MICRO820\READE300IO:0000-0003::READE300CONFIG
0:C:\USERS\PATRICK\HENRY_PUMP\E300-IPP\CONTROLLER\CONTROLLER\MICRO820\MICRO820\READE300CONFIG:0000-0003::READE300TRIPRESET
0:C:\USERS\PATRICK\HENRY_PUMP\E300-IPP\CONTROLLER\CONTROLLER\MICRO820\MICRO820\READE300TRIPRESET:0000-0003::READE300PARAM
0:C:\USERS\PATRICK\HENRY_PUMP\E300-IPP\CONTROLLER\CONTROLLER\MICRO820\MICRO820\READE300PARAM:0000-0003::USINT_TO_UDINT
0:C:\USERS\PATRICK\HENRY_PUMP\E300-IPP\CONTROLLER\CONTROLLER\MICRO820\MICRO820\USINT_TO_UDINT:0000-0003::USINT_TO_DINT
0:C:\USERS\PATRICK\HENRY_PUMP\E300-IPP\CONTROLLER\CONTROLLER\MICRO820\MICRO820\USINT_TO_DINT:0000-0003::USINT_TO_UINT
0:C:\USERS\PATRICK\HENRY_PUMP\E300-IPP\CONTROLLER\CONTROLLER\MICRO820\MICRO820\USINT_TO_UINT:0000-0003::USINT_TO_SINT
0:C:\USERS\PATRICK\HENRY_PUMP\E300-IPP\CONTROLLER\CONTROLLER\MICRO820\MICRO820\USINT_TO_SINT:0000-0003::UDINT_TO_USINT
0:C:\USERS\PATRICK\HENRY_PUMP\E300-IPP\CONTROLLER\CONTROLLER\MICRO820\MICRO820\UDINT_TO_USINT:0000-0003::DINT_TO_USINT
0:C:\USERS\PATRICK\HENRY_PUMP\E300-IPP\CONTROLLER\CONTROLLER\MICRO820\MICRO820\DINT_TO_USINT:0000-0003::UINT_TO_USINT
0:C:\USERS\PATRICK\HENRY_PUMP\E300-IPP\CONTROLLER\CONTROLLER\MICRO820\MICRO820\UINT_TO_USINT:0000-0003::SINT_TO_USINT
0:C:\USERS\PATRICK\HENRY_PUMP\E300-IPP\CONTROLLER\CONTROLLER\MICRO820\MICRO820\SINT_TO_USINT:0000-0003::WRITEE300CONFIG
0:C:\USERS\PATRICK\HENRY_PUMP\E300-IPP\CONTROLLER\CONTROLLER\MICRO820\MICRO820\WRITEE300CONFIG:0000-0003::WRITEE300TRIPRESET
0:C:\USERS\PATRICK\HENRY_PUMP\E300-IPP\CONTROLLER\CONTROLLER\MICRO820\MICRO820\WRITEE300TRIPRESET:0000-0003::LINEARSCALE
0:C:\USERS\PATRICK\HENRY_PUMP\E300-IPP\CONTROLLER\CONTROLLER\MICRO820\MICRO820\LINEARSCALE:0000-0003::EPOCH_TIME
0:C:\USERS\PATRICK\HENRY_PUMP\E300-IPP\CONTROLLER\CONTROLLER\MICRO820\MICRO820\EPOCH_TIME:0000-0003::READDOWNHOLEDATA
0:C:\USERS\PATRICK\HENRY_PUMP\E300-IPP\CONTROLLER\CONTROLLER\MICRO820\MICRO820\READDOWNHOLEDATA:0000-0003::E300DATA
0:C:\USERS\PATRICK\HENRY_PUMP\E300-IPP\CONTROLLER\CONTROLLER\MICRO820\MICRO820\E300DATA:0000-0003::CONTROL
0:C:\USERS\PATRICK\HENRY_PUMP\E300-IPP\CONTROLLER\CONTROLLER\MICRO820\MICRO820\CONTROL:0000-0003::FLOWTOTALIZER
0:C:\USERS\PATRICK\HENRY_PUMP\E300-IPP\CONTROLLER\CONTROLLER\MICRO820\MICRO820\FLOWTOTALIZER:0003-0003::Linking for 2080LC2020QWBI
0:C:\USERS\PATRICK\HENRY_PUMP\E300-IPP\CONTROLLER\CONTROLLER\MICRO820\MICRO820\FLOWTOTALIZER:0002-0003::MICRO820: 0 error(s), 0 warning(s)

View File

@@ -1,10 +1,10 @@
[MEMORY]
Offset0=0x44AC
Offset1=0x54AC
Offset2=0x54AC
Offset3=0x54AC
Memory Usage Estimate(Code)=0x9FA0
Memory Usage Estimate(Data)=0x9D58
Offset0=0x4534
Offset1=0x5534
Offset2=0x5534
Offset3=0x5534
Memory Usage Estimate(Code)=0xA104
Memory Usage Estimate(Data)=0x9E04
Memory Usage Estimate(Retain)=0x50
Memory Usage Estimate(Temporary variables)=0x28B4
Memory Usage Estimate(Temporary variables)=0x28CC
Offset4=0x414

View File

@@ -1,10 +0,0 @@
[MEMORY]
Offset0=0x44AC
Offset1=0x54AC
Offset2=0x54AC
Offset3=0x54AC
Memory Usage Estimate(Code)=0x9FA0
Memory Usage Estimate(Data)=0x9D58
Memory Usage Estimate(Retain)=0x50
Memory Usage Estimate(Temporary variables)=0x28B4
Offset4=0x414

View File

@@ -1,28 +0,0 @@
[MODIF]
POU=Y
TYPE=Y
LEVEL1=Y
IO=Y
RETAIN=Y
INSTDEF=Y
VARDEF=Y
INIT_INST=Y
ADD_DEL=Y
VARSIZE=Y
IO_DEF=Y
LAST_VA=Y
[RESULT]
ON_LINE=Y
TBL_CONF=Y
CRC_ORG=0x7D4DADCF
CRC_OLD=0x7D4DADCF
CRC_NEW=0x53836E8
DAT_ORG=1468428437
DAT_OLD=1468428437
DAT_NEW=1468429755
VER_ORG=84
VER_OLD=84
VER_NEW=85
CRC_ALL_OLD=0x8082E219
CRC_ALL_NEW=0x5026B093

View File

@@ -1,9 +1,9 @@
[MEMORY]
Memory Usage Estimate(Temporary variables)=0x28BC
Memory Usage Estimate(Temporary variables)=0x28CC
Biggest online change user variable memory block size=0x800
Currently added user variables=0x44
Total data size=0x6D88
User variables size=0x44CC
Maximum size for temporary variables=0x48A8
Memory Usage Estimate(Data)=0x9D54
Free memory for user variables=0xFE0
Currently added user variables=0x0
Total data size=0x6E00
User variables size=0x4534
Maximum size for temporary variables=0x48CC
Memory Usage Estimate(Data)=0x9E00
Free memory for user variables=0x1000

View File

@@ -1,9 +0,0 @@
[MEMORY]
Memory Usage Estimate(Temporary variables)=0x28BC
Biggest online change user variable memory block size=0x800
Currently added user variables=0x44
Total data size=0x6D88
User variables size=0x44CC
Maximum size for temporary variables=0x48A8
Memory Usage Estimate(Data)=0x9D54
Free memory for user variables=0xFE0

View File

@@ -1,3 +1,4 @@
<INPUT>,EPOCH_TIME_1@CONTROL,EPOCH_TIME,RTC_READ_ENABLED,TRUE,BOOL
<INPUT>,CURRENTTIMERTC,EPOCH_TIME,RTC_READ_ENABLED,TRUE,BOOL
<INPUT>,LINEARSCALE_PRESSURE@CONTROL,LINEARSCALE,RAW_MIN,__TMPR1@CONTROL,REAL,RAW_MAX,__TMPR2@CONTROL,REAL,EU_MIN,PRESSURE_EU_MIN,REAL,EU_MAX,PRESSURE_EU_MAX,REAL,RAW_INP,__TMPR__LINEARSCALE__RAW_INP,REAL
<INPUT>,LINEARSCALE_FLOW@CONTROL,LINEARSCALE,RAW_MIN,__TMPR1@CONTROL,REAL,RAW_MAX,__TMPR2@CONTROL,REAL,EU_MIN,FLOW_EU_MIN,REAL,EU_MAX,FLOW_EU_MAX,REAL,RAW_INP,__TMPR__LINEARSCALE__RAW_INP,REAL
<INPUT>,RTRIG_AUTOMODE@CONTROL,R_TRIG,CLK,AUTO_MODE,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

@@ -1,3 +0,0 @@
[MEMORY]
Code Space Free Memory=0x16FD0
Code Space Requirement=0x63D0

Binary file not shown.

Binary file not shown.

View File

@@ -3,5 +3,6 @@
<AcfElementGuid Guid="22fb9760-076e-482b-bcbe-c8fd6362439b" />
<AcfElementGuid Guid="2e293809-2592-4360-9ef5-9e938bc7b980" />
<AcfElementGuid Guid="73aee734-b491-4716-bb8a-e114474b2e0b" />
<AcfElementGuid Guid="88be61f4-7c0b-465f-9894-13192a9bfa6f" />
<AcfElementGuid Guid="a537c79f-58bd-4503-a8bd-4473e96020b3" />
</ProjectElements>

View File

@@ -33,6 +33,9 @@
<AcfElementGuid Guid="825fba0c-a967-4905-b00b-13d3fe1ff759">
<File>WriteE300Config.AcfMlge</File>
</AcfElementGuid>
<AcfElementGuid Guid="88be61f4-7c0b-465f-9894-13192a9bfa6f">
<File>FlowTotalizer.AcfMlge</File>
</AcfElementGuid>
<AcfElementGuid Guid="9e116e82-db64-4872-bda1-ef7ada62d71b">
<File>RA_CIP_ELECTRICAL_ENERGY_OBJ.AcfMlge</File>
</AcfElementGuid>

View File

@@ -4,3 +4,6 @@
<div class='col-xs-6'>
<h3><%= node.vanityname %></h3>
</div>
<div class-"col-xs-2">
<button href="#" data-channelId="<%= channels["ipp.log"].channelId %>" class="data-table btn btn-theme" title="Device Log"><i style='margin-left: 0.5em; cursor: pointer' class="fa fa-th-list icon-theme"></i> Device Log</button>
</div>

View File

@@ -4,11 +4,9 @@
<div class='col-xs-4 text-center'>
<h2>Fluid Level</h2>
<div class="gauge-box">
<!-- <div data-labelheight="10" style="height: 170px; background: transparent; margin: 0 auto;" id="gauge-dhfluidlevel" data-chart="solidgauge" data-nodename="ipp.dhfluidlevel" data-units="ft" data-min="0" data-max="600" data-colors="0.1:#DF5353,0.5:#DDDF0D,0.9:#55BF3B" data-valuefontsize="18px"></div>
<span data-timeupdate="dhfluidlevel"><%= channels["ipp.dhfluidlevel"].timestamp %></span> -->
<div style="height: 170px; background: transparent; margin: 0 auto;">
<gauge type="angular" channel="ipp.dhfluidlevel" max="600" />
</div>
<!-- <div data-labelheight="10" style="height: 170px; background: transparent; margin: 0 auto;" id="gauge-dhfluidlevel" data-chart="solidgauge" data-nodename="ipp.dhfluidlevel" data-units="ft" data-min="0" data-max="600" data-colors="0.1:#DF5353,0.5:#DDDF0D,0.9:#55BF3B" data-valuefontsize="18px"></div> -->
<gauge type="angular" channel="dhfluidlevel" max="600" label="ft." classes="extra" height="250" />
<span data-timeupdate="dhfluidlevel"><%= channels["ipp.dhfluidlevel"].timestamp %></span>
</div>
</div>
<div class='col-xs-8'>
@@ -20,7 +18,8 @@
<div class='col-xs-4 text-center'>
<h2>Downhole Pressure</h2>
<div class="gauge-box">
<div data-labelheight="10" style="height: 170px; background: transparent; margin: 0 auto;" id="gauge-dhintakepressure" data-chart="solidgauge" data-nodename="ipp.dhintakepressure" data-units="PSI" data-min="0" data-max="400" data-colors="0.1:#DF5353,0.5:#DDDF0D,0.9:#55BF3B" data-valuefontsize="18px"></div>
<!-- <div data-labelheight="10" style="height: 170px; background: transparent; margin: 0 auto;" id="gauge-dhintakepressure" data-chart="solidgauge" data-nodename="ipp.dhintakepressure" data-units="PSI" data-min="0" data-max="400" data-colors="0.1:#DF5353,0.5:#DDDF0D,0.9:#55BF3B" data-valuefontsize="18px"></div> -->
<gauge type="angular" channel="dhintakepressure" max="400" label="PSI" classes="extra" height="250" />
<span data-timeupdate="dhintakepressure"><%= channels["ipp.dhintakepressure"].timestamp %></span>
</div>
</div>
@@ -33,7 +32,8 @@
<div class='col-xs-4 text-center'>
<h2>Downhole Temperature</h2>
<div class="gauge-box">
<div data-labelheight="10" style="height: 170px; background: transparent; margin: 0 auto;" id="gauge-dhintaketemperature" data-chart="solidgauge" data-nodename="ipp.dhintaketemperature" data-units=" &deg; F" data-min="0" data-max="400" data-colors="0.1:#DF5353,0.5:#DDDF0D,0.9:#55BF3B" data-valuefontsize="18px"></div>
<!-- <div data-labelheight="10" style="height: 170px; background: transparent; margin: 0 auto;" id="gauge-dhintaketemperature" data-chart="solidgauge" data-nodename="ipp.dhintaketemperature" data-units=" &deg; F" data-min="0" data-max="400" data-colors="0.1:#DF5353,0.5:#DDDF0D,0.9:#55BF3B" data-valuefontsize="18px"></div> -->
<gauge type="angular" channel="dhintaketemperature" max="300" label="deg F" classes="extra" height="250" />
<span data-timeupdate="dhintaketemperature"><%= channels["ipp.dhintaketemperature"].timestamp %></span>
</div>
</div>
@@ -47,7 +47,8 @@
<div class='col-xs-4 text-center'>
<h2>Average Current</h2>
<div class="gauge-box">
<div data-labelheight="10" style="height: 170px; background: transparent; margin: 0 auto;" id="gauge-e300averagecurrent" data-chart="solidgauge" data-nodename="ipp.e300averagecurrent" data-units="A" data-min="0" data-max="<%= channels["ipp.cfgcflasetting"].value %>" data-colors="0.1:#DF5353,0.5:#DDDF0D,0.9:#55BF3B" data-valuefontsize="18px"></div>
<!-- <div data-labelheight="10" style="height: 170px; background: transparent; margin: 0 auto;" id="gauge-e300averagecurrent" data-chart="solidgauge" data-nodename="ipp.e300averagecurrent" data-units="A" data-min="0" data-max="<%= channels["ipp.cfgcflasetting"].value %>" data-colors="0.1:#DF5353,0.5:#DDDF0D,0.9:#55BF3B" data-valuefontsize="18px"></div> -->
<gauge type="angular" channel="e300averagecurrent" max="150" label="A" classes="extra" height="250" />
<span data-timeupdate="e300averagecurrent"><%= channels["ipp.e300averagecurrent"].timestamp %></span>
</div>
</div>
@@ -60,7 +61,8 @@
<div class='col-xs-4 text-center'>
<h2>Average L-L Voltage</h2>
<div class="gauge-box">
<div data-labelheight="10" style="height: 170px; background: transparent; margin: 0 auto;" id="gauge-e300averagellvoltage" data-chart="solidgauge" data-nodename="ipp.e300averagellvoltage" data-units="V" data-min="0" data-max="600" data-colors="0.1:#DF5353,0.5:#DDDF0D,0.9:#55BF3B" data-valuefontsize="18px"></div>
<!-- <div data-labelheight="10" style="height: 170px; background: transparent; margin: 0 auto;" id="gauge-e300averagellvoltage" data-chart="solidgauge" data-nodename="ipp.e300averagellvoltage" data-units="V" data-min="0" data-max="600" data-colors="0.1:#DF5353,0.5:#DDDF0D,0.9:#55BF3B" data-valuefontsize="18px"></div> -->
<gauge type="angular" channel="e300averagellvoltage" max="600" label="V" classes="extra" height="250" />
<span data-timeupdate="e300averagellvoltage"><%= channels["ipp.e300averagellvoltage"].timestamp %></span>
</div>
</div>
@@ -69,13 +71,27 @@
</div>
</div>
<div class='row row-flex box-me'>
<div class='col-xs-4 text-center'>
<h2>Flow Rate</h2>
<div class="gauge-box">
<gauge type="angular" channel="flowrate" max="400" label="GPM" classes="extra" height="250" />
<span data-timeupdate="flowrate"><%= channels["ipp.flowrate"].timestamp %></span>
</div>
</div>
<div class='col-xs-8'>
<div style="height:300px" id="chart-flowrate" data-chart="chart" data-nodename1="ipp.flowrate" data-datalabel1="Flow Rate" data-daysofhistory="2" data-chartlabel="Flow Rate" data-ylabel="" data-xlabel="Date" data-units=" GPM"></div>
</div>
</div>
<% if (channels["ipp.pressuretransducerenabled"].value == 1) {%>
<div class='row row-flex box-me'>
<div class='col-xs-4 text-center'>
<h2>Tubing Pressure</h2>
<div class="gauge-box">
<div data-labelheight="10" style="height: 170px; background: transparent; margin: 0 auto;" id="gauge-pressurein" data-chart="solidgauge" data-nodename="ipp.pressurein" data-units="PSI" data-min="0" data-max="400" data-colors="0.1:#DF5353,0.5:#DDDF0D,0.9:#55BF3B" data-valuefontsize="18px"></div>
<!-- <div data-labelheight="10" style="height: 170px; background: transparent; margin: 0 auto;" id="gauge-pressurein" data-chart="solidgauge" data-nodename="ipp.pressurein" data-units="PSI" data-min="0" data-max="400" data-colors="0.1:#DF5353,0.5:#DDDF0D,0.9:#55BF3B" data-valuefontsize="18px"></div> -->
<gauge type="angular" channel="pressurein" max="400" label="PSI" classes="extra" height="250" />
<span data-timeupdate="pressurein"><%= channels["ipp.pressurein"].timestamp %></span>
</div>
</div>

View File

@@ -148,45 +148,12 @@
</div>
<div class="row row-flex">
<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="2" 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" id="runButton">Run</a>
</span>
</div>
</div>
<hr>
<div class="col-md-6">
<h1>TRIP HISTORY</h1>
<table class="table table-responsive" id="triptable">
<thead>
<tr>
<th>Timestamp</th>
<th>Condition</th>
</tr>
</thead>
<tbody>
</tbody>
</table>
<button href="#" data-channelId="<%= channels["ipp.e300tripstatus"].channelId %>" class="data-table btn btn-theme" title="Trip History"><i style='margin-left: 0.5em; cursor: pointer' class="fa fa-th-list icon-theme"></i> Trip History</button>
</div>
<div class="col-md-6">
<h1>WARNING HISTORY</h1>
<table class="table table-responsive" id="warningtable">
<thead>
<tr>
<th>Timestamp</th>
<th>Condition</th>
</tr>
</thead>
<tbody>
</tbody>
</table>
<button href="#" data-channelId="<%= channels["ipp.e300warningstatus"].channelId %>" class="data-table btn btn-theme" title="Trip History"><i style='margin-left: 0.5em; cursor: pointer' class="fa fa-th-list icon-theme"></i> Warning History</button>
</div>
</div>
@@ -242,163 +209,3 @@
flex-direction: column;
}
</style>
<script>
var tripData = [];
var maps = {
current: {
0: 'None',
1: 'Overload',
2: 'Phase Loss',
4: 'Ground Fault',
8: 'Stall',
16: 'Jam',
32: 'Underload',
64: 'Current Imbalance',
128: 'L1 Undercurrent',
256: 'L2 Undercurrent',
512: 'L3 Undercurrent',
1024: 'L1 Overcurrent',
2048: 'L2 Overcurrent',
4096: 'L3 Overcurrent',
8192: 'L1 Line Loss',
16384: 'L2 Line Loss',
32768: 'L3 Line Loss'
},
voltage: {
0: 'None',
1: 'Undervoltage',
2: 'Overvoltage',
4: 'Voltage Unbalance',
8: 'Phase Rotation',
16: 'Overfrequency'
},
control: {
0: 'None',
1: 'Test Trip',
2: 'DLX Trip',
4: 'PTC Trip',
8: 'Operator Station Trip',
16: 'Remote Trip',
32: 'Blocked Start Trip',
64: 'Hardware Fault Trip',
128: 'Config Trip',
256: 'Option Match Trip',
512: 'DLX FB Timeout Trip',
1024: 'Expansion Bus Trip',
2048: 'Reserved',
4096: 'Reserved',
8192: 'NVS Trip',
16384: 'Test Mode Trip'
},
power: {
0: 'None',
1: 'Under kW',
2: 'Over kW',
4: 'Under kVAR Consumed',
8: 'Over kVAR Consumed',
16: 'Under kVAR Generated',
32: 'Over kVAR Generated',
64: 'Under kVA',
128: 'Over kVA',
256: 'Under PF Lag',
512: 'Over PF Lag',
1024: 'Under PF Lead',
2048: 'Over PF Lead'
},
};
var nodeID = <%= node.nodeId %>;
var nodeType = '<%= node.nodetypeName %>';
var channelData = {
tripstatuscurrentint: {channelId: <%= channels['ipp.tripstatuscurrentint'].channelId %>, typ: 'current', table: 'triptable'},
tripstatuscontrolint: {channelId: <%= channels['ipp.tripstatuscontrolint'].channelId %>, typ: 'control', table: 'triptable'},
tripstatusvoltageint: {channelId: <%= channels['ipp.tripstatusvoltageint'].channelId %>, typ: 'voltage', table: 'triptable'},
tripstatuspowerint: {channelId: <%= channels['ipp.tripstatuspowerint'].channelId %>, typ: 'power', table: 'triptable'},
warningstatuscurrentint: {channelId: <%= channels['ipp.warningstatuscurrentint'].channelId %>, typ: 'current', table: 'warningtable'},
warningstatuscontrolint: {channelId: <%= channels['ipp.warningstatuscontrolint'].channelId %>, typ: 'control', table: 'warningtable'},
warningstatusvoltageint: {channelId: <%= channels['ipp.warningstatusvoltageint'].channelId %>, typ: 'voltage', table: 'warningtable'},
warningstatuspowerint: {channelId: <%= channels['ipp.warningstatuspowerint'].channelId %>, typ: 'power', table: 'warningtable'}
}
var pad2 = function(str){
return ("00" + str).slice(-2);
}
var formatDate = function(d){
return pad2(d.getUTCMonth() + 1) + "/" + pad2(d.getUTCDate()) + "/" + d.getUTCFullYear() + " " + pad2(d.getUTCHours()) + ":" + pad2(d.getUTCMinutes()) + ":" + pad2(d.getUTCSeconds());
};
var getDate = function(str){
var c1 = new Date(str);
var c2 = (c1.getTime() / 1000);
c2 = Math.floor(c2);
return c2.toString();
};
var updateTable = function(chData, chName){
// var endDate = new Date();
// var end = Math.floor(endDate.getTime() / 1000);
// var start = end - 86400;
var start = $('#datepicker').find('#fromDate');
//console.log({start:start.val()});
dateString = start.val().replace(/-/g, "/");
start = getDate(dateString);
var end = $('#datepicker').find('#toDate');
//console.log({end:end.val()});
dateString = end.val().replace(/-/g, "/");
end = parseInt(getDate(dateString)) + 86400;
var apiData = "&nodelist[0][nodeId]=" + nodeID.toString() + "&nodelist[0][channelId]=" + chData['channelId'].toString();
apiData += "&start=" + start + "&end=" + end;
console.log(apiData);
$.ajax({
url: "http://www.pocloud.io/api2/Nodechannels",
data: apiData,
dataType: "json",
type: "GET",
success: function(data) {
var dataPoints = data.listofstreams[0];
for(var i = dataPoints.stream.length-1; i > 0; i--){
var dpt = dataPoints.stream[i];
var timestamp = new Date(dpt.x * 1000);
var val = maps[chData.typ][parseInt(dpt.y)];
if (val !== 'None'){
// channelData[chName]['values'].push({t:timestamp, val:val});
tripData.push({t:timestamp, val:val, table: chData.table});
}
}
}
});
};
var prepTable = function(){
// tripData = [];
for (var channel in channelData){
if(channelData.hasOwnProperty(channel)){
updateTable(channelData[channel], channel);
}
}
var sortedTripData = tripData.sort(function(a,b){return b.t-a.t;});
$('#triptable > tbody:last-child').html("");
$('#warningtable > tbody:last-child').html("");
for (var i = 0; i < sortedTripData.length; i++){
// console.log(sortedTripData[i]);
$('#'+ sortedTripData[i].table + ' > tbody:last-child').append("<tr><td>" + formatDate(sortedTripData[i].t) + '</td><td>' + sortedTripData[i].val + '</td></tr>');
}
return true;
};
$(document).ready(function(){
$("#runButton").click(function(){
// tripData = [];
prepTable();
});
prepTable();
console.log(tripData);
});
</script>

View File

@@ -9,7 +9,7 @@
</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="ipp.e300averagecurrent,ipp.e300l1current,ipp.e300l2current,ipp.e300l3current,ipp.e300averagellvoltage,ipp.e300l1l2voltage,ipp.e300l2l3voltage,ipp.e300l3l1voltage,ipp.dhintakepressure,ipp.dhintaketemperature,ipp.dhfluidlevel,ipp.pressurein,ipp.e300linefrequency,ipp.e300percentcurrentunbalance,ipp.e300percentvoltageunbalance"></div>
<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="ipp.e300averagecurrent,ipp.e300l1current,ipp.e300l2current,ipp.e300l3current,ipp.e300averagellvoltage,ipp.e300l1l2voltage,ipp.e300l2l3voltage,ipp.e300l3l1voltage,ipp.dhintakepressure,ipp.dhintaketemperature,ipp.dhfluidlevel,ipp.pressurein,ipp.e300linefrequency,ipp.e300percentcurrentunbalance,ipp.e300percentvoltageunbalance,ipp.flowrate"></div>
<style>
.dynamic-chart-form {
background-color: whiteSmoke;

View File

@@ -3,12 +3,10 @@
"driverFileName":"ipp.py",
"deviceName":"ipp",
"driverId":"0090",
"releaseVersion":"2",
"releaseVersion":"3",
"files": {
"file1":"ipp.py",
"file2":"micro800.py",
"file3":"ipp_channels.p",
"file4":"ipp_channels_setup.py"
"file2":"micro800.py"
}
}

View File

@@ -9,6 +9,71 @@ addr = '10.20.4.5'
channels = {}
e300_current = {
0: 'None',
1: 'Overload',
2: 'Phase Loss',
4: 'Ground Fault',
8: 'Stall',
16: 'Jam',
32: 'Underload',
64: 'Current Imbalance',
128: 'L1 Undercurrent',
256: 'L2 Undercurrent',
512: 'L3 Undercurrent',
1024: 'L1 Overcurrent',
2048: 'L2 Overcurrent',
4096: 'L3 Overcurrent',
8192: 'L1 Line Loss',
16384: 'L2 Line Loss',
32768: 'L3 Line Loss'
}
e300_voltage = {
0: 'None',
1: 'Undervoltage',
2: 'Overvoltage',
4: 'Voltage Unbalance',
8: 'Phase Rotation',
16: 'Overfrequency'
}
e300_control = {
0: 'None',
1: 'Test Trip',
2: 'DLX Trip',
4: 'PTC Trip',
8: 'Operator Station Trip',
16: 'Remote Trip',
32: 'Blocked Start Trip',
64: 'Hardware Fault Trip',
128: 'Config Trip',
256: 'Option Match Trip',
512: 'DLX FB Timeout Trip',
1024: 'Expansion Bus Trip',
2048: 'Reserved',
4096: 'Reserved',
8192: 'NVS Trip',
16384: 'Test Mode Trip'
}
e300_power = {
0: 'None',
1: 'Under kW',
2: 'Over kW',
4: 'Under kVAR Consumed',
8: 'Over kVAR Consumed',
16: 'Under kVAR Generated',
32: 'Over kVAR Generated',
64: 'Under kVA',
128: 'Over kVA',
256: 'Under PF Lag',
512: 'Over PF Lag',
1024: 'Under PF Lead',
2048: 'Over PF Lead'
}
class Channel():
def read(self):
valData = u800.readMicroTag(self.device_addr, self.tag)
@@ -17,7 +82,7 @@ class Channel():
if self.map_obj:
nowVal = self.map_obj[nowVal]
self.data_type = valData[1]
if self.data_type == "BOOL":
if (self.data_type == "BOOL") or (type(nowVal) is str) or (type(nowVal) is str):
if self.last_value == "":
self.sendFn(self.name, nowVal, 0)
self.last_time_uploaded = time.time()
@@ -26,7 +91,7 @@ class Channel():
self.sendFn(self.name, nowVal, 0)
self.last_time_uploaded = time.time()
self.last_value = nowVal
if (self.data_type == "REAL") or (self.data_type[-3:] == "INT"):
elif (self.data_type == "REAL") or (self.data_type[-3:] == "INT"):
if self.last_value == "":
self.sendFn(self.name, nowVal, 0)
self.last_time_uploaded = time.time()
@@ -56,17 +121,24 @@ class Channel():
def write(self, val, handshake=None, handshake_val=None):
if self.writeable:
h = handshake
hval = handshake_val
if h is None:
if u800.writeMicroTag(self.device_addr, self.tag, val, handshake=self.tag, handshake_val=val):
self.sendFn(self.name, val, time.time())
self.last_value = val
return True
if not self.e300_param:
if handshake is None:
if u800.writeMicroTag(self.device_addr, self.tag, val):
self.sendFn(self.name, val, time.time())
self.last_value = val
return True
else:
return False
else:
return False
return u800.writeMicroTag(self.device_addr, self.tag, val, handshake=handshake, handshake_val=handshake_val)
else:
return u800.writeMicroTag(self.device_addr, self.tag, val, handshake=h, handshake_val=hval)
if u800.writeMicroTag(self.device_addr, self.tag, val):
if u800.writeMicroTag(self.device_addr, "write_E300", 1):
self.sendFn(self.name, val, time.time())
self.last_value = val
return True
return False
else:
print("NOT ALLOWED TO WRITE TO {}".format(self.name))
return False
@@ -74,20 +146,9 @@ class Channel():
class start(threading.Thread, deviceBase):
def writeTag_WriteE300(self, addr, tag, val):
c = u800.Driver()
if c.open(addr):
try:
cv = c.read_tag(tag)
wt = c.write_tag(tag, val, cv[1])
write_E300 = c.write_tag("cfg_WRITE", 1, "BOOL")
print("wt= {}, write_E300 = {}".format(wt, write_E300))
return wt and write_E300
except Exception:
err = c.get_status()
c.close()
print err
return False
c.close()
write_tag = u800.writeMicroTag(addr, tag, val)
write_e300 = u800.writeMicroTag(addr, "write_E300", 1)
return write_tag and write_e300
def updateGPS(self):
gps = self.mcu.gps
@@ -97,9 +158,9 @@ class start(threading.Thread, deviceBase):
def setupChannels(self):
global channels
channels = {
# 'automode': Channel('automode', 'Auto_Mode', 3600, self.sendtodbJSON, writeable=False, e300_param=False),
# 'cfgcflasetting': Channel('cfgcflasetting', 'cfg_C_FLASetting', 86400, self.sendtodbJSON, writeable=True, change_threshold=1.0, e300_param=True),
# 'cfgcleartripcountafter': Channel('cfgcleartripcountafter', 'cfg_ClearTripCountAfter', 86400, self.sendtodbJSON, writeable=True, change_threshold=1.0, e300_param=False),
'automode': Channel('automode', 'Auto_Mode', 3600, self.sendtodbJSON, writeable=False, e300_param=False),
'cfgcflasetting': Channel('cfgcflasetting', 'cfg_C_FLASetting', 86400, self.sendtodbJSON, writeable=True, change_threshold=1.0, e300_param=True),
'cfgcleartripcountafter': Channel('cfgcleartripcountafter', 'cfg_ClearTripCountAfter', 86400, self.sendtodbJSON, writeable=True, change_threshold=1.0, e300_param=False),
'cfggfgroundfaultinhibittime': Channel('cfggfgroundfaultinhibittime', 'cfg_GF_GroundFaultInhibitTime', 86400, self.sendtodbJSON, writeable=True, change_threshold=1.0, e300_param=True),
'cfggfgroundfaulttripdelay': Channel('cfggfgroundfaulttripdelay', 'cfg_GF_GroundFaultTripDelay', 86400, self.sendtodbJSON, writeable=True, change_threshold=1.0, e300_param=True),
'cfggfgroundfaulttriplevel': Channel('cfggfgroundfaulttriplevel', 'cfg_GF_GroundFaultTripLevel', 86400, self.sendtodbJSON, writeable=True, change_threshold=1.0, e300_param=True),
@@ -218,6 +279,7 @@ class start(threading.Thread, deviceBase):
'e300totalapparentpower': Channel('e300totalapparentpower', 'E300_TotalApparentPower', 3600, self.sendtodbJSON, writeable=False, change_threshold=1.0, e300_param=False),
'e300totalreactivepower': Channel('e300totalreactivepower', 'E300_TotalReactivePower', 3600, self.sendtodbJSON, writeable=False, change_threshold=1.0, e300_param=False),
'e300totalrealpower': Channel('e300totalrealpower', 'E300_TotalRealPower', 3600, self.sendtodbJSON, writeable=False, change_threshold=1.0, e300_param=False),
'flowrate': Channel('flowrate', 'Flowrate', 3600, self.sendtodbJSON, writeable=False, change_threshold=1.0, e300_param=False),
'handmode': Channel('handmode', 'Hand_Mode', 3600, self.sendtodbJSON, writeable=False, e300_param=False),
'overloadtrip': Channel('overloadtrip', 'OverloadTrip', 3600, self.sendtodbJSON, writeable=False, e300_param=False),
'pressurealarmdelay': Channel('pressurealarmdelay', 'Pressure_Alarm_Delay', 3600, self.sendtodbJSON, writeable=True, change_threshold=1.0, e300_param=False),
@@ -274,10 +336,10 @@ class start(threading.Thread, deviceBase):
'tripenablevvoltageunbalance': Channel('tripenablevvoltageunbalance', 'TripEnable_V_VoltageUnbalance', 3600, self.sendtodbJSON, writeable=True, e300_param=False),
'tripresetcmd': Channel('tripresetcmd', 'TripResetCmd', 3600, self.sendtodbJSON, writeable=True, e300_param=False),
'tripstatus': Channel('tripstatus', 'TripStatus', 3600, self.sendtodbJSON, writeable=False, e300_param=False),
'tripstatuscontrolint': Channel('tripstatuscontrolint', 'TripStatusControl_INT', 3600, self.sendtodbJSON, writeable=False, change_threshold=1.0, e300_param=False),
'tripstatuscurrentint': Channel('tripstatuscurrentint', 'TripStatusCurrent_INT', 3600, self.sendtodbJSON, writeable=False, change_threshold=1.0, e300_param=False),
'tripstatuspowerint': Channel('tripstatuspowerint', 'TripStatusPower_INT', 3600, self.sendtodbJSON, writeable=False, change_threshold=1.0, e300_param=False),
'tripstatusvoltageint': Channel('tripstatusvoltageint', 'TripStatusVoltage_INT', 3600, self.sendtodbJSON, writeable=False, change_threshold=1.0, e300_param=False),
'tripstatuscontrolint': Channel('tripstatuscontrolint', 'TripStatusControl_INT', 3600, self.sendtodbJSON, writeable=False, change_threshold=1.0, e300_param=False, map_obj=e300_control),
'tripstatuscurrentint': Channel('tripstatuscurrentint', 'TripStatusCurrent_INT', 3600, self.sendtodbJSON, writeable=False, change_threshold=1.0, e300_param=False, map_obj=e300_current),
'tripstatuspowerint': Channel('tripstatuspowerint', 'TripStatusPower_INT', 3600, self.sendtodbJSON, writeable=False, change_threshold=1.0, e300_param=False, map_obj=e300_power),
'tripstatusvoltageint': Channel('tripstatusvoltageint', 'TripStatusVoltage_INT', 3600, self.sendtodbJSON, writeable=False, change_threshold=1.0, e300_param=False, map_obj=e300_voltage),
'valoverloadtripcount': Channel('valoverloadtripcount', 'val_OverloadTripCount', 3600, self.sendtodbJSON, writeable=False, change_threshold=1.0, e300_param=False),
'valtripcount': Channel('valtripcount', 'val_TripCount', 3600, self.sendtodbJSON, writeable=False, change_threshold=1.0, e300_param=False),
'voltageok': Channel('voltageok', 'VoltageOK', 3600, self.sendtodbJSON, writeable=False, e300_param=False),
@@ -298,10 +360,10 @@ class start(threading.Thread, deviceBase):
'warningenablevundervoltage': Channel('warningenablevundervoltage', 'WarningEnable_V_Undervoltage', 3600, self.sendtodbJSON, writeable=True, e300_param=False),
'warningenablevvoltageunbalance': Channel('warningenablevvoltageunbalance', 'WarningEnable_V_VoltageUnbalance', 3600, self.sendtodbJSON, writeable=True, e300_param=False),
'warningstatus': Channel('warningstatus', 'WarningStatus', 3600, self.sendtodbJSON, writeable=True, e300_param=False),
'warningstatuscontrolint': Channel('warningstatuscontrolint', 'WarningStatusControl_INT', 3600, self.sendtodbJSON, writeable=True, change_threshold=1.0, e300_param=False),
'warningstatuscurrentint': Channel('warningstatuscurrentint', 'WarningStatusCurrent_INT', 3600, self.sendtodbJSON, writeable=True, change_threshold=1.0, e300_param=False),
'warningstatuspowerint': Channel('warningstatuspowerint', 'WarningStatusPower_INT', 3600, self.sendtodbJSON, writeable=True, change_threshold=1.0, e300_param=False),
'warningstatusvoltageint': Channel('warningstatusvoltageint', 'WarningStatusVoltage_INT', 3600, self.sendtodbJSON, writeable=True, change_threshold=1.0, e300_param=False),
'warningstatuscontrolint': Channel('warningstatuscontrolint', 'WarningStatusControl_INT', 3600, self.sendtodbJSON, writeable=True, change_threshold=1.0, e300_param=False, map_obj=e300_control),
'warningstatuscurrentint': Channel('warningstatuscurrentint', 'WarningStatusCurrent_INT', 3600, self.sendtodbJSON, writeable=True, change_threshold=1.0, e300_param=False, map_obj=e300_current),
'warningstatuspowerint': Channel('warningstatuspowerint', 'WarningStatusPower_INT', 3600, self.sendtodbJSON, writeable=True, change_threshold=1.0, e300_param=False, map_obj=e300_power),
'warningstatusvoltageint': Channel('warningstatusvoltageint', 'WarningStatusVoltage_INT', 3600, self.sendtodbJSON, writeable=True, change_threshold=1.0, e300_param=False, map_obj=e300_voltage),
}
def __init__(self, name=None, number=None, mac=None, Q=None, mcu=None, companyId=None, offset=None, mqtt=None, Nodes=None):
@@ -310,12 +372,14 @@ class start(threading.Thread, deviceBase):
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 = "2"
self.version = "3"
self.device_address = addr
self.finished = threading.Event()
threading.Thread.start(self)
self.sendtodbJSON("device_address", self.device_address, 0)
self.setupChannels()
self.e300_warning = ""
self.e300_trip = ""
# self.updateGPS()
# this is a required function for all drivers, its goal is to upload some piece of data
@@ -334,6 +398,50 @@ class start(threading.Thread, deviceBase):
for i in channels:
channels[i].read()
runLoopStatus = i
time.sleep(0.25)
if not (channels['tripstatuscurrentint'].last_value == "None"):
if not (self.e300_trip == channels['tripstatuscurrentint'].last_value):
self.e300_trip = channels['tripstatuscurrentint'].last_value
self.sendtodb("e300tripstatus", self.e300_trip, time.time())
elif not (channels['tripstatusvoltageint'].last_value == "None"):
if not (self.e300_trip == channels['tripstatusvoltageint'].last_value):
self.e300_trip = channels['tripstatusvoltageint'].last_value
self.sendtodb("e300tripstatus", self.e300_trip, time.time())
elif not (channels['tripstatuscontrolint'].last_value == "None"):
if not (self.e300_trip == channels['tripstatuscontrolint'].last_value):
self.e300_trip = channels['tripstatuscontrolint'].last_value
self.sendtodb("e300tripstatus", self.e300_trip, time.time())
elif not (channels['tripstatuspowerint'].last_value == "None"):
if not (self.e300_trip == channels['tripstatuspowerint'].last_value):
self.e300_trip = channels['tripstatuspowerint'].last_value
self.sendtodb("e300tripstatus", self.e300_trip, time.time())
else:
if not (self.e300_trip == "None"):
self.e300_trip = "None"
self.sendtodb("e300tripstatus", self.e300_trip, time.time())
if not (channels['warningstatuscurrentint'].last_value == "None"):
if not (self.e300_warning == channels['warningstatuscurrentint'].last_value):
self.e300_warning = channels['warningstatuscurrentint'].last_value
self.sendtodb("e300warningstatus", self.e300_warning, time.time())
elif not (channels['warningstatusvoltageint'].last_value == "None"):
if not (self.e300_warning == channels['warningstatusvoltageint'].last_value):
self.e300_warning = channels['warningstatusvoltageint'].last_value
self.sendtodb("e300warningstatus", self.e300_warning, time.time())
elif not (channels['warningstatuscontrolint'].last_value == "None"):
if not (self.e300_warning == channels['warningstatuscontrolint'].last_value):
self.e300_warning = channels['warningstatuscontrolint'].last_value
self.sendtodb("e300warningstatus", self.e300_warning, time.time())
elif not (channels['warningstatuspowerint'].last_value == "None"):
if not (self.e300_warning == channels['warningstatuspowerint'].last_value):
self.e300_warning = channels['warningstatuspowerint'].last_value
self.sendtodb("e300warningstatus", self.e300_warning, time.time())
else:
if not (self.e300_warning == "None"):
self.e300_warning = "None"
self.sendtodb("e300warningstatus", self.e300_warning, time.time())
runLoopStatus = "Complete"
OK_state = 1
if not OK_state == last_OK_state:

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

View File

@@ -1,11 +1,11 @@
from pycomm.ab_comm.clx import Driver as u800Driver
from pycomm.ab_comm.clx import Driver as plcDriver
import sys
def readMicroTag(addr, tag):
addr = str(addr)
tag = str(tag)
c = u800Driver()
c = plcDriver()
if c.open(addr, True):
try:
v = c.read_tag(tag)
@@ -14,13 +14,15 @@ def readMicroTag(addr, tag):
except Exception:
err = c.get_status()
c.close()
print("Error with {}: {}".format(tag, err))
print "{} on reading {} from {}".format(err, tag, addr)
pass
c.close()
def getTagType(addr, tag):
c = u800Driver()
addr = str(addr)
tag = str(tag)
c = plcDriver()
if c.open(addr, True):
try:
return c.read_tag(tag)[1]
@@ -32,25 +34,69 @@ def getTagType(addr, tag):
c.close()
def writeMicroTag(addr, tag, val):
c = u800Driver()
def write(addr, tag, val, t):
addr = str(addr)
tag = str(tag)
c = plcDriver()
if c.open(addr, True):
try:
# typ = getTagType(addr, tag)
cv = c.read_tag(tag)
wt = c.write_tag(tag, val, cv[1])
# print(wt)
wt = c.write_tag(tag, val, t)
return wt
except Exception:
err = c.get_status()
c.close()
print err
pass
print("Write Error: {} setting {} at {} to {} type {}".format(err, tag, addr, val, t))
return False
c.close()
def closeEnough(a, b):
return abs(a - b) <= 0.001
def writeMicroTag(addr, tag, val, handshake=None, handshake_val=None):
addr = str(addr)
tag = str(tag)
print("handshake: {}, handshake_val: {}".format(handshake, handshake_val))
chk_tag = tag
if not(handshake is None) and not(handshake == "None"):
chk_tag = str(handshake)
print("Handshake tag passed, using {}".format(chk_tag))
chk_val = val
if not (handshake_val is None) and not(handshake_val == "None"):
chk_val = handshake_val
print("Handshake value passed, using {}".format(chk_val))
attempts_allowed = 5
attempts = 1
while attempts <= attempts_allowed:
try:
attempts = attempts + 1
cv = readMicroTag(addr, tag)
print("Val Before Write: {}".format(cv))
if cv:
if cv[1] == "REAL":
val = float(val)
chk_val = float(chk_val)
else:
val = int(val)
chk_val = int(chk_val)
wt = write(addr, tag, val, cv[1])
if wt:
print("write: {}".format(wt))
chk = readMicroTag(addr, chk_tag)
if chk:
print("chk: {}, chk_val: {}".format(chk, chk_val))
if closeEnough(chk[0], chk_val):
return True
except Exception as e:
print e
return False
def readMicroTagList(addr, tList):
c = u800Driver()
addr = str(addr)
c = plcDriver()
if c.open(addr, True):
vals = []
try:

View File

@@ -1,10 +0,0 @@
import pickle
with open("ipp_channels.p", 'rb') as picklefile:
channels = pickle.load(picklefile)
for chname in sorted(channels):
ch = channels[chname]
if ch['data_type'] == "BOOL":
print("'{0}': Channel('{0}', '{1}', {2}, self.sendtodbJSON, writeable=True, e300_param=False),".format(chname, ch['tag'], ch['max_time_between_uploads']))
else:
print("'{0}': Channel('{0}', '{1}', {2}, self.sendtodbJSON, writeable=True, change_threshold=1.0, e300_param=False),".format(chname, ch['tag'], ch['max_time_between_uploads']))

Binary file not shown.

Some files were not shown because too many files have changed in this diff Show More