在开环控制的经济型数控系统中,经常采用PC作为上位机来编制数控程序和发送控制命令,其数据通过串口通信传至单片机,单片机作为下位机读取PC发过来的各种插补数据和指令,以驱动电机。数控程序一般由G代码、M指令、F、S、T等功能组成,而在计算机中,字符大多采用ASCII编码方案和EBCDIC编码方案,如果直接将这种编码传到单片机,由单片机来识别和译码,势必会增加性能有限的单片机的负担。此外NC程序有较为固定的编程格式,基于此,可以按照NC编程的规范来设计一种方案,将NC代码在PC机上转化为以帧(不同于异步通信中的“帧”概念)为单位的二进制编码,每帧数据的格式参照NC程序格式来设计。这样,在PC机上做译码工作相对方便和容易,对单片机而言也有两个明显的优点:一是容易识别;二是方便处理,提高了效率。单片机按照帧格式,顺序提取相关数据。进行计算和控制。
1 译码方案设计及实现
译码的基本思路是根据NC代码的特点,将其进行分类处理,提取有用的信息,将这些信息按照设计的帧格式组成帧数据,发送给下位机,如图1所示。
1.1 数控代码分析
NC指令有200余条,为了数据处理的方便,可以根据其特点进行简单的归类,从处理方式上可以分为直接控制指令和间接控制指令。
上位机要发送的是控制信息。而NC程序中有许多指令不属于直接控制的指令,它们仅仅是一些中间(辅助)信息,并不需要发送给下位机。因此,根据NC指令的特点,将其按处理方式划分为直接控制指令和间接控制指令两类。如COO、G01、G02、C03等要直接处理,属于直接控制指令;而G90、G91、G92、G42、G41、G42等则要转化处理,属于间接控制指令。例如G90是表示绝对尺寸,G91表示增量尺寸,由于下位机统一采用增量尺寸来进行控制,所以在PC上对G90的处理是:1)提取绝对尺寸;2)计算增量尺寸;3)保存增量尺寸(用于发送的数据)。而对G91的处理是:直接保存增量尺寸。刀补指令要加上偏置量。
一般直接控制指令是需要发送给单片机的,而间接控制指令是需要先转化处理的,不在直接发送的数据之列。以表1为例,将常用的数控代码按直接控制和间接控制分类,并说明了对指令的处理。
对直接控制的指令又可细分为三类。
1)G功能和M代码:如G00、G01、G02、G03、M03、M04、M05、M07、M08、M10等;
2)坐标类:X、Z、R(平面两轴插补,本文以数控车两轴为例,其余类推);
3)辅助功能类:主轴(s)、进给(F)、刀具(T)。