tests/projects/wxHMI/plc.xml
changeset 3416 53c66c4aefa3
parent 2346 ac16bad593cf
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/projects/wxHMI/plc.xml	Tue Jan 25 17:05:14 2022 +0100
@@ -0,0 +1,1639 @@
+<?xml version='1.0' encoding='utf-8'?>
+<project xmlns="http://www.plcopen.org/xml/tc6_0201" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xhtml="http://www.w3.org/1999/xhtml" xsi:schemaLocation="http://www.plcopen.org/xml/tc6_0201">
+  <fileHeader companyName="Unknown" productName="Beremiz" productVersion="1" creationDateTime="2012-09-12T23:30:19"/>
+  <contentHeader name="extended wxHMI example" modificationDateTime="2018-09-26T14:07:02">
+    <coordinateInfo>
+      <pageSize x="1050" y="1485"/>
+      <fbd>
+        <scaling x="5" y="5"/>
+      </fbd>
+      <ld>
+        <scaling x="0" y="0"/>
+      </ld>
+      <sfc>
+        <scaling x="0" y="0"/>
+      </sfc>
+    </coordinateInfo>
+  </contentHeader>
+  <types>
+    <dataTypes/>
+    <pous>
+      <pou name="main" pouType="program">
+        <interface>
+          <externalVars>
+            <variable name="Power_ON">
+              <type>
+                <BOOL/>
+              </type>
+            </variable>
+            <variable name="Power_OFF">
+              <type>
+                <BOOL/>
+              </type>
+            </variable>
+          </externalVars>
+          <localVars>
+            <variable name="power">
+              <type>
+                <BOOL/>
+              </type>
+            </variable>
+          </localVars>
+          <externalVars>
+            <variable name="DrawTest">
+              <type>
+                <BOOL/>
+              </type>
+            </variable>
+            <variable name="DrawTestBtn">
+              <type>
+                <BOOL/>
+              </type>
+            </variable>
+            <variable name="DrawLogo">
+              <type>
+                <BOOL/>
+              </type>
+            </variable>
+            <variable name="XaxisPos">
+              <type>
+                <INT/>
+              </type>
+            </variable>
+            <variable name="YaxisPos">
+              <type>
+                <INT/>
+              </type>
+            </variable>
+            <variable name="ZaxisPos">
+              <type>
+                <INT/>
+              </type>
+            </variable>
+            <variable name="TaxisPos">
+              <type>
+                <INT/>
+              </type>
+            </variable>
+          </externalVars>
+          <localVars>
+            <variable name="PowerCtrl">
+              <type>
+                <derived name="RS"/>
+              </type>
+            </variable>
+            <variable name="Xaxis">
+              <type>
+                <derived name="axis"/>
+              </type>
+            </variable>
+          </localVars>
+          <externalVars>
+            <variable name="XAxisMinus">
+              <type>
+                <BOOL/>
+              </type>
+            </variable>
+            <variable name="XAxisPlus">
+              <type>
+                <BOOL/>
+              </type>
+            </variable>
+            <variable name="YAxisPlus">
+              <type>
+                <BOOL/>
+              </type>
+            </variable>
+            <variable name="YAxisMinus">
+              <type>
+                <BOOL/>
+              </type>
+            </variable>
+            <variable name="ZAxisPlus">
+              <type>
+                <BOOL/>
+              </type>
+            </variable>
+            <variable name="ZAxisMinus">
+              <type>
+                <BOOL/>
+              </type>
+            </variable>
+            <variable name="TAxisPlus">
+              <type>
+                <BOOL/>
+              </type>
+            </variable>
+            <variable name="TAxisMinus">
+              <type>
+                <BOOL/>
+              </type>
+            </variable>
+          </externalVars>
+          <localVars>
+            <variable name="Yaxis">
+              <type>
+                <derived name="axis"/>
+              </type>
+            </variable>
+            <variable name="Taxis">
+              <type>
+                <derived name="axis"/>
+              </type>
+            </variable>
+            <variable name="Zaxis">
+              <type>
+                <derived name="axis"/>
+              </type>
+            </variable>
+            <variable name="DrawTestDo">
+              <type>
+                <derived name="RS"/>
+              </type>
+            </variable>
+            <variable name="DrawLogoDo">
+              <type>
+                <derived name="RS"/>
+              </type>
+            </variable>
+          </localVars>
+        </interface>
+        <body>
+          <FBD>
+            <comment localId="296" height="330" width="655">
+              <position x="390" y="10"/>
+              <content>
+                <xhtml:p><![CDATA[Example shows 
+- how to use wxGlade extension to create user interface and dynamically extend it using Python, 
+- how to respond to user actions in PLC program and 
+- how to use several PLC tasks to handle process of different speeds.
+
+Program has two tasks:
+1. Slow task that communicates with user interface created in wxGlade and updates axes state.
+2. Main task that drives virtual axes.
+
+When power is on, user can control axes.
+"Draw Logo" buttons starts X, Y, Z axes. "Draw Test" buttons  starts Z and T axes. 
+User can adjust position of axes using manual keys.
+
+
+Happy hacking!]]></xhtml:p>
+              </content>
+            </comment>
+            <inVariable localId="288" executionOrderId="0" height="30" width="85" negated="false">
+              <position x="35" y="190"/>
+              <connectionPointOut>
+                <relPosition x="85" y="15"/>
+              </connectionPointOut>
+              <expression>Power_OFF</expression>
+            </inVariable>
+            <inVariable localId="286" executionOrderId="0" height="30" width="85" negated="false">
+              <position x="35" y="155"/>
+              <connectionPointOut>
+                <relPosition x="85" y="15"/>
+              </connectionPointOut>
+              <expression>Power_ON</expression>
+            </inVariable>
+            <block localId="287" typeName="RS" instanceName="PowerCtrl" executionOrderId="0" height="95" width="55">
+              <position x="190" y="130"/>
+              <inputVariables>
+                <variable formalParameter="S">
+                  <connectionPointIn>
+                    <relPosition x="0" y="40"/>
+                    <connection refLocalId="286">
+                      <position x="190" y="170"/>
+                      <position x="120" y="170"/>
+                    </connection>
+                  </connectionPointIn>
+                </variable>
+                <variable formalParameter="R1">
+                  <connectionPointIn>
+                    <relPosition x="0" y="75"/>
+                    <connection refLocalId="288">
+                      <position x="190" y="205"/>
+                      <position x="120" y="205"/>
+                    </connection>
+                  </connectionPointIn>
+                </variable>
+              </inputVariables>
+              <inOutVariables/>
+              <outputVariables>
+                <variable formalParameter="Q1">
+                  <connectionPointOut>
+                    <relPosition x="55" y="40"/>
+                  </connectionPointOut>
+                </variable>
+              </outputVariables>
+            </block>
+            <outVariable localId="289" executionOrderId="0" height="30" width="50" negated="false">
+              <position x="290" y="155"/>
+              <connectionPointIn>
+                <relPosition x="0" y="15"/>
+                <connection refLocalId="287" formalParameter="Q1">
+                  <position x="290" y="170"/>
+                  <position x="241" y="170"/>
+                </connection>
+              </connectionPointIn>
+              <expression>power</expression>
+            </outVariable>
+            <block localId="297" typeName="axis" instanceName="Xaxis" executionOrderId="0" height="160" width="100">
+              <position x="300" y="770"/>
+              <inputVariables>
+                <variable formalParameter="Power">
+                  <connectionPointIn>
+                    <relPosition x="0" y="45"/>
+                    <connection refLocalId="1">
+                      <position x="300" y="815"/>
+                      <position x="265" y="815"/>
+                      <position x="265" y="755"/>
+                      <position x="255" y="755"/>
+                    </connection>
+                  </connectionPointIn>
+                </variable>
+                <variable formalParameter="Up">
+                  <connectionPointIn>
+                    <relPosition x="0" y="90"/>
+                    <connection refLocalId="301" formalParameter="OUT">
+                      <position x="300" y="860"/>
+                      <position x="277" y="860"/>
+                      <position x="277" y="835"/>
+                      <position x="255" y="835"/>
+                    </connection>
+                  </connectionPointIn>
+                </variable>
+                <variable formalParameter="Down">
+                  <connectionPointIn>
+                    <relPosition x="0" y="135"/>
+                    <connection refLocalId="299">
+                      <position x="300" y="905"/>
+                      <position x="110" y="905"/>
+                    </connection>
+                  </connectionPointIn>
+                </variable>
+              </inputVariables>
+              <inOutVariables/>
+              <outputVariables>
+                <variable formalParameter="Out">
+                  <connectionPointOut>
+                    <relPosition x="100" y="45"/>
+                  </connectionPointOut>
+                </variable>
+              </outputVariables>
+            </block>
+            <outVariable localId="298" executionOrderId="0" height="35" width="74" negated="false">
+              <position x="435" y="800"/>
+              <connectionPointIn>
+                <relPosition x="0" y="15"/>
+                <connection refLocalId="297" formalParameter="Out">
+                  <position x="435" y="815"/>
+                  <position x="375" y="815"/>
+                  <position x="375" y="815"/>
+                  <position x="416" y="815"/>
+                </connection>
+              </connectionPointIn>
+              <expression>XaxisPos</expression>
+            </outVariable>
+            <inVariable localId="1" executionOrderId="0" height="30" width="50" negated="false">
+              <position x="205" y="740"/>
+              <connectionPointOut>
+                <relPosition x="50" y="15"/>
+              </connectionPointOut>
+              <expression>power</expression>
+            </inVariable>
+            <inVariable localId="299" executionOrderId="0" height="35" width="90" negated="false">
+              <position x="25" y="890"/>
+              <connectionPointOut>
+                <relPosition x="90" y="15"/>
+              </connectionPointOut>
+              <expression>XAxisMinus</expression>
+            </inVariable>
+            <inVariable localId="300" executionOrderId="0" height="35" width="85" negated="false">
+              <position x="25" y="845"/>
+              <connectionPointOut>
+                <relPosition x="85" y="15"/>
+              </connectionPointOut>
+              <expression>XAxisPlus</expression>
+            </inVariable>
+            <block localId="301" typeName="OR" executionOrderId="0" height="65" width="70">
+              <position x="185" y="805"/>
+              <inputVariables>
+                <variable formalParameter="IN1">
+                  <connectionPointIn>
+                    <relPosition x="0" y="30"/>
+                    <connection refLocalId="2">
+                      <position x="185" y="835"/>
+                      <position x="162" y="835"/>
+                      <position x="162" y="805"/>
+                      <position x="140" y="805"/>
+                    </connection>
+                  </connectionPointIn>
+                </variable>
+                <variable formalParameter="IN2">
+                  <connectionPointIn>
+                    <relPosition x="0" y="55"/>
+                    <connection refLocalId="300">
+                      <position x="185" y="860"/>
+                      <position x="110" y="860"/>
+                    </connection>
+                  </connectionPointIn>
+                </variable>
+              </inputVariables>
+              <inOutVariables/>
+              <outputVariables>
+                <variable formalParameter="OUT">
+                  <connectionPointOut>
+                    <relPosition x="70" y="30"/>
+                  </connectionPointOut>
+                </variable>
+              </outputVariables>
+            </block>
+            <inVariable localId="2" executionOrderId="0" height="35" width="115" negated="false">
+              <position x="25" y="790"/>
+              <connectionPointOut>
+                <relPosition x="115" y="15"/>
+              </connectionPointOut>
+              <expression>DrawTestDo.Q1</expression>
+            </inVariable>
+            <inVariable localId="3" executionOrderId="0" height="35" width="115" negated="false">
+              <position x="560" y="785"/>
+              <connectionPointOut>
+                <relPosition x="115" y="15"/>
+              </connectionPointOut>
+              <expression>DrawTestDo.Q1</expression>
+            </inVariable>
+            <inVariable localId="4" executionOrderId="0" height="30" width="50" negated="false">
+              <position x="735" y="735"/>
+              <connectionPointOut>
+                <relPosition x="50" y="15"/>
+              </connectionPointOut>
+              <expression>power</expression>
+            </inVariable>
+            <block localId="5" typeName="axis" instanceName="Yaxis" executionOrderId="0" height="160" width="100">
+              <position x="830" y="765"/>
+              <inputVariables>
+                <variable formalParameter="Power">
+                  <connectionPointIn>
+                    <relPosition x="0" y="45"/>
+                    <connection refLocalId="4">
+                      <position x="830" y="810"/>
+                      <position x="815" y="810"/>
+                      <position x="815" y="750"/>
+                      <position x="785" y="750"/>
+                    </connection>
+                  </connectionPointIn>
+                </variable>
+                <variable formalParameter="Up">
+                  <connectionPointIn>
+                    <relPosition x="0" y="90"/>
+                    <connection refLocalId="9" formalParameter="OUT">
+                      <position x="830" y="855"/>
+                      <position x="807" y="855"/>
+                      <position x="807" y="830"/>
+                      <position x="785" y="830"/>
+                    </connection>
+                  </connectionPointIn>
+                </variable>
+                <variable formalParameter="Down">
+                  <connectionPointIn>
+                    <relPosition x="0" y="135"/>
+                    <connection refLocalId="7">
+                      <position x="830" y="900"/>
+                      <position x="645" y="900"/>
+                    </connection>
+                  </connectionPointIn>
+                </variable>
+              </inputVariables>
+              <inOutVariables/>
+              <outputVariables>
+                <variable formalParameter="Out">
+                  <connectionPointOut>
+                    <relPosition x="100" y="45"/>
+                  </connectionPointOut>
+                </variable>
+              </outputVariables>
+            </block>
+            <outVariable localId="6" executionOrderId="0" height="35" width="74" negated="false">
+              <position x="955" y="795"/>
+              <connectionPointIn>
+                <relPosition x="0" y="15"/>
+                <connection refLocalId="5" formalParameter="Out">
+                  <position x="955" y="810"/>
+                  <position x="930" y="810"/>
+                </connection>
+              </connectionPointIn>
+              <expression>YaxisPos</expression>
+            </outVariable>
+            <inVariable localId="7" executionOrderId="0" height="35" width="90" negated="false">
+              <position x="560" y="885"/>
+              <connectionPointOut>
+                <relPosition x="90" y="15"/>
+              </connectionPointOut>
+              <expression>YAxisMinus</expression>
+            </inVariable>
+            <inVariable localId="8" executionOrderId="0" height="35" width="85" negated="false">
+              <position x="560" y="840"/>
+              <connectionPointOut>
+                <relPosition x="85" y="15"/>
+              </connectionPointOut>
+              <expression>YAxisPlus</expression>
+            </inVariable>
+            <block localId="9" typeName="OR" executionOrderId="0" height="65" width="70">
+              <position x="715" y="800"/>
+              <inputVariables>
+                <variable formalParameter="IN1">
+                  <connectionPointIn>
+                    <relPosition x="0" y="30"/>
+                    <connection refLocalId="3">
+                      <position x="715" y="830"/>
+                      <position x="657" y="830"/>
+                      <position x="657" y="800"/>
+                      <position x="645" y="800"/>
+                    </connection>
+                  </connectionPointIn>
+                </variable>
+                <variable formalParameter="IN2">
+                  <connectionPointIn>
+                    <relPosition x="0" y="55"/>
+                    <connection refLocalId="8">
+                      <position x="715" y="855"/>
+                      <position x="645" y="855"/>
+                    </connection>
+                  </connectionPointIn>
+                </variable>
+              </inputVariables>
+              <inOutVariables/>
+              <outputVariables>
+                <variable formalParameter="OUT">
+                  <connectionPointOut>
+                    <relPosition x="70" y="30"/>
+                  </connectionPointOut>
+                </variable>
+              </outputVariables>
+            </block>
+            <inVariable localId="10" executionOrderId="0" height="35" width="115" negated="false">
+              <position x="25" y="1045"/>
+              <connectionPointOut>
+                <relPosition x="115" y="15"/>
+              </connectionPointOut>
+              <expression>DrawTestDo.Q1</expression>
+            </inVariable>
+            <inVariable localId="11" executionOrderId="0" height="35" width="115" negated="false">
+              <position x="560" y="1025"/>
+              <connectionPointOut>
+                <relPosition x="115" y="15"/>
+              </connectionPointOut>
+              <expression>DrawLogoDo.Q1</expression>
+            </inVariable>
+            <inVariable localId="12" executionOrderId="0" height="30" width="50" negated="false">
+              <position x="740" y="975"/>
+              <connectionPointOut>
+                <relPosition x="50" y="15"/>
+              </connectionPointOut>
+              <expression>power</expression>
+            </inVariable>
+            <block localId="13" typeName="axis" instanceName="Taxis" executionOrderId="0" height="160" width="100">
+              <position x="835" y="1005"/>
+              <inputVariables>
+                <variable formalParameter="Power">
+                  <connectionPointIn>
+                    <relPosition x="0" y="45"/>
+                    <connection refLocalId="12">
+                      <position x="835" y="1050"/>
+                      <position x="820" y="1050"/>
+                      <position x="820" y="990"/>
+                      <position x="790" y="990"/>
+                    </connection>
+                  </connectionPointIn>
+                </variable>
+                <variable formalParameter="Up">
+                  <connectionPointIn>
+                    <relPosition x="0" y="90"/>
+                    <connection refLocalId="22" formalParameter="OUT">
+                      <position x="835" y="1095"/>
+                      <position x="812" y="1095"/>
+                      <position x="812" y="1070"/>
+                      <position x="790" y="1070"/>
+                    </connection>
+                  </connectionPointIn>
+                </variable>
+                <variable formalParameter="Down">
+                  <connectionPointIn>
+                    <relPosition x="0" y="135"/>
+                    <connection refLocalId="23">
+                      <position x="835" y="1140"/>
+                      <position x="645" y="1140"/>
+                    </connection>
+                  </connectionPointIn>
+                </variable>
+              </inputVariables>
+              <inOutVariables/>
+              <outputVariables>
+                <variable formalParameter="Out">
+                  <connectionPointOut>
+                    <relPosition x="100" y="45"/>
+                  </connectionPointOut>
+                </variable>
+              </outputVariables>
+            </block>
+            <outVariable localId="14" executionOrderId="0" height="35" width="74" negated="false">
+              <position x="960" y="1035"/>
+              <connectionPointIn>
+                <relPosition x="0" y="15"/>
+                <connection refLocalId="13" formalParameter="Out">
+                  <position x="960" y="1050"/>
+                  <position x="935" y="1050"/>
+                </connection>
+              </connectionPointIn>
+              <expression>TaxisPos</expression>
+            </outVariable>
+            <inVariable localId="15" executionOrderId="0" height="30" width="50" negated="false">
+              <position x="200" y="980"/>
+              <connectionPointOut>
+                <relPosition x="50" y="15"/>
+              </connectionPointOut>
+              <expression>power</expression>
+            </inVariable>
+            <inVariable localId="16" executionOrderId="0" height="35" width="85" negated="false">
+              <position x="560" y="1080"/>
+              <connectionPointOut>
+                <relPosition x="85" y="15"/>
+              </connectionPointOut>
+              <expression>TAxisPlus</expression>
+            </inVariable>
+            <block localId="17" typeName="axis" instanceName="Zaxis" executionOrderId="0" height="160" width="100">
+              <position x="300" y="1010"/>
+              <inputVariables>
+                <variable formalParameter="Power">
+                  <connectionPointIn>
+                    <relPosition x="0" y="45"/>
+                    <connection refLocalId="15">
+                      <position x="300" y="1055"/>
+                      <position x="285" y="1055"/>
+                      <position x="285" y="995"/>
+                      <position x="250" y="995"/>
+                    </connection>
+                  </connectionPointIn>
+                </variable>
+                <variable formalParameter="Up">
+                  <connectionPointIn>
+                    <relPosition x="0" y="90"/>
+                    <connection refLocalId="21" formalParameter="OUT">
+                      <position x="300" y="1100"/>
+                      <position x="280" y="1100"/>
+                      <position x="280" y="1055"/>
+                      <position x="270" y="1055"/>
+                    </connection>
+                  </connectionPointIn>
+                </variable>
+                <variable formalParameter="Down">
+                  <connectionPointIn>
+                    <relPosition x="0" y="135"/>
+                    <connection refLocalId="19">
+                      <position x="300" y="1145"/>
+                      <position x="110" y="1145"/>
+                    </connection>
+                  </connectionPointIn>
+                </variable>
+              </inputVariables>
+              <inOutVariables/>
+              <outputVariables>
+                <variable formalParameter="Out">
+                  <connectionPointOut>
+                    <relPosition x="100" y="45"/>
+                  </connectionPointOut>
+                </variable>
+              </outputVariables>
+            </block>
+            <outVariable localId="18" executionOrderId="0" height="35" width="74" negated="false">
+              <position x="435" y="1040"/>
+              <connectionPointIn>
+                <relPosition x="0" y="15"/>
+                <connection refLocalId="17" formalParameter="Out">
+                  <position x="435" y="1055"/>
+                  <position x="400" y="1055"/>
+                </connection>
+              </connectionPointIn>
+              <expression>ZaxisPos</expression>
+            </outVariable>
+            <inVariable localId="19" executionOrderId="0" height="35" width="90" negated="false">
+              <position x="25" y="1130"/>
+              <connectionPointOut>
+                <relPosition x="90" y="15"/>
+              </connectionPointOut>
+              <expression>ZAxisMinus</expression>
+            </inVariable>
+            <inVariable localId="20" executionOrderId="0" height="35" width="85" negated="false">
+              <position x="25" y="1090"/>
+              <connectionPointOut>
+                <relPosition x="85" y="15"/>
+              </connectionPointOut>
+              <expression>ZAxisPlus</expression>
+            </inVariable>
+            <block localId="21" typeName="OR" executionOrderId="0" height="100" width="70">
+              <position x="200" y="1020"/>
+              <inputVariables>
+                <variable formalParameter="IN1">
+                  <connectionPointIn>
+                    <relPosition x="0" y="35"/>
+                    <connection refLocalId="24">
+                      <position x="200" y="1055"/>
+                      <position x="170" y="1055"/>
+                      <position x="170" y="1015"/>
+                      <position x="140" y="1015"/>
+                    </connection>
+                  </connectionPointIn>
+                </variable>
+                <variable formalParameter="IN2">
+                  <connectionPointIn>
+                    <relPosition x="0" y="60"/>
+                    <connection refLocalId="10">
+                      <position x="200" y="1080"/>
+                      <position x="150" y="1080"/>
+                      <position x="150" y="1060"/>
+                      <position x="140" y="1060"/>
+                    </connection>
+                  </connectionPointIn>
+                </variable>
+                <variable formalParameter="IN3">
+                  <connectionPointIn>
+                    <relPosition x="0" y="85"/>
+                    <connection refLocalId="20">
+                      <position x="200" y="1105"/>
+                      <position x="110" y="1105"/>
+                    </connection>
+                  </connectionPointIn>
+                </variable>
+              </inputVariables>
+              <inOutVariables/>
+              <outputVariables>
+                <variable formalParameter="OUT">
+                  <connectionPointOut>
+                    <relPosition x="70" y="35"/>
+                  </connectionPointOut>
+                </variable>
+              </outputVariables>
+            </block>
+            <block localId="22" typeName="OR" executionOrderId="0" height="65" width="70">
+              <position x="720" y="1040"/>
+              <inputVariables>
+                <variable formalParameter="IN1">
+                  <connectionPointIn>
+                    <relPosition x="0" y="30"/>
+                    <connection refLocalId="11">
+                      <position x="720" y="1070"/>
+                      <position x="657" y="1070"/>
+                      <position x="657" y="1040"/>
+                      <position x="645" y="1040"/>
+                    </connection>
+                  </connectionPointIn>
+                </variable>
+                <variable formalParameter="IN2">
+                  <connectionPointIn>
+                    <relPosition x="0" y="55"/>
+                    <connection refLocalId="16">
+                      <position x="720" y="1095"/>
+                      <position x="645" y="1095"/>
+                    </connection>
+                  </connectionPointIn>
+                </variable>
+              </inputVariables>
+              <inOutVariables/>
+              <outputVariables>
+                <variable formalParameter="OUT">
+                  <connectionPointOut>
+                    <relPosition x="70" y="30"/>
+                  </connectionPointOut>
+                </variable>
+              </outputVariables>
+            </block>
+            <inVariable localId="23" executionOrderId="0" height="35" width="90" negated="false">
+              <position x="560" y="1125"/>
+              <connectionPointOut>
+                <relPosition x="90" y="15"/>
+              </connectionPointOut>
+              <expression>TAxisMinus</expression>
+            </inVariable>
+            <inVariable localId="24" executionOrderId="0" height="35" width="115" negated="false">
+              <position x="25" y="1000"/>
+              <connectionPointOut>
+                <relPosition x="115" y="15"/>
+              </connectionPointOut>
+              <expression>DrawLogoDo.Q1</expression>
+            </inVariable>
+            <inVariable localId="25" executionOrderId="0" height="30" width="85" negated="false">
+              <position x="40" y="450"/>
+              <connectionPointOut>
+                <relPosition x="85" y="15"/>
+              </connectionPointOut>
+              <expression>DrawTest</expression>
+            </inVariable>
+            <block localId="26" typeName="RS" instanceName="DrawTestDo" executionOrderId="0" height="115" width="55">
+              <position x="280" y="445"/>
+              <inputVariables>
+                <variable formalParameter="S">
+                  <connectionPointIn>
+                    <relPosition x="0" y="45"/>
+                    <connection refLocalId="28" formalParameter="OUT">
+                      <position x="280" y="490"/>
+                      <position x="255" y="490"/>
+                      <position x="255" y="465"/>
+                      <position x="230" y="465"/>
+                    </connection>
+                  </connectionPointIn>
+                </variable>
+                <variable formalParameter="R1">
+                  <connectionPointIn>
+                    <relPosition x="0" y="90"/>
+                    <connection refLocalId="33" formalParameter="OUT">
+                      <position x="280" y="535"/>
+                      <position x="255" y="535"/>
+                      <position x="255" y="560"/>
+                      <position x="230" y="560"/>
+                    </connection>
+                  </connectionPointIn>
+                </variable>
+              </inputVariables>
+              <inOutVariables/>
+              <outputVariables>
+                <variable formalParameter="Q1">
+                  <connectionPointOut>
+                    <relPosition x="55" y="45"/>
+                  </connectionPointOut>
+                </variable>
+              </outputVariables>
+            </block>
+            <inVariable localId="27" executionOrderId="0" height="30" width="85" negated="false">
+              <position x="40" y="545"/>
+              <connectionPointOut>
+                <relPosition x="85" y="15"/>
+              </connectionPointOut>
+              <expression>Power_OFF</expression>
+            </inVariable>
+            <block localId="28" typeName="OR" executionOrderId="0" height="85" width="70">
+              <position x="160" y="430"/>
+              <inputVariables>
+                <variable formalParameter="IN1">
+                  <connectionPointIn>
+                    <relPosition x="0" y="35"/>
+                    <connection refLocalId="25">
+                      <position x="160" y="465"/>
+                      <position x="125" y="465"/>
+                    </connection>
+                  </connectionPointIn>
+                </variable>
+                <variable formalParameter="IN2">
+                  <connectionPointIn>
+                    <relPosition x="0" y="70"/>
+                    <connection refLocalId="29">
+                      <position x="160" y="500"/>
+                      <position x="135" y="500"/>
+                    </connection>
+                  </connectionPointIn>
+                </variable>
+              </inputVariables>
+              <inOutVariables/>
+              <outputVariables>
+                <variable formalParameter="OUT">
+                  <connectionPointOut>
+                    <relPosition x="70" y="35"/>
+                  </connectionPointOut>
+                </variable>
+              </outputVariables>
+            </block>
+            <inVariable localId="29" executionOrderId="0" height="30" width="98" negated="false">
+              <position x="40" y="485"/>
+              <connectionPointOut>
+                <relPosition x="98" y="15"/>
+              </connectionPointOut>
+              <expression>DrawTestBtn</expression>
+            </inVariable>
+            <block localId="33" typeName="OR" executionOrderId="0" height="85" width="70">
+              <position x="160" y="525"/>
+              <inputVariables>
+                <variable formalParameter="IN1">
+                  <connectionPointIn>
+                    <relPosition x="0" y="35"/>
+                    <connection refLocalId="27">
+                      <position x="160" y="560"/>
+                      <position x="125" y="560"/>
+                    </connection>
+                  </connectionPointIn>
+                </variable>
+                <variable formalParameter="IN2">
+                  <connectionPointIn>
+                    <relPosition x="0" y="70"/>
+                    <connection refLocalId="35">
+                      <position x="160" y="595"/>
+                      <position x="125" y="595"/>
+                    </connection>
+                  </connectionPointIn>
+                </variable>
+              </inputVariables>
+              <inOutVariables/>
+              <outputVariables>
+                <variable formalParameter="OUT">
+                  <connectionPointOut>
+                    <relPosition x="70" y="35"/>
+                  </connectionPointOut>
+                </variable>
+              </outputVariables>
+            </block>
+            <inVariable localId="35" executionOrderId="0" height="30" width="85" negated="false">
+              <position x="40" y="580"/>
+              <connectionPointOut>
+                <relPosition x="85" y="15"/>
+              </connectionPointOut>
+              <expression>DrawLogo</expression>
+            </inVariable>
+            <comment localId="36" height="45" width="215">
+              <position x="20" y="670"/>
+              <content>
+                <xhtml:p><![CDATA[Control virtual axes.]]></xhtml:p>
+              </content>
+            </comment>
+            <inVariable localId="30" executionOrderId="0" height="30" width="85" negated="false">
+              <position x="510" y="475"/>
+              <connectionPointOut>
+                <relPosition x="85" y="15"/>
+              </connectionPointOut>
+              <expression>DrawLogo</expression>
+            </inVariable>
+            <block localId="31" typeName="RS" instanceName="DrawLogoDo" executionOrderId="0" height="115" width="55">
+              <position x="740" y="445"/>
+              <inputVariables>
+                <variable formalParameter="S">
+                  <connectionPointIn>
+                    <relPosition x="0" y="45"/>
+                    <connection refLocalId="30">
+                      <position x="740" y="490"/>
+                      <position x="595" y="490"/>
+                    </connection>
+                  </connectionPointIn>
+                </variable>
+                <variable formalParameter="R1">
+                  <connectionPointIn>
+                    <relPosition x="0" y="90"/>
+                    <connection refLocalId="39" formalParameter="OUT">
+                      <position x="740" y="535"/>
+                      <position x="715" y="535"/>
+                      <position x="715" y="560"/>
+                      <position x="690" y="560"/>
+                    </connection>
+                  </connectionPointIn>
+                </variable>
+              </inputVariables>
+              <inOutVariables/>
+              <outputVariables>
+                <variable formalParameter="Q1">
+                  <connectionPointOut>
+                    <relPosition x="55" y="45"/>
+                  </connectionPointOut>
+                </variable>
+              </outputVariables>
+            </block>
+            <inVariable localId="32" executionOrderId="0" height="30" width="85" negated="false">
+              <position x="500" y="545"/>
+              <connectionPointOut>
+                <relPosition x="85" y="15"/>
+              </connectionPointOut>
+              <expression>Power_OFF</expression>
+            </inVariable>
+            <inVariable localId="38" executionOrderId="0" height="30" width="85" negated="false">
+              <position x="500" y="580"/>
+              <connectionPointOut>
+                <relPosition x="85" y="15"/>
+              </connectionPointOut>
+              <expression>DrawTest</expression>
+            </inVariable>
+            <block localId="39" typeName="OR" executionOrderId="0" height="85" width="70">
+              <position x="620" y="525"/>
+              <inputVariables>
+                <variable formalParameter="IN1">
+                  <connectionPointIn>
+                    <relPosition x="0" y="35"/>
+                    <connection refLocalId="32">
+                      <position x="620" y="560"/>
+                      <position x="585" y="560"/>
+                    </connection>
+                  </connectionPointIn>
+                </variable>
+                <variable formalParameter="IN2">
+                  <connectionPointIn>
+                    <relPosition x="0" y="70"/>
+                    <connection refLocalId="38">
+                      <position x="620" y="595"/>
+                      <position x="585" y="595"/>
+                    </connection>
+                  </connectionPointIn>
+                </variable>
+              </inputVariables>
+              <inOutVariables/>
+              <outputVariables>
+                <variable formalParameter="OUT">
+                  <connectionPointOut>
+                    <relPosition x="70" y="35"/>
+                  </connectionPointOut>
+                </variable>
+              </outputVariables>
+            </block>
+            <comment localId="34" height="45" width="365">
+              <position x="15" y="55"/>
+              <content>
+                <xhtml:p><![CDATA[Turn on/off power, Power on enables axes control.]]></xhtml:p>
+              </content>
+            </comment>
+            <comment localId="37" height="45" width="550">
+              <position x="35" y="360"/>
+              <content>
+                <xhtml:p><![CDATA[Only one mode can be selected at any time ("Draw Logo" or "Draw Test").]]></xhtml:p>
+              </content>
+            </comment>
+          </FBD>
+        </body>
+        <documentation>
+          <xhtml:p><![CDATA[]]></xhtml:p>
+        </documentation>
+      </pou>
+      <pou name="ReadGUIdata" pouType="program">
+        <interface>
+          <localVars>
+            <variable name="python_poll0">
+              <type>
+                <derived name="python_poll"/>
+              </type>
+            </variable>
+          </localVars>
+        </interface>
+        <body>
+          <FBD>
+            <block localId="220" typeName="python_poll" instanceName="python_poll0" executionOrderId="0" height="85" width="104">
+              <position x="338" y="130"/>
+              <inputVariables>
+                <variable formalParameter="TRIG">
+                  <connectionPointIn>
+                    <relPosition x="0" y="35"/>
+                    <connection refLocalId="221">
+                      <position x="338" y="165"/>
+                      <position x="268" y="165"/>
+                    </connection>
+                  </connectionPointIn>
+                </variable>
+                <variable formalParameter="CODE">
+                  <connectionPointIn>
+                    <relPosition x="0" y="70"/>
+                    <connection refLocalId="222">
+                      <position x="338" y="200"/>
+                      <position x="296" y="200"/>
+                    </connection>
+                  </connectionPointIn>
+                </variable>
+              </inputVariables>
+              <inOutVariables/>
+              <outputVariables>
+                <variable formalParameter="ACK">
+                  <connectionPointOut>
+                    <relPosition x="104" y="35"/>
+                  </connectionPointOut>
+                </variable>
+                <variable formalParameter="RESULT">
+                  <connectionPointOut>
+                    <relPosition x="104" y="70"/>
+                  </connectionPointOut>
+                </variable>
+              </outputVariables>
+            </block>
+            <inVariable localId="221" executionOrderId="0" height="30" width="93" negated="false">
+              <position x="175" y="150"/>
+              <connectionPointOut>
+                <relPosition x="93" y="15"/>
+              </connectionPointOut>
+              <expression>BOOL#TRUE</expression>
+            </inVariable>
+            <inVariable localId="222" executionOrderId="0" height="30" width="186" negated="false">
+              <position x="110" y="185"/>
+              <connectionPointOut>
+                <relPosition x="186" y="15"/>
+              </connectionPointOut>
+              <expression>'wxglade_hmi.UpdPos()'</expression>
+            </inVariable>
+            <comment localId="296" height="55" width="445">
+              <position x="35" y="25"/>
+              <content>
+                <xhtml:p><![CDATA[This is slow PLC task. It just updates state of axes on HMI.]]></xhtml:p>
+              </content>
+            </comment>
+          </FBD>
+        </body>
+        <documentation>
+          <xhtml:p><![CDATA[]]></xhtml:p>
+        </documentation>
+      </pou>
+      <pou name="Declarations" pouType="program">
+        <interface>
+          <localVars>
+            <variable name="InitValue">
+              <type>
+                <DINT/>
+              </type>
+              <initialValue>
+                <simpleValue value="17"/>
+              </initialValue>
+            </variable>
+            <variable name="NotInitializedVariable">
+              <type>
+                <DINT/>
+              </type>
+            </variable>
+            <variable name="counter">
+              <type>
+                <DINT/>
+              </type>
+            </variable>
+          </localVars>
+        </interface>
+        <body>
+          <FBD>
+            <inVariable localId="127" executionOrderId="0" height="30" width="82" negated="false">
+              <position x="60" y="180"/>
+              <connectionPointOut>
+                <relPosition x="82" y="15"/>
+              </connectionPointOut>
+              <expression>InitValue</expression>
+            </inVariable>
+            <outVariable localId="128" executionOrderId="0" height="30" width="235" negated="false">
+              <position x="180" y="180"/>
+              <connectionPointIn>
+                <relPosition x="0" y="15"/>
+                <connection refLocalId="127">
+                  <position x="180" y="195"/>
+                  <position x="142" y="195"/>
+                </connection>
+              </connectionPointIn>
+              <expression>NotInitializedVariable</expression>
+            </outVariable>
+            <comment localId="129" height="90" width="395">
+              <position x="65" y="40"/>
+              <content>
+                <xhtml:p><![CDATA[This program called only once at start.
+See task configuration in config.resource1.]]></xhtml:p>
+              </content>
+            </comment>
+            <block localId="131" typeName="ADD" executionOrderId="0" height="95" width="70">
+              <position x="160" y="340"/>
+              <inputVariables>
+                <variable formalParameter="IN1">
+                  <connectionPointIn>
+                    <relPosition x="0" y="40"/>
+                    <connection refLocalId="130">
+                      <position x="160" y="380"/>
+                      <position x="125" y="380"/>
+                      <position x="125" y="325"/>
+                      <position x="380" y="325"/>
+                      <position x="380" y="380"/>
+                      <position x="365" y="380"/>
+                    </connection>
+                  </connectionPointIn>
+                </variable>
+                <variable formalParameter="IN2">
+                  <connectionPointIn>
+                    <relPosition x="0" y="75"/>
+                    <connection refLocalId="1">
+                      <position x="160" y="415"/>
+                      <position x="120" y="415"/>
+                    </connection>
+                  </connectionPointIn>
+                </variable>
+              </inputVariables>
+              <inOutVariables/>
+              <outputVariables>
+                <variable formalParameter="OUT">
+                  <connectionPointOut>
+                    <relPosition x="70" y="40"/>
+                  </connectionPointOut>
+                </variable>
+              </outputVariables>
+            </block>
+            <inVariable localId="1" executionOrderId="0" height="35" width="60" negated="false">
+              <position x="60" y="400"/>
+              <connectionPointOut>
+                <relPosition x="60" y="15"/>
+              </connectionPointOut>
+              <expression>1</expression>
+            </inVariable>
+            <inOutVariable localId="130" executionOrderId="0" height="35" width="90" negatedOut="false" negatedIn="false">
+              <position x="275" y="365"/>
+              <connectionPointIn>
+                <relPosition x="0" y="15"/>
+                <connection refLocalId="131" formalParameter="OUT">
+                  <position x="275" y="380"/>
+                  <position x="230" y="380"/>
+                </connection>
+              </connectionPointIn>
+              <connectionPointOut>
+                <relPosition x="90" y="15"/>
+              </connectionPointOut>
+              <expression>counter</expression>
+            </inOutVariable>
+            <comment localId="2" height="75" width="390">
+              <position x="70" y="240"/>
+              <content>
+                <xhtml:p><![CDATA[Counts how many times the program is called.
+Check counter value in debugger.]]></xhtml:p>
+              </content>
+            </comment>
+          </FBD>
+        </body>
+        <documentation>
+          <xhtml:p><![CDATA[]]></xhtml:p>
+        </documentation>
+      </pou>
+      <pou name="clock" pouType="functionBlock">
+        <interface>
+          <localVars>
+            <variable name="TimerOn">
+              <type>
+                <derived name="TON"/>
+              </type>
+            </variable>
+          </localVars>
+          <outputVars>
+            <variable name="Out">
+              <type>
+                <BOOL/>
+              </type>
+            </variable>
+          </outputVars>
+          <inputVars>
+            <variable name="Period">
+              <type>
+                <TIME/>
+              </type>
+              <initialValue>
+                <simpleValue value="T#3s"/>
+              </initialValue>
+            </variable>
+          </inputVars>
+          <localVars>
+            <variable name="TimerOff">
+              <type>
+                <derived name="TON"/>
+              </type>
+            </variable>
+          </localVars>
+        </interface>
+        <body>
+          <FBD>
+            <block localId="14" typeName="TON" instanceName="TimerOn" executionOrderId="0" height="100" width="50">
+              <position x="260" y="70"/>
+              <inputVariables>
+                <variable formalParameter="IN">
+                  <connectionPointIn>
+                    <relPosition x="0" y="40"/>
+                    <connection refLocalId="2" formalParameter="Q">
+                      <position x="260" y="110"/>
+                      <position x="225" y="110"/>
+                      <position x="225" y="10"/>
+                      <position x="550" y="10"/>
+                      <position x="550" y="110"/>
+                      <position x="510" y="110"/>
+                    </connection>
+                  </connectionPointIn>
+                </variable>
+                <variable formalParameter="PT">
+                  <connectionPointIn>
+                    <relPosition x="0" y="80"/>
+                    <connection refLocalId="16" formalParameter="OUT">
+                      <position x="260" y="150"/>
+                      <position x="225" y="150"/>
+                      <position x="225" y="255"/>
+                      <position x="190" y="255"/>
+                    </connection>
+                  </connectionPointIn>
+                </variable>
+              </inputVariables>
+              <inOutVariables/>
+              <outputVariables>
+                <variable formalParameter="Q">
+                  <connectionPointOut>
+                    <relPosition x="50" y="40"/>
+                  </connectionPointOut>
+                </variable>
+                <variable formalParameter="ET">
+                  <connectionPointOut>
+                    <relPosition x="50" y="80"/>
+                  </connectionPointOut>
+                </variable>
+              </outputVariables>
+            </block>
+            <block localId="2" typeName="TON" instanceName="TimerOff" executionOrderId="0" height="100" width="50">
+              <position x="460" y="70"/>
+              <inputVariables>
+                <variable formalParameter="IN">
+                  <connectionPointIn>
+                    <relPosition x="0" y="40"/>
+                    <connection refLocalId="14" formalParameter="Q">
+                      <position x="460" y="110"/>
+                      <position x="310" y="110"/>
+                    </connection>
+                  </connectionPointIn>
+                </variable>
+                <variable formalParameter="PT">
+                  <connectionPointIn>
+                    <relPosition x="0" y="80"/>
+                    <connection refLocalId="16" formalParameter="OUT">
+                      <position x="460" y="150"/>
+                      <position x="350" y="150"/>
+                      <position x="350" y="255"/>
+                      <position x="190" y="255"/>
+                    </connection>
+                  </connectionPointIn>
+                </variable>
+              </inputVariables>
+              <inOutVariables/>
+              <outputVariables>
+                <variable formalParameter="Q" negated="true">
+                  <connectionPointOut>
+                    <relPosition x="50" y="40"/>
+                  </connectionPointOut>
+                </variable>
+                <variable formalParameter="ET">
+                  <connectionPointOut>
+                    <relPosition x="50" y="80"/>
+                  </connectionPointOut>
+                </variable>
+              </outputVariables>
+            </block>
+            <outVariable localId="15" executionOrderId="0" height="35" width="35" negated="false">
+              <position x="365" y="25"/>
+              <connectionPointIn>
+                <relPosition x="0" y="15"/>
+                <connection refLocalId="14" formalParameter="Q">
+                  <position x="365" y="40"/>
+                  <position x="340" y="40"/>
+                  <position x="340" y="110"/>
+                  <position x="310" y="110"/>
+                </connection>
+              </connectionPointIn>
+              <expression>Out</expression>
+            </outVariable>
+            <block localId="16" typeName="DIV" executionOrderId="0" height="95" width="70">
+              <position x="120" y="215"/>
+              <inputVariables>
+                <variable formalParameter="IN1">
+                  <connectionPointIn>
+                    <relPosition x="0" y="40"/>
+                    <connection refLocalId="1">
+                      <position x="120" y="255"/>
+                      <position x="78" y="255"/>
+                    </connection>
+                  </connectionPointIn>
+                </variable>
+                <variable formalParameter="IN2">
+                  <connectionPointIn>
+                    <relPosition x="0" y="75"/>
+                    <connection refLocalId="4">
+                      <position x="120" y="290"/>
+                      <position x="75" y="290"/>
+                    </connection>
+                  </connectionPointIn>
+                </variable>
+              </inputVariables>
+              <inOutVariables/>
+              <outputVariables>
+                <variable formalParameter="OUT">
+                  <connectionPointOut>
+                    <relPosition x="70" y="40"/>
+                  </connectionPointOut>
+                </variable>
+              </outputVariables>
+            </block>
+            <inVariable localId="1" executionOrderId="0" height="30" width="58" negated="false">
+              <position x="20" y="240"/>
+              <connectionPointOut>
+                <relPosition x="58" y="15"/>
+              </connectionPointOut>
+              <expression>Period</expression>
+            </inVariable>
+            <inVariable localId="4" executionOrderId="0" height="30" width="55" negated="false">
+              <position x="20" y="275"/>
+              <connectionPointOut>
+                <relPosition x="55" y="15"/>
+              </connectionPointOut>
+              <expression>2</expression>
+            </inVariable>
+          </FBD>
+        </body>
+      </pou>
+      <pou name="axis" pouType="functionBlock">
+        <interface>
+          <inputVars>
+            <variable name="Power">
+              <type>
+                <BOOL/>
+              </type>
+            </variable>
+            <variable name="Up">
+              <type>
+                <BOOL/>
+              </type>
+            </variable>
+            <variable name="Down">
+              <type>
+                <BOOL/>
+              </type>
+            </variable>
+          </inputVars>
+          <outputVars>
+            <variable name="Out">
+              <type>
+                <INT/>
+              </type>
+            </variable>
+          </outputVars>
+          <localVars>
+            <variable name="axis_conuter">
+              <type>
+                <derived name="CTUD"/>
+              </type>
+            </variable>
+            <variable name="clock0">
+              <type>
+                <derived name="clock"/>
+              </type>
+            </variable>
+          </localVars>
+        </interface>
+        <body>
+          <FBD>
+            <block localId="297" typeName="CTUD" instanceName="axis_conuter" executionOrderId="0" height="310" width="70">
+              <position x="645" y="30"/>
+              <inputVariables>
+                <variable formalParameter="CU" edge="rising">
+                  <connectionPointIn>
+                    <relPosition x="0" y="50"/>
+                    <connection refLocalId="303" formalParameter="OUT">
+                      <position x="645" y="80"/>
+                      <position x="580" y="80"/>
+                    </connection>
+                  </connectionPointIn>
+                </variable>
+                <variable formalParameter="CD" edge="rising">
+                  <connectionPointIn>
+                    <relPosition x="0" y="105"/>
+                    <connection refLocalId="2" formalParameter="OUT">
+                      <position x="645" y="135"/>
+                      <position x="612" y="135"/>
+                      <position x="612" y="150"/>
+                      <position x="580" y="150"/>
+                    </connection>
+                  </connectionPointIn>
+                </variable>
+                <variable formalParameter="R">
+                  <connectionPointIn>
+                    <relPosition x="0" y="165"/>
+                  </connectionPointIn>
+                </variable>
+                <variable formalParameter="LD">
+                  <connectionPointIn>
+                    <relPosition x="0" y="225"/>
+                  </connectionPointIn>
+                </variable>
+                <variable formalParameter="PV">
+                  <connectionPointIn>
+                    <relPosition x="0" y="280"/>
+                    <connection refLocalId="3">
+                      <position x="645" y="310"/>
+                      <position x="610" y="310"/>
+                    </connection>
+                  </connectionPointIn>
+                </variable>
+              </inputVariables>
+              <inOutVariables/>
+              <outputVariables>
+                <variable formalParameter="QU">
+                  <connectionPointOut>
+                    <relPosition x="70" y="50"/>
+                  </connectionPointOut>
+                </variable>
+                <variable formalParameter="QD">
+                  <connectionPointOut>
+                    <relPosition x="70" y="105"/>
+                  </connectionPointOut>
+                </variable>
+                <variable formalParameter="CV">
+                  <connectionPointOut>
+                    <relPosition x="70" y="165"/>
+                  </connectionPointOut>
+                </variable>
+                <variable formalParameter="CD_T">
+                  <connectionPointOut>
+                    <relPosition x="70" y="225"/>
+                  </connectionPointOut>
+                </variable>
+                <variable formalParameter="CU_T">
+                  <connectionPointOut>
+                    <relPosition x="70" y="280"/>
+                  </connectionPointOut>
+                </variable>
+              </outputVariables>
+            </block>
+            <outVariable localId="298" executionOrderId="0" height="35" width="35" negated="false">
+              <position x="750" y="180"/>
+              <connectionPointIn>
+                <relPosition x="0" y="15"/>
+                <connection refLocalId="297" formalParameter="CV">
+                  <position x="750" y="195"/>
+                  <position x="715" y="195"/>
+                </connection>
+              </connectionPointIn>
+              <expression>Out</expression>
+            </outVariable>
+            <block localId="299" typeName="clock" instanceName="clock0" executionOrderId="0" height="70" width="87">
+              <position x="165" y="270"/>
+              <inputVariables>
+                <variable formalParameter="Period">
+                  <connectionPointIn>
+                    <relPosition x="0" y="45"/>
+                    <connection refLocalId="1">
+                      <position x="165" y="315"/>
+                      <position x="110" y="315"/>
+                    </connection>
+                  </connectionPointIn>
+                </variable>
+              </inputVariables>
+              <inOutVariables/>
+              <outputVariables>
+                <variable formalParameter="Out">
+                  <connectionPointOut>
+                    <relPosition x="87" y="45"/>
+                  </connectionPointOut>
+                </variable>
+              </outputVariables>
+            </block>
+            <inVariable localId="300" executionOrderId="0" height="35" width="55" negated="false">
+              <position x="35" y="205"/>
+              <connectionPointOut>
+                <relPosition x="55" y="15"/>
+              </connectionPointOut>
+              <expression>Power</expression>
+            </inVariable>
+            <inVariable localId="1" executionOrderId="0" height="35" width="75" negated="false">
+              <position x="35" y="300"/>
+              <connectionPointOut>
+                <relPosition x="75" y="15"/>
+              </connectionPointOut>
+              <expression>T#100ms</expression>
+            </inVariable>
+            <inVariable localId="301" executionOrderId="0" height="35" width="55" negated="false">
+              <position x="340" y="85"/>
+              <connectionPointOut>
+                <relPosition x="55" y="15"/>
+              </connectionPointOut>
+              <expression>Up</expression>
+            </inVariable>
+            <inVariable localId="302" executionOrderId="0" height="35" width="50" negated="false">
+              <position x="340" y="155"/>
+              <connectionPointOut>
+                <relPosition x="50" y="15"/>
+              </connectionPointOut>
+              <expression>Down</expression>
+            </inVariable>
+            <block localId="303" typeName="AND" executionOrderId="0" height="60" width="110">
+              <position x="470" y="50"/>
+              <inputVariables>
+                <variable formalParameter="IN1">
+                  <connectionPointIn>
+                    <relPosition x="0" y="30"/>
+                    <connection refLocalId="4" formalParameter="OUT">
+                      <position x="470" y="80"/>
+                      <position x="432" y="80"/>
+                      <position x="432" y="275"/>
+                      <position x="395" y="275"/>
+                    </connection>
+                  </connectionPointIn>
+                </variable>
+                <variable formalParameter="IN2">
+                  <connectionPointIn>
+                    <relPosition x="0" y="50"/>
+                    <connection refLocalId="301">
+                      <position x="470" y="100"/>
+                      <position x="395" y="100"/>
+                    </connection>
+                  </connectionPointIn>
+                </variable>
+              </inputVariables>
+              <inOutVariables/>
+              <outputVariables>
+                <variable formalParameter="OUT">
+                  <connectionPointOut>
+                    <relPosition x="110" y="30"/>
+                  </connectionPointOut>
+                </variable>
+              </outputVariables>
+            </block>
+            <block localId="2" typeName="AND" executionOrderId="0" height="60" width="110">
+              <position x="470" y="120"/>
+              <inputVariables>
+                <variable formalParameter="IN1">
+                  <connectionPointIn>
+                    <relPosition x="0" y="30"/>
+                    <connection refLocalId="4" formalParameter="OUT">
+                      <position x="470" y="150"/>
+                      <position x="432" y="150"/>
+                      <position x="432" y="275"/>
+                      <position x="395" y="275"/>
+                    </connection>
+                  </connectionPointIn>
+                </variable>
+                <variable formalParameter="IN2">
+                  <connectionPointIn>
+                    <relPosition x="0" y="50"/>
+                    <connection refLocalId="302">
+                      <position x="470" y="170"/>
+                      <position x="390" y="170"/>
+                    </connection>
+                  </connectionPointIn>
+                </variable>
+              </inputVariables>
+              <inOutVariables/>
+              <outputVariables>
+                <variable formalParameter="OUT">
+                  <connectionPointOut>
+                    <relPosition x="110" y="30"/>
+                  </connectionPointOut>
+                </variable>
+              </outputVariables>
+            </block>
+            <inVariable localId="3" executionOrderId="0" height="35" width="85" negated="false">
+              <position x="525" y="295"/>
+              <connectionPointOut>
+                <relPosition x="85" y="15"/>
+              </connectionPointOut>
+              <expression>INT#32767</expression>
+            </inVariable>
+            <block localId="4" typeName="AND" executionOrderId="0" height="100" width="110">
+              <position x="285" y="235"/>
+              <inputVariables>
+                <variable formalParameter="IN1">
+                  <connectionPointIn>
+                    <relPosition x="0" y="40"/>
+                    <connection refLocalId="300">
+                      <position x="285" y="275"/>
+                      <position x="265" y="275"/>
+                      <position x="265" y="220"/>
+                      <position x="90" y="220"/>
+                    </connection>
+                  </connectionPointIn>
+                </variable>
+                <variable formalParameter="IN2">
+                  <connectionPointIn>
+                    <relPosition x="0" y="80"/>
+                    <connection refLocalId="299" formalParameter="Out">
+                      <position x="285" y="315"/>
+                      <position x="250" y="315"/>
+                    </connection>
+                  </connectionPointIn>
+                </variable>
+              </inputVariables>
+              <inOutVariables/>
+              <outputVariables>
+                <variable formalParameter="OUT">
+                  <connectionPointOut>
+                    <relPosition x="110" y="40"/>
+                  </connectionPointOut>
+                </variable>
+              </outputVariables>
+            </block>
+          </FBD>
+        </body>
+      </pou>
+    </pous>
+  </types>
+  <instances>
+    <configurations>
+      <configuration name="config">
+        <resource name="resource1">
+          <task name="InitOneShot" priority="0" single="Initialize">
+            <pouInstance name="Initializer" typeName="Declarations"/>
+          </task>
+          <task name="ControlTask" priority="1" interval="T#2ms">
+            <pouInstance name="MainInstance" typeName="main"/>
+          </task>
+          <task name="GUIupdate" priority="0" interval="T#200ms">
+            <pouInstance name="PosReader" typeName="ReadGUIdata"/>
+          </task>
+          <globalVars>
+            <variable name="Initialize">
+              <type>
+                <BOOL/>
+              </type>
+              <initialValue>
+                <simpleValue value="TRUE"/>
+              </initialValue>
+            </variable>
+          </globalVars>
+        </resource>
+      </configuration>
+    </configurations>
+  </instances>
+</project>