CN100480916C - 一种基于数控代码编译器建立数控系统软件的方法 - Google Patents

一种基于数控代码编译器建立数控系统软件的方法 Download PDF

Info

Publication number
CN100480916C
CN100480916C CNB2005101210050A CN200510121005A CN100480916C CN 100480916 C CN100480916 C CN 100480916C CN B2005101210050 A CNB2005101210050 A CN B2005101210050A CN 200510121005 A CN200510121005 A CN 200510121005A CN 100480916 C CN100480916 C CN 100480916C
Authority
CN
China
Prior art keywords
pidp
order
code
object code
program
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
CNB2005101210050A
Other languages
English (en)
Other versions
CN1811632A (zh
Inventor
唐强平
姜家吉
周学才
黄锐军
覃国蓉
吴瑜
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shenzhen Institute of Information Technology
Original Assignee
Shenzhen Institute of Information Technology
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Shenzhen Institute of Information Technology filed Critical Shenzhen Institute of Information Technology
Priority to CNB2005101210050A priority Critical patent/CN100480916C/zh
Publication of CN1811632A publication Critical patent/CN1811632A/zh
Application granted granted Critical
Publication of CN100480916C publication Critical patent/CN100480916C/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Devices For Executing Special Programs (AREA)

Abstract

本发明公开了一种基于数控代码编译器建立数控系统软件的方法,其特征在于:有以下步骤:(1)构建PIDP_NC代码编译器;(2)在上位机中采用PIDP_NC代码编译器将NC程序编译成特定数据格式且完全顺序执行意义的目标码文件;(3)上位机按顺序分批将PIDP目标码送入下位机循环缓冲区;(4)下位机从循环缓冲区中按顺序读取包括下位机循环缓冲区管理PIDP和下位机用PIDP目标码,经过对PIDP中数据识别判定出对应NC命令的意义,同时得到对应的数据,根据命令的意义调用相应的运动控制函数,实现加工控制。有利于下位机运行高级算法实现高精度和多轴实时控制,将下位机软件简单化,还彻底解决了NC子程序的跳转和返回的难题,可以广泛适用多种下位机系统。

Description

一种基于数控代码编译器建立数控系统软件的方法
技术领域
本发明涉及代码编译,尤其是涉及一种基于数控代码编译器建立数控系统软件的方法。
背景技术
由通用轨迹运动控制模块作为下位机,由工业控制计算机作为上位机所构成的数控系统,是一种新型的数控系统硬件结构,在研制这种结构的数控系统过程中,必须配用数控系统软件。所述数控系统软件在实施工件加工的控制时,必须对数控(Numerical Control,简称为NC)程序中的代码进行语法、意义的翻译,根据翻译的结果调用相应的控制函数完成对各个轴的控制,即实现加工控制,目前上述翻译功能大多是由解释型NC代码编译器完成的,基于解释型NC代码编译器建立数控系统软件的方法,包括以下步骤:(1)由上位机将NC程序下传送入下位机,大型NC程序,不能全部一次送入,而需分批多次下传;(2)在下位机对NC程序进行编译;(3)控制方式是下位机读取一条NC代码,编译处理一条,并根据编译处理结果调用控制函数实现加工控制,是解释型控制模式,即边解释、边识别、边控制,其NC代码编译器实际上是NC代码解释器,它与控制软件融为一体。这种建立数控系统软件的方法存在的问题,一是NC代码编译器和控制程序共同占用下位机的CPU、RAM资源,造成资源紧张,不利于下位机运行高级控制算法实现高精度控制,不利于多轴的实时控制的实现;二是NC代码编译器嵌套在实时控制软件中,使下位机的控制软件变得复杂;此外,NC程序中有子程序,大型NC程序,不能全部一次送入,而需分批多次下传,在解决调用NC子程序的跳转与返回,以及保证控制的实时性方面存在非常大的障碍。
发明内容
本发明要解决的一个技术问题是克服现有技术的缺陷,提出一种基于数控代码编译器建立数控系统软件的方法。所述数控代码编译器是协议整数包(Protocol Integer Data Packet,简称为PIDP)数控代码编译器,简称PIDP_NC代码编译器,其构建包括:
1)定义即编制NC命令的目标码;
2)设计制定对应NC命令的PIDP的格式及内容:包括PIDP的格式、以及多参数、无参数和单参数命令的PIDP制定;
3)设计编写在上位机运行的PIDP_NC代码编译器,有以下步骤:
①打开NC程序文件:用打开文件函数打开NC程序文件、至少创建一个用于存储目标码的目标文件、一个用于记录编译结果的报告文件;
②对NC程序文件进行整理:将带有子程序的NC程序宏扩展处理成没有子程序的顺序型NC程序文件;
③对顺序型NC程序文件进行PIDP编译:包括对编译中所用的变量设置初始值;通过系统配置文件设置系统参数变量;循环调用行编译函数,按顺序将每一个NC命令编译成一个PIDP,并将编译产生的PIDP序列以目标文件的形式存储在上位机的硬盘中;还包括调用PIDP整理函数完成速度预算,以及完成在一行编译后可能有的多个PIDP的整理;
④判断编译结果是否正确:是,就生成报告正确信息的文件;否,就生成报告出错信息的文件;
⑤关闭所有文件,程序结束。
所述PIDP的格式是特定数据格式,在填入数据后成为PIDP目标码。所述PIDP_NC代码编译器的功能是将NC代码编译成特定数据格式的目标码,将NC程序编译成特定数据格式且完全顺序执行意义的目标码文件。
所述PIDP目标码都是由整型数据(Integer Data,简称为ID)编码组成。
如:“G00~G99”对应的命令目标码为“1000~1099”;
所述PIDP的特定数据格式是:命令目标码+序号+包长度+参数。其中包长度随参数的不同而不一样,参数随NC代码命令的不同而不一样,坐标、速度、角度数据放大后都以ID存储,以方便数据传送,下位机只要缩小相同倍数便能获得实际的浮点型数据。
如:NC代码为“N006 G01X10.35Y20.68Z20.00”,对应的PIDP如表1所示。
表1
 
