机器人编程语言_第1页
机器人编程语言_第2页
机器人编程语言_第3页
机器人编程语言_第4页
机器人编程语言_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

T/CAMETAXXXXX-20XXⅡT/BTIAIRIXXXXX-20XX机器人编程语言1范围本文件规定了工业机器人、协作机器人和多关节型的服务机器人的编程语言,以及编程语言中的指令类型、功能和用法。本文件适用于工业机器人、协作机器人和多关节型的服务机器人。2术语和定义2.1模块Module一组相关功能的程序集合,用于代码组织和复用,是程序编译和加载时的基本单元。2.2程序Program按照特定顺序组织的指令和数据集合,用于控制机器人执行特定任务。2.3标识符Identifier是由用户定义的、用于命名程序实体(如变量、函数、类等)的字符串。2.4数据data是程序中可被操作的基本对象,包括数值、字符、逻辑值等,以及由这些基本元素构成的结构化类型(如数组、记录)。2.5变量Variable是程序运行时其值可以改变的量,用于存储数据,并可通过标识符(变量名)引用。2.6函数Function是具有特定功能的、可重复调用的程序代码块,通过名称(函数名)标识,可接收输入参数并返回结果。2.7文件结构structureofdatafile用来保存机器人操作任务及运动示教点的有关数据文件。机器人文件必须分为任务文件和数据文件。任务文件是机器人完成具体操作的编程指令程序。数据文件是机器人编程示教过程中形成的相关数据,以规定的格式保存。2.8关键字Keyword是编程语言中具有特殊含义的保留字,用于表示语法结构、数据类型或程序控制逻辑,不能作为用户自定义的标识符使用。2.9注释Comment是程序中用于解释代码功能、逻辑或设计意图的非执行文本,编译器会忽略其内容。2.10操作符operationsign机器人编程指令中简化使用的一些数学运算、逻辑运算的操作符号。2.11流程控制指令FlowControl是通过特定的语法结构(如条件语句、循环语句等)控制程序中指令的执行顺序和逻辑分支的指令。2.12运动指令moveinstruction对机器人各关节转动、移动运动控制的相关指令。改写[GB/T29824-2013,定义2.1]2.13信号处理指令signalprocessinginstruction对机器人信号输入输出通道进行操作的相关指令,包括对单个信号通道和多个信号通道的设置、读取等。2.14触发器指令TriggerInstruction触发器管理相关指令,用于触发器使能操作,定义触发器的触发条件和响应动作。触发器在触发条件满足时自动执行响应动作。2.15中断指令InterruptInstruction中断管理相关指令,用于明确中断原因,绑定中断处理程序,中断使能等操作。中断会导致正常程序执行过程暂停,跳过控制,进入中断处理程序。2.16数学运算指令mathinstruction对程序中相关变量进行数学运算的指令。2.17字符串处理指令Stringprocessinginstructions是对字符串进行转换和逻辑操作(如连接、拆分、替换等)的相关指令。2.18系统指令systeminstruction是用于管理程序运行状态和错误处理相关的指令。2.19多任务指令Multi-taskingInstructions是管理任务的执行顺序或并发操作的相关指令。2.20扩展指令extendinstruction机器人厂商在开发机器人编程指令中可选的指令。2.21别名Alias是变量、类型等设置的替代名称,别名可以替代原名称的使用。2.22持久型变量PersistentVariable是程序重启后仍保留值的变量。3编程语言组成机器人编程语言包括基本信息和指令,基本信息包括文件结构、标识符、关键字、注释、数据类型、变量类型、别名、操作符、函数调用;指令包括运动指令、信号处理指令、触发器指令、中断指令、数学运算指令、字符串处理指令、系统指令、多任务指令、流程控制指令、扩展指令。具体如图1所示。图1机器人编程语言基本信息和指令类型4基本信息4.1文件结构用来保存机器人系统运行的指令程序和相关数据文件,文件以明文文本方式存储。机器人文件必须分为任务文件和数据文件,一组相关的程序文件和数据文件组成一个项目。任务文件是机器人完成具体操作的编程指令程序。数据文件是机器人编程示教过程中形成的相关数据,以规定的格式保存。4.1.1程序文件程序文件是控制机器人系统运行的指令程序。一个程序文件包含一个函数(子程序)声明,不同程序文件中的函数可以相互调用。4.1.2数据文件数据文件是机器人编程示教过程中形成的相关数据,数据文件中声明的变量同一项目下的程序文件都可以访问。4.2标识符标识符是一个字符序列,用于标识类型、变量、函数和模块等。本语言的标识符由字母、数字和下划线组成,且起始字符只能是字母或者下划线。需要注意的是,标识符不能使用关键字。本语言大小写敏感,因此,func和FUNC是不同的标识符。4.3关键字关键字属于保留字,是整个语言范围内预先保留的标识符。每个关键字都有特殊的含义,标识符不能使用关键字,关键字见表1。表1关键字aliasanytypebackwardboolbreakcaseconstdefaultelseenumerrorfalseforiflocalnumopaquepersrecordreturnsharedstringswitchtrueundovoidwhile关键字说明如下:alias:用于创建已有类型的别名,简化复杂类型或提高代码可读性。anytype:表示任意类型,用于泛型编程或动态类型场景。backward:声明运动指令可逆执行。bool:布尔类型,表示逻辑值true和false。break:跳出当前循环(如while或for)或switch指令。case:在switch指令中定义分支条件。const:声明不可修改的常量变量。default:在switch指令中定义默认分支。else:在if条件不满足时执行的分支。enum:定义枚举类型。error:用于错误处理,捕获异常。false:布尔值“假”,表示逻辑否定。for:for循环结构,用于重复执行代码块(通常基于计数器或范围)。if:条件语句,根据表达式真假决定执行路径。local:声明局部变量,限制作用域在当前文件内。num:数值类型(包括整数和浮点数)。opaque:定义隐式数据类型,隐藏内部实现细节。pers:声明一个持久型变量record:定义结构化数据类型,包含多个字段。return:从函数中返回结果,并终止函数执行。shared:声明共享变量,用于多任务同步。string:字符串类型,表示文本数据。switch:多路分支指令,根据值匹配不同case执行代码。true:布尔值“真”,表示逻辑肯定。undo:保留。void:表示函数无返回值。while:循环结构,在条件为true时重复执行代码块。4.4注释注释是由双斜杠//开始,直到行尾的所有字符。多行注释需要在每行的开头都使用//符号。注释会被编译器忽略。示例://将a的值加1++a;b=b+2;//将b的值加24.5数据类型4.5.1基本数据类型本语言包含三种基本数据类型:布尔类型、数值类型和字符串类型,分别使用关键字bool、num和string来声明。基本数据类型是本语言的组成部分,在任何模块中的任何位置都可使用,不需要进行声明。a)布尔类型:布尔类型只存在两种可能的取值,分别是代表真值的true和代表假值的false。若声明布尔类型的变量时没有定义变量的值,则其实际值为false。示例:boolval;val=true;boolbval=false;b)数值类型:数值类型变量实现为双精度浮点数,其表示范围为-1.7E+308至+1.7E+308,超出该范围的值将以inf表示。浮点数的存储采用IEEE754标准。若声明数值类型的变量时没有定义变量的值,则其实际值为0。需要注意的是,并不是所有的数值都可以被表示为计算机中的浮点数。有些数值(例如4.2)在计算机中的内部存储和其实际值会存在一定的偏差。因此,在比较两个数值时,不应当使用==运算符。应该给定一个容错值,当进行比较的两个数值的差值小于此容错值时,即认为两个数值是相等的。示例:numval;val=3.14;numnval=3.14;c)字符串类型:字符串类型变量所占的空间大小是不固定的,取决于其实际的字符串的值。示例:stringval;val="hello";stringsval="helloworld";4.5.2运动相关类型a)robtarget位姿数据。用于定义机器人及其附加轴在运动指令中需要运动到的笛卡尔位姿数据,包括以下参数:robtarget.trans.x,robtarget.trans.y,robtarget.trans.z—该成员指定了当前工件的坐标系,如果没有工具指定,则该成员指定了当前的世界坐标系。工具中心点的位置(即x,y和z)单位使用mm表示;robtarget.rot.q1,robtarget.rot.q2,robtarget.rot.q3,robtarget.rot.q4—工具方位以四元数的形式表示;robtarget.robconf.cf1,robtarget.robconf.cf4,robtarget.robconf.cf6,robtarget.robconf.cfx—机器人的轴配置;robtarget.extax.eax_a,robtarget.extax.eax_b,robtarget.extax.eax_c,robtarget.extax.eax_d,robtarget.extax.eax_e,robtarget.extax.eax_f—指定附加轴的位置。(对于旋转轴,其位置定义为从校准位置起的旋转度数;对于线性轴,其位置定义为与校准位置的距离(以mm计))b)jointtarget关节数据。用于定义机器人及其附加轴在运动指令中需要运动到的关节位置,包括以下参数:jointtarget.robax.rax_1,jointtarget.robax.rax_2,jointtarget.robax.rax_3,jointtarget.robax.rax_4,jointtarget.robax.rax_5,jointtarget.robax.rax_6—机械臂轴的轴位置,以度数计;2)jointtarget.eatax.eax_a,jointtarget.eatax.eax_b,jointtarget.eatax.eax_c,jointtarget.eatax.eax_d,jointtarget.eatax.eax_e,jointtarget.eatax.eax_f—将轴位置定义为各轴(臂)从轴校准位置沿正方向或反方向旋转的度数;c)pos位置。用于表示三维坐标系中的一个点,包括以下参数:pos.x,pos.y,pos.z—指定点在坐标系中各坐标轴上的坐标。单位使用mm表示;d)orient姿态。用于表示三维坐标系中物体的方向或者旋转,包括以下参数:orient.q1,orient.q2,orient.q3,orient.q4—工具方位以四元数的形式表示;e)euler欧拉角。用于表示三维坐标系中物体的定点旋转,包括以下参数:euler.r—绕x旋转的角度。euler.p—绕y旋转的角度。euler.y—绕z旋转的角度。f)pose坐标变换。用于表示三维坐标系中物体的位姿,包括以下参数:1)pose.trans.x,pose.trans.y,pose.trans.z—物体坐标系原点相对于参考坐标系坐标原点的位移。2)pose.rot.q1,pose.rot.q2,pose.rot.q3,pose.rot.q4—物体坐标系相对于参考坐标系的旋转。g)speeddata运动速度参数。用于控制机器人TCP和外部轴的运动速度,包括以下参数:1)v_tcp--工具中心点(TCP)的线速度(mm/s)。2)v_ori--TCP的旋转速度(度/s)。3)v_leax--直线外部轴的线速度(mm/s)。4)v_reax--旋转外部轴的角速度(度/s)。h)zonedata运动过渡参数。用于控制路径精度和过渡区域,包括以下参数:1)fine--是否为精确点。2)pzone_tcp--TCP的过渡区域半径(单位:mm)。3)zone_ori--姿态的过渡区域(单位:度)。4)pzone_eax/zone_leax/zone_reax--外部轴的过渡区域(单位:mm或度)。i)tooldata工具数据。用于表示定义工具的坐标系、负载及持握状态,包括以下参数:1)robhold--是否固定在机器人上;2)tframe—工具坐标系(TCP相对于机器人法兰盘的位姿);3)tload--工具的负载数据j)wobjdata参考坐标系数据。用于表示三维坐标系中物体的位姿,包括以下参数:1)robhold--机械臂是否正夹持着工件。2)ufprog--是否为固定用户坐标系。3)ufmec--用户坐标系的标识(用于移动坐标系)。4)uframe--用户坐标系。5)oframe--工件本身的位置和姿态。4.5.3用户自定义类型如果预置类型不能满足需求,还可以添加三种用户定义数据类型:记录类型、别名类型、枚举类型。类型声明只能出现在模块中,不能出现在函数中。a)记录类型的声明以record关键字和记录名开头,后跟记录的记录体,记录体以“{”开始,以“}”结束。记录体中是该记录类型所包含的成员的列表。在定义记录类型时必须给出记录类型的类型名,本语言不支持定义和使用匿名记录类型。记录名需要是一个合法的标识符,且不能与任务中其它符号的名称冲突。定义记录类型中的数据成员时,需要给出该数据成员的类型名以及该数据成员的名称。记录类型中的数据成员可以使用数组修饰符(详见4.6.4中的数组修饰符)。记录类型中数据成员类型可以是记录类型,但不能是其自身,也不能是包含了该类型的其它记录类型。例如,记录类型A包含了记录类型B,记录类型B包含了记录类型C,那么,在C中不能包含记录类型A、记录类型B、记录类型C。记录类型的函数成员和普通的函数类似,详细内容请参考4.10函数。示例:recordGoods{stringname;stringorigin;numid;numprice;}以上示例定义了一个名为Goods的记录类型,该类型包含name、origin、id、price等4个数据成员。该类型不包含函数成员。对记录类型变量进行初始化的方法是依次给出该记录类型各数据成员的值,中间用逗号隔开,所有的值用中括号包含。如果声明记录类型的变量时没有初始化,则其每个数据成员都会有一个默认的初始值,且其初始值和该数据成员的类型有关。例如,对于数值类型的数据成员,会有默认的初始值0;字符串类型的数据成员会有默认的初始值空字符串"";布尔型的数据成员会有默认的初始值false。在引用记录类型的成员时,需要同时给出记录类型变量的变量名,变量名和成员名之间使用句点.隔开。对于包含了记录类型的记录类型,需要依次给出所引用的成员名,中间用句点.隔开。示例://声明时初始化Goodsapple={"FuShi","China",11001,5.7};//声明后初始化Goodsbook;book={"LearnRobotLanguage","China",10001,30.0};//在声明后,对成员进行初始化Goodspen;="ChenGuang";pen.origin="ShangHai";pen.id=10101;pen.price=0.99;上面的示例用了三种方式对声明的三个Goods类型变量进行了初始化。b)别名类型用来表示一个类型的别名,它与所表示的实际类型是等价的,使用该别名替代原名称的使用。别名的声明以关键字alias开头,后跟别名的实际名称,以及替代使用的别名,最后以分号结尾。别名类型只能在模块中声明,而不能在函数中声明。示例:aliasnumscore;上述代码定义了一个别名类型score,它的实际类型是类型num。c)枚举类型的声明以enum关键字和枚举类型的类型名开头,后跟该枚举类型的枚举体。枚举体以“{”开始,以“}”结束。在枚举体中,是该枚举类型的所有可能值的名称的列表,每个列表项称为该枚举类型的成员。在声明枚举类型时必须给出枚举类型的类型名,不支持声明和使用匿名枚举类型。枚举名需要是一个合法的标识符,且不能与任务中其它符号的名称冲突。可以在声明枚举类型时为其每个成员赋予一个整数值,此值即存储该枚举类型变量时的实际编码。若在声明枚举类型时没有为成员指定值,则其值或者为0(第一个成员),或者为其上一个成员的值加1(其它成员)。可以在声明枚举类型时将某个成员的值赋予其它成员,此时,两个成员有相同的实际值。只能在声明枚举类型时指定其成员的实际值。示例:enumColor{White,Black}enumFruit{Apple=1000,Banana,Cherry,Grape,}以上代码定义了两个分别名为Color和Fruit的枚举类型。Color枚举类型包含两个成员White和Black,其实际的值分别为0和1;Fruit枚举类型包含4个成员Apple、Banana、Cherry、Grape,其实际的值分别为1000、1001、1002、1003。Color类型的变量的值只能是White或Black;Fruit类型的变量的值只能是Apple或Banana或Cherry或Grape。在声明一个枚举类型之后可以声明此类型的变量。示例:ColormyColor;myColor=Color::Black;Colordark=Color::Black;在引用枚举类型的成员时,需要同时给出枚举类型的类型名,类型名和成员名之间使用成员分割符::隔开。需要注意的是,虽然枚举类型成员的实际值为数值类型,但枚举类型和数值类型相互之间不能替换使用。即数值类型变量不能被赋予枚举类型成员值,枚举类型变量不能被赋予数值类型值。4.6变量类型4.6.1普通变量普通变量是在声明后既能够读取,又能够改变其值的变量。普通变量的声明以变量的数据类型和变量名开头,以及可选的数组修饰符和可选的初始化表达式,最后以分号结尾。变量可以被声明为基本数据类型(布尔型、数值型、字符串型)或自定义类型,自定义类型根据标识符进行确定。语法为:bool/num/string/类型标识符变量名<[数组大小]><=初始化表达式>;示例:numa=0;boolflag=true;stringstr="thisisaexample.";eulere;初始化表达式必须为常量表达式(表达式中不包含任何变量)。初始化表达式的类型必须和变量的类型兼容。4.6.2常量常量是在声明时给定其值,之后只能读取其值的变量。常变量的声明以关键字const开头,后跟该变量的数据类型和变量名,以及可选的数组修饰符,后跟初始化表达式,最后以分号结尾。常变量声明中必须包含初始化表达式。语法为:constbool/num/string/类型标识符变量名<[数组大小]>=初始化表达式;示例:constnumpi=3.1415926;4.6.3持久型变量持久型变量是保存在数据库中的变量。持久型变量的声明以关键字pers开头,后跟该变量的数据类型和变量名,以及可选的数组修饰符和可选的初始化表达式,最后以分号结尾。持久型变量的初始化表达式必须为字面量表达式。语法为:persbool/num/string/类型标识符变量名<[数组大小]><=初始化表达式>;示例:persboolb=false;4.6.4数组当在变量名后包含有数组修饰符时,表示声明一个数组。数组修饰符是由中括号包括的表达式列表,其中可以包括1至3个表达式,用于指定数组每个维度的大小。语法为:bool/num/string/类型标识符变量名[数组大小]<=初始化表达式>;示例:numarr1[4];numarr2[2][3]={{1,2,3},{4,5,6}};4.7别名别名的声明以关键字alias开头,后跟别名的实际名称,以及替代使用的别名,最后以分号结尾。语法为:alias类型/变量标识符别名标识符;示例:constnumyear=2025;aliasyearyy;4.8操作符4.8.1算术运算符机器人编程语言算数运算操作符见表2所示:表2算数运算操作符操作符含义操作数类型操作数个数+两个操作数的和数值2-两个操作数的差数值2*两个操作数的积数值2/两个操作数的商数值2++操作数自增1数值1--操作数自减1数值1+操作数的值数值1-操作数的负值数值14.8.2逻辑运算符机器人编程语言逻辑运算操作符见表3:表3逻辑运算操作符操作符含义操作数类型操作数个数&&两个操作数的逻辑与布尔2||两个操作数的逻辑与布尔2!操作数的逻辑非值布尔14.8.3比较运算符机器人编程语言比较运算操作符见表4:表4比较运算操作符操作符含义操作数类型操作数个数>比较左操作数是否大于右操作数数值2>=左操作数是否大于等于右操作数数值2<比较左操作数是否小于右操作数数值2<=比较左操作数是否小于等于右操作数数值2==比较两个操作数是否相等数值2!=比较两个操作数是否不等数值24.8.4位运算符机器人编程语言位运算操作符见表5:表5位运算操作符操作符含义操作数类型操作数个数&两个操作数按位与num2|两个操作数按位或num2~操作数按位取反num1^两个操作数按位异或num24.8.5赋值运算符机器人编程语言赋值运算操作符见表6:表6赋值运算操作符操作符含义操作数类型操作数个数=将右边操作数的值赋给左边操作数任意类型24.9函数(子程序)调用程序的可执行代码位于函数中,函数可以有一个返回值,如果没有返回值则通过void来指出。函数的参数分为:必选参数和可选参数。函数声明的语法为:返回值类型函数名标识符(<参数列表>){函数体}参数列表的格式为:必选参数类型必选形式参数名称<,必选参数类型必选形式参数名称><,可选参数类型可选形式参数名称=可选参数缺省值,...>示例:numincrease(numx,numy=1){returnx+y;}函数调用之前,被调用的函数应该已经声明。调用函数,涉及到函数的传参和返回值。必选参数必须给出,可选参数可选,并且必须是位于所有的必选参数之后。函数调用的语法为:voidmain(){numa=1;a=increase(a);a=increase(a,y=2);}5指令定义5.1运动指令a)指令名称MJOINT指令说明各轴进行点到点运动,所有轴开始运动并同时到达目标点,运行时间的主导轴是到达目标点所需时间最长的轴,机器人TCP在空间中的运行轨迹为不规则的曲线,会沿最快速的轨迹运动到目标点。该运动方式不会产生奇异点现象,backward关键字声明可逆执行。指令原型voidMJOINT(jointtargettopoint,speeddataspeed,zonedatazone,tooldatatool,wobjdatawobj=void)backward;参数说明topoint 数据类型:jointtarget 机器人和附加轴运动的目标点。speed 数据类型:speeddata 用于指定工具中心点、工具方位调整以及附加轴的运动速度。zone 数据类型:zonedata用于描述过渡区域的路径大小。tool 数据类型:tooldata用于描述工具的中心点。wobj 数据类型:wobjdata用于描述参考坐标系,该参数可省略,省略时使用世界坐标系。b)指令名称MLIN指令说明机器人TCP沿直线运动到指定目标位置,如果起始点与终点的姿态不相同,姿态与位置变化保持同步插补。使用该指令运行的轨迹中可能会存在奇异点,backward关键字声明可逆执行。指令原型voidMLIN(robtargettopoint,speeddataspeed,zonedatazone,tooldatatool,wobjdatawobj=void)backward;参数说明topoint 数据类型:robtarget 机器人和附加轴运动的目标点。 speed 数据类型:speeddata 用于指定工具中心点、工具方位调整以及附加轴的运动速度。 zone 数据类型:zonedata 用于描述过渡的路径大小。 tool 数据类型:tooldata 用于描述工具的中心点。 wobj 数据类型:wobjdata 用于描述参考坐标系,该参数可省略,省略时使用世界坐标系。c)指令名称MCIRC指令说明机器人TCP沿圆弧轨迹经过中间辅助点运动到指定目标位置,如果起始点与终点的姿态不相同时,姿态与位置变化保持同步插补,backward关键字声明可逆执行。指令原型voidMCIRC(robtargetcirpoint,robtargettopoint,speeddataspeed,zonedatazone,tooldatatool,wobjdatawobj=void)backward;参数说明cirpoint 数据类型:robtarget 机器人圆弧运动的中间点。 topoint 数据类型:robtarget 机器人圆弧运动的目标点。 speed 数据类型:speeddata 用于指定工具中心点、工具方位调整以及附加轴的运动速度。 zone 数据类型:zonedata 用于描述过渡区域的路径大小。 tool 数据类型:tooldata 用于描述工具的中心点。 wobj 数据类型:wobjdata 用于描述参考坐标系,该参数可省略,省略时使用世界坐标系。d)指令名称MPATH指令说明机器人TCP沿平滑样条曲线路径运动,经过多个中间点,姿态与位置同步插补。适用于高精度连续轨迹,backward关键字声明可逆执行。指令原型voidMPATH(robtarget[]path_points,speeddataspeed,zonedatazone,tooldatatool,wobjdatawobj=void)backward;参数说明path_points 数据类型:robtarget[] 包含起点、中间点和终点的数组(至少3个点)。 speed 数据类型:speeddata 用于指定工具中心点、工具方位调整以及附加轴的运动速度。 zone 数据类型:zonedata 用于描述过渡区域的路径大小。 tool 数据类型:tooldata 用于描述工具的中心点。 wobj 数据类型:wobjdata 用于描述参考坐标系,该参数可省略,省略时使用世界坐标系。e)指令名称TRIGGJOINT指令说明关节运动过程中在大致固定位置设置输出信号和/或运行中断程序。指令原型voidTRIGGJOINT(jointtargettopoint,speeddataspeed,triggdatatrigg,zonedatazone,tooldatatool,wobjdatawobj=void);参数说明topoint 数据类型:jointtarget 机器人和附加轴运动的目标点。speed 数据类型:speeddata 用于指定工具中心点、工具方位调整以及附加轴的运动速度。trigg 数据类型:triggdata 通过使用触发器指令定义的触发条件。zone 数据类型:zonedata用于描述过渡区域的路径大小。tool 数据类型:tooldata用于描述工具的中心点。wobj 数据类型:wobjdata用于描述参考坐标系,该参数可省略,省略时使用世界坐标系。f)指令名称TRIGGLIN指令说明直线运动过程中在大致固定位置设置输出信号和/或运行中断程序。指令原型voidTRIGGLIN(robtargettopoint,speeddataspeed,triggdatatrigg,zonedatazone,tooldatatool,wobjdatawobj=void);参数说明topoint 数据类型:robtarget 机器人和附加轴运动的目标点。 speed 数据类型:speeddata 用于指定工具中心点、工具方位调整以及附加轴的运动速度。trigg 数据类型:triggdata 通过使用触发器指令定义的触发条件。 zone 数据类型:zonedata 用于描述过渡的路径大小。 tool 数据类型:tooldata 用于描述工具的中心点。 wobj 数据类型:wobjdata 用于描述参考坐标系,该参数可省略,省略时使用世界坐标系。g)指令名称TRIGGCIRC指令说明圆弧运动过程中在大致固定位置设置输出信号和/或运行中断程序。指令原型voidTRIGGCIRC(robtargetcirpoint,robtargettopoint,speeddataspeed,triggdatatrigg,zonedatazone,tooldatatool,wobjdatawobj=void)backward;参数说明cirpoint 数据类型:robtarget 机器人圆弧运动的中间点。 topoint 数据类型:robtarget 机器人圆弧运动的目标点。 speed 数据类型:speeddata 用于指定工具中心点、工具方位调整以及附加轴的运动速度。trigg 数据类型:triggdata 通过使用触发器指令定义的触发条件。 zone 数据类型:zonedata 用于描述过渡区域的路径大小。 tool 数据类型:tooldata 用于描述工具的中心点。 wobj 数据类型:wobjdata 用于描述参考坐标系,该参数可省略,省略时使用世界坐标系。5.2信号处理指令a)指令名称SetDOut指令说明用于设置数字输出信号的值。指令原型voidSetDOut(stringname,boolvalue)参数说明name 数据类型:string 数字输出信号的别名。 value 数据类型:bool 数字输出信号将被设置的值。 b)指令名称SetAOut指令说明用于设置模拟输出信号的值。指令原型voidSetAOut(stringname,numvalue)参数说明name 数据类型:string 模拟输出信号的别名。 value 数据类型:num 模拟输出信号将被设置的值。 c)指令名称WaitDO指令说明用于等待数字输出信号的值。指令原型voidWaitDO(stringname,boolvalue,nummax_time)参数说明name 数据类型:string 数字输出信号的别名。 value 数据类型:bool 将要等待的数字输出信号的值。 max_time 数据类型:num 允许等待的最大时间,以毫秒(ms)为单位。如果在指令的等待过程中,超出所允许的最大等待时间,则该指令将会抛出错误码。d)指令名称WaitDI指令说明用于等待数字输入信号的值。指令原型voidWaitIO(stringname,boolvalue,nummax_time)参数说明name 数据类型:string 数字输入信号的别名。 value 数据类型:bool 将要等待的数字输入信号的值。 max_time 数据类型:num 允许等待的最大时间,以毫秒(ms)为单位。如果在指令的等待过程中,超出所允许的最大等待时间,则该指令将会抛出错误码。e)指令名称WaitAO指令说明用于等待模拟输出信号的值。指令原型voidWaitAO(stringname,numvalue,nummax_time)参数说明name 数据类型:string 模拟输出信号的别名。 value 数据类型:num 将要等待的模拟输出信号的值。 max_time 数据类型:num 允许等待的最大时间,以毫秒(ms)为单位。如果在指令的等待过程中,超出所允许的最大等待时间,则该指令将会抛出err_wait_maxtime的错误码。f)指令名称WaitAI指令说明用于等待模拟输入信号的值。指令原型voidWaitAO(stringname,numvalue,nummax_time)参数说明name 数据类型:string 模拟输入信号的别名。 value 数据类型:num 将要等待的模拟输入信号的值。 max_time 数据类型:num 允许等待的最大时间,以毫秒(ms)为单位。如果在指令的等待过程中,超出所允许的最大等待时间,则该指令将会抛出err_wait_maxtime的错误码。5.3触发器指令a)指令名称TrigIntr指令说明以机械臂到达规划路径上的某一特定位置为触发条件,将参数ivar所关联的中断例程定义为本次定位事件的响应。指令原型trigdataTrigIntr(trigrefref,numdist,numdelay,intnuminterpret);参数说明见表7表7TrigIntr指令参数类型参数说明输入ref数据类型:trigref指明定位事件的参考位置。输入dist数据类型:num以毫米为单位,指明本次定位事件中,机械臂运动相对于参考位置所到达的位置。输入delay数据类型:num以毫秒为单位,指明本次定位事件的触发延时,为负表示提前触发,为正则表示延迟触发。输入ivar数据类型:intnum已关联至中断例程的中断变量的名称。输出定位事件数据类型:trigdata根据用户的输入参数,返回定义好的trigdata类型数据。b)指令名称TrigDist指令说明以机械臂到达规划路径上的某一特定位置为触发条件,将参数sig_names及sig_values指明的输出信号设置定义为本次定位事件的响应。指令原型trigdataTrigDist(trigrefref,numdist,numdelay,stringsig_name,numsig_values);参数说明见表8表8TrigDist指令参数类型参数说明输入ref数据类型:trigref指明定位事件的参考位置。输入dist数据类型:num以毫米为单位,指明本次定位事件中,机械臂运动相对于参考位置所到达的位置。输入delay数据类型:num以毫秒为单位,指明本次定位事件的触发延时,为负表示提前触发,为正则表示延迟触发。输入sig_name数据类型:string定位事件触发条件满足时,需要设置的输出信号别名。输入sig_value数据类型:num定位事件触发条件满足时,需要设置输出信号的值。输出定位事件数据类型:trigdata根据用户的输入参数,返回定义好的trigdata类型数据。5.4中断指令a)指令名称connect指令说明用于将中断标识变量与中断处理函数关联。指令原型voidconnect(intnumintvar,traptrapf);参数说明见表9表9connect指令参数类型参数说明输入intvar数据类型:intnum中断标识变量输入trapf数据类型:trap用于中断处理的陷阱函数 b)指令名称idelete指令说明使用idelete删除一个中断,它会同时删除中断事件和中断变量的绑定以及中断变量和中断处理函数的连接关系。指令原型voididelete(intnum&interrupt)参数说明Interrupt、intnum引用类型。参数为所禁止的中断对应的中断变量。 c)指令名称idisable 指令说明使用idisable禁止对后续执行中的所有中断的处理。指令原型voididisable()d)指令名称ienable指令说明使用ienable使能对后续执行中的所有中断的处理。 指令原型voidienable()f)指令名称isleep指令说明使用isleep禁止对后续执行中的指定中断的处理。 指令原型voidisleep(intnum&interrupt) 参数说明Interrupt、intnum引用类型。参数为所禁止的中断对应的中断变量。g)指令名称itimer指令说明订阅定时器中断。当定时器的时长耗尽时,会引发一个中断。指令原型voiditimer(numinterval,intnum&interrupt,singlemodemode=singlemode::cyclic)参数说明intervalnum类型。参数为定时器的定时间隔。interruptintnum引用类型。将定时器的中断事件和此参数代表的中断变量进行绑定。 Modesinglemode类型。指定中断事件的触发周期。h)指令名称iwatch 指令说明使用iwatch使能对后续执行中的指定中断的处理。 指令原型voidiwatch(intnum&interrupt) 参数说明interruptintnum引用类型。参数为所使能的中断对应的中断变量。5.5数学运算指令a)指令名称Limit指令说明该函数需要输入一个最大值和最小值以确定一个范围,被限制数值若处于范围之内则返回数值本身;若被限制数值大于该范围,则返回最大值;若小于该范围,则返回最小值。指令原型numLimit(numvalue,nummin_bound,nummax_bound);参数说明见表10.表10Limit指令参数类型参数说明输入value数据类型:num被限制的数值。输入min_bound数据类型:num限制范围的下界。输入max_bound数据类型:num限制范围的上界。输出被限制结果数据类型:num输出数值范围必然在[min_bound,max_bound]。b)指令名称FMod指令说明返回一个数除以另一个数的余数,余数可以为浮点数。指令原型numFMod(numvalue,numdivisor);参数说明见表11。表11FMod指令参数类型参数说明输入value数据类型:num取余操作中的被除数。输入divisor数据类型:num取余操作中的除数。输出余数remainder数据类型:num取余操作获取的余数。d)指令名称AbsFMod指令说明返回一个数除以另一个数的余数,余数可以为浮点数。若余数为负数,则会将余数加上除数的绝对值使其为正值。指令原型numAbsFMod(numvalue,numdivisor);参数说明见表12。表12AbsFMod指令参数类型参数说明输入value数据类型:num取余操作中的被除数。输入divisor数据类型:num取余操作中的除数。输出余数remainder数据类型:num取余操作获取的余数。若余数为负值,则结果加上除数的绝对值使其为正。e)指令名称AbsIMod指令说明用于计算两个整数值的整数求余。若余数为负数,则会将余数加上除数的绝对值使其为正值。指令原型numAbsIMod(numvalue,numdivisor);参数说明见表13。表13AbsIMod指令参数类型参数说明输入value数据类型:num取余操作中的被除数。输入divisor数据类型:num取余操作中的除数。输出余数remainder数据类型:num取余操作获取的余数。若余数为负值,则结果加上除数的绝对值使其为正。f)指令名称SRand指令说明通过参数seed改变系统提供的种子值,相同的种子将产生相同的随机数序列。指令原型voidSRand(numseed);参数说明见表14。表14SRand指令参数类型参数说明输入seed数据类型:num被设置的种子值,必须是整数。g)指令名称Rand指令说明该函数需要给定最大值max_value与最小值min_value,并返回一个随机浮点数,随机数范围为[min_value,max_value)(左闭右开间)。具有相同种子的两个不同初始化将在后续调用中Rand生成相同的结果。指令原型numRand(nummin_value,nummax_value);参数说明见表15。表15Rand指令参数类型参数说明输入min_value数据类型:num随机数的最小值。输入max_value数据类型:num随机数的最大值。输出随机数数据类型:num随机数值范围必然在[min_bound,max_bound)。h)指令名称Random指令说明该函数需要给定最大值max_value与最小值min_value,并返回一个随机整数,随机数范围为[min_value,max_value](闭区间)。具有相同种子的两个不同初始化将在后续调用中Rand生成相同的结果。指令原型numRandom(nummin_value,nummax_value);参数说明见表16。表16Random指令参数类型参数说明输入min_value数据类型:num随机数的最小值。输入max_value数据类型:num随机数的最大值。输出随机数数据类型:num随机数值范围必然在[min_bound,max_bound]。i)指令名称Range指令说明该函数需要给定最小值min_value和最大值max_value,检查给定值是否在范围[min_value,max_value](闭区间)内。指令原型boolRange(numvalue,nummin_value,nummax_value);参数说明见表17。表17Range指令参数类型参数说明输入value数据类型:num进行范围检测的数值。输入min_value数据类型:num范围的最小值。输入max_value数据类型:num范围的最大值。输出判断结果数据类型:bool判断value是否属于范围[min_value,max_value]内。j)指令名称Sign指令说明该函数对输入值进行判断,如果输入值是正数,则返回+1;如果输入值为负数,则返回-1。输入值为0,则返回0。指令原型numSign(numvalue);参数说明见表18。表18Sign指令参数类型参数说明输入value数据类型:num进行正负判断的数值。输出判断结果数据类型:num如果输入值为正,则为+1;如果输入值为负,则为-1;输入值为0,则返回0。5.6字符串处理指令a)指令名称ValToString指令说明该函数将任意类型的值转为字符串。指令原型stringValToString(anytypedata);参数说明见表19。表19ValToString指令参数类型参数说明输入data数据类型:anytype任意类型的值。输出转换的结果数据类型:string由任意类型数据data转换的字符串b)指令名称StringToVal指令说明该函数将指定类型的值的字符串转换为对应的值。指令原型boolStringToVal(stringstr,anytype&data);参数说明见表20。表20StringToVal指令参数类型参数说明输入str数据类型:string待转换的字符串,若其中含有string类型的值,则此部分需用单引号括起。输入data数据类型:anytype&num/string/record/array类型的数据,转换后的值将写入其中。输出是否成功数据类型:bool成功写入值返回true,失败返回false。c)指令名称StrLen指令说明该函数计算字符串str的长度,不包含尾0。指令原型numStrLen(stringstr);参数说明见表21。表21StrLen指令参数类型参数说明输入str数据类型:string要计算长度的字符串。输出被限制结果数据类型:num返回字符串长度。d)指令名称Left指令说明该函数返回字符串左侧的子字符串。指令原型stringLeft(stringstr,numlen);参数说明见表22。表22Left指令参数类型参数说明输入str数据类型:string输入的原始字符串。输入len数据类型:num期望获取的左侧字符串的最大长度。输出左侧字符串数据类型:string获取到的左侧字符串。e)指令名称Right指令说明返回字符串右侧的子字符串。指令原型stringRight(stringstr,numlen);参数说明见表23。表23Right指令参数类型参数说明输入str数据类型:string被限制的数值。输入len数据类型:num限制范围的下界。输出右侧字符串数据类型:string获取到的右侧字符串。f)指令名称SubStr指令说明该函数返回字符串str从pos位置(第一个字符位置为1)开始长度为len的子串。指令原型stringSubStr(stringstr,numposition,numlen);参数说明见表24。表24SubStr指令参数类型参数说明输入str数据类型:string被截取的字符串。输入position数据类型:num开始截取的位置。输入len数据类型:num截取的长度。输出子串数据类型:stringstr从pos开始长度为len的子串。g)指令名称Insert指令说明该函数在字符串的指定位置处插入一个字符串。指令原型stringInsert(stringstr1,stringstr2,numposition);参数说明见表25。表25Insert指令参数类型参数说明输入str1数据类型:string被插入的字符串。输入str2数据类型:string插入的字符串。输入position数据类型:num插入的位置。输出子串数据类型:string插入后的字符串。h)指令名称Delete指令说明该函数返回从字符串的指定位置开始删除给定长度字符后的字符串。指令原型stringDelete(stringstr,numposition,numlen);参数说明见表26。表26Delete指令参数类型参数说明输入str数据类型:string被删除的字符串。输入position数据类型:num开始删除的位置。输入len数据类型:num删除的字符串个数。输出子串数据类型:string删除后剩余的子串。i)指令名称Replace指令说明该函数将str1中pos位置开始的长度为len的子字符串替换为str2,str2可与子字符串长度不同。指令原型stringReplace(stringstr1,stringstr2,numposition,numlen);参数说明见表27。表27Replace指令参数类型参数说明输入str1数据类型:string被替换的字符串。输入str2数据类型:string替换的字符串。输入position数据类型:num开始替换的位置。输入len数据类型:num替换的的字符串个数输出被限制结果数据类型:string输出数值范围必然在[min_bound,max_bound]。j)指令名称Split指令说明该函数将的字符串str以分隔符(separater)进行分割,并返回分割得到的第index(从0开始计算)个子串。指令原型stringSplit(stringstr,stringseparater,numindex);参数说明见表28。表28Split指令参数类型参数说明输入str数据类型:string被限制的数值。输入separater数据类型:string限制范围的下界。输入index数据类型:num限制范围的上界。输出字符串数据类型:string以分隔符(separater)进行分割,并返回分割得到的第index(从1开始计算)个子串。5.7系统指令a)指令名称exit指令说明exit函数用于退出程序。指令原型voidexit();b)指令名称raise指令说明错误处理的常用函数,用于设置错误或将错误报告到上一层。指令原型voidraise(errnumcode=0)参数说明见表29。表29raise指令参数类型参数说明输入code数据类型:errnum可选,抛出的错误编号,只能是从1到90这个范围之内的;不显示指明code则将错误报告到上一层。c)指令名称retry指令说明错误处理的常用语句,用于从出错的语句处重新执行。指令原型voidretry();d)指令名称trynext指令说明错误处理的常用语句,用于从出错的语句的下一条语句处开始执行。指令原型voidtrynext();5.8多任务指令a)指令名称ConcTask指令说明用于开始子任务的执行。指令原型voidConcTask(stringtask_name)参数说明task_name 数据类型:string 将要启动的子任务名称。5.9流程控制指令5.9.1label/gotolabel指令声明了一个程序的位置,使用goto能使程序跳转到label对应的位置执行。label指令的语法为:标签标识符:goto语句的语法为:goto标签标识符;示例:numa=0;loop:a=a+1;if(a<10){gotoloop;}5.9.2if-elseif指令会根据表达式的布尔值而执行程序的不同部分。if语句以if关键字开头,后跟小括号括起来的条件表达式,后跟if语句的代码块。if语句还可以后跟else语句,else语句以else关键字开头,后跟else语句的代码块,else语句是可选的。如果需要判断的情况较多,也可以使用多个elseif语句增加判断。if语句语法为:if(条件表达式){语句列表}<elseif(条件表达式){语句列表}><else{语句列表}>示例://多个else语句if(a>0){print("a>0");}elseif(a<0){print("a<0");}else{print("a=0");}5.9.3whilewhile循环语句以关键字while开头,后跟小括号括起来的条件表达式,后跟while语句的代码块。条件表达式需要具有布尔类型,且每次循环前都会对其进行求值。若其值为真,则执行一次代码块中的语句列表;若其值为假,则退出循环。while循环语法:while(条件表达式){循环语句列表}示例:numsum=0;numi=1;while(i<=10){sum=sum+i;i=i+1;}5.9.4forfor循环语句以关键字for开头,后跟小括号括起来的初始化表达式、终止表达式、循环表达式,后跟for语句的代码块。在小括号中,初始化表达式、终止表达式、循环表达式使用分号进行分割。终止表达式必须为布尔类型。for语句会重复执行语句列表,当循环变量的值超过超过终点表达式的值时,循环终止。for语句语法为:for(初始化表达式;终止表达式;循环表达式){循环语句列表}示例:numsum=0;for(numi=1;i<=10;i++){sum=sum+i;}5.9.5switchswitch语句是常用的选择语句。语句以关键字switch开头,由switch、case、default三部分组成。其中case部分可以有多个或没有,default部分可省略。语句分析表达式的值,如果有与之相等的测试值,则执行对应case的语句列表,否则执行default部分的语句列表。switch语句语法为:switch(表达式){case表达式1<,表达式1-1,...>:{语句列表}<case表达式2,表达式2-1,...:{语句列表}><default:{语句列表}>}示例:switch(a){case1:print("a=1");case2:print("a=2");case3:print("a=3");default:print("others.");}5.9.6break用于跳出for循环语句、while循环语句或switch语句的执行。如果这些语句是嵌套在其它的循环语句或switch语句中,则break语句会跳出最内层的循环语句或switch语句。示例:nums

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论