📄 emc.hh
字号:
/********************************************************************* Description: emc.hh* Declarations for EMC NML vocabulary** Derived from a work by Fred Proctor & Will Shackleford** Author:* License: GPL Version 2* System: Linux** Copyright (c) 2004 All rights reserved.** Last change:* $Revision: 1.25 $* $Author: cradek $* $Date: 2006/03/21 02:42:28 $********************************************************************/#ifndef EMC_HH#define EMC_HH#include "config.h"#include "rcs.hh"#include "posemath.h" // PM_POSE, etc.#include "canon.hh" // CANON_TOOL_TABLE, CANON_UNITS#include "emcglb.h" // EMC_AXIS_MAX#include "emcpos.h"// ---------------------// EMC TYPE DECLARATIONS// ---------------------// NML for base EMC#define EMC_OPERATOR_ERROR_TYPE ((NMLTYPE) 11)#define EMC_OPERATOR_TEXT_TYPE ((NMLTYPE) 12)#define EMC_OPERATOR_DISPLAY_TYPE ((NMLTYPE) 13)#define EMC_NULL_TYPE ((NMLTYPE) 21)#define EMC_SET_DEBUG_TYPE ((NMLTYPE) 22)#define EMC_SYSTEM_CMD_TYPE ((NMLTYPE) 30)// NML for EMC_AXIS#define EMC_AXIS_SET_AXIS_TYPE ((NMLTYPE) 101)#define EMC_AXIS_SET_UNITS_TYPE ((NMLTYPE) 102)/*! \todo FIXME - to be deleted later */#define EMC_AXIS_SET_GAINS_TYPE ((NMLTYPE) 103)#define EMC_AXIS_SET_CYCLE_TIME_TYPE ((NMLTYPE) 104)#define EMC_AXIS_SET_INPUT_SCALE_TYPE ((NMLTYPE) 105)#define EMC_AXIS_SET_OUTPUT_SCALE_TYPE ((NMLTYPE) 106)#define EMC_AXIS_SET_MIN_POSITION_LIMIT_TYPE ((NMLTYPE) 107)#define EMC_AXIS_SET_MAX_POSITION_LIMIT_TYPE ((NMLTYPE) 108)#define EMC_AXIS_SET_MIN_OUTPUT_LIMIT_TYPE ((NMLTYPE) 109)#define EMC_AXIS_SET_MAX_OUTPUT_LIMIT_TYPE ((NMLTYPE) 110)#define EMC_AXIS_SET_FERROR_TYPE ((NMLTYPE) 111)#define EMC_AXIS_SET_HOMING_PARAMS_TYPE ((NMLTYPE) 112)// gap because of deleted message types#define EMC_AXIS_SET_MIN_FERROR_TYPE ((NMLTYPE) 115)#define EMC_AXIS_SET_MAX_VELOCITY_TYPE ((NMLTYPE) 116)// gap because of deleted message types#define EMC_AXIS_INIT_TYPE ((NMLTYPE) 118)#define EMC_AXIS_HALT_TYPE ((NMLTYPE) 119)#define EMC_AXIS_ABORT_TYPE ((NMLTYPE) 120)#define EMC_AXIS_ENABLE_TYPE ((NMLTYPE) 121)#define EMC_AXIS_DISABLE_TYPE ((NMLTYPE) 122)#define EMC_AXIS_HOME_TYPE ((NMLTYPE) 123)#define EMC_AXIS_JOG_TYPE ((NMLTYPE) 124)#define EMC_AXIS_INCR_JOG_TYPE ((NMLTYPE) 125)#define EMC_AXIS_ABS_JOG_TYPE ((NMLTYPE) 126)#define EMC_AXIS_ACTIVATE_TYPE ((NMLTYPE) 127)#define EMC_AXIS_DEACTIVATE_TYPE ((NMLTYPE) 128)#define EMC_AXIS_OVERRIDE_LIMITS_TYPE ((NMLTYPE) 129)#define EMC_AXIS_SET_OUTPUT_TYPE ((NMLTYPE) 130)#define EMC_AXIS_LOAD_COMP_TYPE ((NMLTYPE) 131)#define EMC_AXIS_ALTER_TYPE ((NMLTYPE) 132)#define EMC_AXIS_SET_STEP_PARAMS_TYPE ((NMLTYPE) 133)#define EMC_AXIS_SET_BACKLASH_TYPE ((NMLTYPE) 134)#define EMC_AXIS_STAT_TYPE ((NMLTYPE) 199)// NML for EMC_TRAJ// defs for termination conditions#define EMC_TRAJ_TERM_COND_STOP 1#define EMC_TRAJ_TERM_COND_BLEND 2#define EMC_TRAJ_SET_AXES_TYPE ((NMLTYPE) 201)#define EMC_TRAJ_SET_UNITS_TYPE ((NMLTYPE) 202)#define EMC_TRAJ_SET_CYCLE_TIME_TYPE ((NMLTYPE) 203)#define EMC_TRAJ_SET_MODE_TYPE ((NMLTYPE) 204)#define EMC_TRAJ_SET_VELOCITY_TYPE ((NMLTYPE) 205)#define EMC_TRAJ_SET_ACCELERATION_TYPE ((NMLTYPE) 206)#define EMC_TRAJ_SET_MAX_VELOCITY_TYPE ((NMLTYPE) 207)#define EMC_TRAJ_SET_MAX_ACCELERATION_TYPE ((NMLTYPE) 208)#define EMC_TRAJ_SET_SCALE_TYPE ((NMLTYPE) 209)#define EMC_TRAJ_SET_MOTION_ID_TYPE ((NMLTYPE) 210)#define EMC_TRAJ_INIT_TYPE ((NMLTYPE) 211)#define EMC_TRAJ_HALT_TYPE ((NMLTYPE) 212)#define EMC_TRAJ_ENABLE_TYPE ((NMLTYPE) 213)#define EMC_TRAJ_DISABLE_TYPE ((NMLTYPE) 214)#define EMC_TRAJ_ABORT_TYPE ((NMLTYPE) 215)#define EMC_TRAJ_PAUSE_TYPE ((NMLTYPE) 216)#define EMC_TRAJ_STEP_TYPE ((NMLTYPE) 217)#define EMC_TRAJ_RESUME_TYPE ((NMLTYPE) 218)#define EMC_TRAJ_DELAY_TYPE ((NMLTYPE) 219)#define EMC_TRAJ_LINEAR_MOVE_TYPE ((NMLTYPE) 220)#define EMC_TRAJ_CIRCULAR_MOVE_TYPE ((NMLTYPE) 221)#define EMC_TRAJ_SET_TERM_COND_TYPE ((NMLTYPE) 222)#define EMC_TRAJ_SET_OFFSET_TYPE ((NMLTYPE) 223)#define EMC_TRAJ_SET_ORIGIN_TYPE ((NMLTYPE) 224)#define EMC_TRAJ_SET_HOME_TYPE ((NMLTYPE) 225)#define EMC_TRAJ_SET_PROBE_INDEX_TYPE ((NMLTYPE) 226)#define EMC_TRAJ_SET_PROBE_POLARITY_TYPE ((NMLTYPE) 227)#define EMC_TRAJ_CLEAR_PROBE_TRIPPED_FLAG_TYPE ((NMLTYPE) 228)#define EMC_TRAJ_PROBE_TYPE ((NMLTYPE) 229)#define EMC_TRAJ_SET_TELEOP_ENABLE_TYPE ((NMLTYPE) 230)#define EMC_TRAJ_SET_TELEOP_VECTOR_TYPE ((NMLTYPE) 231)#define EMC_TRAJ_SET_SPINDLESYNC_TYPE ((NMLTYPE) 232)#define EMC_TRAJ_STAT_TYPE ((NMLTYPE) 299)// EMC_MOTION aggregate class type declaration#define EMC_MOTION_INIT_TYPE ((NMLTYPE) 301)#define EMC_MOTION_HALT_TYPE ((NMLTYPE) 302)#define EMC_MOTION_ABORT_TYPE ((NMLTYPE) 303)#define EMC_MOTION_SET_AOUT_TYPE ((NMLTYPE) 304)#define EMC_MOTION_SET_DOUT_TYPE ((NMLTYPE) 305)#define EMC_MOTION_STAT_TYPE ((NMLTYPE) 399)// NML for EMC_TASK#define EMC_TASK_INIT_TYPE ((NMLTYPE) 501)#define EMC_TASK_HALT_TYPE ((NMLTYPE) 502)#define EMC_TASK_ABORT_TYPE ((NMLTYPE) 503)#define EMC_TASK_SET_MODE_TYPE ((NMLTYPE) 504)#define EMC_TASK_SET_STATE_TYPE ((NMLTYPE) 505)#define EMC_TASK_PLAN_OPEN_TYPE ((NMLTYPE) 506)#define EMC_TASK_PLAN_RUN_TYPE ((NMLTYPE) 507)#define EMC_TASK_PLAN_READ_TYPE ((NMLTYPE) 508)#define EMC_TASK_PLAN_EXECUTE_TYPE ((NMLTYPE) 509)#define EMC_TASK_PLAN_PAUSE_TYPE ((NMLTYPE) 510)#define EMC_TASK_PLAN_STEP_TYPE ((NMLTYPE) 511)#define EMC_TASK_PLAN_RESUME_TYPE ((NMLTYPE) 512)#define EMC_TASK_PLAN_END_TYPE ((NMLTYPE) 513)#define EMC_TASK_PLAN_CLOSE_TYPE ((NMLTYPE) 514)#define EMC_TASK_PLAN_INIT_TYPE ((NMLTYPE) 515)#define EMC_TASK_PLAN_SYNCH_TYPE ((NMLTYPE) 516)#define EMC_TASK_STAT_TYPE ((NMLTYPE) 599)// EMC_TOOL type declarations#define EMC_TOOL_INIT_TYPE ((NMLTYPE) 1101)#define EMC_TOOL_HALT_TYPE ((NMLTYPE) 1102)#define EMC_TOOL_ABORT_TYPE ((NMLTYPE) 1103)#define EMC_TOOL_PREPARE_TYPE ((NMLTYPE) 1104)#define EMC_TOOL_LOAD_TYPE ((NMLTYPE) 1105)#define EMC_TOOL_UNLOAD_TYPE ((NMLTYPE) 1106)#define EMC_TOOL_LOAD_TOOL_TABLE_TYPE ((NMLTYPE) 1107)#define EMC_TOOL_SET_OFFSET_TYPE ((NMLTYPE) 1108)#define EMC_TOOL_STAT_TYPE ((NMLTYPE) 1199)// EMC_AUX type declarations#define EMC_AUX_INIT_TYPE ((NMLTYPE) 1201)#define EMC_AUX_HALT_TYPE ((NMLTYPE) 1202)#define EMC_AUX_ABORT_TYPE ((NMLTYPE) 1203)#define EMC_AUX_DIO_WRITE_TYPE ((NMLTYPE) 1204)#define EMC_AUX_AIO_WRITE_TYPE ((NMLTYPE) 1205)#define EMC_AUX_ESTOP_ON_TYPE ((NMLTYPE) 1206)#define EMC_AUX_ESTOP_OFF_TYPE ((NMLTYPE) 1207)#define EMC_AUX_ESTOP_RESET_TYPE ((NMLTYPE) 1208)#define EMC_AUX_STAT_TYPE ((NMLTYPE) 1299)// EMC_SPINDLE type declarations#define EMC_SPINDLE_INIT_TYPE ((NMLTYPE) 1301)#define EMC_SPINDLE_HALT_TYPE ((NMLTYPE) 1302)#define EMC_SPINDLE_ABORT_TYPE ((NMLTYPE) 1303)#define EMC_SPINDLE_ON_TYPE ((NMLTYPE) 1304)#define EMC_SPINDLE_OFF_TYPE ((NMLTYPE) 1305)#define EMC_SPINDLE_FORWARD_TYPE ((NMLTYPE) 1306)#define EMC_SPINDLE_REVERSE_TYPE ((NMLTYPE) 1307)#define EMC_SPINDLE_STOP_TYPE ((NMLTYPE) 1308)#define EMC_SPINDLE_INCREASE_TYPE ((NMLTYPE) 1309)#define EMC_SPINDLE_DECREASE_TYPE ((NMLTYPE) 1310)#define EMC_SPINDLE_CONSTANT_TYPE ((NMLTYPE) 1311)#define EMC_SPINDLE_BRAKE_RELEASE_TYPE ((NMLTYPE) 1312)#define EMC_SPINDLE_BRAKE_ENGAGE_TYPE ((NMLTYPE) 1313)#define EMC_SPINDLE_ENABLE_TYPE ((NMLTYPE) 1314)#define EMC_SPINDLE_DISABLE_TYPE ((NMLTYPE) 1315)#define EMC_SPINDLE_STAT_TYPE ((NMLTYPE) 1399)// EMC_COOLANT type declarations#define EMC_COOLANT_INIT_TYPE ((NMLTYPE) 1401)#define EMC_COOLANT_HALT_TYPE ((NMLTYPE) 1402)#define EMC_COOLANT_ABORT_TYPE ((NMLTYPE) 1403)#define EMC_COOLANT_MIST_ON_TYPE ((NMLTYPE) 1404)#define EMC_COOLANT_MIST_OFF_TYPE ((NMLTYPE) 1405)#define EMC_COOLANT_FLOOD_ON_TYPE ((NMLTYPE) 1406)#define EMC_COOLANT_FLOOD_OFF_TYPE ((NMLTYPE) 1407)#define EMC_COOLANT_STAT_TYPE ((NMLTYPE) 1499)// EMC_LUBE type declarations#define EMC_LUBE_INIT_TYPE ((NMLTYPE) 1501)#define EMC_LUBE_HALT_TYPE ((NMLTYPE) 1502)#define EMC_LUBE_ABORT_TYPE ((NMLTYPE) 1503)#define EMC_LUBE_ON_TYPE ((NMLTYPE) 1504)#define EMC_LUBE_OFF_TYPE ((NMLTYPE) 1505)#define EMC_LUBE_STAT_TYPE ((NMLTYPE) 1599)// EMC IO point configuration declarations#define EMC_SET_DIO_INDEX_TYPE ((NMLTYPE) 5001)#define EMC_SET_AIO_INDEX_TYPE ((NMLTYPE) 5002)#define EMC_SET_POLARITY_TYPE ((NMLTYPE) 5003)// digital IO point indicesenum { // spindle EMC_SET_DIO_INDEX_SPINDLE_FORWARD = 5101, EMC_SET_DIO_INDEX_SPINDLE_REVERSE, EMC_SET_DIO_INDEX_SPINDLE_DECREASE, EMC_SET_DIO_INDEX_SPINDLE_INCREASE, EMC_SET_DIO_INDEX_SPINDLE_BRAKE, EMC_SET_DIO_INDEX_SPINDLE_ENABLE, // coolant EMC_SET_DIO_INDEX_COOLANT_MIST, EMC_SET_DIO_INDEX_COOLANT_FLOOD, // lube EMC_SET_DIO_INDEX_LUBE_SENSE, // aux EMC_SET_DIO_INDEX_ESTOP_SENSE, EMC_SET_DIO_INDEX_ESTOP_WRITE};// analog IO point indicesenum { // spindle EMC_SET_AIO_INDEX_SPINDLE_ON = 5201};// IO point polaritiesenum { // axis EMC_SET_POLARITY_AXIS_ENABLE = 5301, EMC_SET_POLARITY_AXIS_MIN_LIMIT_SWITCH, EMC_SET_POLARITY_AXIS_MAX_LIMIT_SWITCH, EMC_SET_POLARITY_AXIS_HOME_SWITCH, EMC_SET_POLARITY_AXIS_HOMING, EMC_SET_POLARITY_AXIS_FAULT, // spindle EMC_SET_POLARITY_SPINDLE_FORWARD, EMC_SET_POLARITY_SPINDLE_REVERSE, EMC_SET_POLARITY_SPINDLE_DECREASE, EMC_SET_POLARITY_SPINDLE_INCREASE, EMC_SET_POLARITY_SPINDLE_BRAKE, EMC_SET_POLARITY_SPINDLE_ENABLE, // coolant EMC_SET_POLARITY_COOLANT_MIST, EMC_SET_POLARITY_COOLANT_FLOOD, // lube EMC_SET_POLARITY_LUBE_SENSE, // aux EMC_SET_POLARITY_ESTOP_SENSE, EMC_SET_POLARITY_ESTOP_WRITE};// EMC_IO aggregate class type declaration#define EMC_IO_INIT_TYPE ((NMLTYPE) 1601)#define EMC_IO_HALT_TYPE ((NMLTYPE) 1602)#define EMC_IO_ABORT_TYPE ((NMLTYPE) 1603)#define EMC_IO_SET_CYCLE_TIME_TYPE ((NMLTYPE) 1604)#define EMC_IO_STAT_TYPE ((NMLTYPE) 1699)// EMC aggregate class type declaration// these are placeholders#define EMC_LOG_TYPE_IO_CMD 21 // command into EMC IO controller#define EMC_LOG_TYPE_TASK_CMD 51 // command into EMC Task controller#define EMC_INIT_TYPE ((NMLTYPE) 1901)#define EMC_HALT_TYPE ((NMLTYPE) 1902)#define EMC_ABORT_TYPE ((NMLTYPE) 1903)#define EMC_STAT_TYPE ((NMLTYPE) 1999)// types for EMC_TASK modeenum EMC_TASK_MODE_ENUM { EMC_TASK_MODE_MANUAL = 1, EMC_TASK_MODE_AUTO = 2, EMC_TASK_MODE_MDI = 3};// types for EMC_TASK stateenum EMC_TASK_STATE_ENUM { EMC_TASK_STATE_ESTOP = 1, EMC_TASK_STATE_ESTOP_RESET = 2, EMC_TASK_STATE_OFF = 3, EMC_TASK_STATE_ON = 4};// types for EMC_TASK execStateenum EMC_TASK_EXEC_ENUM { EMC_TASK_EXEC_ERROR = 1, EMC_TASK_EXEC_DONE = 2, EMC_TASK_EXEC_WAITING_FOR_MOTION = 3, EMC_TASK_EXEC_WAITING_FOR_MOTION_QUEUE = 4, EMC_TASK_EXEC_WAITING_FOR_IO = 5, EMC_TASK_EXEC_WAITING_FOR_PAUSE = 6, EMC_TASK_EXEC_WAITING_FOR_MOTION_AND_IO = 7, EMC_TASK_EXEC_WAITING_FOR_DELAY = 8, EMC_TASK_EXEC_WAITING_FOR_SYSTEM_CMD = 9};// types for EMC_TASK interpStateenum EMC_TASK_INTERP_ENUM { EMC_TASK_INTERP_IDLE = 1, EMC_TASK_INTERP_READING = 2, EMC_TASK_INTERP_PAUSED = 3, EMC_TASK_INTERP_WAITING = 4};// types for motion controlenum EMC_TRAJ_MODE_ENUM { EMC_TRAJ_MODE_FREE = 1, // independent-axis motion, EMC_TRAJ_MODE_COORD = 2, // coordinated-axis motion, EMC_TRAJ_MODE_TELEOP = 3 // velocity based world coordinates motion,};#define EMC_MOTION_TYPE_TRAVERSE 1#define EMC_MOTION_TYPE_FEED 2#define EMC_MOTION_TYPE_ARC 3#define EMC_MOTION_TYPE_TOOLCHANGE 4// --------------// EMC VOCABULARY// --------------// NML formatting functionextern int emcFormat(NMLTYPE type, void *buffer, CMS * cms);// NML Symbol Lookup Functionextern const char *emc_symbol_lookup(long type);#define emcSymbolLookup(a) emc_symbol_lookup(a)// decls for command line args-- mains are responsible for setting these// so that other modules can get cmd line args for ad hoc processingextern int Argc;extern char **Argv;// ------------------------// IMPLEMENTATION FUNCTIONS// ------------------------// implementation functions for EMC error, message types// intended to be implemented in main() file, by writing to NML buffer// print an errorextern int emcOperatorError(int id, const char *fmt, ...);// print general textextern int emcOperatorText(int id, const char *fmt, ...);// print note to operatorextern int emcOperatorDisplay(int id, const char *fmt, ...);// implementation functions for EMC_AXIS typesextern int emcAxisSetAxis(int axis, unsigned char axisType);extern int emcAxisSetUnits(int axis, double units);/*! \todo FIXME - soon to be deleted */extern int emcAxisSetGains(int axis, double p, double i, double d, double ff0, double ff1, double ff2, double bias, double maxError, double deadband);extern int emcAxisSetBacklash(int axis, double backlash);extern int emcAxisSetCycleTime(int axis, double cycleTime);extern int emcAxisSetInterpolationRate(int axis, int rate);extern int emcAxisSetInputScale(int axis, double scale, double offset);extern int emcAxisSetOutputScale(int axis, double scale, double offset);extern int emcAxisSetMinPositionLimit(int axis, double limit);extern int emcAxisSetMaxPositionLimit(int axis, double limit);extern int emcAxisSetMinOutputLimit(int axis, double limit);extern int emcAxisSetMaxOutputLimit(int axis, double limit);extern int emcAxisSetFerror(int axis, double ferror);extern int emcAxisSetMinFerror(int axis, double ferror);/*! \todo FIXME - should be deleted */extern int emcAxisSetStepParams(int axis, double setup_time, double hold_time);extern int emcAxisSetHomingParams(int axis, double home, double offset, double search_vel, double latch_vel, int use_index, int ignore_limits);extern int emcAxisSetMaxVelocity(int axis, double vel);extern int emcAxisSetMaxAcceleration(int axis, double acc);/*! \todo FIXME - polarity messages should be deleted */extern int emcAxisSetEnablePolarity(int axis, int level);extern int emcAxisSetMinLimitSwitchPolarity(int axis, int level);extern int emcAxisSetMaxLimitSwitchPolarity(int axis, int level);extern int emcAxisSetHomeSwitchPolarity(int axis, int level);extern int emcAxisSetHomingPolarity(int axis, int level);extern int emcAxisSetFaultPolarity(int axis, int level);extern int emcAxisInit(int axis);extern int emcAxisHalt(int axis);extern int emcAxisAbort(int axis);extern int emcAxisEnable(int axis);extern int emcAxisDisable(int axis);extern int emcAxisHome(int axis);extern int emcAxisJog(int axis, double vel);extern int emcAxisIncrJog(int axis, double incr, double vel);extern int emcAxisAbsJog(int axis, double pos, double vel);extern int emcAxisActivate(int axis);extern int emcAxisDeactivate(int axis);extern int emcAxisOverrideLimits(int axis);extern int emcAxisSetOutput(int axis, double output);extern int emcAxisLoadComp(int axis, const char *file);extern int emcAxisAlter(int axis, double alter);class EMC_AXIS_STAT; // forward declextern int emcAxisUpdate(EMC_AXIS_STAT stat[], int numAxes);// implementation functions for EMC_TRAJ typesextern int emcTrajSetAxes(int axes);extern int emcTrajSetUnits(double linearUnits, double angularUnits);extern int emcTrajSetCycleTime(double cycleTime);extern int emcTrajSetMode(int axes);extern int emcTrajSetTeleopVector(EmcPose vel);extern int emcTrajSetVelocity(double vel, double ini_maxvel);extern int emcTrajSetAcceleration(double acc);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -