Completes #1. Adds Pushbutton to enable HMI for 20 minutes

This commit is contained in:
Patrick McDonagh
2018-08-06 13:20:35 -05:00
parent bfa1eea600
commit 1ba1025683
93 changed files with 6313 additions and 2641 deletions

View File

@@ -9,7 +9,7 @@
<AssemblyName>MyAssemblyName</AssemblyName>
<EnableUnmanagedDebugging>false</EnableUnmanagedDebugging>
<CAMProjectFile>Controller\PrjLibrary.mdb</CAMProjectFile>
<CAMProjectVersion>5.50.5</CAMProjectVersion>
<CAMProjectVersion>5.50.9</CAMProjectVersion>
<UniqueProjectId>{bbd38e76-cd39-44be-a456-12e2b5d3f366}</UniqueProjectId>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)' == 'Online' ">

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,360 @@
<?xml version="1.0" encoding="utf-8"?>
<Project Name="Controller" ElementGuid="3e90d2bb-e548-4dc3-a89b-4dede9914c73" FileVersion="200.00.005" Comment="" SingleTextLine="template" DbVersion="05.50.09" LibraryType="Project" LegacyBinding="true" Password="" ReadOnly="false">
<FileHeader CompanyName="Rockwell Automation Canada, Ltd." ProductName="CAM ISaGRAF 5" CompanyUrl="http://www.isagraf.com" ProductVersion="0" />
<Libraries />
<DefineWords>
<DefineWord Name="IRQ_UFR" Define="1" Comment="" Access="ReadOnly" />
<DefineWord Name="IRQ_UPM0" Define="524288" Comment="" Access="ReadOnly" />
<DefineWord Name="IRQ_UPM1" Define="1048576" Comment="" Access="ReadOnly" />
<DefineWord Name="IRQ_STI0" Define="32768" Comment="" Access="ReadOnly" />
<DefineWord Name="IRQ_STI1" Define="65536" Comment="" Access="ReadOnly" />
<DefineWord Name="DSET1" Define="1" Comment="" Access="ReadOnly" />
<DefineWord Name="DSET2" Define="2" Comment="" Access="ReadOnly" />
<DefineWord Name="DSET3" Define="3" Comment="" Access="ReadOnly" />
<DefineWord Name="DSET4" Define="4" Comment="" Access="ReadOnly" />
<DefineWord Name="DSET5" Define="5" Comment="" Access="ReadOnly" />
<DefineWord Name="DSET6" Define="6" Comment="" Access="ReadOnly" />
<DefineWord Name="DSET7" Define="7" Comment="" Access="ReadOnly" />
<DefineWord Name="DSET8" Define="8" Comment="" Access="ReadOnly" />
<DefineWord Name="DSET9" Define="9" Comment="" Access="ReadOnly" />
<DefineWord Name="DSET10" Define="10" Comment="" Access="ReadOnly" />
<DefineWord Name="RCP1" Define="1" Comment="" Access="ReadOnly" />
<DefineWord Name="RCP2" Define="2" Comment="" Access="ReadOnly" />
<DefineWord Name="RCP3" Define="3" Comment="" Access="ReadOnly" />
<DefineWord Name="RCP4" Define="4" Comment="" Access="ReadOnly" />
<DefineWord Name="RCP5" Define="5" Comment="" Access="ReadOnly" />
<DefineWord Name="RCP6" Define="6" Comment="" Access="ReadOnly" />
<DefineWord Name="RCP7" Define="7" Comment="" Access="ReadOnly" />
<DefineWord Name="RCP8" Define="8" Comment="" Access="ReadOnly" />
<DefineWord Name="RCP9" Define="9" Comment="" Access="ReadOnly" />
<DefineWord Name="RCP10" Define="10" Comment="" Access="ReadOnly" />
</DefineWords>
<DataTypes>
<DataType Name="MODBUSLOCADDR" Comment="" Access="ReadOnly">
<Array Order="6" DataType="WORD" StringSize="0">
<Dimension Lower="1" Upper="125" />
</Array>
</DataType>
<DataType Name="MODBUS2NODEADDR" Comment="" Access="ReadOnly">
<Array Order="7" DataType="USINT" StringSize="0">
<Dimension Lower="0" Upper="3" />
</Array>
</DataType>
<DataType Name="IPADDR" Comment="" Access="ReadOnly">
<Array Order="8" DataType="USINT" StringSize="0">
<Dimension Lower="0" Upper="3" />
</Array>
</DataType>
<DataType Name="CIPMEMBERID" Comment="" Access="ReadOnly">
<Array Order="9" DataType="UINT" StringSize="0">
<Dimension Lower="0" Upper="2" />
</Array>
</DataType>
<DataType Name="ASCIILOCADDR" Comment="" Access="ReadOnly">
<Array Order="10" DataType="BYTE" StringSize="0">
<Dimension Lower="1" Upper="82" />
</Array>
</DataType>
<DataType Name="IRQSTI" Comment="" Access="ReadOnly">
<Struct FieldOrder="1" Order="29">
<Variable Name="AS" DataType="BOOL" Comment="Auto start" StringSize="0" Order="1" />
<Variable Name="ENABLED" DataType="BOOL" Comment="Function Enabled" StringSize="0" Order="2" />
<Variable Name="PE" DataType="BOOL" Comment="Pending User Interrupt" StringSize="0" Order="3" />
<Variable Name="LS" DataType="BOOL" Comment="Lost User Interrupt" StringSize="0" Order="4" />
<Variable Name="EX" DataType="BOOL" Comment="Executing User Interrupt" StringSize="0" Order="5" />
<Variable Name="SP" DataType="UINT" Comment="Number of milliseconds between interrupts" StringSize="0" Order="6" />
</Struct>
</DataType>
<DataType Name="DOYDATA" Comment="" Access="ReadOnly">
<Struct FieldOrder="1" Order="30">
<Variable Name="Enable" DataType="BOOL" Comment="Enable (TRUE:enable; FALSE:disable)" StringSize="0" Order="1" />
<Variable Name="YearlyCenturial" DataType="BOOL" Comment="Timer Flag (FALSE: Yearly timer; TRUE: Centurial timer)" StringSize="0" Order="2" />
<Variable Name="YearOn" DataType="UINT" Comment="Year On value (must be in set [2000...2098])" StringSize="0" Order="3" />
<Variable Name="MonthOn" DataType="USINT" Comment="Month On value (must be in set [1...12])" StringSize="0" Order="4" />
<Variable Name="DayOn" DataType="USINT" Comment="Day On value (must be in set [1...31], determined by &quot;MonthOn&quot; value)" StringSize="0" Order="5" />
<Variable Name="YearOff" DataType="UINT" Comment="Year Off value (must be in set [2000...2098])" StringSize="0" Order="6" />
<Variable Name="MonthOff" DataType="USINT" Comment="Month Off value (must be in set [1...12])" StringSize="0" Order="7" />
<Variable Name="DayOff" DataType="USINT" Comment="Day Off value (must be in set [1...31], determined by &quot;MonthOff&quot; value)" StringSize="0" Order="8" />
</Struct>
</DataType>
<DataType Name="AWAAWT" Comment="" Access="ReadOnly">
<Struct FieldOrder="1" Order="31">
<Variable Name="Channel" DataType="UINT" Comment="" StringSize="0" Order="1" />
<Variable Name="Length" DataType="UINT" Comment="" StringSize="0" Order="2" />
<Variable Name="Cancel" DataType="BOOL" Comment="" StringSize="0" Order="3" />
</Struct>
</DataType>
<DataType Name="GAIN_PID" Comment="" Access="ReadOnly">
<Struct FieldOrder="1" Order="32">
<Variable Name="DirectActing" DataType="BOOL" Comment="''" StringSize="0" Order="1" />
<Variable Name="ProportionalGain" DataType="REAL" Comment="''" StringSize="0" Order="2" />
<Variable Name="TimeIntegral" DataType="REAL" Comment="''" StringSize="0" Order="3" />
<Variable Name="TimeDerivative" DataType="REAL" Comment="''" StringSize="0" Order="4" />
<Variable Name="DerivativeGain" DataType="REAL" Comment="''" StringSize="0" Order="5" />
</Struct>
</DataType>
<DataType Name="AHLI" Comment="" Access="ReadOnly">
<Struct FieldOrder="1" Order="33">
<Variable Name="Channel" DataType="UINT" Comment="" StringSize="0" Order="1" />
<Variable Name="ClrRts" DataType="BOOL" Comment="" StringSize="0" Order="2" />
<Variable Name="SetRts" DataType="BOOL" Comment="" StringSize="0" Order="3" />
<Variable Name="Cancel" DataType="BOOL" Comment="" StringSize="0" Order="4" />
</Struct>
</DataType>
<DataType Name="MODBUSLOCPARA" Comment="" Access="ReadOnly">
<Struct FieldOrder="1" Order="34">
<Variable Name="Channel" DataType="UINT" Comment="" StringSize="0" Order="1" />
<Variable Name="TriggerType" DataType="USINT" Comment="" StringSize="0" Order="2" />
<Variable Name="Cmd" DataType="USINT" Comment="" StringSize="0" Order="3" />
<Variable Name="ElementCnt" DataType="UINT" Comment="" StringSize="0" Order="4" />
</Struct>
</DataType>
<DataType Name="MODBUSTARPARA" Comment="" Access="ReadOnly">
<Struct FieldOrder="1" Order="35">
<Variable Name="Addr" DataType="UDINT" Comment="" StringSize="0" Order="1" />
<Variable Name="Node" DataType="USINT" Comment="" StringSize="0" Order="2" />
</Struct>
</DataType>
<DataType Name="MODBUS2LOCPARA" Comment="" Access="ReadOnly">
<Struct FieldOrder="1" Order="36">
<Variable Name="Channel" DataType="UINT" Comment="Local Channel number" StringSize="0" Order="1" />
<Variable Name="TriggerType" DataType="UDINT" Comment="0 = Trigger once, n = Cyclic Trigger" StringSize="0" Order="2" />
<Variable Name="Cmd" DataType="USINT" Comment="Modbus command" StringSize="0" Order="3" />
<Variable Name="ElementCnt" DataType="UINT" Comment="No. of elements to Read/Write" StringSize="0" Order="4" />
</Struct>
</DataType>
<DataType Name="MODBUS2TARPARA" Comment="" Access="ReadOnly">
<Struct FieldOrder="1" Order="37">
<Variable Name="Addr" DataType="UDINT" Comment="Target's Modbus data address" StringSize="0" Order="1" />
<Variable Name="NodeAddress" DataType="MODBUS2NODEADDR" Comment="Target node address" StringSize="0" Order="2" />
<Variable Name="Port" DataType="UINT" Comment="Target TCP port number" StringSize="0" Order="3" />
<Variable Name="UnitId" DataType="USINT" Comment="Unit Identifier" StringSize="0" Order="4" />
<Variable Name="MsgTimeout" DataType="UDINT" Comment="Message time out (in milliseconds)" StringSize="0" Order="5" />
<Variable Name="ConnTimeout" DataType="UDINT" Comment="Connection timeout (in milliseconds)" StringSize="0" Order="6" />
<Variable Name="ConnClose" DataType="BOOL" Comment="Connection closing behavior" StringSize="0" Order="7" />
</Struct>
</DataType>
<DataType Name="CIPCONTROLCFG" Comment="" Access="ReadOnly">
<Struct FieldOrder="1" Order="38">
<Variable Name="Cancel" DataType="BOOL" Comment="Abort the execution of message" StringSize="0" Order="1" />
<Variable Name="TriggerType" DataType="UDINT" Comment="0 - Trigger once, n - Cyclic trigger" StringSize="0" Order="2" />
<Variable Name="StrMode" DataType="USINT" Comment="reserved parameter" StringSize="0" Order="3" />
</Struct>
</DataType>
<DataType Name="CIPTARGETCFG" Comment="" Access="ReadOnly">
<Struct FieldOrder="1" Order="39">
<Variable Name="Path" DataType="STRING" Comment="CIP destination path" StringSize="80" Order="1" />
<Variable Name="CipConnMode" DataType="USINT" Comment="0 - Unconnected, 1 - Class3 connection" StringSize="0" Order="2" />
<Variable Name="UcmmTimeout" DataType="UDINT" Comment="Unconnected message time out." StringSize="0" Order="3" />
<Variable Name="ConnMsgTimeout" DataType="UDINT" Comment="Connected message time out." StringSize="0" Order="4" />
<Variable Name="ConnClose" DataType="BOOL" Comment="TRUE: Close CIP connection upon message completion" StringSize="0" Order="5" />
</Struct>
</DataType>
<DataType Name="CIPAPPCFG" Comment="" Access="ReadOnly">
<Struct FieldOrder="1" Order="40">
<Variable Name="Service" DataType="USINT" Comment="CIP Service code: 1 - 127" StringSize="0" Order="1" />
<Variable Name="Class" DataType="UINT" Comment="CIP Class ID: 1 - 65535" StringSize="0" Order="2" />
<Variable Name="Instance" DataType="UDINT" Comment="CIP Instance ID: 0 - 0xFFFFFFFF" StringSize="0" Order="3" />
<Variable Name="Attribute" DataType="UINT" Comment="CIP Attribute: 1 - 65535, 0 - No attribute" StringSize="0" Order="4" />
<Variable Name="MemberCnt" DataType="USINT" Comment="CIP Member ID count: 1 - 3, 0 - None" StringSize="0" Order="5" />
<Variable Name="MemberId" DataType="CIPMEMBERID" Comment="CIP Member ID: 0 - 65535" StringSize="0" Order="6" />
</Struct>
</DataType>
<DataType Name="CIPSYMBOLICCFG" Comment="" Access="ReadOnly">
<Struct FieldOrder="1" Order="41">
<Variable Name="Service" DataType="USINT" Comment="0 - Read, 1 - Write" StringSize="0" Order="1" />
<Variable Name="Symbol" DataType="STRING" Comment="Symbol name to read / write" StringSize="80" Order="2" />
<Variable Name="Count" DataType="UINT" Comment="Num of variables to read/ write. 1 - 65535." StringSize="0" Order="3" />
<Variable Name="DataType" DataType="USINT" Comment="Symbol data type" StringSize="0" Order="4" />
<Variable Name="Offset" DataType="USINT" Comment="Byte offset of variable to read / write. 0 - 0xffffffff" StringSize="0" Order="5" />
</Struct>
</DataType>
<DataType Name="CIPSTATUS" Comment="" Access="ReadOnly">
<Struct FieldOrder="1" Order="42">
<Variable Name="Error" DataType="BOOL" Comment="TRUE: message execution error" StringSize="0" Order="1" />
<Variable Name="ErrorID" DataType="UINT" Comment="Error code" StringSize="0" Order="2" />
<Variable Name="SubErrorID" DataType="UINT" Comment="Sub Error code" StringSize="0" Order="3" />
<Variable Name="ExtErrorID" DataType="UINT" Comment="CIP extended status error code" StringSize="0" Order="4" />
<Variable Name="StatusBits" DataType="UINT" Comment="Message execution status." StringSize="0" Order="5" />
</Struct>
</DataType>
<DataType Name="ABLACB" Comment="" Access="ReadOnly">
<Struct FieldOrder="1" Order="43">
<Variable Name="Channel" DataType="UINT" Comment="" StringSize="0" Order="1" />
<Variable Name="TriggerType" DataType="USINT" Comment="" StringSize="0" Order="2" />
<Variable Name="Cancel" DataType="BOOL" Comment="" StringSize="0" Order="3" />
</Struct>
</DataType>
<DataType Name="ARDARL" Comment="" Access="ReadOnly">
<Struct FieldOrder="1" Order="44">
<Variable Name="Channel" DataType="UINT" Comment="" StringSize="0" Order="1" />
<Variable Name="Length" DataType="UINT" Comment="" StringSize="0" Order="2" />
<Variable Name="Cancel" DataType="BOOL" Comment="" StringSize="0" Order="3" />
</Struct>
</DataType>
<DataType Name="AT_PARAM" Comment="" Access="ReadOnly">
<Struct FieldOrder="1" Order="45">
<Variable Name="Load" DataType="REAL" Comment="" StringSize="0" Order="1" />
<Variable Name="Deviation" DataType="REAL" Comment="" StringSize="0" Order="2" />
<Variable Name="Step" DataType="REAL" Comment="" StringSize="0" Order="3" />
<Variable Name="ATDynaSet" DataType="REAL" Comment="" StringSize="0" Order="4" />
<Variable Name="ATReset" DataType="BOOL" Comment="" StringSize="0" Order="5" />
</Struct>
</DataType>
<DataType Name="IRQUPM" Comment="" Access="ReadOnly">
<Struct FieldOrder="1" Order="46">
<Variable Name="AS" DataType="BOOL" Comment="Auto start" StringSize="0" Order="1" />
<Variable Name="ENABLED" DataType="BOOL" Comment="Function Enabled" StringSize="0" Order="2" />
<Variable Name="PE" DataType="BOOL" Comment="Pending User Interrupt" StringSize="0" Order="3" />
<Variable Name="LS" DataType="BOOL" Comment="Lost User Interrupt" StringSize="0" Order="4" />
<Variable Name="EX" DataType="BOOL" Comment="Executing User Interrupt" StringSize="0" Order="5" />
</Struct>
</DataType>
<DataType Name="TOWDATA" Comment="" Access="ReadOnly">
<Struct FieldOrder="1" Order="47">
<Variable Name="Enable" DataType="BOOL" Comment="Enable (TRUE:Enable; FALSE:Disable)" StringSize="0" Order="1" />
<Variable Name="DailyWeekly" DataType="BOOL" Comment="Type of Timer (FALSE:daily timer; TRUE:weekly timer)" StringSize="0" Order="2" />
<Variable Name="DayOn" DataType="USINT" Comment="Day of Week On value (must be in set [0...6])" StringSize="0" Order="3" />
<Variable Name="HourOn" DataType="USINT" Comment="Hour On value (must be in set [0...23])" StringSize="0" Order="4" />
<Variable Name="MinOn" DataType="USINT" Comment="Minute On value (must be in set [0...59])" StringSize="0" Order="5" />
<Variable Name="DayOff" DataType="USINT" Comment="Day of Week Off value (must be in set [0...6])" StringSize="0" Order="6" />
<Variable Name="HourOff" DataType="USINT" Comment="Hour Off value (must be in set [0...23])" StringSize="0" Order="7" />
<Variable Name="MinOff" DataType="USINT" Comment="Minute Off value (must be in set [0...59])" StringSize="0" Order="8" />
</Struct>
</DataType>
<DataType Name="MMCATNUM" Comment="" Access="ReadOnly">
<Struct FieldOrder="1" Order="48">
<Variable Name="CatalogStr" DataType="STRING" Comment="" StringSize="16" Order="1" />
</Struct>
</DataType>
<DataType Name="RTC" Comment="" Access="ReadOnly">
<Struct FieldOrder="1" Order="49">
<Variable Name="Year" DataType="UINT" Comment="" StringSize="0" Order="1" />
<Variable Name="Month" DataType="UINT" Comment="" StringSize="0" Order="2" />
<Variable Name="Day" DataType="UINT" Comment="" StringSize="0" Order="3" />
<Variable Name="Hours" DataType="UINT" Comment="" StringSize="0" Order="4" />
<Variable Name="Minutes" DataType="UINT" Comment="" StringSize="0" Order="5" />
<Variable Name="Seconds" DataType="UINT" Comment="" StringSize="0" Order="6" />
<Variable Name="DayOfWeek" DataType="UINT" Comment="" StringSize="0" Order="7" />
</Struct>
</DataType>
<DataType Name="MMINFO" Comment="" Access="ReadOnly">
<Struct FieldOrder="1" Order="50">
<Variable Name="MMCatalog" DataType="MMCATNUM" Comment="" StringSize="0" Order="1" />
<Variable Name="Series" DataType="UINT" Comment="" StringSize="0" Order="2" />
<Variable Name="Revision" DataType="UINT" Comment="" StringSize="0" Order="3" />
<Variable Name="UPValid" DataType="BOOL" Comment="" StringSize="0" Order="4" />
<Variable Name="ModeBehavior" DataType="BOOL" Comment="" StringSize="0" Order="5" />
<Variable Name="LoadAlways" DataType="BOOL" Comment="" StringSize="0" Order="6" />
<Variable Name="LoadOnError" DataType="BOOL" Comment="" StringSize="0" Order="7" />
<Variable Name="FaultOverride" DataType="BOOL" Comment="" StringSize="0" Order="8" />
<Variable Name="MMPresent" DataType="BOOL" Comment="" StringSize="0" Order="9" />
</Struct>
</DataType>
<DataType Name="SYSINFO" Comment="" Access="ReadOnly">
<Struct FieldOrder="1" Order="51">
<Variable Name="BootMajRev" DataType="UINT" Comment="" StringSize="0" Order="1" />
<Variable Name="BootMinRev" DataType="UINT" Comment="" StringSize="0" Order="2" />
<Variable Name="OSSeries" DataType="UINT" Comment="" StringSize="0" Order="3" />
<Variable Name="OSMajRev" DataType="UINT" Comment="" StringSize="0" Order="4" />
<Variable Name="OSMinRev" DataType="UINT" Comment="" StringSize="0" Order="5" />
<Variable Name="ModeBehaviour" DataType="BOOL" Comment="" StringSize="0" Order="6" />
<Variable Name="FaultOverride" DataType="BOOL" Comment="" StringSize="0" Order="7" />
<Variable Name="StrtUpProtect" DataType="BOOL" Comment="" StringSize="0" Order="8" />
<Variable Name="MajErrHalted" DataType="BOOL" Comment="" StringSize="0" Order="9" />
<Variable Name="MajErrCode" DataType="UINT" Comment="" StringSize="0" Order="10" />
<Variable Name="MajErrUFR" DataType="BOOL" Comment="" StringSize="0" Order="11" />
<Variable Name="UFRPouNum" DataType="UINT" Comment="" StringSize="0" Order="12" />
<Variable Name="MMLoadAlways" DataType="BOOL" Comment="" StringSize="0" Order="13" />
<Variable Name="MMLoadOnError" DataType="BOOL" Comment="" StringSize="0" Order="14" />
<Variable Name="MMPwdMismatch" DataType="BOOL" Comment="" StringSize="0" Order="15" />
<Variable Name="FreeRunClock" DataType="UINT" Comment="" StringSize="0" Order="16" />
<Variable Name="ForcesInstall" DataType="BOOL" Comment="" StringSize="0" Order="17" />
<Variable Name="EmInFilterMod" DataType="BOOL" Comment="" StringSize="0" Order="18" />
</Struct>
</DataType>
<DataType Name="ACLI" Comment="" Access="ReadOnly">
<Struct FieldOrder="1" Order="52">
<Variable Name="Channel" DataType="UINT" Comment="" StringSize="0" Order="1" />
<Variable Name="RXBuffer" DataType="BOOL" Comment="" StringSize="0" Order="2" />
<Variable Name="TXBuffer" DataType="BOOL" Comment="" StringSize="0" Order="3" />
</Struct>
</DataType>
<DataType Name="SOCKADDR_CFG" Comment="" Access="ReadOnly">
<Struct FieldOrder="1" Order="53">
<Variable Name="Port" DataType="UINT" Comment="TCP or UDP Port Number" StringSize="0" Order="1" />
<Variable Name="IPAddress" DataType="IPADDR" Comment="IP Address e.g specify 192.168.1.100, [0] = 192, [1] = 168, [2] = 1, [3] = 100" StringSize="0" Order="2" />
</Struct>
</DataType>
<DataType Name="SOCK_STATUS" Comment="" Access="ReadOnly">
<Struct FieldOrder="1" Order="54">
<Variable Name="ErrorID" DataType="USINT" Comment="Error Code" StringSize="0" Order="1" />
<Variable Name="SubErrorID" DataType="UINT" Comment="Sub Error code" StringSize="0" Order="2" />
<Variable Name="StatusBits" DataType="UINT" Comment="Socket FBs Execution Status" StringSize="0" Order="3" />
</Struct>
</DataType>
<DataType Name="PID_GAINS" Comment="" Access="ReadOnly">
<Struct FieldOrder="1" Order="55">
<Variable Name="Kc" DataType="REAL" Comment="" StringSize="0" Order="1" />
<Variable Name="Ti" DataType="REAL" Comment="" StringSize="0" Order="2" />
<Variable Name="Td" DataType="REAL" Comment="" StringSize="0" Order="3" />
<Variable Name="FC" DataType="REAL" Comment="" StringSize="0" Order="4" />
</Struct>
</DataType>
<DataType Name="FF_LF_CON" Comment="" Access="ReadOnly">
<Struct FieldOrder="1" Order="56">
<Variable Name="Length" DataType="UINT" Comment="Number of elements are used for FIFO/LIFO. Max Limit is 1024" StringSize="0" Order="1" />
<Variable Name="Position" DataType="UINT" Comment="Determines the next avaliable location in the FIFO/LIFO for the Src entry or removal" StringSize="0" Order="2" />
</Struct>
</DataType>
</DataTypes>
<Networks>
<Network Name="HSD" SingleTextLine="" LocalNet="true" DistributedNet="false" Comment="" UsedForBinding="true" BindingService="false" AllowWorkbenchCommunications="true">
<Parameters />
<ConnectionParameters />
<ResourceParameters>
<Parameter Name="ValidityTime" Format="Long" Default="0" Access="UserDefined" SingleTextLine="Produced Variables validity time." LocalNet="false" DistributedNet="false" />
</ResourceParameters>
<VariableParameters />
</Network>
<Network Name="ETCP" SingleTextLine="" LocalNet="false" DistributedNet="true" Comment="" UsedForBinding="true" BindingService="false" AllowWorkbenchCommunications="true">
<Parameters />
<ConnectionParameters>
<Parameter Name="IPAddress" Format="String" Default="" Access="UserDefined" SingleTextLine="IP address or Computer name" LocalNet="false" DistributedNet="true" />
</ConnectionParameters>
<ResourceParameters>
<Parameter Name="TimeOut" Format="Long" Default="10000" Access="UserDefined" SingleTextLine="Maximum allowed time (in ms) to transport a variable" LocalNet="false" DistributedNet="false" />
</ResourceParameters>
<VariableParameters />
</Network>
<Network Name="ISARSI" SingleTextLine="" LocalNet="false" DistributedNet="true" Comment="" UsedForBinding="true" BindingService="false" AllowWorkbenchCommunications="true">
<Parameters>
<Parameter Name="Port" Format="String" Default="COM1" Access="UserDefined" SingleTextLine="Workbench communication port" LocalNet="false" DistributedNet="true" />
<Parameter Name="BaudRate" Format="Long" Default="115200" Access="UserDefined" SingleTextLine="Data transfer baud rate" LocalNet="false" DistributedNet="true" />
<Parameter Name="Parity" Format="Character" Default="N" Access="UserDefined" SingleTextLine="N: None, E: Even, O: Odd" LocalNet="false" DistributedNet="true" />
<Parameter Name="StopBit" Format="Word" Default="1" Access="UserDefined" SingleTextLine="1 or 2 Stop bits" LocalNet="false" DistributedNet="true" />
<Parameter Name="HardwareFlowControl" Format="Boolean" Default="FALSE" Access="UserDefined" SingleTextLine="TRUE when using hardware flow control" LocalNet="false" DistributedNet="true" />
</Parameters>
<ConnectionParameters />
<ResourceParameters />
<VariableParameters />
</Network>
<Network Name="CIPNetwork" SingleTextLine="" LocalNet="false" DistributedNet="true" Comment="" UsedForBinding="true" BindingService="false" AllowWorkbenchCommunications="true">
<Parameters />
<ConnectionParameters>
<Parameter Name="CipPath" Format="String" Default="&quot;&quot;" Access="UserDefined" SingleTextLine="" LocalNet="false" DistributedNet="true" />
</ConnectionParameters>
<ResourceParameters />
<VariableParameters />
</Network>
</Networks>
<NetworkInstances>
<NetworkInstance NetworkName="CIPNetwork" Name="CIPNetwork1" />
</NetworkInstances>
<Targets>
<Target Name="2080LC2020QWBJ" />
</Targets>
<Configurations>
<Configuration Name="Micro820" ElementGuid="985f9591-f3ba-4dcb-837f-f4a3058ef166" />
</Configurations>
</Project>

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<Configuration FileVersion="200.00.005" Name="Micro820" ElementGuid="985f9591-f3ba-4dcb-837f-f4a3058ef166" onlineBehavior="Always" TargetName="2080LC2020QWBJ" Comment="" SingleTextLine="" Password="" IsEnhanced="false" IsEnhancedTarget="true" IsIsagraf3="false">
<Connections>
<Connection NetworkName="CIPNetwork1">
<Parameter Name="CipPath" Value="&quot;&quot;" />
</Connection>
</Connections>
<Resource Name="Micro820" ElementGuid="4abfa14a-9a16-4913-a742-278fd478b028" />
</Configuration>

View File

@@ -2,6 +2,7 @@ FLOWMETERMB
WATCHDOG
SOLARPANELMB
PRESSUREANALOG
PANELVIEWTIMER
WORDSTOREAL
FLOWRATEUNITS
FLOWTOTALUNITS

View File

