Files
Uni-Lab-OS/unilabos/devices/laiyu_liquid/docs/hardware/步进电机控制指令.md
ZiWei b263a7e679 Workshop bj (#99)
* Add LaiYu Liquid device integration and tests

Introduce LaiYu Liquid device implementation, including backend, controllers, drivers, configuration, and resource files. Add hardware connection, tip pickup, and simplified test scripts, as well as experiment and registry configuration for LaiYu Liquid. Documentation and .gitignore for the device are also included.

* feat(LaiYu_Liquid): 重构设备模块结构并添加硬件文档

refactor: 重新组织LaiYu_Liquid模块目录结构
docs: 添加SOPA移液器和步进电机控制指令文档
fix: 修正设备配置中的最大体积默认值
test: 新增工作台配置测试用例
chore: 删除过时的测试脚本和配置文件

* add

* 重构: 将 LaiYu_Liquid.py 重命名为 laiyu_liquid_main.py 并更新所有导入引用

- 使用 git mv 将 LaiYu_Liquid.py 重命名为 laiyu_liquid_main.py
- 更新所有相关文件中的导入引用
- 保持代码功能不变,仅改善命名一致性
- 测试确认所有导入正常工作

* 修复: 在 core/__init__.py 中添加 LaiYuLiquidBackend 导出

- 添加 LaiYuLiquidBackend 到导入列表
- 添加 LaiYuLiquidBackend 到 __all__ 导出列表
- 确保所有主要类都可以正确导入

* 修复大小写文件夹名字
2025-10-12 22:54:38 +08:00

5.0 KiB

步进电机B系列控制指令详解

基本通信参数

  • 通信方式: RS485
  • 协议: Modbus
  • 波特率: 115200 (默认)
  • 数据位: 8位
  • 停止位: 1位
  • 校验位: 无
  • 默认站号: 1 (可设置1-254)

支持的功能码

  • 03H: 读取寄存器
  • 06H: 写入单个寄存器
  • 10H: 写入多个寄存器

寄存器地址表

状态监控寄存器 (只读)

地址 功能码 内容 说明
00H 03H 电机状态 0000H-待机/到位, 0001H-运行中, 0002H-碰撞停, 0003H-正光电停, 0004H-反光电停
01H 03H 实际步数高位 当前电机位置的高16位
02H 03H 实际步数低位 当前电机位置的低16位
03H 03H 实际速度 当前转速 (rpm)
05H 03H 电流 当前工作电流 (mA)

控制寄存器 (读写)

地址 功能码 内容 说明
04H 03H/06H/10H 急停指令 紧急停止控制
06H 03H/06H/10H 失能控制 1-使能, 0-失能
07H 03H/06H/10H PWM输出 0-1000对应0%-100%占空比
0EH 03H/06H/10H 单圈绝对值归零 归零指令
0FH 03H/06H/10H 归零指令 定点模式归零速度设置

位置模式寄存器

地址 功能码 内容 说明
10H 03H/06H/10H 目标步数高位 目标位置高16位
11H 03H/06H/10H 目标步数低位 目标位置低16位
12H 03H/06H/10H 保留 -
13H 03H/06H/10H 速度 运行速度 (rpm)
14H 03H/06H/10H 加速度 0-60000 rpm/s
15H 03H/06H/10H 精度 到位精度设置

速度模式寄存器

地址 功能码 内容 说明
60H 03H/06H/10H 保留 -
61H 03H/06H/10H 速度 正值正转,负值反转
62H 03H/06H/10H 加速度 0-60000 rpm/s

设备参数寄存器

地址 功能码 内容 默认值 说明
E0H 03H/06H/10H 设备地址 0001H Modbus从站地址
E1H 03H/06H/10H 堵转电流 0BB8H 堵转检测电流阈值
E2H 03H/06H/10H 保留 0258H -
E3H 03H/06H/10H 每圈步数 0640H 细分设置
E4H 03H/06H/10H 限位开关使能 F000H 1-使能, 0-禁用
E5H 03H/06H/10H 堵转逻辑 0000H 00-断电, 01-对抗
E6H 03H/06H/10H 堵转时间 0000H 堵转检测时间(ms)
E7H 03H/06H/10H 默认速度 1388H 上电默认速度
E8H 03H/06H/10H 默认加速度 EA60H 上电默认加速度
E9H 03H/06H/10H 默认精度 0064H 上电默认精度
EAH 03H/06H/10H 波特率高位 0001H 通信波特率设置
EBH 03H/06H/10H 波特率低位 C200H 115200对应01C200H

版本信息寄存器 (只读)

地址 功能码 内容 说明
F0H 03H 版本号 固件版本信息
F1H-F4H 03H 型号 产品型号信息

常用控制指令示例

读取电机状态

发送: 01 03 00 00 00 01 84 0A
接收: 01 03 02 00 01 79 84
说明: 电机状态为0001H (正在运行)

读取当前位置

发送: 01 03 00 01 00 02 95 CB  
接收: 01 03 04 00 19 00 00 2B F4
说明: 当前位置为1638400步 (100圈)

停止电机

发送: 01 10 00 04 00 01 02 00 00 A7 D4
接收: 01 10 00 04 00 01 40 08
说明: 急停指令

位置模式运动

发送: 01 10 00 10 00 06 0C 00 19 00 00 00 00 13 88 00 00 00 00 9F FB
接收: 01 10 00 10 00 06 41 CE
说明: 以5000rpm速度运动到1638400步位置

速度模式 - 正转

发送: 01 10 00 60 00 04 08 00 00 13 88 00 FA 00 00 F4 77
接收: 01 10 00 60 00 04 C1 D4
说明: 以5000rpm速度正转

速度模式 - 反转

发送: 01 10 00 60 00 04 08 00 00 EC 78 00 FA 00 00 A0 6D
接收: 01 10 00 60 00 04 C1 D4
说明: 以5000rpm速度反转 (EC78H = -5000)

设置设备地址

发送: 00 06 00 E0 00 02 C9 F1
接收: 00 06 00 E0 00 02 C9 F1
说明: 将设备地址设置为2

错误码

状态码 含义
0001H 功能码错误
0002H 地址错误
0003H 长度错误

CRC校验算法

public static byte[] ModBusCRC(byte[] data, int offset, int cnt) {
    int wCrc = 0x0000FFFF;
    byte[] CRC = new byte[2];
    for (int i = 0; i < cnt; i++) {
        wCrc ^= ((data[i + offset]) & 0xFF);
        for (int j = 0; j < 8; j++) {
            if ((wCrc & 0x00000001) == 1) {
                wCrc >>= 1;
                wCrc ^= 0x0000A001;
            } else {
                wCrc >>= 1;
            }
        }
    }
    CRC[1] = (byte) ((wCrc & 0x0000FF00) >> 8);
    CRC[0] = (byte) (wCrc & 0x000000FF);
    return CRC;
}

注意事项

  1. 所有16位数据采用大端序传输
  2. 步数计算: 实际步数 = 高位<<16 | 低位
  3. 负数使用补码表示
  4. PWM输出K脚: 0%开漏, 100%接地, 其他输出1KHz PWM
  5. 光电开关需使用NPN开漏型
  6. 限位开关: LF正向, LB反向