# HG changeset patch
# User Edouard Tisserant
# Date 1533728779 -7200
# Node ID 53f3eb5c47f7141dffce80febac99fcce6297c3f
# Parent 62eba810212e72b42715fda655ba3b53c376f021# Parent c9915bc620cd10f8c88037b1428f1d3f8506bd73
merged Andrey's default
diff -r 62eba810212e -r 53f3eb5c47f7 BeremizIDE.py
--- a/BeremizIDE.py Wed Aug 08 13:27:44 2018 +0200
+++ b/BeremizIDE.py Wed Aug 08 13:46:19 2018 +0200
@@ -739,6 +739,7 @@
def RefreshStatusToolBar(self):
StatusToolBar = self.Panes["StatusToolBar"]
StatusToolBar.ClearTools()
+ StatusToolBar.SetMinSize(StatusToolBar.GetToolBitmapSize())
if self.CTR is not None:
diff -r 62eba810212e -r 53f3eb5c47f7 IDEFrame.py
--- a/IDEFrame.py Wed Aug 08 13:27:44 2018 +0200
+++ b/IDEFrame.py Wed Aug 08 13:46:19 2018 +0200
@@ -2164,9 +2164,9 @@
self.Bind(wx.EVT_MENU, getattr(self, method), id=id)
self.CurrentEditorToolBar.append(id)
EditorToolBar.Realize()
- self.AUIManager.GetPane("EditorToolBar").BestSize(EditorToolBar.GetBestSize())
self.AUIManager.GetPane("EditorToolBar").Show()
self.AUIManager.Update()
+ self.AUIManager.GetPane("EditorToolBar").BestSize(EditorToolBar.GetBestSize())
elif menu is None:
self.ResetEditorToolBar()
self.CurrentMenu = menu
diff -r 62eba810212e -r 53f3eb5c47f7 PLCGenerator.py
--- a/PLCGenerator.py Wed Aug 08 13:27:44 2018 +0200
+++ b/PLCGenerator.py Wed Aug 08 13:46:19 2018 +0200
@@ -900,6 +900,42 @@
for connection in related:
self.ConnectionTypes[connection] = var_type
+ def GetUsedEno(self, body, connections):
+ """
+ Function checks whether value on given connection
+ comes from block, that has used EN input and
+ returns variable name for ENO output.
+
+ This is needed to avoid value propagation from blocks
+ with false signal on EN input.
+
+ :param body:
+ body of the block for that program is currently generated
+ :param connections:
+ connection, that's source is checked for EN/ENO usage
+ :return:
+ if EN/ENO are not used, then None is returned
+ Otherwise BOOL variable corresponding to ENO
+ output is returned.
+ """
+
+ if len(connections) != 1:
+ return None
+ ref_local_id = connections[0].getrefLocalId()
+ blk = body.getcontentInstance(ref_local_id)
+ if blk is None:
+ return None
+
+ for invar in blk.inputVariables.getvariable():
+ if invar.getformalParameter() == "EN":
+ if len(invar.getconnectionPointIn().getconnections()) > 0:
+ if blk.getinstanceName() is None:
+ var_name = "%s%d_ENO" % (blk.gettypeName(), blk.getlocalId())
+ else:
+ var_name = "%s.ENO" % blk.getinstanceName()
+ return var_name
+ return None
+
def ComputeProgram(self, pou):
body = pou.getbody()
if isinstance(body, ListType):
@@ -958,11 +994,21 @@
if connections is not None:
expression = self.ComputeExpression(body, connections)
if expression is not None:
+ eno_var = self.GetUsedEno(body, connections)
+ if eno_var is not None:
+ self.Program += [(self.CurrentIndent + "IF %s" % eno_var, ())]
+ self.Program += [(" THEN\n ", ())]
+ self.IndentRight()
+
self.Program += [(self.CurrentIndent, ()),
(instance.getexpression(), (self.TagName, "io_variable", instance.getlocalId(), "expression")),
(" := ", ())]
self.Program += expression
self.Program += [(";\n", ())]
+
+ if eno_var is not None:
+ self.IndentLeft()
+ self.Program += [(self.CurrentIndent + "END_IF;\n", ())]
elif isinstance(instance, BlockClass):
block_type = instance.gettypeName()
self.ParentGenerator.GeneratePouProgram(block_type)
diff -r 62eba810212e -r 53f3eb5c47f7 README.md
--- a/README.md Wed Aug 08 13:27:44 2018 +0200
+++ b/README.md Wed Aug 08 13:46:19 2018 +0200
@@ -8,89 +8,94 @@
With Beremiz, you conform to standards, avoid vendor lock, and contribute to the better future of Automation.
+Beremiz consists of two components:
+
+* Integrated Development Environment (IDE), [Beremiz.py](https://bitbucket.org/automforge/beremiz/src/tip/Beremiz.py?at=default). It's running on user's computer and is used to write/compile/debug PLC programs and control PLC runtime.
+* Reference runtime implementation in python, [Beremiz_service.py](https://bitbucket.org/automforge/beremiz/src/tip/Beremiz_service.py?at=default). It's running on target platform, communicates with I/O and executes PLC program.
+
See official [Beremiz website](http://www.beremiz.org/) for more information.
-### Build on Linux ###
+## Build on Linux ##
* Prerequisites
-```
-#!sh
-* # Ubuntu/Debian :
-sudo apt-get install build-essential bison flex autoconf
-sudo apt-get install python-wxgtk3.0 pyro mercurial
-sudo apt-get install python-nevow python-matplotlib python-lxml python-zeroconf python-cycler
-```
+ # Ubuntu/Debian :
+ sudo apt-get install build-essential bison flex autoconf
+ sudo apt-get install python-wxgtk3.0 pyro mercurial
+ sudo apt-get install python-nevow python-matplotlib python-lxml python-zeroconf python-cycler
+
* Prepare
-```
-#!sh
-mkdir ~/Beremiz
-cd ~/Beremiz
-```
+
+ mkdir ~/Beremiz
+ cd ~/Beremiz
* Get Source Code
-```
-#!sh
-cd ~/Beremiz
-hg clone https://bitbucket.org/skvorl/beremiz
-hg clone https://bitbucket.org/mjsousa/matiec
-```
+ cd ~/Beremiz
+ hg clone https://bitbucket.org/skvorl/beremiz
+ hg clone https://bitbucket.org/mjsousa/matiec
* Build MatIEC compiler
-```
-#!sh
-cd ~/Beremiz/matiec
-autoreconf -i
-./configure
-make
-```
-* Build CanFestival (optional)
-Only needed for CANopen support. Please read CanFestival manual to choose CAN interface other than 'virtual'.
+ cd ~/Beremiz/matiec
+ autoreconf -i
+ ./configure
+ make
-```
-#!sh
-cd ~/Beremiz
-hg clone http://dev.automforge.net/CanFestival-3
+* Build CanFestival (optional)
+ Only needed for CANopen support. Please read CanFestival manual to choose CAN interface other than 'virtual'.
-cd ~/Beremiz/CanFestival-3
-./configure --can=virtual
-make
-```
+ cd ~/Beremiz
+ hg clone http://dev.automforge.net/CanFestival-3
+ cd ~/Beremiz/CanFestival-3
+ ./configure --can=virtual
+ make
+
+* Build Modbus library (optional)
+ Only needed for Modbus support.
+
+ cd ~/Beremiz
+ hg clone https://bitbucket.org/mjsousa/modbus Modbus
+ cd ~/Beremiz/Modbus
+ make
* Launch Beremiz IDE
-```
-#!sh
-cd ~/Beremiz/beremiz
-python Beremiz.py
-```
+ cd ~/Beremiz/beremiz
+ python Beremiz.py
-### Run standalone Beremiz service ###
+## Run standalone Beremiz runtime ##
+
+Runtime implementation can be different on different platforms.
+For example, PLC used Cortex-M most likely would have C-based runtime. Beremiz project contains reference implementation in python, that can be easily run on GNU/Linux, Windows and Mac OS X.
+This section will describe how to run it.
+
+If project's URL is 'LOCAL://', then IDE launches temprorary instance of Beremiz python runtime (Beremiz_service.py) localy as user tries to connect to PLC. This allows to debug programs localy without PLC.
+
+If you want to run Beremiz_service.py as standalone service, then follow these instructions:
* Start standalone Beremiz service
-```
-#!sh
-cd ~/Beremiz
-mkdir beremiz_workdir
-cd ~/beremiz
-python Beremiz_service.py -p 61194 -i localhost -x 0 -a 1 ~/Beremiz/beremiz_workdir
-```
+ cd ~/Beremiz
+ mkdir beremiz_workdir
+ cd ~/beremiz
+ python Beremiz_service.py -p 61194 -i localhost -x 0 -a 1 ~/Beremiz/beremiz_workdir
* Launch Beremiz IDE
-```
-#!sh
-cd ~/Beremiz/beremiz
-python Beremiz.py
-```
-* Open/Create PLC project in Beremiz IDE.
-*
-Enter target location URI in project's settings (project->Config->BeremizRoot/URI_location) pointed to your running Beremiz service (For example, PYRO://127.0.0.1:61194).
-Save project and connect to running Beremiz service.
-### Documentation ###
+ cd ~/Beremiz/beremiz
+ python Beremiz.py
+
+* Open/Create PLC project in Beremiz IDE.
+ Enter target location URI in project's settings (project->Config->BeremizRoot/URI_location) pointed to your running Beremiz service (For example, PYRO://127.0.0.1:61194).
+ Save project and connect to running Beremiz service.
+
+## Examples ##
+
+Almost for all functionality exists example in ['tests'](https://bitbucket.org/automforge/beremiz/src/tip/tests/?at=default) directory.
+Most of examples are shown on [Beremiz youtube channel](https://www.youtube.com/channel/UCcE4KYI0p1f6CmSwtzyg-ZA).
+
+## Documentation ##
* See [Beremiz youtube channel](https://www.youtube.com/channel/UCcE4KYI0p1f6CmSwtzyg-ZA) to get quick information how to use Beremiz IDE.
@@ -108,7 +113,7 @@
* See official [Beremiz website](http://www.beremiz.org/) for more information.
-### Support and development ###
+## Support and development ##
Main community support channel is [mailing list](https://sourceforge.net/p/beremiz/mailman/beremiz-devel/) (beremiz-devel@lists.sourceforge.net).
diff -r 62eba810212e -r 53f3eb5c47f7 controls/DebugVariablePanel/DebugVariablePanel.py
--- a/controls/DebugVariablePanel/DebugVariablePanel.py Wed Aug 08 13:27:44 2018 +0200
+++ b/controls/DebugVariablePanel/DebugVariablePanel.py Wed Aug 08 13:46:19 2018 +0200
@@ -35,8 +35,6 @@
import matplotlib
matplotlib.use('WX') # noqa
import matplotlib.pyplot
-from matplotlib.backends.backend_wxagg import _convert_agg_to_wx_bitmap
-
from editors.DebugViewer import DebugViewer
from util.BitmapLibrary import GetBitmap
@@ -525,24 +523,6 @@
def RefreshView(self):
self.RefreshCanvasPosition()
- width, height = self.GraphicsWindow.GetVirtualSize()
- bitmap = wx.EmptyBitmap(width, height)
- dc = wx.BufferedDC(wx.ClientDC(self.GraphicsWindow), bitmap)
- dc.Clear()
- dc.BeginDrawing()
- if self.DraggingAxesPanel is not None:
- destBBox = self.DraggingAxesBoundingBox
- srcBBox = self.DraggingAxesPanel.GetAxesBoundingBox()
-
- srcBmp = _convert_agg_to_wx_bitmap(self.DraggingAxesPanel.get_renderer(), None)
- srcDC = wx.MemoryDC()
- srcDC.SelectObject(srcBmp)
-
- dc.Blit(destBBox.x, destBBox.y,
- int(destBBox.width), int(destBBox.height),
- srcDC, srcBBox.x, srcBBox.y)
- dc.EndDrawing()
-
if not self.Fixed or self.Force:
self.Force = False
refresh_graphics = True
diff -r 62eba810212e -r 53f3eb5c47f7 tests/BACnet/bacnet_0@bacnet/bacnet_slave
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/BACnet/bacnet_0@bacnet/bacnet_slave Wed Aug 08 13:46:19 2018 +0200
@@ -0,0 +1,202 @@
+(dp0
+S'BV_Obj'
+p1
+(lp2
+sS'AV_Obj'
+p3
+(lp4
+(dp5
+S'loc'
+p6
+S'MD0_2'
+p7
+sS'Description'
+p8
+S''
+p9
+sS'Unit ID'
+p10
+I19
+sS'Object Identifier'
+p11
+I0
+sS'Ctype'
+p12
+S'float'
+p13
+sS'BACnetObjTypeID'
+p14
+I2
+sS'Settable'
+p15
+S'Y'
+p16
+sS'Engineering Units'
+p17
+V(Energy) kilowatt-hours (19)
+p18
+sS'Object Name'
+p19
+VEnergyCounter
+p20
+sasS'AO_Obj'
+p21
+(lp22
+(dp23
+g6
+S'QD0_1'
+p24
+sg8
+V
+p25
+sS'Unit ID'
+p26
+I62
+sS'Object Identifier'
+p27
+V0
+p28
+sg12
+g13
+sg14
+I1
+sg15
+g16
+sS'Object Name'
+p29
+VTemperatureSetPoint
+p30
+sS'Engineering Units'
+p31
+V(Temperature) degrees-celsius (62)
+p32
+sasS'MSI_Obj'
+p33
+(lp34
+sS'BO_Obj'
+p35
+(lp36
+(dp37
+g6
+S'QX0_4'
+p38
+sg8
+g9
+sS'Object Identifier'
+p39
+I2
+sg12
+S'uint8_t'
+p40
+sg14
+I4
+sg15
+g16
+sS'Object Name'
+p41
+VBlockClimateControl
+p42
+sasS'MSO_Obj'
+p43
+(lp44
+sS'EDEfile_parm'
+p45
+(dp46
+S'next_EDE_file_version'
+p47
+I1
+ssS'BI_Obj'
+p48
+(lp49
+(dp50
+g6
+S'IX0_3'
+p51
+sg8
+g9
+sS'Object Identifier'
+p52
+I0
+sg12
+g40
+sg14
+I3
+sg15
+S'N'
+p53
+sS'Object Name'
+p54
+VHeater
+p55
+sa(dp56
+g6
+g51
+sg8
+g9
+sg52
+I1
+sg12
+g40
+sg14
+I3
+sg15
+g53
+sg54
+VCooler
+p57
+sasS'AI_Obj'
+p58
+(lp59
+(dp60
+g6
+S'ID0_0'
+p61
+sg8
+VCurrent termperature in Beremiz lab
+p62
+sS'Unit ID'
+p63
+I62
+sS'Object Identifier'
+p64
+I0
+sg12
+g13
+sg14
+I0
+sg15
+g53
+sS'Engineering Units'
+p65
+V(Temperature) degrees-celsius (62)
+p66
+sS'Object Name'
+p67
+VTemperature
+p68
+sa(dp69
+g6
+g61
+sg8
+VCurrent humidity in Beremiz lab
+p70
+sg63
+I29
+sg64
+I1
+sg12
+g13
+sg14
+I0
+sg15
+g53
+sg67
+VHumidity
+p71
+sg65
+V(Humidity) percent-relative-humidity (29)
+p72
+sasS'MSV_Obj'
+p73
+(lp74
+s.
\ No newline at end of file
diff -r 62eba810212e -r 53f3eb5c47f7 tests/BACnet/bacnet_0@bacnet/baseconfnode.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/BACnet/bacnet_0@bacnet/baseconfnode.xml Wed Aug 08 13:46:19 2018 +0200
@@ -0,0 +1,2 @@
+
+
diff -r 62eba810212e -r 53f3eb5c47f7 tests/BACnet/bacnet_0@bacnet/confnode.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/BACnet/bacnet_0@bacnet/confnode.xml Wed Aug 08 13:46:19 2018 +0200
@@ -0,0 +1,2 @@
+
+
diff -r 62eba810212e -r 53f3eb5c47f7 tests/BACnet/beremiz.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/BACnet/beremiz.xml Wed Aug 08 13:46:19 2018 +0200
@@ -0,0 +1,4 @@
+
+
+
+
diff -r 62eba810212e -r 53f3eb5c47f7 tests/BACnet/plc.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/BACnet/plc.xml Wed Aug 08 13:46:19 2018 +0200
@@ -0,0 +1,601 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ EnergyCounter
+
+
+
+
+
+
+
+
+
+
+ EnergyCounter
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0.00131
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Temperature
+
+
+
+
+
+
+ 18.0
+
+
+
+
+
+
+ 30.0
+
+
+
+
+
+
+ 120
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Humidity
+
+
+
+
+
+
+ 55.0
+
+
+
+
+
+
+ 78.0
+
+
+
+
+
+
+ 58
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Temperature
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ControlDisable
+
+
+
+
+
+
+
+
+
+
+ Cooler
+
+
+
+
+
+
+ TemperatureSetPoint
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Temperature
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ControlDisable
+
+
+
+
+
+
+
+
+
+
+ Heater
+
+
+
+
+
+
+ TemperatureSetPoint
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ "beremiz"
+ "BACnet"
+
+If library is installed elsewhere, then place corresponding paths
+in CFLAGS/LDFLAGS in project settings.
+
+For GNU/Linux to install BACnet library in parent directory run following commands:
+$ svn checkout https://svn.code.sf.net/p/bacnet/code/trunk/bacnet-stack/ BACnet
+$ cd BACnet
+$ make
+
+After that BACnet extension is ready to be used in Beremiz projects.
+BACnet stack implementation contains a lot of test tools. They could be useful during
+debugging and BACnet investigation. See "BACnet/bin/readme.txt" for more information about them.]]>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff -r 62eba810212e -r 53f3eb5c47f7 tests/modbus/beremiz.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/modbus/beremiz.xml Wed Aug 08 13:46:19 2018 +0200
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff -r 62eba810212e -r 53f3eb5c47f7 tests/modbus/modbus_0@modbus/ModbusTCPclient_0@ModbusTCPclient/ModbusRequest_0@ModbusRequest/baseconfnode.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/modbus/modbus_0@modbus/ModbusTCPclient_0@ModbusTCPclient/ModbusRequest_0@ModbusRequest/baseconfnode.xml Wed Aug 08 13:46:19 2018 +0200
@@ -0,0 +1,2 @@
+
+
diff -r 62eba810212e -r 53f3eb5c47f7 tests/modbus/modbus_0@modbus/ModbusTCPclient_0@ModbusTCPclient/ModbusRequest_0@ModbusRequest/confnode.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/modbus/modbus_0@modbus/ModbusTCPclient_0@ModbusTCPclient/ModbusRequest_0@ModbusRequest/confnode.xml Wed Aug 08 13:46:19 2018 +0200
@@ -0,0 +1,2 @@
+
+
diff -r 62eba810212e -r 53f3eb5c47f7 tests/modbus/modbus_0@modbus/ModbusTCPclient_0@ModbusTCPclient/ModbusRequest_1@ModbusRequest/baseconfnode.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/modbus/modbus_0@modbus/ModbusTCPclient_0@ModbusTCPclient/ModbusRequest_1@ModbusRequest/baseconfnode.xml Wed Aug 08 13:46:19 2018 +0200
@@ -0,0 +1,2 @@
+
+
diff -r 62eba810212e -r 53f3eb5c47f7 tests/modbus/modbus_0@modbus/ModbusTCPclient_0@ModbusTCPclient/ModbusRequest_1@ModbusRequest/confnode.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/modbus/modbus_0@modbus/ModbusTCPclient_0@ModbusTCPclient/ModbusRequest_1@ModbusRequest/confnode.xml Wed Aug 08 13:46:19 2018 +0200
@@ -0,0 +1,2 @@
+
+
diff -r 62eba810212e -r 53f3eb5c47f7 tests/modbus/modbus_0@modbus/ModbusTCPclient_0@ModbusTCPclient/baseconfnode.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/modbus/modbus_0@modbus/ModbusTCPclient_0@ModbusTCPclient/baseconfnode.xml Wed Aug 08 13:46:19 2018 +0200
@@ -0,0 +1,2 @@
+
+
diff -r 62eba810212e -r 53f3eb5c47f7 tests/modbus/modbus_0@modbus/ModbusTCPclient_0@ModbusTCPclient/confnode.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/modbus/modbus_0@modbus/ModbusTCPclient_0@ModbusTCPclient/confnode.xml Wed Aug 08 13:46:19 2018 +0200
@@ -0,0 +1,2 @@
+
+
diff -r 62eba810212e -r 53f3eb5c47f7 tests/modbus/modbus_0@modbus/ModbusTCPserver_0@ModbusTCPserver/HoldingRegs@MemoryArea/baseconfnode.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/modbus/modbus_0@modbus/ModbusTCPserver_0@ModbusTCPserver/HoldingRegs@MemoryArea/baseconfnode.xml Wed Aug 08 13:46:19 2018 +0200
@@ -0,0 +1,2 @@
+
+
diff -r 62eba810212e -r 53f3eb5c47f7 tests/modbus/modbus_0@modbus/ModbusTCPserver_0@ModbusTCPserver/HoldingRegs@MemoryArea/confnode.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/modbus/modbus_0@modbus/ModbusTCPserver_0@ModbusTCPserver/HoldingRegs@MemoryArea/confnode.xml Wed Aug 08 13:46:19 2018 +0200
@@ -0,0 +1,2 @@
+
+
diff -r 62eba810212e -r 53f3eb5c47f7 tests/modbus/modbus_0@modbus/ModbusTCPserver_0@ModbusTCPserver/InputRegs@MemoryArea/baseconfnode.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/modbus/modbus_0@modbus/ModbusTCPserver_0@ModbusTCPserver/InputRegs@MemoryArea/baseconfnode.xml Wed Aug 08 13:46:19 2018 +0200
@@ -0,0 +1,2 @@
+
+
diff -r 62eba810212e -r 53f3eb5c47f7 tests/modbus/modbus_0@modbus/ModbusTCPserver_0@ModbusTCPserver/InputRegs@MemoryArea/confnode.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/modbus/modbus_0@modbus/ModbusTCPserver_0@ModbusTCPserver/InputRegs@MemoryArea/confnode.xml Wed Aug 08 13:46:19 2018 +0200
@@ -0,0 +1,2 @@
+
+
diff -r 62eba810212e -r 53f3eb5c47f7 tests/modbus/modbus_0@modbus/ModbusTCPserver_0@ModbusTCPserver/baseconfnode.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/modbus/modbus_0@modbus/ModbusTCPserver_0@ModbusTCPserver/baseconfnode.xml Wed Aug 08 13:46:19 2018 +0200
@@ -0,0 +1,2 @@
+
+
diff -r 62eba810212e -r 53f3eb5c47f7 tests/modbus/modbus_0@modbus/ModbusTCPserver_0@ModbusTCPserver/confnode.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/modbus/modbus_0@modbus/ModbusTCPserver_0@ModbusTCPserver/confnode.xml Wed Aug 08 13:46:19 2018 +0200
@@ -0,0 +1,2 @@
+
+
diff -r 62eba810212e -r 53f3eb5c47f7 tests/modbus/modbus_0@modbus/baseconfnode.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/modbus/modbus_0@modbus/baseconfnode.xml Wed Aug 08 13:46:19 2018 +0200
@@ -0,0 +1,2 @@
+
+
diff -r 62eba810212e -r 53f3eb5c47f7 tests/modbus/modbus_0@modbus/confnode.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/modbus/modbus_0@modbus/confnode.xml Wed Aug 08 13:46:19 2018 +0200
@@ -0,0 +1,2 @@
+
+
diff -r 62eba810212e -r 53f3eb5c47f7 tests/modbus/plc.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/modbus/plc.xml Wed Aug 08 13:46:19 2018 +0200
@@ -0,0 +1,314 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ "beremiz"
+ "Modbus"
+
+If Modbus library is installed elsewhere, then place corresponding paths
+in CFLAGS/LDFLAGS in project settings.
+
+For GNU/Linux to install Modbus library in parent directory run following commands:
+$ hg clone https://bitbucket.org/mjsousa/modbus Modbus
+$ cd Modbus
+$ make
+
+After that Modbus extension is ready to be used in Beremiz projects.]]>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ T#1s
+
+
+
+
+
+
+ 32767
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Counter
+
+
+
+
+
+
+
+
+
+
+ MasterWriteToReg0
+
+
+
+
+
+
+ MasterReadFromReg1
+
+
+
+
+
+
+
+
+
+
+ CounterReadBack
+
+
+
+
+
+
+
+
+
+
+
+
+ SlaveHoldReg0
+
+
+
+
+
+
+
+
+
+
+ SlaveInputReg0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+