@@ -8,6 +8,8 @@ MODBUSTIMER.IN@SOLARPANELMB,__TMPB__TON__IN,BOOL
MODBUSTIMER.PT@SOLARPANELMB,MODBUSSCANRATE,TIME
MODBUSERRORTIMER.IN@SOLARPANELMB,__TMPB__TON__IN,BOOL
MODBUSERRORTIMER.PT@SOLARPANELMB,MODBUSERRORDURATION,TIME
PANELVIEWTON.IN@PANELVIEWTIMER,PANELVIEWON,BOOL
PANELVIEWTON.PT@PANELVIEWTIMER,PANELVIEWTIMEON,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

View File

@@ -1,13 +1,21 @@
_STEP 2 0 1
__TMPB1 := MODBUSTIMER [ __CDINT00000004 ]
__TMPB1 := _NOT __TMPB1
__TMPB__TON__IN := __TMPB1
__FBL_RET := _PUSHCALLFB TON MODBUSTIMER
_STEP 2 0 6
MBS_FLOWRATE_TARGETCFG [ __DINT_NULL ] := CFG_FLOWRATE_REGISTER
_STEP 2 0 7
MBS_FLOWRATE_TARGETCFG [ __CDINT00000004 ] := CFG_FLOWMETER_MODBUSNODE
_STEP 2 0 9
MBS_FLOWRATE_LOCALCFG [ __DINT_NULL ] := __CUINT00000002
_STEP 2 0 10
MBS_FLOWRATE_LOCALCFG [ __CDINT00000003 ] := READ_CMD
_STEP 2 0 11
MBS_FLOWRATE_LOCALCFG [ __CDINT00000002 ] := MBS_TRIGGERTYPE
_STEP 2 0 12
MBS_FLOWRATE_LOCALCFG [ __CDINT00000004 ] := __CUINT00000002
_STEP 2 0 13
__TMPB1 := MODBUSTIMER [ __CDINT00000004 ]
__TMPV1 := MBS_FLOWRATE_LOCALCFG [ __DINT_NULL ]
__TMPV2 := MBS_FLOWRATE_TARGETCFG [ __DINT_NULL ]
@@ -21,8 +29,10 @@ __TMPV6 := MBS_FLOWRATE_MSG [ __CDINT00000008 ]
__TMPV6 := __TMPV3
MBS_FLOWRATE_MSG [ __CDINT0000000A ] := __ADI__FLOWMETERMB_0_0
__FBL_RET := _PUSHCALLFB MSG_MODBUS MBS_FLOWRATE_MSG
_STEP 2 0 15
__TMPB1 := MBS_FLOWRATE_MSG [ __CDINT0000000C ]
_IF _NOT __TMPB1 _GOTO __LAB1
_STEP 2 0 16
__TMPI1 := __CDINT00000001 - __CDINT00000001
__TMPI1 := __TMPI1 * __CDINT00000002
__TMPUIN1 := MBS_FLOWRATE_DATA [ __TMPI1 ]
@@ -36,12 +46,19 @@ VAL_FLOWRATE := __TMPR1
_GOTO __LAB2
__LAB1 :
__LAB2 :
_STEP 2 0 22
MBS_FLOWTOTALIZERA_TARGETCFG [ __DINT_NULL ] := CFG_FLOWTOTALIZERA_REGISTER
_STEP 2 0 23
MBS_FLOWTOTALIZERA_TARGETCFG [ __CDINT00000004 ] := CFG_FLOWMETER_MODBUSNODE
_STEP 2 0 25
MBS_FLOWTOTALIZERA_LOCALCFG [ __DINT_NULL ] := __CUINT00000002
_STEP 2 0 26
MBS_FLOWTOTALIZERA_LOCALCFG [ __CDINT00000003 ] := READ_CMD
_STEP 2 0 27
MBS_FLOWTOTALIZERA_LOCALCFG [ __CDINT00000002 ] := MBS_TRIGGERTYPE
_STEP 2 0 28
MBS_FLOWTOTALIZERA_LOCALCFG [ __CDINT00000004 ] := __CUINT00000002
_STEP 2 0 29
__TMPB1 := MODBUSTIMER [ __CDINT00000004 ]
__TMPV1 := MBS_FLOWTOTALIZERA_LOCALCFG [ __DINT_NULL ]
__TMPV2 := MBS_FLOWTOTALIZERA_TARGETCFG [ __DINT_NULL ]
@@ -55,8 +72,10 @@ __TMPV6 := MBS_FLOWTOTALIZERA_MSG [ __CDINT00000008 ]
__TMPV6 := __TMPV3
MBS_FLOWTOTALIZERA_MSG [ __CDINT0000000A ] := __ADI__FLOWMETERMB_0_1
__FBL_RET := _PUSHCALLFB MSG_MODBUS MBS_FLOWTOTALIZERA_MSG
_STEP 2 0 31
__TMPB1 := MBS_FLOWTOTALIZERA_MSG [ __CDINT0000000C ]
_IF _NOT __TMPB1 _GOTO __LAB3
_STEP 2 0 32
__TMPI1 := __CDINT00000001 - __CDINT00000001
__TMPI1 := __TMPI1 * __CDINT00000002
__TMPUIN1 := MBS_FLOWTOTALIZERA_DATA [ __TMPI1 ]
@@ -70,12 +89,19 @@ VAL_FLOWTOTALIZERA := __TMPR1
_GOTO __LAB4
__LAB3 :
__LAB4 :
_STEP 2 0 39
MBS_FLOWTOTALIZERB_TARGETCFG [ __DINT_NULL ] := CFG_FLOWTOTALIZERB_REGISTER
_STEP 2 0 40
MBS_FLOWTOTALIZERB_TARGETCFG [ __CDINT00000004 ] := CFG_FLOWMETER_MODBUSNODE
_STEP 2 0 42
MBS_FLOWTOTALIZERB_LOCALCFG [ __DINT_NULL ] := __CUINT00000002
_STEP 2 0 43
MBS_FLOWTOTALIZERB_LOCALCFG [ __CDINT00000003 ] := READ_CMD
_STEP 2 0 44
MBS_FLOWTOTALIZERB_LOCALCFG [ __CDINT00000002 ] := MBS_TRIGGERTYPE
_STEP 2 0 45
MBS_FLOWTOTALIZERB_LOCALCFG [ __CDINT00000004 ] := __CUINT00000002
_STEP 2 0 46
__TMPB1 := MODBUSTIMER [ __CDINT00000004 ]
__TMPV1 := MBS_FLOWTOTALIZERB_LOCALCFG [ __DINT_NULL ]
__TMPV2 := MBS_FLOWTOTALIZERB_TARGETCFG [ __DINT_NULL ]
@@ -89,8 +115,10 @@ __TMPV6 := MBS_FLOWTOTALIZERB_MSG [ __CDINT00000008 ]
__TMPV6 := __TMPV3
MBS_FLOWTOTALIZERB_MSG [ __CDINT0000000A ] := __ADI__FLOWMETERMB_0_2
__FBL_RET := _PUSHCALLFB MSG_MODBUS MBS_FLOWTOTALIZERB_MSG
_STEP 2 0 48
__TMPB1 := MBS_FLOWTOTALIZERB_MSG [ __CDINT0000000C ]
_IF _NOT __TMPB1 _GOTO __LAB5
_STEP 2 0 49
__TMPI1 := __CDINT00000001 - __CDINT00000001
__TMPI1 := __TMPI1 * __CDINT00000002
__TMPUIN1 := MBS_FLOWTOTALIZERB_DATA [ __TMPI1 ]
@@ -104,12 +132,19 @@ VAL_FLOWTOTALIZERB := __TMPR1
_GOTO __LAB6
__LAB5 :
__LAB6 :
_STEP 2 0 55
MBS_FLOWTOTALIZERC_TARGETCFG [ __DINT_NULL ] := CFG_FLOWTOTALIZERC_REGISTER
_STEP 2 0 56
MBS_FLOWTOTALIZERC_TARGETCFG [ __CDINT00000004 ] := CFG_FLOWMETER_MODBUSNODE
_STEP 2 0 58
MBS_FLOWTOTALIZERC_LOCALCFG [ __DINT_NULL ] := __CUINT00000002
_STEP 2 0 59
MBS_FLOWTOTALIZERC_LOCALCFG [ __CDINT00000003 ] := READ_CMD
_STEP 2 0 60
MBS_FLOWTOTALIZERC_LOCALCFG [ __CDINT00000002 ] := MBS_TRIGGERTYPE
_STEP 2 0 61
MBS_FLOWTOTALIZERC_LOCALCFG [ __CDINT00000004 ] := __CUINT00000002
_STEP 2 0 62
__TMPB1 := MODBUSTIMER [ __CDINT00000004 ]
__TMPV1 := MBS_FLOWTOTALIZERC_LOCALCFG [ __DINT_NULL ]
__TMPV2 := MBS_FLOWTOTALIZERC_TARGETCFG [ __DINT_NULL ]
@@ -123,8 +158,10 @@ __TMPV6 := MBS_FLOWTOTALIZERC_MSG [ __CDINT00000008 ]
__TMPV6 := __TMPV3
MBS_FLOWTOTALIZERC_MSG [ __CDINT0000000A ] := __ADI__FLOWMETERMB_0_3
__FBL_RET := _PUSHCALLFB MSG_MODBUS MBS_FLOWTOTALIZERC_MSG
_STEP 2 0 64
__TMPB1 := MBS_FLOWTOTALIZERC_MSG [ __CDINT0000000C ]
_IF _NOT __TMPB1 _GOTO __LAB7
_STEP 2 0 65
__TMPI1 := __CDINT00000001 - __CDINT00000001
__TMPI1 := __TMPI1 * __CDINT00000002
__TMPUIN1 := MBS_FLOWTOTALIZERC_DATA [ __TMPI1 ]
@@ -138,12 +175,19 @@ VAL_FLOWTOTALIZERC := __TMPR1
_GOTO __LAB8
__LAB7 :
__LAB8 :
_STEP 2 0 71
MBS_STATUS_TARGETCFG [ __DINT_NULL ] := CFG_STATUS_REGISTER
_STEP 2 0 72
MBS_STATUS_TARGETCFG [ __CDINT00000004 ] := CFG_FLOWMETER_MODBUSNODE
_STEP 2 0 74
MBS_STATUS_LOCALCFG [ __DINT_NULL ] := __CUINT00000002
_STEP 2 0 75
MBS_STATUS_LOCALCFG [ __CDINT00000003 ] := READ_CMD
_STEP 2 0 76
MBS_STATUS_LOCALCFG [ __CDINT00000002 ] := MBS_TRIGGERTYPE
_STEP 2 0 77
MBS_STATUS_LOCALCFG [ __CDINT00000004 ] := __CUINT00000003
_STEP 2 0 78
__TMPB1 := MODBUSTIMER [ __CDINT00000004 ]
__TMPV1 := MBS_STATUS_LOCALCFG [ __DINT_NULL ]
__TMPV2 := MBS_STATUS_TARGETCFG [ __DINT_NULL ]
@@ -157,20 +201,24 @@ __TMPV6 := MBS_STATUS_MSG [ __CDINT00000008 ]
__TMPV6 := __TMPV3
MBS_STATUS_MSG [ __CDINT0000000A ] := __ADI__FLOWMETERMB_0_4
__FBL_RET := _PUSHCALLFB MSG_MODBUS MBS_STATUS_MSG
_STEP 2 0 80
__TMPB1 := MBS_STATUS_MSG [ __CDINT0000000C ]
_IF _NOT __TMPB1 _GOTO __LAB9
_STEP 2 0 81
__TMPI1 := __CDINT00000001 - __CDINT00000001
__TMPI1 := __TMPI1 * __CDINT00000002
__TMPUIN1 := MBS_STATUS_DATA [ __TMPI1 ]
_PUSH_PAR __TMPUIN1
__TMPUIN2 := _CALL ANY_TO_UINT
VAL_STATUS0 := __TMPUIN2
_STEP 2 0 82
__TMPI1 := __CDINT00000002 - __CDINT00000001
__TMPI1 := __TMPI1 * __CDINT00000002
__TMPUIN1 := MBS_STATUS_DATA [ __TMPI1 ]
_PUSH_PAR __TMPUIN1
__TMPUIN2 := _CALL ANY_TO_UINT
VAL_STATUS1 := __TMPUIN2
_STEP 2 0 83
__TMPI1 := __CDINT00000003 - __CDINT00000001
__TMPI1 := __TMPI1 * __CDINT00000002
__TMPUIN1 := MBS_STATUS_DATA [ __TMPI1 ]
@@ -180,446 +228,546 @@ VAL_STATUS2 := __TMPUIN2
_GOTO __LABa
__LAB9 :
__LABa :
_STEP 2 0 88
__TMPUIN1 := VAL_STATUS0 + VAL_STATUS1
__TMPUIN1 := __TMPUIN1 + VAL_STATUS2
__TMPB1 := __TMPUIN1 = __UINT_NULL
_IF _NOT __TMPB1 _GOTO __LABb
_STEP 2 0 89
VAL_STATUSSTRING := __TMPM1
_GOTO __LABc
__LABb :
_STEP 2 0 91
VAL_STATUSSTRING := __STRING_NULL
_STEP 2 0 92
_PUSH_PAR VAL_STATUS0
_PUSH_PAR __DINT_NULL
__TMPB1 := _CALL __ANARBIT
_IF _NOT __TMPB1 _GOTO __LABd
_STEP 2 0 93
__TMPM3 := VAL_STATUSSTRING + __TMPM2
VAL_STATUSSTRING := __TMPM3
_GOTO __LABe
__LABd :
__LABe :
_STEP 2 0 95
_PUSH_PAR VAL_STATUS0
_PUSH_PAR __CDINT00000001
__TMPB1 := _CALL __ANARBIT
_IF _NOT __TMPB1 _GOTO __LABf
_STEP 2 0 96
__TMPM3 := VAL_STATUSSTRING + __TMPM4
VAL_STATUSSTRING := __TMPM3
_GOTO __LAB10
__LABf :
__LAB10 :
_STEP 2 0 98
_PUSH_PAR VAL_STATUS0
_PUSH_PAR __CDINT00000002
__TMPB1 := _CALL __ANARBIT
_IF _NOT __TMPB1 _GOTO __LAB11
_STEP 2 0 99
__TMPM3 := VAL_STATUSSTRING + __TMPM5
VAL_STATUSSTRING := __TMPM3
_GOTO __LAB12
__LAB11 :
__LAB12 :
_STEP 2 0 101
_PUSH_PAR VAL_STATUS0
_PUSH_PAR __CDINT00000003
__TMPB1 := _CALL __ANARBIT
_IF _NOT __TMPB1 _GOTO __LAB13
_STEP 2 0 102
__TMPM3 := VAL_STATUSSTRING + __TMPM6
VAL_STATUSSTRING := __TMPM3
_GOTO __LAB14
__LAB13 :
__LAB14 :
_STEP 2 0 104
_PUSH_PAR VAL_STATUS0
_PUSH_PAR __CDINT00000004
__TMPB1 := _CALL __ANARBIT
_IF _NOT __TMPB1 _GOTO __LAB15
_STEP 2 0 105
__TMPM3 := VAL_STATUSSTRING + __TMPM7
VAL_STATUSSTRING := __TMPM3
_GOTO __LAB16
__LAB15 :
__LAB16 :
_STEP 2 0 107
_PUSH_PAR VAL_STATUS0
_PUSH_PAR __CDINT00000005
__TMPB1 := _CALL __ANARBIT
_IF _NOT __TMPB1 _GOTO __LAB17
_STEP 2 0 108
__TMPM3 := VAL_STATUSSTRING + __TMPM8
VAL_STATUSSTRING := __TMPM3
_GOTO __LAB18
__LAB17 :
__LAB18 :
_STEP 2 0 110
_PUSH_PAR VAL_STATUS0
_PUSH_PAR __CDINT00000006
__TMPB1 := _CALL __ANARBIT
_IF _NOT __TMPB1 _GOTO __LAB19
_STEP 2 0 111
__TMPM3 := VAL_STATUSSTRING + __TMPM9
VAL_STATUSSTRING := __TMPM3
_GOTO __LAB1a
__LAB19 :
__LAB1a :
_STEP 2 0 113
_PUSH_PAR VAL_STATUS0
_PUSH_PAR __CDINT00000007
__TMPB1 := _CALL __ANARBIT
_IF _NOT __TMPB1 _GOTO __LAB1b
_STEP 2 0 114
__TMPM3 := VAL_STATUSSTRING + __TMPM10
VAL_STATUSSTRING := __TMPM3
_GOTO __LAB1c
__LAB1b :
__LAB1c :
_STEP 2 0 116
_PUSH_PAR VAL_STATUS0
_PUSH_PAR __CDINT00000008
__TMPB1 := _CALL __ANARBIT
_IF _NOT __TMPB1 _GOTO __LAB1d
_STEP 2 0 117
__TMPM3 := VAL_STATUSSTRING + __TMPM11
VAL_STATUSSTRING := __TMPM3
_GOTO __LAB1e
__LAB1d :
__LAB1e :
_STEP 2 0 119
_PUSH_PAR VAL_STATUS0
_PUSH_PAR __CDINT00000009
__TMPB1 := _CALL __ANARBIT
_IF _NOT __TMPB1 _GOTO __LAB1f
_STEP 2 0 120
__TMPM3 := VAL_STATUSSTRING + __TMPM12
VAL_STATUSSTRING := __TMPM3
_GOTO __LAB20
__LAB1f :
__LAB20 :
_STEP 2 0 122
_PUSH_PAR VAL_STATUS0
_PUSH_PAR __CDINT0000000A
__TMPB1 := _CALL __ANARBIT
_IF _NOT __TMPB1 _GOTO __LAB21
_STEP 2 0 123
__TMPM3 := VAL_STATUSSTRING + __TMPM13
VAL_STATUSSTRING := __TMPM3
_GOTO __LAB22
__LAB21 :
__LAB22 :
_STEP 2 0 125
_PUSH_PAR VAL_STATUS0
_PUSH_PAR __CDINT0000000B
__TMPB1 := _CALL __ANARBIT
_IF _NOT __TMPB1 _GOTO __LAB23
_STEP 2 0 126
__TMPM3 := VAL_STATUSSTRING + __TMPM14
VAL_STATUSSTRING := __TMPM3
_GOTO __LAB24
__LAB23 :
__LAB24 :
_STEP 2 0 128
_PUSH_PAR VAL_STATUS0
_PUSH_PAR __CDINT0000000C
__TMPB1 := _CALL __ANARBIT
_IF _NOT __TMPB1 _GOTO __LAB25
_STEP 2 0 129
__TMPM3 := VAL_STATUSSTRING + __TMPM15
VAL_STATUSSTRING := __TMPM3
_GOTO __LAB26
__LAB25 :
__LAB26 :
_STEP 2 0 131
_PUSH_PAR VAL_STATUS0
_PUSH_PAR __CDINT0000000D
__TMPB1 := _CALL __ANARBIT
_IF _NOT __TMPB1 _GOTO __LAB27
_STEP 2 0 132
__TMPM3 := VAL_STATUSSTRING + __TMPM16
VAL_STATUSSTRING := __TMPM3
_GOTO __LAB28
__LAB27 :
__LAB28 :
_STEP 2 0 134
_PUSH_PAR VAL_STATUS0
_PUSH_PAR __CDINT0000000E
__TMPB1 := _CALL __ANARBIT
_IF _NOT __TMPB1 _GOTO __LAB29
_STEP 2 0 135
__TMPM3 := VAL_STATUSSTRING + __TMPM17
VAL_STATUSSTRING := __TMPM3
_GOTO __LAB2a
__LAB29 :
__LAB2a :
_STEP 2 0 137
_PUSH_PAR VAL_STATUS0
_PUSH_PAR __CDINT0000000F
__TMPB1 := _CALL __ANARBIT
_IF _NOT __TMPB1 _GOTO __LAB2b
_STEP 2 0 138
__TMPM3 := VAL_STATUSSTRING + __TMPM18
VAL_STATUSSTRING := __TMPM3
_GOTO __LAB2c
__LAB2b :
__LAB2c :
_STEP 2 0 141
_PUSH_PAR VAL_STATUS1
_PUSH_PAR __DINT_NULL
__TMPB1 := _CALL __ANARBIT
_IF _NOT __TMPB1 _GOTO __LAB2d
_STEP 2 0 142
__TMPM3 := VAL_STATUSSTRING + __TMPM19
VAL_STATUSSTRING := __TMPM3
_GOTO __LAB2e
__LAB2d :
__LAB2e :
_STEP 2 0 144
_PUSH_PAR VAL_STATUS1
_PUSH_PAR __CDINT00000001
__TMPB1 := _CALL __ANARBIT
_IF _NOT __TMPB1 _GOTO __LAB2f
_STEP 2 0 145
__TMPM3 := VAL_STATUSSTRING + __TMPM20
VAL_STATUSSTRING := __TMPM3
_GOTO __LAB30
__LAB2f :
__LAB30 :
_STEP 2 0 147
_PUSH_PAR VAL_STATUS1
_PUSH_PAR __CDINT00000002
__TMPB1 := _CALL __ANARBIT
_IF _NOT __TMPB1 _GOTO __LAB31
_STEP 2 0 148
__TMPM3 := VAL_STATUSSTRING + __TMPM21
VAL_STATUSSTRING := __TMPM3
_GOTO __LAB32
__LAB31 :
__LAB32 :
_STEP 2 0 150
_PUSH_PAR VAL_STATUS1
_PUSH_PAR __CDINT00000003
__TMPB1 := _CALL __ANARBIT
_IF _NOT __TMPB1 _GOTO __LAB33
_STEP 2 0 151
__TMPM3 := VAL_STATUSSTRING + __TMPM22
VAL_STATUSSTRING := __TMPM3
_GOTO __LAB34
__LAB33 :
__LAB34 :
_STEP 2 0 153
_PUSH_PAR VAL_STATUS1
_PUSH_PAR __CDINT00000004
__TMPB1 := _CALL __ANARBIT
_IF _NOT __TMPB1 _GOTO __LAB35
_STEP 2 0 154
__TMPM3 := VAL_STATUSSTRING + __TMPM23
VAL_STATUSSTRING := __TMPM3
_GOTO __LAB36
__LAB35 :
__LAB36 :
_STEP 2 0 156
_PUSH_PAR VAL_STATUS1
_PUSH_PAR __CDINT00000005
__TMPB1 := _CALL __ANARBIT
_IF _NOT __TMPB1 _GOTO __LAB37
_STEP 2 0 157
__TMPM3 := VAL_STATUSSTRING + __TMPM24
VAL_STATUSSTRING := __TMPM3
_GOTO __LAB38
__LAB37 :
__LAB38 :
_STEP 2 0 159
_PUSH_PAR VAL_STATUS1
_PUSH_PAR __CDINT00000006
__TMPB1 := _CALL __ANARBIT
_IF _NOT __TMPB1 _GOTO __LAB39
_STEP 2 0 160
__TMPM3 := VAL_STATUSSTRING + __TMPM25
VAL_STATUSSTRING := __TMPM3
_GOTO __LAB3a
__LAB39 :
__LAB3a :
_STEP 2 0 162
_PUSH_PAR VAL_STATUS1
_PUSH_PAR __CDINT00000007
__TMPB1 := _CALL __ANARBIT
_IF _NOT __TMPB1 _GOTO __LAB3b
_STEP 2 0 163
__TMPM3 := VAL_STATUSSTRING + __TMPM26
VAL_STATUSSTRING := __TMPM3
_GOTO __LAB3c
__LAB3b :
__LAB3c :
_STEP 2 0 165
_PUSH_PAR VAL_STATUS1
_PUSH_PAR __CDINT00000008
__TMPB1 := _CALL __ANARBIT
_IF _NOT __TMPB1 _GOTO __LAB3d
_STEP 2 0 166
__TMPM3 := VAL_STATUSSTRING + __TMPM27
VAL_STATUSSTRING := __TMPM3
_GOTO __LAB3e
__LAB3d :
__LAB3e :
_STEP 2 0 168
_PUSH_PAR VAL_STATUS1
_PUSH_PAR __CDINT00000009
__TMPB1 := _CALL __ANARBIT
_IF _NOT __TMPB1 _GOTO __LAB3f
_STEP 2 0 169
__TMPM3 := VAL_STATUSSTRING + __TMPM28
VAL_STATUSSTRING := __TMPM3
_GOTO __LAB40
__LAB3f :
__LAB40 :
_STEP 2 0 171
_PUSH_PAR VAL_STATUS1
_PUSH_PAR __CDINT0000000A
__TMPB1 := _CALL __ANARBIT
_IF _NOT __TMPB1 _GOTO __LAB41
_STEP 2 0 172
__TMPM3 := VAL_STATUSSTRING + __TMPM29
VAL_STATUSSTRING := __TMPM3
_GOTO __LAB42
__LAB41 :
__LAB42 :
_STEP 2 0 174
_PUSH_PAR VAL_STATUS1
_PUSH_PAR __CDINT0000000B
__TMPB1 := _CALL __ANARBIT
_IF _NOT __TMPB1 _GOTO __LAB43
_STEP 2 0 175
__TMPM3 := VAL_STATUSSTRING + __TMPM30
VAL_STATUSSTRING := __TMPM3
_GOTO __LAB44
__LAB43 :
__LAB44 :
_STEP 2 0 177
_PUSH_PAR VAL_STATUS1
_PUSH_PAR __CDINT0000000C
__TMPB1 := _CALL __ANARBIT
_IF _NOT __TMPB1 _GOTO __LAB45
_STEP 2 0 178
__TMPM3 := VAL_STATUSSTRING + __TMPM31
VAL_STATUSSTRING := __TMPM3
_GOTO __LAB46
__LAB45 :
__LAB46 :
_STEP 2 0 180
_PUSH_PAR VAL_STATUS1
_PUSH_PAR __CDINT0000000D
__TMPB1 := _CALL __ANARBIT
_IF _NOT __TMPB1 _GOTO __LAB47
_STEP 2 0 181
__TMPM3 := VAL_STATUSSTRING + __TMPM32
VAL_STATUSSTRING := __TMPM3
_GOTO __LAB48
__LAB47 :
__LAB48 :
_STEP 2 0 183
_PUSH_PAR VAL_STATUS1
_PUSH_PAR __CDINT0000000E
__TMPB1 := _CALL __ANARBIT
_IF _NOT __TMPB1 _GOTO __LAB49
_STEP 2 0 184
__TMPM3 := VAL_STATUSSTRING + __TMPM33
VAL_STATUSSTRING := __TMPM3
_GOTO __LAB4a
__LAB49 :
__LAB4a :
_STEP 2 0 186
_PUSH_PAR VAL_STATUS1
_PUSH_PAR __CDINT0000000F
__TMPB1 := _CALL __ANARBIT
_IF _NOT __TMPB1 _GOTO __LAB4b
_STEP 2 0 187
__TMPM3 := VAL_STATUSSTRING + __TMPM34
VAL_STATUSSTRING := __TMPM3
_GOTO __LAB4c
__LAB4b :
__LAB4c :
_STEP 2 0 190
_PUSH_PAR VAL_STATUS2
_PUSH_PAR __DINT_NULL
__TMPB1 := _CALL __ANARBIT
_IF _NOT __TMPB1 _GOTO __LAB4d
_STEP 2 0 191
__TMPM3 := VAL_STATUSSTRING + __TMPM35
VAL_STATUSSTRING := __TMPM3
_GOTO __LAB4e
__LAB4d :
__LAB4e :
_STEP 2 0 193
_PUSH_PAR VAL_STATUS2
_PUSH_PAR __CDINT00000001
__TMPB1 := _CALL __ANARBIT
_IF _NOT __TMPB1 _GOTO __LAB4f
_STEP 2 0 194
__TMPM3 := VAL_STATUSSTRING + __TMPM36
VAL_STATUSSTRING := __TMPM3
_GOTO __LAB50
__LAB4f :
__LAB50 :
_STEP 2 0 196
_PUSH_PAR VAL_STATUS2
_PUSH_PAR __CDINT00000002
__TMPB1 := _CALL __ANARBIT
_IF _NOT __TMPB1 _GOTO __LAB51
_STEP 2 0 197
__TMPM3 := VAL_STATUSSTRING + __TMPM37
VAL_STATUSSTRING := __TMPM3
_GOTO __LAB52
__LAB51 :
__LAB52 :
_STEP 2 0 199
_PUSH_PAR VAL_STATUS2
_PUSH_PAR __CDINT00000003
__TMPB1 := _CALL __ANARBIT
_IF _NOT __TMPB1 _GOTO __LAB53
_STEP 2 0 200
__TMPM3 := VAL_STATUSSTRING + __TMPM38
VAL_STATUSSTRING := __TMPM3
_GOTO __LAB54
__LAB53 :
__LAB54 :
_STEP 2 0 202
_PUSH_PAR VAL_STATUS2
_PUSH_PAR __CDINT00000004
__TMPB1 := _CALL __ANARBIT
_IF _NOT __TMPB1 _GOTO __LAB55
_STEP 2 0 203
__TMPM3 := VAL_STATUSSTRING + __TMPM39
VAL_STATUSSTRING := __TMPM3
_GOTO __LAB56
__LAB55 :
__LAB56 :
_STEP 2 0 205
_PUSH_PAR VAL_STATUS2
_PUSH_PAR __CDINT00000005
__TMPB1 := _CALL __ANARBIT
_IF _NOT __TMPB1 _GOTO __LAB57
_STEP 2 0 206
__TMPM3 := VAL_STATUSSTRING + __TMPM40
VAL_STATUSSTRING := __TMPM3
_GOTO __LAB58
__LAB57 :
__LAB58 :
_STEP 2 0 208
_PUSH_PAR VAL_STATUS2
_PUSH_PAR __CDINT00000006
__TMPB1 := _CALL __ANARBIT
_IF _NOT __TMPB1 _GOTO __LAB59
_STEP 2 0 209
__TMPM3 := VAL_STATUSSTRING + __TMPM41
VAL_STATUSSTRING := __TMPM3
_GOTO __LAB5a
__LAB59 :
__LAB5a :
_STEP 2 0 211
_PUSH_PAR VAL_STATUS2
_PUSH_PAR __CDINT00000007
__TMPB1 := _CALL __ANARBIT
_IF _NOT __TMPB1 _GOTO __LAB5b
_STEP 2 0 212
__TMPM3 := VAL_STATUSSTRING + __TMPM42
VAL_STATUSSTRING := __TMPM3
_GOTO __LAB5c
__LAB5b :
__LAB5c :
_STEP 2 0 214
_PUSH_PAR VAL_STATUS2
_PUSH_PAR __CDINT00000008
__TMPB1 := _CALL __ANARBIT
_IF _NOT __TMPB1 _GOTO __LAB5d
_STEP 2 0 215
__TMPM3 := VAL_STATUSSTRING + __TMPM43
VAL_STATUSSTRING := __TMPM3
_GOTO __LAB5e
__LAB5d :
__LAB5e :
_STEP 2 0 217
_PUSH_PAR VAL_STATUS2
_PUSH_PAR __CDINT00000009
__TMPB1 := _CALL __ANARBIT
_IF _NOT __TMPB1 _GOTO __LAB5f
_STEP 2 0 218
__TMPM3 := VAL_STATUSSTRING + __TMPM44
VAL_STATUSSTRING := __TMPM3
_GOTO __LAB60
__LAB5f :
__LAB60 :
_STEP 2 0 220
_PUSH_PAR VAL_STATUS2
_PUSH_PAR __CDINT0000000A
__TMPB1 := _CALL __ANARBIT
_IF _NOT __TMPB1 _GOTO __LAB61
_STEP 2 0 221
__TMPM3 := VAL_STATUSSTRING + __TMPM45
VAL_STATUSSTRING := __TMPM3
_GOTO __LAB62
__LAB61 :
__LAB62 :
_STEP 2 0 223
_PUSH_PAR VAL_STATUS2
_PUSH_PAR __CDINT0000000B
__TMPB1 := _CALL __ANARBIT
_IF _NOT __TMPB1 _GOTO __LAB63
_STEP 2 0 224
__TMPM3 := VAL_STATUSSTRING + __TMPM46
VAL_STATUSSTRING := __TMPM3
_GOTO __LAB64
__LAB63 :
__LAB64 :
_STEP 2 0 226
_PUSH_PAR VAL_STATUS2
_PUSH_PAR __CDINT0000000C
__TMPB1 := _CALL __ANARBIT
_IF _NOT __TMPB1 _GOTO __LAB65
_STEP 2 0 227
__TMPM3 := VAL_STATUSSTRING + __TMPM47
VAL_STATUSSTRING := __TMPM3
_GOTO __LAB66
__LAB65 :
__LAB66 :
_STEP 2 0 229
_PUSH_PAR VAL_STATUS2
_PUSH_PAR __CDINT0000000D
__TMPB1 := _CALL __ANARBIT
_IF _NOT __TMPB1 _GOTO __LAB67
_STEP 2 0 230
__TMPM3 := VAL_STATUSSTRING + __TMPM48
VAL_STATUSSTRING := __TMPM3
_GOTO __LAB68
__LAB67 :
__LAB68 :
_STEP 2 0 232
_PUSH_PAR VAL_STATUS2
_PUSH_PAR __CDINT0000000E
__TMPB1 := _CALL __ANARBIT
_IF _NOT __TMPB1 _GOTO __LAB69
_STEP 2 0 233
__TMPM3 := VAL_STATUSSTRING + __TMPM49
VAL_STATUSSTRING := __TMPM3
_GOTO __LAB6a
__LAB69 :
__LAB6a :
_STEP 2 0 235
_PUSH_PAR VAL_STATUS2
_PUSH_PAR __CDINT0000000F
__TMPB1 := _CALL __ANARBIT
_IF _NOT __TMPB1 _GOTO __LAB6b
_STEP 2 0 236
__TMPM3 := VAL_STATUSSTRING + __TMPM50
VAL_STATUSSTRING := __TMPM3
_GOTO __LAB6c
__LAB6b :
__LAB6c :
_STEP 2 0 239
_PUSH_PAR VAL_STATUSSTRING
__TMPI1 := _CALL MLEN
__TMPI1 := __TMPI1 - __CDINT00000002
@@ -628,30 +776,43 @@ _PUSH_PAR __TMPI1
__TMPM3 := _CALL RIGHT
VAL_STATUSSTRING := __TMPM3
__LABc :
_STEP 2 0 246
__TMPB1 := CMD_RESETTOTALIZERA _OR CMD_RESETTOTALIZERB
__TMPB1 := __TMPB1 _OR CMD_RESETTOTALIZERC
CMD_RESETTOTALIZER := __TMPB1
_STEP 2 0 248
_IF _NOT CMD_RESETTOTALIZERA _GOTO __LAB6d
_STEP 2 0 249
MBS_RESETTOTALIZER_TARGETCFG [ __DINT_NULL ] := CFG_RESETTOTALIZERA_COIL
_GOTO __LAB6e
__LAB6d :
_STEP 2 0 250
_IF _NOT CMD_RESETTOTALIZERB _GOTO __LAB6f
MBS_RESETTOTALIZER_TARGETCFG [ __DINT_NULL ] := CFG_RESETTOTALIZERA_COIL
_STEP 2 0 251
MBS_RESETTOTALIZER_TARGETCFG [ __DINT_NULL ] := CFG_RESETTOTALIZERB_COIL
_GOTO __LAB6e
__LAB6f :
_IF _NOT CMD_RESETTOTALIZERC _GOTO __LAB70
_STEP 2 0 253
MBS_RESETTOTALIZER_TARGETCFG [ __DINT_NULL ] := CFG_RESETTOTALIZERC_COIL
_GOTO __LAB6e
__LAB70 :
__LAB6e :
_STEP 2 0 256
MBS_RESETTOTALIZER_TARGETCFG [ __CDINT00000004 ] := CFG_FLOWMETER_MODBUSNODE
_STEP 2 0 258
MBS_RESETTOTALIZER_LOCALCFG [ __DINT_NULL ] := __CUINT00000002
_STEP 2 0 259
MBS_RESETTOTALIZER_LOCALCFG [ __CDINT00000003 ] := WRITECOIL_CMD
_STEP 2 0 260
MBS_RESETTOTALIZER_LOCALCFG [ __CDINT00000002 ] := __USINT_NULL
_STEP 2 0 261
MBS_RESETTOTALIZER_LOCALCFG [ __CDINT00000004 ] := __CUINT00000001
_STEP 2 0 262
__TMPI1 := __CDINT00000001 - __CDINT00000001
__TMPI1 := __TMPI1 * __CDINT00000002
MBS_RESETTOTALIZER_DATA [ __TMPI1 ] := __CUINT00000001
_STEP 2 0 264
__TMPV1 := MBS_RESETTOTALIZER_LOCALCFG [ __DINT_NULL ]
__TMPV2 := MBS_RESETTOTALIZER_TARGETCFG [ __DINT_NULL ]
__TMPV3 := MBS_RESETTOTALIZER_DATA [ __DINT_NULL ]
@@ -663,33 +824,47 @@ __TMPV6 := MBS_RESETTOTALIZER_MSG [ __CDINT00000008 ]
__TMPV6 := __TMPV3
MBS_RESETTOTALIZER_MSG [ __CDINT0000000A ] := __ADI__FLOWMETERMB_0_5
__FBL_RET := _PUSHCALLFB MSG_MODBUS MBS_RESETTOTALIZER_MSG
_STEP 2 0 265
__TMPB1 := MBS_RESETTOTALIZER_MSG [ __CDINT0000000C ]
__TMPB2 := MBS_RESETTOTALIZER_MSG [ __CDINT0000000D ]
__TMPB1 := __TMPB1 _OR __TMPB2
_IF _NOT __TMPB1 _GOTO __LAB71
_STEP 2 0 266
CMD_CLEARRESETTOTALIZER := TRUE
_STEP 2 0 267
CMD_RESETTOTALIZERA := FALSE
_STEP 2 0 268
CMD_RESETTOTALIZERB := FALSE
_STEP 2 0 269
CMD_RESETTOTALIZERC := FALSE
_GOTO __LAB72
__LAB71 :
__LAB72 :
_STEP 2 0 272
__FBL_RET := _PUSHCALLFB TON WAIT_TO_RESET_TON
_STEP 2 0 274
__TMPUDI1 := MBS_RESETTOTALIZER_TARGETCFG [ __DINT_NULL ]
MBS_CLEARRESETTOTALIZER_TARGETCFG [ __DINT_NULL ] := __TMPUDI1
_STEP 2 0 275
__TMPUSI1 := MBS_RESETTOTALIZER_TARGETCFG [ __CDINT00000004 ]
MBS_CLEARRESETTOTALIZER_TARGETCFG [ __CDINT00000004 ] := __TMPUSI1
_STEP 2 0 276
__TMPUIN1 := MBS_RESETTOTALIZER_LOCALCFG [ __DINT_NULL ]
MBS_CLEARRESETTOTALIZER_LOCALCFG [ __DINT_NULL ] := __TMPUIN1
_STEP 2 0 277
__TMPUSI1 := MBS_RESETTOTALIZER_LOCALCFG [ __CDINT00000003 ]
MBS_CLEARRESETTOTALIZER_LOCALCFG [ __CDINT00000003 ] := __TMPUSI1
_STEP 2 0 278
__TMPUSI1 := MBS_RESETTOTALIZER_LOCALCFG [ __CDINT00000002 ]
MBS_CLEARRESETTOTALIZER_LOCALCFG [ __CDINT00000002 ] := __TMPUSI1
_STEP 2 0 279
__TMPUIN1 := MBS_RESETTOTALIZER_LOCALCFG [ __CDINT00000004 ]
MBS_CLEARRESETTOTALIZER_LOCALCFG [ __CDINT00000004 ] := __TMPUIN1
_STEP 2 0 280
__TMPI1 := __CDINT00000001 - __CDINT00000001
__TMPI1 := __TMPI1 * __CDINT00000002
MBS_CLEARRESETTOTALIZER_DATA [ __TMPI1 ] := __UINT_NULL
_STEP 2 0 281
__TMPB1 := WAIT_TO_RESET_TON [ __CDINT00000004 ]
__TMPV1 := MBS_CLEARRESETTOTALIZER_LOCALCFG [ __DINT_NULL ]
__TMPV2 := MBS_CLEARRESETTOTALIZER_TARGETCFG [ __DINT_NULL ]
@@ -703,20 +878,29 @@ __TMPV6 := MBS_CLEARRESETTOTALIZER_MSG [ __CDINT00000008 ]
__TMPV6 := __TMPV3
MBS_CLEARRESETTOTALIZER_MSG [ __CDINT0000000A ] := __ADI__FLOWMETERMB_0_6
__FBL_RET := _PUSHCALLFB MSG_MODBUS MBS_CLEARRESETTOTALIZER_MSG
_STEP 2 0 283
__TMPB1 := MBS_CLEARRESETTOTALIZER_MSG [ __CDINT0000000C ]
__TMPB2 := MBS_CLEARRESETTOTALIZER_MSG [ __CDINT0000000D ]
__TMPB1 := __TMPB1 _OR __TMPB2
_IF _NOT __TMPB1 _GOTO __LAB73
_STEP 2 0 284
CMD_CLEARRESETTOTALIZER := FALSE
_GOTO __LAB74
__LAB73 :
__LAB74 :
_STEP 2 0 291
MBS_UNITS_TARGETCFG [ __DINT_NULL ] := CFG_UNITS_REGISTER
_STEP 2 0 292
MBS_UNITS_TARGETCFG [ __CDINT00000004 ] := CFG_FLOWMETER_MODBUSNODE
_STEP 2 0 294
MBS_UNITS_LOCALCFG [ __DINT_NULL ] := __CUINT00000002
_STEP 2 0 295
MBS_UNITS_LOCALCFG [ __CDINT00000003 ] := READ_CMD
_STEP 2 0 296
MBS_UNITS_LOCALCFG [ __CDINT00000002 ] := MBS_TRIGGERTYPE
_STEP 2 0 297
MBS_UNITS_LOCALCFG [ __CDINT00000004 ] := __CUINT00000004
_STEP 2 0 298
__TMPB1 := MODBUSTIMER [ __CDINT00000004 ]
__TMPV1 := MBS_UNITS_LOCALCFG [ __DINT_NULL ]
__TMPV2 := MBS_UNITS_TARGETCFG [ __DINT_NULL ]
@@ -730,26 +914,31 @@ __TMPV6 := MBS_UNITS_MSG [ __CDINT00000008 ]
__TMPV6 := __TMPV3
MBS_UNITS_MSG [ __CDINT0000000A ] := __ADI__FLOWMETERMB_0_7
__FBL_RET := _PUSHCALLFB MSG_MODBUS MBS_UNITS_MSG
_STEP 2 0 300
__TMPB1 := MBS_UNITS_MSG [ __CDINT0000000C ]
_IF _NOT __TMPB1 _GOTO __LAB75
_STEP 2 0 301
__TMPI1 := __CDINT00000001 - __CDINT00000001
__TMPI1 := __TMPI1 * __CDINT00000002
__TMPUIN1 := MBS_UNITS_DATA [ __TMPI1 ]
_PUSH_PAR __TMPUIN1
__TMPM3 := _CALL FLOWRATEUNITS
VAL_FLOWUNITS := __TMPM3
_STEP 2 0 302
__TMPI1 := __CDINT00000002 - __CDINT00000001
__TMPI1 := __TMPI1 * __CDINT00000002
__TMPUIN1 := MBS_UNITS_DATA [ __TMPI1 ]
_PUSH_PAR __TMPUIN1
__TMPM3 := _CALL FLOWTOTALUNITS
VAL_FLOWTOTALIZERAUNITS := __TMPM3
_STEP 2 0 303
__TMPI1 := __CDINT00000003 - __CDINT00000001
__TMPI1 := __TMPI1 * __CDINT00000002
__TMPUIN1 := MBS_UNITS_DATA [ __TMPI1 ]
_PUSH_PAR __TMPUIN1
__TMPM3 := _CALL FLOWTOTALUNITS
VAL_FLOWTOTALIZERBUNITS := __TMPM3
_STEP 2 0 304
__TMPI1 := __CDINT00000004 - __CDINT00000001
__TMPI1 := __TMPI1 * __CDINT00000002
__TMPUIN1 := MBS_UNITS_DATA [ __TMPI1 ]
@@ -759,6 +948,7 @@ VAL_FLOWTOTALIZERCUNITS := __TMPM3
_GOTO __LAB76
__LAB75 :
__LAB76 :
_STEP 2 0 308
__TMPB1 := MBS_FLOWRATE_MSG [ __CDINT0000000D ]
__TMPB2 := MBS_FLOWTOTALIZERA_MSG [ __CDINT0000000D ]
__TMPB1 := __TMPB1 _OR __TMPB2
@@ -773,5 +963,6 @@ __TMPB1 := __TMPB1 _OR __TMPB6
__TMPB1 := _NOT __TMPB1
__TMPB__TON__IN := __TMPB1
__FBL_RET := _PUSHCALLFB TON MODBUSERRORTIMER
_STEP 2 0 314
__TMPB1 := MODBUSERRORTIMER [ __CDINT00000004 ]
STS_FLOWMETERMODBUSOK := __TMPB1

