外观
ModBus通信配置
约 3877 字大约 13 分钟
2026-01-26
ModBus 是 PickWiz 作为客户端、机器人作为服务端的通信方式,PickWiz 与机器人进行通信时主动控制机器人,向机器人发送指令,机器人接收到指令后执行指令并返回数据。

在配置机器人 ModBus 通信之前,请先参照 项目操作指南 新建项目,然后在主界面点击 机器人配置面板 进入 新增机器人 界面。

1. 新增机器人
(1)进入 新增机器人 界面,点击 +新增机器人

(2)通信方式选择 ModBus,点击 下一步,进入 机器人配置 界面

2. 配置机器人
在 机器人配置 界面,可进行机器人信息配置、通信基础配置、自定义通信报文配置。

2.1 机器人信息配置

| 配置项 | 说明 |
|---|---|
| 通信方式 | PickWiz 与机器人之间建立通信的通信协议,不可修改 |
| 配置名称 | 机器人配置的名称,支持中英文、数字、字符 |
| 配置ID | 机器人配置的唯一标识ID,可修改,只支持数字 |
| 品牌 | 机器人的品牌,若机器人端连接的是PLC,品牌选择 其他设备 |
| 型号 | 机器人的型号,若机器人端连接的是PLC,型号选择 其他设备 |
| 模型 | 品牌和型号选择其他设备时,需上传该设备的模型,模型文件的格式为urdf |
| 轴数 | 机器人拥有的机械臂轴数,可选三轴、四轴、六轴 |
| 旋转表达式 | 描述机器人在三维空间中的姿态,目前有欧拉角和旋转矢量两种方法,欧拉角的顺序可修改。 |
2.2 通信基础配置

| 配置项 | 说明 | |
|---|---|---|
| 通信地址 | 主机ip | 主机ip地址,ModBus 通信方式下默认为127.0.0.1 |
| 端口号 | 机器人连接主机的指定端口,默认端口号502,一般无需修改 | |
| 从站ID | 机器人的唯一标识,通过从站ID,PickWiz 能准确识别和区分每个机器人,只支持数字,默认为1,可修改 | |
| 字节顺序 | ModBus 通信方式下 PickWiz 与机器人进行通信的字节顺序,可选ABCD/BADC/CDAB/DCBA,默认ABCD | |
| 读写格式 | 欧拉角单位 | 欧拉角的单位,可选角度、弧度,默认角度。 |
| 长度单位 | 机器人使用的长度单位,包括机器人位姿,工件尺寸等等,默认mm | |
| 位姿类型 | 机器人位姿的表示方式,默认工具位姿。工具位姿是指机器人末端工具的位姿;关节角是指机器人各个关节的位姿,各个关节的位姿组合可以确定机械臂或末端工具的位姿。 机器人品牌和型号选择其他设备时,位姿类型默认只能选择工具位姿 | |
| 保留小数位数 | 机器人指令中的浮点数据保留几位小数,只支持数字,默认为1 | |
2.3 自定义通信报文配置

3. ModBus指令说明
3.1 通讯保证字段
通讯保证字段用于通讯状态监控、确保指令执行的唯一性和正确性。

| 字段 | 说明 |
|---|---|
| 心跳 | 用于监控通讯状态。当机器人/PLC与PickWiz通信连接时, PickWiz向对应的地址块写入1;当机器人/PLC与PickWiz通信断开(PickWiz长时间未写入1)时,机器人/PLC向该地址块写入0 |
| 触发符 | 用于表示机器人/PLC是否触发指令。当机器人/PLC触发指令时,机器人/PLC向触发符地址块写入1,PickWiz 从触发符地址块中读取数据;当机器人/PLC收到PickWiz 接收到指令的信息后(指令确认符为1),机器人/PLC向触发符地址块写入0,以防机器人/PLC二次触发当PickWiz 执行完指令后,PickWiz 向机器人/PLC返回视觉检测结果,同时从触发符地址块中读取数据,若读取到0则机器人/PLC可以读取到返回的视觉检测结果 |
| 指令确认符 | 用于表示 PickWiz 是否接收到指令。当机器人/PLC触发指令并被PickWiz 读取后,PickWiz 向指令确认符地址块写入1,向机器人/PLC告知接收到指令;当PickWiz执行完指令,且确认机器人/PLC复位了触发符(写入0)后,PickWiz同步复位指令确认符(写0),告知机器人/PLC指令已经执行完毕,流程结束,机器人读取返回的视觉检测结果然后执行任务。 |
| 执行指令 | 用于表示机器人/PLC执行某个指令。当机器人/PLC需要执行某个指令时,向执行指令地址块写入100/101;PickWiz 从执行指令地址块读取数据,明白机器人/PLC需要执行的指令。100为拍照指令,101为清除缓存指令(拍一抓多时使用) |