1001         (G01命令目标码)
6            (序号)
9            (PIDP的长度)
103500       (X坐标值)
206800       (X坐标值)
200000       (X坐标值)
0            (Vs开始速度)
140000       (Vm中间速度)
0            (Ve终点速度)
所述PIDP_NC代码编译器由PIDP_NC源程序文件、PIDP_NC_lib库文件和PIDP_NC_sys系统配置文件及帮助信息文件PIDP_NC_help组成。
所述PIDP_NC代码编译器适用于Windows2000、WindowsXP和Linux操作系统。
所述PIDP_NC代码编译器适用于由Java、C和C++开发的数控系统软件。
对于一种基于数控代码编译器建立数控系统软件的方法来说,本发明的技术问题是这样加以解决的:
这种基于数控代码编译器建立数控系统软件的方法,有以下步骤:
(1)构建PIDP_NC代码编译器,即协议整数包数控代码编译器,包括:
1)定义即编制NC命令的目标码;
2)设计制定对应NC命令的PIDP的格式及内容:包括PIDP的格式、以及多参数、无参数和单参数命令的PIDP制定;
3)设计编写在上位机运行的PIDP_NC代码编译器;
(2)在上位机中采用PIDP_NC代码编译器将NC程序编译成特定数据格式且完全顺序执行意义的目标码文件;
(3)上位机按顺序分批将PIDP目标码送入下位机循环缓冲区;
(4)下位机从循环缓冲区中按顺序读取包括下位机循环缓冲区管理PIDP和下位机用PIDP目标码,经过对PIDP中数据识别判定出对应NC命令的意义,同时得到对应的数据,根据命令的意义调用相应的运动控制函数,实现加工控制。
所述PIDP在填入数据后成为由整型数据编码组成的PIDP目标码,即所述PIDP目标码是经编译后得到的符合PIDP的特定数据格式。
所述PIDP的特定数据格式是:命令目标码+序号+包长度+参数。其中包长度随参数的不同而不一样,参数随NC代码命令的不同而不一样,坐标、速度、角度数据放大后都以ID存储。
与现有技术对比,本发明具有以下优点:
(1)本发明的PIDP_NC代码编译器预先在上位机运行,与下位机完全分离,不占用下位机的CPU和RAM资源,有利于下位机有充足资源运行高级算法实现高精度和多轴实时控制,将下位机软件简单化,下位机的软件设计不必考虑NC代码的编译问题;
(2)本发明先采用宏扩展技术将带有子程序的NC程序整理成没有子程序的顺序型NC程序文件,再对顺序型NC程序文件中的NC代码进行按顺序PIDP编译,每一个NC命令编译成一个PIDP,采用完全顺序执行意义的PIDP序列数据结构实现大型NC程序顺序分批下传,下位机采用循环缓冲区管理PIDP,无论NC程序有多么大,都能实现数控加工控制,以满足大型NC程序连续加工的需求,这种完全顺序执行意义不存在跳转与返回的复杂问题,即彻底解决了NC子程序的跳转和返回的难题;
(3)下位机采用的目标数据是PIDP,其第一个单元是命令目标码,第三个单元是包长度,长度单元之后是对应命令目标码的参数,而且全部单元中的数据都是ID,使下位机的控制软件明显变得简单、便于识别,根据命令目标码和包长度就可以方便地选调相应的函数和方便地提取拟用的相应参数,即轨迹控制函数调用很方便,从而使下位机更容易实现控制,还解决了不同下位机系统的通用性问题,可以广泛适用多种下位机系统。由于不同的下、上位机,甚至是不同浮点型数据格式的下、上位机,其ID格式都相同,由ID构成的PIDP不必增加格式转换,就能保证下位机获取正确数据;
(4)本发明的PIDP_NC代码编译器可以独立开发,具有较高的经济价值和技术价值。它只涉及将NC代码变成PIDP和将NC程序变成完全顺序执行意义的PIDP序列目标文件,只要提供调用方式和PIDP格式说明手册,用户就能使用。
(5)本发明的PIDP数据结构及下位机循环缓冲管理PIDP方式,为数控系统中的上、下位机软件提供了一种接口模式,有利于数控软件的标准化,PIDP的包长可变,预算工作如速度预算可以移至上位机,以进一步减轻下位机的负载。
本发明适用于由工业控制计算机和通用运动控制模块构成的上下位机结构的数控系统,以及分部式轨迹运动控制系统。
附图说明
下面结合具体实施方式对本发明进行详细的说明:
图1是本发明一具体实施方式的PIDP_NC代码编译器的主程序流程图;
图2是本发明一具体实施方式的编译模块的程序流程图;
图3是本发明一具体实施方式的行编译函数的程序流程图;
图4是本发明一具体实施方式的行PIDP编译函数的程序流程图;
图5是本发明一具体实施方式的下位机用PIDP实现加工控制的程序流程图。
具体实施方式
一种基于PIDP_NC代码编译器建立CNC2000数控系统软件的方法
由CNC2000数控系统构建的数控雕刻机可以进行各种字体的汉字雕刻、三维塑像雕刻、三维模型的加工。
(一)PIDP_NC代码编译器的技术要求
上位机:操作系统是Windows2000、WindowsXP或Linux,应用软件系统用C程序、C++程序或JAVA程序开发;有数控系统配置文件;内存256MB,硬盘30GB,CPU为至少32位;
下位机:通用运动控制模块,CPU为至少32位,带运动控制函数;
通信接口:并行总线,嵌入式结构、32位;RS-232/485,分离式。
(二)PIDP_NC代码编译器的功能规划
PIDP_NC代码编译器的功能规划参见表2。
表2
 