View File

@@ -0,0 +1,193 @@
191
0, 1
26, 6
34, 7
42, 9
50, 10
58, 11
66, 12
74, 13
168, 15
182, 16
216, 22
224, 23
232, 25
240, 26
248, 27
256, 28
264, 29
358, 31
372, 32
406, 39
414, 40
422, 42
430, 43
438, 44
446, 45
454, 46
548, 48
562, 49
596, 55
604, 56
612, 58
620, 59
628, 60
636, 61
644, 62
738, 64
752, 65
786, 71
794, 72
802, 74
810, 75
818, 76
826, 77
834, 78
928, 80
942, 81
962, 82
982, 83
1006, 88
1036, 89
1050, 91
1056, 92
1070, 93
1082, 95
1096, 96
1108, 98
1122, 99
1134, 101
1148, 102
1160, 104
1174, 105
1186, 107
1200, 108
1212, 110
1226, 111
1238, 113
1252, 114
1264, 116
1278, 117
1290, 119
1304, 120
1316, 122
1330, 123
1342, 125
1356, 126
1368, 128
1382, 129
1394, 131
1408, 132
1420, 134
1434, 135
1446, 137
1460, 138
1472, 141
1486, 142
1498, 144
1512, 145
1524, 147
1538, 148
1550, 150
1564, 151
1576, 153
1590, 154
1602, 156
1616, 157
1628, 159
1642, 160
1654, 162
1668, 163
1680, 165
1694, 166
1706, 168
1720, 169
1732, 171
1746, 172
1758, 174
1772, 175
1784, 177
1798, 178
1810, 180
1824, 181
1836, 183
1850, 184
1862, 186
1876, 187
1888, 190
1902, 191
1914, 193
1928, 194
1940, 196
1954, 197
1966, 199
1980, 200
1992, 202
2006, 203
2018, 205
2032, 206
2044, 208
2058, 209
2070, 211
2084, 212
2096, 214
2110, 215
2122, 217
2136, 218
2148, 220
2162, 221
2174, 223
2188, 224
2200, 226
2214, 227
2226, 229
2240, 230
2252, 232
2266, 233
2278, 235
2292, 236
2304, 239
2340, 246
2356, 248
2362, 249
2378, 250
2384, 251
2406, 253
2418, 256
2426, 258
2434, 259
2442, 260
2450, 261
2458, 262
2466, 264
2546, 265
2576, 266
2582, 267
2588, 268
2594, 269
2604, 272
2610, 274
2626, 275
2642, 276
2658, 277
2674, 278
2690, 279
2706, 280
2714, 281
2808, 283
2838, 284
2848, 291
2856, 292
2864, 294
2872, 295
2880, 296
2888, 297
2896, 298
2990, 300
3004, 301
3022, 302
3040, 303
3058, 304
3080, 308
3186, 314

View File

@@ -1,147 +1,179 @@
_STEP 2 0 1
__TMPB1 := INTEGERVALUE = __CUINT000000F1
_IF _NOT __TMPB1 _GOTO __LAB1
_STEP 2 0 2
FLOWRATEUNITS := __TMPM1
_GOTO __LAB2
__LAB1 :
_STEP 2 0 3
__TMPB1 := INTEGERVALUE = __CUINT000000F2
_IF _NOT __TMPB1 _GOTO __LAB3
_STEP 2 0 4
FLOWRATEUNITS := __TMPM2
_GOTO __LAB2
__LAB3 :
__TMPB1 := INTEGERVALUE = __CUINT000000F3
_IF _NOT __TMPB1 _GOTO __LAB4
_STEP 2 0 6
FLOWRATEUNITS := __TMPM3
_GOTO __LAB2
__LAB4 :
__TMPB1 := INTEGERVALUE = __CUINT000000F4
_IF _NOT __TMPB1 _GOTO __LAB5
_STEP 2 0 8
FLOWRATEUNITS := __TMPM4
_GOTO __LAB2
__LAB5 :
__TMPB1 := INTEGERVALUE = __CUINT00000084
_IF _NOT __TMPB1 _GOTO __LAB6
_STEP 2 0 10
FLOWRATEUNITS := __TMPM5
_GOTO __LAB2
__LAB6 :
__TMPB1 := INTEGERVALUE = __CUINT00000085
_IF _NOT __TMPB1 _GOTO __LAB7
_STEP 2 0 12
FLOWRATEUNITS := __TMPM6
_GOTO __LAB2
__LAB7 :
__TMPB1 := INTEGERVALUE = __CUINT00000086
_IF _NOT __TMPB1 _GOTO __LAB8
_STEP 2 0 14
FLOWRATEUNITS := __TMPM7
_GOTO __LAB2
__LAB8 :
__TMPB1 := INTEGERVALUE = __CUINT00000087
_IF _NOT __TMPB1 _GOTO __LAB9
_STEP 2 0 16
FLOWRATEUNITS := __TMPM8
_GOTO __LAB2
__LAB9 :
__TMPB1 := INTEGERVALUE = __CUINT000000F8
_IF _NOT __TMPB1 _GOTO __LABa
_STEP 2 0 18
FLOWRATEUNITS := __TMPM9
_GOTO __LAB2
__LABa :
__TMPB1 := INTEGERVALUE = __CUINT0000001A
_IF _NOT __TMPB1 _GOTO __LABb
_STEP 2 0 20
FLOWRATEUNITS := __TMPM10
_GOTO __LAB2
__LABb :
__TMPB1 := INTEGERVALUE = __CUINT0000000F
_IF _NOT __TMPB1 _GOTO __LABc
_STEP 2 0 22
FLOWRATEUNITS := __TMPM11
_GOTO __LAB2
__LABc :
__TMPB1 := INTEGERVALUE = __CUINT00000082
_IF _NOT __TMPB1 _GOTO __LABd
_STEP 2 0 24
FLOWRATEUNITS := __TMPM12
_GOTO __LAB2
__LABd :
__TMPB1 := INTEGERVALUE = __CUINT0000001B
_IF _NOT __TMPB1 _GOTO __LABe
_STEP 2 0 26
FLOWRATEUNITS := __TMPM13
_GOTO __LAB2
__LABe :
__TMPB1 := INTEGERVALUE = __CUINT0000001C
_IF _NOT __TMPB1 _GOTO __LABf
_STEP 2 0 28
FLOWRATEUNITS := __TMPM14
_GOTO __LAB2
__LABf :
__TMPB1 := INTEGERVALUE = __CUINT00000083
_IF _NOT __TMPB1 _GOTO __LAB10
_STEP 2 0 30
FLOWRATEUNITS := __TMPM15
_GOTO __LAB2
__LAB10 :
__TMPB1 := INTEGERVALUE = __CUINT00000013
_IF _NOT __TMPB1 _GOTO __LAB11
_STEP 2 0 32
FLOWRATEUNITS := __TMPM16
_GOTO __LAB2
__LAB11 :
__TMPB1 := INTEGERVALUE = __CUINT0000001D
_IF _NOT __TMPB1 _GOTO __LAB12
_STEP 2 0 34
FLOWRATEUNITS := __TMPM17
_GOTO __LAB2
__LAB12 :
__TMPB1 := INTEGERVALUE = __CUINT00000016
_IF _NOT __TMPB1 _GOTO __LAB13
_STEP 2 0 36
FLOWRATEUNITS := __TMPM18
_GOTO __LAB2
__LAB13 :
__TMPB1 := INTEGERVALUE = __CUINT00000010
_IF _NOT __TMPB1 _GOTO __LAB14
_STEP 2 0 38
FLOWRATEUNITS := __TMPM19
_GOTO __LAB2
__LAB14 :
__TMPB1 := INTEGERVALUE = __CUINT00000088
_IF _NOT __TMPB1 _GOTO __LAB15
_STEP 2 0 40
FLOWRATEUNITS := __TMPM20
_GOTO __LAB2
__LAB15 :
__TMPB1 := INTEGERVALUE = __CUINT000000EB
_IF _NOT __TMPB1 _GOTO __LAB16
_STEP 2 0 42
FLOWRATEUNITS := __TMPM21
_GOTO __LAB2
__LAB16 :
__TMPB1 := INTEGERVALUE = __CUINT00000089
_IF _NOT __TMPB1 _GOTO __LAB17
_STEP 2 0 44
FLOWRATEUNITS := __TMPM22
_GOTO __LAB2
__LAB17 :
__TMPB1 := INTEGERVALUE = __CUINT00000012
_IF _NOT __TMPB1 _GOTO __LAB18
_STEP 2 0 46
FLOWRATEUNITS := __TMPM23
_GOTO __LAB2
__LAB18 :
__TMPB1 := INTEGERVALUE = __CUINT0000001E
_IF _NOT __TMPB1 _GOTO __LAB19
_STEP 2 0 48
FLOWRATEUNITS := __TMPM24
_GOTO __LAB2
__LAB19 :
__TMPB1 := INTEGERVALUE = __CUINT0000001F
_IF _NOT __TMPB1 _GOTO __LAB1a
_STEP 2 0 50
FLOWRATEUNITS := __TMPM25
_GOTO __LAB2
__LAB1a :
__TMPB1 := INTEGERVALUE = __CUINT00000018
_IF _NOT __TMPB1 _GOTO __LAB1b
_STEP 2 0 52
FLOWRATEUNITS := __TMPM26
_GOTO __LAB2
__LAB1b :
__TMPB1 := INTEGERVALUE = __CUINT00000011
_IF _NOT __TMPB1 _GOTO __LAB1c
_STEP 2 0 54
FLOWRATEUNITS := __TMPM27
_GOTO __LAB2
__LAB1c :
__TMPB1 := INTEGERVALUE = __CUINT0000008A
_IF _NOT __TMPB1 _GOTO __LAB1d
_STEP 2 0 56
FLOWRATEUNITS := __TMPM28
_GOTO __LAB2
__LAB1d :
__TMPB1 := INTEGERVALUE = __CUINT000000F0
_IF _NOT __TMPB1 _GOTO __LAB1e
_STEP 2 0 58
FLOWRATEUNITS := __TMPM29
_GOTO __LAB2
__LAB1e :
_STEP 2 0 60
FLOWRATEUNITS := __TMPM30
__LAB2 :

View File

@@ -0,0 +1,34 @@
32
6, 1
20, 2
34, 3
48, 4
76, 6
104, 8
132, 10
160, 12
188, 14
216, 16
244, 18
272, 20
300, 22
328, 24
356, 26
384, 28
412, 30
440, 32
468, 34
496, 36
524, 38
552, 40
580, 42
608, 44
636, 46
664, 48
692, 50
720, 52
748, 54
776, 56
804, 58
818, 60

View File

@@ -1,42 +1,53 @@
_STEP 2 0 1
__TMPB1 := INTEGERINPUT = __CUINT00000028
_IF _NOT __TMPB1 _GOTO __LAB1
_STEP 2 0 2
FLOWTOTALUNITS := __TMPM1
_GOTO __LAB2
__LAB1 :
_STEP 2 0 3
__TMPB1 := INTEGERINPUT = __CUINT00000029
_IF _NOT __TMPB1 _GOTO __LAB3
_STEP 2 0 4
FLOWTOTALUNITS := __TMPM2
_GOTO __LAB2
__LAB3 :
__TMPB1 := INTEGERINPUT = __CUINT0000002A
_IF _NOT __TMPB1 _GOTO __LAB4
_STEP 2 0 6
FLOWTOTALUNITS := __TMPM3
_GOTO __LAB2
__LAB4 :
__TMPB1 := INTEGERINPUT = __CUINT0000002B
_IF _NOT __TMPB1 _GOTO __LAB5
_STEP 2 0 8
FLOWTOTALUNITS := __TMPM4
_GOTO __LAB2
__LAB5 :
__TMPB1 := INTEGERINPUT = __CUINT0000002E
_IF _NOT __TMPB1 _GOTO __LAB6
_STEP 2 0 10
FLOWTOTALUNITS := __TMPM5
_GOTO __LAB2
__LAB6 :
__TMPB1 := INTEGERINPUT = __CUINT00000070
_IF _NOT __TMPB1 _GOTO __LAB7
_STEP 2 0 12
FLOWTOTALUNITS := __TMPM6
_GOTO __LAB2
__LAB7 :
__TMPB1 := INTEGERINPUT = __CUINT000000F6
_IF _NOT __TMPB1 _GOTO __LAB8
_STEP 2 0 14
FLOWTOTALUNITS := __TMPM7
_GOTO __LAB2
__LAB8 :
__TMPB1 := INTEGERINPUT = __CUINT000000F7
_IF _NOT __TMPB1 _GOTO __LAB9
_STEP 2 0 16
FLOWTOTALUNITS := __TMPM8
_GOTO __LAB2
__LAB9 :
_STEP 2 0 18
FLOWTOTALUNITS := __TMPM9
__LAB2 :

View File

@@ -0,0 +1,13 @@
11
6, 1
20, 2
34, 3
48, 4
76, 6
104, 8
132, 10
160, 12
188, 14
216, 16
230, 18

View File

