嵌入式数控系统G代码解释器的设计与实现

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

IT技术
嵌入式数控系统G代码解释器的设计与实现
吴运金
(中国船舶重工集团公司第七一。

所湖北宜昌443003)
摘要:本文在基于ARⅥ+DsP的一络化嵌入式数控系统的基础上,设计出一种流水线处理方式的G代码解释方法,以流水线的方式对加工代码进行稿译一解释,减少指令执行的时同,增强了嵌入式处理器的G代码处理能力。

霞G代码解释器在ADsl.2墙译环境下调试通过.移植在s3c44Bo芯片中,运行效秉良好。

关键词:数控秉统代码解释器漉水线
中图分类号:TP273.5文献标识码:A文章编号:1674一098x(2008)Il(b)一0037一02
1引言
嵌入式系统是未来数控及运动控制产品发展的方向,它采用“量体裁衣”方式把所需功能嵌入到应用系统中,可克服基于通用PC机数控系统结构在体积功耗方面的缺陷,它具有强大的外围资源和通信功能.可运行实时多任务Lmux或者Wmdows操作系统,软件开发和移植容易,是当前数控系统精密化,网络化、智能化和集成化的发展方向…。

本文提出的嵌入式数控系统的中央数控单元不是工业计算机或者PC机系统,而是采用ARM+DSP的结构,具有运算能力强、成本低的特点。

嵌入式数控系统的其他单元,如伺服控制单元、PLc单元、通信单元.显示单元、数据键入单元,也在嵌入式系统的基础上搭建。

完整的嵌入式数控系统包括以下模块:人机接口模块、网络接口模块,系统管理模块、仿真显示模块、G代码编译模块、插补模块、刀具补偿模块.伺服控制模块、信号检测和故障诊断
图1编译扫描流程模块等。

在嵌入式数控系统中,G代码解释模
块是核心模块。

用户输入G代码后,由代
码解释器将代码翻译成数控系统能控制各
个电机的指令,包括G指令、M指令、S指
令和T指令等。

当执行G指令时,系统调
用插补算法模块、补偿模块和位置控制模
块,直接控制进给电机的运动。

G代码程
序中的M指令、s指令和T指令等属于附
加指令,是数控系统实施外部操作的重要
功能,如控制主轴电机的起停、冷却液的
开关、夹具的松夹、润滑的工作、防护门
的开关等。

当G代码解释器执行到附加指
令时.它把控制代码送到PLc,由PLC译
码辨别数控程序的操作要求,通过PLC程
序控制外部电路执行12J。

G代码解释器是
在ARM芯片中用软件实现的。

2嵌入式系统G代码解释器的实现方法
G代码解释器的实现一般有3种方法,
即解释法、编译法和编译解释法。

解释法
对零件加工程序逐条进行预解释、插补,
控制,即在插补模块定时中断进行插补的
同时解释程序预解释下一条程序,当本条
程序语句插补完成后,再将下条程序语句
预解释的结果传递给插补模块。

这种方法
类似BASIC程序的执行,各模块间的控制
是顺序的,加工效率低,易形成停顿与过
切。

编译法预先对需要加工的零件程序全
部编译后,将结果放入缓冲区中,当开始加
工时,直接启动插补中断程序,从缓冲区中
取出编译好的零件程序进行计算并控制程
序加工。

这种方法加工速度快,但需要较
大的内存,类似C语言程序的执行。

编译
解释法在文献131中提出,它并不像一般的
编译系统那样直接生成可执行的二进制目
标代码,而是产生了一种中间代码之后再
由解释程序解释执行。

编译程序第一次扫
描加工代码时,主要进行格式、词法和语
法分析,不处理相关的数据结构。

如果加
工程序没有词法和语法上的错误,则进行
第二次扫描,即进行译码和数据处理。


译解释法充分考虑了系统资源的配置,适
合大量程序加工和复杂的数据处理,但需
要占用系统较多资源。

在分析3种G代码解释嚣的基础上,本
文提出的一种流水线处理方式的G代码解
释方法,是以流水线的方式对加工代码进
行编译一解释,减少指令执行的时间,从而
增强了嵌入式处理器的处理能力…。

这样,
代码程序一段段读入,在“前置处理一数
据转换一后置处理”过程中,数据缓冲区
内不断得到处理,最后形成插补程序可以
识别的数据结构,象一条流水线一样进行
工作。

在加工零件时,程序输入、译码、插
补和位置控制4个过程在处理时间上是重
叠的,同时在译码过程中,各个子过程在处
理时间上也是重叠的。

G代码解释器的工
作过程分为4个子过程:程序读入、语法检
查,解释和刀具补偿。

图l给出了编译扫
一描过程的流程。

在考虑G代码程序的大小时,G代码程
序是动态分配空间的,达是因为各个G代
码程序的代码量差异很大,大程序可能达
到几兆甚至是几十兆字节的空间,而有些
小程序则只有几十个字节而已。

如果按固
定大小分配内存,为了满足大程序的需要,
会浪费大量的空间,并且不能容纳大于所
定空间的程序。

对于控制信息,则分配固
定的宅间.其原因在于,控制结构一般不会
出现在机器生成的程序中,而手工写的程
序一般不会很大,其中的控制语句就不会
太多;为它分配固定大小的空间,可以方便
程序处理,减少内存中的碎片,加快程序执
行速度。

