Andrey Skvortsov <andrej.skvortzov@gmail.com> [Tue, 05 Mar 2019 11:43:20 +0300] rev 2520
Fix backtrace on printing localized (non-ascii) error message in PLCGenerator.
traceback:
File "C:\Beremiz\targets\st\beremiz\..\..\..\beremiz\beremiz\BeremizIDE.py", line 811, in OnMenu
getattr(self.CTR, method)()
File "C:\Beremiz\targets\st\beremiz\..\..\..\beremiz\beremiz\ProjectController.py", line 1134, in _Build
IECGenRes = self._Generate_SoftPLC()
File "C:\Beremiz\targets\st\beremiz\..\..\..\beremiz\beremiz\ProjectController.py", line 746, in _Generate_SoftPLC
if self._Generate_PLC_ST():
File "C:\Beremiz\targets\st\beremiz\..\..\..\beremiz\beremiz\ProjectController.py", line 763, in _Generate_PLC_ST
self._getIECgeneratedcodepath())
File "C:\Beremiz\targets\st\beremiz\..\..\..\beremiz\beremiz\PLCControler.py", line 466, in GenerateProgram
errors.append(str(ex))
<type 'exceptions.UnicodeEncodeError'>: 'ascii' codec can't encode characters in position 0-9: ordinal not in range(128)
Fix backtrace on printing localized (non-ascii) error message in PLCGenerator.
traceback:
File "C:\Beremiz\targets\st\beremiz\..\..\..\beremiz\beremiz\BeremizIDE.py", line 811, in OnMenu
getattr(self.CTR, method)()
File "C:\Beremiz\targets\st\beremiz\..\..\..\beremiz\beremiz\ProjectController.py", line 1134, in _Build
IECGenRes = self._Generate_SoftPLC()
File "C:\Beremiz\targets\st\beremiz\..\..\..\beremiz\beremiz\ProjectController.py", line 746, in _Generate_SoftPLC
if self._Generate_PLC_ST():
File "C:\Beremiz\targets\st\beremiz\..\..\..\beremiz\beremiz\ProjectController.py", line 763, in _Generate_PLC_ST
self._getIECgeneratedcodepath())
File "C:\Beremiz\targets\st\beremiz\..\..\..\beremiz\beremiz\PLCControler.py", line 466, in GenerateProgram
errors.append(str(ex))
<type 'exceptions.UnicodeEncodeError'>: 'ascii' codec can't encode characters in position 0-9: ordinal not in range(128)
Close #67
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Tue, 05 Mar 2019 11:19:36 +0300] rev 2519
Fix crash if LD input contact isn't connected
Traceback (most recent call last):
File "/home/developer/WorkData/PLC/beremiz/beremiz/BeremizIDE.py", line 339, in OnMethod
obj.CTR.CallMethod('_'+meth)
File "/home/developer/WorkData/PLC/beremiz/beremiz/ProjectController.py", line 1996, in CallMethod
getattr(self, method)()
File "/home/developer/WorkData/PLC/beremiz/beremiz/ProjectController.py", line 1134, in _Build
IECGenRes = self._Generate_SoftPLC()
File "/home/developer/WorkData/PLC/beremiz/beremiz/ProjectController.py", line 746, in _Generate_SoftPLC
if self._Generate_PLC_ST():
File "/home/developer/WorkData/PLC/beremiz/beremiz/ProjectController.py", line 763, in _Generate_PLC_ST
self._getIECgeneratedcodepath())
File "/home/developer/WorkData/PLC/beremiz/beremiz/PLCControler.py", line 456, in GenerateProgram
self.ProgramChunks = GenerateCurrentProgram(self, self.Project, errors, warnings)
File "/home/developer/WorkData/PLC/beremiz/beremiz/PLCGenerator.py", line 1762, in GenerateCurrentProgram
generator.GenerateProgram()
File "/home/developer/WorkData/PLC/beremiz/beremiz/PLCGenerator.py", line 478, in GenerateProgram
self.GeneratePouProgram(pou_name)
File "/home/developer/WorkData/PLC/beremiz/beremiz/PLCGenerator.py", line 260, in GeneratePouProgram
program = pou_program.GenerateProgram(pou)
File "/home/developer/WorkData/PLC/beremiz/beremiz/PLCGenerator.py", line 1718, in GenerateProgram
self.ComputeProgram(pou)
File "/home/developer/WorkData/PLC/beremiz/beremiz/PLCGenerator.py", line 1028, in ComputeProgram
self.GenerateBlock(instance, block_infos, body, None)
File "/home/developer/WorkData/PLC/beremiz/beremiz/PLCGenerator.py", line 1144, in GenerateBlock
expression = self.ComputeExpression(body, connections, executionOrderId > 0)
File "/home/developer/WorkData/PLC/beremiz/beremiz/PLCGenerator.py", line 1373, in ComputeExpression
paths = self.GeneratePaths(connections, body, order, to_inout)
File "/home/developer/WorkData/PLC/beremiz/beremiz/PLCGenerator.py", line 1344, in GeneratePaths
elif isinstance(result[0], list):
IndexError: list index out of range
Close #70
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Fri, 01 Mar 2019 16:55:16 +0300] rev 2518
Fix section styling in code editor (python and c extensions) if non-latin symbols are used in the code
Problem exists even if non-latin characters are placed in comments.
Close #76
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Thu, 21 Feb 2019 11:39:50 +0300] rev 2517
update localization template
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Thu, 21 Feb 2019 11:27:16 +0300] rev 2516
merge
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Thu, 21 Feb 2019 11:25:58 +0300] rev 2515
updated list of translators
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Thu, 21 Feb 2019 11:25:03 +0300] rev 2514
update translations from https://www.transifex.com/beremiz/beremiz-ide
added Basque (eu) and Vietnamese (Viet Nam) (vi_VN) translations
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Thu, 21 Feb 2019 10:58:37 +0300] rev 2513
Add SpinButtons for integer and floating point variables in ForceVariableDialog
it allows to change variable value using only mouse.
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Thu, 21 Feb 2019 10:17:38 +0300] rev 2512
Fix non-marking as manually forced floating point variable if the value isn't integer
For example, if user in debug variable panel set any floating point
variable to 34.3, then it's not shown as forced (blue color) and user
can't release this enforcement.
If user changes the value to 34.0, then enforcement shows
correctly. This is done because binary representation of floating point
numbers in IDE and runtime can be slightly different (double vs float)
and as a result values aren't equal.
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Thu, 14 Feb 2019 10:27:24 +0300] rev 2511
Don't close ForceVariableDialog if user entered wrong new value
return back to edit field in this case
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Thu, 14 Feb 2019 10:19:30 +0300] rev 2510
Additional fix for rewrite ForceVariableDialog commit (9076249f)
fix 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/controls/DebugVariablePanel/DebugVariableViewer.py", line 232, in HandleButton
button.ProcessCallback()
File "/home/developer/WorkData/PLC/beremiz/beremiz/controls/DebugVariablePanel/GraphButton.py", line 156, in ProcessCallback
self.Callback()
File "/home/developer/WorkData/PLC/beremiz/beremiz/controls/DebugVariablePanel/DebugVariableViewer.py", line 350, in OnForceButton
self.ForceValue(self.ItemsDict.values()[0])
File "/home/developer/WorkData/PLC/beremiz/beremiz/controls/DebugVariablePanel/DebugVariableViewer.py", line 428, in ForceValue
dialog.GetValue())
File "/home/developer/WorkData/PLC/beremiz/beremiz/dialogs/ForceVariableDialog.py", line 232, in GetValue
return GetTypeValue[self.IEC_Type](wx.TextEntryDialog.GetValue(self))
TypeError: unbound method GetValue() must be called with TextEntryDialog instance as first argument (got ForceVariableDialog instance instead)
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Thu, 14 Feb 2019 10:02:58 +0300] rev 2509
Fix redraw problems in preview frames and debug panel
The problem was that direct call of RefreshView (now DrawView) doesn't
generate EVT_PAINT (at least on GNU/Linux with Wayland and wxgtk build
with gtk3+ support).
Now RefreshView simply triggers EVT_PAINT and EVT_PAINT handler does actual work.
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Thu, 14 Feb 2019 09:44:19 +0300] rev 2508
Rewrite ForceVariableDialog. It's not based on wx.TextEntryDialog
Don't customize standard wx.TextEntryDialog on the fly, implement your
own dialog for that with expected behavior and without any hacks.
Mario de Sousa <msousa@fe.up.pt> [Wed, 13 Feb 2019 13:35:48 +0000] rev 2507
merge updates to modbus/mb_runtime.c
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Mon, 14 Jan 2019 12:30:32 +0300] rev 2506
fix 'SaveAs' in case of overwriting existing project
Traceback (most recent call last):
File "/home/developer/WorkData/PLC/beremiz/beremiz/BeremizIDE.py", line 959, in OnSaveProjectAsMenu
self.CTR.SaveProjectAs()
File "/home/developer/WorkData/PLC/beremiz/beremiz/ProjectController.py", line 600, in SaveProjectAs
self.SaveProject(old_project_path)
File "/home/developer/WorkData/PLC/beremiz/beremiz/ProjectController.py", line 579, in SaveProject
self._getProjectFilesPath(self.ProjectPath))
File "/usr/lib/python2.7/shutil.py", line 200, in copytree
os.makedirs(dst)
File "/usr/lib/python2.7/os.py", line 157, in makedirs
mkdir(name, mode)
OSError: [Errno 17] File exists: '/tmp/tests/project_files'
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Mon, 14 Jan 2019 12:17:48 +0300] rev 2505
fix 'SaveAs' to non-empty directory and directory without write permissions
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Sat, 12 Jan 2019 15:02:17 +0300] rev 2504
fix problems with recursive beremiz.h inclusion
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Sat, 12 Jan 2019 13:57:16 +0300] rev 2503
remove LogMessage prototype from plc_main_head.c
it's not needed, because prototype is included in beremiz.h
But it caused problems with TARGET_LOGGING_DISABLE.
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Mon, 07 Jan 2019 23:28:28 +0300] rev 2502
merge
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Sun, 06 Jan 2019 03:11:39 +0300] rev 2501
Make online debug optional
It could be useful for very small targets like Atmega (Arduino) and
for target bring-up there developer want to have running PLC program,
but has not implemented runtime communication yet.
TARGET_DEBUG_AND_RETAIN_DISABLE - completely disable debug and retain
functionality. Previously named TARGET_DEBUG_DISABLE.
TARGET_ONLINE_DEBUG_DISABLE - can be used to enable retain
functionality (no define TARGET_DEBUG_AND_RETAIN_DISABLE is used), but disable
online debug with corresponding RAM/FLASH overhead.
TARGET_LOGGING_DISABLE - disables logging functionality from runtime and PLC program
TARGET_EXT_SYNC_DISABLE - disables PLC program synchronization with
external events. For example, it could be used to synchronize several
PLCs that control motors for different axes.
By default all these options are off.
To test generate program for Generic target, put following files in
project files directory and run build.sh after generating PLC program.
This is very easy to integrate into makefile (Generic target).
[------------- build.sh --------------------------]
files=$(find $PWD/../build -iname '*.c' | grep -v POUS.c)
arm-none-eabi-gcc \
-DTARGET_DEBUG_AND_RETAIN_DISABLE \
-DTARGET_ONLINE_DEBUG_DISABLE \
-DTARGET_LOGGING_DISABLE \
-DTARGET_EXT_SYNC_DISABLE \
-flto -ffunction-sections -fdata-sections -I../../../../matiec/lib/C \
$files \
main.c \
-Wl,--Map=./program.map,--cref \
-nodefaultlibs --specs=nano.specs -Wl,--static -Wl,--gc-section -Wl,--start-group -lc -lm -lnosys -lgcc -Wl,--end-group
[------------------------------------------------]
[------------- main.c --------------------------]
#ifndef TARGET_DEBUG_AND_RETAIN_DISABLE
void Retain(void){}
void InValidateRetainBuffer(void){}
void ValidateRetainBuffer(void){}
#endif
extern void __run(void);
int main(void)
{
for(;;) {
__run();
// sleep common_ticktime__ ns
// add common_ticktime__ ns to __CURRENT_TIME
}
return 0;
}
[------------------------------------------------]
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Sun, 06 Jan 2019 02:00:07 +0300] rev 2500
Disable Python extension in First steps example
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Sun, 06 Jan 2019 01:22:46 +0300] rev 2499
use pregenerated CRC32 lookup tables for retain on Win32 and GNU/Linux
This code could be possible reused on low-end targets with limited RAM.
code to generate lookup table:
[---------------------------------------------------------------------]
/* CRC lookup table and initial state. */
uint32_t crc32_table[256];
/* Generate CRC32 lookup table. */
void GenerateCRC32Table(void)
{
unsigned int i, j;
/* Use CRC-32-IEEE 802.3 polynomial 0x04C11DB7 (bit reflected). */
uint32_t poly = 0xEDB88320;
for (i = 0; i <= 0xFF; i++)
{
uint32_t c = i;
for (j = 0 ; j < 8 ; j++)
c = (c & 1) ? (c >> 1 ) ^ poly : (c >> 1);
crc32_table[i] = c;
}
}
void main(void)
{
GenerateCRC32Table();
int j=0;
for(int i=0; i<256; i++) {
printf("0x%08X, ", crc32_table[i]);
if (++j >= 8) {
j = 0;
printf("\n");
}
}
}
[---------------------------------------------------------------------]
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Mon, 07 Jan 2019 20:24:49 +0000] rev 2498
Merged in masterschlumpf/beremiz/wx3-fix (pull request #37)
Fix an exception with wx-3.0-gtk3 in PLCOpenEditor when generating ST files
Approved-by: Andrey Skvortsov <andrej.skvortzov@gmail.com>
Schlumpf <schlumpf@kr-ll.de> [Mon, 07 Jan 2019 18:32:03 +0100] rev 2497
Fix an exception on wx-3.0-gtk3 in PLCOpenEditor when generating ST files.
On Python2.7 with WX3.0 and GTK3, an assertionError rises on generating a ST file if the name is already set. The first generation works without problems, if you generate the file a second one, PLCOpenEditor tries to open the file
save dialog with the pre entered name from last run. Then the following assertion pops up:
PyAssertionError: C++ assertion "volDummy.empty() && pathDummy.empty()" failed at ./src/common/filename.cpp(568) in Assign(): the file name shouldn't contain the path
This fix reduces the filepath of the ST file the to the filename. Now it works fine.
Dmitriy Kuzmin <z644813828@gmail.com> [Mon, 24 Dec 2018 16:44:06 +0300] rev 2496
Fix typos in function names
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Mon, 24 Dec 2018 16:22:28 +0300] rev 2495
update links to matiec and beremiz repos in README
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Mon, 24 Dec 2018 16:20:20 +0300] rev 2494
fix zoom-in/zoom-out using mouse wheel
regression introduced by 2393:235f847be37e "python3 support: pylint, W1619 #(old-division) division w/o __future__ statement"
Edouard Tisserant <edouard.tisserant@gmail.com> [Mon, 11 Mar 2019 09:18:58 +0100] rev 2493
better pylint complain workaround
Edouard Tisserant <edouard.tisserant@gmail.com> [Mon, 11 Mar 2019 01:03:32 +0100] rev 2492
check_sources.sh makes me become even less productive
Edouard Tisserant <edouard.tisserant@gmail.com> [Thu, 07 Mar 2019 21:57:18 +0100] rev 2491
Added stub axis_s type in EtherLAB CiA402 support code, until Motion Contol Library comes back
Edouard Tisserant [Tue, 19 Feb 2019 11:27:29 +0100] rev 2490
Allow using one XSD based target description for many targets. Target description XSD can now use %(target_name)s to refer to target name.
Edouard Tisserant [Thu, 14 Feb 2019 10:06:43 +0100] rev 2489
Fix previous commit : Using wx.CallAfter shouldn't have been necessary, and was a symptom of failing evaluator's deadlock detection.
Edouard Tisserant [Wed, 13 Feb 2019 13:08:26 +0100] rev 2488
Fix startup of wxGlade base HMI. Wx calls were issued from non-wx thread (main).
Edouard Tisserant [Wed, 13 Feb 2019 09:41:35 +0100] rev 2487
Reworked chunk based transfer to support duplicated files (i.e. files with same content, but different names)
Edouard Tisserant [Fri, 01 Feb 2019 14:14:13 +0100] rev 2486
Fixed deadlock in runtime's Worker. Was discovered while using WAMP and PYRO simultaneously.
Edouard Tisserant [Thu, 31 Jan 2019 14:10:06 +0100] rev 2485
Add a debugger token to SetTraceVariables and GetTraceVariables to prevent crash an inconsistant data in case of multiple connections. Last connection now takes over existing connections's debug, and first connected IDE gets a wrning.
Edouard Tisserant [Tue, 29 Jan 2019 09:14:47 +0100] rev 2484
Fixed deadlock when using Wx together with Twisted in runtime.
Edouard Tisserant [Fri, 25 Jan 2019 14:06:11 +0100] rev 2483
Split IDE's frame OnCloseFrame() into TryCloseFrame() and OnCloseFrame(), to help further customization
Edouard Tisserant [Wed, 09 Jan 2019 14:10:07 +0100] rev 2482
fixed exception happening randomly just after showing discovery panel.
Edouard Tisserant [Wed, 09 Jan 2019 14:09:02 +0100] rev 2481
fixed exception happening when connecting to empty URI, and set URI through URI Editor Dialog popping up becaue empty.
Edouard Tisserant [Mon, 07 Jan 2019 13:50:39 +0100] rev 2480
Merged Mario's modbus fix : Modbus plugin: reset periodic activation timer when overrun occurs (delays due to communication errors, ...)
Mario de Sousa <msousa@fe.up.pt> [Sat, 02 Jun 2018 11:56:01 +0100] rev 2479
Modbus plugin: reset periodic activation timer when overrun occurs (delays due to communication errors, ...)
Edouard Tisserant [Mon, 07 Jan 2019 11:33:34 +0100] rev 2478
Disable MDNS:// scheme support. Also prevent discovery pannel to produce some. For now it seems that that feature is unused, and could be a security issue.
Edouard Tisserant [Fri, 21 Dec 2018 13:51:33 +0100] rev 2477
Added support to PYROS in Zeroconf discovery and publish. For now, PYRO://mdnsname._tcp.local. URI are broken, and discovery panel generate IP based URI by default.
Edouard Tisserant [Fri, 21 Dec 2018 13:43:41 +0100] rev 2476
PyroServer: fixed naming of class, and reorganized methods in order to ease subclassing, in case of customization of service publication on the local network (i.e. zeroconf)
Edouard Tisserant [Fri, 21 Dec 2018 13:39:41 +0100] rev 2475
Fix exception dialog with non recognized URI schemes
Edouard Tisserant [Wed, 19 Dec 2018 10:53:19 +0100] rev 2474
Fixed runtime's reconnecting loop not stopping when re-configuring WAMP.
In case WAMP was already trying to connect without success and user change WAMP configuration through web interface, previous ReconnectingClient wasn't stopped.
Edouard Tisserant [Wed, 19 Dec 2018 10:48:53 +0100] rev 2473
Removed nonsense code, that I should have check more in details before merging m(