1.2 帧格式设计
根据上文可以知道,NC程序中指令、数据虽然很多,但不是每个都需要传送,相反每次都只有很少的几类指令和数据需通过串口传送到下位机。三类的直接控制指令是必须要发送的,NC程序最终都要转化为这三类数据,所以设计帧格式如表2,说明如下。
1)G指令和M代码:G指令和M代码各100条,分别用一个字节来表达G或M功能;
2)坐标类:X、Z、R,这些坐标均用三个字节表示,可表示的增量坐标范围为:一2”一+223(一8 131一+8 m);
3)主轴、进给、刀具:S、F、T用单字节表示,可以有2S=256种不同的值。
4)在帧的控制数据之前,设置一个帧头,占一个字节,以作信息位。
1.2.1 设置帧头
NC指令中许多是模态代码,即在下一段程序中可能不出现上段程序中相同的指令,为方便处理,用帧头的8个位来标识帧中各项数据的有无,如表3。帧头中每位对应帧格式中的直接控制指令的数据类型,用于标识本帧数据中是否存在该项,若所标识的对象数据存在并要发送,则标识位置“1”,否则清“0”。另外,如果下段NC程序段中G、M、X、Z、I、K、F、S、T的数据没有改变,则可认为该帧中不存在对应项(无变化不发送),所以帧的长度是不固定的,帧的长度可以从帧头得知,帧字节最长为15个。
1.2.2 G、M指令编码
G指令和M指令各100条,而一个字节8位能表示256种情况,所以分别用一个字节来表示G指令和M代码。直接用二进制数字对应字地址G和M的地址值。如G90对应编码为0101 1010。
1.2.3 实例
例:对如下数控代码进行转换:
G00,G90,G42,X35000,Z160000,F50,S07,T33,M03,LF
该行代码中带下画线的指令为直接控制指令,地址值是要发送的数据,其余是间接控制指令,需要在PC机中先行处理,其中G90为绝对坐标编程,计算时要转化为相对增量,假设刀具前一位置在原点,增量即为35 000和160 000;G42是右刀补,假设刀具半径为5000个单位,则实际上X增量为35000+5 000=40 000,Z增量为160 000 4-5 000=165 000。
1)确定要发送的数据:G、M、X、Z、F、S、T;
2)确定帧头:0XF7(1111 0111 B),这就是帧的首字节;
3)第二、三字节为G:OX00(coo);M:0X03(M03);
4)第四、五、六字节为X:OX00 0X9c 0X40(40 000的二进制码);
5)第七、八、九字节为Z:0X02 0X84 0X88(165 000的二进制码);
6)第十、十一、十二字节为FST:0X32 OX07 0X21。本行代码成帧后为:F7 00 03 00 9e 40 02 8488 32 07 21共十二字节。
2 译码在数控技术中的应用
根据设计的译码方案,在PC机中使用VC++等开发工具来实现,将每段NC程序段转化为数据帧,利用串口发送给以单片机作主控芯片的数控系统,单片机接收到数据后,根据帧头,判别各项数据的有无,并取出数据放到相应的存储单元中,做插补计算和控制的源数据用。在通信之前,先做好通信协议,规定握手协议、校验方式、波特率等。采用数据校验,可增加数据传输的可靠性,但也因为采用校验,增加了帧的长度,本文未讨论数据校验,有关校验的问题可参考相关文献。数据的发送以帧为单位采用握手方式一帧一帧进行,保证译码数据准确传到单片机。
3 总结
本文阐述了一种NC代码转化通信编码的译码方案,能有效地将数控程序转化到固定帧格式的二进制数据,易于单片机的识别和处理。单片机接收到数据后,根据协议规则,反向处理,很容易得到插补的类型、坐标、速度等数据,从而实现插补。本文创新之处在于摒弃传统的编码方法,根据NC自身特点,设计专门的译码方案,能提高数控系统对数控程序编译和解释的效率。