What's new in ClassicLadder 0.9.101 Beta
Jul 31, 2017
- Fixed random crash at startup if menu "view symbols windows" was checked (saved in .classicladder_prefs) - Because of
- NBR_SYMBOLS undefined, now create blank lines when intializing window with NBR_SYMBOLS_DEF constant.
- In function POW(a,b), should return 1 if b=0. Now corrected. Reported by Salvatore, thanks to him.
- In monitor for distrib Linux version of target, if "/etc/lsb-release" not available, read "/etc/debian_version" instead.
- Removed USE_TELINIT_TO_REBOOT_HALT define from classicladder.h to select between "telinit" or signals (with kill()) on
- init process to reboot/halt the embedded target, and directly use "telinit" command if available.
- Inverted GPIO leds (life/user) in classicladder.h for ClassicLadder_PLC_Arietta hardware card.
- Can now modify /etc/hostname in network config window (usefull for Bonjour discovery service)
- Replaced checkboxes for outputs by lamps off/on images (looks like an "out" and not an "in", without possible user
- action...) - Judicious suggestion by Philippe Lagarde for learners students.
- At startup afted loaded events log, write "1" to bool vars with corresponding pendings events (not previously finished).
- Done to avoid to end/create a new event at startup...
- Added menu View / "Syslog Linux debug" (uncompressed transfer, and then opened as text file with external associated
- utility)
New in ClassicLadder 0.9.100 Beta (Aug 10, 2016)
- Reorganized Period/Sizes/Info tab in config window (major parameters on 2 columns + vertical separator, to have window less high).
- Added optional #define HARD_LIFE_USERS_LEDS_CMD_INVERTED in classicladder.h to choose logic command of leds (inverted on my x86 PLC).
- Fixed bug after doing "new project" impossible to edit because project not refreshed (state in "load") if not a run/stop done... since v0.9.020?
- When "edit" in popup menu selected, put edit window in front (usefull if hidden...)
- Sequential not displayed with active elements colored if in edit or not running (as already done in ladder).
- Size of elements in sequential sized from 16x16 to 32x32 so that all cases could be used without overlap (for variables
- transitions displayed).
- Fixed cosmetic sequential bugs when drawing steps activated/desactivated simultaneously if left step not aligned with top
- transition (seen in example_sequential_3).
- For sequential can now reuse 'comment' field entry, only ladder before.
- Added maximum scan execution for real-time stats.
- In log events windows, added at the bottom a checkbox option "show only active events" (ones not ended).
- On target monitor timeout on master, added asks resets to avoid for example a waiting reboot at next connexion ! :-(
- (seen during hard reboot test of the Arietta card, without reply frame sended and so received...)
- Added "halt target" menu (with sub-menu reboot/halt) + modified exiting monitor request command "RebootTarget" with new halt
- option parameter.
- Possibility to use "telinit" command (with "6" or "0" parameter) to reboot/halt the system. New define available
- USE_TELINIT_TO_REBOOT_HALT in classicladder.h + different signal on init when using it for "halt" (instead of default "reboot").
- For bools vars spys window switched layout to table (instead of many vbox/hbox).
- When start to edit, close search bar. And during edit, not authorized to open...
- When using rtc device to read time (set in classicladder_prefs), if failed to open "/dev/rtc", try with "/dev/rtc0" (Arietta).
- Outputs coils with their var "setted" were not displayed with the blue rectangle element on it and real state...
- GTK3 COMPATIBILITY MODIFICATIONS:
- replace many (GtkSignalFunc)function by GTK_SIGNAL_FUNC(function)
- use gtk_dialog_get_content_area(GTK_DIALOG(pDialogBox)) instead of direct vbox access in GTK_CONTAINER(GTK_DIALOG(pDialogBox)->vbox)
- use gtk_dialog_get_action_area(GTK_DIALOG(pDialogBox)) instead of direct vbox access in GTK_CONTAINER(GTK_DIALOG(pDialogBox)->action_area)
- gtk_tooltips deprecated, replaced with direct and easier gtk_widget_set_tooltip_text( )
- function declaration SignalPageSelected( GtkNotebook * notebook, "GtkNotebookPage" => GtkWidget * page, guint page_num, gpointer user_data )
- in manager window, switched old obsolete gtk_clist to use gtk_tree_view...
- some gtk_signal_connect_object() => g_signal_connect_swapped()
- gtk_combo_box_text replacements (just #define for now in 'classicladder_gtk.h'... so that can still be compiled on GTK versions < 2.24)
- gtk_widget_set_usize() => gtk_widget_set_size_request() or deleted...
- in edit toolbar, if compiled for GTK3 using Cairo Surface instead of GdkPixmap to create gtk_image displayed in radio buttons.
- and many others (easy) deprecated (directs) replacements by viewing Gtk "V2" documentation !
- for now, SOME REPLACEMENTS ARE JUST DONE WITH #define see classicladder_gtk.h - to clean-up in the future !
- lot of warnings presents...! but well that's compiling!!!
- Included precompiled Linux binary executable still compiled with GTK+2, see README.txt if you want to compile a GTK3 version !
New in ClassicLadder 0.9.30 Beta (Jan 19, 2016)
- Compatibility with Xenomai 3 (Cobalt), big rework for tasks init and set cycle period using timerfd for Linux and Xenomai3
- (based on "demo_periodic_thread_posix.c" example)
- Added near logic task duration of last scan, info of nbr ticks missed in 'logic' periodic task when running in real-time.
- wiringSam library use for I/O hardware (for Atmel AT91Sam9 as in the Arietta of AcmeSystems), files directly added to the project.
- Do not add CR after CTRL-Z marker for end of SMS text (should not be send, and can trouble some models of modems differents than
- good old Wavecom used and tested).
- For print, sequential wasn't using full width page.
- For print, not only "current section" but also "all sections" choice possible. new options tab added in printer window.
- Can print new pages with symbols defined list, added in the new print options tab.
- If no project loaded at startup, sections manager list was not updated (to have default ladder "Prog1" displayed), and so could
- crash if someone have the bad idea to click on "properties" ! ;-)
- Fixed possible crash on exit in modbus master thread if InfosGene (pointer) read but already freed (NULL).
- Renamed "sources" directory as "src" (because I've already another mais "sources" directory, so easier for me...!)
- Added vertical scrollbars on some tabs in config window and add 2 subs tabs with just one main "physical I/O" tab.
- After loading a project, set vertical lift of symbols window at top.
New in ClassicLadder 0.9.23 Beta (Jun 1, 2015)
- Moved all sources files and Makefile in a new sub-directory "sources" (easier now for users to see txt docs presents in the root ! yes they are somes...)
- Trouble with vars %S40 & %S41 (system vars for modem) displayed as "???" because of bad init in vars names list array, fixed.
- Display trouble on sizes tab in config window, fixed.
- Sometime could crash when displaying log book events just transfered from target (because not using g_idle_add() in a thread !)
New in ClassicLadder 0.9.22 Beta (May 16, 2015)
- For project infos, added comment field with possible multi lines.
- New functions blocks 'Registers' (stacks) to store/unstore many words values series in FIFO or LIFO order.
- 2 new sizes parameters : nbr registers + queue size per each register (same for each).
- Data series stored in each register could be downloaded from menu View/RegisterContent => open a requester to type register number => download csv file and open it with default application.
- For transfer file, added a sub-number file info (for register number choice with one type file).
- Added a warning message if in current edit modifications, and project save asked !
- If in 'stop', stats for modbus/master slaves where not correctly initialized (strangely was crashing when recompiled for Raspberry )
- Now doing an init on stats when switched in 'run'.
- Many abnormals SEGV on exit. fixed (perhaps? caused by free() with NULL on pointer done in v0.9.020) by adding a little pause before really ending (time to let running threads to exit)
- In vars_system.c, ioctl( DeviceRTC, RTC_SET_TIME, tm_return => &tm_result )
- In edit.c, for FullDeleteElement(), SEGV when deleting an element on third line (y=2) and last column (during verticals links cleanup).
- Also modified select( 16, => FileDecrip+1, ... for serial (Linux) and modbus/master (socket/IP).
New in ClassicLadder 0.9.21 Beta (Jan 26, 2015)
- Error on latest version released in 'DEBUG' so very big executables and without SEGV trap... (DEBUG not put in comment in Makefile).
- Added a #warning if compiled in DEBUG now ! ;-)
- Modified bad decimal calc stats frames/secs average for modbus/master.
- Modified default GPIOs used for life/use LED on RaspberryPI, 27 and 17.
- In monitor server, modified select( 16, => FileDecrip+1, ... somes should be done elsewhere
- Now using wheel mouse and up/down, pages up/down and home/end keys to scroll view.
- Shortcuts for right popup menu with ALT+xx keys.
New in ClassicLadder 0.9.20 Beta (Jan 6, 2015)
- Cleanup of monitor log not working on target. bad speed test with one exec (so not really tested in fact...) in previous version, corrected
- Totally review malloc/free datas, splitted static infos and dynamic sized project datas, so that can be used after each project load
- set NULL each pointer after free() call done on it (and discovered following bug with that...)
- Rewrite to avoid double malloc/mbuff_alloc/free huge parts, but using one commun functions MyMalloc/MyFree
- So now each time a project is loaded we alloc datas with size configured for each in the project
- Be carefull, not adapted for running in a "old-school" rt kernel RTLinux/RTAI module! but by the way, were still working?
- No more used since a long time (for me...) since Xenomai!!!)
- After project loaded, take into account new periodic values configured for tasks
- Found a bug at gtk exit (reading InfosGene data just freed before !!! now segfault with NULL pointer on memory freed)
- Bug when adding/inserting a rung with no more free rung available... now display an error message, and no more in edit mode
- In target infos tab (of free vars windows), added embedded disk use/free/size (#DEFINE EMBEDDED_DISK_DEVICE_STATS in classicladder.h)
- When reading set vars list, added a security to verify if not a var no more allocated in this project (out of size nbr inputs
- or outputs configured)
- In config window for nbr elements, added memory sizes of elements after "current alloc="
- When connected to a target: added warning message when close main window asked, and new/load project no more allowed
- Modbus/master slave stats, moved its display at bottom on new modbus/master monitor window
- Also open config window no more allowed when connected to a target (now that modbus stats displayed moved...)
- Failed to reveive a project from a target if no project loaded before (missing TmpDirectoryRoot init)
- Now InitTempDir directly done at startup (before only loading/saving a project)
- In modbus/master, for each slave added stats average of nbr frames exchanged per second
New in ClassicLadder 0.9.14 Beta (Sep 29, 2014)
- When starting with project not existing (setted in prefs), version param string corrupted. Bad init fixed
- 4 frames log windows more (for modbus/master and monitor slave IP&serial and modbus/slave)
- added 'Copy to clipboard' button
- frames log buffers added (that can be read from a connected target with an exported ascii/gz file, very usefull to look at
- what is exchanged on embedded target! before we had to relaunch classicladder in a telnet session and look at printf messages...)
- when target connected 'clean up' in frames log window reuse JSON frame "CleanUp" request (before only for the 'events log')
- problem if --version or --help parameters in line command, were not exiting correctly (missing LaunchExternalCmd child end)
- Added RaspberryPI GPIO access, new "Raspberri_GPIO" type in I/O config window
- using WiringPi library. Pull-up activated on inputs
- Added I/O config lines (from 5 to 15), as with RaspberryPI generally one line = one GPIO (not consecutives)
New in ClassicLadder 0.9.13 Beta (May 30, 2014)
- For remote alarms, bug and limit in global flags sets: SMS only usable on slot '0', and emails on slot '1'... was just working ok with my first example! fixed.
- Initial pipe/fork added at start of the main to launch external command like 'mailsend'
- else not working when embedded with Xenomai)
- To send email, use login/password authentification if defined (parameters never used before...)
- Optional code PIN can be used with modem (for both slave and master).
- Added 2 DNS servers in network config.
- Little code rework: added function InitRung() common for InitRungs() and InitBufferRungEdited()
- Init sequential elements (steps/transitions/comments) of a page deleted.
New in ClassicLadder 0.9.12 Beta (May 30, 2014)
- Bug with monitor protocol, if setting to 0 an input/output already setted to 1, or setting to 1 one already to 0. fixed.
- Save/load events log datas (in binary) + mutex added + cleanup after parameters loaded
- when connected to a target can be transfered with monitor file transfer (csv/text gz compressed file save).
- Added buttons "Refresh", "Export to csv" and "Clean up" (with monitor frame required if target connected) in log events window.
- Save in preferences, check state of 'Display Symbols' in the windows.
- I/O conf file read, added security if one day more line than planned in memory.
- Added infos project site & company.
- SMS & emails remotes alarms. For email, external command "mailsend" required in /usr/bin (https://code.google.com/p/mailsend/)
- SMS send tested with a Wavecom chip modem.
- Longuer comment possible in rungs (29 chars (more exactly bytes!) before, now 99). If used, new tag in file save to not overflow
- in old versions + fixed possible overflow with accents characters using 2 bytes...
- Arithm eval (in operator block), character conflict with '^' used for new xor (added in v0.5.5), but it was already used as POW
- operator... Now POW(a,b) is a function and gives correct results ! Reported by Salvatore.
- Added Xenomai version (if available) for target infos.
- Updated cJSON library with latest version available on SourceForge, and modified again to not use float/double numbers
- to avoid libm dependancy).
- Config hardware for outputs done, even if checked that should be done only for target. Fixed.
- Modified to avoid a mode switch under Xenomai with new/end event (with get time).
New in ClassicLadder 0.9.11 Beta (Feb 5, 2014)
- In monitor connect window, added timeout widget entry to adjust timeout wait reply (usefull when using low serial
- speed, modem, ...)
- Can use PSTN/GSM dialup modem with Hayes AT commands for serial monitor (on slave serial link, and for master connection).
- New tab "modem" in configure window to set AT sequences for slave monitor and master connect.
- New menu entry, to be able to run logic only for one cycle, or freeze current running (when freezed, current rung status
- displayed).
- Added exit() in end with ctrl-c handler. Else was crashing on exit.
- If no coil on rungs, and set/unset vars, blue background not refreshed to know that the var is setted. Fixed.
- If previous project monitored has modbus slaves, and current project none, at a time, monitor asking modbus slaves stats in
- loop, and nothing more. Fixed.
- New window to set monitor serial config (port name, speed). port can be blank to let a port available for other function
- modbus master, future modbus slave?, ...)
- For this, added new monitor frame to be able to set speed and serial port name.
- easier instead of having to edit 'classicladder_prefs' file with vi in telnet!)
- In Gtk config window, new option in 'misc' tab, to auto adjust summer/winter time.
- Moved from monitor protocol code to set time clock (Linux & Rtc) in a function to be used per auto summer/winter time
- code to do summer/winter time switch.
New in ClassicLadder 0.9.10 Beta (Nov 2, 2013)
- Modified some debug messages in serial port functions.
- Optimized monitor protocol frames to be shorten (less bytes to exchange). interesting on serial link...
- Frames the most exchanged now rendered in JSON without format (no space, no tab, no CR... a little harder to read if needed
- but really shorter!)
- Theses frames are no more compatible with previous version, you will have to upgrade embedded target version to be able to
- continue to monitor it!!!)
- In monitor, if a 'unknown' request asked received, now the slave add "ReqError" attribute so that the master knows that the
- request has not been treated...
- Calc rung, only lines used (also now used by monitor).
- Set/unset inputs/outputs: new buttons for that in bools vars window, blue backgroud when a var is setted. When connected to
- a target, do it on it with a new monitor frame!).
- On rungs, displaying with blue rectangle elements which var is setted.
- Modified end (removed exit() in function to end all).
- After monitor decnx of the target, init all vars and update display.
New in ClassicLadder 0.9.9 Beta (Aug 23, 2013)
- When closing config window, do not try to set ioperm() for physical i/o ports if option "Use real physical inputs/outputs only on the embedded target" is checked...
- Label/comment entries disabled per default if no project loaded.
- Cleanup label/comment data of an old rung reused when adding a rung
- With monitor, when setting time even if RTC device selected, also set Linux time clock (useful for dates on filesystem!)
- For sequential, if step is an init (or not) displayed in the properties (on a new line property True/False), and can be modified directly here (better as some bugs remaining in the edit when deleting elements...)
- For trying to advance debug in sequential edit, displaying internal infos of transitions in properties (steps lists can be manually edited)
- Properties strings that are not editable are now disabled!
- Monitor timeout for serial now use same time than in IP (longer only when transfering files).
- 38400 serial speed per-default in monitor window.
- In sequential, bad highlight of transition with � variable.
- Sequential, now 32x32 elements (instead of 16x16). Does not cost any more memory (steps and transitions stored with coords)
- Sequential, destroy step ok (for transitions) if not first one of many steps activated simultaneously.
- Sequential, now correctly displaying jump cross step where there is a transition on top of it
- Monitor slave in serial, not pause if some characters received (even if frame not complete).
New in ClassicLadder 0.9.8 Beta (Jun 22, 2013)
- Get an error message, if abnormal "incomplete" project loaded (we can have the case with ClassicLadder/Windows running
- with an old zlib version, when loading zlib compressed project transfered from target).
- Also now testing if seen end tag line = project file really complete.
- Fixed bad 'week of day' value on a target using RTC (always sunday).
- Added max string length test in symbols convert functions.
- Save in preferences, latest state selected (so that ClassicLadder starts back with project loaded and stopped if wanted,
- instead of always in run after project loaded!)
- When upgrading a target from 0.9.7, you will have to set it to "run" with monitor one time...
- New %QLEDx variables available. %QLED0 = Green info led on the ClassicLadderPLC hardware.
- Modbus master stats available for a target added in monitor protocol (just displayed in the console for now).
- Avoid second launch in run script (test if already running).
New in ClassicLadder 0.9.7 Beta (May 10, 2013)
- Can use RTC device to get time clock (preferences file) + new thread "not real-time" to read time (RTC or standard Linux time) then copied in logic thread for system vars (that can be real-time).
- RTC also used in that case when set with monitor.
- Missing search init (can be seen if search next/previous without new search at start).
- "Embedded in code" Icons for windows and cursors during edit
- Popup menus with right click button available to edit and select element to add.
- Selecting also current element in toolbar window (if opened).
- New beautiful toolbar (instead of old basic buttons) in sections manager window
- New network config window + monitor frames required with target (manual reboot required to be taken into account).
- Can use in priority preferences file /etc/classicladder_prefs if available.
- Added current time clock info before each monitor frames displayed.
- Added scripts to run/update target in the embedded archive.
New in ClassicLadder 0.9.6 Beta (Apr 22, 2013)
- Fix many trouble with g_idle_add() usage (a function called by it should return FALSE to be done one time only!)
- In monitor transfer, uncommented and fixed pb 100% cpu usage after displaying message in status bar...(read before!)
- Review refresh of button "run/stop" from monitor.
- Second time monitoring, the "run/stop" for the target state was not refreshed.
- In monitor, can also transfer an embedded archive soft to easily update a target (at end of transfer an update script can be launched)
- Do not refresh status bar, in case of no ladder element properties when mouse outside of current rung (to get displayed current message)
- Removed 'hardware' word in error messages title (also used for monitor...)
- Was not stopping logic before doing "new" project. fixed.
- In monitor, can modify variable value of the target (from window "free var spy").
- Fixed life led: if not also used in an outputs register + keep logic in stop if no project loaded per default (case for embedded).
- When a program including i/o access transferred (and ioperm() on theses i/o not already done), was crashing when setting target in 'run'.