图 2 共享存储器结构 CNC 系统硬件结构
(一)
译码(解释)
译码程序的主要功能是将文本格式(ASCII 码)表达的零件加工程序,以程序段为单位
转换成后续程序所要求的数据结构(格式)。该数据结构用来描述一个程序段解释后的数
据信息。包括:X、Y、Z …
、 等坐标值;进给速度;主轴转速;G 代码;M 代码;刀具号;
子程序处理和循环调用处理等数据或标志的存放顺序和格式。一个译码缓冲区数据结构的
例子如下:
Struct PROG_BUFFER
Char buf_state; //指定缓冲区的状态,0 表示缓冲区为空;1 表示缓冲区准备好。
int block_num; //以 BCD 码的形式存放本段的程序段号。
double COOD[20]; //以二进制的形式存放 X、Y、Z、I、J、K、R、A、B 等尺寸指令的
数值,单位为 um。
int F,S; //以二进制的形式存放进给速度 F(mm/min)和主轴转速 S(r/min)。
char G0; //以标志形式存放 G 指令。例如:
D7 D6 D5 D4 D3 D2 D1 D0
G00 0:无该指令;1:有该指令。
G01G02G03G33;
G90/G91 0:G90; 1: G91
char G1; //根据 G 指令的个数设置字符变量的个数。
char M0; //以标志的形式存放 M 指令。存放形式同 G 代码。
char M1; //根据 M 指令的个数设置字符变量的个数。
char T; //以 BCD 码的形式存放本段换刀的刀具号。
Char D; //以 BCD 码的形式存放刀具补偿的刀具半径值。
在程序中一般有由若干个由这种结构组成的程序缓冲区组,当前程序段译码后的数据信
息存入缓冲区组中空闲的一个。后续程序从该缓冲区中获取数据信息进行工作。
下面以一个程序段为例来简要说明译码过程:
N06 G90 G01 X200 Y300 F200 ;
译码程序以程序段为单位进行解释,解释中,从零件程序存储区中逐一读出指