Files
line-laser-modbus/docs/proto.md
T
2026-06-18 17:02:52 +08:00

20 KiB
Raw Blame History

线激光器上位机与运动控制器 Modbus RTU 通信协议

1. 协议概述

本协议用于焊缝识别设备(简称视觉设备)(主站)与运动控制器(从站)之间的双向通信,实现6轴位置/姿态数据传输、工作模式控制、设备状态反馈,覆盖系统标定、焊前示教、在线跟踪、轨迹批量复现全工作阶段。协议采用Modbus RTU标准,支持后期切换至Modbus TCP(寄存器地址、数据格式、功能码完全不变)。

2. 基础通信参数

2.1 串口参数

参数名称 参数值 说明
波特率 115200 bps
数据位 8位
停止位 1位
校验位 无校验(8N1) 依赖CRC16校验保证数据完整性,简化配置
帧间隔 ≥3.5个字符时间 Modbus RTU标准要求,避免帧粘连

2.2 协议核心规则

规则名称 具体要求 说明
主从角色 主站:视觉设备
从站:运动控制器
主站主动发起读写请求,从站被动响应、执行指令
从站地址(Slave ID) 0x08(固定) 后期切换Modbus TCP时,Unit ID保持一致
寄存器类型 仅使用保持寄存器(Holding Register) 支持读写操作,适配位置、姿态、命令、状态等数据传输
核心功能码 0x03(读保持寄存器), 0x10(写多个保持寄存器) 不使用其他功能码
字节序 大端模式(Big-Endian) 高寄存器高字节在前,解析时需按此规则拼接数据
编址方式 寄存器从0xD000开始绝对编址 后期可切换到Modbus TCP
CRC16校验 多项式0xA001,初始值0xFFFF,低字节在前、高字节在后 每帧数据末尾添加2字节CRC校验,确保数据传输无误

3. 保持寄存器地址映射

起始地址(十六进制) 寄存器数量 数据类型 通信方向 寄存器名称 详细说明
0xD000 1 ushort 视觉→控制器 模式命令字 控制控制器切换工作模式,取值范围0~5(详见4.1)
0xD001 1 ushort 控制器→视觉 设备状态字 反馈控制器当前运行状态,取值范围0~6(详见4.2)
0xD002 ~ 0xD009 8 保留 预留扩展寄存器 暂不使用,用于后期功能扩展(如新增参数配置)
0xD00A 14 uint32
float
控制器→视觉 4字节无符号整型时间戳+当前6轴位姿 反馈控制器当前实际位置(X/Y/Z)和姿态(A/B/C),具体排布详见5.1
0xD018 ~ 0xD01F 8 保留 预留扩展寄存器 暂不使用,用于后期功能扩展
0xD020 14 uint32
float
视觉→控制器 4字节无符号整型时间戳+目标示教位姿 激光扫描后下发的标准轨迹位姿(X/Y/Z/A/B/C),具体排布详见5.2
0xD02E ~ 0xD035 8 保留 预留扩展寄存器 暂不使用,用于后期功能扩展
0xD036 14 uint32
float
视觉→控制器 4字节无符号整型时间戳+6轴全量纠偏量 实时下发的位置偏差(ΔX/ΔY/ΔZ)和姿态偏差(ΔA/ΔB/ΔC),具体排布详见5.3
0xD044 ~ 0xD04B 8 保留 预留扩展寄存器 暂不使用,用于后期功能扩展
0xD04C ~ 0xD06B 32 float 标定参数预留 用于存储手眼标定相关参数,后期可扩展使用

4. 模式命令字与设备状态字详细定义

4.1 模式命令字(地址:0xD000,视觉→控制器)

用于切换工作模式,由运动控制上位机下发到运动控制器,视觉设备轮询运动控制器读取设置值并执行对应逻辑,取值范围0~4。