为了克服传统数控系统程序组织
方式的缺陷,采用了以下结构:每个文件可
以包含多个程序,每个程序由多个程序块
组成,程序在缓冲区中随机存放。

程序被
执行前.只需要将部分需要解释的代码下
载到内存缓冲区中,因为对嵌入式数控系
统而言,其存储空间有限,不允许全文下
载,所以这里采用的策略是边传送边加工。

在嵌入式数控系统中,ARM中移植了
U—cosll实时多任务操作系统,在设计G代
码结实程序时,将上面4个过程定义成4个
任务,各任务之间通过邮箱进行消息传递,科技创新导报ScienceandTechnologyInnovationHeraId37
万方数据
一旦CPU有空隙时间,译码任务即被激活,依据不同的状态向各个任务发送消息,执行对缓冲区的处理。

当G代码解释器工作时,解释任务运行,根据实际情况分配数据缓冲区存放编译的中间结果。

在译码任务启动的日’f候开辟译码缓冲区,在任务结束时释放,在整个泽码缓冲区生命期间,数据不断的写入、修改、读出和清除。

缓冲区是预先分配的,无须动态分配。

在本系统中,设置了6个缓冲区形成链表结构,如图2所示。

在每个缓冲区设置一个标志位BufFlag,当BufFIag为0时表示缓冲区为空I当BufFlag为1时表示缓冲区I{l的数据需要进行一些数据处理,如刀具补偿、速度计算等l当BufFlag为2时,表示缓冲区中的内容已完成数据处理,可以传递给插补程序j空制电机的运动。

INT8Uch—no#//通道号
structtask-ctrl—datal//解释任务控制缓冲区
structnon—mod‘//非模态指令状态及控制缓冲区
structppi—modf//模态指令状态及控制缓冲区
INT32Uwork—or谵maLbu‘【lO】I//工作台零点备份
charprogrnm_b凹MAX—LINEBUFlI//零件程序读人缓冲区
}BufData,・PbufDatal
u11ion{
structmod—stackl//模态指令堆栈
structppi_bpl//插补数据断点保存缓冲区}UnionV,・PunionV;
在设计G代码解释器时,用子程序实
图2缓冲区链表结构
3关键数据结构
嵌入式数控系统的微处理器采用三星公司的具有ARM7TDMI内核的S3C4480芯片,同时移植了U—cosll操作系统进行实时多任务管理,因此首先需要定义和处理器无关的数据类型:
typedefu工1s咖edcharBOOLEAN}/・逻辑型+/
typedefunsignedcharINT8U,
/・无符号8位整型・/
typedefs蟾nedcharINT8Sl/‘有符号8位整型+/
typeI耐unsign酣intINTl6UI/・无符号16位整型・/
type(1efs咖edmtINTl6sl/・有符号16位整型¥/
typedefunsignedlongINT32U;/・无符号32位整型・/
typedefs姆1edlongINT32S;/・有符号32位整型・/
typedefnoatFP32l
/・单精度浮点型号・/
typedefdoubleFP64l
/・双精度浮点型号・/
由于G代码解释器的实现采用了数据流水线技术,当解释任务被激活后,根据实际情况为每一个通道分配一个一定数据格式的解释中间缓冲区,用于存放中间结果。

中间缓冲区的结构定义如下:
stmctBuf—data{现重复加工的代码。

在调用子程序时,使用了FIFO形式的堆栈,其数据结构如下:typedefstruct{charSubFuncNaIne【】l//子程序名
INT8USubFuncAddreSsl//予程序起始位置
INT8USubFuncReAddreSSl//予程序返回位置
INT8ULoopNuml//子程序循环次数
}SubFunc,+SubFunc;
4系统原型
在国家自然科学基金支持下,成功开发了嵌入式数控系统原型,原型系统采用三星公司的S3C44BO微控制器和TI公司的TMs320F2812DSP数字信号处理器,其中G代码解释器在ADSl.2编译环境下调试通过,移植在S3C44BO芯片中,系统原型如图3所示。

图3G代码解释器系统原型
38科技创新导报ScienceandTechnoIogyInnoVationHeraId
lT技术5结语
本文在基于ARM+DSP的网络化嵌入式数控系统的基础上.设计出一种流水线处理方式的G代码解释方法。

该设计方法能减少指令执行的时间,增强了嵌入式处理器的G代码处理能力,并且开发的软件易于移植,在当前数控系统精密化,网络化、智能化和集成化中具有广阔的应用前景。

参考文献
1】周祖德,魏仁选等.开放式控制系统的现状,趋势与对策.中国机械工程,1999,
10(10):1090一1093.
【2】袁楚明,陈幼平,周祖德.基于Intemet的远程诊断系统体系结构研究.计算机工程与应用,200l,37(18):45—46.
【3】刘磊,吴明华,周济.通用数控加工过程仿真中数控代码解释器的一种实现.组合机床与自动化加工技术.1995年第
12期:12一16.
【4】高殿明,范海龙.数控G代码编译器的设计与研究.机电新产品导报,2006年第7
期:106一110.万方数据。

相关文档
最新文档