@@ -0,0 +1,370 @@
<?xml version="1.0" encoding="utf-8"?>
<Pou FileVersion="200.00.005" Name="FlowMeterMb" ElementGuid="b347dfd1-4943-49d5-9124-df6855433dbd" Comment="" SingleTextLine="" Language="ST" Localization="Prj" GenDebugInfo="false" UseResPassword="true" GenerateSymbMon="true" Is1499="false" CustomFbd="0" GroupName="(User defined)">
<Program />
<LocalVars>
<Variable Name="mbs_FlowRate_MSG" Comment="" Address="" Alias="" StringSize="0" DataType="MSG_MODBUS" InitialValue="2(),,,,0" Modifier="NonRetain" Kind="Var" AccessRights="ReadWrite" RetainFlags="" CommentFields="" Attributes="0" GroupName="" />
<Variable Name="mbs_Enable" Comment="" Address="" Alias="" StringSize="0" DataType="BOOL" InitialValue="TRUE" Modifier="Retain" Kind="Var" AccessRights="ReadWrite" RetainFlags="" CommentFields="" Attributes="0" GroupName="" />
<Variable Name="mbs_Cancel" Comment="" Address="" Alias="" StringSize="0" DataType="BOOL" InitialValue="FALSE" Modifier="Retain" Kind="Var" AccessRights="ReadWrite" RetainFlags="" CommentFields="" Attributes="0" GroupName="" />
<Variable Name="mbs_FlowRate_LocalCfg" Comment="" Address="" Alias="" StringSize="0" DataType="MODBUSLOCPARA" InitialValue="" Modifier="NonRetain" Kind="Var" AccessRights="ReadWrite" RetainFlags="" CommentFields="" Attributes="0" GroupName="" />
<Variable Name="mbs_FlowRate_TargetCfg" Comment="" Address="" Alias="" StringSize="0" DataType="MODBUSTARPARA" InitialValue="" Modifier="NonRetain" Kind="Var" AccessRights="ReadWrite" RetainFlags="" CommentFields="" Attributes="0" GroupName="" />
<Variable Name="mbs_FlowRate_Data" Comment="" Address="" Alias="" StringSize="0" DataType="MODBUSLOCADDR" InitialValue="" Modifier="NonRetain" Kind="Var" AccessRights="ReadWrite" RetainFlags="" CommentFields="" Attributes="0" GroupName="" />
<Variable Name="mbs_FlowTotalizerA_MSG" Comment="" Address="" Alias="" StringSize="0" DataType="MSG_MODBUS" InitialValue="2(),,,,0" Modifier="NonRetain" Kind="Var" AccessRights="ReadWrite" RetainFlags="" CommentFields="" Attributes="0" GroupName="" />
<Variable Name="mbs_FlowTotalizerA_LocalCfg" Comment="" Address="" Alias="" StringSize="0" DataType="MODBUSLOCPARA" InitialValue="" Modifier="NonRetain" Kind="Var" AccessRights="ReadWrite" RetainFlags="" CommentFields="" Attributes="0" GroupName="" />
<Variable Name="mbs_FlowTotalizerA_TargetCfg" Comment="" Address="" Alias="" StringSize="0" DataType="MODBUSTARPARA" InitialValue="" Modifier="NonRetain" Kind="Var" AccessRights="ReadWrite" RetainFlags="" CommentFields="" Attributes="0" GroupName="" />
<Variable Name="mbs_FlowTotalizerA_Data" Comment="" Address="" Alias="" StringSize="0" DataType="MODBUSLOCADDR" InitialValue="" Modifier="NonRetain" Kind="Var" AccessRights="ReadWrite" RetainFlags="" CommentFields="" Attributes="0" GroupName="" />
<Variable Name="mbs_FlowTotalizerB_LocalCfg" Comment="" Address="" Alias="" StringSize="0" DataType="MODBUSLOCPARA" InitialValue="" Modifier="NonRetain" Kind="Var" AccessRights="ReadWrite" RetainFlags="" CommentFields="" Attributes="0" GroupName="" />
<Variable Name="mbs_FlowTotalizerB_TargetCfg" Comment="" Address="" Alias="" StringSize="0" DataType="MODBUSTARPARA" InitialValue="" Modifier="NonRetain" Kind="Var" AccessRights="ReadWrite" RetainFlags="" CommentFields="" Attributes="0" GroupName="" />
<Variable Name="mbs_FlowTotalizerB_Data" Comment="" Address="" Alias="" StringSize="0" DataType="MODBUSLOCADDR" InitialValue="" Modifier="NonRetain" Kind="Var" AccessRights="ReadWrite" RetainFlags="" CommentFields="" Attributes="0" GroupName="" />
<Variable Name="mbs_FlowTotalizerB_MSG" Comment="" Address="" Alias="" StringSize="0" DataType="MSG_MODBUS" InitialValue="2(),,,,0" Modifier="NonRetain" Kind="Var" AccessRights="ReadWrite" RetainFlags="" CommentFields="" Attributes="0" GroupName="" />
<Variable Name="READ_CMD" Comment="" Address="" Alias="" StringSize="0" DataType="USINT" InitialValue="3" Modifier="Retain" Kind="Var" AccessRights="ReadWrite" RetainFlags="" CommentFields="" Attributes="0" GroupName="" />
<Variable Name="mbs_TriggerType" Comment="" Address="" Alias="" StringSize="0" DataType="USINT" InitialValue="1" Modifier="NonRetain" Kind="Var" AccessRights="ReadWrite" RetainFlags="" CommentFields="" Attributes="0" GroupName="" />
<Variable Name="ModbusTimer" Comment="" Address="" Alias="" StringSize="0" DataType="TON" InitialValue="" Modifier="NonRetain" Kind="Var" AccessRights="ReadWrite" RetainFlags="" CommentFields="" Attributes="0" GroupName="" />
<Variable Name="mbs_FlowTotalizerC_LocalCfg" Comment="" Address="" Alias="" StringSize="0" DataType="MODBUSLOCPARA" InitialValue="" Modifier="NonRetain" Kind="Var" AccessRights="ReadWrite" RetainFlags="" CommentFields="" Attributes="0" GroupName="" />
<Variable Name="mbs_FlowTotalizerC_TargetCfg" Comment="" Address="" Alias="" StringSize="0" DataType="MODBUSTARPARA" InitialValue="" Modifier="NonRetain" Kind="Var" AccessRights="ReadWrite" RetainFlags="" CommentFields="" Attributes="0" GroupName="" />
<Variable Name="mbs_FlowTotalizerC_Data" Comment="" Address="" Alias="" StringSize="0" DataType="MODBUSLOCADDR" InitialValue="" Modifier="NonRetain" Kind="Var" AccessRights="ReadWrite" RetainFlags="" CommentFields="" Attributes="0" GroupName="" />
<Variable Name="mbs_FlowTotalizerC_MSG" Comment="" Address="" Alias="" StringSize="0" DataType="MSG_MODBUS" InitialValue="2(),,,,0" Modifier="NonRetain" Kind="Var" AccessRights="ReadWrite" RetainFlags="" CommentFields="" Attributes="0" GroupName="" />
<Variable Name="mbs_Status_LocalCfg" Comment="" Address="" Alias="" StringSize="0" DataType="MODBUSLOCPARA" InitialValue="" Modifier="NonRetain" Kind="Var" AccessRights="ReadWrite" RetainFlags="" CommentFields="" Attributes="0" GroupName="" />
<Variable Name="mbs_Status_TargetCfg" Comment="" Address="" Alias="" StringSize="0" DataType="MODBUSTARPARA" InitialValue="" Modifier="NonRetain" Kind="Var" AccessRights="ReadWrite" RetainFlags="" CommentFields="" Attributes="0" GroupName="" />
<Variable Name="mbs_Status_Data" Comment="" Address="" Alias="" StringSize="0" DataType="MODBUSLOCADDR" InitialValue="" Modifier="NonRetain" Kind="Var" AccessRights="ReadWrite" RetainFlags="" CommentFields="" Attributes="0" GroupName="" />
<Variable Name="mbs_Status_MSG" Comment="" Address="" Alias="" StringSize="0" DataType="MSG_MODBUS" InitialValue="2(),,,,0" Modifier="NonRetain" Kind="Var" AccessRights="ReadWrite" RetainFlags="" CommentFields="" Attributes="0" GroupName="" />
<Variable Name="cmd_ResetTotalizer" Comment="" Address="" Alias="" StringSize="0" DataType="BOOL" InitialValue="" Modifier="NonRetain" Kind="Var" AccessRights="ReadWrite" RetainFlags="" CommentFields="" Attributes="0" GroupName="" />
<Variable Name="mbs_ResetTotalizer_LocalCfg" Comment="" Address="" Alias="" StringSize="0" DataType="MODBUSLOCPARA" InitialValue="" Modifier="NonRetain" Kind="Var" AccessRights="ReadWrite" RetainFlags="" CommentFields="" Attributes="0" GroupName="" />
<Variable Name="mbs_ResetTotalizer_TargetCfg" Comment="" Address="" Alias="" StringSize="0" DataType="MODBUSTARPARA" InitialValue="" Modifier="NonRetain" Kind="Var" AccessRights="ReadWrite" RetainFlags="" CommentFields="" Attributes="0" GroupName="" />
<Variable Name="mbs_ResetTotalizer_Data" Comment="" Address="" Alias="" StringSize="0" DataType="MODBUSLOCADDR" InitialValue="" Modifier="NonRetain" Kind="Var" AccessRights="ReadWrite" RetainFlags="" CommentFields="" Attributes="0" GroupName="" />
<Variable Name="mbs_ResetTotalizer_MSG" Comment="" Address="" Alias="" StringSize="0" DataType="MSG_MODBUS" InitialValue="2(),,,,0" Modifier="NonRetain" Kind="Var" AccessRights="ReadWrite" RetainFlags="" CommentFields="" Attributes="0" GroupName="" />
<Variable Name="WRITECOIL_CMD" Comment="" Address="" Alias="" StringSize="0" DataType="USINT" InitialValue="5" Modifier="Retain" Kind="Var" AccessRights="ReadWrite" RetainFlags="" CommentFields="" Attributes="0" GroupName="" />
<Variable Name="cmd_ClearResetTotalizer" Comment="" Address="" Alias="" StringSize="0" DataType="BOOL" InitialValue="" Modifier="NonRetain" Kind="Var" AccessRights="ReadWrite" RetainFlags="" CommentFields="" Attributes="0" GroupName="" />
<Variable Name="mbs_ClearResetTotalizer_LocalCfg" Comment="" Address="" Alias="" StringSize="0" DataType="MODBUSLOCPARA" InitialValue="" Modifier="NonRetain" Kind="Var" AccessRights="ReadWrite" RetainFlags="" CommentFields="" Attributes="0" GroupName="" />
<Variable Name="mbs_ClearResetTotalizer_TargetCfg" Comment="" Address="" Alias="" StringSize="0" DataType="MODBUSTARPARA" InitialValue="" Modifier="NonRetain" Kind="Var" AccessRights="ReadWrite" RetainFlags="" CommentFields="" Attributes="0" GroupName="" />
<Variable Name="mbs_ClearResetTotalizer_Data" Comment="" Address="" Alias="" StringSize="0" DataType="MODBUSLOCADDR" InitialValue="" Modifier="NonRetain" Kind="Var" AccessRights="ReadWrite" RetainFlags="" CommentFields="" Attributes="0" GroupName="" />
<Variable Name="mbs_ClearResetTotalizer_MSG" Comment="" Address="" Alias="" StringSize="0" DataType="MSG_MODBUS" InitialValue="2(),,,,0" Modifier="NonRetain" Kind="Var" AccessRights="ReadWrite" RetainFlags="" CommentFields="" Attributes="0" GroupName="" />
<Variable Name="Wait_To_Reset_TON" Comment="" Address="" Alias="" StringSize="0" DataType="TON" InitialValue="" Modifier="NonRetain" Kind="Var" AccessRights="ReadWrite" RetainFlags="" CommentFields="" Attributes="0" GroupName="" />
<Variable Name="par_TimeToWaitToClearResetTotalizer" Comment="" Address="" Alias="" StringSize="0" DataType="TIME" InitialValue="T#2s" Modifier="Retain" Kind="Var" AccessRights="ReadWrite" RetainFlags="" CommentFields="" Attributes="0" GroupName="" />
<Variable Name="mbs_Units_LocalCfg" Comment="" Address="" Alias="" StringSize="0" DataType="MODBUSLOCPARA" InitialValue="" Modifier="NonRetain" Kind="Var" AccessRights="ReadWrite" RetainFlags="" CommentFields="" Attributes="0" GroupName="" />
<Variable Name="mbs_Units_TargetCfg" Comment="" Address="" Alias="" StringSize="0" DataType="MODBUSTARPARA" InitialValue="" Modifier="NonRetain" Kind="Var" AccessRights="ReadWrite" RetainFlags="" CommentFields="" Attributes="0" GroupName="" />
<Variable Name="mbs_Units_Data" Comment="" Address="" Alias="" StringSize="0" DataType="MODBUSLOCADDR" InitialValue="" Modifier="NonRetain" Kind="Var" AccessRights="ReadWrite" RetainFlags="" CommentFields="" Attributes="0" GroupName="" />
<Variable Name="mbs_Units_MSG" Comment="" Address="" Alias="" StringSize="0" DataType="MSG_MODBUS" InitialValue="2(),,,,0" Modifier="NonRetain" Kind="Var" AccessRights="ReadWrite" RetainFlags="" CommentFields="" Attributes="0" GroupName="" />
<Variable Name="ModbusErrorTimer" Comment="" Address="" Alias="" StringSize="0" DataType="TON" InitialValue="" Modifier="NonRetain" Kind="Var" AccessRights="ReadWrite" RetainFlags="" CommentFields="" Attributes="0" GroupName="" />
</LocalVars>
<PouBody><![CDATA[PROGRAM FlowMeterMb
ModbusTimer(NOT ModbusTimer.Q, ModbusScanRate);
(* ============== *)
(* FLOW RATE *)
(* ============== *)
mbs_FlowRate_TargetCfg.Addr := cfg_FlowRate_Register;
mbs_FlowRate_TargetCfg.Node := cfg_Flowmeter_ModbusNode;
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_FlowRate_MSG.Q THEN
val_FlowRate := WordsToReal(mbs_FlowRate_Data[1], mbs_FlowRate_Data[2]);
END_IF;
(* ============== *)
(* FLOW TOTALIZER A *)
(* ============== *)
mbs_FlowTotalizerA_TargetCfg.Addr := cfg_FlowTotalizerA_Register;
mbs_FlowTotalizerA_TargetCfg.Node := cfg_Flowmeter_ModbusNode;
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_FlowTotalizerA_MSG.Q THEN
val_FlowTotalizerA := WordsToReal(mbs_FlowTotalizerA_Data[1], mbs_FlowTotalizerA_Data[2]);
END_IF;
(* ============== *)
(* FLOW TOTALIZER B *)
(* ============== *)
mbs_FlowTotalizerB_TargetCfg.Addr := cfg_FlowTotalizerB_Register;
mbs_FlowTotalizerB_TargetCfg.Node := cfg_Flowmeter_ModbusNode;
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_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;
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_ResetTotalizerB_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;
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]]></PouBody>
<PouUIProperties>
<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>
</PouUIProperties>
</Pou>

View File

@@ -0,0 +1,76 @@
<?xml version="1.0" encoding="utf-8"?>
<Pou FileVersion="200.00.005" Name="FlowRateUnits" ElementGuid="6baaf1eb-2019-4bda-b9e7-8119676bf9bd" Comment="" SingleTextLine="" Language="ST" Localization="Prj" GenDebugInfo="false" UseResPassword="true" GenerateSymbMon="true" Is1499="false" CustomFbd="0" GroupName="(User defined)">
<Function IdentifierNb="0" Keyword="" ConvDirection="NoConversion" DataType="DINT" />
<LocalVars>
<Variable Name="FlowRateUnits" Comment="" Address="" Alias="" StringSize="80" DataType="STRING" InitialValue="" Modifier="Constant" Kind="VarOutput" AccessRights="Write" Direction="Output" CommentFields="" Attributes="23825" />
<Variable Name="integerValue" Comment="" Address="" Alias="" StringSize="0" DataType="WORD" InitialValue="" Modifier="Constant" Kind="VarInput" AccessRights="Read" Direction="Input" CommentFields="" Attributes="0" />
</LocalVars>
<PouBody><![CDATA[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]]></PouBody>
<PouUIProperties>
<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>
</PouUIProperties>
</Pou>

View File

@@ -0,0 +1,34 @@
<?xml version="1.0" encoding="utf-8"?>
<Pou FileVersion="200.00.005" Name="FlowTotalUnits" ElementGuid="23b6cc54-7135-422a-8743-f460b52a26b3" Comment="" SingleTextLine="" Language="ST" Localization="Prj" GenDebugInfo="false" UseResPassword="true" GenerateSymbMon="true" Is1499="false" CustomFbd="0" GroupName="(User defined)">
<Function IdentifierNb="0" Keyword="" ConvDirection="NoConversion" DataType="DINT" />
<LocalVars>
<Variable Name="FlowTotalUnits" Comment="" Address="" Alias="" StringSize="80" DataType="STRING" InitialValue="" Modifier="Constant" Kind="VarOutput" AccessRights="Write" Direction="Output" CommentFields="" Attributes="23825" />
<Variable Name="integerInput" Comment="" Address="" Alias="" StringSize="0" DataType="WORD" InitialValue="" Modifier="Constant" Kind="VarInput" AccessRights="Read" Direction="Input" CommentFields="" Attributes="0" />
</LocalVars>
<PouBody><![CDATA[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]]></PouBody>
<PouUIProperties>
<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>
</PouUIProperties>
</Pou>

View File

@@ -1,10 +1,13 @@
_STEP 2 0 1
__TMPR1 := EU_MAX - EU_MIN
__TMPR2 := RAW_MAX - RAW_MIN
__TMPR1 := __TMPR1 / __TMPR2
M := __TMPR1
_STEP 2 0 2
__TMPR1 := M * RAW_MAX
__TMPR2 := EU_MAX - __TMPR1
B := __TMPR2
_STEP 2 0 4
__TMPR1 := M * RAW_INP
__TMPR1 := __TMPR1 + B
LINEARSCALE := __TMPR1

View File

@@ -0,0 +1,5 @@
3
30, 1
54, 2
70, 4

View File

@@ -0,0 +1,25 @@
<?xml version="1.0" encoding="utf-8"?>
<Pou FileVersion="200.00.005" Name="LinearScale" ElementGuid="d7b5fe0b-4028-475c-b33e-767c5b5daf82" Comment="" SingleTextLine="Scale a REAL value from Raw to Engineering Units" Language="ST" Localization="Prj" GenDebugInfo="false" UseResPassword="true" GenerateSymbMon="true" Is1499="false" CustomFbd="0" GroupName="(User defined)">
<Function IdentifierNb="0" Keyword="" ConvDirection="NoConversion" DataType="DINT" />
<LocalVars>
<Variable Name="LinearScale" Comment="" Address="" Alias="" StringSize="0" DataType="REAL" InitialValue="" Modifier="Constant" Kind="VarOutput" AccessRights="Write" Direction="Output" CommentFields="" Attributes="23825" />
<Variable Name="Raw_Min" Comment="" Address="" Alias="" StringSize="0" DataType="REAL" InitialValue="" Modifier="Constant" Kind="VarInput" AccessRights="Read" Direction="Input" CommentFields="" Attributes="0" />
<Variable Name="Raw_Max" Comment="" Address="" Alias="" StringSize="0" DataType="REAL" InitialValue="" Modifier="Constant" Kind="VarInput" AccessRights="Read" Direction="Input" CommentFields="" Attributes="0" />
<Variable Name="EU_Min" Comment="" Address="" Alias="" StringSize="0" DataType="REAL" InitialValue="" Modifier="Constant" Kind="VarInput" AccessRights="Read" Direction="Input" CommentFields="" Attributes="0" />
<Variable Name="EU_Max" Comment="" Address="" Alias="" StringSize="0" DataType="REAL" InitialValue="" Modifier="Constant" Kind="VarInput" AccessRights="Read" Direction="Input" CommentFields="" Attributes="0" />
<Variable Name="Raw_Inp" Comment="" Address="" Alias="" StringSize="0" DataType="REAL" InitialValue="" Modifier="Constant" Kind="VarInput" AccessRights="Read" Direction="Input" CommentFields="" Attributes="0" />
<Variable Name="m" Comment="" Address="" Alias="" StringSize="0" DataType="REAL" InitialValue="" Modifier="NonRetain" Kind="Var" AccessRights="ReadWrite" RetainFlags="" CommentFields="" Attributes="0" GroupName="" />
<Variable Name="b" Comment="" Address="" Alias="" StringSize="0" DataType="REAL" InitialValue="" Modifier="NonRetain" Kind="Var" AccessRights="ReadWrite" RetainFlags="" CommentFields="" Attributes="0" GroupName="" />
</LocalVars>
<PouBody><![CDATA[FUNCTION LinearScale
m := (EU_Max - EU_Min) / (Raw_Max - Raw_Min);
b := EU_Max - m * Raw_Max;
LinearScale := m * Raw_Inp + b;
END_FUNCTION]]></PouBody>
<PouUIProperties>
<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>
</PouUIProperties>
</Pou>

View File

@@ -1,3 +1,4 @@
PANELVIEWTIMER(157):
WATCHDOG(149):
WORDTOFLOAT16(153):F,REVERSEUINT(154);
REVERSEUINT(154):

View File

@@ -1,10 +1,11 @@
[MEMORY]
Offset0=0x1C64
Offset1=0x2464
Offset2=0x2464
Offset3=0x2464
Memory Usage Estimate(Code)=0x26DC
Memory Usage Estimate(Data)=0x5030
Offset0=0x1C84
Offset1=0x2484
Offset2=0x2484
Offset3=0x2484
Memory Usage Estimate(Code)=0x27C4
Memory Usage Estimate(Data)=0x5050
Memory Usage Estimate(Retain)=0x34
Memory Usage Estimate(RetainBlocks)=0x5
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=0x2625A20D
CRC_NEW=0x6244562C
DAT_ORG=0
DAT_OLD=0
DAT_NEW=1517863824
DAT_NEW=1533577974
VER_ORG=0
VER_OLD=0
VER_NEW=37
VER_NEW=38
CRC_ALL_OLD=
CRC_ALL_NEW=0x5DF21E41
CRC_ALL_NEW=0x303850A9

View File

@@ -2,8 +2,8 @@
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
Total data size=0x284C
User variables size=0x1C84
Maximum size for temporary variables=0x2BC8
Memory Usage Estimate(Data)=0x502C
Memory Usage Estimate(Data)=0x504C
Free memory for user variables=0x800

View File

@@ -0,0 +1 @@
<INPUT>,PANELVIEWTON@PANELVIEWTIMER,TON,IN,PANELVIEWON,BOOL,PT,PANELVIEWTIMEON,TIME

View File

