Files
line-laser-modbus/docs/proto.md
T
2026-05-28 11:42:23 +08:00

21 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~5。

模式值 模式名称 主辅角色 核心功能 适用场景
0 待机复位模式 空闲态 控制器停机、轨迹清空、纠偏量清零,处于就绪待命状态;视觉仅监控状态,不下发任何控制指令 上电初始、停机复位、模式切换前过渡
1 系统标定模式 控制器主、视觉辅 控制器按标定流程自动走位到标定点;视觉读取控制器当前位姿,完成手眼标定计算,下发标定参数 设备首次调试、视觉与控制器坐标系校准
2 焊前扫描示教模式 视觉主、控制器辅 视觉扫描工件轮廓,拟合空间轨迹,循环下发目标示教位姿;控制器跟随走位,记录轨迹点并内部保存 批量生产前,生成标准工艺轨迹
3 在线全轴跟踪模式 视觉主、控制器辅 视觉20ms周期读取控制器当前位姿,计算6轴全量偏差并下发;控制器按“基准轨迹+实时纠偏”连续运动 工件偏差较大、需实时跟随的生产场景(如焊接、坡口切割)
4 轨迹批量复现模式 控制器主、视觉辅 控制器调用内部保存的标准轨迹,自动循环批量运行;视觉仅监控位姿,小幅下发纠偏量,超差报警 工件一致性好、批量量产的场景
5 紧急停止模式 系统强制态 任意模式下可立即切入,控制器立刻断使能、急停刹车;视觉暂停扫描、停止下发指令,仅保持通信监听 设备故障、安全隐患、紧急停机场景

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

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

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

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=DC 55
写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=D0 72
读设备状态字(单独读,起始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 轴纠偏;偏差超阈值直接报警停机,不重新规划轨迹。

8.6 紧急停止模式(5)

任意模式可立即切入;控制器立刻停止所有轴运动、锁定使能;视觉设备停止轨迹下发、停止纠偏输出,仅保持通信监听。

9 模式状态机切换规则

  • (1)任意模式可随时切换至 0 待机、5 急停;

  • (2)急停 5 只能退回 0 待机,不能直接进入运行模式;

  • (3)标定完成自动回待机;

  • (4)示教完成可切待机、在线跟踪、批量复现;

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

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

10 通信时序与稳定性要求

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

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