CN101206467B - 通用数控代码解析方法 - Google Patents

通用数控代码解析方法 Download PDF

Info

Publication number
CN101206467B
CN101206467B CN2006101613376A CN200610161337A CN101206467B CN 101206467 B CN101206467 B CN 101206467B CN 2006101613376 A CN2006101613376 A CN 2006101613376A CN 200610161337 A CN200610161337 A CN 200610161337A CN 101206467 B CN101206467 B CN 101206467B
Authority
CN
China
Prior art keywords
rule
code
subroutine
program
character
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
CN2006101613376A
Other languages
English (en)
Other versions
CN101206467A (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.)
Nanjing University of Science and Technology
Original Assignee
Nanjing University of Science and 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 Nanjing University of Science and Technology filed Critical Nanjing University of Science and Technology
Priority to CN2006101613376A priority Critical patent/CN101206467B/zh
Publication of CN101206467A publication Critical patent/CN101206467A/zh
Application granted granted Critical
Publication of CN101206467B publication Critical patent/CN101206467B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Numerical Control (AREA)

Abstract

本发明公开了一种通用数控代码解析方法。它涉及NC代码的检错、解析方法,并提供定制手段,用以拓展基于此方法的解析器的功能。基于规则数据库,对NC代码进行词法、语法分析。如果有错,解析器会出错误报告,指示出错误的类型和位置。用户对NC代码进行修改,然后再进行检错,重复这个过程直到代码中没有错误为止。采用时间片离散方法对NC代码进行解析,生成刀位文件,用以驱动虚拟加工过程。对于系统不支持的数控系统,用户通过定制界面分三个步骤在规则数据库中增加新系统的规则。此方法具有通用性和开放性,可拓宽虚拟加工系统和加工仿真软件的应用领域,进而增强企业在市场中的竞争力。

Description

