CN113961195A - 一种工业机器人编程语言解释方法 - Google Patents
一种工业机器人编程语言解释方法 Download PDFInfo
- Publication number
- CN113961195A CN113961195A CN202111222543.4A CN202111222543A CN113961195A CN 113961195 A CN113961195 A CN 113961195A CN 202111222543 A CN202111222543 A CN 202111222543A CN 113961195 A CN113961195 A CN 113961195A
- Authority
- CN
- China
- Prior art keywords
- instruction
- variable
- file
- programming language
- industrial robot
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/42—Syntactic analysis
- G06F8/427—Parsing
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Numerical Control (AREA)
- Manipulator (AREA)
Abstract
本发明公开了一种工业机器人编程语言解释方法,包括步骤:将变量信息按照自定义格式存储在变量文件中,将变量文件内的变量信息解析并以链表的形式进行存储;对流程控制指令、语句型指令、指令集中的指令、运算符、特殊符号、变量设置相应的标识并保存至标识文件;输入编辑好的程序文件,将程序文件内的程序代码基于标识文件解释到标记文件中;对标记文件及变量链表进行语法解析,如果有语法错误进行提示,否则执行下一步;基于标记文件及变量链表,对程序代码逐行进行语义解析,最终生成一个指令结构体,并将指令结构体发送到共享内存,待控制器指挥机器人运动。本发明方法操作简单,解析速度快,准确率高,能够调度机器人完成复杂的生产工序。
Description
技术领域
本发明涉及工业机器人领域,具体涉及一种工业机器人编程语言解释方法。
背景技术
作为人机交互的重要接口和机器人实现其智能化的重要方式,机器人语言已经成为机器人数控系统中的一个不可或缺的部分,机器人的作业在很大程度上都依靠用机器人语言编制的程序来完成,其重要性日益凸显。
机器人语言用符号来描述机器人的动作,使机器人能按照编程者的意图完成各种复杂的动作和操作。在实际应用中,根据实际需求,操作者可以编制更复杂程序。那么将编程语言符号进行精准解释,将机器人语言符号根据合理规则转换为中间数据,再将中间数据进行解释并处理,使机器人能够理解编程者的意图进而完成需要的动作,是工业机器人领域研究的一个方向。而机器人编程指令类型众多,每个类型的编程指令又很多,解析过程复杂,导致现有机器人编程语言解释器效率低,扩展难度大。
发明内容
本发明的目的在于提供一种机器人编程语言解释方法,操作简单,解析速度快,准确率高,能够调度机器人完成复杂的生产工序。
实现本发明目的的技术方案为:一种工业机器人编程语言解释方法,包括以下步骤:
将变量信息按照自定义格式存储在变量文件中,输入变量文件,将变量文件内的变量信息解析并以链表的形式进行存储;
对流程控制指令、语句型指令、指令集中的指令、运算符、特殊符号、变量设置相应的标识并保存至标识文件;
编辑程序代码,并输入编辑好的程序文件,将程序文件内的程序代码基于标识文件解释到标记文件中;
对标记文件及变量链表进行语法解析,如果有语法错误进行提示,否则执行下一步;
基于标记文件及变量链表,对程序代码逐行进行语义解析,最终生成一个指令结构体,并将指令结构体发送到共享内存,待控制器指挥机器人运动。
进一步的,所述变量信息的自定义格式为变量名称:类型:=变量值,所述变量链表记录了变量的名称、类型、结构及变量值。
进一步的,所述程序文件通过机器人示教进行在线编辑,或通过文本编辑软件进行离线编辑。
进一步的,所述编辑编辑程序代码时,指令集中指令语句格式为:CMD(param1,param2,……,paramN),其中,CMD为指令集中指令,param1,param2,……,paramN为该指令的参数,参数为自定义变量或具体数值,指令集包括运动指令、设置指令、输入输出指令及系统功能指令。
进一步的,所述编辑编辑程序代码时,流程控制指令语句的格式为:
Process
指令语句
End_process
其中Process为流程控制语句,指令语句为指令集中指令、语句型指令或多次嵌套流程控制指令语句,End_process表示结束。
进一步的,所述标记文件以文本行进行存储,每行内容的格式为“程序代码行号,标记1,[值1],……,标记n,[值n]<CR><LF>”,<CR><LF>为回车换行符。
进一步的,所述对标记文件进行语法解析为对标记文件中的每一行语句依次进行语法检查,对于流程控制指令语句,检查表达式是否合法,指令语句串是否配对;对于指令集中指令,检查其参数个数是否正确,参数类型是否合法。
进一步的,对于流程控制指令语句,利用指令堆栈对其进行语义解析,栈内容保存该指令的行号和表达式的值。
进一步的,对语句型指令解析具体为:通过操作符堆栈存储操作符,从变量链表中获取该表达式中用到的变量及其初值,通过操作数堆栈存储操作数,进而对表达式求值并将其存储至值结果堆栈中。
进一步的,对指令集中指令进行语义解析的指令结构体的第一位为指令标识,之后依次为指令中用到的变量的值、变量的类型、包含的结点数及每个结点的值。
本发明与现有技术相比,其显著效果为:(1)本发明定义了变量格式、指令集中指令语句格式及流程控制指令语句的格式,因为语法结构统一,因此编程时操作简单,容易实现;(2)本发明方法解析速度快,可边解释边执行,执行效率高;(3)本发明解析的准确率高,可保证高度的安全性,能够调度机器人完成复杂的生产工序。
附图说明
图1为本发明方法的整体流程图。
图2为本发明方法中各个步骤输入输出关系图。
具体实施方式
下面将结合附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
结合图1和图2,本发明提供的一种机器人编程语言解释方法,包括:
步骤1,对于一般单一指令,定义格式为:
CMD(param1,param2,……,paramN)
其中,CMD为指令集中指令,param1,param2,……,paramN为该指令的参数,参数可以为用户自定义变量,也可以是具体数值,指令集包括运动指令、设置指令、输入输出指令及系统功能指令。
对于流程控制语句,定义格式为:
Process
指令语句
End_process
其中Process为IF、WHILE等流程控制语句,中间的指令语句可以为单一指令、表达式,也可以多次嵌套流程语句,最后以End_process结束。
步骤2,输入变量文件,将变量文件内的变量信息存放到计算机内存自定义的变量链表中;用户自定义变量存储在变量文件中,格式为(变量名称:类型:=值),通过变量解析将变量信息以链表的形式进行存储,信息详细记录了变量的名称、类型、结构及变量值;
步骤3,输入程序文件,将程序文件内的程序代码(包括流程控制指令、语句型指令以及指令集中指令)解释到标记文件中;
程序文件可以通过示教进行在线编辑,也可以使用文本编辑软件在电脑中进行离线编辑。每一个运动指令、语句型指令、运算符、特殊符号、变量都有相应的标识,标识方法记录在特定文件中,本解释方法按照定义好的标识方法将程序代码中的指令语句解释到标记文件中,标记文件以文本行进行存储,一行内容的格式为“行号,标记1,[值1],……,标记n,[值n]<CR><LF>”,<CR><LF>为回车换行符。
步骤4,输入标记文件及变量链表,对语法进行解析,有错误进行提示;本解释方法对标记文件中的每一行语句依次进行语法检查。对于流程控制型指令,检查表达式是否合法,指令语句串是否配对;对于单一指令,检查其参数个数是否正确,参数类型是否合法。如果有错误,进行提示。
步骤5,输入标记文件及变量链表,对标记文件中的每一行语句依次进行语义检查,将结果存放在指令结构体中,再将本条语句的指令结构体发送到共享内存,等待控制器指挥机器人运动。
对于流程控制指令(主要包括选择指令,循环指令,与机器人编程指令集中的指令配合一起使用),利用指令堆栈对其进行解析,栈内容保存该指令的行号和表达式的值。
对于表达式运算语句(语句型指令,为运算表达式),利用操作符堆栈存储操作符,从变量链表中获取该表达式中用到的变量及其初值,利用操作数堆栈存储操作数,进而对表达式求值,最后利用值结果堆栈存储最终结果。
对于指令集中的运动指令、设置指令、输入输出指令及系统功能指令,本解释方法将其解析结果存储到指令结构体中。指令结构体的第一位为指令标识,此后依次为指令中用到的变量的值,变量的类型不同,其包含的结点数也不同,在指令结构体中变量每个结点的值也会被详细记录。
本实施例提供的一种工业机器人编程语言解释方法,通过对指令集中的大部分指令(包括运动指令、设置指令、输入输出指令及系统功能指令)、流程控制型指令、运算符、特殊符号、变量建立一套标定方法,按照定义好的标识方法对机器人编程语言进行解释。操作者通过示教编程或者离线编程方式输入源程序代码文件,再提供要用到的变量文件,本方法通过变量分析、词法分析、语法分析及语义解析四个步骤将运动指令程序代码进行解释并将解析结果存放到指令结构体中,机器人控制器读取该结构体信息来指挥机器人运动,完成指定动作。
实施例
本实施例提供的一种机器人编程语言解释方法,编写程序文件test.tip,其中程序代码为:
PTP(ap0)
abc:=abc+1
LOOP 2DO
Lin(ap0,dyn0)
END_LOOP
IF abc>0THEN
y=2
ELSE
y=3
END_IF
WaitTime(y)
涉及的变量的格式为:(变量名称:类型:=值),变量文件test.tid内容如下:
ap0:AXISPOS:=(a1:=3.1,a2:=4.2,a3:=5.3,a4:=6.4,a5:=7.5,a6:=8.6)
dyn0:DYNAMIC:=(50,60,0,0,30,40,0,10)
abc:DINT CONST:=100
y:DINT
对test.tip源程序文件的具体的解释过程如下:
(1)生成变量链表programVarList,链表中存放上述test.tid中四个变量的名称、类型、值。
(2)将test.tip的程序代码解释到标记文件test.tmp中。每一行内容的格式为“行号,标记1,[值1],……,标记n,[值n]”。如第一行“PTP(ap0)”被解释为“1,257,,28,,19,ap0,29,”,其中,1表示行号;257表示PTP点到点命令,没有值;28表示左括号,没有值;19表示变量,值为“ap0”;29表示右括号,没有值。
test.tmp标记文件内容如下:
1,257,,28,,19,ap0,29,
2,19,abc,27,,19,abc,41,,16,1
3,1545,,16,2,1543,
4,258,,28,,19,ap0,22,,19,dyn0,29,
5,1546,
6
7,1537,,19,abc,32,,16,0,1538,
8,19,y,31,,16,2
9,1539,
10,19,y,31,,16,3
11,1541,
12,769,,28,,19,y,29,
13
(3)检查PTP、Lin指令参数个数、参数类型是否合法,检查LOOP中表达式是否合法,是否有END_LOOP语句配对,检查IF命令中表达式是否合法,ELSE、END_IF语句是否配对。如果没有错误,解释过程继续执行下一步,否则程序报错。
(4)生成指令结构体,包含PTP命令及两个Lin命令,PTP的参数ap0、其类型AXISPOS及其各个结点a1-a6的值,Lin的参数ap0、其类型AXISPOS及其各个结点a1-a6的值,参数dyn0、其类型DYNAMIC及其各个结点的值。将指令结构体传送到共享内存,等待控制器读取该结构体信息来指挥机器人六轴运动,完成指定的点到点以及直线运动。
Claims (10)
1.一种工业机器人编程语言解释方法,其特征在于,包括以下步骤:
将变量信息按照自定义格式存储在变量文件中,输入变量文件,将变量文件内的变量信息解析并以链表的形式进行存储;
对流程控制指令、语句型指令、指令集中的指令、运算符、特殊符号、变量设置相应的标识并保存至标识文件;
编辑程序代码,并输入编辑好的程序文件,将程序文件内的程序代码基于标识文件解释到标记文件中;
对标记文件及变量链表进行语法解析,如果有语法错误进行提示,否则执行下一步;
基于标记文件及变量链表,对程序代码逐行进行语义解析,最终生成一个指令结构体,并将指令结构体发送到共享内存,待控制器指挥机器人运动。
2.根据权利要求1所述的工业机器人编程语言解释方法,其特征在于,所述变量信息的自定义格式为变量名称:类型:=变量值,所述变量链表记录了变量的名称、类型、结构及变量值。
3.根据权利要求1所述的工业机器人编程语言解释方法,其特征在于,所述程序文件通过机器人示教进行在线编辑,或通过文本编辑软件进行离线编辑。
4.根据权利要求1所述的工业机器人编程语言解释方法,其特征在于,所述编辑编辑程序代码时,指令集中指令语句格式为:CMD(param1,param2,……,paramN),其中,CMD为指令集中指令,param1,param2,……,paramN为该指令的参数,参数为自定义变量或具体数值,指令集包括运动指令、设置指令、输入输出指令及系统功能指令。
5.根据权利要求1所述的工业机器人编程语言解释方法,其特征在于,所述编辑编辑程序代码时,流程控制指令语句的格式为:
Process
指令语句
End_process
其中Process为流程控制语句,指令语句为指令集中指令、语句型指令或多次嵌套流程控制指令语句,End_process表示结束。
6.根据权利要求2所述的工业机器人编程语言解释方法,其特征在于,所述标记文件以文本行进行存储,每行内容的格式为“程序代码行号,标记1,[值1],……,标记n,[值n]<CR><LF>”,<CR><LF>为回车换行符。
7.根据权利要求1所述的工业机器人编程语言解释方法,其特征在于,所述对标记文件进行语法解析为对标记文件中的每一行语句依次进行语法检查,对于流程控制指令语句,检查表达式是否合法,指令语句串是否配对;对于指令集中指令,检查其参数个数是否正确,参数类型是否合法。
8.根据权利要求1所述的工业机器人编程语言解释方法,其特征在于,对于流程控制指令语句,利用指令堆栈对其进行语义解析,栈内容保存该指令的行号和表达式的值。
9.根据权利要求1所述的工业机器人编程语言解释方法,其特征在于,对语句型指令解析具体为:通过操作符堆栈存储操作符,从变量链表中获取该表达式中用到的变量及其初值,通过操作数堆栈存储操作数,进而对表达式求值并将其存储至值结果堆栈中。
10.根据权利要求1所述的工业机器人编程语言解释方法,其特征在于,对指令集中指令进行语义解析的指令结构体的第一位为指令标识,之后依次为指令中用到的变量的值、变量的类型、包含的结点数及每个结点的值。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111222543.4A CN113961195A (zh) | 2021-10-20 | 2021-10-20 | 一种工业机器人编程语言解释方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111222543.4A CN113961195A (zh) | 2021-10-20 | 2021-10-20 | 一种工业机器人编程语言解释方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113961195A true CN113961195A (zh) | 2022-01-21 |
Family
ID=79464913
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111222543.4A Pending CN113961195A (zh) | 2021-10-20 | 2021-10-20 | 一种工业机器人编程语言解释方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113961195A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114153464A (zh) * | 2022-02-10 | 2022-03-08 | 广东天太机器人有限公司 | 一种工业机器人编程与解析的方法与存储介质 |
-
2021
- 2021-10-20 CN CN202111222543.4A patent/CN113961195A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114153464A (zh) * | 2022-02-10 | 2022-03-08 | 广东天太机器人有限公司 | 一种工业机器人编程与解析的方法与存储介质 |
CN114153464B (zh) * | 2022-02-10 | 2022-05-03 | 广东天太机器人有限公司 | 一种工业机器人编程与解析的方法与存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9063535B2 (en) | Numerical control program execution by robot | |
CN111580806A (zh) | 一种协作机器人图形化编程系统 | |
CN104239115A (zh) | 一种plc编程语言的编译方法 | |
CN101968767A (zh) | 基于宏程序的代码调试及仿真的方法和装置 | |
CN103386685A (zh) | 一种机器人编程控制方法 | |
CN106737676A (zh) | 一种基于脚本可二次开发的工业机器人编程系统 | |
CN113961195A (zh) | 一种工业机器人编程语言解释方法 | |
JPH1091476A (ja) | プログラム実行装置及び機能仕様とコードアドレスとの対応付け方法 | |
CN113836702A (zh) | 机器人示教编程方法及机器人示教编程装置 | |
CN110861085A (zh) | 一种基于VxWorks的机械臂指令解释器系统 | |
US20210026609A1 (en) | Support device and non-transitory computer-readable recording medium | |
Koziolek et al. | LLM-based Control Code Generation using Image Recognition | |
Guo et al. | A universal NC program processor design and prototype implementation for CNC systems | |
Zuo et al. | Building open CNC systems with software IC chips based on software reuse | |
CN113561173A (zh) | 基于wince平台的运动控制器及其编码解码及轨迹规划方法 | |
CN116262347A (zh) | 一种基于图形拖拽编程的机器人控制方法及控制系统 | |
CN108845804A (zh) | 一种基于cycle循环的数控代码解释器的设计方法 | |
US11960890B2 (en) | Heterogeneous embedded method and device for tabular processing and execution of operation flow | |
CN112549023A (zh) | 基于TCP socket接口工业机器人示教器模式与协程控制方法 | |
JP2002268896A (ja) | 制御プログラム作成方法とその装置 | |
CN102662728A (zh) | 一种算法验证方法及系统 | |
CN116737175B (zh) | 译码方法、文件解析方法、解析器、系统及存储介质 | |
CN101382783A (zh) | 可编程逻辑控制器的程序机械码编译方法 | |
CN107612919B (zh) | 协议配置方法及装置 | |
JP4443436B2 (ja) | 制御システムおよび制御方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
CB02 | Change of applicant information |
Address after: 222061 No.18, Shenghu Road, Lianyungang City, Jiangsu Province Applicant after: The 716th Research Institute of China Shipbuilding Corp. Applicant after: JIANGSU JARI TECHNOLOGY GROUP Co.,Ltd. Address before: 222061 No.18, Shenghu Road, Lianyungang City, Jiangsu Province Applicant before: 716TH RESEARCH INSTITUTE OF CHINA SHIPBUILDING INDUSTRY Corp. Applicant before: JIANGSU JARI TECHNOLOGY GROUP Co.,Ltd. |
|
CB02 | Change of applicant information |