| @@ -0,0 +1,483 @@ | |||||
| # PLSR 项目需求规格统计 | |||||
| > 文档状态:V0.1(需求基线草案) | |||||
| > 整理日期:2026-08-03 | |||||
| > 目标平台:XDM-60T4-E / XDM-60T10-E | |||||
| > 当前首要目标:在 STM32F407 + uC/OS-II 平台实现单轴 PLSR 定位脉冲模块 | |||||
| ## 1. 需求来源 | |||||
| 本规格由以下材料及当前项目讨论整理而成: | |||||
| 1. [任务要求.png](./任务要求.png) | |||||
| 2. [实现PLSR指令.pdf](./实现PLSR指令.pdf) | |||||
| 3. [信捷XD_XL系列PLC定位控制手册](./信捷XD_XL系列PLC定位控制手册_PD02_20260510_V1.3.pdf) | |||||
| 4. 当前工程代码,包括 uC/OS-II、Modbus RTU、Backup SRAM 和上位机测试程序 | |||||
| 信捷手册用于功能对标,不要求逐项复制信捷的寄存器地址、软元件和编程软件界面。 | |||||
| 本项目的目标是实现功能相当的自有 PLSR 模块。 | |||||
| ## 2. 范围结论 | |||||
| ### 2.1 V1.0 必须交付 | |||||
| - 基于 uC/OS-II 运行。 | |||||
| - 单轴 PULSE/DIR 脉冲输出。 | |||||
| - 指定脉冲数量和输出频率。 | |||||
| - 正向、反向运动。 | |||||
| - 相对定位和绝对定位。 | |||||
| - 前台完成模式和后台运行模式。 | |||||
| - 运行中修改目标频率。 | |||||
| - 多段脉冲输出。 | |||||
| - 多种加减速曲线。 | |||||
| - 累计脉冲数和逻辑位置记录。 | |||||
| - 上位机清零累计数据。 | |||||
| - 参数配置、保存及上电恢复。 | |||||
| - Modbus RTU 控制和状态监控。 | |||||
| - 基本自测、错误诊断和完整技术文档。 | |||||
| ### 2.2 建议作为 V1.0 完整版交付 | |||||
| - 最多 100 段路径。 | |||||
| - 梯形、S 形、正弦三种加减速曲线。 | |||||
| - 段间延时等待。 | |||||
| - 段间输入信号等待。 | |||||
| - 指定下一段和有限循环。 | |||||
| - 暂停、继续、减速停止和立即停止。 | |||||
| - 参数 CRC、双备份和恢复默认值。 | |||||
| - 逻辑分析仪脉冲数量、频率和曲线验证。 | |||||
| ### 2.3 V1.1 或加分项 | |||||
| - AB 相正交脉冲输出。 | |||||
| - 外部输入回读脉冲的硬件自诊断。 | |||||
| - 伺服到位、报警及编码器位置监控。 | |||||
| - 多轴扩展。 | |||||
| - 更高脉冲频率。 | |||||
| ### 2.4 当前不在范围内 | |||||
| - 闭环位置控制和编码器误差补偿。 | |||||
| - 多轴直线、圆弧插补。 | |||||
| - 电子凸轮和龙门同步。 | |||||
| - 完整机械回零 ZRN 指令。 | |||||
| - 完整复刻信捷 DRVI、DRVA、PLSF、STOP 和 GOON 指令语法。 | |||||
| - 兼容信捷 HD、HSD、SFD、SM 等软元件地址。 | |||||
| - 复制 XDPPro 的 PLSR 参数配置界面。 | |||||
| - 齿轮间隙补偿和 FOLLOW 前馈控制。 | |||||
| ## 3. 硬件和系统要求 | |||||
| | 编号 | 需求 | 优先级 | 验收方式 | | |||||
| |---|---|---|---| | |||||
| | SYS-01 | 使用 STM32F407 和 12 MHz 外部晶振 | 必须 | 检查工程和系统时钟 | | |||||
| | SYS-02 | CPU 主频为 168 MHz | 必须 | 读取时钟配置 | | |||||
| | SYS-03 | 运行于 uC/OS-II | 必须 | 检查任务和调度运行 | | |||||
| | SYS-04 | 首版适配 XDM-60T4-E(STM32F407IG) | 必须 | T4-E 开发板测试 | | |||||
| | SYS-05 | 架构兼容 XDM-60T10-E(STM32F407ZG) | 建议 | 编译配置和接口评审 | | |||||
| | SYS-06 | 使用硬件定时器产生脉冲 | 必须 | 检查代码及示波器波形 | | |||||
| | SYS-07 | 脉冲输出不依赖 OS Tick 翻转 GPIO | 必须 | 关闭任务调度干扰测试 | | |||||
| | SYS-08 | 上电及复位过程中输出保持无效 | 必须 | 上电、复位波形测试 | | |||||
| ### 3.1 已知板级点位 | |||||
| XDM-60T4-E: | |||||
| | PLC 点 | MCU 引脚 | | |||||
| |---|---| | |||||
| | Q0 | PF6 | | |||||
| | Q1 | PF8 | | |||||
| | Q2 | PF7 | | |||||
| | Q3 | PF9 | | |||||
| | USART1_TX | PA9 | | |||||
| | USART1_RX | PA10 | | |||||
| XDM-60T10-E: | |||||
| | PLC 点 | MCU 引脚 | | |||||
| |---|---| | |||||
| | Q0 | PF6 | | |||||
| | Q1 | PF8 | | |||||
| | Q2 | PF7 | | |||||
| | Q3 | PF9 | | |||||
| | USART1_TX | PA9 | | |||||
| | USART1_RX | PA10 | | |||||
| Q 点与定时器通道的最终映射仍需结合 STM32 数据手册、板卡原理图和实测确认。 | |||||
| ## 4. 脉冲输出要求 | |||||
| | 编号 | 需求 | 建议指标 | 优先级 | | |||||
| |---|---|---|---| | |||||
| | PUL-01 | 输出形式 | PULSE/DIR | 必须 | | |||||
| | PUL-02 | 脉冲有效边沿 | 默认上升沿计数 | 必须 | | |||||
| | PUL-03 | 占空比 | 50% | 必须 | | |||||
| | PUL-04 | 保证频率范围 | 1~100,000 Hz | 必须 | | |||||
| | PUL-05 | 单段脉冲数 | 1~2,147,483,647 | 必须 | | |||||
| | PUL-06 | 正反方向 | 独立方向输出电平 | 必须 | | |||||
| | PUL-07 | 方向极性 | 参数可配置 | 必须 | | |||||
| | PUL-08 | 方向建立时间 | 默认 10 us,可配置 | 必须 | | |||||
| | PUL-09 | 正常完成脉冲误差 | 0 个 | 必须 | | |||||
| | PUL-10 | 频率误差 | 不超过 ±0.1% | 必须 | | |||||
| | PUL-11 | 运行调频响应 | 不超过 1 ms | 必须 | | |||||
| | PUL-12 | 频率修改 | 不改变剩余脉冲数量 | 必须 | | |||||
| 说明:100 kHz 是 V1.0 建议保证值。是否开放更高频率由 PLC 输出电路、伺服输入规格和上板测试决定。 | |||||
| ## 5. 定位模式 | |||||
| ### 5.1 相对定位 | |||||
| 相对定位的输入值表示相对当前位置需要移动的脉冲数: | |||||
| ```text | |||||
| 目标位置 = 当前逻辑位置 + 相对位移 | |||||
| ``` | |||||
| - 正数表示正向运动。 | |||||
| - 负数表示反向运动。 | |||||
| - 正常完成后更新逻辑位置。 | |||||
| - 中途停止时按实际已发脉冲更新逻辑位置。 | |||||
| ### 5.2 绝对定位 | |||||
| 绝对定位的输入值表示目标逻辑坐标: | |||||
| ```text | |||||
| 实际输出位移 = 目标绝对位置 - 当前逻辑位置 | |||||
| ``` | |||||
| - 当前位置必须有效。 | |||||
| - 位置未建立时禁止绝对定位,并返回错误。 | |||||
| - 支持设置当前位置和当前位置清零。 | |||||
| - 绝对定位是 PLC 的逻辑坐标功能,不代表伺服具有绝对值编码器。 | |||||
| ## 6. S0、S1、S2、D 功能模型 | |||||
| 项目采用与信捷 PLSR 相似的逻辑模型,但不要求使用相同的物理寄存器地址。 | |||||
| | 参数 | 本项目含义 | 主要内容 | | |||||
| |---|---|---| | |||||
| | S0 | 路径数据块 | 总段数、每段频率、脉冲数、等待和跳转 | | |||||
| | S1 | 用户执行参数 | 相对/绝对模式、起始段号、执行方式 | | |||||
| | S2 | 运动参数配方 | 加减速斜率、曲线、最高速度、起止速度 | | |||||
| | D | 输出轴/脉冲点 | 脉冲输出点及其对应的轴配置 | | |||||
| 建议的软件接口关系: | |||||
| ```text | |||||
| PLSR_Start(S0路径, S1执行参数, S2参数套组, D输出轴) | |||||
| ``` | |||||
| ### 6.1 S0 路径数据 | |||||
| 每段至少包含: | |||||
| ```text | |||||
| 有符号脉冲数量 | |||||
| 目标频率 | |||||
| 等待类型 | |||||
| 等待参数 | |||||
| 下一段编号 | |||||
| ``` | |||||
| ### 6.2 S1 用户参数 | |||||
| 至少包含: | |||||
| ```text | |||||
| 相对/绝对定位模式 | |||||
| 起始执行段号 | |||||
| 前台/后台执行方式 | |||||
| 命令超时时间 | |||||
| ``` | |||||
| ### 6.3 S2 运动参数套组 | |||||
| 每个输出轴建议提供 5 套参数(0~4): | |||||
| - 第 0 套用于上位机运行时调整。 | |||||
| - 第 1~4 套用于保存预设运动配方。 | |||||
| 每套至少包含: | |||||
| ```text | |||||
| 默认频率 | |||||
| 最高频率 | |||||
| 起始频率 | |||||
| 结束频率 | |||||
| 默认加速时间 | |||||
| 默认减速时间 | |||||
| 加减速曲线 | |||||
| 频率刷新周期 | |||||
| ``` | |||||
| ### 6.4 D 输出配置 | |||||
| 每个轴至少包含: | |||||
| ```text | |||||
| 脉冲输出点 | |||||
| 方向输出点 | |||||
| 脉冲有效极性 | |||||
| 方向有效极性 | |||||
| 方向建立时间 | |||||
| ``` | |||||
| ## 7. 多段路径要求 | |||||
| | 编号 | 需求 | 优先级 | | |||||
| |---|---|---| | |||||
| | SEG-01 | 支持 1~100 段 | 建议 V1.0 | | |||||
| | SEG-02 | 每段独立设置有符号脉冲数 | 必须 | | |||||
| | SEG-03 | 每段独立设置目标频率 | 必须 | | |||||
| | SEG-04 | 同方向连续段允许不停顿变频 | 必须 | | |||||
| | SEG-05 | 反方向段切换前先减速停止 | 必须 | | |||||
| | SEG-06 | 支持脉冲完成后执行下一段 | 必须 | | |||||
| | SEG-07 | 支持等待指定时间 | 建议 V1.0 | | |||||
| | SEG-08 | 支持等待指定输入点 | 建议 V1.0 | | |||||
| | SEG-09 | 支持指定下一段 | 建议 V1.0 | | |||||
| | SEG-10 | 支持有限循环并检测异常死循环 | 建议 V1.0 | | |||||
| | SEG-11 | 支持从指定段号开始 | 建议 V1.0 | | |||||
| 多段路径执行期间,除当前段目标频率外,其余结构参数修改不应影响已经启动的任务。新参数在下一次启动时生效。 | |||||
| ## 8. 加减速要求 | |||||
| | 编号 | 曲线 | 优先级 | 说明 | | |||||
| |---|---|---|---| | |||||
| | ACC-01 | 无加减速 | 必须 | 调试和低速场景使用 | | |||||
| | ACC-02 | 直线/梯形 | 必须 | 首个实现和基础验收曲线 | | |||||
| | ACC-03 | S 形 | 必须 | 降低机械冲击 | | |||||
| | ACC-04 | 正弦曲线 | 建议 V1.0 | 对标信捷增强能力 | | |||||
| 其他规则: | |||||
| - 起始频率和结束频率不得超过最高频率。 | |||||
| - 目标频率超过最高频率时拒绝启动,不进行静默截断。 | |||||
| - 加减速距离不足时自动生成三角速度曲线。 | |||||
| - 加减速过程中必须保证最终脉冲总数准确。 | |||||
| - 同方向连续段根据完成/后续模式决定在段边界达到本段速度还是下一段速度。 | |||||
| - 运行中修改目标频率时,按照当前曲线平滑过渡。 | |||||
| ## 9. 运行控制 | |||||
| | 编号 | 命令 | 行为 | 优先级 | | |||||
| |---|---|---|---| | |||||
| | CTL-01 | START | 校验参数并启动任务 | 必须 | | |||||
| | CTL-02 | STOP_DECEL | 按减速曲线停止 | 必须 | | |||||
| | CTL-03 | STOP_IMMEDIATE | 完成当前有效脉冲后立即关闭输出 | 必须 | | |||||
| | CTL-04 | PAUSE | 减速暂停并保留剩余路径 | 建议 V1.0 | | |||||
| | CTL-05 | RESUME | 从暂停状态继续 | 建议 V1.0 | | |||||
| | CTL-06 | SET_POSITION | 设置逻辑当前位置 | 必须 | | |||||
| | CTL-07 | CLEAR_POSITION | 逻辑当前位置清零 | 必须 | | |||||
| | CTL-08 | CLEAR_TOTAL | 累计脉冲数清零 | 必须 | | |||||
| | CTL-09 | SAVE_CONFIG | 保存配置参数 | 必须 | | |||||
| | CTL-10 | LOAD_CONFIG | 重新加载保存参数 | 必须 | | |||||
| | CTL-11 | RESET_ERROR | 清除可恢复错误 | 必须 | | |||||
| | CTL-12 | SELF_TEST | 执行内部自测 | 必须 | | |||||
| ### 9.1 前台完成模式 | |||||
| - 调用任务等待运动完成、停止、超时或错误。 | |||||
| - 使用 uC/OS-II 信号量或事件通知。 | |||||
| - 禁止在中断上下文中等待。 | |||||
| ### 9.2 后台运行模式 | |||||
| - 参数校验且成功启动后立即返回。 | |||||
| - 调用方通过状态接口读取结果。 | |||||
| - 运行中允许调频、暂停、继续和停止。 | |||||
| ## 10. 状态机和状态数据 | |||||
| 状态至少包括: | |||||
| ```text | |||||
| UNINITIALIZED 未初始化 | |||||
| IDLE 空闲 | |||||
| ACCEL 加速 | |||||
| RUN 运行 | |||||
| DECEL 减速 | |||||
| WAIT 段间等待 | |||||
| PAUSED 暂停 | |||||
| COMPLETED 完成 | |||||
| STOPPED 停止 | |||||
| ERROR 错误 | |||||
| ``` | |||||
| 上位机至少可以读取: | |||||
| - 当前状态和错误码。 | |||||
| - 当前段号和总段数。 | |||||
| - 当前方向。 | |||||
| - 当前设定频率和目标频率。 | |||||
| - 本段已发、剩余脉冲数。 | |||||
| - 本次任务已发、剩余脉冲数。 | |||||
| - 当前逻辑位置。 | |||||
| - 正向、反向和总累计脉冲数。 | |||||
| - 最近一次完成或停止原因。 | |||||
| - 当前使用的 S2 参数套组。 | |||||
| - 参数版本、保存序号和 CRC 状态。 | |||||
| ## 11. Modbus 要求 | |||||
| 现有 USART1 Modbus RTU 从站作为控制和监控通道。 | |||||
| | 编号 | 需求 | 优先级 | | |||||
| |---|---|---| | |||||
| | COM-01 | 读取 PLSR 配置和实时状态 | 必须 | | |||||
| | COM-02 | 写入单段和多段参数 | 必须 | | |||||
| | COM-03 | 下发启动、停止和清零命令 | 必须 | | |||||
| | COM-04 | 参数范围及组合合法性检查 | 必须 | | |||||
| | COM-05 | 参数写入与运动启动采用提交机制 | 必须 | | |||||
| | COM-06 | 32/64 位状态采用一致性快照 | 必须 | | |||||
| | COM-07 | 非法通信参数不得破坏运行任务 | 必须 | | |||||
| | COM-08 | 保存通信和 PLSR 诊断统计 | 建议 V1.0 | | |||||
| 建议采用“影子参数 + 提交命令”机制: | |||||
| ```text | |||||
| 上位机写影子参数 | |||||
| ↓ | |||||
| 发送参数提交命令 | |||||
| ↓ | |||||
| 完整校验 | |||||
| ↓ | |||||
| 原子复制到运行参数 | |||||
| ↓ | |||||
| 允许启动 | |||||
| ``` | |||||
| 具体 Modbus 寄存器地址在《PLSR Modbus 通信协议》中单独定义,避免与现有通信历史区冲突。 | |||||
| ## 12. 掉电保存要求 | |||||
| 需要保存: | |||||
| - 脉冲和方向输出点。 | |||||
| - 输出极性和方向建立时间。 | |||||
| - S2 参数套组。 | |||||
| - 默认运行模式。 | |||||
| - 累计脉冲数。 | |||||
| - 逻辑当前位置及有效标志。 | |||||
| - 数据版本、序号和 CRC。 | |||||
| 保存策略: | |||||
| - 配置参数使用内部 Flash 双备份。 | |||||
| - 新副本校验成功后再替代旧副本。 | |||||
| - 避免每个脉冲或每毫秒写 Flash。 | |||||
| - 累计位置在任务完成、清零、设置位置及固定周期检查点保存。 | |||||
| - Backup SRAM 可用于提高异常复位后的恢复精度。 | |||||
| - 如果板卡没有 VBAT、FRAM 或掉电检测电路,不能承诺任意断电瞬间零脉冲误差恢复。 | |||||
| - 复位或重新上电后不得自动恢复电机运动。 | |||||
| ## 13. 自测与诊断 | |||||
| ### 13.1 内部自测 | |||||
| - 参数结构版本和 CRC 检查。 | |||||
| - 输出点冲突检查。 | |||||
| - 定时器时钟和分频计算检查。 | |||||
| - 频率范围检查。 | |||||
| - 路径段数、跳转和循环检查。 | |||||
| - 64 位累计计数溢出检查。 | |||||
| - 状态机非法转换检查。 | |||||
| ### 13.2 外部测试 | |||||
| - 使用示波器或逻辑分析仪测量输出频率。 | |||||
| - 统计实际脉冲边沿数量。 | |||||
| - 检查占空比、方向建立时间及方向切换。 | |||||
| - 检查梯形、S 形和正弦频率曲线。 | |||||
| - 连续运行和频繁启停压力测试。 | |||||
| - 可选使用输入点回接输出脉冲进行硬件自诊断。 | |||||
| ## 14. 错误码要求 | |||||
| 至少包含: | |||||
| ```text | |||||
| 参数未初始化 | |||||
| 输出点非法 | |||||
| 脉冲点与方向点冲突 | |||||
| 频率为零或超限 | |||||
| 脉冲数非法 | |||||
| 段数非法 | |||||
| 段参数非法 | |||||
| 跳转段号非法 | |||||
| 路径循环超限 | |||||
| 绝对位置未建立 | |||||
| 模块忙 | |||||
| 非法状态命令 | |||||
| 定时器初始化失败 | |||||
| Flash数据无效 | |||||
| Flash保存失败 | |||||
| 等待输入超时 | |||||
| 立即停止 | |||||
| 内部计数异常 | |||||
| ``` | |||||
| 发生严重错误时,模块必须停止装载新脉冲,并使输出回到安全无效电平。 | |||||
| ## 15. 验收标准 | |||||
| | 编号 | 验收项 | 合格标准 | | |||||
| |---|---|---| | |||||
| | TST-01 | 固定频率 | 1 Hz~100 kHz 内误差不超过 ±0.1% | | |||||
| | TST-02 | 固定脉冲数 | 正常完成误差为 0 个脉冲 | | |||||
| | TST-03 | 正反转 | 方向电平及脉冲数量正确 | | |||||
| | TST-04 | 相对定位 | 连续多次相对运动位置累计正确 | | |||||
| | TST-05 | 绝对定位 | 从不同当前位置到同一目标位置结果正确 | | |||||
| | TST-06 | 加减速 | 曲线、起止频率和总脉冲数正确 | | |||||
| | TST-07 | 多段路径 | 段顺序、频率、数量和等待条件正确 | | |||||
| | TST-08 | 动态调频 | 命令后 1 ms 内开始生效且无异常脉冲 | | |||||
| | TST-09 | 停止控制 | 减速停止和立即停止符合定义 | | |||||
| | TST-10 | 掉电参数 | 重新上电后配置校验和恢复正确 | | |||||
| | TST-11 | 异常参数 | 拒绝启动并返回明确错误码 | | |||||
| | TST-12 | 连续运行 | 24 小时无异常停止、计数错误或任务失联 | | |||||
| | TST-13 | Modbus并发 | 通信压力下脉冲输出数量和频率仍正确 | | |||||
| | TST-14 | 上电安全 | 上电和复位期间无意外脉冲 | | |||||
| ## 16. 交付物 | |||||
| - PLSR 软件源代码和头文件。 | |||||
| - 硬件定时器、GPIO 和板型适配代码。 | |||||
| - Modbus 寄存器及命令协议。 | |||||
| - Flash 参数保存模块。 | |||||
| - PLSR 需求规格书。 | |||||
| - PLSR 软件设计说明书。 | |||||
| - 单元测试和上板测试方案。 | |||||
| - 测试记录及测试报告。 | |||||
| - 上位机调试或测试工具。 | |||||
| - 示例程序和使用说明。 | |||||
| ## 17. 待确认事项 | |||||
| 以下项目在开始硬件实现前必须确认: | |||||
| 1. Q0~Q3 与 STM32 定时器通道的准确映射。 | |||||
| 2. 输出电路的最高可靠频率和有效电平。 | |||||
| 3. 伺服驱动器采用 PULSE/DIR 还是 CW/CCW 接口。 | |||||
| 4. 驱动器的有效边沿、最小脉宽和方向建立时间。 | |||||
| 5. 首版只验收 XDM-60T4-E,还是同时验收 T10-E。 | |||||
| 6. 100 段、外部等待和跳转是否全部列为 V1.0 强制功能。 | |||||
| 7. 掉电位置恢复允许的误差和板卡是否具有 VBAT。 | |||||
| 8. 是否需要将实际距离单位(mm、um)换算放入 PLSR 模块。 | |||||
| 9. 是否需要伺服报警、到位及正负限位输入。 | |||||
| 10. 频率上限最终按 100 kHz 还是更高指标验收。 | |||||
| ## 18. 建议实施顺序 | |||||
| 1. 确认定时器和 Q 点映射。 | |||||
| 2. 完成单段、固定频率和精确脉冲计数。 | |||||
| 3. 完成方向、相对定位和绝对定位。 | |||||
| 4. 完成梯形加减速及运行调频。 | |||||
| 5. 完成前台/后台控制和状态机。 | |||||
| 6. 接入 Modbus 参数提交与状态快照。 | |||||
| 7. 完成多段、等待和跳转。 | |||||
| 8. 完成 S 形及正弦曲线。 | |||||
| 9. 完成 Flash 保存、自测和诊断。 | |||||
| 10. 开展压力测试并整理交付文档。 | |||||