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>