========================================================================== HISTORICAL RELEASE NOTES FOR MACH4 BUILDS for current release notes, visit: ftp://ftp.machsupport.com/Mach4/DevlopmentVersions/ChangeLog.txt ========================================================================== Please note that this list provides informal information only and should not be used as a definitive source to provide details about how to write code for Mach4 or alter your machine configuration. Most of the notes below are relevant only for developers. As a user you should not expect most of them to affect your user experience directly. Some build images that were never publicly released had made it into our web archieves of downloadable installers. These have been removed and the notes about them merged into the next subsequent build. Current and previous builds of Mach4 can be downloaded here: http://www.pmdx.com/Downloads_Mach4/Mach4_Hobby_Releases/ ============================================================================ Build 4.2.0.2763 - 26 October 2015 This is a large update that touches on many things. The default configurations and screens are now more user friendly and it is highly recommended you create a new custom profile for your machine by copying one of the new default profiles and modifying it. 1) Added newly revised wx4 and wx6 default screen sets. 2) Older macro files that caused confusion were removed from the default profiles. This does not affect existing user profiles. 3) New M6 macro in wx4 and wx6 so default behavior supports manual tool change better. 4) Probing screens improved and tested more. 5) Pre-populate Keyboard jogging configuration with most common default key assignments. Note, this does not automatically update old profiles. 6) Added a "MouseMPG" wizard example in the Wizards folder. 7) Added a Help Docs button on wx4 and wx6 screens to provide direct access to the folder for manuals and other documentation. 8) Default profiles pre-populated with some variable settings to make setup for some plugins (ESS) easier. 9) Added message box to notify users to restart Mach4 when plugins are enabled or disabled. 10) Started adding infrastructure to support 3D printer control. This is primarily a new interpreter that handles the G code dialect used in 3D printing. This is already selectable from the dropdown list for "Control Mode" on the General tab of Configure > Mach4, but is very new and lightly tested. 11) Removed "Charge Pump" signals from Mach4 configure outputs dialog screens. Mach4 was never the actual source of charge pump signals. Now, if charge pumps are used, all setup for them must be part of of the plugin configuration of the device generating them. To avoid breaking existing profiles, the places in the Mach4 outputs dialog chart that formerly held the "Charge Pump" signals have been replaced with "Reserved". 12) Added support in mcRegFile for persistent registers that get saved on shutdown of Mach4 and reloaded on next startup. 13) Added new functions to let scripts send OEM specific messages directly to a plugin 14) Added notification message to allow plugins to close files so they get saved when user requests a Packaged Profile. 15) Add socket support to LUA system. This allows scripts to access TCP streams, to access web pages, and to send emails. 16) Add registers to provide G code extents values for use with scripts. 17) Optimized toolpath graphics speed some more. 18) Overall code audit and cleanup to avoid future bugs due to unitialized variables, spelling errors, and the like. 19) Force all operations on parameter files to use binary mode to avoid unintentional alterations when elements are not text. 20) Fix some instances in screen editor where some stock actions selections were missing text labels. 21) More cleanup and debug of Shuttle Pro plugin. 22) Suppress listing in Diagnostic tab for plugins that are not enabled. 23) Fixed bug in keyboard plugin where startup failed due to race problem. 24) Fixed a bug that could cause some systems to crash on startup. 25) Fix race condition that happened when user clicked on Enable button multiple times faster than system could initialize. 26) Cleaned up mcSerial serial port support so that it works in XP. Build 4.2.0.2703 - 21 September 2015 1) Begin adding support for font engraving. 2) Update Darwin for new license methods 3) Detect corrupt parameter files (pfile.dat) upon loading and prohibit use of them 4) Lots of bug fixes and tweaks: a) fixed a memory leak b) fixed drag and drop of some items in screen editor c) don't prompt on deleting containers if they have no children d) make pre screen shown messages show immediately when the screen is shown e) fix a bunch of unitialized variables in configuration objects f) fix uninitialized variable causing runaway incremental jogs on startup g) fix improper tab page display on initial load of the screen set Build 4.2.0.2686 - 10 September 2015 1) Fixed bugs that caused the PCID to change randomly upon reboot of XP on some machines. Also fixed bug that caused some systems that ran fine in DEMO mode, but resulted in an instant crash when starting Mach4 with a license file installed. Changed license enforcement to fail gracefully when obsolete or corrupt license files are encountered. 2) Improvements of plugin validation to speed startup some more. 3) Screen management change does away with Z Order support. This makes screens run faster and avoids some cross platform issues. If you were putting objects on top of objects, you will need to recode to use backgrounds instead. 4) Improved object naming in screen editor to make it easier to locate objects, for instance, the names of all buttons now begin with btn by default. Build 4.2.0.2673 - 04 September 2015 1) This release introduces several enhancements to screen editing but has issues with licensing, recommend skipping to build 4.2.0.2686 instead. 2) Screen editor now allows Export and Import of "containers", thus allowing easier reuse of code between screen sets. To Export, select the container either on screen, or from the Tree Manager, and right click to access Export. 3) Screen editor now uses AUI class for tabs. This allows resizing, adding color, and other types of edits to the tab objects. 4) MDI objects can now have assigned foreground and background colors. 5) Support added for "private" LUA states for scripts. This makes all variable local to your script and regular API calls must be used instead to access the system variables. This enforces serialized access to prevent deadlocks and other undersirable consequences of variables changing in mid-process. To make your script run as private, add "--PRIVATE" to the top of your script. Where communication between scripts is needed and the regular APIs will do not provide a way to manipulate the desired variable, you can use screen elements or Mach registers. Build 4.2.0.2660 - 27 August 2015 1) Fixed bug in screen editor that could cause crashes when items were deleted 2) Improved DRO behavior when jogging to prevent DROs from showing values that did not match jog increment settings when the jog increment was not an exact multiple of the physical step size 3) Provide separate installer for Mach4Industrial to better manage logos and icons 4) Minor improvement to launch speed Build 4.2.0.2651 - 20 August 2015 1) Fixed most of the issues with missing LUA modules needed by new screen sets 2) Fixed some more of the quirks/bugs in the keyboard plugin Build 4.2.0.2646 - 20 August 2015 1) No functional changes, only Mach4 logo and version numbering scheme changed. Build V2-2630 - 19 August 2015 1) New license file system implemented. Same basic methods but new implementation that does not depend on outside vendors. This is not a transparent update. New style license files are required starting with build V2-2630. You must log onto the web site and generate a new license file, or if you have an older system and your license file was generated by the company that sold you the software and you do not have a login on the license server, then you will need to send your new PCID to your reseller and request a new license file. If you want to be able to revert to an older version of Mach4, be sure to save your old license file. 2) Default installs no longer have any macros in the macros folder in the supplied profiles. The example macros were never intended to be used unmodified, so they are now installed to a new folder called MacroExamples. If you had problems with M3, M4, M5 etc. because they were not working macros, you should delete them from your MyProfile/Macros folder and let the built-ins take over those functions. This is necessary because the installer does not remove any old files that were there from previous installations. 3) Changed "home in place" take into account the value of "home offsets" 4) Build V2-2630 comes with a new default screen set called wx4 in the default Mach4Mill profile. There is lots of new stuff there, but it is still somewhat a work in process. Some of the LUA that runs in this screen set has problems on Windows XP. If you prefer the wxMach screen set you can reload it by using View > Load Screens and select the desired screen set from the Screens folder. Build 2580 - 24 July 2015 1) Fixed a bug introduced in Build 2568 that caused random crashes. 2) Partially fixed keyboard jogging using wxMach screen set. a) Jogging key functions are not predefined yet. You must still configure them before use in: Configure > Plugins > Keyboard Inputs b) The button for Keyboard Jog On/Off in Jogging panel is not active yet. You must use the Keyboard icon that the plugin places in your system tray instead. Build 2568 - 19 July 2015 1) Fixed problem with sliders in wxMach.set screens that accidentally got into last build. This caused Feedrate override and other sliders to not be usable. 2) Fixed plugin for keyboard input for jogging etc. and added new features. (Yeah!) 3) Fixed G31 so that it does not lock up Mach4 if the Probe input is already active when a G31 command is started. (Yeah!) 4) Added support for exporting and importing profiles complete with screen sets and macros from the profile. Export function allows for emailing profile to directly support personnel. 5) Added debug feature that allows math expressions in comments to be evaluated at run time and printed to the status window at the bottom of the screen. This can be used to see what is really happening when you use variables in code. Status printing can be turned on and off in General Config dialog. 6) Added SETVN (variable name in Macro B) feature to Industrial version. 7) (developers) Updated the mksig function to use Visual Studio 2013 and made into a true console application so that stderr messages are printed. 8) Fixed a bug with cutter compensation inside of subroutines. 9) Fixed a bug with stack overflow on tool path generation. 10) Fixed a bug with M99 in main program. 11) Improved data passing to cannon buffer so things like Feedrate Override can work inside subroutines. 12) Began adding infrastucture to support 3D printing. 13) Incremental planner for jogging improved to avoid overshoot. Build 2522 - 29 June 2015 1) Fixed subroutine handling to allow subroutines to be loaded from the "Subroutines" folder on disk. 2) Enhanced subroutine handling so that it is no longer required that a subroutine be defined in G code before it is referenced. A subroutine can now call another subroutine that is above it in the same G code file. 3) Fixed handling of U, V, W moves so that they are truly modal and do not require a G code on the same line 4) Fixed bugs in Rapid Rate Override 5) Corrected problems with default view for Lathe 6) Fixed display of modal groups icons on screens for Lathe and Tangential 7) Added the loading fixture offset when a new table is loaded in. This will make the machine sync up on startup and if a fixture table is changed out. Old version required homing, but didn't work with "home in place" 8) Fixed race condition that could happen with M48 and M49 (disable and enable FRO). 9) Fixed machine timers so run time is reported correctly. 10) Fix handling of M98 subroutines in Lathe and Tangential. 11) Screen editor enhancement so inital button label to reflects type of button. 12) Jogging planner major updates. Jog planner logging added. Fixed problem with jogging and soft limits. Jog planner and run mode planner syncing revised. 13) Force clearing of planner queue when Mach4 is Disabled from GUI. 14) Fix canned cycles so that they run even when the machine co-ordinates requested in the canned cycle do not require motion other than the cycle itself. 15) Screen editor enhanced to allow group box container font color to be set. 16) Force screen load location to 0,0 on fresh installs. Fixes problem with the GUI being off screen at launch. 17) Added check for G4 P value. Value must be larger than minimum time slice. 18) Make Z order processing faster, reduced screen flicker on startup. 19) Added check to GetInterpreterInfo() to see if in G97 or G96 mode for spindle speed. 20) Feed Update for A,B,C axis to Comp fix for Turn Build 2491 1) Updated SDK Sim example for VS2013. 2) Subs completely re-written. Tool path index array is 2 dimensional now. [File][Line]. 3) Canned cycles fixed so when machine is inch and G code is in mm. it still works 4) Canned cycles only cycle when the location is changed instead of every block under the cycle. 5) Lathe toolpath fixed in canned cycles (was using the tool# not the offset) 6) Fixed ABC only feedrates 7) Add timer to detect and notify plugins of CSS spindle speed changes. 8) G87 side drill cycle, enlarge the clearance from rapid to feed on each peck. 9) CSS Limit is now set at startup to the fastest speed the machine can do. 10) Prevent race condition when Single Block is in effect at the beginning of a file. 11) Fix for G96 or 97 on the same line as an M3/M4. 12) Fixed the spindle stabilization / at speed code. Seems to be working fantastic now! 13) Fix lockup with dwell and single block. Update screen set for installer. 14) Fix array bounds issue on tool path generation when a sub program has more lines than the main program. 15) Fix bounds issue in RunCannon(). Add wait on spindle settle capability. 16) Changed the tapping to be G84.2 as per the manual. Added the direction to the rigid tapping structure. 17) More updates to the canned cycles in turn. 18) Added the setting to RPM mode when setting the spindle speed in RPM mode 19) SV_CUR_CSS_LIMIT used where it should be now :) It had a copy paste error with the CSSLIMIT. Was pointing to the same register ... 20) Tapping cycles added to Lathe. Build 2472 1) Industrial: G66.1 implemented. 2) Toolpath colors fixed. Lathe threading improvements. 3) Improve modal G code display in Mach4GUI. Canned cycles are working again. Removed old code from all of the interpreters. 4) Fix CSSSpeed and CSSLimit deref typos. 5) CSSSpeed and CSSLimit now in system vars. NOTE: CSS = "Constant Surface Speed", G96 spindle mode (for lathes mostly) 6) SpeedCheck now takes spindle override into consideration. 7) Industrial: G66 revamp done for Mill. 8) Lathe threading cycle dif in rad added to the end rather then the start 9) Lathe toolpath wear offset in X fix for display Build 2461 1) Fix mcCntlCheckLicenseFeature() for Art. 2) Spindle Speed Check functionality in lathe. 3) Add spindle speed check enable API functions. 4) G9 update... 5) Tool change call fixed in turn 6) Sync setup struct with modal groups. 7) Get M10 and M11 out of group 8 Mcodes. 8) Make modal groups Fanuc compatible. 9) Step/Dir spindle == DEV_TYPE_RTAP2 10) Step and direction tap planner updated and serial plugin fixed so it should no longer throw an error on shutdown 11) Spindle: Honor the selected spindle range's reversed flag. It would be wise to stop the spindle before selecting a range that reverses the spindle. 12) Include C7 style debug info in MachAPId.lib and MachAPIfd.lib to prevent linker warnings. Build 2441 This is a major update. Development moved to Visual Studio 2013. 1) Improve license messages. 2) G66: No longer sets spindle speed, tool, or diameter offset. 3) G66: No longer performs cycle traverses. All movement should be handled in the called sub. 4) Mach4GUI: Plugins can now only be configured in the disabled state. 5) mcKeyboard: Keep from hogging VS2013 debugger. 6) Mach4GUI: Fix operator lockout. 7) Mach4GUI: Fix screen keypad size save/restore. 8) Update the rigid tap code 9) Prevent torch height signals from falling through to the jog X+ signal. 10) Fix screw map init. 11) Sanity Check Signal and I/O handles. 12) NGLAPI fix. 13) Change the mutext locking on GcodeExecWait(). 14) Mach4GUI: Scripts prevented from running on shutdown. 15) Mach4GUI: Fix variable scope issue that prevented script saves. 16) Probe SV updates for the no-strike case. 17) License error when loading the wrong license. 18) Fixed macro parameter passing bug that was introduced with mcCntlGetLocalVarFlag(). 19) Added some code fro Tom, josh and Ezrouter for setting #vars that change the active offset. This cleaned up the issues I was seeing here. 20) Fix API help access in Mach4GUI screen editor. 21) Doc Update for mcCntlGetLocalVarFlag() 22) Local vars to M codes now have a flag that tells if the G word was set on the command line. 23) Set process priority to high. 24) Don't squash local vars in G66. 25) Fix Step/Dir rigid tap related bug. 26) Add Step/Dir rigid tap shell. 27) M66 mod: If the mode is 3 or 4, check the state of the signal and if it is already in the desired state, return immediately. 28) Added the rotation axis to the OpenGL Mill class... It only had the code to work with the X axis before. added a switch statement to allow rotation about the X Y and Z. 29) Make mcCntlGetPoundVar() honor the special System registers like SV_CLOCK1 and SV_CLOCK2, etc... Create mcAxisSetScale() API call. 30) Added some DROcodes for the A axis position and alignment 31) Update Gcode Doc 32) Update to the 4th axis and it seems to work. added a test file for checking it out. The center position of the 4th axis needs to be set for proper display 33) Moved the motion segment time and threading add rate to the motion start function. It was messing with other plugins. 34) Enabled spindle speed override when entering the idle state. 35) Enabled spindle speed override when entering the idle state. 36) Fix FRO lockout in Mill tapping cycles. 37) Cycle lockout of feed hold, feed rate override, and spindle override. M48 and M48 are now operational. 38) Zero out G92 offsets when loading parameter file. 39) mcLuaEditor debugger enhancements. 40) Patch wxLua debug target. 41) Add docs for new API funcs. 42) Added mcMotorGet/SetMaxAccel() Added mcMotorGet/SetMaxVel() 43) Work on the code for the head shift to display in the Gcode file better. 44) Add CRT redistributable. 45) Fix Keypad NULL m_config problem for real this time. 46) Change tamper.h to point to correct Libeay32 CRT versions. (/MD and /MDd) Build 2336 1) Fixes to screw map API. 2) Lathe: Removed G90 and G91 Updated the code for G92 3) Lathe: Changed G98 and G99 to be the correct Lathe codes 4) Auto Calc was crashing because m_config was not set. 5) Add message box alerting the user that the config item changed will require a restart. 6) Lathe: Small update to make the advanced cycles work 7) Lathe: Canned cycle update and the following are ready for testing: G83 G85 G87 G89 Build 2326 1) Update screen set for the installer. 2) Mill: U,V, and W linear versions of A, B, and C axes. 3) Fix G code editor selection. 4) DROs will show "NIL" instead of the numeric value of NIL. 5) Screw mapping API updated. 6) Doc Update: Screw Mapping detail. 7) Force init to 0 every screw map point. 8) Screw map can now handle >= 0 machine coordinates and <= 0 machine coordinates. Previously only handled >= 0. 9) More fixes to path settings to find API help for mcLua Build 2313 This is a major update. It changed the API and requires updating plug-ins. 1) Fix help path for Release executable. 2) Added mcMotorGetAxis() API call. Removed API functions with misspellings. This will break the API. 3) The API doc now distributed in SDK and Installer. 3) Modify release building script to include docs. 4) Fixed active plane radio button selection in the Mach config. G18 could not be selected (XZ). 5) Only generate a tool path if the GUI loaded the G code file. 6) Mach4GUI screen editor to fix an exception for when a tab control was added to the wxMach.set which had more tabs than the main tab control. 7)Added functions and place holders for turn cycles. Next is to start codding them per the manual 8) Help enabled in mcLuaEditor. 9) F1 will bring up help for the API function selected or under the cursor in mcLuaEditor. 10) API clarifications with API docs. 11) Starting the update of the turn cycles... ALL milling cycles are shifted over to the .1 and turn cycles will be the plane old Gcode. 12) G53 in turn in Rad all the time 13) Catch the exception produced from loading a file with a line that doesn't end with a LF character. 14) Add MERROR_FILE_BADFORMAT Build 2270 1) Fixes bug (again) in the delta mode motion data in API that slipped in when Screw Mapping was introduced in build 2251. This bug prevented correct motion data from being seen by SmartBOB plug-ins prior to 0.18.97 version. (note - SmartBOB plug-in version 0.18.97 now uses only absolute mode motion data) 2) Fixes bug in startup code that affected slower XP machines. Symptom was that Mach4 did not start or the loader complained that Mach4 was already running. Task manager could be used to kill the Mach4GUI.exe instance and then Mach4 could be re-started. Startup now waits until XP gets all processes ready before trying to launch GUI. 3) Updated comp to handle Linear Set Over and Arc Set Over. 4) Added a worker thread to execute button scripts. 5) Added --MC_OWN_THREAD flag to prevent long scripts from blocking the execution of the GUI. This flag is a comment and must be the first line of the script. Build 2269 1) no changes notes available for this short lived build Build 2259 1) Fixes bug in the motion data in API that slipped in when Screw Mapping was introduced in build 2251. This bug prevented motion data from being seen by the SmartBOB plug-in. Build 2255 1) Renamed the Diagnostics Tab to be Machine Diagnostics Tab (looking at signals) in order to avoid confusion with the Diagnostic Menu item which provides access to Logging and Plug-In diagnostics. 2) Fixed a bug introduced in toggle buttons by build 2251. In the wxMach screen set this made it impossible to Enable the machine. Build 2251 1) Provisions added for Screw Error Mapping. 2) bool -> BOOL in InterpreterInfo struct. 3) Mach4 GUI fix for DRO events. 4) Take out Modbus assert messages. Build 2247 1) Modbus now saves device description. 2) Fix Find/Replace in mcLuaEditor. 3) Implement brace matching in mcLuaEditor. 4) Added the tools to disable the A axis rotation 5) Spelling corrections and language updates. 6) Add bitmaps to toggle button. 7) System variable part counters implemented. #3901, #3902, #6700, #6710, #6711, #6712, #6713 DROs can now edit system var (parameters) by index. 8) Single argument ATAN implemented. 9) System variables and Macro B enhancements. 10) Update to names. The vars that are in the parameter list are now started with SV_ 11) Use "C" locale only. Only translate the strings. 12) Update signal states at mapping time. 13) Update lathe screen for installers. Build 2238 1) Updates to printing from G-code and LUA editors 2) Add search function to LUA editor 3) Fix syntax sensitive color highlighting in G-code and LUA editors Build 2230 1) Updates to lathe screen for installers 2) Updates to language support files 3) Ignore setting #3000 or #3006 when generating the tool path (buffering) 4) Force G95 for G32, G76, and G92 lathe threading. Improve error messages in G76 5) ModBus plug-in improvements 6) Added some code to set the position before the run to here is done Build 2223 1) Added support for printing from gcEdit and mcLuaEdit screens 2) Added Native Language Support mechanism in wxMach, gcEdit, and mcLuaEdit 3) Fixed quirks with "decimal" character ( . vs , ) when using Native Language Support 4) Fixed bug with resuming after activating E-Stop while a homing operation was running 5) Started adding infrastructure to API for rigid tapping Build 2214 Baseline for this log.