--- a/tests/svgui/plc.xml Tue Oct 18 17:44:08 2016 +0300
+++ b/tests/svgui/plc.xml Wed Oct 19 16:32:10 2016 +0300
@@ -1,14 +1,7 @@
-<?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="beremiz"
- productName="Beremiz"
- productVersion="0.0"
- creationDateTime="2008-12-14T16:21:19"/>
- <contentHeader name="Beremiz Python Support Tests"
- modificationDateTime="2009-09-26T18:14:56">
+<?xml version='1.0' encoding='utf-8'?>
+<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.plcopen.org/xml/tc6_0201" xmlns:xhtml="http://www.w3.org/1999/xhtml" xsi:schemaLocation="http://www.plcopen.org/xml/tc6_0201">
+ <fileHeader companyName="beremiz" productName="Beremiz" productVersion="0.0" creationDateTime="2008-12-14T16:21:19"/>
+ <contentHeader name="Beremiz SVGUI Test" modificationDateTime="2016-10-19T14:46:29">
<coordinateInfo>
<pageSize x="1024" y="1024"/>
<fbd>
@@ -33,57 +26,17 @@
<INT/>
</type>
</variable>
- <variable name="DigitalBit0">
- <type>
- <BOOL/>
- </type>
- </variable>
- <variable name="DigitalBit1">
- <type>
- <BOOL/>
- </type>
- </variable>
- <variable name="DigitalBit2">
- <type>
- <BOOL/>
- </type>
- </variable>
- <variable name="DigitalBit3">
- <type>
- <BOOL/>
- </type>
- </variable>
- <variable name="DigitalBit4">
- <type>
- <BOOL/>
- </type>
- </variable>
- <variable name="DigitalBit5">
- <type>
- <BOOL/>
- </type>
- </variable>
- <variable name="DigitalBit6">
- <type>
- <BOOL/>
- </type>
- </variable>
- <variable name="DigitalBit7">
- <type>
- <BOOL/>
- </type>
- </variable>
<variable name="Start_Stop">
<type>
<derived name="Button"/>
</type>
</variable>
- <variable name="Compteur">
+ <variable name="Counter_TextCtrl">
<type>
<derived name="TextCtrl"/>
</type>
</variable>
- <variable name="Temoin">
+ <variable name="State_LedCtrl">
<type>
<derived name="Led"/>
</type>
@@ -92,15 +45,15 @@
</interface>
<body>
<FBD>
- <block localId="32" width="80" height="110" typeName="ADD">
- <position x="665" y="420"/>
+ <block localId="32" width="80" height="110" typeName="ADD" executionOrderId="0">
+ <position x="649" y="241"/>
<inputVariables>
<variable formalParameter="EN">
<connectionPointIn>
<relPosition x="0" y="35"/>
<connection refLocalId="5">
- <position x="665" y="455"/>
- <position x="610" y="455"/>
+ <position x="649" y="276"/>
+ <position x="594" y="276"/>
</connection>
</connectionPointIn>
</variable>
@@ -108,8 +61,8 @@
<connectionPointIn>
<relPosition x="0" y="65"/>
<connection refLocalId="100" formalParameter="OUT">
- <position x="665" y="485"/>
- <position x="490" y="485"/>
+ <position x="649" y="306"/>
+ <position x="474" y="306"/>
</connection>
</connectionPointIn>
</variable>
@@ -117,12 +70,12 @@
<connectionPointIn>
<relPosition x="0" y="95"/>
<connection refLocalId="33">
- <position x="665" y="515"/>
- <position x="645" y="515"/>
- <position x="645" y="555"/>
- <position x="870" y="555"/>
- <position x="870" y="485"/>
- <position x="855" y="485"/>
+ <position x="649" y="336"/>
+ <position x="629" y="336"/>
+ <position x="629" y="374"/>
+ <position x="854" y="374"/>
+ <position x="854" y="306"/>
+ <position x="839" y="306"/>
</connection>
</connectionPointIn>
</variable>
@@ -141,71 +94,71 @@
</variable>
</outputVariables>
</block>
- <inOutVariable localId="33" height="35" width="85">
- <position x="770" y="470"/>
+ <inOutVariable localId="33" height="35" width="85" executionOrderId="0" negatedOut="false" negatedIn="false">
+ <position x="754" y="289"/>
<connectionPointIn>
- <relPosition x="0" y="15"/>
+ <relPosition x="0" y="17"/>
<connection refLocalId="32" formalParameter="OUT">
- <position x="770" y="485"/>
- <position x="745" y="485"/>
+ <position x="754" y="306"/>
+ <position x="729" y="306"/>
</connection>
</connectionPointIn>
<connectionPointOut>
- <relPosition x="85" y="15"/>
+ <relPosition x="85" y="17"/>
</connectionPointOut>
<expression>counter</expression>
</inOutVariable>
- <inVariable localId="39" height="35" width="70">
- <position x="90" y="470"/>
- <connectionPointOut>
- <relPosition x="70" y="15"/>
+ <inVariable localId="39" height="35" width="89" executionOrderId="0" negated="false">
+ <position x="55" y="289"/>
+ <connectionPointOut>
+ <relPosition x="89" y="17"/>
</connectionPointOut>
<expression>BOOL#1</expression>
</inVariable>
- <inVariable localId="41" height="30" width="120">
- <position x="45" y="180"/>
+ <inVariable localId="41" height="30" width="120" executionOrderId="0" negated="false">
+ <position x="21" y="575"/>
<connectionPointOut>
<relPosition x="120" y="15"/>
</connectionPointOut>
<expression>'stop_back'</expression>
</inVariable>
- <inVariable localId="42" height="30" width="120">
- <position x="45" y="225"/>
+ <inVariable localId="42" height="30" width="120" executionOrderId="0" negated="false">
+ <position x="21" y="617"/>
<connectionPointOut>
<relPosition x="120" y="15"/>
</connectionPointOut>
<expression>'stop_sele'</expression>
</inVariable>
- <inVariable localId="46" height="30" width="180">
- <position x="675" y="265"/>
- <connectionPointOut>
- <relPosition x="180" y="15"/>
- </connectionPointOut>
- <expression>'text_compteur'</expression>
- </inVariable>
- <inVariable localId="51" height="30" width="110">
- <position x="725" y="80"/>
- <connectionPointOut>
- <relPosition x="110" y="15"/>
+ <inVariable localId="46" height="30" width="121" executionOrderId="0" negated="false">
+ <position x="694" y="755"/>
+ <connectionPointOut>
+ <relPosition x="121" y="15"/>
+ </connectionPointOut>
+ <expression>'text_counter'</expression>
+ </inVariable>
+ <inVariable localId="51" height="30" width="119" executionOrderId="0" negated="false">
+ <position x="692" y="568"/>
+ <connectionPointOut>
+ <relPosition x="119" y="15"/>
</connectionPointOut>
<expression>'led_stop'</expression>
</inVariable>
- <inVariable localId="52" height="30" width="120">
- <position x="715" y="115"/>
+ <inVariable localId="52" height="30" width="120" executionOrderId="0" negated="false">
+ <position x="691" y="604"/>
<connectionPointOut>
<relPosition x="120" y="15"/>
</connectionPointOut>
<expression>'led_start'</expression>
</inVariable>
- <block localId="83" width="145" height="60" typeName="INT_TO_STRING">
- <position x="600" y="320"/>
+ <block localId="83" width="145" height="60" typeName="INT_TO_STRING" executionOrderId="0">
+ <position x="537" y="812"/>
<inputVariables>
<variable formalParameter="IN">
<connectionPointIn>
<relPosition x="0" y="40"/>
<connection refLocalId="4">
- <position x="600" y="360"/>
- <position x="555" y="360"/>
+ <position x="537" y="852"/>
+ <position x="504" y="852"/>
</connection>
</connectionPointIn>
</variable>
@@ -219,24 +172,24 @@
</variable>
</outputVariables>
</block>
- <block localId="92" width="200" height="230" typeName="Button" instanceName="Start_Stop">
- <position x="225" y="155"/>
+ <block localId="92" width="187" height="230" typeName="Button" instanceName="Start_Stop" executionOrderId="0">
+ <position x="201" y="549"/>
<inputVariables>
<variable formalParameter="back_id">
<connectionPointIn>
- <relPosition x="0" y="40"/>
+ <relPosition x="0" y="41"/>
<connection refLocalId="41">
- <position x="225" y="195"/>
- <position x="165" y="195"/>
+ <position x="201" y="590"/>
+ <position x="141" y="590"/>
</connection>
</connectionPointIn>
</variable>
<variable formalParameter="sele_id">
<connectionPointIn>
- <relPosition x="0" y="85"/>
+ <relPosition x="0" y="83"/>
<connection refLocalId="42">
- <position x="225" y="240"/>
- <position x="165" y="240"/>
+ <position x="201" y="632"/>
+ <position x="141" y="632"/>
</connection>
</connectionPointIn>
</variable>
@@ -244,19 +197,19 @@
<connectionPointIn>
<relPosition x="0" y="125"/>
<connection refLocalId="93">
- <position x="225" y="280"/>
- <position x="165" y="280"/>
+ <position x="201" y="674"/>
+ <position x="141" y="674"/>
</connection>
</connectionPointIn>
</variable>
<variable formalParameter="set_state">
<connectionPointIn>
- <relPosition x="0" y="165"/>
+ <relPosition x="0" y="167"/>
</connectionPointIn>
</variable>
<variable formalParameter="state_in">
<connectionPointIn>
- <relPosition x="0" y="210"/>
+ <relPosition x="0" y="209"/>
</connectionPointIn>
</variable>
</inputVariables>
@@ -264,45 +217,45 @@
<outputVariables>
<variable formalParameter="state_out">
<connectionPointOut>
- <relPosition x="200" y="40"/>
- </connectionPointOut>
- </variable>
- </outputVariables>
- </block>
- <inVariable localId="93" height="30" width="70">
- <position x="95" y="265"/>
- <connectionPointOut>
- <relPosition x="70" y="15"/>
+ <relPosition x="187" y="41"/>
+ </connectionPointOut>
+ </variable>
+ </outputVariables>
+ </block>
+ <inVariable localId="93" height="30" width="120" executionOrderId="0" negated="false">
+ <position x="21" y="659"/>
+ <connectionPointOut>
+ <relPosition x="120" y="15"/>
</connectionPointOut>
<expression>BOOL#1</expression>
</inVariable>
- <block localId="94" width="100" height="145" typeName="TextCtrl" instanceName="Compteur">
- <position x="900" y="240"/>
+ <block localId="94" width="100" height="145" typeName="TextCtrl" instanceName="Counter_TextCtrl" executionOrderId="0">
+ <position x="876" y="730"/>
<inputVariables>
<variable formalParameter="back_id">
<connectionPointIn>
<relPosition x="0" y="40"/>
<connection refLocalId="46">
- <position x="900" y="280"/>
- <position x="855" y="280"/>
+ <position x="876" y="770"/>
+ <position x="815" y="770"/>
</connection>
</connectionPointIn>
</variable>
<variable formalParameter="set_text">
<connectionPointIn>
- <relPosition x="0" y="80"/>
+ <relPosition x="0" y="81"/>
<connection refLocalId="3">
- <position x="900" y="320"/>
- <position x="855" y="320"/>
+ <position x="876" y="811"/>
+ <position x="815" y="811"/>
</connection>
</connectionPointIn>
</variable>
<variable formalParameter="text">
<connectionPointIn>
- <relPosition x="0" y="120"/>
+ <relPosition x="0" y="122"/>
<connection refLocalId="83" formalParameter="OUT">
- <position x="900" y="360"/>
- <position x="745" y="360"/>
+ <position x="876" y="852"/>
+ <position x="682" y="852"/>
</connection>
</connectionPointIn>
</variable>
@@ -310,31 +263,31 @@
<inOutVariables/>
<outputVariables/>
</block>
- <inVariable localId="1" height="30" width="70">
- <position x="80" y="85"/>
- <connectionPointOut>
- <relPosition x="70" y="15"/>
+ <inVariable localId="1" height="30" width="88" executionOrderId="0" negated="false">
+ <position x="59" y="220"/>
+ <connectionPointOut>
+ <relPosition x="88" y="15"/>
</connectionPointOut>
<expression>BOOL#1</expression>
</inVariable>
- <block localId="95" width="100" height="130" typeName="Led" instanceName="Temoin">
- <position x="900" y="55"/>
+ <block localId="95" width="100" height="130" typeName="Led" instanceName="State_LedCtrl" executionOrderId="0">
+ <position x="876" y="545"/>
<inputVariables>
<variable formalParameter="back_id">
<connectionPointIn>
- <relPosition x="0" y="40"/>
+ <relPosition x="0" y="38"/>
<connection refLocalId="51">
- <position x="900" y="95"/>
- <position x="835" y="95"/>
+ <position x="876" y="583"/>
+ <position x="811" y="583"/>
</connection>
</connectionPointIn>
</variable>
<variable formalParameter="sele_id">
<connectionPointIn>
- <relPosition x="0" y="75"/>
+ <relPosition x="0" y="74"/>
<connection refLocalId="52">
- <position x="900" y="130"/>
- <position x="835" y="130"/>
+ <position x="876" y="619"/>
+ <position x="811" y="619"/>
</connection>
</connectionPointIn>
</variable>
@@ -342,8 +295,8 @@
<connectionPointIn>
<relPosition x="0" y="110"/>
<connection refLocalId="2">
- <position x="900" y="165"/>
- <position x="835" y="165"/>
+ <position x="876" y="655"/>
+ <position x="811" y="655"/>
</connection>
</connectionPointIn>
</variable>
@@ -351,28 +304,28 @@
<inOutVariables/>
<outputVariables/>
</block>
- <block localId="96" width="80" height="65" typeName="AND">
- <position x="200" y="45"/>
+ <block localId="96" width="80" height="65" typeName="AND" executionOrderId="0">
+ <position x="200" y="182"/>
<inputVariables>
<variable formalParameter="IN1" negated="true">
<connectionPointIn>
- <relPosition x="0" y="30"/>
+ <relPosition x="0" y="31"/>
<connection refLocalId="96" formalParameter="OUT">
- <position x="200" y="75"/>
- <position x="175" y="75"/>
- <position x="175" y="30"/>
- <position x="305" y="30"/>
- <position x="305" y="75"/>
- <position x="280" y="75"/>
+ <position x="200" y="213"/>
+ <position x="175" y="213"/>
+ <position x="175" y="167"/>
+ <position x="305" y="167"/>
+ <position x="305" y="213"/>
+ <position x="280" y="213"/>
</connection>
</connectionPointIn>
</variable>
<variable formalParameter="IN2">
<connectionPointIn>
- <relPosition x="0" y="55"/>
+ <relPosition x="0" y="53"/>
<connection refLocalId="1">
- <position x="200" y="100"/>
- <position x="150" y="100"/>
+ <position x="200" y="235"/>
+ <position x="147" y="235"/>
</connection>
</connectionPointIn>
</variable>
@@ -381,68 +334,96 @@
<outputVariables>
<variable formalParameter="OUT">
<connectionPointOut>
- <relPosition x="80" y="30"/>
+ <relPosition x="80" y="31"/>
</connectionPointOut>
</variable>
</outputVariables>
</block>
<connector name="CLOCK" localId="97" height="30" width="90">
- <position x="345" y="60"/>
+ <position x="345" y="198"/>
<connectionPointIn>
<relPosition x="0" y="15"/>
<connection refLocalId="96" formalParameter="OUT">
- <position x="345" y="75"/>
- <position x="280" y="75"/>
+ <position x="345" y="213"/>
+ <position x="280" y="213"/>
</connection>
</connectionPointIn>
</connector>
<connector name="COUNT" localId="98" height="30" width="90">
- <position x="485" y="180"/>
+ <position x="461" y="575"/>
<connectionPointIn>
<relPosition x="0" y="15"/>
<connection refLocalId="92" formalParameter="state_out">
- <position x="485" y="195"/>
- <position x="425" y="195"/>
+ <position x="461" y="590"/>
+ <position x="388" y="590"/>
</connection>
</connectionPointIn>
</connector>
- <continuation name="COUNT" localId="2" height="30" width="90">
- <position x="745" y="150"/>
+ <continuation name="COUNT" localId="2" height="30" width="120">
+ <position x="691" y="640"/>
+ <connectionPointOut>
+ <relPosition x="120" y="15"/>
+ </connectionPointOut>
+ </continuation>
+ <inVariable localId="4" height="35" width="85" executionOrderId="0" negated="false">
+ <position x="419" y="835"/>
+ <connectionPointOut>
+ <relPosition x="85" y="17"/>
+ </connectionPointOut>
+ <expression>counter</expression>
+ </inVariable>
+ <continuation name="COUNT" localId="5" height="30" width="90">
+ <position x="504" y="261"/>
<connectionPointOut>
<relPosition x="90" y="15"/>
</connectionPointOut>
</continuation>
- <inVariable localId="4" height="35" width="85">
- <position x="470" y="345"/>
- <connectionPointOut>
- <relPosition x="85" y="15"/>
- </connectionPointOut>
- <expression>counter</expression>
- </inVariable>
- <continuation name="COUNT" localId="5" height="30" width="90">
- <position x="520" y="440"/>
+ <block localId="99" width="80" height="110" typeName="AND" executionOrderId="0">
+ <position x="199" y="264"/>
+ <inputVariables>
+ <variable formalParameter="IN1">
+ <connectionPointIn>
+ <relPosition x="0" y="42"/>
+ <connection refLocalId="39">
+ <position x="199" y="306"/>
+ <position x="144" y="306"/>
+ </connection>
+ </connectionPointIn>
+ </variable>
+ <variable formalParameter="IN2">
+ <connectionPointIn>
+ <relPosition x="0" y="87"/>
+ <connection refLocalId="6">
+ <position x="199" y="351"/>
+ <position x="144" y="351"/>
+ </connection>
+ </connectionPointIn>
+ </variable>
+ </inputVariables>
+ <inOutVariables/>
+ <outputVariables>
+ <variable formalParameter="OUT">
+ <connectionPointOut>
+ <relPosition x="80" y="42"/>
+ </connectionPointOut>
+ </variable>
+ </outputVariables>
+ </block>
+ <continuation name="CLOCK" localId="6" height="30" width="90">
+ <position x="54" y="336"/>
<connectionPointOut>
<relPosition x="90" y="15"/>
</connectionPointOut>
</continuation>
- <block localId="99" width="80" height="110" typeName="AND">
- <position x="215" y="445"/>
- <inputVariables>
- <variable formalParameter="IN1">
- <connectionPointIn>
- <relPosition x="0" y="40"/>
- <connection refLocalId="39">
- <position x="215" y="485"/>
- <position x="160" y="485"/>
- </connection>
- </connectionPointIn>
- </variable>
- <variable formalParameter="IN2">
- <connectionPointIn>
- <relPosition x="0" y="85"/>
- <connection refLocalId="6">
- <position x="215" y="530"/>
- <position x="160" y="530"/>
+ <block localId="100" width="125" height="45" typeName="BOOL_TO_INT" executionOrderId="0">
+ <position x="349" y="274"/>
+ <inputVariables>
+ <variable formalParameter="IN">
+ <connectionPointIn>
+ <relPosition x="0" y="32"/>
+ <connection refLocalId="99" formalParameter="OUT">
+ <position x="349" y="306"/>
+ <position x="279" y="306"/>
</connection>
</connectionPointIn>
</variable>
@@ -451,45 +432,41 @@
<outputVariables>
<variable formalParameter="OUT">
<connectionPointOut>
- <relPosition x="80" y="40"/>
- </connectionPointOut>
- </variable>
- </outputVariables>
- </block>
- <continuation name="CLOCK" localId="6" height="30" width="90">
- <position x="70" y="515"/>
- <connectionPointOut>
- <relPosition x="90" y="15"/>
+ <relPosition x="125" y="32"/>
+ </connectionPointOut>
+ </variable>
+ </outputVariables>
+ </block>
+ <continuation name="CLOCK" localId="3" height="30" width="122">
+ <position x="693" y="796"/>
+ <connectionPointOut>
+ <relPosition x="122" y="15"/>
</connectionPointOut>
</continuation>
- <block localId="100" width="125" height="45" typeName="BOOL_TO_INT">
- <position x="365" y="455"/>
- <inputVariables>
- <variable formalParameter="IN">
- <connectionPointIn>
- <relPosition x="0" y="30"/>
- <connection refLocalId="99" formalParameter="OUT">
- <position x="365" y="485"/>
- <position x="295" y="485"/>
- </connection>
- </connectionPointIn>
- </variable>
- </inputVariables>
- <inOutVariables/>
- <outputVariables>
- <variable formalParameter="OUT">
- <connectionPointOut>
- <relPosition x="125" y="30"/>
- </connectionPointOut>
- </variable>
- </outputVariables>
- </block>
- <continuation name="CLOCK" localId="3" height="30" width="90">
- <position x="765" y="305"/>
- <connectionPointOut>
- <relPosition x="90" y="15"/>
- </connectionPointOut>
- </continuation>
+ <comment localId="101" height="147" width="718">
+ <position x="27" y="8"/>
+ <content>
+ <xhtml:p><![CDATA[This example shows how IEC program in PLC can interact with web interface.
+
+svgui is extensions to build web interface to PLC. It has *integrated* web-server. So it's NOT necessary to install Apache, lighttpd or nginx for that!!!
+
+As the program is running in PLC, web UI will be available at http://localhost:8009/.
+
+
+Web interface is build as SVG file in Inkscape. To edit SVG file click 'Inkscape' button in 0x: svgui extension.
+Inkscape is a free and open-source vector graphics editor. It's not part of Beremiz and needs to be installed separately.
+]]></xhtml:p>
+ </content>
+ </comment>
+ <comment localId="102" height="101" width="544">
+ <position x="17" y="409"/>
+ <content>
+ <xhtml:p><![CDATA[In this example basic elements like 'Button', 'Led' and 'Text' are used.
+Back_id and sele_id inputs of these blocks are IDs of graphic primitives in SVG file.
+This is the way how elements in SVG are bound to elements in PLC program.
+You can find out or edit these IDs in Inkscape.]]></xhtml:p>
+ </content>
+ </comment>
</FBD>
</body>
</pou>