Andrey Skvortsov <andrej.skvortzov@gmail.com> [Mon, 13 Aug 2018 18:21:10 +0300] rev 2283
Remove useless print statement from wxHMI GUI code
It's py3k incompatible.
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Mon, 13 Aug 2018 18:19:17 +0300] rev 2282
Rename extension instance 'wxHMI' to 'wxglade_hmi'
It is necessary because of following commit 7f59aa398669 ('WxGlade HMI extension now does
only instanciate wx object who's name match extension's name. If no
object match the name and no code is provided in 'start' user python
code section, then a warning is issued')
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Mon, 13 Aug 2018 18:05:16 +0300] rev 2281
Remove backup .bak files
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Mon, 13 Aug 2018 11:33:30 +0300] rev 2280
Drop EtherCAT examples, because they are non-functional without releasing motion control library
Closes #38
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Fri, 10 Aug 2018 18:07:38 +0300] rev 2279
merge
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Fri, 10 Aug 2018 17:45:33 +0300] rev 2278
Dirty fix for error '_object_has_no_attribute_'getSlave' in EtherCAT extension
traceback:
File "/home/developer/WorkData/PLC/beremiz/beremiz/IDEFrame.py", line 1433, in OnPouSelectedChanged
window.RefreshView()
File "/home/developer/WorkData/PLC/beremiz/beremiz/etherlab/ConfigEditor.py", line 837, in RefreshView
self.RefreshProcessVariables()
File "/home/developer/WorkData/PLC/beremiz/beremiz/etherlab/ConfigEditor.py", line 886, in RefreshProcessVariables
slaves = self.Controler.GetSlaves(**self.CurrentNodesFilter)
File "/home/developer/WorkData/PLC/beremiz/beremiz/etherlab/EthercatMaster.py", line 341, in GetSlaves
for slave in self.Config.getConfig().getSlave():
<type 'exceptions.AttributeError'>:_'lxml.etree._Element'_object_has_no_attribute_'getSlave'
Steps to reproduce problem:
- Add new EtherCAT master
- Add new EthercatNode to the master
- double click on
this is looks like dirty hack to fix strange problem with initial[0]
changing its type after returning from _init_ method to lxml.etree._Element
As a result all methods generated by class factory are lost.
For example, in function initMethod initial[0].__class__ points to
xmlclass.xmlclass.Config. After map(self.append, initial)
self.Config.__class__ is 'xmlclass.xmlclass.Config' as well.
But after returning from initMethod (_init) in CreateElement
self.Config.__class__ has changed to lxml.etree._Element.
I've noticed similar behavior if copy/deepcopy is used for any child
of etree.ElementBase. See simple example below.
[-------------------------------------------------------------]
#!/usr/bin/python
from __future__ import print_function
from lxml import etree
import copy
class DefaultElementClass(etree.ElementBase):
def getLocalTag(self):
return etree.QName(self.tag).localname
def printInformation(x):
print(x, x.__class__, "getLocalTag" in dir(x))
a = DefaultElementClass()
printInformation(a)
#
printInformation(copy.copy(a))
printInformation(copy.deepcopy(a))
[-------------------------------------------------------------]
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Fri, 10 Aug 2018 15:58:40 +0300] rev 2277
Fix wrong ST code generation in case of several coils connected to each other.
For example,
|---|Var0|----(Var1)--(Var2)---|
Closes #32
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Thu, 09 Aug 2018 14:00:14 +0300] rev 2276
Update README with instruction to build BACnet library for BACnet support
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Thu, 09 Aug 2018 13:58:47 +0300] rev 2275
Improve fix wrong code generation if EN/ENO are used in FBD/LD/SFC
Commit c9915bc6 "Fix wrong code generation if EN/ENO are used in
FBD/LD/SFC" caused following backtrace in some cases:
File "/home/developer/WorkData/PLC/beremiz/beremiz/PLCGenerator.py", line 476, in GenerateProgram
self.GeneratePouProgram(pou_name)
File "/home/developer/WorkData/PLC/beremiz/beremiz/PLCGenerator.py", line 258, in GeneratePouProgram
program = pou_program.GenerateProgram(pou)
File "/home/developer/WorkData/PLC/beremiz/beremiz/PLCGenerator.py", line 1713, in GenerateProgram
self.ComputeProgram(pou)
File "/home/developer/WorkData/PLC/beremiz/beremiz/PLCGenerator.py", line 997, in ComputeProgram
eno_var = self.GetUsedEno(body, connections)
File "/home/developer/WorkData/PLC/beremiz/beremiz/PLCGenerator.py", line 929, in GetUsedEno
for invar in blk.inputVariables.getvariable():
File "/home/developer/WorkData/PLC/beremiz/beremiz/xmlclass/xmlclass.py", line 1363, in getattrMethod
return DefaultElementClass.__getattribute__(self, name)
<type 'exceptions.AttributeError'>: 'inOutVariable' object has no attribute 'inputVariables'
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Wed, 01 Aug 2018 14:09:12 +0300] rev 2274
Load images for EtherCAT extension
Fixes following backtrace:
Traceback (most recent call last):
File "/usr/lib/python2.7/dist-packages/wx-3.0-gtk3/wx/_core.py", line 16765, in <lambda>
lambda event: event.callable(*event.args, **event.kw) )
File "/home/developer/WorkData/PLC/beremiz/beremiz/BeremizIDE.py", line 1074, in AddConfNode
self._Refresh(TITLE, FILEMENU, PROJECTTREE)
File "/home/developer/WorkData/PLC/beremiz/beremiz/IDEFrame.py", line 917, in _Refresh
self.RefreshFunctions[element]()
File "/home/developer/WorkData/PLC/beremiz/beremiz/IDEFrame.py", line 1526, in RefreshProjectTree
self.GenerateProjectTreeBranch(root, infos)
File "/home/developer/WorkData/PLC/beremiz/beremiz/IDEFrame.py", line 1565, in GenerateProjectTreeBranch
self.GenerateProjectTreeBranch(item, values)
File "/home/developer/WorkData/PLC/beremiz/beremiz/IDEFrame.py", line 1554, in GenerateProjectTreeBranch
self.TreeImageDict[icon_name] = self.TreeImageList.Add(GetBitmap(icon_name))
File "/usr/lib/python2.7/dist-packages/wx-3.0-gtk3/wx/_gdi.py", line 6735, in Add
return _gdi_.ImageList_Add(*args, **kwargs)
ValueError: invalid null reference in method 'ImageList_Add', expected argument 2 of type 'wxBitmap const &
Edouard Tisserant [Wed, 12 Sep 2018 11:36:50 +0200] rev 2273
Flush standard output when runtime ready, so that IDE knows it, and can continue connection to LOCAL:// uri
Edouard Tisserant [Tue, 11 Sep 2018 16:08:21 +0200] rev 2272
Change behaviour of python_eval function block : if TRIG is false, then ACK is also false except a pulse precisely when receiving answer from interpreter
Edouard Tisserant [Wed, 05 Sep 2018 12:58:41 +0200] rev 2271
Removed useless condition in Worker.py that was allowing misfit non-serialized call when worker still not running its loop.
Edouard Tisserant [Tue, 21 Aug 2018 16:11:02 +0200] rev 2270
Refactoring. Separated PLC Object, PYRO Server and MainWorker :
- PLC Object is now a Singleton, instantiated through runtime.CreatePLCObjectSingleton(...)
- Pyro server doesn't hold any reference to PLCObject, and doesn't create it anymore
- PLC Object class doesn't inherit from Pyro.ObjBase anymore
- Pyro related code moved to runtime.PyroServer.py
- MainWorker class moved to runtime/Worker.py
- Both PLC Object and MainWorker creation happens in runtime/__init__.py
Edouard Tisserant [Thu, 16 Aug 2018 11:22:40 +0200] rev 2269
Fixed new code-generation code, that was making exception with simple variable-to-variable assignments.
Edouard Tisserant [Tue, 14 Aug 2018 13:10:15 +0200] rev 2268
BACnet : Fixed missing header include in server.c introduced in 37ef7a3c6b8b
Edouard Tisserant [Tue, 14 Aug 2018 12:43:43 +0200] rev 2267
merged
dporopat <denis.poropat@smarteh.si> [Tue, 14 Aug 2018 11:14:20 +0200] rev 2266
NevowServer : Added minimalist css style customization and a link to go to settings page and back
Edouard Tisserant [Mon, 13 Aug 2018 15:00:51 +0200] rev 2265
fixed setServer call in WampClient module. Was doing nothing because _PySrv wasn't global.
Edouard Tisserant [Mon, 13 Aug 2018 14:58:59 +0200] rev 2264
Removed now deprecated ForceReload from WAMP exposed calls
Edouard Tisserant [Mon, 13 Aug 2018 13:24:48 +0200] rev 2263
fixed documentation bug
Edouard Tisserant [Mon, 13 Aug 2018 13:24:28 +0200] rev 2262
NevowServer : added addInfoString to allow extensions to declare some read-only strings to be displayed in settings. Also renamed addExtension in addSettings for clarity.
Mario de Sousa <msousa@fe.up.pt> [Mon, 13 Aug 2018 11:10:23 +0200] rev 2261
fixed problems reported by certification testing : vendor identifier acces rights (now read only), and bvlc_maintenance timer was increasing too fast.
Edouard Tisserant [Thu, 09 Aug 2018 09:07:09 +0200] rev 2260
Some blank lines to make bitbucket's PEP8 2.2.0 happy
Edouard Tisserant [Wed, 08 Aug 2018 13:46:19 +0200] rev 2259
merged Andrey's default
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Wed, 01 Aug 2018 13:09:45 +0300] rev 2258
Fix wrong code generation if EN/ENO are used in FBD/LD/SFC
This problem appears for example here
--------
------- | MOVE |
| MOVE1 |------|EN ENO|
------- | |
| |
------- | | -----------
| 23 |------|IN OUT|---| LocalVar0 |
------- -------- -----------
--------
------- | MOVE |
| MOVE2 |------|EN ENO|
------- | |
| |
------- | | -----------
| 15 |------|IN OUT|---| LocalVar0 |
------- -------- -----------
Before wrong code was generated for this case:
MOVE6_OUT := MOVE(EN := move1, IN := 23, ENO => MOVE6_ENO);
LocalVar0 := MOVE6_OUT;
MOVE4_OUT := MOVE(EN := move2, IN := 15, ENO => MOVE4_ENO);
LocalVar0 := MOVE4_OUT;
With this patch now following code is generated:
MOVE6_OUT := MOVE(EN := move1, IN := 23, ENO => MOVE6_ENO);
IF MOVE6_ENO THEN
LocalVar0 := MOVE6_OUT;
END_IF;
MOVE4_OUT := MOVE(EN := move2, IN := 15, ENO => MOVE4_ENO);
IF MOVE4_ENO THEN
LocalVar0 := MOVE4_OUT;
END_IF;
See discussion here:
https://sourceforge.net/p/beremiz/mailman/message/36378805/
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Tue, 31 Jul 2018 14:17:41 +0300] rev 2257
Fix flickering in debug panel
This flickering made debug panel unusable, because most of the time
panel was white. This problem effects wxPython with GTK3+ backend
(at least on GNU/Linux systems).
Removed code IIUC draws box with content of moved debug variable, I
don't see any effect of it neither on GNU/Linux nor on Windows. It
should be safe to remove.
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Mon, 30 Jul 2018 19:28:39 +0300] rev 2256
Fix non-usable toolbar on wxPython with GTK3+
On GNU/Linux if wxPython uses wxWidget with GTK3+ backend (this is
what most modern distributions do), then size of EditorToolBar was
always to store only one button.
This is because GetBestSize() is updated only after pane is shown and
updated.
The code does work correctly on python-wxgtk3.0 (gtk2 backend) on
GNU/Linux and with wxpython 2.8 on Windows.
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Mon, 30 Jul 2018 19:02:36 +0300] rev 2255
Fix problem with decreasing size of StatusToolBar when tools are removed from toolbar.
StatusToolBar - toolbar with tool to build, clear, connect, ...
This problem appears only in python-wxgtk3.0. In python-wxgtk2.8 there
was not such problem.
If call StatusToolBar.SetMinSize(wx.DefaultSize), all is working, but
following warning message appears:
(Beremiz.py:15155): Gtk-WARNING **: 18:42:24.115: Negative content
width -6 (allocation 1, extents 4x3) while allocating gadget (node
toolbar, owner GtkToolbar)
To avoid that StatusToolBar.GetToolBitmapSize() is used instead of wx.DefaultSize
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Sun, 29 Jul 2018 02:00:03 +0300] rev 2254
Add BACnet example
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Fri, 27 Jul 2018 22:01:10 +0000] rev 2253
Rework README.md, add examples section, add instructions for Modbus extension, more information about runtime.
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Fri, 27 Jul 2018 15:44:20 +0300] rev 2252
Add Modbus example
Edouard Tisserant [Wed, 08 Aug 2018 13:27:44 +0200] rev 2251
Disable source quality checking on ethercat plugin - will fix it later
Edouard Tisserant [Wed, 08 Aug 2018 13:26:48 +0200] rev 2250
Passed bacnet*.py through autopep8, and attemped to fix manually what went wrong + fixed pylint complains
Edouard Tisserant [Wed, 08 Aug 2018 10:17:19 +0200] rev 2249
More pylint+pep8 conformance
Edouard Tisserant [Wed, 08 Aug 2018 10:15:51 +0200] rev 2248
autopep8 + hand made fixes on ProjectController.py runtime/WampClient.py wxglade_hmi/wxglade_hmi.py
Edouard Tisserant [Tue, 07 Aug 2018 13:35:28 +0200] rev 2247
pylint on runtime/NevowServer.py
Edouard Tisserant [Mon, 06 Aug 2018 15:36:09 +0200] rev 2246
pep8 on runtime/NevowServer.py
Edouard Tisserant [Mon, 06 Aug 2018 14:30:43 +0200] rev 2245
merged
Edouard Tisserant [Mon, 06 Aug 2018 13:14:50 +0200] rev 2244
Make some POU libraries selected by default or not. This changes structure of features.libraries, please check and update your extensions if they use libraries
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Wed, 04 Jul 2018 17:47:38 +0300] rev 2243
remove useless code
1. hotkey is already defined in menu string
2. remove duplicated code
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Wed, 04 Jul 2018 16:41:02 +0300] rev 2242
Add full screen mode (menu and title are hidden)
It's can be switched by pressing Shift-F12 or by clicking button on the toolbar
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Tue, 03 Jul 2018 17:09:11 +0300] rev 2241
Add information how to make shelve command work with check_source.sh called from hg hook
and added coresponding flag handling in check_source.sh
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Fri, 29 Jun 2018 17:53:57 +0300] rev 2240
Automatically increment IEC-location address if copy of the variable is created
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Fri, 29 Jun 2018 15:36:34 +0300] rev 2239
Make information about translation to be in unicode
This is necessary because some translator's names contains non-ASCII
characters and they are not handled properly in about dialog on Windows
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Fri, 29 Jun 2018 13:40:11 +0300] rev 2238
Take plcopen_icons.svg as source of png icons as well
generate poe.ico from png images of different sizes.
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Fri, 29 Jun 2018 13:36:32 +0300] rev 2237
Add 256x256 and 64x64 Beremiz icons
remove svg:midPointStop tags from icons.svg, because Inkscape
complained about unsupported tag. It seems that these tags were made
by Adobe Illustrator and aren't supported by any other app.
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Fri, 29 Jun 2018 13:30:39 +0300] rev 2236
Add PLCOpenEditor icon to plcopen_icons.svg
add 256x256 size to the icon
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Wed, 27 Jun 2018 18:13:31 +0300] rev 2235
Fix rounding of thousandths of microseconds in duration editor
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Wed, 27 Jun 2018 17:13:06 +0300] rev 2234
Add checking value in microseconds field in duration editor dialog
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Wed, 27 Jun 2018 13:57:03 +0300] rev 2233
Catch 'clipboard already open' errors in editors
Apparently following commits have not fixed the problem completely,
because it still happens (although not so often).
changeset: 2019:b8f795bdfe9f
user: Andrey Skvortsov <andrej.skvortzov@gmail.com>
date: Fri May 25 17:40:29 2018 +0300
summary: fix hangs on mouse selection in case if wxPython uses wxWidgets with GTK3+ support
changeset: 2018:5ce6d08ff2c7
user: Andrey Skvortsov <andrej.skvortzov@gmail.com>
date: Fri May 25 17:23:15 2018 +0300
summary: make clipboard open minimal time as wxPython documentation recommends
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Wed, 27 Jun 2018 10:58:45 +0300] rev 2232
If task type is changed from 'interrupt' to 'cyclic' init interval with T#20ms.
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Tue, 26 Jun 2018 18:02:51 +0300] rev 2231
Explicitly enable required libraries in test projects
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Tue, 26 Jun 2018 17:46:37 +0300] rev 2230
Disable by default unlisted in project beremiz.xml libraries
Used libraries should be explicitly enabled.
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Tue, 26 Jun 2018 17:34:15 +0300] rev 2229
Fix 'DoGetTextExtent - invalid DC' error
most likely this error happens only on certain wx backends.
GTK3+ on GNU/Linux is apparently one of them.
The problem is described in wxWidgets issue tracker.
http://trac.wxwidgets.org/ticket/12486
[-------------------------------------------------------------------------------------------------------------------]
platform:
Linux-4.16.0-2-rt-amd64-x86_64-with-debian-buster-sid
python-version:
2.7.15
traceback:
File "/home/developer/WorkData/PLC/beremiz/beremiz/ProjectController.py", line 1605, in DispatchDebugValuesProc
self.CallWeakcallables("__tick__", "NewDataAvailable", debug_ticks)
File "/home/developer/WorkData/PLC/beremiz/beremiz/ProjectController.py", line 1585, in CallWeakcallables
function(*cargs)
File "/home/developer/WorkData/PLC/beremiz/beremiz/editors/Viewer.py", line 1217, in NewDataAvailable
refresh_rect.Union(element.GetRedrawRect())
File "/home/developer/WorkData/PLC/beremiz/beremiz/graphics/GraphicCommons.py", line 1609, in GetRedrawRect
self.ValueSize = self.Parent.GetMiniTextExtent(self.ComputedValue)
File "/home/developer/WorkData/PLC/beremiz/beremiz/editors/Viewer.py", line 932, in GetMiniTextExtent
return self.MiniTextDC.GetTextExtent(text)
File "/usr/lib/python2.7/dist-packages/wx-3.0-gtk3/wx/_gdi.py", line 4127, in GetTextExtent
return _gdi_.DC_GetTextExtent(*args, **kwargs)
<class 'wx._core.PyAssertionError'>: C++ assertion "m_graphicContext" failed at ../src/common/dcgraph.cpp(1160) in DoGetTextExtent(): wxGCDC(cg)::DoGetTextExtent - invalid DC
wx-platform:
__WXGTK__
wx-version:
3.0.2.0
[-------------------------------------------------------------------------------------------------------------------]
traceback:
File "/home/developer/WorkData/PLC/beremiz/beremiz/controls/LogViewer.py", line 740, in OnMessageToolTipTimer
self.MessageToolTip.SetFont(self.Font)
File "/home/developer/WorkData/PLC/beremiz/beremiz/controls/CustomToolTip.py", line 75, in SetFont
self.RefreshTip()
File "/home/developer/WorkData/PLC/beremiz/beremiz/controls/CustomToolTip.py", line 158, in RefreshTip
self.SetClientSize(self.GetToolTipSize())
File "/home/developer/WorkData/PLC/beremiz/beremiz/controls/CustomToolTip.py", line 145, in GetToolTipSize
w, h = dc.GetTextExtent(line)
File "/usr/lib/python2.7/dist-packages/wx-3.0-gtk3/wx/_gdi.py", line 4127, in GetTextExtent
return _gdi_.DC_GetTextExtent(*args, **kwargs)
<class 'wx._core.PyAssertionError'>: C++ assertion "m_graphicContext" failed at ../src/common/dcgraph.cpp(1160) in DoGetTextExtent(): wxGCDC(cg)::DoGetTextExtent - invalid DC
[-------------------------------------------------------------------------------------------------------------------]
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Tue, 26 Jun 2018 14:48:44 +0300] rev 2228
Fix size of ProjectDialog used by PLCOpenEditor
Disable scrolling for ProjectDialog, because otherwise very very small
windows is created.
This regression was introduced by 5701225 ("replaced normal panel with scrolled panel under project
properties").
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Tue, 26 Jun 2018 10:37:36 +0300] rev 2227
Fix some compilation warnings for better ANSI C compliance
Edouard Tisserant [Fri, 20 Jul 2018 11:10:42 +0200] rev 2226
Customizable columns in VariableTables (i.e. can be monkey patched properly)
Edouard Tisserant [Fri, 20 Jul 2018 11:05:17 +0200] rev 2225
Merged
Edouard Tisserant [Thu, 19 Jul 2018 13:32:27 +0200] rev 2224
Customizable update of toolbar buttons (i.e. 'methods') according to PLCStatus
Edouard Tisserant [Fri, 13 Jul 2018 09:06:01 +0200] rev 2223
Fixed small typo in error message.
Edouard Tisserant [Thu, 12 Jul 2018 09:35:09 +0200] rev 2222
WAMP : complains about failure to start WAMP only if it was successfully imported.
Edouard Tisserant [Wed, 11 Jul 2018 14:32:19 +0200] rev 2221
WAMP: now config and secret given in project files always override those given in commandline. Also made extensions web customisations happen before registration of web interface.
Edouard Tisserant [Tue, 10 Jul 2018 12:54:05 +0200] rev 2220
Moved Wamp configuration file selection logic into runtime/wampclient.py. Added Wamp CRA secret file upload and download. Slightly reworked code for config and secret file loading and saving.