通用数控代码解析方法
一技术领域
本发明涉及数控(即NC)代码的词法、语法检错及解析方法,并提供定制手段,使基于此方法的解析器具有可拓展性。
二背景技术
虚拟加工和加工仿真系统由于可以避免或减少实际生产中的“试切”环节,在企业中得到了越来越广泛的应用。虚拟加工/加工仿真作为实际加工过程在计算机中的本质映射,其过程也应由实际NC代码控制。因此,NC代码解析是这类系统的一个核心技术。
无论是手工编程,还是计算机自动编程,NC代码都可能存在词法错误、语法错误和逻辑错误。NC代码解析器应能对代码的正确性进行检验,并向用户报告错误发生的位置及其类型。在此基础上,解析器生成虚拟加工系统可以识别的刀位文件,用以驱动加工的可视化仿真过程。现在数控系统种类繁多,它们在编程规则和代码对应功能上都存在一定的差别,与国际标准不完全一致。由于同一用户所使用的数控系统可能不止一种,解析器必须具有通用性和开放性。
株式会社森精机制作所申请的用于分析数控加工中的数控程序的方法和装置专利,提出一种用于分析NC代码加工方法的装置,并用数据库存取加工信息。但是此装置不具有通用性(专利申请号96180191.3,公开号CN1214001A)。
肖田元等提出了一种通用NC代码解析方法(肖田元,韩向利,王新龙.通用NC代码翻译技术.系统仿真学报,1998,10(5):1~7),其存在如下欠缺:(1)限于理论上的探讨,实际系统仅能实现少数几种常用数控系统的解析。(2)缺乏对NC子程序处理的研究。(3)未提供切实有效的与用户交互的数控系统定制接口。
三发明内容
本发明的目的在于提供一种具有通用性和开放性的数控代码解析方法,涉及词法、语法检错及解析方法,并提供定制手段,使基于此方法的解析器具有可拓展性。
实现本发明目的的技术方案为:一种通用数控代码解析方法,包括以下步骤:
第一步,查询规则数据库,即规则数据库用以存贮数控系统的编程规则,该规则数据库包括机床信息表、NC规则表、自定义数据类型表、子程序调用规则表、未定义字符表、G代码表、M代码表及程序号规则表;如果机床信息表中没有所要处理的特定数控系统型号,进行数控系统定制,数控系统定制使得用户在规则数据库中加入该特定数控系统的编程规则,以扩展功能;
第二步,NC代码导入,即把NC代码从磁盘文件读入计算机内存中,以链表的形式存贮,每一个程序段是链表的一个结点;程序段是NC代码的一行语句,由一个或多个程序字组成,程序字通常由地址符及其后面的数字和符号组成;建立当前程序段指针,使其指向链表的第一个结点,即NC代码的第一个程序段;当前程序段指针指向的程序段称为当前程序段;
第三步,词法分析,即词法分析检查程序段中是否有不合法字符,对于每一个程序段中的字符,检查其是否包含在未定义字符表中;如果字符包含在未定义字符表中,即发生词法错误,将错误类型及错误位置记录在错误链表中,此处错误类型为非法字符,错误位置为程序段的行号,将错误标志置为1;错误链表是用以记录错误的数据结构,每一个错误是错误链表中的一个结点;错误标志是个布尔型变量,其初始值为0,表示NC代码无错误,当其值为1时,表示NC代码有错误;
第四步,语法分析,即语法分析检查当前程序段是否符合语法规则,语法规则包括开始符和结束符规则,程序号规则,程序段规则,子程序调用规则;基于规则数据库的NC规则表,自定义数据类型表,子程序规则表,程序号规则表,建立与当前程序段相对应的正则表达式;用正则表达式匹配当前程序段,如果不成功,即发生语法错误,将错误的类型和位置记录入错误链表中,错误类型与所违背的语法规则相对应,错误位置为程序段的行号,将错误标志置为1;判断错误标志的值,如果其为1,更新当前程序段;
第五步,判断当前程序段是否子程序调用,查询规则数据库的子程序调用规则表,如果程序段的地址符与子程序调用规则表的标识字符相同,当前程序段是子程序调用,进行NC子程序处理流程;首先需要搜索子程序的位置,然后跳转到子程序进行检错、解析处理,子程序处理完毕返回后,更新当前程序段;
第六步,代码解析;代码解析基于规则数据库的G代码表和M代码表进行,G代码表存贮G代码的功能描述信息,M代码表存贮M代码的功能描述信息;根据G代码和M代码的功能描述,按时间片离散方法对NC代码进行解析;该时间片离散方法是根据固定的时间间隔,把刀具的轨迹离散成微小的直线段的一种解析方法;NC代码解析后得到若干刀位数据,刀位数据是在相应时间片里刀具在各坐标上的位移;把刀位数据写入刀位文件,此文件用来驱动虚拟加工和加工仿真过程;
第七步,更新当前程序段,如果代码链表的下一个结点,即下一个程序段不是程序结束符,将当前程序段指针指向下一个程序段,进行词法分析。
本发明通用数控代码解析方法中,数控系统定制是以下三个步骤来建立数控系统规则:
第(一)步,设定程序号规则、程序段规则和子程序调用规则;用户输入的项目与规则数据库中的相应数据表记录对应;机床信息设定包括机床名称、生产厂商、数控型号及加工方式;未定义字符设置包括非法字母数字和非法符号;NC规则设定包括程序开始符、结束符,程序段结束符及地址符序列;程序号规则有两种,一种是字母或符号加数字,一种是字母加数字加“-”,需要在两者间选择一个,其它的设定还包括标识字符、位数值、最小位数和最大位数,其中标识字符即是上述程序号规则中的字母;子程序调用规则有两种,其一为字母加调用次数再加程序号,其二为字母加程序号加L加调用次数,需要在二者中选择一个,其它的设定还有最大调用次数和标识字符;
第(二)步,设定地址符后数字的数据类型,通过一个树形视图,列出所有地址符,从中选择一个地址符,设置其后面数字的类型;已定义的数据类型通过读取规则数据库的自定义数据类型表的数据类型ID的值在下拉列表框列出,用户从中选择一个作为地址符的数据类型;若现有数据类型不能满足要求,则需建立新的数据类型,即设定数据类型ID、数据最小值、数据最大值、整数位数、小数位数,是否需要输出0,及正数前是否有+号;设定的数据类型存贮到规则数据库的自定义数据类型表中;
第(三)步,设定G代码、M代码同功能描述之间对应关系,即对于常用的功能,由对话框列出其功能描述,用户在其后添加对应的功能代码完成设置;对于其他特殊的功能描述,则需要用户同时输入功能描述及其对应的功能代码来作设置;设置的信息存贮到规则数据库的G代码表和M代码表中。
本发明通用数控代码解析方法中,由正则表达式描述语法规则并进行NC代码语法分析,其步骤如下,
第(一)步,建立与语法规则对应正则表达式,语法规则包括开始符和结束符规则、程序号规则、程序段规则、子程序调用规则;其中程序段规则建立步骤如下:
(1)读取地址符序列,从规则数据库的NC规则表读出地址符序列,存贮在一个字符串变量中;
(2)建立当前字符指针,将当前字符指针指向地址符序列第一个字符,当前字符指针指向的地址符称为当前地址符;
(3)建立正则表达式,对于当前地址符,从NC规则表中查询其后面数字的数据类型ID,再根据数据类型ID在自定义数据类型表中查询关于此数字的具体规定,包括数据最小值、数据最大值、整数位数、小数位数,是否需要输出0,及正数前是否有+号;根据查询结果,建立对应于当前地址符的正则表达式并加入程序段的正则表达式;
(4)更新当前地址符,将当前字符指针指向地址符序列的下一个字符,使其成为当前地址符;
(5)判断当前地址符是否地址符序列的最后一个字符,如果当前地址符不是地址符序列的最后一个字符,建立正则表达式;否则,把当前地址符加入程序段正则表达式;
第(二)步,在建立正则表达式的基础上,进行语法分析步骤如下所示:
(1)建立当前程序段指针,将当前程序段指针指向内存中程序段链表的第一个结点,即NC代码第一个程序段,当前程序段指针指向的程序段称为当前程序段;
(2)正则表达式匹配,用相应正则表达式匹配当前程序段,如果匹配不成功,即发生语法错误,将程序段行号及错误类型记录入错误链表,并将错误标志置为1;
(3)程序字分析,依次读取当前程序段的各程序字,如果是G代码或M代码,查询其在G代码表或M代码表中是否有相应的记录,如果无记录,则发生语法错误,将程序段的行号及错误类型记录入错误链表,并将错误标志置为1;如果是N代码,判断代码后的数字是否大于上一个程序段N代码后的数字,如果不大于,则发生语法错误,将程序段的行号及错误类型记录入错误链表,并将错误标志置为1;
(4)更新当前程序段,如果当前程序段不是链表尾,将当前程序段指针指向链表的下一个结点,即将下一个程序段设为当前程序段,进行正则表达式匹配。
本发明通用数控代码解析方法中,采用时间片离散方法对刀具轨迹进行圆弧插补,时间片定为动画仿真中显示一帧场景的时间,圆弧插补采用弦线逼近方法,即以XY平面第一象限,其计算步骤如下:
第(一)步,由进给速度v计算在一个时间片T中刀具的进给量f,
即: f = v 60 × 1000 × T = vT 60000 ;
第(二)步,由进给量f和圆弧半径R,计算一个时间片T中刀具进给运动对应的圆心角δ,
即: δ = 2 arcsin f 2 R ;
第(三)步,根据圆弧起点S和终点E的坐标和圆弧半径R,计算圆弧的圆心角θ,
即: θ = 2 arcsin ( x E - x S ) 2 + ( y E - y S ) 2 2 R ,
其中,进给速度v的单位是mm/min,时间片T的单位是ms,进给量f的单位是mm,圆弧半径R的单位是mm,圆心角δ和圆心角θ的单位是弧度;
第(四)步,计算加工圆弧所需的步数n,
即:
Figure DEST_PATH_GA20186271200610161337601D00052
符号
Figure DEST_PATH_GA20186271200610161337601D00053
表示取大于等于符号中数字的最小整数;
第(五)步,计算第i仿真步的位移,
即: Δ x i = R [ cos ( α + iδ ) - cos ( α + ( i - 1 ) δ ) ] Δ y i = R [ sin ( α + iδ ) - sin ( α + ( i - 1 ) δ ) ] , α为圆弧的起始角;
上述步骤(一)至(五)得到的是NC代码的刀位数据,刀位数据是在相应时间片里刀具在各坐标上的位移;把刀位数据写入刀位文件,此文件用来驱动虚拟加工和加工仿真过程。
本发明通用数控代码解析方法中,子程序处理流程的步骤如下:
第(一)步,记录主程序当前程序段位置,将主程序当前程序段指针压入调用堆栈,主程序是相对于子程序而言的,当NC代码中有子程序时,与子程序相对的NC代码的主体部分称为主程序;调用堆栈是一个堆栈数据结构,用于存贮调用处的地址指针及调用次数N,对于主程序,调用次数N无意义,设计此数据结构方便了子程序嵌套调用的处理;
第(二)步,记录子程序调用次数N,从程序调用语句得到子程序的调用次数,将其赋给子程序调用次数N;子程序的调用可能是多次,设置此变量用以控制对子程序的处理次数;子程序每次被处理,N自减1,当N等于0时,子程序处理完毕返回上一级调用程序段;
第(三)步,判断调用次数N,如果调用次数N等于0,从调用堆栈弹出上一级程序调用位置及调用次数N,并转入第(十)步,如果调用次数N不等于0,转入第(四)步;
第(四)步,初始化当前程序段,搜索子程序开始位置,并将其赋给当前程序段指针;在主程序和子程序中,当前程序段指针指向的程序段均称为当前程序段;
第(五)步,判断子程序是否结束,如果子程序结束,将调用次数N减1,进行判断调用次数N,如果子程序没有结束,转入第(六)步;
第(六)步,词法、语法分析,同主程序一样,词法分析和语法分析是基于规则数据库的;其中,语法分析要先建立与语法规则相对应的正则表达式,再由正则表达式匹配程序段;如果发生词法或语法错误,将程序段的行号及错误类型记录入错误链表,并将错误标志置为1;
第(七)步,判断程序段是否子程序调用,如果程序段不是子程序调用,转入第(八)步;如果程序段是子程序调用,将当前程序段指针及调用次数N压入调用堆栈,转入第
(二)步,进行记录子程序调用次数N;
第(八)步,判断错误标志,如果错误标志为0,将程序段解析为刀位数据,代码解析基于规则数据库的G代码表和M代码表进行,采用时间片离散方法,NC代码解析后得到若干个刀位数据,刀位数据是在相应时间片里刀具在各坐标上的位移;把刀位数据写入刀位文件,用来驱动虚拟加工和加工仿真过程,转入第(九)步,如果错误标志为1,直接转入第(九)步;
第(九)步,更新当前程序段,将当前程序段指针指向下一个程序段,即将下一个程序段设置为当前程序段,转入第(五)步;
第(十)步,判断是否主程序,如果是主程序,退出子程序处理步骤;否则,转入第(九)步。
本发明与现有的技术相比,其显著的优点为:基于NC规则数据库,并提供数控系统定制方法,使本发明具有通用性和开放性;基于正则表达式对NC代码进行语法检查,实现简单,效率高;基于时间片离散方法进行代码解析,生成刀位文件,用以驱动加工仿真过程;提出了子程序的处理方法,适用于处理子程序嵌套调用等复杂情形。实践表明,该解析器可以精确地对常用数控系统NC代码进行词法、语法检错;解析NC代码生成刀位文件,用以驱动虚拟加工的可视化仿真过程;灵活地进行定制,实现对解析器的功能扩展,取得了良好的效果。
四、附图说明
图1是本发明通用数控代码解析方法的流程图。
图2是本发明通用数控代码解析方法的规则数据库表结构。
图3是本发明通用数控代码解析方法的圆弧插补原理图。
图4是本发明通用数控代码解析方法的子程序处理流程图。
五具体实施方式
下面结合附图对本发明作进一步详细描述。
(一)一种通用的NC代码解析方法,如图1所示,依次进行以下步骤:
第一步,查询规则数据库;规则数据库用以存贮数控系统的编程规则,它包括机床信息表,NC规则表,自定义数据类型表,子程序规则表,未定义字符表,G代码表,M代码表及程序号规则表;如果机床信息表中没有所要处理的特定数控系统型号,进行数控系统定制,数控系统定制提供一个步骤,使得用户可以在规则数据库中加入该特定数控系统的编程规则,扩展本发明的功能;
第二步,NC代码导入;把NC代码从磁盘文件读入计算机内存中,以链表的形式存贮,每一个程序段是链表的一个结点;程序段是NC代码的一行语句,由一个或多个程序字组成,程序字通常由地址符(定义了一定功能的字母或符号)及其后面的数字和符号组成;建立当前程序段指针,使其指向链表的第一个结点,即NC代码的第一个程序段;当前程序段指针指向的程序段称为当前程序段;
第三步,词法分析;词法分析检查程序段中是否有不合法字符,对于每一个程序段中的字符,检查其是否包含在未定义字符表中;如果字符包含在未定义字符表中,即发生词法错误,将错误类型及错误位置记录在错误链表中,此处错误类型为非法字符,错误位置为程序段的行号,将错误标志置为1;错误链表是用以记录错误的数据结构,每一个错误是链表中的一个结点;错误标志是个布尔型变量,其初始值为0,表示NC代码无错误,当其值为1时,表示NC代码有错误;
第四步,语法分析;语法分析检查当前程序段是否符合语法规则,语法规则包括开始符和结束符规则,程序号规则,程序段规则,子程序调用规则;基于规则数据库的NC规则表,自定义数据类型表,子程序规则表,程序号规则表,建立与当前程序段相对应的正则表达式;用正则表达式匹配当前程序段,如果不成功,即发生语法错误,将错误的类型和位置记录入错误链表中,错误类型与所违背的语法规则相对应,错误位置为程序段的行号,将错误标志置为1;判断错误标志的值,如果其为1,更新当前程序段;
第五步,判断当前程序段是否子程序调用;查询规则数据库的子程序调用规则表,如果程序段的地址符与子程序调用规则表的标识字符相同,当前程序段是子程序调用,进行NC子程序处理流程;首先需要搜索子程序的位置,然后跳转到子程序进行检错、解析处理,子程序处理完毕返回后,更新当前程序段;
第六步,代码解析;代码解析基于规则数据库的G代码表和M代码表进行,G代码表存贮G代码的功能描述信息,M代码表存贮M代码的功能描述信息;根据G代码和M代码的功能描述,按时间片离散方法对NC代码进行解析,时间片离散方法是根据固定的时间间隔,把刀具的轨迹离散成微小的直线段的一种解析方法;NC代码解析后得到若干刀位数据,刀位数据是在相应时间片里刀具在各坐标上的位移;把刀位数据写入刀位文件,此文件用来驱动虚拟加工和加工仿真过程;
第七步,更新当前程序段;如果代码链表的下一个结点,即下一个程序段不是程序结束符,将当前程序段指针指向下一个程序段,进行词法分析。
对于以上步骤,需要说明的是,如果在词法、语法分析中有错,在以后的处理中,就不再对NC代码进行解析,只对NC代码进行分析并生成错误报告。之后,用户根据错误报告对NC代码进行编辑修正。然后再次进行分析检错,重复这个过程直到代码中没有错误为止,没有词法、语法错误的NC代码可以导出到存贮器,替代原文件。
(二)本发明的规则数据库用于存贮不同数控系统的编程规则。一般NC代码主要由程序开始符、程序号、程序体、程序结束符等组成。程序号是程序的编号,数控系统据以区别存储器中不同的数控程序。程序体包含数控程序的具体内容,由多个程序段组成。程序段是由一个或多个程序字按一定顺序构成。程序字是数控指令,用以描述加工过程的各种运动特征和操作。程序字通常由地址符(定义了一定功能的字母或符号)及其后面的数字和符号组成。典型的程序字包括各种准备功能的G代码和辅助功能的M代码。功能复杂的NC代码可能包含主程序和子程序。子程序也是由程序号和程序体组成。子程序由主程序调用,其自身也可以嵌套调用子程序。
在对数控系统编程规则分析的基础上,我们设计规则数据库表结构如图2所示,以支持对不同数控系统NC代码的检错和解析。其中,未定义字符表用于词法分析,对NC代码中的字符的合法性进行检验。NC规则表定义了NC代码的语法规则,程序字中地址符后数字的类型在自定义数据类型表中规定。程序号规则表和子程序规则表分别存贮程序号规则及子程序调用规则。M代码表和G代码表用于进一步定义这些功能代码中的可用数字,并与其功能相对应。
机床信息表由机床名称,生产厂商,加工方式,数控型号四个字段组成。机床名称是主键,数控型号是外键。
NC规则表由数控型号,程序开始符,程序结束符,G代码的数据类型ID,M代码的数据类型ID,T代码的数据类型ID,D代码的数据类型ID,S代码的数据类型ID,F代码的数据类型ID,P代码的数据类型ID,尺寸字代码的数据类型ID,L代码的数据类型ID及地址符序列13个字段组成。数控型号是主键。
自定义数据类型表由数据类型ID,数据最小值,数据最大值,整数位数,小数位数,是否需要输出0,及正数前是否有+号共计7个字段组成。数据类型ID为主键。
子程序规则表由数控型号,最大调用次数,标识字符3个字段组成。数控型号为主键。
未定义字符表由数控型号,未定义字母数字,未定义符号3个字段组成。数控型号为主键。
G代码表和M代码表都是由数控型号,代码数字,功能描述3个字段组成。数控型号和代码数字是主键。
程序号规则表由数控型号,标识字符,数字还是范围,具体位数,最小位数及最大位数6个字段组成。其中数控型号是主键。
(三)由于数控系统种类繁多,一个NC解析器不可能也没必要穷尽所有这些数控系统,它只需对常用的系统提供检错和解析功能。当解析器不能满足用户需要时,用户通过定制,实现对系统的功能扩展。
NC系统定制的实质是在规则数据库中建立与新数控系统相对应的规则的过程,即在用户和规则数据库间提供一个友好易用的人机交互界面,使普通用户在提示信息帮助下,方便、快捷地建立新数控系统的规则。在定制模块中,用户填写的内容自动进行合法性检验。如果不合乎规范,系统会提示用户重新填写。我们分三个步骤建立数控系统规则:
第一步,设定程序号规则、部分程序段规则和子程序调用规则;用户输入的项目与规则数据库中的相应数据表记录对应;机床信息设定包括机床名称,生产厂商,数控型号及加工方式;未定义字符设置包括非法字母数字和非法符号;NC规则设定包括程序开始符、结束符,程序段结束符及地址符序列;程序号规则有两种,一种是字母或符号加数字,一种是字母加数字加“-”,需要在两者间选择一个,其它的设定还包括标识字符,位数值、最小位数和最大位数,其中标识字符即是上述程序号规则中的字母;子程序调用规则主要有两种,其一为字母(一般是字母P)加调用次数再加程序号,其二为字母(一般是字母P)加程序号加L加调用次数,需要在二者中选择一个,其它的设定还有最大调用次数和标识字符;
第二步,设定地址符后数字的数据类型。通过一个树形视图,列出所有地址符。从中选择一个地址符,设置其后面数字的类型。已定义的数据类型通过读取规则数据库的自定义数据类型表的数据类型ID的值在下拉列表框列出,用户可以从中选择一个作为地址符的数据类型。若现有数据类型不能满足要求,则需建立新的数据类型,即设定数据类型ID,数据最小值,数据最大值,整数位数,小数位数,是否需要输出0,及正数前是否有+号;设定的数据类型存贮到规则数据库的自定义数据类型表中;
第三步,设定G代码、M代码同功能描述之间对应关系。对于常用的功能,由对话框列出其功能描述,用户在其后添加对应的功能代码完成设置;对于其它特殊的功能描述,则需要用户同时输入功能描述及其对应的功能代码来作设置;设置的信息存贮到规则数据库的G代码表和M代码表中。
(四)词法分析
词法分析检查NC代码中是否使用了非法字符。不同类型数控系统所使用的字符有所不同。我们对所有数控系统所用字符取并集,作为目标集合,总结如下:
<字母>::=A~Z
<数字>::=0|1|2|3|4|5|6|7|8|9|
<符号>::=+|-|;|1|:|<|>|%|(|)|=|/|.|#|LF|ER|SP|DEL|EM|
由于不合法字符相对较少,对于特定数控系统,我们在数据库中存储其非法字符集。词法分析过程在将NC代码读入内存的过程中进行,依次判断各个字符的合法性(如果是非法字符,在错误列表中存贮其行号和错误类型)。此外,词法分析过程还滤掉空格与注释行,为后续的语法分析作准备。
(五)语法分析
语法分析的任务是按照语法规则对NC代码进行语言检查。NC代码的不同组成部分对应不同的规则,主要是程序段规则。子程序调用规则作为一种特殊的程序段规则单独作处理。此外还有程序号规则,NC代码开始符和结束符规则等。
正则表达式(regular expression)是由普通字符以及元字符组成的文字模式,它将某个字符模式与所搜索的字符串进行匹配,可以用来检查一个串是否含有某种子串、将匹配的子串作替换或者从某个串中取出符合某个条件的子串等。由于正则表达式具有使用灵活、功能强大、耗费资源小、效率高等优点,我们选用正则表达式进行语法规则的检查。
如前所述,我们将不同数控系统的相关规则存贮在数据库表中。而在语法分析时,我们实际使用正则表达式进行规则匹配。因此,在进行语法分析时,需要根据数据库中的记录动态建立相应的语法规则。对于NC代码开始符规则和结束符规则的建立,因其较简单,不再详述。下面讨论其它几种规则的建立方法。
(a)程序号规则
程序号规则有两种:一种是大写字母或符号加数字,一种是大写字母加数字加“-”。以第一种程序号规则为例。正则表达式“O\\d{4}”匹配字母O加4位数字的程序号,式中的字母O和数字4由数据库中读出。
(b)程序段规则
程序段规则的建立相对来说比较复杂,需考虑程序段中的合法地址符及顺序、地址符后数字的有效性等因素。基于数据库中NC规则表和自定义数据类型表,程序段规则建立的步骤如下:
第一步,读取地址符序列;从规则数据库的NC规则表读出地址符序列,存贮在一个字符串变量中;
第二步,建立当前字符指针;将当前字符指针指向地址符序列第一个字符,当前字符指针指向的地址符称为当前地址符;
第三步,建立正则表达式;对于当前地址符,从NC规则表中查询其后面数字的数据类型ID,再根据数据类型ID在自定义数据类型表中查询关于此数字的具体规定,包括数据最小值,数据最大值,整数位数,小数位数,是否需要输出0,及正数前是否有+号;根据查询结果,建立对应于此地址符的正则表达式并加入程序段的正则表达式;
第四步,更新当前地址符;将当前字符指针指向地址符序列的下一个字符,使其成为当前地址符;
第五步,判断当前地址符是否地址符序列的最后一个字符;如果当前地址符不是地址符序列的最后一个字符,建立正则表达式;否则,把该地址符加入程序段正则表达式。
(c)子程序调用规则
子程序调用规则主要有两种,其一为特定大写字母(一般是P)加调用次数再加程序号,其二为特定大写字母(一般是P)加程序号加L加调用次数。这些信息存贮在子程序规则表中。子程序调用正则表达式建立较简单。例如指定字母为P,调用次数最大为99,子程序号为O0101。则对于第一种规则,正则表达式为“P\\d{6}”,而对于第二种,正则表达式为“P\\d{4}L\\d{2}”。
建立语法规则后,即可进行语法分析。在内存中,NC代码是以链表的形式存贮的,每一行对应链表的一个结点。语法分析步骤如下所示:
(1)建立当前程序段指针;将当前程序段指针指向内存中程序段链表的第一个结点,即NC代码第一个程序段,当前程序段指针指向的程序段称为当前程序段;
(2)正则表达式匹配;用相应正则表达式匹配当前程序段,如果匹配不成功,即发生语法错误,将程序段行号及错误类型记录入错误链表,并将错误标志置为1;
(3)程序字分析;依次读取当前程序段的各程序字,如果是G代码或M代码,查询其在G代码表或M代码表中是否有相应的记录,如果无记录,则发生语法错误,将程序段的行号及错误类型记录入错误链表,并将错误标志置为1;如果是N代码,判断代码后的数字是否大于上一个程序段N代码后的数字,如果不大于,则发生语法错误,将程序段的行号及错误类型记录入错误链表,并将错误标志置为1;
(4)更新当前程序段;如果当前程序段不是链表尾,将当前程序段指针指向链表的下一个结点,即将下一个程序段设为当前程序段,进行正则表达式匹配。
从上述步骤可以看出,在语法检查时,除进行正则表达式的匹配外,还对G代码和M代码作了特殊的处理。这是因为对于G代码和M代码,即使其符合规则要求,但若在数控系统中没有定义,仍不能为数控机床控制器所识别,也属于语法错误之列。此外,对于有N地址符的情况,还要判断其段号是否递增。
(六)代码解析是通用NC代码解析器一个重要的功能,用以生成虚拟加工系统可以识别的刀位文件。刀位文件是刀具在六个坐标上的位移,它进一步驱动虚拟机床的加工操作,将工件的加工过程以可视化的方式展示出来,以此达到全面验证NC代码正确性的目的。NC代码对机床状态和操作的控制主要由G代码和M代码实现,不同数控系统的G代码和M代码与功能对应关系并不相同,我们将此信息存贮在G代码表和M代码表中。代码解析时,根据对这两个表的查询结果进行解析。
刀位文件数据通过对程序字分析处理得到,程序字描述了刀具的运动方式和起、终点位置坐标等信息,而刀位文件数据(实际驱动机床数据)却是刀具在六个坐标上的位移。换言之,驱动机床的数据只能是直线运动的数据。为此,要对刀具运动进行插补,用多段微小的直线段代替实际的刀具轨迹。
可视化加工仿真过程由计算机动画实现,即以一定的速率一帧帧渲染仿真的场景。因为人的眼睛有视觉暂留的特性,于是用户就可以观察到“连续”的加工仿真过程。为此,我们采用时间片离散方法对刀具轨迹进行插补,时间片定为动画仿真中显示一帧场景的时间。这样,刀位文件中每一仿真步的数据就是在相应时间片里刀具在各坐标上的位移。术语“仿真步”指与时间片相对应的仿真步骤。
直线插补较为简单,按进给速度和时间片长度即可计算出每一仿真步刀具的位移。圆弧插补相对比较复杂。在NC代码中,圆心坐标和半径二者一般只给出一个。因此,首先需要由圆心坐标计算出半径,或由半径计算出圆心坐标。在此基础上,进一步计算每个时间片的位移。对于圆弧插补通常有切线逼近和弦线逼近两种插补运算方法。由于前者会带来较大的误差,我们选用弦线逼近方法。下面以XY平面第一象限为例,介绍逆时针圆弧插补计算的步骤,如图3所示。XY平面的其它象限,及其它平面的计算方法与此类似。
第一步,由进给速度v(mm/min)计算在一个时间片T(ms)中刀具的进给量f(mm),
即: f = v 60 &times; 1000 &times; T = vT 60000 ;
第二步,由f(mm)和圆弧半径R(mm),计算一个时间片T(ms)中刀具进给运动对应的圆心角δ(弧度),
即: &delta; = 2 arcsin f 2 R ;
第三步,根据圆弧起点S和终点E的坐标和圆弧半径R(mm),计算圆弧的圆心角θ(弧度),
即: &theta; = 2 arcsin ( x E - x S ) 2 + ( y E - y S ) 2 2 R (xS和yS分别是圆弧起点S的横坐标和纵坐标,xE和yE分别是圆弧起点S的横坐标和纵坐标);
第四步,计算加工圆弧所需的步数n,
即:
Figure GA20176208200610161337601D00134
(符号
Figure GA20176208200610161337601D00135
表示取大于等于符号中数字的最小整数);
第五步,计算第i仿真步的位移,
即: &Delta; x i = R [ cos ( &alpha; + i&delta; ) - cos ( &alpha; + ( i - 1 ) &delta; ) ] &Delta; y i = R [ sin ( a + i&delta; ) - sin ( &alpha; + ( i - 1 ) &delta; ) ] (α为圆弧的起始角);
上述步骤得到的是NC代码的刀位数据,刀位数据是在相应时间片里刀具在各坐标上的位移;把刀位数据写入刀位文件,此文件即可用来驱动虚拟加工和加工仿真过程。
(七)子程序是NC代码的重要组成部分,通过子程序的使用,简化了NC代码的编程工作,提高了效率。子程序同主程序一样,在内存中也是以链表形式存放,这种数据结构方便了对子程序的位置搜索。在遇到子程序调用时,流程转入子程序处理流程。首先需要搜索子程序的位置,然后跳转到子程序进行检错、解析处理,待子程序处理完毕返回,再接着进行原代码的处理直到结束。子程序中也可能嵌套子程序,其处理和主程序对子程序的调用相类似。
由主程序调用子程序,需要存贮主程序的调用位置,以便在返回时继续主程序的处理。子程序可能被多次调用,因此设置了一个指示调用次数的变量N。N的初值是调用语句指定的子程序调用次数。子程序每次被处理,N自减1。当N等于0时,子程序处理完毕返回上一级调用程序段。对于子程序嵌套调用子程序,除了要存贮调用位置,还要存贮子程序的调用次数N。
为了方便子程序调用的处理,程序设计一个堆栈数据结构,用于存贮调用处的地址指针及调用次数N,称为调用堆栈。需要指出,调用次数N仅在调用程序是子程序时有意义。每次子程序调用时,将调用处地址指针及调用次数N压入调用堆栈中。子程序处理结束后,将调用堆栈中数据弹出,恢复调用现场。如果其上一级代码为子程序,则继续留在子程序处理流程;否则,退出并返回NC代码(主程序)处理流程。
子程序处理流程如图4所示,其计算步骤如下:
第一步,记录主程序当前程序段位置;将主程序当前程序段指针压入调用堆栈,主程序是相对于子程序而言的,当NC代码中有子程序时,与子程序相对的NC代码的主体部分称为主程序;调用堆栈是一个堆栈数据结构,用于存贮调用处的地址指针及调用次数N,对于主程序,调用次数N无意义,设计此数据结构方便了子程序嵌套调用的处理;
第二步,记录子程序调用次数N;从程序调用语句得到子程序的调用次数,将其赋给子程序调用次数N;子程序的调用可能是多次,设置此变量用以控制对子程序的处理次数;
第三步,判断调用次数N,如果调用次数N等于0,从调用堆栈弹出上一级程序调用位置及调用次数N,判断是否主程序,如果是主程序,转入第十步,否则转入第四步;
第四步,初始化当前程序段;搜索子程序开始位置,并将其赋给当前程序段指针;在主程序和子程序中,当前程序段指针指向的程序段均称为当前程序段;
第五步,判断子程序是否结束;如果子程序结束,将调用次数N减1,进行判断调用次数N;
第六步,词法、语法分析;同主程序一样,词法分析和语法分析是基于规则数据库的;其中,语法分析要先建立与语法规则相对应的正则表达式,再由正则表达式匹配程序段;如果发生词法或语法错误,将程序段的行号及错误类型记录入错误链表,并将错误标志置为1;
第七步,判断程序段是否子程序调用,如果程序段不是子程序调用,转入第十步;如果程序段是子程序调用,将当前程序段指针及调用次数N压入调用堆栈,进行记录子程序调用次数N,转入第八步;
第八步,判断错误标志;如果错误标志为0,将程序段解析为刀位数据,代码解析基于规则数据库的G代码表和M代码表进行,采用时间片离散方法,NC代码解析后得到若干个刀位数据,刀位数据是在相应时间片里刀具在各坐标上的位移;把刀位数据写入刀位文件,用来驱动虚拟加工和加工仿真过程;
第九步,更新当前程序段;将当前程序段指针指向下一个程序段,即将下一个程序段设置为当前程序段,判断子程序是否结束;
第十步,判断是否主程序;如果是主程序,退出子程序处理步骤;否则,更新当前程序段。