模式值 模式名称 主辅角色 核心功能 适用场景
0 手动示教模式 控制器完全主导 视觉仅监控状态,不下发任何控制指令 上电初始
1 系统标定模式 控制器主、视觉辅 控制器按标定流程自动走位到标定点;视觉读取控制器当前位姿,完成手眼标定计算,下发标定参数 设备首次调试、视觉与控制器坐标系校准
2 焊前扫描示教模式 视觉主、控制器辅 视觉扫描工件轮廓,拟合空间轨迹,循环下发目标示教位姿;控制器跟随走位,记录轨迹点并内部保存 批量生产前,生成标准工艺轨迹
3 在线全轴跟踪模式 视觉主、控制器辅 视觉50ms周期读取控制器当前位姿,计算6轴全量偏差并下发;控制器按“基准轨迹+实时纠偏”连续运动 工件偏差较大、需实时跟随的生产场景(如焊接、坡口切割)
4 轨迹批量复现模式 控制器主、视觉辅 控制器调用内部保存的标准轨迹,自动循环批量运行;视觉仅监控位姿,小幅下发纠偏量,超差报警 工件一致性好、批量量产的场景

4.2 设备状态字(地址:0xD001,控制器→视觉)

用于反馈运动控制器当前的运行状态,由控制器实时更新,视觉设备读取后判断设备工况,取值范围0~6。

状态值 状态名称 对应模式 详细说明
0 空闲 任意模式 控制器停机、无故障、无轨迹,等待模式指令下发
1 运动运行中 2(示教)、3(跟踪)、4(复现) 控制器正在执行运动指令(跟随示教、实时跟踪、批量复现)
2 示教完成 2(示教) 视觉扫描示教完成,控制器已保存完整标准轨迹,可切换至跟踪或复现模式
3 在线跟踪正常 3(跟踪) 实时跟踪正常,纠偏量在合理范围,无超差、无故障
4 设备报警 任意模式 出现异常(轨迹超差、限位触发、通信故障、电机故障等),控制器停机,等待排查
5 标定完成 1(标定) 系统标定流程完成,坐标系校准成功,可切换至其他运行模式
6 急停已触发 任意模式 紧急停止指令已执行,控制器锁定所有运动

5. 6轴数据(位置/姿态/纠偏)详细格式

当前位姿、目标示教位姿、6轴纠偏量数据均由1个32位uint(时间戳)与6个32位float构成,排布顺序统一(TS→X→Y→Z→A→B→C),每个uint或float占用2个连续寄存器,大端模式存储。

5.1 当前6轴位姿(地址:0xD00A ~ 0xD017,控制器→视觉)

反馈控制器当前实际的位置和姿态,视觉设备读取后用于标定计算、跟踪偏差分析、状态监控。

寄存器地址范围 数据类型 对应物理量 单位 说明
0xD00A ~ 0xD00B uint32 时间戳 ms 指示当前数据时间
0xD00C ~ 0xD00D float X 位置 mm 空间X轴坐标,根据实际设备坐标系定义
0xD00E ~ 0xD00F float Y 位置 mm 空间Y轴坐标
0xD010 ~ 0xD011 float Z 位置 mm 空间Z轴坐标(垂直方向)
0xD012 ~ 0xD013 float A 姿态角 °(度) 绕X轴翻滚角
0xD014 ~ 0xD015 float B 姿态角 °(度) 绕Y轴俯仰角
0xD016 ~ 0xD017 float C 姿态角 °(度) 绕Z轴偏航角

5.2 目标示教位姿(地址:0xD020 ~ 0xD02D,视觉→控制器)

激光扫描工件后,拟合生成的标准轨迹位姿,下发给控制器后,控制器跟随走位并保存轨迹,排布与当前位姿完全一致。

寄存器地址范围 数据类型 对应物理量 单位 说明
0xD020 ~ 0xD021 uint32 时间戳 ms 指示当前数据时间
0xD022 ~ 0xD023 float X 目标位置 mm 示教轨迹的X轴坐标
0xD024 ~ 0xD025 float Y 目标位置 mm 示教轨迹的Y轴坐标
0xD026 ~ 0xD027 float Z 目标位置 mm 示教轨迹的Z轴坐标
0xD028 ~ 0xD029 float A 目标姿态角 °(度) 示教轨迹的绕X轴翻滚角
0xD02A ~ 0xD02B float B 目标姿态角 °(度) 示教轨迹的绕Y轴俯仰角
0xD02C ~ 0xD02D float C 目标姿态角 °(度) 示教轨迹的绕Z轴偏航角