@@ -1,66 +1,68 @@
[BEGIN FB INPUTS]
I1=micro820.micro820.flowmetermb/modbustimer.in,0x2465,BOOL
I2=micro820.micro820.flowmetermb/modbustimer.pt,0x55C,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
I10=micro820.micro820.solarpanelmb/modbuserrortimer.pt,0x560,TIME
I11=micro820.micro820.flowmetermb/mbs_flowrate_msg.in,0x2466,BOOL
I12=micro820.micro820.flowmetermb/mbs_flowrate_msg.cancel,0x462,BOOL
I13=micro820.micro820.flowmetermb/mbs_flowrate_msg.localcfg,0xFFFFFFFF,MODBUSLOCPARA
I14=micro820.micro820.flowmetermb/mbs_flowrate_msg.targetcfg,0xFFFFFFFF,MODBUSTARPARA
I15=micro820.micro820.flowmetermb/mbs_flowrate_msg.localaddr,0xFFFFFFFF,MODBUSLOCADDR
I16=micro820.micro820.flowmetermb/mbs_flowrate_msg.__adi_localaddr,0xFFFFFFFF,UINT
I17=micro820.micro820.flowmetermb/mbs_flowtotalizera_msg.in,0x2466,BOOL
I18=micro820.micro820.flowmetermb/mbs_flowtotalizera_msg.cancel,0x462,BOOL
I19=micro820.micro820.flowmetermb/mbs_flowtotalizera_msg.localcfg,0xFFFFFFFF,MODBUSLOCPARA
I20=micro820.micro820.flowmetermb/mbs_flowtotalizera_msg.targetcfg,0xFFFFFFFF,MODBUSTARPARA
I21=micro820.micro820.flowmetermb/mbs_flowtotalizera_msg.localaddr,0xFFFFFFFF,MODBUSLOCADDR
I22=micro820.micro820.flowmetermb/mbs_flowtotalizera_msg.__adi_localaddr,0xFFFFFFFF,UINT
I23=micro820.micro820.flowmetermb/mbs_flowtotalizerb_msg.in,0x2466,BOOL
I24=micro820.micro820.flowmetermb/mbs_flowtotalizerb_msg.cancel,0x462,BOOL
I25=micro820.micro820.flowmetermb/mbs_flowtotalizerb_msg.localcfg,0xFFFFFFFF,MODBUSLOCPARA
I26=micro820.micro820.flowmetermb/mbs_flowtotalizerb_msg.targetcfg,0xFFFFFFFF,MODBUSTARPARA
I27=micro820.micro820.flowmetermb/mbs_flowtotalizerb_msg.localaddr,0xFFFFFFFF,MODBUSLOCADDR
I28=micro820.micro820.flowmetermb/mbs_flowtotalizerb_msg.__adi_localaddr,0xFFFFFFFF,UINT
I29=micro820.micro820.flowmetermb/mbs_flowtotalizerc_msg.in,0x2466,BOOL
I30=micro820.micro820.flowmetermb/mbs_flowtotalizerc_msg.cancel,0x462,BOOL
I31=micro820.micro820.flowmetermb/mbs_flowtotalizerc_msg.localcfg,0xFFFFFFFF,MODBUSLOCPARA
I32=micro820.micro820.flowmetermb/mbs_flowtotalizerc_msg.targetcfg,0xFFFFFFFF,MODBUSTARPARA
I33=micro820.micro820.flowmetermb/mbs_flowtotalizerc_msg.localaddr,0xFFFFFFFF,MODBUSLOCADDR
I34=micro820.micro820.flowmetermb/mbs_flowtotalizerc_msg.__adi_localaddr,0xFFFFFFFF,UINT
I35=micro820.micro820.flowmetermb/mbs_status_msg.in,0x2466,BOOL
I36=micro820.micro820.flowmetermb/mbs_status_msg.cancel,0x462,BOOL
I37=micro820.micro820.flowmetermb/mbs_status_msg.localcfg,0xFFFFFFFF,MODBUSLOCPARA
I38=micro820.micro820.flowmetermb/mbs_status_msg.targetcfg,0xFFFFFFFF,MODBUSTARPARA
I39=micro820.micro820.flowmetermb/mbs_status_msg.localaddr,0xFFFFFFFF,MODBUSLOCADDR
I40=micro820.micro820.flowmetermb/mbs_status_msg.__adi_localaddr,0xFFFFFFFF,UINT
I41=micro820.micro820.flowmetermb/mbs_resettotalizer_msg.in,0x463,BOOL
I42=micro820.micro820.flowmetermb/mbs_resettotalizer_msg.cancel,0x462,BOOL
I43=micro820.micro820.flowmetermb/mbs_resettotalizer_msg.localcfg,0xFFFFFFFF,MODBUSLOCPARA
I44=micro820.micro820.flowmetermb/mbs_resettotalizer_msg.targetcfg,0xFFFFFFFF,MODBUSTARPARA
I45=micro820.micro820.flowmetermb/mbs_resettotalizer_msg.localaddr,0xFFFFFFFF,MODBUSLOCADDR
I46=micro820.micro820.flowmetermb/mbs_resettotalizer_msg.__adi_localaddr,0xFFFFFFFF,UINT
I47=micro820.micro820.flowmetermb/mbs_clearresettotalizer_msg.in,0x2466,BOOL
I48=micro820.micro820.flowmetermb/mbs_clearresettotalizer_msg.cancel,0x462,BOOL
I49=micro820.micro820.flowmetermb/mbs_clearresettotalizer_msg.localcfg,0xFFFFFFFF,MODBUSLOCPARA
I50=micro820.micro820.flowmetermb/mbs_clearresettotalizer_msg.targetcfg,0xFFFFFFFF,MODBUSTARPARA
I51=micro820.micro820.flowmetermb/mbs_clearresettotalizer_msg.localaddr,0xFFFFFFFF,MODBUSLOCADDR
I52=micro820.micro820.flowmetermb/mbs_clearresettotalizer_msg.__adi_localaddr,0xFFFFFFFF,UINT
I53=micro820.micro820.flowmetermb/mbs_units_msg.in,0x2466,BOOL
I54=micro820.micro820.flowmetermb/mbs_units_msg.cancel,0x462,BOOL
I55=micro820.micro820.flowmetermb/mbs_units_msg.localcfg,0xFFFFFFFF,MODBUSLOCPARA
I56=micro820.micro820.flowmetermb/mbs_units_msg.targetcfg,0xFFFFFFFF,MODBUSTARPARA
I57=micro820.micro820.flowmetermb/mbs_units_msg.localaddr,0xFFFFFFFF,MODBUSLOCADDR
I58=micro820.micro820.flowmetermb/mbs_units_msg.__adi_localaddr,0xFFFFFFFF,UINT
I59=micro820.micro820.solarpanelmb/mbs_solarpanel_msg.in,0x2466,BOOL
I60=micro820.micro820.solarpanelmb/mbs_solarpanel_msg.cancel,0x465,BOOL
I61=micro820.micro820.solarpanelmb/mbs_solarpanel_msg.localcfg,0xFFFFFFFF,MODBUSLOCPARA
I62=micro820.micro820.solarpanelmb/mbs_solarpanel_msg.targetcfg,0xFFFFFFFF,MODBUSTARPARA
I63=micro820.micro820.solarpanelmb/mbs_solarpanel_msg.localaddr,0xFFFFFFFF,MODBUSLOCADDR
I64=micro820.micro820.solarpanelmb/mbs_solarpanel_msg.__adi_localaddr,0xFFFFFFFF,UINT
I1=micro820.micro820.flowmetermb/modbustimer.in,0x2485,BOOL
I2=micro820.micro820.flowmetermb/modbustimer.pt,0x560,TIME
I3=micro820.micro820.flowmetermb/wait_to_reset_ton.in,0x465,BOOL
I4=micro820.micro820.flowmetermb/wait_to_reset_ton.pt,0x56C,TIME
I5=micro820.micro820.flowmetermb/modbuserrortimer.in,0x2485,BOOL
I6=micro820.micro820.flowmetermb/modbuserrortimer.pt,0x564,TIME
I7=micro820.micro820.solarpanelmb/modbustimer.in,0x2485,BOOL
I8=micro820.micro820.solarpanelmb/modbustimer.pt,0x560,TIME
I9=micro820.micro820.solarpanelmb/modbuserrortimer.in,0x2485,BOOL
I10=micro820.micro820.solarpanelmb/modbuserrortimer.pt,0x564,TIME
I11=micro820.micro820.panelviewtimer/panelviewton.in,0x461,BOOL
I12=micro820.micro820.panelviewtimer/panelviewton.pt,0x568,TIME
I13=micro820.micro820.flowmetermb/mbs_flowrate_msg.in,0x2486,BOOL
I14=micro820.micro820.flowmetermb/mbs_flowrate_msg.cancel,0x463,BOOL
I15=micro820.micro820.flowmetermb/mbs_flowrate_msg.localcfg,0xFFFFFFFF,MODBUSLOCPARA
I16=micro820.micro820.flowmetermb/mbs_flowrate_msg.targetcfg,0xFFFFFFFF,MODBUSTARPARA
I17=micro820.micro820.flowmetermb/mbs_flowrate_msg.localaddr,0xFFFFFFFF,MODBUSLOCADDR
I18=micro820.micro820.flowmetermb/mbs_flowrate_msg.__adi_localaddr,0xFFFFFFFF,UINT
I19=micro820.micro820.flowmetermb/mbs_flowtotalizera_msg.in,0x2486,BOOL
I20=micro820.micro820.flowmetermb/mbs_flowtotalizera_msg.cancel,0x463,BOOL
I21=micro820.micro820.flowmetermb/mbs_flowtotalizera_msg.localcfg,0xFFFFFFFF,MODBUSLOCPARA
I22=micro820.micro820.flowmetermb/mbs_flowtotalizera_msg.targetcfg,0xFFFFFFFF,MODBUSTARPARA
I23=micro820.micro820.flowmetermb/mbs_flowtotalizera_msg.localaddr,0xFFFFFFFF,MODBUSLOCADDR
I24=micro820.micro820.flowmetermb/mbs_flowtotalizera_msg.__adi_localaddr,0xFFFFFFFF,UINT
I25=micro820.micro820.flowmetermb/mbs_flowtotalizerb_msg.in,0x2486,BOOL
I26=micro820.micro820.flowmetermb/mbs_flowtotalizerb_msg.cancel,0x463,BOOL
I27=micro820.micro820.flowmetermb/mbs_flowtotalizerb_msg.localcfg,0xFFFFFFFF,MODBUSLOCPARA
I28=micro820.micro820.flowmetermb/mbs_flowtotalizerb_msg.targetcfg,0xFFFFFFFF,MODBUSTARPARA
I29=micro820.micro820.flowmetermb/mbs_flowtotalizerb_msg.localaddr,0xFFFFFFFF,MODBUSLOCADDR
I30=micro820.micro820.flowmetermb/mbs_flowtotalizerb_msg.__adi_localaddr,0xFFFFFFFF,UINT
I31=micro820.micro820.flowmetermb/mbs_flowtotalizerc_msg.in,0x2486,BOOL
I32=micro820.micro820.flowmetermb/mbs_flowtotalizerc_msg.cancel,0x463,BOOL
I33=micro820.micro820.flowmetermb/mbs_flowtotalizerc_msg.localcfg,0xFFFFFFFF,MODBUSLOCPARA
I34=micro820.micro820.flowmetermb/mbs_flowtotalizerc_msg.targetcfg,0xFFFFFFFF,MODBUSTARPARA
I35=micro820.micro820.flowmetermb/mbs_flowtotalizerc_msg.localaddr,0xFFFFFFFF,MODBUSLOCADDR
I36=micro820.micro820.flowmetermb/mbs_flowtotalizerc_msg.__adi_localaddr,0xFFFFFFFF,UINT
I37=micro820.micro820.flowmetermb/mbs_status_msg.in,0x2486,BOOL
I38=micro820.micro820.flowmetermb/mbs_status_msg.cancel,0x463,BOOL
I39=micro820.micro820.flowmetermb/mbs_status_msg.localcfg,0xFFFFFFFF,MODBUSLOCPARA
I40=micro820.micro820.flowmetermb/mbs_status_msg.targetcfg,0xFFFFFFFF,MODBUSTARPARA
I41=micro820.micro820.flowmetermb/mbs_status_msg.localaddr,0xFFFFFFFF,MODBUSLOCADDR
I42=micro820.micro820.flowmetermb/mbs_status_msg.__adi_localaddr,0xFFFFFFFF,UINT
I43=micro820.micro820.flowmetermb/mbs_resettotalizer_msg.in,0x464,BOOL
I44=micro820.micro820.flowmetermb/mbs_resettotalizer_msg.cancel,0x463,BOOL
I45=micro820.micro820.flowmetermb/mbs_resettotalizer_msg.localcfg,0xFFFFFFFF,MODBUSLOCPARA
I46=micro820.micro820.flowmetermb/mbs_resettotalizer_msg.targetcfg,0xFFFFFFFF,MODBUSTARPARA
I47=micro820.micro820.flowmetermb/mbs_resettotalizer_msg.localaddr,0xFFFFFFFF,MODBUSLOCADDR
I48=micro820.micro820.flowmetermb/mbs_resettotalizer_msg.__adi_localaddr,0xFFFFFFFF,UINT
I49=micro820.micro820.flowmetermb/mbs_clearresettotalizer_msg.in,0x2486,BOOL
I50=micro820.micro820.flowmetermb/mbs_clearresettotalizer_msg.cancel,0x463,BOOL
I51=micro820.micro820.flowmetermb/mbs_clearresettotalizer_msg.localcfg,0xFFFFFFFF,MODBUSLOCPARA
I52=micro820.micro820.flowmetermb/mbs_clearresettotalizer_msg.targetcfg,0xFFFFFFFF,MODBUSTARPARA
I53=micro820.micro820.flowmetermb/mbs_clearresettotalizer_msg.localaddr,0xFFFFFFFF,MODBUSLOCADDR
I54=micro820.micro820.flowmetermb/mbs_clearresettotalizer_msg.__adi_localaddr,0xFFFFFFFF,UINT
I55=micro820.micro820.flowmetermb/mbs_units_msg.in,0x2486,BOOL
I56=micro820.micro820.flowmetermb/mbs_units_msg.cancel,0x463,BOOL
I57=micro820.micro820.flowmetermb/mbs_units_msg.localcfg,0xFFFFFFFF,MODBUSLOCPARA
I58=micro820.micro820.flowmetermb/mbs_units_msg.targetcfg,0xFFFFFFFF,MODBUSTARPARA
I59=micro820.micro820.flowmetermb/mbs_units_msg.localaddr,0xFFFFFFFF,MODBUSLOCADDR
I60=micro820.micro820.flowmetermb/mbs_units_msg.__adi_localaddr,0xFFFFFFFF,UINT
I61=micro820.micro820.solarpanelmb/mbs_solarpanel_msg.in,0x2486,BOOL
I62=micro820.micro820.solarpanelmb/mbs_solarpanel_msg.cancel,0x466,BOOL
I63=micro820.micro820.solarpanelmb/mbs_solarpanel_msg.localcfg,0xFFFFFFFF,MODBUSLOCPARA
I64=micro820.micro820.solarpanelmb/mbs_solarpanel_msg.targetcfg,0xFFFFFFFF,MODBUSTARPARA
I65=micro820.micro820.solarpanelmb/mbs_solarpanel_msg.localaddr,0xFFFFFFFF,MODBUSLOCADDR
I66=micro820.micro820.solarpanelmb/mbs_solarpanel_msg.__adi_localaddr,0xFFFFFFFF,UINT
[END]

View File

@@ -0,0 +1,185 @@
<?xml version="1.0" encoding="utf-8"?>
<Resource FileVersion="200.00.005" Name="Micro820" ResourceNb="1" ElementGuid="4abfa14a-9a16-4913-a742-278fd478b028" Address="@1" Comment="" SingleTextLine="" GenDebugInfo="false" Password="" ReadOnly="false" UsePrjPassword="false" Code="TicCode">
<Properties Test="true" TrigCycle="false" CyTiming="0" DeErrors="true" NbStErrors="16" ExecMode="true" EmbedTable="true" TypeEmbedTable="1" EmbedSource="true" TypeEmbedSource="0" SimulationCode="false" SfcGain="8" SfcOffset="18" EmbeddedSfc="false" ReadableImage="false" RealImage="false" LocExp="true" unlab="false" AriOpe="true" BooOpe="true" BooExp="true" GloExp="true" VarCpy="true" Uncod="true" MapFile="false" DumpPou="false" DumpConfig="false" DumpNetwork="false" CompileIncrementally="true" LinkIncrementally="true" CheckArray="true" ArrStr="true" OnlineMemory="184320" OnlineMemoryVariable="2048" FunctionInternalStateEnable="true" FbdBehaviorMode="1" OnlineMaxExtraPous="20" IsDisableAccessFBLocalVar="true" EnableCVT="false" MemRetain="RETAIN" ReduceBooleanExpressionEvaluation="false" IsIndirectBitAccessValidation="true" CyUsTiming="0" OnlineMemorySfc="20" LdBranchStackTemporaryVariableCreationEnable="false" />
<Pous>
<Function Name="WordsToReal" ElementGuid="1f8f27de-e718-45df-9429-35b1463a9e4e" Language="ST" CustomFbd="0" Is1499="false" />
<Function Name="FlowRateUnits" ElementGuid="6baaf1eb-2019-4bda-b9e7-8119676bf9bd" Language="ST" CustomFbd="0" Is1499="false" />
<Function Name="FlowTotalUnits" ElementGuid="23b6cc54-7135-422a-8743-f460b52a26b3" Language="ST" CustomFbd="0" Is1499="false" />
<Function Name="WordToFloat16" ElementGuid="584fd256-dfd3-4908-ba27-015faa1ddf1a" Language="ST" CustomFbd="0" Is1499="false" />
<Function Name="ReverseUINT" ElementGuid="09f80df8-de78-4f0d-83bb-a50f1aedc854" Language="ST" CustomFbd="0" Is1499="false" />
<Function Name="LinearScale" ElementGuid="d7b5fe0b-4028-475c-b33e-767c5b5daf82" Language="ST" CustomFbd="0" Is1499="false" />
<Program Name="FlowMeterMb" ElementGuid="b347dfd1-4943-49d5-9124-df6855433dbd" Language="ST" CustomFbd="0" Is1499="false" />
<Program Name="Watchdog" ElementGuid="d9cd1c27-0f51-4f96-b960-a629f4aa554a" Language="ST" CustomFbd="0" Is1499="false" />
<Program Name="SolarPanelMb" ElementGuid="24745dc1-7289-46d4-939f-92610f2b16b5" Language="ST" CustomFbd="0" Is1499="false" />
<Program Name="PressureAnalog" ElementGuid="8f54bff0-84c6-443e-84ae-c99f1b596308" Language="ST" CustomFbd="0" Is1499="false" />
</Pous>
<GlobalVars>
<Variable Name="__SYSVA_TCYWDG" Comment="Software Watchdog" Address="" Alias="" DataType="UDINT" InitialValue="2000" Modifier="NonRetain" Kind="VarGlobal" AccessRights="ReadWrite" Attributes="32501" />
<Variable Name="__SYSVA_USER_DATA_LOST" Comment="User data lost" Address="" Alias="" DataType="BOOL" InitialValue="FALSE" Modifier="NonRetain" Kind="VarGlobal" AccessRights="ReadWrite" Attributes="32501" />
<Variable Name="skid_Latitude" Comment="" Address="1" Alias="" StringSize="0" DataType="REAL" InitialValue="" Modifier="NonRetain" Kind="Var" AccessRights="ReadWrite" RetainFlags="" CommentFields="" Attributes="4" GroupName="" />
<Variable Name="skid_Longitude" Comment="" Address="1" Alias="" StringSize="0" DataType="REAL" InitialValue="" Modifier="NonRetain" Kind="Var" AccessRights="ReadWrite" RetainFlags="" CommentFields="" Attributes="4" GroupName="" />
<Variable Name="val_FlowRate" Comment="" Address="1" Alias="" StringSize="0" DataType="REAL" InitialValue="" Modifier="NonRetain" Kind="Var" AccessRights="ReadWrite" RetainFlags="" CommentFields="" Attributes="4" GroupName="" />
<Variable Name="val_FlowTotalizerA" Comment="" Address="1" Alias="" StringSize="0" DataType="REAL" InitialValue="" Modifier="NonRetain" Kind="Var" AccessRights="ReadWrite" RetainFlags="" CommentFields="" Attributes="4" GroupName="" />
<Variable Name="val_FlowTotalizerB" Comment="" Address="1" Alias="" StringSize="0" DataType="REAL" InitialValue="" Modifier="NonRetain" Kind="Var" AccessRights="ReadWrite" RetainFlags="" CommentFields="" Attributes="4" GroupName="" />
<Variable Name="ModbusScanRate" Comment="" Address="1" Alias="" StringSize="0" DataType="TIME" InitialValue="T#5s" Modifier="NonRetain" Kind="Var" AccessRights="ReadWrite" RetainFlags="" CommentFields="" Attributes="4" GroupName="" />
<Variable Name="cfg_Flowmeter_ModbusNode" Comment="" Address="1" Alias="" StringSize="0" DataType="USINT" InitialValue="1" Modifier="Retain" Kind="Var" AccessRights="ReadWrite" RetainFlags="" CommentFields="" Attributes="4" GroupName="" />
<Variable Name="cfg_FlowRate_Register" Comment="" Address="1" Alias="" StringSize="0" DataType="UDINT" InitialValue="201" Modifier="Retain" Kind="Var" AccessRights="ReadWrite" RetainFlags="" CommentFields="" Attributes="4" GroupName="" />
<Variable Name="cfg_FlowTotalizerA_Register" Comment="" Address="1" Alias="" StringSize="0" DataType="UDINT" InitialValue="203" Modifier="Retain" Kind="Var" AccessRights="ReadWrite" RetainFlags="" CommentFields="" Attributes="4" GroupName="" />
<Variable Name="cfg_FlowTotalizerB_Register" Comment="" Address="1" Alias="" StringSize="0" DataType="UDINT" InitialValue="205" Modifier="Retain" Kind="Var" AccessRights="ReadWrite" RetainFlags="" CommentFields="" Attributes="4" GroupName="" />
<Variable Name="val_FlowTotalizerC" Comment="" Address="1" Alias="" StringSize="0" DataType="REAL" InitialValue="" Modifier="NonRetain" Kind="Var" AccessRights="ReadWrite" RetainFlags="" CommentFields="" Attributes="4" GroupName="" />
<Variable Name="cfg_FlowTotalizerC_Register" Comment="" Address="1" Alias="" StringSize="0" DataType="UDINT" InitialValue="207" Modifier="Retain" Kind="Var" AccessRights="ReadWrite" RetainFlags="" CommentFields="" Attributes="4" GroupName="" />
<Variable Name="val_Status0" Comment="" Address="1" Alias="" StringSize="0" DataType="UINT" InitialValue="" Modifier="NonRetain" Kind="Var" AccessRights="ReadWrite" RetainFlags="" CommentFields="" Attributes="4" GroupName="" />
<Variable Name="cfg_Status_Register" Comment="" Address="1" Alias="" StringSize="0" DataType="UDINT" InitialValue="1" Modifier="Retain" Kind="Var" AccessRights="ReadWrite" RetainFlags="" CommentFields="" Attributes="4" GroupName="" />
<Variable Name="val_Status1" Comment="" Address="1" Alias="" StringSize="0" DataType="UINT" InitialValue="" Modifier="NonRetain" Kind="Var" AccessRights="ReadWrite" RetainFlags="" CommentFields="" Attributes="4" GroupName="" />
<Variable Name="val_Status2" Comment="" Address="1" Alias="" StringSize="0" DataType="UINT" InitialValue="" Modifier="NonRetain" Kind="Var" AccessRights="ReadWrite" RetainFlags="" CommentFields="" Attributes="4" GroupName="" />
<Variable Name="sts_FlowmeterModbusOK" Comment="" Address="1" Alias="" StringSize="0" DataType="BOOL" InitialValue="" Modifier="NonRetain" Kind="Var" AccessRights="ReadWrite" RetainFlags="" CommentFields="" Attributes="4" GroupName="" />
<Variable Name="val_StatusString" Comment="" Address="1" Alias="" StringSize="80" DataType="STRING" InitialValue="" Modifier="NonRetain" Kind="Var" AccessRights="ReadWrite" RetainFlags="" CommentFields="" Attributes="4" GroupName="" />
<Variable Name="cfg_ResetTotalizerA_Coil" Comment="" Address="1" Alias="" StringSize="0" DataType="UDINT" InitialValue="104" Modifier="Retain" Kind="Var" AccessRights="ReadWrite" RetainFlags="" CommentFields="" Attributes="4" GroupName="" />
<Variable Name="cfg_ResetTotalizerB_Coil" Comment="" Address="1" Alias="" StringSize="0" DataType="UDINT" InitialValue="105" Modifier="Retain" Kind="Var" AccessRights="ReadWrite" RetainFlags="" CommentFields="" Attributes="4" GroupName="" />
<Variable Name="cfg_ResetTotalizerC_Coil" Comment="" Address="1" Alias="" StringSize="0" DataType="UDINT" InitialValue="106" Modifier="Retain" Kind="Var" AccessRights="ReadWrite" RetainFlags="" CommentFields="" Attributes="4" GroupName="" />
<Variable Name="cmd_ResetTotalizerA" Comment="" Address="1" Alias="" StringSize="0" DataType="BOOL" InitialValue="" Modifier="NonRetain" Kind="Var" AccessRights="ReadWrite" RetainFlags="" CommentFields="" Attributes="4" GroupName="" />
<Variable Name="cmd_ResetTotalizerB" Comment="" Address="1" Alias="" StringSize="0" DataType="BOOL" InitialValue="" Modifier="NonRetain" Kind="Var" AccessRights="ReadWrite" RetainFlags="" CommentFields="" Attributes="4" GroupName="" />
<Variable Name="cmd_ResetTotalizerC" Comment="" Address="1" Alias="" StringSize="0" DataType="BOOL" InitialValue="" Modifier="NonRetain" Kind="Var" AccessRights="ReadWrite" RetainFlags="" CommentFields="" Attributes="4" GroupName="" />
<Variable Name="watchdog_INT" Comment="" Address="1" Alias="" StringSize="0" DataType="INT" InitialValue="" Modifier="NonRetain" Kind="Var" AccessRights="ReadWrite" RetainFlags="" CommentFields="" Attributes="4" GroupName="" />
<Variable Name="cfg_Units_Register" Comment="" Address="1" Alias="" StringSize="0" DataType="UDINT" InitialValue="61" Modifier="Retain" Kind="Var" AccessRights="ReadWrite" RetainFlags="" CommentFields="" Attributes="4" GroupName="" />
<Variable Name="watchdog_INT_prev" Comment="" Address="1" Alias="" StringSize="0" DataType="INT" InitialValue="" Modifier="NonRetain" Kind="Var" AccessRights="ReadWrite" RetainFlags="" CommentFields="" Attributes="4" GroupName="" />
<Variable Name="val_FlowUnits" Comment="" Address="1" Alias="" StringSize="80" DataType="STRING" InitialValue="" Modifier="NonRetain" Kind="Var" AccessRights="ReadWrite" RetainFlags="" CommentFields="" Attributes="4" GroupName="" />
<Variable Name="val_FlowTotalizerAUnits" Comment="" Address="1" Alias="" StringSize="80" DataType="STRING" InitialValue="" Modifier="NonRetain" Kind="Var" AccessRights="ReadWrite" RetainFlags="" CommentFields="" Attributes="4" GroupName="" />
<Variable Name="val_FlowTotalizerBUnits" Comment="" Address="1" Alias="" StringSize="80" DataType="STRING" InitialValue="" Modifier="NonRetain" Kind="Var" AccessRights="ReadWrite" RetainFlags="" CommentFields="" Attributes="4" GroupName="" />
<Variable Name="val_FlowTotalizerCUnits" Comment="" Address="1" Alias="" StringSize="80" DataType="STRING" InitialValue="" Modifier="NonRetain" Kind="Var" AccessRights="ReadWrite" RetainFlags="" CommentFields="" Attributes="4" GroupName="" />
<Variable Name="cfg_SolarPanel_Register" Comment="" Address="1" Alias="" StringSize="0" DataType="UDINT" InitialValue="1" Modifier="Retain" Kind="Var" AccessRights="ReadWrite" RetainFlags="" CommentFields="" Attributes="4" GroupName="" />
<Variable Name="cfg_SolarPanel_ModbusNode" Comment="" Address="1" Alias="" StringSize="0" DataType="USINT" InitialValue="20" Modifier="Retain" Kind="Var" AccessRights="ReadWrite" RetainFlags="" CommentFields="" Attributes="4" GroupName="" />
<Variable Name="val_SolarArrayCurrent" Comment="" Address="1" Alias="" StringSize="0" DataType="REAL" InitialValue="" Modifier="NonRetain" Kind="Var" AccessRights="ReadWrite" RetainFlags="" CommentFields="" Attributes="4" GroupName="" />
<Variable Name="val_SolarBatteryTerminalVoltage" Comment="" Address="1" Alias="" StringSize="0" DataType="REAL" InitialValue="" Modifier="NonRetain" Kind="Var" AccessRights="ReadWrite" RetainFlags="" CommentFields="" Attributes="4" GroupName="" />
<Variable Name="val_SolarArrayVoltage" Comment="" Address="1" Alias="" StringSize="0" DataType="REAL" InitialValue="" Modifier="NonRetain" Kind="Var" AccessRights="ReadWrite" RetainFlags="" CommentFields="" Attributes="4" GroupName="" />
<Variable Name="val_SolarLoadVoltage" Comment="" Address="1" Alias="" StringSize="0" DataType="REAL" InitialValue="" Modifier="NonRetain" Kind="Var" AccessRights="ReadWrite" RetainFlags="" CommentFields="" Attributes="4" GroupName="" />
<Variable Name="val_SolarLoadCurrent" Comment="" Address="1" Alias="" StringSize="0" DataType="REAL" InitialValue="" Modifier="NonRetain" Kind="Var" AccessRights="ReadWrite" RetainFlags="" CommentFields="" Attributes="4" GroupName="" />
<Variable Name="val_SolarBatteryTemperature" Comment="" Address="1" Alias="" StringSize="0" DataType="REAL" InitialValue="" Modifier="NonRetain" Kind="Var" AccessRights="ReadWrite" RetainFlags="" CommentFields="" Attributes="4" GroupName="" />
<Variable Name="val_SolarAmbientTemperature" Comment="" Address="1" Alias="" StringSize="0" DataType="REAL" InitialValue="" Modifier="NonRetain" Kind="Var" AccessRights="ReadWrite" RetainFlags="" CommentFields="" Attributes="4" GroupName="" />
<Variable Name="sts_SolarModbusOK" Comment="" Address="1" Alias="" StringSize="0" DataType="BOOL" InitialValue="" Modifier="NonRetain" Kind="Var" AccessRights="ReadWrite" RetainFlags="" CommentFields="" Attributes="4" GroupName="" />
<Variable Name="sts_ChargeState" Comment="" Address="1" Alias="" StringSize="80" DataType="STRING" InitialValue="" Modifier="NonRetain" Kind="Var" AccessRights="ReadWrite" RetainFlags="" CommentFields="" Attributes="4" GroupName="" />
<Variable Name="sts_ArrayFault" Comment="" Address="1" Alias="" StringSize="80" DataType="STRING" InitialValue="" Modifier="NonRetain" Kind="Var" AccessRights="ReadWrite" RetainFlags="" CommentFields="" Attributes="4" GroupName="" />
<Variable Name="val_PressureReading" Comment="" Address="1" Alias="" StringSize="0" DataType="REAL" InitialValue="" Modifier="NonRetain" Kind="Var" AccessRights="ReadWrite" RetainFlags="" CommentFields="" Attributes="4" GroupName="" />
<Variable Name="ModbusErrorDuration" Comment="" Address="1" Alias="" StringSize="0" DataType="TIME" InitialValue="T#20s" Modifier="NonRetain" Kind="Var" AccessRights="ReadWrite" RetainFlags="" CommentFields="" Attributes="4" GroupName="" />
</GlobalVars>
<ExportedGroups />
<ImportedGroups />
<Groups />
<Devices>
<Device PackageName="AB_" DriverName="OPTIMUS_" Name="IO_Base" Index="0" NbChannels="0" IsVirtual="false" Order="1" Alias="" Comment="">
<DeviceList>
<Device Index="0" NbChannels="7" Order="0" SimpleOfComplexOrder="0">
<IOSymbols AllIOSymbols="true">
<IOSymbol GainA="1" GainB="1" Offset="1" Order="0" GainAf="1" GainBf="1" OffsetF="1" PhysicalOrder="0" Alias="" Comment="" Address="1" IsComplexMember="false" ConvFunctio="" SymbolName="_IO_EM_DO_00">
<ChannelParameterInstances />
</IOSymbol>
<IOSymbol GainA="1" GainB="1" Offset="1" Order="1" GainAf="1" GainBf="1" OffsetF="1" PhysicalOrder="1" Alias="" Comment="" Address="1" IsComplexMember="false" ConvFunctio="" SymbolName="_IO_EM_DO_01">
<ChannelParameterInstances />
</IOSymbol>
<IOSymbol GainA="1" GainB="1" Offset="1" Order="2" GainAf="1" GainBf="1" OffsetF="1" PhysicalOrder="2" Alias="" Comment="" Address="1" IsComplexMember="false" ConvFunctio="" SymbolName="_IO_EM_DO_02">
<ChannelParameterInstances />
</IOSymbol>
<IOSymbol GainA="1" GainB="1" Offset="1" Order="3" GainAf="1" GainBf="1" OffsetF="1" PhysicalOrder="3" Alias="" Comment="" Address="1" IsComplexMember="false" ConvFunctio="" SymbolName="_IO_EM_DO_03">
<ChannelParameterInstances />
</IOSymbol>
<IOSymbol GainA="1" GainB="1" Offset="1" Order="4" GainAf="1" GainBf="1" OffsetF="1" PhysicalOrder="4" Alias="" Comment="" Address="1" IsComplexMember="false" ConvFunctio="" SymbolName="_IO_EM_DO_04">
<ChannelParameterInstances />
</IOSymbol>
<IOSymbol GainA="1" GainB="1" Offset="1" Order="5" GainAf="1" GainBf="1" OffsetF="1" PhysicalOrder="5" Alias="" Comment="" Address="1" IsComplexMember="false" ConvFunctio="" SymbolName="_IO_EM_DO_05">
<ChannelParameterInstances />
</IOSymbol>
<IOSymbol GainA="1" GainB="1" Offset="1" Order="6" GainAf="1" GainBf="1" OffsetF="1" PhysicalOrder="6" Alias="" Comment="" Address="1" IsComplexMember="false" ConvFunctio="" SymbolName="_IO_EM_DO_06">
<ChannelParameterInstances />
</IOSymbol>
</IOSymbols>
</Device>
<Device Index="0" NbChannels="12" Order="0" SimpleOfComplexOrder="1">
<IOSymbols AllIOSymbols="true">
<IOSymbol GainA="1" GainB="1" Offset="1" Order="0" GainAf="1" GainBf="1" OffsetF="1" PhysicalOrder="0" Alias="" Comment="" Address="1" IsComplexMember="false" ConvFunctio="" SymbolName="_IO_EM_DI_00">
<ChannelParameterInstances />
</IOSymbol>
<IOSymbol GainA="1" GainB="1" Offset="1" Order="1" GainAf="1" GainBf="1" OffsetF="1" PhysicalOrder="1" Alias="" Comment="" Address="1" IsComplexMember="false" ConvFunctio="" SymbolName="_IO_EM_DI_01">
<ChannelParameterInstances />
</IOSymbol>
<IOSymbol GainA="1" GainB="1" Offset="1" Order="2" GainAf="1" GainBf="1" OffsetF="1" PhysicalOrder="2" Alias="" Comment="" Address="1" IsComplexMember="false" ConvFunctio="" SymbolName="_IO_EM_DI_02">
<ChannelParameterInstances />
</IOSymbol>
<IOSymbol GainA="1" GainB="1" Offset="1" Order="3" GainAf="1" GainBf="1" OffsetF="1" PhysicalOrder="3" Alias="" Comment="" Address="1" IsComplexMember="false" ConvFunctio="" SymbolName="_IO_EM_DI_03">
<ChannelParameterInstances />
</IOSymbol>
<IOSymbol GainA="1" GainB="1" Offset="1" Order="4" GainAf="1" GainBf="1" OffsetF="1" PhysicalOrder="4" Alias="" Comment="" Address="1" IsComplexMember="false" ConvFunctio="" SymbolName="_IO_EM_DI_04">
<ChannelParameterInstances />
</IOSymbol>
<IOSymbol GainA="1" GainB="1" Offset="1" Order="5" GainAf="1" GainBf="1" OffsetF="1" PhysicalOrder="5" Alias="" Comment="" Address="1" IsComplexMember="false" ConvFunctio="" SymbolName="_IO_EM_DI_05">
<ChannelParameterInstances />
</IOSymbol>
<IOSymbol GainA="1" GainB="1" Offset="1" Order="6" GainAf="1" GainBf="1" OffsetF="1" PhysicalOrder="6" Alias="" Comment="" Address="1" IsComplexMember="false" ConvFunctio="" SymbolName="_IO_EM_DI_06">
<ChannelParameterInstances />
</IOSymbol>
<IOSymbol GainA="1" GainB="1" Offset="1" Order="7" GainAf="1" GainBf="1" OffsetF="1" PhysicalOrder="7" Alias="" Comment="" Address="1" IsComplexMember="false" ConvFunctio="" SymbolName="_IO_EM_DI_07">
<ChannelParameterInstances />
</IOSymbol>
<IOSymbol GainA="1" GainB="1" Offset="1" Order="8" GainAf="1" GainBf="1" OffsetF="1" PhysicalOrder="8" Alias="" Comment="" Address="1" IsComplexMember="false" ConvFunctio="" SymbolName="_IO_EM_DI_08">
<ChannelParameterInstances />
</IOSymbol>
<IOSymbol GainA="1" GainB="1" Offset="1" Order="9" GainAf="1" GainBf="1" OffsetF="1" PhysicalOrder="9" Alias="" Comment="" Address="1" IsComplexMember="false" ConvFunctio="" SymbolName="_IO_EM_DI_09">
<ChannelParameterInstances />
</IOSymbol>
<IOSymbol GainA="1" GainB="1" Offset="1" Order="10" GainAf="1" GainBf="1" OffsetF="1" PhysicalOrder="10" Alias="" Comment="" Address="1" IsComplexMember="false" ConvFunctio="" SymbolName="_IO_EM_DI_10">
<ChannelParameterInstances />
</IOSymbol>
<IOSymbol GainA="1" GainB="1" Offset="1" Order="11" GainAf="1" GainBf="1" OffsetF="1" PhysicalOrder="11" Alias="" Comment="" Address="1" IsComplexMember="false" ConvFunctio="" SymbolName="_IO_EM_DI_11">
<ChannelParameterInstances />
</IOSymbol>
</IOSymbols>
</Device>
<Device Index="0" NbChannels="4" Order="0" SimpleOfComplexOrder="2">
<IOSymbols AllIOSymbols="true">
<IOSymbol GainA="1" GainB="1" Offset="1" Order="0" GainAf="1" GainBf="1" OffsetF="1" PhysicalOrder="0" Alias="" Comment="" Address="1" IsComplexMember="false" ConvFunctio="" SymbolName="_IO_EM_AI_00">
<ChannelParameterInstances />
</IOSymbol>
<IOSymbol GainA="1" GainB="1" Offset="1" Order="1" GainAf="1" GainBf="1" OffsetF="1" PhysicalOrder="1" Alias="" Comment="" Address="1" IsComplexMember="false" ConvFunctio="" SymbolName="_IO_EM_AI_01">
<ChannelParameterInstances />
</IOSymbol>
<IOSymbol GainA="1" GainB="1" Offset="1" Order="2" GainAf="1" GainBf="1" OffsetF="1" PhysicalOrder="2" Alias="" Comment="" Address="1" IsComplexMember="false" ConvFunctio="" SymbolName="_IO_EM_AI_02">
<ChannelParameterInstances />
</IOSymbol>
<IOSymbol GainA="1" GainB="1" Offset="1" Order="3" GainAf="1" GainBf="1" OffsetF="1" PhysicalOrder="3" Alias="" Comment="" Address="1" IsComplexMember="false" ConvFunctio="" SymbolName="_IO_EM_AI_03">
<ChannelParameterInstances />
</IOSymbol>
</IOSymbols>
</Device>
<Device Index="0" NbChannels="1" Order="0" SimpleOfComplexOrder="3">
<IOSymbols AllIOSymbols="true">
<IOSymbol GainA="1" GainB="1" Offset="1" Order="0" GainAf="1" GainBf="1" OffsetF="1" PhysicalOrder="0" Alias="" Comment="" Address="1" IsComplexMember="false" ConvFunctio="" SymbolName="_IO_EM_AO_00">
<ChannelParameterInstances />
</IOSymbol>
</IOSymbols>
</Device>
</DeviceList>
<IOSymbols AllIOSymbols="true" />
</Device>
<Device PackageName="AB_" DriverName="OPTIMUS_" Name="IOUP_Analog" Index="101" NbChannels="0" IsVirtual="false" Order="2" Alias="" Comment="">
<DeviceList>
<Device Index="101" NbChannels="0" Order="0" SimpleOfComplexOrder="0">
<IOSymbols AllIOSymbols="true" />
</Device>
<Device Index="101" NbChannels="2" Order="0" SimpleOfComplexOrder="1">
<IOSymbols AllIOSymbols="true">
<IOSymbol GainA="1" GainB="1" Offset="0" Order="0" GainAf="1" GainBf="1" OffsetF="0" PhysicalOrder="0" Alias="" Comment="" Address="1" IsComplexMember="false" ConvFunctio="" SymbolName="_IO_P1_AI_00">
<ChannelParameterInstances />
</IOSymbol>
<IOSymbol GainA="1" GainB="1" Offset="0" Order="1" GainAf="1" GainBf="1" OffsetF="0" PhysicalOrder="1" Alias="" Comment="" Address="1" IsComplexMember="false" ConvFunctio="" SymbolName="_IO_P1_AI_01">
<ChannelParameterInstances />
</IOSymbol>
</IOSymbols>
</Device>
</DeviceList>
<IOSymbols AllIOSymbols="true" />
</Device>
</Devices>
<NetworkParameterValues>
<NetworkParameterValue NetworkName="HSD" Name="ValidityTime" Value="0" />
<NetworkParameterValue NetworkName="ETCP" Name="TimeOut" Value="10000" />
</NetworkParameterValues>
</Resource>

