User Tools

Site Tools


mycnc:stop_end_program

Stop/End program button commands

A video recap of the following manual is available on our YouTube channel:

When using myCNC, the actions performed by the program when the Stop button is pressed are defined in the following files:

  • M02.plc (Settings > Config > PLC > Hardware PLC)
  • OFF.plc (Settings > Config > PLC > Hardware PLC)
  • __HANDLER_GCODE_STOP (Settings > Config > PLC > Software PLC)

The exact actions taken upon pressing the Stop button differ depending on the number of times the button is pressed. If pressing ONCE, the M02.plc procedure is started (below is the default M02.plc code for the Plasma profile X1366P):

M02.plc
#include pins.h
#include vars.h
#include func_plasma.h
 
main()
{
  timer=0;
 
  portclr(OUTPUT_DRILL_VALVE_DOWN);
  portset(OUTPUT_DRILL_VALVE_UP);
  portclr(OUTPUT_DRILL_POWER);
 
  stop_thc();
  stop_trigger1();
 
  //turn off power source
  portclr(OUTPUT_PLASMA);
 
  portclr(OUTPUT_PROBE);
  test_lift_after_cut();
  do_lift_after_cut();
  proc=plc_proc_idle;
 
  start_trigger2();
  exit(99);
};

:!: NOTE: Note the proc=plc_proc_idle code at the end of the M02 macro. If this line is not present, then the Stop command is not completed, and the system will remain suspended as it waits for the PLC code to complete all operations. As a result, running/restarting the control program will not work correctly.

If the Stop button is pressed TWICE, the OFF.plc procedure will be used (the OFF.plc command is also launched upon completion of every small command, including macros and single G-codes completion). Below is the default code for the OFF.plc procedure for the X1366P profile (note that the procedures will be different for other profiles and different user cases):

OFF.plc
#include pins.h
#include vars.h
#include func_plasma.h
 
main()
{
 
  portclr(OUTPUT_DRILL_VALVE_DOWN);
  portset(OUTPUT_DRILL_VALVE_UP);
  portclr(OUTPUT_DRILL_POWER);
 
 
  //stop_thc();
  //stop_trigger1();
 
  //turn off power source
  portclr(OUTPUT_PLASMA);
  portclr(OUTPUT_PROBE);
  //proc=plc_proc_idle;
 
  exit(99);
};

The two separate commands allow for a variety of stopping configurations. M02.plc procedure will often be set to have some sort of lift control to prevent issues due to the working tool potentially coming into contact with the working material/surface, while the OFF.plc might be set to clear all relevant ports to turn the system off, and end the program without any additional movement. Alternatively, on some profiles the OFF.plc will not perform any additional actions as compared to M02.plc, or vice versa - the configuration depends almost entirely on the particular needs of the user and the machine.

Sometimes, when issues arise with the lift procedure, or with any of the processes described in the M02 procedure, it is advisable to click the Stop button twice in order to obtain a complete and total G-code run shutdown (if that is the way that the codes have been set up).

Additionally, whenever the myCNC player stops running G-code, the __HANDLER_GCODE_STOP Software PLC (which is continuously running in the background) will be activated. This handler (along with the other Software PLC handlers) allows to monitor for some event, such as stopping a G-code run, and having some code be executed after the event has occurred. By default, the __HANDLER_GCODE_STOP simply consists of the following code:

__HANDLER_GCODE_STOP
main()
 {
  exit(99);
 };

As can be seen from the code above code, in its default configuration the handler will simply activate and then close, not performing any additional actions. However, in situations where it is necessary to add a command which will activate whenever the G-code run has stopped, __HANDLER_GCODE_STOP can be altered. For example, the code can be changed to look the following way if it is necessary, for example, to turn off the output port #3 whenever the run is stopped:

__HANDLER_GCODE_STOP
main()
 {
  portclr(3);
  exit(99);
 };

In non-default configurations, there can be a number of outputs/inputs being set and cleared upon program stop. Often, when issues arise with ports being set and cleared upon program start/stop, it is an issue with port set / port clear code being left over in the M02, OFF, and __HANDLER_GCODE_STOP commands. Therefore, it is advisable to begin diagnostics with looking for portset/portclr codes in these commands to see if the behaviour has been previously defined there.

mycnc/stop_end_program.txt · Last modified: 2024/02/21 13:54 by ivan

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki