⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rs274ngc.hh

📁 数控系统中的解释器源代码
💻 HH
📖 第 1 页 / 共 2 页
字号:
#ifndef RS274NGC_HH#define RS274NGC_HH/*  rs274ngc.hh  Declarations for the rs274abc translator.*//**********************//* INCLUDE DIRECTIVES *//**********************/#include <stdio.h>#include "canon.hh"#ifdef LATHE_FLAG#include "agl.hh"#include <string.h>#endif/**********************//*   COMPILER MACROS  *//**********************/#define AND              &&#define IS               ==#define ISNT             !=#define MAX(x, y)        ((x) > (y) ? (x) : (y))#define NOT              !#define OR               ||#define SET_TO           =#ifndef TRUE#define TRUE             1#endif#ifndef FALSE#define FALSE            0#endif#define RS274NGC_TEXT_SIZE 256/* numerical constants */#define TOLERANCE_INCH 0.0005#define TOLERANCE_MM 0.005#define TOLERANCE_CONCAVE_CORNER 0.01 /* angle threshold for concavity for                                         cutter compensation, in radians */#define TINY 1e-12 /* for arc_data_r */#define UNKNOWN 1e-20#define TWO_PI  6.2831853071795864#ifndef PI#define PI      3.1415926535897932#endif#ifndef PI2#define PI2     1.5707963267948966#endif#define  CYCLE_RETURN_DISTANCE 3// array sizes#define RS274NGC_ACTIVE_G_CODES 15#define RS274NGC_ACTIVE_M_CODES 11#define RS274NGC_ACTIVE_SETTINGS 3// name of parameter file for saving/restoring interpreter variables#define RS274NGC_PARAMETER_FILE_NAME_DEFAULT "ini/GJMill.var"#define RS274NGC_TOOL_FILE_NAME_DEFAULT "ini/GJMill.tbl"#define RS274NGC_PARAMETER_FILE_BACKUP_SUFFIX ".bak"#define RS274NGC_MCDOE_FILE_NAME "ini/GJMill.mc"#define RS274NGC_REF_FILE_NAME "ini/GJMill.ref"// max number of m codes on one line#define MAX_EMS  4// English - Metric conversion (long number keeps error buildup down)#define MM_PER_INCH 25.4#define INCH_PER_MM 0.039370078740157477// on-off switch settings#define OFF 0#define ON 1// feed_mode#define UNITS_PER_MINUTE 0#define INVERSE_TIME 1#define UNITS_PER_REV 2// cutter radius compensation mode, OFF already defined to 0// not using CANON_SIDE since interpreter handles cutter radius comp#define RIGHT 1#define LEFT 2// number of parameters in parameter table#define RS274NGC_MAX_PARAMETERS 5400// unary operations// These are not enums because the "&" operator is used in// reading the operation names and is illegal with an enum#define ABS 1#define ACOS 2#define ASIN 3#define ATAN 4#define COS 5#define EXP 6#define FIX 7#define FUP 8#define LN 9#define ROUND 10#define SIN 11#define SQRT 12#define TAN 13// binary operations#define NO_OPERATION 0#define DIVIDED_BY 1#define MODULO 2#define POWER 3#define TIMES 4#define AND2 5#define EXCLUSIVE_OR 6#define MINUS 7#define NON_EXCLUSIVE_OR 8#define PLUS 9#define RIGHT_BRACKET 10/* relational operators (are binary operators)*/#define LT 11#define EQ 12#define NE 13#define LE 14#define GE 15#define GT 16#define RELATIONAL_OP_FIRST 11#define RELATIONAL_OP_LAST  16// O code#define O_none      0#define O_sub       1#define O_endsub    2#define O_call      3#define O_do        4#define O_while     5#define O_if        6#define O_elseif    7#define O_else      8#define O_endif     9#define O_break    10#define O_continue 11#define O_endwhile 12#define O_return   13// G Codes are symbolic to be dialect-independent in source code#define G_0      0#define G_1     10#define G_2     20#define G_3     30#define G_4     40#define G_9     90#define G_10   100#define G_17   170#define G_18   180#define G_19   190#define G_20   200#define G_21   210#define G_28   280#define G_30   300#define G_33   330                    /*add by wp for threading*/#define G_38_2 382#define G_40   400#define G_41   410#define G_42   420#define G_43   430#define G_49   490#define G_50   500#define G_51   510#define G_53   530#define G_54   540#define G_55   550#define G_56   560#define G_57   570#define G_58   580#define G_59   590#define G_59_1 591#define G_59_2 592#define G_59_3 593#define G_61   610#define G_61_1 611#define G_64   640#define G_68   680#define G_69   690#define G_70   700#define G_71   710#define G_72   720#define G_73   730#define G_74   740#define G_76   760#define G_80   800#define G_81   810#define G_82   820#define G_83   830#define G_84   840#define G_85   850#define G_86   860#define G_87   870#define G_88   880#define G_89   890#define G_90   900#define G_91   910#define G_92   920#define G_92_1 921#define G_92_2 922#define G_92_3 923#define G_93   930#define G_94   940#define G_95   950#define G_96   960#define G_97   970#define G_98   980#define G_99   990//added by wpin#define G_11   110#define G_12   120#define G_13   130#define G_14   140//added by wp#define G_22   220   			//call sub#define G_24   240   			//sub end#define G_23   230       		/**/#define G_25   250                   	/**/#define G_26   260      			 /**/#define  DEFAULT_PATH    "programs/"#define ERM(error_code) if (1) {                    \  _setup.stack_index SET_TO 0;                      \  strcpy(_setup.stack[_setup.stack_index++], name); \  _setup.stack[_setup.stack_index][0] SET_TO 0;     \  return error_code;                                \  } else#define ERP(error_code) if (_setup.stack_index < 49) { \  strcpy(_setup.stack[_setup.stack_index++], name);    \  _setup.stack[_setup.stack_index][0] SET_TO 0;        \  return error_code;                                   \  } else return error_code#define CHK(bad, error_code) if (bad) {             \  _setup.stack_index SET_TO 0;                      \  strcpy(_setup.stack[_setup.stack_index++], name); \  _setup.stack[_setup.stack_index][0] SET_TO 0;     \  return error_code;                                \  } else#define CHP(try_this)                                      \  if ((status SET_TO (try_this)) ISNT RS274NGC_OK) {       \     if (_setup.stack_index < 49)                          \        {strcpy(_setup.stack[_setup.stack_index++], name); \         _setup.stack[_setup.stack_index][0] SET_TO 0;     \         return status;}                                   \     else {return status;}                                 \  } else//added by wpin#define GET_MCODE_SORT(params)                                      \          (((int)(params))&0x3)                                 #define GET_MCODE_GROUP(params)                                      \          (((int)(params))&0x3C)/4   #define GET_MCODE_RESET_FLAG(params)                                      \          (((int)(params)&0x40)? 1:0)                                 #define GET_MCODE_HOLD_FLAG(params)                                      \          (((int)(params)&0x80)? 1: 0)#define GET_MCODE_DISP_FLAG(params)                                      \          (((int)(params)&0x100)? 1: 0)#define GET_MCODE_MODE_FLAG(params)                                      \          (((int)(params)&0x200)? 1: 0)#define GET_MCODE_STOP_FLAG(params)                                      \          (((int)(params)&0x400)? 1:0) #define MIN_USERVAR_INT 1#define MAX_USERVAR_INT 100#define NUMS_USERVAR_INT 100#define MIN_USERVAR_DOUBLE 101#define MAX_USERVAR_DOUBLE 200#define NUMS_USERVAR_DOUBLE 100#define MIN_MCODE 	1000#define MAX_MCODE 	1099#define NUMS_MCODE 	100#define MIN_REF_G28  1001#define MAX_REF_G28 1006#define MIN_REF_G30  1011#define MAX_REF_G30  1016#define MIN_REF_G92  1021#define MAX_REF_G92  1026#define MIN_PROBE_DATA 201#define MAX_PROBE_DATA  206#define DEFAULT_ORIGIN  1100#define MIN_ORIGIN	1101#define NUMS_USER_COORD  9#define SYSVAR_UAS		1201#define SYSVAR_RAP		1202#define SYSVAR_USO		1203#define SYSVAR_USB		1204#define SYSVAR_JOG_INC  1205#define SYSVAR_SHAPE_ERROR  1206#define PARAM_TYPE_NO_DEFINE  0#define PARAM_TYPE_USER_INT 1#define PARAM_TYPE_USER_DOUBLE 2//#define PARAM_TYPE_MCODE_DEFINE 3#define PARAM_TYPE_REF_G28 3#define PARAM_TYPE_REF_G30 4#define PARAM_TYPE_REF_G92 5#define PARAM_TYPE_PROBE_DATA 6#define PARAM_TYPE_DEF_ORG 7#define PARAM_TYPE_ORG_POS 8//#define PARAM_TYPE_COMP 10#define PARAM_TYPE_SYSVAR 9// Subroutine parameters#define RS274NGC_SUB_PARAMS 30#define RS274NGC_OWORD_LABELS 1000#define RS274NGC_SUB_ROUTINE_LEVELS 10#define RS274NGC_FIRST_SUBROUTINE_PARAM 1/* INI file defaults */#define AXIS_COUNT_DEFAULT 6  /* Default active axes.                                  Normally from the inifile [TRAJ][AXES]*/ // RS274NGC file delimiter requirements ON/OFF// ON(1)  File must start and end with '%' marks, or end with M02/M30// OFF(0) File not required to start or end with anything in particular#define RS274NGC_FILE_DELIMITERS_DEFAULT 0// Read full text of comments ON/OFF// ON(1)  Comments will be parsed into the comment[]// OFF(0) Comments will not be parsed#define READ_FULL_COMMENT_DEFAULT 1// Keep current coordinate system in effect after M02/M30// ON(1)  Retains current coordinate system // OFF(0) Reverts to default coordinate system#define KEEP_CURRENT_COORDINATE_SYSTEM_AFTER_M02_DEFAULT 0// Default coordinate sytem after M02/M30 program stop.// Valid values are 1-9, with 1 being G54, 9 being G59.3#define M02_COORDINATE_SYSTEM_DEFAULT 1// Keep G92 axis offsets in effect after M02/M30// ON(1)  Retains G92 axis offsets in effect// OFF(0) Turns off G92 axis offsets, as in G92_2#define KEEP_G92_OFFSETS_AFTER_M02_DEFAULT 0// Keep G92 axis offsets in effect after Work Coordinate System change// (G54-G59.3). // ON(1)  Retains G92 axis offsets in effect // OFF(0) Turns off G92 axis offsets, as in G92_2#define KEEP_G92_OFFSETS_AFTER_WCS_CHANGE_DEFAULT 0// G83 cycle, how far above hole bottom for rapid return, (inch units).#define G83_RAPID_DELTA_DEFAULT 0.010// G83.1 cycle, incremental retract distance, (inch units).#define G83_1_DELTA_DEFAULT 0.200// Tolerance setting for logical equality #define TOLERANCE_EQUAL 0.0001 // Tolerance setting (inch) for G02/G03 arc endpoints #define TOLERANCE_INCH_DEFAULT 0.0005// Tolerance setting (mm) for G02/G03 arc endpoints#define TOLERANCE_MM_DEFAULT 0.005// Angle threshold for concavity for cutter compensation,// in radians. ('inside' corners)#define TOLERANCE_CONCAVE_CORNER_DEFAULT 0.05 /**********************//*      TYPEDEFS      *//**********************//* distance_mode */typedef enum {MODE_ABSOLUTE, MODE_INCREMENTAL} DISTANCE_MODE;/* retract_mode for cycles */typedef enum {R_PLANE, OLD_Z} RETRACT_MODE;typedef unsigned char   BYTE;typedef int ON_OFF;typedef struct block_struct {#ifdef AA  ON_OFF   a_flag;  double   a_number;#endif#ifdef BB  ON_OFF   b_flag;  double   b_number;#endif#ifdef CC  ON_OFF   c_flag;  double   c_number;#endif  char     comment[256];  int      comment_len;  // length of comment string, used for ';' comment type  int      d_number;  int       e_number;  double   f_number;  int      g_modes[20];  int      h_number;  ON_OFF   i_flag;  double   i_number;  ON_OFF   j_flag;  double   j_number;  ON_OFF   k_flag;  double   k_number;  int      l_number;  int      line_number;  int      motion_to_be;  int      m_count;  int      m_modes[10];  ON_OFF   p_flag;  double   p_number;  double   q_number;  ON_OFF   r_flag;  double   r_number;  double   s_number;  int      t_number;  ON_OFF   x_flag;  double   x_number;  ON_OFF   y_flag;  double   y_number;  ON_OFF   z_flag;  double   z_number;  ON_OFF   u_flag;  double   u_number;  ON_OFF   v_flag;  double   v_number;  ON_OFF   w_flag;  double   w_number;  //add by wp char e_string[256]; DISTANCE_MODE block_distance_mode;    //!!!KL control (o-word) stuff  long     offset;   // start of line in file  int      o_type;  int      o_number;  double   params[RS274NGC_SUB_PARAMS];  //end} block;typedef block * block_pointer;typedef struct context_struct {  long position;       // location (ftell) in file  int sequence_number; // location (line number) in file  double saved_params[RS274NGC_SUB_PARAMS];}context;typedef struct offset_struct {  int o_word;  int type;  long offset;  int sequence_number;}offset;/*The current_x, current_y, and current_z are the location of the toolin the current coordinate system. current_x and current_y differ fromprogram_x and program_y when cutter radius compensation is on.current_z is the position of the tool tip in program coordinates whentool length compensation is using the actual tool length; it is theposition of the spindle when tool length is zero.In a setup, the axis_offset values are set by g92 and the origin_offsetvalues are set by g54 - g59.3. The net origin offset uses both valuesand is not represented here*/typedef struct{	double		Feedback;	double		Measure;} CompPoint;typedef struct{	long     	       file_position;    	long 		sequence_number;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -