# HG changeset patch # User lbessard # Date 1231959009 -3600 # Node ID b9ec99fab9fcc9b33f826971ecd697eee2ab2c60 # Parent a47081eb6cec298b993ec8960d35394a53c0dae7 Adding example of path generator program diff -r a47081eb6cec -r b9ec99fab9fc tests/motion/beremiz.xml --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/motion/beremiz.xml Wed Jan 14 19:50:09 2009 +0100 @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="UTF-8"?> +<BeremizRoot URI_location="LOCAL://"> + <TargetType> + <Linux CFLAGS="-g -fPIC" LDFLAGS="-g -fPIC"/> + </TargetType> +</BeremizRoot> diff -r a47081eb6cec -r b9ec99fab9fc tests/motion/plc.xml --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/motion/plc.xml Wed Jan 14 19:50:09 2009 +0100 @@ -0,0 +1,585 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xmlns="http://www.plcopen.org/xml/tc6.xsd" + xmlns:xhtml="http://www.w3.org/1999/xhtml" + xsi:schemaLocation="http://www.plcopen.org/xml/tc6.xsd"> + <fileHeader companyName="Lolitech" + productName="GenTraj" + productVersion="1.0" + creationDateTime="2009-01-13T12:15:00"/> + <contentHeader name="GenTraj" + modificationDateTime="2009-01-14T20:10:13"> + <coordinateInfo> + <fbd> + <scaling x="0" y="0"/> + </fbd> + <ld> + <scaling x="0" y="0"/> + </ld> + <sfc> + <scaling x="0" y="0"/> + </sfc> + </coordinateInfo> + </contentHeader> + <types> + <dataTypes/> + <pous> + <pou name="GenTraj" pouType="functionBlock"> + <interface> + <inputVars> + <variable name="Period"> + <type> + <REAL/> + </type> + </variable> + <variable name="Gmvt"> + <type> + <REAL/> + </type> + </variable> + <variable name="Vmvt"> + <type> + <REAL/> + </type> + </variable> + <variable name="P0"> + <type> + <REAL/> + </type> + </variable> + <variable name="V0"> + <type> + <REAL/> + </type> + </variable> + <variable name="Pf"> + <type> + <REAL/> + </type> + </variable> + <variable name="Vf"> + <type> + <REAL/> + </type> + </variable> + </inputVars> + <outputVars> + <variable name="Pn"> + <type> + <REAL/> + </type> + </variable> + <variable name="Vn"> + <type> + <REAL/> + </type> + </variable> + <variable name="Gn"> + <type> + <REAL/> + </type> + </variable> + </outputVars> + <localVars> + <variable name="P"> + <type> + <REAL/> + </type> + </variable> + <variable name="F"> + <type> + <REAL/> + </type> + </variable> + <variable name="Ps2"> + <type> + <REAL/> + </type> + </variable> + <variable name="Fs3"> + <type> + <REAL/> + </type> + </variable> + <variable name="delta"> + <type> + <REAL/> + </type> + </variable> + <variable name="Va"> + <type> + <REAL/> + </type> + </variable> + <variable name="Vb"> + <type> + <REAL/> + </type> + </variable> + <variable name="Vaut"> + <type> + <REAL/> + </type> + </variable> + </localVars> + </interface> + <body> + <ST> +<![CDATA[IF Period <> P THEN + P := Period; + F := 1.0 / P; + Ps2 := P / 2.0; + Fs3 := F / 3.0; +END_IF; + +IF Pf <> Pn THEN + delta := Pf - P0 - V0 * P; + + Va := SQRT(ABS(2.0 * Gmvt * delta) + Vf * Vf); + Vb := Vf + delta * Fs3; + + IF Va > ABS(Vb) THEN + Vaut := MIN(ABS(Vb), Vmvt); + IF Vb < 0.0 THEN + Vaut := -Vaut; + END_IF; + ELSE + Vaut := MIN(Va, Vmvt); + IF Pf < P0 THEN + Vaut := -Vaut; + END_IF; + END_IF; + + Gn := MIN(ABS((Vaut - V0) * F), Gmvt); + IF Vaut < V0 THEN + Gn := -Gn; + END_IF; + +END_IF; + +Vn := V0 + Gn * P; + +Pn := P0 + (Vn + V0) * Ps2; + +IF (P0 >= Pf) <> (Pn >= Pf) AND Vf <> 0.0 THEN + Pn := Pf; +END_IF; + +]]> + </ST> + </body> + </pou> + <pou name="TestMotion" pouType="program"> + <interface> + <localVars> + <variable name="GO"> + <type> + <BOOL/> + </type> + <initialValue> + <simpleValue value="TRUE"/> + </initialValue> + </variable> + <variable name="TRIG"> + <type> + <BOOL/> + </type> + </variable> + <variable name="GenTraj1"> + <type> + <derived name="GenTraj"/> + </type> + </variable> + <variable name="py_eval"> + <type> + <derived name="python_eval"/> + </type> + </variable> + <variable name="RS1"> + <type> + <derived name="RS"/> + </type> + </variable> + </localVars> + </interface> + <body> + <FBD> + <inVariable localId="2" height="25" width="63"> + <position x="203" y="208"/> + <connectionPointOut> + <relPosition x="63" y="12"/> + </connectionPointOut> + <expression>GO</expression> + </inVariable> + <inVariable localId="4" height="25" width="100"> + <position x="295" y="312"/> + <connectionPointOut> + <relPosition x="100" y="12"/> + </connectionPointOut> + <expression>REAL#0.1</expression> + </inVariable> + <inVariable localId="6" height="25" width="100"> + <position x="294" y="345"/> + <connectionPointOut> + <relPosition x="100" y="12"/> + </connectionPointOut> + <expression>REAL#1.0</expression> + </inVariable> + <inVariable localId="7" height="25" width="99"> + <position x="294" y="378"/> + <connectionPointOut> + <relPosition x="99" y="12"/> + </connectionPointOut> + <expression>REAL#1.0</expression> + </inVariable> + <inVariable localId="8" height="25" width="100"> + <position x="292" y="477"/> + <connectionPointOut> + <relPosition x="100" y="12"/> + </connectionPointOut> + <expression>REAL#10.0</expression> + </inVariable> + <block localId="9" width="178" height="290" typeName="GenTraj" instanceName="GenTraj1"> + <position x="488" y="255"/> + <inputVariables> + <variable formalParameter="EN"> + <connectionPointIn> + <relPosition x="0" y="36"/> + <connection refLocalId="13" formalParameter="Q1"> + <position x="488" y="291"/> + <position x="442" y="291"/> + <position x="442" y="259"/> + <position x="396" y="259"/> + </connection> + </connectionPointIn> + </variable> + <variable formalParameter="Period"> + <connectionPointIn> + <relPosition x="0" y="69"/> + <connection refLocalId="4"> + <position x="488" y="324"/> + <position x="395" y="324"/> + </connection> + </connectionPointIn> + </variable> + <variable formalParameter="Gmvt"> + <connectionPointIn> + <relPosition x="0" y="102"/> + <connection refLocalId="6"> + <position x="488" y="357"/> + <position x="394" y="357"/> + </connection> + </connectionPointIn> + </variable> + <variable formalParameter="Vmvt"> + <connectionPointIn> + <relPosition x="0" y="135"/> + <connection refLocalId="7"> + <position x="488" y="390"/> + <position x="393" y="390"/> + </connection> + </connectionPointIn> + </variable> + <variable formalParameter="P0"> + <connectionPointIn> + <relPosition x="0" y="168"/> + <connection refLocalId="9" formalParameter="Pn"> + <position x="488" y="423"/> + <position x="430" y="423"/> + <position x="430" y="607"/> + <position x="724" y="607"/> + <position x="724" y="324"/> + <position x="666" y="324"/> + </connection> + </connectionPointIn> + </variable> + <variable formalParameter="V0"> + <connectionPointIn> + <relPosition x="0" y="201"/> + <connection refLocalId="9" formalParameter="Vn"> + <position x="488" y="456"/> + <position x="453" y="456"/> + <position x="453" y="577"/> + <position x="696" y="577"/> + <position x="696" y="357"/> + <position x="666" y="357"/> + </connection> + </connectionPointIn> + </variable> + <variable formalParameter="Pf"> + <connectionPointIn> + <relPosition x="0" y="234"/> + <connection refLocalId="8"> + <position x="488" y="489"/> + <position x="392" y="489"/> + </connection> + </connectionPointIn> + </variable> + <variable formalParameter="Vf"> + <connectionPointIn> + <relPosition x="0" y="267"/> + <connection refLocalId="10"> + <position x="488" y="522"/> + <position x="392" y="522"/> + </connection> + </connectionPointIn> + </variable> + </inputVariables> + <inOutVariables/> + <outputVariables> + <variable formalParameter="ENO"> + <connectionPointOut> + <relPosition x="178" y="36"/> + </connectionPointOut> + </variable> + <variable formalParameter="Pn"> + <connectionPointOut> + <relPosition x="178" y="69"/> + </connectionPointOut> + </variable> + <variable formalParameter="Vn"> + <connectionPointOut> + <relPosition x="178" y="102"/> + </connectionPointOut> + </variable> + <variable formalParameter="Gn"> + <connectionPointOut> + <relPosition x="178" y="135"/> + </connectionPointOut> + </variable> + </outputVariables> + </block> + <inVariable localId="10" height="25" width="99"> + <position x="293" y="510"/> + <connectionPointOut> + <relPosition x="99" y="12"/> + </connectionPointOut> + <expression>REAL#0.0</expression> + </inVariable> + <block localId="11" width="75" height="70" typeName="EQ"> + <position x="197" y="247"/> + <inputVariables> + <variable formalParameter="IN1"> + <connectionPointIn> + <relPosition x="0" y="32"/> + <connection refLocalId="9" formalParameter="Pn"> + <position x="197" y="279"/> + <position x="145" y="279"/> + <position x="145" y="629"/> + <position x="724" y="629"/> + <position x="724" y="324"/> + <position x="666" y="324"/> + </connection> + </connectionPointIn> + </variable> + <variable formalParameter="IN2"> + <connectionPointIn> + <relPosition x="0" y="57"/> + <connection refLocalId="8"> + <position x="197" y="304"/> + <position x="176" y="304"/> + <position x="176" y="433"/> + <position x="409" y="433"/> + <position x="409" y="489"/> + <position x="392" y="489"/> + </connection> + </connectionPointIn> + </variable> + </inputVariables> + <inOutVariables/> + <outputVariables> + <variable formalParameter="OUT"> + <connectionPointOut> + <relPosition x="75" y="32"/> + </connectionPointOut> + </variable> + </outputVariables> + </block> + <block localId="12" width="120" height="87" typeName="python_eval" instanceName="py_eval"> + <position x="318" y="73"/> + <inputVariables> + <variable formalParameter="TRIG"> + <connectionPointIn> + <relPosition x="0" y="36"/> + <connection refLocalId="15" formalParameter="OUT"> + <position x="318" y="109"/> + <position x="225" y="109"/> + </connection> + </connectionPointIn> + </variable> + <variable formalParameter="CODE"> + <connectionPointIn> + <relPosition x="0" y="69"/> + <connection refLocalId="14"> + <position x="318" y="142"/> + <position x="280" y="142"/> + </connection> + </connectionPointIn> + </variable> + </inputVariables> + <inOutVariables/> + <outputVariables> + <variable formalParameter="ACK"> + <connectionPointOut> + <relPosition x="120" y="36"/> + </connectionPointOut> + </variable> + <variable formalParameter="RESULT"> + <connectionPointOut> + <relPosition x="120" y="69"/> + </connectionPointOut> + </variable> + </outputVariables> + </block> + <block localId="13" width="55" height="60" typeName="RS" instanceName="RS1"> + <position x="341" y="229"/> + <inputVariables> + <variable formalParameter="S"> + <connectionPointIn> + <relPosition x="0" y="30"/> + <connection refLocalId="2"> + <position x="341" y="259"/> + <position x="303" y="259"/> + <position x="303" y="220"/> + <position x="266" y="220"/> + </connection> + </connectionPointIn> + </variable> + <variable formalParameter="R1"> + <connectionPointIn> + <relPosition x="0" y="50"/> + <connection refLocalId="11" formalParameter="OUT"> + <position x="341" y="279"/> + <position x="272" y="279"/> + </connection> + </connectionPointIn> + </variable> + </inputVariables> + <inOutVariables/> + <outputVariables> + <variable formalParameter="Q1"> + <connectionPointOut> + <relPosition x="55" y="30"/> + </connectionPointOut> + </variable> + </outputVariables> + </block> + <inVariable localId="14" height="25" width="50"> + <position x="230" y="130"/> + <connectionPointOut> + <relPosition x="50" y="12"/> + </connectionPointOut> + <expression>'GO'</expression> + </inVariable> + <block localId="15" width="65" height="40" typeName="NOT"> + <position x="160" y="79"/> + <inputVariables> + <variable formalParameter="IN"> + <connectionPointIn> + <relPosition x="0" y="30"/> + <connection refLocalId="16"> + <position x="160" y="109"/> + <position x="118" y="109"/> + </connection> + </connectionPointIn> + </variable> + </inputVariables> + <inOutVariables/> + <outputVariables> + <variable formalParameter="OUT"> + <connectionPointOut> + <relPosition x="65" y="30"/> + </connectionPointOut> + </variable> + </outputVariables> + </block> + <inOutVariable localId="16" height="25" width="50"> + <position x="68" y="97"/> + <connectionPointIn> + <relPosition x="0" y="12"/> + <connection refLocalId="15" formalParameter="OUT"> + <position x="68" y="109"/> + <position x="42" y="109"/> + <position x="42" y="50"/> + <position x="262" y="50"/> + <position x="262" y="109"/> + <position x="225" y="109"/> + </connection> + </connectionPointIn> + <connectionPointOut> + <relPosition x="50" y="12"/> + </connectionPointOut> + <expression>TRIG</expression> + </inOutVariable> + <block localId="17" width="140" height="40" typeName="STRING_TO_INT"> + <position x="486" y="112"/> + <inputVariables> + <variable formalParameter="IN"> + <connectionPointIn> + <relPosition x="0" y="30"/> + <connection refLocalId="12" formalParameter="RESULT"> + <position x="486" y="142"/> + <position x="438" y="142"/> + </connection> + </connectionPointIn> + </variable> + </inputVariables> + <inOutVariables/> + <outputVariables> + <variable formalParameter="OUT"> + <connectionPointOut> + <relPosition x="140" y="30"/> + </connectionPointOut> + </variable> + </outputVariables> + </block> + <block localId="18" width="120" height="40" typeName="INT_TO_BOOL"> + <position x="671" y="112"/> + <inputVariables> + <variable formalParameter="IN"> + <connectionPointIn> + <relPosition x="0" y="30"/> + <connection refLocalId="17" formalParameter="OUT"> + <position x="671" y="142"/> + <position x="626" y="142"/> + </connection> + </connectionPointIn> + </variable> + </inputVariables> + <inOutVariables/> + <outputVariables> + <variable formalParameter="OUT"> + <connectionPointOut> + <relPosition x="120" y="30"/> + </connectionPointOut> + </variable> + </outputVariables> + </block> + <outVariable localId="19" height="25" width="63"> + <position x="826" y="130"/> + <connectionPointIn> + <relPosition x="0" y="12"/> + <connection refLocalId="18" formalParameter="OUT"> + <position x="826" y="142"/> + <position x="791" y="142"/> + </connection> + </connectionPointIn> + <expression>GO</expression> + </outVariable> + </FBD> + </body> + </pou> + </pous> + </types> + <instances> + <configurations> + <configuration name="config"> + <resource name="ress"> + <task name="MAIN_TASK" interval="00:00:00.100000" priority="0"> + <pouInstance name="MAIN_INSTANCE" type="TestMotion"/> + </task> + </resource> + </configuration> + </configurations> + </instances> +</project> diff -r a47081eb6cec -r b9ec99fab9fc tests/motion/runtime.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/motion/runtime.py Wed Jan 14 19:50:09 2009 +0100 @@ -0,0 +1,1 @@ +GO = 0 \ No newline at end of file