程序指令

右键单击程序program或者从工具栏菜单Program menu中添加新指令如上一节所示。

提示你只能在所选指令后添加新指令。

提示你可以在程序内或不同程序之间拖拽指令对其重新排序。

本节将介绍如何在RoboDK图形操作界面上运用机器人离线编程。

关节运动

选择“程序ProgramRobot Programs - 图片 4关节运动指令Move Joint Instruction即可添加关节运动指令。你也可以在工具栏中选择相应按钮。

如果在添加指令时没有选中一个机器人目标,运动指令将会创建一个新目标点并关联运动与该目标。如果该目标点被移动了,运动指令也随之改变。

当程序添加第一条指令后,在该指令运行前将会添加两条指令:“参考坐标系选项Reference Frame selection”和“工具坐标系选项Tool Frame selection”。这会保证当程序运行到该运动指令时,机器人会使用相同的参考坐标系和工具坐标系来创建新目标。

注意:右键单击运动指令,然后选择“目标选项Target options… (F3)就可以打开目标选项菜单。你可以在这个窗口直接更改数据,或者直接在3D视图中修改目标信息。

Robot Programs - 图片 5

线性运动

选择程序ProgramRobot Programs - 图片 6直线运动指令 Move Linear Instruction即可添加一个直线运动指令。你也可以在工具栏中选择相应按钮。

如果你没有在添加指令之前选择一个目标运动指令将会创建一个新目标并使其连接。如果该目标被移动了运动指令也随之改变。

关节运动和直线运动的移动方式一样,你可以轻松地从一种类型切换到另一种类型。

直线运动指令与关节运动指令操作相同的是,当程序添加第一条指令后,在该指令运行前程序将会添加两条指令:“参考坐标系选项Reference Frame selection”和“工具坐标系选项Tool Frame selection

重要提示:我们建议使用关节目标与关节运动设置每个程序的第一条运动指令。这样能从第一条指令开始确保机器人使用正确的位姿,并保证真实机器人的移动方式与仿真相同。

不同与关节运动的是,机器人对直线运动的奇点和轴限制非常敏感。例如,六轴机器人在直线运动后不能越过奇点。下图的示例表示“关节5太靠近奇点(0度)。 [...]正考虑关节运动来替代Joint 5 is too close to a singularity (0 degrees). […] Consider a Joint move instead”。如下图所示:

Robot Programs - 图片 7

如果不是非常必要的直线移动,你可以右键单击移动指令将其改为关节指令。

Robot Programs - 图片 8

或者通过修改目标、TCP或参考坐标系的位置来避免奇点。

设置参考坐标系

选择“程序Program Robot Programs - 图片 9 设置参考坐标系指令Set Reference Frame Instruction即可设置参考坐标系。这个指令会为接下来的运动指令更新控制器上的当前参考坐标系,并在RoboDK仿真中改变参考坐标系。对于特定目标(笛卡尔目标),运动指令会随着最新的参考坐标系变化。

参考坐标系的变量名有Work Object (ABB机器人)UFRAMEFanuc机器人),FRAME(针对Motoman机器人)或者$BASE(针对KUKA机器人)。

Robot Programs - 图片 10

注意一些控制器比如FanucMotoman控制器支持用编号设置参考坐标系。这表示参考坐标系的名字可以用数字结尾例如Frame 4代表第4个参考坐标系

设置工具坐标系

选择程序ProgramRobot Programs - 图片 11 设置工具坐标指令Set Tool Frame Instruction即可设置工具坐标系TCP

这个指令会为接下来的运动指令更新当前工具坐标系并在RoboDK仿真中改变工具坐标系。这意味着对于特定机器人目标笛卡尔目标的运动指令会随着最新的工具坐标系变化。

参考坐标系的变量名有ToolData (ABB机器人)UTOOLFanuc机器人, TOOL针对Motoman机器人或者$TOOL针对KUKA机器人

Robot Programs - 图片 12

