--- a/targets/Win32/plc_Win32_main.c Thu Jun 18 15:22:43 2015 +0200
+++ b/targets/Win32/plc_Win32_main.c Fri Jun 19 21:36:35 2015 +0200
@@ -76,8 +76,6 @@
setlocale(LC_NUMERIC, "C");
- InitializeCriticalSection(&Atomic64CS);
debug_sem = CreateSemaphore(
NULL, // default security attributes
@@ -170,7 +168,6 @@
WaitForSingleObject(PLC_thread, INFINITE);
- DeleteCriticalSection(&Atomic64CS);
CloseHandle(debug_wait_sem);
CloseHandle(python_wait_sem);
@@ -279,3 +276,17 @@
+static void __attribute__((constructor)) + InitializeCriticalSection(&Atomic64CS); +static void __attribute__((destructor)) +beremiz_dll_destroy(void) + DeleteCriticalSection(&Atomic64CS); --- a/tests/wxHMI/HMI@wxglade_hmi/baseconfnode.xml Thu Jun 18 15:22:43 2015 +0200
+++ b/tests/wxHMI/HMI@wxglade_hmi/baseconfnode.xml Fri Jun 19 21:36:35 2015 +0200
@@ -1,2 +1,2 @@
-<?xml version='1.0' encoding='utf-8'?>
-<BaseParams Name="HMI" IEC_Channel="0"/>
+<?xml version='1.0' encoding='utf-8'?> +<BaseParams Name="HMI" IEC_Channel="0"/> --- a/tests/wxHMI/HMI@wxglade_hmi/pyfile.xml Thu Jun 18 15:22:43 2015 +0200
+++ b/tests/wxHMI/HMI@wxglade_hmi/pyfile.xml Fri Jun 19 21:36:35 2015 +0200
@@ -1,135 +1,134 @@
-<?xml version='1.0' encoding='utf-8'?>
-<PyFile xmlns:xhtml="http://www.w3.org/1999/xhtml">
- <variable name="Power_ON" type="BOOL"/>
- <variable name="Power_OFF" type="BOOL"/>
- <variable name="DrawTest" type="BOOL"/>
- <variable name="DrawLogo" type="BOOL"/>
- <variable name="DrawEscher" type="BOOL"/>
- <variable name="Detect_Circle" type="BOOL"/>
- <variable name="XaxisPos" type="INT"/>
- <variable name="YaxisPos" type="INT"/>
- <variable name="ZaxisPos" type="INT"/>
- <variable name="TaxisPos" type="INT"/>
- <variable name="XaxisMinus" type="BOOL"/>
- <variable name="YaxisMinus" type="BOOL"/>
- <variable name="ZaxisMinus" type="BOOL"/>
- <variable name="TaxisMinus" type="BOOL"/>
- <variable name="XaxisPlus" type="BOOL"/>
- <variable name="YaxisPlus" type="BOOL"/>
- <variable name="ZaxisPlus" type="BOOL"/>
- <variable name="TaxisPlus" type="BOOL"/>
-AxisList = ["X","Y","Z","T"]
-PwrButtons = ['Power_ON',
-ActionButtons = ['Detect_Circle',
-class ThreeDee(wx.StaticText):
- def __init__(self, *args, **kwargs):
- self.initialized = False
- kwargs["style"] = wx.ALIGN_CENTRE_HORIZONTAL
- super(ThreeDee, self).__init__(*args, **kwargs)
- self.SetFont(wx.Font(24, wx.SWISS, wx.NORMAL, wx.BOLD))
- self.positions = [0.]*4
- def UpdatePositions(self, positions):
- self.positions = positions
- ((self.Message +'\n\n') if self.Message else '' )+
- " ".join(["%s %+.2f"%(axis,self.positions[i])
- for i,axis in enumerate(AxisList)]))
-def MakeButtonFunc(window, sizer, btname):
- setattr(PLCGlobals,btname,1)
- setattr(PLCGlobals,btname,0)
- obj = wx.BitmapButton(window, -1, wx.Bitmap('%s.png'%btname))
- sizer.Add(obj, 2, wx.EXPAND, 0)
- obj.Bind(wx.EVT_LEFT_DOWN, ButtonDown)
- obj.Bind(wx.EVT_LEFT_UP, ButtonUp)
- positions = [getattr(PLCGlobals,axname+"axisPos") for axname in AxisList]
- self.window_1.UpdatePositions(positions)
-Class_wxglade_hmi.UpdPos = UpdPos
-#def UpdatePositions(self, event):
-# positions = [getattr(PLCGlobals,axname+"axisPos") for axname in AxisList]
-# self.window_1.UpdatePositions(positions)
-#Class_wxglade_hmi.UpdatePositions = UpdatePositions
-initorig = Class_wxglade_hmi.__init__
-def Init(self,*args,**kargs):
- initorig(self,*args,**kargs)
- sizer = self.GetSizer().GetItem(1).GetSizer().GetItem(0).GetSizer()
- self.main_buttons = map(
- lambda btname: MakeButtonFunc(self, sizer, btname), PwrButtons)
- sizer = self.GetSizer().GetItem(1).GetSizer().GetItem(1).GetSizer()
- self.main_buttons = map(
- lambda btname: MakeButtonFunc(self, sizer, btname), ActionButtons)
- self.axis_buttons = map(
- lambda axis:( MakeButtonFunc(self, sizer, axis+"axisMinus"),
- MakeButtonFunc(self, sizer, axis+"axisPlus")),
- # self.timer = wx.Timer(self, -1)
- # self.Bind(wx.EVT_TIMER, self.UpdatePositions, self.timer)
- self.ShowFullScreen(True,wx.FULLSCREEN_ALL)
- # wx.CallAfter(self.timer.Start,200)
-Class_wxglade_hmi.__init__ = Init
-def SetPLCGlobalVar(self, evt):
- tglbtname = evt.GetEventObject().GetName()
- setattr(PLCGlobals, tglbtname, evt.GetEventObject().GetValue())
+<?xml version='1.0' encoding='utf-8'?> +<PyFile xmlns:xhtml="http://www.w3.org/1999/xhtml"> + <variable name="Power_ON" type="BOOL"/> + <variable name="Power_OFF" type="BOOL"/> + <variable name="DrawTest" type="BOOL"/> + <variable name="DrawLogo" type="BOOL"/> + <variable name="DrawEscher" type="BOOL"/> + <variable name="Detect_Circle" type="BOOL"/> + <variable name="XaxisPos" type="INT"/> + <variable name="YaxisPos" type="INT"/> + <variable name="ZaxisPos" type="INT"/> + <variable name="TaxisPos" type="INT"/> + <variable name="XaxisMinus" type="BOOL"/> + <variable name="YaxisMinus" type="BOOL"/> + <variable name="ZaxisMinus" type="BOOL"/> + <variable name="TaxisMinus" type="BOOL"/> + <variable name="XaxisPlus" type="BOOL"/> + <variable name="YaxisPlus" type="BOOL"/> + <variable name="ZaxisPlus" type="BOOL"/> + <variable name="TaxisPlus" type="BOOL"/> +AxisList = ["X","Y","Z","T"] +PwrButtons = ['Power_ON', +ActionButtons = ['Detect_Circle', +class ThreeDee(wx.StaticText): + def __init__(self, *args, **kwargs): + self.initialized = False + kwargs["style"] = wx.ALIGN_CENTRE_HORIZONTAL + super(ThreeDee, self).__init__(*args, **kwargs) + self.SetFont(wx.Font(24, wx.SWISS, wx.NORMAL, wx.BOLD)) + self.positions = [0.]*4 + def UpdatePositions(self, positions): + self.positions = positions + ((self.Message +'\n\n') if self.Message else '' )+ + " ".join(["%s %+.2f"%(axis,self.positions[i]) + for i,axis in enumerate(AxisList)])) +def MakeButtonFunc(window, sizer, btname): + setattr(PLCGlobals,btname,1) + setattr(PLCGlobals,btname,0) + obj = wx.BitmapButton(window, -1, wx.Bitmap('%s.png'%btname)) + sizer.Add(obj, 2, wx.EXPAND, 0) + obj.Bind(wx.EVT_LEFT_DOWN, ButtonDown) + obj.Bind(wx.EVT_LEFT_UP, ButtonUp) + positions = [getattr(PLCGlobals,axname+"axisPos") for axname in AxisList] + self.window_1.UpdatePositions(positions) +Class_wxglade_hmi.UpdPos = UpdPos +#def UpdatePositions(self, event): +# positions = [getattr(PLCGlobals,axname+"axisPos") for axname in AxisList] +# self.window_1.UpdatePositions(positions) +#Class_wxglade_hmi.UpdatePositions = UpdatePositions +initorig = Class_wxglade_hmi.__init__ +def Init(self,*args,**kargs): + initorig(self,*args,**kargs) + sizer = self.GetSizer().GetItem(1).GetSizer().GetItem(0).GetSizer() + self.main_buttons = map( + lambda btname: MakeButtonFunc(self, sizer, btname), PwrButtons) + sizer = self.GetSizer().GetItem(1).GetSizer().GetItem(1).GetSizer() + self.main_buttons = map( + lambda btname: MakeButtonFunc(self, sizer, btname), ActionButtons) + self.axis_buttons = map( + lambda axis:( MakeButtonFunc(self, sizer, axis+"axisMinus"), + MakeButtonFunc(self, sizer, axis+"axisPlus")), + # self.timer = wx.Timer(self, -1) + # self.Bind(wx.EVT_TIMER, self.UpdatePositions, self.timer) + # self.ShowFullScreen(True,wx.FULLSCREEN_ALL) + # wx.CallAfter(self.timer.Start,200) +Class_wxglade_hmi.__init__ = Init +def SetPLCGlobalVar(self, evt): + tglbtname = evt.GetEventObject().GetName() + setattr(PLCGlobals, tglbtname, evt.GetEventObject().GetValue()) --- a/tests/wxHMI/beremiz.xml Thu Jun 18 15:22:43 2015 +0200
+++ b/tests/wxHMI/beremiz.xml Fri Jun 19 21:36:35 2015 +0200
@@ -1,5 +1,5 @@
-<?xml version='1.0' encoding='utf-8'?>
-<BeremizRoot URI_location="LOCAL://">
- <Libraries Enable_SVGUI_Library="false"/>
+<?xml version='1.0' encoding='utf-8'?> +<BeremizRoot URI_location="LOCAL://"> + <Libraries Enable_SVGUI_Library="false"/> --- a/tests/wxHMI/plc.xml Thu Jun 18 15:22:43 2015 +0200
+++ b/tests/wxHMI/plc.xml Fri Jun 19 21:36:35 2015 +0200
@@ -1,592 +1,592 @@
-<?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="Unnamed" productVersion="1" creationDateTime="2012-09-12T23:30:19"/>
- <contentHeader name="Unnamed" modificationDateTime="2015-06-18T15:22:07">
- <pageSize x="1050" y="1485"/>
- <pou name="main" pouType="program">
- <variable name="Power_ON">
- <variable name="Power_OFF">
- <variable name="power">
- <variable name="DrawTest">
- <variable name="DrawLogo">
- <variable name="DrawEscher">
- <variable name="Detect_Circle">
- <variable name="ZaxisPos">
- <inVariable localId="286" executionOrderId="0" height="25" width="65" negated="false">
- <position x="230" y="205"/>
- <relPosition x="65" y="10"/>
- <expression>Power_ON</expression>
- <block localId="287" typeName="RS" instanceName="RS0" executionOrderId="0" height="65" width="45">
- <position x="395" y="190"/>
- <variable formalParameter="S">
- <relPosition x="0" y="30"/>
- <connection refLocalId="286">
- <position x="395" y="220"/>
- <position x="315" y="220"/>
- <position x="315" y="215"/>
- <position x="295" y="215"/>
- <variable formalParameter="R1">
- <relPosition x="0" y="55"/>
- <connection refLocalId="288">
- <position x="395" y="245"/>
- <position x="320" y="245"/>
- <position x="320" y="260"/>
- <position x="310" y="260"/>
- <variable formalParameter="Q1">
- <relPosition x="45" y="30"/>
- <inVariable localId="288" executionOrderId="0" height="25" width="70" negated="false">
- <position x="240" y="250"/>
- <relPosition x="70" y="10"/>
- <expression>Power_OFF</expression>
- <outVariable localId="289" executionOrderId="0" height="25" width="45" negated="false">
- <position x="510" y="220"/>
- <relPosition x="0" y="10"/>
- <connection refLocalId="287" formalParameter="Q1">
- <position x="510" y="230"/>
- <position x="475" y="230"/>
- <position x="475" y="220"/>
- <position x="440" y="220"/>
- <expression>power</expression>
- <inVariable localId="290" executionOrderId="0" height="25" width="60" negated="false">
- <position x="75" y="55"/>
- <relPosition x="60" y="10"/>
- <expression>DrawTest</expression>
- <block localId="292" typeName="ADD" executionOrderId="0" height="65" width="60">
- <position x="350" y="50"/>
- <variable formalParameter="IN1">
- <relPosition x="0" y="30"/>
- <connection refLocalId="291">
- <position x="350" y="80"/>
- <position x="340" y="80"/>
- <position x="340" y="25"/>
- <position x="530" y="25"/>
- <position x="530" y="45"/>
- <position x="520" y="45"/>
- <variable formalParameter="IN2">
- <relPosition x="0" y="55"/>
- <connection refLocalId="293" formalParameter="OUT">
- <position x="350" y="105"/>
- <position x="287" y="105"/>
- <position x="287" y="65"/>
- <position x="225" y="65"/>
- <variable formalParameter="OUT">
- <relPosition x="60" y="30"/>
- <inOutVariable localId="291" executionOrderId="0" height="25" width="55" negatedOut="false" negatedIn="false">
- <position x="465" y="35"/>
- <relPosition x="0" y="10"/>
- <connection refLocalId="292" formalParameter="OUT">
- <position x="465" y="45"/>
- <position x="437" y="45"/>
- <position x="437" y="80"/>
- <position x="410" y="80"/>
- <relPosition x="55" y="10"/>
- <expression>ZaxisPos</expression>
- <block localId="293" typeName="SEL" executionOrderId="0" height="85" width="60">
- <position x="165" y="35"/>
- <variable formalParameter="G">
- <relPosition x="0" y="30"/>
- <connection refLocalId="290">
- <position x="165" y="65"/>
- <position x="135" y="65"/>
- <variable formalParameter="IN0">
- <relPosition x="0" y="50"/>
- <connection refLocalId="295">
- <position x="165" y="85"/>
- <position x="135" y="85"/>
- <position x="135" y="90"/>
- <position x="105" y="90"/>
- <variable formalParameter="IN1">
- <relPosition x="0" y="70"/>
- <connection refLocalId="294">
- <position x="165" y="105"/>
- <position x="135" y="105"/>
- <position x="135" y="115"/>
- <position x="105" y="115"/>
- <variable formalParameter="OUT">
- <relPosition x="60" y="30"/>
- <inVariable localId="294" executionOrderId="0" height="25" width="20" negated="false">
- <position x="85" y="105"/>
- <relPosition x="20" y="10"/>
- <expression>1</expression>
- <inVariable localId="295" executionOrderId="0" height="25" width="20" negated="false">
- <position x="85" y="80"/>
- <relPosition x="20" y="10"/>
- <expression>0</expression>
- <xhtml:p><![CDATA[]]></xhtml:p>
- <pou name="ReadGUIdata" pouType="program">
- <variable name="power">
- <variable name="XaxisPos">
- <variable name="YaxisPos">
- <variable name="ZaxisPos">
- <variable name="TaxisPos">
- <variable name="python_poll0">
- <derived name="python_poll"/>
- <outVariable localId="211" executionOrderId="0" height="25" width="60" negated="false">
- <position x="565" y="195"/>
- <relPosition x="0" y="10"/>
- <connection refLocalId="215">
- <position x="565" y="205"/>
- <position x="370" y="205"/>
- <position x="370" y="195"/>
- <position x="330" y="195"/>
- <expression>XaxisPos</expression>
- <block localId="213" typeName="ADD" executionOrderId="0" height="65" width="60">
- <position x="220" y="295"/>
- <variable formalParameter="IN1">
- <relPosition x="0" y="30"/>
- <connection refLocalId="212">
- <position x="220" y="325"/>
- <position x="210" y="325"/>
- <position x="210" y="270"/>
- <position x="380" y="270"/>
- <position x="380" y="325"/>
- <position x="365" y="325"/>
- <variable formalParameter="IN2">
- <relPosition x="0" y="55"/>
- <connection refLocalId="217" formalParameter="OUT">
- <position x="220" y="350"/>
- <position x="180" y="350"/>
- <variable formalParameter="OUT">
- <relPosition x="60" y="30"/>
- <inOutVariable localId="212" executionOrderId="0" height="25" width="30" negatedOut="false" negatedIn="false">
- <position x="335" y="315"/>
- <relPosition x="0" y="10"/>
- <connection refLocalId="213" formalParameter="OUT">
- <position x="335" y="325"/>
- <position x="280" y="325"/>
- <relPosition x="30" y="10"/>
- <expression>tmp</expression>
- <inVariable localId="214" executionOrderId="0" height="25" width="20" negated="false">
- <position x="65" y="385"/>
- <relPosition x="20" y="10"/>
- <expression>1</expression>
- <inVariable localId="215" executionOrderId="0" height="25" width="30" negated="false">
- <position x="300" y="185"/>
- <relPosition x="30" y="10"/>
- <expression>tmp</expression>
- <outVariable localId="216" executionOrderId="0" height="25" width="60" negated="false">
- <position x="540" y="310"/>
- <relPosition x="0" y="10"/>
- <connection refLocalId="215">
- <position x="540" y="320"/>
- <position x="435" y="320"/>
- <position x="435" y="195"/>
- <position x="330" y="195"/>
- <expression>YaxisPos</expression>
- <block localId="217" typeName="SEL" executionOrderId="0" height="85" width="60">
- <position x="120" y="320"/>
- <variable formalParameter="G">
- <relPosition x="0" y="30"/>
- <connection refLocalId="219">
- <position x="120" y="350"/>
- <position x="97" y="350"/>
- <position x="97" y="345"/>
- <position x="85" y="345"/>
- <variable formalParameter="IN0">
- <relPosition x="0" y="50"/>
- <connection refLocalId="218">
- <position x="120" y="370"/>
- <position x="85" y="370"/>
- <variable formalParameter="IN1">
- <relPosition x="0" y="70"/>
- <connection refLocalId="214">
- <position x="120" y="390"/>
- <position x="102" y="390"/>
- <position x="102" y="395"/>
- <position x="85" y="395"/>
- <variable formalParameter="OUT">
- <relPosition x="60" y="30"/>
- <inVariable localId="218" executionOrderId="0" height="25" width="20" negated="false">
- <position x="65" y="360"/>
- <relPosition x="20" y="10"/>
- <expression>0</expression>
- <inVariable localId="219" executionOrderId="0" height="25" width="45" negated="false">
- <position x="40" y="335"/>
- <relPosition x="45" y="10"/>
- <expression>power</expression>
- <block localId="220" typeName="python_poll" instanceName="python_poll0" executionOrderId="0" height="65" width="85">
- <position x="640" y="370"/>
- <variable formalParameter="TRIG">
- <relPosition x="0" y="30"/>
- <connection refLocalId="221">
- <position x="640" y="400"/>
- <position x="595" y="400"/>
- <variable formalParameter="CODE">
- <relPosition x="0" y="55"/>
- <connection refLocalId="222">
- <position x="640" y="425"/>
- <position x="590" y="425"/>
- <variable formalParameter="ACK">
- <relPosition x="85" y="30"/>
- <variable formalParameter="RESULT">
- <relPosition x="85" y="55"/>
- <inVariable localId="221" executionOrderId="0" height="25" width="75" negated="false">
- <position x="520" y="390"/>
- <relPosition x="75" y="10"/>
- <expression>BOOL#TRUE</expression>
- <inVariable localId="222" executionOrderId="0" height="25" width="135" negated="false">
- <position x="455" y="415"/>
- <relPosition x="135" y="10"/>
- <expression>'wxglade_hmi.UpdPos()'</expression>
- <xhtml:p><![CDATA[]]></xhtml:p>
- <pou name="Declarations" pouType="program">
- <variable name="LocalVar0">
- <variable name="LocalVar1">
- <inVariable localId="127" executionOrderId="0" height="25" width="60" negated="false">
- <position x="235" y="205"/>
- <relPosition x="60" y="10"/>
- <expression>LocalVar0</expression>
- <outVariable localId="128" executionOrderId="0" height="25" width="60" negated="false">
- <position x="450" y="190"/>
- <relPosition x="0" y="10"/>
- <connection refLocalId="127">
- <position x="450" y="200"/>
- <position x="372" y="200"/>
- <position x="372" y="215"/>
- <position x="295" y="215"/>
- <expression>LocalVar1</expression>
- <xhtml:p><![CDATA[]]></xhtml:p>
- <configuration name="config">
- <resource name="resource1">
- <task name="InitOneShot" priority="0" single="Initialize">
- <pouInstance name="Initializer" typeName="Declarations"/>
- <task name="ControlTask" priority="0" interval="T#2ms">
- <pouInstance name="MainInstance" typeName="main"/>
- <task name="GUIupdate" priority="0" interval="T#200ms">
- <pouInstance name="PosReader" typeName="ReadGUIdata"/>
- <variable name="Initialize">
- <simpleValue value="TRUE"/>
- <variable name="power">
- <simpleValue value="TRUE"/>
+<?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="Unnamed" productVersion="1" creationDateTime="2012-09-12T23:30:19"/> + <contentHeader name="Unnamed" modificationDateTime="2015-07-01T22:17:12"> + <pageSize x="1050" y="1485"/> + <pou name="main" pouType="program"> + <variable name="Power_ON"> + <variable name="Power_OFF"> + <variable name="power"> + <variable name="DrawTest"> + <variable name="DrawLogo"> + <variable name="DrawEscher"> + <variable name="Detect_Circle"> + <variable name="ZaxisPos"> + <inVariable localId="286" executionOrderId="0" height="25" width="65" negated="false"> + <position x="230" y="205"/> + <relPosition x="65" y="10"/> + <expression>Power_ON</expression> + <block localId="287" typeName="RS" instanceName="RS0" executionOrderId="0" height="65" width="45"> + <position x="395" y="190"/> + <variable formalParameter="S"> + <relPosition x="0" y="30"/> + <connection refLocalId="286"> + <position x="395" y="220"/> + <position x="315" y="220"/> + <position x="315" y="215"/> + <position x="295" y="215"/> + <variable formalParameter="R1"> + <relPosition x="0" y="55"/> + <connection refLocalId="288"> + <position x="395" y="245"/> + <position x="320" y="245"/> + <position x="320" y="260"/> + <position x="310" y="260"/> + <variable formalParameter="Q1"> + <relPosition x="45" y="30"/> + <inVariable localId="288" executionOrderId="0" height="25" width="70" negated="false"> + <position x="240" y="250"/> + <relPosition x="70" y="10"/> + <expression>Power_OFF</expression> + <outVariable localId="289" executionOrderId="0" height="25" width="45" negated="false"> + <position x="510" y="220"/> + <relPosition x="0" y="10"/> + <connection refLocalId="287" formalParameter="Q1"> + <position x="510" y="230"/> + <position x="475" y="230"/> + <position x="475" y="220"/> + <position x="440" y="220"/> + <expression>power</expression> + <inVariable localId="290" executionOrderId="0" height="25" width="60" negated="false"> + <position x="75" y="55"/> + <relPosition x="60" y="10"/> + <expression>DrawTest</expression> + <block localId="292" typeName="ADD" executionOrderId="0" height="65" width="60"> + <position x="350" y="50"/> + <variable formalParameter="IN1"> + <relPosition x="0" y="30"/> + <connection refLocalId="291"> + <position x="350" y="80"/> + <position x="340" y="80"/> + <position x="340" y="25"/> + <position x="530" y="25"/> + <position x="530" y="45"/> + <position x="520" y="45"/> + <variable formalParameter="IN2"> + <relPosition x="0" y="55"/> + <connection refLocalId="293" formalParameter="OUT"> + <position x="350" y="105"/> + <position x="287" y="105"/> + <position x="287" y="65"/> + <position x="225" y="65"/> + <variable formalParameter="OUT"> + <relPosition x="60" y="30"/> + <inOutVariable localId="291" executionOrderId="0" height="25" width="55" negatedOut="false" negatedIn="false"> + <position x="465" y="35"/> + <relPosition x="0" y="10"/> + <connection refLocalId="292" formalParameter="OUT"> + <position x="465" y="45"/> + <position x="437" y="45"/> + <position x="437" y="80"/> + <position x="410" y="80"/> + <relPosition x="55" y="10"/> + <expression>ZaxisPos</expression> + <block localId="293" typeName="SEL" executionOrderId="0" height="85" width="60"> + <position x="165" y="35"/> + <variable formalParameter="G"> + <relPosition x="0" y="30"/> + <connection refLocalId="290"> + <position x="165" y="65"/> + <position x="135" y="65"/> + <variable formalParameter="IN0"> + <relPosition x="0" y="50"/> + <connection refLocalId="295"> + <position x="165" y="85"/> + <position x="135" y="85"/> + <position x="135" y="90"/> + <position x="105" y="90"/> + <variable formalParameter="IN1"> + <relPosition x="0" y="70"/> + <connection refLocalId="294"> + <position x="165" y="105"/> + <position x="135" y="105"/> + <position x="135" y="115"/> + <position x="105" y="115"/> + <variable formalParameter="OUT"> + <relPosition x="60" y="30"/> + <inVariable localId="294" executionOrderId="0" height="25" width="20" negated="false"> + <position x="85" y="105"/> + <relPosition x="20" y="10"/> + <expression>1</expression> + <inVariable localId="295" executionOrderId="0" height="25" width="20" negated="false"> + <position x="85" y="80"/> + <relPosition x="20" y="10"/> + <expression>0</expression> + <xhtml:p><![CDATA[]]></xhtml:p> + <pou name="ReadGUIdata" pouType="program"> + <variable name="power"> + <variable name="XaxisPos"> + <variable name="YaxisPos"> + <variable name="ZaxisPos"> + <variable name="TaxisPos"> + <variable name="python_poll0"> + <derived name="python_poll"/> + <outVariable localId="211" executionOrderId="0" height="25" width="60" negated="false"> + <position x="565" y="195"/> + <relPosition x="0" y="10"/> + <connection refLocalId="215"> + <position x="565" y="205"/> + <position x="370" y="205"/> + <position x="370" y="195"/> + <position x="330" y="195"/> + <expression>XaxisPos</expression> + <block localId="213" typeName="ADD" executionOrderId="0" height="65" width="60"> + <position x="220" y="295"/> + <variable formalParameter="IN1"> + <relPosition x="0" y="30"/> + <connection refLocalId="212"> + <position x="220" y="325"/> + <position x="210" y="325"/> + <position x="210" y="270"/> + <position x="380" y="270"/> + <position x="380" y="325"/> + <position x="365" y="325"/> + <variable formalParameter="IN2"> + <relPosition x="0" y="55"/> + <connection refLocalId="217" formalParameter="OUT"> + <position x="220" y="350"/> + <position x="180" y="350"/> + <variable formalParameter="OUT"> + <relPosition x="60" y="30"/> + <inOutVariable localId="212" executionOrderId="0" height="25" width="30" negatedOut="false" negatedIn="false"> + <position x="335" y="315"/> + <relPosition x="0" y="10"/> + <connection refLocalId="213" formalParameter="OUT"> + <position x="335" y="325"/> + <position x="280" y="325"/> + <relPosition x="30" y="10"/> + <expression>tmp</expression> + <inVariable localId="214" executionOrderId="0" height="25" width="20" negated="false"> + <position x="65" y="385"/> + <relPosition x="20" y="10"/> + <expression>1</expression> + <inVariable localId="215" executionOrderId="0" height="25" width="30" negated="false"> + <position x="300" y="185"/> + <relPosition x="30" y="10"/> + <expression>tmp</expression> + <outVariable localId="216" executionOrderId="0" height="25" width="60" negated="false"> + <position x="540" y="310"/> + <relPosition x="0" y="10"/> + <connection refLocalId="215"> + <position x="540" y="320"/> + <position x="435" y="320"/> + <position x="435" y="195"/> + <position x="330" y="195"/> + <expression>YaxisPos</expression> + <block localId="217" typeName="SEL" executionOrderId="0" height="85" width="60"> + <position x="120" y="320"/> + <variable formalParameter="G"> + <relPosition x="0" y="30"/> + <connection refLocalId="219"> + <position x="120" y="350"/> + <position x="97" y="350"/> + <position x="97" y="345"/> + <position x="85" y="345"/> + <variable formalParameter="IN0"> + <relPosition x="0" y="50"/> + <connection refLocalId="218"> + <position x="120" y="370"/> + <position x="85" y="370"/> + <variable formalParameter="IN1"> + <relPosition x="0" y="70"/> + <connection refLocalId="214"> + <position x="120" y="390"/> + <position x="102" y="390"/> + <position x="102" y="395"/> + <position x="85" y="395"/> + <variable formalParameter="OUT"> + <relPosition x="60" y="30"/> + <inVariable localId="218" executionOrderId="0" height="25" width="20" negated="false"> + <position x="65" y="360"/> + <relPosition x="20" y="10"/> + <expression>0</expression> + <inVariable localId="219" executionOrderId="0" height="25" width="45" negated="false"> + <position x="40" y="335"/> + <relPosition x="45" y="10"/> + <expression>power</expression> + <block localId="220" typeName="python_poll" instanceName="python_poll0" executionOrderId="0" height="65" width="85"> + <position x="640" y="370"/> + <variable formalParameter="TRIG"> + <relPosition x="0" y="30"/> + <connection refLocalId="221"> + <position x="640" y="400"/> + <position x="595" y="400"/> + <variable formalParameter="CODE"> + <relPosition x="0" y="55"/> + <connection refLocalId="222"> + <position x="640" y="425"/> + <position x="590" y="425"/> + <variable formalParameter="ACK"> + <relPosition x="85" y="30"/> + <variable formalParameter="RESULT"> + <relPosition x="85" y="55"/> + <inVariable localId="221" executionOrderId="0" height="25" width="75" negated="false"> + <position x="520" y="390"/> + <relPosition x="75" y="10"/> + <expression>BOOL#TRUE</expression> + <inVariable localId="222" executionOrderId="0" height="25" width="135" negated="false"> + <position x="455" y="415"/> + <relPosition x="135" y="10"/> + <expression>'wxglade_hmi.UpdPos()'</expression> + <xhtml:p><![CDATA[]]></xhtml:p> + <pou name="Declarations" pouType="program"> + <variable name="LocalVar0"> + <variable name="LocalVar1"> + <inVariable localId="127" executionOrderId="0" height="25" width="60" negated="false"> + <position x="235" y="205"/> + <relPosition x="60" y="10"/> + <expression>LocalVar0</expression> + <outVariable localId="128" executionOrderId="0" height="25" width="60" negated="false"> + <position x="450" y="190"/> + <relPosition x="0" y="10"/> + <connection refLocalId="127"> + <position x="450" y="200"/> + <position x="372" y="200"/> + <position x="372" y="215"/> + <position x="295" y="215"/> + <expression>LocalVar1</expression> + <xhtml:p><![CDATA[]]></xhtml:p> + <configuration name="config"> + <resource name="resource1"> + <task name="InitOneShot" priority="0" single="Initialize"> + <pouInstance name="Initializer" typeName="Declarations"/> + <task name="ControlTask" priority="0" interval="T#2ms"> + <pouInstance name="MainInstance" typeName="main"/> + <task name="GUIupdate" priority="0" interval="T#200ms"> + <pouInstance name="PosReader" typeName="ReadGUIdata"/> + <variable name="Initialize"> + <simpleValue value="TRUE"/> + <variable name="power"> + <simpleValue value="TRUE"/>