Claims (5)

1.一种通用数控代码解析方法,其特征在于包括以下步骤:
第一步,查询规则数据库,即规则数据库用以存贮数控系统的编程规则,该规则数据库包括机床信息表、NC规则表、自定义数据类型表、子程序调用规则表、未定义字符表、G代码表、M代码表及程序号规则表;如果机床信息表中没有所要处理的特定数控系统型号,进行数控系统定制,数控系统定制使得用户在规则数据库中加入该特定数控系统的编程规则,以扩展功能;
第二步,NC代码导入,即把NC代码从磁盘文件读入计算机内存中,以链表的形式存贮,每一个程序段是链表的一个结点;程序段是NC代码的一行语句,由一个或多个程序字组成,程序字通常由地址符及其后面的数字和符号组成;建立当前程序段指针,使其指向链表的第一个结点,即NC代码的第一个程序段;当前程序段指针指向的程序段称为当前程序段;
第三步,词法分析,即词法分析检查程序段中是否有不合法字符,对于每一个程序段中的字符,检查其是否包含在未定义字符表中;如果字符包含在未定义字符表中,即发生词法错误,将错误类型及错误位置记录在错误链表中,此处错误类型为非法字符,错误位置为程序段的行号,将错误标志置为1;错误链表是用以记录错误的数据结构,每一个错误是错误链表中的一个结点;错误标志是个布尔型变量,其初始值为0,表示NC代码无错误,当其值为1时,表示NC代码有错误;
第四步,语法分析,即语法分析检查当前程序段是否符合语法规则,语法规则包括开始符和结束符规则,程序号规则,程序段规则,子程序调用规则;基于规则数据库的NC规则表,自定义数据类型表,子程序规则表,程序号规则表,建立与当前程序段相对应的正则表达式;用正则表达式匹配当前程序段,如果不成功,即发生语法错误,将错误的类型和位置记录入错误链表中,错误类型与所违背的语法规则相对应,错误位置为程序段的行号,将错误标志置为1;判断错误标志的值,如果其为1,更新当前程序段;
第五步,判断当前程序段是否子程序调用,查询规则数据库的子程序调用规则表,如果程序段的地址符与子程序调用规则表的标识字符相同,当前程序段是子程序调用,进行NC子程序处理流程;首先需要搜索子程序的位置,然后跳转到子程序进行检错、解析处理,子程序处理完毕返回后,更新当前程序段;
第六步,代码解析;代码解析基于规则数据库的G代码表和M代码表进行,G代码表存贮G代码的功能描述信息,M代码表存贮M代码的功能描述信息;根据G代码和M代码的功能描述,按时间片离散方法对NC代码进行解析;该时间片离散方法是根据固定的时间间隔,把刀具的轨迹离散成微小的直线段的一种解析方法;NC代码解析后得到若干刀位数据,刀位数据是在相应时间片里刀具在各坐标上的位移;把刀位数据写入刀位文件,此文件用来驱动虚拟加工和加工仿真过程;
第七步,更新当前程序段,如果代码链表的下一个结点,即下一个程序段不是程序结束符,将当前程序段指针指向下一个程序段,进行词法分析。
2.根据权利要求1所述的通用数控代码解析方法,其特征在于:数控系统定制是以下三个步骤来建立数控系统规则:
第(一)步,设定程序号规则、程序段规则和子程序调用规则;用户输入的项目与规则数据库中的相应数据表记录对应;机床信息设定包括机床名称、生产厂商、数控型号及加工方式;未定义字符设置包括非法字母数字和非法符号;NC规则设定包括程序开始符、结束符,程序段结束符及地址符序列;程序号规则有两种,一种是字母或符号加数字,一种是字母加数字加“-”,需要在两者间选择一个,其它的设定还包括标识字符、位数值、最小位数和最大位数,其中标识字符即是上述程序号规则中的字母;子程序调用规则有两种,其一为字母加调用次数再加程序号,其二为字母加程序号加L加调用次数,需要在二者中选择一个,其它的设定还有最大调用次数和标识字符;
第(二)步,设定地址符后数字的数据类型,通过一个树形视图,列出所有地址符,从中选择一个地址符,设置其后面数字的类型;已定义的数据类型通过读取规则数据库的自定义数据类型表的数据类型ID的值在下拉列表框列出,用户从中选择一个作为地址符的数据类型;若现有数据类型不能满足要求,则需建立新的数据类型,即设定数据类型ID、数据最小值、数据最大值、整数位数、小数位数,是否需要输出0,及正数前是否有+号;设定的数据类型存贮到规则数据库的自定义数据类型表中;
第(三)步,设定G代码、M代码同功能描述之间对应关系,即对于常用的功能,由对话框列出其功能描述,用户在其后添加对应的功能代码完成设置;对于其他特殊的功能描述,则需要用户同时输入功能描述及其对应的功能代码来作设置;设置的信息存贮到规则数据库的G代码表和M代码表中。
3.根据权利要求1所述的通用数控代码解析方法,其特征在于:由正则表达式描述语法规则并进行NC代码语法分析,其步骤如下,
第(一)步,建立与语法规则对应正则表达式,语法规则包括开始符和结束符规则、程序号规则、程序段规则、子程序调用规则;其中程序段规则建立步骤如下:
(1)读取地址符序列,从规则数据库的NC规则表读出地址符序列,存贮在一个字符串变量中;
(2)建立当前字符指针,将当前字符指针指向地址符序列第一个字符,当前字符指针指向的地址符称为当前地址符;
(3)建立正则表达式,对于当前地址符,从NC规则表中查询其后面数字的数据类型ID,再根据数据类型ID在自定义数据类型表中查询关于此数字的具体规定,包括数据最小值、数据最大值、整数位数、小数位数,是否需要输出0,及正数前是否有+号;根据查询结果,建立对应于当前地址符的正则表达式并加入程序段的正则表达式;
(4)更新当前地址符,将当前字符指针指向地址符序列的下一个字符,使其成为当前地址符;
(5)判断当前地址符是否地址符序列的最后一个字符,如果当前地址符不是地址符序列的最后一个字符,建立正则表达式;否则,把当前地址符加入程序段正则表达式;
第(二)步,在建立正则表达式的基础上,进行语法分析步骤如下所示:
(1)建立当前程序段指针,将当前程序段指针指向内存中程序段链表的第一个结点,即NC代码第一个程序段,当前程序段指针指向的程序段称为当前程序段;
(2)正则表达式匹配,用相应正则表达式匹配当前程序段,如果匹配不成功,即发生语法错误,将程序段行号及错误类型记录入错误链表,并将错误标志置为1;
(3)程序字分析,依次读取当前程序段的各程序字,如果是G代码或M代码,查询其在G代码表或M代码表中是否有相应的记录,如果无记录,则发生语法错误,将程序段的行号及错误类型记录入错误链表,并将错误标志置为1;如果是N代码,判断代码后的数字是否大于上一个程序段N代码后的数字,如果不大于,则发生语法错误,将程序段的行号及错误类型记录入错误链表,并将错误标志置为1;
(4)更新当前程序段,如果当前程序段不是链表尾,将当前程序段指针指向链表的下一个结点,即将下一个程序段设为当前程序段,进行正则表达式匹配。
4.根据权利要求1所述的通用数控代码解析方法,其特征在于:采用时间片离散方法对刀具轨迹进行圆弧插补,时间片定为动画仿真中显示一帧场景的时间,圆弧插补采用弦线逼近方法,即以XY平面第一象限,其计算步骤如下:
第(一)步,由进给速度v计算在一个时间片T中刀具的进给量f,
即: f = v 60 &times; 1000 &times; T = vT 60000 ;
第(二)步,由进给量f和圆弧半径R,计算一个时间片T中刀具进给运动对应的圆心角δ,
即: &delta; = 2 arcsin f 2 R ;
第(三)步,根据圆弧起点S和终点E的坐标和圆弧半径R,计算圆弧的圆心角θ,即: &theta; = 2 arcsin ( x E - x S ) 2 + ( y E - y S ) 2 2 r ,
其中,进给速度v的单位是mm/min,时间片T的单位是ms,进给量f的单位是mm,圆弧半径R的单位是mm,圆心角δ和圆心角θ的单位是弧度;
第(四)步,计算加工圆弧所需的步数n,
即:
Figure FA20186271200610161337601C00044
符号
Figure FA20186271200610161337601C00045
表示取大于等于符号中数字的最小整数;第(五)步,计算第i仿真步的位移,
即:
&Delta;x i = R [ cos ( &alpha; + i&delta; ) - cos ( &alpha; + ( i - 1 ) &delta; ) ] &Delta;y i = R [ sin ( &alpha; + i&delta; ) - sin ( &alpha; + ( i - 1 ) &delta; ) ] , α为圆弧的起始角;
上述步骤(一)至(五)得到的是NC代码的刀位数据,刀位数据是在相应时间片里刀具在各坐标上的位移;把刀位数据写入刀位文件,此文件用来驱动虚拟加工和加工仿真过程。
5.根据权利要求1所述的通用数控代码解析方法,其特征在于:子程序处理流程的步骤如下:
第(一)步,记录主程序当前程序段位置,将主程序当前程序段指针压入调用堆栈,主程序是相对于子程序而言的,当NC代码中有子程序时,与子程序相对的NC代码的主体部分称为主程序;调用堆栈是一个堆栈数据结构,用于存贮调用处的地址指针及调用次数N,对于主程序,调用次数N无意义,设计此数据结构方便了子程序嵌套调用的处理;
第(二)步,记录子程序调用次数N,从程序调用语句得到子程序的调用次数,将其赋给子程序调用次数N;子程序的调用可能是多次,设置此变量用以控制对子程序的处理次数;子程序每次被处理,N自减1,当N等于0时,子程序处理完毕返回上一级调用程序段;
第(三)步,判断调用次数N,如果调用次数N等于0,从调用堆栈弹出上一级程序调用位置及调用次数N,并转入第(十)步,如果调用次数N不等于0,转入第(四)步;
第(四)步,初始化当前程序段,搜索子程序开始位置,并将其赋给当前程序段指针;在主程序和子程序中,当前程序段指针指向的程序段均称为当前程序段;
第(五)步,判断子程序是否结束,如果子程序结束,将调用次数N减1,进行判断调用次数N,如果子程序没有结束,转入第(六)步;
第(六)步,词法、语法分析,同主程序一样,词法分析和语法分析是基于规则数据库的;其中,语法分析要先建立与语法规则相对应的正则表达式,再由正则表达式匹配程序段;如果发生词法或语法错误,将程序段的行号及错误类型记录入错误链表,并将错误标志置为1;
第(七)步,判断程序段是否子程序调用,如果程序段不是子程序调用,转入第(八)步;如果程序段是子程序调用,将当前程序段指针及调用次数N压入调用堆栈,转入第(二)步,进行记录子程序调用次数N;
第(八)步,判断错误标志,如果错误标志为0,将程序段解析为刀位数据,代码解析基于规则数据库的G代码表和M代码表进行,采用时间片离散方法,NC代码解析后得到若干个刀位数据,刀位数据是在相应时间片里刀具在各坐标上的位移;把刀位数据写入刀位文件,用来驱动虚拟加工和加工仿真过程,转入第(九)步,如果错误标志为1,直接转入第(九)步;
第(九)步,更新当前程序段,将当前程序段指针指向下一个程序段,即将下一个程序段设置为当前程序段,转入第(五)步;
第(十)步,判断是否主程序,如果是主程序,退出子程序处理步骤;否则,转入第(九)步。
CN2006101613376A 2006-12-22 2006-12-22 通用数控代码解析方法 Expired - Fee Related CN101206467B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN2006101613376A CN101206467B (zh) 2006-12-22 2006-12-22 通用数控代码解析方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN2006101613376A CN101206467B (zh) 2006-12-22 2006-12-22 通用数控代码解析方法

