Changed all components to use HAL structs as in and outs
- All components now use HAL structs as inputs and outputs - Restructured library folders - FB_Axis_PTP now implements the execute pattern with E_CmdResult - Bumped version number to 2.0.0
This commit is contained in:
@@ -136,357 +136,9 @@
|
|||||||
</System>
|
</System>
|
||||||
<Plc>
|
<Plc>
|
||||||
<Project GUID="{4E62D9E7-436C-457D-8DC4-82D2FEF91C96}" Name="BasicComponents" PrjFilePath="BasicComponents\BasicComponents.plcproj" TmcFilePath="BasicComponents\BasicComponents.tmc" ReloadTmc="true" AmsPort="851" FileArchiveSettings="#x000e" CopyTmcToTarget="true" CopyTpyToTarget="false" SymbolicMapping="true">
|
<Project GUID="{4E62D9E7-436C-457D-8DC4-82D2FEF91C96}" Name="BasicComponents" PrjFilePath="BasicComponents\BasicComponents.plcproj" TmcFilePath="BasicComponents\BasicComponents.tmc" ReloadTmc="true" AmsPort="851" FileArchiveSettings="#x000e" CopyTmcToTarget="true" CopyTpyToTarget="false" SymbolicMapping="true">
|
||||||
<Instance Id="#x08502000" TcSmClass="TComPlcObjDef" KeepUnrestoredLinks="2" TmcHash="{CC57F9F8-FD4D-8A3D-E8DE-220E6C379AE4}" TmcPath="BasicComponents\BasicComponents.tmc">
|
<Instance Id="#x08502000" TcSmClass="TComPlcObjDef" KeepUnrestoredLinks="2" TmcHash="{864A6F78-5663-9977-8C53-B90BFD312EA0}" TmcPath="BasicComponents\BasicComponents.tmc">
|
||||||
<Name>BasicComponents Instance</Name>
|
<Name>BasicComponents Instance</Name>
|
||||||
<CLSID ClassFactory="TcPlc30">{08500001-0000-0000-F000-000000000064}</CLSID>
|
<CLSID ClassFactory="TcPlc30">{08500001-0000-0000-F000-000000000064}</CLSID>
|
||||||
<Vars VarGrpType="1">
|
|
||||||
<Name>PlcTask Inputs</Name>
|
|
||||||
<Var>
|
|
||||||
<Name>PRG_MAIN._fbAnalogInputTest._fbAIErrorLowOn.iAnalogValue</Name>
|
|
||||||
<Comment><![CDATA[ Analog input value]]></Comment>
|
|
||||||
<Type>INT</Type>
|
|
||||||
</Var>
|
|
||||||
<Var>
|
|
||||||
<Name>PRG_MAIN._fbAnalogInputTest._fbAIErrorLowOn.xUnderrange</Name>
|
|
||||||
<Comment><![CDATA[ Card has detected an open circuit]]></Comment>
|
|
||||||
<Type>BOOL</Type>
|
|
||||||
</Var>
|
|
||||||
<Var>
|
|
||||||
<Name>PRG_MAIN._fbAnalogInputTest._fbAIErrorLowOn.xOverrange</Name>
|
|
||||||
<Comment><![CDATA[ Input is overloaded]]></Comment>
|
|
||||||
<Type>BOOL</Type>
|
|
||||||
</Var>
|
|
||||||
<Var>
|
|
||||||
<Name>PRG_MAIN._fbAnalogInputTest._fbAIErrorLowOn.xErrorCard</Name>
|
|
||||||
<Comment><![CDATA[ Input card has error
|
|
||||||
EL30xx also sets this if an underrange or overrange error is present]]></Comment>
|
|
||||||
<Type>BOOL</Type>
|
|
||||||
</Var>
|
|
||||||
<Var>
|
|
||||||
<Name>PRG_MAIN._fbAnalogInputTest._fbAIWarningLowOn.iAnalogValue</Name>
|
|
||||||
<Comment><![CDATA[ Analog input value]]></Comment>
|
|
||||||
<Type>INT</Type>
|
|
||||||
</Var>
|
|
||||||
<Var>
|
|
||||||
<Name>PRG_MAIN._fbAnalogInputTest._fbAIWarningLowOn.xUnderrange</Name>
|
|
||||||
<Comment><![CDATA[ Card has detected an open circuit]]></Comment>
|
|
||||||
<Type>BOOL</Type>
|
|
||||||
</Var>
|
|
||||||
<Var>
|
|
||||||
<Name>PRG_MAIN._fbAnalogInputTest._fbAIWarningLowOn.xOverrange</Name>
|
|
||||||
<Comment><![CDATA[ Input is overloaded]]></Comment>
|
|
||||||
<Type>BOOL</Type>
|
|
||||||
</Var>
|
|
||||||
<Var>
|
|
||||||
<Name>PRG_MAIN._fbAnalogInputTest._fbAIWarningLowOn.xErrorCard</Name>
|
|
||||||
<Comment><![CDATA[ Input card has error
|
|
||||||
EL30xx also sets this if an underrange or overrange error is present]]></Comment>
|
|
||||||
<Type>BOOL</Type>
|
|
||||||
</Var>
|
|
||||||
<Var>
|
|
||||||
<Name>PRG_MAIN._fbAnalogInputTest._fbAIWarningHighOn.iAnalogValue</Name>
|
|
||||||
<Comment><![CDATA[ Analog input value]]></Comment>
|
|
||||||
<Type>INT</Type>
|
|
||||||
</Var>
|
|
||||||
<Var>
|
|
||||||
<Name>PRG_MAIN._fbAnalogInputTest._fbAIWarningHighOn.xUnderrange</Name>
|
|
||||||
<Comment><![CDATA[ Card has detected an open circuit]]></Comment>
|
|
||||||
<Type>BOOL</Type>
|
|
||||||
</Var>
|
|
||||||
<Var>
|
|
||||||
<Name>PRG_MAIN._fbAnalogInputTest._fbAIWarningHighOn.xOverrange</Name>
|
|
||||||
<Comment><![CDATA[ Input is overloaded]]></Comment>
|
|
||||||
<Type>BOOL</Type>
|
|
||||||
</Var>
|
|
||||||
<Var>
|
|
||||||
<Name>PRG_MAIN._fbAnalogInputTest._fbAIWarningHighOn.xErrorCard</Name>
|
|
||||||
<Comment><![CDATA[ Input card has error
|
|
||||||
EL30xx also sets this if an underrange or overrange error is present]]></Comment>
|
|
||||||
<Type>BOOL</Type>
|
|
||||||
</Var>
|
|
||||||
<Var>
|
|
||||||
<Name>PRG_MAIN._fbAnalogInputTest._fbAIErrorHighOn.iAnalogValue</Name>
|
|
||||||
<Comment><![CDATA[ Analog input value]]></Comment>
|
|
||||||
<Type>INT</Type>
|
|
||||||
</Var>
|
|
||||||
<Var>
|
|
||||||
<Name>PRG_MAIN._fbAnalogInputTest._fbAIErrorHighOn.xUnderrange</Name>
|
|
||||||
<Comment><![CDATA[ Card has detected an open circuit]]></Comment>
|
|
||||||
<Type>BOOL</Type>
|
|
||||||
</Var>
|
|
||||||
<Var>
|
|
||||||
<Name>PRG_MAIN._fbAnalogInputTest._fbAIErrorHighOn.xOverrange</Name>
|
|
||||||
<Comment><![CDATA[ Input is overloaded]]></Comment>
|
|
||||||
<Type>BOOL</Type>
|
|
||||||
</Var>
|
|
||||||
<Var>
|
|
||||||
<Name>PRG_MAIN._fbAnalogInputTest._fbAIErrorHighOn.xErrorCard</Name>
|
|
||||||
<Comment><![CDATA[ Input card has error
|
|
||||||
EL30xx also sets this if an underrange or overrange error is present]]></Comment>
|
|
||||||
<Type>BOOL</Type>
|
|
||||||
</Var>
|
|
||||||
<Var>
|
|
||||||
<Name>PRG_MAIN._fbAnalogInputTest._fbAIOverrangeOn.iAnalogValue</Name>
|
|
||||||
<Comment><![CDATA[ Analog input value]]></Comment>
|
|
||||||
<Type>INT</Type>
|
|
||||||
</Var>
|
|
||||||
<Var>
|
|
||||||
<Name>PRG_MAIN._fbAnalogInputTest._fbAIOverrangeOn.xUnderrange</Name>
|
|
||||||
<Comment><![CDATA[ Card has detected an open circuit]]></Comment>
|
|
||||||
<Type>BOOL</Type>
|
|
||||||
</Var>
|
|
||||||
<Var>
|
|
||||||
<Name>PRG_MAIN._fbAnalogInputTest._fbAIOverrangeOn.xOverrange</Name>
|
|
||||||
<Comment><![CDATA[ Input is overloaded]]></Comment>
|
|
||||||
<Type>BOOL</Type>
|
|
||||||
</Var>
|
|
||||||
<Var>
|
|
||||||
<Name>PRG_MAIN._fbAnalogInputTest._fbAIOverrangeOn.xErrorCard</Name>
|
|
||||||
<Comment><![CDATA[ Input card has error
|
|
||||||
EL30xx also sets this if an underrange or overrange error is present]]></Comment>
|
|
||||||
<Type>BOOL</Type>
|
|
||||||
</Var>
|
|
||||||
<Var>
|
|
||||||
<Name>PRG_MAIN._fbAnalogInputTest._fbAIUnderrangeOn.iAnalogValue</Name>
|
|
||||||
<Comment><![CDATA[ Analog input value]]></Comment>
|
|
||||||
<Type>INT</Type>
|
|
||||||
</Var>
|
|
||||||
<Var>
|
|
||||||
<Name>PRG_MAIN._fbAnalogInputTest._fbAIUnderrangeOn.xUnderrange</Name>
|
|
||||||
<Comment><![CDATA[ Card has detected an open circuit]]></Comment>
|
|
||||||
<Type>BOOL</Type>
|
|
||||||
</Var>
|
|
||||||
<Var>
|
|
||||||
<Name>PRG_MAIN._fbAnalogInputTest._fbAIUnderrangeOn.xOverrange</Name>
|
|
||||||
<Comment><![CDATA[ Input is overloaded]]></Comment>
|
|
||||||
<Type>BOOL</Type>
|
|
||||||
</Var>
|
|
||||||
<Var>
|
|
||||||
<Name>PRG_MAIN._fbAnalogInputTest._fbAIUnderrangeOn.xErrorCard</Name>
|
|
||||||
<Comment><![CDATA[ Input card has error
|
|
||||||
EL30xx also sets this if an underrange or overrange error is present]]></Comment>
|
|
||||||
<Type>BOOL</Type>
|
|
||||||
</Var>
|
|
||||||
<Var>
|
|
||||||
<Name>PRG_MAIN._fbAnalogInputTest._fbAIErrorLowOff.iAnalogValue</Name>
|
|
||||||
<Comment><![CDATA[ Analog input value]]></Comment>
|
|
||||||
<Type>INT</Type>
|
|
||||||
</Var>
|
|
||||||
<Var>
|
|
||||||
<Name>PRG_MAIN._fbAnalogInputTest._fbAIErrorLowOff.xUnderrange</Name>
|
|
||||||
<Comment><![CDATA[ Card has detected an open circuit]]></Comment>
|
|
||||||
<Type>BOOL</Type>
|
|
||||||
</Var>
|
|
||||||
<Var>
|
|
||||||
<Name>PRG_MAIN._fbAnalogInputTest._fbAIErrorLowOff.xOverrange</Name>
|
|
||||||
<Comment><![CDATA[ Input is overloaded]]></Comment>
|
|
||||||
<Type>BOOL</Type>
|
|
||||||
</Var>
|
|
||||||
<Var>
|
|
||||||
<Name>PRG_MAIN._fbAnalogInputTest._fbAIErrorLowOff.xErrorCard</Name>
|
|
||||||
<Comment><![CDATA[ Input card has error
|
|
||||||
EL30xx also sets this if an underrange or overrange error is present]]></Comment>
|
|
||||||
<Type>BOOL</Type>
|
|
||||||
</Var>
|
|
||||||
<Var>
|
|
||||||
<Name>PRG_MAIN._fbAnalogInputTest._fbAIWarningLowOff.iAnalogValue</Name>
|
|
||||||
<Comment><![CDATA[ Analog input value]]></Comment>
|
|
||||||
<Type>INT</Type>
|
|
||||||
</Var>
|
|
||||||
<Var>
|
|
||||||
<Name>PRG_MAIN._fbAnalogInputTest._fbAIWarningLowOff.xUnderrange</Name>
|
|
||||||
<Comment><![CDATA[ Card has detected an open circuit]]></Comment>
|
|
||||||
<Type>BOOL</Type>
|
|
||||||
</Var>
|
|
||||||
<Var>
|
|
||||||
<Name>PRG_MAIN._fbAnalogInputTest._fbAIWarningLowOff.xOverrange</Name>
|
|
||||||
<Comment><![CDATA[ Input is overloaded]]></Comment>
|
|
||||||
<Type>BOOL</Type>
|
|
||||||
</Var>
|
|
||||||
<Var>
|
|
||||||
<Name>PRG_MAIN._fbAnalogInputTest._fbAIWarningLowOff.xErrorCard</Name>
|
|
||||||
<Comment><![CDATA[ Input card has error
|
|
||||||
EL30xx also sets this if an underrange or overrange error is present]]></Comment>
|
|
||||||
<Type>BOOL</Type>
|
|
||||||
</Var>
|
|
||||||
<Var>
|
|
||||||
<Name>PRG_MAIN._fbAnalogInputTest._fbAIWarningHighOff.iAnalogValue</Name>
|
|
||||||
<Comment><![CDATA[ Analog input value]]></Comment>
|
|
||||||
<Type>INT</Type>
|
|
||||||
</Var>
|
|
||||||
<Var>
|
|
||||||
<Name>PRG_MAIN._fbAnalogInputTest._fbAIWarningHighOff.xUnderrange</Name>
|
|
||||||
<Comment><![CDATA[ Card has detected an open circuit]]></Comment>
|
|
||||||
<Type>BOOL</Type>
|
|
||||||
</Var>
|
|
||||||
<Var>
|
|
||||||
<Name>PRG_MAIN._fbAnalogInputTest._fbAIWarningHighOff.xOverrange</Name>
|
|
||||||
<Comment><![CDATA[ Input is overloaded]]></Comment>
|
|
||||||
<Type>BOOL</Type>
|
|
||||||
</Var>
|
|
||||||
<Var>
|
|
||||||
<Name>PRG_MAIN._fbAnalogInputTest._fbAIWarningHighOff.xErrorCard</Name>
|
|
||||||
<Comment><![CDATA[ Input card has error
|
|
||||||
EL30xx also sets this if an underrange or overrange error is present]]></Comment>
|
|
||||||
<Type>BOOL</Type>
|
|
||||||
</Var>
|
|
||||||
<Var>
|
|
||||||
<Name>PRG_MAIN._fbAnalogInputTest._fbAIErrorHighOff.iAnalogValue</Name>
|
|
||||||
<Comment><![CDATA[ Analog input value]]></Comment>
|
|
||||||
<Type>INT</Type>
|
|
||||||
</Var>
|
|
||||||
<Var>
|
|
||||||
<Name>PRG_MAIN._fbAnalogInputTest._fbAIErrorHighOff.xUnderrange</Name>
|
|
||||||
<Comment><![CDATA[ Card has detected an open circuit]]></Comment>
|
|
||||||
<Type>BOOL</Type>
|
|
||||||
</Var>
|
|
||||||
<Var>
|
|
||||||
<Name>PRG_MAIN._fbAnalogInputTest._fbAIErrorHighOff.xOverrange</Name>
|
|
||||||
<Comment><![CDATA[ Input is overloaded]]></Comment>
|
|
||||||
<Type>BOOL</Type>
|
|
||||||
</Var>
|
|
||||||
<Var>
|
|
||||||
<Name>PRG_MAIN._fbAnalogInputTest._fbAIErrorHighOff.xErrorCard</Name>
|
|
||||||
<Comment><![CDATA[ Input card has error
|
|
||||||
EL30xx also sets this if an underrange or overrange error is present]]></Comment>
|
|
||||||
<Type>BOOL</Type>
|
|
||||||
</Var>
|
|
||||||
<Var>
|
|
||||||
<Name>PRG_MAIN._fbAnalogInputTest._fbAIUnderrangeOff.iAnalogValue</Name>
|
|
||||||
<Comment><![CDATA[ Analog input value]]></Comment>
|
|
||||||
<Type>INT</Type>
|
|
||||||
</Var>
|
|
||||||
<Var>
|
|
||||||
<Name>PRG_MAIN._fbAnalogInputTest._fbAIUnderrangeOff.xUnderrange</Name>
|
|
||||||
<Comment><![CDATA[ Card has detected an open circuit]]></Comment>
|
|
||||||
<Type>BOOL</Type>
|
|
||||||
</Var>
|
|
||||||
<Var>
|
|
||||||
<Name>PRG_MAIN._fbAnalogInputTest._fbAIUnderrangeOff.xOverrange</Name>
|
|
||||||
<Comment><![CDATA[ Input is overloaded]]></Comment>
|
|
||||||
<Type>BOOL</Type>
|
|
||||||
</Var>
|
|
||||||
<Var>
|
|
||||||
<Name>PRG_MAIN._fbAnalogInputTest._fbAIUnderrangeOff.xErrorCard</Name>
|
|
||||||
<Comment><![CDATA[ Input card has error
|
|
||||||
EL30xx also sets this if an underrange or overrange error is present]]></Comment>
|
|
||||||
<Type>BOOL</Type>
|
|
||||||
</Var>
|
|
||||||
<Var>
|
|
||||||
<Name>PRG_MAIN._fbAnalogInputTest._fbAIOverrangeOff.iAnalogValue</Name>
|
|
||||||
<Comment><![CDATA[ Analog input value]]></Comment>
|
|
||||||
<Type>INT</Type>
|
|
||||||
</Var>
|
|
||||||
<Var>
|
|
||||||
<Name>PRG_MAIN._fbAnalogInputTest._fbAIOverrangeOff.xUnderrange</Name>
|
|
||||||
<Comment><![CDATA[ Card has detected an open circuit]]></Comment>
|
|
||||||
<Type>BOOL</Type>
|
|
||||||
</Var>
|
|
||||||
<Var>
|
|
||||||
<Name>PRG_MAIN._fbAnalogInputTest._fbAIOverrangeOff.xOverrange</Name>
|
|
||||||
<Comment><![CDATA[ Input is overloaded]]></Comment>
|
|
||||||
<Type>BOOL</Type>
|
|
||||||
</Var>
|
|
||||||
<Var>
|
|
||||||
<Name>PRG_MAIN._fbAnalogInputTest._fbAIOverrangeOff.xErrorCard</Name>
|
|
||||||
<Comment><![CDATA[ Input card has error
|
|
||||||
EL30xx also sets this if an underrange or overrange error is present]]></Comment>
|
|
||||||
<Type>BOOL</Type>
|
|
||||||
</Var>
|
|
||||||
<Var>
|
|
||||||
<Name>PRG_MAIN._fbValve_TimeoutTestOpen._fbValveTimeout.xOpenFeedback</Name>
|
|
||||||
<Type>BOOL</Type>
|
|
||||||
</Var>
|
|
||||||
<Var>
|
|
||||||
<Name>PRG_MAIN._fbValve_TimeoutTestOpen._fbValveTimeout.xCloseFeedback</Name>
|
|
||||||
<Type>BOOL</Type>
|
|
||||||
</Var>
|
|
||||||
<Var>
|
|
||||||
<Name>PRG_MAIN._fbValve_TimeoutTestClose._fbValveTimeout.xOpenFeedback</Name>
|
|
||||||
<Type>BOOL</Type>
|
|
||||||
</Var>
|
|
||||||
<Var>
|
|
||||||
<Name>PRG_MAIN._fbValve_TimeoutTestClose._fbValveTimeout.xCloseFeedback</Name>
|
|
||||||
<Type>BOOL</Type>
|
|
||||||
</Var>
|
|
||||||
<Var>
|
|
||||||
<Name>PRG_MAIN._fbValve_TimoutTriggerOpen._fbValveTimeout.xOpenFeedback</Name>
|
|
||||||
<Type>BOOL</Type>
|
|
||||||
</Var>
|
|
||||||
<Var>
|
|
||||||
<Name>PRG_MAIN._fbValve_TimoutTriggerOpen._fbValveTimeout.xCloseFeedback</Name>
|
|
||||||
<Type>BOOL</Type>
|
|
||||||
</Var>
|
|
||||||
<Var>
|
|
||||||
<Name>PRG_MAIN._fbValve_TimoutTriggerClose._fbValveTimeout.xOpenFeedback</Name>
|
|
||||||
<Type>BOOL</Type>
|
|
||||||
</Var>
|
|
||||||
<Var>
|
|
||||||
<Name>PRG_MAIN._fbValve_TimoutTriggerClose._fbValveTimeout.xCloseFeedback</Name>
|
|
||||||
<Type>BOOL</Type>
|
|
||||||
</Var>
|
|
||||||
<Var>
|
|
||||||
<Name>PRG_MAIN._fbValveTestHMI._fbValveOC.xOpenFeedback</Name>
|
|
||||||
<Type>BOOL</Type>
|
|
||||||
</Var>
|
|
||||||
<Var>
|
|
||||||
<Name>PRG_MAIN._fbValveTestHMI._fbValveOC.xCloseFeedback</Name>
|
|
||||||
<Type>BOOL</Type>
|
|
||||||
</Var>
|
|
||||||
</Vars>
|
|
||||||
<Vars VarGrpType="2" AreaNo="1">
|
|
||||||
<Name>PlcTask Outputs</Name>
|
|
||||||
<Var>
|
|
||||||
<Name>PRG_MAIN._fbValve_TimeoutTestOpen._fbValveTimeout.xOpenValve</Name>
|
|
||||||
<Comment><![CDATA[ Use xOpenValve for normally closed valves]]></Comment>
|
|
||||||
<Type>BOOL</Type>
|
|
||||||
</Var>
|
|
||||||
<Var>
|
|
||||||
<Name>PRG_MAIN._fbValve_TimeoutTestOpen._fbValveTimeout.xCloseValve</Name>
|
|
||||||
<Comment><![CDATA[ Use xCloseValve for normally open valves]]></Comment>
|
|
||||||
<Type>BOOL</Type>
|
|
||||||
</Var>
|
|
||||||
<Var>
|
|
||||||
<Name>PRG_MAIN._fbValve_TimeoutTestClose._fbValveTimeout.xOpenValve</Name>
|
|
||||||
<Comment><![CDATA[ Use xOpenValve for normally closed valves]]></Comment>
|
|
||||||
<Type>BOOL</Type>
|
|
||||||
</Var>
|
|
||||||
<Var>
|
|
||||||
<Name>PRG_MAIN._fbValve_TimeoutTestClose._fbValveTimeout.xCloseValve</Name>
|
|
||||||
<Comment><![CDATA[ Use xCloseValve for normally open valves]]></Comment>
|
|
||||||
<Type>BOOL</Type>
|
|
||||||
</Var>
|
|
||||||
<Var>
|
|
||||||
<Name>PRG_MAIN._fbValve_TimoutTriggerOpen._fbValveTimeout.xOpenValve</Name>
|
|
||||||
<Comment><![CDATA[ Use xOpenValve for normally closed valves]]></Comment>
|
|
||||||
<Type>BOOL</Type>
|
|
||||||
</Var>
|
|
||||||
<Var>
|
|
||||||
<Name>PRG_MAIN._fbValve_TimoutTriggerOpen._fbValveTimeout.xCloseValve</Name>
|
|
||||||
<Comment><![CDATA[ Use xCloseValve for normally open valves]]></Comment>
|
|
||||||
<Type>BOOL</Type>
|
|
||||||
</Var>
|
|
||||||
<Var>
|
|
||||||
<Name>PRG_MAIN._fbValve_TimoutTriggerClose._fbValveTimeout.xOpenValve</Name>
|
|
||||||
<Comment><![CDATA[ Use xOpenValve for normally closed valves]]></Comment>
|
|
||||||
<Type>BOOL</Type>
|
|
||||||
</Var>
|
|
||||||
<Var>
|
|
||||||
<Name>PRG_MAIN._fbValve_TimoutTriggerClose._fbValveTimeout.xCloseValve</Name>
|
|
||||||
<Comment><![CDATA[ Use xCloseValve for normally open valves]]></Comment>
|
|
||||||
<Type>BOOL</Type>
|
|
||||||
</Var>
|
|
||||||
<Var>
|
|
||||||
<Name>PRG_MAIN._fbValveTestHMI._fbValveOC.xOpenValve</Name>
|
|
||||||
<Comment><![CDATA[ Use xOpenValve for normally closed valves]]></Comment>
|
|
||||||
<Type>BOOL</Type>
|
|
||||||
</Var>
|
|
||||||
<Var>
|
|
||||||
<Name>PRG_MAIN._fbValveTestHMI._fbValveOC.xCloseValve</Name>
|
|
||||||
<Comment><![CDATA[ Use xCloseValve for normally open valves]]></Comment>
|
|
||||||
<Type>BOOL</Type>
|
|
||||||
</Var>
|
|
||||||
</Vars>
|
|
||||||
<Contexts>
|
<Contexts>
|
||||||
<Context>
|
<Context>
|
||||||
<Id>0</Id>
|
<Id>0</Id>
|
||||||
|
|||||||
Binary file not shown.
@@ -21,7 +21,7 @@
|
|||||||
<GlobalVersionStructureIncluded>false</GlobalVersionStructureIncluded>
|
<GlobalVersionStructureIncluded>false</GlobalVersionStructureIncluded>
|
||||||
<Company>Heisig GmbH</Company>
|
<Company>Heisig GmbH</Company>
|
||||||
<Title>BaseComponents</Title>
|
<Title>BaseComponents</Title>
|
||||||
<ProjectVersion>1.3.4</ProjectVersion>
|
<ProjectVersion>2.0.0</ProjectVersion>
|
||||||
<DefaultNamespace>BC</DefaultNamespace>
|
<DefaultNamespace>BC</DefaultNamespace>
|
||||||
<Author>M.Heisig</Author>
|
<Author>M.Heisig</Author>
|
||||||
<Description>Basic components fb's (Valves, AI, AO, Motors, etc.)</Description>
|
<Description>Basic components fb's (Valves, AI, AO, Motors, etc.)</Description>
|
||||||
@@ -45,218 +45,231 @@
|
|||||||
</SelectedLibraryCategories>
|
</SelectedLibraryCategories>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
<Compile Include="Components\Analog\DUTs\ST_AnalogInput_IO.TcDUT">
|
||||||
|
<SubType>Code</SubType>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="Components\Analog\DUTs\ST_AnalogOutput_IO.TcDUT">
|
||||||
|
<SubType>Code</SubType>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="Components\Analog\DUTs\ST_ANALOG_EW_CONFIG.TcDUT">
|
||||||
|
<SubType>Code</SubType>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="Components\Analog\DUTs\ST_ANALOG_EW_DELAYS.TcDUT">
|
||||||
|
<SubType>Code</SubType>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="Components\Analog\DUTs\ST_ANALOG_EW_LEVELS.TcDUT">
|
||||||
|
<SubType>Code</SubType>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="Components\Analog\DUTs\ST_ANALOG_IO_CONFIG.TcDUT">
|
||||||
|
<SubType>Code</SubType>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="Components\Analog\POUs\FB_AnalogInput.TcPOU">
|
||||||
|
<SubType>Code</SubType>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="Components\Analog\POUs\FB_AnalogOutput.TcPOU">
|
||||||
|
<SubType>Code</SubType>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="Components\AxisPTP\DUTs\E_AXIS_PTP_STATE.TcDUT">
|
||||||
|
<SubType>Code</SubType>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="Components\AxisPTP\DUTs\ST_AxisPTP_IO.TcDUT">
|
||||||
|
<SubType>Code</SubType>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="Components\AxisPTP\POUs\FB_AxisPTP.TcPOU">
|
||||||
|
<SubType>Code</SubType>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="Components\Controller\POUs\FB_Limit.TcPOU">
|
||||||
|
<SubType>Code</SubType>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="Components\Controller\POUs\FB_PI.TcPOU">
|
||||||
|
<SubType>Code</SubType>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="Components\Controller\POUs\FB_PID.TcPOU">
|
||||||
|
<SubType>Code</SubType>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="Components\Controller\POUs\FB_RampGenerator.TcPOU">
|
||||||
|
<SubType>Code</SubType>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="Components\EventListener\DUTs\E_EventType.TcDUT">
|
||||||
|
<SubType>Code</SubType>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="Components\EventListener\DUTs\ST_BufferEventEntry.TcDUT">
|
||||||
|
<SubType>Code</SubType>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="Components\EventListener\POUs\FB_EventListener.TcPOU">
|
||||||
|
<SubType>Code</SubType>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="Components\Motor\FB_MotorBecker.TcPOU">
|
||||||
|
<SubType>Code</SubType>
|
||||||
|
<ExcludeFromBuild>true</ExcludeFromBuild>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="Components\Motor\Types\ST_MOTOR_BECKER_CONFIG.TcDUT">
|
||||||
|
<SubType>Code</SubType>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="Components\Utilities\FB_AlarmMessage.TcPOU">
|
||||||
|
<SubType>Code</SubType>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="Components\Utilities\FB_Blinker.TcPOU">
|
||||||
|
<SubType>Code</SubType>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="Components\Utilities\FB_ReleaseSignal.TcPOU">
|
||||||
|
<SubType>Code</SubType>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="Components\Utilities\FC_HashFNV1a_32Bit.TcPOU">
|
||||||
|
<SubType>Code</SubType>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="Components\Utilities\F_GetTaskCycleTime.TcPOU">
|
||||||
|
<SubType>Code</SubType>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="Components\Valves\DUTs\ST_ValveAnalogConfig.TcDUT">
|
||||||
|
<SubType>Code</SubType>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="Components\Valves\DUTs\ST_ValveAnalog_IO.TcDUT">
|
||||||
|
<SubType>Code</SubType>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="Components\Valves\DUTs\ST_ValveConfig.TcDUT">
|
||||||
|
<SubType>Code</SubType>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="Components\Valves\DUTs\ST_Valve_IO.TcDUT">
|
||||||
|
<SubType>Code</SubType>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="Components\Valves\POUs\FB_Valve.TcPOU">
|
||||||
|
<SubType>Code</SubType>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="Components\Valves\POUs\FB_ValveAnalog.TcPOU">
|
||||||
|
<SubType>Code</SubType>
|
||||||
|
</Compile>
|
||||||
<Compile Include="DUTs\E_CmdResult.TcDUT">
|
<Compile Include="DUTs\E_CmdResult.TcDUT">
|
||||||
<SubType>Code</SubType>
|
<SubType>Code</SubType>
|
||||||
</Compile>
|
</Compile>
|
||||||
|
<Compile Include="GVLs\GVL_CONFIGS.TcGVL">
|
||||||
|
<SubType>Code</SubType>
|
||||||
|
<LinkAlways>true</LinkAlways>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="GVLs\GVL_TYPE_CONST.TcGVL">
|
||||||
|
<SubType>Code</SubType>
|
||||||
|
<LinkAlways>true</LinkAlways>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="HMI\Datentypen\ST_HMI_ANALOG_MOTOR_DATA.TcDUT">
|
||||||
|
<SubType>Code</SubType>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="HMI\Datentypen\ST_HMI_ANALOG_VALUE.TcDUT">
|
||||||
|
<SubType>Code</SubType>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="HMI\Datentypen\ST_HMI_ANALOG_VALVE_DATA.TcDUT">
|
||||||
|
<SubType>Code</SubType>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="HMI\Datentypen\ST_HMI_CONTROL_BUTTON.TcDUT">
|
||||||
|
<SubType>Code</SubType>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="HMI\Datentypen\ST_HMI_INTEGER_VALUE.TcDUT">
|
||||||
|
<SubType>Code</SubType>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="HMI\Datentypen\ST_HMI_INTERLOCK.TcDUT">
|
||||||
|
<SubType>Code</SubType>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="HMI\Datentypen\ST_HMI_VALVE_DATA.TcDUT">
|
||||||
|
<SubType>Code</SubType>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="HMI\Datentypen\T_INTERLOCK.TcDUT">
|
||||||
|
<SubType>Code</SubType>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="HMI\Enum\E_HMI_ANALOG_VALUE_STATUS.TcDUT">
|
||||||
|
<SubType>Code</SubType>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="HMI\Enum\E_HMI_BUTTON_FEEDBACK.TcDUT">
|
||||||
|
<SubType>Code</SubType>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="HMI\Enum\E_HMI_MODE.TcDUT">
|
||||||
|
<SubType>Code</SubType>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="HMI\Enum\E_HMI_MOTOR_STATUS.TcDUT">
|
||||||
|
<SubType>Code</SubType>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="HMI\Enum\E_HMI_VALVE_STATUS.TcDUT">
|
||||||
|
<SubType>Code</SubType>
|
||||||
|
</Compile>
|
||||||
<Compile Include="PlcTask.TcTTO">
|
<Compile Include="PlcTask.TcTTO">
|
||||||
<SubType>Code</SubType>
|
<SubType>Code</SubType>
|
||||||
</Compile>
|
</Compile>
|
||||||
<Compile Include="POUs\Components\Analog\FB_AnalogInput.TcPOU">
|
<Compile Include="PRG_MAIN.TcPOU">
|
||||||
<SubType>Code</SubType>
|
<SubType>Code</SubType>
|
||||||
</Compile>
|
</Compile>
|
||||||
<Compile Include="POUs\Components\Analog\FB_AnalogOutput.TcPOU">
|
<Compile Include="Unittests\AITests\FB_AnalogInputTest.TcPOU">
|
||||||
<SubType>Code</SubType>
|
<SubType>Code</SubType>
|
||||||
</Compile>
|
</Compile>
|
||||||
<Compile Include="POUs\Components\Analog\Types\ST_ANALOG_EW_CONFIG.TcDUT">
|
<Compile Include="Unittests\AnalogValveTests\FB_ValveAnalog_Test.TcPOU">
|
||||||
<SubType>Code</SubType>
|
<SubType>Code</SubType>
|
||||||
</Compile>
|
</Compile>
|
||||||
<Compile Include="POUs\Components\Analog\Types\ST_ANALOG_EW_DELAYS.TcDUT">
|
<Compile Include="Unittests\AOTests\FB_AnalogOutputTest.TcPOU">
|
||||||
<SubType>Code</SubType>
|
<SubType>Code</SubType>
|
||||||
</Compile>
|
</Compile>
|
||||||
<Compile Include="POUs\Components\Analog\Types\ST_ANALOG_EW_LEVELS.TcDUT">
|
<Compile Include="Unittests\ReleaseSignalTests\FB_ReleaseSignalTest.TcPOU">
|
||||||
<SubType>Code</SubType>
|
<SubType>Code</SubType>
|
||||||
</Compile>
|
</Compile>
|
||||||
<Compile Include="POUs\Components\Analog\Types\ST_ANALOG_IO_CONFIG.TcDUT">
|
<Compile Include="Unittests\UtilitiesTests\FB_BlinkerTest.TcPOU">
|
||||||
<SubType>Code</SubType>
|
<SubType>Code</SubType>
|
||||||
</Compile>
|
</Compile>
|
||||||
<Compile Include="POUs\Components\AxisPTP\E_AXIS_PTP_STATE.TcDUT">
|
<Compile Include="Unittests\UtilitiesTests\FB_HashFNV1a_32BitTest.TcPOU">
|
||||||
<SubType>Code</SubType>
|
<SubType>Code</SubType>
|
||||||
</Compile>
|
</Compile>
|
||||||
<Compile Include="POUs\Components\AxisPTP\FB_AxisPTP.TcPOU">
|
<Compile Include="Unittests\UtilitiesTests\FB_PT1Test.TcPOU">
|
||||||
<SubType>Code</SubType>
|
<SubType>Code</SubType>
|
||||||
</Compile>
|
</Compile>
|
||||||
<Compile Include="POUs\Components\AxisPTP\ST_AxisPTP_IO.TcDUT">
|
<Compile Include="Unittests\UtilitiesTests\FB_RampGeneratorTest.TcPOU">
|
||||||
<SubType>Code</SubType>
|
<SubType>Code</SubType>
|
||||||
</Compile>
|
</Compile>
|
||||||
<Compile Include="POUs\Components\Controller\FB_Limit.TcPOU">
|
<Compile Include="Unittests\ValveTests\FB_ValveTestHMI.TcPOU">
|
||||||
<SubType>Code</SubType>
|
<SubType>Code</SubType>
|
||||||
</Compile>
|
</Compile>
|
||||||
<Compile Include="POUs\Components\Controller\FB_PI.TcPOU">
|
<Compile Include="Unittests\ValveTests\FB_ValveTestTimoutClose.TcPOU">
|
||||||
<SubType>Code</SubType>
|
<SubType>Code</SubType>
|
||||||
</Compile>
|
</Compile>
|
||||||
<Compile Include="POUs\Components\Controller\FB_PID.TcPOU">
|
<Compile Include="Unittests\ValveTests\FB_ValveTestTimoutOpen.TcPOU">
|
||||||
<SubType>Code</SubType>
|
<SubType>Code</SubType>
|
||||||
</Compile>
|
</Compile>
|
||||||
<Compile Include="POUs\Components\Controller\FB_RampGenerator.TcPOU">
|
<Compile Include="Unittests\ValveTests\FB_ValveTestTriggerTimoutClose.TcPOU">
|
||||||
<SubType>Code</SubType>
|
<SubType>Code</SubType>
|
||||||
</Compile>
|
</Compile>
|
||||||
<Compile Include="POUs\Components\EventListener\FB_EventListener.TcPOU">
|
<Compile Include="Unittests\ValveTests\FB_ValveTestTriggerTimoutOpen.TcPOU">
|
||||||
<SubType>Code</SubType>
|
<SubType>Code</SubType>
|
||||||
</Compile>
|
</Compile>
|
||||||
<Compile Include="POUs\Components\EventListener\Types\E_EventType.TcDUT">
|
<Compile Include="Unittests\ValveTests\FB_Valve_Test.TcPOU">
|
||||||
<SubType>Code</SubType>
|
|
||||||
</Compile>
|
|
||||||
<Compile Include="POUs\Components\EventListener\Types\ST_BufferEventEntry.TcDUT">
|
|
||||||
<SubType>Code</SubType>
|
|
||||||
</Compile>
|
|
||||||
<Compile Include="POUs\Components\Motor\FB_MotorBecker.TcPOU">
|
|
||||||
<SubType>Code</SubType>
|
|
||||||
<ExcludeFromBuild>true</ExcludeFromBuild>
|
|
||||||
</Compile>
|
|
||||||
<Compile Include="POUs\Components\Motor\Types\ST_MOTOR_BECKER_CONFIG.TcDUT">
|
|
||||||
<SubType>Code</SubType>
|
|
||||||
</Compile>
|
|
||||||
<Compile Include="POUs\Components\Utilities\FB_AlarmMessage.TcPOU">
|
|
||||||
<SubType>Code</SubType>
|
|
||||||
</Compile>
|
|
||||||
<Compile Include="POUs\Components\Utilities\FB_Blinker.TcPOU">
|
|
||||||
<SubType>Code</SubType>
|
|
||||||
</Compile>
|
|
||||||
<Compile Include="POUs\Components\Utilities\FB_ReleaseSignal.TcPOU">
|
|
||||||
<SubType>Code</SubType>
|
|
||||||
</Compile>
|
|
||||||
<Compile Include="POUs\Components\Utilities\FC_HashFNV1a_32Bit.TcPOU">
|
|
||||||
<SubType>Code</SubType>
|
|
||||||
</Compile>
|
|
||||||
<Compile Include="POUs\Components\Utilities\F_GetTaskCycleTime.TcPOU">
|
|
||||||
<SubType>Code</SubType>
|
|
||||||
</Compile>
|
|
||||||
<Compile Include="POUs\Components\Valves\FB_Valve.TcPOU">
|
|
||||||
<SubType>Code</SubType>
|
|
||||||
</Compile>
|
|
||||||
<Compile Include="POUs\Components\Valves\FB_ValveAnalog.TcPOU">
|
|
||||||
<SubType>Code</SubType>
|
|
||||||
</Compile>
|
|
||||||
<Compile Include="POUs\Components\Valves\Types\ST_ValveAnalogConfig.TcDUT">
|
|
||||||
<SubType>Code</SubType>
|
|
||||||
</Compile>
|
|
||||||
<Compile Include="POUs\Components\Valves\Types\ST_ValveConfig.TcDUT">
|
|
||||||
<SubType>Code</SubType>
|
|
||||||
</Compile>
|
|
||||||
<Compile Include="POUs\Constants\GVL_TYPE_CONST.TcGVL">
|
|
||||||
<SubType>Code</SubType>
|
|
||||||
<LinkAlways>true</LinkAlways>
|
|
||||||
</Compile>
|
|
||||||
<Compile Include="POUs\GVL\GVL_CONFIGS.TcGVL">
|
|
||||||
<SubType>Code</SubType>
|
|
||||||
<LinkAlways>true</LinkAlways>
|
|
||||||
</Compile>
|
|
||||||
<Compile Include="POUs\HMI\Datentypen\ST_HMI_ANALOG_MOTOR_DATA.TcDUT">
|
|
||||||
<SubType>Code</SubType>
|
|
||||||
</Compile>
|
|
||||||
<Compile Include="POUs\HMI\Datentypen\ST_HMI_ANALOG_VALUE.TcDUT">
|
|
||||||
<SubType>Code</SubType>
|
|
||||||
</Compile>
|
|
||||||
<Compile Include="POUs\HMI\Datentypen\ST_HMI_ANALOG_VALVE_DATA.TcDUT">
|
|
||||||
<SubType>Code</SubType>
|
|
||||||
</Compile>
|
|
||||||
<Compile Include="POUs\HMI\Datentypen\ST_HMI_CONTROL_BUTTON.TcDUT">
|
|
||||||
<SubType>Code</SubType>
|
|
||||||
</Compile>
|
|
||||||
<Compile Include="POUs\HMI\Datentypen\ST_HMI_INTEGER_VALUE.TcDUT">
|
|
||||||
<SubType>Code</SubType>
|
|
||||||
</Compile>
|
|
||||||
<Compile Include="POUs\HMI\Datentypen\ST_HMI_INTERLOCK.TcDUT">
|
|
||||||
<SubType>Code</SubType>
|
|
||||||
</Compile>
|
|
||||||
<Compile Include="POUs\HMI\Datentypen\ST_HMI_VALVE_DATA.TcDUT">
|
|
||||||
<SubType>Code</SubType>
|
|
||||||
</Compile>
|
|
||||||
<Compile Include="POUs\HMI\Datentypen\T_INTERLOCK.TcDUT">
|
|
||||||
<SubType>Code</SubType>
|
|
||||||
</Compile>
|
|
||||||
<Compile Include="POUs\HMI\Enum\E_HMI_ANALOG_VALUE_STATUS.TcDUT">
|
|
||||||
<SubType>Code</SubType>
|
|
||||||
</Compile>
|
|
||||||
<Compile Include="POUs\HMI\Enum\E_HMI_BUTTON_FEEDBACK.TcDUT">
|
|
||||||
<SubType>Code</SubType>
|
|
||||||
</Compile>
|
|
||||||
<Compile Include="POUs\HMI\Enum\E_HMI_MODE.TcDUT">
|
|
||||||
<SubType>Code</SubType>
|
|
||||||
</Compile>
|
|
||||||
<Compile Include="POUs\HMI\Enum\E_HMI_MOTOR_STATUS.TcDUT">
|
|
||||||
<SubType>Code</SubType>
|
|
||||||
</Compile>
|
|
||||||
<Compile Include="POUs\HMI\Enum\E_HMI_VALVE_STATUS.TcDUT">
|
|
||||||
<SubType>Code</SubType>
|
|
||||||
</Compile>
|
|
||||||
<Compile Include="POUs\PRG_MAIN.TcPOU">
|
|
||||||
<SubType>Code</SubType>
|
|
||||||
</Compile>
|
|
||||||
<Compile Include="POUs\Unittests\AITests\FB_AnalogInputTest.TcPOU">
|
|
||||||
<SubType>Code</SubType>
|
|
||||||
</Compile>
|
|
||||||
<Compile Include="POUs\Unittests\AnalogValveTests\FB_ValveAnalog_Test.TcPOU">
|
|
||||||
<SubType>Code</SubType>
|
|
||||||
</Compile>
|
|
||||||
<Compile Include="POUs\Unittests\AOTests\FB_AnalogOutputTest.TcPOU">
|
|
||||||
<SubType>Code</SubType>
|
|
||||||
</Compile>
|
|
||||||
<Compile Include="POUs\Unittests\ReleaseSignalTests\FB_ReleaseSignalTest.TcPOU">
|
|
||||||
<SubType>Code</SubType>
|
|
||||||
</Compile>
|
|
||||||
<Compile Include="POUs\Unittests\UtilitiesTests\FB_BlinkerTest.TcPOU">
|
|
||||||
<SubType>Code</SubType>
|
|
||||||
</Compile>
|
|
||||||
<Compile Include="POUs\Unittests\UtilitiesTests\FB_HashFNV1a_32BitTest.TcPOU">
|
|
||||||
<SubType>Code</SubType>
|
|
||||||
</Compile>
|
|
||||||
<Compile Include="POUs\Unittests\UtilitiesTests\FB_PT1Test.TcPOU">
|
|
||||||
<SubType>Code</SubType>
|
|
||||||
</Compile>
|
|
||||||
<Compile Include="POUs\Unittests\UtilitiesTests\FB_RampGeneratorTest.TcPOU">
|
|
||||||
<SubType>Code</SubType>
|
|
||||||
</Compile>
|
|
||||||
<Compile Include="POUs\Unittests\ValveTests\FB_ValveTestHMI.TcPOU">
|
|
||||||
<SubType>Code</SubType>
|
|
||||||
</Compile>
|
|
||||||
<Compile Include="POUs\Unittests\ValveTests\FB_ValveTestTimoutClose.TcPOU">
|
|
||||||
<SubType>Code</SubType>
|
|
||||||
</Compile>
|
|
||||||
<Compile Include="POUs\Unittests\ValveTests\FB_ValveTestTimoutOpen.TcPOU">
|
|
||||||
<SubType>Code</SubType>
|
|
||||||
</Compile>
|
|
||||||
<Compile Include="POUs\Unittests\ValveTests\FB_ValveTestTriggerTimoutClose.TcPOU">
|
|
||||||
<SubType>Code</SubType>
|
|
||||||
</Compile>
|
|
||||||
<Compile Include="POUs\Unittests\ValveTests\FB_ValveTestTriggerTimoutOpen.TcPOU">
|
|
||||||
<SubType>Code</SubType>
|
|
||||||
</Compile>
|
|
||||||
<Compile Include="POUs\Unittests\ValveTests\FB_Valve_Test.TcPOU">
|
|
||||||
<SubType>Code</SubType>
|
<SubType>Code</SubType>
|
||||||
</Compile>
|
</Compile>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
<Folder Include="Components" />
|
||||||
|
<Folder Include="Components\Analog" />
|
||||||
|
<Folder Include="Components\Analog\DUTs" />
|
||||||
|
<Folder Include="Components\Analog\POUs" />
|
||||||
|
<Folder Include="Components\AxisPTP" />
|
||||||
|
<Folder Include="Components\AxisPTP\DUTs" />
|
||||||
|
<Folder Include="Components\AxisPTP\POUs" />
|
||||||
|
<Folder Include="Components\Controller" />
|
||||||
|
<Folder Include="Components\Controller\POUs" />
|
||||||
|
<Folder Include="Components\EventListener" />
|
||||||
|
<Folder Include="Components\EventListener\DUTs" />
|
||||||
|
<Folder Include="Components\EventListener\POUs" />
|
||||||
|
<Folder Include="Components\Motor" />
|
||||||
|
<Folder Include="Components\Motor\Types" />
|
||||||
|
<Folder Include="Components\Utilities" />
|
||||||
|
<Folder Include="Components\Valves" />
|
||||||
|
<Folder Include="Components\Valves\DUTs" />
|
||||||
|
<Folder Include="Components\Valves\POUs" />
|
||||||
<Folder Include="DUTs" />
|
<Folder Include="DUTs" />
|
||||||
<Folder Include="GVLs" />
|
<Folder Include="GVLs" />
|
||||||
<Folder Include="POUs\Components\Analog" />
|
<Folder Include="HMI" />
|
||||||
<Folder Include="POUs\Components\Analog\Types" />
|
<Folder Include="HMI\Datentypen" />
|
||||||
<Folder Include="POUs\Components\AxisPTP" />
|
<Folder Include="HMI\Enum" />
|
||||||
<Folder Include="POUs\Components\EventListener" />
|
<Folder Include="Unittests" />
|
||||||
<Folder Include="POUs\Components\EventListener\Types" />
|
<Folder Include="Unittests\AITests" />
|
||||||
<Folder Include="POUs\Components\Motor">
|
<Folder Include="Unittests\AnalogValveTests" />
|
||||||
<ExcludeFromBuild>true</ExcludeFromBuild>
|
<Folder Include="Unittests\AOTests" />
|
||||||
</Folder>
|
<Folder Include="Unittests\ReleaseSignalTests" />
|
||||||
<Folder Include="POUs\Components\Motor\Types" />
|
<Folder Include="Unittests\UtilitiesTests" />
|
||||||
<Folder Include="POUs\Components\Controller" />
|
<Folder Include="Unittests\ValveTests" />
|
||||||
<Folder Include="POUs\Components\Utilities" />
|
|
||||||
<Folder Include="POUs\Components\Valves" />
|
|
||||||
<Folder Include="POUs\Components\Valves\Types" />
|
|
||||||
<Folder Include="POUs\Constants" />
|
|
||||||
<Folder Include="POUs\HMI" />
|
|
||||||
<Folder Include="POUs\HMI\Datentypen" />
|
|
||||||
<Folder Include="POUs\HMI\Enum" />
|
|
||||||
<Folder Include="POUs\GVL" />
|
|
||||||
<Folder Include="POUs\Components" />
|
|
||||||
<Folder Include="POUs\Unittests\AnalogValveTests" />
|
|
||||||
<Folder Include="POUs\Unittests\ReleaseSignalTests" />
|
|
||||||
<Folder Include="POUs\Unittests\UtilitiesTests" />
|
|
||||||
<Folder Include="POUs\Unittests\ValveTests" />
|
|
||||||
<Folder Include="POUs\Unittests" />
|
|
||||||
<Folder Include="POUs\Unittests\AITests" />
|
|
||||||
<Folder Include="POUs\Unittests\AOTests" />
|
|
||||||
<Folder Include="VISUs" />
|
<Folder Include="VISUs" />
|
||||||
<Folder Include="POUs" />
|
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PlaceholderReference Include="Tc2_MC2">
|
<PlaceholderReference Include="Tc2_MC2">
|
||||||
@@ -310,8 +323,8 @@
|
|||||||
<ProjectExtensions>
|
<ProjectExtensions>
|
||||||
<PlcProjectOptions>
|
<PlcProjectOptions>
|
||||||
<XmlArchive>
|
<XmlArchive>
|
||||||
<Data>
|
<Data>
|
||||||
<o xml:space="preserve" t="OptionKey">
|
<o xml:space="preserve" t="OptionKey">
|
||||||
<v n="Name">"<ProjectRoot>"</v>
|
<v n="Name">"<ProjectRoot>"</v>
|
||||||
<d n="SubKeys" t="Hashtable" ckt="String" cvt="OptionKey">
|
<d n="SubKeys" t="Hashtable" ckt="String" cvt="OptionKey">
|
||||||
<v>{192FAD59-8248-4824-A8DE-9177C94C195A}</v>
|
<v>{192FAD59-8248-4824-A8DE-9177C94C195A}</v>
|
||||||
@@ -2692,16 +2705,16 @@
|
|||||||
</d>
|
</d>
|
||||||
<d n="Values" t="Hashtable" />
|
<d n="Values" t="Hashtable" />
|
||||||
</o>
|
</o>
|
||||||
</Data>
|
</Data>
|
||||||
<TypeList>
|
<TypeList>
|
||||||
<Type n="Boolean">System.Boolean</Type>
|
<Type n="Boolean">System.Boolean</Type>
|
||||||
<Type n="Hashtable">System.Collections.Hashtable</Type>
|
<Type n="Hashtable">System.Collections.Hashtable</Type>
|
||||||
<Type n="Int32">System.Int32</Type>
|
<Type n="Int32">System.Int32</Type>
|
||||||
<Type n="OptionKey">{54dd0eac-a6d8-46f2-8c27-2f43c7e49861}</Type>
|
<Type n="OptionKey">{54dd0eac-a6d8-46f2-8c27-2f43c7e49861}</Type>
|
||||||
<Type n="String">System.String</Type>
|
<Type n="String">System.String</Type>
|
||||||
<Type n="UInt32">System.UInt32</Type>
|
<Type n="UInt32">System.UInt32</Type>
|
||||||
</TypeList>
|
</TypeList>
|
||||||
</XmlArchive>
|
</XmlArchive>
|
||||||
</PlcProjectOptions>
|
</PlcProjectOptions>
|
||||||
</ProjectExtensions>
|
</ProjectExtensions>
|
||||||
</Project>
|
</Project>
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<TcPlcObject Version="1.1.0.1">
|
||||||
|
<DUT Name="ST_AnalogInput_IO" Id="{e5e1217a-3b79-46bd-82c2-c2132f6c3fab}">
|
||||||
|
<Declaration><![CDATA[TYPE ST_AnalogInput_IO :
|
||||||
|
STRUCT
|
||||||
|
// Analog input value
|
||||||
|
i_iAnalogValue AT %I* : INT;
|
||||||
|
|
||||||
|
// Card has detected an open circuit
|
||||||
|
i_xUnderrange AT%I* : BOOL;
|
||||||
|
|
||||||
|
// Input is overloaded
|
||||||
|
i_xOverrange AT %I* : BOOL;
|
||||||
|
|
||||||
|
// Input card has error
|
||||||
|
// EL30xx also sets this if an underrange or overrange error is present
|
||||||
|
i_xErrorCard AT %I* : BOOL;
|
||||||
|
END_STRUCT
|
||||||
|
END_TYPE
|
||||||
|
]]></Declaration>
|
||||||
|
</DUT>
|
||||||
|
</TcPlcObject>
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<TcPlcObject Version="1.1.0.1">
|
||||||
|
<DUT Name="ST_AnalogOutput_IO" Id="{1ae956eb-64b1-49ce-81a6-21db6ca74bc0}">
|
||||||
|
<Declaration><![CDATA[TYPE ST_AnalogOutput_IO :
|
||||||
|
STRUCT
|
||||||
|
o_iAnalogValue AT %Q* : INT;
|
||||||
|
END_STRUCT
|
||||||
|
END_TYPE
|
||||||
|
]]></Declaration>
|
||||||
|
</DUT>
|
||||||
|
</TcPlcObject>
|
||||||
@@ -3,19 +3,6 @@
|
|||||||
<POU Name="FB_AnalogInput" Id="{532e1013-5a2e-43c7-8863-3ad112d7d7e8}" SpecialFunc="None">
|
<POU Name="FB_AnalogInput" Id="{532e1013-5a2e-43c7-8863-3ad112d7d7e8}" SpecialFunc="None">
|
||||||
<Declaration><![CDATA[FUNCTION_BLOCK FINAL FB_AnalogInput
|
<Declaration><![CDATA[FUNCTION_BLOCK FINAL FB_AnalogInput
|
||||||
VAR_INPUT
|
VAR_INPUT
|
||||||
// Analog input value
|
|
||||||
iAnalogValue AT %I* : INT;
|
|
||||||
|
|
||||||
// Card has detected an open circuit
|
|
||||||
xUnderrange AT%I* : BOOL;
|
|
||||||
|
|
||||||
// Input is overloaded
|
|
||||||
xOverrange AT %I* : BOOL;
|
|
||||||
|
|
||||||
// Input card has error
|
|
||||||
// EL30xx also sets this if an underrange or overrange error is present
|
|
||||||
xErrorCard AT %I* : BOOL;
|
|
||||||
|
|
||||||
// IO config data
|
// IO config data
|
||||||
stAnalogIOConfig : ST_ANALOG_IO_CONFIG;
|
stAnalogIOConfig : ST_ANALOG_IO_CONFIG;
|
||||||
|
|
||||||
@@ -64,6 +51,9 @@ VAR_OUTPUT
|
|||||||
//High level error
|
//High level error
|
||||||
xErrorHigh : BOOL;
|
xErrorHigh : BOOL;
|
||||||
END_VAR
|
END_VAR
|
||||||
|
VAR_IN_OUT
|
||||||
|
stIO : ST_AnalogInput_IO;
|
||||||
|
END_VAR
|
||||||
VAR
|
VAR
|
||||||
// Scaling factor for conversion
|
// Scaling factor for conversion
|
||||||
_rConversionFactor : REAL;
|
_rConversionFactor : REAL;
|
||||||
@@ -210,7 +200,7 @@ END_IF
|
|||||||
// ========================
|
// ========================
|
||||||
|
|
||||||
// Clamp analogue input levels
|
// Clamp analogue input levels
|
||||||
_iClampedAnalogValue := MAX(_iAIMin, iAnalogValue);
|
_iClampedAnalogValue := MAX(_iAIMin, stIO.i_iAnalogValue);
|
||||||
_iClampedAnalogValue := MIN(_iAIMax, _iClampedAnalogValue);
|
_iClampedAnalogValue := MIN(_iAIMax, _iClampedAnalogValue);
|
||||||
|
|
||||||
// Calc scaled value
|
// Calc scaled value
|
||||||
@@ -222,7 +212,7 @@ _rScaledValue := _iClampedAnalogValue * _rConversionFactor + _rBaseOffset;
|
|||||||
// =========================
|
// =========================
|
||||||
|
|
||||||
_fbAlarmUnderrange(
|
_fbAlarmUnderrange(
|
||||||
xActive:= xUnderrange,
|
xActive:= stIO.i_xUnderrange,
|
||||||
xRelease:= stAnalogIOConfig.xUsed AND xReleaseErrors AND xReleaseHardwareErrors,
|
xRelease:= stAnalogIOConfig.xUsed AND xReleaseErrors AND xReleaseHardwareErrors,
|
||||||
xAcknowledge:= xConfirmAlarms,
|
xAcknowledge:= xConfirmAlarms,
|
||||||
timOnDelay:= stAnalogEWConfig.stDelays.timHardwareSignalLevelOn,
|
timOnDelay:= stAnalogEWConfig.stDelays.timHardwareSignalLevelOn,
|
||||||
@@ -240,7 +230,7 @@ END_IF
|
|||||||
// =========================
|
// =========================
|
||||||
|
|
||||||
_fbAlarmOverload(
|
_fbAlarmOverload(
|
||||||
xActive:= xOverrange,
|
xActive:= stIO.i_xOverrange,
|
||||||
xRelease:= stAnalogIOConfig.xUsed AND xReleaseErrors AND xReleaseHardwareErrors,
|
xRelease:= stAnalogIOConfig.xUsed AND xReleaseErrors AND xReleaseHardwareErrors,
|
||||||
xAcknowledge:= xConfirmAlarms,
|
xAcknowledge:= xConfirmAlarms,
|
||||||
timOnDelay:= stAnalogEWConfig.stDelays.timHardwareSignalLevelOn,
|
timOnDelay:= stAnalogEWConfig.stDelays.timHardwareSignalLevelOn,
|
||||||
@@ -261,7 +251,7 @@ END_IF
|
|||||||
// EL30xx also sets this if an underrange or overrange error is present,
|
// EL30xx also sets this if an underrange or overrange error is present,
|
||||||
// so we filter this out
|
// so we filter this out
|
||||||
_fbAlarmCardError(
|
_fbAlarmCardError(
|
||||||
xActive:= xErrorCard AND (NOT xUnderrange) AND (NOT xOverrange),
|
xActive:= stIO.i_xErrorCard AND (NOT stIO.i_xUnderrange) AND (NOT stIO.i_xOverrange),
|
||||||
xRelease:= stAnalogIOConfig.xUsed AND xReleaseErrors AND xReleaseHardwareErrors,
|
xRelease:= stAnalogIOConfig.xUsed AND xReleaseErrors AND xReleaseHardwareErrors,
|
||||||
xAcknowledge:= xConfirmAlarms,
|
xAcknowledge:= xConfirmAlarms,
|
||||||
timOnDelay:= stAnalogEWConfig.stDelays.timHardwareSignalLevelOn,
|
timOnDelay:= stAnalogEWConfig.stDelays.timHardwareSignalLevelOn,
|
||||||
@@ -21,12 +21,13 @@ VAR_INPUT
|
|||||||
xInUnitTestMode : BOOL := FALSE;
|
xInUnitTestMode : BOOL := FALSE;
|
||||||
END_VAR
|
END_VAR
|
||||||
VAR_OUTPUT
|
VAR_OUTPUT
|
||||||
iAnalogValue AT %Q* : INT;
|
|
||||||
|
|
||||||
// Error in function block
|
// Error in function block
|
||||||
xError : BOOL;
|
xError : BOOL;
|
||||||
END_VAR
|
END_VAR
|
||||||
VAR_IN_OUT
|
VAR_IN_OUT
|
||||||
|
// IO
|
||||||
|
stIO : ST_AnalogOutput_IO;
|
||||||
|
|
||||||
// HMI Interface
|
// HMI Interface
|
||||||
stHMIInterface : ST_HMI_ANALOG_VALUE;
|
stHMIInterface : ST_HMI_ANALOG_VALUE;
|
||||||
END_VAR
|
END_VAR
|
||||||
@@ -117,7 +118,7 @@ _rSetpointInternal := MIN(_rSetpointInternal, _rPVMax);
|
|||||||
|
|
||||||
// Calc scaled value
|
// Calc scaled value
|
||||||
_rTempAnalogValue := _rSetpointInternal * _rConversionFactor + _rBaseOffset;
|
_rTempAnalogValue := _rSetpointInternal * _rConversionFactor + _rBaseOffset;
|
||||||
iAnalogValue := REAL_TO_INT(_rTempAnalogValue);
|
stIO.o_iAnalogValue := REAL_TO_INT(_rTempAnalogValue);
|
||||||
|
|
||||||
|
|
||||||
// ====================
|
// ====================
|
||||||
@@ -19,6 +19,7 @@ TYPE E_AXIS_PTP_STATE :
|
|||||||
WAIT_MOVING_RELATIVE,
|
WAIT_MOVING_RELATIVE,
|
||||||
START_MOVING_VELOCITY,
|
START_MOVING_VELOCITY,
|
||||||
WAIT_MOVING_VELOCITY,
|
WAIT_MOVING_VELOCITY,
|
||||||
|
MOVING_VELO,
|
||||||
START_MOVING_MODULO,
|
START_MOVING_MODULO,
|
||||||
WAIT_MOVING_MODULO,
|
WAIT_MOVING_MODULO,
|
||||||
START_HALTING,
|
START_HALTING,
|
||||||
@@ -242,9 +242,7 @@ CASE _eState OF
|
|||||||
E_AXIS_PTP_STATE.WAIT_MOVING_VELOCITY:
|
E_AXIS_PTP_STATE.WAIT_MOVING_VELOCITY:
|
||||||
IF _fbMoveVelocity.Busy THEN
|
IF _fbMoveVelocity.Busy THEN
|
||||||
_fbMoveVelocity.Execute := FALSE;
|
_fbMoveVelocity.Execute := FALSE;
|
||||||
xBusy := FALSE;
|
_eState := E_AXIS_PTP_STATE.MOVING_VELO;
|
||||||
xDone := TRUE;
|
|
||||||
_eState := E_AXIS_PTP_STATE.IDLE;
|
|
||||||
END_IF
|
END_IF
|
||||||
|
|
||||||
IF _fbMoveVelocity.Error THEN
|
IF _fbMoveVelocity.Error THEN
|
||||||
@@ -252,75 +250,100 @@ CASE _eState OF
|
|||||||
_eState := E_AXIS_PTP_STATE.ENTER_ERROR;
|
_eState := E_AXIS_PTP_STATE.ENTER_ERROR;
|
||||||
END_IF
|
END_IF
|
||||||
|
|
||||||
|
E_AXIS_PTP_STATE.MOVING_VELO:
|
||||||
|
IF _fbMoveVelocity.Error THEN
|
||||||
|
_eState := E_AXIS_PTP_STATE.ENTER_ERROR;
|
||||||
|
END_IF
|
||||||
|
|
||||||
E_AXIS_PTP_STATE.MOVING_MODULO:
|
|
||||||
|
// =============
|
||||||
|
// Move modulo
|
||||||
|
// =============
|
||||||
|
E_AXIS_PTP_STATE.START_MOVING_MODULO:
|
||||||
|
_fbMoveModulo.Execute := TRUE;
|
||||||
|
_eState := E_AXIS_PTP_STATE.WAIT_MOVING_MODULO;
|
||||||
|
|
||||||
|
E_AXIS_PTP_STATE.WAIT_MOVING_MODULO:
|
||||||
IF _fbMoveModulo.Done THEN
|
IF _fbMoveModulo.Done THEN
|
||||||
_xStartMoveModulo := FALSE;
|
_fbMoveModulo.Execute := FALSE;
|
||||||
_xBusy := FALSE;
|
xBusy := FALSE;
|
||||||
_xDone := TRUE;
|
xDone := TRUE;
|
||||||
_eState := E_AXIS_PTP_STATE.ENABLED;
|
_eState := E_AXIS_PTP_STATE.IDLE;
|
||||||
END_IF
|
END_IF
|
||||||
|
|
||||||
IF _xExecuteHalt THEN
|
IF _fbMoveModulo.Error THEN
|
||||||
_xExecuteHalt := FALSE;
|
_fbMoveModulo.Execute := FALSE;
|
||||||
_xStartMoveModulo := FALSE;
|
_eState := E_AXIS_PTP_STATE.ENTER_ERROR;
|
||||||
_xHalt := TRUE;
|
|
||||||
_eState := E_AXIS_PTP_STATE.HALTING;
|
|
||||||
END_IF
|
END_IF
|
||||||
|
|
||||||
IF _xError THEN
|
// =======
|
||||||
_xStartMoveModulo := FALSE;
|
// Halting
|
||||||
|
// =======
|
||||||
|
E_AXIS_PTP_STATE.START_HALTING:
|
||||||
|
_fbHalt.Execute := TRUE;
|
||||||
|
_eState := E_AXIS_PTP_STATE.WAIT_HALTING;
|
||||||
|
|
||||||
|
E_AXIS_PTP_STATE.WAIT_HALTING:
|
||||||
|
IF _fbHalt.Done THEN
|
||||||
|
_fbHalt.Execute := FALSE;
|
||||||
|
xBusy := FALSE;
|
||||||
|
xDone := TRUE;
|
||||||
|
_eState := E_AXIS_PTP_STATE.IDLE;
|
||||||
|
END_IF
|
||||||
|
|
||||||
|
IF _fbHalt.Error THEN
|
||||||
|
_fbHalt.Execute := FALSE;
|
||||||
_eState := E_AXIS_PTP_STATE.ENTER_ERROR;
|
_eState := E_AXIS_PTP_STATE.ENTER_ERROR;
|
||||||
END_IF
|
END_IF
|
||||||
|
|
||||||
|
|
||||||
E_AXIS_PTP_STATE.HALTING:
|
// ==========
|
||||||
IF (NOT _fbHalt.Busy) AND (NOT _xError) THEN
|
// Disableing
|
||||||
_xHalt := FALSE;
|
// ==========
|
||||||
_xBusy := FALSE;
|
E_AXIS_PTP_STATE.START_DISABLE:
|
||||||
_xDone := TRUE;
|
_fbPower.Enable := FALSE;
|
||||||
_eState := E_AXIS_PTP_STATE.ENABLED;
|
_eState := E_AXIS_PTP_STATE.WAIT_DISABLE;
|
||||||
|
|
||||||
|
E_AXIS_PTP_STATE.WAIT_DISABLE:
|
||||||
|
IF (NOT _fbPower.Status) THEN
|
||||||
|
xBusy := FALSE;
|
||||||
|
xDone := TRUE;
|
||||||
|
_eState := E_AXIS_PTP_STATE.IDLE;
|
||||||
END_IF
|
END_IF
|
||||||
|
|
||||||
IF _xError THEN
|
IF _fbPower.Error THEN
|
||||||
_eState := E_AXIS_PTP_STATE.ENTER_ERROR;
|
_eState := E_AXIS_PTP_STATE.ENTER_ERROR;
|
||||||
END_IF
|
END_IF
|
||||||
|
|
||||||
|
|
||||||
E_AXIS_PTP_STATE.WAIT_FOR_DISABLE:
|
// =====
|
||||||
IF (NOT _fbPower.Status) AND (NOT _xError) THEN
|
// Error
|
||||||
_xBusy := FALSE;
|
// =====
|
||||||
_xDone := TRUE;
|
|
||||||
_eState := E_AXIS_PTP_STATE.OFF;
|
|
||||||
END_IF
|
|
||||||
|
|
||||||
IF _xError THEN
|
|
||||||
_eState := E_AXIS_PTP_STATE.ENTER_ERROR;
|
|
||||||
END_IF
|
|
||||||
|
|
||||||
E_AXIS_PTP_STATE.ENTER_ERROR:
|
E_AXIS_PTP_STATE.ENTER_ERROR:
|
||||||
xError := TRUE;
|
xError := TRUE;
|
||||||
xBusy := FALSE;
|
xBusy := FALSE;
|
||||||
xDone := FALSE;
|
xDone := FALSE;
|
||||||
|
|
||||||
_eState := E_AXIS_PTP_STATE.ERROR;
|
_eState := E_AXIS_PTP_STATE.ERROR;
|
||||||
|
|
||||||
E_AXIS_PTP_STATE.ERROR:
|
E_AXIS_PTP_STATE.ERROR:
|
||||||
IF xConfirmAlarms THEN
|
IF xConfirmAlarms THEN
|
||||||
_xReset := TRUE;
|
_fbReset.Execute := TRUE;
|
||||||
_eState := E_AXIS_PTP_STATE.RESET;
|
_eState := E_AXIS_PTP_STATE.RESET;
|
||||||
END_IF
|
END_IF
|
||||||
|
|
||||||
|
|
||||||
E_AXIS_PTP_STATE.RESET:
|
E_AXIS_PTP_STATE.RESET:
|
||||||
IF _fbReset.Done THEN
|
IF _fbReset.Done THEN
|
||||||
_xReset := FALSE;
|
_fbReset.Execute := FALSE;
|
||||||
_eState := E_AXIS_PTP_STATE.OFF;
|
_eState := E_AXIS_PTP_STATE.IDLE;
|
||||||
END_IF
|
END_IF
|
||||||
|
|
||||||
|
IF _fbReset.Error THEN
|
||||||
|
_fbReset.Execute := FALSE;
|
||||||
|
_eState := E_AXIS_PTP_STATE.ENTER_ERROR;
|
||||||
|
END_IF
|
||||||
|
|
||||||
ELSE
|
ELSE
|
||||||
_eState := E_AXIS_PTP_STATE.ERROR;
|
_eState := E_AXIS_PTP_STATE.ENTER_ERROR;
|
||||||
END_CASE
|
END_CASE
|
||||||
|
|
||||||
|
|
||||||
@@ -0,0 +1,16 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<TcPlcObject Version="1.1.0.1">
|
||||||
|
<DUT Name="ST_ValveAnalog_IO" Id="{f148b3f6-7dc4-47f9-ae19-f3b88577c5b3}">
|
||||||
|
<Declaration><![CDATA[TYPE ST_ValveAnalog_IO :
|
||||||
|
STRUCT
|
||||||
|
stAnalogInputIO : ST_AnalogInput_IO;
|
||||||
|
|
||||||
|
i_xOpenFeedback AT %I* : BOOL;
|
||||||
|
i_xCloseFeedback AT %I* : BOOL;
|
||||||
|
|
||||||
|
stAnalogOutputIO : ST_AnalogOutput_IO;
|
||||||
|
END_STRUCT
|
||||||
|
END_TYPE
|
||||||
|
]]></Declaration>
|
||||||
|
</DUT>
|
||||||
|
</TcPlcObject>
|
||||||
21
BasicComponents/Components/Valves/DUTs/ST_Valve_IO.TcDUT
Normal file
21
BasicComponents/Components/Valves/DUTs/ST_Valve_IO.TcDUT
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<TcPlcObject Version="1.1.0.1">
|
||||||
|
<DUT Name="ST_Valve_IO" Id="{f1913d56-9cee-47f4-8fd9-831b29501390}">
|
||||||
|
<Declaration><![CDATA[TYPE ST_Valve_IO :
|
||||||
|
STRUCT
|
||||||
|
// Valve is closed feedback
|
||||||
|
i_xOpenFeedback AT %I* : BOOL;
|
||||||
|
|
||||||
|
// Valve is open feedback
|
||||||
|
i_xCloseFeedback AT %I* : BOOL;
|
||||||
|
|
||||||
|
// Use xOpenValve for normally closed valves
|
||||||
|
o_xOpenValve AT %Q* : BOOL := FALSE;
|
||||||
|
|
||||||
|
// Use xCloseValve for normally open valves
|
||||||
|
o_xCloseValve AT %Q* : BOOL := TRUE;
|
||||||
|
END_STRUCT
|
||||||
|
END_TYPE
|
||||||
|
]]></Declaration>
|
||||||
|
</DUT>
|
||||||
|
</TcPlcObject>
|
||||||
@@ -3,8 +3,7 @@
|
|||||||
<POU Name="FB_Valve" Id="{658f8bac-5e87-43a2-9b4c-a425a60acda2}" SpecialFunc="None">
|
<POU Name="FB_Valve" Id="{658f8bac-5e87-43a2-9b4c-a425a60acda2}" SpecialFunc="None">
|
||||||
<Declaration><![CDATA[FUNCTION_BLOCK FINAL FB_Valve
|
<Declaration><![CDATA[FUNCTION_BLOCK FINAL FB_Valve
|
||||||
VAR_INPUT
|
VAR_INPUT
|
||||||
xOpenFeedback AT %I* : BOOL;
|
|
||||||
xCloseFeedback AT %I* : BOOL;
|
|
||||||
|
|
||||||
// Open and close the valve
|
// Open and close the valve
|
||||||
xAutomaticOpen : BOOL;
|
xAutomaticOpen : BOOL;
|
||||||
@@ -38,16 +37,13 @@ VAR_INPUT
|
|||||||
xInUnitTestMode : BOOL := FALSE;
|
xInUnitTestMode : BOOL := FALSE;
|
||||||
END_VAR
|
END_VAR
|
||||||
VAR_OUTPUT
|
VAR_OUTPUT
|
||||||
// Use xOpenValve for normally closed valves
|
|
||||||
xOpenValve AT %Q* : BOOL := FALSE;
|
|
||||||
|
|
||||||
// Use xCloseValve for normally open valves
|
|
||||||
xCloseValve AT %Q* : BOOL := TRUE;
|
|
||||||
|
|
||||||
// Error in valve active
|
// Error in valve active
|
||||||
xError : BOOL;
|
xError : BOOL;
|
||||||
END_VAR
|
END_VAR
|
||||||
VAR_IN_OUT
|
VAR_IN_OUT
|
||||||
|
// IO
|
||||||
|
stIO : ST_Valve_IO;
|
||||||
|
|
||||||
// HMI interface
|
// HMI interface
|
||||||
stHMIInterface : ST_HMI_VALVE_DATA;
|
stHMIInterface : ST_HMI_VALVE_DATA;
|
||||||
END_VAR
|
END_VAR
|
||||||
@@ -153,8 +149,8 @@ IF (NOT _xProcessINTLKOk) OR (NOT _xSafetyINTLKOk) THEN
|
|||||||
END_IF
|
END_IF
|
||||||
|
|
||||||
// Handle open close feedback
|
// Handle open close feedback
|
||||||
_xIsOpen := (stValveConfig.xHasOpenFeedback AND xOpenFeedback AND (NOT xCloseFeedback)) OR ((NOT stValveConfig.xHasOpenFeedback) AND _xOpenValve);
|
_xIsOpen := (stValveConfig.xHasOpenFeedback AND stIO.i_xOpenFeedback AND (NOT stIO.i_xCloseFeedback)) OR ((NOT stValveConfig.xHasOpenFeedback) AND _xOpenValve);
|
||||||
_xIsClosed := (stValveConfig.xHasClosedFeedback AND xCloseFeedback AND (NOT xOpenFeedback)) OR ((NOT stValveConfig.xHasClosedFeedback) AND (NOT _xOpenValve));
|
_xIsClosed := (stValveConfig.xHasClosedFeedback AND stIO.i_xCloseFeedback AND (NOT stIO.i_xOpenFeedback)) OR ((NOT stValveConfig.xHasClosedFeedback) AND (NOT _xOpenValve));
|
||||||
|
|
||||||
|
|
||||||
// ===========================
|
// ===========================
|
||||||
@@ -209,8 +205,8 @@ END_IF
|
|||||||
// Copy internal signals to outputs
|
// Copy internal signals to outputs
|
||||||
// ================================
|
// ================================
|
||||||
|
|
||||||
xOpenValve := _xOpenValve;
|
stIO.o_xOpenValve := _xOpenValve;
|
||||||
xCloseValve := (NOT _xOpenValve);
|
stIO.o_xCloseValve := (NOT _xOpenValve);
|
||||||
|
|
||||||
xError := _xError;
|
xError := _xError;
|
||||||
|
|
||||||
@@ -6,14 +6,6 @@ FUNCTION_BLOCK FINAL FB_ValveAnalog
|
|||||||
VAR_INPUT
|
VAR_INPUT
|
||||||
rSPAutomatic : REAL;
|
rSPAutomatic : REAL;
|
||||||
|
|
||||||
iFeedbackValue AT %I* : INT;
|
|
||||||
xFeedbackUnderrange AT %I* : BOOL;
|
|
||||||
xFeedbackOverrange AT %I* : BOOL;
|
|
||||||
xErrorCard AT %I* : BOOL;
|
|
||||||
|
|
||||||
xOpenFeedback AT %I* : BOOL;
|
|
||||||
xCloseFeedback AT %I* : BOOL;
|
|
||||||
|
|
||||||
// Open and close the valve
|
// Open and close the valve
|
||||||
xAutomaticOpen : BOOL;
|
xAutomaticOpen : BOOL;
|
||||||
|
|
||||||
@@ -46,13 +38,14 @@ VAR_INPUT
|
|||||||
xInUnitTestMode : BOOL := FALSE;
|
xInUnitTestMode : BOOL := FALSE;
|
||||||
END_VAR
|
END_VAR
|
||||||
VAR_OUTPUT
|
VAR_OUTPUT
|
||||||
// Ouput setpoint
|
|
||||||
iSetpoint AT %Q* : INT;
|
|
||||||
|
|
||||||
// Error in valve active
|
// Error in valve active
|
||||||
xError : BOOL;
|
xError : BOOL;
|
||||||
END_VAR
|
END_VAR
|
||||||
VAR_IN_OUT
|
VAR_IN_OUT
|
||||||
|
// IO
|
||||||
|
stIO : ST_ValveAnalog_IO;
|
||||||
|
|
||||||
// HMI interface
|
// HMI interface
|
||||||
stHMIInterface : ST_HMI_ANALOG_VALVE_DATA;
|
stHMIInterface : ST_HMI_ANALOG_VALVE_DATA;
|
||||||
END_VAR
|
END_VAR
|
||||||
@@ -231,8 +224,8 @@ _fbAnalogOutput(
|
|||||||
xReleaseErrors:= xReleaseErrors,
|
xReleaseErrors:= xReleaseErrors,
|
||||||
xConfirmAlarms:= xConfirmAlarms,
|
xConfirmAlarms:= xConfirmAlarms,
|
||||||
xInUnitTestMode := xInUnitTestMode,
|
xInUnitTestMode := xInUnitTestMode,
|
||||||
iAnalogValue=> iSetpoint,
|
|
||||||
xError => _xAnalogOutputError,
|
xError => _xAnalogOutputError,
|
||||||
|
stIO := stIO.stAnalogOutputIO,
|
||||||
stHMIInterface:= stHMIInterface.stSetpoint);
|
stHMIInterface:= stHMIInterface.stSetpoint);
|
||||||
|
|
||||||
IF _fbAnalogOutput.xError THEN
|
IF _fbAnalogOutput.xError THEN
|
||||||
@@ -250,10 +243,6 @@ ELSE
|
|||||||
END_IF
|
END_IF
|
||||||
|
|
||||||
_fbAnalogInput(
|
_fbAnalogInput(
|
||||||
iAnalogValue:= iFeedbackValue,
|
|
||||||
xUnderrange:= _xHasUnderrangeFeedback AND xFeedbackUnderrange,
|
|
||||||
xOverrange:= _xHasOverrangeFeedback AND xFeedbackOverrange,
|
|
||||||
xErrorCard:= _xHasCardError AND xErrorCard,
|
|
||||||
stAnalogIOConfig:= stValveConfig.stAnalogInputConfig,
|
stAnalogIOConfig:= stValveConfig.stAnalogInputConfig,
|
||||||
stAnalogEWConfig:= stValveConfig.stAnalogInputEWConfig,
|
stAnalogEWConfig:= stValveConfig.stAnalogInputEWConfig,
|
||||||
xReleaseErrors:= xReleaseErrors,
|
xReleaseErrors:= xReleaseErrors,
|
||||||
@@ -267,7 +256,8 @@ _fbAnalogInput(
|
|||||||
xErrorLow=> ,
|
xErrorLow=> ,
|
||||||
xWarningLow=> ,
|
xWarningLow=> ,
|
||||||
xWarningHigh=> ,
|
xWarningHigh=> ,
|
||||||
xErrorHigh=> );
|
xErrorHigh=> ,
|
||||||
|
stIO := stIO.stAnalogInputIO);
|
||||||
|
|
||||||
IF _fbAnalogInput.xError THEN
|
IF _fbAnalogInput.xError THEN
|
||||||
_xError := TRUE;
|
_xError := TRUE;
|
||||||
@@ -279,8 +269,8 @@ END_IF
|
|||||||
|
|
||||||
|
|
||||||
// Handle open close feedback
|
// Handle open close feedback
|
||||||
_xIsOpen := (stValveConfig.xHasOpenFeedback AND xOpenFeedback AND (NOT xCloseFeedback)) OR ((NOT stValveConfig.xHasOpenFeedback) AND (_rCurrentValvePosition >= stValveConfig.rPVIsOpen));
|
_xIsOpen := (stValveConfig.xHasOpenFeedback AND stIO.i_xOpenFeedback AND (NOT stIO.i_xCloseFeedback)) OR ((NOT stValveConfig.xHasOpenFeedback) AND (_rCurrentValvePosition >= stValveConfig.rPVIsOpen));
|
||||||
_xIsClosed := (stValveConfig.xHasClosedFeedback AND xCloseFeedback AND (NOT xOpenFeedback)) OR ((NOT stValveConfig.xHasClosedFeedback) AND (_rCurrentValvePosition <= stValveConfig.rPVIsOpen));
|
_xIsClosed := (stValveConfig.xHasClosedFeedback AND stIO.i_xCloseFeedback AND (NOT stIO.i_xOpenFeedback)) OR ((NOT stValveConfig.xHasClosedFeedback) AND (_rCurrentValvePosition <= stValveConfig.rPVIsOpen));
|
||||||
|
|
||||||
|
|
||||||
// Calculate target tolerance
|
// Calculate target tolerance
|
||||||
@@ -4,20 +4,20 @@
|
|||||||
<Declaration><![CDATA[{attribute 'analysis' := '-33'}
|
<Declaration><![CDATA[{attribute 'analysis' := '-33'}
|
||||||
PROGRAM PRG_MAIN
|
PROGRAM PRG_MAIN
|
||||||
VAR
|
VAR
|
||||||
// Analog I/O tests
|
// // Analog I/O tests
|
||||||
_fbAnalogInputTest : FB_AnalogInputTest;
|
// _fbAnalogInputTest : FB_AnalogInputTest;
|
||||||
_fbAnalogOutputTest : FB_AnalogOutputTest;
|
// _fbAnalogOutputTest : FB_AnalogOutputTest;
|
||||||
|
//
|
||||||
// Valve tests
|
// // Valve tests
|
||||||
_fbValve_Test : FB_Valve_Test;
|
// _fbValve_Test : FB_Valve_Test;
|
||||||
_fbValve_TimeoutTestOpen : FB_ValveTestTimoutOpen;
|
// _fbValve_TimeoutTestOpen : FB_ValveTestTimoutOpen;
|
||||||
_fbValve_TimeoutTestClose : FB_ValveTestTimoutClose;
|
// _fbValve_TimeoutTestClose : FB_ValveTestTimoutClose;
|
||||||
_fbValve_TimoutTriggerOpen : FB_ValveTestTriggerTimoutOpen;
|
// _fbValve_TimoutTriggerOpen : FB_ValveTestTriggerTimoutOpen;
|
||||||
_fbValve_TimoutTriggerClose : FB_ValveTestTriggerTimoutClose;
|
// _fbValve_TimoutTriggerClose : FB_ValveTestTriggerTimoutClose;
|
||||||
|
//
|
||||||
_fbValveAnalogTest : FB_ValveAnalog_Test;
|
// _fbValveAnalogTest : FB_ValveAnalog_Test;
|
||||||
|
//
|
||||||
_fbValveTestHMI : FB_ValveTestHMI;
|
// _fbValveTestHMI : FB_ValveTestHMI;
|
||||||
|
|
||||||
// Release signal test
|
// Release signal test
|
||||||
_fbReleaseSignalTest : FB_ReleaseSignalTest;
|
_fbReleaseSignalTest : FB_ReleaseSignalTest;
|
||||||
@@ -131,13 +131,13 @@ _stAnalogEWConfig.stDelays := _stDelayConfig;
|
|||||||
|
|
||||||
// run analog input
|
// run analog input
|
||||||
_fbAnalogInput(
|
_fbAnalogInput(
|
||||||
iAnalogValue := 1234,
|
i_iAnalogValue := 1234,
|
||||||
stAnalogIOConfig := _stAnalogInputConfig,
|
stAnalogIOConfig := _stAnalogInputConfig,
|
||||||
stAnalogEWConfig := _stAnalogEWConfig,
|
stAnalogEWConfig := _stAnalogEWConfig,
|
||||||
xReleaseLimitErrors := TRUE,
|
xReleaseLimitErrors := TRUE,
|
||||||
xUnderrange:= FALSE,
|
i_xUnderrange:= FALSE,
|
||||||
xOverrange:= FALSE,
|
i_xOverrange:= FALSE,
|
||||||
xErrorCard:= FALSE,
|
i_xErrorCard:= FALSE,
|
||||||
xInUnitTestMode := TRUE,
|
xInUnitTestMode := TRUE,
|
||||||
xError=> _xError,
|
xError=> _xError,
|
||||||
rScaledValue=> );
|
rScaledValue=> );
|
||||||
@@ -179,13 +179,13 @@ _stAnalogEWConfig.stDelays := _stDelayConfig;
|
|||||||
|
|
||||||
// run analog input
|
// run analog input
|
||||||
_fbAnalogInput(
|
_fbAnalogInput(
|
||||||
iAnalogValue:= 1234,
|
i_iAnalogValue:= 1234,
|
||||||
stAnalogIOConfig := _stAnalogInputConfig,
|
stAnalogIOConfig := _stAnalogInputConfig,
|
||||||
stAnalogEWConfig := _stAnalogEWConfig,
|
stAnalogEWConfig := _stAnalogEWConfig,
|
||||||
xReleaseLimitErrors := TRUE,
|
xReleaseLimitErrors := TRUE,
|
||||||
xUnderrange:= FALSE,
|
i_xUnderrange:= FALSE,
|
||||||
xOverrange:= FALSE,
|
i_xOverrange:= FALSE,
|
||||||
xErrorCard:= FALSE,
|
i_xErrorCard:= FALSE,
|
||||||
xInUnitTestMode := TRUE,
|
xInUnitTestMode := TRUE,
|
||||||
xError=> _xError,
|
xError=> _xError,
|
||||||
rScaledValue=> );
|
rScaledValue=> );
|
||||||
@@ -229,12 +229,12 @@ _stAnalogEWConfig.stDelays := _stDelayConfig;
|
|||||||
|
|
||||||
// run analog input
|
// run analog input
|
||||||
_fbAnalogInput(
|
_fbAnalogInput(
|
||||||
iAnalogValue:= 1234,
|
i_iAnalogValue:= 1234,
|
||||||
stAnalogIOConfig := _stAnalogInputConfig,
|
stAnalogIOConfig := _stAnalogInputConfig,
|
||||||
stAnalogEWConfig := _stAnalogEWConfig,
|
stAnalogEWConfig := _stAnalogEWConfig,
|
||||||
xUnderrange:= FALSE,
|
i_xUnderrange:= FALSE,
|
||||||
xOverrange:= FALSE,
|
i_xOverrange:= FALSE,
|
||||||
xErrorCard:= FALSE,
|
i_xErrorCard:= FALSE,
|
||||||
xInUnitTestMode := TRUE,
|
xInUnitTestMode := TRUE,
|
||||||
xError=> _xError,
|
xError=> _xError,
|
||||||
rScaledValue=> _rResult);
|
rScaledValue=> _rResult);
|
||||||
@@ -281,12 +281,12 @@ _stAnalogEWConfig.stDelays := _stDelayConfig;
|
|||||||
|
|
||||||
// Check with active release signal
|
// Check with active release signal
|
||||||
_fbAI(
|
_fbAI(
|
||||||
iAnalogValue:= 95,
|
i_iAnalogValue:= 95,
|
||||||
stAnalogIOConfig := _stAnalogInputConfig,
|
stAnalogIOConfig := _stAnalogInputConfig,
|
||||||
stAnalogEWConfig := _stAnalogEWConfig,
|
stAnalogEWConfig := _stAnalogEWConfig,
|
||||||
xUnderrange:= FALSE,
|
i_xUnderrange:= FALSE,
|
||||||
xOverrange:= FALSE,
|
i_xOverrange:= FALSE,
|
||||||
xErrorCard:= FALSE,
|
i_xErrorCard:= FALSE,
|
||||||
xReleaseLimitErrors:= TRUE,
|
xReleaseLimitErrors:= TRUE,
|
||||||
xError=> _xResultError,
|
xError=> _xResultError,
|
||||||
rScaledValue=> ,
|
rScaledValue=> ,
|
||||||
@@ -304,10 +304,10 @@ AssertTrue(Condition:= _xResultErrorHigh, Message:= 'Error high is not active');
|
|||||||
|
|
||||||
// Check without active release signal
|
// Check without active release signal
|
||||||
_fbAI(
|
_fbAI(
|
||||||
iAnalogValue:= 95,
|
i_iAnalogValue:= 95,
|
||||||
xUnderrange:= FALSE,
|
i_xUnderrange:= FALSE,
|
||||||
xOverrange:= FALSE,
|
i_xOverrange:= FALSE,
|
||||||
xErrorCard:= FALSE,
|
i_xErrorCard:= FALSE,
|
||||||
xReleaseLimitErrors:= FALSE,
|
xReleaseLimitErrors:= FALSE,
|
||||||
xError=> _xResultError,
|
xError=> _xResultError,
|
||||||
rScaledValue=> ,
|
rScaledValue=> ,
|
||||||
@@ -365,12 +365,12 @@ _stAnalogEWConfig.stDelays := _stDelayConfig;
|
|||||||
IF NOT _xErrorHighOffInitDone THEN
|
IF NOT _xErrorHighOffInitDone THEN
|
||||||
_xErrorHighOffInitDone := TRUE;
|
_xErrorHighOffInitDone := TRUE;
|
||||||
_fbAIErrorHighOff(
|
_fbAIErrorHighOff(
|
||||||
iAnalogValue:= 95,
|
i_iAnalogValue:= 95,
|
||||||
stAnalogIOConfig := _stAnalogInputConfig,
|
stAnalogIOConfig := _stAnalogInputConfig,
|
||||||
stAnalogEWConfig := _stAnalogEWConfig,
|
stAnalogEWConfig := _stAnalogEWConfig,
|
||||||
xUnderrange:= FALSE,
|
i_xUnderrange:= FALSE,
|
||||||
xOverrange:= FALSE,
|
i_xOverrange:= FALSE,
|
||||||
xErrorCard:= FALSE,
|
i_xErrorCard:= FALSE,
|
||||||
xReleaseLimitErrors:= TRUE,
|
xReleaseLimitErrors:= TRUE,
|
||||||
xError=> _xResultError,
|
xError=> _xResultError,
|
||||||
rScaledValue=> ,
|
rScaledValue=> ,
|
||||||
@@ -382,10 +382,10 @@ IF NOT _xErrorHighOffInitDone THEN
|
|||||||
ELSE
|
ELSE
|
||||||
_fbErrorHighOffTimer(IN := TRUE, PT := timOffTime);
|
_fbErrorHighOffTimer(IN := TRUE, PT := timOffTime);
|
||||||
_fbAIErrorHighOff(
|
_fbAIErrorHighOff(
|
||||||
iAnalogValue:= 50,
|
i_iAnalogValue:= 50,
|
||||||
xUnderrange:= FALSE,
|
i_xUnderrange:= FALSE,
|
||||||
xOverrange:= FALSE,
|
i_xOverrange:= FALSE,
|
||||||
xErrorCard:= FALSE,
|
i_xErrorCard:= FALSE,
|
||||||
xReleaseLimitErrors:= TRUE,
|
xReleaseLimitErrors:= TRUE,
|
||||||
xError=> _xResultError,
|
xError=> _xResultError,
|
||||||
rScaledValue=> ,
|
rScaledValue=> ,
|
||||||
@@ -454,12 +454,12 @@ _fbErrorHighOnTimer(IN := TRUE, PT := timOnTime);
|
|||||||
|
|
||||||
// Check with active release signal
|
// Check with active release signal
|
||||||
_fbAIErrorHighOn(
|
_fbAIErrorHighOn(
|
||||||
iAnalogValue:= 95,
|
i_iAnalogValue:= 95,
|
||||||
stAnalogIOConfig := _stAnalogInputConfig,
|
stAnalogIOConfig := _stAnalogInputConfig,
|
||||||
stAnalogEWConfig := _stAnalogEWConfig,
|
stAnalogEWConfig := _stAnalogEWConfig,
|
||||||
xUnderrange:= FALSE,
|
i_xUnderrange:= FALSE,
|
||||||
xOverrange:= FALSE,
|
i_xOverrange:= FALSE,
|
||||||
xErrorCard:= FALSE,
|
i_xErrorCard:= FALSE,
|
||||||
xReleaseLimitErrors:= TRUE,
|
xReleaseLimitErrors:= TRUE,
|
||||||
xError=> _xResultError,
|
xError=> _xResultError,
|
||||||
rScaledValue=> ,
|
rScaledValue=> ,
|
||||||
@@ -518,12 +518,12 @@ _stAnalogEWConfig.stDelays := _stDelayConfig;
|
|||||||
|
|
||||||
// Error low with release
|
// Error low with release
|
||||||
_fbAI(
|
_fbAI(
|
||||||
iAnalogValue:= 0,
|
i_iAnalogValue:= 0,
|
||||||
stAnalogIOConfig := _stAnalogInputConfig,
|
stAnalogIOConfig := _stAnalogInputConfig,
|
||||||
stAnalogEWConfig := _stAnalogEWConfig,
|
stAnalogEWConfig := _stAnalogEWConfig,
|
||||||
xUnderrange:= FALSE,
|
i_xUnderrange:= FALSE,
|
||||||
xOverrange:= FALSE,
|
i_xOverrange:= FALSE,
|
||||||
xErrorCard:= FALSE,
|
i_xErrorCard:= FALSE,
|
||||||
xReleaseLimitErrors:= TRUE,
|
xReleaseLimitErrors:= TRUE,
|
||||||
xError=> _xResultError,
|
xError=> _xResultError,
|
||||||
rScaledValue=> ,
|
rScaledValue=> ,
|
||||||
@@ -542,10 +542,10 @@ AssertFalse(Condition:= _xResultErrorHigh, Message:= 'Error high is active');
|
|||||||
|
|
||||||
// Error low without release
|
// Error low without release
|
||||||
_fbAI(
|
_fbAI(
|
||||||
iAnalogValue:= 0,
|
i_iAnalogValue:= 0,
|
||||||
xUnderrange:= FALSE,
|
i_xUnderrange:= FALSE,
|
||||||
xOverrange:= FALSE,
|
i_xOverrange:= FALSE,
|
||||||
xErrorCard:= FALSE,
|
i_xErrorCard:= FALSE,
|
||||||
xReleaseLimitErrors:= FALSE,
|
xReleaseLimitErrors:= FALSE,
|
||||||
xError=> _xResultError,
|
xError=> _xResultError,
|
||||||
rScaledValue=> ,
|
rScaledValue=> ,
|
||||||
@@ -602,12 +602,12 @@ _stAnalogEWConfig.stDelays := _stDelayConfig;
|
|||||||
IF NOT _xErrorLowOffInitDone THEN
|
IF NOT _xErrorLowOffInitDone THEN
|
||||||
_xErrorLowOffInitDone := TRUE;
|
_xErrorLowOffInitDone := TRUE;
|
||||||
_fbAIErrorLowOff(
|
_fbAIErrorLowOff(
|
||||||
iAnalogValue:= 5,
|
i_iAnalogValue:= 5,
|
||||||
stAnalogIOConfig := _stAnalogInputConfig,
|
stAnalogIOConfig := _stAnalogInputConfig,
|
||||||
stAnalogEWConfig := _stAnalogEWConfig,
|
stAnalogEWConfig := _stAnalogEWConfig,
|
||||||
xUnderrange:= FALSE,
|
i_xUnderrange:= FALSE,
|
||||||
xOverrange:= FALSE,
|
i_xOverrange:= FALSE,
|
||||||
xErrorCard:= FALSE,
|
i_xErrorCard:= FALSE,
|
||||||
xReleaseLimitErrors:= TRUE,
|
xReleaseLimitErrors:= TRUE,
|
||||||
xError=> _xResultError,
|
xError=> _xResultError,
|
||||||
rScaledValue=> ,
|
rScaledValue=> ,
|
||||||
@@ -619,10 +619,10 @@ IF NOT _xErrorLowOffInitDone THEN
|
|||||||
ELSE
|
ELSE
|
||||||
_fbErrorLowOffTimer(IN := TRUE, PT := timOffTime);
|
_fbErrorLowOffTimer(IN := TRUE, PT := timOffTime);
|
||||||
_fbAIErrorLowOff(
|
_fbAIErrorLowOff(
|
||||||
iAnalogValue:= 50,
|
i_iAnalogValue:= 50,
|
||||||
xUnderrange:= FALSE,
|
i_xUnderrange:= FALSE,
|
||||||
xOverrange:= FALSE,
|
i_xOverrange:= FALSE,
|
||||||
xErrorCard:= FALSE,
|
i_xErrorCard:= FALSE,
|
||||||
xReleaseLimitErrors:= TRUE,
|
xReleaseLimitErrors:= TRUE,
|
||||||
xError=> _xResultError,
|
xError=> _xResultError,
|
||||||
rScaledValue=> ,
|
rScaledValue=> ,
|
||||||
@@ -688,12 +688,12 @@ _fbErrorLowOnTimer(IN := TRUE, PT := timOnTime);
|
|||||||
|
|
||||||
// Check with active release signal
|
// Check with active release signal
|
||||||
_fbAIErrorLowOn(
|
_fbAIErrorLowOn(
|
||||||
iAnalogValue:= 5,
|
i_iAnalogValue:= 5,
|
||||||
stAnalogIOConfig := _stAnalogInputConfig,
|
stAnalogIOConfig := _stAnalogInputConfig,
|
||||||
stAnalogEWConfig := _stAnalogEWConfig,
|
stAnalogEWConfig := _stAnalogEWConfig,
|
||||||
xUnderrange:= FALSE,
|
i_xUnderrange:= FALSE,
|
||||||
xOverrange:= FALSE,
|
i_xOverrange:= FALSE,
|
||||||
xErrorCard:= FALSE,
|
i_xErrorCard:= FALSE,
|
||||||
xReleaseLimitErrors:= TRUE,
|
xReleaseLimitErrors:= TRUE,
|
||||||
xError=> _xResultError,
|
xError=> _xResultError,
|
||||||
rScaledValue=> ,
|
rScaledValue=> ,
|
||||||
@@ -753,12 +753,12 @@ _stAnalogEWConfig.stDelays := _stDelayConfig;
|
|||||||
|
|
||||||
// run analog input
|
// run analog input
|
||||||
_fbAnalogInput(
|
_fbAnalogInput(
|
||||||
iAnalogValue:= 3071, // 0,75 * 4095 = 3071,25
|
i_iAnalogValue:= 3071, // 0,75 * 4095 = 3071,25
|
||||||
stAnalogIOConfig := _stAnalogInputConfig,
|
stAnalogIOConfig := _stAnalogInputConfig,
|
||||||
stAnalogEWConfig := _stAnalogEWConfig,
|
stAnalogEWConfig := _stAnalogEWConfig,
|
||||||
xUnderrange:= FALSE,
|
i_xUnderrange:= FALSE,
|
||||||
xOverrange:= FALSE,
|
i_xOverrange:= FALSE,
|
||||||
xErrorCard:= FALSE,
|
i_xErrorCard:= FALSE,
|
||||||
xError=> ,
|
xError=> ,
|
||||||
xInUnitTestMode := TRUE,
|
xInUnitTestMode := TRUE,
|
||||||
rScaledValue=> _rResult);
|
rScaledValue=> _rResult);
|
||||||
@@ -807,12 +807,12 @@ _stAnalogEWConfig.stDelays := _stDelayConfig;
|
|||||||
|
|
||||||
// run AI to check for overrange error
|
// run AI to check for overrange error
|
||||||
_fbAI(
|
_fbAI(
|
||||||
iAnalogValue:= 50,
|
i_iAnalogValue:= 50,
|
||||||
stAnalogIOConfig := _stAnalogInputConfig,
|
stAnalogIOConfig := _stAnalogInputConfig,
|
||||||
stAnalogEWConfig := _stAnalogEWConfig,
|
stAnalogEWConfig := _stAnalogEWConfig,
|
||||||
xUnderrange:= FALSE,
|
i_xUnderrange:= FALSE,
|
||||||
xOverrange:= TRUE,
|
i_xOverrange:= TRUE,
|
||||||
xErrorCard:= ,
|
i_xErrorCard:= ,
|
||||||
xReleaseLimitErrors:= TRUE,
|
xReleaseLimitErrors:= TRUE,
|
||||||
xError=> _xResultError,
|
xError=> _xResultError,
|
||||||
rScaledValue=> ,
|
rScaledValue=> ,
|
||||||
@@ -866,12 +866,12 @@ IF NOT _xOverrangeOffInitDone THEN
|
|||||||
_xOverrangeOffInitDone := TRUE;
|
_xOverrangeOffInitDone := TRUE;
|
||||||
// run AI to check for overrange error
|
// run AI to check for overrange error
|
||||||
_fbAIOverrangeOff(
|
_fbAIOverrangeOff(
|
||||||
iAnalogValue:= 50,
|
i_iAnalogValue:= 50,
|
||||||
stAnalogIOConfig := _stAnalogInputConfig,
|
stAnalogIOConfig := _stAnalogInputConfig,
|
||||||
stAnalogEWConfig := _stAnalogEWConfig,
|
stAnalogEWConfig := _stAnalogEWConfig,
|
||||||
xUnderrange:= FALSE,
|
i_xUnderrange:= FALSE,
|
||||||
xOverrange:= TRUE,
|
i_xOverrange:= TRUE,
|
||||||
xErrorCard:= ,
|
i_xErrorCard:= ,
|
||||||
xReleaseLimitErrors:= TRUE,
|
xReleaseLimitErrors:= TRUE,
|
||||||
xError=> _xResultError,
|
xError=> _xResultError,
|
||||||
rScaledValue=> ,
|
rScaledValue=> ,
|
||||||
@@ -884,12 +884,12 @@ END_IF
|
|||||||
|
|
||||||
// run AI cyclically until overrange error is supposed to be off
|
// run AI cyclically until overrange error is supposed to be off
|
||||||
_fbAIOverrangeOff(
|
_fbAIOverrangeOff(
|
||||||
iAnalogValue:= 50,
|
i_iAnalogValue:= 50,
|
||||||
stAnalogIOConfig := _stAnalogInputConfig,
|
stAnalogIOConfig := _stAnalogInputConfig,
|
||||||
stAnalogEWConfig := _stAnalogEWConfig,
|
stAnalogEWConfig := _stAnalogEWConfig,
|
||||||
xUnderrange:= FALSE,
|
i_xUnderrange:= FALSE,
|
||||||
xOverrange:= FALSE,
|
i_xOverrange:= FALSE,
|
||||||
xErrorCard:= ,
|
i_xErrorCard:= ,
|
||||||
xReleaseErrors := TRUE,
|
xReleaseErrors := TRUE,
|
||||||
xReleaseHardwareErrors := TRUE,
|
xReleaseHardwareErrors := TRUE,
|
||||||
xReleaseLimitErrors:= TRUE,
|
xReleaseLimitErrors:= TRUE,
|
||||||
@@ -945,12 +945,12 @@ _fbOverrangeOnTimer(IN := TRUE, PT := T#100MS);
|
|||||||
|
|
||||||
// run AI to check for overrange error
|
// run AI to check for overrange error
|
||||||
_fbAIOverrangeOn(
|
_fbAIOverrangeOn(
|
||||||
iAnalogValue:= 50,
|
i_iAnalogValue:= 50,
|
||||||
stAnalogIOConfig := _stAnalogInputConfig,
|
stAnalogIOConfig := _stAnalogInputConfig,
|
||||||
stAnalogEWConfig := _stAnalogEWConfig,
|
stAnalogEWConfig := _stAnalogEWConfig,
|
||||||
xUnderrange:= FALSE,
|
i_xUnderrange:= FALSE,
|
||||||
xOverrange:= TRUE,
|
i_xOverrange:= TRUE,
|
||||||
xErrorCard:= ,
|
i_xErrorCard:= ,
|
||||||
xReleaseLimitErrors:= TRUE,
|
xReleaseLimitErrors:= TRUE,
|
||||||
xError=> _xResultError,
|
xError=> _xResultError,
|
||||||
rScaledValue=> ,
|
rScaledValue=> ,
|
||||||
@@ -1003,12 +1003,12 @@ _stAnalogEWConfig.stDelays := _stDelayConfig;
|
|||||||
|
|
||||||
// run AI to check for underrange error
|
// run AI to check for underrange error
|
||||||
_fbAI(
|
_fbAI(
|
||||||
iAnalogValue:= 50,
|
i_iAnalogValue:= 50,
|
||||||
stAnalogIOConfig := _stAnalogInputConfig,
|
stAnalogIOConfig := _stAnalogInputConfig,
|
||||||
stAnalogEWConfig := _stAnalogEWConfig,
|
stAnalogEWConfig := _stAnalogEWConfig,
|
||||||
xUnderrange:= TRUE,
|
i_xUnderrange:= TRUE,
|
||||||
xOverrange:= FALSE,
|
i_xOverrange:= FALSE,
|
||||||
xErrorCard:= ,
|
i_xErrorCard:= ,
|
||||||
xReleaseLimitErrors:= TRUE,
|
xReleaseLimitErrors:= TRUE,
|
||||||
xError=> _xResultError,
|
xError=> _xResultError,
|
||||||
rScaledValue=> ,
|
rScaledValue=> ,
|
||||||
@@ -1062,12 +1062,12 @@ IF NOT _xUnderrangeOffInitDone THEN
|
|||||||
_xUnderrangeOffInitDone := TRUE;
|
_xUnderrangeOffInitDone := TRUE;
|
||||||
// run AI to check for underrange error
|
// run AI to check for underrange error
|
||||||
_fbAIUnderrangeOff(
|
_fbAIUnderrangeOff(
|
||||||
iAnalogValue:= 50,
|
i_iAnalogValue:= 50,
|
||||||
stAnalogIOConfig := _stAnalogInputConfig,
|
stAnalogIOConfig := _stAnalogInputConfig,
|
||||||
stAnalogEWConfig := _stAnalogEWConfig,
|
stAnalogEWConfig := _stAnalogEWConfig,
|
||||||
xUnderrange:= TRUE,
|
i_xUnderrange:= TRUE,
|
||||||
xOverrange:= FALSE,
|
i_xOverrange:= FALSE,
|
||||||
xErrorCard:= ,
|
i_xErrorCard:= ,
|
||||||
xReleaseLimitErrors:= TRUE,
|
xReleaseLimitErrors:= TRUE,
|
||||||
xError=> _xResultError,
|
xError=> _xResultError,
|
||||||
rScaledValue=> ,
|
rScaledValue=> ,
|
||||||
@@ -1080,12 +1080,12 @@ END_IF
|
|||||||
|
|
||||||
// run AI cyclically until underrange error is supposed to be off
|
// run AI cyclically until underrange error is supposed to be off
|
||||||
_fbAIUnderrangeOff(
|
_fbAIUnderrangeOff(
|
||||||
iAnalogValue:= 0,
|
i_iAnalogValue:= 0,
|
||||||
stAnalogIOConfig := _stAnalogInputConfig,
|
stAnalogIOConfig := _stAnalogInputConfig,
|
||||||
stAnalogEWConfig := _stAnalogEWConfig,
|
stAnalogEWConfig := _stAnalogEWConfig,
|
||||||
xUnderrange:= FALSE,
|
i_xUnderrange:= FALSE,
|
||||||
xOverrange:= FALSE,
|
i_xOverrange:= FALSE,
|
||||||
xErrorCard:= ,
|
i_xErrorCard:= ,
|
||||||
xReleaseErrors := TRUE,
|
xReleaseErrors := TRUE,
|
||||||
xReleaseHardwareErrors := TRUE,
|
xReleaseHardwareErrors := TRUE,
|
||||||
xReleaseLimitErrors:= TRUE,
|
xReleaseLimitErrors:= TRUE,
|
||||||
@@ -1141,12 +1141,12 @@ _fbUnderrangeOnTimer(IN := TRUE, PT := T#100MS);
|
|||||||
|
|
||||||
// run AI to check for underrange error
|
// run AI to check for underrange error
|
||||||
_fbAIUnderrangeOn(
|
_fbAIUnderrangeOn(
|
||||||
iAnalogValue:= 50,
|
i_iAnalogValue:= 50,
|
||||||
stAnalogIOConfig := _stAnalogInputConfig,
|
stAnalogIOConfig := _stAnalogInputConfig,
|
||||||
stAnalogEWConfig := _stAnalogEWConfig,
|
stAnalogEWConfig := _stAnalogEWConfig,
|
||||||
xUnderrange:= TRUE,
|
i_xUnderrange:= TRUE,
|
||||||
xOverrange:= FALSE,
|
i_xOverrange:= FALSE,
|
||||||
xErrorCard:= ,
|
i_xErrorCard:= ,
|
||||||
xReleaseLimitErrors:= TRUE,
|
xReleaseLimitErrors:= TRUE,
|
||||||
xError=> _xResultError,
|
xError=> _xResultError,
|
||||||
rScaledValue=> ,
|
rScaledValue=> ,
|
||||||
@@ -1200,12 +1200,12 @@ _stAnalogEWConfig.stDelays := _stDelayConfig;
|
|||||||
|
|
||||||
// Check with active release signal
|
// Check with active release signal
|
||||||
_fbAI(
|
_fbAI(
|
||||||
iAnalogValue:= 85,
|
i_iAnalogValue:= 85,
|
||||||
stAnalogIOConfig := _stAnalogInputConfig,
|
stAnalogIOConfig := _stAnalogInputConfig,
|
||||||
stAnalogEWConfig := _stAnalogEWConfig,
|
stAnalogEWConfig := _stAnalogEWConfig,
|
||||||
xUnderrange:= FALSE,
|
i_xUnderrange:= FALSE,
|
||||||
xOverrange:= FALSE,
|
i_xOverrange:= FALSE,
|
||||||
xErrorCard:= FALSE,
|
i_xErrorCard:= FALSE,
|
||||||
xReleaseLimitErrors:= TRUE,
|
xReleaseLimitErrors:= TRUE,
|
||||||
xError=> _xResultError,
|
xError=> _xResultError,
|
||||||
rScaledValue=> ,
|
rScaledValue=> ,
|
||||||
@@ -1224,10 +1224,10 @@ AssertFalse(Condition:= _xResultErrorHigh, Message:= 'Error high is active');
|
|||||||
|
|
||||||
// Check without active release signal
|
// Check without active release signal
|
||||||
_fbAI(
|
_fbAI(
|
||||||
iAnalogValue:= 85,
|
i_iAnalogValue:= 85,
|
||||||
xUnderrange:= FALSE,
|
i_xUnderrange:= FALSE,
|
||||||
xOverrange:= FALSE,
|
i_xOverrange:= FALSE,
|
||||||
xErrorCard:= FALSE,
|
i_xErrorCard:= FALSE,
|
||||||
xReleaseLimitErrors:= FALSE,
|
xReleaseLimitErrors:= FALSE,
|
||||||
xError=> _xResultError,
|
xError=> _xResultError,
|
||||||
rScaledValue=> ,
|
rScaledValue=> ,
|
||||||
@@ -1283,12 +1283,12 @@ _stAnalogEWConfig.stDelays := _stDelayConfig;
|
|||||||
IF NOT _xWarningHighOffInitDone THEN
|
IF NOT _xWarningHighOffInitDone THEN
|
||||||
_xWarningHighOffInitDone := TRUE;
|
_xWarningHighOffInitDone := TRUE;
|
||||||
_fbAIWarningHighOff(
|
_fbAIWarningHighOff(
|
||||||
iAnalogValue:= 85,
|
i_iAnalogValue:= 85,
|
||||||
stAnalogIOConfig := _stAnalogInputConfig,
|
stAnalogIOConfig := _stAnalogInputConfig,
|
||||||
stAnalogEWConfig := _stAnalogEWConfig,
|
stAnalogEWConfig := _stAnalogEWConfig,
|
||||||
xUnderrange:= FALSE,
|
i_xUnderrange:= FALSE,
|
||||||
xOverrange:= FALSE,
|
i_xOverrange:= FALSE,
|
||||||
xErrorCard:= FALSE,
|
i_xErrorCard:= FALSE,
|
||||||
xReleaseLimitErrors:= TRUE,
|
xReleaseLimitErrors:= TRUE,
|
||||||
xError=> _xResultError,
|
xError=> _xResultError,
|
||||||
rScaledValue=> ,
|
rScaledValue=> ,
|
||||||
@@ -1300,10 +1300,10 @@ IF NOT _xWarningHighOffInitDone THEN
|
|||||||
ELSE
|
ELSE
|
||||||
_fbWarningHighOffTimer(IN := TRUE, PT := timOffTime);
|
_fbWarningHighOffTimer(IN := TRUE, PT := timOffTime);
|
||||||
_fbAIWarningHighOff(
|
_fbAIWarningHighOff(
|
||||||
iAnalogValue:= 50,
|
i_iAnalogValue:= 50,
|
||||||
xUnderrange:= FALSE,
|
i_xUnderrange:= FALSE,
|
||||||
xOverrange:= FALSE,
|
i_xOverrange:= FALSE,
|
||||||
xErrorCard:= FALSE,
|
i_xErrorCard:= FALSE,
|
||||||
xReleaseLimitErrors:= TRUE,
|
xReleaseLimitErrors:= TRUE,
|
||||||
xError=> _xResultError,
|
xError=> _xResultError,
|
||||||
rScaledValue=> ,
|
rScaledValue=> ,
|
||||||
@@ -1369,12 +1369,12 @@ _fbWarningHighOnTimer(IN := TRUE, PT := timOnTime);
|
|||||||
|
|
||||||
// Check with active release signal
|
// Check with active release signal
|
||||||
_fbAIWarningHighOn(
|
_fbAIWarningHighOn(
|
||||||
iAnalogValue:= 85,
|
i_iAnalogValue:= 85,
|
||||||
stAnalogIOConfig := _stAnalogInputConfig,
|
stAnalogIOConfig := _stAnalogInputConfig,
|
||||||
stAnalogEWConfig := _stAnalogEWConfig,
|
stAnalogEWConfig := _stAnalogEWConfig,
|
||||||
xUnderrange:= FALSE,
|
i_xUnderrange:= FALSE,
|
||||||
xOverrange:= FALSE,
|
i_xOverrange:= FALSE,
|
||||||
xErrorCard:= FALSE,
|
i_xErrorCard:= FALSE,
|
||||||
xReleaseLimitErrors:= TRUE,
|
xReleaseLimitErrors:= TRUE,
|
||||||
xError=> _xResultError,
|
xError=> _xResultError,
|
||||||
rScaledValue=> ,
|
rScaledValue=> ,
|
||||||
@@ -1433,12 +1433,12 @@ _stAnalogEWConfig.stDelays := _stDelayConfig;
|
|||||||
|
|
||||||
// Warning low with release
|
// Warning low with release
|
||||||
_fbAI(
|
_fbAI(
|
||||||
iAnalogValue:= 15,
|
i_iAnalogValue:= 15,
|
||||||
stAnalogIOConfig := _stAnalogInputConfig,
|
stAnalogIOConfig := _stAnalogInputConfig,
|
||||||
stAnalogEWConfig := _stAnalogEWConfig,
|
stAnalogEWConfig := _stAnalogEWConfig,
|
||||||
xUnderrange:= FALSE,
|
i_xUnderrange:= FALSE,
|
||||||
xOverrange:= FALSE,
|
i_xOverrange:= FALSE,
|
||||||
xErrorCard:= FALSE,
|
i_xErrorCard:= FALSE,
|
||||||
xReleaseLimitErrors:= TRUE,
|
xReleaseLimitErrors:= TRUE,
|
||||||
xError=> _xResultError,
|
xError=> _xResultError,
|
||||||
rScaledValue=> ,
|
rScaledValue=> ,
|
||||||
@@ -1457,10 +1457,10 @@ AssertFalse(Condition:= _xResultErrorHigh, Message:= 'Error high is active');
|
|||||||
|
|
||||||
// Warning low without release
|
// Warning low without release
|
||||||
_fbAI(
|
_fbAI(
|
||||||
iAnalogValue:= 15,
|
i_iAnalogValue:= 15,
|
||||||
xUnderrange:= FALSE,
|
i_xUnderrange:= FALSE,
|
||||||
xOverrange:= FALSE,
|
i_xOverrange:= FALSE,
|
||||||
xErrorCard:= FALSE,
|
i_xErrorCard:= FALSE,
|
||||||
xReleaseLimitErrors:= FALSE,
|
xReleaseLimitErrors:= FALSE,
|
||||||
xError=> _xResultError,
|
xError=> _xResultError,
|
||||||
rScaledValue=> ,
|
rScaledValue=> ,
|
||||||
@@ -1517,12 +1517,12 @@ _stAnalogEWConfig.stDelays := _stDelayConfig;
|
|||||||
IF NOT _xWarningLowOffInitDone THEN
|
IF NOT _xWarningLowOffInitDone THEN
|
||||||
_xWarningLowOffInitDone := TRUE;
|
_xWarningLowOffInitDone := TRUE;
|
||||||
_fbAIWarningLowOff(
|
_fbAIWarningLowOff(
|
||||||
iAnalogValue:= 15,
|
i_iAnalogValue:= 15,
|
||||||
stAnalogIOConfig := _stAnalogInputConfig,
|
stAnalogIOConfig := _stAnalogInputConfig,
|
||||||
stAnalogEWConfig := _stAnalogEWConfig,
|
stAnalogEWConfig := _stAnalogEWConfig,
|
||||||
xUnderrange:= FALSE,
|
i_xUnderrange:= FALSE,
|
||||||
xOverrange:= FALSE,
|
i_xOverrange:= FALSE,
|
||||||
xErrorCard:= FALSE,
|
i_xErrorCard:= FALSE,
|
||||||
xReleaseLimitErrors:= TRUE,
|
xReleaseLimitErrors:= TRUE,
|
||||||
xError=> _xResultError,
|
xError=> _xResultError,
|
||||||
rScaledValue=> ,
|
rScaledValue=> ,
|
||||||
@@ -1534,10 +1534,10 @@ IF NOT _xWarningLowOffInitDone THEN
|
|||||||
ELSE
|
ELSE
|
||||||
_fbWarningLowOffTimer(IN := TRUE, PT := timOffTime);
|
_fbWarningLowOffTimer(IN := TRUE, PT := timOffTime);
|
||||||
_fbAIWarningLowOff(
|
_fbAIWarningLowOff(
|
||||||
iAnalogValue:= 50,
|
i_iAnalogValue:= 50,
|
||||||
xUnderrange:= FALSE,
|
i_xUnderrange:= FALSE,
|
||||||
xOverrange:= FALSE,
|
i_xOverrange:= FALSE,
|
||||||
xErrorCard:= FALSE,
|
i_xErrorCard:= FALSE,
|
||||||
xReleaseLimitErrors:= TRUE,
|
xReleaseLimitErrors:= TRUE,
|
||||||
xError=> _xResultError,
|
xError=> _xResultError,
|
||||||
rScaledValue=> ,
|
rScaledValue=> ,
|
||||||
@@ -1603,12 +1603,12 @@ _fbWarningLowOnTimer(IN := TRUE, PT := timOnTime);
|
|||||||
|
|
||||||
// Check with active release signal
|
// Check with active release signal
|
||||||
_fbAIWarningLowOn(
|
_fbAIWarningLowOn(
|
||||||
iAnalogValue:= 15,
|
i_iAnalogValue:= 15,
|
||||||
stAnalogIOConfig := _stAnalogInputConfig,
|
stAnalogIOConfig := _stAnalogInputConfig,
|
||||||
stAnalogEWConfig := _stAnalogEWConfig,
|
stAnalogEWConfig := _stAnalogEWConfig,
|
||||||
xUnderrange:= FALSE,
|
i_xUnderrange:= FALSE,
|
||||||
xOverrange:= FALSE,
|
i_xOverrange:= FALSE,
|
||||||
xErrorCard:= FALSE,
|
i_xErrorCard:= FALSE,
|
||||||
xReleaseLimitErrors:= TRUE,
|
xReleaseLimitErrors:= TRUE,
|
||||||
xError=> _xResultError,
|
xError=> _xResultError,
|
||||||
rScaledValue=> ,
|
rScaledValue=> ,
|
||||||
@@ -63,7 +63,7 @@ _fbAnalogOutput(
|
|||||||
xReleaseErrors := ,
|
xReleaseErrors := ,
|
||||||
xConfirmAlarms := ,
|
xConfirmAlarms := ,
|
||||||
stHMIInterface := _stHMIInterface,
|
stHMIInterface := _stHMIInterface,
|
||||||
iAnalogValue => _iAnalogOutput,
|
o_iAnalogValue => _iAnalogOutput,
|
||||||
xError => _xError,
|
xError => _xError,
|
||||||
xInUnitTestMode := TRUE);
|
xInUnitTestMode := TRUE);
|
||||||
|
|
||||||
@@ -112,7 +112,7 @@ _fbAnalogOutput(
|
|||||||
xReleaseErrors := ,
|
xReleaseErrors := ,
|
||||||
xConfirmAlarms := ,
|
xConfirmAlarms := ,
|
||||||
stHMIInterface := _stHMIInterface,
|
stHMIInterface := _stHMIInterface,
|
||||||
iAnalogValue => _iAnalogOutput,
|
o_iAnalogValue => _iAnalogOutput,
|
||||||
xError => _xError,
|
xError => _xError,
|
||||||
xInUnitTestMode := TRUE);
|
xInUnitTestMode := TRUE);
|
||||||
|
|
||||||
@@ -170,7 +170,7 @@ _fbAnalogOutput(
|
|||||||
xReleaseErrors := ,
|
xReleaseErrors := ,
|
||||||
xConfirmAlarms := ,
|
xConfirmAlarms := ,
|
||||||
stHMIInterface := _stHMIInterface,
|
stHMIInterface := _stHMIInterface,
|
||||||
iAnalogValue => _iAnalogOutput,
|
o_iAnalogValue => _iAnalogOutput,
|
||||||
xError => _xError,
|
xError => _xError,
|
||||||
xInUnitTestMode := TRUE);
|
xInUnitTestMode := TRUE);
|
||||||
|
|
||||||
@@ -198,7 +198,7 @@ _fbAnalogOutput(
|
|||||||
xReleaseErrors := ,
|
xReleaseErrors := ,
|
||||||
xConfirmAlarms := ,
|
xConfirmAlarms := ,
|
||||||
stHMIInterface := _stHMIInterface,
|
stHMIInterface := _stHMIInterface,
|
||||||
iAnalogValue => _iAnalogOutput,
|
o_iAnalogValue => _iAnalogOutput,
|
||||||
xError => _xError);
|
xError => _xError);
|
||||||
|
|
||||||
// reading error from HMI interface
|
// reading error from HMI interface
|
||||||
@@ -251,7 +251,7 @@ _fbAnalogOutput(
|
|||||||
xReleaseErrors := ,
|
xReleaseErrors := ,
|
||||||
xConfirmAlarms := ,
|
xConfirmAlarms := ,
|
||||||
stHMIInterface := _stHMIInterface,
|
stHMIInterface := _stHMIInterface,
|
||||||
iAnalogValue => _iAnalogOutput,
|
o_iAnalogValue => _iAnalogOutput,
|
||||||
xError => _xError,
|
xError => _xError,
|
||||||
xInUnitTestMode := TRUE);
|
xInUnitTestMode := TRUE);
|
||||||
|
|
||||||
@@ -266,7 +266,7 @@ _fbAnalogOutput(
|
|||||||
xReleaseErrors := ,
|
xReleaseErrors := ,
|
||||||
xConfirmAlarms := ,
|
xConfirmAlarms := ,
|
||||||
stHMIInterface := _stHMIInterface,
|
stHMIInterface := _stHMIInterface,
|
||||||
iAnalogValue => _iAnalogOutput,
|
o_iAnalogValue => _iAnalogOutput,
|
||||||
xError => _xError);
|
xError => _xError);
|
||||||
|
|
||||||
// and evaluate result
|
// and evaluate result
|
||||||
@@ -280,7 +280,7 @@ _fbAnalogOutput(
|
|||||||
xReleaseErrors := ,
|
xReleaseErrors := ,
|
||||||
xConfirmAlarms := ,
|
xConfirmAlarms := ,
|
||||||
stHMIInterface := _stHMIInterface,
|
stHMIInterface := _stHMIInterface,
|
||||||
iAnalogValue => _iAnalogOutput,
|
o_iAnalogValue => _iAnalogOutput,
|
||||||
xError => _xError);
|
xError => _xError);
|
||||||
|
|
||||||
// and evaluate result
|
// and evaluate result
|
||||||
@@ -294,7 +294,7 @@ _fbAnalogOutput(
|
|||||||
xReleaseErrors := ,
|
xReleaseErrors := ,
|
||||||
xConfirmAlarms := ,
|
xConfirmAlarms := ,
|
||||||
stHMIInterface := _stHMIInterface,
|
stHMIInterface := _stHMIInterface,
|
||||||
iAnalogValue => _iAnalogOutput,
|
o_iAnalogValue => _iAnalogOutput,
|
||||||
xError => _xError);
|
xError => _xError);
|
||||||
|
|
||||||
// and evaluate result
|
// and evaluate result
|
||||||
@@ -308,7 +308,7 @@ _fbAnalogOutput(
|
|||||||
xReleaseErrors := ,
|
xReleaseErrors := ,
|
||||||
xConfirmAlarms := ,
|
xConfirmAlarms := ,
|
||||||
stHMIInterface := _stHMIInterface,
|
stHMIInterface := _stHMIInterface,
|
||||||
iAnalogValue => _iAnalogOutput,
|
o_iAnalogValue => _iAnalogOutput,
|
||||||
xError => _xError);
|
xError => _xError);
|
||||||
|
|
||||||
// and evaluate result
|
// and evaluate result
|
||||||
@@ -359,7 +359,7 @@ _fbAnalogOutput(
|
|||||||
xReleaseErrors := ,
|
xReleaseErrors := ,
|
||||||
xConfirmAlarms := ,
|
xConfirmAlarms := ,
|
||||||
stHMIInterface := _stHMIInterface,
|
stHMIInterface := _stHMIInterface,
|
||||||
iAnalogValue => _iAnalogOutput,
|
o_iAnalogValue => _iAnalogOutput,
|
||||||
xError => _xError,
|
xError => _xError,
|
||||||
xInUnitTestMode := TRUE);
|
xInUnitTestMode := TRUE);
|
||||||
|
|
||||||
@@ -410,7 +410,7 @@ _fbAnalogOutput(
|
|||||||
xReleaseErrors := ,
|
xReleaseErrors := ,
|
||||||
xConfirmAlarms := ,
|
xConfirmAlarms := ,
|
||||||
stHMIInterface := _stHMIInterface,
|
stHMIInterface := _stHMIInterface,
|
||||||
iAnalogValue => _iAnalogOutput,
|
o_iAnalogValue => _iAnalogOutput,
|
||||||
xError => _xError,
|
xError => _xError,
|
||||||
xInUnitTestMode := TRUE);
|
xInUnitTestMode := TRUE);
|
||||||
|
|
||||||
@@ -454,7 +454,7 @@ _fbAnalogOutput(
|
|||||||
xReleaseErrors := ,
|
xReleaseErrors := ,
|
||||||
xConfirmAlarms := ,
|
xConfirmAlarms := ,
|
||||||
stHMIInterface := _stHMIInterface,
|
stHMIInterface := _stHMIInterface,
|
||||||
iAnalogValue => _iAnalogOutput,
|
o_iAnalogValue => _iAnalogOutput,
|
||||||
xError => _xError,
|
xError => _xError,
|
||||||
xInUnitTestMode := TRUE);
|
xInUnitTestMode := TRUE);
|
||||||
|
|
||||||
@@ -63,7 +63,7 @@ _fbValve.ReqAutomaticMode();
|
|||||||
_fbValve.rSPAutomatic := 100;
|
_fbValve.rSPAutomatic := 100;
|
||||||
|
|
||||||
// needs one cycle to write values (scaled feedback ~75, tolerance 95 to 105)
|
// needs one cycle to write values (scaled feedback ~75, tolerance 95 to 105)
|
||||||
_fbValve(xAutomaticOpen := TRUE, stValveConfig := _stValveConfig, stHMIInterface := _stHMIValve, iFeedbackValue := 3000, xError => _xError, xInUnitTestMode := TRUE);
|
_fbValve(xAutomaticOpen := TRUE, stValveConfig := _stValveConfig, stHMIInterface := _stHMIValve, i_iFeedbackValue := 3000, xError => _xError, xInUnitTestMode := TRUE);
|
||||||
|
|
||||||
// assert result
|
// assert result
|
||||||
AssertTrue(_xError, 'Expected NotInRangeError, got no error.');
|
AssertTrue(_xError, 'Expected NotInRangeError, got no error.');
|
||||||
@@ -102,7 +102,7 @@ _xOpenFeedback := FALSE;
|
|||||||
_xCloseFeedback := FALSE;
|
_xCloseFeedback := FALSE;
|
||||||
_fbValve.xReleaseManualMode := TRUE;
|
_fbValve.xReleaseManualMode := TRUE;
|
||||||
_fbValve.ReqManualMode();
|
_fbValve.ReqManualMode();
|
||||||
_fbValve(xOpenFeedback := _xOpenFeedback, xCloseFeedback := _xCloseFeedback, stHMIInterface := _stHMIValve, stValveConfig := _stValveConfig, xInUnitTestMode := TRUE);
|
_fbValve(i_xOpenFeedback := _xOpenFeedback, i_xCloseFeedback := _xCloseFeedback, stHMIInterface := _stHMIValve, stValveConfig := _stValveConfig, xInUnitTestMode := TRUE);
|
||||||
|
|
||||||
|
|
||||||
// We should now be in manual mode
|
// We should now be in manual mode
|
||||||
@@ -112,7 +112,7 @@ AssertTrue(Condition := _fbValve.IsInManualMode, Message := 'Valve did not chang
|
|||||||
// Test closed
|
// Test closed
|
||||||
_xOpenFeedback := FALSE;
|
_xOpenFeedback := FALSE;
|
||||||
_xCloseFeedback := TRUE;
|
_xCloseFeedback := TRUE;
|
||||||
_fbValve(xOpenFeedback := _xOpenFeedback, xCloseFeedback := _xCloseFeedback, stHMIInterface := _stHMIValve, stValveConfig := _stValveConfig, xInUnitTestMode := TRUE);
|
_fbValve(i_xOpenFeedback := _xOpenFeedback, i_xCloseFeedback := _xCloseFeedback, stHMIInterface := _stHMIValve, stValveConfig := _stValveConfig, xInUnitTestMode := TRUE);
|
||||||
AssertTrue(Condition := _fbValve.IsClosed, Message := 'Valve should be closed');
|
AssertTrue(Condition := _fbValve.IsClosed, Message := 'Valve should be closed');
|
||||||
AssertFalse(Condition := _fbValve.IsOpen, Message := 'Valve should not be open');
|
AssertFalse(Condition := _fbValve.IsOpen, Message := 'Valve should not be open');
|
||||||
|
|
||||||
@@ -120,14 +120,14 @@ AssertFalse(Condition := _fbValve.IsOpen, Message := 'Valve should not be open')
|
|||||||
_xOpenFeedback := TRUE;
|
_xOpenFeedback := TRUE;
|
||||||
_xCloseFeedback := FALSE;
|
_xCloseFeedback := FALSE;
|
||||||
_stHMIValve.stSetpoint.rValue := 100.0;
|
_stHMIValve.stSetpoint.rValue := 100.0;
|
||||||
_fbValve(xOpenFeedback := _xOpenFeedback, xCloseFeedback := _xCloseFeedback, stHMIInterface := _stHMIValve, stValveConfig := _stValveConfig, xInUnitTestMode := TRUE);
|
_fbValve(i_xOpenFeedback := _xOpenFeedback, i_xCloseFeedback := _xCloseFeedback, stHMIInterface := _stHMIValve, stValveConfig := _stValveConfig, xInUnitTestMode := TRUE);
|
||||||
AssertTrue(Condition := _fbValve.IsOpen, Message := 'Valve should be open');
|
AssertTrue(Condition := _fbValve.IsOpen, Message := 'Valve should be open');
|
||||||
AssertFalse(Condition := _fbValve.IsClosed, Message := 'Valve should not be closed');
|
AssertFalse(Condition := _fbValve.IsClosed, Message := 'Valve should not be closed');
|
||||||
|
|
||||||
// Test open and close
|
// Test open and close
|
||||||
_xOpenFeedback := TRUE;
|
_xOpenFeedback := TRUE;
|
||||||
_xCloseFeedback := TRUE;
|
_xCloseFeedback := TRUE;
|
||||||
_fbValve(xOpenFeedback := _xOpenFeedback, xCloseFeedback := _xCloseFeedback, stHMIInterface := _stHMIValve, stValveConfig := _stValveConfig, xInUnitTestMode := TRUE);
|
_fbValve(i_xOpenFeedback := _xOpenFeedback, i_xCloseFeedback := _xCloseFeedback, stHMIInterface := _stHMIValve, stValveConfig := _stValveConfig, xInUnitTestMode := TRUE);
|
||||||
AssertFalse(Condition := _fbValve.IsClosed OR _fbValve.IsOpen, Message := 'Valve should not signal open or closed with both feedback signals high');
|
AssertFalse(Condition := _fbValve.IsClosed OR _fbValve.IsOpen, Message := 'Valve should not signal open or closed with both feedback signals high');
|
||||||
|
|
||||||
TEST_FINISHED();]]></ST>
|
TEST_FINISHED();]]></ST>
|
||||||
@@ -161,7 +161,7 @@ _stValveConfig.xHasAnalogFeedback := TRUE;
|
|||||||
_fbValve(
|
_fbValve(
|
||||||
stValveConfig := _stValveConfig,
|
stValveConfig := _stValveConfig,
|
||||||
stHMIInterface := _stHMIValve,
|
stHMIInterface := _stHMIValve,
|
||||||
xFeedbackOverrange := TRUE,
|
i_xFeedbackOverrange := TRUE,
|
||||||
xError => _xError,
|
xError => _xError,
|
||||||
xInUnitTestMode := TRUE);
|
xInUnitTestMode := TRUE);
|
||||||
|
|
||||||
@@ -199,7 +199,7 @@ _stValveConfig.xHasAnalogFeedback := TRUE;
|
|||||||
_fbValve(
|
_fbValve(
|
||||||
stValveConfig := _stValveConfig,
|
stValveConfig := _stValveConfig,
|
||||||
stHMIInterface := _stHMIValve,
|
stHMIInterface := _stHMIValve,
|
||||||
xFeedbackUnderrange := TRUE,
|
i_xFeedbackUnderrange := TRUE,
|
||||||
xError => _xError,
|
xError => _xError,
|
||||||
xInUnitTestMode := TRUE);
|
xInUnitTestMode := TRUE);
|
||||||
|
|
||||||
@@ -487,7 +487,7 @@ IF _fbValve.IsOpen THEN
|
|||||||
// Valve should now be closed
|
// Valve should now be closed
|
||||||
AssertFalse(Condition := _fbValve.IsOpen, Message := 'Valve should not be open with active Interlock');
|
AssertFalse(Condition := _fbValve.IsOpen, Message := 'Valve should not be open with active Interlock');
|
||||||
AssertTrue(Condition := _fbValve.IsClosed, Message := 'Close output not active with active Interlock');
|
AssertTrue(Condition := _fbValve.IsClosed, Message := 'Close output not active with active Interlock');
|
||||||
AssertEquals_INT(Expected := 0, Actual := _fbValve.iSetpoint, Message := 'Analog output should be zero');
|
AssertEquals_INT(Expected := 0, Actual := _fbValve.o_iSetpoint, Message := 'Analog output should be zero');
|
||||||
ELSE
|
ELSE
|
||||||
AssertTrue(Condition := _fbValve.IsOpen, Message := 'Valve did not open before the test');
|
AssertTrue(Condition := _fbValve.IsOpen, Message := 'Valve did not open before the test');
|
||||||
END_IF
|
END_IF
|
||||||
@@ -535,7 +535,7 @@ IF _fbValve.IsOpen THEN
|
|||||||
// Valve should now be closed
|
// Valve should now be closed
|
||||||
AssertFalse(Condition := _fbValve.IsOpen, Message := 'Valve should not be open with active Interlock');
|
AssertFalse(Condition := _fbValve.IsOpen, Message := 'Valve should not be open with active Interlock');
|
||||||
AssertTrue(Condition := _fbValve.IsClosed, Message := 'Close output not active with active Interlock');
|
AssertTrue(Condition := _fbValve.IsClosed, Message := 'Close output not active with active Interlock');
|
||||||
AssertEquals_INT(Expected := 0, Actual := _fbValve.iSetpoint, Message := 'Analog output should be zero');
|
AssertEquals_INT(Expected := 0, Actual := _fbValve.o_iSetpoint, Message := 'Analog output should be zero');
|
||||||
ELSE
|
ELSE
|
||||||
AssertTrue(Condition := _fbValve.IsOpen, Message := 'Valve did not open before the test');
|
AssertTrue(Condition := _fbValve.IsOpen, Message := 'Valve did not open before the test');
|
||||||
END_IF
|
END_IF
|
||||||
@@ -46,13 +46,13 @@ _fbValve(
|
|||||||
wProcessINTLKUsed:= _wInterlocksUsed,
|
wProcessINTLKUsed:= _wInterlocksUsed,
|
||||||
stHMIInterface:= _stHMIValve,
|
stHMIInterface:= _stHMIValve,
|
||||||
xError=> ,
|
xError=> ,
|
||||||
xOpenFeedback:= ,
|
i_xOpenFeedback:= ,
|
||||||
xCloseFeedback:= ,
|
i_xCloseFeedback:= ,
|
||||||
xReleaseErrors:= ,
|
xReleaseErrors:= ,
|
||||||
xConfirmAlarms:= ,
|
xConfirmAlarms:= ,
|
||||||
stValveConfig:= _stValveConfig,
|
stValveConfig:= _stValveConfig,
|
||||||
xOpenValve=> ,
|
o_xOpenValve=> ,
|
||||||
xCloseValve=> );
|
o_xCloseValve=> );
|
||||||
|
|
||||||
// Valve should now be in manual mode and xRequest should have been reset
|
// Valve should now be in manual mode and xRequest should have been reset
|
||||||
AssertTrue(Condition := _fbValve.IsInManualMode, Message := 'Valve did not change to manual mode');
|
AssertTrue(Condition := _fbValve.IsInManualMode, Message := 'Valve did not change to manual mode');
|
||||||
@@ -90,13 +90,13 @@ _fbValve(
|
|||||||
wProcessINTLKUsed:= _wInterlocksUsed,
|
wProcessINTLKUsed:= _wInterlocksUsed,
|
||||||
stHMIInterface:= _stHMIValve,
|
stHMIInterface:= _stHMIValve,
|
||||||
xError=> ,
|
xError=> ,
|
||||||
xOpenFeedback:= ,
|
i_xOpenFeedback:= ,
|
||||||
xCloseFeedback:= ,
|
i_xCloseFeedback:= ,
|
||||||
xReleaseErrors:= ,
|
xReleaseErrors:= ,
|
||||||
xConfirmAlarms:= ,
|
xConfirmAlarms:= ,
|
||||||
stValveConfig:= _stValveConfig,
|
stValveConfig:= _stValveConfig,
|
||||||
xOpenValve=> ,
|
o_xOpenValve=> ,
|
||||||
xCloseValve=> );
|
o_xCloseValve=> );
|
||||||
|
|
||||||
AssertFalse(Condition := _stHMIValve.stManualButton.xRelease, Message := 'Manual mode button was released but should not have been');
|
AssertFalse(Condition := _stHMIValve.stManualButton.xRelease, Message := 'Manual mode button was released but should not have been');
|
||||||
|
|
||||||
@@ -108,13 +108,13 @@ _fbValve(
|
|||||||
wProcessINTLKUsed:= _wInterlocksUsed,
|
wProcessINTLKUsed:= _wInterlocksUsed,
|
||||||
stHMIInterface:= _stHMIValve,
|
stHMIInterface:= _stHMIValve,
|
||||||
xError=> ,
|
xError=> ,
|
||||||
xOpenFeedback:= ,
|
i_xOpenFeedback:= ,
|
||||||
xCloseFeedback:= ,
|
i_xCloseFeedback:= ,
|
||||||
xReleaseErrors:= ,
|
xReleaseErrors:= ,
|
||||||
xConfirmAlarms:= ,
|
xConfirmAlarms:= ,
|
||||||
stValveConfig:= ,
|
stValveConfig:= ,
|
||||||
xOpenValve=> ,
|
o_xOpenValve=> ,
|
||||||
xCloseValve=> );
|
o_xCloseValve=> );
|
||||||
|
|
||||||
AssertTrue(Condition := _stHMIValve.stManualButton.xRelease, Message := 'Manual mode button was not released but should have been');
|
AssertTrue(Condition := _stHMIValve.stManualButton.xRelease, Message := 'Manual mode button was not released but should have been');
|
||||||
|
|
||||||
@@ -151,13 +151,13 @@ _fbValveOC(
|
|||||||
wProcessINTLKUsed:= _wInterlocksUsed,
|
wProcessINTLKUsed:= _wInterlocksUsed,
|
||||||
stHMIInterface:= _stHMIValve,
|
stHMIInterface:= _stHMIValve,
|
||||||
xError=> ,
|
xError=> ,
|
||||||
xOpenFeedback:= ,
|
i_xOpenFeedback:= ,
|
||||||
xCloseFeedback:= ,
|
i_xCloseFeedback:= ,
|
||||||
xReleaseErrors:= ,
|
xReleaseErrors:= ,
|
||||||
xConfirmAlarms:= ,
|
xConfirmAlarms:= ,
|
||||||
stValveConfig:= _stValveConfig,
|
stValveConfig:= _stValveConfig,
|
||||||
xOpenValve=> ,
|
o_xOpenValve=> ,
|
||||||
xCloseValve=> );
|
o_xCloseValve=> );
|
||||||
|
|
||||||
// Valve should now be in manual mode
|
// Valve should now be in manual mode
|
||||||
AssertTrue(Condition := _fbValveOC.IsInManualMode, Message := 'Valve did not change to manual mode pre test');
|
AssertTrue(Condition := _fbValveOC.IsInManualMode, Message := 'Valve did not change to manual mode pre test');
|
||||||
@@ -170,16 +170,16 @@ _fbValveOC(
|
|||||||
wProcessINTLKUsed:= _wInterlocksUsed,
|
wProcessINTLKUsed:= _wInterlocksUsed,
|
||||||
stHMIInterface:= _stHMIValve,
|
stHMIInterface:= _stHMIValve,
|
||||||
xError=> ,
|
xError=> ,
|
||||||
xOpenFeedback:= ,
|
i_xOpenFeedback:= ,
|
||||||
xCloseFeedback:= ,
|
i_xCloseFeedback:= ,
|
||||||
xReleaseErrors:= ,
|
xReleaseErrors:= ,
|
||||||
xConfirmAlarms:= ,
|
xConfirmAlarms:= ,
|
||||||
stValveConfig:= ,
|
stValveConfig:= ,
|
||||||
xOpenValve=> ,
|
o_xOpenValve=> ,
|
||||||
xCloseValve=> );
|
o_xCloseValve=> );
|
||||||
|
|
||||||
// test for valve state and HMI feedback
|
// test for valve state and HMI feedback
|
||||||
AssertTrue(Condition := _fbValveOC.xOpenValve, Message := 'Valve did not open as requested by hmi button');
|
AssertTrue(Condition := _fbValveOC.o_xOpenValve, Message := 'Valve did not open as requested by hmi button');
|
||||||
AssertFalse(Condition := _stHMIValve.stOpenButton.xRequest, Message := 'Valve did not reset open request');
|
AssertFalse(Condition := _stHMIValve.stOpenButton.xRequest, Message := 'Valve did not reset open request');
|
||||||
_eExpectedOpenButtonFeedback := E_HMI_BUTTON_FEEDBACK.ACTIVE;
|
_eExpectedOpenButtonFeedback := E_HMI_BUTTON_FEEDBACK.ACTIVE;
|
||||||
_eExpectedCloseButtonFeedback := E_HMI_BUTTON_FEEDBACK.NONE;
|
_eExpectedCloseButtonFeedback := E_HMI_BUTTON_FEEDBACK.NONE;
|
||||||
@@ -194,16 +194,16 @@ _fbValveOC(
|
|||||||
wProcessINTLKUsed:= _wInterlocksUsed,
|
wProcessINTLKUsed:= _wInterlocksUsed,
|
||||||
stHMIInterface:= _stHMIValve,
|
stHMIInterface:= _stHMIValve,
|
||||||
xError=> ,
|
xError=> ,
|
||||||
xOpenFeedback:= ,
|
i_xOpenFeedback:= ,
|
||||||
xCloseFeedback:= ,
|
i_xCloseFeedback:= ,
|
||||||
xReleaseErrors:= ,
|
xReleaseErrors:= ,
|
||||||
xConfirmAlarms:= ,
|
xConfirmAlarms:= ,
|
||||||
stValveConfig:= ,
|
stValveConfig:= ,
|
||||||
xOpenValve=> ,
|
o_xOpenValve=> ,
|
||||||
xCloseValve=> );
|
o_xCloseValve=> );
|
||||||
|
|
||||||
// test for valve state and HMI feedback
|
// test for valve state and HMI feedback
|
||||||
AssertTrue(Condition := _fbValveOC.xCloseValve, Message := 'Valve did not close as requested by hmi button');
|
AssertTrue(Condition := _fbValveOC.o_xCloseValve, Message := 'Valve did not close as requested by hmi button');
|
||||||
AssertFalse(Condition := _stHMIValve.stCloseButton.xRequest, Message := 'Valve did not reset close request');
|
AssertFalse(Condition := _stHMIValve.stCloseButton.xRequest, Message := 'Valve did not reset close request');
|
||||||
_eExpectedOpenButtonFeedback := E_HMI_BUTTON_FEEDBACK.NONE;
|
_eExpectedOpenButtonFeedback := E_HMI_BUTTON_FEEDBACK.NONE;
|
||||||
_eExpectedCloseButtonFeedback := E_HMI_BUTTON_FEEDBACK.ACTIVE;
|
_eExpectedCloseButtonFeedback := E_HMI_BUTTON_FEEDBACK.ACTIVE;
|
||||||
@@ -243,13 +243,13 @@ _fbValve(
|
|||||||
wProcessINTLKUsed:= wInterlocksUsed,
|
wProcessINTLKUsed:= wInterlocksUsed,
|
||||||
stHMIInterface:= _stHMIValve,
|
stHMIInterface:= _stHMIValve,
|
||||||
xError=> ,
|
xError=> ,
|
||||||
xOpenFeedback:= ,
|
i_xOpenFeedback:= ,
|
||||||
xCloseFeedback:= ,
|
i_xCloseFeedback:= ,
|
||||||
xReleaseErrors:= ,
|
xReleaseErrors:= ,
|
||||||
xConfirmAlarms:= ,
|
xConfirmAlarms:= ,
|
||||||
stValveConfig:= _stValveConfig,
|
stValveConfig:= _stValveConfig,
|
||||||
xOpenValve=> ,
|
o_xOpenValve=> ,
|
||||||
xCloseValve=> );
|
o_xCloseValve=> );
|
||||||
|
|
||||||
// Valve should now be in manual mode
|
// Valve should now be in manual mode
|
||||||
AssertTrue(Condition := _fbValve.IsInManualMode, Message := 'Valve did not change to manual mode pre test');
|
AssertTrue(Condition := _fbValve.IsInManualMode, Message := 'Valve did not change to manual mode pre test');
|
||||||
@@ -265,15 +265,15 @@ _fbValve(
|
|||||||
wProcessINTLKUsed:= wInterlocksUsed,
|
wProcessINTLKUsed:= wInterlocksUsed,
|
||||||
stHMIInterface:= _stHMIValve,
|
stHMIInterface:= _stHMIValve,
|
||||||
xError=> ,
|
xError=> ,
|
||||||
xOpenFeedback:= ,
|
i_xOpenFeedback:= ,
|
||||||
xCloseFeedback:= ,
|
i_xCloseFeedback:= ,
|
||||||
xReleaseErrors:= ,
|
xReleaseErrors:= ,
|
||||||
xConfirmAlarms:= ,
|
xConfirmAlarms:= ,
|
||||||
stValveConfig:= ,
|
stValveConfig:= ,
|
||||||
xOpenValve=> ,
|
o_xOpenValve=> ,
|
||||||
xCloseValve=> );
|
o_xCloseValve=> );
|
||||||
|
|
||||||
AssertFalse(Condition := _fbValve.xOpenValve, Message := 'Valve did not block manual open command with active interlock');
|
AssertFalse(Condition := _fbValve.o_xOpenValve, Message := 'Valve did not block manual open command with active interlock');
|
||||||
|
|
||||||
TEST_FINISHED();]]></ST>
|
TEST_FINISHED();]]></ST>
|
||||||
</Implementation>
|
</Implementation>
|
||||||
@@ -48,8 +48,8 @@ CASE _iState OF
|
|||||||
10:
|
10:
|
||||||
// set close feedback after 50ms and call valve block
|
// set close feedback after 50ms and call valve block
|
||||||
_xOpenFeedback := FALSE;
|
_xOpenFeedback := FALSE;
|
||||||
_xCloseFeedback := _fbValveTimeout.xCloseValve AND _fbDelayFeedbackSignalTimer.Q;
|
_xCloseFeedback := _fbValveTimeout.o_xCloseValve AND _fbDelayFeedbackSignalTimer.Q;
|
||||||
_fbValveTimeout(xOpenFeedback := _xOpenFeedback, xCloseFeedback := _xCloseFeedback, stHMIInterface := _stHMIValve, stValveConfig := _stValveConfig);
|
_fbValveTimeout(i_xOpenFeedback := _xOpenFeedback, i_xCloseFeedback := _xCloseFeedback, stHMIInterface := _stHMIValve, stValveConfig := _stValveConfig);
|
||||||
|
|
||||||
// test timeout after 200ms
|
// test timeout after 200ms
|
||||||
IF _fbTimeoutCloseTestTimer.Q THEN
|
IF _fbTimeoutCloseTestTimer.Q THEN
|
||||||
@@ -48,9 +48,9 @@ CASE _iState OF
|
|||||||
|
|
||||||
10:
|
10:
|
||||||
// set open feedback after 50ms and call valve block
|
// set open feedback after 50ms and call valve block
|
||||||
_xOpenFeedback := _fbValveTimeout.xOpenValve AND _fbDelayFeedbackSignalTimer.Q;
|
_xOpenFeedback := _fbValveTimeout.o_xOpenValve AND _fbDelayFeedbackSignalTimer.Q;
|
||||||
_xCloseFeedback := FALSE;
|
_xCloseFeedback := FALSE;
|
||||||
_fbValveTimeout(xOpenFeedback := _xOpenFeedback, xCloseFeedback := _xCloseFeedback, stHMIInterface := _stHMIValve, stValveConfig := _stValveConfig);
|
_fbValveTimeout(i_xOpenFeedback := _xOpenFeedback, i_xCloseFeedback := _xCloseFeedback, stHMIInterface := _stHMIValve, stValveConfig := _stValveConfig);
|
||||||
|
|
||||||
// test timeout after 200ms
|
// test timeout after 200ms
|
||||||
IF _fbTimeoutOpenTestTimer.Q THEN
|
IF _fbTimeoutOpenTestTimer.Q THEN
|
||||||
@@ -50,7 +50,7 @@ CASE _iState OF
|
|||||||
// both feedback false and call valve block
|
// both feedback false and call valve block
|
||||||
_xOpenFeedback := FALSE;
|
_xOpenFeedback := FALSE;
|
||||||
_xCloseFeedback := FALSE;
|
_xCloseFeedback := FALSE;
|
||||||
_fbValveTimeout(xOpenFeedback := _xOpenFeedback, xCloseFeedback := _xCloseFeedback, xInUnitTestMode := TRUE, stHMIInterface := _stHMIValve, stValveConfig := _stValveConfig);
|
_fbValveTimeout(i_xOpenFeedback := _xOpenFeedback, i_xCloseFeedback := _xCloseFeedback, xInUnitTestMode := TRUE, stHMIInterface := _stHMIValve, stValveConfig := _stValveConfig);
|
||||||
|
|
||||||
// test timeout after 200ms
|
// test timeout after 200ms
|
||||||
IF _fbTimeoutCloseTestTimer.Q THEN
|
IF _fbTimeoutCloseTestTimer.Q THEN
|
||||||
@@ -51,7 +51,7 @@ CASE _iState OF
|
|||||||
// both feedback false and call valve block
|
// both feedback false and call valve block
|
||||||
_xOpenFeedback := FALSE;
|
_xOpenFeedback := FALSE;
|
||||||
_xCloseFeedback := FALSE;
|
_xCloseFeedback := FALSE;
|
||||||
_fbValveTimeout(xOpenFeedback := _xOpenFeedback, xCloseFeedback := _xCloseFeedback, xInUnitTestMode := TRUE, stHMIInterface := _stHMIValve, stValveConfig := _stValveConfig);
|
_fbValveTimeout(i_xOpenFeedback := _xOpenFeedback, i_xCloseFeedback := _xCloseFeedback, xInUnitTestMode := TRUE, stHMIInterface := _stHMIValve, stValveConfig := _stValveConfig);
|
||||||
|
|
||||||
// test timeout after 200ms
|
// test timeout after 200ms
|
||||||
IF _fbTimeoutOpenTestTimer.Q THEN
|
IF _fbTimeoutOpenTestTimer.Q THEN
|
||||||
@@ -53,7 +53,7 @@ _xOpenFeedback := FALSE;
|
|||||||
_xCloseFeedback := FALSE;
|
_xCloseFeedback := FALSE;
|
||||||
_fbValve.xReleaseManualMode := TRUE;
|
_fbValve.xReleaseManualMode := TRUE;
|
||||||
_fbValve.ReqManualMode();
|
_fbValve.ReqManualMode();
|
||||||
_fbValve(xOpenFeedback := _xOpenFeedback, xCloseFeedback := _xCloseFeedback, stHMIInterface := _stHMIValve, stValveConfig := _stValveConfig, xInUnitTestMode := TRUE);
|
_fbValve(i_xOpenFeedback := _xOpenFeedback, i_xCloseFeedback := _xCloseFeedback, stHMIInterface := _stHMIValve, stValveConfig := _stValveConfig, xInUnitTestMode := TRUE);
|
||||||
|
|
||||||
// We should now be in manual mode
|
// We should now be in manual mode
|
||||||
AssertTrue(Condition := _fbValve.IsInManualMode, Message := 'Valve did not changed to manual mode');
|
AssertTrue(Condition := _fbValve.IsInManualMode, Message := 'Valve did not changed to manual mode');
|
||||||
@@ -65,7 +65,7 @@ AssertFalse(Condition := _fbValve.IsClosed OR _fbValve.IsOpen, Message := 'Valve
|
|||||||
// Test closed
|
// Test closed
|
||||||
_xOpenFeedback := FALSE;
|
_xOpenFeedback := FALSE;
|
||||||
_xCloseFeedback := TRUE;
|
_xCloseFeedback := TRUE;
|
||||||
_fbValve(xOpenFeedback := _xOpenFeedback, xCloseFeedback := _xCloseFeedback,stHMIInterface := _stHMIValve, stValveConfig := _stValveConfig, xInUnitTestMode := TRUE);
|
_fbValve(i_xOpenFeedback := _xOpenFeedback, i_xCloseFeedback := _xCloseFeedback,stHMIInterface := _stHMIValve, stValveConfig := _stValveConfig, xInUnitTestMode := TRUE);
|
||||||
AssertTrue(Condition := _fbValve.IsClosed, Message := 'Valve should be closed');
|
AssertTrue(Condition := _fbValve.IsClosed, Message := 'Valve should be closed');
|
||||||
AssertFalse(Condition := _fbValve.IsOpen, Message := 'Valve should not be open');
|
AssertFalse(Condition := _fbValve.IsOpen, Message := 'Valve should not be open');
|
||||||
|
|
||||||
@@ -74,14 +74,14 @@ _xOpenFeedback := TRUE;
|
|||||||
_xCloseFeedback := FALSE;
|
_xCloseFeedback := FALSE;
|
||||||
_stHMIValve.stOpenButton.xRequest := TRUE;
|
_stHMIValve.stOpenButton.xRequest := TRUE;
|
||||||
_fbValve(stHMIInterface := _stHMIValve);
|
_fbValve(stHMIInterface := _stHMIValve);
|
||||||
_fbValve(xOpenFeedback := _xOpenFeedback, xCloseFeedback := _xCloseFeedback, stHMIInterface := _stHMIValve, stValveConfig := _stValveConfig, xInUnitTestMode := TRUE);
|
_fbValve(i_xOpenFeedback := _xOpenFeedback, i_xCloseFeedback := _xCloseFeedback, stHMIInterface := _stHMIValve, stValveConfig := _stValveConfig, xInUnitTestMode := TRUE);
|
||||||
AssertTrue(Condition := _fbValve.IsOpen, Message := 'Valve should be open');
|
AssertTrue(Condition := _fbValve.IsOpen, Message := 'Valve should be open');
|
||||||
AssertFalse(Condition := _fbValve.IsClosed, Message := 'Valve should not be closed');
|
AssertFalse(Condition := _fbValve.IsClosed, Message := 'Valve should not be closed');
|
||||||
|
|
||||||
// Test open and close
|
// Test open and close
|
||||||
_xOpenFeedback := TRUE;
|
_xOpenFeedback := TRUE;
|
||||||
_xCloseFeedback := TRUE;
|
_xCloseFeedback := TRUE;
|
||||||
_fbValve(xOpenFeedback := _xOpenFeedback, xCloseFeedback := _xCloseFeedback, stHMIInterface := _stHMIValve, stValveConfig := _stValveConfig, xInUnitTestMode := TRUE);
|
_fbValve(i_xOpenFeedback := _xOpenFeedback, i_xCloseFeedback := _xCloseFeedback, stHMIInterface := _stHMIValve, stValveConfig := _stValveConfig, xInUnitTestMode := TRUE);
|
||||||
AssertFalse(Condition := _fbValve.IsClosed OR _fbValve.IsOpen, Message := 'Valve should not signal open or closed with both feedback signals high');
|
AssertFalse(Condition := _fbValve.IsClosed OR _fbValve.IsOpen, Message := 'Valve should not signal open or closed with both feedback signals high');
|
||||||
|
|
||||||
TEST_FINISHED();]]></ST>
|
TEST_FINISHED();]]></ST>
|
||||||
@@ -347,16 +347,16 @@ IF _fbValve.IsOpen THEN
|
|||||||
_fbValve(wProcessINTLK := _wInterlocks, wProcessINTLKUsed := _wInterlocksUsed, stHMIInterface := _stHMIValve);
|
_fbValve(wProcessINTLK := _wInterlocks, wProcessINTLKUsed := _wInterlocksUsed, stHMIInterface := _stHMIValve);
|
||||||
|
|
||||||
// Valve should now be closed
|
// Valve should now be closed
|
||||||
AssertFalse(Condition := _fbValve.xOpenValve, Message := 'Valve should not be open with active Interlock');
|
AssertFalse(Condition := _fbValve.o_xOpenValve, Message := 'Valve should not be open with active Interlock');
|
||||||
AssertTrue(Condition := _fbValve.xCloseValve, Message := 'Close output not active with active Interlock');
|
AssertTrue(Condition := _fbValve.o_xCloseValve, Message := 'Close output not active with active Interlock');
|
||||||
|
|
||||||
// Test the same with open valve when interlock active
|
// Test the same with open valve when interlock active
|
||||||
_stValveConfig.xNormallyOpen := TRUE;
|
_stValveConfig.xNormallyOpen := TRUE;
|
||||||
_fbValve(stValveConfig := _stValveConfig, wProcessINTLK := _wInterlocks, wProcessINTLKUsed := _wInterlocksUsed, stHMIInterface := _stHMIValve);
|
_fbValve(stValveConfig := _stValveConfig, wProcessINTLK := _wInterlocks, wProcessINTLKUsed := _wInterlocksUsed, stHMIInterface := _stHMIValve);
|
||||||
|
|
||||||
// Valve should now be open
|
// Valve should now be open
|
||||||
AssertTrue(Condition := _fbValve.xOpenValve, Message := 'Valve should be open with active Interlock and inverted config');
|
AssertTrue(Condition := _fbValve.o_xOpenValve, Message := 'Valve should be open with active Interlock and inverted config');
|
||||||
AssertFalse(Condition := _fbValve.xCloseValve, Message := 'Close output active with active Interlock and inverted config');
|
AssertFalse(Condition := _fbValve.o_xCloseValve, Message := 'Close output active with active Interlock and inverted config');
|
||||||
ELSE
|
ELSE
|
||||||
AssertTrue(Condition := _fbValve.IsOpen, Message := 'Valve did not open before the test');
|
AssertTrue(Condition := _fbValve.IsOpen, Message := 'Valve did not open before the test');
|
||||||
END_IF
|
END_IF
|
||||||
@@ -405,16 +405,16 @@ IF _fbValve.IsOpen THEN
|
|||||||
_fbValve(wProcessINTLK := _wInterlocks, wProcessINTLKUsed := _wInterlocksUsed, stHMIInterface := _stHMIValve);
|
_fbValve(wProcessINTLK := _wInterlocks, wProcessINTLKUsed := _wInterlocksUsed, stHMIInterface := _stHMIValve);
|
||||||
|
|
||||||
// Valve should now be closed
|
// Valve should now be closed
|
||||||
AssertFalse(Condition := _fbValve.xOpenValve, Message := 'Valve should not be open with active Interlock');
|
AssertFalse(Condition := _fbValve.o_xOpenValve, Message := 'Valve should not be open with active Interlock');
|
||||||
AssertTrue(Condition := _fbValve.xCloseValve, Message := 'Close output not active with active Interlock');
|
AssertTrue(Condition := _fbValve.o_xCloseValve, Message := 'Close output not active with active Interlock');
|
||||||
|
|
||||||
// Test the same with open valve when interlock active
|
// Test the same with open valve when interlock active
|
||||||
_stValveConfig.xNormallyOpen := TRUE;
|
_stValveConfig.xNormallyOpen := TRUE;
|
||||||
_fbValve(stValveConfig := _stValveConfig, wProcessINTLK := _wInterlocks, wProcessINTLKUsed := _wInterlocksUsed, stHMIInterface := _stHMIValve);
|
_fbValve(stValveConfig := _stValveConfig, wProcessINTLK := _wInterlocks, wProcessINTLKUsed := _wInterlocksUsed, stHMIInterface := _stHMIValve);
|
||||||
|
|
||||||
// Valve should now be open
|
// Valve should now be open
|
||||||
AssertTrue(Condition := _fbValve.xOpenValve, Message := 'Valve should be open with active Interlock and inverted config');
|
AssertTrue(Condition := _fbValve.o_xOpenValve, Message := 'Valve should be open with active Interlock and inverted config');
|
||||||
AssertFalse(Condition := _fbValve.xCloseValve, Message := 'Close output active with active Interlock and inverted config');
|
AssertFalse(Condition := _fbValve.o_xCloseValve, Message := 'Close output active with active Interlock and inverted config');
|
||||||
AssertTrue(Condition := _stHMIValve.stOpenButton.eFeedback = E_HMI_BUTTON_FEEDBACK.ACTIVE, Message := 'Open button should be set active with active Interlock and inverted config');
|
AssertTrue(Condition := _stHMIValve.stOpenButton.eFeedback = E_HMI_BUTTON_FEEDBACK.ACTIVE, Message := 'Open button should be set active with active Interlock and inverted config');
|
||||||
ELSE
|
ELSE
|
||||||
AssertTrue(Condition := _fbValve.IsOpen, Message := 'Valve did not open before the test');
|
AssertTrue(Condition := _fbValve.IsOpen, Message := 'Valve did not open before the test');
|
||||||
Reference in New Issue
Block a user