序号 功能 解决方案
1 能识别NC程序的开始和结束。 以第一次遇到‘%’的行为开始;以第二次遇到‘%’的行为结束。                                  
2 能识别哪些是注释行哪些是NC代码命令行。                       以行开始字符为‘(’或‘/’的行为NC程序的注释行。                                        
3 能对NC程序的语法进行识别和编译,对于无法识别的东西和数据超出限制的以不同的出错信息记入报告文件。                             一个NC代码命令均为一个字母字符加数字字符构成。如:G00,G01,它们以G加一位或两位数字,其数字范围是0~99。而其他形式均为非法,如:G100是错误的。                                     
4 出错次数有限退出。 利用错误次数计数器实现,如:错误次数>=10,退出。                                         
5 软件运行产生结果报告文件,以说明编译的成败。                     对NC程序从头到尾编译无错误,就产生编译成功报告,有错误,就产生出错信息报告。            
6 行编译方式 参见行编译模块
7 能方便地进行系统参数设置 以系统配置文件的形式来实现。
 
8 不同工件坐标自动处理 工件坐标自动换算成机械坐标系。
9 能适应绝对坐标和相对坐标的处理要求。 相对坐标转换成绝对坐标值。统一用绝对坐标数据。
10 对某些NC代码命令的处理 用拆分法来解决。如:G28命令用两条G00命令即对G28的翻译结果是两个PIDP。
11 能适应NC代码的子程序的处理 用宏扩展技术来解决。编译软件分层处理,第一层进行宏展开,第二层产生PIDP目标文件。
12 能自动调整辅助NC命令的顺序 开冷却、开主轴必须置于切削加工动作之前。
13 适应公制和英制系统 以公制为准,遇英制转换为公制
(三)为CNC2000数控系统建立软件的方法,有以下步骤:
(1)构建PIDP_NC代码编译器,包括:
1)定义即编制NC命令的目标码;NC命令包括G命令、M命令、H命令、T命令、P命令和S命令。
G命令中G00~G99的目标码分别为1000~1099;
M命令中M00~M99的目标码分别为2000~2099;
其它命令的目标码的编码设计参见表3,该表用于建立软件过程中翻阅核查、增加和修改目标码的定义。
定义数控命令目标码的原则:采用ID表示目标码;命令目标码的码段划分必须清楚,便于记忆;命令目标码与数控命令的关系必须一一对应。
表3
Figure C200510121005D00081
2)设计制定对应NC命令的PIDP的格式及内容:包括PIDP的格式、以及多参数、无参数和单参数命令的PIDP制定;
目标码的数据组织格式定义为PIDP。
①PIDP由四部分构成,其格式设计如下:
 
