cr-barn5-codesys/Development/cr_barn5.Device.Application.xml

2372 lines
164 KiB
XML

<?xml version="1.0" encoding="utf-8"?>
<Symbolconfiguration xmlns="http://www.3s-software.com/schemas/Symbolconfiguration.xsd">
<Header>
<Version>3.5.14.0</Version>
<SymbolConfigObject version="4.5.2.0" runtimeid="3.5.19.61" libversion="4.5.0.0" compiler="3.5.21.0" lmm="3.5.21.0" profile="CODESYS V3.5 SP21+" settings="SupportOPCUA, IncludeComments, IncludeTypeNodeAttributes, XmlIncludeComments, XmlIncludeTypeNodeAttributes, LayoutCalculator=OptimizedClientSideLayoutCalculator" />
<ProjectInfo name="cr_barn5" devicename="Device" appname="Application" />
</Header>
<TypeList>
<TypeSimple name="T_BOOL" size="1" swapsize="0" typeclass="Bool" iecname="BOOL" />
<TypeSimple name="T_DINT" size="4" swapsize="4" typeclass="DInt" iecname="DINT" />
<TypeSimple name="T_DWORD" size="4" swapsize="4" typeclass="DWord" iecname="DWORD" />
<TypeSimple name="T_INT" size="2" swapsize="2" typeclass="Int" iecname="INT" />
<TypeSimple name="T_REAL" size="4" swapsize="4" typeclass="Real" iecname="REAL" />
<TypeSimple name="T_STRING" size="81" swapsize="0" typeclass="String" iecname="STRING" />
<TypeSimple name="T_TIME" size="4" swapsize="4" typeclass="Time" iecname="TIME" />
<TypeSimple name="T_TIME_OF_DAY" size="4" swapsize="4" typeclass="TimeOfDay" iecname="TIME_OF_DAY" />
<TypeSimple name="T_UDINT" size="4" swapsize="4" typeclass="UDInt" iecname="UDINT" />
<TypeSimple name="T_UINT" size="2" swapsize="2" typeclass="UInt" iecname="UINT" />
<TypeSimple name="T_ULINT" size="8" swapsize="8" typeclass="ULInt" iecname="ULINT" />
<TypeArray name="T_ARRAY__0__27__OF_BOOL" size="28" nativesize="28" typeclass="Array" iecname="ARRAY [0..27] OF BOOL" basetype="T_BOOL">
<ArrayDim minrange="0" maxrange="27" />
</TypeArray>
<TypeArray name="T_ARRAY__0__99__OF_BOOL" size="100" nativesize="100" typeclass="Array" iecname="ARRAY [0..99] OF BOOL" basetype="T_BOOL">
<ArrayDim minrange="0" maxrange="99" />
</TypeArray>
<TypeArray name="T_ARRAY__0__99__OF_DINT" size="400" nativesize="400" typeclass="Array" iecname="ARRAY [0..99] OF DINT" basetype="T_DINT">
<ArrayDim minrange="0" maxrange="99" />
</TypeArray>
<TypeArray name="T_ARRAY__0__99__OF_REAL" size="400" nativesize="400" typeclass="Array" iecname="ARRAY [0..99] OF REAL" basetype="T_REAL">
<ArrayDim minrange="0" maxrange="99" />
</TypeArray>
<TypeUserDef name="T_F_TRIG" size="2" nativesize="16" typeclass="Userdef" pouclass="FUNCTION_BLOCK" iecname="F_TRIG">
<Comment> Detects a falling edge of a boolean signal
.. code-block:: codesys
(* Example declaration *)
FTRIGInst : F_TRIG ;
(* Example in ST *)
FTRIGInst(CLK := VarBOOL1);
VarBOOL2 := FTRIGInst.Q;
.. cds:ranges::
:CLK: [TRUE,FALSE]
:~CLK_OLD: [TRUE,FALSE]
:Q: [TRUE,FALSE]
</Comment>
<UserDefElement iecname="CLK" type="T_BOOL" byteoffset="0" vartype="VAR_INPUT" access="ReadWrite">
<Comment> Boolean signal to be checked</Comment>
</UserDefElement>
<UserDefElement iecname="Q" type="T_BOOL" byteoffset="1" vartype="VAR_OUTPUT" access="ReadWrite">
<Comment> ``TRUE``: Falling edge detected</Comment>
</UserDefElement>
</TypeUserDef>
<TypeSimple name="T_POINTER_TO_atCurveKey" size="8" swapsize="8" typeclass="Pointer" iecname="POINTER TO atCurveKey" />
<TypeSimple name="T_POINTER_TO_atCurveREALData" size="8" swapsize="8" typeclass="Pointer" iecname="POINTER TO atCurveREALData" />
<TypeSimple name="T_POINTER_TO_atCurveTimeClockData" size="8" swapsize="8" typeclass="Pointer" iecname="POINTER TO atCurveTimeClockData" />
<TypeSimple name="T_POINTER_TO_atHistItemBase" size="8" swapsize="8" typeclass="Pointer" iecname="POINTER TO atHistItemBase" />
<TypeSimple name="T_POINTER_TO_atIngredient" size="8" swapsize="8" typeclass="Pointer" iecname="POINTER TO atIngredient" />
<TypeSimple name="T_POINTER_TO_atMachine" size="8" swapsize="8" typeclass="Pointer" iecname="POINTER TO atMachine" />
<TypeSimple name="T_REFERENCE_TO_BOOL_REF" size="1" swapsize="0" typeclass="Reference" iecname="REFERENCE TO BOOL_REF" basetype="T_BOOL" />
<TypeUserDef name="T_RS" size="3" nativesize="16" typeclass="Userdef" pouclass="FUNCTION_BLOCK" iecname="RS">
<Comment> Realizes a bistable reset-dominat latch
.. cds:ranges::
:SET: [TRUE,FALSE]
:RESET1: [TRUE,FALSE]
:~Q1_IN: [TRUE,FALSE]
:Q1: [TRUE,FALSE]
.. code-block:: codesys
(* Example declaration *)
RSInst : RS ;
(* Example in ST *)
RSInst(SET:= VarBOOL1 , RESET1:=VarBOOL2 );
VarBOOL3 := RSInst.Q1 ;
</Comment>
<UserDefElement iecname="SET" type="T_BOOL" byteoffset="0" vartype="VAR_INPUT" access="ReadWrite">
<Comment> Rising edge: Set ``Q1`` to ``TRUE`` </Comment>
</UserDefElement>
<UserDefElement iecname="RESET1" type="T_BOOL" byteoffset="1" vartype="VAR_INPUT" access="ReadWrite" />
<UserDefElement iecname="Q1" type="T_BOOL" byteoffset="2" vartype="VAR_OUTPUT" access="ReadWrite">
<Comment> Output value</Comment>
</UserDefElement>
</TypeUserDef>
<TypeUserDef name="T_RTS_SYSTIMEDATE" size="18" nativesize="18" typeclass="Userdef" pouclass="STRUCTURE" iecname="RTS_SYSTIMEDATE">
<Comment> &lt;description&gt;Time and date in structured&lt;/description&gt;</Comment>
<UserDefElement iecname="wYear" type="T_UINT" byteoffset="0" vartype="VAR" access="ReadWrite">
<Comment> &lt;element="wYear" type="IN"&gt;Year (e.g. 2006)&lt;/element&gt; </Comment>
</UserDefElement>
<UserDefElement iecname="wMonth" type="T_UINT" byteoffset="2" vartype="VAR" access="ReadWrite">
<Comment> &lt;element="wMonth" type="IN"&gt;Month (1..12: January = 1, December = 12)&lt;/element&gt; </Comment>
</UserDefElement>
<UserDefElement iecname="wDay" type="T_UINT" byteoffset="4" vartype="VAR" access="ReadWrite">
<Comment> &lt;element="wDay" type="IN"&gt;Day of month (1..31)&lt;/element&gt; </Comment>
</UserDefElement>
<UserDefElement iecname="wHour" type="T_UINT" byteoffset="6" vartype="VAR" access="ReadWrite">
<Comment> &lt;element="wHour" type="IN"&gt;Hours after midnight (0..23)&lt;/element&gt; </Comment>
</UserDefElement>
<UserDefElement iecname="wMinute" type="T_UINT" byteoffset="8" vartype="VAR" access="ReadWrite">
<Comment> &lt;element="wMinute" type="IN"&gt;Minutes after hour (0..59)&lt;/element&gt; </Comment>
</UserDefElement>
<UserDefElement iecname="wSecond" type="T_UINT" byteoffset="10" vartype="VAR" access="ReadWrite">
<Comment> &lt;element="wSecond" type="IN"&gt;Seconds after minute (0..59)&lt;/element&gt; </Comment>
</UserDefElement>
<UserDefElement iecname="wMilliseconds" type="T_UINT" byteoffset="12" vartype="VAR" access="ReadWrite">
<Comment> &lt;element="wMilliseconds" type="IN"&gt;Milliseconds after second (0..999). Optional!&lt;/element&gt; </Comment>
</UserDefElement>
<UserDefElement iecname="wDayOfWeek" type="T_UINT" byteoffset="14" vartype="VAR" access="ReadWrite">
<Comment> &lt;element="wDayOfWeek" type="IN"&gt;Day of week (1..7: Monday = 1, Sunday = 7&lt;/element&gt; </Comment>
</UserDefElement>
<UserDefElement iecname="wYday" type="T_UINT" byteoffset="16" vartype="VAR" access="ReadWrite">
<Comment> &lt;element="wYday" type="IN"&gt;Day of year (1..365): January 1 = 1, December 31 = 364/365&lt;/element&gt; </Comment>
</UserDefElement>
</TypeUserDef>
<TypeUserDef name="T_R_TRIG" size="2" nativesize="16" typeclass="Userdef" pouclass="FUNCTION_BLOCK" iecname="R_TRIG">
<Comment> Detects a rising edge of a boolean signal
.. code-block:: codesys
(* Example declaration *)
RTRIGInst : R_TRIG ;
(* Example in ST *)
RTRIGInst(CLK := VarBOOL1);
VarBOOL2 := RTRIGInst.Q;
.. cds:ranges::
:CLK: [TRUE,FALSE]
:~CLK_OLD: [TRUE,FALSE]
:Q: [TRUE,FALSE]
</Comment>
<UserDefElement iecname="CLK" type="T_BOOL" byteoffset="0" vartype="VAR_INPUT" access="ReadWrite">
<Comment> Boolean signal to be checked</Comment>
</UserDefElement>
<UserDefElement iecname="Q" type="T_BOOL" byteoffset="1" vartype="VAR_OUTPUT" access="ReadWrite">
<Comment> ``TRUE``: Rising edge detected</Comment>
</UserDefElement>
</TypeUserDef>
<TypeUserDef name="T_TOF" size="16" nativesize="32" typeclass="Userdef" pouclass="FUNCTION_BLOCK" iecname="TOF">
<Comment> Implements a timer with a turn-off delay
.. code-block:: codesys
(* Example declaration *)
TOFInst : TOF ;
(* Example in ST *)
TOFInst(IN := VarBOOL1, PT:= T#5s);
VarBOOL2 := TOFInst.Q;
.. image:: @(Tof)
.. cds:ranges::
:IN: [TRUE,FALSE]
:PT: [0..255]
:~PT_OLD: [0..255]
:Q: [TRUE,FALSE]
:ET: [0..4294967295]
</Comment>
<UserDefElement iecname="IN" type="T_BOOL" byteoffset="0" vartype="VAR_INPUT" access="ReadWrite">
<Comment> | Falling edge: starts delay counter
| Rising edge: resets delay counter</Comment>
</UserDefElement>
<UserDefElement iecname="PT" type="T_TIME" byteoffset="4" vartype="VAR_INPUT" access="ReadWrite">
<Comment> Time for the delay counter [ms]</Comment>
</UserDefElement>
<UserDefElement iecname="Q" type="T_BOOL" byteoffset="8" vartype="VAR_OUTPUT" access="ReadWrite">
<Comment> | ``TRUE`` if ``IN`` is ``TRUE``
| ``FALSE`` if ``IN`` is ``FALSE`` and delay time ``PT`` elapsed</Comment>
</UserDefElement>
<UserDefElement iecname="ET" type="T_TIME" byteoffset="12" vartype="VAR_OUTPUT" access="ReadWrite">
<Comment> Elapsed time since falling edge at ``IN``</Comment>
</UserDefElement>
</TypeUserDef>
<TypeUserDef name="T_TON" size="16" nativesize="32" typeclass="Userdef" pouclass="FUNCTION_BLOCK" iecname="TON">
<Comment> Implements a timer with a turn-on delay
.. code-block:: codesys
(* Example declaration *)
TONInst : TON ;
(* Example in ST *)
TONInst(IN := VarBOOL1, PT:= T#5s);
VarBOOL2 := TONInst.Q;
.. image:: @(Ton)
.. cds:ranges::
:IN: [TRUE,FALSE]
:PT: [0..255]
:~PT_OLD: [0..255]
:Q: [TRUE,FALSE]
:ET: [0..4294967295]
</Comment>
<UserDefElement iecname="IN" type="T_BOOL" byteoffset="0" vartype="VAR_INPUT" access="ReadWrite">
<Comment> | Rising edge: starts delay counter
| Falling edge: resets delay counter</Comment>
</UserDefElement>
<UserDefElement iecname="PT" type="T_TIME" byteoffset="4" vartype="VAR_INPUT" access="ReadWrite">
<Comment> Time for the delay counter [ms] </Comment>
</UserDefElement>
<UserDefElement iecname="Q" type="T_BOOL" byteoffset="8" vartype="VAR_OUTPUT" access="ReadWrite">
<Comment> | ``FALSE`` if ``IN`` is ``FALSE``
| ``TRUE`` if ``IN`` is ``TRUE`` and delay time ``PT`` elapsed</Comment>
</UserDefElement>
<UserDefElement iecname="ET" type="T_TIME" byteoffset="12" vartype="VAR_OUTPUT" access="ReadWrite">
<Comment> Elapsed time since rising edge at ``IN``</Comment>
</UserDefElement>
</TypeUserDef>
<TypeUserDef name="T_TP" size="16" nativesize="32" typeclass="Userdef" pouclass="FUNCTION_BLOCK" iecname="TP">
<Comment> Implements a pulse timer
.. code-block:: codesys
(* Example declaration *)
TPInst : TP ;
(* Example in ST *)
TPInst(IN := VarBOOL1, PT:= T#5s);
VarBOOL2 := TPInst.Q;
.. image:: @(Tp)
.. cds:ranges::
:IN: [TRUE,FALSE]
:PT: [0..255]
:~PT_OLD: [0..255]
:Q: [TRUE,FALSE]
:ET: [0..4294967295]
</Comment>
<UserDefElement iecname="IN" type="T_BOOL" byteoffset="0" vartype="VAR_INPUT" access="ReadWrite">
<Comment> Rising edge starts the pulse timer and sets ``Q`` to ``TRUE``</Comment>
</UserDefElement>
<UserDefElement iecname="PT" type="T_TIME" byteoffset="4" vartype="VAR_INPUT" access="ReadWrite">
<Comment> Length of the pulse (high-signal) </Comment>
</UserDefElement>
<UserDefElement iecname="Q" type="T_BOOL" byteoffset="8" vartype="VAR_OUTPUT" access="ReadWrite">
<Comment> Pulse signal, set to ``TRUE`` for ``PT`` milliseconds if ``EN`` has a rising edge</Comment>
</UserDefElement>
<UserDefElement iecname="ET" type="T_TIME" byteoffset="12" vartype="VAR_OUTPUT" access="ReadWrite">
<Comment> Elapsed time since pulse timer started. It will then remain constant after ``PT`` is reached.</Comment>
</UserDefElement>
</TypeUserDef>
<TypeUserDef name="T_TemperatureUnitTypes" size="2" nativesize="2" swapsize="2" typeclass="Enum" iecname="TemperatureUnitTypes" basetype="T_INT">
<UserDefElement type="T_TemperatureUnitTypes" iecname="Celsius" enumvalue="0" />
<UserDefElement type="T_TemperatureUnitTypes" iecname="Fahrenheit" enumvalue="1" />
</TypeUserDef>
<TypeSimple name="T_Util_RTS_IEC_RESULT" size="4" swapsize="4" typeclass="UDInt" iecname="Util.RTS_IEC_RESULT" aliasedtype="T_UDINT" aliasediecname="UDINT" />
<TypeUserDef name="T_WeightUnitType" size="2" nativesize="2" swapsize="2" typeclass="Enum" iecname="WeightUnitType" basetype="T_INT">
<UserDefElement type="T_WeightUnitType" iecname="Kilograms" enumvalue="0" />
<UserDefElement type="T_WeightUnitType" iecname="Pounds" enumvalue="1" />
</TypeUserDef>
<TypeUserDef name="T_atAlarmDefault" size="2" nativesize="2" swapsize="2" typeclass="Enum" iecname="atAlarmDefault" basetype="T_INT">
<UserDefElement type="T_atAlarmDefault" iecname="unlatched" enumvalue="0" />
<UserDefElement type="T_atAlarmDefault" iecname="latched" enumvalue="1" />
</TypeUserDef>
<TypeUserDef name="T_atAutoManOnOff" size="4" nativesize="16" typeclass="Userdef" pouclass="FUNCTION_BLOCK" iecname="atAutoManOnOff">
<Comment>Auto / Manual - On/Off control</Comment>
<UserDefElement iecname="in_AutoOn" type="T_BOOL" byteoffset="0" vartype="VAR_INPUT" access="ReadWrite">
<Comment>If in auto then on</Comment>
</UserDefElement>
<UserDefElement iecname="in_Auto" type="T_BOOL" byteoffset="1" vartype="VAR_INPUT" access="ReadWrite">
<Comment>Auto / manual mode</Comment>
</UserDefElement>
<UserDefElement iecname="in_MainOn" type="T_BOOL" byteoffset="2" vartype="VAR_INPUT" access="ReadWrite">
<Comment>IF in manual then on</Comment>
</UserDefElement>
<UserDefElement iecname="out" type="T_BOOL" byteoffset="3" vartype="VAR_OUTPUT" access="ReadWrite">
<Comment>On output</Comment>
</UserDefElement>
</TypeUserDef>
<TypeUserDef name="T_atCurveKey" size="8" nativesize="16" typeclass="Userdef" pouclass="FUNCTION_BLOCK" iecname="atCurveKey">
<UserDefElement iecname="en" type="T_BOOL" byteoffset="0" vartype="VAR_INPUT" access="ReadWrite">
<Comment>Curve point is enabled </Comment>
</UserDefElement>
<UserDefElement iecname="key" type="T_REAL" byteoffset="4" vartype="VAR_INPUT" access="ReadWrite" />
</TypeUserDef>
<TypeUserDef name="T_atCurveOutType" size="2" nativesize="2" swapsize="2" typeclass="Enum" iecname="atCurveOutType" basetype="T_INT">
<UserDefElement type="T_atCurveOutType" iecname="stepped" enumvalue="0" />
<UserDefElement type="T_atCurveOutType" iecname="smooth" enumvalue="1" />
</TypeUserDef>
<TypeUserDef name="T_atCurveREALData" size="4" nativesize="16" typeclass="Userdef" pouclass="FUNCTION_BLOCK" iecname="atCurveREALData">
<UserDefElement iecname="value" type="T_REAL" byteoffset="0" vartype="VAR_INPUT" access="ReadWrite" />
</TypeUserDef>
<TypeUserDef name="T_atDQ" size="84" nativesize="96" typeclass="Userdef" pouclass="FUNCTION_BLOCK" iecname="atDQ">
<UserDefElement iecname="in_invert" type="T_BOOL" byteoffset="0" vartype="VAR_INPUT" access="ReadWrite">
<Comment>Default to False but can be inverted if Need Be</Comment>
</UserDefElement>
<UserDefElement iecname="in_raw" type="T_BOOL" byteoffset="1" vartype="VAR_INPUT" access="ReadWrite" />
<UserDefElement iecname="in_name" type="T_STRING" byteoffset="2" vartype="VAR_INPUT" access="ReadWrite" />
<UserDefElement iecname="out_val" type="T_BOOL" byteoffset="83" vartype="VAR_OUTPUT" access="ReadWrite" />
</TypeUserDef>
<TypeUserDef name="T_atDebounce" size="13" nativesize="96" typeclass="Userdef" pouclass="FUNCTION_BLOCK" iecname="atDebounce">
<UserDefElement iecname="in_raw" type="T_BOOL" byteoffset="0" vartype="VAR_INPUT" access="ReadWrite" />
<UserDefElement iecname="in_delOn" type="T_TIME" byteoffset="4" vartype="VAR_INPUT" access="ReadWrite" />
<UserDefElement iecname="in_delOff" type="T_TIME" byteoffset="8" vartype="VAR_INPUT" access="ReadWrite" />
<UserDefElement iecname="out_val" type="T_BOOL" byteoffset="12" vartype="VAR_OUTPUT" access="ReadWrite" />
</TypeUserDef>
<TypeUserDef name="T_atDeviceList" size="14" nativesize="2520" typeclass="Userdef" pouclass="FUNCTION_BLOCK" iecname="atDeviceList">
<UserDefElement iecname="inrushDelay" type="T_ULINT" byteoffset="0" vartype="VAR_INPUT" access="ReadWrite">
<Comment>Inrush delay in ms, don't start until this time is in the past</Comment>
</UserDefElement>
<UserDefElement iecname="deviceCnt" type="T_INT" byteoffset="8" vartype="VAR_OUTPUT" access="ReadWrite">
<Comment>Number of devices in list</Comment>
</UserDefElement>
<UserDefElement iecname="machineCnt" type="T_INT" byteoffset="10" vartype="VAR_OUTPUT" access="ReadWrite">
<Comment>Number of machines in list</Comment>
</UserDefElement>
<UserDefElement iecname="gadgetCnt" type="T_INT" byteoffset="12" vartype="VAR_OUTPUT" access="ReadWrite">
<Comment>Number of gadgets in the list</Comment>
</UserDefElement>
</TypeUserDef>
<TypeUserDef name="T_atDeviceStatus" size="2" nativesize="2" swapsize="2" typeclass="Enum" iecname="atDeviceStatus" basetype="T_INT">
<UserDefElement type="T_atDeviceStatus" iecname="off" enumvalue="0" />
<UserDefElement type="T_atDeviceStatus" iecname="run" enumvalue="100" />
<UserDefElement type="T_atDeviceStatus" iecname="reqToRun" enumvalue="200" />
<UserDefElement type="T_atDeviceStatus" iecname="inrushDelay" enumvalue="300" />
<UserDefElement type="T_atDeviceStatus" iecname="startDel" enumvalue="400" />
<UserDefElement type="T_atDeviceStatus" iecname="stopDel" enumvalue="500" />
<UserDefElement type="T_atDeviceStatus" iecname="fault" enumvalue="600" />
</TypeUserDef>
<TypeUserDef name="T_atFilter" size="12" nativesize="96" typeclass="Userdef" pouclass="FUNCTION_BLOCK" iecname="atFilter">
<UserDefElement iecname="in_cv" type="T_REAL" byteoffset="0" vartype="VAR_INPUT" access="ReadWrite">
<Comment> current value in</Comment>
</UserDefElement>
<UserDefElement iecname="in_tau" type="T_TIME" byteoffset="4" vartype="VAR_INPUT" access="ReadWrite">
<Comment> filter time in seconds</Comment>
</UserDefElement>
<UserDefElement iecname="out_filt" type="T_REAL" byteoffset="8" vartype="VAR_OUTPUT" access="ReadWrite">
<Comment> filtered value</Comment>
</UserDefElement>
</TypeUserDef>
<TypeUserDef name="T_atHistItemBase" size="81" nativesize="96" typeclass="Userdef" pouclass="FUNCTION_BLOCK" iecname="atHistItemBase">
<UserDefElement iecname="name" type="T_STRING" byteoffset="0" vartype="VAR_INPUT" access="ReadWrite">
<Comment>Name of item</Comment>
</UserDefElement>
</TypeUserDef>
<TypeUserDef name="T_atHistRealAggregateItem" size="12" nativesize="24" typeclass="Userdef" pouclass="FUNCTION_BLOCK" iecname="atHistRealAggregateItem">
<UserDefElement iecname="avg" type="T_REAL" byteoffset="0" vartype="VAR_INPUT" access="ReadWrite" />
<UserDefElement iecname="high" type="T_REAL" byteoffset="4" vartype="VAR_INPUT" access="ReadWrite" />
<UserDefElement iecname="low" type="T_REAL" byteoffset="8" vartype="VAR_INPUT" access="ReadWrite" />
</TypeUserDef>
<TypeUserDef name="T_atIngredientMode" size="2" nativesize="2" swapsize="2" typeclass="Enum" iecname="atIngredientMode" basetype="T_INT">
<UserDefElement type="T_atIngredientMode" iecname="notSet" enumvalue="-1">
<Comment> The mode is not set, used to clear the setMode setting</Comment>
</UserDefElement>
<UserDefElement type="T_atIngredientMode" iecname="off" enumvalue="0">
<Comment> Don't use this bin</Comment>
</UserDefElement>
<UserDefElement type="T_atIngredientMode" iecname="onPremix" enumvalue="1">
<Comment> Primary premix</Comment>
</UserDefElement>
<UserDefElement type="T_atIngredientMode" iecname="backup" enumvalue="2">
<Comment> Backup premix - used when the primary premix runs out</Comment>
</UserDefElement>
<UserDefElement type="T_atIngredientMode" iecname="onWheat" enumvalue="3">
<Comment> Wheat</Comment>
</UserDefElement>
</TypeUserDef>
<TypeUserDef name="T_atLimitType" size="2" nativesize="2" swapsize="2" typeclass="Enum" iecname="atLimitType" basetype="T_INT">
<UserDefElement type="T_atLimitType" iecname="hi" enumvalue="0" />
<UserDefElement type="T_atLimitType" iecname="lo" enumvalue="1" />
</TypeUserDef>
<TypeUserDef name="T_atMixerState" size="2" nativesize="2" swapsize="2" typeclass="Enum" iecname="atMixerState" basetype="T_INT">
<UserDefElement type="T_atMixerState" iecname="idle" enumvalue="0" />
<UserDefElement type="T_atMixerState" iecname="calcWeight" enumvalue="1">
<Comment>Calculate target weight for the active ingredient</Comment>
</UserDefElement>
<UserDefElement type="T_atMixerState" iecname="fill" enumvalue="2">
<Comment>Filling to target weight</Comment>
</UserDefElement>
<UserDefElement type="T_atMixerState" iecname="waitForStable" enumvalue="3">
<Comment>Wait for stable after filling</Comment>
</UserDefElement>
<UserDefElement type="T_atMixerState" iecname="nextIngredient" enumvalue="4">
<Comment>Move to next ingredient</Comment>
</UserDefElement>
<UserDefElement type="T_atMixerState" iecname="waitForWeigherEmpty" enumvalue="5">
<Comment>Wait for weigh hopper to be empty</Comment>
</UserDefElement>
<UserDefElement type="T_atMixerState" iecname="dump" enumvalue="6">
<Comment>Dump weigher</Comment>
</UserDefElement>
<UserDefElement type="T_atMixerState" iecname="waitForDumpClose" enumvalue="7">
<Comment>Delay to allow dump to close</Comment>
</UserDefElement>
</TypeUserDef>
<TypeUserDef name="T_atScaling" size="112" nativesize="120" typeclass="Userdef" pouclass="FUNCTION_BLOCK" iecname="atScaling">
<UserDefElement iecname="in_raw" type="T_REAL" byteoffset="0" vartype="VAR_INPUT" access="ReadWrite" />
<UserDefElement iecname="in_name" type="T_STRING" byteoffset="4" vartype="VAR_INPUT" access="ReadWrite" />
<UserDefElement iecname="in_rawMin" type="T_REAL" byteoffset="88" vartype="VAR_INPUT" access="ReadWrite" />
<UserDefElement iecname="in_rawMax" type="T_REAL" byteoffset="92" vartype="VAR_INPUT" access="ReadWrite" />
<UserDefElement iecname="in_euMin" type="T_REAL" byteoffset="96" vartype="VAR_INPUT" access="ReadWrite" />
<UserDefElement iecname="in_euMax" type="T_REAL" byteoffset="100" vartype="VAR_INPUT" access="ReadWrite" />
<UserDefElement iecname="in_clamp" type="T_BOOL" byteoffset="104" vartype="VAR_INPUT" access="ReadWrite">
<Comment>Clamp output between outMin and outMax </Comment>
</UserDefElement>
<UserDefElement iecname="titleIDX_AQ" type="T_INT" byteoffset="106" vartype="VAR_INPUT" access="ReadWrite" />
<UserDefElement iecname="out_eu" type="T_REAL" byteoffset="108" vartype="VAR_OUTPUT" access="ReadWrite" />
</TypeUserDef>
<TypeUserDef name="T_atScalingDINT" size="28" nativesize="40" typeclass="Userdef" pouclass="FUNCTION_BLOCK" iecname="atScalingDINT">
<UserDefElement iecname="in_raw" type="T_DINT" byteoffset="0" vartype="VAR_INPUT" access="ReadWrite" />
<UserDefElement iecname="in_rawMin" type="T_DINT" byteoffset="4" vartype="VAR_INPUT" access="ReadWrite" />
<UserDefElement iecname="in_rawMax" type="T_DINT" byteoffset="8" vartype="VAR_INPUT" access="ReadWrite" />
<UserDefElement iecname="in_euMin" type="T_DINT" byteoffset="12" vartype="VAR_INPUT" access="ReadWrite" />
<UserDefElement iecname="in_euMax" type="T_DINT" byteoffset="16" vartype="VAR_INPUT" access="ReadWrite" />
<UserDefElement iecname="in_clamp" type="T_BOOL" byteoffset="20" vartype="VAR_INPUT" access="ReadWrite">
<Comment>Clamp output between outMin and outMax </Comment>
</UserDefElement>
<UserDefElement iecname="out_eu" type="T_DINT" byteoffset="24" vartype="VAR_OUTPUT" access="ReadWrite" />
</TypeUserDef>
<TypeUserDef name="T_atSeqCtl" size="44" nativesize="1248" typeclass="Userdef" pouclass="FUNCTION_BLOCK" iecname="atSeqCtl">
<UserDefElement iecname="in_enable" type="T_BOOL" byteoffset="0" vartype="VAR_INPUT" access="ReadWrite">
<Comment>System Enable, bypassed on disable</Comment>
</UserDefElement>
<UserDefElement iecname="in_runDem" type="T_BOOL" byteoffset="1" vartype="VAR_INPUT" access="ReadWrite">
<Comment>Demand given to run</Comment>
</UserDefElement>
<UserDefElement iecname="in_runPerm" type="T_BOOL" byteoffset="2" vartype="VAR_INPUT" access="ReadWrite">
<Comment>Has Permission to run</Comment>
</UserDefElement>
<UserDefElement iecname="in_fault" type="T_BOOL" byteoffset="3" vartype="VAR_INPUT" access="ReadWrite">
<Comment> This is set from device fault.</Comment>
</UserDefElement>
<UserDefElement iecname="in_runStatus" type="T_BOOL" byteoffset="4" vartype="VAR_INPUT" access="ReadWrite">
<Comment>Motor is running, used for VFD to know when it has stopped</Comment>
</UserDefElement>
<UserDefElement iecname="in_uts" type="T_BOOL" byteoffset="5" vartype="VAR_INPUT" access="ReadWrite">
<Comment>Motor Up to Speed</Comment>
</UserDefElement>
<UserDefElement iecname="in_parentPerm" type="T_BOOL" byteoffset="6" vartype="VAR_INPUT" access="ReadWrite">
<Comment>Parent gives permission to run</Comment>
</UserDefElement>
<UserDefElement iecname="in_startDly" type="T_TIME" byteoffset="8" vartype="VAR_INPUT" access="ReadWrite">
<Comment>Delay after starting before ready</Comment>
</UserDefElement>
<UserDefElement iecname="in_stopDly" type="T_TIME" byteoffset="12" vartype="VAR_INPUT" access="ReadWrite">
<Comment>Delay after request to run removed before stopping</Comment>
</UserDefElement>
<UserDefElement iecname="out_ready" type="T_BOOL" byteoffset="16" vartype="VAR_OUTPUT" access="ReadWrite">
<Comment>Ready for product</Comment>
</UserDefElement>
<UserDefElement iecname="out_run" type="T_BOOL" byteoffset="17" vartype="VAR_OUTPUT" access="ReadWrite">
<Comment>Run output</Comment>
</UserDefElement>
<UserDefElement iecname="out_strtDlyDn" type="T_BOOL" byteoffset="18" vartype="VAR_OUTPUT" access="ReadWrite">
<Comment>Start delay done</Comment>
</UserDefElement>
<UserDefElement iecname="out_stopDlyDn" type="T_BOOL" byteoffset="19" vartype="VAR_OUTPUT" access="ReadWrite">
<Comment>Stop delay done</Comment>
</UserDefElement>
<UserDefElement iecname="out_strtDlyET" type="T_TIME" byteoffset="20" vartype="VAR_OUTPUT" access="ReadWrite">
<Comment>Start delay elapsed time</Comment>
</UserDefElement>
<UserDefElement iecname="out_stpDlyET" type="T_TIME" byteoffset="24" vartype="VAR_OUTPUT" access="ReadWrite">
<Comment>Stop delay elapsed time</Comment>
</UserDefElement>
<UserDefElement iecname="out_reqToRunStat" type="T_BOOL" byteoffset="28" vartype="VAR_OUTPUT" access="ReadWrite">
<Comment>Request to run status</Comment>
</UserDefElement>
<UserDefElement iecname="out_strtDlyAct" type="T_BOOL" byteoffset="29" vartype="VAR_OUTPUT" access="ReadWrite">
<Comment>Start delay is active</Comment>
</UserDefElement>
<UserDefElement iecname="out_stopDlyAct" type="T_BOOL" byteoffset="30" vartype="VAR_OUTPUT" access="ReadWrite">
<Comment>Stop delay is active</Comment>
</UserDefElement>
<UserDefElement iecname="out_dlyAct" type="T_BOOL" byteoffset="31" vartype="VAR_OUTPUT" access="ReadWrite">
<Comment>Start or stop delay active</Comment>
</UserDefElement>
<UserDefElement iecname="out_runPerm" type="T_BOOL" byteoffset="32" vartype="VAR_OUTPUT" access="ReadWrite">
<Comment>Sum of in_runPerm and dep.runPerm</Comment>
</UserDefElement>
<UserDefElement iecname="out_depsRun" type="T_BOOL" byteoffset="33" vartype="VAR_OUTPUT" access="ReadWrite" />
<UserDefElement iecname="out_runTime" type="T_DINT" byteoffset="36" vartype="VAR_INPUT" access="ReadWrite">
<Comment>Tracks run time in seconds</Comment>
</UserDefElement>
<UserDefElement iecname="out_TSS" type="T_DINT" byteoffset="40" vartype="VAR_INPUT" access="ReadWrite">
<Comment>Tracks time since start in seconds</Comment>
</UserDefElement>
</TypeUserDef>
<TypeUserDef name="T_atStageDevFixed" size="92" nativesize="104" typeclass="Userdef" pouclass="FUNCTION_BLOCK" iecname="atStageDevFixed">
<UserDefElement iecname="ctrlEn" type="T_BOOL" byteoffset="0" vartype="VAR_INPUT" access="ReadWrite">
<Comment>enable for various control schemes</Comment>
</UserDefElement>
<UserDefElement iecname="in_name" type="T_STRING" byteoffset="1" vartype="VAR_INPUT" access="ReadWrite" />
<UserDefElement iecname="ID" type="T_REAL" byteoffset="84" vartype="VAR_INPUT" access="ReadWrite" />
<UserDefElement iecname="idx" type="T_INT" byteoffset="88" vartype="VAR_INPUT" access="ReadWrite" />
<UserDefElement iecname="underRange" type="T_BOOL" byteoffset="90" vartype="VAR_INPUT" access="ReadWrite" />
<UserDefElement iecname="autoRun" type="T_BOOL" byteoffset="91" vartype="VAR_OUTPUT" access="ReadWrite" />
</TypeUserDef>
<TypeUserDef name="T_atStopWatch" size="20" nativesize="32" typeclass="Userdef" pouclass="FUNCTION_BLOCK" iecname="atStopWatch">
<Comment> Running timer that can be reset</Comment>
<UserDefElement iecname="startTime" type="T_ULINT" byteoffset="0" vartype="VAR_OUTPUT" access="ReadWrite">
<Comment>System time when last reset</Comment>
</UserDefElement>
<UserDefElement iecname="ms" type="T_UDINT" byteoffset="8" vartype="VAR" propertytype="variable" access="Read">
<Comment>ms since timer reset</Comment>
</UserDefElement>
<UserDefElement iecname="sec" type="T_UDINT" byteoffset="12" vartype="VAR" propertytype="variable" access="Read">
<Comment>Whole seconds since timer reset</Comment>
</UserDefElement>
<UserDefElement iecname="secREAL" type="T_REAL" byteoffset="16" vartype="VAR" propertytype="variable" access="Read">
<Comment>REAL seconds since timer reset</Comment>
</UserDefElement>
</TypeUserDef>
<TypeUserDef name="T_atSystemLog" size="169" nativesize="184" typeclass="Userdef" pouclass="FUNCTION_BLOCK" iecname="atSystemLog">
<Comment>Write to system log
Needs Element Collections library</Comment>
<UserDefElement iecname="componentDescription" type="T_STRING" byteoffset="0" vartype="VAR_INPUT" access="ReadWrite">
<Comment>The text that will be in the Component column in the log. This is meant to only be set once and then left the same</Comment>
</UserDefElement>
<UserDefElement iecname="enable" type="T_BOOL" byteoffset="81" vartype="VAR_INPUT" access="ReadWrite">
<Comment>Used to only have the logger enabled at specific time, like when debugging</Comment>
</UserDefElement>
<UserDefElement iecname="udiCmpId" type="T_UDINT" byteoffset="84" vartype="VAR" access="ReadWrite">
<Comment>Component Id</Comment>
</UserDefElement>
<UserDefElement iecname="messageLast" type="T_STRING" byteoffset="88" vartype="VAR" access="ReadWrite">
<Comment>Message from last write</Comment>
</UserDefElement>
</TypeUserDef>
<TypeUserDef name="T_atTODSettings" size="8" nativesize="8" typeclass="Userdef" pouclass="STRUCTURE" iecname="atTODSettings">
<UserDefElement iecname="TimeZoneOffset" type="T_INT" byteoffset="0" vartype="VAR" access="ReadWrite">
<Comment>Offset from UTC in minutes</Comment>
</UserDefElement>
<UserDefElement iecname="RTCAdjustment" type="T_DINT" byteoffset="4" vartype="VAR" access="ReadWrite">
<Comment>Adjustment from hardware real time clock</Comment>
</UserDefElement>
</TypeUserDef>
<TypeUserDef name="T_atTZss" size="2" nativesize="2" swapsize="2" typeclass="Enum" iecname="atTZss" basetype="T_INT">
<UserDefElement type="T_atTZss" iecname="MST" enumvalue="0" />
<UserDefElement type="T_atTZss" iecname="MDT" enumvalue="1" />
</TypeUserDef>
<TypeUserDef name="T_atVersion" size="8" nativesize="8" typeclass="Userdef" pouclass="STRUCTURE" iecname="atVersion">
<UserDefElement iecname="uiMajor" type="T_UINT" byteoffset="0" vartype="VAR" access="ReadWrite">
<Comment> The major version number. This is typically incremented for significant releases that may include major new features or changes.</Comment>
</UserDefElement>
<UserDefElement iecname="uiMinor" type="T_UINT" byteoffset="2" vartype="VAR" access="ReadWrite">
<Comment> The minor version number. This is incremented for releases that add smaller features or improvements and may include significant fixes.</Comment>
</UserDefElement>
<UserDefElement iecname="uiServicePack" type="T_UINT" byteoffset="4" vartype="VAR" access="ReadWrite">
<Comment> The service pack number. This is used to indicate updates that usually include bug fixes, performance improvements, and minor feature enhancements.</Comment>
</UserDefElement>
<UserDefElement iecname="uiPatch" type="T_UINT" byteoffset="6" vartype="VAR" access="ReadWrite">
<Comment> The patch number. This is incremented for very small changes or bug fixes that do not significantly alter the functionality.</Comment>
</UserDefElement>
</TypeUserDef>
<TypeUserDef name="T_litertoGalUnitType" size="2" nativesize="2" swapsize="2" typeclass="Enum" iecname="litertoGalUnitType" basetype="T_INT">
<UserDefElement type="T_litertoGalUnitType" iecname="Liter" enumvalue="0" />
<UserDefElement type="T_litertoGalUnitType" iecname="Gallon" enumvalue="1" />
</TypeUserDef>
<TypeArray name="T_ARRAY__0__10__OF_POINTER_TO_atHistItemBase" size="88" nativesize="88" typeclass="Array" iecname="ARRAY [0..10] OF POINTER TO atHistItemBase" basetype="T_POINTER_TO_atHistItemBase">
<ArrayDim minrange="0" maxrange="10" />
</TypeArray>
<TypeArray name="T_ARRAY__0__2__OF_atDebounce" size="48" nativesize="288" typeclass="Array" iecname="ARRAY [0..2] OF atDebounce" basetype="T_atDebounce">
<ArrayDim minrange="0" maxrange="2" />
</TypeArray>
<TypeArray name="T_ARRAY__0__5__OF_atStageDevFixed" size="552" nativesize="624" typeclass="Array" iecname="ARRAY [0..5] OF atStageDevFixed" basetype="T_atStageDevFixed">
<ArrayDim minrange="0" maxrange="5" />
</TypeArray>
<TypeArray name="T_ARRAY__0__99__OF_atHistRealAggregateItem" size="1200" nativesize="2400" typeclass="Array" iecname="ARRAY [0..99] OF atHistRealAggregateItem" basetype="T_atHistRealAggregateItem">
<ArrayDim minrange="0" maxrange="99" />
</TypeArray>
<TypeArray name="T_ARRAY__0__9__OF_atCurveKey" size="80" nativesize="160" typeclass="Array" iecname="ARRAY [0..9] OF atCurveKey" basetype="T_atCurveKey">
<ArrayDim minrange="0" maxrange="9" />
</TypeArray>
<TypeArray name="T_ARRAY__0__9__OF_atCurveREALData" size="40" nativesize="160" typeclass="Array" iecname="ARRAY [0..9] OF atCurveREALData" basetype="T_atCurveREALData">
<ArrayDim minrange="0" maxrange="9" />
</TypeArray>
<TypeUserDef name="T_BLINK" size="32" nativesize="56" typeclass="Userdef" pouclass="FUNCTION_BLOCK" iecname="BLINK">
<Comment> Simulates a blinking signal (turning on and off for specific durations)</Comment>
<UserDefElement iecname="ENABLE" type="T_BOOL" byteoffset="0" vartype="VAR_INPUT" access="ReadWrite">
<Comment> | ``TRUE``: Starts blinking
| ``FALSE``: Stops blinking whereas ``OUT`` keeps its value</Comment>
</UserDefElement>
<UserDefElement iecname="TIMELOW" type="T_TIME" byteoffset="4" vartype="VAR_INPUT" access="ReadWrite">
<Comment> Time for ``OUT`` to be ``FALSE``</Comment>
</UserDefElement>
<UserDefElement iecname="TIMEHIGH" type="T_TIME" byteoffset="8" vartype="VAR_INPUT" access="ReadWrite">
<Comment> Time for ``OUT`` to be ``TRUE``</Comment>
</UserDefElement>
<UserDefElement iecname="OUT" type="T_BOOL" byteoffset="12" vartype="VAR_OUTPUT" access="ReadWrite">
<Comment> Output value, starts with ``FALSE`` and switches between ``TRUE`` and ``FALSE`` for the given high and low times</Comment>
</UserDefElement>
<UserDefElement iecname="CLOCK" type="T_TP" byteoffset="16" vartype="VAR" access="ReadWrite" />
</TypeUserDef>
<TypeSimple name="T_REFERENCE_TO_atTODSettings_REF" size="8" swapsize="0" typeclass="Reference" iecname="REFERENCE TO atTODSettings_REF" basetype="T_atTODSettings" />
<TypeUserDef name="T_Util_SYSTIMEDATE" size="18" nativesize="18" typeclass="Userdef" pouclass="STRUCTURE" iecname="Util.SYSTIMEDATE" aliasedtype="T_RTS_SYSTIMEDATE" aliasediecname="RTS_SYSTIMEDATE">
<Comment> &lt;description&gt;Time and date in structured&lt;/description&gt;</Comment>
<UserDefElement iecname="wYear" type="T_UINT" byteoffset="0" vartype="VAR" access="ReadWrite">
<Comment> &lt;element="wYear" type="IN"&gt;Year (e.g. 2006)&lt;/element&gt; </Comment>
</UserDefElement>
<UserDefElement iecname="wMonth" type="T_UINT" byteoffset="2" vartype="VAR" access="ReadWrite">
<Comment> &lt;element="wMonth" type="IN"&gt;Month (1..12: January = 1, December = 12)&lt;/element&gt; </Comment>
</UserDefElement>
<UserDefElement iecname="wDay" type="T_UINT" byteoffset="4" vartype="VAR" access="ReadWrite">
<Comment> &lt;element="wDay" type="IN"&gt;Day of month (1..31)&lt;/element&gt; </Comment>
</UserDefElement>
<UserDefElement iecname="wHour" type="T_UINT" byteoffset="6" vartype="VAR" access="ReadWrite">
<Comment> &lt;element="wHour" type="IN"&gt;Hours after midnight (0..23)&lt;/element&gt; </Comment>
</UserDefElement>
<UserDefElement iecname="wMinute" type="T_UINT" byteoffset="8" vartype="VAR" access="ReadWrite">
<Comment> &lt;element="wMinute" type="IN"&gt;Minutes after hour (0..59)&lt;/element&gt; </Comment>
</UserDefElement>
<UserDefElement iecname="wSecond" type="T_UINT" byteoffset="10" vartype="VAR" access="ReadWrite">
<Comment> &lt;element="wSecond" type="IN"&gt;Seconds after minute (0..59)&lt;/element&gt; </Comment>
</UserDefElement>
<UserDefElement iecname="wMilliseconds" type="T_UINT" byteoffset="12" vartype="VAR" access="ReadWrite">
<Comment> &lt;element="wMilliseconds" type="IN"&gt;Milliseconds after second (0..999). Optional!&lt;/element&gt; </Comment>
</UserDefElement>
<UserDefElement iecname="wDayOfWeek" type="T_UINT" byteoffset="14" vartype="VAR" access="ReadWrite">
<Comment> &lt;element="wDayOfWeek" type="IN"&gt;Day of week (1..7: Monday = 1, Sunday = 7&lt;/element&gt; </Comment>
</UserDefElement>
<UserDefElement iecname="wYday" type="T_UINT" byteoffset="16" vartype="VAR" access="ReadWrite">
<Comment> &lt;element="wYday" type="IN"&gt;Day of year (1..365): January 1 = 1, December 31 = 364/365&lt;/element&gt; </Comment>
</UserDefElement>
</TypeUserDef>
<TypeUserDef name="T_atAQ" size="312" nativesize="344" typeclass="Userdef" pouclass="FUNCTION_BLOCK" iecname="atAQ">
<UserDefElement iecname="in_raw" type="T_REAL" byteoffset="0" vartype="VAR_INPUT" access="ReadWrite" />
<UserDefElement iecname="scalingRaw" type="T_atScaling" byteoffset="4" vartype="VAR_INPUT" access="ReadWrite" />
<UserDefElement iecname="scalingEU" type="T_atScaling" byteoffset="116" vartype="VAR_INPUT" access="ReadWrite" />
<UserDefElement iecname="in_name" type="T_STRING" byteoffset="228" vartype="VAR_INPUT" access="ReadWrite" />
<UserDefElement iecname="out_eu" type="T_UINT" byteoffset="310" vartype="VAR_OUTPUT" access="ReadWrite" />
</TypeUserDef>
<TypeUserDef name="T_atAlarm" size="19" nativesize="104" typeclass="Userdef" pouclass="FUNCTION_BLOCK" iecname="atAlarm">
<UserDefElement iecname="in_raw" type="T_BOOL" byteoffset="0" vartype="VAR_INPUT" access="ReadWrite" />
<UserDefElement iecname="in_reset" type="T_BOOL" byteoffset="1" vartype="VAR_INPUT" access="ReadWrite" />
<UserDefElement iecname="in_defaultType" type="T_atAlarmDefault" byteoffset="2" vartype="VAR_INPUT" access="ReadWrite" />
<UserDefElement iecname="in_almIDX" type="T_INT" byteoffset="4" vartype="VAR_INPUT" access="ReadWrite" />
<UserDefElement iecname="in_delOn" type="T_TIME" byteoffset="8" vartype="VAR_INPUT" access="ReadWrite" />
<UserDefElement iecname="in_delOff" type="T_TIME" byteoffset="12" vartype="VAR_INPUT" access="ReadWrite" />
<UserDefElement iecname="out_latched" type="T_BOOL" byteoffset="16" vartype="VAR_OUTPUT" access="ReadWrite">
<Comment>Alarm will remain active until reset</Comment>
</UserDefElement>
<UserDefElement iecname="out_unlatched" type="T_BOOL" byteoffset="17" vartype="VAR_OUTPUT" access="ReadWrite">
<Comment>Alarm will reset when source resets</Comment>
</UserDefElement>
<UserDefElement iecname="out_default" type="T_BOOL" byteoffset="18" vartype="VAR_OUTPUT" access="ReadWrite">
<Comment>Latched or unlatched as specified in the program</Comment>
</UserDefElement>
</TypeUserDef>
<TypeUserDef name="T_atCurveGetKey" size="136" nativesize="160" typeclass="Userdef" pouclass="FUNCTION_BLOCK" iecname="atCurveGetKey">
<UserDefElement iecname="keys" type="T_POINTER_TO_atCurveKey" byteoffset="0" vartype="VAR_INPUT" access="ReadWrite" />
<UserDefElement iecname="in_key" type="T_REAL" byteoffset="8" vartype="VAR_INPUT" access="ReadWrite">
<Comment>input index</Comment>
</UserDefElement>
<UserDefElement iecname="out_idxHi" type="T_INT" byteoffset="12" vartype="VAR_OUTPUT" access="ReadWrite">
<Comment>High output index</Comment>
</UserDefElement>
<UserDefElement iecname="out_idxLo" type="T_INT" byteoffset="14" vartype="VAR_OUTPUT" access="ReadWrite">
<Comment>Low output index</Comment>
</UserDefElement>
<UserDefElement iecname="out_ratio" type="T_REAL" byteoffset="16" vartype="VAR_OUTPUT" access="ReadWrite">
<Comment>Ratio between low and high </Comment>
</UserDefElement>
<UserDefElement iecname="i" type="T_INT" byteoffset="20" vartype="VAR" access="ReadWrite">
<Comment>loop VAR</Comment>
</UserDefElement>
<UserDefElement iecname="curveHi" type="T_INT" byteoffset="22" vartype="VAR" access="ReadWrite">
<Comment>Highest valid curve idx</Comment>
</UserDefElement>
<UserDefElement iecname="scaling" type="T_atScaling" byteoffset="24" vartype="VAR" access="ReadWrite" />
</TypeUserDef>
<TypeUserDef name="T_atDevice" size="206" nativesize="2664" typeclass="Userdef" pouclass="FUNCTION_BLOCK" iecname="atDevice">
<UserDefElement iecname="seq" type="T_atSeqCtl" byteoffset="0" vartype="VAR_INPUT" access="ReadWrite">
<Comment> This should not be set, but is an input to be able to set attributes of this.</Comment>
</UserDefElement>
<UserDefElement iecname="in_parentMachine" type="T_POINTER_TO_atMachine" byteoffset="48" vartype="VAR_INPUT" access="ReadWrite">
<Comment>This devices parent.</Comment>
</UserDefElement>
<UserDefElement iecname="in_fault" type="T_BOOL" byteoffset="56" vartype="VAR_INPUT" access="ReadWrite">
<Comment>Motor Faulted - VFD fault or overload trip - this will not run in manual or auto</Comment>
</UserDefElement>
<UserDefElement iecname="in_seqDisable" type="T_BOOL" byteoffset="57" vartype="VAR_INPUT" access="ReadWrite">
<Comment> Disable sequence, for standalone device</Comment>
</UserDefElement>
<UserDefElement iecname="in_autoRun" type="T_BOOL" byteoffset="58" vartype="VAR_INPUT" access="ReadWrite">
<Comment> Demand to run in auto - normally set by seq controller.</Comment>
</UserDefElement>
<UserDefElement iecname="in_reset" type="T_BOOL" byteoffset="59" vartype="VAR_INPUT" access="ReadWrite" />
<UserDefElement iecname="in_name" type="T_STRING" byteoffset="60" vartype="VAR_INPUT" access="ReadWrite">
<Comment>Name of this device eg M03_01 Inc Drag</Comment>
</UserDefElement>
<UserDefElement iecname="in_ratedPower" type="T_REAL" byteoffset="144" vartype="VAR_INPUT" access="ReadWrite">
<Comment> Rated power in kw</Comment>
</UserDefElement>
<UserDefElement iecname="in_pause" type="T_BOOL" byteoffset="148" vartype="VAR_INPUT" access="ReadWrite">
<Comment>Pauses this device and its gadgets</Comment>
</UserDefElement>
<UserDefElement iecname="out_autoRun" type="T_BOOL" byteoffset="149" vartype="VAR_OUTPUT" access="ReadWrite">
<Comment> Demand to run in auto, adds pause and inrush control to the in_autorun</Comment>
</UserDefElement>
<UserDefElement iecname="out_run" type="T_BOOL" byteoffset="150" vartype="VAR_OUTPUT" access="ReadWrite">
<Comment>Run output</Comment>
</UserDefElement>
<UserDefElement iecname="out_runPerm" type="T_BOOL" byteoffset="151" vartype="VAR_OUTPUT" access="ReadWrite">
<Comment>In Auto from sequence, in manual TRUE</Comment>
</UserDefElement>
<UserDefElement iecname="out_ready" type="T_BOOL" byteoffset="152" vartype="VAR_OUTPUT" access="ReadWrite" />
<UserDefElement iecname="out_status" type="T_atDeviceStatus" byteoffset="154" vartype="VAR_OUTPUT" access="ReadWrite">
<Comment>In Auto from sequence, in manual TRUE</Comment>
</UserDefElement>
<UserDefElement iecname="out_stateColor" type="T_DWORD" byteoffset="156" vartype="VAR_OUTPUT" access="ReadWrite">
<Comment>Color used to indicate state</Comment>
</UserDefElement>
<UserDefElement iecname="out_depsFault" type="T_BOOL" byteoffset="160" vartype="VAR_OUTPUT" access="ReadWrite">
<Comment>A depenedent has a fault</Comment>
</UserDefElement>
<UserDefElement iecname="out_power" type="T_REAL" byteoffset="164" vartype="VAR_OUTPUT" access="ReadWrite">
<Comment> Power draw in watts</Comment>
</UserDefElement>
<UserDefElement iecname="out_paused" type="T_BOOL" byteoffset="168" vartype="VAR_OUTPUT" access="ReadWrite">
<Comment>This device is pauses and won't start</Comment>
</UserDefElement>
<UserDefElement iecname="out_inrushDelay" type="T_BOOL" byteoffset="169" vartype="VAR_OUTPUT" access="ReadWrite">
<Comment>Device is waiting for inrush from another motor to decay before it starts</Comment>
</UserDefElement>
<UserDefElement iecname="in_autoMode" type="T_BOOL" byteoffset="170" vartype="VAR_INPUT" access="ReadWrite">
<Comment>Auto / manual</Comment>
</UserDefElement>
<UserDefElement iecname="out_runTime" type="T_DINT" byteoffset="172" vartype="VAR_OUTPUT" access="ReadWrite">
<Comment>Tracks run time in seconds</Comment>
</UserDefElement>
<UserDefElement iecname="out_tss" type="T_DINT" byteoffset="176" vartype="VAR_OUTPUT" access="ReadWrite">
<Comment>Tracks time since start in seconds</Comment>
</UserDefElement>
<UserDefElement iecname="now" type="T_ULINT" byteoffset="184" vartype="VAR" access="ReadWrite" />
<UserDefElement iecname="devices" type="T_atDeviceList" byteoffset="192" access="ReadWrite">
<Comment>List of all devices</Comment>
</UserDefElement>
</TypeUserDef>
<TypeUserDef name="T_atHistDint" size="484" nativesize="496" typeclass="Userdef" pouclass="FUNCTION_BLOCK" iecname="atHistDint" basetype="T_atHistItemBase">
<UserDefElement iecname="name" type="T_STRING" byteoffset="0" vartype="VAR_INPUT" inherited_from="T_atHistItemBase" access="ReadWrite">
<Comment>Name of item</Comment>
</UserDefElement>
<UserDefElement iecname="values" type="T_ARRAY__0__99__OF_DINT" byteoffset="84" vartype="VAR_INPUT" access="ReadWrite" />
</TypeUserDef>
<TypeUserDef name="T_atHistReal" size="484" nativesize="496" typeclass="Userdef" pouclass="FUNCTION_BLOCK" iecname="atHistReal" basetype="T_atHistItemBase">
<UserDefElement iecname="name" type="T_STRING" byteoffset="0" vartype="VAR_INPUT" inherited_from="T_atHistItemBase" access="ReadWrite">
<Comment>Name of item</Comment>
</UserDefElement>
<UserDefElement iecname="values" type="T_ARRAY__0__99__OF_REAL" byteoffset="84" vartype="VAR_INPUT" access="ReadWrite" />
</TypeUserDef>
<TypeUserDef name="T_atIngredient" size="132" nativesize="152" typeclass="Userdef" pouclass="FUNCTION_BLOCK" iecname="atIngredient">
<Comment>One of many ingredients for a mixer</Comment>
<UserDefElement iecname="runCtl" type="T_atAutoManOnOff" byteoffset="0" vartype="VAR_INPUT" access="ReadWrite">
<Comment>Output control</Comment>
</UserDefElement>
<UserDefElement iecname="midnightReset" type="T_BOOL" byteoffset="4" vartype="VAR_INPUT" access="ReadWrite">
<Comment>Reset totals at midnight</Comment>
</UserDefElement>
<UserDefElement iecname="name" type="T_STRING" byteoffset="5" vartype="VAR_INPUT" access="ReadWrite">
<Comment>Display name for ingredient or bin</Comment>
</UserDefElement>
<UserDefElement iecname="mode" type="T_atIngredientMode" byteoffset="86" vartype="VAR_INPUT" access="ReadWrite">
<Comment>The mode for this ingredient. DO NOT SET THIS DIRECTLY. Use the setMode variable</Comment>
</UserDefElement>
<UserDefElement iecname="inventory" type="T_REAL" byteoffset="88" vartype="VAR_INPUT" access="ReadWrite">
<Comment>Current amount in this bin (kg)</Comment>
</UserDefElement>
<UserDefElement iecname="fillTimeOut" type="T_BOOL" byteoffset="92" vartype="VAR_INPUT" access="ReadWrite">
<Comment>This ingredient timed out while filling</Comment>
</UserDefElement>
<UserDefElement iecname="idx" type="T_INT" byteoffset="94" vartype="VAR_INPUT" access="ReadWrite">
<Comment>For Ingredient list on atom hmi</Comment>
</UserDefElement>
<UserDefElement iecname="usedToday" type="T_REAL" byteoffset="96" vartype="VAR_INPUT" access="ReadWrite">
<Comment>Amount used today (kg)</Comment>
</UserDefElement>
<UserDefElement iecname="setMode" type="T_atIngredientMode" byteoffset="100" vartype="VAR_INPUT" access="ReadWrite">
<Comment>Desired mode for this ingredient</Comment>
</UserDefElement>
<UserDefElement iecname="mixWhtPct" type="T_REAL" byteoffset="104" vartype="VAR_INPUT" access="ReadWrite">
<Comment>Amount of mix desired in percent, this is the initial amount entered (kg)</Comment>
</UserDefElement>
<UserDefElement iecname="mixWhtDem" type="T_REAL" byteoffset="108" vartype="VAR_INPUT" access="ReadWrite">
<Comment>Amount of mix desired in kg, converts the percent to kg based on the size of the mixing container (kg)</Comment>
</UserDefElement>
<UserDefElement iecname="mixWhtAdj" type="T_REAL" byteoffset="112" vartype="VAR_INPUT" access="ReadWrite">
<Comment>Amount of mix desired including error correction for previous mix actual amount (kg)</Comment>
</UserDefElement>
<UserDefElement iecname="mixWhtStop" type="T_REAL" byteoffset="116" vartype="VAR_INPUT" access="ReadWrite">
<Comment>Load cell weight at which to stop the auger (kg)</Comment>
</UserDefElement>
<UserDefElement iecname="mixWhtAct" type="T_REAL" byteoffset="120" vartype="VAR_INPUT" access="ReadWrite">
<Comment>Mix weight actually added for this batch (kg)</Comment>
</UserDefElement>
<UserDefElement iecname="freefall" type="T_REAL" byteoffset="124" vartype="VAR_INPUT" access="ReadWrite">
<Comment>Freefall from last fill (kg)</Comment>
</UserDefElement>
<UserDefElement iecname="accumulatedError" type="T_REAL" byteoffset="128" vartype="VAR_INPUT" access="ReadWrite">
<Comment>Accumulated error from previous</Comment>
</UserDefElement>
</TypeUserDef>
<TypeUserDef name="T_atMortality" size="40" nativesize="72" typeclass="Userdef" pouclass="FUNCTION_BLOCK" iecname="atMortality">
<UserDefElement iecname="rollover" type="T_BOOL" byteoffset="0" vartype="VAR_INPUT" access="ReadWrite">
<Comment>Rollover pulse to clear today and update totals</Comment>
</UserDefElement>
<UserDefElement iecname="addTd" type="T_BOOL" byteoffset="1" vartype="VAR_INPUT" access="ReadWrite" />
<UserDefElement iecname="clear" type="T_BOOL" byteoffset="2" vartype="VAR_INPUT" access="ReadWrite" />
<UserDefElement iecname="placed" type="T_DINT" byteoffset="4" vartype="VAR_INPUT" access="ReadWrite">
<Comment>Number of birds placed</Comment>
</UserDefElement>
<UserDefElement iecname="deadToday" type="T_DINT" byteoffset="8" vartype="VAR_INPUT" access="ReadWrite">
<Comment>Number of birds dead today</Comment>
</UserDefElement>
<UserDefElement iecname="addDeadToday" type="T_DINT" byteoffset="12" vartype="VAR_INPUT" access="ReadWrite" />
<UserDefElement iecname="deadPrior" type="T_DINT" byteoffset="16" vartype="VAR" access="ReadWrite">
<Comment>Total dead since placed not counting today</Comment>
</UserDefElement>
<UserDefElement iecname="rolloverTrig" type="T_R_TRIG" byteoffset="20" vartype="VAR" access="ReadWrite">
<Comment>Rollover trigger</Comment>
</UserDefElement>
<UserDefElement iecname="addTdTrig" type="T_R_TRIG" byteoffset="22" vartype="VAR" access="ReadWrite" />
<UserDefElement iecname="totalDead" type="T_DINT" byteoffset="24" vartype="VAR_OUTPUT" access="ReadWrite" />
<UserDefElement iecname="deadTotal" type="T_DINT" byteoffset="28" vartype="VAR" propertytype="call" access="Read" />
<UserDefElement iecname="mortRatio" type="T_REAL" byteoffset="32" vartype="VAR" propertytype="call" access="Read" />
<UserDefElement iecname="remaining" type="T_DINT" byteoffset="36" vartype="VAR" propertytype="call" access="Read" />
</TypeUserDef>
<TypeUserDef name="T_atStageDevVari" size="228" nativesize="248" typeclass="Userdef" pouclass="FUNCTION_BLOCK" iecname="atStageDevVari">
<UserDefElement iecname="ctrlEn" type="T_BOOL" byteoffset="0" vartype="VAR_INPUT" access="ReadWrite">
<Comment>enable for various control schemes</Comment>
</UserDefElement>
<UserDefElement iecname="minSP" type="T_REAL" byteoffset="4" vartype="VAR_INPUT" access="ReadWrite">
<Comment>Min Setpoint</Comment>
</UserDefElement>
<UserDefElement iecname="maxSP" type="T_REAL" byteoffset="8" vartype="VAR_INPUT" access="ReadWrite">
<Comment>Max Setpoint</Comment>
</UserDefElement>
<UserDefElement iecname="ID" type="T_REAL" byteoffset="12" vartype="VAR_INPUT" access="ReadWrite" />
<UserDefElement iecname="in_name" type="T_STRING" byteoffset="16" vartype="VAR_INPUT" access="ReadWrite" />
<UserDefElement iecname="in_stageRatio" type="T_REAL" byteoffset="100" vartype="VAR_INPUT" access="ReadWrite" />
<UserDefElement iecname="outputScaling" type="T_atScaling" byteoffset="104" vartype="VAR_INPUT" access="ReadWrite" />
<UserDefElement iecname="idx" type="T_INT" byteoffset="216" vartype="VAR_INPUT" access="ReadWrite" />
<UserDefElement iecname="runDem" type="T_BOOL" byteoffset="218" vartype="VAR_INPUT" access="ReadWrite">
<Comment>Run Demand</Comment>
</UserDefElement>
<UserDefElement iecname="underRange" type="T_BOOL" byteoffset="219" vartype="VAR_INPUT" access="ReadWrite">
<Comment> Todo Future rename to outofRange to use for above or below (i.e Humidity ctl when top stage is active to deactivate hu control</Comment>
</UserDefElement>
<UserDefElement iecname="autoRun" type="T_BOOL" byteoffset="220" vartype="VAR_OUTPUT" access="ReadWrite" />
<UserDefElement iecname="autoSpeed" type="T_REAL" byteoffset="224" vartype="VAR_OUTPUT" access="ReadWrite" />
</TypeUserDef>
<TypeArray name="T_ARRAY__0__10__OF_atStageDevVari" size="2508" nativesize="2728" typeclass="Array" iecname="ARRAY [0..10] OF atStageDevVari" basetype="T_atStageDevVari">
<ArrayDim minrange="0" maxrange="10" />
</TypeArray>
<TypeArray name="T_ARRAY__0__2__OF_atIngredient" size="396" nativesize="456" typeclass="Array" iecname="ARRAY [0..2] OF atIngredient" basetype="T_atIngredient">
<ArrayDim minrange="0" maxrange="2" />
</TypeArray>
<TypeSimple name="T_REFERENCE_TO_atIngredient_REF" size="132" swapsize="0" typeclass="Reference" iecname="REFERENCE TO atIngredient_REF" basetype="T_atIngredient" />
<TypeUserDef name="T_atAiFault" size="96" nativesize="448" typeclass="Userdef" pouclass="FUNCTION_BLOCK" iecname="atAiFault">
<UserDefElement iecname="under" type="T_atAlarm" byteoffset="0" vartype="VAR_INPUT" access="ReadWrite">
<Comment>Channel input is underrange</Comment>
</UserDefElement>
<UserDefElement iecname="over" type="T_atAlarm" byteoffset="20" vartype="VAR_INPUT" access="ReadWrite">
<Comment>Channel input is overrange</Comment>
</UserDefElement>
<UserDefElement iecname="card" type="T_atAlarm" byteoffset="40" vartype="VAR_INPUT" access="ReadWrite">
<Comment>Card fault</Comment>
</UserDefElement>
<UserDefElement iecname="chan" type="T_atAlarm" byteoffset="60" vartype="VAR_INPUT" access="ReadWrite">
<Comment>Channel is faulted, underrange, overrange or card fault. </Comment>
</UserDefElement>
<UserDefElement iecname="in_reset" type="T_BOOL" byteoffset="79" vartype="VAR_INPUT" access="ReadWrite">
<Comment>Alarm reset</Comment>
</UserDefElement>
<UserDefElement iecname="in_raw" type="T_REAL" byteoffset="80" vartype="VAR_INPUT" access="ReadWrite">
<Comment>Raw input</Comment>
</UserDefElement>
<UserDefElement iecname="in_card" type="T_BOOL" byteoffset="84" vartype="VAR_INPUT" access="ReadWrite">
<Comment>Comms, power supply, or card fault</Comment>
</UserDefElement>
<UserDefElement iecname="in_overSP" type="T_REAL" byteoffset="88" vartype="VAR_INPUT" access="ReadWrite">
<Comment>Channel overrange setpoint, used to manually calculate overrange</Comment>
</UserDefElement>
<UserDefElement iecname="in_underSP" type="T_REAL" byteoffset="92" vartype="VAR_INPUT" access="ReadWrite">
<Comment>Channel underrange setpoint. used to manually calculate underrange</Comment>
</UserDefElement>
</TypeUserDef>
<TypeUserDef name="T_atCurveREAL" size="288" nativesize="344" typeclass="Userdef" pouclass="FUNCTION_BLOCK" iecname="atCurveREAL">
<UserDefElement iecname="keys" type="T_POINTER_TO_atCurveKey" byteoffset="0" vartype="VAR_INPUT" access="ReadWrite">
<Comment>Keys for curve</Comment>
</UserDefElement>
<UserDefElement iecname="curve" type="T_POINTER_TO_atCurveREALData" byteoffset="8" vartype="VAR_INPUT" access="ReadWrite">
<Comment>Data for curve</Comment>
</UserDefElement>
<UserDefElement iecname="in_key" type="T_REAL" byteoffset="16" vartype="VAR_INPUT" access="ReadWrite">
<Comment>Desired key at which to get the curve values</Comment>
</UserDefElement>
<UserDefElement iecname="in_resultType" type="T_atCurveOutType" byteoffset="20" vartype="VAR_INPUT" access="ReadWrite">
<Comment>Output type of the curve, stepped or smooth</Comment>
</UserDefElement>
<UserDefElement iecname="in_manualSP" type="T_REAL" byteoffset="24" vartype="VAR_INPUT" access="ReadWrite">
<Comment>Manual setpoint. Indicates the curve output when in auto</Comment>
</UserDefElement>
<UserDefElement iecname="in_Auto" type="T_BOOL" byteoffset="28" vartype="VAR_INPUT" access="ReadWrite">
<Comment>Auto/manual mode</Comment>
</UserDefElement>
<UserDefElement iecname="out_value" type="T_REAL" byteoffset="32" vartype="VAR_OUTPUT" access="ReadWrite">
<Comment>output value, either from the curve or the manual setpoint</Comment>
</UserDefElement>
<UserDefElement iecname="out_curve" type="T_REAL" byteoffset="36" vartype="VAR_OUTPUT" access="ReadWrite">
<Comment>output from the curve</Comment>
</UserDefElement>
<UserDefElement iecname="getIdx" type="T_atCurveGetKey" byteoffset="40" vartype="VAR" access="ReadWrite">
<Comment>Function to get the to index values that surround the desired key value</Comment>
</UserDefElement>
<UserDefElement iecname="scaling" type="T_atScaling" byteoffset="176" vartype="VAR" access="ReadWrite">
<Comment>scaling function for smooth result</Comment>
</UserDefElement>
</TypeUserDef>
<TypeUserDef name="T_atDIFault" size="42" nativesize="224" typeclass="Userdef" pouclass="FUNCTION_BLOCK" iecname="atDIFault">
<UserDefElement iecname="card" type="T_atAlarm" byteoffset="0" vartype="VAR_INPUT" access="ReadWrite">
<Comment>Card fault</Comment>
</UserDefElement>
<UserDefElement iecname="chan" type="T_atAlarm" byteoffset="20" vartype="VAR_INPUT" access="ReadWrite">
<Comment>Channel is faulted, underrange, overrange or card fault. </Comment>
</UserDefElement>
<UserDefElement iecname="in_reset" type="T_BOOL" byteoffset="39" vartype="VAR_INPUT" access="ReadWrite">
<Comment>Alarm reset</Comment>
</UserDefElement>
<UserDefElement iecname="in_card" type="T_BOOL" byteoffset="40" vartype="VAR_INPUT" access="ReadWrite">
<Comment>Comms, power supply, or card fault</Comment>
</UserDefElement>
<UserDefElement iecname="in_chan" type="T_BOOL" byteoffset="41" vartype="VAR_INPUT" access="ReadWrite">
<Comment>channel fault</Comment>
</UserDefElement>
</TypeUserDef>
<TypeUserDef name="T_atGadget" size="222" nativesize="3744" typeclass="Userdef" pouclass="FUNCTION_BLOCK" iecname="atGadget" basetype="T_atDevice">
<UserDefElement iecname="seq" type="T_atSeqCtl" byteoffset="0" vartype="VAR_INPUT" inherited_from="T_atDevice" access="ReadWrite">
<Comment> This should not be set, but is an input to be able to set attributes of this.</Comment>
</UserDefElement>
<UserDefElement iecname="in_parentMachine" type="T_POINTER_TO_atMachine" byteoffset="48" vartype="VAR_INPUT" inherited_from="T_atDevice" access="ReadWrite">
<Comment>This devices parent.</Comment>
</UserDefElement>
<UserDefElement iecname="in_fault" type="T_BOOL" byteoffset="56" vartype="VAR_INPUT" inherited_from="T_atDevice" access="ReadWrite">
<Comment>Motor Faulted - VFD fault or overload trip - this will not run in manual or auto</Comment>
</UserDefElement>
<UserDefElement iecname="in_seqDisable" type="T_BOOL" byteoffset="57" vartype="VAR_INPUT" inherited_from="T_atDevice" access="ReadWrite">
<Comment> Disable sequence, for standalone device</Comment>
</UserDefElement>
<UserDefElement iecname="in_autoRun" type="T_BOOL" byteoffset="58" vartype="VAR_INPUT" inherited_from="T_atDevice" access="ReadWrite">
<Comment> Demand to run in auto - normally set by seq controller.</Comment>
</UserDefElement>
<UserDefElement iecname="in_reset" type="T_BOOL" byteoffset="59" vartype="VAR_INPUT" inherited_from="T_atDevice" access="ReadWrite" />
<UserDefElement iecname="in_name" type="T_STRING" byteoffset="60" vartype="VAR_INPUT" inherited_from="T_atDevice" access="ReadWrite">
<Comment>Name of this device eg M03_01 Inc Drag</Comment>
</UserDefElement>
<UserDefElement iecname="in_ratedPower" type="T_REAL" byteoffset="144" vartype="VAR_INPUT" inherited_from="T_atDevice" access="ReadWrite">
<Comment> Rated power in kw</Comment>
</UserDefElement>
<UserDefElement iecname="in_pause" type="T_BOOL" byteoffset="148" vartype="VAR_INPUT" inherited_from="T_atDevice" access="ReadWrite">
<Comment>Pauses this device and its gadgets</Comment>
</UserDefElement>
<UserDefElement iecname="out_autoRun" type="T_BOOL" byteoffset="149" vartype="VAR_OUTPUT" inherited_from="T_atDevice" access="ReadWrite">
<Comment> Demand to run in auto, adds pause and inrush control to the in_autorun</Comment>
</UserDefElement>
<UserDefElement iecname="out_run" type="T_BOOL" byteoffset="150" vartype="VAR_OUTPUT" inherited_from="T_atDevice" access="ReadWrite">
<Comment>Run output</Comment>
</UserDefElement>
<UserDefElement iecname="out_runPerm" type="T_BOOL" byteoffset="151" vartype="VAR_OUTPUT" inherited_from="T_atDevice" access="ReadWrite">
<Comment>In Auto from sequence, in manual TRUE</Comment>
</UserDefElement>
<UserDefElement iecname="out_ready" type="T_BOOL" byteoffset="152" vartype="VAR_OUTPUT" inherited_from="T_atDevice" access="ReadWrite" />
<UserDefElement iecname="out_status" type="T_atDeviceStatus" byteoffset="154" vartype="VAR_OUTPUT" inherited_from="T_atDevice" access="ReadWrite">
<Comment>In Auto from sequence, in manual TRUE</Comment>
</UserDefElement>
<UserDefElement iecname="out_stateColor" type="T_DWORD" byteoffset="156" vartype="VAR_OUTPUT" inherited_from="T_atDevice" access="ReadWrite">
<Comment>Color used to indicate state</Comment>
</UserDefElement>
<UserDefElement iecname="out_depsFault" type="T_BOOL" byteoffset="160" vartype="VAR_OUTPUT" inherited_from="T_atDevice" access="ReadWrite">
<Comment>A depenedent has a fault</Comment>
</UserDefElement>
<UserDefElement iecname="out_power" type="T_REAL" byteoffset="164" vartype="VAR_OUTPUT" inherited_from="T_atDevice" access="ReadWrite">
<Comment> Power draw in watts</Comment>
</UserDefElement>
<UserDefElement iecname="out_paused" type="T_BOOL" byteoffset="168" vartype="VAR_OUTPUT" inherited_from="T_atDevice" access="ReadWrite">
<Comment>This device is pauses and won't start</Comment>
</UserDefElement>
<UserDefElement iecname="out_inrushDelay" type="T_BOOL" byteoffset="169" vartype="VAR_OUTPUT" inherited_from="T_atDevice" access="ReadWrite">
<Comment>Device is waiting for inrush from another motor to decay before it starts</Comment>
</UserDefElement>
<UserDefElement iecname="in_autoMode" type="T_BOOL" byteoffset="170" vartype="VAR_INPUT" inherited_from="T_atDevice" access="ReadWrite">
<Comment>Auto / manual</Comment>
</UserDefElement>
<UserDefElement iecname="out_runTime" type="T_DINT" byteoffset="172" vartype="VAR_OUTPUT" inherited_from="T_atDevice" access="ReadWrite">
<Comment>Tracks run time in seconds</Comment>
</UserDefElement>
<UserDefElement iecname="out_tss" type="T_DINT" byteoffset="176" vartype="VAR_OUTPUT" inherited_from="T_atDevice" access="ReadWrite">
<Comment>Tracks time since start in seconds</Comment>
</UserDefElement>
<UserDefElement iecname="now" type="T_ULINT" byteoffset="184" vartype="VAR" inherited_from="T_atDevice" access="ReadWrite" />
<UserDefElement iecname="devices" type="T_atDeviceList" byteoffset="208" inherited_from="T_atDevice" access="ReadWrite">
<Comment>List of all devices</Comment>
</UserDefElement>
<UserDefElement iecname="in_extUTS" type="T_BOOL" byteoffset="192" vartype="VAR_INPUT" access="ReadWrite">
<Comment> Motor is up to speed. External input (e.g speed sensor) - Defaults true</Comment>
</UserDefElement>
<UserDefElement iecname="in_manOnMaxSP" type="T_TIME" byteoffset="196" vartype="VAR_INPUT" access="ReadWrite">
<Comment>Maximum manual on time</Comment>
</UserDefElement>
<UserDefElement iecname="out_dlyTimeRem" type="T_TIME" byteoffset="200" vartype="VAR_OUTPUT" access="ReadWrite">
<Comment>Delay time remaining for start or stop delay</Comment>
</UserDefElement>
<UserDefElement iecname="out_dlyTimeAct" type="T_BOOL" byteoffset="204" vartype="VAR_OUTPUT" access="ReadWrite">
<Comment>Delay timer is active </Comment>
</UserDefElement>
</TypeUserDef>
<TypeUserDef name="T_atHistData" size="684" nativesize="696" typeclass="Userdef" pouclass="FUNCTION_BLOCK" iecname="atHistData">
<UserDefElement iecname="data" type="T_ARRAY__0__10__OF_POINTER_TO_atHistItemBase" byteoffset="0" vartype="VAR_INPUT" access="ReadWrite" />
<UserDefElement iecname="name" type="T_STRING" byteoffset="88" vartype="VAR_INPUT" access="ReadWrite">
<Comment>Name of index item. eg. Age</Comment>
</UserDefElement>
<UserDefElement iecname="selectedIdx" type="T_INT" byteoffset="170" vartype="VAR" access="ReadWrite">
<Comment>The index of the first displayed row</Comment>
</UserDefElement>
<UserDefElement iecname="usedRowCnt" type="T_INT" byteoffset="172" vartype="VAR" access="ReadWrite">
<Comment>Count of the rows that are currently in use</Comment>
</UserDefElement>
<UserDefElement iecname="scrollBarMax" type="T_INT" byteoffset="174" vartype="VAR" access="ReadWrite">
<Comment>Max size for scroll bar</Comment>
</UserDefElement>
<UserDefElement iecname="scrollBarPageSize" type="T_INT" byteoffset="176" vartype="VAR" access="ReadWrite">
<Comment>Page size for scroll bar</Comment>
</UserDefElement>
<UserDefElement iecname="i" type="T_DINT" byteoffset="180" vartype="VAR" access="ReadWrite">
<Comment>Loop Var</Comment>
</UserDefElement>
<UserDefElement iecname="values" type="T_ARRAY__0__99__OF_DINT" byteoffset="184" vartype="VAR" access="ReadWrite" />
<UserDefElement iecname="rowEn" type="T_ARRAY__0__99__OF_BOOL" byteoffset="584" vartype="VAR" access="ReadWrite" />
</TypeUserDef>
<TypeUserDef name="T_atHistRealAggregate" size="1296" nativesize="2552" typeclass="Userdef" pouclass="FUNCTION_BLOCK" iecname="atHistRealAggregate" basetype="T_atHistItemBase">
<UserDefElement iecname="name" type="T_STRING" byteoffset="0" vartype="VAR_INPUT" inherited_from="T_atHistItemBase" access="ReadWrite">
<Comment>Name of item</Comment>
</UserDefElement>
<UserDefElement iecname="values" type="T_ARRAY__0__99__OF_atHistRealAggregateItem" byteoffset="84" vartype="VAR_INPUT" access="ReadWrite" />
<UserDefElement iecname="sum" type="T_REAL" byteoffset="1284" vartype="VAR" access="ReadWrite" />
<UserDefElement iecname="count" type="T_REAL" byteoffset="1288" vartype="VAR" access="ReadWrite" />
<UserDefElement iecname="valueIn" type="T_REAL" byteoffset="1292" vartype="VAR" access="ReadWrite" />
</TypeUserDef>
<TypeUserDef name="T_atLimit" size="56" nativesize="216" typeclass="Userdef" pouclass="FUNCTION_BLOCK" iecname="atLimit">
<UserDefElement iecname="alm" type="T_atAlarm" byteoffset="0" vartype="VAR_INPUT" access="ReadWrite" />
<UserDefElement iecname="in_val" type="T_REAL" byteoffset="20" vartype="VAR_INPUT" access="ReadWrite" />
<UserDefElement iecname="in_type" type="T_atLimitType" byteoffset="24" vartype="VAR_INPUT" access="ReadWrite" />
<UserDefElement iecname="in_reset" type="T_BOOL" byteoffset="26" vartype="VAR_INPUT" access="ReadWrite" />
<UserDefElement iecname="in_procEn" type="T_BOOL" byteoffset="27" vartype="VAR_INPUT" access="ReadWrite">
<Comment> Process controlled enable. eg only enable rpm lo when motor running</Comment>
</UserDefElement>
<UserDefElement iecname="in_sp" type="T_REAL" byteoffset="28" vartype="VAR_INPUT" access="ReadWrite" />
<UserDefElement iecname="in_hyst" type="T_REAL" byteoffset="32" vartype="VAR_INPUT" access="ReadWrite" />
<UserDefElement iecname="in_en" type="T_BOOL" byteoffset="36" vartype="VAR_INPUT" access="ReadWrite" />
<UserDefElement iecname="in_delOn" type="T_TIME" byteoffset="40" vartype="VAR_INPUT" access="ReadWrite">
<Comment>once running this will prevent a quick spike</Comment>
</UserDefElement>
<UserDefElement iecname="in_delOff" type="T_TIME" byteoffset="44" vartype="VAR_INPUT" access="ReadWrite">
<Comment>allows machine to clean out before starting back up</Comment>
</UserDefElement>
<UserDefElement iecname="in_procDelOn" type="T_TIME" byteoffset="48" vartype="VAR_INPUT" access="ReadWrite">
<Comment>process enable delay on</Comment>
</UserDefElement>
<UserDefElement iecname="in_procDelOff" type="T_TIME" byteoffset="52" vartype="VAR_INPUT" access="ReadWrite">
<Comment>process enable delay off</Comment>
</UserDefElement>
</TypeUserDef>
<TypeUserDef name="T_atMachine" size="222" nativesize="3848" typeclass="Userdef" pouclass="FUNCTION_BLOCK" iecname="atMachine" basetype="T_atDevice">
<UserDefElement iecname="seq" type="T_atSeqCtl" byteoffset="0" vartype="VAR_INPUT" inherited_from="T_atDevice" access="ReadWrite">
<Comment> This should not be set, but is an input to be able to set attributes of this.</Comment>
</UserDefElement>
<UserDefElement iecname="in_parentMachine" type="T_POINTER_TO_atMachine" byteoffset="48" vartype="VAR_INPUT" inherited_from="T_atDevice" access="ReadWrite">
<Comment>This devices parent.</Comment>
</UserDefElement>
<UserDefElement iecname="in_fault" type="T_BOOL" byteoffset="56" vartype="VAR_INPUT" inherited_from="T_atDevice" access="ReadWrite">
<Comment>Motor Faulted - VFD fault or overload trip - this will not run in manual or auto</Comment>
</UserDefElement>
<UserDefElement iecname="in_seqDisable" type="T_BOOL" byteoffset="57" vartype="VAR_INPUT" inherited_from="T_atDevice" access="ReadWrite">
<Comment> Disable sequence, for standalone device</Comment>
</UserDefElement>
<UserDefElement iecname="in_autoRun" type="T_BOOL" byteoffset="58" vartype="VAR_INPUT" inherited_from="T_atDevice" access="ReadWrite">
<Comment> Demand to run in auto - normally set by seq controller.</Comment>
</UserDefElement>
<UserDefElement iecname="in_reset" type="T_BOOL" byteoffset="59" vartype="VAR_INPUT" inherited_from="T_atDevice" access="ReadWrite" />
<UserDefElement iecname="in_name" type="T_STRING" byteoffset="60" vartype="VAR_INPUT" inherited_from="T_atDevice" access="ReadWrite">
<Comment>Name of this device eg M03_01 Inc Drag</Comment>
</UserDefElement>
<UserDefElement iecname="in_ratedPower" type="T_REAL" byteoffset="144" vartype="VAR_INPUT" inherited_from="T_atDevice" access="ReadWrite">
<Comment> Rated power in kw</Comment>
</UserDefElement>
<UserDefElement iecname="in_pause" type="T_BOOL" byteoffset="148" vartype="VAR_INPUT" inherited_from="T_atDevice" access="ReadWrite">
<Comment>Pauses this device and its gadgets</Comment>
</UserDefElement>
<UserDefElement iecname="out_autoRun" type="T_BOOL" byteoffset="149" vartype="VAR_OUTPUT" inherited_from="T_atDevice" access="ReadWrite">
<Comment> Demand to run in auto, adds pause and inrush control to the in_autorun</Comment>
</UserDefElement>
<UserDefElement iecname="out_run" type="T_BOOL" byteoffset="150" vartype="VAR_OUTPUT" inherited_from="T_atDevice" access="ReadWrite">
<Comment>Run output</Comment>
</UserDefElement>
<UserDefElement iecname="out_runPerm" type="T_BOOL" byteoffset="151" vartype="VAR_OUTPUT" inherited_from="T_atDevice" access="ReadWrite">
<Comment>In Auto from sequence, in manual TRUE</Comment>
</UserDefElement>
<UserDefElement iecname="out_ready" type="T_BOOL" byteoffset="152" vartype="VAR_OUTPUT" inherited_from="T_atDevice" access="ReadWrite" />
<UserDefElement iecname="out_status" type="T_atDeviceStatus" byteoffset="154" vartype="VAR_OUTPUT" inherited_from="T_atDevice" access="ReadWrite">
<Comment>In Auto from sequence, in manual TRUE</Comment>
</UserDefElement>
<UserDefElement iecname="out_stateColor" type="T_DWORD" byteoffset="156" vartype="VAR_OUTPUT" inherited_from="T_atDevice" access="ReadWrite">
<Comment>Color used to indicate state</Comment>
</UserDefElement>
<UserDefElement iecname="out_depsFault" type="T_BOOL" byteoffset="160" vartype="VAR_OUTPUT" inherited_from="T_atDevice" access="ReadWrite">
<Comment>A depenedent has a fault</Comment>
</UserDefElement>
<UserDefElement iecname="out_power" type="T_REAL" byteoffset="164" vartype="VAR_OUTPUT" inherited_from="T_atDevice" access="ReadWrite">
<Comment> Power draw in watts</Comment>
</UserDefElement>
<UserDefElement iecname="out_paused" type="T_BOOL" byteoffset="168" vartype="VAR_OUTPUT" inherited_from="T_atDevice" access="ReadWrite">
<Comment>This device is pauses and won't start</Comment>
</UserDefElement>
<UserDefElement iecname="out_inrushDelay" type="T_BOOL" byteoffset="169" vartype="VAR_OUTPUT" inherited_from="T_atDevice" access="ReadWrite">
<Comment>Device is waiting for inrush from another motor to decay before it starts</Comment>
</UserDefElement>
<UserDefElement iecname="in_autoMode" type="T_BOOL" byteoffset="170" vartype="VAR_INPUT" inherited_from="T_atDevice" access="ReadWrite">
<Comment>Auto / manual</Comment>
</UserDefElement>
<UserDefElement iecname="out_runTime" type="T_DINT" byteoffset="172" vartype="VAR_OUTPUT" inherited_from="T_atDevice" access="ReadWrite">
<Comment>Tracks run time in seconds</Comment>
</UserDefElement>
<UserDefElement iecname="out_tss" type="T_DINT" byteoffset="176" vartype="VAR_OUTPUT" inherited_from="T_atDevice" access="ReadWrite">
<Comment>Tracks time since start in seconds</Comment>
</UserDefElement>
<UserDefElement iecname="now" type="T_ULINT" byteoffset="184" vartype="VAR" inherited_from="T_atDevice" access="ReadWrite" />
<UserDefElement iecname="devices" type="T_atDeviceList" byteoffset="208" inherited_from="T_atDevice" access="ReadWrite">
<Comment>List of all devices</Comment>
</UserDefElement>
<UserDefElement iecname="in_manStart" type="T_BOOL" byteoffset="192" vartype="VAR_INPUT" access="ReadWrite">
<Comment>Manual Start</Comment>
</UserDefElement>
<UserDefElement iecname="in_manStop" type="T_BOOL" byteoffset="193" vartype="VAR_INPUT" access="ReadWrite">
<Comment>Manual Stop</Comment>
</UserDefElement>
<UserDefElement iecname="in_extUTS" type="T_BOOL" byteoffset="194" vartype="VAR_INPUT" access="ReadWrite">
<Comment> Motor is up to speed. External input (e.g speed sensor) - Defaults true</Comment>
</UserDefElement>
<UserDefElement iecname="in_manOnMaxSP" type="T_TIME" byteoffset="196" vartype="VAR_INPUT" access="ReadWrite">
<Comment>Maximum manual on time</Comment>
</UserDefElement>
<UserDefElement iecname="out_dlyTimeRem" type="T_TIME" byteoffset="200" vartype="VAR_OUTPUT" access="ReadWrite">
<Comment>Delay time remaining for start or stop delay</Comment>
</UserDefElement>
<UserDefElement iecname="out_dlyTimeAct" type="T_BOOL" byteoffset="204" vartype="VAR_OUTPUT" access="ReadWrite">
<Comment>Delay timer is active</Comment>
</UserDefElement>
<UserDefElement iecname="out_runStatus" type="T_BOOL" byteoffset="205" vartype="VAR_OUTPUT" access="ReadWrite" />
<UserDefElement iecname="out_gadgetsFault" type="T_BOOL" byteoffset="206" vartype="VAR_OUTPUT" access="ReadWrite">
<Comment>A gadget has a fault</Comment>
</UserDefElement>
</TypeUserDef>
<TypeUserDef name="T_atTODWithOffset" size="40" nativesize="32" typeclass="Userdef" pouclass="FUNCTION_BLOCK" iecname="atTODWithOffset">
<UserDefElement iecname="in_fromRTC" type="T_BOOL" byteoffset="0" vartype="VAR_INPUT" access="ReadWrite">
<Comment>Gets the time from the real time clock</Comment>
</UserDefElement>
<UserDefElement iecname="settings" type="T_atTODSettings" byteoffset="4" vartype="VAR_INPUT" access="ReadWrite">
<Comment>global settings</Comment>
</UserDefElement>
<UserDefElement iecname="_utcMs" type="T_DINT" byteoffset="12" vartype="VAR" access="ReadWrite">
<Comment>UTC time of day in ms since midnight</Comment>
</UserDefElement>
<UserDefElement iecname="localHour" type="T_INT" byteoffset="16" vartype="VAR" propertytype="call" access="ReadWrite" />
<UserDefElement iecname="localMinute" type="T_INT" byteoffset="18" vartype="VAR" propertytype="call" access="ReadWrite" />
<UserDefElement iecname="localMs" type="T_DINT" byteoffset="20" vartype="VAR" propertytype="call" access="ReadWrite" />
<UserDefElement iecname="localSecond" type="T_INT" byteoffset="24" vartype="VAR" propertytype="call" access="ReadWrite" />
<UserDefElement iecname="localTOD" type="T_TIME_OF_DAY" byteoffset="28" vartype="VAR" propertytype="call" access="ReadWrite">
<Comment>Local time of day</Comment>
</UserDefElement>
<UserDefElement iecname="utcMs" type="T_DINT" byteoffset="32" vartype="VAR" propertytype="call" access="ReadWrite" />
<UserDefElement iecname="utcTOD" type="T_TIME_OF_DAY" byteoffset="36" vartype="VAR" propertytype="call" access="ReadWrite" />
</TypeUserDef>
<TypeSimple name="T_REFERENCE_TO_atTODWithOffset_REF" size="40" swapsize="0" typeclass="Reference" iecname="REFERENCE TO atTODWithOffset_REF" basetype="T_atTODWithOffset" />
<TypeUserDef name="T_atCurveTimeClockData" size="80" nativesize="72" typeclass="Userdef" pouclass="FUNCTION_BLOCK" iecname="atCurveTimeClockData">
<UserDefElement iecname="timeStart" type="T_atTODWithOffset" byteoffset="0" vartype="VAR_INPUT" access="ReadWrite" />
<UserDefElement iecname="timeStop" type="T_atTODWithOffset" byteoffset="40" vartype="VAR_INPUT" access="ReadWrite" />
</TypeUserDef>
<TypeUserDef name="T_atDI" size="167" nativesize="528" typeclass="Userdef" pouclass="FUNCTION_BLOCK" iecname="atDI">
<UserDefElement iecname="in_raw" type="T_BOOL" byteoffset="0" vartype="VAR_INPUT" access="ReadWrite">
<Comment>Raw input</Comment>
</UserDefElement>
<UserDefElement iecname="in_reset" type="T_BOOL" byteoffset="1" vartype="VAR_INPUT" access="ReadWrite">
<Comment>Alarm reset</Comment>
</UserDefElement>
<UserDefElement iecname="in_ready" type="T_BOOL" byteoffset="2" vartype="VAR_INPUT" access="ReadWrite">
<Comment>Indicates the the value at raw is now valid. Used at startup to delay updates until remote I/O has replied</Comment>
</UserDefElement>
<UserDefElement iecname="faults" type="T_atDIFault" byteoffset="4" vartype="VAR_INPUT" access="ReadWrite">
<Comment>fault</Comment>
</UserDefElement>
<UserDefElement iecname="alm" type="T_atAlarm" byteoffset="48" vartype="VAR_INPUT" access="ReadWrite">
<Comment> input used as an alarm</Comment>
</UserDefElement>
<UserDefElement iecname="debounce" type="T_atDebounce" byteoffset="68" vartype="VAR_INPUT" access="ReadWrite" />
<UserDefElement iecname="in_invert" type="T_BOOL" byteoffset="81" vartype="VAR_INPUT" access="ReadWrite">
<Comment>Invert Function Defaults to False</Comment>
</UserDefElement>
<UserDefElement iecname="in_name" type="T_STRING" byteoffset="82" vartype="VAR_INPUT" access="ReadWrite" />
<UserDefElement iecname="out_raw" type="T_BOOL" byteoffset="163" vartype="VAR_OUTPUT" access="ReadWrite">
<Comment>Raw input value</Comment>
</UserDefElement>
<UserDefElement iecname="out_val" type="T_BOOL" byteoffset="164" vartype="VAR_OUTPUT" access="ReadWrite">
<Comment>Debounced Input</Comment>
</UserDefElement>
<UserDefElement iecname="out_ready" type="T_BOOL" byteoffset="165" vartype="VAR_OUTPUT" access="ReadWrite">
<Comment>Output is valid. Used to delay using the value until startup overhead is complete, like waiting for remote I/O to respond</Comment>
</UserDefElement>
<UserDefElement iecname="raw" type="T_BOOL" byteoffset="166" vartype="VAR" access="ReadWrite" />
</TypeUserDef>
<TypeUserDef name="T_atLimits" size="232" nativesize="880" typeclass="Userdef" pouclass="FUNCTION_BLOCK" iecname="atLimits">
<UserDefElement iecname="in_val" type="T_REAL" byteoffset="0" vartype="VAR_INPUT" access="ReadWrite" />
<UserDefElement iecname="in_reset" type="T_BOOL" byteoffset="4" vartype="VAR_INPUT" access="ReadWrite" />
<UserDefElement iecname="hihi" type="T_atLimit" byteoffset="8" vartype="VAR_INPUT" access="ReadWrite" />
<UserDefElement iecname="hi" type="T_atLimit" byteoffset="64" vartype="VAR_INPUT" access="ReadWrite" />
<UserDefElement iecname="lo" type="T_atLimit" byteoffset="120" vartype="VAR_INPUT" access="ReadWrite" />
<UserDefElement iecname="lolo" type="T_atLimit" byteoffset="176" vartype="VAR_INPUT" access="ReadWrite" />
</TypeUserDef>
<TypeUserDef name="T_atStage" size="3234" nativesize="3592" typeclass="Userdef" pouclass="FUNCTION_BLOCK" iecname="atStage">
<UserDefElement iecname="hi" type="T_REAL" byteoffset="0" vartype="VAR_INPUT" access="ReadWrite">
<Comment>top of stage</Comment>
</UserDefElement>
<UserDefElement iecname="lo" type="T_REAL" byteoffset="4" vartype="VAR_INPUT" access="ReadWrite">
<Comment>bottom of stage</Comment>
</UserDefElement>
<UserDefElement iecname="center" type="T_REAL" byteoffset="8" vartype="VAR_INPUT" access="ReadWrite" />
<UserDefElement iecname="variableDev" type="T_ARRAY__0__10__OF_atStageDevVari" byteoffset="12" vartype="VAR_INPUT" access="ReadWrite" />
<UserDefElement iecname="fixedDev" type="T_ARRAY__0__5__OF_atStageDevFixed" byteoffset="2520" vartype="VAR_INPUT" access="ReadWrite" />
<UserDefElement iecname="active" type="T_BOOL" byteoffset="3072" vartype="VAR_INPUT" access="ReadWrite" />
<UserDefElement iecname="idx" type="T_INT" byteoffset="3074" vartype="VAR_INPUT" access="ReadWrite" />
<UserDefElement iecname="in_cv" type="T_REAL" byteoffset="3076" vartype="VAR_INPUT" access="ReadWrite">
<Comment>Current Temperature</Comment>
</UserDefElement>
<UserDefElement iecname="in_singleStageEn" type="T_BOOL" byteoffset="3080" vartype="VAR_INPUT" access="ReadWrite">
<Comment>For Humidity to enable below and out_ctl</Comment>
</UserDefElement>
<UserDefElement iecname="in_outOfRange" type="T_BOOL" byteoffset="3081" vartype="VAR_INPUT" access="ReadWrite">
<Comment>For Humidity ctl to disable fixed devices from running when below set Humidity range</Comment>
</UserDefElement>
<UserDefElement iecname="i" type="T_INT" byteoffset="3082" vartype="VAR" access="ReadWrite" />
<UserDefElement iecname="stageRatioScaling" type="T_atScaling" byteoffset="3084" vartype="VAR" access="ReadWrite" />
<UserDefElement iecname="stageRatio" type="T_REAL" byteoffset="3196" vartype="VAR" access="ReadWrite" />
<UserDefElement iecname="belowTMR_On" type="T_TON" byteoffset="3200" vartype="VAR" access="ReadWrite" />
<UserDefElement iecname="belowTMR_Off" type="T_TOF" byteoffset="3216" vartype="VAR" access="ReadWrite" />
<UserDefElement iecname="below" type="T_BOOL" byteoffset="3232" vartype="VAR" access="ReadWrite" />
<UserDefElement iecname="out_ctl" type="T_BOOL" byteoffset="3233" vartype="VAR_OUTPUT" access="ReadWrite">
<Comment>For Humidity ctl to show when devices are being controlled via humidity stage</Comment>
</UserDefElement>
</TypeUserDef>
<TypeUserDef name="T_atTemperatureCurve" size="524" nativesize="800" typeclass="Userdef" pouclass="FUNCTION_BLOCK" iecname="atTemperatureCurve">
<UserDefElement iecname="keysREAL" type="T_ARRAY__0__9__OF_atCurveKey" byteoffset="0" vartype="VAR" access="ReadWrite" />
<UserDefElement iecname="curveREAL" type="T_ARRAY__0__9__OF_atCurveREALData" byteoffset="80" vartype="VAR" access="ReadWrite">
<Comment>data for curve</Comment>
</UserDefElement>
<UserDefElement iecname="teCurveREAL" type="T_atCurveREAL" byteoffset="120" vartype="VAR" access="ReadWrite" />
<UserDefElement iecname="curveTeInREAL" type="T_REAL" byteoffset="408" vartype="VAR" access="ReadWrite" />
<UserDefElement iecname="curveTeOutREAL" type="T_REAL" byteoffset="412" vartype="VAR" access="ReadWrite" />
<UserDefElement iecname="teAutoTrig" type="T_F_TRIG" byteoffset="416" vartype="VAR" access="ReadWrite" />
<UserDefElement iecname="teSelected" type="T_REAL" byteoffset="420" vartype="VAR" access="ReadWrite" />
<UserDefElement iecname="curveTypeREAL" type="T_atCurveOutType" byteoffset="424" vartype="VAR" access="ReadWrite" />
<UserDefElement iecname="teAuto" type="T_BOOL" byteoffset="426" vartype="VAR" access="ReadWrite">
<Comment>Temperature auto / manual</Comment>
</UserDefElement>
<UserDefElement iecname="teManSP" type="T_REAL" byteoffset="428" vartype="VAR" access="ReadWrite">
<Comment>Temperature manual setpoint</Comment>
</UserDefElement>
<UserDefElement iecname="in_curveKey" type="T_REAL" byteoffset="432" vartype="VAR_INPUT" access="ReadWrite">
<Comment>The key to select the current curve index. Likely bird age</Comment>
</UserDefElement>
<UserDefElement iecname="in_name" type="T_STRING" byteoffset="436" vartype="VAR_INPUT" access="ReadWrite" />
<UserDefElement iecname="out_Te" type="T_REAL" byteoffset="520" vartype="VAR_OUTPUT" access="ReadWrite">
<Comment>Temperature output</Comment>
</UserDefElement>
</TypeUserDef>
<TypeArray name="T_ARRAY__0__10__OF_atStage" size="35596" nativesize="39512" typeclass="Array" iecname="ARRAY [0..10] OF atStage" basetype="T_atStage">
<ArrayDim minrange="0" maxrange="10" />
</TypeArray>
<TypeArray name="T_ARRAY__0__9__OF_atCurveTimeClockData" size="800" nativesize="720" typeclass="Array" iecname="ARRAY [0..9] OF atCurveTimeClockData" basetype="T_atCurveTimeClockData">
<ArrayDim minrange="0" maxrange="9" />
</TypeArray>
<TypeSimple name="T_REFERENCE_TO_atCurveTimeClockData_REF" size="80" swapsize="0" typeclass="Reference" iecname="REFERENCE TO atCurveTimeClockData_REF" basetype="T_atCurveTimeClockData" />
<TypeSimple name="T_REFERENCE_TO_atStage_REF" size="3234" swapsize="0" typeclass="Reference" iecname="REFERENCE TO atStage_REF" basetype="T_atStage" />
<TypeUserDef name="T_atAI" size="680" nativesize="1800" typeclass="Userdef" pouclass="FUNCTION_BLOCK" iecname="atAI">
<UserDefElement iecname="in_raw" type="T_REAL" byteoffset="0" vartype="VAR_INPUT" access="ReadWrite">
<Comment>Raw input</Comment>
</UserDefElement>
<UserDefElement iecname="in_calMin" type="T_BOOL" byteoffset="4" vartype="VAR_INPUT" access="ReadWrite">
<Comment>Calibrate min value to current input level</Comment>
</UserDefElement>
<UserDefElement iecname="in_calMax" type="T_BOOL" byteoffset="5" vartype="VAR_INPUT" access="ReadWrite">
<Comment>Calibrate max value to current input level</Comment>
</UserDefElement>
<UserDefElement iecname="in_reset" type="T_BOOL" byteoffset="6" vartype="VAR_INPUT" access="ReadWrite">
<Comment>Alarm reset</Comment>
</UserDefElement>
<UserDefElement iecname="in_ready" type="T_BOOL" byteoffset="7" vartype="VAR_INPUT" access="ReadWrite">
<Comment>Indicates the the value at raw is now valid. Used at startup to delay updates until remote I/O has replied</Comment>
</UserDefElement>
<UserDefElement iecname="limits" type="T_atLimits" byteoffset="8" vartype="VAR_INPUT" access="ReadWrite">
<Comment>Limit inputs</Comment>
</UserDefElement>
<UserDefElement iecname="scalingRaw" type="T_atScaling" byteoffset="240" vartype="VAR_INPUT" access="ReadWrite">
<Comment>Scaling Raw Input to percent</Comment>
</UserDefElement>
<UserDefElement iecname="scalingEU" type="T_atScaling" byteoffset="352" vartype="VAR_INPUT" access="ReadWrite">
<Comment>Scaling percent to EU</Comment>
</UserDefElement>
<UserDefElement iecname="faults" type="T_atAiFault" byteoffset="464" vartype="VAR_INPUT" access="ReadWrite">
<Comment>fault inputs</Comment>
</UserDefElement>
<UserDefElement iecname="filter" type="T_atFilter" byteoffset="560" vartype="VAR_INPUT" access="ReadWrite">
<Comment>Filtering from the scaling EU</Comment>
</UserDefElement>
<UserDefElement iecname="in_signal" type="T_REAL" byteoffset="572" vartype="VAR_INPUT" access="ReadWrite">
<Comment> Signal value, depending on input type</Comment>
</UserDefElement>
<UserDefElement iecname="in_name" type="T_STRING" byteoffset="576" vartype="VAR_INPUT" access="ReadWrite">
<Comment>Name the atAI for HMI visualization</Comment>
</UserDefElement>
<UserDefElement iecname="titleIDX_AI" type="T_INT" byteoffset="658" vartype="VAR_INPUT" access="ReadWrite">
<Comment> For using a text list in Webvisu if Persistant Variable Space is Limited (i.e. Using a Productivity PLC vs Raspberry)</Comment>
</UserDefElement>
<UserDefElement iecname="in_filterTim" type="T_DINT" byteoffset="660" vartype="VAR_INPUT" access="ReadWrite">
<Comment> Converts to Ms DINT for easy HMI entry</Comment>
</UserDefElement>
<UserDefElement iecname="out_scaled" type="T_REAL" byteoffset="664" vartype="VAR_OUTPUT" access="ReadWrite">
<Comment> Scaled value</Comment>
</UserDefElement>
<UserDefElement iecname="out_eu" type="T_REAL" byteoffset="668" vartype="VAR_OUTPUT" access="ReadWrite">
<Comment> Filtered and scaled value</Comment>
</UserDefElement>
<UserDefElement iecname="out_ready" type="T_BOOL" byteoffset="672" vartype="VAR_OUTPUT" access="ReadWrite">
<Comment> Output is ready for use.</Comment>
</UserDefElement>
<UserDefElement iecname="ai" type="T_BOOL" byteoffset="673" vartype="VAR" access="ReadWrite" />
<UserDefElement iecname="filtered" type="T_REAL" byteoffset="676" vartype="VAR" access="ReadWrite" />
</TypeUserDef>
<TypeUserDef name="T_atTODWithOffsetIsBetween" size="156" nativesize="80" typeclass="Userdef" pouclass="FUNCTION_BLOCK" iecname="atTODWithOffsetIsBetween">
<UserDefElement iecname="in_start" type="T_atTODWithOffset" byteoffset="0" vartype="VAR_INPUT" access="ReadWrite">
<Comment>Start time with offset</Comment>
</UserDefElement>
<UserDefElement iecname="in_stop" type="T_atTODWithOffset" byteoffset="40" vartype="VAR_INPUT" access="ReadWrite">
<Comment>Stop time with offset</Comment>
</UserDefElement>
<UserDefElement iecname="in_actual" type="T_atTODWithOffset" byteoffset="80" vartype="VAR_INPUT" access="ReadWrite">
<Comment>Time to check if it is between the start and stop times</Comment>
</UserDefElement>
<UserDefElement iecname="out_on" type="T_BOOL" byteoffset="120" vartype="VAR_OUTPUT" access="ReadWrite">
<Comment>On if actual is between start and stop</Comment>
</UserDefElement>
<UserDefElement iecname="out_ratio" type="T_REAL" byteoffset="124" vartype="VAR_OUTPUT" access="ReadWrite">
<Comment>ratio if postition between start and stop</Comment>
</UserDefElement>
<UserDefElement iecname="scale" type="T_atScalingDINT" byteoffset="128" vartype="VAR" access="ReadWrite">
<Comment>Function to scale transition</Comment>
</UserDefElement>
</TypeUserDef>
<TypeSimple name="T_REFERENCE_TO_atAI_REF" size="680" swapsize="0" typeclass="Reference" iecname="REFERENCE TO atAI_REF" basetype="T_atAI" />
<TypeUserDef name="T_atActuatorVtPls" size="1406" nativesize="7480" typeclass="Userdef" pouclass="FUNCTION_BLOCK" iecname="atActuatorVtPls" basetype="T_atGadget">
<UserDefElement iecname="seq" type="T_atSeqCtl" byteoffset="0" vartype="VAR_INPUT" inherited_from="T_atDevice" access="ReadWrite">
<Comment> This should not be set, but is an input to be able to set attributes of this.</Comment>
</UserDefElement>
<UserDefElement iecname="in_parentMachine" type="T_POINTER_TO_atMachine" byteoffset="48" vartype="VAR_INPUT" inherited_from="T_atDevice" access="ReadWrite">
<Comment>This devices parent.</Comment>
</UserDefElement>
<UserDefElement iecname="in_fault" type="T_BOOL" byteoffset="56" vartype="VAR_INPUT" inherited_from="T_atDevice" access="ReadWrite">
<Comment>Motor Faulted - VFD fault or overload trip - this will not run in manual or auto</Comment>
</UserDefElement>
<UserDefElement iecname="in_seqDisable" type="T_BOOL" byteoffset="57" vartype="VAR_INPUT" inherited_from="T_atDevice" access="ReadWrite">
<Comment> Disable sequence, for standalone device</Comment>
</UserDefElement>
<UserDefElement iecname="in_autoRun" type="T_BOOL" byteoffset="58" vartype="VAR_INPUT" inherited_from="T_atDevice" access="ReadWrite">
<Comment> Demand to run in auto - normally set by seq controller.</Comment>
</UserDefElement>
<UserDefElement iecname="in_reset" type="T_BOOL" byteoffset="59" vartype="VAR_INPUT" inherited_from="T_atDevice" access="ReadWrite" />
<UserDefElement iecname="in_name" type="T_STRING" byteoffset="60" vartype="VAR_INPUT" inherited_from="T_atDevice" access="ReadWrite">
<Comment>Name of this device eg M03_01 Inc Drag</Comment>
</UserDefElement>
<UserDefElement iecname="in_ratedPower" type="T_REAL" byteoffset="144" vartype="VAR_INPUT" inherited_from="T_atDevice" access="ReadWrite">
<Comment> Rated power in kw</Comment>
</UserDefElement>
<UserDefElement iecname="in_pause" type="T_BOOL" byteoffset="148" vartype="VAR_INPUT" inherited_from="T_atDevice" access="ReadWrite">
<Comment>Pauses this device and its gadgets</Comment>
</UserDefElement>
<UserDefElement iecname="out_autoRun" type="T_BOOL" byteoffset="149" vartype="VAR_OUTPUT" inherited_from="T_atDevice" access="ReadWrite">
<Comment> Demand to run in auto, adds pause and inrush control to the in_autorun</Comment>
</UserDefElement>
<UserDefElement iecname="out_run" type="T_BOOL" byteoffset="150" vartype="VAR_OUTPUT" inherited_from="T_atDevice" access="ReadWrite">
<Comment>Run output</Comment>
</UserDefElement>
<UserDefElement iecname="out_runPerm" type="T_BOOL" byteoffset="151" vartype="VAR_OUTPUT" inherited_from="T_atDevice" access="ReadWrite">
<Comment>In Auto from sequence, in manual TRUE</Comment>
</UserDefElement>
<UserDefElement iecname="out_ready" type="T_BOOL" byteoffset="152" vartype="VAR_OUTPUT" inherited_from="T_atDevice" access="ReadWrite" />
<UserDefElement iecname="out_status" type="T_atDeviceStatus" byteoffset="154" vartype="VAR_OUTPUT" inherited_from="T_atDevice" access="ReadWrite">
<Comment>In Auto from sequence, in manual TRUE</Comment>
</UserDefElement>
<UserDefElement iecname="out_stateColor" type="T_DWORD" byteoffset="156" vartype="VAR_OUTPUT" inherited_from="T_atDevice" access="ReadWrite">
<Comment>Color used to indicate state</Comment>
</UserDefElement>
<UserDefElement iecname="out_depsFault" type="T_BOOL" byteoffset="160" vartype="VAR_OUTPUT" inherited_from="T_atDevice" access="ReadWrite">
<Comment>A depenedent has a fault</Comment>
</UserDefElement>
<UserDefElement iecname="out_power" type="T_REAL" byteoffset="164" vartype="VAR_OUTPUT" inherited_from="T_atDevice" access="ReadWrite">
<Comment> Power draw in watts</Comment>
</UserDefElement>
<UserDefElement iecname="out_paused" type="T_BOOL" byteoffset="168" vartype="VAR_OUTPUT" inherited_from="T_atDevice" access="ReadWrite">
<Comment>This device is pauses and won't start</Comment>
</UserDefElement>
<UserDefElement iecname="out_inrushDelay" type="T_BOOL" byteoffset="169" vartype="VAR_OUTPUT" inherited_from="T_atDevice" access="ReadWrite">
<Comment>Device is waiting for inrush from another motor to decay before it starts</Comment>
</UserDefElement>
<UserDefElement iecname="in_autoMode" type="T_BOOL" byteoffset="170" vartype="VAR_INPUT" inherited_from="T_atDevice" access="ReadWrite">
<Comment>Auto / manual</Comment>
</UserDefElement>
<UserDefElement iecname="out_runTime" type="T_DINT" byteoffset="172" vartype="VAR_OUTPUT" inherited_from="T_atDevice" access="ReadWrite">
<Comment>Tracks run time in seconds</Comment>
</UserDefElement>
<UserDefElement iecname="out_tss" type="T_DINT" byteoffset="176" vartype="VAR_OUTPUT" inherited_from="T_atDevice" access="ReadWrite">
<Comment>Tracks time since start in seconds</Comment>
</UserDefElement>
<UserDefElement iecname="now" type="T_ULINT" byteoffset="184" vartype="VAR" inherited_from="T_atDevice" access="ReadWrite" />
<UserDefElement iecname="devices" type="T_atDeviceList" byteoffset="1392" inherited_from="T_atDevice" access="ReadWrite">
<Comment>List of all devices</Comment>
</UserDefElement>
<UserDefElement iecname="in_extUTS" type="T_BOOL" byteoffset="192" vartype="VAR_INPUT" inherited_from="T_atGadget" access="ReadWrite">
<Comment> Motor is up to speed. External input (e.g speed sensor) - Defaults true</Comment>
</UserDefElement>
<UserDefElement iecname="in_manOnMaxSP" type="T_TIME" byteoffset="196" vartype="VAR_INPUT" inherited_from="T_atGadget" access="ReadWrite">
<Comment>Maximum manual on time</Comment>
</UserDefElement>
<UserDefElement iecname="out_dlyTimeRem" type="T_TIME" byteoffset="200" vartype="VAR_OUTPUT" inherited_from="T_atGadget" access="ReadWrite">
<Comment>Delay time remaining for start or stop delay</Comment>
</UserDefElement>
<UserDefElement iecname="out_dlyTimeAct" type="T_BOOL" byteoffset="204" vartype="VAR_OUTPUT" inherited_from="T_atGadget" access="ReadWrite">
<Comment>Delay timer is active </Comment>
</UserDefElement>
<UserDefElement iecname="in_autoOffPos" type="T_REAL" byteoffset="208" vartype="VAR_INPUT" access="ReadWrite" />
<UserDefElement iecname="in_autoPos" type="T_REAL" byteoffset="212" vartype="VAR_INPUT" access="ReadWrite">
<Comment>In auto position demand</Comment>
</UserDefElement>
<UserDefElement iecname="in_manExtend" type="T_BOOL" byteoffset="216" vartype="VAR_INPUT" access="ReadWrite">
<Comment>Extend Command</Comment>
</UserDefElement>
<UserDefElement iecname="in_manRetract" type="T_BOOL" byteoffset="217" vartype="VAR_INPUT" access="ReadWrite">
<Comment>Retract Command</Comment>
</UserDefElement>
<UserDefElement iecname="in_manStop" type="T_BOOL" byteoffset="218" vartype="VAR_INPUT" access="ReadWrite">
<Comment>Stop Manual Movement</Comment>
</UserDefElement>
<UserDefElement iecname="ai" type="T_atAI" byteoffset="220" vartype="VAR_INPUT" access="ReadWrite" />
<UserDefElement iecname="in_posDem" type="T_REAL" byteoffset="900" vartype="VAR_INPUT" access="ReadWrite">
<Comment>Position demand</Comment>
</UserDefElement>
<UserDefElement iecname="posDemScaled" type="T_atScaling" byteoffset="904" vartype="VAR_INPUT" access="ReadWrite" />
<UserDefElement iecname="inletFanVar" type="T_atScaling" byteoffset="1016" vartype="VAR_INPUT" access="ReadWrite">
<Comment>For controlling inlet fans if applicable</Comment>
</UserDefElement>
<UserDefElement iecname="in_stalReset" type="T_BOOL" byteoffset="1128" vartype="VAR_INPUT" access="ReadWrite" />
<UserDefElement iecname="in_openLngPrs" type="T_BOOL" byteoffset="1129" vartype="VAR_INPUT" access="ReadWrite" />
<UserDefElement iecname="in_closeLngPrs" type="T_BOOL" byteoffset="1130" vartype="VAR_INPUT" access="ReadWrite" />
<UserDefElement iecname="in_manPos" type="T_REAL" byteoffset="1132" vartype="VAR_INPUT" access="ReadWrite">
<Comment>Manual Position setting </Comment>
</UserDefElement>
<UserDefElement iecname="in_posDly" type="T_TIME" byteoffset="1136" vartype="VAR_INPUT" access="ReadWrite">
<Comment>Delay to allow for in position</Comment>
</UserDefElement>
<UserDefElement iecname="in_motionDB" type="T_REAL" byteoffset="1140" vartype="VAR_INPUT" access="ReadWrite">
<Comment>Motion deadband in percent / second</Comment>
</UserDefElement>
<UserDefElement iecname="in_stallDelay" type="T_DINT" byteoffset="1144" vartype="VAR_INPUT" access="ReadWrite">
<Comment>How long before no motion triggers a stall</Comment>
</UserDefElement>
<UserDefElement iecname="atPosDlyTim" type="T_TIME" byteoffset="1148" vartype="VAR_INPUT" access="ReadWrite">
<Comment>Delay for at Position Timer </Comment>
</UserDefElement>
<UserDefElement iecname="in_HMICycleTMOn" type="T_DINT" byteoffset="1152" vartype="VAR_INPUT" access="ReadWrite">
<Comment>Pulse on Time MS</Comment>
</UserDefElement>
<UserDefElement iecname="in_HMICycleTMOff" type="T_DINT" byteoffset="1156" vartype="VAR_INPUT" access="ReadWrite">
<Comment>Pulse off Time MS</Comment>
</UserDefElement>
<UserDefElement iecname="stalledEn" type="T_BOOL" byteoffset="1160" vartype="VAR_INPUT" access="ReadWrite">
<Comment>Enable Stalled shutdown defaults to FALSE</Comment>
</UserDefElement>
<UserDefElement iecname="out_open" type="T_BOOL" byteoffset="1161" vartype="VAR_OUTPUT" access="ReadWrite">
<Comment>Open demand</Comment>
</UserDefElement>
<UserDefElement iecname="out_close" type="T_BOOL" byteoffset="1162" vartype="VAR_OUTPUT" access="ReadWrite">
<Comment>Close demand</Comment>
</UserDefElement>
<UserDefElement iecname="out_atPos" type="T_BOOL" byteoffset="1163" vartype="VAR_OUTPUT" access="ReadWrite">
<Comment>At position confirmation</Comment>
</UserDefElement>
<UserDefElement iecname="out_activeStat" type="T_BOOL" byteoffset="1164" vartype="VAR_OUTPUT" access="ReadWrite">
<Comment>Position active or above zero position</Comment>
</UserDefElement>
<UserDefElement iecname="stalled" type="T_atAlarm" byteoffset="1168" vartype="VAR_OUTPUT" access="ReadWrite">
<Comment>Stalled alarm</Comment>
</UserDefElement>
<UserDefElement iecname="out_PosDem" type="T_REAL" byteoffset="1188" vartype="VAR_OUTPUT" access="ReadWrite" />
<UserDefElement iecname="out_inletFanVar" type="T_REAL" byteoffset="1192" vartype="VAR_OUTPUT" access="ReadWrite">
<Comment>Inlet fan variable speed demand</Comment>
</UserDefElement>
<UserDefElement iecname="out_inletFanRun" type="T_BOOL" byteoffset="1196" vartype="VAR_OUTPUT" access="ReadWrite">
<Comment>Inlet fan fixed run command</Comment>
</UserDefElement>
<UserDefElement iecname="out_ActPos" type="T_REAL" byteoffset="1200" vartype="VAR_OUTPUT" access="ReadWrite">
<Comment>Actual Position </Comment>
</UserDefElement>
<UserDefElement iecname="out_readyDev" type="T_BOOL" byteoffset="1204" vartype="VAR_OUTPUT" access="ReadWrite" />
<UserDefElement iecname="tssSec" type="T_REAL" byteoffset="1208" vartype="VAR" access="ReadWrite">
<Comment>Time since start in seconds</Comment>
</UserDefElement>
<UserDefElement iecname="deadBand" type="T_REAL" byteoffset="1212" vartype="VAR" access="ReadWrite">
<Comment> Allowed error margin</Comment>
</UserDefElement>
<UserDefElement iecname="atPosDly" type="T_TON" byteoffset="1216" vartype="VAR" access="ReadWrite">
<Comment> Delay for minor adjustments before Declaring at Position</Comment>
</UserDefElement>
<UserDefElement iecname="atPosRun" type="T_BOOL" byteoffset="1232" vartype="VAR" access="ReadWrite">
<Comment>Start At Position Delay Timer</Comment>
</UserDefElement>
<UserDefElement iecname="req_open" type="T_BOOL" byteoffset="1233" vartype="VAR" access="ReadWrite">
<Comment> Toggles for out_open</Comment>
</UserDefElement>
<UserDefElement iecname="req_close" type="T_BOOL" byteoffset="1234" vartype="VAR" access="ReadWrite">
<Comment> Toggles for out_close</Comment>
</UserDefElement>
<UserDefElement iecname="lastPos" type="T_REAL" byteoffset="1236" vartype="VAR" access="ReadWrite" />
<UserDefElement iecname="traveling" type="T_BOOL" byteoffset="1240" vartype="VAR" access="ReadWrite" />
<UserDefElement iecname="stoppedTim" type="T_DINT" byteoffset="1244" vartype="VAR" access="ReadWrite" />
<UserDefElement iecname="reqOpen" type="T_BLINK" byteoffset="1248" vartype="VAR" access="ReadWrite" />
<UserDefElement iecname="reqClose" type="T_BLINK" byteoffset="1280" vartype="VAR" access="ReadWrite" />
<UserDefElement iecname="cycleTimeOn" type="T_TIME" byteoffset="1312" vartype="VAR" access="ReadWrite">
<Comment> Toggle duration (1 second)</Comment>
</UserDefElement>
<UserDefElement iecname="cycleTimeOff" type="T_TIME" byteoffset="1316" vartype="VAR" access="ReadWrite">
<Comment> Toggle duration (1 second)</Comment>
</UserDefElement>
<UserDefElement iecname="closeTmr" type="T_TON" byteoffset="1320" vartype="VAR" access="ReadWrite" />
<UserDefElement iecname="fastclose" type="T_BOOL" byteoffset="1336" vartype="VAR" access="ReadWrite" />
<UserDefElement iecname="extend" type="T_RS" byteoffset="1337" vartype="VAR" access="ReadWrite" />
<UserDefElement iecname="retract" type="T_RS" byteoffset="1340" vartype="VAR" access="ReadWrite" />
<UserDefElement iecname="trg" type="T_R_TRIG" byteoffset="1343" vartype="VAR" access="ReadWrite" />
<UserDefElement iecname="out_inletPos" type="T_REAL" byteoffset="1348" vartype="VAR" access="ReadWrite" />
<UserDefElement iecname="out_pos" type="T_REAL" byteoffset="1352" vartype="VAR" access="ReadWrite" />
<UserDefElement iecname="lngPrsTMR_open" type="T_TON" byteoffset="1356" vartype="VAR" access="ReadWrite" />
<UserDefElement iecname="lngPrsTMR_close" type="T_TON" byteoffset="1372" vartype="VAR" access="ReadWrite" />
<UserDefElement iecname="initialized" type="T_BOOL" byteoffset="1388" vartype="VAR" access="ReadWrite" />
</TypeUserDef>
<TypeUserDef name="T_atCurveTimeClock" size="364" nativesize="344" typeclass="Userdef" pouclass="FUNCTION_BLOCK" iecname="atCurveTimeClock">
<UserDefElement iecname="keys" type="T_POINTER_TO_atCurveKey" byteoffset="0" vartype="VAR_INPUT" access="ReadWrite">
<Comment>Keys for curve</Comment>
</UserDefElement>
<UserDefElement iecname="curve" type="T_POINTER_TO_atCurveTimeClockData" byteoffset="8" vartype="VAR_INPUT" access="ReadWrite">
<Comment>Data for curve</Comment>
</UserDefElement>
<UserDefElement iecname="TODSettings" type="T_atTODSettings" byteoffset="16" vartype="VAR_IN_OUT" access="ReadWrite">
<Comment>Time zone settings </Comment>
</UserDefElement>
<UserDefElement iecname="in_key" type="T_REAL" byteoffset="24" vartype="VAR_INPUT" access="ReadWrite">
<Comment>Desired key at which to get the curve values</Comment>
</UserDefElement>
<UserDefElement iecname="in_resultType" type="T_atCurveOutType" byteoffset="28" vartype="VAR_INPUT" access="ReadWrite">
<Comment>Output type of the curve, stepped or smooth</Comment>
</UserDefElement>
<UserDefElement iecname="out_value" type="T_atCurveTimeClockData" byteoffset="32" vartype="VAR_INPUT" access="ReadWrite">
<Comment>output value</Comment>
</UserDefElement>
<UserDefElement iecname="i" type="T_DINT" byteoffset="112" vartype="VAR" access="ReadWrite">
<Comment>Loop variable</Comment>
</UserDefElement>
<UserDefElement iecname="getIdx" type="T_atCurveGetKey" byteoffset="120" vartype="VAR" access="ReadWrite" />
<UserDefElement iecname="scaling" type="T_atScalingDINT" byteoffset="256" vartype="VAR" access="ReadWrite" />
<UserDefElement iecname="smoothOut" type="T_atCurveTimeClockData" byteoffset="284" vartype="VAR" access="ReadWrite">
<Comment>empty container for calculated values</Comment>
</UserDefElement>
</TypeUserDef>
<TypeUserDef name="T_atLoadCell" size="804" nativesize="2056" typeclass="Userdef" pouclass="FUNCTION_BLOCK" iecname="atLoadCell" basetype="T_atAI">
<UserDefElement iecname="in_raw" type="T_REAL" byteoffset="0" vartype="VAR_INPUT" inherited_from="T_atAI" access="ReadWrite">
<Comment>Raw input</Comment>
</UserDefElement>
<UserDefElement iecname="in_calMin" type="T_BOOL" byteoffset="4" vartype="VAR_INPUT" inherited_from="T_atAI" access="ReadWrite">
<Comment>Calibrate min value to current input level</Comment>
</UserDefElement>
<UserDefElement iecname="in_calMax" type="T_BOOL" byteoffset="5" vartype="VAR_INPUT" inherited_from="T_atAI" access="ReadWrite">
<Comment>Calibrate max value to current input level</Comment>
</UserDefElement>
<UserDefElement iecname="in_reset" type="T_BOOL" byteoffset="6" vartype="VAR_INPUT" inherited_from="T_atAI" access="ReadWrite">
<Comment>Alarm reset</Comment>
</UserDefElement>
<UserDefElement iecname="in_ready" type="T_BOOL" byteoffset="7" vartype="VAR_INPUT" inherited_from="T_atAI" access="ReadWrite">
<Comment>Indicates the the value at raw is now valid. Used at startup to delay updates until remote I/O has replied</Comment>
</UserDefElement>
<UserDefElement iecname="limits" type="T_atLimits" byteoffset="8" vartype="VAR_INPUT" inherited_from="T_atAI" access="ReadWrite">
<Comment>Limit inputs</Comment>
</UserDefElement>
<UserDefElement iecname="scalingRaw" type="T_atScaling" byteoffset="240" vartype="VAR_INPUT" inherited_from="T_atAI" access="ReadWrite">
<Comment>Scaling Raw Input to percent</Comment>
</UserDefElement>
<UserDefElement iecname="scalingEU" type="T_atScaling" byteoffset="352" vartype="VAR_INPUT" inherited_from="T_atAI" access="ReadWrite">
<Comment>Scaling percent to EU</Comment>
</UserDefElement>
<UserDefElement iecname="faults" type="T_atAiFault" byteoffset="464" vartype="VAR_INPUT" inherited_from="T_atAI" access="ReadWrite">
<Comment>fault inputs</Comment>
</UserDefElement>
<UserDefElement iecname="filter" type="T_atFilter" byteoffset="560" vartype="VAR_INPUT" inherited_from="T_atAI" access="ReadWrite">
<Comment>Filtering from the scaling EU</Comment>
</UserDefElement>
<UserDefElement iecname="in_signal" type="T_REAL" byteoffset="572" vartype="VAR_INPUT" inherited_from="T_atAI" access="ReadWrite">
<Comment> Signal value, depending on input type</Comment>
</UserDefElement>
<UserDefElement iecname="in_name" type="T_STRING" byteoffset="576" vartype="VAR_INPUT" inherited_from="T_atAI" access="ReadWrite">
<Comment>Name the atAI for HMI visualization</Comment>
</UserDefElement>
<UserDefElement iecname="titleIDX_AI" type="T_INT" byteoffset="658" vartype="VAR_INPUT" inherited_from="T_atAI" access="ReadWrite">
<Comment> For using a text list in Webvisu if Persistant Variable Space is Limited (i.e. Using a Productivity PLC vs Raspberry)</Comment>
</UserDefElement>
<UserDefElement iecname="in_filterTim" type="T_DINT" byteoffset="660" vartype="VAR_INPUT" inherited_from="T_atAI" access="ReadWrite">
<Comment> Converts to Ms DINT for easy HMI entry</Comment>
</UserDefElement>
<UserDefElement iecname="out_scaled" type="T_REAL" byteoffset="664" vartype="VAR_OUTPUT" inherited_from="T_atAI" access="ReadWrite">
<Comment> Scaled value</Comment>
</UserDefElement>
<UserDefElement iecname="out_eu" type="T_REAL" byteoffset="668" vartype="VAR_OUTPUT" inherited_from="T_atAI" access="ReadWrite">
<Comment> Filtered and scaled value</Comment>
</UserDefElement>
<UserDefElement iecname="out_ready" type="T_BOOL" byteoffset="672" vartype="VAR_OUTPUT" inherited_from="T_atAI" access="ReadWrite">
<Comment> Output is ready for use.</Comment>
</UserDefElement>
<UserDefElement iecname="ai" type="T_BOOL" byteoffset="673" vartype="VAR" inherited_from="T_atAI" access="ReadWrite" />
<UserDefElement iecname="filtered" type="T_REAL" byteoffset="676" vartype="VAR" inherited_from="T_atAI" access="ReadWrite" />
<UserDefElement iecname="in_stableDev" type="T_REAL" byteoffset="680" vartype="VAR_INPUT" access="ReadWrite" />
<UserDefElement iecname="in_stableDly" type="T_DINT" byteoffset="684" vartype="VAR_INPUT" access="ReadWrite" />
<UserDefElement iecname="in_mv_V" type="T_REAL" byteoffset="688" vartype="VAR_INPUT" access="ReadWrite" />
<UserDefElement iecname="in_maxWeight" type="T_REAL" byteoffset="692" vartype="VAR_INPUT" access="ReadWrite" />
<UserDefElement iecname="in_extVolt" type="T_REAL" byteoffset="696" vartype="VAR_INPUT" access="ReadWrite" />
<UserDefElement iecname="in_mvOffset" type="T_REAL" byteoffset="700" vartype="VAR_INPUT" access="ReadWrite" />
<UserDefElement iecname="in_autoZeroDly" type="T_DINT" byteoffset="704" vartype="VAR_INPUT" access="ReadWrite" />
<UserDefElement iecname="in_autoZeroTol" type="T_REAL" byteoffset="708" vartype="VAR_INPUT" access="ReadWrite" />
<UserDefElement iecname="in_kg_mv" type="T_REAL" byteoffset="712" vartype="VAR_INPUT" access="ReadWrite" />
<UserDefElement iecname="in_mv" type="T_REAL" byteoffset="716" vartype="VAR_INPUT" access="ReadWrite" />
<UserDefElement iecname="in_calWeight" type="T_REAL" byteoffset="720" vartype="VAR_INPUT" access="ReadWrite" />
<UserDefElement iecname="in_cal" type="T_BOOL" byteoffset="724" vartype="VAR_INPUT" access="ReadWrite">
<Comment>User can calibrate loadcell if the three possible inputs have been populated</Comment>
</UserDefElement>
<UserDefElement iecname="in_zero" type="T_BOOL" byteoffset="725" vartype="VAR_INPUT" access="ReadWrite">
<Comment>User can zero scale manually</Comment>
</UserDefElement>
<UserDefElement iecname="in_autoZero" type="T_BOOL" byteoffset="726" vartype="VAR_INPUT" access="ReadWrite">
<Comment>If Enabled it will allow program to auto zero</Comment>
</UserDefElement>
<UserDefElement iecname="in_stableSimIn" type="T_BOOL" byteoffset="727" vartype="VAR_INPUT" access="ReadWrite" />
<UserDefElement iecname="out_stable" type="T_BOOL" byteoffset="728" vartype="VAR_OUTPUT" access="ReadWrite" />
<UserDefElement iecname="euLast" type="T_REAL" byteoffset="732" vartype="VAR" access="ReadWrite" />
<UserDefElement iecname="dev" type="T_REAL" byteoffset="736" vartype="VAR" access="ReadWrite" />
<UserDefElement iecname="stabRaw" type="T_BOOL" byteoffset="740" vartype="VAR" access="ReadWrite" />
<UserDefElement iecname="stableTmr" type="T_TON" byteoffset="744" vartype="VAR" access="ReadWrite" />
<UserDefElement iecname="autoZeroTmr" type="T_TON" byteoffset="760" vartype="VAR" access="ReadWrite" />
<UserDefElement iecname="autoZeroed" type="T_BOOL" byteoffset="776" vartype="VAR" access="ReadWrite" />
<UserDefElement iecname="autoZero" type="T_BOOL" byteoffset="777" vartype="VAR" access="ReadWrite" />
<UserDefElement iecname="calc1" type="T_BOOL" byteoffset="778" vartype="VAR" access="ReadWrite" />
<UserDefElement iecname="caldone" type="T_R_TRIG" byteoffset="779" vartype="VAR" access="ReadWrite" />
<UserDefElement iecname="caldoneTMR" type="T_TON" byteoffset="784" vartype="VAR" access="ReadWrite" />
<UserDefElement iecname="weight" type="T_REAL" byteoffset="800" vartype="VAR" access="ReadWrite" />
</TypeUserDef>
<TypeUserDef name="T_atStageCtl" size="42132" nativesize="39608" typeclass="Userdef" pouclass="FUNCTION_BLOCK" iecname="atStageCtl">
<UserDefElement iecname="in_stagesHi" type="T_REAL" byteoffset="0" vartype="VAR_INPUT" access="ReadWrite">
<Comment>Offset from setpoint to the top of the highest stage</Comment>
</UserDefElement>
<UserDefElement iecname="in_stagesLo" type="T_REAL" byteoffset="4" vartype="VAR_INPUT" access="ReadWrite">
<Comment>Offset from setpoint to the bottom fo the lowest stage</Comment>
</UserDefElement>
<UserDefElement iecname="in_cv" type="T_REAL" byteoffset="8" vartype="VAR_INPUT" access="ReadWrite">
<Comment>Current temperature input</Comment>
</UserDefElement>
<UserDefElement iecname="stages" type="T_ARRAY__0__10__OF_atStage" byteoffset="12" vartype="VAR_INPUT" access="ReadWrite" />
<UserDefElement iecname="activeStage" type="T_atStage" byteoffset="35608" vartype="VAR_INPUT" access="ReadWrite" />
<UserDefElement iecname="hmiStage" type="T_atStage" byteoffset="38844" vartype="VAR_INPUT" access="ReadWrite" />
<UserDefElement iecname="in_offsetHi" type="T_REAL" byteoffset="42080" vartype="VAR_INPUT" access="ReadWrite" />
<UserDefElement iecname="in_offsetLo" type="T_REAL" byteoffset="42084" vartype="VAR_INPUT" access="ReadWrite" />
<UserDefElement iecname="in_stagesCnt" type="T_INT" byteoffset="42088" vartype="VAR_INPUT" access="ReadWrite">
<Comment>Number of stages</Comment>
</UserDefElement>
<UserDefElement iecname="in_stagesGap" type="T_REAL" byteoffset="42092" vartype="VAR_INPUT" access="ReadWrite">
<Comment>Gap between stages where nothing changes</Comment>
</UserDefElement>
<UserDefElement iecname="in_teSP" type="T_REAL" byteoffset="42096" vartype="VAR_INPUT" access="ReadWrite">
<Comment>Setpoint</Comment>
</UserDefElement>
<UserDefElement iecname="activeStageIdx" type="T_INT" byteoffset="42100" vartype="VAR_OUTPUT" access="ReadWrite" />
<UserDefElement iecname="hmiIDX" type="T_INT" byteoffset="42102" vartype="VAR_OUTPUT" access="ReadWrite" />
<UserDefElement iecname="i" type="T_INT" byteoffset="42104" vartype="VAR" access="ReadWrite">
<Comment>Loop variable</Comment>
</UserDefElement>
<UserDefElement iecname="span" type="T_REAL" byteoffset="42108" vartype="VAR" access="ReadWrite">
<Comment>total span from bottom of first stage to top of last stage</Comment>
</UserDefElement>
<UserDefElement iecname="stageStart" type="T_REAL" byteoffset="42112" vartype="VAR" access="ReadWrite" />
<UserDefElement iecname="stageInterval" type="T_REAL" byteoffset="42116" vartype="VAR" access="ReadWrite" />
<UserDefElement iecname="stageSize" type="T_REAL" byteoffset="42120" vartype="VAR" access="ReadWrite" />
<UserDefElement iecname="debug_hi" type="T_REAL" byteoffset="42124" vartype="VAR" access="ReadWrite" />
<UserDefElement iecname="debug_lo" type="T_REAL" byteoffset="42128" vartype="VAR" access="ReadWrite" />
</TypeUserDef>
<TypeUserDef name="T_atTeAI" size="692" nativesize="1816" typeclass="Userdef" pouclass="FUNCTION_BLOCK" iecname="atTeAI" basetype="T_atAI">
<UserDefElement iecname="in_raw" type="T_REAL" byteoffset="0" vartype="VAR_INPUT" inherited_from="T_atAI" access="ReadWrite">
<Comment>Raw input</Comment>
</UserDefElement>
<UserDefElement iecname="in_calMin" type="T_BOOL" byteoffset="4" vartype="VAR_INPUT" inherited_from="T_atAI" access="ReadWrite">
<Comment>Calibrate min value to current input level</Comment>
</UserDefElement>
<UserDefElement iecname="in_calMax" type="T_BOOL" byteoffset="5" vartype="VAR_INPUT" inherited_from="T_atAI" access="ReadWrite">
<Comment>Calibrate max value to current input level</Comment>
</UserDefElement>
<UserDefElement iecname="in_reset" type="T_BOOL" byteoffset="6" vartype="VAR_INPUT" inherited_from="T_atAI" access="ReadWrite">
<Comment>Alarm reset</Comment>
</UserDefElement>
<UserDefElement iecname="in_ready" type="T_BOOL" byteoffset="7" vartype="VAR_INPUT" inherited_from="T_atAI" access="ReadWrite">
<Comment>Indicates the the value at raw is now valid. Used at startup to delay updates until remote I/O has replied</Comment>
</UserDefElement>
<UserDefElement iecname="limits" type="T_atLimits" byteoffset="8" vartype="VAR_INPUT" inherited_from="T_atAI" access="ReadWrite">
<Comment>Limit inputs</Comment>
</UserDefElement>
<UserDefElement iecname="scalingRaw" type="T_atScaling" byteoffset="240" vartype="VAR_INPUT" inherited_from="T_atAI" access="ReadWrite">
<Comment>Scaling Raw Input to percent</Comment>
</UserDefElement>
<UserDefElement iecname="scalingEU" type="T_atScaling" byteoffset="352" vartype="VAR_INPUT" inherited_from="T_atAI" access="ReadWrite">
<Comment>Scaling percent to EU</Comment>
</UserDefElement>
<UserDefElement iecname="faults" type="T_atAiFault" byteoffset="464" vartype="VAR_INPUT" inherited_from="T_atAI" access="ReadWrite">
<Comment>fault inputs</Comment>
</UserDefElement>
<UserDefElement iecname="filter" type="T_atFilter" byteoffset="560" vartype="VAR_INPUT" inherited_from="T_atAI" access="ReadWrite">
<Comment>Filtering from the scaling EU</Comment>
</UserDefElement>
<UserDefElement iecname="in_signal" type="T_REAL" byteoffset="572" vartype="VAR_INPUT" inherited_from="T_atAI" access="ReadWrite">
<Comment> Signal value, depending on input type</Comment>
</UserDefElement>
<UserDefElement iecname="in_name" type="T_STRING" byteoffset="576" vartype="VAR_INPUT" inherited_from="T_atAI" access="ReadWrite">
<Comment>Name the atAI for HMI visualization</Comment>
</UserDefElement>
<UserDefElement iecname="titleIDX_AI" type="T_INT" byteoffset="658" vartype="VAR_INPUT" inherited_from="T_atAI" access="ReadWrite">
<Comment> For using a text list in Webvisu if Persistant Variable Space is Limited (i.e. Using a Productivity PLC vs Raspberry)</Comment>
</UserDefElement>
<UserDefElement iecname="in_filterTim" type="T_DINT" byteoffset="660" vartype="VAR_INPUT" inherited_from="T_atAI" access="ReadWrite">
<Comment> Converts to Ms DINT for easy HMI entry</Comment>
</UserDefElement>
<UserDefElement iecname="out_scaled" type="T_REAL" byteoffset="664" vartype="VAR_OUTPUT" inherited_from="T_atAI" access="ReadWrite">
<Comment> Scaled value</Comment>
</UserDefElement>
<UserDefElement iecname="out_eu" type="T_REAL" byteoffset="668" vartype="VAR_OUTPUT" inherited_from="T_atAI" access="ReadWrite">
<Comment> Filtered and scaled value</Comment>
</UserDefElement>
<UserDefElement iecname="out_ready" type="T_BOOL" byteoffset="672" vartype="VAR_OUTPUT" inherited_from="T_atAI" access="ReadWrite">
<Comment> Output is ready for use.</Comment>
</UserDefElement>
<UserDefElement iecname="ai" type="T_BOOL" byteoffset="673" vartype="VAR" inherited_from="T_atAI" access="ReadWrite" />
<UserDefElement iecname="filtered" type="T_REAL" byteoffset="676" vartype="VAR" inherited_from="T_atAI" access="ReadWrite" />
<UserDefElement iecname="in_thermType" type="T_INT" byteoffset="680" vartype="VAR_INPUT" access="ReadWrite">
<Comment>Therm Type (i.e 1 = 3K)</Comment>
</UserDefElement>
<UserDefElement iecname="in_resVal" type="T_INT" byteoffset="682" vartype="VAR_INPUT" access="ReadWrite">
<Comment>Resistor Value (i.e. 3267)</Comment>
</UserDefElement>
<UserDefElement iecname="in_supVlt" type="T_REAL" byteoffset="684" vartype="VAR_INPUT" access="ReadWrite">
<Comment>In Supply Voltage </Comment>
</UserDefElement>
<UserDefElement iecname="te1_res" type="T_REAL" byteoffset="688" vartype="VAR" access="ReadWrite" />
</TypeUserDef>
<TypeSimple name="T_REFERENCE_TO_atLoadCell_REF" size="804" swapsize="0" typeclass="Reference" iecname="REFERENCE TO atLoadCell_REF" basetype="T_atLoadCell" />
<TypeSimple name="T_REFERENCE_TO_atTeAI_REF" size="692" swapsize="0" typeclass="Reference" iecname="REFERENCE TO atTeAI_REF" basetype="T_atTeAI" />
<TypeUserDef name="T_atHSC" size="748" nativesize="472" typeclass="Userdef" pouclass="FUNCTION_BLOCK" iecname="atHSC">
<UserDefElement iecname="in_rawCount" type="T_UDINT" byteoffset="0" vartype="VAR_INPUT" access="ReadWrite">
<Comment>Raw count from IO</Comment>
</UserDefElement>
<UserDefElement iecname="in_reset" type="T_BOOL" byteoffset="4" vartype="VAR_INPUT" access="ReadWrite">
<Comment> Alarm reset</Comment>
</UserDefElement>
<UserDefElement iecname="ai" type="T_atAI" byteoffset="8" vartype="VAR_INPUT" access="ReadWrite" />
<UserDefElement iecname="resetDay" type="T_BOOL" byteoffset="688" vartype="VAR_INPUT" access="ReadWrite">
<Comment>Resets Current Day total</Comment>
</UserDefElement>
<UserDefElement iecname="in_avgTime" type="T_INT" byteoffset="690" vartype="VAR_INPUT" access="ReadWrite">
<Comment>Time Period for averaging</Comment>
</UserDefElement>
<UserDefElement iecname="in_multiplier" type="T_REAL" byteoffset="692" vartype="VAR_INPUT" access="ReadWrite">
<Comment>To Convert Counts to Hz (eg. slip sensor with 4 targets = 4, pulse/liter to pulse/gal = 3.78)</Comment>
</UserDefElement>
<UserDefElement iecname="out_freq" type="T_REAL" byteoffset="696" vartype="VAR_OUTPUT" access="ReadWrite">
<Comment>Cycles Per second</Comment>
</UserDefElement>
<UserDefElement iecname="volSmlTotal" type="T_REAL" byteoffset="700" vartype="VAR" access="ReadWrite" />
<UserDefElement iecname="volSmlTotalInt" type="T_UDINT" byteoffset="704" vartype="VAR" access="ReadWrite" />
<UserDefElement iecname="trig" type="T_R_TRIG" byteoffset="708" vartype="VAR" access="ReadWrite">
<Comment>Used in Process DI </Comment>
</UserDefElement>
<UserDefElement iecname="rst" type="T_TON" byteoffset="712" vartype="VAR" access="ReadWrite">
<Comment>Timer for long press to reset current day</Comment>
</UserDefElement>
<UserDefElement iecname="rstTrig" type="T_R_TRIG" byteoffset="728" vartype="VAR" access="ReadWrite">
<Comment>trigger to force reset of current dailydelta if used as water meter etc.</Comment>
</UserDefElement>
<UserDefElement iecname="pulseTotal" type="T_UDINT" byteoffset="732" vartype="VAR" access="ReadWrite">
<Comment>Pulse Count from digital input</Comment>
</UserDefElement>
<UserDefElement iecname="dayLastCnt" type="T_UDINT" byteoffset="736" vartype="VAR" access="ReadWrite">
<Comment>Last count of euTotal from day before</Comment>
</UserDefElement>
<UserDefElement iecname="euTotal" type="T_UDINT" byteoffset="740" vartype="VAR_OUTPUT" access="ReadWrite" />
<UserDefElement iecname="dailyDelta" type="T_UDINT" byteoffset="744" vartype="VAR_OUTPUT" access="ReadWrite" />
</TypeUserDef>
<TypeUserDef name="T_atInletCntrl" size="752" nativesize="200" typeclass="Userdef" pouclass="FUNCTION_BLOCK" iecname="atInletCntrl">
<UserDefElement iecname="in_sp" type="T_REAL" byteoffset="0" vartype="VAR_INPUT" access="ReadWrite">
<Comment>Setpoint </Comment>
</UserDefElement>
<UserDefElement iecname="in_mlply" type="T_REAL" byteoffset="4" vartype="VAR_INPUT" access="ReadWrite">
<Comment>Multiplier</Comment>
</UserDefElement>
<UserDefElement iecname="in_rateMax" type="T_REAL" byteoffset="8" vartype="VAR_INPUT" access="ReadWrite">
<Comment>Rate of Change Max Percent Per Minute</Comment>
</UserDefElement>
<UserDefElement iecname="in_deadBand" type="T_REAL" byteoffset="12" vartype="VAR_INPUT" access="ReadWrite" />
<UserDefElement iecname="in_spkDlySP" type="T_DINT" byteoffset="16" vartype="VAR_INPUT" access="ReadWrite">
<Comment>Delay Prevents sudden spikes from demanding pos change</Comment>
</UserDefElement>
<UserDefElement iecname="in_devPos" type="T_REAL" byteoffset="20" vartype="VAR_INPUT" access="ReadWrite">
<Comment>Current Position of Device From (atActuator - in_PosAct)</Comment>
</UserDefElement>
<UserDefElement iecname="in_act" type="T_REAL" byteoffset="24" vartype="VAR_INPUT" access="ReadWrite">
<Comment>Analog Input - in_act := out_eu;</Comment>
</UserDefElement>
<UserDefElement iecname="in_flip" type="T_BOOL" byteoffset="28" vartype="VAR_INPUT" access="ReadWrite">
<Comment>Flips the greater then and less then to reverse the demand direction</Comment>
</UserDefElement>
<UserDefElement iecname="in_autoMode" type="T_BOOL" byteoffset="29" vartype="VAR_INPUT" access="ReadWrite" />
<UserDefElement iecname="minSP" type="T_REAL" byteoffset="32" vartype="VAR_INPUT" access="ReadWrite" />
<UserDefElement iecname="maxSp" type="T_REAL" byteoffset="36" vartype="VAR_INPUT" access="ReadWrite" />
<UserDefElement iecname="in_staticPrs" type="T_atAI" byteoffset="40" vartype="VAR_IN_OUT" access="ReadWrite" />
<UserDefElement iecname="out_posDem" type="T_REAL" byteoffset="720" vartype="VAR_OUTPUT" access="ReadWrite">
<Comment>Actuator Demand - in_autoPos := out_posDem;</Comment>
</UserDefElement>
<UserDefElement iecname="error" type="T_REAL" byteoffset="724" vartype="VAR" access="ReadWrite" />
<UserDefElement iecname="extend" type="T_BOOL" byteoffset="728" vartype="VAR" access="ReadWrite" />
<UserDefElement iecname="retract" type="T_BOOL" byteoffset="729" vartype="VAR" access="ReadWrite" />
<UserDefElement iecname="posDem" type="T_BOOL" byteoffset="730" vartype="VAR" access="ReadWrite" />
<UserDefElement iecname="spkDly" type="T_TON" byteoffset="732" vartype="VAR" access="ReadWrite" />
<UserDefElement iecname="chgRate" type="T_REAL" byteoffset="748" vartype="VAR" access="ReadWrite" />
</TypeUserDef>
<TypeUserDef name="T_atLightClock" size="2024" nativesize="2032" typeclass="Userdef" pouclass="FUNCTION_BLOCK" iecname="atLightClock">
<UserDefElement iecname="curveTypeTC" type="T_atCurveOutType" byteoffset="0" vartype="VAR" access="ReadWrite" />
<UserDefElement iecname="powerAuto" type="T_BOOL" byteoffset="2" vartype="VAR" access="ReadWrite" />
<UserDefElement iecname="intensityAuto" type="T_BOOL" byteoffset="3" vartype="VAR" access="ReadWrite" />
<UserDefElement iecname="intensityManSP" type="T_REAL" byteoffset="4" vartype="VAR" access="ReadWrite" />
<UserDefElement iecname="duskDawnTransTime" type="T_DINT" byteoffset="8" vartype="VAR" access="ReadWrite" />
<UserDefElement iecname="duskDawnEn" type="T_BOOL" byteoffset="12" vartype="VAR" access="ReadWrite" />
<UserDefElement iecname="duskDawnActive" type="T_BOOL" byteoffset="13" vartype="VAR" access="ReadWrite" />
<UserDefElement iecname="duskDawnIntensityTarget" type="T_REAL" byteoffset="16" vartype="VAR" access="ReadWrite" />
<UserDefElement iecname="intensityCurrent" type="T_REAL" byteoffset="20" vartype="VAR" access="ReadWrite">
<Comment> Ramping vars</Comment>
</UserDefElement>
<UserDefElement iecname="intensityTarget" type="T_REAL" byteoffset="24" vartype="VAR" access="ReadWrite" />
<UserDefElement iecname="power" type="T_BOOL" byteoffset="28" vartype="VAR" access="ReadWrite" />
<UserDefElement iecname="in_curveKey" type="T_REAL" byteoffset="32" vartype="VAR_INPUT" access="ReadWrite" />
<UserDefElement iecname="in_TODSettings" type="T_atTODSettings" byteoffset="36" vartype="VAR_IN_OUT" access="ReadWrite" />
<UserDefElement iecname="out_intensity" type="T_REAL" byteoffset="44" vartype="VAR_OUTPUT" access="ReadWrite" />
<UserDefElement iecname="out_power" type="T_BOOL" byteoffset="48" vartype="VAR_OUTPUT" access="ReadWrite" />
<UserDefElement iecname="curveTC" type="T_atCurveTimeClock" byteoffset="56" vartype="VAR" access="ReadWrite" />
<UserDefElement iecname="keysTC" type="T_ARRAY__0__9__OF_atCurveKey" byteoffset="420" vartype="VAR" access="ReadWrite" />
<UserDefElement iecname="curveTCData" type="T_ARRAY__0__9__OF_atCurveTimeClockData" byteoffset="500" vartype="VAR" access="ReadWrite" />
<UserDefElement iecname="curveOutTC" type="T_atCurveTimeClockData" byteoffset="1300" vartype="VAR" access="ReadWrite" />
<UserDefElement iecname="curveIntensity" type="T_atCurveREAL" byteoffset="1384" vartype="VAR" access="ReadWrite" />
<UserDefElement iecname="curveIntensityData" type="T_ARRAY__0__9__OF_atCurveREALData" byteoffset="1672" vartype="VAR" access="ReadWrite" />
<UserDefElement iecname="curveOutIntensity" type="T_REAL" byteoffset="1712" vartype="VAR" access="ReadWrite" />
<UserDefElement iecname="intensitySelected" type="T_REAL" byteoffset="1716" vartype="VAR" access="ReadWrite" />
<UserDefElement iecname="intensityHeld" type="T_REAL" byteoffset="1720" vartype="VAR" access="ReadWrite">
<Comment> Keeps last known intensity setpoint</Comment>
</UserDefElement>
<UserDefElement iecname="powerAutoOn" type="T_BOOL" byteoffset="1724" vartype="VAR" access="ReadWrite" />
<UserDefElement iecname="dawnStart" type="T_atTODWithOffset" byteoffset="1728" vartype="VAR" access="ReadWrite" />
<UserDefElement iecname="duskEnd" type="T_atTODWithOffset" byteoffset="1768" vartype="VAR" access="ReadWrite" />
<UserDefElement iecname="transRatio" type="T_REAL" byteoffset="1808" vartype="VAR" access="ReadWrite" />
<UserDefElement iecname="isBetween" type="T_atTODWithOffsetIsBetween" byteoffset="1812" vartype="VAR" access="ReadWrite" />
<UserDefElement iecname="nowTOD" type="T_atTODWithOffset" byteoffset="1968" vartype="VAR" access="ReadWrite" />
<UserDefElement iecname="updateTimer" type="T_TON" byteoffset="2008" vartype="VAR" access="ReadWrite" />
</TypeUserDef>
<TypeUserDef name="T_atMixerControl" size="1336" nativesize="992" typeclass="Userdef" pouclass="FUNCTION_BLOCK" iecname="atMixerControl">
<Comment>Feed weigher / mixer</Comment>
<UserDefElement iecname="in_dumpCtl" type="T_atAutoManOnOff" byteoffset="0" vartype="VAR_INPUT" access="ReadWrite">
<Comment>dump mechanism control</Comment>
</UserDefElement>
<UserDefElement iecname="in_midnightReset" type="T_BOOL" byteoffset="4" vartype="VAR_INPUT" access="ReadWrite">
<Comment>Pulse to reset totals at midnight</Comment>
</UserDefElement>
<UserDefElement iecname="in_dumpEn" type="T_BOOL" byteoffset="5" vartype="VAR_INPUT" access="ReadWrite">
<Comment>Enable Dump normally on when weigh hopper is empty </Comment>
</UserDefElement>
<UserDefElement iecname="in_start" type="T_BOOL" byteoffset="6" vartype="VAR_INPUT" access="ReadWrite">
<Comment>Start mixing. Is reset to false immediatly</Comment>
</UserDefElement>
<UserDefElement iecname="in_weigherCapacity" type="T_REAL" byteoffset="8" vartype="VAR_INPUT" access="ReadWrite">
<Comment>Capacity of the scale. Recipes will use this to calculate amounts</Comment>
</UserDefElement>
<UserDefElement iecname="in_dumpCloseDelay" type="T_REAL" byteoffset="12" vartype="VAR_INPUT" access="ReadWrite">
<Comment>Delay time for dump to close (seconds)</Comment>
</UserDefElement>
<UserDefElement iecname="in_wheatPct" type="T_REAL" byteoffset="16" vartype="VAR_INPUT" access="ReadWrite">
<Comment>Wheat demand in percent (0-100)</Comment>
</UserDefElement>
<UserDefElement iecname="in_enable" type="T_BOOL" byteoffset="20" vartype="VAR_INPUT" access="ReadWrite">
<Comment>Mixer enable/disable. When disabled mixer alarms also disabled</Comment>
</UserDefElement>
<UserDefElement iecname="in_loggerEn" type="T_BOOL" byteoffset="21" vartype="VAR_INPUT" access="ReadWrite">
<Comment>Logger enable. Turn on to enable logging to system log.</Comment>
</UserDefElement>
<UserDefElement iecname="in_loadCell" type="T_atLoadCell" byteoffset="24" vartype="VAR_IN_OUT" access="ReadWrite">
<Comment>Reference to an at loadcell </Comment>
</UserDefElement>
<UserDefElement iecname="in_ingredients" type="T_POINTER_TO_atIngredient" byteoffset="832" vartype="VAR_INPUT" access="ReadWrite">
<Comment>List of ingredients</Comment>
</UserDefElement>
<UserDefElement iecname="in_reset" type="T_BOOL" byteoffset="840" vartype="VAR_IN_OUT" access="ReadWrite">
<Comment>Alarm reset</Comment>
</UserDefElement>
<UserDefElement iecname="out_mixerEmpty" type="T_BOOL" byteoffset="841" vartype="VAR_OUTPUT" access="ReadWrite">
<Comment>Mixer is empty</Comment>
</UserDefElement>
<UserDefElement iecname="timeoutWhileFilling" type="T_atAlarm" byteoffset="844" vartype="VAR_OUTPUT" access="ReadWrite">
<Comment>Alarm to indicate it took to long to fill the weigh hopper to the desired weight</Comment>
</UserDefElement>
<UserDefElement iecname="timeoutWhileDumping" type="T_atAlarm" byteoffset="864" vartype="VAR_OUTPUT" access="ReadWrite">
<Comment>Alarm to indicate it took to long for the weigh hopper to empty</Comment>
</UserDefElement>
<UserDefElement iecname="noPremixIngredient" type="T_atAlarm" byteoffset="884" vartype="VAR_OUTPUT" access="ReadWrite">
<Comment>Alarm to indicate there is no premix ingredient defined</Comment>
</UserDefElement>
<UserDefElement iecname="totalToday" type="T_REAL" byteoffset="904" vartype="VAR_OUTPUT" access="ReadWrite">
<Comment>Total amount mixed today (kg) </Comment>
</UserDefElement>
<UserDefElement iecname="state" type="T_atMixerState" byteoffset="908" vartype="VAR_OUTPUT" access="ReadWrite">
<Comment>State of the mixer</Comment>
</UserDefElement>
<UserDefElement iecname="timeoutWhileFillingSP" type="T_REAL" byteoffset="912" vartype="VAR" access="ReadWrite">
<Comment>Delay time in seconds for timeout while filling alarm</Comment>
</UserDefElement>
<UserDefElement iecname="timeoutWhileDumpingSP" type="T_REAL" byteoffset="916" vartype="VAR" access="ReadWrite">
<Comment>Delay time in seconds for timout while dumping alarm</Comment>
</UserDefElement>
<UserDefElement iecname="activeIngIdx" type="T_INT" byteoffset="920" vartype="VAR" access="ReadWrite">
<Comment>Active ingredient index</Comment>
</UserDefElement>
<UserDefElement iecname="i" type="T_DINT" byteoffset="924" vartype="VAR" access="ReadWrite">
<Comment>Loop variable</Comment>
</UserDefElement>
<UserDefElement iecname="ub" type="T_DINT" byteoffset="928" vartype="VAR" access="ReadWrite">
<Comment>Array uppder bound</Comment>
</UserDefElement>
<UserDefElement iecname="scaleZero" type="T_REAL" byteoffset="932" vartype="VAR" access="ReadWrite">
<Comment>Zero weight for the current batch</Comment>
</UserDefElement>
<UserDefElement iecname="stateLast" type="T_atMixerState" byteoffset="936" vartype="VAR" access="ReadWrite" />
<UserDefElement iecname="stateTime" type="T_atStopWatch" byteoffset="944" vartype="VAR" access="ReadWrite">
<Comment>Time since this state became active</Comment>
</UserDefElement>
<UserDefElement iecname="activeIng" type="T_atIngredient" byteoffset="964" vartype="VAR" access="ReadWrite" />
<UserDefElement iecname="logger" type="T_atSystemLog" byteoffset="1096" vartype="VAR" access="ReadWrite">
<Comment>System log writer</Comment>
</UserDefElement>
<UserDefElement iecname="wheatEn" type="T_BOOL" byteoffset="1265" vartype="VAR" access="ReadWrite">
<Comment>Wheat is enabled</Comment>
</UserDefElement>
<UserDefElement iecname="premixPct" type="T_REAL" byteoffset="1268" vartype="VAR" access="ReadWrite">
<Comment>Premix demand in percent (0-100)</Comment>
</UserDefElement>
<UserDefElement iecname="timeoutWhileFillingReset" type="T_BOOL" byteoffset="1272" vartype="VAR" access="ReadWrite">
<Comment>Internal reset to</Comment>
</UserDefElement>
<UserDefElement iecname="autoSwitchPending" type="T_BOOL" byteoffset="1273" vartype="VAR" access="ReadWrite">
<Comment>Auto switch to other bin is pending for the start of the next batch</Comment>
</UserDefElement>
<UserDefElement iecname="timeoutWithBackup" type="T_BOOL" byteoffset="1274" vartype="VAR" access="ReadWrite">
<Comment>Fill timeout while there is a backup premix has occured</Comment>
</UserDefElement>
<UserDefElement iecname="midnightResetTrig" type="T_R_TRIG" byteoffset="1275" vartype="VAR" access="ReadWrite">
<Comment>Midnight reset trigger</Comment>
</UserDefElement>
<UserDefElement iecname="zSimWeighHopperWht" type="T_REAL" byteoffset="1280" vartype="VAR" access="ReadWrite">
<Comment>Weight in the weigh hopper that is under the weigher</Comment>
</UserDefElement>
<UserDefElement iecname="zSimDumpWht" type="T_REAL" byteoffset="1284" vartype="VAR" access="ReadWrite">
<Comment>Amount of weight to remove from wheigher on each scan during dump</Comment>
</UserDefElement>
<UserDefElement iecname="zSimFillDebounce" type="T_ARRAY__0__2__OF_atDebounce" byteoffset="1288" vartype="VAR" access="ReadWrite">
<Comment>used to add some some freefall to the ingredient fill</Comment>
</UserDefElement>
</TypeUserDef>
<TypeUserDef name="T_atMultiTeAvg" size="2808" nativesize="176" typeclass="Userdef" pouclass="FUNCTION_BLOCK" iecname="atMultiTeAvg">
<UserDefElement iecname="te1" type="T_atTeAI" byteoffset="0" vartype="VAR_INPUT" access="ReadWrite" />
<UserDefElement iecname="te2" type="T_atTeAI" byteoffset="692" vartype="VAR_INPUT" access="ReadWrite" />
<UserDefElement iecname="te3" type="T_atTeAI" byteoffset="1384" vartype="VAR_INPUT" access="ReadWrite" />
<UserDefElement iecname="te4" type="T_atTeAI" byteoffset="2076" vartype="VAR_INPUT" access="ReadWrite" />
<UserDefElement iecname="in_titleIDXd" type="T_REAL" byteoffset="2768" vartype="VAR_INPUT" access="ReadWrite" />
<UserDefElement iecname="out_eu" type="T_REAL" byteoffset="2772" vartype="VAR_OUTPUT" access="ReadWrite">
<Comment>Filtered output temperature</Comment>
</UserDefElement>
<UserDefElement iecname="use1" type="T_BOOL" byteoffset="2776" vartype="VAR" access="ReadWrite">
<Comment>Use Sensor 1</Comment>
</UserDefElement>
<UserDefElement iecname="use2" type="T_BOOL" byteoffset="2777" vartype="VAR" access="ReadWrite">
<Comment>Use Sensor 2</Comment>
</UserDefElement>
<UserDefElement iecname="use3" type="T_BOOL" byteoffset="2778" vartype="VAR" access="ReadWrite">
<Comment>Use Sensor 3</Comment>
</UserDefElement>
<UserDefElement iecname="use4" type="T_BOOL" byteoffset="2779" vartype="VAR" access="ReadWrite">
<Comment>Use Sensor 4</Comment>
</UserDefElement>
<UserDefElement iecname="te1_eu" type="T_REAL" byteoffset="2780" vartype="VAR" access="ReadWrite" />
<UserDefElement iecname="te2_eu" type="T_REAL" byteoffset="2784" vartype="VAR" access="ReadWrite" />
<UserDefElement iecname="te3_eu" type="T_REAL" byteoffset="2788" vartype="VAR" access="ReadWrite" />
<UserDefElement iecname="te4_eu" type="T_REAL" byteoffset="2792" vartype="VAR" access="ReadWrite" />
<UserDefElement iecname="validCount" type="T_REAL" byteoffset="2796" vartype="VAR" access="ReadWrite" />
<UserDefElement iecname="sum" type="T_REAL" byteoffset="2800" vartype="VAR" access="ReadWrite" />
<UserDefElement iecname="lastVal" type="T_REAL" byteoffset="2804" vartype="VAR" access="ReadWrite">
<Comment>Last value</Comment>
</UserDefElement>
</TypeUserDef>
</TypeList>
<NodeList>
<Node name="Application">
<Node name="AlarmManager">
<Node name="AlarmGlobals">
<Comment> This GVL must be initialized before GVL "GloballyForAlarmStorage", because this GVL
causes the initialization of the variable g_stApplicationName.
We only need the date and time format pattern for the converted code, therefore
we can (and must!) omit the rest from conversion
We must not use an attribute to hide this GVL, because there are some variables,
that a developer might use. Additionally it is necessary, that this GVL in considered
in the data server, but not visible for the user, because some variables of this GVL
are added to the data source selection implicitely and for this purpose it is necessary,
that this GVL is a part of the available items tree.</Comment>
<Node name="g_diAlarmStateTransitionCounter" type="T_DINT" access="Read">
<Comment> A global counter, that counts all the alarm state transitions, that occur.
Needed by the alarm table for optimized painting. If this counter doesn't
change during subsequent paint calls, the same alarms have been active and
in the same state.
Conditional show attribute must not be present for this variable, because
some architectural problems it can lead in a not correct regitration
CHECKED_OMIT</Comment>
</Node>
<Node name="g_diAlarmStorageCounter" type="T_DINT" access="Read">
<Comment> A similar counter, that will be incremented each time an alarm is written
into the alarm storage. This allows the alarm table to detect, whether
some kind of processing has to be done, because there exists a new alarm.
Conditional show attribute must not be present for this variable, because
some architectural problems it can lead in a not correct regitration
CHECKED_OMIT</Comment>
</Node>
<Node name="g_iAlarmStorageClear" type="T_INT" access="Read">
<Comment> Counts the times when the alarm table has been deleted.
CHECKED_OMIT</Comment>
</Node>
</Node>
</Node>
<Node name="atActuatorVtPls">
<Node name="devices" type="T_atDeviceList" access="ReadWrite">
<Comment>List of all devices</Comment>
</Node>
</Node>
<Node name="atDevice">
<Node name="devices" type="T_atDeviceList" access="ReadWrite">
<Comment>List of all devices</Comment>
</Node>
</Node>
<Node name="atGadget">
<Node name="devices" type="T_atDeviceList" access="ReadWrite">
<Comment>List of all devices</Comment>
</Node>
</Node>
<Node name="atGH">
<Node name="aiIdx" type="T_INT" access="ReadWrite" />
<Node name="aiVis" type="T_BOOL" access="ReadWrite" />
<Node name="almAck" type="T_BOOL" access="ReadWrite" />
<Node name="almAckAll" type="T_BOOL" access="ReadWrite" />
<Node name="almActive" type="T_BOOL" access="ReadWrite" />
<Node name="almCount" type="T_REAL" access="ReadWrite" />
<Node name="almHist" type="T_BOOL" access="ReadWrite" />
<Node name="almScrollFrz" type="T_BOOL" access="ReadWrite" />
<Node name="cycleActive" type="T_BOOL" access="ReadWrite" />
<Node name="datacalEmty" type="T_BOOL" access="ReadWrite" />
<Node name="datacalFull" type="T_BOOL" access="ReadWrite" />
<Node name="dataClear" type="T_BOOL" access="ReadWrite" />
<Node name="diIdx" type="T_INT" access="ReadWrite" />
<Node name="diVis" type="T_BOOL" access="ReadWrite" />
<Node name="dqIdx" type="T_INT" access="ReadWrite" />
<Node name="dqVis" type="T_BOOL" access="ReadWrite" />
<Node name="frameIDX" type="T_INT" access="ReadWrite" />
<Node name="idx" type="T_INT" access="ReadWrite" />
<Node name="litertoGalUnit" type="T_litertoGalUnitType" access="ReadWrite" />
<Node name="pageIDX" type="T_INT" access="ReadWrite" />
<Node name="passwrd" type="T_STRING" access="ReadWrite" />
<Node name="passwrdacpt" type="T_BOOL" access="ReadWrite" />
<Node name="selecAI_IOIdx" type="T_INT" access="ReadWrite" />
<Node name="selecDi_IOIdx" type="T_INT" access="ReadWrite" />
<Node name="selecDQ_IOIdx" type="T_INT" access="ReadWrite" />
<Node name="selectStageIdx" type="T_INT" access="ReadWrite">
<Comment> For dialog box selection</Comment>
</Node>
<Node name="settings" type="T_BOOL" access="ReadWrite" />
<Node name="srvcRmCtl" type="T_BOOL" access="ReadWrite" />
<Node name="temperatureUnit" type="T_TemperatureUnitTypes" access="ReadWrite" />
<Node name="tzSet" type="T_atTZss" access="ReadWrite" />
<Node name="user" type="T_STRING" access="ReadWrite" />
<Node name="weightcal" type="T_BOOL" access="ReadWrite" />
<Node name="weightUnit" type="T_WeightUnitType" access="ReadWrite" />
</Node>
<Node name="atGVL">
<Node name="hmiReset" type="T_BOOL" access="ReadWrite" />
<Node name="reset" type="T_BOOL" access="ReadWrite">
<Comment> Alarm reset</Comment>
</Node>
<Node name="simEn" type="T_BOOL" access="ReadWrite">
<Comment> Enable simulator mode</Comment>
</Node>
<Node name="TODsettings" type="T_atTODSettings" access="ReadWrite">
<Comment>atTOD settings</Comment>
</Node>
<Node name="ver" type="T_atVersion" access="ReadWrite">
<Comment>Project Version</Comment>
</Node>
</Node>
<Node name="atMachine">
<Node name="devices" type="T_atDeviceList" access="ReadWrite">
<Comment>List of all devices</Comment>
</Node>
</Node>
<Node name="Feed">
<Node name="augerRun" type="T_BOOL" access="ReadWrite" />
<Node name="augerRunTMR" type="T_TON" access="ReadWrite" />
<Node name="augerRunTMRset" type="T_RS" access="ReadWrite" />
<Node name="augerSet" type="T_RS" access="ReadWrite" />
<Node name="augerStartCnt" type="T_INT" access="ReadWrite" />
<Node name="augerStop" type="T_BOOL" access="ReadWrite" />
<Node name="augStrtTrig" type="T_R_TRIG" access="ReadWrite" />
<Node name="in_augerEn" type="T_BOOL" access="ReadWrite">
<Comment>Auger enable</Comment>
</Node>
<Node name="in_augerOffDLY" type="T_DINT" access="ReadWrite" />
<Node name="in_augerOnDLY" type="T_DINT" access="ReadWrite" />
<Node name="in_augerRunTim" type="T_DINT" access="ReadWrite" />
<Node name="ingredients" type="T_ARRAY__0__2__OF_atIngredient" access="ReadWrite" />
<Node name="mixer" type="T_atMixerControl" access="ReadWrite" />
<Node name="out_wheatRate" type="T_REAL" access="ReadWrite">
<Comment>Wheat mix ration in percent (0-100)</Comment>
</Node>
<Node name="wheatCurve" type="T_atCurveREAL" access="ReadWrite" />
</Node>
<Node name="g">
<Node name="birdAge" type="T_DINT" access="ReadWrite">
<Comment>System</Comment>
</Node>
<Node name="birdSclLc" type="T_atLoadCell" access="ReadWrite" />
<Node name="chimFanVar" type="T_atAQ" access="ReadWrite" />
<Node name="circEn" type="T_BOOL" access="ReadWrite" />
<Node name="circFan1_2Var" type="T_atAQ" access="ReadWrite" />
<Node name="circFan3_4Var" type="T_atAQ" access="ReadWrite" />
<Node name="crossAuger" type="T_atDQ" access="ReadWrite" />
<Node name="crossAugerLimit" type="T_atDI" access="ReadWrite" />
<Node name="fan1_36N" type="T_atDQ" access="ReadWrite" />
<Node name="fan2_36S" type="T_atDQ" access="ReadWrite" />
<Node name="fan3_48N" type="T_atDQ" access="ReadWrite" />
<Node name="fan4_48S" type="T_atDQ" access="ReadWrite" />
<Node name="fdLn1" type="T_atDQ" access="ReadWrite" />
<Node name="fdLn2" type="T_atDQ" access="ReadWrite" />
<Node name="fdLn3" type="T_atDQ" access="ReadWrite" />
<Node name="fdVlv1" type="T_atDQ" access="ReadWrite">
<Comment>Dq's</Comment>
</Node>
<Node name="fdVlv2" type="T_atDQ" access="ReadWrite" />
<Node name="fdVlv3" type="T_atDQ" access="ReadWrite" />
<Node name="fdVlv4" type="T_atDQ" access="ReadWrite" />
<Node name="fdWghLc" type="T_atLoadCell" access="ReadWrite" />
<Node name="feedAuger1" type="T_atDQ" access="ReadWrite" />
<Node name="feedMixEmpty" type="T_atDI" access="ReadWrite" />
<Node name="feedMixFull" type="T_atDI" access="ReadWrite" />
<Node name="feedWghDump" type="T_atDQ" access="ReadWrite" />
<Node name="fv1Close" type="T_atDI" access="ReadWrite" />
<Node name="fv1Open" type="T_atDI" access="ReadWrite">
<Comment>DI's</Comment>
</Node>
<Node name="fv2Close" type="T_atDI" access="ReadWrite" />
<Node name="fv2Open" type="T_atDI" access="ReadWrite" />
<Node name="fv3Close" type="T_atDI" access="ReadWrite" />
<Node name="fv3Open" type="T_atDI" access="ReadWrite" />
<Node name="fv4Close" type="T_atDI" access="ReadWrite" />
<Node name="fv4Open" type="T_atDI" access="ReadWrite" />
<Node name="heat" type="T_atDQ" access="ReadWrite" />
<Node name="humidity" type="T_atAI" access="ReadWrite">
<Comment>AI</Comment>
</Node>
<Node name="humidityCtl" type="T_atStage" access="ReadWrite">
<Comment>Humidity Control</Comment>
</Node>
<Node name="inletCtl" type="T_atInletCntrl" access="ReadWrite">
<Comment>Inlet Conrol</Comment>
</Node>
<Node name="lightClock" type="T_atLightClock" access="ReadWrite">
<Comment>Light Control</Comment>
</Node>
<Node name="lightDimmer" type="T_atAQ" access="ReadWrite">
<Comment>AQ</Comment>
</Node>
<Node name="lights" type="T_BOOL" access="ReadWrite" />
<Node name="mortality" type="T_atMortality" access="ReadWrite">
<Comment>Mortality</Comment>
</Node>
<Node name="outTemp" type="T_atTeAI" access="ReadWrite" />
<Node name="pitFanN" type="T_atDQ" access="ReadWrite" />
<Node name="pitFanVar" type="T_atAQ" access="ReadWrite" />
<Node name="pwrFailureLine" type="T_atDI" access="ReadWrite" />
<Node name="pwrFailureUPS" type="T_atDI" access="ReadWrite" />
<Node name="runTMRReset" type="T_BOOL" access="ReadWrite" />
<Node name="stageCtl" type="T_atStageCtl" access="ReadWrite">
<Comment>Stage Control</Comment>
</Node>
<Node name="staticPrs" type="T_atAI" access="ReadWrite" />
<Node name="sumInletClose" type="T_atDQ" access="ReadWrite" />
<Node name="sumInletDamper" type="T_atActuatorVtPls" access="ReadWrite">
<Comment>Devices</Comment>
</Node>
<Node name="sumInletOpen" type="T_atDQ" access="ReadWrite" />
<Node name="teCurve" type="T_atTemperatureCurve" access="ReadWrite">
<Comment>Temperature Control</Comment>
</Node>
<Node name="temp" type="T_atMultiTeAvg" access="ReadWrite" />
<Node name="temp1" type="T_atTeAI" access="ReadWrite" />
<Node name="temp2" type="T_atTeAI" access="ReadWrite" />
<Node name="versionNum" type="T_STRING" access="ReadWrite" />
<Node name="water" type="T_atAI" access="ReadWrite" />
<Node name="waterMtr" type="T_atHSC" access="ReadWrite" />
<Node name="waterPressBlw" type="T_atDI" access="ReadWrite" />
<Node name="waterSol" type="T_atDQ" access="ReadWrite" />
<Node name="wheatCurveData" type="T_ARRAY__0__9__OF_atCurveREALData" access="ReadWrite">
<Comment>Wheat curve data</Comment>
</Node>
<Node name="wheatCurveKeys" type="T_ARRAY__0__9__OF_atCurveKey" access="ReadWrite">
<Comment>Wheat curve base</Comment>
</Node>
<Node name="winInletClose" type="T_atDQ" access="ReadWrite" />
<Node name="winInletDamper" type="T_atActuatorVtPls" access="ReadWrite" />
<Node name="winInletOpen" type="T_atDQ" access="ReadWrite" />
</Node>
<Node name="Heat">
<Node name="HHTEalm" type="T_REAL" access="ReadWrite" />
<Node name="in_heatoffset" type="T_REAL" access="ReadWrite" />
<Node name="in_highTeAlmOffset" type="T_REAL" access="ReadWrite" />
<Node name="in_humidityoffset" type="T_REAL" access="ReadWrite" />
<Node name="in_lowTeAlmOffset" type="T_REAL" access="ReadWrite" />
<Node name="in_outsideTeOffset" type="T_REAL" access="ReadWrite" />
<Node name="LLTEalm" type="T_REAL" access="ReadWrite" />
<Node name="tb1" type="T_BOOL" access="ReadWrite" />
<Node name="tb2" type="T_BOOL" access="ReadWrite" />
<Node name="tb3" type="T_BOOL" access="ReadWrite" />
<Node name="tb4" type="T_BOOL" access="ReadWrite" />
</Node>
<Node name="History">
<Node name="clear" type="T_BOOL" access="ReadWrite">
<Comment>Clear all log</Comment>
</Node>
<Node name="dataLoaded" type="T_BOOL" access="ReadWrite" />
<Node name="DateTimeULINT" type="T_ULINT" access="ReadWrite" />
<Node name="day" type="T_INT" access="ReadWrite">
<Comment>day value for log</Comment>
</Node>
<Node name="deadTd" type="T_atHistDint" access="ReadWrite">
<Comment>Daily Dead Record</Comment>
</Node>
<Node name="hist" type="T_atHistData" access="ReadWrite" />
<Node name="hu" type="T_atHistRealAggregate" access="ReadWrite">
<Comment>Humidity log</Comment>
</Node>
<Node name="i" type="T_INT" access="ReadWrite" />
<Node name="ing1Feed" type="T_atHistReal" access="ReadWrite">
<Comment>Ingredient 1 Total</Comment>
</Node>
<Node name="ing2Feed" type="T_atHistReal" access="ReadWrite">
<Comment>Ingredient 2 Total </Comment>
</Node>
<Node name="ing3Feed" type="T_atHistReal" access="ReadWrite">
<Comment>Ingredient 3 Total </Comment>
</Node>
<Node name="mortRatio" type="T_atHistReal" access="ReadWrite">
<Comment>Mortality %</Comment>
</Node>
<Node name="remainTd" type="T_atHistDint" access="ReadWrite">
<Comment>Daily Remaining after Deads</Comment>
</Node>
<Node name="result" type="T_Util_RTS_IEC_RESULT" access="ReadWrite" />
<Node name="rtc" type="T_Util_SYSTIMEDATE" access="ReadWrite" />
<Node name="shiftTrig" type="T_R_TRIG" access="ReadWrite" />
<Node name="te" type="T_atHistRealAggregate" access="ReadWrite">
<Comment>Temperature log</Comment>
</Node>
<Node name="totalDead" type="T_atHistDint" access="ReadWrite">
<Comment>Total Dead not Including Today</Comment>
</Node>
<Node name="totalFeed" type="T_atHistReal" access="ReadWrite">
<Comment>Feed usage log</Comment>
</Node>
<Node name="water" type="T_atHistDint" access="ReadWrite">
<Comment>Water usage log</Comment>
</Node>
</Node>
<Node name="Stages">
<Node name="chimFan" type="T_REAL" access="ReadWrite" />
<Node name="chimFanHu" type="T_BOOL" access="ReadWrite" />
<Node name="chimFanRun" type="T_BOOL" access="ReadWrite" />
<Node name="circFan1_2" type="T_REAL" access="ReadWrite" />
<Node name="circFan1_2Hu" type="T_BOOL" access="ReadWrite" />
<Node name="circFan1_2Run" type="T_BOOL" access="ReadWrite" />
<Node name="circFan3_4" type="T_REAL" access="ReadWrite" />
<Node name="circFan3_4Hu" type="T_BOOL" access="ReadWrite" />
<Node name="circFan3_4Run" type="T_BOOL" access="ReadWrite" />
<Node name="fan1_36NRun" type="T_BOOL" access="ReadWrite" />
<Node name="fan2_36SRun" type="T_BOOL" access="ReadWrite" />
<Node name="fan3_48NRun" type="T_BOOL" access="ReadWrite" />
<Node name="fan4_48SRun" type="T_BOOL" access="ReadWrite" />
<Node name="heatHumCtl" type="T_BOOL" access="ReadWrite" />
<Node name="heatStgCtl" type="T_BOOL" access="ReadWrite" />
<Node name="lastHu" type="T_REAL" access="ReadWrite" />
<Node name="pitFan" type="T_REAL" access="ReadWrite" />
<Node name="pitFanHu" type="T_BOOL" access="ReadWrite" />
<Node name="pitFanRun" type="T_BOOL" access="ReadWrite" />
</Node>
<Node name="System">
<Node name="alm" type="T_ARRAY__0__27__OF_BOOL" access="ReadWrite" />
<Node name="dataReset" type="T_BOOL" access="ReadWrite" />
<Node name="i" type="T_INT" access="ReadWrite" />
<Node name="out_activeAlmCnt" type="T_REAL" access="ReadWrite" />
<Node name="reset" type="T_BOOL" access="ReadWrite" />
<Node name="resetLatch" type="T_RS" access="ReadWrite" />
<Node name="resetRst" type="T_TON" access="ReadWrite" />
<Node name="resetTMR" type="T_TON" access="ReadWrite" />
</Node>
<Node name="Water">
<Node name="highFlow" type="T_BOOL" access="ReadWrite" />
<Node name="highFlowTMR" type="T_TON" access="ReadWrite" />
<Node name="in_highFlowRate" type="T_REAL" access="ReadWrite" />
<Node name="in_highFlowTim" type="T_DINT" access="ReadWrite" />
<Node name="out_HighFlowALM" type="T_BOOL" access="ReadWrite" />
<Node name="out_waterGal" type="T_REAL" access="ReadWrite">
<Comment>For the graph on atom HMI</Comment>
</Node>
<Node name="out_waterGPM" type="T_REAL" access="ReadWrite">
<Comment>For the graph on atom HMI</Comment>
</Node>
</Node>
</Node>
</NodeList>
</Symbolconfiguration>