Adding example of path generator program
authorlbessard
Wed, 14 Jan 2009 19:50:09 +0100
changeset 293 b9ec99fab9fc
parent 292 a47081eb6cec
child 294 39b3d4a2195b
Adding example of path generator program
tests/motion/beremiz.xml
tests/motion/plc.xml
tests/motion/runtime.py
--- /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>
--- /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>
--- /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