命令目标码 序号 包长度 参数部分
命令目标码:为NC命令的目标码,用于标识NC命令,下位机利用其调用相应的控制函数,实现加工控制,占用一个整型单元。
序号:为NC程序的行序号,占用一个整型单元。
包长度:从命令目标码开始到参数部分结束,总共占用的整型单元数目。
参数部分:为参数区,包括0、1或多个参数,每个参数占用一个整型单元,参数数目可以增加,以适用于多轴数控系统和多项预算的要求。
上述各部分都用ID表示,PIDP采用上述格式表示,描述一条NC代码。
NC代码的语法与意义以《FANUC Series 16 FANUC Series 18操作说明书》为参考。
②多参数数控命令的PIDP制定
例1:快速定位G00的目标码及PIDP格式
G00或G0命令的目标码及PIDP编码格式参见表4。
表4
 
G00的目标码(1000)
指令序号
9(长度)
X<sup>*</sup>10000
Y<sup>*</sup>10000
Z<sup>*</sup>10000
Vs
Vmo
Ve
表4中1000为G00或G0命令的目标码;长度9表示该命令占用9个ID单元;X为X轴坐标,X*10000将浮点数放大并以ID编码保存,且以绝对坐标为准;Y为Y轴坐标,Y*10000将浮点数放大并以ID编码保存,且以绝对坐标为准;Z为Z轴坐标,Z*10000将浮点数放大并以ID编码保存,且以绝对坐标为准;下位机将坐标数据除以10000,还原成浮点数据。
对于G00/G0命令,Vs和Ve不用,Vmo为G00的速度,其值从编译器的系统配置文件中获得。
例2:直线运动G01的目标码及PIDP格式
G01或G1命令的目标码及PIDP编码格式参见表5。
表5
 
G01的目标码(1001)
指令序号
9(长度)
X<sup>*</sup>10000
Y<sup>*</sup>10000
Z<sup>*</sup>10000
Vs
Vm
Ve
表5中1001为G01或G1的命令目标码;长度9表示该命令占用9个ID单元;X、Y、Z与G00相同。
Vs为开始速度、Vm为稳定速度即中间速度、Ve为段尾速度,这些速度数据通过速度计算函数得,并乘以1000以ID存盘。
例3:圆弧运动G02(或G03)的目标码及PIDP编码格式参见表6。
表6
 
G02(G03)的目标码1002(1003)顺(逆)时针圆弧移位        
指令序号
13(长度)
X0(圆心)<sup>*</sup>10000
Y0(圆心)<sup>*</sup>10000
Z0(圆心)<sup>*</sup>10000
Xe<sup>*</sup>10000
Ye<sup>*</sup>10000
Ze<sup>*</sup>10000
Vs
Vm
Ve
Angle<sup>*</sup>1000000
表6中Angle为圆弧的扇形角,以弧度为单位,放大倍数为106,并以ID编码保存。圆弧起点为当前点,圆弧终点为(Xe、Ye、Ze),起始速度Vs,稳定速度Vm,终点速度Ve。这些速度数据根据控制算法的要求给出,以进一步减少下位机的计算负载。一般情况下是按NC程序提供的速度数据乘以权值填入Vm。当运动控制函数需要一个轨迹段的Vs、Vm和Ve时,根据轨迹段间的相关性要求如速度平滑采取适当的算法获得这些速度数据。
③无参数命令的PIDP制定
例4:单NC命令的目标码及编码格式
XY平面指定命令G17的PIDP格式参见表7。
表7
 
G17的目标码(1017)
指令序号
3(长度)
绝对坐标命令G90的PIDP格式参见表8。
表8
 
G90的目标码(1090)
令序号
3(长度)
例5:辅助功能M命令的目标码及编码格式
命令M03的PIDP格式参见表9。
表9
 
M03的目标码(2003)
指令序号
3(长度)
冷却液泵开启命令M08的PIDP格式参见表10。
表10
 
M08的目标码(2008)
指令序号
3(长度)
④单参数命令的PIDP制定
例6:其它命令的目标码及编码格式
暂停时间命令P的PIDP格式见参表11。
表11
 
P20的目标码(8000)
指令序号
4(长度)
时间参数(20sec)
主轴转速命令S的PIDP格式参见表12。
表12
 
S2800的目标码(9000)   
指令序号                  
4(长度)                  
转速参数(2800)           
3)设计编写在上位机运行的PIDP_NC代码编译器
例7:加工一个矩形的NC程序如表13:
表13
 
%                                  
N0100 G90                           
N0101 G00Z30                       
N0102 G00X10Y10                    
N0103 G01Z16S2500F100    (第一个)  
N0104 G01X30Y10    (第二个)         
N0105 G01X30Y20    (第三个)         
N0106 G01X10Y20F120    (第四个)     
N0107 G01X10Y10    (第五个)         
N0108 M30                           
%                                  
运行PIDP_NC代码编译器,所产生对应的PIDP格式目标序列如表14所示,表14中每个单元格是一个PIDP。表13、14说明了NC程序与PIDP序列的关系,PIDP_NC代码编译器的任务是将表13编译成表14。
表14
 