Publications (2)

Publication Number Publication Date
CN101206467A CN101206467A (zh) 2008-06-25
CN101206467B true CN101206467B (zh) 2010-09-29

Family

ID=39566738

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2006101613376A Expired - Fee Related CN101206467B (zh) 2006-12-22 2006-12-22 通用数控代码解析方法

Country Status (1)

Country Link
CN (1) CN101206467B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI501059B (zh) * 2013-09-12 2015-09-21 Syntec Inc 用於工具機之工件程式解譯方法
TWI554856B (zh) * 2015-10-30 2016-10-21 財團法人工業技術研究院 加工程式轉換裝置及方法

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101661278B (zh) * 2009-09-09 2012-07-25 北京数码大方科技有限公司 用于数控机床的代码类型识别方法和装置
CN101840217A (zh) * 2010-05-27 2010-09-22 江苏安泰动力机械有限公司 具有逻辑判断的数控程序控制方法
CN102566489B (zh) * 2010-12-09 2013-10-16 中国科学院沈阳计算技术研究所有限公司 一种数控系统解释器的开放式模块化构造方法
CN102929596B (zh) * 2012-09-21 2016-01-06 华为技术有限公司 代码排查方法和相关装置
CN104133421A (zh) * 2014-08-01 2014-11-05 南京埃斯顿自动化股份有限公司 一种基于流程控制的运动控制代码解析方法
WO2016084076A1 (en) * 2014-11-25 2016-06-02 enSilo Ltd. Systems and methods for malicious code detection accuracy assurance
CN104907932B (zh) * 2015-05-12 2017-08-29 上海维宏电子科技股份有限公司 数控磨床系统中通过对话式参数实现加工程序处理的方法
JP6407919B2 (ja) * 2016-06-15 2018-10-17 ファナック株式会社 数値制御装置および変数判定方法
CN108021526A (zh) * 2016-10-28 2018-05-11 沈阳高精数控智能技术股份有限公司 一种用于数控系统串口加工的通讯系统及方法
CN106774168B (zh) * 2016-12-09 2019-06-28 中国电子科技网络信息安全有限公司 一种数控nc代码安全过滤系统
CN107290980B (zh) * 2017-07-11 2021-08-03 深圳国泰安教育技术有限公司 加工仿真的方法、终端设备及计算机可读存储介质
CN108021540B (zh) * 2017-11-09 2023-05-02 中国科学院信息工程研究所 一种面向Hadoop的通用文本格式的解析方法及工具
CN108845804A (zh) * 2017-12-23 2018-11-20 北京邮电大学 一种基于cycle循环的数控代码解释器的设计方法
CN108803494A (zh) * 2018-04-25 2018-11-13 科德数控股份有限公司 数控系统m代码的显示方法
CN112987653B (zh) * 2019-12-17 2022-04-15 深圳市恒控科技有限公司 一种将中文程序转化为g代码的方法和装置
CN111007803B (zh) * 2019-12-20 2024-01-19 武汉理工大学 机械加工过程数控代码标准化集成模型及方法
CN111625523B (zh) * 2020-04-20 2023-08-08 沈阳派客动力科技有限公司 数据合成的方法、装置和设备
CN112276263A (zh) * 2020-10-14 2021-01-29 宁波市博虹机械制造开发有限公司 基于g代码的电火花成型机专用运动控制方法
CN112651213A (zh) * 2020-12-25 2021-04-13 军工保密资格审查认证中心 数控程序的安全审查方法及装置
CN113139716A (zh) * 2021-03-31 2021-07-20 成都飞机工业(集团)有限责任公司 一种数控加工程序包远程自动化防出错校验的方法
CN112764392B (zh) * 2021-04-07 2021-08-03 成都飞机工业(集团)有限责任公司 一种用于防止数控加工中数控程序调用错误的方法
CN113352421B (zh) * 2021-06-04 2022-12-09 浙江工业大学 一种木材侧孔机的多模式加工控制方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1365032A (zh) * 2001-12-29 2002-08-21 天津大学 远程网络监控和二次开发功能的开放式结构数控系统
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
CN1365032A (zh) * 2001-12-29 2002-08-21 天津大学 远程网络监控和二次开发功能的开放式结构数控系统
CN1624613A (zh) * 2004-12-11 2005-06-08 东方汽轮机厂 一种四轴联动数控加工后置处理方法及其控制系统

