# PLSR 需求规格书
> 文档版本:V1.3 Rev.B(正式需求规格基线)
> 更新日期:2026-08-10
> 目标平台:XDM-60T4-E
> 软件平台:STM32F407 + uC/OS-II
> 对标基线:信捷 XD/XL 系列 PLC 定位控制手册 PLSR(印刷页 5~87,重点为 49~56)
## 目录
- [1 概述](#1-概述)
- [1.1 项目背景](#11-项目背景)
- [1.2 定义](#12-定义)
- [1.3 需求解释规则](#13-需求解释规则)
- [1.4 对标边界与冻结差异](#14-对标边界与冻结差异)
- [2 功能需求](#2-功能需求)
- [2.1 系统与硬件功能](#21-系统与硬件功能)
- [2.2 脉冲输出功能](#22-脉冲输出功能)
- [2.3 定位功能](#23-定位功能)
- [2.4 S0、S1、S2、D 功能模型](#24-s0s1s2d-功能模型)
- [2.5 单段与多段路径](#25-单段与多段路径)
- [2.6 加减速与段内变频](#26-加减速与段内变频)
- [2.7 调用与多段衔接模式](#27-调用与多段衔接模式)
- [2.8 运行控制](#28-运行控制)
- [2.9 状态机与状态监控](#29-状态机与状态监控)
- [2.10 Modbus 通信](#210-modbus-通信)
- [2.11 参数与累计数据保存](#211-参数与累计数据保存)
- [2.12 自测与诊断](#212-自测与诊断)
- [2.13 安全与异常处理](#213-安全与异常处理)
- [3 性能需求](#3-性能需求)
- [3.1 脉冲性能](#31-脉冲性能)
- [3.2 实时性能](#32-实时性能)
- [3.3 可靠性](#33-可靠性)
- [3.4 工程单位与换算边界](#34-工程单位与换算边界)
- [4 其它需求](#4-其它需求)
- [4.1 验收要求](#41-验收要求)
- [4.2 交付物](#42-交付物)
- [4.3 后续版本或加分项](#43-后续版本或加分项)
- [4.4 不在当前范围内](#44-不在当前范围内)
- [4.5 实施验证事项](#45-实施验证事项)
- [4.6 当前实现与验证快照](#46-当前实现与验证快照)
- [5 参考资料](#5-参考资料)
## 1 概述
### 1.1 项目背景
本项目计划在新一代 XDM 系列 PLC 中实现一个高性能定位脉冲输出模块, 通过
PLC 指令或 Modbus 命令驱动伺服驱动器,完成四轴独立位置控制。
项目当前已有以下基础:
- STM32F407 硬件平台和 IAR 工程。
- uC/OS-II 实时操作系统。
- USART1 DMA Modbus RTU 从站。
- USB CDC 框架。
- Backup SRAM 数据保持基础。
- PC 端 Modbus RTU 测试工具。
本项目以信捷 PLC 的 PLSR 功能作为最低功能基线:信捷 PLSR 已有的功能和
可观察运行语义均应具备;本项目已有的四轴资源管理、Modbus原子提交、命令防重、
64位累计、诊断和Backup
SRAM等增强功能继续保留。Y0~Y3的PLSR固定配置参数和固定状态地址必须与信捷手册
一比一对应;S0、S1保持动态首地址语义,S2、D保持指令操作数语义;不复制XDPPro参数配置界面。
逐项对应关系见[PLSR信捷对标追踪矩阵](./PLSR信捷对标追踪矩阵.md)。矩阵中未关闭的
差异不得宣称为"严格功能对标完成"。
V1.0 的目标范围如下:
- 四轴独立 PULSE/DIR 脉冲输出,不包含多轴插补。
- AB 相正交脉冲输出和方向控制,最多同时运行两轴。
- 指定频率、脉冲数量和方向。
- 相对定位和绝对定位。
- 单段和多段路径。
- 多种加减速曲线。
- 异步返回调用。
- 完成方式和后续方式两种多段衔接模式。
- 运行中调频。
- Modbus 配置和状态监控。
- 参数及累计数据保存。
- 自测、诊断和测试文档。
外部脉冲回读、编码器闭环和多轴插补等功能作为后续版本或加分项。
### 1.2 定义
| 名称 | 定义 |
| --- | --- |
| PLSR | 本项目的定位脉冲输出模块,支持单段及多段位置控制 |
| PULSE/DIR | 脉冲加方向的伺服控制接口,PULSE 表示位置增量,DIR 表示方向 |
| AB 相输出 | A、B 两路相差 90° 的正交脉冲接口,通过相位先后表示方向 |
| 指令位置 | PLC 根据已输出脉冲累计得到的位置,不等同于编码器实际位置 |
| 相对定位 | 以当前逻辑位置为基准移动指定距离 |
| 绝对定位 | 移动到指定逻辑坐标 |
| 异步返回 | 启动成功后立即返回,通过状态接口查询运动结果 |
| 完成方式 | 上一段脉冲发送完后,才开始向下一段频率加减速 |
| 后续方式 | 在上一段内提前变频,使段结束时已经达到下一段频率 |
| S0 | 路径数据块,保存段数、频率、脉冲数、等待和跳转参数 |
| S1 | 用户执行参数,仅保存定位模式和起始段 |
| S2 | K0~K4运动参数套组,保存速度限制、起止频率、加减速、补偿、刷新周期及与独立FOLLOW指令共用的参数字段 |
| D | 输出轴或脉冲输出点 |
| 控制周期 | PLSR 更新状态和速度规划的周期,由 S2 配置为 1 ms 或 0.1 ms |
| 检查点 | 为掉电恢复而保存的一致性累计数据快照 |
| 影子参数 | 上位机可编辑但尚未提交给运行模块的参数副本 |
### 1.3 需求解释规则
本文使用以下约束词:
- **应、必须、不得**:V1.0 强制需求,未满足即判定不合格。
- **可、允许**:在满足前置条件时允许实现的行为。
- **建议**:不影响功能验收的实现建议。
- **信捷兼容**:外部可观察语义、数据布局或固定软元件地址与信捷手册一致。
- **项目增强**:信捷 PLSR 未规定,但本项目在不破坏兼容语义的前提下增加的能力。
需求发生冲突时,按以下优先级解释:
1. 本规格中明确标记为“冻结”的项目决定;
2. 已确认的项目需求;
3. 信捷 PLSR 手册的外部可观察行为;
4. 实现设计和内部数据结构。
`Y0~Y3`表示信捷兼容的逻辑脉冲轴;本项目硬件图纸使用`Q0~Q3`标识对应物理输出点,
两者在本规格中按`Y0↔Q0`、`Y1↔Q1`、`Y2↔Q2`、`Y3↔Q3`对应。除非特别说明,
涉及固定软元件时使用`Y`轴语义,涉及板级引脚和资源时使用`Q`点语义。
### 1.4 对标边界与冻结差异
V1.0 以信捷 PLSR 为最低功能基线,并保留以下已确认差异或增强:
| 项目 | 信捷手册语义 | 本项目冻结语义 | 分类 |
| --- | --- | --- | --- |
| 段脉冲数为0 | 手册印刷页56将“频率为0或脉冲数为0”并列描述为采用默认速度,脉冲数为0时的数量行为不明确 | 跳过当前段,不输出脉冲并进入下一段;最后一段则完成 | 冻结差异 |
| AB相计数 | 手册仅规定AB相输出方式,未定义本项目计数口径 | 一个完整四状态正交周期计1个指令脉冲 | 冻结增强 |
| 累计位置 | 固定HSD状态为32位 | 固定地址保持32位兼容,内部另以64位累计并做溢出检查 | 增强 |
| 输出模式 | 单向脉冲、AB相 | 增加CW/CCW双脉冲,不占用或改写信捷固定字段语义 | 增强 |
| 参数提交 | 运行前直接读取软元件 | 增加影子参数、原子提交和不可变运行快照 | 增强 |
| 命令与诊断 | 主要通过指令、STOP和固定状态软元件 | 增加命令防重、状态机、自测及详细诊断 | 增强 |
信捷固定地址、S0/S1相对布局和可观察状态不得因增强功能改变。逐项对应关系见
[PLSR信捷对标追踪矩阵](./PLSR信捷对标追踪矩阵.md)。
## 2 功能需求
### 2.1 系统与硬件功能
| 编号 | 需求 | 优先级 |
| --- | --- | --- |
| FR-SYS-01 | 系统应运行在 STM32F407 和 uC/OS-II 平台上 | 必须 |
| FR-SYS-02 | 系统应使用 12 MHz 外部晶振并运行于 168 MHz 主频 | 必须 |
| FR-SYS-03 | 首版应在 XDM-60T4-E(STM32F407IG)上完成验收 | 必须 |
| FR-SYS-05 | 脉冲必须由硬件定时器产生,不得使用 OS 延时翻转 GPIO | 必须 |
| FR-SYS-06 | 上电、复位和初始化期间,脉冲及方向输出应处于安全无效状态 | 必须 |
| FR-SYS-07 | V1.0 应支持四轴独立运行,各轴具有独立状态和参数上下文 | 必须 |
| FR-SYS-08 | 四轴之间不要求直线、圆弧或其它形式的插补 | 必须 |
已知主要输出点如下:
| PLC 点 | MCU 引脚 |
| --- | --- |
| Q0 | PF6 |
| Q1 | PF8 |
| Q2 | PF7 |
| Q3 | PF9 |
| Q4 | PI8 |
| Q5 | PE6 |
| Q6 | PE5 |
| Q7 | PE4 |
| Q10 | PG7 |
| Q11 | PG6 |
| Q12 | PH9 |
| Q13 | PH8 |
| Q14 | PH7 |
| Q15 | PH6 |
| Q16 | PF11 |
| Q17 | PB0 |
| Q20 | PH5 |
| USART1_TX | PA9 |
| USART1_RX | PA10 |
Q0~Q3 的脉冲映射为 Q0/PF6/TIM10_CH1、Q1/PF8/TIM13_CH1、
Q2/PF7/TIM11_CH1、Q3/PF9/TIM14_CH1,仍应通过上板波形测试确认。
方向点允许从 XDM-60T4-E 的有效输出点 `Q0~Q7、Q10~Q17、Q20` 中配置,
但不得与脉冲点或其它已占用输出点冲突;四轴脉冲全部启用时,方向点应从
`Q4~Q7、Q10~Q17、Q20` 中选择。
### 2.2 脉冲输出功能
| 编号 | 需求 | V1.0 指标 |
| --- | --- | --- |
| FR-PUL-01 | 输出形式 | PULSE/DIR、AB 相、CW/CCW 双脉冲 |
| FR-PUL-02 | PULSE/DIR 有效计数边沿 | 固定为物理上升沿 |
| FR-PUL-03 | 脉冲占空比 | 50% |
| FR-PUL-04 | 输出频率范围 | 1~100,000 Hz |
| FR-PUL-05 | 单段脉冲数量 | 完整有符号32位,范围 -2,147,483,648~2,147,483,647 |
| FR-PUL-06 | 输出方向 | 正向、反向 |
| FR-PUL-07 | 方向有效极性 | 参数可配置 |
| FR-PUL-08 | 方向延时时间 | 默认10 ms,以ms为单位并可配置 |
| FR-PUL-09 | 输出点 | 脉冲点和方向点可配置且不得重复 |
| FR-PUL-10 | 运行调频 | 修改目标频率后不改变剩余脉冲数量 |
| FR-PUL-11 | 四轴运行 | 四轴可独立启动、停止、调频和查询状态 |
| FR-PUL-12 | AB 相方向和计数 | 通过A、B相位先后控制方向;一个完整A/B正交周期计1个指令脉冲 |
| FR-PUL-13 | AB 相轴数 | 最多同时运行两轴;D只允许选择Y0或Y2,分别占用Q0(A)/Q1(B)、Q2(A)/Q3(B)固定点对 |
| FR-PUL-14 | 高速点资源 | PULSE/DIR轴数 + 2 × AB轴数 + 2 × CW/CCW轴数不得超过4,启动前必须检查资源冲突 |
| FR-PUL-15 | AB 相频率 | 目标频率表示每秒完整AB周期数;每周期含4次相位跳变,但只计1个指令脉冲 |
| FR-PUL-16 | 默认速度 | 段频率为0时使用当前S2套组的脉冲默认速度 |
| FR-PUL-17 | 扩展频率 | 100,001~200,000 Hz作为非保证扩展区,仅在板级测试通过后开放并报告警告 |
系统支持三种输出模式:
| 模式编号 | 输出模式 | 说明 |
| --- | --- | --- |
| 0 | PULSE/DIR | 脉冲+方向输出 |
| 1 | AB 相 | 正交脉冲输出 |
| 2 | CW/CCW | 双脉冲方向输出 |
要求:
- 三种模式均应支持正反方向控制;
- 输出模式运行前不可修改;
- 输出点必须支持资源冲突检查;
- 不同轴之间高速输出资源不得重复占用。
高速输出资源按以下规则统一:
- 物理高速资源固定为Q0~Q3,不改变其MCU引脚和定时器映射;
- D在每次START时申请对应高速资源,任务终止时释放;运行期间轴状态归属D指定的Y轴;
- PULSE/DIR占用1个高速资源;AB相和CW/CCW各占用2个高速资源;
- AB相及CW/CCW只能使用Q0/Q1或Q2/Q3有效点对,D分别取Y0或Y2;
- 正常完成、STOP或ERROR退出后必须释放本任务占用的高速资源;
- 运行期间输出模式、高速点绑定和定时器资源保持锁定。
CW/CCW模式下,正向只允许CW端输出脉冲,反向只允许CCW端输出脉冲;另一端和停止
状态均保持无效电平,任何时刻禁止CW、CCW同时输出。
方向输出点、方向有效极性和方向延时只作用于PULSE/DIR模式。AB相和CW/CCW不使用独立DIR点;
发生方向反转时仍必须先减速到0,再按对应相序或通道重新启动。
- **FR-PUL-20:** PLSR任务正常完成、STOP停止或ERROR退出后必须释放高速输出资源。
- **FR-PUL-21:** CW/CCW必须遵守上述互斥输出和停止安全电平规则。
- **FR-PUL-22:** 单段脉冲数量为0时跳过当前段,不输出脉冲并进入下一段;若为最后一段则完成任务。
AB模式的段脉冲数量按完整正交周期累计。每完成`00→相邻相位→相邻相位→相邻相位→00`
的一轮四相位状态转换,段剩余脉冲数减1;四次相位跳变不得分别扣减脉冲数量。正反方向
通过相位先后顺序区分。
PULSE/DIR模式每个有效上升沿计1个指令脉冲;CW/CCW模式在当前方向通道每输出一个完整
脉冲计1个指令脉冲。段脉冲数量的符号决定相对模式方向,绝对模式方向由目标坐标与当前位置
之差决定。实现`-2,147,483,648`的绝对值时必须先扩展到64位,禁止32位取反溢出。
最小有效脉宽、输出极性及最高可靠频率还应满足 PLC 输出电路和伺服驱动器
的电气要求。100 kHz 是 V1.0 建议保证值,更高频率需通过硬件测试后开放。
当段目标频率为0时:
使用当前 S2 默认速度。
如果:
默认速度 <= 0
则:
- 禁止启动;
- 返回 DEFAULT_SPEED_INVALID。
### 2.3 定位功能
#### 2.3.1 相对定位
相对定位按下式计算:
```text
目标位置 = 当前逻辑位置 + 相对位移
```
- 相对位移为正数时正向运动,为负数时反向运动。
- 正常完成后,逻辑位置应等于目标位置。
- 中途停止时,应按实际已输出脉冲更新逻辑位置。
#### 2.3.2 绝对定位
绝对定位按下式计算:
```text
输出位移 = 目标绝对位置 - 当前逻辑位置
```
- 执行绝对定位前,当前位置必须有效。
- 位置未建立或掉电恢复无效时,应拒绝启动并报告错误。
- 系统应支持设置当前位置和当前位置清零。
- 绝对定位只表示 PLC 逻辑坐标,不代表伺服具有绝对值编码器。
#### 2.3.3 位置与累计计数
系统内部应维护以下64位增强数据:
- 当前逻辑位置。
- 本次任务累计脉冲数。
- 总累计脉冲数。
上位机应能够读取并清零累计数据。运行期间禁止清零或设置当前位置。
信捷兼容的固定累计状态`HSD0~15`仍按每个值两个16位寄存器组成32位数据;内部64位
累计不得改变该固定地址布局。将内部值发布到信捷兼容状态前必须进行范围检查,超出32位
范围时报告累计溢出,不得静默截断。
### 2.4 S0、S1、S2、D 功能模型
项目采用信捷PLSR的S0、S1、S2、D逻辑模型。Y0~Y3固定配置和状态地址必须按
[PLSR地址映射](./PLSR地址映射.md)一比一对应;S0、S1保持动态首地址语义。
| 参数 | 功能 | 主要内容 |
| --- | --- | --- |
| S0 | 路径数据块 | 总段数、每段频率、脉冲数、等待及跳转 |
| S1 | 用户执行参数 | 仅包含相对/绝对模式和起始执行段;异步调用属于指令接口而非S1字段 |
| S2 | 运动参数套组 | K0~K4,包含默认频率、最高频率、起止频率、加减速、曲线、补偿、刷新周期及与独立FOLLOW指令共用的参数字段 |
| D | 输出轴 | 指定Y0~Y3脉冲轴;输出模式、方向点、极性和方向延时由该轴配置参数决定 |
#### 2.4.1 指令接口
逻辑调用形式为:
```text
PLSR S0 S1 S2 D
```
**FR-CMD-04:** PLSR指令必须支持`S0、S1、S2、D`四个操作数语义,分别表示路径数据、
用户执行参数、K0~K4系统运动参数组和输出资源配置。
- 指令只在启动条件上升沿接受一次;启动条件随后断开不得终止已接受任务。
- S0、S1允许使用项目支持的32位数据软元件首地址,且两个数据块不得重叠。
- S2允许常数或受支持的32位数据软元件,其运行值必须为K0~K4。
- D在兼容语义下指定Y0~Y3;项目实现映射到Q0~Q3高速资源。
- PLSR调用为异步返回。完成方式和后续方式只描述多段速度衔接,不表示同步或异步调用。
#### 2.4.2 S0路径数据块
S0首地址由调用方动态指定。占用范围从`S0+0`开始,到最后一段
`S0+N×10+8`双字结束;由于末字段为双字,实际最后一个16位字位于`S0+N×10+9`。
| 相对地址 | 数据类型 | 定义 |
| --- | --- | --- |
| S0+0 | INT32 | 总段数N,范围1~100 |
| S0+2~S0+9 | 8个WORD | 保留;写入时应为0,读取时不得解释为项目扩展字段 |
| S0+N×10+0 | INT32 | 第N段目标频率;非负,0表示使用当前S2默认速度 |
| S0+N×10+2 | INT32 | 第N段脉冲数量;相对模式为有符号位移,绝对模式为目标坐标 |
| S0+N×10+4 | WORD | 高8位为等待条件,低8位为等待参数来源类型 |
| S0+N×10+5 | INT32 | 等待常数或等待变量编号 |
| S0+N×10+7 | WORD | 低8位为跳转目标来源类型,高8位保留 |
| S0+N×10+8 | INT32 | 下一段常数或保存下一段号的变量编号 |
表中的`N`在段字段公式中取1~总段数。所有双字均由连续两个16位字组成,低地址保存低16位、
下一地址保存高16位;有符号值采用二进制补码。启动前必须验证完整数据块均位于允许的数据区内,且计算
`S0+N×10+9`时不得发生地址溢出。
#### 2.4.3 S1用户参数块
| 相对地址 | 数据类型 | 定义 |
| --- | --- | --- |
| S1+0 | INT32 | 定位模式:0为相对模式,1为绝对模式;其它值非法 |
| S1+2 | INT32 | 起始执行段:0或1均从第1段开始,2~100从指定段开始 |
起始段不得大于S0总段数。相对模式下,每段脉冲数量表示相对本段起点的位移;绝对模式下,
每段脉冲数量表示目标逻辑坐标,实际输出位移为该目标坐标减去进入本段时的逻辑位置。
#### 2.4.4 S2系统参数套组
每个输出轴必须提供第0~4套S2参数:
- 第 0 套用于运行时或上位机动态调整。
- 第 1~4 套用于保存预设运动配方。
每套S2至少包含:
- 脉冲默认速度;段频率为0时采用该速度。
- 默认速度加速时间、默认速度减速时间;二者与默认速度共同定义加减速斜率。
- 齿隙补偿加减速时间。
- 直线、S形、正弦三种加减速模式。
- 最高速度限制、起始速度和终止速度。
- FOLLOW性能参数,范围1~100;该字段供信捷独立FOLLOW/FOLLOW_AB指令使用,PLSR只负责兼容存储和范围校验。
- FOLLOW前馈补偿百分比,范围0~100;该字段不参与PLSR运动曲线计算。
- 脉冲频率刷新周期,0.1 ms或1 ms。
K0参数固定使用`HSD460~539`中对应轴的地址;K1~K4及公共参数固定使用
`SFD900~1419`中对应轴的地址。各地址不得重排或复用,具体范围见
[PLSR地址映射](./PLSR地址映射.md)。
S2 的控制刷新周期只允许配置为 `1 ms` 或 `0.1 ms`。系统OS Tick保持1 ms;
0.1 ms运动控制刷新应由独立硬件定时器触发,不得通过提高全局OS Tick实现。
运行中修改当前段目标频率后,系统应在当前S2所配置的刷新周期内开始应用新目标;该指标表示
调频响应时间,不表示脉冲输出周期。
#### 2.4.5 D输出资源
D的信捷兼容含义是脉冲输出端口。本项目中:
- D选择逻辑轴Y0~Y3,并对应物理高速点Q0~Q3。
- PULSE/DIR占用D所选的一个高速点,方向点来自该轴公共参数。
- AB相和CW/CCW只允许D选择Y0或Y2,并分别占用Q0/Q1或Q2/Q3固定点对。
- CW/CCW属于项目增强,模式选择保存在项目输出配置中,不改变信捷SFD900等固定字段含义。
- D只指定输出资源,不自拟固定配置地址。
#### 2.4.6 参数快照与共享规则
S0和S1由调用方在未占用数据区选择不重叠的连续首地址。数据块不永久绑定到轴,多个空闲轴
可以只读共享同一数据块。COMMIT成功时应为目标轴创建不可变运行快照,随后修改原数据块不得
改变已提交任务,但下列兼容行为除外:
- 当前正在执行段的目标频率允许更新,并按当前S2刷新周期生效;
- 共享S0被一个运行轴用于调频时,其他轴不得同时把该S0作为可写运行参数源;
- 其余段字段、S1、S2、D和输出资源修改仅在下一次成功提交并启动时生效。
### 2.5 单段与多段路径
系统应支持 1~100 段路径,每段至少包含:
```text
有符号脉冲数量
目标频率
等待类型
等待参数
下一段编号
```
S0应提供与信捷每段数据一致的相对布局和动态引用能力;S0首地址由调用方动态指定:
- 等待条件和等待参数均可表达常数或受支持的数据/位变量引用。
- 跳转目标可为常数或运行时数据变量引用,最终值范围0~100。
- Wait时间范围1~2,147,483,647 ms,配置0时按1 ms处理;计时从本段脉冲完成后开始。
- Wait信号在本段完成后判断;若信号已有效则立即跳段,否则保持WAIT直至有效。
- ACT从本段开始输出时计时;时间到时放弃本段剩余脉冲并跳段;若脉冲先完成则等待ACT到时。
- EXT采用输入上升沿;运动中触发立即放弃剩余脉冲并跳段,脉冲先完成则等待后续EXT边沿。
- EXT或脉冲完成采用先到条件;EXT先到时放弃剩余脉冲,脉冲先完成时立即跳段。
- 外部中断输入应优先用于EXT,以避免普通IO映射周期造成响应延迟。
等待条件编码必须与信捷S0布局一致:
| 编码 | 条件 | 进入下一段的时机 |
| --- | --- | --- |
| H00 | 脉冲发送完成 | 本段规定脉冲发送完成后 |
| H01 | Wait时间 | 本段完成后开始计时,计时到达后 |
| H02 | Wait信号 | 本段完成且指定位信号有效后 |
| H03 | ACT时间 | 从本段开始计时,到时后;若脉冲先完成则等待到时 |
| H04 | EXT信号 | 指定X输入出现OFF→ON;若脉冲先完成则继续等待边沿 |
| H05 | EXT信号或脉冲完成 | 两者任一先到 |
等待参数来源编码必须为:`H00=常数`、`H01=D`、`H02=HD`、`H03=FD`、`H04=X`、
`H05=M`、`H06=HM`。Wait时间和ACT时间只允许常数、D、HD或FD,数值范围为
0~2,147,483,647;H04和H05等待条件只允许使用X来源;Wait信号只允许使用X、M或HM。
EXT使用外部中断输入时不得再由同一物理边沿重复触发普通外部中断业务。
跳转来源编码必须为:`H00=常数`、`H01=D`、`H02=HD`、`H03=FD`。解析出的跳转值:
- 为0时顺序进入下一段;最后一段为0时任务正常完成;
- 为1~100时进入指定段,且不得超过S0总段数;
- 等于当前段时表示有意无限循环,但仍受STOP、限位、急停和错误控制;
- 来源类型、变量地址或最终值非法时,拒绝启动或进入ERROR,不得读取越界地址。
段参数的零值判断顺序固定为:先判断脉冲数量,再判断目标频率。脉冲数量为0时直接跳段,
不得因目标频率也为0而输出默认速度脉冲;脉冲数量非0且目标频率为0时才使用S2默认速度。
多段路径应满足:
| 编号 | 需求 | 优先级 |
| --- | --- | --- |
| FR-SEG-01 | 每段可独立设置有符号脉冲数量 | 必须 |
| FR-SEG-02 | 每段可独立设置目标频率 | 必须 |
| FR-SEG-03 | 段起止频率由S2和相邻段目标频率自动推导,不要求每段显式配置 | 必须 |
| FR-SEG-04 | 同方向连续段允许不停顿变频 | 必须 |
| FR-SEG-05 | 反方向段切换前必须减速停止 | 必须 |
| FR-SEG-06 | 支持当前段完成后执行下一段 | 必须 |
| FR-SEG-07 | 支持等待指定时间及ACT指定时间后跳段 | 必须 |
| FR-SEG-08 | 支持等待指定输入点、EXT立即跳段及输入有效或本段完成 | 必须 |
| FR-SEG-09 | 支持指定下一段;跳转值为0时顺序执行,最后一段为0时结束 | 必须 |
| FR-SEG-10 | 不设置独立有限循环次数字段;有限循环由寄存器、计数器和动态下一段实现 | 必须 |
| FR-SEG-11 | 支持从指定段号开始;跳转到自身表示有意无限循环 | 必须 |
| FR-SEG-12 | 每个实际完成或被条件切换的段均产生带轴号、段号和原因的段事件 | 必须 |
| FR-SEG-13 | 最后一段使用等待类条件时保持WAIT/运行状态,直到条件成立或STOP,不得静默结束 | 必须 |
| FR-SEG-14 | 最大路径段数固定为100;超过限制时拒绝执行并返回SEGMENT_OVERFLOW | 必须 |
运行期间除当前段目标频率外,其余路径参数修改不得影响当前任务。新参数应在下一次成功提交并
启动时生效。项目内部可把S0编码解析为结构化字段,但不得改变S0对外相对布局。
### 2.6 加减速与段内变频
系统应支持:
- 无加减速。
- 直线或梯形加减速。
- S 形加减速。
- 正弦曲线加减速。
加减速应满足以下规则:
1. S2最高速度必须处于硬件保证频率范围内;配置值为0或超过硬件允许范围时应拒绝启动。
2. 起始频率、目标频率或结束频率高于当前S2最高速度时,应按信捷语义限幅到最高速度运行,
同时发布`SPEED_CLAMPED`诊断告警;不得把限幅伪装成未经记录的正常输出。
3. 加减速距离不足时,应自动生成三角或短距离曲线。
4. 无法在指定脉冲数量内满足起止频率和曲线约束时,应报告参数冲突。
5. 加减速过程中必须保证最终脉冲数量准确。
6. 变频点应由脉冲位置和控制周期共同约束,不得只依赖 OS 延时。
7. 运行中修改目标频率时,应按照当前曲线平滑过渡。
8. 反向前应减速至停止,切换方向并等待方向建立时间。
### 2.7 调用与多段衔接模式
调用方式和脉冲衔接方式是两个独立配置项。
#### 2.7.1 调用方式
- V1.0 只提供异步返回:启动成功后立即返回,通过状态接口查询结果。
- START被接受后即锁存执行;启动条件或通信请求结束不应中断运动,只有正常完成、STOP、限位、急停或错误才能结束。
#### 2.7.2 多段衔接方式
- 完成方式:上一段按其频率发送完规定脉冲后,才向下一段频率变化。
- 后续方式:在上一段内提前变频,使上一段结束时已经达到下一段频率。
- 两种方式都必须保证各段及整个任务的脉冲数量准确。
### 2.8 运行控制
#### 2.8.1 PLSR启动触发规则
PLSR启动采用上升沿触发方式。
| 编号 | 需求 | 优先级 |
| --- | --- | --- |
| FR-CMD-01 | PLSR启动必须检测启动信号上升沿 | 必须 |
| FR-CMD-02 | 启动成功后,解除启动条件不会影响当前任务 | 必须 |
| FR-CMD-03 | 已经接受的任务必须锁存执行参数,不受原参数区修改影响 | 必须 |
禁止:
- 启动信号持续有效导致重复启动;
- 通信结束或调用返回导致运动停止。
系统至少应支持以下命令:
| 命令 | 行为 | 优先级 |
| --- | --- | --- |
| START | 校验并启动任务 | 必须 |
| STOP_DECEL | 按减速曲线停止 | 必须 |
| STOP_IMMEDIATE | 完成本次有效脉冲后关闭输出 | 必须 |
| PAUSE | 减速暂停并保存剩余路径 | 必须 |
| RESUME | 从暂停状态继续 | 必须 |
| SET_POSITION | 设置逻辑当前位置 | 必须 |
| CLEAR_POSITION | 逻辑当前位置清零 | 必须 |
| CLEAR_TOTAL | 累计脉冲数清零 | 必须 |
| SAVE_CONFIG | 保存稳定配置 | 必须 |
| LOAD_CONFIG | 加载已保存配置 | 必须 |
| RESET_ERROR | 清除可恢复错误 | 必须 |
| SELF_TEST | 执行内部自测 | 必须 |
命令边界行为:
- IDLE 状态收到 START 时,校验通过后接受。
- 运行、减速、等待或暂停状态再次收到 START
时拒绝执行,不重启任务,也不要求返回BUSY。
- ERROR 状态收到 START 时,应拒绝执行,必须先清除错误。
- 相同命令序号重复到达时,应返回上次结果,不得重复执行运动。
- 多次 STOP_IMMEDIATE 应按幂等命令处理。
- CLEAR_POSITION、SET_POSITION 和 CLEAR_TOTAL 在运行期间应被拒绝。
- 发生数值溢出时应报告错误,不得依赖整数回绕。
#### 2.8.2 参数修改生效规则
运行过程中参数修改规则:
| 参数 | 运行中修改 |
| --- | --- |
| 当前段目标频率 | 允许,在当前S2配置的0.1 ms或1 ms刷新周期内开始生效 |
| STOP命令 | 允许 |
| PAUSE命令 | 允许 |
| 方向 | 禁止 |
| 脉冲数量 | 禁止 |
| 路径段数据 | 禁止 |
| 输出模式 | 禁止 |
| 输出点配置 | 禁止 |
| 加减速参数 | 下一次启动生效 |
启动时必须生成不可变运行快照。
**FR-PUL-23:** 运行过程中禁止直接修改方向;必须终止当前任务后重新提交并启动。
#### 2.8.3 PAUSE、RESUME、STOP语义
##### PAUSE
暂停要求:
1. 按当前减速曲线降低速度;
2. 输出频率降为0;
3. 保存当前段号;
4. 保存剩余脉冲数量;
5. 等待RESUME。
##### RESUME
恢复:
- 从暂停位置继续执行;
- 不重新加载路径;
- 不重新计算已完成段。
##### STOP_DECEL
减速停止:
- 按当前减速曲线停止;
- 当前任务结束。
##### STOP_IMMEDIATE
立即停止:
- 完成本次有效脉冲输出后关闭;
- 锁存停止原因;
- 不自动恢复。
### 2.9 状态机与状态监控
PLSR 至少应包含以下状态:
```text
UNINITIALIZED 未初始化
IDLE 空闲
ACCEL 加速
RUN 运行
DECEL 减速
WAIT 段间等待
PAUSED 暂停
COMPLETED 完成
STOPPED 停止
ERROR 错误
```
上位机至少能够读取:
- 当前状态和错误码。
- 当前段号和总段数。
- 当前方向。
- 当前设定频率和目标频率。
- 本段已发、剩余脉冲数。
- 本次任务已发、剩余脉冲数。
- 当前逻辑位置和累计脉冲数。
- 最近一次完成或停止原因。
- 当前 S2 参数套组。
- 每轴正在发送脉冲标志。
- 当前段已发送脉冲数,以及最近一次段事件的轴号、段号和结束原因。
绝对模式目标等于当前累计位置时不得输出脉冲;完成状态不得依赖必须出现一次
"运行标志下降沿",应直接返回零位移完成结果。
增加 PLC 用户可观察状态:
| 状态 | 说明 |
| --- | --- |
| BUSY | 当前轴存在已接受但尚未终止的任务,包括运动、WAIT和PAUSED |
| PULSE_ACTIVE | 当前物理脉冲正在输出;WAIT和PAUSED期间为0 |
| DONE | 当前任务正常完成并锁存 |
| WAIT | 当前任务正在等待段条件 |
| ERROR | 当前任务异常结束并锁存错误 |
#### 2.9.1 DONE定义
采用方案A:
- 运动正常完成后 DONE 置1;
- DONE保持有效;
- 下一次 START 成功接受后清零;
- DONE 不依赖 BUSY 下降沿。
- STOP_DECEL、STOP_IMMEDIATE和ERROR结束不得置DONE。
**FR-STA-01:** DONE只表示正常完成,并按上述方案A产生、保持和清零。
#### 2.9.2 信捷兼容固定状态
四轴固定状态和段事件入口必须保持以下对应关系:
| 逻辑轴 | 累计状态 | 运行/方向标志 | 实时状态 | 段事件入口 |
| --- | --- | --- | --- | --- |
| Y0/Q0 | HSD0~3 | SM1000、SM1001 | SD1000~1011 | I6000~6099 |
| Y1/Q1 | HSD4~7 | SM1020、SM1021 | SD1020~1031 | I6100~6199 |
| Y2/Q2 | HSD8~11 | SM1040、SM1041 | SD1040~1051 | I6200~6299 |
| Y3/Q3 | HSD12~15 | SM1060、SM1061 | SD1060~1071 | I6300~6399 |
HSD每轴四个字的相对布局固定为:`+0/+1`累计指令脉冲量,`+2/+3`累计当量,均为有符号
32位值。项目内部64位累计发布到HSD前必须做范围检查;超出INT32范围时锁存累计溢出错误,
不得回绕或静默截断。
SM运行和方向标志语义固定为:
- 运行标志在脉冲任务处于运动或兼容WAIT期间为ON,任务结束后为OFF;项目增强的PAUSED等
详细状态通过独立状态接口提供,不改变固定SM地址。
- 方向标志在正向输出时为ON,反向输出时为OFF;方向输出极性反转不得改变该逻辑方向语义。
- 绝对目标等于当前位置时不输出脉冲,运行标志可以不产生ON或下降沿;DONE仍应正确置位。
每轴SD实时状态以对应轴起始地址`B`表示,其相对布局固定为:
| 相对地址 | 定义 |
| --- | --- |
| B+0、B+1 | 当前段号,32位 |
| B+2、B+3 | 当前段已输出指令脉冲量,32位 |
| B+4、B+5 | 当前段已输出当量,32位 |
| B+6、B+7 | 当前输出频率,指令脉冲单位,32位 |
| B+8、B+9 | 当前输出速度,当量单位,32位 |
| B+10 | 信捷兼容脉冲错误码 |
| B+11 | 错误脉冲数据块号 |
I6000~I6399按轴和段映射:第N段事件入口为该轴事件基址加`N-1`。每个实际执行段在结束或
被条件切换时产生一次事件。
事件处理应至少提供轴号、段号和结束原因;正常脉冲完成必须与信捷每段中断的可观察时机一致,
跳转顺序不得改变事件入口与原段号的对应关系。
### 2.10 Modbus 通信
现有 USART1 Modbus RTU 从站作为配置和监控通道。
系统应支持:
- 读取 PLSR 配置和实时状态。
- 写入单段和多段参数。
- 下发启动、停止、暂停、继续、保存、清零和自测命令。
- 校验参数范围和组合合法性。
- 使用影子参数和提交命令,原子更新运行参数。
- 对 32 位和 64 位状态提供一致性快照。
- 非法通信参数不得破坏正在运行的任务。
协议规则如下:
1. 16 位寄存器按 Modbus 大端字节序传输。
2. 32/64 位数据的寄存器顺序必须在通信协议中统一定义。
3. 参数提交应携带命令序号,响应返回相同序号、状态和错误码。
4. 重复收到相同序号时,应返回上次结果,不重复启动运动。
5. 参数提交成功与 START 接受成功应作为两个独立结果。
6. 主站断开不停止已经接受的运动,也不要求记录通信断开状态。
7. 运行中写影子参数不得改变当前任务,允许运行修改的目标频率除外。
8. 协议应包含版本号,新增字段时不得改变既有寄存器语义。
位设备访问必须保持X、M、HM三个独立命名空间,不得通过地址重叠或别名互相覆盖。标准Modbus线圈
FC01/FC05/FC0F映射M位映像,离散输入FC02只读映射X位映像;PLSR的`readBit`按操作数类型读取
对应映像。X物理输入扫描必须由明确的板级GPIO映射写入X映像,HM若要求掉电保持则必须采用经
验证的保持存储策略;仅存在RAM映像不等于这两项已经上板关闭。
PLSR内存地址、数据类型和固定占用规则见
[PLSR地址映射](./PLSR地址映射.md)。地址分配必须避开现有演示、
Backup
SRAM保持区。原Modbus通信历史功能不纳入PLSR版本,原历史寄存器区域释放给
S0/S1动态数据池使用。
### 2.11 参数与累计数据保存
需要保存:
- 脉冲和方向输出点。
- 输出极性及方向建立时间。
- S2 参数套组。
- 默认运行和衔接模式。
- 累计脉冲数。
- 当前逻辑位置及有效标志。
保存规则如下:
1. 固定配置参数使用内部 Flash 保存。
2. 动态参数、累计位置和第0套动态S2参数使用有VBAT维持的 Backup SRAM
保存。
3. 不得每个脉冲写 Flash。
4. 正常完成、正常停止、清零和设置位置后,应保存一致累计值。
5. SAVE_CONFIG 返回成功后,重新上电必须完整恢复固定配置。
6. 重新上电不得自动继续未完成运动。
7. 异常掉电或异常复位后可恢复最近检查点供诊断,但必须清除
`position_valid`。
8. 重新清零、设置当前位置或完成回零前,禁止绝对定位。
9. 任意掉电瞬间零脉冲误差恢复需要额外硬件,Backup SRAM单独不能保证。
测试报告应记录板卡是否安装 VBAT 以及最终采用的数据恢复等级。 XDM-60T4-E
已确认安装有效 VBAT,Backup SRAM 可用于保持动态检查点;
当前逻辑位置必须具有独立的 `position_valid` 标志。
#### 2.11.1 信捷等效脉冲公共参数
每个轴必须提供以下与PLSR直接相关的公共参数,字段地址严格采用
[PLSR地址映射](./PLSR地址映射.md)中的信捷原地址,不得采用自定义轴块偏移:
- 脉冲方向逻辑正/负配置。
- 软限位启用、正极限值和负极限值。
- 脉冲单位:脉冲、1 μm、0.01 mm、0.1 mm、1 mm。
- 每转指令脉冲数和每转移动量。
- 信捷兼容输出类型:PULSE/DIR或AB相;CW/CCW通过项目增强配置选择,不改变该固定字段编码。
- 多段脉冲发送方式:完成方式或后续方式。
- 方向输出点和方向延时时间;默认10 ms,单位ms,可配置。
- 正向和反向齿隙补偿量。
- 正负限位输入点及常开/常闭逻辑。
信捷固定地址中的电气原点、机械回零、Z相、CLR及闭环脉冲字段应保留原地址,不得挪作项目
扩展用途;其中不属于V1.0 PLSR范围的功能无需实现。未使用的保留位必须按0写入并在读取时忽略。
工程单位必须在内核换算层支持,不再限定为上位机换算。换算应保存小数余数,
避免多段或重复运动的累计舍入漂移。
软限位按当前逻辑位置判断。到达对应软限位时执行减速停止,禁止继续向越界方向
启动,但允许反向离开。软限位和硬限位可同时启用。
发生运动方向反转时,应按配置加入对应方向的齿隙补偿脉冲,并使用补偿加减速时间;
补偿段与正式运动段应分开执行。齿隙补偿脉冲不得计入本段指令脉冲、逻辑位置或信捷兼容HSD
累计值,但应计入项目增强的物理输出诊断计数,以便核对实际输出边沿。
### 2.12 自测与诊断
内部自测至少包括:
- 输出点冲突检查。
- 定时器时钟和分频结果检查。
- 频率范围检查。
- 路径段数、等待、跳转和循环检查。
- 累计计数溢出检查。
- 状态机非法转换检查。
外部诊断和测试至少包括:
- 使用示波器或逻辑分析仪测量输出频率。
- 统计实际脉冲边沿数量。
- 检查占空比和方向建立时间。
- 检查梯形、S 形和正弦曲线。
- 进行连续运行和频繁启停压力测试。
| 诊断项 | 要求 |
| --- | --- |
| 软件累计脉冲 | 记录实际发送数量 |
| 硬件边沿计数 | 记录输出实际边沿 |
| 差值诊断 | 判断输出异常 |
| 频率记录 | 保存当前和最高频率 |
| 段事件记录 | 记录结束原因 |
用于定位:
- 参数错误;
- 状态机错误;
- 定时器异常;
- 输出资源异常。
### 2.13 安全与异常处理
- 上电、复位、HardFault 和看门狗复位时,脉冲输出必须保持无效。
- 立即停止命令应具有高于普通运行命令的处理优先级。
- 不可恢复错误发生后,应禁止装载新脉冲并锁存 ERROR 状态。
- 清除错误不得自动重新启动未完成运动。
- 配置限位输入后,限位有效时应禁止向该方向启动,但允许反向离开限位。
- 运动中限位触发默认执行减速停止。
- V1.0急停没有外部硬件切断回路;急停输入由软件立即禁止脉冲输出并锁存状态。
- 软件急停不具备独立硬件安全回路的故障容错能力,不得宣称为安全认证急停。
至少应定义以下错误:
```text
参数未初始化
输出点非法或冲突
默认速度为零或硬件频率超限
脉冲数或段数非法
段参数冲突
跳转段号非法
非预期闭环路径或运行保护超限
绝对位置未建立
模块忙
非法状态命令
定时器初始化失败
Flash数据无效或保存失败
等待输入超时
立即停止
累计计数溢出
内部计数异常
```
运动控制事件优先级:
急停
>
硬限位
>
STOP_IMMEDIATE
>
STOP_DECEL
>
PAUSE
>
正常运行
要求:
- 高优先级事件不能被低优先级命令覆盖;
- 错误清除后禁止自动恢复运动。
### 2.13.1 错误码补充
固定实时状态中的信捷兼容错误码应至少实现下列与PLSR有关的取值:
| 兼容码 | 说明 | 适用处理 |
| ---: | --- | --- |
| 1 | 脉冲数据段配置错误 | 拒绝启动,错误数据块号写入对应SD的`B+11` |
| 2 | 当量模式下每转脉冲数或每转移动量为0 | 拒绝启动 |
| 3 | S2系统参数块号错误 | 拒绝启动 |
| 4 | 脉冲参数块号或范围超过限制 | 拒绝启动 |
| 5 | 正限位触发后停止 | 按减速停止并禁止继续正向启动 |
| 6 | 负限位触发后停止 | 按减速停止并禁止继续反向启动 |
| 15 | FOLLOW性能参数不在1~100 | 拒绝启动 |
| 16 | FOLLOW前馈补偿不在0~100 | 拒绝启动 |
| 26 | 控制块或高速输出资源分配失败 | 拒绝启动或进入ERROR |
项目增强诊断使用符号错误码,不得占用或改变上述固定兼容码:
| 错误码 | 说明 |
| --- | --- |
| DEFAULT_SPEED_INVALID | 默认速度非法 |
| SEGMENT_OVERFLOW | 路径段数超过100 |
| OUTPUT_MODE_INVALID | 输出模式非法 |
| RESOURCE_CONFLICT | 输出资源冲突 |
| PARAMETER_LOCKED | 运行参数禁止修改 |
| DONE_STATE_ERROR | 完成状态异常 |
| SPEED_CLAMPED | 目标速度被S2最高速度限幅;属于告警,不单独终止任务 |
| POSITION_INVALID | 绝对定位前逻辑位置无效 |
| COUNTER_OVERFLOW | 内部或兼容累计计数溢出 |
## 3 性能需求
### 3.1 脉冲性能
| 编号 | 性能项 | 验收指标 |
| --- | --- | --- |
| PR-01 | 保证频率范围 | 1 Hz~100 kHz |
| PR-02 | 固定频率误差 | 使用可实现的最佳定时器分频值,记录目标值、实际值及误差,不设统一百分比限值 |
| PR-03 | 正常完成脉冲误差 | 0 个脉冲 |
| PR-04 | 占空比 | 目标 50%,满足驱动器最小高低电平时间 |
| PR-05 | 方向建立时间 | 不小于配置值 |
| PR-06 | 运行调频开始生效 | 不超过当前 S2 配置的 1 ms 或 0.1 ms |
| PR-07 | 段边界 | 不得产生非配置停顿、窄脉冲或重复边沿 |
### 3.2 实时性能
以下是 V1.0 初始预算,首次 100 kHz 压力测试后可根据实测调整,但必须经过
设计评审并记录原因:
| 编号 | 性能项 | 初始指标 |
| --- | --- | --- |
| PR-RT-01 | 控制更新周期 | S2 可配置为 1 ms 或 0.1 ms |
| PR-RT-02 | 脉冲产生 | 由硬件定时器维持,不受 OS 调度影响 |
| PR-RT-03 | 脉冲级中断最坏执行时间 | 实测并记录,不得导致脉冲数量错误 |
| PR-RT-04 | PLSR CPU 占用率 | 四轴 100 kHz 并发时以实测记录并验证不影响系统实时性 |
| PR-RT-05 | PLSR 静态 RAM | 实测并记录,不设固定8 KiB限制 |
| PR-RT-07 | 共享数据 | 使用原子快照或临界区保护 |
| PR-RT-08 | 通信压力 | Modbus/USB 压力下脉冲计数误差仍为 0 |
### 3.3 可靠性
| 编号 | 性能项 | 验收指标 |
| --- | --- | --- |
| PR-REL-01 | 连续运行 | 测试时长由测试方案确定,运行期间不得出现计数错误或任务失联 |
| PR-REL-02 | 频繁启停 | 不产生额外脉冲和非法状态转换 |
| PR-REL-03 | 异常参数 | 拒绝执行且不影响当前合法任务 |
| PR-REL-04 | 重新上电 | 输出安全,不自动恢复运动 |
| PR-REL-05 | 参数恢复 | 已成功保存的固定配置和Backup SRAM动态数据能够按定义恢复 |
| PR-REL-06 | 通信并发 | 连续读写状态时运动结果保持准确 |
### 3.4 工程单位与换算边界
- PLSR内核同时支持脉冲模式和当量模式,当量单位为1 μm、0.01 mm、0.1
mm或1 mm。
- 当量模式根据每转指令脉冲数和每转移动量换算频率与脉冲数量。
- 换算层必须定义舍入方式并保存累计余数,连续多段运动不得持续产生单向舍入漂移。
- 上位机仍可提前换算,但不得成为使用工程单位的唯一途径。
- PLSR 累计脉冲表示指令位置,不等同于电机实际反馈位置。
## 4 其它需求
### 4.1 验收要求
| 编号 | 验收项 | 合格标准 |
| --- | --- | --- |
| AT-01 | 固定频率 | 1 Hz~100 kHz 使用最佳定时器分频值,并记录实际误差 |
| AT-02 | 固定脉冲数 | 正常完成误差为 0 个 |
| AT-03 | 正反转 | 方向电平和脉冲数量正确 |
| AT-04 | 相对定位 | 连续相对运动位置累计正确 |
| AT-05 | 绝对定位 | 从不同当前位置到同一目标位置结果正确 |
| AT-06 | 加减速 | 曲线、起止频率和脉冲总数正确 |
| AT-07 | 多段路径 | 段顺序、频率、数量和等待条件正确 |
| AT-08 | 完成方式 | 段结束后才向下一段频率变化 |
| AT-09 | 后续方式 | 段结束时已经达到下一段目标频率 |
| AT-10 | 动态调频 | 在 S2 配置的 1 ms 或 0.1 ms 内开始生效且无异常脉冲 |
| AT-11 | 停止控制 | 减速停止和立即停止符合定义 |
| AT-12 | 重复命令 | 相同命令序号不产生重复运动 |
| AT-13 | 掉电恢复 | 不自动运动,位置有效性符合恢复等级 |
| AT-14 | 上电安全 | 上电和复位期间无意外脉冲 |
| AT-15 | S0/S1布局 | 使用动态首地址验证完整相对布局、保留区、六种等待条件和四种跳转来源 |
| AT-16 | 最高速度限幅 | 目标速度高于S2最高速度时按最高速度运行并产生SPEED_CLAMPED告警 |
| AT-17 | 四轴独立运行 | 四轴同时以100 kHz运行时无丢脉冲、重复脉冲和异常周期,且状态和累计数据互不串扰 |
| AT-18 | AB 相输出 | 两个AB轴可独立运行;一个完整正交周期计1个指令脉冲,周期频率、相位方向和数量正确 |
| AT-19 | S0等待与跳转 | 六种等待条件、动态参数来源、提前/延后触发和0/指定/自身跳转语义与信捷一致 |
| AT-20 | 公共参数 | 单位换算、软限位、方向延时和齿隙补偿通过功能测试;FOLLOW共用字段通过存储及范围校验测试,不作为PLSR运算项 |
| AT-21 | 零值及边界 | INT32最小值、频率0、脉冲数0跳段和绝对零位移行为符合本规格 |
| AT-22 | 段事件和监控 | 每段事件、运行标志、当前段计数和累计计数可被稳定读取 |
| AT-23 | 固定软元件 | HSD、SM、SD和I6000~I6399的地址、位宽、轴映射及可观察语义与信捷一致 |
新增测试:
- FR-TEST-01四轴100 kHz并发测试;
- PLSR启动上升沿测试;
- BUSY/DONE状态测试;
- DONE保持及清零测试;
- PULSE/DIR测试;
- AB相测试;
- CW/CCW测试;
- PAUSE/RESUME测试;
- STOP优先级测试;
- 参数运行修改测试;
- 输出诊断一致性测试。
正式测试应使用开发板、逻辑分析仪和PC Modbus测试工具,并记录测试固件、
参数、接线、测量设备、原始波形和测试结论。
### 4.2 交付物
- PLSR 源代码和头文件。
- 硬件定时器、GPIO 和板型适配代码。
- Modbus 寄存器及命令协议。
- Flash 参数保存模块。
- 需求规格书。
- 软件设计说明书。
- 单元测试和上板测试方案。
- 测试记录及测试报告。
- 上位机调试或测试工具。
- 示例程序和使用说明。
### 4.3 后续版本或加分项
- 完整机械回零。
### 4.4 不在当前范围内
- 编码器闭环控制和位置误差修正。
- 多轴直线或圆弧插补。
- 电子凸轮和龙门同步。
- 完整复制信捷 PLSR、PLSF、DRVI、DRVA、ZRN、STOP 和 GOON 语法。
- XDPPro参数配置界面兼容。
### 4.5 实施验证事项
以下事项不改变V1.0需求范围,属于设计、实现和上板验收阶段需要验证的内容:
1. Q0~Q3 定时器输出映射的上板波形确认。
2. 输出电路的最高可靠频率、有效电平和最小脉宽。
3. 两个 AB 轴的定时器/DMA同步方案及上板波形验证。
4. 四轴100 kHz并发及0.1 ms控制刷新时的CPU和中断资源实测结果。
5. Backup SRAM检查点的具体更新时机和诊断数据允许损失量。
6. 段脉冲数为0时无脉冲输出、跳过当前段并正确进入下一段或完成任务。
### 4.6 当前实现与验证快照
以下快照用于区分“需求已纳入”“代码已实现”和“已完成板测”,不改变第4.1节验收准则,也不能
单独作为“严格功能对标全部完成”的结论:
| 项目 | 截至2026-08-10的状态 | 关闭边界 |
| --- | --- | --- |
| P14四轴PULSE/DIR | 已板测通过 | Q0~Q3均为100kHz、各严格200000个物理上升沿,无窄脉冲、启动毛刺和停止后残余 |
| P15软限位矩阵 | 已板测通过 | 四轴正负方向、500/2000Hz均在目标软限位±1脉冲内停止 |
| P16实时性能 | 已板测通过 | `PlsrProcess`自身最大53748 cycles(319.929us),预算小于168000 cycles;响应最大85655 cycles |
| X/M/HM位数据源 | 数据结构和通信代码已实现 | 已分离三个10000位映像,M接FC01/05/0F、X接FC02、PLSR `readBit`已接入;实际X GPIO扫描映射及HM掉电保持尚未关闭 |
| 双AB 100kHz | `independent`与`simultaneous`真机通过,仅`dynamic`待测 | 独立停止严格100000/200000沿、等长并发四路严格200000沿,首沿2.50us±0.05us、正反相序、末周期00、停止全低均通过;D1468分别382/392 cycles。仍须关闭50kHz调频、00边界PAUSE及RESUME |
| Modbus/USB长稳 | 代码和自动脚本完成 | USB优先级已降为4,0x47运行诊断、D1516~D1537设备端USB统计和P18/K4无软限位台架夹具已提供;30分钟及更长并发板测尚未关闭 |
| HSD/SFD持久化 | A/B、CRC、诊断窗口及分阶段板测工具完成 | 检查点按四轴有效且无32位发布溢出的保守AND写入;VBAT断主电、Flash擦写/坏CRC、异常复位和反复保存的正式板测尚未关闭;破坏性诊断默认禁用 |
## 5 参考资料
1. [PLSR 嵌入式方向任务要求](./任务要求.png)
2. [实现 PLSR 指令](./实现PLSR指令.pdf)
3. [信捷 XD/XL 系列 PLC 定位控制手册](./信捷XD_XL系列PLC定位控制手册_PD02_20260510_V1.3.pdf)
4. [C 语言规范](../c语言规范.pdf)
5. 当前工程 `Core`、`Modbus`、`Middlewares`、`EWARM` 和 `HostComputer`
目录
6. [PLSR地址映射](./PLSR地址映射.md)
7. [PLSR信捷对标追踪矩阵](./PLSR信捷对标追踪矩阵.md)