This page covers the design of the DASL Gantry control software. The SISTR Gantry has been through many iterations of mechanical and program design. This latest one is designed to be both robust and simple to use.
(More on this to come) TODO: Backstory TODO: Publications TODO: Photos
The Gantry control software is a C# GUI that communicates with Techno CNC's proprietary API for driving their CNC controllers. Communication between these systems is done through a wrapper class called DASLGantry, which simplifies some of the functions and adds additional features.
This form presents the user controls and readouts, and shows basic information about the gantry's current status. All Gantry control is achieved through callbacks from the GUI. Within this object, there are 3 timers that control periodic functions:
When enabled, this timer sends velocity commands at approximately 40Hz to the Gantry's controller, continuously updating the desired velocity of the 3 main axes. The update function performs several safety checks before committing to a new velocity command, and commands zero velocity if anything goes wrong. This way, the gantry control is only active if conditions are safe.
This somewhat poorly named timer polls the Joystick for its state, copying the axis and button positions into local memory. Other functions in the GUI then use this local data to check for button presses and axis position.
Running at about 10Hz, this timer updates the displays on the GUI, and polls the gantry's current velocity for home switch checking. Basically, any function that needs to be periodic, but is not high priority, is triggered here.