Index: docs/NEWS =================================================================== RCS file: /cvs/emc2/docs/NEWS,v retrieving revision 1.25 diff -u -r1.25 NEWS --- docs/NEWS 24 Oct 2006 21:03:35 -0000 1.25 +++ docs/NEWS 5 Nov 2006 18:57:58 -0000 @@ -1,6 +1,12 @@ # some of EMC2 History & News ############################# +2006.11.04 - added a feed-hold HAL pin. Added M codes to enable/disable + feed override, spindle override, feed hold, and adaptive feed + individually. Feed override is M50, spindle override is M51, + adaptive feed is M52, and feed hold is M53. G50/51 are no + longer used to enable/disable adaptive feed, use M52 instead. + 2006.10.24 - added support for block delete as defined by Section 2.2.2 in the RS274NGC_3 specs. Index: src/emc/motion/motion.h =================================================================== RCS file: /cvs/emc2/src/emc/motion/motion.h,v retrieving revision 1.70 diff -u -r1.70 motion.h --- src/emc/motion/motion.h 5 Nov 2006 04:57:05 -0000 1.70 +++ src/emc/motion/motion.h 5 Nov 2006 18:58:02 -0000 @@ -222,7 +222,7 @@ int wdWait; /* cycle to wait before toggling wd */ int debug; /* debug level, from DEBUG in .ini file */ unsigned char now, out, start, end; /* these are related to synched AOUT/DOUT. now=wether now or synched, out = which gets set, start=start value, end=end value */ - unsigned char mode; /* used for turning feed/spindle overrides on/off */ + unsigned char mode; /* used for turning overrides etc. on/off */ double comp_nominal, comp_forward, comp_reverse; /* compensation triplet, nominal, forward, reverse */ unsigned char tail; /* flag count for mutex detect */ } emcmot_command_t; Index: src/emc/nml_intf/canon.hh =================================================================== RCS file: /cvs/emc2/src/emc/nml_intf/canon.hh,v retrieving revision 1.16 diff -u -r1.16 canon.hh --- src/emc/nml_intf/canon.hh 4 Nov 2006 23:36:35 -0000 1.16 +++ src/emc/nml_intf/canon.hh 5 Nov 2006 18:58:04 -0000 @@ -742,6 +742,13 @@ // Returns the system traverse rate extern double GET_EXTERNAL_TRAVERSE_RATE(); +// Returns the enabled/disabled status for feed override, spindle +// override, adaptive feed, and feed hole +extern int GET_EXTERNAL_FEED_OVERRIDE_ENABLE(); +extern int GET_EXTERNAL_SPINDLE_OVERRIDE_ENABLE(); +extern int GET_EXTERNAL_ADAPTIVE_FEED_ENABLE(); +extern int GET_EXTERNAL_FEED_HOLD_ENABLE(); + extern FILE *_outfile; /* where to print, set in main */ extern CANON_TOOL_TABLE _tools[]; /* in canon.cc */ extern int _tool_max; /* in canon.cc */ Index: src/emc/nml_intf/emc.hh =================================================================== RCS file: /cvs/emc2/src/emc/nml_intf/emc.hh,v retrieving revision 1.44 diff -u -r1.44 emc.hh --- src/emc/nml_intf/emc.hh 4 Nov 2006 23:36:36 -0000 1.44 +++ src/emc/nml_intf/emc.hh 5 Nov 2006 18:58:13 -0000 @@ -1616,6 +1616,10 @@ int kinematics_type; // identity=1,serial=2,parallel=3,custom=4 int motion_type; double distance_to_go; // in current move + int feed_override_enabled; + int spindle_override_enabled; + int adaptive_feed_enabled; + int feed_hold_enabled; }; // emc_MOTION is aggregate of all EMC motion-related status classes Index: src/emc/rs274ngc/rs274ngc_pre.cc =================================================================== RCS file: /cvs/emc2/src/emc/rs274ngc/rs274ngc_pre.cc,v retrieving revision 1.31 diff -u -r1.31 rs274ngc_pre.cc --- src/emc/rs274ngc/rs274ngc_pre.cc 5 Nov 2006 04:57:06 -0000 1.31 +++ src/emc/rs274ngc/rs274ngc_pre.cc 5 Nov 2006 18:58:14 -0000 @@ -297,6 +297,7 @@ char filename[LINELEN]; double *pars; // short name for _setup.parameters +printf ( "Interp::init() start\n" ); INIT_CANON(); _setup.length_units = GET_EXTERNAL_LENGTH_UNIT_TYPE(); USE_LENGTH_UNITS(_setup.length_units); @@ -341,7 +342,7 @@ //_setup.cycle values do not need initialization _setup.distance_mode = MODE_ABSOLUTE; _setup.feed_mode = UNITS_PER_MINUTE; - _setup.feed_override = ON; +//_setup.feed_override set in Interp::synch //_setup.feed_rate set in Interp::synch _setup.filename[0] = 0; _setup.file_pointer = NULL; @@ -371,7 +372,7 @@ _setup.sequence_number = 0; /*DOES THIS NEED TO BE AT TOP? */ //_setup.speed set in Interp::synch _setup.speed_feed_mode = CANON_INDEPENDENT; - _setup.speed_override = ON; +//_setup.speed_override set in Interp::synch //_setup.spindle_turning set in Interp::synch //_setup.stack does not need initialization //_setup.stack_index does not need initialization @@ -381,16 +382,8 @@ //_setup.tool_table set in Interp::synch _setup.tool_table_index = 1; //_setup.traverse_rate set in Interp::synch - _setup.adaptive_feed = 0; - _setup.feed_hold = ON; //enable feed hold - -// tell the motion controller the inital states of the -// various overrides and feed controls - if ( _setup.speed_override ) ENABLE_SPEED_OVERRIDE(); else DISABLE_SPEED_OVERRIDE(); - if ( _setup.feed_override ) ENABLE_FEED_OVERRIDE(); else DISABLE_FEED_OVERRIDE(); - if ( _setup.adaptive_feed ) ENABLE_ADAPTIVE_FEED(); else DISABLE_ADAPTIVE_FEED(); - if ( _setup.feed_hold ) ENABLE_FEED_HOLD(); else DISABLE_FEED_HOLD(); - +//_setup.adaptive_feed set in Interp::synch +//_setup.feed_hold set in Interp::synch write_g_codes((block_pointer) NULL, &_setup); write_m_codes((block_pointer) NULL, &_setup); @@ -404,7 +397,7 @@ // Synch rest of settings to external world synch(); - +printf ( "Interp::init() end\n" ); return INTERP_OK; } @@ -915,6 +908,10 @@ _setup.spindle_turning = GET_EXTERNAL_SPINDLE(); _setup.tool_max = GET_EXTERNAL_TOOL_MAX(); _setup.traverse_rate = GET_EXTERNAL_TRAVERSE_RATE(); + _setup.feed_override = GET_EXTERNAL_FEED_OVERRIDE_ENABLE(); + _setup.speed_override = GET_EXTERNAL_SPINDLE_OVERRIDE_ENABLE(); + _setup.adaptive_feed = GET_EXTERNAL_ADAPTIVE_FEED_ENABLE(); + _setup.feed_hold = GET_EXTERNAL_FEED_HOLD_ENABLE(); GET_EXTERNAL_PARAMETER_FILE_NAME(file_name, (LINELEN - 1)); save_parameters(((file_name[0] == Index: src/emc/task/emccanon.cc =================================================================== RCS file: /cvs/emc2/src/emc/task/emccanon.cc,v retrieving revision 1.73 diff -u -r1.73 emccanon.cc --- src/emc/task/emccanon.cc 5 Nov 2006 13:51:23 -0000 1.73 +++ src/emc/task/emccanon.cc 5 Nov 2006 18:58:18 -0000 @@ -1993,6 +1993,25 @@ return emcStatus->io.tool.toolPrepped; } +int GET_EXTERNAL_FEED_OVERRIDE_ENABLE() +{ + return emcStatus->motion.traj.feed_override_enabled; +} + +int GET_EXTERNAL_SPINDLE_OVERRIDE_ENABLE() +{ + return emcStatus->motion.traj.spindle_override_enabled; +} + +int GET_EXTERNAL_ADAPTIVE_FEED_ENABLE() +{ + return emcStatus->motion.traj.adaptive_feed_enabled; +} + +int GET_EXTERNAL_FEED_HOLD_ENABLE() +{ + return emcStatus->motion.traj.feed_hold_enabled; +} CANON_PLANE GET_EXTERNAL_PLANE() { Index: src/emc/task/emctask.cc =================================================================== RCS file: /cvs/emc2/src/emc/task/emctask.cc,v retrieving revision 1.20 diff -u -r1.20 emctask.cc --- src/emc/task/emctask.cc 24 Oct 2006 20:04:36 -0000 1.20 +++ src/emc/task/emctask.cc 5 Nov 2006 18:58:18 -0000 @@ -291,6 +291,7 @@ interp.ini_load(EMC_INIFILE); waitFlag = 0; +printf ( "emcTaskPlanInit() start\n" ); int retval = interp.init(); if (retval > INTERP_MIN_ERROR) { print_interp_error(retval); @@ -302,6 +303,7 @@ } } } +printf ( "emcTaskPlanInit() end\n" ); return retval; } Index: src/emc/task/taskintf.cc =================================================================== RCS file: /cvs/emc2/src/emc/task/taskintf.cc,v retrieving revision 1.60 diff -u -r1.60 taskintf.cc --- src/emc/task/taskintf.cc 5 Nov 2006 04:57:07 -0000 1.60 +++ src/emc/task/taskintf.cc 5 Nov 2006 18:58:21 -0000 @@ -1114,6 +1114,10 @@ stat->probedPosition.tran.z = emcmotStatus.probedPos.tran.z; stat->probeval = emcmotStatus.probeVal; stat->probe_tripped = emcmotStatus.probeTripped; + stat->feed_override_enabled = emcmotStatus.enables_new & FS_ENABLED; + stat->spindle_override_enabled = emcmotStatus.enables_new & SS_ENABLED; + stat->adaptive_feed_enabled = emcmotStatus.enables_new & AF_ENABLED; + stat->feed_hold_enabled = emcmotStatus.enables_new & FH_ENABLED; if (new_config) { stat->cycleTime = emcmotConfig.trajCycleTime;