Linux runtime: fix thread waiting on wait_RT_to_nRT_signal not being waken-up when delete_RT_to_nRT_signal is invoked.
<?xml version='1.0' encoding='utf-8'?>
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.plcopen.org/xml/tc6_0201" xmlns:xhtml="http://www.w3.org/1999/xhtml" xsi:schemaLocation="http://www.plcopen.org/xml/tc6_0201">
<fileHeader companyName="Beremiz" productName="Beremiz" productVersion="0.0" creationDateTime="2008-12-14T16:53:26"/>
<contentHeader name="Beremiz non-standard POUs library" modificationDateTime="2022-12-16T11:59:30">
<coordinateInfo>
<fbd>
<scaling x="8" y="8"/>
</fbd>
<ld>
<scaling x="0" y="0"/>
</ld>
<sfc>
<scaling x="0" y="0"/>
</sfc>
</coordinateInfo>
</contentHeader>
<types>
<dataTypes/>
<pous>
<pou name="csv_read_by_string" pouType="functionBlock">
<interface>
<externalVars>
<variable name="pyext_csv_update">
<type>
<BOOL/>
</type>
</variable>
</externalVars>
<outputVars>
<variable name="ACK">
<type>
<BOOL/>
</type>
</variable>
<variable name="RESULT">
<type>
<string/>
</type>
</variable>
</outputVars>
<inputVars>
<variable name="FILE_NAME">
<type>
<string/>
</type>
</variable>
<variable name="ROW">
<type>
<string/>
</type>
</variable>
<variable name="COLUMN">
<type>
<string/>
</type>
</variable>
</inputVars>
<localVars>
<variable name="OLDCODE">
<type>
<string/>
</type>
</variable>
<variable name="py_eval">
<type>
<derived name="python_eval"/>
</type>
</variable>
<variable name="R_TRIG0">
<type>
<derived name="R_TRIG"/>
</type>
</variable>
<variable name="R_TRIG1">
<type>
<derived name="R_TRIG"/>
</type>
</variable>
<variable name="SR0">
<type>
<derived name="SR"/>
</type>
</variable>
</localVars>
</interface>
<body>
<FBD>
<block localId="7" typeName="CONCAT" executionOrderId="0" height="192" width="64">
<position x="360" y="112"/>
<inputVariables>
<variable formalParameter="IN1">
<connectionPointIn>
<relPosition x="0" y="32"/>
<connection refLocalId="8">
<position x="360" y="144"/>
<position x="320" y="144"/>
</connection>
</connectionPointIn>
</variable>
<variable formalParameter="IN2">
<connectionPointIn>
<relPosition x="0" y="56"/>
<connection refLocalId="9">
<position x="360" y="168"/>
<position x="152" y="168"/>
</connection>
</connectionPointIn>
</variable>
<variable formalParameter="IN3">
<connectionPointIn>
<relPosition x="0" y="80"/>
<connection refLocalId="10">
<position x="360" y="192"/>
<position x="320" y="192"/>
</connection>
</connectionPointIn>
</variable>
<variable formalParameter="IN4">
<connectionPointIn>
<relPosition x="0" y="104"/>
<connection refLocalId="11">
<position x="360" y="216"/>
<position x="152" y="216"/>
</connection>
</connectionPointIn>
</variable>
<variable formalParameter="IN5">
<connectionPointIn>
<relPosition x="0" y="128"/>
<connection refLocalId="12">
<position x="360" y="240"/>
<position x="320" y="240"/>
</connection>
</connectionPointIn>
</variable>
<variable formalParameter="IN6">
<connectionPointIn>
<relPosition x="0" y="152"/>
<connection refLocalId="13">
<position x="360" y="264"/>
<position x="152" y="264"/>
</connection>
</connectionPointIn>
</variable>
<variable formalParameter="IN7">
<connectionPointIn>
<relPosition x="0" y="176"/>
<connection refLocalId="14">
<position x="360" y="288"/>
<position x="320" y="288"/>
</connection>
</connectionPointIn>
</variable>
</inputVariables>
<inOutVariables/>
<outputVariables>
<variable formalParameter="OUT">
<connectionPointOut>
<relPosition x="64" y="32"/>
</connectionPointOut>
</variable>
</outputVariables>
</block>
<inVariable localId="8" executionOrderId="0" height="24" width="160" negated="false">
<position x="160" y="128"/>
<connectionPointOut>
<relPosition x="160" y="16"/>
</connectionPointOut>
<expression>'CSVRdStr("'</expression>
</inVariable>
<inVariable localId="9" executionOrderId="0" height="32" width="112" negated="false">
<position x="40" y="152"/>
<connectionPointOut>
<relPosition x="112" y="16"/>
</connectionPointOut>
<expression>FILE_NAME</expression>
</inVariable>
<inVariable localId="10" executionOrderId="0" height="24" width="112" negated="false">
<position x="208" y="184"/>
<connectionPointOut>
<relPosition x="112" y="8"/>
</connectionPointOut>
<expression>'","'</expression>
</inVariable>
<inVariable localId="11" executionOrderId="0" height="32" width="112" negated="false">
<position x="40" y="200"/>
<connectionPointOut>
<relPosition x="112" y="16"/>
</connectionPointOut>
<expression>ROW</expression>
</inVariable>
<inVariable localId="12" executionOrderId="0" height="24" width="112" negated="false">
<position x="208" y="224"/>
<connectionPointOut>
<relPosition x="112" y="16"/>
</connectionPointOut>
<expression>'","'</expression>
</inVariable>
<inVariable localId="13" executionOrderId="0" height="32" width="112" negated="false">
<position x="40" y="248"/>
<connectionPointOut>
<relPosition x="112" y="16"/>
</connectionPointOut>
<expression>COLUMN</expression>
</inVariable>
<inVariable localId="14" executionOrderId="0" height="24" width="112" negated="false">
<position x="208" y="272"/>
<connectionPointOut>
<relPosition x="112" y="16"/>
</connectionPointOut>
<expression>'")'</expression>
</inVariable>
<block localId="16" typeName="NE" executionOrderId="0" height="64" width="64">
<position x="208" y="408"/>
<inputVariables>
<variable formalParameter="IN1">
<connectionPointIn>
<relPosition x="0" y="32"/>
<connection refLocalId="22">
<position x="208" y="440"/>
<position x="168" y="440"/>
</connection>
</connectionPointIn>
</variable>
<variable formalParameter="IN2">
<connectionPointIn>
<relPosition x="0" y="56"/>
<connection refLocalId="21">
<position x="208" y="464"/>
<position x="168" y="464"/>
</connection>
</connectionPointIn>
</variable>
</inputVariables>
<inOutVariables/>
<outputVariables>
<variable formalParameter="OUT">
<connectionPointOut>
<relPosition x="64" y="32"/>
</connectionPointOut>
</variable>
</outputVariables>
</block>
<block localId="18" typeName="SEL" executionOrderId="0" height="96" width="64">
<position x="680" y="376"/>
<inputVariables>
<variable formalParameter="G">
<connectionPointIn>
<relPosition x="0" y="32"/>
<connection refLocalId="25">
<position x="680" y="408"/>
<position x="624" y="408"/>
</connection>
</connectionPointIn>
</variable>
<variable formalParameter="IN0">
<connectionPointIn>
<relPosition x="0" y="56"/>
<connection refLocalId="20">
<position x="680" y="432"/>
<position x="632" y="432"/>
</connection>
</connectionPointIn>
</variable>
<variable formalParameter="IN1">
<connectionPointIn>
<relPosition x="0" y="80"/>
<connection refLocalId="4">
<position x="680" y="456"/>
<position x="632" y="456"/>
</connection>
</connectionPointIn>
</variable>
</inputVariables>
<inOutVariables/>
<outputVariables>
<variable formalParameter="OUT">
<connectionPointOut>
<relPosition x="64" y="32"/>
</connectionPointOut>
</variable>
</outputVariables>
</block>
<connector name="Code" localId="19" height="24" width="128">
<position x="480" y="136"/>
<connectionPointIn>
<relPosition x="0" y="8"/>
<connection refLocalId="7" formalParameter="OUT">
<position x="480" y="144"/>
<position x="424" y="144"/>
</connection>
</connectionPointIn>
</connector>
<outVariable localId="17" executionOrderId="0" height="32" width="66" negated="false">
<position x="784" y="392"/>
<connectionPointIn>
<relPosition x="0" y="16"/>
<connection refLocalId="18" formalParameter="OUT">
<position x="784" y="408"/>
<position x="744" y="408"/>
</connection>
</connectionPointIn>
<expression>OLDCODE</expression>
</outVariable>
<inVariable localId="20" executionOrderId="0" height="32" width="72" negated="false">
<position x="560" y="416"/>
<connectionPointOut>
<relPosition x="72" y="16"/>
</connectionPointOut>
<expression>OLDCODE</expression>
</inVariable>
<inVariable localId="21" executionOrderId="0" height="32" width="72" negated="false">
<position x="96" y="448"/>
<connectionPointOut>
<relPosition x="72" y="16"/>
</connectionPointOut>
<expression>OLDCODE</expression>
</inVariable>
<continuation name="Code" localId="4" height="24" width="128">
<position x="504" y="448"/>
<connectionPointOut>
<relPosition x="128" y="8"/>
</connectionPointOut>
</continuation>
<continuation name="Code" localId="22" height="24" width="128">
<position x="40" y="424"/>
<connectionPointOut>
<relPosition x="128" y="16"/>
</connectionPointOut>
</continuation>
<connector name="CodeChange" localId="23" height="24" width="120">
<position x="328" y="432"/>
<connectionPointIn>
<relPosition x="0" y="8"/>
<connection refLocalId="16" formalParameter="OUT">
<position x="328" y="440"/>
<position x="272" y="440"/>
</connection>
</connectionPointIn>
</connector>
<continuation name="CodeChange" localId="25" height="24" width="120">
<position x="504" y="392"/>
<connectionPointOut>
<relPosition x="120" y="16"/>
</connectionPointOut>
</continuation>
<comment localId="26" height="40" width="232">
<position x="48" y="40"/>
<content>
<xhtml:p><![CDATA[Generate python code line]]></xhtml:p>
</content>
</comment>
<comment localId="27" height="48" width="312">
<position x="40" y="328"/>
<content>
<xhtml:p><![CDATA[Detect changes in generated code line]]></xhtml:p>
</content>
</comment>
<comment localId="28" height="48" width="520">
<position x="48" y="512"/>
<content>
<xhtml:p><![CDATA[Execute python code on change or globally when CSV is updated]]></xhtml:p>
</content>
</comment>
<block localId="1" width="104" height="80" typeName="python_eval" instanceName="py_eval" executionOrderId="0">
<position x="552" y="600"/>
<inputVariables>
<variable formalParameter="TRIG">
<connectionPointIn>
<relPosition x="0" y="32"/>
<connection refLocalId="15" formalParameter="OUT">
<position x="552" y="632"/>
<position x="360" y="632"/>
</connection>
</connectionPointIn>
</variable>
<variable formalParameter="CODE">
<connectionPointIn>
<relPosition x="0" y="64"/>
<connection refLocalId="2">
<position x="552" y="664"/>
<position x="528" y="664"/>
</connection>
</connectionPointIn>
</variable>
</inputVariables>
<inOutVariables/>
<outputVariables>
<variable formalParameter="ACK">
<connectionPointOut>
<relPosition x="104" y="32"/>
</connectionPointOut>
</variable>
<variable formalParameter="RESULT">
<connectionPointOut>
<relPosition x="104" y="64"/>
</connectionPointOut>
</variable>
</outputVariables>
</block>
<inVariable localId="3" height="24" width="152" executionOrderId="0" negated="false">
<position x="32" y="616"/>
<connectionPointOut>
<relPosition x="152" y="16"/>
</connectionPointOut>
<expression>pyext_csv_update</expression>
</inVariable>
<outVariable localId="5" height="24" width="40" executionOrderId="0" negated="false">
<position x="1216" y="632"/>
<connectionPointIn>
<relPosition x="0" y="8"/>
<connection refLocalId="38" formalParameter="Q1">
<position x="1216" y="640"/>
<position x="1168" y="640"/>
</connection>
</connectionPointIn>
<expression>ACK</expression>
</outVariable>
<outVariable localId="6" height="24" width="64" executionOrderId="0" negated="false">
<position x="688" y="704"/>
<connectionPointIn>
<relPosition x="0" y="8"/>
<connection refLocalId="1" formalParameter="RESULT">
<position x="688" y="712"/>
<position x="672" y="712"/>
<position x="672" y="664"/>
<position x="656" y="664"/>
</connection>
</connectionPointIn>
<expression>RESULT</expression>
</outVariable>
<continuation name="Code" localId="2" height="24" width="128">
<position x="400" y="648"/>
<connectionPointOut>
<relPosition x="128" y="16"/>
</connectionPointOut>
</continuation>
<continuation name="CodeChange" localId="24" height="24" width="120">
<position x="64" y="648"/>
<connectionPointOut>
<relPosition x="120" y="16"/>
</connectionPointOut>
</continuation>
<block localId="15" typeName="OR" executionOrderId="0" height="64" width="64">
<position x="296" y="600"/>
<inputVariables>
<variable formalParameter="IN1">
<connectionPointIn>
<relPosition x="0" y="32"/>
<connection refLocalId="32" formalParameter="Q">
<position x="296" y="632"/>
<position x="272" y="632"/>
</connection>
</connectionPointIn>
</variable>
<variable formalParameter="IN2">
<connectionPointIn>
<relPosition x="0" y="56"/>
<connection refLocalId="24">
<position x="296" y="656"/>
<position x="184" y="656"/>
</connection>
</connectionPointIn>
</variable>
</inputVariables>
<inOutVariables/>
<outputVariables>
<variable formalParameter="OUT">
<connectionPointOut>
<relPosition x="64" y="32"/>
</connectionPointOut>
</variable>
</outputVariables>
</block>
<block localId="32" typeName="R_TRIG" instanceName="R_TRIG0" executionOrderId="0" height="48" width="64">
<position x="208" y="600"/>
<inputVariables>
<variable formalParameter="CLK">
<connectionPointIn>
<relPosition x="0" y="32"/>
<connection refLocalId="3">
<position x="208" y="632"/>
<position x="184" y="632"/>
</connection>
</connectionPointIn>
</variable>
</inputVariables>
<inOutVariables/>
<outputVariables>
<variable formalParameter="Q">
<connectionPointOut>
<relPosition x="64" y="32"/>
</connectionPointOut>
</variable>
</outputVariables>
</block>
<block localId="33" typeName="LEFT" executionOrderId="0" height="64" width="56">
<position x="736" y="632"/>
<inputVariables>
<variable formalParameter="IN">
<connectionPointIn>
<relPosition x="0" y="32"/>
<connection refLocalId="1" formalParameter="RESULT">
<position x="736" y="664"/>
<position x="656" y="664"/>
</connection>
</connectionPointIn>
</variable>
<variable formalParameter="L">
<connectionPointIn>
<relPosition x="0" y="56"/>
<connection refLocalId="35">
<position x="736" y="688"/>
<position x="712" y="688"/>
</connection>
</connectionPointIn>
</variable>
</inputVariables>
<inOutVariables/>
<outputVariables>
<variable formalParameter="OUT">
<connectionPointOut>
<relPosition x="56" y="32"/>
</connectionPointOut>
</variable>
</outputVariables>
</block>
<block localId="34" typeName="NE" executionOrderId="0" height="64" width="64">
<position x="880" y="632"/>
<inputVariables>
<variable formalParameter="IN1">
<connectionPointIn>
<relPosition x="0" y="32"/>
<connection refLocalId="33" formalParameter="OUT">
<position x="880" y="664"/>
<position x="792" y="664"/>
</connection>
</connectionPointIn>
</variable>
<variable formalParameter="IN2">
<connectionPointIn>
<relPosition x="0" y="56"/>
<connection refLocalId="36">
<position x="880" y="688"/>
<position x="856" y="688"/>
</connection>
</connectionPointIn>
</variable>
</inputVariables>
<inOutVariables/>
<outputVariables>
<variable formalParameter="OUT">
<connectionPointOut>
<relPosition x="64" y="32"/>
</connectionPointOut>
</variable>
</outputVariables>
</block>
<inVariable localId="35" executionOrderId="0" height="24" width="24" negated="false">
<position x="688" y="672"/>
<connectionPointOut>
<relPosition x="24" y="16"/>
</connectionPointOut>
<expression>1</expression>
</inVariable>
<inVariable localId="36" executionOrderId="0" height="24" width="40" negated="false">
<position x="816" y="672"/>
<connectionPointOut>
<relPosition x="40" y="16"/>
</connectionPointOut>
<expression>'#'</expression>
</inVariable>
<block localId="37" typeName="R_TRIG" instanceName="R_TRIG1" executionOrderId="0" height="48" width="64">
<position x="880" y="576"/>
<inputVariables>
<variable formalParameter="CLK">
<connectionPointIn>
<relPosition x="0" y="32"/>
<connection refLocalId="1" formalParameter="ACK">
<position x="880" y="608"/>
<position x="688" y="608"/>
<position x="688" y="632"/>
<position x="656" y="632"/>
</connection>
</connectionPointIn>
</variable>
</inputVariables>
<inOutVariables/>
<outputVariables>
<variable formalParameter="Q">
<connectionPointOut>
<relPosition x="64" y="32"/>
</connectionPointOut>
</variable>
</outputVariables>
</block>
<block localId="38" typeName="SR" instanceName="SR0" executionOrderId="0" height="64" width="48">
<position x="1120" y="608"/>
<inputVariables>
<variable formalParameter="S1">
<connectionPointIn>
<relPosition x="0" y="32"/>
<connection refLocalId="39" formalParameter="OUT">
<position x="1120" y="640"/>
<position x="1056" y="640"/>
</connection>
</connectionPointIn>
</variable>
<variable formalParameter="R" edge="rising">
<connectionPointIn>
<relPosition x="0" y="56"/>
<connection refLocalId="15" formalParameter="OUT">
<position x="1120" y="664"/>
<position x="1088" y="664"/>
<position x="1088" y="736"/>
<position x="376" y="736"/>
<position x="376" y="632"/>
<position x="360" y="632"/>
</connection>
</connectionPointIn>
</variable>
</inputVariables>
<inOutVariables/>
<outputVariables>
<variable formalParameter="Q1">
<connectionPointOut>
<relPosition x="48" y="32"/>
</connectionPointOut>
</variable>
</outputVariables>
</block>
<block localId="39" typeName="AND" executionOrderId="0" height="64" width="64">
<position x="992" y="608"/>
<inputVariables>
<variable formalParameter="IN1">
<connectionPointIn>
<relPosition x="0" y="32"/>
<connection refLocalId="37" formalParameter="Q">
<position x="992" y="640"/>
<position x="976" y="640"/>
<position x="976" y="608"/>
<position x="944" y="608"/>
</connection>
</connectionPointIn>
</variable>
<variable formalParameter="IN2">
<connectionPointIn>
<relPosition x="0" y="56"/>
<connection refLocalId="34" formalParameter="OUT">
<position x="992" y="664"/>
<position x="944" y="664"/>
</connection>
</connectionPointIn>
</variable>
</inputVariables>
<inOutVariables/>
<outputVariables>
<variable formalParameter="OUT">
<connectionPointOut>
<relPosition x="64" y="32"/>
</connectionPointOut>
</variable>
</outputVariables>
</block>
</FBD>
</body>
</pou>
<pou name="csv_reload" pouType="functionBlock">
<interface>
<externalVars>
<variable name="pyext_csv_update">
<type>
<BOOL/>
</type>
</variable>
</externalVars>
<outputVars>
<variable name="ACK">
<type>
<BOOL/>
</type>
</variable>
<variable name="RESULT">
<type>
<string/>
</type>
</variable>
</outputVars>
<localVars>
<variable name="py_eval">
<type>
<derived name="python_eval"/>
</type>
</variable>
</localVars>
<inputVars>
<variable name="TRIG">
<type>
<BOOL/>
</type>
</variable>
</inputVars>
<localVars>
<variable name="R_TRIG0">
<type>
<derived name="R_TRIG"/>
</type>
</variable>
<variable name="F_TRIG0">
<type>
<derived name="F_TRIG"/>
</type>
</variable>
</localVars>
</interface>
<body>
<FBD>
<block localId="1" width="104" height="80" typeName="python_eval" instanceName="py_eval" executionOrderId="0">
<position x="232" y="328"/>
<inputVariables>
<variable formalParameter="TRIG">
<connectionPointIn>
<relPosition x="0" y="32"/>
<connection refLocalId="3">
<position x="232" y="360"/>
<position x="200" y="360"/>
</connection>
</connectionPointIn>
</variable>
<variable formalParameter="CODE">
<connectionPointIn>
<relPosition x="0" y="64"/>
<connection refLocalId="8">
<position x="232" y="392"/>
<position x="200" y="392"/>
</connection>
</connectionPointIn>
</variable>
</inputVariables>
<inOutVariables/>
<outputVariables>
<variable formalParameter="ACK">
<connectionPointOut>
<relPosition x="104" y="32"/>
</connectionPointOut>
</variable>
<variable formalParameter="RESULT">
<connectionPointOut>
<relPosition x="104" y="64"/>
</connectionPointOut>
</variable>
</outputVariables>
</block>
<inVariable localId="3" height="24" width="152" executionOrderId="0" negated="false">
<position x="48" y="352"/>
<connectionPointOut>
<relPosition x="152" y="8"/>
</connectionPointOut>
<expression>TRIG</expression>
</inVariable>
<outVariable localId="5" height="24" width="40" executionOrderId="0" negated="false">
<position x="384" y="344"/>
<connectionPointIn>
<relPosition x="0" y="16"/>
<connection refLocalId="1" formalParameter="ACK">
<position x="384" y="360"/>
<position x="336" y="360"/>
</connection>
</connectionPointIn>
<expression>ACK</expression>
</outVariable>
<outVariable localId="6" height="24" width="64" executionOrderId="0" negated="false">
<position x="384" y="376"/>
<connectionPointIn>
<relPosition x="0" y="16"/>
<connection refLocalId="1" formalParameter="RESULT">
<position x="384" y="392"/>
<position x="336" y="392"/>
</connection>
</connectionPointIn>
<expression>RESULT</expression>
</outVariable>
<inVariable localId="8" executionOrderId="0" height="24" width="176" negated="false">
<position x="24" y="384"/>
<connectionPointOut>
<relPosition x="176" y="16"/>
</connectionPointOut>
<expression>'pyext_csv_reload()'</expression>
</inVariable>
<outVariable localId="2" executionOrderId="0" height="24" width="146" negated="false">
<position x="864" y="320"/>
<connectionPointIn>
<relPosition x="0" y="8"/>
<connection refLocalId="12" formalParameter="OUT">
<position x="864" y="328"/>
<position x="816" y="328"/>
</connection>
</connectionPointIn>
<expression>pyext_csv_update</expression>
</outVariable>
<block localId="9" typeName="R_TRIG" instanceName="R_TRIG0" executionOrderId="0" height="48" width="64">
<position x="472" y="224"/>
<inputVariables>
<variable formalParameter="CLK">
<connectionPointIn>
<relPosition x="0" y="32"/>
<connection refLocalId="1" formalParameter="ACK">
<position x="472" y="256"/>
<position x="368" y="256"/>
<position x="368" y="360"/>
<position x="336" y="360"/>
</connection>
</connectionPointIn>
</variable>
</inputVariables>
<inOutVariables/>
<outputVariables>
<variable formalParameter="Q">
<connectionPointOut>
<relPosition x="64" y="32"/>
</connectionPointOut>
</variable>
</outputVariables>
</block>
<block localId="10" typeName="F_TRIG" instanceName="F_TRIG0" executionOrderId="0" height="48" width="64">
<position x="472" y="296"/>
<inputVariables>
<variable formalParameter="CLK">
<connectionPointIn>
<relPosition x="0" y="32"/>
<connection refLocalId="1" formalParameter="ACK">
<position x="472" y="328"/>
<position x="368" y="328"/>
<position x="368" y="360"/>
<position x="336" y="360"/>
</connection>
</connectionPointIn>
</variable>
</inputVariables>
<inOutVariables/>
<outputVariables>
<variable formalParameter="Q">
<connectionPointOut>
<relPosition x="64" y="32"/>
</connectionPointOut>
</variable>
</outputVariables>
</block>
<block localId="11" typeName="OR" executionOrderId="0" height="64" width="64">
<position x="584" y="272"/>
<inputVariables>
<variable formalParameter="IN1">
<connectionPointIn>
<relPosition x="0" y="32"/>
<connection refLocalId="9" formalParameter="Q">
<position x="584" y="304"/>
<position x="560" y="304"/>
<position x="560" y="256"/>
<position x="536" y="256"/>
</connection>
</connectionPointIn>
</variable>
<variable formalParameter="IN2">
<connectionPointIn>
<relPosition x="0" y="56"/>
<connection refLocalId="10" formalParameter="Q">
<position x="584" y="328"/>
<position x="536" y="328"/>
</connection>
</connectionPointIn>
</variable>
</inputVariables>
<inOutVariables/>
<outputVariables>
<variable formalParameter="OUT">
<connectionPointOut>
<relPosition x="64" y="32"/>
</connectionPointOut>
</variable>
</outputVariables>
</block>
<block localId="12" typeName="MOVE" executionOrderId="0" height="64" width="56">
<position x="760" y="272"/>
<inputVariables>
<variable formalParameter="EN">
<connectionPointIn>
<relPosition x="0" y="32"/>
<connection refLocalId="11" formalParameter="OUT">
<position x="760" y="304"/>
<position x="648" y="304"/>
</connection>
</connectionPointIn>
</variable>
<variable formalParameter="IN">
<connectionPointIn>
<relPosition x="0" y="56"/>
<connection refLocalId="13" formalParameter="OUT">
<position x="760" y="328"/>
<position x="724" y="328"/>
<position x="724" y="256"/>
<position x="712" y="256"/>
</connection>
</connectionPointIn>
</variable>
</inputVariables>
<inOutVariables/>
<outputVariables>
<variable formalParameter="ENO">
<connectionPointOut>
<relPosition x="56" y="32"/>
</connectionPointOut>
</variable>
<variable formalParameter="OUT">
<connectionPointOut>
<relPosition x="56" y="56"/>
</connectionPointOut>
</variable>
</outputVariables>
</block>
<block localId="13" typeName="NOT" executionOrderId="0" height="48" width="56">
<position x="656" y="224"/>
<inputVariables>
<variable formalParameter="IN">
<connectionPointIn>
<relPosition x="0" y="32"/>
<connection refLocalId="9" formalParameter="Q">
<position x="656" y="256"/>
<position x="536" y="256"/>
</connection>
</connectionPointIn>
</variable>
</inputVariables>
<inOutVariables/>
<outputVariables>
<variable formalParameter="OUT">
<connectionPointOut>
<relPosition x="56" y="32"/>
</connectionPointOut>
</variable>
</outputVariables>
</block>
<comment localId="14" height="72" width="664">
<position x="368" y="136"/>
<content>
<xhtml:p><![CDATA[pyext_csv_update initial value is True so that all CSV blocks get at least updated once at start.
When calling csv_reload, return from python pyext_csv_reload makes a pulse on pyext_csv_update]]></xhtml:p>
</content>
</comment>
</FBD>
</body>
</pou>
<pou name="csv_read_by_int" pouType="functionBlock">
<interface>
<externalVars>
<variable name="pyext_csv_update">
<type>
<BOOL/>
</type>
</variable>
</externalVars>
<outputVars>
<variable name="ACK">
<type>
<BOOL/>
</type>
</variable>
<variable name="RESULT">
<type>
<string/>
</type>
</variable>
</outputVars>
<inputVars>
<variable name="FILE_NAME">
<type>
<string/>
</type>
</variable>
<variable name="ROW">
<type>
<INT/>
</type>
</variable>
<variable name="COLUMN">
<type>
<INT/>
</type>
</variable>
</inputVars>
<localVars>
<variable name="OLDCODE">
<type>
<string/>
</type>
</variable>
<variable name="py_eval0">
<type>
<derived name="python_eval"/>
</type>
</variable>
<variable name="R_TRIG1">
<type>
<derived name="R_TRIG"/>
</type>
</variable>
<variable name="R_TRIG2">
<type>
<derived name="R_TRIG"/>
</type>
</variable>
<variable name="SR0">
<type>
<derived name="SR"/>
</type>
</variable>
</localVars>
</interface>
<body>
<FBD>
<block localId="7" typeName="CONCAT" executionOrderId="0" height="192" width="64">
<position x="520" y="112"/>
<inputVariables>
<variable formalParameter="IN1">
<connectionPointIn>
<relPosition x="0" y="32"/>
<connection refLocalId="8">
<position x="520" y="144"/>
<position x="480" y="144"/>
</connection>
</connectionPointIn>
</variable>
<variable formalParameter="IN2">
<connectionPointIn>
<relPosition x="0" y="56"/>
<connection refLocalId="9">
<position x="520" y="168"/>
<position x="312" y="168"/>
</connection>
</connectionPointIn>
</variable>
<variable formalParameter="IN3">
<connectionPointIn>
<relPosition x="0" y="80"/>
<connection refLocalId="10">
<position x="520" y="192"/>
<position x="480" y="192"/>
</connection>
</connectionPointIn>
</variable>
<variable formalParameter="IN4">
<connectionPointIn>
<relPosition x="0" y="104"/>
<connection refLocalId="31" formalParameter="OUT">
<position x="520" y="216"/>
<position x="320" y="216"/>
</connection>
</connectionPointIn>
</variable>
<variable formalParameter="IN5">
<connectionPointIn>
<relPosition x="0" y="128"/>
<connection refLocalId="12">
<position x="520" y="240"/>
<position x="480" y="240"/>
</connection>
</connectionPointIn>
</variable>
<variable formalParameter="IN6">
<connectionPointIn>
<relPosition x="0" y="152"/>
<connection refLocalId="2" formalParameter="OUT">
<position x="520" y="264"/>
<position x="320" y="264"/>
</connection>
</connectionPointIn>
</variable>
<variable formalParameter="IN7">
<connectionPointIn>
<relPosition x="0" y="176"/>
<connection refLocalId="14">
<position x="520" y="288"/>
<position x="480" y="288"/>
</connection>
</connectionPointIn>
</variable>
</inputVariables>
<inOutVariables/>
<outputVariables>
<variable formalParameter="OUT">
<connectionPointOut>
<relPosition x="64" y="32"/>
</connectionPointOut>
</variable>
</outputVariables>
</block>
<inVariable localId="8" executionOrderId="0" height="24" width="160" negated="false">
<position x="320" y="128"/>
<connectionPointOut>
<relPosition x="160" y="16"/>
</connectionPointOut>
<expression>'CSVRdInt("'</expression>
</inVariable>
<inVariable localId="9" executionOrderId="0" height="32" width="112" negated="false">
<position x="200" y="152"/>
<connectionPointOut>
<relPosition x="112" y="16"/>
</connectionPointOut>
<expression>FILE_NAME</expression>
</inVariable>
<inVariable localId="10" executionOrderId="0" height="24" width="112" negated="false">
<position x="368" y="184"/>
<connectionPointOut>
<relPosition x="112" y="8"/>
</connectionPointOut>
<expression>'",'</expression>
</inVariable>
<inVariable localId="11" executionOrderId="0" height="32" width="112" negated="false">
<position x="40" y="200"/>
<connectionPointOut>
<relPosition x="112" y="16"/>
</connectionPointOut>
<expression>ROW</expression>
</inVariable>
<inVariable localId="12" executionOrderId="0" height="24" width="112" negated="false">
<position x="368" y="224"/>
<connectionPointOut>
<relPosition x="112" y="16"/>
</connectionPointOut>
<expression>','</expression>
</inVariable>
<inVariable localId="13" executionOrderId="0" height="32" width="112" negated="false">
<position x="40" y="248"/>
<connectionPointOut>
<relPosition x="112" y="16"/>
</connectionPointOut>
<expression>COLUMN</expression>
</inVariable>
<inVariable localId="14" executionOrderId="0" height="24" width="112" negated="false">
<position x="368" y="272"/>
<connectionPointOut>
<relPosition x="112" y="16"/>
</connectionPointOut>
<expression>')'</expression>
</inVariable>
<continuation name="Code" localId="4" height="24" width="128">
<position x="504" y="496"/>
<connectionPointOut>
<relPosition x="128" y="16"/>
</connectionPointOut>
</continuation>
<block localId="16" typeName="NE" executionOrderId="0" height="64" width="64">
<position x="208" y="456"/>
<inputVariables>
<variable formalParameter="IN1">
<connectionPointIn>
<relPosition x="0" y="32"/>
<connection refLocalId="22">
<position x="208" y="488"/>
<position x="188" y="488"/>
<position x="188" y="480"/>
<position x="168" y="480"/>
</connection>
</connectionPointIn>
</variable>
<variable formalParameter="IN2">
<connectionPointIn>
<relPosition x="0" y="56"/>
<connection refLocalId="21">
<position x="208" y="512"/>
<position x="168" y="512"/>
</connection>
</connectionPointIn>
</variable>
</inputVariables>
<inOutVariables/>
<outputVariables>
<variable formalParameter="OUT">
<connectionPointOut>
<relPosition x="64" y="32"/>
</connectionPointOut>
</variable>
</outputVariables>
</block>
<outVariable localId="17" executionOrderId="0" height="32" width="66" negated="false">
<position x="784" y="440"/>
<connectionPointIn>
<relPosition x="0" y="16"/>
<connection refLocalId="18" formalParameter="OUT">
<position x="784" y="456"/>
<position x="744" y="456"/>
</connection>
</connectionPointIn>
<expression>OLDCODE</expression>
</outVariable>
<block localId="18" typeName="SEL" executionOrderId="0" height="96" width="64">
<position x="680" y="424"/>
<inputVariables>
<variable formalParameter="G">
<connectionPointIn>
<relPosition x="0" y="32"/>
<connection refLocalId="25">
<position x="680" y="456"/>
<position x="652" y="456"/>
<position x="652" y="448"/>
<position x="624" y="448"/>
</connection>
</connectionPointIn>
</variable>
<variable formalParameter="IN0">
<connectionPointIn>
<relPosition x="0" y="56"/>
<connection refLocalId="20">
<position x="680" y="480"/>
<position x="632" y="480"/>
</connection>
</connectionPointIn>
</variable>
<variable formalParameter="IN1">
<connectionPointIn>
<relPosition x="0" y="80"/>
<connection refLocalId="4">
<position x="680" y="504"/>
<position x="656" y="504"/>
<position x="656" y="512"/>
<position x="632" y="512"/>
</connection>
</connectionPointIn>
</variable>
</inputVariables>
<inOutVariables/>
<outputVariables>
<variable formalParameter="OUT">
<connectionPointOut>
<relPosition x="64" y="32"/>
</connectionPointOut>
</variable>
</outputVariables>
</block>
<inVariable localId="20" executionOrderId="0" height="32" width="72" negated="false">
<position x="560" y="464"/>
<connectionPointOut>
<relPosition x="72" y="16"/>
</connectionPointOut>
<expression>OLDCODE</expression>
</inVariable>
<inVariable localId="21" executionOrderId="0" height="32" width="72" negated="false">
<position x="96" y="496"/>
<connectionPointOut>
<relPosition x="72" y="16"/>
</connectionPointOut>
<expression>OLDCODE</expression>
</inVariable>
<continuation name="Code" localId="22" height="24" width="128">
<position x="40" y="472"/>
<connectionPointOut>
<relPosition x="128" y="8"/>
</connectionPointOut>
</continuation>
<connector name="CodeChange" localId="23" height="24" width="120">
<position x="328" y="480"/>
<connectionPointIn>
<relPosition x="0" y="16"/>
<connection refLocalId="16" formalParameter="OUT">
<position x="328" y="496"/>
<position x="300" y="496"/>
<position x="300" y="488"/>
<position x="272" y="488"/>
</connection>
</connectionPointIn>
</connector>
<continuation name="CodeChange" localId="25" height="24" width="120">
<position x="504" y="440"/>
<connectionPointOut>
<relPosition x="120" y="8"/>
</connectionPointOut>
</continuation>
<comment localId="27" height="48" width="312">
<position x="40" y="376"/>
<content>
<xhtml:p><![CDATA[Detect changes in generated code line]]></xhtml:p>
</content>
</comment>
<comment localId="28" height="48" width="520">
<position x="48" y="560"/>
<content>
<xhtml:p><![CDATA[Execute python code on change or globally when CSV is updated]]></xhtml:p>
</content>
</comment>
<comment localId="29" height="40" width="232">
<position x="64" y="32"/>
<content>
<xhtml:p><![CDATA[Generate python code line]]></xhtml:p>
</content>
</comment>
<connector name="Code" localId="30" height="24" width="128">
<position x="632" y="128"/>
<connectionPointIn>
<relPosition x="0" y="16"/>
<connection refLocalId="7" formalParameter="OUT">
<position x="632" y="144"/>
<position x="584" y="144"/>
</connection>
</connectionPointIn>
</connector>
<block localId="31" typeName="INT_TO_STRING" executionOrderId="0" height="48" width="120">
<position x="200" y="184"/>
<inputVariables>
<variable formalParameter="IN">
<connectionPointIn>
<relPosition x="0" y="32"/>
<connection refLocalId="11">
<position x="200" y="216"/>
<position x="152" y="216"/>
</connection>
</connectionPointIn>
</variable>
</inputVariables>
<inOutVariables/>
<outputVariables>
<variable formalParameter="OUT">
<connectionPointOut>
<relPosition x="120" y="32"/>
</connectionPointOut>
</variable>
</outputVariables>
</block>
<block localId="2" typeName="INT_TO_STRING" executionOrderId="0" height="48" width="120">
<position x="200" y="232"/>
<inputVariables>
<variable formalParameter="IN">
<connectionPointIn>
<relPosition x="0" y="32"/>
<connection refLocalId="13">
<position x="200" y="264"/>
<position x="152" y="264"/>
</connection>
</connectionPointIn>
</variable>
</inputVariables>
<inOutVariables/>
<outputVariables>
<variable formalParameter="OUT">
<connectionPointOut>
<relPosition x="120" y="32"/>
</connectionPointOut>
</variable>
</outputVariables>
</block>
<block localId="40" width="104" height="80" typeName="python_eval" instanceName="py_eval0" executionOrderId="0">
<position x="552" y="640"/>
<inputVariables>
<variable formalParameter="TRIG">
<connectionPointIn>
<relPosition x="0" y="32"/>
<connection refLocalId="15" formalParameter="OUT">
<position x="552" y="672"/>
<position x="360" y="672"/>
</connection>
</connectionPointIn>
</variable>
<variable formalParameter="CODE">
<connectionPointIn>
<relPosition x="0" y="64"/>
<connection refLocalId="41">
<position x="552" y="704"/>
<position x="528" y="704"/>
</connection>
</connectionPointIn>
</variable>
</inputVariables>
<inOutVariables/>
<outputVariables>
<variable formalParameter="ACK">
<connectionPointOut>
<relPosition x="104" y="32"/>
</connectionPointOut>
</variable>
<variable formalParameter="RESULT">
<connectionPointOut>
<relPosition x="104" y="64"/>
</connectionPointOut>
</variable>
</outputVariables>
</block>
<continuation name="Code" localId="41" height="24" width="128">
<position x="400" y="688"/>
<connectionPointOut>
<relPosition x="128" y="16"/>
</connectionPointOut>
</continuation>
<inVariable localId="42" height="24" width="152" executionOrderId="0" negated="false">
<position x="32" y="656"/>
<connectionPointOut>
<relPosition x="152" y="16"/>
</connectionPointOut>
<expression>pyext_csv_update</expression>
</inVariable>
<outVariable localId="43" height="24" width="40" executionOrderId="0" negated="false">
<position x="1216" y="672"/>
<connectionPointIn>
<relPosition x="0" y="16"/>
<connection refLocalId="38" formalParameter="Q1">
<position x="1216" y="688"/>
<position x="1192" y="688"/>
<position x="1192" y="680"/>
<position x="1168" y="680"/>
</connection>
</connectionPointIn>
<expression>ACK</expression>
</outVariable>
<outVariable localId="44" height="24" width="64" executionOrderId="0" negated="false">
<position x="688" y="744"/>
<connectionPointIn>
<relPosition x="0" y="8"/>
<connection refLocalId="40" formalParameter="RESULT">
<position x="688" y="752"/>
<position x="672" y="752"/>
<position x="672" y="704"/>
<position x="656" y="704"/>
</connection>
</connectionPointIn>
<expression>RESULT</expression>
</outVariable>
<block localId="15" typeName="OR" executionOrderId="0" height="64" width="64">
<position x="296" y="640"/>
<inputVariables>
<variable formalParameter="IN1">
<connectionPointIn>
<relPosition x="0" y="32"/>
<connection refLocalId="46" formalParameter="Q">
<position x="296" y="672"/>
<position x="272" y="672"/>
</connection>
</connectionPointIn>
</variable>
<variable formalParameter="IN2">
<connectionPointIn>
<relPosition x="0" y="56"/>
<connection refLocalId="45">
<position x="296" y="696"/>
<position x="240" y="696"/>
<position x="240" y="704"/>
<position x="184" y="704"/>
</connection>
</connectionPointIn>
</variable>
</inputVariables>
<inOutVariables/>
<outputVariables>
<variable formalParameter="OUT">
<connectionPointOut>
<relPosition x="64" y="32"/>
</connectionPointOut>
</variable>
</outputVariables>
</block>
<continuation name="CodeChange" localId="45" height="24" width="120">
<position x="64" y="688"/>
<connectionPointOut>
<relPosition x="120" y="16"/>
</connectionPointOut>
</continuation>
<block localId="46" typeName="R_TRIG" instanceName="R_TRIG1" executionOrderId="0" height="48" width="64">
<position x="208" y="640"/>
<inputVariables>
<variable formalParameter="CLK">
<connectionPointIn>
<relPosition x="0" y="32"/>
<connection refLocalId="42">
<position x="208" y="672"/>
<position x="184" y="672"/>
</connection>
</connectionPointIn>
</variable>
</inputVariables>
<inOutVariables/>
<outputVariables>
<variable formalParameter="Q">
<connectionPointOut>
<relPosition x="64" y="32"/>
</connectionPointOut>
</variable>
</outputVariables>
</block>
<block localId="33" typeName="LEFT" executionOrderId="0" height="64" width="56">
<position x="736" y="672"/>
<inputVariables>
<variable formalParameter="IN">
<connectionPointIn>
<relPosition x="0" y="32"/>
<connection refLocalId="40" formalParameter="RESULT">
<position x="736" y="704"/>
<position x="656" y="704"/>
</connection>
</connectionPointIn>
</variable>
<variable formalParameter="L">
<connectionPointIn>
<relPosition x="0" y="56"/>
<connection refLocalId="35">
<position x="736" y="728"/>
<position x="724" y="728"/>
<position x="724" y="720"/>
<position x="712" y="720"/>
</connection>
</connectionPointIn>
</variable>
</inputVariables>
<inOutVariables/>
<outputVariables>
<variable formalParameter="OUT">
<connectionPointOut>
<relPosition x="56" y="32"/>
</connectionPointOut>
</variable>
</outputVariables>
</block>
<block localId="34" typeName="NE" executionOrderId="0" height="64" width="64">
<position x="880" y="672"/>
<inputVariables>
<variable formalParameter="IN1">
<connectionPointIn>
<relPosition x="0" y="32"/>
<connection refLocalId="33" formalParameter="OUT">
<position x="880" y="704"/>
<position x="792" y="704"/>
</connection>
</connectionPointIn>
</variable>
<variable formalParameter="IN2">
<connectionPointIn>
<relPosition x="0" y="56"/>
<connection refLocalId="36">
<position x="880" y="728"/>
<position x="868" y="728"/>
<position x="868" y="720"/>
<position x="856" y="720"/>
</connection>
</connectionPointIn>
</variable>
</inputVariables>
<inOutVariables/>
<outputVariables>
<variable formalParameter="OUT">
<connectionPointOut>
<relPosition x="64" y="32"/>
</connectionPointOut>
</variable>
</outputVariables>
</block>
<inVariable localId="35" executionOrderId="0" height="24" width="24" negated="false">
<position x="688" y="712"/>
<connectionPointOut>
<relPosition x="24" y="8"/>
</connectionPointOut>
<expression>1</expression>
</inVariable>
<inVariable localId="36" executionOrderId="0" height="24" width="40" negated="false">
<position x="816" y="712"/>
<connectionPointOut>
<relPosition x="40" y="8"/>
</connectionPointOut>
<expression>'#'</expression>
</inVariable>
<block localId="37" typeName="R_TRIG" instanceName="R_TRIG2" executionOrderId="0" height="48" width="64">
<position x="880" y="616"/>
<inputVariables>
<variable formalParameter="CLK">
<connectionPointIn>
<relPosition x="0" y="32"/>
<connection refLocalId="40" formalParameter="ACK">
<position x="880" y="648"/>
<position x="688" y="648"/>
<position x="688" y="672"/>
<position x="656" y="672"/>
</connection>
</connectionPointIn>
</variable>
</inputVariables>
<inOutVariables/>
<outputVariables>
<variable formalParameter="Q">
<connectionPointOut>
<relPosition x="64" y="32"/>
</connectionPointOut>
</variable>
</outputVariables>
</block>
<block localId="38" typeName="SR" instanceName="SR0" executionOrderId="0" height="64" width="48">
<position x="1120" y="648"/>
<inputVariables>
<variable formalParameter="S1">
<connectionPointIn>
<relPosition x="0" y="32"/>
<connection refLocalId="39" formalParameter="OUT">
<position x="1120" y="680"/>
<position x="1056" y="680"/>
</connection>
</connectionPointIn>
</variable>
<variable formalParameter="R" edge="rising">
<connectionPointIn>
<relPosition x="0" y="56"/>
<connection refLocalId="15" formalParameter="OUT">
<position x="1120" y="704"/>
<position x="1088" y="704"/>
<position x="1088" y="776"/>
<position x="376" y="776"/>
<position x="376" y="672"/>
<position x="360" y="672"/>
</connection>
</connectionPointIn>
</variable>
</inputVariables>
<inOutVariables/>
<outputVariables>
<variable formalParameter="Q1">
<connectionPointOut>
<relPosition x="48" y="32"/>
</connectionPointOut>
</variable>
</outputVariables>
</block>
<block localId="39" typeName="AND" executionOrderId="0" height="64" width="64">
<position x="992" y="648"/>
<inputVariables>
<variable formalParameter="IN1">
<connectionPointIn>
<relPosition x="0" y="32"/>
<connection refLocalId="37" formalParameter="Q">
<position x="992" y="680"/>
<position x="976" y="680"/>
<position x="976" y="648"/>
<position x="944" y="648"/>
</connection>
</connectionPointIn>
</variable>
<variable formalParameter="IN2">
<connectionPointIn>
<relPosition x="0" y="56"/>
<connection refLocalId="34" formalParameter="OUT">
<position x="992" y="704"/>
<position x="944" y="704"/>
</connection>
</connectionPointIn>
</variable>
</inputVariables>
<inOutVariables/>
<outputVariables>
<variable formalParameter="OUT">
<connectionPointOut>
<relPosition x="64" y="32"/>
</connectionPointOut>
</variable>
</outputVariables>
</block>
</FBD>
</body>
</pou>
<pou name="python_eval" pouType="functionBlock">
<interface>
<inputVars>
<variable name="TRIG">
<type>
<BOOL/>
</type>
</variable>
<variable name="CODE">
<type>
<string/>
</type>
</variable>
</inputVars>
<outputVars>
<variable name="ACK">
<type>
<BOOL/>
</type>
</variable>
<variable name="RESULT">
<type>
<string/>
</type>
</variable>
</outputVars>
<localVars>
<variable name="STATE">
<type>
<DWORD/>
</type>
</variable>
<variable name="BUFFER">
<type>
<string/>
</type>
</variable>
<variable name="PREBUFFER">
<type>
<string/>
</type>
</variable>
<variable name="TRIGM1">
<type>
<BOOL/>
</type>
</variable>
<variable name="TRIGGED">
<type>
<BOOL/>
</type>
</variable>
</localVars>
</interface>
<body>
<ST>
<xhtml:p><![CDATA[{extern void __PythonEvalFB(int, PYTHON_EVAL*);__PythonEvalFB(0, data__);}]]></xhtml:p>
</ST>
</body>
</pou>
<pou name="python_poll" pouType="functionBlock">
<interface>
<inputVars>
<variable name="TRIG">
<type>
<BOOL/>
</type>
</variable>
<variable name="CODE">
<type>
<string/>
</type>
</variable>
</inputVars>
<outputVars>
<variable name="ACK">
<type>
<BOOL/>
</type>
</variable>
<variable name="RESULT">
<type>
<string/>
</type>
</variable>
</outputVars>
<localVars>
<variable name="STATE">
<type>
<DWORD/>
</type>
</variable>
<variable name="BUFFER">
<type>
<string/>
</type>
</variable>
<variable name="PREBUFFER">
<type>
<string/>
</type>
</variable>
<variable name="TRIGM1">
<type>
<BOOL/>
</type>
</variable>
<variable name="TRIGGED">
<type>
<BOOL/>
</type>
</variable>
</localVars>
</interface>
<body>
<ST>
<xhtml:p><![CDATA[{extern void __PythonEvalFB(int, PYTHON_EVAL*);__PythonEvalFB(1,(PYTHON_EVAL*)(void*)data__);}]]></xhtml:p>
</ST>
</body>
</pou>
<pou name="python_gear" pouType="functionBlock">
<interface>
<inputVars>
<variable name="N">
<type>
<UINT/>
</type>
</variable>
<variable name="TRIG">
<type>
<BOOL/>
</type>
</variable>
<variable name="CODE">
<type>
<string/>
</type>
</variable>
</inputVars>
<outputVars>
<variable name="ACK">
<type>
<BOOL/>
</type>
</variable>
<variable name="RESULT">
<type>
<string/>
</type>
</variable>
</outputVars>
<localVars>
<variable name="py_eval">
<type>
<derived name="python_eval"/>
</type>
</variable>
<variable name="COUNTER">
<type>
<UINT/>
</type>
</variable>
</localVars>
</interface>
<body>
<FBD>
<block localId="1" width="125" height="110" typeName="python_eval" instanceName="py_eval">
<position x="525" y="580"/>
<inputVariables>
<variable formalParameter="TRIG">
<connectionPointIn>
<relPosition x="0" y="40"/>
<connection refLocalId="7" formalParameter="OUT">
<position x="525" y="620"/>
<position x="495" y="620"/>
<position x="495" y="575"/>
<position x="465" y="575"/>
</connection>
</connectionPointIn>
</variable>
<variable formalParameter="CODE">
<connectionPointIn>
<relPosition x="0" y="85"/>
<connection refLocalId="4">
<position x="525" y="665"/>
<position x="370" y="665"/>
</connection>
</connectionPointIn>
</variable>
</inputVariables>
<inOutVariables/>
<outputVariables>
<variable formalParameter="ACK">
<connectionPointOut>
<relPosition x="125" y="40"/>
</connectionPointOut>
</variable>
<variable formalParameter="RESULT">
<connectionPointOut>
<relPosition x="125" y="85"/>
</connectionPointOut>
</variable>
</outputVariables>
</block>
<inVariable localId="2" height="35" width="25">
<position x="435" y="270"/>
<connectionPointOut>
<relPosition x="25" y="15"/>
</connectionPointOut>
<expression>N</expression>
</inVariable>
<inVariable localId="3" height="35" width="55">
<position x="275" y="585"/>
<connectionPointOut>
<relPosition x="55" y="15"/>
</connectionPointOut>
<expression>TRIG</expression>
</inVariable>
<inVariable localId="4" height="35" width="55">
<position x="315" y="650"/>
<connectionPointOut>
<relPosition x="55" y="15"/>
</connectionPointOut>
<expression>CODE</expression>
</inVariable>
<outVariable localId="5" height="35" width="45">
<position x="740" y="605"/>
<connectionPointIn>
<relPosition x="0" y="15"/>
<connection refLocalId="1" formalParameter="ACK">
<position x="740" y="620"/>
<position x="650" y="620"/>
</connection>
</connectionPointIn>
<expression>ACK</expression>
</outVariable>
<outVariable localId="6" height="35" width="75">
<position x="740" y="650"/>
<connectionPointIn>
<relPosition x="0" y="15"/>
<connection refLocalId="1" formalParameter="RESULT">
<position x="740" y="665"/>
<position x="650" y="665"/>
</connection>
</connectionPointIn>
<expression>RESULT</expression>
</outVariable>
<block localId="7" width="80" height="65" typeName="AND">
<position x="385" y="545"/>
<inputVariables>
<variable formalParameter="IN1">
<connectionPointIn>
<relPosition x="0" y="30"/>
<connection refLocalId="13" formalParameter="OUT">
<position x="385" y="575"/>
<position x="335" y="575"/>
<position x="335" y="455"/>
<position x="625" y="455"/>
<position x="625" y="285"/>
<position x="615" y="285"/>
</connection>
</connectionPointIn>
</variable>
<variable formalParameter="IN2">
<connectionPointIn>
<relPosition x="0" y="55"/>
<connection refLocalId="3">
<position x="385" y="600"/>
<position x="330" y="600"/>
</connection>
</connectionPointIn>
</variable>
</inputVariables>
<inOutVariables/>
<outputVariables>
<variable formalParameter="OUT">
<connectionPointOut>
<relPosition x="80" y="30"/>
</connectionPointOut>
</variable>
</outputVariables>
</block>
<inVariable localId="9" height="35" width="85">
<position x="240" y="330"/>
<connectionPointOut>
<relPosition x="85" y="15"/>
</connectionPointOut>
<expression>COUNTER</expression>
</inVariable>
<block localId="10" width="80" height="65" typeName="ADD">
<position x="380" y="330"/>
<inputVariables>
<variable formalParameter="IN1">
<connectionPointIn>
<relPosition x="0" y="30"/>
<connection refLocalId="9">
<position x="380" y="360"/>
<position x="352" y="360"/>
<position x="352" y="345"/>
<position x="325" y="345"/>
</connection>
</connectionPointIn>
</variable>
<variable formalParameter="IN2">
<connectionPointIn>
<relPosition x="0" y="55"/>
<connection refLocalId="11">
<position x="380" y="385"/>
<position x="325" y="385"/>
</connection>
</connectionPointIn>
</variable>
</inputVariables>
<inOutVariables/>
<outputVariables>
<variable formalParameter="OUT">
<connectionPointOut>
<relPosition x="80" y="30"/>
</connectionPointOut>
</variable>
</outputVariables>
</block>
<inVariable localId="11" height="35" width="85" executionOrderId="0" negated="false">
<position x="240" y="370"/>
<connectionPointOut>
<relPosition x="85" y="17"/>
</connectionPointOut>
<expression>1</expression>
</inVariable>
<block localId="13" width="80" height="65" typeName="EQ">
<position x="535" y="255"/>
<inputVariables>
<variable formalParameter="IN1">
<connectionPointIn>
<relPosition x="0" y="30"/>
<connection refLocalId="2">
<position x="535" y="285"/>
<position x="460" y="285"/>
</connection>
</connectionPointIn>
</variable>
<variable formalParameter="IN2">
<connectionPointIn>
<relPosition x="0" y="55"/>
<connection refLocalId="10" formalParameter="OUT">
<position x="535" y="310"/>
<position x="497" y="310"/>
<position x="497" y="360"/>
<position x="460" y="360"/>
</connection>
</connectionPointIn>
</variable>
</inputVariables>
<inOutVariables/>
<outputVariables>
<variable formalParameter="OUT">
<connectionPointOut>
<relPosition x="80" y="30"/>
</connectionPointOut>
</variable>
</outputVariables>
</block>
<block localId="15" width="80" height="135" typeName="SEL">
<position x="785" y="245"/>
<inputVariables>
<variable formalParameter="G">
<connectionPointIn>
<relPosition x="0" y="40"/>
<connection refLocalId="13" formalParameter="OUT">
<position x="785" y="285"/>
<position x="615" y="285"/>
</connection>
</connectionPointIn>
</variable>
<variable formalParameter="IN0">
<connectionPointIn>
<relPosition x="0" y="75"/>
<connection refLocalId="10" formalParameter="OUT">
<position x="785" y="320"/>
<position x="650" y="320"/>
<position x="650" y="360"/>
<position x="460" y="360"/>
</connection>
</connectionPointIn>
</variable>
<variable formalParameter="IN1">
<connectionPointIn>
<relPosition x="0" y="115"/>
<connection refLocalId="16">
<position x="785" y="360"/>
<position x="760" y="360"/>
</connection>
</connectionPointIn>
</variable>
</inputVariables>
<inOutVariables/>
<outputVariables>
<variable formalParameter="OUT">
<connectionPointOut>
<relPosition x="80" y="40"/>
</connectionPointOut>
</variable>
</outputVariables>
</block>
<inVariable localId="16" height="35" width="85" executionOrderId="0" negated="false">
<position x="675" y="345"/>
<connectionPointOut>
<relPosition x="85" y="17"/>
</connectionPointOut>
<expression>0</expression>
</inVariable>
<outVariable localId="17" height="35" width="85">
<position x="905" y="270"/>
<connectionPointIn>
<relPosition x="0" y="15"/>
<connection refLocalId="15" formalParameter="OUT">
<position x="905" y="285"/>
<position x="865" y="285"/>
</connection>
</connectionPointIn>
<expression>COUNTER</expression>
</outVariable>
</FBD>
</body>
</pou>
</pous>
</types>
<instances>
<configurations>
<configuration name="configuration0">
<globalVars>
<variable name="pyext_csv_update">
<type>
<BOOL/>
</type>
<initialValue>
<simpleValue value="TRUE"/>
</initialValue>
</variable>
</globalVars>
</configuration>
</configurations>
</instances>
</project>