View File

@@ -0,0 +1,19 @@
_STEP 2 0 1
_IF _NOT _IO_EM_DI_00 _GOTO __LAB1
_STEP 2 0 2
PANELVIEWON := TRUE
_GOTO __LAB2
__LAB1 :
__LAB2 :
_STEP 2 0 5
__FBL_RET := _PUSHCALLFB TON PANELVIEWTON
_STEP 2 0 7
__TMPB1 := PANELVIEWTON [ __CDINT00000004 ]
_IF _NOT __TMPB1 _GOTO __LAB3
_STEP 2 0 8
PANELVIEWON := FALSE
_GOTO __LAB4
__LAB3 :
__LAB4 :
_STEP 2 0 11
_IO_EM_DO_00 := PANELVIEWON

View File

@@ -0,0 +1,8 @@
6
0, 1
6, 2
16, 5
22, 7
36, 8
46, 11

View File

@@ -1,3 +1,4 @@
_STEP 2 0 1
_PUSH_PAR _IO_P1_AI_00
__TMPR5 := _CALL ANY_TO_UINT
_PUSH_PAR __TMPR1
@@ -7,6 +8,7 @@ _PUSH_PAR __TMPR4
_PUSH_PAR __TMPR5
__TMPR6 := _CALL LINEARSCALE
VAL_AI00_UA := __TMPR6
_STEP 2 0 2
_PUSH_PAR __TMPR3
_PUSH_PAR __TMPR4
_PUSH_PAR __TMPR7

View File

@@ -0,0 +1,4 @@
2
0, 1
38, 2

View File

@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<Root Version="7">
<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>

View File

@@ -0,0 +1,13 @@
PROGRAM PanelViewTimer
IF (_IO_EM_DI_00) THEN
panelviewOn := TRUE;
END_IF;
PanelViewTON(panelviewOn, panelviewTimeOn);
IF PanelViewTON.Q THEN
panelviewOn := FALSE;
END_IF;
_IO_EM_DO_00 := panelviewOn;
END_PROGRAM

View File

@@ -0,0 +1,16 @@
<?xml version="1.0" encoding="utf-8"?>
<Pou FileVersion="200.00.005" Name="PressureAnalog" ElementGuid="8f54bff0-84c6-443e-84ae-c99f1b596308" Comment="" SingleTextLine="" Language="ST" Localization="Prj" GenDebugInfo="false" UseResPassword="true" GenerateSymbMon="true" Is1499="false" CustomFbd="0" GroupName="(User defined)">
<Program />
<LocalVars>
<Variable Name="val_AI00_uA" Comment="" Address="" Alias="" StringSize="0" DataType="REAL" InitialValue="" Modifier="NonRetain" Kind="Var" AccessRights="ReadWrite" RetainFlags="" CommentFields="" Attributes="0" GroupName="" />
</LocalVars>
<PouBody><![CDATA[PROGRAM PressureAnalog
val_AI00_uA := LinearScale(13107.0, 65535.0, 4000.0, 20000.0, ANY_TO_REAL(_IO_P1_AI_00));
val_PressureReading := LinearScale(4000.0, 20000.0, 0.0, 600.0, val_AI00_uA);
END_PROGRAM]]></PouBody>
<PouUIProperties>
<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>
</PouUIProperties>
</Pou>

View File

@@ -1,3 +1,4 @@
_STEP 2 0 10
_PUSH_PAR INPUTUINT
_PUSH_PAR __CDINT0000000F
__TMPB1 := _CALL __ANARBIT
@@ -5,6 +6,7 @@ _PUSH_PAR __TMPB1
_PUSH_PAR REVERSEUINT
_PUSH_PAR __DINT_NULL
__TMPN1 := _CALL __ANAWBIT
_STEP 2 0 11
_PUSH_PAR INPUTUINT
_PUSH_PAR __CDINT0000000E
__TMPB1 := _CALL __ANARBIT
@@ -12,6 +14,7 @@ _PUSH_PAR __TMPB1
_PUSH_PAR REVERSEUINT
_PUSH_PAR __CDINT00000001
__TMPN1 := _CALL __ANAWBIT
_STEP 2 0 12
_PUSH_PAR INPUTUINT
_PUSH_PAR __CDINT0000000D
__TMPB1 := _CALL __ANARBIT
@@ -19,6 +22,7 @@ _PUSH_PAR __TMPB1
_PUSH_PAR REVERSEUINT
_PUSH_PAR __CDINT00000002
__TMPN1 := _CALL __ANAWBIT
_STEP 2 0 13
_PUSH_PAR INPUTUINT
_PUSH_PAR __CDINT0000000C
__TMPB1 := _CALL __ANARBIT
@@ -26,6 +30,7 @@ _PUSH_PAR __TMPB1
_PUSH_PAR REVERSEUINT
_PUSH_PAR __CDINT00000003
__TMPN1 := _CALL __ANAWBIT
_STEP 2 0 14
_PUSH_PAR INPUTUINT
_PUSH_PAR __CDINT0000000B
__TMPB1 := _CALL __ANARBIT
@@ -33,6 +38,7 @@ _PUSH_PAR __TMPB1
_PUSH_PAR REVERSEUINT
_PUSH_PAR __CDINT00000004
__TMPN1 := _CALL __ANAWBIT
_STEP 2 0 15
_PUSH_PAR INPUTUINT
_PUSH_PAR __CDINT0000000A
__TMPB1 := _CALL __ANARBIT
@@ -40,6 +46,7 @@ _PUSH_PAR __TMPB1
_PUSH_PAR REVERSEUINT
_PUSH_PAR __CDINT00000005
__TMPN1 := _CALL __ANAWBIT
_STEP 2 0 16
_PUSH_PAR INPUTUINT
_PUSH_PAR __CDINT00000009
__TMPB1 := _CALL __ANARBIT
@@ -47,6 +54,7 @@ _PUSH_PAR __TMPB1
_PUSH_PAR REVERSEUINT
_PUSH_PAR __CDINT00000006
__TMPN1 := _CALL __ANAWBIT
_STEP 2 0 17
_PUSH_PAR INPUTUINT
_PUSH_PAR __CDINT00000008
__TMPB1 := _CALL __ANARBIT
@@ -54,6 +62,7 @@ _PUSH_PAR __TMPB1
_PUSH_PAR REVERSEUINT
_PUSH_PAR __CDINT00000007
__TMPN1 := _CALL __ANAWBIT
_STEP 2 0 18
_PUSH_PAR INPUTUINT
_PUSH_PAR __CDINT00000007
__TMPB1 := _CALL __ANARBIT
@@ -61,6 +70,7 @@ _PUSH_PAR __TMPB1
_PUSH_PAR REVERSEUINT
_PUSH_PAR __CDINT00000008
__TMPN1 := _CALL __ANAWBIT
_STEP 2 0 19
_PUSH_PAR INPUTUINT
_PUSH_PAR __CDINT00000006
__TMPB1 := _CALL __ANARBIT
@@ -68,6 +78,7 @@ _PUSH_PAR __TMPB1
_PUSH_PAR REVERSEUINT
_PUSH_PAR __CDINT00000009
__TMPN1 := _CALL __ANAWBIT
_STEP 2 0 20
_PUSH_PAR INPUTUINT
_PUSH_PAR __CDINT00000005
__TMPB1 := _CALL __ANARBIT
@@ -75,6 +86,7 @@ _PUSH_PAR __TMPB1
_PUSH_PAR REVERSEUINT
_PUSH_PAR __CDINT0000000A
__TMPN1 := _CALL __ANAWBIT
_STEP 2 0 21
_PUSH_PAR INPUTUINT
_PUSH_PAR __CDINT00000004
__TMPB1 := _CALL __ANARBIT
@@ -82,6 +94,7 @@ _PUSH_PAR __TMPB1
_PUSH_PAR REVERSEUINT
_PUSH_PAR __CDINT0000000B
__TMPN1 := _CALL __ANAWBIT
_STEP 2 0 22
_PUSH_PAR INPUTUINT
_PUSH_PAR __CDINT00000003
__TMPB1 := _CALL __ANARBIT
@@ -89,6 +102,7 @@ _PUSH_PAR __TMPB1
_PUSH_PAR REVERSEUINT
_PUSH_PAR __CDINT0000000C
__TMPN1 := _CALL __ANAWBIT
_STEP 2 0 23
_PUSH_PAR INPUTUINT
_PUSH_PAR __CDINT00000002
__TMPB1 := _CALL __ANARBIT
@@ -96,6 +110,7 @@ _PUSH_PAR __TMPB1
_PUSH_PAR REVERSEUINT
_PUSH_PAR __CDINT0000000D
__TMPN1 := _CALL __ANAWBIT
_STEP 2 0 24
_PUSH_PAR INPUTUINT
_PUSH_PAR __CDINT00000001
__TMPB1 := _CALL __ANARBIT
@@ -103,6 +118,7 @@ _PUSH_PAR __TMPB1
_PUSH_PAR REVERSEUINT
_PUSH_PAR __CDINT0000000E
__TMPN1 := _CALL __ANAWBIT
_STEP 2 0 25
_PUSH_PAR INPUTUINT
_PUSH_PAR __DINT_NULL
__TMPB1 := _CALL __ANARBIT

View File

@@ -0,0 +1,18 @@
16
6, 10
22, 11
38, 12
54, 13
70, 14
86, 15
102, 16
118, 17
134, 18
150, 19
166, 20
182, 21
198, 22
214, 23
230, 24
246, 25

View File

@@ -0,0 +1,40 @@
<?xml version="1.0" encoding="utf-8"?>
<Pou FileVersion="200.00.005" Name="ReverseUINT" ElementGuid="09f80df8-de78-4f0d-83bb-a50f1aedc854" Comment="" SingleTextLine="" Language="ST" Localization="Prj" GenDebugInfo="false" UseResPassword="true" GenerateSymbMon="true" Is1499="false" CustomFbd="0" GroupName="(User defined)">
<Function IdentifierNb="0" Keyword="" ConvDirection="NoConversion" DataType="DINT" />
<LocalVars>
<Variable Name="ReverseUINT" Comment="" Address="" Alias="" StringSize="0" DataType="UINT" InitialValue="" Modifier="Constant" Kind="VarOutput" AccessRights="Write" Direction="Output" CommentFields="" Attributes="23825" />
<Variable Name="InputUINT" Comment="" Address="" Alias="" StringSize="0" DataType="UINT" InitialValue="" Modifier="Constant" Kind="VarInput" AccessRights="Read" Direction="Input" CommentFields="" Attributes="0" />
</LocalVars>
<PouBody><![CDATA[FUNCTION ReverseUINT
(* REVERSE UINT *)
(* ================================ *)
(* Developed by: Patrick McDonagh *)
(* January 30, 2018 *)
(* ================================ *)
(* Reverses the bits of a UINT *)
(* data type. *)
ReverseUINT.0 := InputUINT.15;
ReverseUINT.1 := InputUINT.14;
ReverseUINT.2 := InputUINT.13;
ReverseUINT.3 := InputUINT.12;
ReverseUINT.4 := InputUINT.11;
ReverseUINT.5 := InputUINT.10;
ReverseUINT.6 := InputUINT.9;
ReverseUINT.7 := InputUINT.8;
ReverseUINT.8 := InputUINT.7;
ReverseUINT.9 := InputUINT.6;
ReverseUINT.10 := InputUINT.5;
ReverseUINT.11 := InputUINT.4;
ReverseUINT.12 := InputUINT.3;
ReverseUINT.13 := InputUINT.2;
ReverseUINT.14 := InputUINT.1;
ReverseUINT.15 := InputUINT.0;
END_FUNCTION]]></PouBody>
<PouUIProperties>
<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>
</PouUIProperties>
</Pou>

View File

@@ -1,13 +1,21 @@
_STEP 2 0 1
__TMPB1 := MODBUSTIMER [ __CDINT00000004 ]
__TMPB1 := _NOT __TMPB1
__TMPB__TON__IN := __TMPB1
__FBL_RET := _PUSHCALLFB TON MODBUSTIMER
_STEP 2 0 6
MBS_SOLARPANEL_TARGETCFG [ __DINT_NULL ] := CFG_SOLARPANEL_REGISTER
_STEP 2 0 7
MBS_SOLARPANEL_TARGETCFG [ __CDINT00000004 ] := CFG_SOLARPANEL_MODBUSNODE
_STEP 2 0 9
MBS_SOLARPANEL_LOCALCFG [ __DINT_NULL ] := __CUINT00000002
_STEP 2 0 10
MBS_SOLARPANEL_LOCALCFG [ __CDINT00000003 ] := READ_CMD
_STEP 2 0 11
MBS_SOLARPANEL_LOCALCFG [ __CDINT00000002 ] := MBS_TRIGGERTYPE
_STEP 2 0 12
MBS_SOLARPANEL_LOCALCFG [ __CDINT00000004 ] := __CUINT00000023
_STEP 2 0 13
__TMPB1 := MODBUSTIMER [ __CDINT00000004 ]
__TMPV1 := MBS_SOLARPANEL_LOCALCFG [ __DINT_NULL ]
__TMPV2 := MBS_SOLARPANEL_TARGETCFG [ __DINT_NULL ]
@@ -21,38 +29,45 @@ __TMPV6 := MBS_SOLARPANEL_MSG [ __CDINT00000008 ]
__TMPV6 := __TMPV3
MBS_SOLARPANEL_MSG [ __CDINT0000000A ] := __ADI__SOLARPANELMB_0_0
__FBL_RET := _PUSHCALLFB MSG_MODBUS MBS_SOLARPANEL_MSG
_STEP 2 0 15
__TMPB1 := MBS_SOLARPANEL_MSG [ __CDINT0000000C ]
_IF _NOT __TMPB1 _GOTO __LAB1
_STEP 2 0 16
__TMPI1 := __CDINT00000012 - __CDINT00000001
__TMPI1 := __TMPI1 * __CDINT00000002
__TMPUIN1 := MBS_SOLARPANEL_DATA [ __TMPI1 ]
_PUSH_PAR __TMPUIN1
__TMPR1 := _CALL WORDTOFLOAT16
VAL_SOLARARRAYCURRENT := __TMPR1
_STEP 2 0 17
__TMPI1 := __CDINT00000013 - __CDINT00000001
__TMPI1 := __TMPI1 * __CDINT00000002
__TMPUIN1 := MBS_SOLARPANEL_DATA [ __TMPI1 ]
_PUSH_PAR __TMPUIN1
__TMPR1 := _CALL WORDTOFLOAT16
VAL_SOLARBATTERYTERMINALVOLTAGE := __TMPR1
_STEP 2 0 18
__TMPI1 := __CDINT00000014 - __CDINT00000001
__TMPI1 := __TMPI1 * __CDINT00000002
__TMPUIN1 := MBS_SOLARPANEL_DATA [ __TMPI1 ]
_PUSH_PAR __TMPUIN1
__TMPR1 := _CALL WORDTOFLOAT16
VAL_SOLARARRAYVOLTAGE := __TMPR1
_STEP 2 0 19
__TMPI1 := __CDINT00000015 - __CDINT00000001
__TMPI1 := __TMPI1 * __CDINT00000002
__TMPUIN1 := MBS_SOLARPANEL_DATA [ __TMPI1 ]
_PUSH_PAR __TMPUIN1
__TMPR1 := _CALL WORDTOFLOAT16
VAL_SOLARLOADVOLTAGE := __TMPR1
_STEP 2 0 20
__TMPI1 := __CDINT00000017 - __CDINT00000001
__TMPI1 := __TMPI1 * __CDINT00000002
__TMPUIN1 := MBS_SOLARPANEL_DATA [ __TMPI1 ]
_PUSH_PAR __TMPUIN1
__TMPR1 := _CALL WORDTOFLOAT16
VAL_SOLARLOADCURRENT := __TMPR1
_STEP 2 0 21
__TMPI1 := __CDINT0000001C - __CDINT00000001
__TMPI1 := __TMPI1 * __CDINT00000002
__TMPUIN1 := MBS_SOLARPANEL_DATA [ __TMPI1 ]
@@ -61,6 +76,7 @@ __TMPR1 := _CALL WORDTOFLOAT16
__TMPR1 := __TMPR1 * __TMPR2
__TMPR1 := __TMPR1 + __TMPR3
VAL_SOLARBATTERYTEMPERATURE := __TMPR1
_STEP 2 0 22
__TMPI1 := __CDINT0000001D - __CDINT00000001
__TMPI1 := __TMPI1 * __CDINT00000002
__TMPUIN1 := MBS_SOLARPANEL_DATA [ __TMPI1 ]
@@ -69,12 +85,14 @@ __TMPR1 := _CALL WORDTOFLOAT16
__TMPR1 := __TMPR1 * __TMPR2
__TMPR1 := __TMPR1 + __TMPR3
VAL_SOLARAMBIENTTEMPERATURE := __TMPR1
_STEP 2 0 23
__TMPI1 := __CDINT00000022 - __CDINT00000001
__TMPI1 := __TMPI1 * __CDINT00000002
__TMPUIN1 := MBS_SOLARPANEL_DATA [ __TMPI1 ]
_PUSH_PAR __TMPUIN1
__TMPUIN2 := _CALL ANY_TO_UINT
TEMP_CHARGESTATE := __TMPUIN2
_STEP 2 0 24
__TMPI1 := __CDINT00000023 - __CDINT00000001
__TMPI1 := __TMPI1 * __CDINT00000002
__TMPUIN1 := MBS_SOLARPANEL_DATA [ __TMPI1 ]
@@ -84,71 +102,90 @@ TEMP_ARRAYFAULT := __TMPUIN2
_GOTO __LAB2
__LAB1 :
__LAB2 :
_STEP 2 0 30
__TMPB1 := TEMP_CHARGESTATE = __UINT_NULL
_IF _NOT __TMPB1 _GOTO __LAB3
_STEP 2 0 31
STS_CHARGESTATE := __TMPM1
_GOTO __LAB4
__LAB3 :
_STEP 2 0 32
__TMPB1 := TEMP_CHARGESTATE = __CUINT00000001
_IF _NOT __TMPB1 _GOTO __LAB5
_STEP 2 0 33
STS_CHARGESTATE := __TMPM2
_GOTO __LAB4
__LAB5 :
__TMPB1 := TEMP_CHARGESTATE = __CUINT00000002
_IF _NOT __TMPB1 _GOTO __LAB6
_STEP 2 0 35
STS_CHARGESTATE := __TMPM3
_GOTO __LAB4
__LAB6 :
__TMPB1 := TEMP_CHARGESTATE = __CUINT00000003
_IF _NOT __TMPB1 _GOTO __LAB7
_STEP 2 0 37
STS_CHARGESTATE := __TMPM4
_GOTO __LAB4
__LAB7 :
__TMPB1 := TEMP_CHARGESTATE = __CUINT00000004
_IF _NOT __TMPB1 _GOTO __LAB8
_STEP 2 0 39
STS_CHARGESTATE := __TMPM5
_GOTO __LAB4
__LAB8 :
__TMPB1 := TEMP_CHARGESTATE = __CUINT00000005
_IF _NOT __TMPB1 _GOTO __LAB9
_STEP 2 0 41
STS_CHARGESTATE := __TMPM6
_GOTO __LAB4
__LAB9 :
__TMPB1 := TEMP_CHARGESTATE = __CUINT00000006
_IF _NOT __TMPB1 _GOTO __LABa
_STEP 2 0 43
STS_CHARGESTATE := __TMPM7
_GOTO __LAB4
__LABa :
__TMPB1 := TEMP_CHARGESTATE = __CUINT00000007
_IF _NOT __TMPB1 _GOTO __LABb
_STEP 2 0 45
STS_CHARGESTATE := __TMPM8
_GOTO __LAB4
__LABb :
__TMPB1 := TEMP_CHARGESTATE = __CUINT00000008
_IF _NOT __TMPB1 _GOTO __LABc
_STEP 2 0 47
STS_CHARGESTATE := __TMPM9
_GOTO __LAB4
__LABc :
_STEP 2 0 49
STS_CHARGESTATE := __TMPM10
__LAB4 :
_STEP 2 0 53
__TMPB1 := TEMP_ARRAYFAULT = __UINT_NULL
_IF _NOT __TMPB1 _GOTO __LABd
_STEP 2 0 54
STS_ARRAYFAULT := __TMPM11
_GOTO __LABe
__LABd :
_STEP 2 0 56
STS_ARRAYFAULT := __STRING_NULL
_STEP 2 0 57
_PUSH_PAR TEMP_ARRAYFAULT
_PUSH_PAR __DINT_NULL
__TMPB1 := _CALL __ANARBIT
_IF _NOT __TMPB1 _GOTO __LABf
_STEP 2 0 58
__TMPM13 := STS_ARRAYFAULT + __TMPM12
STS_ARRAYFAULT := __TMPM13
_GOTO __LAB10
__LABf :
_STEP 2 0 59
_PUSH_PAR TEMP_ARRAYFAULT
_PUSH_PAR __CDINT00000001
__TMPB1 := _CALL __ANARBIT
_IF _NOT __TMPB1 _GOTO __LAB11
_STEP 2 0 60
__TMPM13 := STS_ARRAYFAULT + __TMPM14
STS_ARRAYFAULT := __TMPM13
_GOTO __LAB10
@@ -157,6 +194,7 @@ _PUSH_PAR TEMP_ARRAYFAULT
_PUSH_PAR __CDINT00000002
__TMPB1 := _CALL __ANARBIT
_IF _NOT __TMPB1 _GOTO __LAB12
_STEP 2 0 62
__TMPM13 := STS_ARRAYFAULT + __TMPM15
STS_ARRAYFAULT := __TMPM13
_GOTO __LAB10
@@ -165,6 +203,7 @@ _PUSH_PAR TEMP_ARRAYFAULT
_PUSH_PAR __CDINT00000003
__TMPB1 := _CALL __ANARBIT
_IF _NOT __TMPB1 _GOTO __LAB13
_STEP 2 0 64
__TMPM13 := STS_ARRAYFAULT + __TMPM16
STS_ARRAYFAULT := __TMPM13
_GOTO __LAB10
@@ -173,6 +212,7 @@ _PUSH_PAR TEMP_ARRAYFAULT
_PUSH_PAR __CDINT00000004
__TMPB1 := _CALL __ANARBIT
_IF _NOT __TMPB1 _GOTO __LAB14
_STEP 2 0 66
__TMPM13 := STS_ARRAYFAULT + __TMPM17
STS_ARRAYFAULT := __TMPM13
_GOTO __LAB10
@@ -181,6 +221,7 @@ _PUSH_PAR TEMP_ARRAYFAULT
_PUSH_PAR __CDINT00000005
__TMPB1 := _CALL __ANARBIT
_IF _NOT __TMPB1 _GOTO __LAB15
_STEP 2 0 68
__TMPM13 := STS_ARRAYFAULT + __TMPM18
STS_ARRAYFAULT := __TMPM13
_GOTO __LAB10
@@ -189,6 +230,7 @@ _PUSH_PAR TEMP_ARRAYFAULT
_PUSH_PAR __CDINT00000006
__TMPB1 := _CALL __ANARBIT
_IF _NOT __TMPB1 _GOTO __LAB16
_STEP 2 0 70
__TMPM13 := STS_ARRAYFAULT + __TMPM19
STS_ARRAYFAULT := __TMPM13
_GOTO __LAB10
@@ -197,6 +239,7 @@ _PUSH_PAR TEMP_ARRAYFAULT
_PUSH_PAR __CDINT00000007
__TMPB1 := _CALL __ANARBIT
_IF _NOT __TMPB1 _GOTO __LAB17
_STEP 2 0 72
__TMPM13 := STS_ARRAYFAULT + __TMPM20
STS_ARRAYFAULT := __TMPM13
_GOTO __LAB10
@@ -205,6 +248,7 @@ _PUSH_PAR TEMP_ARRAYFAULT
_PUSH_PAR __CDINT00000008
__TMPB1 := _CALL __ANARBIT
_IF _NOT __TMPB1 _GOTO __LAB18
_STEP 2 0 74
__TMPM13 := STS_ARRAYFAULT + __TMPM21
STS_ARRAYFAULT := __TMPM13
_GOTO __LAB10
@@ -213,6 +257,7 @@ _PUSH_PAR TEMP_ARRAYFAULT
_PUSH_PAR __CDINT00000009
__TMPB1 := _CALL __ANARBIT
_IF _NOT __TMPB1 _GOTO __LAB19
_STEP 2 0 76
__TMPM13 := STS_ARRAYFAULT + __TMPM22
STS_ARRAYFAULT := __TMPM13
_GOTO __LAB10
@@ -221,6 +266,7 @@ _PUSH_PAR TEMP_ARRAYFAULT
_PUSH_PAR __CDINT0000000A
__TMPB1 := _CALL __ANARBIT
_IF _NOT __TMPB1 _GOTO __LAB1a
_STEP 2 0 78
__TMPM13 := STS_ARRAYFAULT + __TMPM23
STS_ARRAYFAULT := __TMPM13
_GOTO __LAB10
@@ -229,11 +275,13 @@ _PUSH_PAR TEMP_ARRAYFAULT
_PUSH_PAR __CDINT0000000B
__TMPB1 := _CALL __ANARBIT
_IF _NOT __TMPB1 _GOTO __LAB1b
_STEP 2 0 80
__TMPM13 := STS_ARRAYFAULT + __TMPM24
STS_ARRAYFAULT := __TMPM13
_GOTO __LAB10
__LAB1b :
__LAB10 :
_STEP 2 0 83
_PUSH_PAR STS_ARRAYFAULT
__TMPI1 := _CALL MLEN
__TMPI1 := __TMPI1 - __CDINT00000002
@@ -242,9 +290,11 @@ _PUSH_PAR __TMPI1
__TMPM13 := _CALL RIGHT
STS_ARRAYFAULT := __TMPM13
__LABe :
_STEP 2 0 87
__TMPB1 := MBS_SOLARPANEL_MSG [ __CDINT0000000D ]
__TMPB1 := _NOT __TMPB1
__TMPB__TON__IN := __TMPB1
__FBL_RET := _PUSHCALLFB TON MODBUSERRORTIMER
_STEP 2 0 88
__TMPB1 := MODBUSERRORTIMER [ __CDINT00000004 ]
STS_SOLARMODBUSOK := __TMPB1