注意:一些控制器(比如FanucMotoman控制器)支持用编号设置工具坐标系。这表示工具坐标系的名字可以用数字结尾(例如Tool 4 代表第4个工具)。

圆弧运动

选择“程序ProgramRobot Programs - 图片 13 圆弧运动指令Move Circular Instruction即可添加圆弧运动指令。你也可以在工具栏中选择相应按钮。

除非你在添加这个指令前已经有了两个目标点,则该运动指令将不会创建新的目标点。你可以在圆弧运动中添加两个或者更多的目标点,并将它们连接,如下图所示。

Robot Programs - 图片 14

圆弧运动会在机器人所在点开始创建的一条曲线,紧接着运动会穿过第一个循环点(Target Linked 1),最后在目标连接点2处(Target Linked 2)结束循环。

重要提示:只通过一个圆弧指令就完成一整条曲线是不太可能的。因为一条完整的曲线必然会分割成两个曲线运动。

设置速度

选择“程序ProgramRobot Programs - 图片 15 设置速度指令Set Speed Instruction即可添加速度和加速度指令,这个指令可以改变速度和加速度。你也可以在笛卡尔空间和关节空间处设定速度和加速度。

在程序中相应的位置设置速度或者加速度。当执行该指令时,机器人会应用设定好的速度。

你也可以在机器人参数菜单里更改机器人运动速度:双击你的机器人,然后选择参数。

注意:并不是所有机器人控制器都支持设置准确的加速度。

重要提示:设置合适的速度会对精准计算程序执行时间影响很大。更多信息请参考cycle time section

Robot Programs - 图片 16

显示信息

选择程序ProgramRobot Programs - 图片 17 显示信息指令Show Message Instruction”,这个指令可以帮助你在示教器上显示提醒信息。

Robot Programs - 图片 18

注意:并不是所有机器人控制器都支持在示教器上显示信息。所以对于那些不支持的设备,这条屏幕显示信息指令将不会起作用。

暂停

选择“程序ProgramRobot Programs - 图片 19 暂停指令Pause Instruction,这个指令将会在指定时间内暂停程序,或者停止程序直到操作器想要恢复它。

Robot Programs - 图片 20

注意:将暂停延迟值设置为-1即可暂停,直到操作员希望恢复程序。这时该指令将自动命名为Stop

重要提示:在仿真时,一次5秒的暂停会花1秒的时间去仿真。更多相关信息请访问Simulation section

程序调用

选择“程序ProgramRobot Programs - 图片 21 添加函数调用/插入代码指令Program Call Instruction即可在当前程序下的子程序里添加一个程序调用指令。

默认情况下,这是一个阻塞(blocking)调用。然而,你也可以使用“插入代码Insert Code,在指令的位置插入代码。这对一些个别应用软件和控制器帮助很大。

提示:选择“选择程序Select program即可自动填充该文字框。另外,文本匹配同样可以做到自动填充该文字框。当你在指令下的子程序里匹配到一个名字,这个子程序将会在RoboDK中仿真。

提示:可以输入多行指令自动连续调用多个子程序。

Robot Programs - 图片 22        Robot Programs - 图片 23

当你从程序调用Program Call切换到开始线程Start Thread这时子程序将会唤起一个非块调用机器人控制器也会开始一个新的线程。然而这个选项只适用于一些指定的控制器和操作内容。

提示:如果你的主程序是以仿真为目的,你或许可以尝试切换到“开始线程Start Thread”选项,这样你就可以在同一时间执行多个仿真程序(例如当两个及以上机器人在执行仿真时)

设置/等侯IO

选择“程序ProgramRobot Programs - 图片 24 添加信号输出/等待信号指令Set or Wait I/O Instruction即可修改数字输出(Digital Outputs)的状态。这个指令的默认值为“设置数字输出(Set Digital Output)”。然而这个指令允许等待特定的“数字输入(Digital Input)”来转换到特定的状态。

