Edouard@1401: <?xml version='1.0' encoding='utf-8'?>
Edouard@1401: <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">
Edouard@1401:   <fileHeader companyName="" productName="Beremiz" productVersion="0.0" creationDateTime="2008-12-14T16:21:19"/>
Edouard@1457:   <contentHeader name="Beremiz Python Support Tests" modificationDateTime="2015-03-13T22:06:10">
etisserant@280:     <coordinateInfo>
etisserant@280:       <pageSize x="1024" y="1024"/>
etisserant@280:       <fbd>
etisserant@280:         <scaling x="5" y="5"/>
etisserant@280:       </fbd>
etisserant@280:       <ld>
etisserant@280:         <scaling x="5" y="5"/>
etisserant@280:       </ld>
etisserant@280:       <sfc>
etisserant@280:         <scaling x="5" y="5"/>
etisserant@280:       </sfc>
etisserant@280:     </coordinateInfo>
etisserant@280:   </contentHeader>
etisserant@280:   <types>
Edouard@861:     <dataTypes>
Edouard@861:       <dataType name="CPLX_TYPE">
Edouard@861:         <baseType>
Edouard@861:           <struct>
Edouard@861:             <variable name="FIRSTBYTE">
Edouard@861:               <type>
Edouard@861:                 <SINT/>
Edouard@861:               </type>
Edouard@861:             </variable>
Edouard@861:             <variable name="SECONDBYTE">
Edouard@861:               <type>
Edouard@861:                 <SINT/>
Edouard@861:               </type>
Edouard@861:             </variable>
Edouard@861:           </struct>
Edouard@861:         </baseType>
Edouard@861:       </dataType>
Laurent@881:       <dataType name="StateMachine">
Laurent@881:         <baseType>
Laurent@881:           <enum>
Laurent@881:             <values>
Laurent@881:               <value name="STANDBY"/>
Laurent@881:               <value name="START"/>
Laurent@881:               <value name="STOP"/>
Laurent@881:             </values>
Laurent@881:           </enum>
Laurent@881:         </baseType>
Laurent@881:       </dataType>
Edouard@1419:       <dataType name="datatype0">
Edouard@1419:         <baseType>
Edouard@1419:           <BOOL/>
Edouard@1419:         </baseType>
Edouard@1419:       </dataType>
Edouard@861:     </dataTypes>
etisserant@280:     <pous>
etisserant@280:       <pou name="main_pytest" pouType="program">
etisserant@280:         <interface>
etisserant@280:           <localVars>
etisserant@280:             <variable name="pytest_var1">
etisserant@280:               <type>
etisserant@280:                 <string/>
etisserant@280:               </type>
etisserant@280:             </variable>
Edouard@1419:             <variable name="fefvsd">
Edouard@1419:               <type>
Edouard@1419:                 <derived name="datatype0"/>
Edouard@1419:               </type>
Edouard@1419:             </variable>
etisserant@280:             <variable name="pytest_var2">
etisserant@280:               <type>
etisserant@280:                 <BOOL/>
etisserant@280:               </type>
etisserant@280:             </variable>
etisserant@280:             <variable name="py1">
etisserant@280:               <type>
etisserant@280:                 <derived name="python_eval"/>
etisserant@280:               </type>
etisserant@280:             </variable>
etisserant@282:             <variable name="Block1">
etisserant@282:               <type>
etisserant@282:                 <derived name="python_eval"/>
etisserant@282:               </type>
etisserant@282:             </variable>
etisserant@282:             <variable name="Block2">
etisserant@282:               <type>
etisserant@282:                 <derived name="python_eval"/>
etisserant@282:               </type>
etisserant@282:             </variable>
etisserant@282:             <variable name="Block3">
etisserant@282:               <type>
etisserant@282:                 <derived name="python_eval"/>
etisserant@282:               </type>
etisserant@282:             </variable>
etisserant@283:             <variable name="pytest_var3">
etisserant@283:               <type>
etisserant@283:                 <BOOL/>
etisserant@283:               </type>
etisserant@283:             </variable>
Edouard@859:             <variable name="FromC">
Edouard@859:               <type>
Edouard@859:                 <SINT/>
Edouard@859:               </type>
Edouard@859:             </variable>
Edouard@859:             <variable name="C_Pragma0">
Edouard@859:               <type>
Edouard@859:                 <derived name="C_Pragma"/>
Edouard@859:               </type>
Edouard@859:             </variable>
etisserant@280:           </localVars>
Laurent@1099:           <externalVars>
Laurent@1099:             <variable name="TestInput">
Edouard@860:               <type>
Edouard@860:                 <SINT/>
Edouard@860:               </type>
Edouard@860:             </variable>
Laurent@1099:             <variable name="TestOutput">
Edouard@860:               <type>
Edouard@860:                 <SINT/>
Edouard@860:               </type>
Edouard@860:             </variable>
Laurent@1099:           </externalVars>
Edouard@860:           <localVars>
Edouard@860:             <variable name="FromInput">
Edouard@860:               <type>
Edouard@860:                 <SINT/>
Edouard@860:               </type>
Edouard@860:             </variable>
Laurent@881:             <variable name="Test_BCD">
Laurent@881:               <type>
Laurent@881:                 <WORD/>
Laurent@881:               </type>
Laurent@881:               <initialValue>
Laurent@941:                 <simpleValue value="300"/>
Laurent@881:               </initialValue>
Laurent@881:             </variable>
Laurent@881:             <variable name="Test_BCD_RESULT">
Laurent@881:               <type>
Laurent@881:                 <UINT/>
Laurent@881:               </type>
Laurent@881:             </variable>
Laurent@941:             <variable name="Test_BCD_ENO">
Laurent@941:               <type>
Laurent@941:                 <BOOL/>
Laurent@941:               </type>
Laurent@941:             </variable>
Laurent@881:             <variable name="Test_DT">
Laurent@881:               <type>
Laurent@881:                 <DT/>
Laurent@881:               </type>
Laurent@881:               <initialValue>
Laurent@941:                 <simpleValue value="DT#2013-02-23-22:35:46"/>
Laurent@881:               </initialValue>
Laurent@881:             </variable>
Laurent@881:             <variable name="Test_TOD">
Laurent@881:               <type>
Laurent@881:                 <TOD/>
Laurent@881:               </type>
Laurent@881:             </variable>
Laurent@941:             <variable name="Test_TOD_STRING">
Laurent@941:               <type>
Laurent@941:                 <string/>
Laurent@941:               </type>
Laurent@941:             </variable>
Laurent@881:             <variable name="Test_Date">
Laurent@881:               <type>
Laurent@881:                 <DATE/>
Laurent@881:               </type>
Laurent@881:             </variable>
Laurent@881:             <variable name="Test_String">
Laurent@881:               <type>
Laurent@881:                 <string/>
Laurent@881:               </type>
Laurent@918:               <initialValue>
Laurent@918:                 <simpleValue value="test"/>
Laurent@918:               </initialValue>
Laurent@881:             </variable>
Laurent@881:             <variable name="Test_Bool">
Laurent@881:               <type>
Laurent@881:                 <BOOL/>
Laurent@881:               </type>
Laurent@881:             </variable>
Edouard@860:           </localVars>
Laurent@881:           <externalVars>
Laurent@881:             <variable name="Global_RS">
Laurent@881:               <type>
Laurent@881:                 <derived name="RS"/>
Laurent@881:               </type>
Laurent@881:             </variable>
Edouard@1013:             <variable name="TUTU">
Edouard@1013:               <type>
Edouard@1013:                 <INT/>
Edouard@1013:               </type>
Edouard@1013:             </variable>
Edouard@1013:             <variable name="TOTO">
Edouard@1013:               <type>
Edouard@1013:                 <INT/>
Edouard@1013:               </type>
Edouard@1013:             </variable>
Edouard@1145:             <variable name="Test_Python_Var">
Edouard@1145:               <type>
Edouard@1145:                 <INT/>
Edouard@1145:               </type>
Edouard@1145:             </variable>
Edouard@1145:             <variable name="Second_Python_Var">
Edouard@1145:               <type>
Edouard@1145:                 <INT/>
Edouard@1145:               </type>
Edouard@1145:             </variable>
Laurent@881:           </externalVars>
etisserant@280:         </interface>
etisserant@280:         <body>
etisserant@280:           <FBD>
etisserant@282:             <inVariable localId="4" height="30" width="160">
Edouard@862:               <position x="295" y="230"/>
etisserant@282:               <connectionPointOut>
etisserant@282:                 <relPosition x="160" y="15"/>
etisserant@282:               </connectionPointOut>
etisserant@282:               <expression>'time.sleep(1)'</expression>
etisserant@280:             </inVariable>
etisserant@280:             <block localId="5" width="125" height="80" typeName="python_eval" instanceName="py1">
Edouard@862:               <position x="650" y="180"/>
etisserant@280:               <inputVariables>
etisserant@280:                 <variable formalParameter="TRIG">
etisserant@280:                   <connectionPointIn>
etisserant@280:                     <relPosition x="0" y="35"/>
etisserant@280:                     <connection refLocalId="7" formalParameter="OUT">
Edouard@862:                       <position x="650" y="215"/>
Edouard@862:                       <position x="285" y="215"/>
etisserant@282:                       <position x="285" y="260"/>
etisserant@282:                       <position x="250" y="260"/>
etisserant@280:                     </connection>
etisserant@280:                   </connectionPointIn>
etisserant@280:                 </variable>
etisserant@280:                 <variable formalParameter="CODE">
etisserant@280:                   <connectionPointIn>
etisserant@280:                     <relPosition x="0" y="65"/>
etisserant@280:                     <connection refLocalId="4">
Edouard@862:                       <position x="650" y="245"/>
Edouard@862:                       <position x="455" y="245"/>
etisserant@280:                     </connection>
etisserant@280:                   </connectionPointIn>
etisserant@280:                 </variable>
etisserant@280:               </inputVariables>
etisserant@280:               <inOutVariables/>
etisserant@280:               <outputVariables>
etisserant@280:                 <variable formalParameter="ACK">
etisserant@280:                   <connectionPointOut>
etisserant@280:                     <relPosition x="125" y="35"/>
etisserant@280:                   </connectionPointOut>
etisserant@280:                 </variable>
etisserant@280:                 <variable formalParameter="RESULT">
etisserant@280:                   <connectionPointOut>
etisserant@280:                     <relPosition x="125" y="65"/>
etisserant@280:                   </connectionPointOut>
etisserant@280:                 </variable>
etisserant@280:               </outputVariables>
etisserant@280:             </block>
etisserant@280:             <block localId="7" width="70" height="45" typeName="NOT">
etisserant@282:               <position x="180" y="230"/>
etisserant@280:               <inputVariables>
etisserant@280:                 <variable formalParameter="IN">
etisserant@280:                   <connectionPointIn>
etisserant@280:                     <relPosition x="0" y="30"/>
etisserant@280:                     <connection refLocalId="3">
etisserant@282:                       <position x="180" y="260"/>
etisserant@282:                       <position x="155" y="260"/>
etisserant@280:                     </connection>
etisserant@280:                   </connectionPointIn>
etisserant@280:                 </variable>
etisserant@280:               </inputVariables>
etisserant@280:               <inOutVariables/>
etisserant@280:               <outputVariables>
etisserant@280:                 <variable formalParameter="OUT">
etisserant@280:                   <connectionPointOut>
etisserant@280:                     <relPosition x="70" y="30"/>
etisserant@280:                   </connectionPointOut>
etisserant@280:                 </variable>
etisserant@280:               </outputVariables>
etisserant@280:             </block>
etisserant@280:             <inOutVariable localId="3" height="30" width="120">
etisserant@282:               <position x="35" y="245"/>
etisserant@280:               <connectionPointIn>
etisserant@280:                 <relPosition x="0" y="15"/>
etisserant@280:                 <connection refLocalId="7" formalParameter="OUT">
etisserant@282:                   <position x="35" y="260"/>
etisserant@282:                   <position x="25" y="260"/>
etisserant@282:                   <position x="25" y="220"/>
etisserant@282:                   <position x="270" y="220"/>
etisserant@282:                   <position x="270" y="260"/>
etisserant@282:                   <position x="250" y="260"/>
etisserant@280:                 </connection>
etisserant@280:               </connectionPointIn>
etisserant@280:               <connectionPointOut>
etisserant@280:                 <relPosition x="120" y="15"/>
etisserant@280:               </connectionPointOut>
etisserant@280:               <expression>pytest_var2</expression>
etisserant@280:             </inOutVariable>
etisserant@282:             <block localId="8" width="125" height="80" typeName="python_eval" instanceName="Block1">
etisserant@282:               <position x="650" y="295"/>
etisserant@282:               <inputVariables>
etisserant@282:                 <variable formalParameter="TRIG">
etisserant@282:                   <connectionPointIn>
etisserant@282:                     <relPosition x="0" y="35"/>
etisserant@282:                     <connection refLocalId="7" formalParameter="OUT">
etisserant@282:                       <position x="650" y="330"/>
etisserant@282:                       <position x="285" y="330"/>
etisserant@282:                       <position x="285" y="260"/>
etisserant@282:                       <position x="250" y="260"/>
etisserant@282:                     </connection>
etisserant@282:                   </connectionPointIn>
etisserant@282:                 </variable>
etisserant@282:                 <variable formalParameter="CODE">
etisserant@282:                   <connectionPointIn>
etisserant@282:                     <relPosition x="0" y="65"/>
etisserant@282:                     <connection refLocalId="9">
etisserant@282:                       <position x="650" y="360"/>
etisserant@282:                       <position x="585" y="360"/>
etisserant@282:                     </connection>
etisserant@282:                   </connectionPointIn>
etisserant@282:                 </variable>
etisserant@282:               </inputVariables>
etisserant@282:               <inOutVariables/>
etisserant@282:               <outputVariables>
etisserant@282:                 <variable formalParameter="ACK">
etisserant@282:                   <connectionPointOut>
etisserant@282:                     <relPosition x="125" y="35"/>
etisserant@282:                   </connectionPointOut>
etisserant@282:                 </variable>
etisserant@282:                 <variable formalParameter="RESULT">
etisserant@282:                   <connectionPointOut>
etisserant@282:                     <relPosition x="125" y="65"/>
etisserant@282:                   </connectionPointOut>
etisserant@282:                 </variable>
etisserant@282:               </outputVariables>
etisserant@282:             </block>
etisserant@282:             <inVariable localId="9" height="30" width="290">
etisserant@282:               <position x="295" y="345"/>
etisserant@282:               <connectionPointOut>
etisserant@282:                 <relPosition x="290" y="15"/>
etisserant@282:               </connectionPointOut>
Edouard@862:               <expression>'sys.stdout.write("FBID :"+str(FBID)+"\n")'</expression>
etisserant@282:             </inVariable>
etisserant@282:             <inVariable localId="11" height="30" width="290">
Edouard@862:               <position x="295" y="465"/>
etisserant@282:               <connectionPointOut>
etisserant@282:                 <relPosition x="290" y="15"/>
etisserant@282:               </connectionPointOut>
Edouard@859:               <expression>'PLCBinary.Simple_C_Call(5678)'</expression>
etisserant@282:             </inVariable>
etisserant@282:             <block localId="12" width="125" height="80" typeName="python_eval" instanceName="Block2">
etisserant@282:               <position x="650" y="417"/>
etisserant@282:               <inputVariables>
etisserant@282:                 <variable formalParameter="TRIG">
etisserant@282:                   <connectionPointIn>
etisserant@282:                     <relPosition x="0" y="33"/>
etisserant@282:                     <connection refLocalId="7" formalParameter="OUT">
etisserant@282:                       <position x="650" y="450"/>
etisserant@282:                       <position x="285" y="450"/>
etisserant@282:                       <position x="285" y="260"/>
etisserant@282:                       <position x="250" y="260"/>
etisserant@282:                     </connection>
etisserant@282:                   </connectionPointIn>
etisserant@282:                 </variable>
etisserant@282:                 <variable formalParameter="CODE">
etisserant@282:                   <connectionPointIn>
etisserant@282:                     <relPosition x="0" y="63"/>
etisserant@282:                     <connection refLocalId="11">
etisserant@282:                       <position x="650" y="480"/>
Edouard@862:                       <position x="585" y="480"/>
etisserant@282:                     </connection>
etisserant@282:                   </connectionPointIn>
etisserant@282:                 </variable>
etisserant@282:               </inputVariables>
etisserant@282:               <inOutVariables/>
etisserant@282:               <outputVariables>
etisserant@282:                 <variable formalParameter="ACK">
etisserant@282:                   <connectionPointOut>
etisserant@282:                     <relPosition x="125" y="33"/>
etisserant@282:                   </connectionPointOut>
etisserant@282:                 </variable>
etisserant@282:                 <variable formalParameter="RESULT">
etisserant@282:                   <connectionPointOut>
etisserant@282:                     <relPosition x="125" y="63"/>
etisserant@282:                   </connectionPointOut>
etisserant@282:                 </variable>
etisserant@282:               </outputVariables>
etisserant@282:             </block>
etisserant@282:             <inVariable localId="14" height="30" width="290">
etisserant@282:               <position x="290" y="590"/>
etisserant@282:               <connectionPointOut>
etisserant@282:                 <relPosition x="290" y="15"/>
etisserant@282:               </connectionPointOut>
Edouard@734:               <expression>'MyPythonFunc(42)'</expression>
etisserant@282:             </inVariable>
etisserant@282:             <block localId="15" width="125" height="80" typeName="python_eval" instanceName="Block3">
etisserant@282:               <position x="650" y="542"/>
etisserant@282:               <inputVariables>
etisserant@282:                 <variable formalParameter="TRIG">
etisserant@282:                   <connectionPointIn>
etisserant@282:                     <relPosition x="0" y="33"/>
etisserant@282:                     <connection refLocalId="7" formalParameter="OUT">
etisserant@282:                       <position x="650" y="575"/>
etisserant@282:                       <position x="285" y="575"/>
etisserant@282:                       <position x="285" y="260"/>
etisserant@282:                       <position x="250" y="260"/>
etisserant@282:                     </connection>
etisserant@282:                   </connectionPointIn>
etisserant@282:                 </variable>
etisserant@282:                 <variable formalParameter="CODE">
etisserant@282:                   <connectionPointIn>
etisserant@282:                     <relPosition x="0" y="63"/>
etisserant@282:                     <connection refLocalId="14">
etisserant@282:                       <position x="650" y="605"/>
etisserant@282:                       <position x="580" y="605"/>
etisserant@282:                     </connection>
etisserant@282:                   </connectionPointIn>
etisserant@282:                 </variable>
etisserant@282:               </inputVariables>
etisserant@282:               <inOutVariables/>
etisserant@282:               <outputVariables>
etisserant@282:                 <variable formalParameter="ACK">
etisserant@282:                   <connectionPointOut>
etisserant@282:                     <relPosition x="125" y="33"/>
etisserant@282:                   </connectionPointOut>
etisserant@282:                 </variable>
etisserant@282:                 <variable formalParameter="RESULT">
etisserant@282:                   <connectionPointOut>
etisserant@282:                     <relPosition x="125" y="63"/>
etisserant@282:                   </connectionPointOut>
etisserant@282:                 </variable>
etisserant@282:               </outputVariables>
etisserant@282:             </block>
etisserant@282:             <comment localId="16" height="90" width="680">
etisserant@282:               <position x="50" y="25"/>
etisserant@282:               <content>
Edouard@1401:                 <xhtml:p><![CDATA[This example test that, despite of 2T period clock stimulating TRIG pin of pyth_eval blocks, blocks keep executing one after the other, in respect of execution order.]]></xhtml:p>
etisserant@282:               </content>
etisserant@282:             </comment>
etisserant@283:             <block localId="17" width="80" height="120" typeName="MUX">
etisserant@283:               <position x="1065" y="495"/>
etisserant@283:               <inputVariables>
etisserant@283:                 <variable formalParameter="K">
etisserant@283:                   <connectionPointIn>
etisserant@283:                     <relPosition x="0" y="30"/>
etisserant@283:                     <connection refLocalId="18">
etisserant@283:                       <position x="1065" y="525"/>
etisserant@283:                       <position x="1030" y="525"/>
etisserant@283:                     </connection>
etisserant@283:                   </connectionPointIn>
etisserant@283:                 </variable>
etisserant@283:                 <variable formalParameter="IN0">
etisserant@283:                   <connectionPointIn>
etisserant@283:                     <relPosition x="0" y="50"/>
etisserant@283:                     <connection refLocalId="5" formalParameter="RESULT">
etisserant@283:                       <position x="1065" y="545"/>
etisserant@283:                       <position x="905" y="545"/>
Edouard@862:                       <position x="905" y="245"/>
Edouard@862:                       <position x="775" y="245"/>
etisserant@283:                     </connection>
etisserant@283:                   </connectionPointIn>
etisserant@283:                 </variable>
etisserant@283:                 <variable formalParameter="IN1">
etisserant@283:                   <connectionPointIn>
etisserant@283:                     <relPosition x="0" y="70"/>
etisserant@283:                     <connection refLocalId="8" formalParameter="RESULT">
etisserant@283:                       <position x="1065" y="565"/>
etisserant@283:                       <position x="890" y="565"/>
etisserant@283:                       <position x="890" y="360"/>
etisserant@283:                       <position x="775" y="360"/>
etisserant@283:                     </connection>
etisserant@283:                   </connectionPointIn>
etisserant@283:                 </variable>
etisserant@283:                 <variable formalParameter="IN2">
etisserant@283:                   <connectionPointIn>
etisserant@283:                     <relPosition x="0" y="90"/>
etisserant@283:                     <connection refLocalId="12" formalParameter="RESULT">
etisserant@283:                       <position x="1065" y="585"/>
etisserant@283:                       <position x="875" y="585"/>
etisserant@283:                       <position x="875" y="480"/>
etisserant@283:                       <position x="775" y="480"/>
etisserant@283:                     </connection>
etisserant@283:                   </connectionPointIn>
etisserant@283:                 </variable>
etisserant@283:                 <variable formalParameter="IN3">
etisserant@283:                   <connectionPointIn>
etisserant@283:                     <relPosition x="0" y="110"/>
etisserant@283:                     <connection refLocalId="15" formalParameter="RESULT">
etisserant@283:                       <position x="1065" y="605"/>
etisserant@283:                       <position x="775" y="605"/>
etisserant@283:                     </connection>
etisserant@283:                   </connectionPointIn>
etisserant@283:                 </variable>
etisserant@283:               </inputVariables>
etisserant@283:               <inOutVariables/>
etisserant@283:               <outputVariables>
etisserant@283:                 <variable formalParameter="OUT">
etisserant@283:                   <connectionPointOut>
etisserant@283:                     <relPosition x="80" y="30"/>
etisserant@283:                   </connectionPointOut>
etisserant@283:                 </variable>
etisserant@283:               </outputVariables>
etisserant@283:             </block>
etisserant@283:             <inVariable localId="18" height="30" width="20">
etisserant@283:               <position x="1010" y="510"/>
etisserant@283:               <connectionPointOut>
etisserant@283:                 <relPosition x="20" y="15"/>
etisserant@283:               </connectionPointOut>
etisserant@283:               <expression>3</expression>
etisserant@283:             </inVariable>
etisserant@283:             <outVariable localId="19" height="35" width="125">
etisserant@283:               <position x="1185" y="510"/>
etisserant@283:               <connectionPointIn>
etisserant@283:                 <relPosition x="0" y="15"/>
etisserant@283:                 <connection refLocalId="17" formalParameter="OUT">
etisserant@283:                   <position x="1185" y="525"/>
etisserant@283:                   <position x="1145" y="525"/>
etisserant@283:                 </connection>
etisserant@283:               </connectionPointIn>
etisserant@283:               <expression>pytest_var1</expression>
etisserant@283:             </outVariable>
etisserant@283:             <block localId="21" width="80" height="120" typeName="MUX">
Edouard@862:               <position x="985" y="165"/>
etisserant@283:               <inputVariables>
etisserant@283:                 <variable formalParameter="K">
etisserant@283:                   <connectionPointIn>
etisserant@283:                     <relPosition x="0" y="30"/>
etisserant@283:                     <connection refLocalId="22">
Edouard@862:                       <position x="985" y="195"/>
Edouard@862:                       <position x="950" y="195"/>
etisserant@283:                     </connection>
etisserant@283:                   </connectionPointIn>
etisserant@283:                 </variable>
etisserant@283:                 <variable formalParameter="IN0">
etisserant@283:                   <connectionPointIn>
etisserant@283:                     <relPosition x="0" y="50"/>
etisserant@283:                     <connection refLocalId="5" formalParameter="ACK">
Edouard@862:                       <position x="985" y="215"/>
Edouard@862:                       <position x="775" y="215"/>
etisserant@283:                     </connection>
etisserant@283:                   </connectionPointIn>
etisserant@283:                 </variable>
etisserant@283:                 <variable formalParameter="IN1">
etisserant@283:                   <connectionPointIn>
etisserant@283:                     <relPosition x="0" y="70"/>
etisserant@283:                     <connection refLocalId="8" formalParameter="ACK">
Edouard@862:                       <position x="985" y="235"/>
Edouard@862:                       <position x="805" y="235"/>
etisserant@283:                       <position x="805" y="330"/>
etisserant@283:                       <position x="775" y="330"/>
etisserant@283:                     </connection>
etisserant@283:                   </connectionPointIn>
etisserant@283:                 </variable>
etisserant@283:                 <variable formalParameter="IN2">
etisserant@283:                   <connectionPointIn>
etisserant@283:                     <relPosition x="0" y="90"/>
etisserant@283:                     <connection refLocalId="12" formalParameter="ACK">
Edouard@862:                       <position x="985" y="255"/>
Edouard@862:                       <position x="820" y="255"/>
etisserant@283:                       <position x="820" y="450"/>
etisserant@283:                       <position x="775" y="450"/>
etisserant@283:                     </connection>
etisserant@283:                   </connectionPointIn>
etisserant@283:                 </variable>
etisserant@283:                 <variable formalParameter="IN3">
etisserant@283:                   <connectionPointIn>
etisserant@283:                     <relPosition x="0" y="110"/>
etisserant@283:                     <connection refLocalId="15" formalParameter="ACK">
Edouard@862:                       <position x="985" y="275"/>
Edouard@862:                       <position x="835" y="275"/>
etisserant@283:                       <position x="835" y="575"/>
etisserant@283:                       <position x="775" y="575"/>
etisserant@283:                     </connection>
etisserant@283:                   </connectionPointIn>
etisserant@283:                 </variable>
etisserant@283:               </inputVariables>
etisserant@283:               <inOutVariables/>
etisserant@283:               <outputVariables>
etisserant@283:                 <variable formalParameter="OUT">
etisserant@283:                   <connectionPointOut>
etisserant@283:                     <relPosition x="80" y="30"/>
etisserant@283:                   </connectionPointOut>
etisserant@283:                 </variable>
etisserant@283:               </outputVariables>
etisserant@283:             </block>
etisserant@283:             <inVariable localId="22" height="30" width="20">
Edouard@862:               <position x="930" y="180"/>
etisserant@283:               <connectionPointOut>
etisserant@283:                 <relPosition x="20" y="15"/>
etisserant@283:               </connectionPointOut>
etisserant@283:               <expression>3</expression>
etisserant@283:             </inVariable>
etisserant@283:             <outVariable localId="23" height="35" width="125">
Edouard@862:               <position x="1150" y="180"/>
etisserant@283:               <connectionPointIn>
etisserant@283:                 <relPosition x="0" y="15"/>
etisserant@283:                 <connection refLocalId="21" formalParameter="OUT">
Edouard@862:                   <position x="1150" y="195"/>
Edouard@862:                   <position x="1065" y="195"/>
etisserant@283:                 </connection>
etisserant@283:               </connectionPointIn>
etisserant@283:               <expression>pytest_var3</expression>
etisserant@283:             </outVariable>
Edouard@859:             <outVariable localId="25" height="30" width="60">
Edouard@860:               <position x="520" y="655"/>
Edouard@859:               <connectionPointIn>
Edouard@859:                 <relPosition x="0" y="15"/>
Edouard@859:                 <connection refLocalId="26" formalParameter="OUT">
Edouard@860:                   <position x="520" y="670"/>
Edouard@860:                   <position x="465" y="670"/>
Edouard@859:                 </connection>
Edouard@859:               </connectionPointIn>
Edouard@859:               <expression>FromC</expression>
Edouard@859:             </outVariable>
Edouard@859:             <inVariable localId="1" height="30" width="30">
Edouard@860:               <position x="305" y="655"/>
Edouard@859:               <connectionPointOut>
Edouard@859:                 <relPosition x="30" y="15"/>
Edouard@859:               </connectionPointOut>
Edouard@859:               <expression>23</expression>
Edouard@859:             </inVariable>
Edouard@859:             <block localId="26" width="80" height="45" typeName="C_Pragma" instanceName="C_Pragma0">
Edouard@860:               <position x="385" y="640"/>
Edouard@859:               <inputVariables>
Edouard@859:                 <variable formalParameter="IN">
Edouard@859:                   <connectionPointIn>
Edouard@859:                     <relPosition x="0" y="30"/>
Edouard@859:                     <connection refLocalId="1">
Edouard@860:                       <position x="385" y="670"/>
Edouard@860:                       <position x="335" y="670"/>
Edouard@859:                     </connection>
Edouard@859:                   </connectionPointIn>
Edouard@859:                 </variable>
Edouard@859:               </inputVariables>
Edouard@859:               <inOutVariables/>
Edouard@859:               <outputVariables>
Edouard@859:                 <variable formalParameter="OUT">
Edouard@859:                   <connectionPointOut>
Edouard@859:                     <relPosition x="80" y="30"/>
Edouard@859:                   </connectionPointOut>
Edouard@859:                 </variable>
Edouard@859:               </outputVariables>
Edouard@859:             </block>
Laurent@1099:             <inVariable localId="27" height="30" width="90">
Laurent@1099:               <position x="300" y="770"/>
Laurent@1099:               <connectionPointOut>
Laurent@1099:                 <relPosition x="90" y="15"/>
Edouard@860:               </connectionPointOut>
Edouard@860:               <expression>TestInput</expression>
Edouard@860:             </inVariable>
Laurent@1099:             <outVariable localId="28" height="30" width="105">
Edouard@860:               <position x="395" y="705"/>
Edouard@860:               <connectionPointIn>
Edouard@860:                 <relPosition x="0" y="15"/>
Edouard@860:                 <connection refLocalId="2">
Edouard@860:                   <position x="395" y="720"/>
Edouard@860:                   <position x="340" y="720"/>
Edouard@860:                 </connection>
Edouard@860:               </connectionPointIn>
Edouard@860:               <expression>TestOutput</expression>
Edouard@860:             </outVariable>
Edouard@860:             <outVariable localId="29" height="30" width="85">
Edouard@860:               <position x="415" y="770"/>
Edouard@860:               <connectionPointIn>
Edouard@860:                 <relPosition x="0" y="15"/>
Edouard@860:                 <connection refLocalId="27">
Edouard@860:                   <position x="415" y="785"/>
Laurent@1099:                   <position x="390" y="785"/>
Edouard@860:                 </connection>
Edouard@860:               </connectionPointIn>
Edouard@860:               <expression>FromInput</expression>
Edouard@860:             </outVariable>
Edouard@860:             <inVariable localId="2" height="30" width="30">
Edouard@860:               <position x="310" y="705"/>
Edouard@860:               <connectionPointOut>
Edouard@860:                 <relPosition x="30" y="15"/>
Edouard@860:               </connectionPointOut>
Edouard@860:               <expression>10</expression>
Edouard@860:             </inVariable>
Edouard@860:             <comment localId="30" height="90" width="405">
Edouard@860:               <position x="245" y="825"/>
Edouard@860:               <content>
Edouard@1401:                 <xhtml:p><![CDATA[You will be ready to use beremiz with C and Python when you will understand why "FromInput" is equal  to 75.
Edouard@1401: Enjoy. ]]></xhtml:p>
Edouard@860:               </content>
Edouard@860:             </comment>
Edouard@862:             <comment localId="31" height="60" width="345">
Edouard@862:               <position x="295" y="265"/>
Edouard@862:               <content>
Edouard@1401:                 <xhtml:p><![CDATA[Sleep here is bad. It blocks other py_eval instances. Whith a wxGlade GUI, GUI freeze for a second.]]></xhtml:p>
Edouard@862:               </content>
Edouard@862:             </comment>
Edouard@862:             <comment localId="6" height="60" width="345">
Edouard@862:               <position x="295" y="380"/>
Edouard@862:               <content>
Edouard@1401:                 <xhtml:p><![CDATA[Prints FBID to stdout of PLC runtime. FBID is a unique reference to py_eval instance.]]></xhtml:p>
Edouard@862:               </content>
Edouard@862:             </comment>
Edouard@862:             <comment localId="10" height="60" width="345">
Edouard@862:               <position x="295" y="500"/>
Edouard@862:               <content>
Edouard@1401:                 <xhtml:p><![CDATA[Simple_C_Call is declared in C_File "1.x:c_code". See python ctypes manual for details on typing.]]></xhtml:p>
Edouard@862:               </content>
Edouard@862:             </comment>
Edouard@862:             <comment localId="32" height="105" width="235">
Edouard@862:               <position x="25" y="285"/>
Edouard@862:               <content>
Edouard@1401:                 <xhtml:p><![CDATA[Fast clock, at least faster that sleep(1). See what happens when python takes time to answer : PLC continues.]]></xhtml:p>
Edouard@862:               </content>
Edouard@862:             </comment>
Laurent@881:             <outVariable localId="33" height="30" width="130">
Laurent@881:               <position x="1060" y="740"/>
Laurent@881:               <connectionPointIn>
Laurent@881:                 <relPosition x="0" y="15"/>
Laurent@881:                 <connection refLocalId="35" formalParameter="OUT">
Laurent@881:                   <position x="1060" y="755"/>
Laurent@881:                   <position x="1005" y="755"/>
Laurent@881:                 </connection>
Laurent@881:               </connectionPointIn>
Laurent@881:               <expression>Test_BCD_RESULT</expression>
Laurent@881:             </outVariable>
Laurent@881:             <inVariable localId="34" height="30" width="75">
Laurent@881:               <position x="785" y="740"/>
Laurent@881:               <connectionPointOut>
Laurent@881:                 <relPosition x="75" y="15"/>
Laurent@881:               </connectionPointOut>
Laurent@881:               <expression>Test_BCD</expression>
Laurent@881:             </inVariable>
Laurent@941:             <block localId="35" width="105" height="60" typeName="BCD_TO_UINT">
Laurent@941:               <position x="900" y="705"/>
Laurent@941:               <inputVariables>
Laurent@941:                 <variable formalParameter="EN">
Laurent@941:                   <connectionPointIn>
Laurent@941:                     <relPosition x="0" y="30"/>
Laurent@941:                   </connectionPointIn>
Laurent@941:                 </variable>
Laurent@881:                 <variable formalParameter="IN">
Laurent@881:                   <connectionPointIn>
Laurent@941:                     <relPosition x="0" y="50"/>
Laurent@881:                     <connection refLocalId="34">
Laurent@881:                       <position x="900" y="755"/>
Laurent@881:                       <position x="860" y="755"/>
Laurent@881:                     </connection>
Laurent@881:                   </connectionPointIn>
Laurent@881:                 </variable>
Laurent@881:               </inputVariables>
Laurent@881:               <inOutVariables/>
Laurent@881:               <outputVariables>
Laurent@941:                 <variable formalParameter="ENO">
Laurent@941:                   <connectionPointOut>
Laurent@941:                     <relPosition x="105" y="30"/>
Laurent@941:                   </connectionPointOut>
Laurent@941:                 </variable>
Laurent@881:                 <variable formalParameter="OUT">
Laurent@881:                   <connectionPointOut>
Laurent@941:                     <relPosition x="105" y="50"/>
Laurent@881:                   </connectionPointOut>
Laurent@881:                 </variable>
Laurent@881:               </outputVariables>
Laurent@881:             </block>
Laurent@881:             <inVariable localId="36" height="30" width="65">
Laurent@881:               <position x="790" y="815"/>
Laurent@881:               <connectionPointOut>
Laurent@881:                 <relPosition x="65" y="15"/>
Laurent@881:               </connectionPointOut>
Laurent@881:               <expression>Test_DT</expression>
Laurent@881:             </inVariable>
Laurent@881:             <block localId="37" width="255" height="45" typeName="DATE_AND_TIME_TO_TIME_OF_DAY">
Laurent@881:               <position x="900" y="800"/>
Laurent@881:               <inputVariables>
Laurent@881:                 <variable formalParameter="IN">
Laurent@881:                   <connectionPointIn>
Laurent@881:                     <relPosition x="0" y="30"/>
Laurent@881:                     <connection refLocalId="36">
Laurent@881:                       <position x="900" y="830"/>
Laurent@881:                       <position x="855" y="830"/>
Laurent@881:                     </connection>
Laurent@881:                   </connectionPointIn>
Laurent@881:                 </variable>
Laurent@881:               </inputVariables>
Laurent@881:               <inOutVariables/>
Laurent@881:               <outputVariables>
Laurent@881:                 <variable formalParameter="OUT">
Laurent@881:                   <connectionPointOut>
Laurent@881:                     <relPosition x="255" y="30"/>
Laurent@881:                   </connectionPointOut>
Laurent@881:                 </variable>
Laurent@881:               </outputVariables>
Laurent@881:             </block>
Laurent@881:             <block localId="38" width="195" height="45" typeName="DATE_AND_TIME_TO_DATE">
Laurent@881:               <position x="900" y="875"/>
Laurent@881:               <inputVariables>
Laurent@881:                 <variable formalParameter="IN">
Laurent@881:                   <connectionPointIn>
Laurent@881:                     <relPosition x="0" y="30"/>
Laurent@881:                     <connection refLocalId="36">
Laurent@881:                       <position x="900" y="905"/>
Laurent@881:                       <position x="877" y="905"/>
Laurent@881:                       <position x="877" y="830"/>
Laurent@881:                       <position x="855" y="830"/>
Laurent@881:                     </connection>
Laurent@881:                   </connectionPointIn>
Laurent@881:                 </variable>
Laurent@881:               </inputVariables>
Laurent@881:               <inOutVariables/>
Laurent@881:               <outputVariables>
Laurent@881:                 <variable formalParameter="OUT">
Laurent@881:                   <connectionPointOut>
Laurent@881:                     <relPosition x="195" y="30"/>
Laurent@881:                   </connectionPointOut>
Laurent@881:                 </variable>
Laurent@881:               </outputVariables>
Laurent@881:             </block>
Laurent@881:             <outVariable localId="40" height="30" width="80">
Laurent@881:               <position x="1215" y="890"/>
Laurent@881:               <connectionPointIn>
Laurent@881:                 <relPosition x="0" y="15"/>
Laurent@881:                 <connection refLocalId="38" formalParameter="OUT">
Laurent@881:                   <position x="1215" y="905"/>
Laurent@881:                   <position x="1095" y="905"/>
Laurent@881:                 </connection>
Laurent@881:               </connectionPointIn>
Laurent@881:               <expression>Test_Date</expression>
Laurent@881:             </outVariable>
Laurent@881:             <outVariable localId="42" height="30" width="90">
Laurent@881:               <position x="1100" y="985"/>
Laurent@881:               <connectionPointIn>
Laurent@881:                 <relPosition x="0" y="15"/>
Laurent@881:                 <connection refLocalId="46" formalParameter="OUT">
Laurent@881:                   <position x="1100" y="1000"/>
Laurent@881:                   <position x="1030" y="1000"/>
Laurent@881:                 </connection>
Laurent@881:               </connectionPointIn>
Laurent@881:               <expression>Test_String</expression>
Laurent@881:             </outVariable>
Laurent@881:             <outVariable localId="43" height="30" width="80">
Laurent@881:               <position x="1100" y="1055"/>
Laurent@881:               <connectionPointIn>
Laurent@881:                 <relPosition x="0" y="15"/>
Laurent@881:                 <connection refLocalId="44" formalParameter="OUT">
Laurent@881:                   <position x="1100" y="1070"/>
Laurent@881:                   <position x="1035" y="1070"/>
Laurent@881:                 </connection>
Laurent@881:               </connectionPointIn>
Laurent@881:               <expression>Test_Bool</expression>
Laurent@881:             </outVariable>
Laurent@881:             <block localId="44" width="135" height="45" typeName="STRING_TO_BOOL">
Laurent@881:               <position x="900" y="1040"/>
Laurent@881:               <inputVariables>
Laurent@881:                 <variable formalParameter="IN">
Laurent@881:                   <connectionPointIn>
Laurent@881:                     <relPosition x="0" y="30"/>
Laurent@881:                     <connection refLocalId="45">
Laurent@881:                       <position x="900" y="1070"/>
Laurent@881:                       <position x="850" y="1070"/>
Laurent@881:                     </connection>
Laurent@881:                   </connectionPointIn>
Laurent@881:                 </variable>
Laurent@881:               </inputVariables>
Laurent@881:               <inOutVariables/>
Laurent@881:               <outputVariables>
Laurent@881:                 <variable formalParameter="OUT">
Laurent@881:                   <connectionPointOut>
Laurent@881:                     <relPosition x="135" y="30"/>
Laurent@881:                   </connectionPointOut>
Laurent@881:                 </variable>
Laurent@881:               </outputVariables>
Laurent@881:             </block>
Laurent@881:             <inVariable localId="45" height="30" width="55">
Laurent@881:               <position x="795" y="1055"/>
Laurent@881:               <connectionPointOut>
Laurent@881:                 <relPosition x="55" y="15"/>
Laurent@881:               </connectionPointOut>
Laurent@881:               <expression>'True'</expression>
Laurent@881:             </inVariable>
Edouard@1145:             <block localId="46" width="130" height="45" typeName="INT_TO_STRING">
Laurent@881:               <position x="900" y="970"/>
Laurent@881:               <inputVariables>
Laurent@881:                 <variable formalParameter="IN">
Laurent@881:                   <connectionPointIn>
Laurent@881:                     <relPosition x="0" y="30"/>
Edouard@1145:                     <connection refLocalId="58">
Laurent@881:                       <position x="900" y="1000"/>
Edouard@1145:                       <position x="840" y="1000"/>
Laurent@881:                     </connection>
Laurent@881:                   </connectionPointIn>
Laurent@881:                 </variable>
Laurent@881:               </inputVariables>
Laurent@881:               <inOutVariables/>
Laurent@881:               <outputVariables>
Laurent@881:                 <variable formalParameter="OUT">
Laurent@881:                   <connectionPointOut>
Laurent@881:                     <relPosition x="130" y="30"/>
Laurent@881:                   </connectionPointOut>
Laurent@881:                 </variable>
Laurent@881:               </outputVariables>
Laurent@881:             </block>
Edouard@1401:             <inVariable localId="50" height="30" width="105" executionOrderId="0" negated="false">
Laurent@881:               <position x="200" y="1085"/>
Laurent@881:               <connectionPointOut>
Laurent@881:                 <relPosition x="105" y="15"/>
Laurent@881:               </connectionPointOut>
Laurent@881:               <expression>Global_RS.Q1</expression>
Laurent@881:             </inVariable>
Edouard@1401:             <block localId="51" width="70" height="85" typeName="AND" executionOrderId="0">
Laurent@881:               <position x="365" y="1065"/>
Laurent@881:               <inputVariables>
Laurent@881:                 <variable formalParameter="IN1" negated="true">
Laurent@881:                   <connectionPointIn>
Laurent@881:                     <relPosition x="0" y="35"/>
Edouard@1419:                     <connection refLocalId="50">
Edouard@1419:                       <position x="365" y="1100"/>
Edouard@1419:                       <position x="305" y="1100"/>
Edouard@1419:                     </connection>
Laurent@881:                   </connectionPointIn>
Laurent@881:                 </variable>
Laurent@881:                 <variable formalParameter="IN2">
Laurent@881:                   <connectionPointIn>
Laurent@881:                     <relPosition x="0" y="70"/>
Laurent@881:                     <connection refLocalId="52">
Laurent@881:                       <position x="365" y="1135"/>
Laurent@881:                       <position x="305" y="1135"/>
Laurent@881:                     </connection>
Laurent@881:                   </connectionPointIn>
Laurent@881:                 </variable>
Laurent@881:               </inputVariables>
Laurent@881:               <inOutVariables/>
Laurent@881:               <outputVariables>
Laurent@881:                 <variable formalParameter="OUT">
Laurent@881:                   <connectionPointOut>
Laurent@881:                     <relPosition x="70" y="35"/>
Laurent@881:                   </connectionPointOut>
Laurent@881:                 </variable>
Laurent@881:               </outputVariables>
Laurent@881:             </block>
Laurent@881:             <inVariable localId="52" height="30" width="95">
Laurent@881:               <position x="210" y="1120"/>
Laurent@881:               <connectionPointOut>
Laurent@881:                 <relPosition x="95" y="15"/>
Laurent@881:               </connectionPointOut>
Laurent@881:               <expression>BOOL#TRUE</expression>
Laurent@881:             </inVariable>
Edouard@1401:             <outVariable localId="13" height="30" width="105" executionOrderId="0" negated="false">
Laurent@881:               <position x="510" y="1085"/>
Laurent@881:               <connectionPointIn>
Laurent@881:                 <relPosition x="0" y="15"/>
Edouard@1419:                 <connection refLocalId="51" formalParameter="OUT">
Edouard@1419:                   <position x="510" y="1100"/>
Edouard@1419:                   <position x="435" y="1100"/>
Edouard@1419:                 </connection>
Laurent@881:               </connectionPointIn>
Laurent@881:               <expression>Global_RS.S</expression>
Laurent@881:             </outVariable>
Edouard@1401:             <outVariable localId="20" height="30" width="105" executionOrderId="0" negated="false">
Laurent@881:               <position x="510" y="1200"/>
Laurent@881:               <connectionPointIn>
Laurent@881:                 <relPosition x="0" y="15"/>
Edouard@1419:                 <connection refLocalId="41" formalParameter="OUT">
Edouard@1419:                   <position x="510" y="1215"/>
Edouard@1419:                   <position x="435" y="1215"/>
Edouard@1419:                 </connection>
Laurent@881:               </connectionPointIn>
Laurent@881:               <expression>Global_RS.R1</expression>
Laurent@881:             </outVariable>
Edouard@1401:             <inVariable localId="24" height="30" width="105" executionOrderId="0" negated="false">
Laurent@881:               <position x="200" y="1200"/>
Laurent@881:               <connectionPointOut>
Laurent@881:                 <relPosition x="105" y="15"/>
Laurent@881:               </connectionPointOut>
Laurent@881:               <expression>Global_RS.Q1</expression>
Laurent@881:             </inVariable>
Edouard@1401:             <block localId="41" width="70" height="85" typeName="OR" executionOrderId="0">
Laurent@881:               <position x="365" y="1180"/>
Laurent@881:               <inputVariables>
Laurent@881:                 <variable formalParameter="IN1">
Laurent@881:                   <connectionPointIn>
Laurent@881:                     <relPosition x="0" y="35"/>
Edouard@1419:                     <connection refLocalId="24">
Edouard@1419:                       <position x="365" y="1215"/>
Edouard@1419:                       <position x="305" y="1215"/>
Edouard@1419:                     </connection>
Laurent@881:                   </connectionPointIn>
Laurent@881:                 </variable>
Laurent@881:                 <variable formalParameter="IN2">
Laurent@881:                   <connectionPointIn>
Laurent@881:                     <relPosition x="0" y="70"/>
Laurent@881:                     <connection refLocalId="48">
Laurent@881:                       <position x="365" y="1250"/>
Laurent@881:                       <position x="305" y="1250"/>
Laurent@881:                     </connection>
Laurent@881:                   </connectionPointIn>
Laurent@881:                 </variable>
Laurent@881:               </inputVariables>
Laurent@881:               <inOutVariables/>
Laurent@881:               <outputVariables>
Laurent@881:                 <variable formalParameter="OUT">
Laurent@881:                   <connectionPointOut>
Laurent@881:                     <relPosition x="70" y="35"/>
Laurent@881:                   </connectionPointOut>
Laurent@881:                 </variable>
Laurent@881:               </outputVariables>
Laurent@881:             </block>
Laurent@881:             <inVariable localId="48" height="30" width="100">
Laurent@881:               <position x="205" y="1235"/>
Laurent@881:               <connectionPointOut>
Laurent@881:                 <relPosition x="100" y="15"/>
Laurent@881:               </connectionPointOut>
Laurent@881:               <expression>BOOL#FALSE</expression>
Laurent@881:             </inVariable>
Laurent@941:             <outVariable localId="53" height="30" width="115">
Laurent@941:               <position x="1060" y="700"/>
Laurent@941:               <connectionPointIn>
Laurent@941:                 <relPosition x="0" y="15"/>
Laurent@941:                 <connection refLocalId="35" formalParameter="ENO">
Laurent@941:                   <position x="1060" y="715"/>
Laurent@941:                   <position x="1032" y="715"/>
Laurent@941:                   <position x="1032" y="735"/>
Laurent@941:                   <position x="1005" y="735"/>
Laurent@941:                 </connection>
Laurent@941:               </connectionPointIn>
Laurent@941:               <expression>Test_BCD_ENO</expression>
Laurent@941:             </outVariable>
Laurent@941:             <outVariable localId="54" height="30" width="135">
Laurent@941:               <position x="1565" y="815"/>
Laurent@941:               <connectionPointIn>
Laurent@941:                 <relPosition x="0" y="15"/>
Laurent@941:                 <connection refLocalId="55" formalParameter="OUT">
Laurent@941:                   <position x="1565" y="830"/>
Laurent@941:                   <position x="1490" y="830"/>
Laurent@941:                 </connection>
Laurent@941:               </connectionPointIn>
Laurent@941:               <expression>Test_TOD_STRING</expression>
Laurent@941:             </outVariable>
Laurent@941:             <block localId="55" width="125" height="45" typeName="TOD_TO_STRING">
Laurent@941:               <position x="1365" y="800"/>
Laurent@941:               <inputVariables>
Laurent@941:                 <variable formalParameter="IN">
Laurent@941:                   <connectionPointIn>
Laurent@941:                     <relPosition x="0" y="30"/>
Laurent@941:                     <connection refLocalId="39">
Laurent@941:                       <position x="1365" y="830"/>
Laurent@941:                       <position x="1290" y="830"/>
Laurent@941:                     </connection>
Laurent@941:                   </connectionPointIn>
Laurent@941:                 </variable>
Laurent@941:               </inputVariables>
Laurent@941:               <inOutVariables/>
Laurent@941:               <outputVariables>
Laurent@941:                 <variable formalParameter="OUT">
Laurent@941:                   <connectionPointOut>
Laurent@941:                     <relPosition x="125" y="30"/>
Laurent@941:                   </connectionPointOut>
Laurent@941:                 </variable>
Laurent@941:               </outputVariables>
Laurent@941:             </block>
Laurent@941:             <inOutVariable localId="39" height="30" width="75">
Laurent@941:               <position x="1215" y="815"/>
Laurent@941:               <connectionPointIn>
Laurent@941:                 <relPosition x="0" y="15"/>
Laurent@941:                 <connection refLocalId="37" formalParameter="OUT">
Laurent@941:                   <position x="1215" y="830"/>
Laurent@941:                   <position x="1155" y="830"/>
Laurent@941:                 </connection>
Laurent@941:               </connectionPointIn>
Laurent@941:               <connectionPointOut>
Laurent@941:                 <relPosition x="75" y="15"/>
Laurent@941:               </connectionPointOut>
Laurent@941:               <expression>Test_TOD</expression>
Laurent@941:             </inOutVariable>
Edouard@1013:             <inVariable localId="49" height="30" width="30">
Edouard@1013:               <position x="765" y="1200"/>
Edouard@1013:               <connectionPointOut>
Edouard@1013:                 <relPosition x="30" y="15"/>
Edouard@1013:               </connectionPointOut>
Edouard@1013:               <expression>42</expression>
Edouard@1013:             </inVariable>
Edouard@1013:             <outVariable localId="57" height="30" width="50">
Edouard@1013:               <position x="845" y="1200"/>
Edouard@1013:               <connectionPointIn>
Edouard@1013:                 <relPosition x="0" y="15"/>
Edouard@1013:                 <connection refLocalId="49">
Edouard@1013:                   <position x="845" y="1215"/>
Edouard@1013:                   <position x="795" y="1215"/>
Edouard@1013:                 </connection>
Edouard@1013:               </connectionPointIn>
Edouard@1013:               <expression>TOTO</expression>
Edouard@1013:             </outVariable>
Edouard@1013:             <outVariable localId="56" height="30" width="50">
Edouard@1013:               <position x="845" y="1240"/>
Edouard@1013:               <connectionPointIn>
Edouard@1013:                 <relPosition x="0" y="15"/>
Edouard@1013:                 <connection refLocalId="49">
Edouard@1013:                   <position x="845" y="1255"/>
Edouard@1013:                   <position x="820" y="1255"/>
Edouard@1013:                   <position x="820" y="1215"/>
Edouard@1013:                   <position x="795" y="1215"/>
Edouard@1013:                 </connection>
Edouard@1013:               </connectionPointIn>
Edouard@1013:               <expression>TUTU</expression>
Edouard@1013:             </outVariable>
Edouard@1145:             <inVariable localId="58" height="30" width="145">
Edouard@1145:               <position x="715" y="985"/>
Edouard@1145:               <connectionPointOut>
Edouard@1145:                 <relPosition x="145" y="15"/>
Edouard@1145:               </connectionPointOut>
Edouard@1145:               <expression>Second_Python_Var</expression>
Edouard@1145:             </inVariable>
Edouard@1145:             <outVariable localId="47" height="30" width="125">
Edouard@1145:               <position x="400" y="975"/>
Edouard@1145:               <connectionPointIn>
Edouard@1145:                 <relPosition x="0" y="15"/>
Edouard@1145:                 <connection refLocalId="59">
Edouard@1145:                   <position x="400" y="990"/>
Edouard@1145:                   <position x="330" y="990"/>
Edouard@1145:                 </connection>
Edouard@1145:               </connectionPointIn>
Edouard@1145:               <expression>Test_Python_Var</expression>
Edouard@1145:             </outVariable>
Edouard@1145:             <inVariable localId="59" height="30" width="30">
Edouard@1145:               <position x="300" y="975"/>
Edouard@1145:               <connectionPointOut>
Edouard@1145:                 <relPosition x="30" y="15"/>
Edouard@1145:               </connectionPointOut>
Edouard@1145:               <expression>23</expression>
Edouard@1145:             </inVariable>
Edouard@1419:             <block localId="61" typeName="function0" executionOrderId="0" height="45" width="110">
Edouard@1419:               <position x="1680" y="255"/>
Edouard@1419:               <inputVariables>
Edouard@1419:                 <variable formalParameter="LocalVar0">
Edouard@1419:                   <connectionPointIn>
Edouard@1419:                     <relPosition x="0" y="30"/>
Edouard@1419:                     <connection refLocalId="62">
Edouard@1419:                       <position x="1680" y="285"/>
Edouard@1419:                       <position x="1640" y="285"/>
Edouard@1419:                     </connection>
Edouard@1419:                   </connectionPointIn>
Edouard@1419:                 </variable>
Edouard@1419:               </inputVariables>
Edouard@1419:               <inOutVariables/>
Edouard@1419:               <outputVariables>
Edouard@1419:                 <variable formalParameter="OUT">
Edouard@1419:                   <connectionPointOut>
Edouard@1419:                     <relPosition x="110" y="30"/>
Edouard@1419:                   </connectionPointOut>
Edouard@1419:                 </variable>
Edouard@1419:               </outputVariables>
Edouard@1419:             </block>
Edouard@1419:             <inVariable localId="62" executionOrderId="0" height="30" width="55" negated="false">
Edouard@1419:               <position x="1585" y="270"/>
Edouard@1419:               <connectionPointOut>
Edouard@1419:                 <relPosition x="55" y="15"/>
Edouard@1419:               </connectionPointOut>
Edouard@1419:               <expression>fefvsd</expression>
Edouard@1419:             </inVariable>
Edouard@1419:             <outVariable localId="63" executionOrderId="0" height="30" width="55" negated="false">
Edouard@1419:               <position x="1825" y="270"/>
Edouard@1419:               <connectionPointIn>
Edouard@1419:                 <relPosition x="0" y="15"/>
Edouard@1419:                 <connection refLocalId="61" formalParameter="OUT">
Edouard@1419:                   <position x="1825" y="285"/>
Edouard@1419:                   <position x="1790" y="285"/>
Edouard@1419:                 </connection>
Edouard@1419:               </connectionPointIn>
Edouard@1419:               <expression>fefvsd</expression>
Edouard@1419:             </outVariable>
etisserant@280:           </FBD>
etisserant@280:         </body>
etisserant@280:       </pou>
Edouard@859:       <pou name="C_Pragma" pouType="functionBlock">
Edouard@859:         <interface>
Edouard@859:           <outputVars>
Edouard@859:             <variable name="OUT">
Edouard@859:               <type>
Edouard@859:                 <SINT/>
Edouard@859:               </type>
Edouard@859:             </variable>
Edouard@859:           </outputVars>
Edouard@859:           <inputVars>
Edouard@859:             <variable name="IN">
Edouard@859:               <type>
Edouard@859:                 <SINT/>
Edouard@859:               </type>
Edouard@859:             </variable>
Edouard@859:           </inputVars>
Edouard@861:           <localVars>
Edouard@861:             <variable name="COORDS">
Edouard@861:               <type>
Edouard@861:                 <array>
Edouard@861:                   <dimension lower="0" upper="5"/>
Edouard@861:                   <baseType>
Edouard@861:                     <SINT/>
Edouard@861:                   </baseType>
Edouard@861:                 </array>
Edouard@861:               </type>
Edouard@861:               <initialValue>
Edouard@861:                 <arrayValue>
Edouard@861:                   <value>
Edouard@861:                     <simpleValue value="54"/>
Edouard@861:                   </value>
Edouard@861:                   <value>
Edouard@861:                     <simpleValue value="55"/>
Edouard@861:                   </value>
Edouard@861:                   <value>
Edouard@861:                     <simpleValue value="56"/>
Edouard@861:                   </value>
Edouard@861:                   <value>
Edouard@861:                     <simpleValue value="57"/>
Edouard@861:                   </value>
Edouard@861:                   <value>
Edouard@861:                     <simpleValue value="58"/>
Edouard@861:                   </value>
Edouard@861:                   <value>
Edouard@861:                     <simpleValue value="59"/>
Edouard@861:                   </value>
Edouard@861:                 </arrayValue>
Edouard@861:               </initialValue>
Edouard@861:             </variable>
Edouard@861:             <variable name="SMURF">
Edouard@861:               <type>
Edouard@861:                 <derived name="CPLX_TYPE"/>
Edouard@861:               </type>
Edouard@861:             </variable>
Edouard@861:           </localVars>
Laurent@881:           <externalVars>
Laurent@881:             <variable name="Global_RS">
Laurent@881:               <type>
Laurent@881:                 <derived name="RS"/>
Laurent@881:               </type>
Laurent@881:             </variable>
Laurent@881:           </externalVars>
Edouard@859:         </interface>
Edouard@859:         <body>
Edouard@859:           <ST>
Edouard@1401:             <xhtml:p><![CDATA[(* hereafter is a C pragma accessing FB interface in a clean way *)
Edouard@861: {{
Edouard@861:   char toPLC;
Edouard@861:   char fromPLC = GetFbVar(IN);
Laurent@1086:   extern int PLC_C_Call(char, char *);
Edouard@861:   if(PLC_C_Call(fromPLC, &toPLC)){
Edouard@861:     SetFbVar(OUT, toPLC);
Edouard@861:   }
Edouard@861:   if(0){
Edouard@861:     /* that code demonstrate C access to complex types */
Edouard@861:     char somebyte = GetFbVar(COORDS, .table[3]);
Edouard@861:     SetFbVar(SMURF, somebyte, .FIRSTBYTE);
Edouard@861:     SetFbVar(COORDS, somebyte, .table[4]);
Edouard@861:   }
Edouard@861: }}
Edouard@859: (* If you do not use __GET_VAR and _SET_VAR macro, expect unexpected *)
Laurent@881: Global_RS();
Edouard@1401: ]]></xhtml:p>
Edouard@859:           </ST>
Edouard@859:         </body>
Edouard@859:       </pou>
Laurent@918:       <pou name="norm" pouType="function">
Laurent@918:         <interface>
Laurent@918:           <returnType>
Laurent@918:             <REAL/>
Laurent@918:           </returnType>
Laurent@918:           <inputVars>
Laurent@918:             <variable name="IN1">
Laurent@918:               <type>
Laurent@918:                 <REAL/>
Laurent@918:               </type>
Laurent@918:             </variable>
Laurent@918:             <variable name="IN2">
Laurent@918:               <type>
Laurent@918:                 <REAL/>
Laurent@918:               </type>
Laurent@918:             </variable>
Laurent@918:           </inputVars>
Laurent@918:         </interface>
Laurent@918:         <body>
Laurent@918:           <ST>
Edouard@1401:             <xhtml:p><![CDATA[NORM := SQRT(IN1 * IN1 + IN2 * IN2);]]></xhtml:p>
Laurent@918:           </ST>
Laurent@918:         </body>
Laurent@918:       </pou>
Edouard@1419:       <pou name="function0" pouType="function">
Edouard@1419:         <interface>
Edouard@1419:           <returnType>
Edouard@1419:             <derived name="datatype0"/>
Edouard@1419:           </returnType>
Edouard@1419:           <inputVars>
Edouard@1419:             <variable name="LocalVar0">
Edouard@1419:               <type>
Edouard@1419:                 <derived name="datatype0"/>
Edouard@1419:               </type>
Edouard@1419:             </variable>
Edouard@1419:           </inputVars>
Edouard@1419:         </interface>
Edouard@1419:         <body>
Edouard@1419:           <ST>
Edouard@1419:             <xhtml:p><![CDATA[function0 := LocalVar0;
Edouard@1419: ]]></xhtml:p>
Edouard@1419:           </ST>
Edouard@1419:         </body>
Edouard@1419:       </pou>
etisserant@280:     </pous>
etisserant@280:   </types>
etisserant@280:   <instances>
etisserant@280:     <configurations>
Edouard@1452:       <configuration name="config">
etisserant@280:         <resource name="res_pytest">
Laurent@881:           <task name="pytest_task" interval="T#1ms" priority="0"/>
Laurent@918:           <globalVars>
Laurent@918:             <variable name="TOTO">
Laurent@918:               <type>
Laurent@918:                 <INT/>
Laurent@918:               </type>
Laurent@918:             </variable>
Laurent@918:           </globalVars>
laurent@366:           <pouInstance name="pytest_instance" typeName="main_pytest"/>
etisserant@280:         </resource>
Laurent@881:         <globalVars>
Laurent@881:           <variable name="Global_RS">
Laurent@881:             <type>
Laurent@881:               <derived name="RS"/>
Laurent@881:             </type>
Laurent@881:           </variable>
Edouard@1013:           <variable name="TUTU">
Edouard@1013:             <type>
Edouard@1013:               <INT/>
Edouard@1013:             </type>
Edouard@1013:           </variable>
Laurent@881:         </globalVars>
etisserant@280:       </configuration>
etisserant@280:     </configurations>
etisserant@280:   </instances>
etisserant@280: </project>