2 数控系统中关键数控软件部分的实现
2.1 数控系统中G代码编译方式
基于对几种刀具补偿方式的比较,在本系统采用了C型刀具补偿,这种刀具补偿方式的实现是要先计算出下一条轨迹控制指令伺服电机的信息,才能够将本段程序的加工轨迹确定下来,所以这就对系统控制核心芯片提出了较高的性能要求。在本系统中采用了三星的S3C241O作为系统的控制核心,采用了ARM9TDMI内核的16/32位RISC处理器。经过测试显示,如果插补的周期为4 ms,那么完成了一次插补运算后是有充分的时间进行译码和刀具补偿的任务的。所以,在综合考虑之下,本系统采用解释的方式进行译码是可行的。
2.2 G代码处理
数控系统中的零件加工程序是由许多行的G代码、M代码等构成,其中每行程序都表示一段刀具相对于零件几何外形轮廓的加工轨迹,和加工当中的一些辅助功能的操作,辅助功能诸如,停车,换刀等,可以使零件顺利加工成形。数控程序通常具有以下典型的格式:
Nxxxx Gxx Xxxx Yxxx Zxxx Mxx Sxx Fxx Txxxx
说明:N是每行程序行号,G表示为准备功能,X、Y、Z为机床的运动坐标值,M、S、F、T表示加工当中的工艺参数(主轴转速、进给速度、刀具号等)。数控程序是由这样一组字地址组成的指令集,它包含加工时所需的一切信息,提供了数控机床实际加工零件时所需的一切信息。
数控加工指令代码解释功能模块首先将G代码一行行读入,先进行词法分析,做标识符的转化和非法指令字的判别,将其结果为语法分析的输入流。语法分析模块的解决思想借鉴了自底向上的分析方法,对词法分析的输入进行规约,然后查找规则表,完成语法分析。然后进行逻辑结构分析并从中提取加工信息存入Sqlite数据库,经刀具补偿处理后送入运动控制器执行。对于出错处理模块而言,在解释过程中遇到错误时,并不能因此停止译码工作,而希望系统记录错误位置及错误类型,继续进行解释工作,直到程序解释完成后再打印所有错误信息,以便进行错误处理。本系统错误处理的实现也遵循了这条原则,系统错误处理方面只提供错误信息打印和错误位置回溯等功能,而把对错误更正工作留给用户自行完成。
2.3 人机图形交互功能的实现
在完成了译码程序编写之后,采用在QT4环境下,通过信号和槽机制,建立译码按键的交互功能,从而完成整个数控代码解释器的设计。这样比采用其他工具使用回调函数创建用户交互,更简单、清晰、容易理解。所谓信号和槽都是类成员函数,使用这种新方法只需要一行代码就能够将用户事件和程序事件连接起来。信号需要自己做定义,实现起来相对容易,也可以直接采用用Qt中带有的信号。每当发射按钮的clicked( )信号时,槽函数将被执行,调用数控代码解释器程序进行译码工作。
Connect(MyButton, SLGNAL(clicked() ),this, SLOT(MyCompileSlst0)
3 嵌入式系统集成与测试
在嵌入式数控系统的最终测试中,通过设计功能需求覆盖比较完整的测试用例,主要针对数控译码模块和刀具补偿模块两方面的准确性,设计的时候将主要的刀补类型都覆盖上,包括直线转接直线、直线转接圆弧,圆弧转接直线和圆弧转接圆弧四种形式,每种情况中还考虑左刀补(G41)和右刀补(G42),另外还考虑一些在直线与圆弧转接中的一些特殊情况,如相切转接和垂直转接。主要的测试用例如图3。仿真结果显示如图4所示。
在以上的软件测试中采用的是功能测试的方法,通过设计的有针对性的测试用例,进行软件仿真,对数控代码编译模块和刀具补偿模块进行了覆盖性测试,具有可行性。
通过测试也发现了一些功能方面的不足和缺陷,说明软件功能有待进一步完善,同时也在一定程度上,验证了以上功能模块的实用性。
4 结论
本文实现了一种以ARM9为嵌入式硬件平台的数控系统设计,同时对嵌入式数控系统软件关键部分的实现进行的说明,包括G代码的处理,以及在QT4的开发环境下实现人机交互图形界面,相比基于PC的传统的数控系统具有更好的独立性和自主性。并通过对实际加工事例,本系统进行测试证明,能够实现对数控机床各种指令和功能的正确解释。