5000  (第一个%为开始)03                               
1090  (G90)100  (N0100)                    
1000    (600)101    ()90    (X)0    (Y)300000(Z=30*10000)0200000(系统设定的(G00的速度)0                                
 
1000(G00)1029100000   (X-10*10000)100000   (Y=10*10000)300000   (Z没变)02000000                  
9000   (S命令)1032500   (主轴转速)
1001   (G01)(第一个)1039   (IDP的长度)100000   (X)100000   (Y)160000   (Z)0   (Vs)100000   (Vm由F100确定)0   (Ve)               
1001(G01)(第二个)104930000010000016000001000000                
1001   (G01)(第三个)105930000020000016000001000000                
1001   (G01)(第四个)106910000020000016000001200000                
1001   (第五个)10791000001000001600000           
 
120000
20301083   
5011083  
设计编写在上位机运行的PIDP_NC代码编译器,有以下①~⑤步骤:
①打开NC程序文件
用打开文件函数打开NC程序文件,分别创建一个用于存储目标码的目标文件、一个用于记录编译结果的报告文件和一个用于阅读的阅读文件,参见图1。
②对NC程序文件进行整理
将带有子程序的NC程序宏扩展处理成没有子程序的顺序型NC程序文件。
具体实现方式如下:
设NC程序的文件名为“scode.txt”,新的NC程序文件名为“newNC.txt”。
对“scode.txt”设置两个文件指针P1和P2,P1用于正常行读取指针,读一行后将其写入“newNC.txt”文件;
当遇到“M98”的行时,不将含有“M98”的行写入“newNC.txt”,而是用P2指针搜索“scode.txt”:
当搜索到对应的子程序编号时,从子程序编号行的下一行开始读取一行并写入“newNC.txt”文件,直至“M99”为止;
再继续通过P1去读取“scode.txt”,直至文件结束。
对“scode.txt”还设置P3、P4、P5指针,分别用于对第二、三、四层子程序的搜索,以符合国际标准规定的有最多四层子程序可以调用。
所述文件整理是一种宏扩展处理,用比较简单的函数程序实现。整理的结果如下:
例8:NC程序的整理
整理前的NC程序                                    整理后的顺序型NC程序
N0010 G01X10Y10                                   N0010 G01X10Y10
N0011 M98P1000                                    N1000 G01Z30
N0012 G01X30Y30                                   N1001 G01Z60
N0013 M98P00022000                                N0012 G01X30Y30
N0014 M30                                         N2000 G01Z20
                                                  N2001 G01Z60
O1000                                             N0014 M30
N1000 G01Z30
N1001 G01Z60
N1003 M99
O2000
N2000 G01Z20
N2001 G01Z60
N2003 M99
③对顺序型NC程序文件进行PIDP编译:
包括对编译中所用的变量设置初始值;通过系统配置文件设置系统参数变量;循环调用行编译函数,按顺序将每一个NC命令编译成一个PIDP,并将编译产生的PIDP序列以目标文件的形式存储在上位机的硬盘中;还包括调用PIDP整理函数完成速度预算,以及完成在一行编译后可能有的多个PIDP的整理;
程序框图参见图2和表15,表15是循环式编译控制程序的N-S图表。
具体实现步骤如下a~i:
a,变量设置初始值,对程序中所用的变量如出错计数器变量、英/米制标志变量等设置初始值;
b,设置系统参数变量,通过系统配置文件设置系统参数变量如轴的最大允许速度值、加速度值、刀长度补偿值、机械坐标系的极限值;
c,判文件是否结束?是,结束编译,进入步骤④;否,进入d步;
d,判总出错标志是否置位?是,结束编译,进入步骤④;否,进入e步;
c,读出一行NC代码;
f,判是否为NC程序的开始?是,生成表示开始的PIDP并存盘,进入c步;否,接着判是否为NC程序的结束?是结束,生成表示结束的PIDP并存盘,并设置结束标志,进入c步;不是结束,进入g步;
g,判是否为NC程序号?是,生成表示程序号的PIDP并存盘,进入c步:否,进入h步;
h,判是否为NC代码行?是,调用NC代码行编译函数,进入c步;否,进入i步;
i,判是否为注释行?是,忽略此行,直接进入c步;否,认为是非法信息,出错计数器增一,出错信息写入报告文件,进入c步。
所述h步骤调用NC代码行编译函数,参见图3,包括提取并过滤NC代码行序号;调用行PIDP编译函数;调用PIDP整理函数。所述行PIDP编译函数程序框图,参见图4,其中“*treat()”表示对应“*”开头的NC命令字符的PIDP编译函数,例如“Gtreat()”表示对G命令的编译,这类函数至少有14个,它们的实现原理是相同的。
表15
Figure C200510121005D00161
例9;对一行NC代码:“N102 G01x10.8y30.6”,提取并过滤NC代码行序号后,余下“G01x10.8y30.6”存入数组stmp[],通过识别stmp[0]来决定调用哪个*treat()函数?
由于iv=0,stmp[iv]为‘G’,因此,调用Gtreat()。这时数组下标变量iv++,Gtreat()从stmp[iv]按序读取数字字符“01”,并存入数组cnum[]数组,连续数字字符提取完成后,判断cnum[]的串长度是否等于0或大于2,是,为语法有错.不进行编译而进行有错处理;否,为语法无错,就将cnum[]中的字符串转换成整型数,并存入v1变量,利用switch(v1){……}语句识别出为G01命令,进而将G01的目标码1001写入PIDP的缓冲区的第一个单元,程序编号102写入第二个单元,长度9写入第三个单元,至此Gtreat()执行结束。以后的“x10.8y30.6”由Xtreat()和Ytreat()函数来进行编译,并将编译的数据写入第四、第五单元。由于本例中无Z数据,就将当前的Z数据直接写入第六单元,并将当前的速度数据写入第八单元,而第七、第九单元先写入0,在需要Vs、Ve的情况下,等待以后由PIDP整理函数最终确定这些速度数据。
所述将经过行编译程序产生的PIDP按要求整理并写入目标文件的具体要求包括:
a.必需的顺序要求:例如:NC01X10.2Y10.8M08,M08的PIDP要位于G01X10.2Y10.8的PIDP之前。
b.可选的相关性要求:在加工过程中本段加工轨迹与前继段、后续段的相互关系,例如轨迹段之间的速度衔接越平滑越好。这种相互关系主要取决于数控软件中的运动控制函数需要Vs、Vm、Ve时,PIDP整理函数才采用速度预算最终确定这些速度数据。
所述PIDP整理程序如下:
a.将当前PIDP存入缓冲区BuffData中,缓冲区Buff_result用于存储一批有相关性运动NC命令的PIDP;
b.判是否为运动NC命令,可通过是否有X、Y、Z坐标数据判别,是,执行c;否,执行g:
c.判是否为G00命令:
如果是G00命令,再判是否是一批的开始,即Buff_result中是否有数据,无数据为一批的开始,状态变量Seg_count=0表示为一批的开始:是,将G00的PIDP写入目标文件,然后返回;否,将前一批PIDP进行相关速度预算,并将Buff_result中的数据写入目标文件,将G00的PIDP写入目标文件,然后返回;
如果不是G00命令,执行d;
d.判是否为G01命令:
如果是G01命令:再判是否是一批的开始:是,将G01的PIDP存入Buff result,然后返回:否,再进行是否相关性判别:是,将PIDP存入Buff_result,然后返回:否,对前一批PIDP进行速度预算并将前一批PIDP写入目标文件,将当前G01的PIDP写入Buff_result,然后返回;
如果不是G01命令,执行e;
e.判是否为G02或G03:
如果是G02或G03命令,再判是否一批的开始:是,将PIDP存入Buff_result,然后返回:否,再进行是否相关性判别:是,将PIDP存入Buff_result,然后返回;否,对前一批PIDP进行速度预算并将前一批PIDP写入目标文件,将当前G02或G03的PIDP存入Buff_result,然后返回;
如果不是G02也不是G03,执行f;
f.判是否为G28命令:是,再判Seg_count是否等于0:是,将G28的PIDP写入目标文件,然后返回;否,对Buff_result中的数据进行速度预算,并将buff_result中的PIDP写入目标文件,接着将G28的PIDP写入目标文件,然后返回;
如果不是G28,执行g;
g.判是否为一批的开始:是,将当前的PIDP写入目标文件,然后返回;否,将Buff_result中的PIDP进行速度预算,并将预算后的PIDP写入目标文件,接着将当前的PIDP写入目标文件,然后返回。
④判断翻译结果是否正确
通过出错计数器是否大于0来判断是否正确,否为正确,产生表示正确的报告并存盘,进入⑤;是为不正确,直接进入⑤。
⑤关闭所有文件,程序结束。
(2)在上位机中运行PIDP_NC代码编译器,将NC程序翻译成特定数据格式且完全顺序执行意义的目标码文件。
上位机的软件通过调用格式system(“PIDP_NC sgcode.txt”)运行PIDP_NC代码编译器,其中:PIDP_NC是可执行文件;sgcode.txt为NC程序文件.运行的结果是产生内容为PIDP序列的sgcode.obj目标文件,将NC代程序编译成特定数据格式且完全顺序执行意义的目标码文件。
(3)上位机按顺序分批将PIDP目标码送入下位机循环缓冲区。
下位机循环缓冲区由两个同容量缓冲区buffer1和buffer2组成,上位机在整个加工过程中不断地查询缓冲区buffer1、buffer2的状态变量buffer1_status、buffer2_status,如果其中某个变量的值为零,就向该缓冲区写入PIDP数据,写入步骤如下:
1)在上位机开辟临时缓冲区PC_buff,变量x清零,sum_size清零,指针指向PC_buff首地址,PC_buff与buffer1大小相同;
2)从目标文件中按顺序读出一个PIDP,并得到该PIDP的长度值x;
3)按顺序将PIDP写入PC_buff,sum_size=sum_size+x;
4)判断sum_size+m的值是否大于PC_buff的长度,是,进入步骤5);否,继续步骤2);其中m大于或等于最大PIDP的长度,推荐值是60;
5)将PC_buff剩余单元填入数据0x80000000,表示后续单元不是有效的PIDP;
6)通过缓冲区状态变量判别下位机是否有空闲缓冲区,是,进入步骤7);否,继续判别;
7)用嵌入系统提供的数据通信操作函数,将PC_buff数据写入下位机的空闲缓冲区中;
8)置当前缓冲区状态变量为1,表示该缓冲区数据不能被覆盖,至此,一批PIDP下传结束,x清零,sum_size清零,指针指向PC_buff首地址,转至步骤2),如此循环直到目标文件结束。
(4)下位机使用PIDP。
下位机从循环缓冲区中按顺序读取包括下位机循环缓冲区管理PIDP和下位机用PIDP目标码,经过对PIDP中数据识别判定出对应NC命令的意义,同时得到对应的数据,根据命令的意义调用相应的运动控制函数,实现加工控制。
1)下位机从循环缓冲区中按顺序读取包括下位机循环缓冲区管理PIDP和下位机用PIDP目标码。
上位机已经分别将第一、二批数据送入下位机循环缓冲区Buffer1、Buffer2,下位机的控制软件首先从Buffer1按序读取数据,经识别算法调用相应的运动控制函数实现数控加工,使用完Buffer1中的数据,就将buffer1_statue变量置零,接着使用Buffer2的数据,此时buffer2_statue=1,上位机又同时将第三批数据送入Buffer1,下位机使用完Buffer2中的数据,又将buffer2_statue变量置零,接着又使用Buffer1,此时buffer1_statue=1,上位机又同时将第四批数据送入Buffer2,PIDP数据是依次循环送入Buffer1、Buffer2,使用PIDP也是依次循环使用Buffer1、Buffer2;
软件设计规划时,定义循环缓冲区Buffer1、2的大小为2KB或更小,采用循环缓冲区队列,无论NC程序多么大,即无论PIDP目标文件多么大,下位机的数据缓冲RAM只需要4KB,可以显著节省下位机的存储空间。
2)下位机经过对PIDP识别判定出对应NC命令的意义,同时得到对应的数据,根据命令的意义调用相应的运动控制函数,实现加工控制。
下位机获取一个PIDP,用switch(){…}语句对PIDP中第一个单元进行命令目标码识别,如果是1001,调用直线运动控制函数;如果是1002,调用圆弧运动控制函数;如果是其它整数,就调用其它的相应的函数,以实现加工控制,参见图5。在调用上述函数时,由于PIDP中有包长度数据和参数,可以从中获得函数需要的参数。
以上内容是结合具体的优选实施方式对本发明所作的进一步详细说明,不能认定本发明的具体实施只局限于这些说明。对于本发明所属技术领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干简单推演或替换,都应当视为属于本发明由所提交的权利要求书确定的专利保护范围。