5.3 6轴全量纠偏量(地址:0xD036 ~ 0xD043,视觉→控制器)

视觉设备根据当前位姿与目标轨迹的偏差,实时计算并下发纠偏数据,控制器接收后叠加到基准轨迹,实现高精度跟踪。

寄存器地址范围 数据类型 对应偏差量 单位 说明
0xD036 ~ 0xD037 uint32 时间戳 ms 指示当前数据时间
0xD038 ~ 0xD039 float ΔX 偏差 mm X轴方向偏差,正值=正向纠偏,负值=反向纠偏
0xD03A ~ 0xD03B float ΔY 偏差 mm Y轴方向偏差
0xD03C ~ 0xD03D float ΔZ 偏差 mm Z轴方向偏差
0xD03E ~ 0xD03F float ΔA 偏差 °(度) 绕X轴姿态偏差
0xD040 ~ 0xD041 float ΔB 偏差 °(度) 绕Y轴姿态偏差
0xD042 ~ 0xD043 float ΔC 偏差 °(度) 绕Z轴姿态偏差

6. Modbus RTU 帧格式标准

所有通信帧均遵循以下格式,CRC16校验码位于帧末尾,用于验证数据完整性;仅使用0x03(读)和0x10(写)两个功能码。

6.1 读保持寄存器(功能码:0x03)

用于视觉设备读取控制器的寄存器数据(如当前位姿、设备状态字),控制器被动响应并返回数据。

6.1.1 请求帧格式(主站→从站)

字节位置 字节长度 内容 说明
1 1B 从站地址 固定为0x08
2 1B 功能码 0x03(读保持寄存器)
3~4 2B 起始寄存器地址 大端模式,如读取模式+状态,起始地址为0xD000
5~6 2B 读取寄存器数量 大端模式,如读取2个寄存器(模式+状态),数量为0x0002
7~8 2B CRC16校验码 低字节在前、高字节在后

6.1.2 响应帧格式(从站→主站)

字节位置 字节长度 内容 说明
1 1B 从站地址 固定为0x08,与请求帧一致
2 1B 功能码 0x03,与请求帧一致
3 1B 数据字节长度 后续数据的总字节数(1个16位ushort=2B1个float=4B)
4~N NB 寄存器数据 按大端模式排列,连续存储
N+1~N+2 2B CRC16校验码 低字节在前、高字节在后

6.2 写多个保持寄存器(功能码:0x10)

用于视觉设备向控制器下发数据(如模式命令、目标位姿、纠偏量),控制器接收后执行并返回确认帧。

6.2.1 请求帧格式(主站→从站)

字节位置 字节长度 内容 说明
1 1B 从站地址 固定为0x08
2 1B 功能码 0x10(写多个保持寄存器)
3~4 2B 起始寄存器地址 大端模式,如写模式命令,起始地址为0xD000
5~6 2B 写入寄存器数量 大端模式,如写1个寄存器(模式命令),数量为0x0001
7 1B 后续字节数 写入数据的总字节数(1个16位ushort=2B1个float=4B)
8~N NB 寄存器数据 按大端模式排列,连续存储
N+1~N+2 2B CRC16校验码 低字节在前、高字节在后

6.2.2 响应帧格式(从站→主站)

控制器接收并执行写指令后,返回确认帧,仅反馈写指令的关键信息,不返回写入的数据。

字节位置 字节长度 内容 说明
1 1B 从站地址 固定为0x08,与请求帧一致
2 1B 功能码 0x10,与请求帧一致
3~4 2B 起始寄存器地址 与请求帧一致,大端模式
5~6 2B 写入寄存器数量 与请求帧一致,大端模式
7~8 2B CRC16校验码 低字节在前、高字节在后

7. 常用指令帧示例

以下指令帧均为十六进制格式,CRC16校验码已计算(可根据实际数据重新校验),适配所有工作阶段,直接下发即可执行。