View File

@@ -0,0 +1,52 @@
50
0, 1
26, 6
34, 7
42, 9
50, 10
58, 11
66, 12
74, 13
168, 15
182, 16
200, 17
218, 18
236, 19
254, 20
272, 21
306, 22
340, 23
360, 24
384, 30
398, 31
412, 32
426, 33
454, 35
482, 37
510, 39
538, 41
566, 43
594, 45
622, 47
636, 49
646, 53
660, 54
674, 56
680, 57
694, 58
710, 59
724, 60
754, 62
784, 64
814, 66
844, 68
874, 70
904, 72
934, 74
964, 76
994, 78
1024, 80
1036, 83
1072, 87
1098, 88

View File

@@ -0,0 +1,112 @@
<?xml version="1.0" encoding="utf-8"?>
<Pou FileVersion="200.00.005" Name="SolarPanelMb" ElementGuid="24745dc1-7289-46d4-939f-92610f2b16b5" Comment="" SingleTextLine="" Language="ST" Localization="Prj" GenDebugInfo="false" UseResPassword="true" GenerateSymbMon="true" Is1499="false" CustomFbd="0" GroupName="(User defined)">
<Program />
<LocalVars>
<Variable Name="mbs_SolarPanel_MSG" Comment="" Address="" Alias="" StringSize="0" DataType="MSG_MODBUS" InitialValue="2(),,,,0" Modifier="NonRetain" Kind="Var" AccessRights="ReadWrite" RetainFlags="" CommentFields="" Attributes="0" GroupName="" />
<Variable Name="mbs_SolarPanel_LocalCfg" Comment="" Address="" Alias="" StringSize="0" DataType="MODBUSLOCPARA" InitialValue="" Modifier="NonRetain" Kind="Var" AccessRights="ReadWrite" RetainFlags="" CommentFields="" Attributes="0" GroupName="" />
<Variable Name="mbs_SolarPanel_TargetCfg" Comment="" Address="" Alias="" StringSize="0" DataType="MODBUSTARPARA" InitialValue="" Modifier="NonRetain" Kind="Var" AccessRights="ReadWrite" RetainFlags="" CommentFields="" Attributes="0" GroupName="" />
<Variable Name="mbs_SolarPanel_Data" Comment="" Address="" Alias="" StringSize="0" DataType="MODBUSLOCADDR" InitialValue="" Modifier="NonRetain" Kind="Var" AccessRights="ReadWrite" RetainFlags="" CommentFields="" Attributes="0" GroupName="" />
<Variable Name="ModbusTimer" Comment="" Address="" Alias="" StringSize="0" DataType="TON" InitialValue="" Modifier="NonRetain" Kind="Var" AccessRights="ReadWrite" RetainFlags="" CommentFields="" Attributes="0" GroupName="" />
<Variable Name="temp_ChargeState" Comment="" Address="" Alias="" StringSize="0" DataType="UINT" InitialValue="" Modifier="NonRetain" Kind="Var" AccessRights="ReadWrite" RetainFlags="" CommentFields="" Attributes="0" GroupName="" />
<Variable Name="temp_ArrayFault" Comment="" Address="" Alias="" StringSize="0" DataType="UINT" InitialValue="" Modifier="NonRetain" Kind="Var" AccessRights="ReadWrite" RetainFlags="" CommentFields="" Attributes="0" GroupName="" />
<Variable Name="READ_CMD" Comment="" Address="" Alias="" StringSize="0" DataType="USINT" InitialValue="4" Modifier="Retain" Kind="Var" AccessRights="ReadWrite" RetainFlags="" CommentFields="" Attributes="0" GroupName="" />
<Variable Name="mbs_TriggerType" Comment="" Address="" Alias="" StringSize="0" DataType="USINT" InitialValue="1" Modifier="Retain" Kind="Var" AccessRights="ReadWrite" RetainFlags="" CommentFields="" Attributes="0" GroupName="" />
<Variable Name="mbs_Cancel" Comment="" Address="" Alias="" StringSize="0" DataType="BOOL" InitialValue="" Modifier="NonRetain" Kind="Var" AccessRights="ReadWrite" RetainFlags="" CommentFields="" Attributes="0" GroupName="" />
<Variable Name="ModbusErrorTimer" Comment="" Address="" Alias="" StringSize="0" DataType="TON" InitialValue="" Modifier="NonRetain" Kind="Var" AccessRights="ReadWrite" RetainFlags="" CommentFields="" Attributes="0" GroupName="" />
</LocalVars>
<PouBody><![CDATA[PROGRAM SolarPanelMb
ModbusTimer(NOT ModbusTimer.Q, ModbusScanRate);
(* ============== *)
(* FLOW RATE *)
(* ============== *)
mbs_SolarPanel_TargetCfg.Addr := cfg_SolarPanel_Register;
mbs_SolarPanel_TargetCfg.Node := cfg_SolarPanel_ModbusNode;
mbs_SolarPanel_LocalCfg.Channel := 2;
mbs_SolarPanel_LocalCfg.Cmd := READ_CMD;
mbs_SolarPanel_LocalCfg.TriggerType := mbs_TriggerType;
mbs_SolarPanel_LocalCfg.ElementCnt := 35;
mbs_SolarPanel_MSG(ModbusTimer.Q, mbs_Cancel, mbs_SolarPanel_LocalCfg, mbs_SolarPanel_TargetCfg, mbs_SolarPanel_Data);
IF mbs_SolarPanel_MSG.Q THEN
val_SolarArrayCurrent := WordToFloat16(mbs_SolarPanel_Data[18]);
val_SolarBatteryTerminalVoltage := WordToFloat16(mbs_SolarPanel_Data[19]);
val_SolarArrayVoltage := WordToFloat16(mbs_SolarPanel_Data[20]);
val_SolarLoadVoltage := WordToFloat16(mbs_SolarPanel_Data[21]);
val_SolarLoadCurrent := WordToFloat16(mbs_SolarPanel_Data[23]);
val_SolarBatteryTemperature := WordToFloat16(mbs_SolarPanel_Data[28]) * 1.8 + 32.0;
val_SolarAmbientTemperature := WordToFloat16(mbs_SolarPanel_Data[29]) * 1.8 + 32.0;
temp_ChargeState := ANY_TO_UINT(mbs_SolarPanel_Data[34]);
temp_ArrayFault := ANY_TO_UINT(mbs_SolarPanel_Data[35]);
END_IF;
(* Map Charge State *)
IF temp_ChargeState = 0 THEN
sts_ChargeState := 'Start';
ELSIF temp_ChargeState = 1 THEN
sts_ChargeState := 'Night Check';
ELSIF temp_ChargeState = 2 THEN
sts_ChargeState := 'Disconnect';
ELSIF temp_ChargeState = 3 THEN
sts_ChargeState := 'Night';
ELSIF temp_ChargeState = 4 THEN
sts_ChargeState := 'Fault';
ELSIF temp_ChargeState = 5 THEN
sts_ChargeState := 'Bulk';
ELSIF temp_ChargeState = 6 THEN
sts_ChargeState := 'Absorption';
ELSIF temp_ChargeState = 7 THEN
sts_ChargeState := 'Float';
ELSIF temp_ChargeState = 8 THEN
sts_ChargeState := 'Equalize';
ELSE
sts_ChargeState := 'Unknown';
END_IF;
(* Map Array Fault *)
IF temp_ArrayFault = 0 THEN
sts_ArrayFault := 'OK';
ELSE
sts_ArrayFault := '';
IF temp_ArrayFault.0 THEN
sts_ArrayFault := sts_ArrayFault + ', Overcurrent Phase 1';
ELSIF temp_ArrayFault.1 THEN
sts_ArrayFault := sts_ArrayFault + ', FET(s) Shorted';
ELSIF temp_ArrayFault.2 THEN
sts_ArrayFault := sts_ArrayFault + ', Software Bug';
ELSIF temp_ArrayFault.3 THEN
sts_ArrayFault := sts_ArrayFault + ', Battery High Voltage Disconnect';
ELSIF temp_ArrayFault.4 THEN
sts_ArrayFault := sts_ArrayFault + ', Array High Voltage Disconnect';
ELSIF temp_ArrayFault.5 THEN
sts_ArrayFault := sts_ArrayFault + ', EEPROM Setting Edit (reset required)';
ELSIF temp_ArrayFault.6 THEN
sts_ArrayFault := sts_ArrayFault + ', RTS Shorted';
ELSIF temp_ArrayFault.7 THEN
sts_ArrayFault := sts_ArrayFault + ', RTS was valid, now disconnected';
ELSIF temp_ArrayFault.8 THEN
sts_ArrayFault := sts_ArrayFault + ', Local temp sensor failed';
ELSIF temp_ArrayFault.9 THEN
sts_ArrayFault := sts_ArrayFault + ', Battery Low Voltage Disconnect';
ELSIF temp_ArrayFault.10 THEN
sts_ArrayFault := sts_ArrayFault + ', DIP Switch Changed';
ELSIF temp_ArrayFault.11 THEN
sts_ArrayFault := sts_ArrayFault + ', Processor Supply Fault';
END_IF;
sts_ArrayFault := RIGHT(sts_ArrayFault, MLEN(sts_ArrayFault) - 2);
END_IF;
ModbusErrorTimer(NOT(mbs_SolarPanel_MSG.Error), ModbusErrorDuration);
sts_SolarModbusOK := ModbusErrorTimer.Q;
END_PROGRAM]]></PouBody>
<PouUIProperties>
<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>
</PouUIProperties>
</Pou>

View File

@@ -1,8 +1,11 @@
_STEP 2 0 1
__TMPB1 := WATCHDOG_INT = WATCHDOG_INT_PREV
__TMPB1 := _NOT __TMPB1
_IF _NOT __TMPB1 _GOTO __LAB1
_STEP 2 0 2
__TMPINT1 := WATCHDOG_INT - __CINT00000001
WATCHDOG_INT := __TMPINT1
_STEP 2 0 3
WATCHDOG_INT_PREV := WATCHDOG_INT
_GOTO __LAB2
__LAB1 :

View File

@@ -0,0 +1,5 @@
3
0, 1
20, 2
28, 3

View File

@@ -1,9 +1,12 @@
_STEP 2 0 1
_PUSH_PAR WORD1
__TMPUIN1 := _CALL ANY_TO_UINT
INPUT1 := __TMPUIN1
_STEP 2 0 2
_PUSH_PAR WORD2
__TMPUIN1 := _CALL ANY_TO_UINT
INPUT2 := __TMPUIN1
_STEP 2 0 4
_PUSH_PAR INPUT1
_PUSH_PAR __CDINT00000007
__TMPB1 := _CALL __ANARBIT
@@ -11,6 +14,7 @@ _PUSH_PAR __TMPB1
_PUSH_PAR TEMP_EXPONENT
_PUSH_PAR __DINT_NULL
__TMPN1 := _CALL __ANAWBIT
_STEP 2 0 5
_PUSH_PAR INPUT1
_PUSH_PAR __CDINT00000008
__TMPB1 := _CALL __ANARBIT
@@ -18,6 +22,7 @@ _PUSH_PAR __TMPB1
_PUSH_PAR TEMP_EXPONENT
_PUSH_PAR __CDINT00000001
__TMPN1 := _CALL __ANAWBIT
_STEP 2 0 6
_PUSH_PAR INPUT1
_PUSH_PAR __CDINT00000009
__TMPB1 := _CALL __ANARBIT
@@ -25,6 +30,7 @@ _PUSH_PAR __TMPB1
_PUSH_PAR TEMP_EXPONENT
_PUSH_PAR __CDINT00000002
__TMPN1 := _CALL __ANAWBIT
_STEP 2 0 7
_PUSH_PAR INPUT1
_PUSH_PAR __CDINT0000000A
__TMPB1 := _CALL __ANARBIT
@@ -32,6 +38,7 @@ _PUSH_PAR __TMPB1
_PUSH_PAR TEMP_EXPONENT
_PUSH_PAR __CDINT00000003
__TMPN1 := _CALL __ANAWBIT
_STEP 2 0 8
_PUSH_PAR INPUT1
_PUSH_PAR __CDINT0000000B
__TMPB1 := _CALL __ANARBIT
@@ -39,6 +46,7 @@ _PUSH_PAR __TMPB1
_PUSH_PAR TEMP_EXPONENT
_PUSH_PAR __CDINT00000004
__TMPN1 := _CALL __ANAWBIT
_STEP 2 0 9
_PUSH_PAR INPUT1
_PUSH_PAR __CDINT0000000C
__TMPB1 := _CALL __ANARBIT
@@ -46,6 +54,7 @@ _PUSH_PAR __TMPB1
_PUSH_PAR TEMP_EXPONENT
_PUSH_PAR __CDINT00000005
__TMPN1 := _CALL __ANAWBIT
_STEP 2 0 10
_PUSH_PAR INPUT1
_PUSH_PAR __CDINT0000000D
__TMPB1 := _CALL __ANARBIT
@@ -53,6 +62,7 @@ _PUSH_PAR __TMPB1
_PUSH_PAR TEMP_EXPONENT
_PUSH_PAR __CDINT00000006
__TMPN1 := _CALL __ANAWBIT
_STEP 2 0 11
_PUSH_PAR INPUT1
_PUSH_PAR __CDINT0000000E
__TMPB1 := _CALL __ANARBIT
@@ -60,10 +70,13 @@ _PUSH_PAR __TMPB1
_PUSH_PAR TEMP_EXPONENT
_PUSH_PAR __CDINT00000007
__TMPN1 := _CALL __ANAWBIT
_STEP 2 0 13
__TMPI1 := TEMP_EXPONENT - __CDINT0000007F
EXPONENT := __TMPI1
_STEP 2 0 15
__TMPI1 := - __CDINT00000017
INDEX_EXP := __TMPI1
_STEP 2 0 17
__LOOPTMPB1 := FALSE
INDEX := __CDINT00000001
__LAB5 :
@@ -78,6 +91,7 @@ __LAB2 :
__TMPB2 := INDEX < __CDINT00000017
_IF __TMPB2 _GOTO __LAB4
__LAB3 :
_STEP 2 0 18
__BOUNDCHK 23 1 INDEX
__TMPI1 := INDEX - __CDINT00000001
__TMPI1 := __TMPI1 * __CDINT00000004
@@ -85,8 +99,10 @@ _PUSH_PAR __TMPR1
_PUSH_PAR INDEX_EXP
__TMPR2 := _CALL EXPT
MANTISSA [ __TMPI1 ] := __TMPR2
_STEP 2 0 19
__TMPI1 := INDEX_EXP + __CDINT00000001
INDEX_EXP := __TMPI1
_STEP 2 0 20
__LOOPTMPB1 := TRUE
_GOTO __LAB5
__LAB6 :
@@ -94,260 +110,308 @@ __LOOPTMPB1 := FALSE
INDEX := INDEX + __CDINT00000001
_GOTO __LAB5
__LAB4 :
_STEP 2 0 22
MANTISSA_RESULT := __TMPR3
_STEP 2 0 24
_PUSH_PAR INPUT2
_PUSH_PAR __DINT_NULL
__TMPB3 := _CALL __ANARBIT
__TMPB3 := _NOT __TMPB3
_IF _NOT __TMPB3 _GOTO __LAB7
_STEP 2 0 25
__TMPI1 := __CDINT00000001 - __CDINT00000001
__TMPI1 := __TMPI1 * __CDINT00000004
MANTISSA [ __TMPI1 ] := __TMPR4
_GOTO __LAB8
__LAB7 :
__LAB8 :
_STEP 2 0 28
_PUSH_PAR INPUT2
_PUSH_PAR __CDINT00000001
__TMPB3 := _CALL __ANARBIT
__TMPB3 := _NOT __TMPB3
_IF _NOT __TMPB3 _GOTO __LAB9
_STEP 2 0 29
__TMPI1 := __CDINT00000002 - __CDINT00000001
__TMPI1 := __TMPI1 * __CDINT00000004
MANTISSA [ __TMPI1 ] := __TMPR4
_GOTO __LABa
__LAB9 :
__LABa :
_STEP 2 0 32
_PUSH_PAR INPUT2
_PUSH_PAR __CDINT00000002
__TMPB3 := _CALL __ANARBIT
__TMPB3 := _NOT __TMPB3
_IF _NOT __TMPB3 _GOTO __LABb
_STEP 2 0 33
__TMPI1 := __CDINT00000003 - __CDINT00000001
__TMPI1 := __TMPI1 * __CDINT00000004
MANTISSA [ __TMPI1 ] := __TMPR4
_GOTO __LABc
__LABb :
__LABc :
_STEP 2 0 36
_PUSH_PAR INPUT2
_PUSH_PAR __CDINT00000003
__TMPB3 := _CALL __ANARBIT
__TMPB3 := _NOT __TMPB3
_IF _NOT __TMPB3 _GOTO __LABd
_STEP 2 0 37
__TMPI1 := __CDINT00000004 - __CDINT00000001
__TMPI1 := __TMPI1 * __CDINT00000004
MANTISSA [ __TMPI1 ] := __TMPR4
_GOTO __LABe
__LABd :
__LABe :
_STEP 2 0 40
_PUSH_PAR INPUT2
_PUSH_PAR __CDINT00000004
__TMPB3 := _CALL __ANARBIT
__TMPB3 := _NOT __TMPB3
_IF _NOT __TMPB3 _GOTO __LABf
_STEP 2 0 41
__TMPI1 := __CDINT00000005 - __CDINT00000001
__TMPI1 := __TMPI1 * __CDINT00000004
MANTISSA [ __TMPI1 ] := __TMPR4
_GOTO __LAB10
__LABf :
__LAB10 :
_STEP 2 0 44
_PUSH_PAR INPUT2
_PUSH_PAR __CDINT00000005
__TMPB3 := _CALL __ANARBIT
__TMPB3 := _NOT __TMPB3
_IF _NOT __TMPB3 _GOTO __LAB11
_STEP 2 0 45
__TMPI1 := __CDINT00000006 - __CDINT00000001
__TMPI1 := __TMPI1 * __CDINT00000004
MANTISSA [ __TMPI1 ] := __TMPR4
_GOTO __LAB12
__LAB11 :
__LAB12 :
_STEP 2 0 48
_PUSH_PAR INPUT2
_PUSH_PAR __CDINT00000006
__TMPB3 := _CALL __ANARBIT
__TMPB3 := _NOT __TMPB3
_IF _NOT __TMPB3 _GOTO __LAB13
_STEP 2 0 49
__TMPI1 := __CDINT00000007 - __CDINT00000001
__TMPI1 := __TMPI1 * __CDINT00000004
MANTISSA [ __TMPI1 ] := __TMPR4
_GOTO __LAB14
__LAB13 :
__LAB14 :
_STEP 2 0 52
_PUSH_PAR INPUT2
_PUSH_PAR __CDINT00000007
__TMPB3 := _CALL __ANARBIT
__TMPB3 := _NOT __TMPB3
_IF _NOT __TMPB3 _GOTO __LAB15
_STEP 2 0 53
__TMPI1 := __CDINT00000008 - __CDINT00000001
__TMPI1 := __TMPI1 * __CDINT00000004
MANTISSA [ __TMPI1 ] := __TMPR4
_GOTO __LAB16
__LAB15 :
__LAB16 :
_STEP 2 0 56
_PUSH_PAR INPUT2
_PUSH_PAR __CDINT00000008
__TMPB3 := _CALL __ANARBIT
__TMPB3 := _NOT __TMPB3
_IF _NOT __TMPB3 _GOTO __LAB17
_STEP 2 0 57
__TMPI1 := __CDINT00000009 - __CDINT00000001
__TMPI1 := __TMPI1 * __CDINT00000004
MANTISSA [ __TMPI1 ] := __TMPR4
_GOTO __LAB18
__LAB17 :
__LAB18 :
_STEP 2 0 60
_PUSH_PAR INPUT2
_PUSH_PAR __CDINT00000009
__TMPB3 := _CALL __ANARBIT
__TMPB3 := _NOT __TMPB3
_IF _NOT __TMPB3 _GOTO __LAB19
_STEP 2 0 61
__TMPI1 := __CDINT0000000A - __CDINT00000001
__TMPI1 := __TMPI1 * __CDINT00000004
MANTISSA [ __TMPI1 ] := __TMPR4
_GOTO __LAB1a
__LAB19 :
__LAB1a :
_STEP 2 0 64
_PUSH_PAR INPUT2
_PUSH_PAR __CDINT0000000A
__TMPB3 := _CALL __ANARBIT
__TMPB3 := _NOT __TMPB3
_IF _NOT __TMPB3 _GOTO __LAB1b
_STEP 2 0 65
__TMPI1 := __CDINT0000000B - __CDINT00000001
__TMPI1 := __TMPI1 * __CDINT00000004
MANTISSA [ __TMPI1 ] := __TMPR4
_GOTO __LAB1c
__LAB1b :
__LAB1c :
_STEP 2 0 68
_PUSH_PAR INPUT2
_PUSH_PAR __CDINT0000000B
__TMPB3 := _CALL __ANARBIT
__TMPB3 := _NOT __TMPB3
_IF _NOT __TMPB3 _GOTO __LAB1d
_STEP 2 0 69
__TMPI1 := __CDINT0000000C - __CDINT00000001
__TMPI1 := __TMPI1 * __CDINT00000004
MANTISSA [ __TMPI1 ] := __TMPR4
_GOTO __LAB1e
__LAB1d :
__LAB1e :
_STEP 2 0 72
_PUSH_PAR INPUT2
_PUSH_PAR __CDINT0000000C
__TMPB3 := _CALL __ANARBIT
__TMPB3 := _NOT __TMPB3
_IF _NOT __TMPB3 _GOTO __LAB1f
_STEP 2 0 73
__TMPI1 := __CDINT0000000D - __CDINT00000001
__TMPI1 := __TMPI1 * __CDINT00000004
MANTISSA [ __TMPI1 ] := __TMPR4
_GOTO __LAB20
__LAB1f :
__LAB20 :
_STEP 2 0 76
_PUSH_PAR INPUT2
_PUSH_PAR __CDINT0000000D
__TMPB3 := _CALL __ANARBIT
__TMPB3 := _NOT __TMPB3
_IF _NOT __TMPB3 _GOTO __LAB21
_STEP 2 0 77
__TMPI1 := __CDINT0000000E - __CDINT00000001
__TMPI1 := __TMPI1 * __CDINT00000004
MANTISSA [ __TMPI1 ] := __TMPR4
_GOTO __LAB22
__LAB21 :
__LAB22 :
_STEP 2 0 80
_PUSH_PAR INPUT2
_PUSH_PAR __CDINT0000000E
__TMPB3 := _CALL __ANARBIT
__TMPB3 := _NOT __TMPB3
_IF _NOT __TMPB3 _GOTO __LAB23
_STEP 2 0 81
__TMPI1 := __CDINT0000000F - __CDINT00000001
__TMPI1 := __TMPI1 * __CDINT00000004
MANTISSA [ __TMPI1 ] := __TMPR4
_GOTO __LAB24
__LAB23 :
__LAB24 :
_STEP 2 0 84
_PUSH_PAR INPUT2
_PUSH_PAR __CDINT0000000F
__TMPB3 := _CALL __ANARBIT
__TMPB3 := _NOT __TMPB3
_IF _NOT __TMPB3 _GOTO __LAB25
_STEP 2 0 85
__TMPI1 := __CDINT00000010 - __CDINT00000001
__TMPI1 := __TMPI1 * __CDINT00000004
MANTISSA [ __TMPI1 ] := __TMPR4
_GOTO __LAB26
__LAB25 :
__LAB26 :
_STEP 2 0 88
_PUSH_PAR INPUT1
_PUSH_PAR __DINT_NULL
__TMPB3 := _CALL __ANARBIT
__TMPB3 := _NOT __TMPB3
_IF _NOT __TMPB3 _GOTO __LAB27
_STEP 2 0 89
__TMPI1 := __CDINT00000011 - __CDINT00000001
__TMPI1 := __TMPI1 * __CDINT00000004
MANTISSA [ __TMPI1 ] := __TMPR4
_GOTO __LAB28
__LAB27 :
__LAB28 :
_STEP 2 0 92
_PUSH_PAR INPUT1
_PUSH_PAR __CDINT00000001
__TMPB3 := _CALL __ANARBIT
__TMPB3 := _NOT __TMPB3
_IF _NOT __TMPB3 _GOTO __LAB29
_STEP 2 0 93
__TMPI1 := __CDINT00000012 - __CDINT00000001
__TMPI1 := __TMPI1 * __CDINT00000004
MANTISSA [ __TMPI1 ] := __TMPR4
_GOTO __LAB2a
__LAB29 :
__LAB2a :
_STEP 2 0 96
_PUSH_PAR INPUT1
_PUSH_PAR __CDINT00000002
__TMPB3 := _CALL __ANARBIT
__TMPB3 := _NOT __TMPB3
_IF _NOT __TMPB3 _GOTO __LAB2b
_STEP 2 0 97
__TMPI1 := __CDINT00000013 - __CDINT00000001
__TMPI1 := __TMPI1 * __CDINT00000004
MANTISSA [ __TMPI1 ] := __TMPR4
_GOTO __LAB2c
__LAB2b :
__LAB2c :
_STEP 2 0 100
_PUSH_PAR INPUT1
_PUSH_PAR __CDINT00000003
__TMPB3 := _CALL __ANARBIT
__TMPB3 := _NOT __TMPB3
_IF _NOT __TMPB3 _GOTO __LAB2d
_STEP 2 0 101
__TMPI1 := __CDINT00000014 - __CDINT00000001
__TMPI1 := __TMPI1 * __CDINT00000004
MANTISSA [ __TMPI1 ] := __TMPR4
_GOTO __LAB2e
__LAB2d :
__LAB2e :
_STEP 2 0 104
_PUSH_PAR INPUT1
_PUSH_PAR __CDINT00000004
__TMPB3 := _CALL __ANARBIT
__TMPB3 := _NOT __TMPB3
_IF _NOT __TMPB3 _GOTO __LAB2f
_STEP 2 0 105
__TMPI1 := __CDINT00000015 - __CDINT00000001
__TMPI1 := __TMPI1 * __CDINT00000004
MANTISSA [ __TMPI1 ] := __TMPR4
_GOTO __LAB30
__LAB2f :
__LAB30 :
_STEP 2 0 108
_PUSH_PAR INPUT1
_PUSH_PAR __CDINT00000005
__TMPB3 := _CALL __ANARBIT
__TMPB3 := _NOT __TMPB3
_IF _NOT __TMPB3 _GOTO __LAB31
_STEP 2 0 109
__TMPI1 := __CDINT00000016 - __CDINT00000001
__TMPI1 := __TMPI1 * __CDINT00000004
MANTISSA [ __TMPI1 ] := __TMPR4
_GOTO __LAB32
__LAB31 :
__LAB32 :
_STEP 2 0 112
_PUSH_PAR INPUT1
_PUSH_PAR __CDINT00000006
__TMPB3 := _CALL __ANARBIT
__TMPB3 := _NOT __TMPB3
_IF _NOT __TMPB3 _GOTO __LAB33
_STEP 2 0 113
__TMPI1 := __CDINT00000017 - __CDINT00000001
__TMPI1 := __TMPI1 * __CDINT00000004
MANTISSA [ __TMPI1 ] := __TMPR4
_GOTO __LAB34
__LAB33 :
__LAB34 :
_STEP 2 0 117
__LOOPTMPB2 := FALSE
INDEX_ADD := __CDINT00000001
__LAB39 :
@@ -362,12 +426,14 @@ __LAB36 :
__TMPB4 := INDEX_ADD < __CDINT00000017
_IF __TMPB4 _GOTO __LAB38
__LAB37 :
_STEP 2 0 118
__BOUNDCHK 23 1 INDEX_ADD
__TMPI1 := INDEX_ADD - __CDINT00000001
__TMPI1 := __TMPI1 * __CDINT00000004
__TMPR2 := MANTISSA [ __TMPI1 ]
__TMPR5 := MANTISSA_RESULT + __TMPR2
MANTISSA_RESULT := __TMPR5
_STEP 2 0 119
__LOOPTMPB2 := TRUE
_GOTO __LAB39
__LAB3a :
@@ -375,22 +441,29 @@ __LOOPTMPB2 := FALSE
INDEX_ADD := INDEX_ADD + __CDINT00000001
_GOTO __LAB39
__LAB38 :
_STEP 2 0 122
_PUSH_PAR INPUT1
_PUSH_PAR __CDINT0000000F
__TMPB5 := _CALL __ANARBIT
_IF _NOT __TMPB5 _GOTO __LAB3b
_STEP 2 0 123
__TMPR2 := - __TMPR3
OUTPUT_SIGN := __TMPR2
_GOTO __LAB3c
__LAB3b :
_STEP 2 0 125
OUTPUT_SIGN := __TMPR3
__LAB3c :
_STEP 2 0 130
OUTPUT_EXPT := EXPONENT
_STEP 2 0 131
OUTPUT_MANTISSA := MANTISSA_RESULT
_STEP 2 0 133
_PUSH_PAR __TMPR1
_PUSH_PAR EXPONENT
__TMPR2 := _CALL EXPT
EXPONENT_REAL := __TMPR2
_STEP 2 0 135
__TMPR2 := OUTPUT_SIGN * EXPONENT_REAL
__TMPR2 := __TMPR2 * MANTISSA_RESULT
WORDSTOREAL := __TMPR2