Non-Patent Citations (5)

* Cited by examiner, † Cited by third party
Title
JP特开2006-293544A 2006.10.26
徐建国,张友良,张谞,张帆.加工过程的可视化仿真.中国机械工程17 12.2006,17(12),562.1-962.1.
徐建国,张友良,张谞,张帆.加工过程的可视化仿真.中国机械工程17 12.2006,17(12),562.1-962.1. *
肖田元,韩向利,王新龙.通用NC代码翻译技术.系统仿真学报10 5.1998,10(5),1-7.
肖田元,韩向利,王新龙.通用NC代码翻译技术.系统仿真学报10 5.1998,10(5),1-7. *

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI501059B (zh) * 2013-09-12 2015-09-21 Syntec Inc 用於工具機之工件程式解譯方法
TWI554856B (zh) * 2015-10-30 2016-10-21 財團法人工業技術研究院 加工程式轉換裝置及方法
US10268184B2 (en) 2015-10-30 2019-04-23 Industrial Technology Research Institute Apparatus and method for transforming NC programs

Also Published As

Publication number Publication date
CN101206467A (zh) 2008-06-25

Similar Documents

Publication Publication Date Title
CN101206467B (zh) 通用数控代码解析方法
CN106227668B (zh) 数据处理方法和装置
CN101292214B (zh) 键盘上速记接口中改进的文本输入
US5594892A (en) Method for automated software application testing
CN107203468B (zh) 一种基于ast的软件版本演化对比分析方法
CN110502227A (zh) 代码补全的方法及装置、存储介质、电子设备
US8346773B2 (en) Product classification system
CN101071378A (zh) 源代码生成方法、设备和程序
CN103123590A (zh) 指令表il程序到c语言程序的编译方法
CN101211175A (zh) 数控系统图形辅助宏编程的设计方法
CN103885770A (zh) 单片机从可执行文件找回汇编文件的实现方法
CN111813670B (zh) 一种非侵入式mc/dc覆盖率统计分析方法
CN111610744A (zh) 基于工艺时序的逻辑控制程序生成方法、系统和存储介质
CN114461521A (zh) 一种基于状态机的plc软件测试用例生成方法和系统
CN103270512A (zh) 智能架构创建器
CN110659200A (zh) 航空机载软件的源码和目标码对比分析方法及系统
CN111381826A (zh) 生成代码文件的语法树的方法、装置及电子设备
CN113001538B (zh) 一种命令解析方法及系统
CN114089980A (zh) 编程处理方法、装置、解释器及非易失性存储介质
CN108845804A (zh) 一种基于cycle循环的数控代码解释器的设计方法
CN114116773A (zh) 一种结构化查询语言sql文本审核方法及装置
CN111381827A (zh) 生成代码文件的语法树的方法、装置及电子设备
CN118331991B (zh) 一种sql建表语法解析和生成的方法
CN116737175B (zh) 译码方法、文件解析方法、解析器、系统及存储介质
CN101587382A (zh) 适用于维哈柯文的文字输入方法

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
CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20100929

Termination date: 20181222