如果你想把“IO 名字(IO Name)”作为命名变量,我们建议你对IO的名字进行编码或者用字符替代。“IO值(IO Value)”可以用数字(0代表错误1代表正确)或者字符来表示状态。

注意:这个指令同样也支持在一些机器人控制器上设置“模拟输出(Analog Outputs)”或者等待“模拟输入(Analog Inputs)”。这时你可以用十进制数字或者特殊字符命名而不仅仅只用数字。

Robot Programs - 图片 25

当选择等待数字输入Wait for Digital Input)”,程序便会在输入数值变化到指定数值时停止。还有,如果等待时间超过了指定数值,这时大多数控制器会报错,原因是超时延迟。这时你可以去激活“超时Timeoutms)”功能。

Robot Programs - 图片 26

提示这里有个很好的例子如果机器人的元件上有一些特别硬件例如工具gripper或者铣削主轴),你可以用数字输出Digital Output)”激活这些硬件然后等待数字输入Digital Input)”来转换状态。

更改仿真数字输入Digital Inputs)”数字输出Digital Outputs)”将会创建一个新的站变量。如果想要查看这些变量的状态你可以右键单击这个站即可查看站参数Station Parameters)”。你也可以通过API读写这些变量。

设置轨迹精度

选择“程序ProgramRobot Programs - 图片 27 设置轨迹精度Set Rounding Instruction即可修改轨迹精准度。这个轨迹精度可以用来顺滑两个连续运动的间隙。当程序执行这个指令时,轨迹精度便开始做影响(这个过程和其他指令相似),所以在程序开始前设置轨迹精度是非常必要的。

如果没有轨迹精度指令,当每次机器人运动最后,机器人速度将会降到0(除非下一个动作与前一个动作相切)。这将引起高加速度和快速变速,以确保每个运动的最佳精度。

该值也被称为Blending radiusUniversal 机器人),ZoneDataABB机器人),CNT / FINEFanuc机器人),CorneringMecademic机器人)或者$ APO.CDIS / $ APO.CPTP / AdvanceKUKA机器人)。

注意:设置“轨迹精度Rounding value”为-1即可唤起运动。这样的话机器人就不会绕着路径边缘做运动。

Robot Programs - 图片 28

提示:较高的轨迹精度确保机器人在通过作业路径时保持较为连贯的速度,但这是以失去精准度为代价的。根据不同的应用,通常是可以在准确度和平稳速度之间找到一个好的折衷方案。

RoboDK 路径测量系统里的“路径精准度path accuracy测试或许会让你对不同轨迹精度的作用有一个更好的理解。

仿真事件

选择“程序ProgramRobot Programs - 图片 29 仿真事件指令Simulation Event Instruction即可唤醒一个仿真事件。仿真事件的作用不在于生成代码,而是为了唤起一些以仿真为目的的事件。

在图形操作界面进行仿真事件可以实现:

   机器人抓取或放置工件

   展示或者隐藏对象或者工具

   改变对象的位置和参考坐标系

Robot Programs - 图片 30

举例来说,如果我们想要机器人运动到指定位置抓取工件,此时可以创建“抓取工件Attach object事件,此时机器人便会和该工件一起移动。机器人抓取工件且已经准备好离开时,我们可以创建“放置工件Detach object事件,此时机器人将会放置已经抓住的工件。

Robot Programs - 图片 31

注意:一些特殊事件也可以通过宏(需要编程经验)进行仿真。例如,通过使用API接口,机器人就会在特定位置随机出现的运动工件进行取和放的仿真。

注意:当将物体附加到工具时,工具会选中最近的物体(只要物体对于工具不超过一个预设距离)。默认距离是200mm并可以在此更改:“工具Tools 选项Options 对象连接至机器人工具的最大距离Maximum distance to attach an object to a robot tool”。另外,在默认情况下,该距离为TCP点到物体参考坐标系原点的距离。你也可以使用“TCP到物体的最短距离Check shortest distance between TCP and the object shape”。