文/梁子财
众所周知,数控机床作为制造业领域的工作母机,它在国民生产中占据着非常高的地位。一个国家的数控机床市场生产产量的大小、质量水平的高低,是衡量其制造业水平、科技发展水平和经济发展水平的重要指标。数控G代码是机床加工零件的依据,因此G代码的编写质量直接影响着机床加工质量。
数控加工G代码蕴含着零件加工的几何形状、尺寸、工艺要求等繁杂信息,无论是手动编程还是自动编程,都容易出现意料之外的错误。如果忽略这些错误,轻者造成使加工失败,造成材料浪费,重则损坏机床,造成人员伤亡。因此数控加工G代码必须经过验证才可进行实际生产。
笔者利用Qt平台开发了一款针对数控加工G代码程序的专用编辑器,该编辑器能够读取已有G代码程序进行编辑或者新建G代码程序,同时编辑器内嵌G代码程序译码模块可以检测G代码程序的错误并标记,方便用户对数控加工G代码进行编辑,从而减少技术人员的工作量与提高G代码程序的准确性。
图1:编辑器的系统结构图
图2:编辑器的软件界面
数控加工G代码程序专用编辑器主要由操作模块和译码模块两部分组成,如图1所示。通过操作模块和译码模块的有机组合与协作,从而实现对数控加工G代码的编辑与校验。
操作模块:操作模块主要有两个功能:显示功能和操作功能。显示功能实现G代码的显示、行号显示、命令符与数字的对比显示;操作功能则是满足用户对G代码的复制、粘贴、剪切等常用编辑操作。
译码模块;译码模块主要有两个功能:解析程序数据和分析程序错误。解析程序数据功能实现对加工G代码的内容解析,将命令符与数据分别提取出来;分析程序功能则是对G代码进行词法语法分析,并定位错误,提示用户进行修正。
操作模块主要是通过对Qt的QPlainTextEdit类进行继承实现自定义功能的设计。编辑器的软件界面如图2所示。通过在窗体左定义一个QWidget类负责行号的显示,背景颜色为深蓝色,并将行号区域固定在左侧;右侧背景白色的区域为编辑与显示区域,负责显示G代码的具体内容。显示区域采用两种颜色来区分显示命令符合与数字普通字符。
通过重载paintEvent(QPaintEvent *event)函数可以实现不同类型字符的显示样式,包括字体大小粗细、颜色等。部分代码如下:
数控加工G代码的译码将数控加工G代码文件进行逐行扫描与校核。在这个过程中首先要对每行代码中的注释内容进行屏蔽,之后再对每行代码的有效信息进行解析。因此在译码工作中比较重要的有以下4部分:
去掉注释内容。数控加工G代码中有部分文本是注释内容,这些注释内容并不蕴含有效加工数据,因此无需进行后续处理,因此需要提前屏蔽掉。
词法错误检查。根据数控加工G代码的编程标准,判别G代码中的字符是否满足标准要求。实现的思路为:首先建立代码关键字符集,然后逐个读入G代码中的字符,判断它是否属于关键字符集。如果不在则说明程序使用了系统不能识别的指令,给出错误信息,指出错误所在行;如果该字符属于字符集则继续读入下一个字符。
语法错误检查。将数控G代码的单词按各类语法规则进行分析,并进行语句的语法正确性和不同语句之间的相容性检查。归纳起来,数控代码中要检查的语法错误主要有指令搭配错误、指令顺序错误和指令格式错误。
字符分类。经过词法错误检查和语法错误检查之后,需要对G代码进行信息分拣与字符分类,将命令字符和其余字符分类存储,后续显示时加以区分设置显示格式。
G代码文件的译码工作流程如图3所示。
图3:译码工作流程
本文基于Qt平台开发了一款专用于数控加工G代码程序编辑器,该编辑器能够读取已有G代码程序进行编辑或者新建G代码程序,同时编辑器内嵌G代码程序译码模块可以检测G代码程序的错误并标记,方便用户对数控加工G代码进行编辑,从而减少技术人员的工作量与提高G代码程序的准确性。