指令用途 指令帧(十六进制) 说明
读模式命令字+设备状态字(一次读2个寄存器) 08 03 D0 00 00 02 FC 52 从站0x08,读起始地址0xD000,读2个寄存器,CRC= FC 52
写模式:进入待机复位模式(0xD000=0) 08 10 D0 00 00 01 02 00 00 1D CD 从站0x08,写起始地址0xD000,写1个寄存器,数据=0x0000CRC=1D CD
写模式:进入系统标定模式(0xD000=1) 08 10 D0 00 00 01 02 00 01 DC 0D 数据=0x0001CRC= DC 0D
写模式:进入焊前扫描示教模式(0xD000=2) 08 10 D0 00 00 01 02 00 02 9C 0C 数据=0x0002CRC=9C 0C
写模式:进入在线全轴跟踪模式(0xD000=3) 08 10 D0 00 00 01 02 00 03 5D CC 数据=0x0003CRC=5D CC
写模式:进入轨迹批量复现模式(0xD000=4) 08 10 D0 00 00 01 02 00 04 1C 0E 数据=0x0004CRC=1C 0E
写模式:紧急停止(0xD000=5) 08 10 D0 00 00 01 02 00 05 DD CE 数据=0x0005CRC= DD CE
读当前6轴位姿(起始0xD00A,读14个寄存器) 08 03 D0 0A 00 0E DC 55 读X/Y/Z/A/B/C当前位姿,CRC=DC55
写6轴全量纠偏量(起始0xD036,写14个寄存器) 01 10 D0 36 00 0E 1C 00 00 03 E8 3F 80 00 00 40 00 00 00 40 40 00 00 00 00 00 00 3F 80 00 00 40 00 00 00 D0 72 示例数据:ts=1000
ΔX=1.0、ΔY=2.0、ΔZ=3.0、ΔA=0.0、ΔB=1.0、ΔC=2.0CRC=D072
读设备状态字(单独读,起始0xD001,读1个寄存器) 08 03 D0 01 00 01 ED 93 单独读取当前设备状态,CRC= ED 93

8. 各模式下通信行为规范

明确各工作模式下,主站(视觉)与从站(控制器)的通信职责,确保主辅关系清晰、通信高效,避免数据冲突。

8.1 手动示教模式(0)

控制器:轴停机、轨迹清空、纠偏清零、就绪待命。

视觉设备:只读取工作模式和状态字段,坐标无需读取。

8.2 系统标定模式(1)

控制器:按标定流程自动走标定点位。

视觉设备:周期读取 6 轴当前位姿,进行手眼标定计算,不启用示教与实时纠偏。

8.3 焊前扫描示教模式(2)

控制器:跟随激光下发的目标 6 轴位姿运动,自动记录并保存完整轨迹。

视觉设备:扫描工件轮廓,连续生成并下发 XYZABC 目标示教位姿。

8.4 在线全轴跟踪模式(3)

视觉设备以 50ms 固定周期轮询:

读取控制器当前 6 轴位姿;

对比理论轨迹,计算 ΔX ΔY ΔZ ΔA ΔB ΔC 全量偏差;

写入 6 轴纠偏量寄存器。

控制器:基准轨迹叠加实时全轴纠偏,连续插补运动。

8.5 轨迹批量复现模式(4)

控制器主导:调用内部已保存标准轨迹,自动循环批量运行。

视觉辅助:仅周期读取位姿做轨迹监控;仅小装夹偏差做微量 6 轴纠偏;偏差超阈值直接报警停机,不重新规划轨迹。

注意:急停触发时,控制器立刻停止所有轴运动、锁定使能;视觉设备停止轨迹下发、停止纠偏输出,仅保持通信监听。

9 模式状态机切换规则

  • (1)标定完成自动回空闲状态;

  • (2)示教完成可切空闲、在线跟踪、批量复现;

  • (3)在线跟踪与轨迹批量复现可互相切换;

  • (4)非法模式值控制器直接拒收不执行。

10 通信时序与稳定性要求

  • (1)视觉设备独立线程轮询周期:50ms;

  • (2)单帧通信超时:150ms,超时重发,多次超时判定通信断开;