# PLSR Modbus 地址映射(2026) > 文档版本:V2.0 > 字节序:每个 32 位量均为低 16 位字在前、高 16 位字在后 > 访问方式:配置和控制支持 FC06/FC16,状态和诊断仅支持 FC03 ## 1 固定配置区 `0x1000..0x1197` ### 1.1 公共参数 `0x1000..0x1013` | 地址 | 类型 | 名称 | 取值/单位 | |---|---|---|---| | `0x1000` | U16 | 脉冲输出 | `0..3`,对应 Y0..Y3 | | `0x1001` | U16 | 方向输出 | `0..3`,对应 Y12..Y15;AB 模式忽略 | | `0x1002` | U16 | 等待输入 | `0=X4`,`1=X5` | | `0x1003` | U16 | 外部中断输入 | `0=X4`,`1=X5` | | `0x1004` | U16 | 发送模式 | `0=完整发送`,`1=后续发送` | | `0x1005` | U16 | 方向延时 | ms;AB 模式忽略 | | `0x1006` | U16 | 方向负逻辑 | `0/1`;AB 模式忽略 | | `0x1007` | U16 | 曲线模式 | `0=直线`,`1=S 曲线`,`2=正弦曲线` | | `0x1008` | U16 | 位置模式 | `0=相对`,`1=绝对` | | `0x1009` | U16 | 有效段数 | `1..10` | | `0x100A` | U16 | 起始段 | `1..10`,启动时不得超过有效段数 | | `0x100B..0x100C` | U32 | 默认速度 | Hz,`1..100000` | | `0x100D..0x100E` | U32 | 起始速度 | Hz,`0..100000` | | `0x100F` | U16 | 保留 | 读为 0,仅允许写 0 | | `0x1010..0x1011` | U32 | 停止速度 | Hz,`0..100000` | | `0x1012` | U16 | 加速时间 | ms | | `0x1013` | U16 | 减速时间 | ms | `0x1014..0x10FF` 为保留区,读为 0,仅允许写 0。32 位参数必须在同一次请求中完整访问两个寄存器。 ### 1.2 分段参数 `0x1100..0x1197` 第 `n` 段(`n=1..10`)首地址为 `0x1100 + (n-1)*0x10`。 | 段内偏移 | 类型 | 名称 | 取值/单位 | |---|---|---|---| | `+0x0..+0x1` | U32 | 段频率 | Hz,`1..100000` | | `+0x2..+0x3` | I32 | 位移/脉冲数 | 正数为正向,负数为反向 | | `+0x4` | U16 | 等待类型 | `0=定时等待`,`1=信号等待`,`2=定时动作`,`3=外部信号`,`4=外部或完成` | | `+0x5` | U16 | 等待时间 | ms | | `+0x6` | U16 | 动作时间 | ms | | `+0x7` | U16 | 跳转段 | `0=不跳转`,`1..10=目标段` | | `+0x8..+0xF` | U16 | 保留 | 读为 0,仅允许写 0 | ## 2 扩展配置区 `0x1200` | 地址 | 类型 | 名称 | 取值 | |---|---|---|---| | `0x1200` | U16 | 输出模式 | `0=PULSE/DIR`,`1=AB 正交脉冲` | 该参数参与持久化。AB 模式只允许 `0x1000=0`(Y0/Y1)或 `0x1000=2`(Y2/Y3);其他组合返回非法数据值。运行期间不得修改输出模式或脉冲输出。 AB 模式的频率单位是完整正交周期/秒,一个 `00` 起止的四状态周期等于一个指令脉冲: - 正向:`00 -> 10 -> 11 -> 01 -> 00` - 反向:`00 -> 01 -> 11 -> 10 -> 00` 方向由段位移的符号决定。独立 DIR 输出、DIR 极性和 DIR 延时在 AB 模式中不参与输出。 ## 3 固定状态区 `0x2000..0x2006`(只读) | 地址 | 类型 | 名称 | 说明 | |---|---|---|---| | `0x2000..0x2001` | I32 | 当前位置 | 累计指令脉冲位置 | | `0x2002..0x2003` | U32 | 当前频率 | Hz | | `0x2004` | U16 | 运行状态 | `0=未初始化`,`1=空闲`,`2=加速`,`3=运行`,`4=减速`,`5=等待`,`6=暂停`,`7=完成`,`8=停止`,`9=错误` | | `0x2005` | U16 | 当前段 | `0=无`,`1..10=段号` | | `0x2006` | U16 | 错误码 | `0=无错误`,其余见 `PLSR_ERROR` 定义 | ## 4 扩展诊断区 `0x2100..0x2119`(只读) | 地址 | 类型 | 名称 | 说明 | |---|---|---|---| | `0x2100` | U16 | 诊断标志 | 位定义见下表 | | `0x2101` | U16 | 首个锁存原因 | `0=无`,`1=计数`,`2=频率`,`3=曲线`,`4=无效采样` | | `0x2102` | U16 | 段号 | 当前或末次诊断段 | | `0x2103` | U16 | 模式与方向 | bit0..7=输出模式,bit8=`1` 正向/`0` 反向 | | `0x2104..0x2105` | U32 | 期望脉冲数 | 当前或末次诊断段的完整指令脉冲数 | | `0x2106..0x2107` | U32 | 实测脉冲数 | 当前或末次诊断段的实测值;目标板来自独立硬件计数链 | | `0x2108..0x2109` | I32 | 计数误差 | `实测 - 期望` | | `0x210A..0x210B` | U32 | 请求频率 | Hz,规划器本次请求值 | | `0x210C..0x210D` | U32 | 期望定时器频率 | Hz,根据实际 PSC/ARR 可实现的量化值 | | `0x210E..0x210F` | U32 | 活动定时器频率 | Hz,实际生效的定时器配置值 | | `0x2110..0x2111` | I32 | 请求量化误差 | `期望定时器频率 - 请求频率`,Hz | | `0x2112..0x2113` | U32 | 采样数 | 本次诊断累计的有效样本数 | | `0x2114..0x2115` | U32 | 不匹配数 | 频率或曲线不匹配的累计样本数 | | `0x2116..0x2117` | U32 | 最大频率误差 | `abs(活动定时器频率 - 期望定时器频率)`,Hz | | `0x2118..0x2119` | U32 | 首个不匹配样本 | 无不匹配时为 `0xFFFFFFFF` | `0x2100` 标志位: | 位 | 名称 | 置位条件 | |---|---|---| | bit0 | `monitoring_active` | 正在采集诊断数据 | | bit1 | `count_checked` | 已完成计数核对 | | bit2 | `count_pass` | 计数核对通过 | | bit3 | `frequency_checked` | 已执行频率核对 | | bit4 | `frequency_pass` | 频率核对通过 | | bit5 | `curve_checked` | 已执行加减速次序核对 | | bit6 | `curve_pass` | 曲线核对通过 | | bit7 | `fault_latched` | 至少一个诊断故障已锁存 | 诊断使用定时器分频值、完整周期计数和频率变化次序核对输出配置。它能发现内部计数、频率和曲线不一致,但不能代替逻辑分析仪对端子占空比、窄脉冲或电气波形的验收。 ## 5 控制区 | 地址 | 类型 | 名称 | 写入值 | |---|---|---|---| | `0x3000` | U16 | PLSR 命令 | `0=无操作`,`1=START`,`2=STOP`,`4=CLEAR` | | `0x3100` | U16 | 诊断控制 | `0=无操作`,`1=清除诊断锁存和统计` | 控制寄存器读取恒为 0。除上述单一值外的位组合均返回非法数据值。 运行期间写 `0x3100=1` 返回设备忙,避免清除正在采集的诊断上下文。 ## 6 地址边界 - 原固定区 `0x1000..0x1197`、`0x2000..0x2006`、`0x3000` 保持不变。 - 扩展区仅增加 `0x1200`、`0x2100..0x2119`、`0x3100`。 - 完全落在 PLSR 地址之外的请求返回“不处理”,跨越 PLSR 地址与空洞的请求返回“非法地址”。