3.2 标定通信报文

机器人发送至PickWiz指令
用于手眼标定以及眼在手上触发拍照时,PickWiz 获取当前机器人实时位姿。
如果在通信基础配置中位姿类型选择的是工具位姿,则向PickWiz 发送当前机器人末端工具的机器人姿态(6位数据);
如果在通信基础配置中位姿类型选择的是关节角,则发送关节姿态(6位数据),用于计算距离该参考关节姿态最近的抓取点关节姿态。
当手眼标定或眼在手上触发拍照时,机器人向该地址块写入当前机器人实时位姿,PickWiz 从该地址块读取位姿。
机器人姿态是6位数据,写入地址块时需要预留6位数据的存储空间。
3.3 视觉计算通信报文
执行指令值为100时,可进行视觉计算,以下报文则生效;勾选复选框,下方会弹出对应地址输入框,输入地址块,机器人触发拍照指令时向对应地址块写入数据,PickWiz 会读取对应地址块的数据。

(1)机器人发送至 PickWiz 指令
| 字段 | 说明 |
|---|---|
| 关节姿态 | 机器人参考关节姿态,6位数据在位姿类型为关节角时,需要输入参考关节姿态,用于计算距离该参考关节姿态最近的抓取点关节姿态 |
| 工件尺寸 | 工件尺寸来料是多种尺寸的工件,机器人需根据不同的尺寸自动调整抓取策略不同场景下,机器人侧传入的工件尺寸位数与位数对应的工件信息不同。圆面场景传入位数为1位,代表半径;圆柱场景传入位数为2位,代表半径\高度;纸箱场景传入位数为3位,代表长\宽\高;四边形场景为2位,代表宽\长。 |
| 工件尺寸容差 | 工件尺寸容差来料是多种尺寸的工件,机器人需根据不同的尺寸自动调整抓取策略不同场景下,机器人侧传入的工件尺寸容差的位数 与位数对应的工件信息不同。圆面场景传入位数为1位,代表半径的容差;圆柱场景传入位数为2位,代表半径\高度的容差;四边形场景为2位,代表宽\长的容差。 |
| 工件ID | 工件ID,用于机器人自动切换抓取的工件 |
| 作业ID | 作业ID,用于机器人自动切换作业 |
| 标定ID | 标定ID,用于机器人自动切换手眼标定配置文件 |
| 末端工具ID | 末端工具ID,用于机器人执行任务时自动切换末端工具 |
| ROI ID | ROI的ID,用于机器人自动切换ROI |
| 视觉参数ID | 视觉参数ID,用于机器人自动切换视觉参数 |
| 场景物体ID | 场景物体ID,用于机器人自动切换场景物体 |
| 拍照计算类型 | 拍照计算类型0:重新拍照取图后进行视觉计算;1:使用缓存图像(上一次采集的图像)进行视觉计算;2:仅进行拍照取图3:进行“随机姿态自动采样”的拍照4:视觉漂移实时校正5:使用历史数据进行视觉计算6:工控机关机 |
(2)PickWiz 发送至机器人指令
- 视觉检测信息
| 字段 | 说明 |
|---|---|
| 拍照完成信号 | 拍照完成信号,1位,表示拍照完成,机器人/PLC接收到了需复位 |
| 检测结果信号 | 视觉检测信号,1位,默认值成功为100,其他异常为0,可自定义配置 |
| 返回实例类型 | 返回实例类型,1位实例类型值为0代表工件,1代表托盘,不同实例类型的抓取相关信息不同 |
| 剩余实例数量 | 剩余实例数量,1位,在拍一抓多的抓取逻辑下,返回当前剩余的缓存实例数量 |
| 返回实例数量 | 返回实例数量,1位,返回实例分割2D识别出的实例数量,该值小于等于发送实例个数,如有多个实例,抓取相关信息长度会随着返回实例数量增加 |
| 实例检测总量 | 实例检测总量,1位,未被实例过滤的检测实例数量 |
| 有效实例数量 | 有效实例数量,1位,实例过滤后的检测实例数量 |
| 工件类型 | 识别多种工件类型时,可返回的类型ID。 |
- 自动标定采样发送指令
手眼标定方式是“随机姿态自动采样”时,需要设置该指令,否则机器人无法与PickWiz通信
| 字段 | 说明 |
|---|---|
| 标定采样结果: 不同标定采样结果对应不同信号值 | 0:样本达到最小数量 1:新增样本成功 11:新增样本失败 12:自动采样结束,样本列表执行完毕 13:生成采样姿态失败 14:未进入标定采样页面 15:系统错误 |
| 下次采样位姿 | 下一次机器人采集标定样本的移动位置 |
- 抓取相关信息
以下表达的抓取相关信息长度位数为单抓取点的长度位数,如果是多抓取点,长度为位数x抓取点数
全场景通用信息
| 字段 | 说明 |
|---|---|
| 工件类别 | / |
| 抓取工件ID | 1位;表示当前工件序号 |
| 抓取点位姿 | 6位;表示抓取点的位姿数据 |
| 抓取点索引 | 1位;表示当前抓取点序号 |
| 额外信息 | 1位;表示当前工件的自定义额外信息 |
| 前进点 | 仅适用于位姿类型为关节角的情况,长度为1+路径点个数;格式为(路径点数,预抓点到抓取点的关节路径点姿态) |
| 后撤点 | 仅适用于位姿类型为关节角的情况,长度为1+路径点个数;格式为(路径点数,抓取点到后撤抓取点的关节路径点姿态) |
- 视觉状态码
视觉状态码用于故障排查,完整的状态码如下表
需在 PickWiz 发送至机器人指令-视觉检测信息中勾选“视觉状态码”,并配置地址块和通信数据类型。
如无自定义配置视觉状态码,默认值为成功返回
100,其他异常均返回0
| 错误内容 | 默认值 | 相关节点 |
|---|---|---|
| 成功 | 100 | / |
| 检测到底板 | 301 | 前景处理(Foreground Builder) |
| 未检测到料框 | 4000 | 料框检测(Container Builder) |
| 未检测到实例 | 5000 | 实例分割(Instance Builder) |
| 未检测到姿态 | 6000 | 姿态估计(Pose Builder) |
| 未检测到抓取点 | 7000 | 抓取点生成(Grasp Builder) |
| 未检测到路径 | 8000 | 机器人运动轨迹生成器(Trajectory Builder) |
| 未检测到实例尺寸 | 9000 | 工件尺寸生成器(Size Builder) |
| 空ROI | 1101 | 无效点过滤器(ValidPoints Criteria) |
| 没有有效实例 | 12000 | 实例过滤(Instance Criteria) |
| 没有有效工件姿态 | 13000 | 姿态过滤(Pose Criteria) |
| 没有有效抓取点 | 14000 | 抓取点过滤(Grasp Criteria) |
| 全部检测结果碰撞不可抓 | 15000 | 碰撞检测过滤(Collision Criteria) |
| 没有尺寸有效的实例 | 17000 | 工件尺寸过滤(Size Criteria) |
| 异常 | 20000 | 通用异常错误,请查看日志确认 |
| 显存不足 | 20001 | 通用异常错误,请查看日志确认 |
| 无效输入(请检查算法参数) | 20002 | 通用异常错误,请查看日志确认 |
| 满检 | 20003 | 点云处理算子相关(full_detect_judgment) |
| 异物检测异常 | 20004 | 实例过滤算子相关(foreign_matter_judgement) |
4. 编辑、复制、删除机器人配置
(1)编辑机器人配置
在 新增机器人 界面左键点击机器人配置可编辑选中的机器人配置。

(2)复制机器人配置
在 新增机器人 界面右键点击机器人配置可复制选中的机器人配置。

(3)删除机器人配置
在 新增机器人 界面右键点击机器人配置可删除选中的机器人配置。

5. 选择机器人配置
完成 ModBus 通信配置后,可在作业主界面为当前的作业场景选择机器人配置,在机器人配置选择栏选择相应的机器人配置,PickWiz 将尝试与机器人通过 ModBus 通信协议建立通信。

如果通信连接成功,则主界面左下角的机器人通信连接状态将显示"已连接"。
如果通信连接失败,则机器人通信连接状态显示"未连接",请检查机器人与工控机的网线是否连接牢固,机器人系统加载运行的程序是否正确,然后重新进行机器人配置。