View File

@@ -0,0 +1,75 @@
73
12, 1
24, 2
36, 4
52, 5
68, 6
84, 7
100, 8
116, 9
132, 10
148, 11
164, 13
172, 15
178, 17
250, 18
296, 19
304, 20
340, 22
346, 24
366, 25
378, 28
398, 29
410, 32
430, 33
442, 36
462, 37
474, 40
494, 41
506, 44
526, 45
538, 48
558, 49
570, 52
590, 53
602, 56
622, 57
634, 60
654, 61
666, 64
686, 65
698, 68
718, 69
730, 72
750, 73
762, 76
782, 77
794, 80
814, 81
826, 84
846, 85
858, 88
878, 89
890, 92
910, 93
922, 96
942, 97
954, 100
974, 101
986, 104
1006, 105
1018, 108
1038, 109
1050, 112
1070, 113
1082, 117
1154, 118
1194, 119
1230, 122
1244, 123
1258, 125
1268, 130
1274, 131
1280, 133
1294, 135

View File

@@ -1,20 +1,27 @@
_STEP 2 0 12
_PUSH_PAR INP_INT
__TMPUIN1 := _CALL ANY_TO_UINT
_PUSH_PAR __TMPUIN1
__TMPUIN2 := _CALL REVERSEUINT
REVERSEDINPUT := __TMPUIN2
_STEP 2 0 14
SIGN := __TMPR1
_STEP 2 0 15
FRACTION := __TMPR2
_STEP 2 0 16
EXPONENT := __TMPR2
_STEP 2 0 18
_PUSH_PAR REVERSEDINPUT
_PUSH_PAR __DINT_NULL
__TMPB1 := _CALL __ANARBIT
_IF _NOT __TMPB1 _GOTO __LAB1
_STEP 2 0 19
__TMPR3 := - __TMPR1
SIGN := __TMPR3
_GOTO __LAB2
__LAB1 :
__LAB2 :
_STEP 2 0 23
_PUSH_PAR REVERSEDINPUT
_PUSH_PAR __CDINT00000005
__TMPB1 := _CALL __ANARBIT
@@ -26,6 +33,7 @@ __TMPR5 := _CALL EXPT
__TMPR3 := __TMPR3 * __TMPR5
__TMPR6 := EXPONENT + __TMPR3
EXPONENT := __TMPR6
_STEP 2 0 24
_PUSH_PAR REVERSEDINPUT
_PUSH_PAR __CDINT00000004
__TMPB1 := _CALL __ANARBIT
@@ -37,6 +45,7 @@ __TMPR5 := _CALL EXPT
__TMPR3 := __TMPR3 * __TMPR5
__TMPR6 := EXPONENT + __TMPR3
EXPONENT := __TMPR6
_STEP 2 0 25
_PUSH_PAR REVERSEDINPUT
_PUSH_PAR __CDINT00000003
__TMPB1 := _CALL __ANARBIT
@@ -48,6 +57,7 @@ __TMPR5 := _CALL EXPT
__TMPR3 := __TMPR3 * __TMPR5
__TMPR6 := EXPONENT + __TMPR3
EXPONENT := __TMPR6
_STEP 2 0 26
_PUSH_PAR REVERSEDINPUT
_PUSH_PAR __CDINT00000002
__TMPB1 := _CALL __ANARBIT
@@ -59,6 +69,7 @@ __TMPR5 := _CALL EXPT
__TMPR3 := __TMPR3 * __TMPR5
__TMPR6 := EXPONENT + __TMPR3
EXPONENT := __TMPR6
_STEP 2 0 27
_PUSH_PAR REVERSEDINPUT
_PUSH_PAR __CDINT00000001
__TMPB1 := _CALL __ANARBIT
@@ -70,6 +81,7 @@ __TMPR5 := _CALL EXPT
__TMPR3 := __TMPR3 * __TMPR5
__TMPR6 := EXPONENT + __TMPR3
EXPONENT := __TMPR6
_STEP 2 0 30
_PUSH_PAR REVERSEDINPUT
_PUSH_PAR __CDINT0000000F
__TMPB1 := _CALL __ANARBIT
@@ -81,6 +93,7 @@ __TMPR5 := _CALL EXPT
__TMPR3 := __TMPR3 * __TMPR5
__TMPR6 := FRACTION + __TMPR3
FRACTION := __TMPR6
_STEP 2 0 31
_PUSH_PAR REVERSEDINPUT
_PUSH_PAR __CDINT0000000E
__TMPB1 := _CALL __ANARBIT
@@ -92,6 +105,7 @@ __TMPR5 := _CALL EXPT
__TMPR3 := __TMPR3 * __TMPR5
__TMPR6 := FRACTION + __TMPR3
FRACTION := __TMPR6
_STEP 2 0 32
_PUSH_PAR REVERSEDINPUT
_PUSH_PAR __CDINT0000000D
__TMPB1 := _CALL __ANARBIT
@@ -103,6 +117,7 @@ __TMPR5 := _CALL EXPT
__TMPR3 := __TMPR3 * __TMPR5
__TMPR6 := FRACTION + __TMPR3
FRACTION := __TMPR6
_STEP 2 0 33
_PUSH_PAR REVERSEDINPUT
_PUSH_PAR __CDINT0000000C
__TMPB1 := _CALL __ANARBIT
@@ -114,6 +129,7 @@ __TMPR5 := _CALL EXPT
__TMPR3 := __TMPR3 * __TMPR5
__TMPR6 := FRACTION + __TMPR3
FRACTION := __TMPR6
_STEP 2 0 34
_PUSH_PAR REVERSEDINPUT
_PUSH_PAR __CDINT0000000B
__TMPB1 := _CALL __ANARBIT
@@ -125,6 +141,7 @@ __TMPR5 := _CALL EXPT
__TMPR3 := __TMPR3 * __TMPR5
__TMPR6 := FRACTION + __TMPR3
FRACTION := __TMPR6
_STEP 2 0 35
_PUSH_PAR REVERSEDINPUT
_PUSH_PAR __CDINT0000000A
__TMPB1 := _CALL __ANARBIT
@@ -136,6 +153,7 @@ __TMPR5 := _CALL EXPT
__TMPR3 := __TMPR3 * __TMPR5
__TMPR6 := FRACTION + __TMPR3
FRACTION := __TMPR6
_STEP 2 0 36
_PUSH_PAR REVERSEDINPUT
_PUSH_PAR __CDINT00000009
__TMPB1 := _CALL __ANARBIT
@@ -147,6 +165,7 @@ __TMPR5 := _CALL EXPT
__TMPR3 := __TMPR3 * __TMPR5
__TMPR6 := FRACTION + __TMPR3
FRACTION := __TMPR6
_STEP 2 0 37
_PUSH_PAR REVERSEDINPUT
_PUSH_PAR __CDINT00000008
__TMPB1 := _CALL __ANARBIT
@@ -158,6 +177,7 @@ __TMPR5 := _CALL EXPT
__TMPR3 := __TMPR3 * __TMPR5
__TMPR6 := FRACTION + __TMPR3
FRACTION := __TMPR6
_STEP 2 0 38
_PUSH_PAR REVERSEDINPUT
_PUSH_PAR __CDINT00000007
__TMPB1 := _CALL __ANARBIT
@@ -169,6 +189,7 @@ __TMPR5 := _CALL EXPT
__TMPR3 := __TMPR3 * __TMPR5
__TMPR6 := FRACTION + __TMPR3
FRACTION := __TMPR6
_STEP 2 0 39
_PUSH_PAR REVERSEDINPUT
_PUSH_PAR __CDINT00000006
__TMPB1 := _CALL __ANARBIT
@@ -180,8 +201,10 @@ __TMPR5 := _CALL EXPT
__TMPR3 := __TMPR3 * __TMPR5
__TMPR6 := FRACTION + __TMPR3
FRACTION := __TMPR6
_STEP 2 0 42
__TMPB1 := EXPONENT = __TMPR2
_IF _NOT __TMPB1 _GOTO __LAB3
_STEP 2 0 43
__TMPI1 := - __CDINT0000000E
_PUSH_PAR __TMPR4
_PUSH_PAR __TMPI1
@@ -195,17 +218,22 @@ __TMPR5 := __TMPR5 / __TMPR6
WORDTOFLOAT16 := __TMPR5
_GOTO __LAB4
__LAB3 :
_STEP 2 0 44
__TMPB1 := EXPONENT = __TMPR7
_IF _NOT __TMPB1 _GOTO __LAB5
_STEP 2 0 45
__TMPB2 := FRACTION = __TMPR2
_IF _NOT __TMPB2 _GOTO __LAB6
_STEP 2 0 47
WORDTOFLOAT16 := __TMPR2
_GOTO __LAB7
__LAB6 :
_STEP 2 0 50
WORDTOFLOAT16 := __TMPR2
__LAB7 :
_GOTO __LAB4
__LAB5 :
_STEP 2 0 53
__TMPR3 := EXPONENT - __TMPR8
_PUSH_PAR __TMPR4
_PUSH_PAR __TMPR3

View File

@@ -0,0 +1,30 @@
28
6, 12
28, 14
34, 15
40, 16
46, 18
60, 19
70, 23
120, 24
170, 25
220, 26
270, 27
320, 30
370, 31
420, 32
470, 33
520, 34
570, 35
620, 36
670, 37
720, 38
770, 39
820, 42
834, 43
900, 44
914, 45
928, 47
942, 50
960, 53

View File

@@ -0,0 +1,16 @@
<?xml version="1.0" encoding="utf-8"?>
<Pou FileVersion="200.00.005" Name="Watchdog" ElementGuid="d9cd1c27-0f51-4f96-b960-a629f4aa554a" Comment="" SingleTextLine="" Language="ST" Localization="Prj" GenDebugInfo="false" UseResPassword="true" GenerateSymbMon="true" Is1499="false" CustomFbd="0" GroupName="(User defined)">
<Program />
<LocalVars />
<PouBody><![CDATA[PROGRAM Watchdog
IF NOT (watchdog_INT = watchdog_INT_prev) THEN
watchdog_INT := watchdog_INT - 1;
watchdog_INT_prev := watchdog_INT;
END_IF;
END_PROGRAM]]></PouBody>
<PouUIProperties>
<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>
</PouUIProperties>
</Pou>

View File

@@ -0,0 +1,73 @@
<?xml version="1.0" encoding="utf-8"?>
<Pou FileVersion="200.00.005" Name="WordToFloat16" ElementGuid="584fd256-dfd3-4908-ba27-015faa1ddf1a" Comment="" SingleTextLine="" Language="ST" Localization="Prj" GenDebugInfo="false" UseResPassword="true" GenerateSymbMon="true" Is1499="false" CustomFbd="0" GroupName="(User defined)">
<Function IdentifierNb="0" Keyword="" ConvDirection="NoConversion" DataType="DINT" />
<LocalVars>
<Variable Name="WordToFloat16" Comment="" Address="" Alias="" StringSize="0" DataType="REAL" InitialValue="" Modifier="Constant" Kind="VarOutput" AccessRights="Write" Direction="Output" CommentFields="" Attributes="23825" />
<Variable Name="inp_Int" Comment="" Address="" Alias="" StringSize="0" DataType="WORD" InitialValue="" Modifier="Constant" Kind="VarInput" AccessRights="Read" Direction="Input" CommentFields="" Attributes="0" />
<Variable Name="reversedInput" Comment="" Address="" Alias="" StringSize="0" DataType="UINT" InitialValue="" Modifier="NonRetain" Kind="Var" AccessRights="ReadWrite" RetainFlags="" CommentFields="" Attributes="0" GroupName="" />
<Variable Name="sign" Comment="" Address="" Alias="" StringSize="0" DataType="REAL" InitialValue="" Modifier="NonRetain" Kind="Var" AccessRights="ReadWrite" RetainFlags="" CommentFields="" Attributes="0" GroupName="" />
<Variable Name="exponent" Comment="" Address="" Alias="" StringSize="0" DataType="REAL" InitialValue="" Modifier="NonRetain" Kind="Var" AccessRights="ReadWrite" RetainFlags="" CommentFields="" Attributes="0" GroupName="" />
<Variable Name="fraction" Comment="" Address="" Alias="" StringSize="0" DataType="REAL" InitialValue="" Modifier="NonRetain" Kind="Var" AccessRights="ReadWrite" RetainFlags="" CommentFields="" Attributes="0" GroupName="" />
</LocalVars>
<PouBody><![CDATA[FUNCTION WordToFloat16
(* WORD TO FLOAT 16 *)
(* ================================ *)
(* Developed by: Patrick McDonagh *)
(* January 30, 2018 *)
(* ================================ *)
(* Converts a WORD data type, *)
(* typically from a modbus data *)
(* source, into a IEEE-754 Binary16 *)
(* (also known as Float16) value. *)
(* Returns a REAL data type. *)
reversedInput := ReverseUINT(ANY_TO_UINT(inp_Int));
sign := 1.0;
fraction := 0.0;
exponent := 0.0;
IF reversedInput.0 THEN
sign := -1.0;
END_IF;
(* Calculate the exponent *)
exponent := exponent + ANY_TO_REAL(reversedInput.5) * EXPT(2.0, 0);
exponent := exponent + ANY_TO_REAL(reversedInput.4) * EXPT(2.0, 1);
exponent := exponent + ANY_TO_REAL(reversedInput.3) * EXPT(2.0, 2);
exponent := exponent + ANY_TO_REAL(reversedInput.2) * EXPT(2.0, 3);
exponent := exponent + ANY_TO_REAL(reversedInput.1) * EXPT(2.0, 4);
(* Calculate the fraction *)
fraction := fraction + ANY_TO_REAL(reversedInput.15) * EXPT(2.0, 0);
fraction := fraction + ANY_TO_REAL(reversedInput.14) * EXPT(2.0, 1);
fraction := fraction + ANY_TO_REAL(reversedInput.13) * EXPT(2.0, 2);
fraction := fraction + ANY_TO_REAL(reversedInput.12) * EXPT(2.0, 3);
fraction := fraction + ANY_TO_REAL(reversedInput.11) * EXPT(2.0, 4);
fraction := fraction + ANY_TO_REAL(reversedInput.10) * EXPT(2.0, 5);
fraction := fraction + ANY_TO_REAL(reversedInput.9) * EXPT(2.0, 6);
fraction := fraction + ANY_TO_REAL(reversedInput.8) * EXPT(2.0, 7);
fraction := fraction + ANY_TO_REAL(reversedInput.7) * EXPT(2.0, 8);
fraction := fraction + ANY_TO_REAL(reversedInput.6) * EXPT(2.0, 9);
IF exponent = 0.0 THEN
WordToFloat16 := sign * EXPT(2.0, -14) * fraction / EXPT(2.0, 10);
ELSIF exponent = 31.0 THEN
IF fraction = 0.0 THEN
(* THIS SHOULD RETURN sign * infinity *)
WordToFloat16 := 0.0;
ELSE
(*THIS SHOULD RETURN NaN *)
WordToFloat16 := 0.0;
END_IF;
ELSE
WordToFloat16 := sign * POW(2.0, exponent - 15.0) * (1.0 + fraction / EXPT(2.0, 10));
END_IF;
END_FUNCTION]]></PouBody>
<PouUIProperties>
<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>
</PouUIProperties>
</Pou>

View File

@@ -0,0 +1,168 @@
<?xml version="1.0" encoding="utf-8"?>
<Pou FileVersion="200.00.005" Name="WordsToReal" ElementGuid="1f8f27de-e718-45df-9429-35b1463a9e4e" Comment="" SingleTextLine="Converts 2 integer words into a REAL value" Language="ST" Localization="Prj" GenDebugInfo="false" UseResPassword="true" GenerateSymbMon="true" Is1499="false" CustomFbd="0" GroupName="(User defined)">
<Function IdentifierNb="0" Keyword="" ConvDirection="NoConversion" DataType="DINT" />
<LocalVars>
<Variable Name="WordsToReal" Comment="" Address="" Alias="" StringSize="0" DataType="REAL" InitialValue="" Modifier="Constant" Kind="VarOutput" AccessRights="Write" Direction="Output" CommentFields="" Attributes="23825" />
<Variable Name="Word1" Comment="" Address="" Alias="" StringSize="0" DataType="WORD" InitialValue="" Modifier="Constant" Kind="VarInput" AccessRights="Read" Direction="Input" CommentFields="" Attributes="0" />
<Variable Name="Word2" Comment="" Address="" Alias="" StringSize="0" DataType="WORD" InitialValue="" Modifier="Constant" Kind="VarInput" AccessRights="Read" Direction="Input" CommentFields="" Attributes="0" />
<Variable Name="Output_sign" Comment="" Address="" Alias="" StringSize="0" DataType="REAL" InitialValue="" Modifier="NonRetain" Kind="Var" AccessRights="ReadWrite" RetainFlags="" CommentFields="" Attributes="0" GroupName="" />
<Variable Name="Output_expt" Comment="" Address="" Alias="" StringSize="0" DataType="DINT" InitialValue="" Modifier="NonRetain" Kind="Var" AccessRights="ReadWrite" RetainFlags="" CommentFields="" Attributes="0" GroupName="" />
<Variable Name="Output_mantissa" Comment="" Address="" Alias="" StringSize="0" DataType="REAL" InitialValue="" Modifier="NonRetain" Kind="Var" AccessRights="ReadWrite" RetainFlags="" CommentFields="" Attributes="0" GroupName="" />
<Variable Name="temp_exponent" Comment="" Address="" Alias="" StringSize="0" DataType="DINT" InitialValue="" Modifier="NonRetain" Kind="Var" AccessRights="ReadWrite" RetainFlags="" CommentFields="" Attributes="0" GroupName="" />
<Variable Name="exponent" Comment="" Address="" Alias="" StringSize="0" DataType="DINT" InitialValue="" Modifier="NonRetain" Kind="Var" AccessRights="ReadWrite" RetainFlags="" CommentFields="" Attributes="0" GroupName="" />
<Variable Name="mantissa" Comment="" Address="" Alias="" StringSize="0" DataType="REAL" InitialValue="" Modifier="NonRetain" Kind="Var" AccessRights="ReadWrite" RetainFlags="" CommentFields="" Attributes="0" GroupName="">
<Dimension Lower="1" Upper="23" />
</Variable>
<Variable Name="index" Comment="" Address="" Alias="" StringSize="0" DataType="DINT" InitialValue="" Modifier="NonRetain" Kind="Var" AccessRights="ReadWrite" RetainFlags="" CommentFields="" Attributes="0" GroupName="" />
<Variable Name="index_exp" Comment="" Address="" Alias="" StringSize="0" DataType="DINT" InitialValue="" Modifier="NonRetain" Kind="Var" AccessRights="ReadWrite" RetainFlags="" CommentFields="" Attributes="0" GroupName="" />
<Variable Name="index_add" Comment="" Address="" Alias="" StringSize="0" DataType="DINT" InitialValue="" Modifier="NonRetain" Kind="Var" AccessRights="ReadWrite" RetainFlags="" CommentFields="" Attributes="0" GroupName="" />
<Variable Name="mantissa_result" Comment="" Address="" Alias="" StringSize="0" DataType="REAL" InitialValue="" Modifier="NonRetain" Kind="Var" AccessRights="ReadWrite" RetainFlags="" CommentFields="" Attributes="0" GroupName="" />
<Variable Name="exponent_real" Comment="" Address="" Alias="" StringSize="0" DataType="REAL" InitialValue="" Modifier="NonRetain" Kind="Var" AccessRights="ReadWrite" RetainFlags="" CommentFields="" Attributes="0" GroupName="" />
<Variable Name="Input1" Comment="" Address="" Alias="" StringSize="0" DataType="UINT" InitialValue="" Modifier="NonRetain" Kind="Var" AccessRights="ReadWrite" RetainFlags="" CommentFields="" Attributes="0" GroupName="" />
<Variable Name="Input2" Comment="" Address="" Alias="" StringSize="0" DataType="UINT" InitialValue="" Modifier="NonRetain" Kind="Var" AccessRights="ReadWrite" RetainFlags="" CommentFields="" Attributes="0" GroupName="" />
</LocalVars>
<PouBody><![CDATA[FUNCTION WordsToReal
Input1:=ANY_TO_UINT(Word1);
Input2:=ANY_TO_UINT(Word2);
temp_exponent.0:=Input1.7;
temp_exponent.1:=Input1.8;
temp_exponent.2:=Input1.9;
temp_exponent.3:=Input1.10;
temp_exponent.4:=Input1.11;
temp_exponent.5:=Input1.12;
temp_exponent.6:=Input1.13;
temp_exponent.7:=Input1.14;
exponent:=temp_exponent-127;
index_exp:=-23;
FOR index := 1 TO 23 BY 1 DO
mantissa[index]:=EXPT(2.0,index_exp);
index_exp:=index_exp+1;
END_FOR;
mantissa_result:=1.0;
IF NOT(Input2.0) THEN
mantissa[1]:=0.0;
END_IF;
IF NOT(Input2.1) THEN
mantissa[2]:=0.0;
END_IF;
IF NOT(Input2.2) THEN
mantissa[3]:=0.0;
END_IF;
IF NOT(Input2.3) THEN
mantissa[4]:=0.0;
END_IF;
IF NOT(Input2.4) THEN
mantissa[5]:=0.0;
END_IF;
IF NOT(Input2.5) THEN
mantissa[6]:=0.0;
END_IF;
IF NOT(Input2.6) THEN
mantissa[7]:=0.0;
END_IF;
IF NOT(Input2.7) THEN
mantissa[8]:=0.0;
END_IF;
IF NOT(Input2.8) THEN
mantissa[9]:=0.0;
END_IF;
IF NOT(Input2.9) THEN
mantissa[10]:=0.0;
END_IF;
IF NOT(Input2.10) THEN
mantissa[11]:=0.0;
END_IF;
IF NOT(Input2.11) THEN
mantissa[12]:=0.0;
END_IF;
IF NOT(Input2.12) THEN
mantissa[13]:=0.0;
END_IF;
IF NOT(Input2.13) THEN
mantissa[14]:=0.0;
END_IF;
IF NOT(Input2.14) THEN
mantissa[15]:=0.0;
END_IF;
IF NOT(Input2.15) THEN
mantissa[16]:=0.0;
END_IF;
IF NOT(Input1.0) THEN
mantissa[17]:=0.0;
END_IF;
IF NOT(Input1.1) THEN
mantissa[18]:=0.0;
END_IF;
IF NOT(Input1.2) THEN
mantissa[19]:=0.0;
END_IF;
IF NOT(Input1.3) THEN
mantissa[20]:=0.0;
END_IF;
IF NOT(Input1.4) THEN
mantissa[21]:=0.0;
END_IF;
IF NOT(Input1.5) THEN
mantissa[22]:=0.0;
END_IF;
IF NOT(Input1.6) THEN
mantissa[23]:=0.0;
END_IF;
FOR index_add := 1 TO 23 BY 1 DO
mantissa_result:=mantissa_result+mantissa[index_add];
END_FOR;
IF Input1.15 THEN
Output_sign:=-1.0;
ELSE
Output_sign:=1.0;
END_IF;
Output_expt:=exponent;
Output_mantissa:=mantissa_result;
exponent_real:=expt(2.0,exponent);
WordsToReal := Output_sign * exponent_real * mantissa_result;
END_FUNCTION]]></PouBody>
<PouUIProperties>
<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>
</PouUIProperties>
</Pou>

Binary file not shown.

View File

@@ -1,2 +1,2 @@
[RMDManager]
TASK=REBUILD
TASK=BUILD

View File

@@ -0,0 +1,3 @@
Controller.Micro820.Micro820.PanelViewTimer.PanelViewTON
Controller.Micro820.Micro820.panelviewOn
Controller.Micro820.Micro820.panelviewTimeOn

View File

@@ -13,4 +13,5 @@
<AcfElementGuid Guid="b347dfd1-4943-49d5-9124-df6855433dbd" />
<AcfElementGuid Guid="d7b5fe0b-4028-475c-b33e-767c5b5daf82" />
<AcfElementGuid Guid="d9cd1c27-0f51-4f96-b960-a629f4aa554a" />
<AcfElementGuid Guid="dcbb405e-46da-48b0-b65c-c51ae165ce73" />
</ProjectElements>

View File

@@ -5,4 +5,5 @@
<AcfElementGuid Guid="8f54bff0-84c6-443e-84ae-c99f1b596308" />
<AcfElementGuid Guid="b347dfd1-4943-49d5-9124-df6855433dbd" />
<AcfElementGuid Guid="d9cd1c27-0f51-4f96-b960-a629f4aa554a" />
<AcfElementGuid Guid="dcbb405e-46da-48b0-b65c-c51ae165ce73" />
</ProjectElements>

View File

@@ -30,4 +30,7 @@
<AcfElementGuid Guid="d9cd1c27-0f51-4f96-b960-a629f4aa554a">
<File>Watchdog.AcfMlge</File>
</AcfElementGuid>
<AcfElementGuid Guid="dcbb405e-46da-48b0-b65c-c51ae165ce73">
<File>PanelViewTimer.AcfMlge</File>
</AcfElementGuid>
</ProjectElements>

Binary file not shown.

Binary file not shown.

View File

@@ -1 +1 @@
PV800_GPSFlowSkid;2711R-T4T;\\Mac\Home\GitHub\Henry-Pump\GPS-Flow-Skid\GPSFlowSkid\PVc Project
PV800_GPSFlowSkid;2711R-T4T;\\Mac\Home\GitHub\Henry-Pump\MaxWaterSystem\GPS-Flow-Skid\GPSFlowSkid\PVc Project

View File

@@ -1,12 +1,20 @@
# GPS Flow Skid
## Activating the PanelView
Pressing the Panelview activate button will enable the Panelview for 20 minutes. After 20 minutes have elapsed, the panelview will power down to conserve battery.
## Resetting the flowmeter totalizers
To reset the flowmeter totalizer, press the "CLEAR TOTALIZER" button from Totalizer Screen on the HMI. Alternatively, set the value of the the boolean tag "cmd_ResetTotalizerA", "cmd_ResetTotalizerB", or "cmd_ResetTotalizerC" to TRUE.
## Modbus Parameters
All devices need to be configured with the following Modbus Parameters:
- Baud Rate: 9600
- Parity: None
- Stop Bits: 2
- Baud Rate: 9600
- Parity: None
- Stop Bits: 2
### Modbus Addresses
@@ -14,3 +22,18 @@ All devices need to be configured with the following Modbus Parameters:
| -------------------- | ----------- |
| Flowmeter | 1 |
| Solar Panel Charger | 20 |
## Wiring Guide
### Digital Inputs
| Channel | Device |
|---------- | -------|
| 0 | HMI Activate Button |
### Digital Outputs
| Channel | Device |
|---------- | -------|
| 0 | HMI Enable Relay |