10.6.1 寄存器概述
寄存器表示机器人内的可用变量,一般用来与外部设备进行数据通信,从而达到控制机器人、获取机器人状态的目的。寄存器也可以在当前 RL 工程中作为变量使用,支持两种操作寄存器变量的方式:指令式和赋值式。
|
注意:
|
10.6.2 寄存器参数配置
在“通信”→“寄存器”页面,可查看现有寄存器,以及进行添加、编辑、删除操作。
① |
寄存器列表 |
② |
寄存器导入导出按钮:点击后,切换到寄存器导入导出页面,进行导入、导出操作。 |
③ |
寄存器操作按钮: 从左至右依次是:新建、编辑、删除。 |
寄存器列表各列参数说明如下表:
| 参数 | 说明 |
|---|---|
名称 |
在 RL 中,可以通过该名称,访问寄存器变量。 |
类型 |
目前支持六种:bit、byte、bool、int16、float、int32。 |
起始寄存器 |
同一总线设备内的同一读写属性的寄存器地址不可交叉占用。另外,Modbus 总线设备内不同读写属性的寄存器地址也不可交叉占用。 |
读写 |
读写属性,表示该寄存器在机器人的视角(而不是主站或从站视角)下是对其进行读操作还是写操作。只写寄存器用于机器人对外输出状态;只读寄存器用于机器人获取外部设备发过来的命令。 |
是否保持 |
当寄存器设置为保持时,该寄存器值在机器人重启、关机或者断电、RL 停止时,会保持在非易失的存储介质上。当机器人重新上电或者 RL 重新运行时,此寄存器的值就会恢复成关机、RL 停止运行前的保持值。 |
长度 |
长度表示该变量的数量。对于大于 1 的变量,可以使用数组的方式进行变量引用,下标从 1 开始。 |
位偏移 |
位偏移,代表bit类型寄存器映射到寄存器的位置。一个寄存器占两个字节,即16位,位偏移是指对应寄存器的位置,偏移值为1-16。创建bit类型寄存器时,如果元素个数为1时,可以设置偏移量;反之,则不可以。 |
字节偏移 |
字节偏移代表Byte类型寄存器映射到寄存器的位置。一个寄存器占两个字节即16位,而byte变量只需要8位。因此,在创建byte寄存器变量时,需要选择是映射到寄存器的低地址8位(1-8)或者高地址8位(9-16)。 |
结束寄存器 |
结束寄存器表示寄存器变量所占用的最后一个寄存器地址。在寄存器变量连续排布时,通过该值,用户可以快速了解寄存器占用的空间。 |
设备名称 |
设备名称是“总线设备”创建时定义的名称,表示寄存器绑定到哪一个总线设备上。支持将寄存器绑定到 CC-Link、CC-Link IE Field Basic、Modbus、EtherCAT 设备上。 |
功能 |
这一列中的内容是一些固定的功能码,表示该寄存器对应的机器人功能。功能码分为只读和只写功能码,详见下文寄存器功能码章节。 |
10.6.3 寄存器类型
| 类型 | 说明 |
|---|---|
bit |
仅占用一个寄存器某 1 位,bit 数组需要以 16 位的整数倍出现。举例:起始地址 41000 的 bit 类型寄存器,长度为 64,则占用 41000~41003 这 4 个寄存器。 |
byte |
仅占用一个寄存器的某 8 位,可以选择占据低地址位(寄存器的前 8 位)或者高地址位(寄存器的后 8 位)。创建 byte 寄存器数组时,默认低地址位,不可变更高低地址位。 |
bool |
占用 1 个寄存器。 |
int16 |
占用 1 个寄存器。 |
float |
占用 2 个寄存器。 |
int32 |
占用 2 个寄存器。注意:设备类型为 PROFINET 时,不支持创建。 |
bit 类型寄存器的几点说明:
① |
元素个数 |
② |
位偏移。如上图所示,如果元素个数为 1,表示占用一个寄存器某一位,可以设置位偏移数量,可选值为 1-16。 |
bit 类型的寄存器元素个数大于 1 时,即 bit 变量数组时,不允许设置偏移数量,不允许进行功能绑定。
bit 类型的寄存器输入元素个数大于 1 时,自动隐藏偏移量选项,偏移量设置为 1。
byte 类型寄存器的几点说明:
① |
元素个数 |
② |
字节地址 |
如上图所示,如果元素个数为1,表示占用一个寄存器某8 位,可以设置字节地址,可选值为:低字节位(1-8)和高字节位(9-16)
byte 类型的寄存器元素个数大于1 时,即byte 变量数组,不允许设置字节地址,默认全部是低地址位。
|
注意:当有绑定了暂停功能的寄存器或系统 IO 没有复位时,不允许通过寄存器启动程序。 |
10.6.4 寄存器功能码
10.6.4.1 只读类型功能码
只读类型多用于控制信号,控制信号通常是外部设备发给机器人,指示机器人执行相应的动作。对于机器人来说,这些寄存器是只读的。目前支持的控制信号:
功能码名称 |
支持绑定类型 |
对应功能 |
空白 |
无 |
无功能,用户自定义输入。 |
ctrl_clear_alarm |
bit/bool/byte/int16 |
清除伺服报警。0 到 1 上升沿:清除报警;置 0:复位。 |
ctrl_estop_reset |
bit/bool/byte/int16 |
急停复位。0 到 1 上升沿:急停复位;置 0:复位。 |
ctrl_jjwc_A |
bit/bool/byte/int16 |
触发类型为脉冲触发,高电平有效。信号 0→1 时,机器人停止,该信号触发的停止,不能继续运行,只能 pptomain、pptofunc 或 ppto光标后才能重新运行程序,当机器人停止后,sta_jjwc_B 信号置为 1(高电平)。信号 1→0 时,sta_jjwc_B 信号置为 0(低电平)。 |
ctrl_motor_off |
bit/bool/byte/int16 |
执行下电操作。0 到 1 上升沿:下电;置 0:复位。 |
ctrl_motor_on |
bit/bool/byte/int16 |
执行上电操作。0 到 1 上升沿:上电;置 0:复位。 |
ctrl_motor_on_off |
bit/bool/byte/int16 |
电机上电或下电:1,上电;0,下电。 |
ctrl_motoron_pptomain_start |
bit/bool/byte/int16 |
依次执行上电、程序指针到 main、启动程序。 |
ctrl_motoron_start |
bit/bool/byte/int16 |
依次执行上电、启动程序。 |
ctrl_pause_motoroff |
bit/bool/byte/int16 |
暂停程序并执行下电操作。0 到 1 上升沿:下电;置 0:复位。 |
ctrl_pptomain |
bit/bool/byte/int16 |
程序指针到 main。0 到 1 上升沿:下电;置 0,复位。 |
ctrl_program_start |
bool/byte/int16 |
开始运行 RL 程序。 |
ctrl_program_start_stop |
bit/bool/byte/int16 |
程序运行/停止。置 1:程序运行;置 0:程序停止。 |
ctrl_program_stop |
bit/bool/byte/int16 |
停止运行 RL 程序。0 到 1 上升沿:下电;置 0:复位。 |
ctrl_set_program_speed |
bit/bool/byte/int16 |
设置程序运行速率。输入值为速率,例:输入 10,则速率为 10。 |
ctrl_soft_estop |
bit/bool/int16 |
控制机器人软急停,1:不触发软急停;0:触发软急停。 |
ctrl_switch_auto_motoron |
bit/int16/byte/bool |
先切换自动模式,然后上电。0 到 1 上升沿:下电;置 0:复位。 |
ctrl_switch_operation_auto |
bool/byte/int16 |
切换自动模式。0 到 1 上升沿:切换自动;置 0:复位。 |
ctrl_switch_operation_auto_manu |
bit/bool/byte/int16 |
切换自动模式和手动模式,置 1:自动模式;置 0:手动模式。 |
ctrl_switch_operation_manu |
bit/bool/byte/int16 |
切手动模式。0 到 1 上升沿:切换手动;置 0:复位。 |
enable_safe_region01~enable_safe_region10 |
bit/bool/byte/int16 |
开启对应的安全区域。0 到 1 上升沿:开启安全区域;置 0:复位。 |
ext_cmd_set |
bit/bool/int16 |
远程控制功能:下发指令见“远程控制”。 |
ext_request_data |
int16 数组 |
远程控制功能:指令功能码。数组,固定长度 8 寄存器。 |
ext_reset |
bit/bool/int16 |
远程控制功能:整体功能重置。见“远程控制”。 |
ext_resp_get |
bit/bool/int16 |
远程控制功能:确认并清除上一条命令的响应。 |
ctrl_estop_reset_and_clear_alarm |
bit/bool/byte/int16 |
复位急停状态并清除报警。0 到 1 上升沿:复位急停状态并清除报警;置 0:复位。 |
ctrl_reduced_mode |
bit/bool/byte/int16 |
触发机器人缩减模式。0 到 1 上升沿:触发机器人缩减模式;置 0:复位。 |
ctrl_reset_cursor_state |
bit/bool/byte/int16 |
重置前瞻指针变化标记(sta_cursor_state)。0 到 1 上升沿:重置 sta_cursor_state 为 0。 |
ctrl_change_prog |
int16/int32 |
触发工程切换,输入值为工程切换列表中的 ID 值。 |
说明:以上系统寄存器,所有的系统输入均为脉冲触发,为了保证 xCore 系统正确接收外部的指令,请保证外部输入的脉冲宽度不小于 60 毫秒。
前置条件/注意事项 |
||
上电 |
机器人处于自动模式; |
|
下电 |
||
程序启动 |
机器人处于自动模式; |
|
程序暂停 |
外部设备通过寄存器发送一个程序暂停操作(不下电)。 |
|
急停处理 |
拍下急停信号或者触发外部急停时序逻辑。(注意:拍下急停后,程序会停止。同时电机下电,指针丢失,在下一次启动的时候需要先执行清报警、上电、程序到 main 指令。) |
|
机器人开机启动全流程 |
操作顺序: |
10.6.4.2 只写类型功能码
只写类型多用于状态信号,状态信号是指机器人对外发出的信号,对外反馈机器人的状态,包括上电状态、程序运行状态等。对于机器人来说,寄存器是只写代表可以绑定该状态信号。目前支持的状态信号有以下几种:
功能码名称 |
支持绑定类型 |
对应功能 |
空白 |
无功能,用户自定义输出。 |
|
ext_error_code |
int16 |
远程控制功能:错误码。 |
ext_resp_set |
bit/bool/int16 |
远程控制功能:指令执行完毕的响应。 |
ext_response_data |
int16 数组 |
远程控制功能:需要反馈的数据。数组,固定长度 8 寄存器。 |
sta_alarm |
bit/bool/byte/int16 |
伺服报警状态,1:有伺服报警;0:无报警。 |
sta_board_DI0~sta_board_DI3 |
bit/bool/byte/int16 |
实时输出自研 IO 板和实点 IO 每个信号的状态。 |
sta_board_DO0~sta_board_DO3 |
bit/bool/byte/int16 |
实时输出自研 IO 板和实点 IO 每个信号的状态。 |
sta_collision |
bit/bool/byte/int16 |
碰撞检测状态,1:检测到碰撞;0:无碰撞。 |
sta_collision_alarm |
bit/bool/byte/int16 |
碰撞检测报警,1:检测到碰撞;0:无碰撞;只有清除报警可清除该报警。 |
sta_collision_open |
bit/bool/byte/int16 |
碰撞检测开启状态。1:碰撞检测开启;0:碰撞检测未开启。 |
sta_controller_is_running |
bit/bool/byte/int16 |
控制器开机信号,1:控制器正在运行;0:控制器未运行。 |
sta_encoder_low_battery |
bit/bool/byte/int16 |
编码器低电压报警状态或电池到维护保养日期报警。 |
sta_grease |
bit/bool/byte/int16 |
润滑脂更换报警状态。 |
sta_routine_maintenance |
bit/bool/byte/int16 |
常规维护报警状态。 |
sta_error_code |
int16 |
机器人上报错误码,该错误码与机器人日志中的错误码数值相差 30000。举例,机器人日志“超出运动范围”的错误码编号 50002,通过 sta_error_code 获取的为 20002。 |
sta_estop |
bit/bool/byte/int16 |
急停状态 |
sta_heartbeat |
bit/bool/byte/int16 |
心跳信号,只写,在“设置-控制器设置”设置心跳周期。 |
sta_home |
bit/bool/byte/int16 |
机器人各关节是否在 home 点,1:处于 home 点;0:不在 home 点。 |
sta_jjwc_B |
bit/bool/byte/int16 |
实时状态输出。触发动作:被动触发。当 ctrl_jjwc_A 信号 0→1 时,sta_jjwc_B 信号置为 1;当 ctrl_jjwc_A 信号 1→0 时,sta_jjwc_B 信号置为 0。 |
sta_motor |
bit/bool/byte/int16 |
电机上电状态,1:已上电;0:未上电。 |
sta_operation_mode |
bit/bool/byte/int16 |
当前操作模式,1:自动模式;0:手动模式。 |
sta_program |
bit/bool/byte/int16 |
当前是否处于程序运行状态,1:程序运行中;0:空闲。 |
sta_program_full |
byte/int16 |
RL 的暂停状态,0:初始化状态;1:RL 运行中;2:HMI 暂停;3:系统 IO 暂停;4:寄存器功能码暂停;5:外部通讯暂停;6:SDK 暂停;7:Pause 指令暂停;10:急停;11:安全门;12:其他因素暂停。 |
sta_program_not_run |
bool/byte/int16 |
RL 程序未运行,1:程序未运行;0:程序正在运行。 |
sta_program_reset |
bool/byte/int16 |
程序复位成功信号,当程序指针在 main 函数第一行,且程序未开始运行时,输出 1;否则输出 0。 |
sta_program_speed |
int16 |
查询当前程序运行速度,百分比的数值。 |
sta_robot_is_busy |
bit/bool/byte/int16 |
当前机器人是否在执行 pptomain 等耗时操作,1:正在执行;0:空闲。 |
sta_robot_moving |
bit/bool/byte/int16 |
代表机器人是否在运动,1:表示机器人运动中;0:表示机器人静止。 |
sta_safe_door |
bit/bool/byte/int16 |
打开安全门时,寄存器绑定状态信号输出有效;关闭安全门时,寄存器绑定状态输出无效。(高电平有效,低电平无效)。 |
sta_safe_jnt_pos1~sta_safe_jnt_pos8 |
bool/byte/int16 |
安全位置触发状态,1:到达安全位置;0:未到达安全位置。 |
sta_safe_region01~sta_safe_region10 |
bool/byte/int16 |
安全区域触发状态。1 为安全区域触发。 |
sta_soft_estop |
bit/bool/int16 |
软急停状态的输出。此状态值受急停触发电平类型设置的影响,当设置为高电平时,触发软急停时此状态值为 1,未触发时值为 0;当设置为低电平时,触发软急停时此状态值为 0,未触发时值为 1。 |
sta_cart_pose |
float 数组 |
查询当前机器人工具 TCP 相对于世界坐标系的值,绑定寄存器的要求:float 数组,长度为 7。 |
sta_cart_vel |
float 数组 |
机器人笛卡尔速度。 |
sta_jnt_pose |
float 数组 |
查询当前机器关节角度,绑定寄存器的要求:float 数组,长度为 8。 |
sta_jnt_trq |
float 数组 |
查询当前机器人关节力矩,绑定寄存器的要求:float 数组,长度为 8,单位 N·m。 |
sta_jnt_vel |
float 数组 |
查询当前机器人关节速度,绑定寄存器的要求:float 数组,长度为 8,单位 rad/s。 |
sta_tcp_pose |
float 数组 |
机器人工具 TCP 相对于世界坐标系的值,绑定寄存器的要求:float 数组,长度为 7。 |
sta_tcp_vel |
float 数组 |
机器人 TCP 速度,绑定寄存器的要求:float 数组,长度为 7。 |
sta_tcp_vel_mag |
float |
机器人 TCP 合成线速度。 |
sta_ext_estop |
bool/byte/int16 |
外部急停状态。 |
sta_ext_jnt_pose |
float 数组 |
查询外部轴位置。 |
sta_hand_estop |
bool/byte/int16 |
手持急停状态。 |
sta_sys_stop_di |
bit/bool/byte/int16 |
输出绑定系统暂停信号的值,“暂停程序”和“暂停程序 1”任意一路信号触发 sta_sys_stop_di 输出 1,两路信号都不触发时输出 0。 |
sta_reduced_mode |
bit/bool/byte/int16 |
机器人是否处于缩减模式。1 为处于缩减模式。 |
sta_on_path |
bit/bool/byte/int16 |
机器人当前位置是否在预设轨迹上。 |
sta_near_path |
bit/bool/byte/int16 |
机器人当前位置是否在预设轨迹附近。 |
sta_task_state |
int16/int32/byte |
机器人的任务状态输出。 |
sta_drag |
int16/int32/byte/bit/bool |
机器人是否处于拖动状态(只在协作机型生效)。 |
sta_drag_button1 |
int16/int32/byte/bit/bool |
机器人拖动按钮 1 状态(只在协作机型生效)。 |
sta_drag_button2 |
int16/int32/byte/bit/bool |
机器人拖动按钮 1 状态(只在非 SR 的协作机型生效)(对于只有一个按钮的 CR 机型,按下按钮 sta_drag_button1 和 sta_drag_button2 同时输出 1)。 |
sta_cursor_state |
bit/bool/byte/int16 |
前瞻指针位置是否变动。 |
sta_tcp_ref_base_vel_mag |
float |
TCP 相对机器人基坐标系的合成线速度,单位 mm/s。 |
sta_tcp_ref_world_vel_mag |
float |
TCP 相对世界坐标系的合成线速度,单位 mm/s。 |
sta_tcp_ref_base_pose |
float 数组 |
TCP 相对机器人基坐标系的位姿,数组长度 7(位置 mm、四元数)。 |
sta_tcp_ref_world_pose |
float 数组 |
TCP 相对机器人世界坐标系的位姿,数组长度 7(位置 mm、四元数)。 |
sta_robot_jnt_pos |
float 数组 |
机器人关节位置,数组长度 7,单位 rad 或 mm。 |
sta_robot_jnt_vel |
float 数组 |
机器人关节速度,数组长度 7,单位 rad/s 或 mm/s。 |
sta_robot_jnt_trq |
float 数组 |
机器人关节转矩,数组长度 7,单位 N·mm。 |
sta_ext_jnt_pos |
float 数组 |
附加轴关节位置,数组长度 6,单位 rad 或 mm。 |
sta_ext_jnt_vel |
float 数组 |
附加轴关节速度,数组长度 6,单位 rad/s 或 mm/s。 |
sta_ext_jnt_trq |
float 数组 |
附加轴关节转矩,数组长度 7,单位 N·mm。 |
10.6.5 RL 读写寄存器示例
控制系统提供两种方式来对寄存器进行读取、修改操作,分别是:指令式和赋值式。
指令式提供 WriteRegByName 和 ReadRegByName 两条指令。赋值式则更直观简单些,使用操作符 =。
10.6.5.1 指令式
WriteRegByName(modbus_reg[index], rl_symbol)
modbus_reg 是“通信”→“寄存器”配置的寄存器名称,可以使用 [index] 在对应寄存器的首地址再进行偏移,index 范围 [1, 寄存器最大长度],默认 index = 1。
控制系统中的数据,可以通过寄存器,输出到其绑定的设备中。
举例:控制系统中定义了 int rl_value,想把它输出到外部设备,可以约定一个寄存器,比如 mtcp_wo_i 的第一个寄存器,在 RL 语言中添加一条 WriteRegByName 指令,该值将发送到 mtcp_wo_i 关联的外部设备。
ReadRegByName(modbus_reg[index], rl_symbol)
该指令与 WriteRegByName 类似,作用是将寄存器的值,更新到 RL 程序变量中。例如用来控制 RL 程序的执行流程、运动参数等。
10.6.6 寄存器远程控制
远程控制是一项组合功能,由 7 种不同功能的寄存器配合使用,按照特定的时序可完成复杂业务逻辑交互。外部设备可以通过远程控制功能实现机器人 Jog、更新点位、获取机器人位置、状态等功能。
寄存器功能
外部设备对机器人进行控制时,需要使用 4 种寄存器,对机器人而言属于只读寄存器。
| 功能码名称 | 属性 | 类型 | 长度 | 对应功能 |
|---|---|---|---|---|
ext_cmd_set |
只读 |
int16/bool/bit |
1 |
下发指令: |
ext_reset |
只读 |
int16/bool/bit |
1 |
功能重置: |
ext_resp_get |
只读 |
int16/bool/bit |
1 |
确认并清除上一条命令的响应,重置 ext_resp_set 信号为 0。 |
ext_request_data |
只读 |
int16 |
8 |
指令功能码。数组,固定长度 8 寄存器。具体功能详见功能码部分介绍。 |
外部设备希望获取机器人的状态时,需要使用 3 种寄存器,对机器人而言是只写寄存器。
| 功能码名称 | 属性 | 类型 | 长度 | 对应功能 |
|---|---|---|---|---|
ext_error_code |
只写 |
int16 |
1 |
远程控制功能:错误码。 |
ext_resp_set |
只写 |
int16/bool/bit |
1 |
机器人响应控制指令后,会设定该寄存器为 1,表示指令执行完成。 |
ext_response_data |
只写 |
int16 |
8 |
远程控制功能:需要反馈的数据。数组,固定长度 8 寄存器。 |
10.6.6.2 指令格式
指令和响应分别使用 8 个寄存器实现。
命令信号 ext_request_data(占用八个寄存器,reg0 — reg7),用于指定命令和相关参数的数据信号区域。命令由多字构成:
-
字:一个寄存器(16 位)构成。
-
命令形式:命令最多由 8 个字构成。可根据使用的命令变化。最小的命令为 1 个字。
命令编号 |
命令编号1 |
命令编号2 |
…… |
命令编号7 |
响应信号 ext_response_data(占用八个寄存器,reg0 — reg7),用于获取响应的数据信号区域。响应由多字构成:
-
字:一个寄存器(16 位)构成。
-
响应形式:响应最多由 8 个字构成。可根据收到的命令变化。最小的响应为 1 个字。但是,如果是异常响应则固定占用 3 个字。
命令编号 |
响应1 |
响应2 |
…… |
响应7 |
具体可用的命令编号如下表:
命令类别 |
说明 |
命令码 |
命令长度 |
|
|---|---|---|---|---|
命令 |
响应 |
|||
JOG |
设置 jog 空间 |
1 |
2 |
3 |
获取 jog 空间 |
2 |
1 |
4 |
|
设置 jog 速度 |
3 |
2 |
3 |
|
获取 jog 速度 |
4 |
1 |
4 |
|
设置 jog 步长 |
5 |
2 |
3 |
|
获取 jog 步长 |
6 |
1 |
4 |
|
开始 jog |
7 |
4 |
2 |
|
停止 jog(不带参数) |
8 |
1 |
2 |
|
更新点位 |
9 |
2 |
2 |
|
运动到点 |
10 |
2 |
2 |
|
设置信息 |
设置工具 |
11 |
2 |
3 |
获取当前工具 id |
12 |
1 |
4 |
|
设置工件 |
13 |
2 |
3 |
|
获取当前工件 id |
14 |
1 |
4 |
|
10.6.6.3 指令详解
(1)设置 jog 空间:
| 命令/回复 | 命令码 | 参数1 | 参数2 |
|---|---|---|---|
设置 jog 空间 |
1 |
坐标系: |
N/A |
回复 |
1 |
设置结果:0 成功;1 失败 |
错误码 |
(2)获取 jog 空间:
命令/回复 |
命令码 |
参数1 |
参数2 |
参数3 |
获取 jog 空间 |
2 |
N/A |
N/A |
N/A |
回复 |
2 |
设置结果: |
错误码 |
坐标系: |
(3)设置 jog 速度:
| 命令/回复 | 命令码 | 参数1 | 参数2 |
|---|---|---|---|
设置 jog 速度 |
3 |
Jog 速度(1~100) |
N/A |
回复 |
3 |
设置结果:0 成功;1 失败 |
错误码 |
(4)获取 jog 速度:
命令/回复 |
命令码 |
参数1 |
参数2 |
参数3 |
获取 jog 速度 |
4 |
N/A |
N/A |
N/A |
回复 |
4 |
设置结果: |
错误码 |
Jog 速度(1~100) |
(5)设置 jog 步长:
| 命令/回复 | 命令码 | 参数1 | 参数2 |
|---|---|---|---|
设置 jog 步长 |
5 |
1:连续 |
N/A |
回复 |
5 |
设置结果:0 成功;1 失败 |
错误码 |
(6)获取 jog 步长:
命令/回复 |
命令码 |
参数1 |
参数2 |
参数3 |
获取 jog 步长 |
6 |
N/A |
N/A |
N/A |
回复 |
6 |
设置结果: |
错误码 |
1:连续 |
(7)开始 jog:
该指令依赖命令码 1:设置 jog 空间。如果是轴空间,参数 1 的值表示的是关节编号(J1~J7,1 代表 J1,7 代表 J7);如果是笛卡尔空间,参数 1 的值表示的是(x,y,z,a,b,c,elb)的编号(1 表示 x,7 表示 elb)。
命令/回复 |
命令码 |
参数1 |
参数2 |
开始 jog |
7 |
运行方式: |
Jog 方向: |
回复 |
7 |
设置结果:0 成功;1 失败 |
错误码 |
(8)停止 jog:
命令/回复 |
命令码 |
参数1 |
停止 jog |
8 |
N/A |
回复 |
8 |
设置结果:0 成功;1 失败 |
(9)更新点位:
| 命令/回复 | 命令码 | 参数1 | 参数2 |
|---|---|---|---|
更新点位 |
9 |
RL 工程点位列表中的编号 |
N/A |
回复 |
9 |
设置结果:0 成功;1 失败 |
错误码 |
(10)运动到点位:
命令/回复 |
命令码 |
参数1 |
参数2 |
运动到点位 |
10 |
运动方式: |
RL 工程点位列表中的编号 |
回复 |
10 |
设置结果:0 成功;1 失败 |
错误码 |
(11)设置当前工具:
| 命令/回复 | 命令码 | 参数1 | 参数2 |
|---|---|---|---|
设置当前工具 |
11 |
RL 工程工具列表中的编号 |
N/A |
回复 |
11 |
设置结果:0 成功;1 失败 |
错误码 |
(12)获取当前工具的编号:
命令/回复 |
命令码 |
参数1 |
参数2 |
参数3 |
获取当前工具的编号 |
12 |
N/A |
N/A |
N/A |
回复 |
12 |
设置结果:0 成功;1 失败 |
错误码 |
当前工具编号 |
(13)设置当前工件:
| 命令/回复 | 命令码 | 参数1 | 参数2 |
|---|---|---|---|
设置当前工件 |
13 |
RL 工程工件列表中的编号 |
N/A |
回复 |
13 |
设置结果:0 成功;1 失败 |
错误码 |
(14)获取当前工件的编号:
命令/回复 |
命令码 |
参数1 |
参数2 |
参数3 |
获取当前工件的编号 |
14 |
N/A |
N/A |
N/A |
回复 |
14 |
设置结果:0 成功;1 失败 |
错误码 |
当前工件编号 |
10.6.6.4 错误码
在进行命令设置时,如参数错误、机器人状态不匹配或者其他情况下,可能发生设置失败。此时可以通过错误码观察机器人出现问题。
控制系统有三种错误码:
-
指令执行结果的错误码(
ext_response_data中)(命令执行结果)。 -
ext_error_code错误码(命令无法执行,比如机器人忙碌,远程控制标志位不正确等)。 -
sta_error_code,机器人错误码(jog 运动过程中出现的停止报错,可以读这个寄存器)。
正常情况下用户需要按照流程来使用错误码:
发完执行指令之后(ext_cmd_set=1),先读 ext_error_code,如果没有错误码,那么再读 ext_response_data 的返回值,如果返回值不为零,那么就读 ext_response_data 的错误码。
对于运动操作(jog 和运动到点位),如果上面返回值都成功了,还应该读一下 sta_error_code,看运动中是否有错导致的停止(比如奇异点和超限位)。
ext_error_code 含义:
| 错误码 | 含义 | 备注 |
|---|---|---|
01 |
不支持的命令 |
|
02 |
参数不合法 |
|
03 |
控制标志不正确 |
需要确认:ExtRespSet 为 0,ExtRespSet 为 1 |
04 |
机器人忙碌 |
机器人正在执行指令中,禁止响应别的指令 |
05 |
找不到对应的编号 |
工具、点位、工件的 id |
06 |
点位类型和运动类型不匹配 |
针对运动至到某个点的指令,点位类型和运动类型不匹配,比如关节空间只能用 MoveAbsJ 指令,笛卡尔类型点只能用 MoveJ 或 MoveL |
07 |
输入的轴数和机型不匹配 |
|
11 |
手自动模式不对 |
|
12 |
机器人状态不对,请检查机器人是否是 jog 状态 |
机器人处于 jog 状态时可以被 jog,若处于拖动模式等非 jog 状态,则不允许被 jog。 |
13 |
上电状态不对 |
机器人只有在上电之后才能 Jog。 |
14 |
机器人处于非位置模式,不允许 jog |
与 12 类似。 |
15 |
启动 jog 失败,算法报错 |
由于诸多原因导致无法 jog 时会报该错误。 |
20 |
遇到奇异点 |
|
21 |
已经运动到目标点 |
若已经运动至某点再次运动至该点时,会报该错误。 |
10.6.7 寄存器导入导出
寄存器导入、导出功能可将一台机器人中的寄存器配置快速复制到另一台机器人,无需重新配置寄存器。
10.6.7.1 寄存器导出
在寄存器页面,点击左下角按钮,进入寄存器导出界面
① |
寄存器导出目标文件(包含路径) |
② |
寄存器导出选择列表 |
③ |
寄存器导出操作按钮 |
④ |
筛选框,可支持全部和部分导出 |
导出操作步骤:首先在①中输入或选择寄存器导出目标文件路径,然后在②寄存器列表中,勾选要导出的寄存器,最后点击③中的“下一步”按钮执行导出,即可在①中对应路径下生成导出的寄存器文件。
10.6.7.2 寄存器导入
在寄存器页面,点击左下角按钮,进入寄存器导入界面
① |
寄存器导入文件 |
② |
寄存器导入选项,对于冲突项的处理策略 |
③ |
寄存器导入选择条目 |
④ |
寄存器导入操作按钮 |
导入操作步骤:首先在①中选择要导入的寄存器文件,其次在②中设置冲突寄存器策略,之后在③中选择要导入的寄存器,最后点击④中的“下一步”执行导入操作,即可将选择的寄存器导入到本机。
10.6.7.3 寄存器导入时冲突检查
同一设备,同一寄存器属性(读写),寄存器地址不能一样。如果一样的话,若导入选项设置为不导入,则以原寄存器为准,冲突寄存器不进行导入;若导入选项设置为自动替换,则以新导入的为准,同时把原有冲突的寄存器覆盖,冲突时弹窗提示用户选择是否替换当前寄存器。
以 ext 开头的 7 个寄存器:ext_cmd_set、ext_resp_set、ext_resp_get、ext_reset、ext_response_data、ext_request_data、ext_error_code 在创建时,如果该寄存器被寄存器地址绑定过了,就不能再被别的寄存器绑定了。以上 7 个寄存器在导入时,如果该功能码已经在 HMI 里绑定使用了,且新导入寄存器列表里也有该功能码,以新导入的为准,同时把原有冲突的寄存器覆盖,冲突时弹窗提示用户选择是否替换当前寄存器。