examples/example.xml
author etisserant
Wed, 31 Jan 2007 16:31:39 +0100
changeset 0 b622defdfd98
child 1 e9d01d824086
permissions -rw-r--r--
PLCOpenEditor initial commit. 31/01/07.
<?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 http://www.plcopen.org/xml/tc6.xsd">
  <fileHeader companyName="Lolitech"
              productName="PLCOpenEditorExample"
              productVersion="1.0"
              creationDateTime="2006-09-07 18:52:43"/>
  <contentHeader name="Test">
    <coordinateInfo>
      <fbd>
        <scaling y="0" x="0"/>
      </fbd>
      <ld>
        <scaling y="0" x="0"/>
      </ld>
      <sfc>
        <scaling y="0" x="0"/>
      </sfc>
    </coordinateInfo>
  </contentHeader>
  <types>
    <dataTypes/>
    <pous>
      <pou name="FBDTest" pouType="function">
        <interface>
          <returnType>
            <BOOL/>
          </returnType>
          <inputVars>
            <variable name="IN1">
              <type>
                <BOOL/>
              </type>
              <initialValue>
                <simpleValue value="false"/>
              </initialValue>
            </variable>
            <variable name="IN2">
              <type>
                <BOOL/>
              </type>
              <initialValue>
                <arrayValue>
                  <value>
                    <simpleValue value="4"/>
                  </value>
                  <value>
                    <arrayValue>
                      <value>
                        <simpleValue value="0"/>
                      </value>
                      <value>
                        <simpleValue value="1"/>
                      </value>
                    </arrayValue>
                  </value>
                </arrayValue>
              </initialValue>
            </variable>
            <variable name="IN3">
              <type>
                <BOOL/>
              </type>
            </variable>
          </inputVars>
        </interface>
        <body>
          <FBD>
            <inVariable localId="2" width="89" height="27">
              <position y="84" x="64"/>
              <connectionPointOut>
                <relPosition y="13" x="89"/>
              </connectionPointOut>
              <expression>IN1</expression>
            </inVariable>
            <inVariable localId="3" width="90" height="27">
              <position y="204" x="63"/>
              <connectionPointOut>
                <relPosition y="13" x="90"/>
              </connectionPointOut>
              <expression>IN2</expression>
            </inVariable>
            <outVariable localId="4" width="95" height="33">
              <position y="182" x="587"/>
              <connectionPointIn>
                <relPosition y="16" x="0"/>
                <connection refLocalId="11">
                  <position y="198" x="587"/>
                  <position y="198" x="517"/>
                </connection>
              </connectionPointIn>
              <expression>FBDTest</expression>
            </outVariable>
            <block localId="6" height="84" width="99" typeName="AND">
              <position y="105" x="235"/>
              <inputVariables>
                <variable formalParameter="" edge="rising">
                  <connectionPointIn>
                    <relPosition y="36" x="0"/>
                    <connection refLocalId="2">
                      <position y="141" x="235"/>
                      <position y="141" x="190"/>
                      <position y="97" x="190"/>
                      <position y="97" x="153"/>
                    </connection>
                  </connectionPointIn>
                </variable>
                <variable formalParameter="">
                  <connectionPointIn>
                    <relPosition y="68" x="0"/>
                    <connection refLocalId="3">
                      <position y="173" x="235"/>
                      <position y="173" x="190"/>
                      <position y="217" x="190"/>
                      <position y="217" x="153"/>
                    </connection>
                  </connectionPointIn>
                </variable>
              </inputVariables>
              <inOutVariables/>
              <outputVariables>
                <variable formalParameter="" negated="true">
                  <connectionPointOut>
                    <relPosition y="36" x="99"/>
                  </connectionPointOut>
                </variable>
              </outputVariables>
            </block>
            <inVariable localId="7" width="90" height="28">
              <position y="336" x="63"/>
              <connectionPointOut>
                <relPosition y="14" x="90"/>
              </connectionPointOut>
              <expression>IN3</expression>
            </inVariable>
            <block localId="8" height="87" width="99" instanceName="" typeName="OR">
              <position y="246" x="235"/>
              <inputVariables>
                <variable formalParameter="IN1" negated="true">
                  <connectionPointIn>
                    <relPosition y="36" x="0"/>
                    <connection refLocalId="3">
                      <position y="282" x="235"/>
                      <position y="282" x="190"/>
                      <position y="217" x="190"/>
                      <position y="217" x="153"/>
                    </connection>
                  </connectionPointIn>
                </variable>
                <variable formalParameter="IN2">
                  <connectionPointIn>
                    <relPosition y="69" x="0"/>
                    <connection refLocalId="7">
                      <position y="315" x="235"/>
                      <position y="315" x="191"/>
                      <position y="350" x="191"/>
                      <position y="350" x="153"/>
                    </connection>
                  </connectionPointIn>
                </variable>
              </inputVariables>
              <inOutVariables/>
              <outputVariables>
                <variable formalParameter="OUT">
                  <connectionPointOut>
                    <relPosition y="36" x="99"/>
                  </connectionPointOut>
                </variable>
              </outputVariables>
            </block>
            <comment localId="10" height="37" width="261">
              <position y="32" x="243"/>
              <content>POU qui sert a tester PLCOpenEditor.</content>
            </comment>
            <block localId="11" height="91" width="97" instanceName="SR1" typeName="SR">
              <position y="161" x="420"/>
              <inputVariables>
                <variable formalParameter="S1">
                  <connectionPointIn>
                    <relPosition y="37" x="0"/>
                    <connection refLocalId="6">
                      <position y="198" x="420"/>
                      <position y="198" x="369"/>
                      <position y="141" x="369"/>
                      <position y="141" x="334"/>
                    </connection>
                  </connectionPointIn>
                </variable>
                <variable formalParameter="R">
                  <connectionPointIn>
                    <relPosition y="72" x="0"/>
                    <connection refLocalId="8">
                      <position y="233" x="420"/>
                      <position y="233" x="369"/>
                      <position y="282" x="369"/>
                      <position y="282" x="334"/>
                    </connection>
                  </connectionPointIn>
                </variable>
              </inputVariables>
              <inOutVariables/>
              <outputVariables>
                <variable formalParameter="Q1">
                  <connectionPointOut>
                    <relPosition y="37" x="97"/>
                  </connectionPointOut>
                </variable>
              </outputVariables>
            </block>
          </FBD>
        </body>
      </pou>
      <pou name="LDTest" pouType="function">
        <interface>
          <returnType>
            <BOOL/>
          </returnType>
          <inputVars>
            <variable name="IN1">
              <type>
                <BOOL/>
              </type>
            </variable>
            <variable name="IN2">
              <type>
                <BOOL/>
              </type>
            </variable>
            <variable name="IN3">
              <type>
                <BOOL/>
              </type>
            </variable>
            <variable name="IN4">
              <type>
                <BOOL/>
              </type>
            </variable>
          </inputVars>
        </interface>
        <body>
          <LD>
            <comment localId="1" height="40" width="600">
              <position y="10" x="10"/>
              <content>Commentaire</content>
            </comment>
            <leftPowerRail localId="2" height="80" width="2">
              <position y="60" x="10"/>
              <connectionPointOut formalParameter="">
                <relPosition y="20" x="2"/>
              </connectionPointOut>
              <connectionPointOut formalParameter="">
                <relPosition y="60" x="2"/>
              </connectionPointOut>
            </leftPowerRail>
            <coil localId="3" width="21" storage="none" height="15" negated="false">
              <position y="72" x="265"/>
              <connectionPointIn>
                <relPosition y="8" x="0"/>
                <connection refLocalId="7">
                  <position y="80" x="265"/>
                  <position y="80" x="195"/>
                </connection>
              </connectionPointIn>
              <connectionPointOut>
                <relPosition y="8" x="21"/>
              </connectionPointOut>
              <variable>LDTest</variable>
            </coil>
            <rightPowerRail localId="4" height="40" width="2">
              <position y="60" x="316"/>
              <connectionPointIn>
                <relPosition y="20" x="0"/>
                <connection refLocalId="3">
                  <position y="80" x="316"/>
                  <position y="80" x="286"/>
                </connection>
              </connectionPointIn>
            </rightPowerRail>
            <contact localId="5" width="21" height="15" edge="none" negated="true">
              <position y="72" x="42"/>
              <connectionPointIn>
                <relPosition y="8" x="0"/>
                <connection refLocalId="2">
                  <position y="80" x="42"/>
                  <position y="80" x="12"/>
                </connection>
              </connectionPointIn>
              <connectionPointOut>
                <relPosition y="8" x="21"/>
              </connectionPointOut>
              <variable>IN1</variable>
            </contact>
            <contact localId="7" width="21" height="15" edge="none" negated="false">
              <position y="72" x="174"/>
              <connectionPointIn>
                <relPosition y="8" x="0"/>
                <connection refLocalId="5">
                  <position y="80" x="174"/>
                  <position y="80" x="63"/>
                </connection>
                <connection refLocalId="9">
                  <position y="80" x="174"/>
                  <position y="80" x="144"/>
                  <position y="120" x="144"/>
                  <position y="120" x="114"/>
                </connection>
              </connectionPointIn>
              <connectionPointOut>
                <relPosition y="8" x="21"/>
              </connectionPointOut>
              <variable>IN2</variable>
            </contact>
            <contact localId="8" width="21" height="15" edge="none" negated="false">
              <position y="112" x="42"/>
              <connectionPointIn>
                <relPosition y="8" x="0"/>
                <connection refLocalId="2">
                  <position y="120" x="42"/>
                  <position y="120" x="12"/>
                </connection>
              </connectionPointIn>
              <connectionPointOut>
                <relPosition y="8" x="21"/>
              </connectionPointOut>
              <variable>IN3</variable>
            </contact>
            <contact localId="9" width="21" height="15" edge="none" negated="true">
              <position y="112" x="93"/>
              <connectionPointIn>
                <relPosition y="8" x="0"/>
                <connection refLocalId="8">
                  <position y="120" x="93"/>
                  <position y="120" x="63"/>
                </connection>
              </connectionPointIn>
              <connectionPointOut>
                <relPosition y="8" x="21"/>
              </connectionPointOut>
              <variable>IN4</variable>
            </contact>
          </LD>
        </body>
      </pou>
      <pou name="ILTest" pouType="function">
        <interface>
          <returnType>
            <REAL/>
          </returnType>
          <localVars>
            <variable name="Temp">
              <type>
                <REAL/>
              </type>
            </variable>
          </localVars>
          <inputVars>
            <variable name="X1">
              <type>
                <REAL/>
              </type>
            </variable>
            <variable name="X2">
              <type>
                <REAL/>
              </type>
            </variable>
            <variable name="Y1">
              <type>
                <REAL/>
              </type>
            </variable>
            <variable name="Y2">
              <type>
                <REAL/>
              </type>
            </variable>
            <variable name="TMax">
              <type>
                <REAL/>
              </type>
            </variable>
          </inputVars>
          <outputVars>
            <variable name="ENO">
              <type>
                <BOOL/>
              </type>
            </variable>
          </outputVars>
        </interface>
        <body>
          <IL>
  LD   Y1
  SUB  Y2     (* Substract Y2 from Y1 *)
  ST   Temp   (* Store Y1-Y2 in Temp *)
  MUL  Temp   (* Multiply by Temp to square *)
  ADD( X1     (* Defer ADD *)
  SUB  X2     (* Substract X1 from X2 *)
  ST   Temp   (* Store X1-X2 in Temp *)
  MUL  Temp   (* Multiply by Temp to square *)
  )
  CAL  SQRT   (* Call Square root fun *)
  ST   ILTest (* Setup function result *)
  GT   TMax   (* Greater than TMax ? *)
  JMPC ERR    (* Yes, Jump to Error *)
  S    ENO    (* Set ENO *)
  RET         (* Normal return *)

  ERR:
  RET         (* Error return, ENO not set *)
          </IL>
        </body>
      </pou>
      <pou name="SFCTest" pouType="program">
        <interface>
          <inputVars>
            <variable name="IN1">
              <type>
                <BOOL/>
              </type>
            </variable>
            <variable name="IN2">
              <type>
                <BOOL/>
              </type>
            </variable>
            <variable name="IN3">
              <type>
                <BOOL/>
              </type>
            </variable>
            <variable name="IN4">
              <type>
                <BOOL/>
              </type>
            </variable>
            <variable name="IN5">
              <type>
                <BOOL/>
              </type>
            </variable>
          </inputVars>
        </interface>
        <actions>
          <action name="ACT1">
            <body>
              <ST>
  IF IN1 THEN
    IN2 := 1;
  ELSE
    IN3 := 1;
  END_IF;
              </ST>
            </body>
          </action>
        </actions>
        <transitions>
          <transition name="TR1">
            <body>
              <ST>:= AND(IN1, IN2, IN3);</ST>
            </body>
          </transition>
        </transitions>
        <body>
          <SFC>
            <step localId="1" height="31" width="46" initialStep="true" name="Start">
              <position y="46" x="82"/>
              <connectionPointOut formalParameter="">
                <relPosition y="31" x="23"/>
              </connectionPointOut>
            </step>
            <transition localId="2" height="2" width="20">
              <position y="102" x="95"/>
              <connectionPointIn>
                <relPosition y="0" x="10"/>
                <connection refLocalId="1">
                  <position y="102" x="105"/>
                  <position y="77" x="105"/>
                </connection>
              </connectionPointIn>
              <connectionPointOut>
                <relPosition y="2" x="10"/>
              </connectionPointOut>
              <condition>
                <reference name="TR1"/>
              </condition>
            </transition>
            <step localId="3" height="27" width="29" initialStep="false" name="Init">
              <position y="129" x="91"/>
              <connectionPointIn>
                <relPosition y="0" x="14"/>
                <connection refLocalId="2">
                  <position y="129" x="105"/>
                  <position y="104" x="105"/>
                </connection>
              </connectionPointIn>
              <connectionPointOut formalParameter="">
                <relPosition y="27" x="14"/>
              </connectionPointOut>
              <connectionPointOutAction formalParameter="">
                <relPosition y="13" x="29"/>
              </connectionPointOutAction>
            </step>
            <selectionDivergence localId="4" height="1" width="287">
              <position y="181" x="105"/>
              <connectionPointIn>
                <relPosition y="0" x="0"/>
                <connection refLocalId="3">
                  <position y="181" x="105"/>
                  <position y="156" x="105"/>
                </connection>
              </connectionPointIn>
              <connectionPointOut formalParameter="">
                <relPosition y="1" x="0"/>
              </connectionPointOut>
              <connectionPointOut formalParameter="">
                <relPosition y="1" x="133"/>
              </connectionPointOut>
              <connectionPointOut formalParameter="">
                <relPosition y="1" x="287"/>
              </connectionPointOut>
            </selectionDivergence>
            <transition localId="5" height="2" width="20">
              <position y="207" x="95"/>
              <connectionPointIn>
                <relPosition y="0" x="10"/>
                <connection refLocalId="4">
                  <position y="207" x="105"/>
                  <position y="182" x="105"/>
                </connection>
              </connectionPointIn>
              <connectionPointOut>
                <relPosition y="2" x="10"/>
              </connectionPointOut>
              <condition>
                <inline name="">
                  <ST>IN2 AND IN3</ST>
                </inline>
              </condition>
            </transition>
            <step localId="6" height="27" width="48" initialStep="false" name="Step1">
              <position y="234" x="81"/>
              <connectionPointIn>
                <relPosition y="0" x="24"/>
                <connection refLocalId="5">
                  <position y="234" x="105"/>
                  <position y="209" x="105"/>
                </connection>
              </connectionPointIn>
              <connectionPointOut formalParameter="">
                <relPosition y="27" x="24"/>
              </connectionPointOut>
            </step>
            <transition localId="7" height="2" width="20">
              <position y="207" x="228"/>
              <connectionPointIn>
                <relPosition y="0" x="10"/>
                <connection refLocalId="4">
                  <position y="207" x="238"/>
                  <position y="182" x="238"/>
                </connection>
              </connectionPointIn>
              <connectionPointOut>
                <relPosition y="2" x="10"/>
              </connectionPointOut>
              <condition>
                <inline name="">
                  <ST>IN3</ST>
                </inline>
              </condition>
            </transition>
            <step localId="8" height="27" width="48" initialStep="false" name="Step2">
              <position y="234" x="214"/>
              <connectionPointIn>
                <relPosition y="0" x="24"/>
                <connection refLocalId="7">
                  <position y="234" x="238"/>
                  <position y="209" x="238"/>
                </connection>
              </connectionPointIn>
              <connectionPointOut formalParameter="">
                <relPosition y="27" x="24"/>
              </connectionPointOut>
            </step>
            <transition localId="9" height="2" width="20">
              <position y="207" x="382"/>
              <connectionPointIn>
                <relPosition y="0" x="10"/>
                <connection refLocalId="4">
                  <position y="207" x="392"/>
                  <position y="182" x="392"/>
                </connection>
              </connectionPointIn>
              <connectionPointOut>
                <relPosition y="2" x="10"/>
              </connectionPointOut>
              <condition>
                <inline name="">
                  <ST>IN4</ST>
                </inline>
              </condition>
            </transition>
            <step localId="10" height="27" width="48" initialStep="false" name="Step3">
              <position y="234" x="368"/>
              <connectionPointIn>
                <relPosition y="0" x="24"/>
                <connection refLocalId="9">
                  <position y="234" x="392"/>
                  <position y="209" x="392"/>
                </connection>
              </connectionPointIn>
              <connectionPointOut formalParameter="">
                <relPosition y="27" x="24"/>
              </connectionPointOut>
              <connectionPointOutAction formalParameter="">
                <relPosition y="13" x="48"/>
              </connectionPointOutAction>
            </step>
            <transition localId="11" height="2" width="20">
              <position y="286" x="95"/>
              <connectionPointIn>
                <relPosition y="0" x="10"/>
                <connection refLocalId="6">
                  <position y="286" x="105"/>
                  <position y="261" x="105"/>
                </connection>
              </connectionPointIn>
              <connectionPointOut>
                <relPosition y="2" x="10"/>
              </connectionPointOut>
              <condition>
                <inline name="">
                  <ST>IN5</ST>
                </inline>
              </condition>
            </transition>
            <jumpStep localId="12" height="13" width="12" targetName="Start">
              <position y="313" x="99"/>
              <connectionPointIn>
                <relPosition y="0" x="6"/>
                <connection refLocalId="11">
                  <position y="313" x="105"/>
                  <position y="288" x="105"/>
                </connection>
              </connectionPointIn>
            </jumpStep>
            <actionBlock localId="13" height="30" width="100">
              <position y="127" x="145"/>
              <connectionPointIn>
                <relPosition y="15" x="0"/>
                <connection refLocalId="3">
                  <position y="142" x="145"/>
                  <position y="142" x="120"/>
                </connection>
              </connectionPointIn>
              <action qualifier="N">
                <reference name="ACT1"/>
              </action>
            </actionBlock>
            <transition localId="14" height="2" width="20">
              <position y="286" x="228"/>
              <connectionPointIn>
                <relPosition y="0" x="10"/>
                <connection refLocalId="8">
                  <position y="286" x="238"/>
                  <position y="261" x="238"/>
                </connection>
              </connectionPointIn>
              <connectionPointOut>
                <relPosition y="2" x="10"/>
              </connectionPointOut>
              <condition>
                <inline name="">
                  <ST>IN5</ST>
                </inline>
              </condition>
            </transition>
            <transition localId="15" height="2" width="20">
              <position y="316" x="382"/>
              <connectionPointIn>
                <relPosition y="0" x="10"/>
                <connection refLocalId="10">
                  <position y="316" x="392"/>
                  <position y="261" x="392"/>
                </connection>
              </connectionPointIn>
              <connectionPointOut>
                <relPosition y="2" x="10"/>
              </connectionPointOut>
              <condition>
                <inline name="">
                  <ST>IN5</ST>
                </inline>
              </condition>
            </transition>
            <selectionConvergence localId="16" height="1" width="154">
              <position y="343" x="238"/>
              <connectionPointIn>
                <relPosition y="0" x="0"/>
                <connection refLocalId="14">
                  <position y="343" x="238"/>
                  <position y="288" x="238"/>
                </connection>
              </connectionPointIn>
              <connectionPointIn>
                <relPosition y="0" x="154"/>
                <connection refLocalId="15">
                  <position y="343" x="392"/>
                  <position y="318" x="392"/>
                </connection>
              </connectionPointIn>
              <connectionPointOut>
                <relPosition y="1" x="78"/>
              </connectionPointOut>
            </selectionConvergence>
            <jumpStep localId="19" height="13" width="12" targetName="Init">
              <position y="369" x="310"/>
              <connectionPointIn>
                <relPosition y="0" x="6"/>
                <connection refLocalId="16">
                  <position y="369" x="316"/>
                  <position y="344" x="316"/>
                </connection>
              </connectionPointIn>
            </jumpStep>
            <actionBlock localId="20" height="60" width="100">
              <position y="232" x="441"/>
              <connectionPointIn>
                <relPosition y="15" x="0"/>
                <connection refLocalId="10">
                  <position y="247" x="441"/>
                  <position y="247" x="416"/>
                </connection>
              </connectionPointIn>
              <action qualifier="N">
                <reference name="ACT1"/>
              </action>
              <action qualifier="S">
                <reference name="IN1"/>
              </action>
            </actionBlock>
          </SFC>
        </body>
      </pou>
      <pou name="STTest" pouType="functionBlock">
        <interface>
          <inputVars>
            <variable name="Collision">
              <type>
                <BOOL/>
              </type>
            </variable>
            <variable name="Gate">
              <type>
                <BOOL/>
              </type>
            </variable>
            <variable name="Pump">
              <type>
                <BOOL/>
              </type>
            </variable>
            <variable name="Temp">
              <type>
                <INT/>
              </type>
            </variable>
          </inputVars>
          <outputVars>
            <variable name="Speed">
              <type>
                <INT/>
              </type>
            </variable>
            <variable name="PumpSpeed">
              <type>
                <INT/>
              </type>
            </variable>
            <variable name="Brakes">
              <type>
                <BOOL/>
              </type>
            </variable>
            <variable name="Control_State">
              <type>
                <BOOL/>
              </type>
            </variable>
          </outputVars>
        </interface>
        <body>
          <ST>
  IF Collision THEN
    Speed := 0;
    Brakes := ON;
  END_IF;

  IF (Gate = CLOSED) AND
      (Pump = ON) AND (Temp > 200.0) THEN
    Control_State := Active;
  ELSE
    Control_State := Hold;
    PumpSpeed := 10.0;
  END_IF;
          </ST>
        </body>
      </pou>
    </pous>
  </types>
  <instances>
    <configurations>
      <configuration name="ConfigTest">
        <resource name="ResourceTest">
          <task interval="10ms" name="Toto" priority="6">
            <pouInstance type="SFCTest" name="Program1"/>
          </task>
          <globalVars>
            <variable name="Titi" address="M30">
              <type>
                <INT/>
              </type>
            </variable>
          </globalVars>
        </resource>
        <globalVars>
          <variable name="Toto" address="M10">
            <type>
              <INT/>
            </type>
          </variable>
          <variable name="Tutu" address="M20">
            <type>
              <BOOL/>
            </type>
          </variable>
        </globalVars>
      </configuration>
      <configuration name="ConfigTest2"/>
    </configurations>
  </instances>
</project>