CN101968767A - 基于宏程序的代码调试及仿真的方法和装置 - Google Patents
基于宏程序的代码调试及仿真的方法和装置 Download PDFInfo
- Publication number
- CN101968767A CN101968767A CN 201010515758 CN201010515758A CN101968767A CN 101968767 A CN101968767 A CN 101968767A CN 201010515758 CN201010515758 CN 201010515758 CN 201010515758 A CN201010515758 A CN 201010515758A CN 101968767 A CN101968767 A CN 101968767A
- Authority
- CN
- China
- Prior art keywords
- program
- code
- macroprogram
- debugging
- emulation
- 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.)
- Pending
Links
Images
Landscapes
- Debugging And Monitoring (AREA)
Abstract
本发明为一种基于宏程序的代码调试及仿真的方法和装置,其中所述的方法包括的步骤为:步骤a:输入加工代码程序;步骤b:以程序段为单位编译所述的代码程序,建立语句树;步骤c:遍历所述语句树,计算结果,生成轨迹数据;步骤d:选择进入调试和仿真环境;步骤e:进行单段执行或是断点设置执行到某一程序段。
Description
技术领域
本发明涉及的是一种数控加工代码程序调试和仿真方法和装置,特别涉及的是一种基于宏程序的代码调试及仿真的方法和装置。
背景技术
随着全球竞争日益剧烈,数控加工作为保证产品质量、提高劳动生产率及实现自动化的重要手段被广泛应用到汽车、航空、模具等各个制造领域。而数控机床是否能充分发挥其作用,重要的一点在于其所使用的数控程序的效率和易用性。在实际生产中有很多结构相似、尺寸不同的零件,如果每批零件都去编制数控加工程序,将浪费大量时间。充分利用宏程序是解决这些问题非常有效的措施。包含有变量、转向、比较判断等功能的指令称为宏指令,包含有宏指令的程序称为宏程序。对于反复进行同一切削动作的程序,可以使用宏程序进行编制,简单的宏指令代表了复杂的加工动作。
数控机床加工零件是靠数控指令程序控制完成的。为确保数控程序的正确性,防止加工过程中干涉和碰撞的发生,在实际生产中,常采用试切的方法进行检验。但这种方法费工费料,代价昂贵,使生产成本上升,增加了产品加工时间和生产周期。后来又采用轨迹显示法,即以划针或笔代替刀具,以着色板或纸代替工件来仿真刀具运动轨迹的二维图形(也可以显示二维半的加工轨迹),有相当大的局限性。对于工件的三维和多维加工,也有用易切削的材料代替工件(如,石蜡、木料、改性树脂和塑料等)来检验加工的切削轨迹。但是,试切要占用数控机床和加工现场。
同时仍然存在以下问题:
1)编写宏程序,主要是采用手工编写加工代码,耗费时间较长,容易出现错误,无法胜任复杂形状零件的编程。据国外资料统计,当采用手工编程时,一段程序的编写时间与其在机床上运行加工的实际时间之比,平均约为30∶1,而数控机床不能开动的原因中有20%~30%是由于加工程序编制困难,编程时间较长。
2)使用CAM软件进行自动编程,是解决了手工编写的问题,但生成的加工代码比较长,不具有通用性,换一个类似的零件,还得需要重新生成程序代码。
3)宏程序调试困难,无法显示变量的中间值,真实的模拟程序的运行、程序的跳转。
鉴于上述缺陷,本发明创作者经过长时间的研究和实践终于获得了本创作。
发明内容
本发明的目的在于,提供一种基于宏程序的代码调试及仿真的方法和装置,用以克服现有技术中存在的缺陷。
为实现上述目的,本发明采用的技术方案在于,首先提供一种基于宏程序的代码调试及仿真的方法,其包括的步骤为:
步骤a:输入加工代码程序;
步骤b:以程序段为单位编译所述的代码程序,建立语句树;
步骤c:遍历所述语句树,计算结果,生成轨迹数据;
步骤d:选择进入调试和仿真环境;
步骤e:进行单段执行或是断点设置执行到某一程序段。
其中,所述的步骤b包括:
步骤b1:建立所述语句树的头节点;
步骤b2:判断正在编译的程序段是否有错误,如果有错误显示错误信息,执行下述步骤b4;
步骤b3:建立语句结点,并与所述语句树中对应的父节点建立连接,判断是否还有程序段没有编译完成,是,则编译下一程序段并执行上述步骤b2,否,则执行下述步骤b4;
步骤b4:完成。
其中,所述的步骤e包括:
步骤e1:在每一程序段,设置唯一标识的特征,作为断点执行或程序跳转的标识;
步骤e2:建立一个变量表,存储变量信息;
步骤e3:对语句树的每一结点进遍历;
步骤e4:当变量信息中的变量值发生变化时,更新变量表中变量信息。
其次提供一种基于宏程序的代码调试及仿真的装置,其包括:
一输入模块,其用以输入加工代码程序;
一反读模块,以程序段为单位编译所述的代码程序,建立语句树;
一执行模块,遍历所述语句树,计算结果,生成轨迹数据;
一启动模块,用以选择进入调试和仿真环境;
一调试和仿真模块,用以进行单段执行或是断点设置执行到某一程序段。
较佳的,所述的反读模块中还设有判断单元,用以判断程序段解析是否有错误。
较佳的,还包括:一显示模块,其用以进行代码显示、图形显示、变量显示以及错误提示。
与现有技术比较本发明的有益效果在于,解决了宏程序的编辑与调试问题;降低了操作难度和风险,增强了加工的安全性,提高了产品加工的合格率;减少加工准备时间,提高了生产效率。节省了资金,降低了成本。
附图说明
图1为本发明基于宏程序的代码调试及仿真的方法实施例的流程图;
图2为本发明基于宏程序的代码调试及仿真的方法中宏程序的分类示意图;
图3为本发明基于宏程序的代码调试及仿真的方法中语句树实施例的结构图;
图4为本发明基于宏程序的代码调试及仿真的方法中调试的流程图;
图5为本发明基于宏程序的代码调试及仿真的装置的较佳实施例的功能结构框图。
具体实施方式
以下结合附图,对本发明上述的和另外的技术特征和优点作更详细的说明。
对于本具体实施方式而言,加工代码程序理解为:一个数控加工代码是由多个程序段组成的,每个程序段执行一个加工步骤,而一个程序段又可以由若干个字组成,字是组成程序段的基本元素,由字构成数控系统的指令。随着数控技术的发展,现在大多数数控系统不仅能够处理一般的准备功能和辅助功能,而且能够处理宏程序。
宏程序是数控编程的重要补充,其中变量的用途有:运算、递增量或递减量、与一个表达式比较后,决定是否实现跳转功能的条件分支、将变量值传递到零件程序中去;其中运算又包括:算术运算(赋值、加、减、乘、除、绝对值、四舍五入等);函数运算(正弦、余弦、正切、反正切、平方根等);逻辑操作(与、或);比较操作(等于、大于、小于、大于或等于、小于或等于、不等于)。
请参阅图1所示,其为本发明基于宏程序的代码调试及仿真的方法实施例的流程图;所述的基于宏程序的代码调试及仿真的方法,其包括的步骤为:
步骤a:输入加工代码程序;
步骤b:以程序段为单位编译所述的代码程序,建立语句树;
步骤c:遍历所述语句树,计算结果,生成轨迹数据;
步骤d:选择进入调试和仿真环境;
步骤e:选择单段执行或设置断点执行到某一程序段。
较佳的,上述步骤b包括:
步骤b1:建立所述语句树的头节点;
步骤b2:判断正在编译的程序段是否有错误,如果有错误显示错误信息,执行下述步骤b4;
步骤b3:建立语句结点,并与所述语句树中对应的父节点建立连接,判断是否还有程序段没有编译完成,是,则编译下一程序段并执行上述步骤b2,否,则执行下述步骤b4;
步骤b4:完成。
上述步骤b2所述的错误原因通常分为两类,一类是解析时出错,主要是语法错误,如语句的格式错误、字符串无法识别等;另一类是执行出错,如循环超过最大循环次数限制,变量没有定义等错误。错误信息将告知编程人员哪一个程序段的哪里出错了,出了什么问题,极大地提示编程人员,帮助其更快的解决程序中的错误。
本发明基于宏程序的代码调试及仿真的方法中步骤b和步骤e尤为重要,参阅图2所示,其为本发明基于宏程序的代码调试及仿真的方法中宏程序的分类示意图;根据加工代码的特点,本发明将程序段语句分为G代码语句、循环定义语句、变量定义语句、变量赋值语句、WHILE语句、IF语句、GOTO语句、子程序语句、模态调用语句等。每一种语句,均是从“语句类”派生。
如果加工代码解析没有错误时,则建立语句树。语句树由一系列的语句结点组成,直观地表示了各个语句之间的关系,即父子关系与兄弟关系。
请参阅图3所示,其为本发明基于宏程序的代码调试及仿真的方法中语句树实施例的结构图;其是以下面一段程序语言为例建立的,并且建立语句树是实现本发明的一个关键:
O0001;
#1=0;
#2=1;
WHILE[#2 LE 10]DO 1;
#1=#1+#2;
#2=#2+1;
END 1;
M30;
WHILE语句是宏程序中的一种,DO标志作用域开始,END标志作用域结束。作用域内的语句结点均为WHILE语句结点的子结点,也就是说WHILE是它们的父结点。每编译一个程序段,如果没有错误,就生成一个语句结点,就联结到语句树的相应位置。
请参阅图4所示,其为本发明基于宏程序的代码调试及仿真的方法中调试的流程图;其是针对上述步骤e所述的进行单段执行或是断点设置执行到某一程序段,其实现的步骤为:
步骤e1:在每一程序段,设置唯一标识的特征,作为断点执行或程序跳转的标识;
步骤e2:建立一个变量表,存储变量信息;
步骤e3:对语句树的每一结点进遍历;
步骤e4:当变量信息中的变量值发生变化时,更新变量表中变量信息。
编程人员可以在变量watch窗口中,键入需要观察的变量名,以确定程序是否与要求的一致。
编程人员可以选择单步执行程序,或者断点执行到某一段。
在调试与仿真过程中,通过实时显示变量、轨迹,通过观察代码、变量、轨迹三者相互关系,可以简单地确定程序是否满足要求,哪里不合要求,需要怎么调整。
利用此发明可以对多种数控系统的加工代码进行仿真与调试,支持宏程序的调试与仿真,极大的方便了编程人员编写代码、检验代码。
本发明可用于机床数控系统、CAM软件使用。
基于上述的思想,本发明同时还提供一种基于宏程序的代码调试及仿真的装置。
请参阅图5所示,其为本发明基于宏程序的代码调试及仿真的装置的较佳实施例的功能结构框图,其包括:
一输入模块1,其用以输入加工代码程序;
一反读模块2,以程序段为单位编译所述的代码程序,建立语句树,其首先设置所述语句树的父节点;判断正在编译的程序段是否有错误,如果有错误显示错误信息,完成编译;如果没有错误,则建立语句结点,并与所述语句树中对应的父节点建立连接,然后对下一个程序段进行编译,直到所有的加工代码全部解析完成,此时对应的语句树就建立起来了。
一执行模块3,遍历所述语句树,计算结果,生成轨迹数据;
一启动模块4,用以选择进入调试和仿真环境;
一调试和仿真模块5,用以进行单段执行或是断点设置执行到某一程序段,其首先在每一程序段,设置唯一标识的特征,作为断点执行或程序跳转的标识;然后建立一个变量表,存储变量信息;对语句树的每一结点进遍历;当变量信息中的变量值发生变化时,更新变量表中变量信息。
较佳的,所述的反读模块2中还设有判断单元21,用以判断程序段解析是否有错误。
较佳的,还包括:一显示模块6,其用以进行代码显示、图形显示、变量显示以及错误提示。
以上所述仅为本发明的较佳实施例,对本发明而言仅仅是说明性的,而非限制性的。本专业技术人员理解,在本发明权利要求所限定的精神和范围内可对其进行许多改变,修改,甚至等效,但都将落入本发明的保护范围内。
Claims (6)
1.一种基于宏程序的代码调试及仿真的方法,其特征在于,其包括的步骤为:
步骤a:输入加工代码程序;
步骤b:以程序段为单位编译所述的代码程序,建立语句树;
步骤c:遍历所述语句树,计算结果,生成轨迹数据;
步骤d:选择进入调试和仿真环境;
步骤e:进行单段执行或是断点设置执行到某一程序段。
2.根据权利要求1所述的基于宏程序的代码调试及仿真的方法,其特征在于,所述的步骤b包括:
步骤b1:建立所述语句树的头节点;
步骤b2:判断正在编译的程序段是否有错误,如果有错误显示错误信息,执行下述步骤b4;
步骤b3:建立语句结点,并与所述语句树中对应的父节点建立连接,判断是否还有程序段没有编译完成,是,则编译下一程序段并执行上述步骤b2,否,则执行下述步骤b4;
步骤b4:完成。
3.根据权利要求2所述的基于宏程序的代码调试及仿真的方法,其特征在于,所述的步骤e包括:
步骤e1:在每一程序段,设置唯一标识的特征,作为断点执行或程序跳转的标识;
步骤e2:建立一个变量表,存储变量信息;
步骤e3:对语句树的每一结点进遍历;
步骤e4:当变量信息中的变量值发生变化时,更新变量表中变量信息。
4.一种基于宏程序的代码调试及仿真的装置,其特征在于:其包括:
一输入模块,其用以输入加工代码程序;
一反读模块,以程序段为单位编译所述的代码程序,建立语句树;
一执行模块,遍历所述语句树,计算结果,生成轨迹数据;
一启动模块,用以选择进入调试和仿真环境;
一调试和仿真模块,用以进行单段执行或是断点设置执行到某一程序段。
5.根据权利要求4所述的基于宏程序的代码调试及仿真的装置,其特征在于:所述的反读模块中还设有判断单元,用以判断程序段解析是否有错误。
6.根据权利要求5所述的基于宏程序的代码调试及仿真的装置,其特征在于:还包括:一显示模块,其用以进行代码显示、图形显示、变量显示以及错误提示。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201010515758 CN101968767A (zh) | 2010-10-15 | 2010-10-15 | 基于宏程序的代码调试及仿真的方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201010515758 CN101968767A (zh) | 2010-10-15 | 2010-10-15 | 基于宏程序的代码调试及仿真的方法和装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN101968767A true CN101968767A (zh) | 2011-02-09 |
Family
ID=43547927
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 201010515758 Pending CN101968767A (zh) | 2010-10-15 | 2010-10-15 | 基于宏程序的代码调试及仿真的方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101968767A (zh) |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103048952A (zh) * | 2013-01-22 | 2013-04-17 | 北京数码大方科技股份有限公司 | 机床加工代码的验证方法、装置及系统 |
CN103777574A (zh) * | 2013-12-26 | 2014-05-07 | 柳州正菱集团有限公司 | 一种数控铣齿机的系统调试方法 |
CN104145249A (zh) * | 2012-02-29 | 2014-11-12 | 飞思卡尔半导体公司 | 调试方法和计算机程序产品 |
CN110263055A (zh) * | 2019-06-18 | 2019-09-20 | 上海达梦数据库有限公司 | 一种参数提示方法、装置、设备和存储介质 |
CN111324401A (zh) * | 2018-12-17 | 2020-06-23 | 西门子股份公司 | 工件加工程序可视化方法、装置、系统及存储介质 |
CN111804932A (zh) * | 2020-05-25 | 2020-10-23 | 山西太钢不锈钢股份有限公司 | 利用宏程序车削不同走刀轮廓拉伸试样的方法 |
US11481200B1 (en) | 2021-10-11 | 2022-10-25 | International Business Machines Corporation | Checking source code validity at time of code update |
CN115562174A (zh) * | 2022-12-01 | 2023-01-03 | 大方智造(天津)科技有限公司 | 一种基于g代码的机床随动切削仿真方法 |
CN115601527A (zh) * | 2022-11-28 | 2023-01-13 | 大方智造(天津)科技有限公司(Cn) | 一种基于g代码的创建试削毛坯方法 |
US11947966B2 (en) | 2021-10-11 | 2024-04-02 | International Business Machines Corporation | Identifying computer instructions enclosed by macros and conflicting macros at build time |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1118473A (zh) * | 1994-06-30 | 1996-03-13 | 坦德姆计算机公司 | 计算机程序中错误的诊断和改正工具及方法 |
CN101055542A (zh) * | 2007-05-28 | 2007-10-17 | 中兴通讯股份有限公司 | 一种交叉集成开发环境中的符号调试方法及系统 |
CN101650651A (zh) * | 2009-09-17 | 2010-02-17 | 浙江大学 | 一种源代码级别程序结构的可视化方法 |
-
2010
- 2010-10-15 CN CN 201010515758 patent/CN101968767A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1118473A (zh) * | 1994-06-30 | 1996-03-13 | 坦德姆计算机公司 | 计算机程序中错误的诊断和改正工具及方法 |
CN101055542A (zh) * | 2007-05-28 | 2007-10-17 | 中兴通讯股份有限公司 | 一种交叉集成开发环境中的符号调试方法及系统 |
CN101650651A (zh) * | 2009-09-17 | 2010-02-17 | 浙江大学 | 一种源代码级别程序结构的可视化方法 |
Cited By (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104145249A (zh) * | 2012-02-29 | 2014-11-12 | 飞思卡尔半导体公司 | 调试方法和计算机程序产品 |
CN104145249B (zh) * | 2012-02-29 | 2017-08-15 | 飞思卡尔半导体公司 | 用于调试计算机程序的方法和系统 |
CN103048952A (zh) * | 2013-01-22 | 2013-04-17 | 北京数码大方科技股份有限公司 | 机床加工代码的验证方法、装置及系统 |
CN103048952B (zh) * | 2013-01-22 | 2016-04-27 | 北京数码大方科技股份有限公司 | 机床加工代码的验证方法、装置及系统 |
CN103777574A (zh) * | 2013-12-26 | 2014-05-07 | 柳州正菱集团有限公司 | 一种数控铣齿机的系统调试方法 |
CN111324401A (zh) * | 2018-12-17 | 2020-06-23 | 西门子股份公司 | 工件加工程序可视化方法、装置、系统及存储介质 |
CN110263055A (zh) * | 2019-06-18 | 2019-09-20 | 上海达梦数据库有限公司 | 一种参数提示方法、装置、设备和存储介质 |
CN111804932B (zh) * | 2020-05-25 | 2022-10-18 | 山西太钢不锈钢股份有限公司 | 利用宏程序车削不同走刀轮廓拉伸试样的方法 |
CN111804932A (zh) * | 2020-05-25 | 2020-10-23 | 山西太钢不锈钢股份有限公司 | 利用宏程序车削不同走刀轮廓拉伸试样的方法 |
US11481200B1 (en) | 2021-10-11 | 2022-10-25 | International Business Machines Corporation | Checking source code validity at time of code update |
US11675575B2 (en) | 2021-10-11 | 2023-06-13 | International Business Machines Corporation | Checking source code validity at time of code update |
US11947966B2 (en) | 2021-10-11 | 2024-04-02 | International Business Machines Corporation | Identifying computer instructions enclosed by macros and conflicting macros at build time |
CN115601527A (zh) * | 2022-11-28 | 2023-01-13 | 大方智造(天津)科技有限公司(Cn) | 一种基于g代码的创建试削毛坯方法 |
CN115601527B (zh) * | 2022-11-28 | 2023-03-10 | 大方智造(天津)科技有限公司 | 一种基于g代码的创建试削毛坯方法 |
CN115562174A (zh) * | 2022-12-01 | 2023-01-03 | 大方智造(天津)科技有限公司 | 一种基于g代码的机床随动切削仿真方法 |
CN115562174B (zh) * | 2022-12-01 | 2023-03-24 | 大方智造(天津)科技有限公司 | 一种基于g代码的机床随动切削仿真方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101968767A (zh) | 基于宏程序的代码调试及仿真的方法和装置 | |
CN103552071A (zh) | 一种智能机器人的编程方法 | |
EP2417498B1 (en) | Method for automatically partitioning a part program into fundamental operations | |
CN103279418B (zh) | 一种组态控制信息的测试方法和装置 | |
CN110096033A (zh) | 一种校对数控程序精准度的方法 | |
CN105320806B (zh) | PML结合Excel-VBA处理数据汇总核电工艺管道材料的方法 | |
CN103454972A (zh) | 基于ug nx api的刀具五轴数控磨削加工自动编程的方法 | |
CN104875204A (zh) | 一种等离子空间切割机器人的离线编程模块及应用方法 | |
CN105867309A (zh) | 一种多类型组合孔群数控加工方法 | |
CN111103848B (zh) | 加工汽轮机转子末叶插入槽的数控程序的编制方法及系统 | |
CN102968539A (zh) | 一种格式图纸的批量快速生成方法 | |
CN111993419B (zh) | 基于pdps的机器人离线制作方法及其装置、计算机终端设备 | |
CN114064009A (zh) | 圆孔铣削的加工方法及加工装置、电子设备、存储介质 | |
Lundgren et al. | Process design as fundament in efficient process planning | |
CN105137919B (zh) | 一种生成特征阵列数控宏程序的方法 | |
CN111985056A (zh) | 一种可实现快速工艺规划的机加件设计方法 | |
Zhang et al. | Advancing Building Energy Modeling with Large Language Models: Exploration and Case Studies | |
JP5763352B2 (ja) | Ncプログラム作成装置 | |
Wang et al. | Visual teaching design of compile principle based on JFLAP | |
CN114029931B (zh) | 机器人编程控制的方法、装置和机器人系统 | |
Oueslati et al. | A novel R-UML-B approach for modeling and code generation of reconfigurable control systems | |
CN115618530B (zh) | 一种基于3d模型的圆孔特征识别加工方法 | |
JP7328080B2 (ja) | 産業用機械のプログラムシミュレーションシステム及び数値制御システム | |
CN102566489B (zh) | 一种数控系统解释器的开放式模块化构造方法 | |
US8831927B2 (en) | Apparatus and method for reducing energy use in industrial processes |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C12 | Rejection of a patent application after its publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20110209 |