Claims (3)

1.一种基于数控代码编译器建立数控系统软件的方法,其特征在于:有以下步骤:
(1)构建PIDP_NC代码编译器,即协议整数包数控代码编译器,包括:
1)定义即编制NC命令的目标码;
2)设计制定对应NC命令的PIDP的格式及内容:包括PIDP的格式、以及多参数、无参数和单参数命令的PIDP制定;
3)设计编写在上位机运行的PIDP_NC代码编译器;
(2)在上位机中采用PIDP_NC代码编译器将NC程序编译成特定数据格式且完全顺序执行意义的目标码文件;
(3)上位机按顺序分批将PIDP目标码送入下位机循环缓冲区;
(4)下位机从循环缓冲区中按顺序读取包括下位机循环缓冲区管理PIDP和下位机用PIDP目标码,经过对PIDP中数据识别判定出对应NC命令的意义,同时得到对应的数据,根据命令的意义调用相应的运动控制函数,实现加工控制。
2.按照权利要求1所述的基于数控代码编译器建立数控系统软件的方法,其特征在于:
所述PIDP在填入数据后成为由整型数据编码组成的PIDP目标码,即所述PIDP目标码是经编译后得到的符合PIDP的特定数据格式。
3.按照权利要求2所述的基于数控代码编译器建立数控系统软件的方法,其特征在于:
所述PIDP的特定数据格式是:命令目标码+序号+包长度+参数。
CNB2005101210050A 2005-12-19 2005-12-19 一种基于数控代码编译器建立数控系统软件的方法 Expired - Fee Related CN100480916C (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CNB2005101210050A CN100480916C (zh) 2005-12-19 2005-12-19 一种基于数控代码编译器建立数控系统软件的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CNB2005101210050A CN100480916C (zh) 2005-12-19 2005-12-19 一种基于数控代码编译器建立数控系统软件的方法

Publications (2)

Publication Number Publication Date
CN1811632A CN1811632A (zh) 2006-08-02
CN100480916C true CN100480916C (zh) 2009-04-22

Family

ID=36844600

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2005101210050A Expired - Fee Related CN100480916C (zh) 2005-12-19 2005-12-19 一种基于数控代码编译器建立数控系统软件的方法

Country Status (1)

Country Link
CN (1) CN100480916C (zh)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100412736C (zh) * 2006-10-17 2008-08-20 哈尔滨工业大学 一种编译型数控系统及其编译与运行控制方法
CN101247294B (zh) * 2008-03-14 2010-09-29 北京星网锐捷网络技术有限公司 测试数据生成方法及装置
CN102103371B (zh) * 2009-12-18 2012-10-10 财团法人工业技术研究院 联结多系统达成多轴同步插值装置与方法
CN102141794B (zh) * 2011-02-25 2012-11-21 广西大学 一种用于数控系统的连续轨迹段间衔接速度处理方法
DE112012001112T5 (de) * 2012-10-30 2014-08-14 Mitsubishi Electric Corp. Numerische Steuervorrichtung
CN103019801B (zh) * 2012-12-20 2016-03-23 北京航天测控技术有限公司 一种应用于高速数字io波形引擎的编译器
CN104281096B (zh) * 2013-07-08 2017-10-13 广州中国科学院先进技术研究所 数控代码编译器的构造方法
CN104133421A (zh) * 2014-08-01 2014-11-05 南京埃斯顿自动化股份有限公司 一种基于流程控制的运动控制代码解析方法
CN104570957A (zh) * 2015-02-02 2015-04-29 中山市大谷电子科技有限公司 数控雕刻机床智能控制器
CN110632499B (zh) * 2019-09-23 2021-04-23 珠海格力电器股份有限公司 基于测试对象的测试向量生成方法及存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1601415A (zh) * 2004-10-15 2005-03-30 李迪 一种开放式可重组软数控系统
CN1624613A (zh) * 2004-12-11 2005-06-08 东方汽轮机厂 一种四轴联动数控加工后置处理方法及其控制系统

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1601415A (zh) * 2004-10-15 2005-03-30 李迪 一种开放式可重组软数控系统
CN1624613A (zh) * 2004-12-11 2005-06-08 东方汽轮机厂 一种四轴联动数控加工后置处理方法及其控制系统

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
数控机床NC代码的解释与执行. 胡荣强,苏义鑫,毕常青,刘皓春.计算机应用研究,第2期. 1996
数控机床NC代码的解释与执行. 胡荣强,苏义鑫,毕常青,刘皓春.计算机应用研究,第2期. 1996 *

Also Published As

Publication number Publication date
CN1811632A (zh) 2006-08-02

Similar Documents

Publication Publication Date Title
CN100480916C (zh) 一种基于数控代码编译器建立数控系统软件的方法
CN101206467B (zh) 通用数控代码解析方法
US20090326892A1 (en) System and method for constructing virtual nc controllers for machine tool simulation
EP0766153A1 (en) Numerically controlled machine tool and method
CN103765334A (zh) 用于模拟机床上加工过程的方法及系统
CN104281096B (zh) 数控代码编译器的构造方法
CN106737676A (zh) 一种基于脚本可二次开发的工业机器人编程系统
CN101673104A (zh) 基于g代码转换方法的工业机器人加工控制方法
CN103076761A (zh) 基于数控系统的刀具半径补偿的矢量计算方法
WO2010116265A1 (en) Method for automatically partitioning a part program into fundamental operations
CN101206466A (zh) 数控加工代码转换方法
CN104865899A (zh) 一种自动单边补偿的数控加工方法
CN108027606A (zh) 加工复位实现方法、编译器、机器人、数控系统及机床
Brown et al. A Description of the APT Language
CN114700944A (zh) 一种面向异种任务的双机器人协同路径规划方法
Guo et al. A universal NC program processor design and prototype implementation for CNC systems
CN102654760B (zh) 用于工具机的数值控制方法
Martins et al. Automatic Decomposition of IoT Aware Business Processes with Data and Control Flow Distribution.
CN102540964B (zh) 单电机驱动多轴的数控系统加工程序解释器实现方法
CN107664982A (zh) 一种以平滑切削功率为目标对刀具轨迹进行优化的方法
Chen et al. Design and implement of a modularized CNC interpreter based on the integration of tool path planning module
Zhu et al. A 3-D simulation system for milling machining based on STEP-NC
CN108845804A (zh) 一种基于cycle循环的数控代码解释器的设计方法
CN102566489B (zh) 一种数控系统解释器的开放式模块化构造方法
Lai A design of general compiler for NC code in embedded NC system

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
C17 Cessation of patent right
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20090422

Termination date: 20101219