Release 11.1 8/5/2017
This is a major release adding preliminary support for 5-axis machining.
To prevent the PDF documentation file from becoming large and unwieldy, the documentation has been divided into several smaller documents. PDF documents can be opened from the main menu help menu which furthers acts as an index. The html documentation of supported G and M codes has been removed from the CNC document in favor of the PDF versions.
RiceCNC has long supported up to nine independent axes, however, 5-axis machining generally refers to the ability of a machine and software to bring a cutting tool to any point on a object at any angle. There are excellent illustrated guides to 5-axis machining available on the internet, so only a brief introduction is provided here.
Five axis machining generally requires the machine to have three linear axes, usually the three orthogonal machine axes, plus two rotational axes to change the angle of the cutter relative to the work. The rotational axes may be fixed to the table, e.g., a cradle and turntable, or on the spindle axis, or a combination of the two.
As the relative angle of of the cutter is changed, the machine position must be moved to maintain the position of the cutter relative to the workpiece. Generally the computations to do this would be too complex for CNC programs. Therefore, 5-axis software needs to have some knowledge of the machine configuration, i.e., the kinematics.
This release adds vector and polar transforms to support machine kinematics. The transforms can describe the interactions of the five axes. Both vector and polar transforms can be configured interactively or by CNC programs. Refer to other guides for more information on this configuration.
The new vector and polar transforms duplicates and obsoletes much of the functionality provided in previous releases. Some of the obsoleted functionality has been removed, other functionality is deprecated by maintained for compatibility. Other functionality has been temporarily removed but will reappear in future releases in a different form.
In particular, the “Coordinate Transformation Matrix” has been removed effectively being replaced by vector rotations. Vector transforms are both more flexible and more intuitive to use. C codes for manipulating the CTM have been removed being replaced by G codes for configuring and rotating vectors.
The Path Wizards have also been removed for this release. The pocket machining wizard functionality may reappear in a different form, i.e., Bézier surfaces.
Vector transforms enable drill cycles to drill at any angle rather than being restricted to an orthogonally aligned axis. The orthogonal plane selection G codes remain supported for compatibility but are now deprecated.The “Program Position Mode” has been removed effectively being replaced by vector transform positions. The new non-modal solution enables CNC programs to reference vector transforms and axis names directly in the same move or feed command.
Polar transform can calculate cartesian coordinates given a polar center and polar coordinates and vice versa. However, polar transforms can also generate circular arcs and are easier and more flexible to use than the circular arc G codes G02 and G03. These G codes remain supported for compatibility but are now deprecated. Polar transforms can generate circular arcs with any axis orientation.
Axis, vector and polar transform references can be freely mixed on move (G00) and feed (G01) commands. This added flexibility makes relative coordinate addressing mode more convenient and it is now the default.
The path view now displays a grid to indicate scaling and also displays Bézier control points and path direction.
Release 10.15 6/19/2017
UI: Adds a Path View child window to the CNC document window. The view is an orthogonal view of the X and Y coordinate tool movements and is redrawn automatically by the "Dry Run" or "Run" document buttons. Other path view contents and view angles will be added in future releases.
Performance: Faster host command interpretation. More compact XML files..
Release 10.14 6/11/2017
Major UI update: Deprecated NSDrawers are replaced by child windows. Child windows move and hide with the parent document window to indicate the logical association. Separate windows are easier to arrange enabling more efficient screen area usage.
Bug fix: Auxiliary controls not working..
Release 10.13 6/6/2017
UI: Moved auxiliary control buttons to a more accessible StackView on main window.
Autonomous: Autonomous extended to LED control applications. Pause is now recordable. Added a repeat counter for stored program execution..
Release 10.12 5/25/2017
UI: Numerous contextual help buttons are added to the UI. Pressing a help button will add a scrollable textview below or near the button. The information duplicates much of the information available in the PDF documentation but is presented in a more convenient manner.
Bug fixes: Spindle configuration, analog pin assignment, reset timer.
Release 10.11 5/13/2017
Autonomous operation: The desktop client can now monitor the progress of a program being run from internal memory.
An idle timeout reset is added as a power saving feature to stop motor power when the system is left idle for a period of time.
Startup initialization bug fixes.
Release 10.10 5/7/2017
Autonomous Operation: You can now store up to 16 CNC programs in processor internal memory. Each program is stored in a block along with the machine configuration at the time of the recording. Once stored, programs can be selected and run multiple times using only the switches on the µP board with no computer connection required. The 6 KB EEProm remains available as block zero, but other blocks are each stored in a 64 KB flash memory sector. Four blocks are reserved for CNC program storage in the smaller TM4C123GXL.
A watchdog reset timer is added to automatically reset the processor in the event of a crash.
Release 10.9 4/30/2017
Autonomous Operation: You can now store a CNC program along with the machine configuration in EEProm. Once stored, the program can be run multiple times using only the switches on the µP board with no computer connection.
Prior versions could run only in a desktop client and µP server mode. Future version will enable multiple CNC programs to be stored on the board.
Release 10.8 4/8/2017
UI/Usability: Simplified drawer opening for the main window. PopOvers are replaced with three labels, Jog, Setup and Path Wizard, that can be dragged in the direction of a window edge to open a drawer on that edge.
Added a "Abort and reset" option to firmware error handling upon loss of communication from the host. This will decelerate motors before resetting the µP.
Added "fine tuning" parameter settings for the new interpolation algorithm. Users can safely use the defaults or experiment for improved performance.
Bug fixes: Group slave addressing for NXP I2C extenders. Periodic reporting interval.
Release 10.7 4/4/2017
Performance: I2C device communication is now accelerated using interrupts, burst mode (hardware FIFO registers) and round-robin dispatch. This enables all ten I2C modules to be communicating simultaneously and it enables devices on the same module to keep the bus busy. This will be especially useful for LED light array applications.
Miscellaneous bug fixes.
Release 10.6 3/27/2017
Performance: More accurate interpolation algorithms reduce off-tracking on curved paths especially at higher feed-rates. The previous algorithm allowed motors to lag the interpolated target positions sufficiently to stop without overrunning the target if the interpolation stops suddenly. The new algorithms couple the motor positions to the targets much more closely. To stop the motors, the interpolation is decelerated synchronously with the motor deceleration.
Release 10.5 3/23/2017
Performance: The firmware now recognizes new path segments as continuations of a previous path if the multi-dimensional bend is less than a configurable minimum angle. Continuations are optimized to be seamless with the interpolation engine stepping immediately into the new segment and conserving motor momentum.
Bug fix: A timing issue could generate incorrect coordinates for circular paths.
Release 10.4 3/17/2017
CNC programs can now address I2C slaves directly. This enables the application to be used as an LED lighting array controller. The EK-TM4C1294XL µP has 10 I2C modules each supporting up to 62 PWM slave extenders. With each extender having 16 outputs, the total number of proportional outputs controllable by one µP is 9,920.
Group slave addressing is now supported for the PCA9685 and PCA9635 PWM extenders. Group pin addressing is now supported for the PCF8575 and MCP23017 binary output extenders.
Fixes a bug closing drawers.
Release 10.3.1 3/10/2017
Bug fixes: New Machine document initialization; improved window handling.
Features: Pins window changed for outline view to view-based table.
Release 10.1 3/8/2017
Adds support for I2C connected slave devices. Initially six slave ICs are supported: The TI DRV10983 is a 24V 2A sensorless 3-phase motor driver; The TI DRV10975 is a 12V 1.5A sensorless 3-phase motor driver; The PCF8575 is a I/O extender with 16 quasi-bidirectional pins - outputs are open-collector only; The MCP23017 is a I/O extender with 16 bidirectional pins - output is bi-polar or open-collector; The PCA9685 is an output only extender with 16 pins either On/Off or 12 bit PWM at 1500 Hz. The PCA9635 is an output only extender with 16 pins either On/Off or 8 bit PWM at 97 KHz.
The TI DRV10983 and DRV10975 have a EEPROM to save motor parameters. RiceCNC can be used to configure and test motor parameters, then the chips can be moved to a different system. I/O extenders are convenient for system design by requiring only a 4 wire connection to µP board, i.e., clock, data, power and ground. They can also boost output voltage from 3.3V to 5V. The PCA9635 may be fast enough to use for motor commutation.
Motor overrunning target position, optional execution, spindle speed.
Improved 3-phase spindle driver. Still preliminary but able to run at 1000 rpm while performing circular interpolation.
Improved algorithm to stop motors at target interpolation position without overrun or oscillation.
Added support for the high speed Quadrature Encoder Input (QEI) counter.
Three-phase motor driver logic is improved but still preliminary.
Bug fixes and efficiency improvements.
Adds preliminary support for 3-phase motors with optical feedback but his support targets the new and much faster “C2000 LaunchPad”. Hall sensor logic is deprecated as the sensors lack the accuracy required of a position feedback device.
UI: Improved pin assignments
Improved hall sensor phasing.
This release extends the license period for the 1 month subscription to 2 months and extends the license period for the 1 year subscription to 2 years. This effectively reduces the annual subscription cost for a three axis machine to $19.99. This change will apply retroactively to current subscribers. The product descriptions will be updated with the next iTunes release.
Adds to option to connect the spindle controls to any positioning axis. This is particularly useful when the spindle is a BLDC motor.
Misc bug fixes.
Initializing limit switches.
Initializing spindle pins.
Fixes prior bug requiring separate installation of libusb.
Improved WatchDog time handling. Fixes bug with µP resetting if main thread is held busy.
Improved efficiency of serial monitor window.
Note: This release requires libusb 1.0.20 to be installed at the standard location /usr/local/lib/ocoaLigature0 libusb-1.0.0.dylib. This will be fixed in the next release.ocoaLigature1
Removed requirement for separate installation of the open-source lm4flash flasher utility. Coding based upon lm4flash is now built into the application.
Increased BLDC motor micro-step resolution to 1/64.
Improved support for Pulse Width Modulated (hardware timer driven) outputs.
Increased BLDC motor micro-step resolution to 1/32.
Increased security in El Capitan prevents the app from running the flasher utility automatically. This release will output instructions to run lm4flash using the Terminal application until a better alternative is developed.
Increased BLDC motor commutation resolution to 1/16 sinusoidal micro-stepping.
Soft PFM interrupt running up to 400 kHz for quieter BLDC motor commutation.
BLDC motors now running up to 4,000 RPM with 1/4 sinusoidal micro-stepping. Smooth running at slow speeds.
Adds preliminary support for three-phase BLDC servo motors using the new TI BOOST-DRV8305EVM high power driver board. This release can run BLDC motors in half-step open loop mode - jerky motion. The next release will run BLDC motors using sinusoidal micro-stepping.
Adds a soft PWM output generator enabling PWM output from any GPIO pin. The TI processors have a limited number of output pins having PWM hardware support. The soft PWM output generator gets around this limitation, but the output is noisier due to running at audio frequencies.
This release reformats the Axis portion of the Machine XML document. You will need to reconfigure axis parameters and pin assignments.
Additional preliminary UI coding for both brushed and brushless DC servo motor support.
Preliminary UI coding for both brushed and brushless DC servo motor support.
Bug fix: axis enable.
Adds support for open loop three phase motors and for hall sensored motors. This is preliminary to upcoming support for closed loop three phase motor control.
Adds support for closed loop stepper motors.
µP memory leaks when changing configurations.
Quadrature slave mode input is working.
El Capitan compatibility update.
Improved limit switch handling. An active limit switch will abort any current interpolation and program execution, then slowly back off of the switch until the switch is inactive, then will set the machine position to a predetermined value if setup.
Additional UI improvements.
Input pin bias selection.
Improved UI pin reassignment.
GPIO drive current selection.
Motor step interrupt handling.
User “Pause” and “Abort” will now stop Spindle & coolants (if running).
User “Continue” will restart Spindle & coolants (if they were running).
Machine OK input now has same actions as user “Pause” but will automatically continue when OK signal returns.
Limit switch inputs will now “Abort” stopping Spindle & coolants (if running)..
“Safety Door Ajar” switch input - Same actions as user “Pause” but will automatically continue when door is closed.
Active high switch input now applies weak pull-down to pin.
UI setup improvements.
UI setup improvements.
More efficient firmware I/O.
Improved motion algorithms to eliminate motor surging.
Add preliminary support for slave mode. Slave mode allows RiceCNC to configure and control BOOST-DRV8711 drivers while following Step/Direction or Quadrature pulse commands from an alternate motion control system.
Miscellaneous bug fixes and UI improvements.
Pins for BOOST-DRV8711 chip select and potentiometer pins are reassignable from default settings.
Added a spinning progress indicator to prevent “App Nap” causing periodic µP idle resets.
Updated documentation includes DIY instructions for the complete high-performance machine control system pictured above.
1 UI improvements.
1 motor power on relay control,
2 LaunchPad pin description tooltips.
1 Grove Base pinouts corrected - board didn’t match schematic,
2 Auxiliary output button highlighting.
Adds support for the newly released seeed studio “Grove Base for LaunchPad” breakout board. The above photo shows the new board mounted on the BoosterPack 1 position of the Connected LaunchPad in my development test machine - a MaxNC10. I will soon be releasing DIY instructions for this inexpensive but high performance machine upgrade.
The new “Grove Base for LaunchPad” provides a convenient means to add extra outputs and sensors to the machine control system. Each 4 pin connector extends one or two BoosterPack pins along with 3.3 volt power and ground. Visit the seeed studio website for information on available Grove modules. Several are interesting for this application:
4 High temperature probe (for motors)
5 Differential amplifier
6 Touch sensor
6 Gesture recognition
Bug fixes: Pin assignments, probe input.
More efficient host--µP communications
Bug fixes: Probing move.
Bug fixes: Positioning via Machine Status Scroll View.
µStep position reporting improves position accuracy.
Adds packet re-sequencing enabling network connection.
Several bug fixes inc. DRV8711 interrupt timing causing step loss.
Added µP status display and other UI improvements.
Performance bug fixes.
Simplifies drawer opening user interface.
Major firmware update. More efficient motor control algorithms improve both speed and stability. This release, in combination with the BOOST-DRV8711 drivers, provides very smooth motion.
More efficient host communications enables faster updates.
Added continuous analog to digital conversion with both hardware and software oversampling.
Ethernet retransmission timeout
Fixed ethernet reset loop preventing resynchronization and requiring app restart.
Fixed analog inputs.
Added 8711 status reporting.
8711 parameters can be changed without resetting the motor’s axis, even while the motor is running.
Note: The dSpin driver interface remains unstable with this release but I may get it working again for my next release.
The TI BOOST-DRV8711 are “best in class” rated, economical, high power, i.e. 4.5 amp continuous RMS @ 52 volts, driver boards that plug directly to the LaunchPad BoosterPack connectors providing an instant mechanical mounting and signal connections. They have even more configuration options than the ST dSpin technology and support up to 1/256 micro-step resolution.
This release supports two BOOST-DRV8711 boards mounted to a “Connected LaunchPad” micro-controller board. Future releases will expand the number of drivers supported either by using a “carrier” board to extend the BoosterPack connectors or, preferably, by coordinating multiple “Connected LaunchPad” boards for a single machine most likely using UDP ethernet connections.
Note: The dSpin interface remains unstable with this release. The BOOST-DRV8711 interface works so much better with the TI micro-controller boards than the dSpin interface that I may drop support for the ST Microelectronics technology. I apologize to my users that invested in dual dSpin boards for my misstep.
1 Setting program position from popover.
2. Faster clock setting (50%) for EK-TM4C123GXL.
Major firmware rewrite:
The Digilent UNO32 is not supported with this release.
The dSpin interface is unstable with this release
Note: The dSpin problem seems to be with the SPI communications but I am unsure if the problem is noise, timing or my firmware. Regardless, I will be shifting my focus to supporting the TI BOOST-DRV8711 high power, i.e., 4.5A @ 52V, stepper motor driver boards. Two boards will mount directly to the EK-TM4C1294XL “Connected LaunchPad”. Then I will be adding support for multiple EK-TM4C1294XL boards. The DRV8711 uses a Step/Direction interface but uses SPI to initialize operational parameters.
1 Resizable position window popovers not appearing.
2. Some dSpin parameters not set correctly.
Note: Support for TI dSpin technology is experimental at this time. It is difficult to maintain reliable serial communications with the devices. Users should wait until further notice before investing in dSpin driver boards for use with this application.
Note: The iTunes store makes it possible to distribute bug fixes and new functionality faster while improving the stability of releases to the iTunes store. New features can remain on this Beta test web site longer for testers having a free license. The store then provides the flexibility for the new features to become chargeable upon release.
Beta test and bug fix releases will now request a a copy of the application purchase receipt from the iTunes store upon first launch. New Beta testers can obtain this app receipt by fist purchasing the free download from the App Store.
Current users should be able to restore purchase receipts using the “Restore Missing Receipts” button in the License window. The Beta test release then should become fully functional. Please send me an email if this fails to work.
Release 8.1 notes:
Version 8.1, 01/14/2015, is a major upgrade for RiceCNC. Current users should read this section carefully.
Key features of this release include:
A single, arbitrarily complex, multi-axis Coordinate Transformation Matrix (CTM) that is applied real-time by the µP firmware;
The CTM separates the machine coordinate space from the program coordinate space;
Jogging, both by mouse and trackpad, can be applied to either the machine coordinate space or the program coordinate space;
Polar mode can be applied to any two axes - not just in one of the three standard orthogonal planes;
Rotation can be applied in any combination of two or three axes assumed to be orthogonal;
Much improved support for fixture and tool offsets providing easier use of these options;
Tear-off windows add flexibility to enable more efficient use of screen space;
Several sheets have been replaced by easier to use pop-over balloons;
The Machine document window toolbar has been removed and replaced by a new Machine Status scroll view and greatly simplified with faster access to information.
A lot of code, both host and firmware has been rewritten for faster and more stable performance - many bug fixes;
The UNO32 µP board firmware has not been updated or tested for this release due to time constraints and is likely to be incompatible. Users with the UNO32 µP board should skip this release or upgrade to the TI “Connected LaunchPad” board.
The UNO32 µP board firmware will be updated for a future release but may lack sufficient memory to run the new features that have been added to the LaunchPad firmware. Newer Digilent boards having more memory may also be supported in future releases.
As before, the TI “Connected LaunchPad” is the preferred board for new users.
The toolbar has been removed from the Machine document window:
The position scroll view is now expanded to become the machine status scroll view. The view can now display any combination of the machine, fixture, tool and program positions concurrently. It also merges status information from several sheets formerly accessed from the toolbar including, the drawers sheet, the inputs sheet, the program modals sheet, fixture and tool selection sheets.
The Axis Setup Drawer is now expanded to become the Setup Drawer. The Fixture and Tool setup sheet functionality is moved to the Setup Drawer. The Inputs, Outputs and Spindle Setup drawers are also merged with the Setup Drawer.
The pause and run buttons are moved from the toolbar to the main document window.
Upgraded Axis setup drawer UI views. Separated motor parameters.
Linear, circular, drill and pocket milling wizards are combined using a parameter table interface. Other sheets and drawers are also updated to table layout.
Adds configurations for micro-processor performance parameters to reduce off-tracking at high motor speeds.
UI made more graphical using toolbars and image buttons.
Adds scripting bridge to the Mail app to solicit feedback in the form of bug reports and feature requests.
RiceCNC initially supported the Digilent UNO 32 µP board and the ST Micro L6470 driver interface but upgraded to the TI LaunchPad boards and the high performance TI BOOST-DRV8711 motor driver boards.