




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、一、文件与程序结构华数 II 型机器人控制系统中供用户使用的文件有两种:PRG 和 LIB 文件。其中 PRG 为主程序文件类型,通常是为了完成某一特定任务而编写,故又可称其为主任务。LIB 为子程序文件类型,为包含某一特定功能模块的任务,主要用来被主任务调用。 1.1 主程序(PRG)主程序结构分两大模块,全局变量声明模块以及主程序模块。 1.2 子程序(LIB)子程序如下图所示,由 sub 子程序名end sub 定义。 1.3 子程序调用子程序的定义可以放在 PRG 文件里,如下所示: TEST.PRGprogramPrint “This is Main Program”call TES
2、TSUB end programsub TESTSUBPrint “This is sub”end sub也可以放在 LIB 文件里:TEST.PRGprogramPrint “This is Main Program”call TESTSUB end programTESTSUB.LIBsub TESTSUBPrint “This is sub”end sub请注意 LIB 文件的文件名要与子程序名相同,且每个 LIB 文件仅能定义一个子程序。 二、数据类型2.1 通用数据类型详见附件:附件 1-华数 II 型控制系统数据类型列表 2.2 常量详见附件:附件 2-华数 II 型控制系统常量列
3、表 2.3 其他类型2.3.1 数组 Common Shared array15 As long array of integersCommon Shared array22040 As double array of floating pointsdim Shared array3100 As string array of strings dim array4120 As utf8 array of UTF8 stringscommon shared array532 As generic axis array of generic axes最大支持 10 维的数组,其元素类型可以是所有系
4、统支持的基本类型。每一维的索引值最大支持 32767,且起始索引为 1。 2.3.2 结构体结构体 myStruct1, myStruct2 声明定义结构体类型变量 myStruct1结构体变量内元素的使用如上所示,myStrust1 与 myStrust1 即为自定义结构体的类型名,使用时需要通过定义变量的形式将某个变量定义成该结构体类型。需要注意的是,结构体类型的声明只能放在 LIB 文件中,且必须在文件的开头位置。 2.3.3 通用坐标类型 Common Shared XYZPnt As Joint of XYCommon Shared XYZRPnt As Joint of XYZRC
5、ommon Shared GenPnt As Generic Joint GenPnt doesnt have a robottype如下表所示,通用坐标类型使用 generic 关键字定义,不带机器人类型。在使用的时候,我们可以将任意机器人类型的坐标变量赋值给它。 XYPnt = XYZRPnt will result in translation error due to robot typemismatchGenPnt = XYZRPnt GenPnt acquires the XYZR robot typeXYPnt = GenPnt will result in translatio
6、n error due to robot type mismatchGenPnt = XYPnt GenPnts robot type is changed to XYXYPnt = GenPnt 三、编程指令3.1 运动指令3.1.1 MOVE指令说明:Move 指令以单个轴或某组轴(机器人组)的当前位置为起点,移动某个轴或某组轴(机器人组)到目标点位置。移动过程不进行轨迹以及姿态控制。 指令语法:Move | Optional Properties指令参数(可选):MOVE 指令包含一系列的可选属性ABSOLUTE , VELOCITYCRUISE , ACCELERATION,DECEL
7、ERATION,JERK 等。属性设置后,仅针对当前运动有效,该运动指令行结束后,恢复到默认值。如果不设置参数,则使用各参数的默认值运动。 指令用例:1. Move ROBOT #600, 100, 0, 0, 180, 0 Absolute=1 VelocityCruise=1002. Move A1 -10 Absolute=0 VelocityCruise=120上述用例中,第一行 MOVE 指令使用绝对值编程方式(Absolute=1),控制对象为 ROBOT 组,并且设定了 ROBOT 的运行速度为 100/s,其目标位置为笛卡尔坐标下的#600,100, 0, 0, 180, 0。
8、第二行 MOVE 指令使用相对值的方式编程(Absolute=0),单独控制 A1 轴进行运动,目标位置基于当前位置向负方向偏移了 10。 3.1.2 MOVES指令说明: Moves optional propertiesMOVES 指令以机器人当前位置为起点,控制其在笛卡尔空间范围内进行直线运动,常用于对轨迹控制有要求的场合。该指令的控制对象只能是机器人组。指令语法:指令参数(可选):Moves 可选属性包含VTRAN,ATRAN,DTRAN,VROT,AROT,DROT 等。属性设置后,仅针对当前运动有效,该运动指令行结束后,恢复到默认值。如果不设置参数,则使用各参数的默认值运动。 指令
9、用例:1. Moves ROBOT #425, 70, 55, 90, 180, 90 Absolute=1 Vtran=100 Atran=80 Dtran=1002. Moves ROBOT -10, 0, 0, 0, 0, 0 Absolute=0 Vtran=120 Atran=80 Dtran=80如上用例所示,第一行指令控制机器人 ROBOT 从当前位置开始,以直线的方式运动到笛卡尔坐标位置#425, 70, 55, 90, 180, 90,Absolute=1 表示指令中使用的坐标为绝对值坐标,Vtran 设定了机器人的运行速度为100mm/s,Atran 和 Dtran 分别设
10、置了机器人的加速度与减速度的大小。 3.1.3 CIRCLE指令说明:CIRCLE 指令以当前位置为起点,CIRCLEPOINT 为中间点,TARGETPOINT 终点,控制机器人在笛卡尔空间进行圆弧轨迹运动,同时附带姿态的插补。 指令语法:Circle CirclePoint= TargetPoint= Optional Property指令参数(可选):Circle 指令可选属性包含VTRAN,ATRAN,DTRAN,VROT,AROT,DROT 等。属性设置后,仅针对当前运动有效,该运动指令行结束后,恢复到默认值。如果不设置参数,则使用各参数的默认值运动。 指令用例:1. ROBOT.A
11、bsolute = 12. Move ROBOT #400,300,0,0,180,0 Vcruise=1003. CircleROBOTCirclePoint=#500,400,0,0,180,0TargetPoint=#600,300,0,180,0 Vtran=100如上用例所示,程序第一行定义编程点位都为绝对位置,第二行运动机器人到#400,300,0,0,180,0的位置,然后以该位置为起点,在 XY 平面上进行圆弧运动。 3.1.4 运动指令总结该章节针对华数 II 型机器人控制系统中运动相关指令进行了描述。其中Move 指令控制机器人进行关节运动,Moves 和 Circle 指
12、令则控制机器人进行笛卡尔空间的插补运动(直线、圆弧)。Move 指令相对于 Moves 以及 Circle 指令来说,其优点是可以让机器人拥有更快的移动速度,缺点是该指令只能确保 机器人到目标点的位置,不能控制机器人在运行过程中的轨迹;而 Moves 和Circle 指令会对机器人进行精确的轨迹以及姿态控制,但是这两个指令的运行速度较 Move 指令来说会慢一些。因此,在运动空间比较开阔,较少障碍物的情况下,使用 Move 指令控制机器人运动;在需要精确控制机器人运动轨迹,例如进入某一狭小空间操作时,使用 Moves 或 Circle 指令严格控制机器人轨迹会更安全。 3.2 程序结构指令3.
13、2.1 PROGRAMEND PROGRAM指令说明:该指令用来定义主程序结构。Program End Program指令语法:指令用例:Dim Shared var1 as LongProgramDim I As Longfor I = 1 to 10 var1 = var1 + 1Next IEnd Program3.2.2 SUBEND SUB指令说明:该指令用来定义子程序,可以带参数,但不允许有返回值。使用 CALL 【子程序名】的方式调用,用该方式定义子程序必须在 PROGRAMEND PROGRAM 结构的外部。 指令语法:SUB (parameters)END SUBDIM SH
14、ARED lastloop as LONGPROGRAMlastloop=10Attach a1 Move a1 100Call a1_Move(LastLoop) END PROGRAMSUB a1_Move(lastLoop as Long)DIM Index as LONGFor Index = 1 to lastloopMove a1 1 abs = 0Next IndexEND SUB指令用例:Array Example:SUB mean(x* as DOUBLE, TheMean* as LONG)DIM sum as DOUBLEDIM I as LONG FOR i = 1 t
15、o 100sum = sum + xi1 NEXT iTheMean1 = sum/100END SUB3.2.3 FUNCTIONEND FUNCTION指令说明:该指令类似 SUB 指令,也是用来定义子程序的,不过 FUNCTION 定义的子程序必须包含返回值。 指令语法:Function(parameters) As local variable declarationfunction codeEND FunctionProgramDim lRet as long = -1lRet = add1(5) End ProgramFunction add1(byval a as long) a
16、s long指令用例:Add1=a+1End Function如上例所示,FUNCTION 子程序通过表达式的方式来调用。首先定义一个 LONG 型变量 lRet,然后用它来接收 ADD1 的返回值。 3.2.4 WITHEND WITH指令说明:该指令的作用是设定当前默认的运动对象。在 WITHEND WITH 关键字中间区域的操作对象都为 WITH 后面设定的对象。 指令语法:With End withA1.VMax=5000A1.Vord=5000A1.VCruise=3000A1.PEMax=10A1.PESettle=0.01Move A1 100使用 with 指令指定当前默认运动
17、对象为 A1 后,上述代码可以替换成: With A1VMax=5000Vord=5000指令用例:VCruise=3000PEMax=10PESettle=0.01End With可以看到,WITH 指令可以简化编程。另外,WITH 指令不能嵌入使用,即不能再 WITH 指令区域里面再使用另外一个 WITH 指令,这样会导致报错。 3.2.5 ATTACHDETACH指令说明:Attach 指令用来将运动对象绑定到该任务上。绑定的作用是防止其他任务操作该对象。Detach 用来将已绑定的对象解绑定。 指令语法:Attach DetachProgramAttach ROBOTMove P1Mo
18、ve P2 DetachEnd program指令用例:3.3 条件指令3.3.1 IFTHENELSE指令说明:IFTHENEND IF 指令组的含义是“(IF)如果成立,则(THEN)”。该指令用来控制程序在某条件成立的情况下,才执行相应的操作。 指令语法:IF THENELSE END IF其中“”括起来的部分为可选。ELSE 表示当 IF 后面跟的条件不成立时, 会执行其后面的程序语句。 指令用例:IF D_IN1 = OFF ThenMove A1 100 Abs=0 ElseMove A1 200 Abs=0End If上述指令表示,当 D_IN1的值等于 OFF 时,正向移动 A
19、1 轴 100;否则,正向移动 A1 轴 200。 3.3.2 SELECTCASE指令说明:该指令在条件变量或条件表达式有某些特定的取值时,进行条件选择并执行相应程序。 指令语法:SELECT CASE CASE statement_list CASE IS statement_list CASE TO statement_list CASE comma statement_list CASE ELSEstatement_list END SELECT其中表示可能有某些特定取值的变量或表达式。 CASE 后面跟的特定情况有五种: 表示具体的取值; IS表示的 取值与的逻辑关系,为逻辑操作符,
20、 有,=,=,=六种;TO表示 的值处于两个表达式或变量的值之间,包含两个表达值或变量的值;,表示的取值为 或 ; ELSE 表示如果没有满足 的情况。ProgramDim I as LongSelect Case I Case 0Print I = 0 Case 1Print I = 1 Case is = 10Print I = 10 Case is 0Case 5 To 10Print I is between 5 and 10Case 2, 3, 5Print I is 2, 3 or 5Case ElsePrint Any other I valueEnd Select End Pr
21、ogram指令用例:3.4 循环指令3.4.1 WHILEEND WHILE指令说明:该指令用来循环执行包含在其结构中的指令块,直到条件不成立后结束循环。通常用来阻塞程序,直到某条件成立后才继续执行。 指令语法:While End WhileWhile ROBOT.IsMoving = 1 wait for profiler to finishsleep 20End WhileWhile A2.VelocityFeedback 1000Print Axis 2 Velocity Feedback still under 1000Sleep 1 free the cpuEnd While指令用例
22、:如上所示,第一个例子是比较典型的运动控制循环,循环的条件是 ROBOT 组正处于运动过程中。该循环的功能是如果 ROBOT 正处于运动过程中,我们就将程序阻塞在该循环里面,直到 ROBOT 停止运动才跳出循环继续往下执行。第二个例子使用 A2 的反馈速度作为条件,当 A2 的反馈速度低于 1000 时,执行循环内的打印及休眠语句,当 A2 的反馈速度大于或等于 1000 时,表达式不成立, 此时就会跳出循环,继续执行后面的语句。需要注意的是 WHILE 循环执行过程中会完全占有 CPU 资源,需要在循环的最后加上 SLEEP 指令,以释放 CPU 资源给其他任务,防止因为 CPU 占用率过高
23、而产生报警。 3.4.2 FORNEXT指令说明:FOR 循环类似 WHILE 循环,也是循环执行包含在其结构中的程序块,不同的是 FOR 循环通常用在指定了程序块循环次数的情况下使用。 指令语法:FOR = TO STEP NEXT Dim I as double = 0 定义循环条件变量 For I = 1 to 10 Step 0.5Print “I = ”; INext IFor I = 1 to 10Print “I = ”; INext指令用例:如上用例所示代码,FOR 循环会打印出 1,1.5,2,2.5,39.5,10。STEP 以及关键字是可选的, 如果没有 STEP0.5
24、, 则循环打印出来的结果为1,2,39,10 。可以看到步进量( STEP 关键字后面跟的数字)可以是DOUBLE类型,此时循环变量 I 也必须定义为 DOUBLE 类型。 3.5 流程控制指令3.5.1 CALL指令说明:该指令的功能是调用由 SUBEND SUB 关键字定义的子程序。TEST.PRGprogramPrint “This is Main Program”call TESTSUB end programTESTSUB.LIBsub TESTSUBPrint “This is sub”end sub This is Main Program This is sub call 指令
25、语法: 指令用例:在主程序(PRG 文件)中使用 call 关键字调用子程序,程序会切到子程序内执行子程序内的语句。上述用例的输出为先打印出“ This is Main Program”,然后打印出“This is sub”。 3.5.2 GOTOLABEL指令说明:GOTO 指令主要用来跳转程序到指定标签位置(LABLE)处。要使用 GOTO 关键字,必须现在程序中定义 LABEL 标签,且 GOTO 与 LABEL 必须同处在一个程序块中( PROGRAMEND PROGRAM, SUBEND SUB, FUNCTIONEND FUNCTION, ONEVENTEND ONEVENT)。
26、指令语法:GOTO :programif D_IN1 = ON thenGoto LABEL1end ifPrint “D_IN1 = OFF”LABEL1:Print “D_IN1 = ON”end program指令用例:如上用例所示,当 D_IN1为 ON 时,执行 GOTO 指令,此时程序会直接跳转到 LABEL1:处,然后执行后面的语句,即打印出“D_IN1 = ON”,而不会执行 Print “D_IN1 = OFF”这一行。需要注意的是,请尽量避免使用 GOTO 语句。GOTO 语句会打乱整个程序的逻辑顺序,使得程序结构混乱,不容易理解, 且容易出错。 3.6 延时指令3.6.1
27、 DELAY指令说明:DELAY 指令用来延时机器人的运动,最小延时时间为 2,单位ms。programwith ROBOT Attach ROBOTMove ROBOT P2Delay ROBOT 2 延 时 2msPrint “ROBOT IS STOPPED”Detachend with end program Delay 指令语法: 指令用例:如上述用例所示,程序首先执行 MOVE 指令,控制机器人 ROBOT 从当前点移动到目标点 P2,等到机器人移动到 P2 点后开始执行 DELAY 指令,2ms 后打印输出“ROBOT IS STOPPED”。 3.6.2 SLEEP指令说明:S
28、LEEP 指令的作用是延时程序(任务)的执行,最短延时时间为 1,单位ms。 programwith ROBOTAttach ROBOTMove ROBOT P2 假设该运动的持续时间为 200ms; Sleep 100 延时 100msPrint “ROBOT IS NOT STOPPED”Detach end withend programSleep 指令语法: 指令用例:如上述用例所示,Move 指令开始执行的同时,SLEEP 指令开始执行,我们假设 MOVE 指令执行完(机器人运动到 P2 点)的时间要 200ms,那么,MOVE 指令执行了 100ms 后,“ROBOT IS NOT
29、 STOPPED”就会打印输出,此时机器人还未到 P2 点。然后等到机器人运动到 P2 点后,整个程序执行完毕。 3.6.3 延时指令总结通过上面两个小结的说明,可以看到 DELAY 延时指令与 SLEEP 延时指令的区别。DELAY 延时指令是针对机器人组的,其指令格式中必须带有运动对象,且最小延时时间为 2ms。SLEEP 延时指令针对的是程序(任务),该指令并不能控制运动对象的运动延时,只能控制程序(任务)执行过程的延时,SLEEP 指令的最小延时时间为 1ms。 3.7 变量声明3.7.1 全局变量声明COMMON SHARED AS DIM SHARED AS 全局变量声明指令:指令
30、说明:COMMON SHARED 关键字定义的全局变量对于其他文件可见。DIM SHARED关键字定义的全局变量仅对定义它的那个文件可见。common shared i as long = 0dim shared j as double programdim k as stringk = “abc”end programsub TESTSUBdim l as long end sub Common Shared | Dim Shared As = 指令语法: 指令用例:如上述用例所示,COMMON SHARED 关键字和 DIM SHARED 关键字定义的变量放在程序文件的开头位置(PROGR
31、AM 关键字的上方)。不允许在 PROGRAM 结构中定义 SHARED 变量。 3.7.2 局部变量声明DIM AS 局部变量声明指令:指令说明:DIM 关键字定义的变量仅在定义该变量的程序块中可见。common shared i as long = 0dim shared j as doubleprogramdim k as stringk = “abc”end programsub TESTSUBdim l as longend sub Dim As = 指令语法: 指令用例:如上述用例所示, DIM 关键字定义的变量必须放在程序结构中, 例如 PROGRAMEND PROGRAM,SU
32、BEND SUB,FUNCTIONEND FUNCTION中。且定义的位置必须紧跟 PROGRAM,SUB,FUNCTION 关键字的下一行,不允许在程序结构的其他位置定义局部变量。 3.8 IO 指令3.8.1 WAIT指令说明:该指令用来等待某一指定的输入或输出的状态等于设定值。若指定的输入或输出的状态不满足,程序会一直阻塞在该指令行,直到满足位置。 指令语法:call wait( , )programD_OUT1 = OFFcall wait(D_OUT1, ON)Print “D_OUT1 = ON”end program指令用例:如上述用例所示,WAIT 指令需要使用 CALL 指令
33、来调用。WAIT 指令的第一个参数为 IO,第二个参数为该 IO 的状态的期望值。程序中设定 D_OOUT1为 关闭状态后,等待 D_OUT1再次打开,此时程序会阻塞在该处,因为 D_OUT1 为关闭,知道其他程序或者用户手动将 D_OUT1的状态置位后,该指令返回, 程序继续执行打印操作。 3.8.2 WAITUNTIL指令说明:该指令类似于 WAIT 指令,不同之处是增加了延时时间参数以及延时标识。当指令等待 IO 状态超过设定时间时,该指令不管 IO 的状态是否满足,直接返 回,并置延时标识为 TRUE。programdim flag as long = -1D_OUT1 = OFFca
34、ll waituntil(D_OUT1, ON, 3000, flag)if flag = TRUE thenPrint “D_OUT1 = ON”elsePrint “D_OUT1 = OFF”end if end program call waituntil(, , , )指令语法: 指令用例:如上述用例所示,程序首先复位了 D_OUT1的状态,然后执行 WAITUNTIL 指令。该指令会判断 D_OUT1的状态是否为设定的状态,且等待时间为3000ms 。如果在 3s 之内,D_OUT1的状态切到 ON,则指令立即返回, 且值 flag 标识为 TRUE,程序打印“D_OUT1 = ON
35、”;如果 D_OUT1一直处于 OFF 状态,那么 3000ms过后,该指令也会返回,切置 flag 的值为 FALSE, 此时程序会打印“D_OUT1 = OFF”。 3.8.3 PULSE指令说明:PULSE 指令的作用是生成一个固定时间长度的 IO 脉冲。 programD_OUT1 = OFFcall pulse(D_OUT1, 500) end programcall PULSE(, )指令语法: 指令用例:如上述用例所示,程序首先将 D_OUT1复位,接着调用 PULSE 指令。此时PULSE 会将 D_OUT1的状态置为 ON,并且保持 500ms,然后将 D_OUT1 的状态置
36、为 OFF。 3.9 寄存器华数 II 型系统中预先定义了几组不同类型的寄存器供用户使用。其中包括整型的 IR 寄存器,浮点型的 DR 寄存器,笛卡尔坐标类型的 LR 寄存器,关节坐标类型的 JR 寄存器。其中 IR 与 DR 寄存器有 200 个可供用户使用,LR 与 JR 寄存器有 1000 个。 programwith ROBOT AttachMove ROBOT JR1Move ROBOT JR2寄存器可以直接在程序中直接使用。一般情况下,用户将预先需要设定的值手动设置在对应的寄存器中。例如,在手动示教时,将示教点位手动保存在 LR 或 JR 寄存器中,然后编程时直接使用: while
37、 TRUEMoves ROBOT LR1 Moves ROBOT LR2if IR1 = 0 then goto END_PROGend ifSleep 10end while END_PROG:Detach end withend program如上述用例所示,在程序中可以直接使用预先设定好的寄存器值。使用这种方式编程可以很好的解决点位的调整以及保存等问题。另外,通过 IR 或 DR 寄存器来进行某些条件判断也是很好的辅助程序控制手段,比使用 IO 点位更加简单方便。 处理4.1 处理指令集ONEVENT定义指令 EVENTON激活 EVENTOFF关闭 4.2 ONEVENTEND ONE
38、VENT指令说明:该指令为定义指令,指定了当触发后所要执行的操作,PRIORITY 和 SCANTIME 为可选属性,前者定义了该的优先级,默认为最高的 1,后者定义了扫描周期,默认为 1 倍的总线周期。一般优先级及扫描周期使用默认值即可。 指令语法:OnEvent Priority= ScanTime=EndOneventOnEvent EV1 D_IN1=1Trigger event when input 1 is 1Print “This is event 1”EVENTOFF EV1End OnEvent指令用例:如上述用例所示,程序中定义了一个名为 EV1 的,该的触发条件为D_IN
39、1=1。当 被激活后,系统会周期性扫描D_IN1的值,一旦D_IN1 的值满足触发条件,程序就会跳转到 ONEVENT 指令定义的中,执行里面的 操作。完成后返回到程序之前执行的位置继续往下执行。需要注意的是的触发条件不能使用局部变量。 4.3 EVENTON指令说明:该指令用来激活某个指定,系统开始对该的触发条件开始进行扫描。 指令语法:Eventon 指令用例:见 4.2 中 ONEVENT 指令用例。 4.4 EVENTOFF指令说明:该指令用来关闭某个指定,停止系统对其触发条件的扫描。Eventoff 指令语法:指令用例:见 4.2 中 ONEVENT 的指令用例。 4.5 EVENT
40、 编程案例详见附件:附件 3-EVNT.PRG 五、错误处理5.1 TRYEND TRY指令说明:该指令用来将指定任务代码中的某些特定的同步错误获取到,并按照定义的错误处理方式进行错误处理。 指令语法:Try Start of Try block End Try blockEnd TryCatch Catch Catch Elsecode to catch allother errors Finally 指令用例:common shared appError1 as error Application error 20561 programtry come codecatch 8001 div
41、ision by zerocatch appError1.num 20561Print Application error end tryend program上述用例定义了一个用户级错误 appError1,绑定的错误码为 20561。 为用户任务代码,在执行这部分代码时,可能会产生 8001(除以0)或 20561(自定义错误)的同步错误,当错误发生时,会被对应的 CATCH 指令抓取到,然后执行 CATCH 指令后面的用户定义的错误处理代码。需要注意的是,CATCH 指令只会抓取与其后面错误码对应的错误,并不是任何错误都会抓 取。 5.2 ONERROR指令说明:End of progr
42、amEnd ProgramEnd of OnError blockEnd OnErrorcatch catch catch elseStart of OnError blockOnErrorBeginning of programProgram该指令用来获取任务中产生的同步或异步错误,错误发生时,执行指定的错误处理代码。(同步错误指程序中特定某一行引发的解释错误,异步错误并不与某一程序行相关,而是在运行过程中产生,例如跟踪误差报警、超速报警等)。指令语法:program OnErrorcatch 3017print Position Following Error指令用例:End OnErro
43、r with ROBOT AttachMove ROBOT LR1Move ROBOT LR2Detachend with end programStop all motionSystem.motion = 0如上用例所示,使用 ONERROR 指令定义了 3017(跟踪误差报警)的错误处理。在机器人运行过程中,报出跟踪误差(3017 号报警)后,ONERROR 会抓取到报警信息,然后转到 ONERROR 中定义好的错误处理过程中 打印出“POSITION FOLLOWING ERROR”信息,然后设置 SYS.MOTION 等于 0,停止 机器人运动。 5.3 错误处理总结1. 同步错误:由
44、用户程序在执行过程中被解释器检测到的错误,该错误会指定到用户程序的某一行,在报出错误信息的同时也会指出是程序中的那一行导致了该错误的发生。在不更改程序的情况下,每次运行到该行都会报出相同的错 误。 2. 异步错误:异步错误并不由程序中特定的某一行导致,而是在程序运行过程中,某些属性值超出其阈值,导致报警的发生。例如跟踪误差报警、超速报警等。 3. TRY 指令只能用于同步错误的处理;ONERROR 指令则两种报警都支持。 4. TRY 指令的作用范围为 TRY 指令与第一个 CATCH 指令之间的代码段; ONERROR 指令的作用范围只在定义其的任务范围内,其他任务的报警 ONERROR 指
45、令无法获取。 六、圆滑过渡(BLENDING)6.1 Continue Path(CP)圆滑过渡6.1.1 参数6.1.1.1 BlendingMethod该参数定义了圆滑过渡功能的类型,使用 CP 模式时其值必须设置为 1。 6.1.1.2 CP该参数定义了圆滑过渡的起始位置,其单位为 mm。具体含义如下图所示: 路径为 A-B-C,在 B 点使用圆滑过渡功能,则 CP 值定义了圆滑过渡的起始点为 AB 路径上距离 B 点为该值位置。可理解为以 B 点为圆心,CP 值为半径作一圆,该圆与 AB 线段的交点即为圆滑过渡的起始点。 6.1.2 适用范围CP 模式仅适用于单一的运动指令中,在关节插
46、补(MOVE)和笛卡尔插补 (MOVES,CIRCLE)混合使用的情况下无效。 6.1.3 CP 值的设置如上图所示,CP 值定义了圆滑过渡起始点到 B 点的距离。但是当 CP 的值设置为超过 AB 线段长度一半时,系统会默认将 CP 的值设置为 AB/2。即当 CP 值的有效范围为 0 到当前线段长度的 1/2,超过当前线段 1/2 长度的值会被限制在该值。另外当 CP 值设为 0 时,表示不使用圆滑过渡功能。 6.2 Super Position(SP)圆滑过渡6.2.1 参数6.2.1.1 BlendingMethod该参数定义了圆滑过渡功能的类型,使用 SP 模式时其值必须设置为 2。
47、 6.2.1.2 BlendingFactor该参数定义了圆滑过渡的起始位置,其值为百分比。具体含义如下图所示: 路径为 A-B-C,在 B 点使用原话过度功能,则 BlendingFactor 值定义了圆滑过渡的起始点 D 点的位置:AD=BlendingFactor*AB/100。 6.2.2 适用范围SP 模式可以用于关节插补和笛卡尔插补的混合运动中。 6.2.3 BlendingFactor 值的设置如上图所示,当该参数设置为 0 时,表示圆滑过渡从 A 点开始,C 点结束, 整个新的路径完全不同于原有路径。当该参数设置为 100 时,表示不使用圆滑过渡功能。 6.3 圆滑过渡总结1. 在某一运动程序中,可以通过切换 BlendingMethod 的值使用不同的圆滑过渡方式。但是需要注意的是,仅
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 电子商务竞争分析考核试卷
- 传感器在智能制造执行系统中的无线通信与网络技术考核试卷
- 游戏治疗玩具的互动性与教育性研究考核试卷
- 公共交通系统与城市公共交通信息化融合的趋势分析考核试卷
- 2025年中国LED电脑彩色灯数据监测研究报告
- 2025年中国ABS浴缸腿数据监测研究报告
- 2025年中国ADSL调制解调器数据监测报告
- 2025年中国2-硫化二苯并噻唑数据监测报告
- 2025至2030年中国鸡油菌罐头市场分析及竞争策略研究报告
- 2025至2030年中国铁樟实木地板市场分析及竞争策略研究报告
- 2025年 汕头市公安局警务辅助人员招聘考试笔试试卷附答案
- 脑出血的护理查房
- 天津大学强基计划校测面试题
- 2025年大学思想政治理论课程考试试卷及答案
- 合同的内容讲课件
- 2025年农村经济与管理考试试题及答案
- 夏季安全生产试题及答案
- 陕西省专业技术人员继续教育2025公需课《党的二十届三中全会精神解读与高质量发展》20学时题库及答案
- 消杀记录台账
- 施工总平面图布置图及说明
- 医学课件-主动脉夹层课件
评论
0/150
提交评论