No puede seleccionar más de 25 temas Los temas deben comenzar con una letra o número, pueden incluir guiones ('-') y pueden tener hasta 35 caracteres de largo.
 
 
 
 
 
 

26 KiB

PLSR 项目测试报告

项目 内容
报告版本 V1.1
状态日期 2026-08-11
代码基线 master / HEAD fdbbe71aeacfe2524271aa4d53792cb5831211dc + 当前未提交工作区
目标平台 STM32F407IG、uC/OS-II、Modbus RTU
开发环境 IAR EWARM 8.3,构建配置 Modbus
通信参数 COM5,9600 bit/s,8E1,从站地址 1
波形采集 16 通道逻辑分析仪;AB 关键用例 100 MS/s;CH0~CH3 对应 Q0~Q3
测试依据 PLSR 需求、方案、地址映射、信捷对标追踪矩阵、当前源码及真机实测

1. 报告口径

本报告汇总截至 2026-08-11 已执行的 Host 自动测试、IAR 构建、Modbus 上位机测试、
STM32F407 真机测试及逻辑分析仪结果。状态定义如下:

  • PASS:自动检查和该用例要求的真机/波形验收均已通过。
  • PASS(发布前回归):已有完整通过证据,但最终共享 HAL 改动后仍应按发布门禁再跑一次。
  • PARTIAL:只完成了内部状态或部分硬件链路,不能作为完整端子验收。
  • PENDING:测试代码已具备,但尚无要求范围内的最终实测证据。
  • BLOCKED:缺少板卡映射、硬件接口或明确存储约定,当前不能安全完成。
  • DEFERRED:测试条件具备但本轮明确暂缓。

内部 physicalPulses、任务计数和位置只能用于固件一致性检查,不能替代端子物理边沿。
追踪矩阵中的“已纳入/等效实现”也不等价于代码和板测全部关闭。
本报告中的最新结果对应当前未提交工作区,不能只用 HEAD fdbbe71 复现。

2. 总体结论

测试域 当前结论
Host 自动回归 PASS,8 组共 4932 项
IAR 全量构建 PASS,0 errors / 0 warnings
四轴 PULSE/DIR、P12、P13、P14/P16、P15 PASS;P14四通道最终波形均严格200000沿
双 AB 100 kHz PASS,independent、simultaneous、dynamic 三用例均通过自动检查和四通道波形
M/WAIT 位链 PASS;仅关闭 Modbus M 位到 PLSR WAIT 的生产链
HSD/SFD 正常持久化 PASS,含 VBAT 掉主电、运行中掉电、SFD 上电加载、运动中拒绝 Flash 保存
P18 长稳 PASS:60 秒、30 分钟、坏 CRC、断线重连及组合压力均已通过;USB 并发 DEFERRED
真实 X/EXT/硬限位 PASS(X0~X3);真实端子回环已关闭电气扫描、WAIT、EXT、正/负硬限位
HM 保持 BLOCKED,尚缺经确认的掉电保持介质与恢复语义
A/B 槽坏 CRC 真机回退 PENDING,正常固件禁用破坏性诊断;Host 已覆盖

因此,主体运动、Modbus 控制、双 AB、性能和正常持久化链路已有充分通过证据;
但在 HM 保持、受控坏 CRC、30 分钟 USB 并发及最终发布回归关闭前,不得宣称
“严格功能对标和全部交付验收完成”。

3. 测试环境与固件配置

3.1 固件选择

固件/选择 用途
PLSR_BOARD_TEST_MODBUS_DATA(P12) 动态频率与 Modbus 字数据源
PLSR_BOARD_TEST_MODBUS_CONTROL(P13) COMMIT/START/PAUSE/RESUME/STOP 控制窗口
PLSR_BOARD_TEST_HW_COUNTER(P14) 四轴 PULSE/DIR 计数与 P16 性能
PLSR_BOARD_TEST_DUAL_AB(P17) P14/P15 共用准备、双 AB、位链及持久化板测
PLSR_BOARD_TEST_LONG_STRESS(P18) 四轴长稳专用 K4;关闭软/硬限位,仅限安全台架

报告更新完成时工作区默认选择已恢复为 P17。P18 不得用于带机构的常规运动验收;切换测试固件后均需
重新编译、烧录并硬复位。DWT 最大值测试必须在硬复位后进行。

3.2 当前静态基线

2026-08-11 在当前工作区重新执行:

powershell -ExecutionPolicy Bypass -File PLSR\Test\run_host_tests.ps1

& 'F:\IAR Systems\Embedded Workbench 8.3\common\bin\IarBuild.exe' `
  'EWARM\Modbus.ewp' -build Modbus -log warnings

Host 结果:

套件 检查数 结果
position 33 PASS
plc 202 PASS
core 214 PASS
job 307 PASS
path 251 PASS
profile 336 PASS
HAL 3521 PASS
Modbus data source 68 PASS
合计 4932 PASS

IAR 结果:Total number of errors: 0Total number of warnings: 0

4. 基础运动与历史专项结果

用例 主要验收结果 状态
四轴独立 PULSE/DIR Q0~Q3 可独立运行;100 kHz 周期 10 µs、约 50% 占空比;无窄脉冲和停止后残余 PASS
双轴方向/回零 两轴 +200/-200 对称 PASS
方向建立/换向延时 换向静默实测 9.9995 ms,符合 SFD907=10 ms PASS
同方向段衔接 不再无条件插入 10 ms;仅首次建立或实际换向等待 PASS
CW/CCW 互锁 Q0=300、Q1=200;非活动路全程低、无重叠 PASS
CW/CCW 末脉冲 最后完整高/低周期结束后停止,不再截断为 2.5/5.0 µs PASS
零加速段 不再停在 ACCEL,正常进入运行和完成 PASS
动态频率非法输入 超范围钳位,负频率保持上次安全目标 PASS

5. P12 Modbus 动态频率

执行命令:

python HostComputer\plsr_modbus_frequency_test.py --port COM5

波形证据:Document/PLSR_document/波形/2026-08-10_18-28-06.bin

写入值 期望 真机/波形结果
1000 1000 Hz 1000 Hz 平台,周期 1000.0 µs
4000 平滑升至 4000 Hz 4000 Hz,周期 250.0 µs
500 平滑降至 500 Hz 500 Hz,周期 2000.0 µs
0 使用默认 1000 Hz 1000 Hz 短平台明确存在
8000 钳位至 5000 Hz 5000 Hz,周期 200.0 µs
-1 保持上次安全目标 5000 Hz 平台连续,无停止或异常频率
2000 恢复 2000 Hz 2000 Hz,周期 500.0 µs

结果:频率顺序 1000→4000→500→1000→5000→5000→2000 正确;段间连续、
无断流、无窄脉冲、无截断和额外边沿;32 位频率使用功能码 0x10 原子写入。

结论:PASS。

6. P13 Modbus 命令与状态接口

执行命令:

python HostComputer\plsr_modbus_control_test.py --port COM5

波形证据:Document/PLSR_document/波形/2026-08-10_18-41-17.bin

验收项 结果
COMMIT 完整校验 PASS
COMMIT 后修改 S0,START 必须拒绝 PASS
START 排队并加速至 2000 Hz PASS
PAUSE 减速、重复序号幂等 PASS
暂停期间全低 约 682 ms 无残余边沿
RESUME 重新加速 PASS,无额外首沿
STOP_DECEL 平滑减速,完整末脉冲后停止
最终计数 逻辑位置 103550;任务/物理脉冲均 3550

PAUSE 与 STOP_DECEL 的逐脉冲减速序列对称;全波形升降沿各 3550,无悬空沿,
无小于 1 µs 毛刺,最终保持低。

结论:PASS。

7. P14 四轴 100 kHz 计数与 P16 实时性能

执行命令:

python HostComputer\plsr_modbus_counter_stress_test.py --port COM5

7.1 功能和计数

  • 四轴目标均为 200000 脉冲,100 kHz。
  • Q0/Q1 获得 TIM9/TIM12 硬件计数租约;Q2/Q3 使用软件回退。
  • 自动脚本的任务计数和本次 physicalPulses 增量均为 200000。
  • 已有四通道逻辑分析仪通过记录:Q0~Q3 各 200000 个物理上升沿,周期中位
    10.000 µs,范围 9.990~10.010 µs,高宽 5.000 µs,无小于 0.5 µs 窄脉冲、
    启动毛刺或停止残余。

历史调试中曾出现 Q0/Q1 各 199999、Q2 多 9 个完整周期等问题;这些结果属于修复前失败样本,
不能作为最终验收值。

7.2 P16 性能结果

2026-08-11 最终工作区烧录、硬复位后的通过样本如下:

指标 实测最大值 预算 结果
PlsrProcess 自身 64641 cycles / 384.768 µs <168000 cycles PASS
PlsrProcess 响应 115902 cycles / 689.893 µs 观测项 PASS
TIM6 控制 ISR 233 cycles / 1.387 µs <16800 cycles PASS
输出定时器 ISR 1456 cycles / 8.667 µs <1680 cycles PASS
TIM9/12 计数 ISR 431 cycles / 2.565 µs <1680 cycles PASS

脚本内部四轴均为 200000;用户最终逻辑分析仪报告确认 Y0~Y3 各严格 200000 个完整脉冲,
100 kHz、无小于 1 µs 窄脉冲,首尾完整,启动前和停止后均保持低电平。历史上的硬件计数少 1、
软件回退多脉冲和末沿截断问题均以该最终样本关闭。

结论:PASS。

8. P15 四轴软限位矩阵

执行命令:

python HostComputer\plsr_modbus_soft_limit_matrix_test.py --port COM5
轴/方向 频率 输出脉冲 最终位置 结果
轴0 正限位 500 Hz 201 1000001 PASS
轴1 正限位 2000 Hz 1000 1000000 PASS
轴2 负限位 500 Hz 201 -1000001 PASS
轴3 负限位 2000 Hz 1000 -1000000 PASS

四轴正负软限位均在 ±1 脉冲窗口内停止,错误码和复位正确。历史上轴1曾超停 2 脉冲,
加入当前硬件频率和 1 ms 保护采样补偿后关闭。

结论:PASS。

9. 双 AB 100 kHz 专项(P17)

三组用例均使用 Q0/Q1 与 Q2/Q3 两组固定 AB 配对、TIM9/TIM12 硬件周期计数,
每组分别硬复位后执行:

python HostComputer\plsr_modbus_ab_stress_test.py --port COM5 --case independent
python HostComputer\plsr_modbus_ab_stress_test.py --port COM5 --case simultaneous
python HostComputer\plsr_modbus_ab_stress_test.py --port COM5 --case dynamic

9.1 Independent

证据:Document/PLSR_document/波形/2026-08-10_14-45-28.bin

  • CH0=CH1=100000,CH2=CH3=200000,升降沿相等。
  • Q0/Q1 正向,Q2/Q3 反向;相序分别严格为
    00→10→11→01→0000→01→11→10→00
  • 首跳前为 00;两相首沿间隔 2.55/2.45 µs,落在 2.50±0.05 µs 边界。
  • 第一组先停,第二组继续约 1.112 s;停止组无残余边沿。
  • D1468=382 cycles,小于 420 cycles。

结论:PASS。

9.2 Simultaneous

证据:Document/PLSR_document/波形/2026-08-10_15-14-08.bin

  • 四通道各 200000 个上升沿和下降沿。
  • 两组末周期完整回 00,停止后 1 ms 全低。
  • 正反相序正确,无反转、无同时跳变、无窄脉冲。
  • D1468=392 cycles,小于 420 cycles;输出 ISR=997 cycles,小于 1680 cycles。
  • “同时完成”指相同目标;两个 START 由 9600 bit/s Modbus 串行提交,实际末沿允许相差一次
    通信事务时间。

结论:PASS。

9.3 Dynamic

最终证据:Document/PLSR_document/波形/2026-08-10_18-13-13.bin

验收项 最终结果
四通道边沿 CH0=CH1=CH2=CH3=600000,升降沿相等
频率序列 100 kHz→50 kHz→100 kHz,周期 10.000/20.000 µs
降频/升频边界 额外沿 0、窄脉冲 0、同跳 0、非法跳变 0
PAUSE 合法单步回 00;末脉冲 5.000 µs 完整;约 864 ms 全低无沿
另一组连续性 暂停期间 Q2/Q3 连续运行,约 86401 沿
RESUME 从 00 重建正向相序,第一周期完整,无额外沿
首沿 Q0/Q1=2.55 µs,Q2/Q3=2.44 µs;首跳前 00
完成 两组末周期完整回 00,停止后全低
自动性能检查 PASS,含输出 ISR 与 D1468 预算

结论:PASS。

9.4 AB 缺陷关闭轨迹

轮次/证据 发现的问题 后续状态
早期 AB 捕获 每相 7501 而非 7500;首沿约 0.33~0.37 µs 同升 已修复
independent 初测 每通道多 1 个悬空沿、停在 11、首沿仅约 0.33 µs 已修复
simultaneous 初测 CH2 多 1 沿并悬高约 809 µs;D1468=443 cycles 已修复,最终 CH2=200000、D1468=392
15-24-38.bin dynamic COUNTER_FAULT、PAUSE 未生效、停止边界悬高 已修复
17-06-37.bin 降频边界拉长/多余沿、PAUSE 起点悬高约 970 µs 已修复
17-49-15.bin 降频边界 2.4 µs 短脉冲、PAUSE 出现 11→00 同跳 已修复
18-13-13.bin 所有自动与波形检查干净 最终 PASS

禁止恢复曾经使用的“运行中重写 CNT 保相位”方案;该方案会产生额外边沿、4 µs 毛刺和
错误总计数。

10. Modbus M/WAIT 位数据链

执行命令:

python HostComputer\plsr_modbus_bit_input_test.py --port COM5

自动和波形结果:

  • FC05 写 M123、FC01 回读成功。
  • M123=0 时,1000 Hz、500 脉冲任务完整结束后稳定进入 WAIT。
  • M123 由 0→1 后 WAIT 释放并正常 COMPLETED,不再输出脉冲。
  • FC02 读取 X123=0;写 M123 不会改变 X123,证明 X/M 位空间分离。
  • Q0 严格 500 个上升沿和 500 个下降沿;主段周期 1000.0 µs、高宽 500.0 µs。
  • 第 500 个脉冲完整下降沿收尾,WAIT 和释放后均保持低,无窄脉冲或残余。

第一次脚本曾把成功的 START QUEUED=1 错当作失败;修正上位机期望值后通过,固件无需为此改变。

结论:M/WAIT 生产链 PASS。 后续 P19 已完成 X0~X3 真实端子回环,详见第 16 节;
HM 独立映像仍未定义掉电保持介质,因此 HM 保持继续为 BLOCKED。

11. HSD/SFD 持久化板测

测试脚本:

python HostComputer\plsr_persistence_board_test.py --port COM5 --phase <phase>

11.1 HSD + VBAT 正常掉主电恢复

阶段 关键结果
diagnostics HSD valid=0x03,generation=688;SFD 尚无有效槽
hsd-prepare generation=692,CRC=0x1121309F,本次启动保存 4 次
保持 VBAT、断主电后 hsd-verify generation 和 CRC 完全一致,flags=0x0006

四轴已知位置全部恢复、position_valid=1、无自动输出。

结论:PASS。

11.2 运行中掉电/复位安全恢复

阶段 关键结果
busy-prepare HSD generation=694,CRC=0xC1F355DF,busy 检查点已提交
运行中直接断主电后 busy-verify generation/CRC 保持,flags=0x000A

重启后所有轴 IDLE、没有自动续跑、无输出、所有轴 position_valid=0

初版脚本错误地等待运动期间 HSD dirty 清零;运行位置持续发布会合法地重新置 dirty。
脚本现改为检查 generation 和 save_count 确实前进。

结论:PASS。

11.3 SFD Flash 保存与上电加载

  • 首次真实保存生成 SFD generation=1、CRC=0x5C57E27F、valid mask=0x01、save_count=1。
  • 单 Bank Flash 擦写期间第一次 Modbus 状态读取超时,但只读诊断确认保存已经成功。
  • 上位机已改为 SAVE 请求只发送一次;擦写阻塞期间只重试读取,绝不重发 SAVE。
  • SFD clean 状态再次 SAVE 正确 no-op,没有重复擦写。
  • 掉电重启后 generation 和 CRC 一致,last_sfd_load=OK

结论:CRC 记录保存和上电加载 PASS。 当前只形成一个有效槽;“损坏 newest 后回退旧槽”的
真机破坏性用例尚未执行,不能据此宣称 A/B 坏 CRC 回退已在板上通过。

11.4 运动中禁止 Flash 擦写

  • 长任务运行期间发送 SAVE_CONFIG,内核返回 BUSY
  • SFD generation 保持 1,本次启动 sfd_save_count 不增加。
  • 脚本随后自动 STOP_IMMEDIATE 清理运动。

结论:PASS。

12. P18 Modbus 长稳

P18 使用关闭软/硬限位的 K4 长任务,只允许在脱开机构或纯逻辑分析仪台架上运行。脚本已改为
每秒原地显示已运行时间、完成比例、样本数、四轴累计和 Modbus 有效帧,便于长时间观察。

用例 命令摘要 结果与证据
60 秒冒烟 --duration 60 PASS,60 个一致性样本,最终计数 [4542201,4537414,4532663,4527973]plsr_long_stress_20260811_151740.csv/.json
30 分钟 Modbus/四轴 --duration 1800 PASS,1800 个一致性样本,Modbus 有效帧 12038,最终计数 [166276382,166263223,166251804,166242746]plsr_long_stress_20260811_152958.csv/.json
坏 CRC 注入 --duration 40 --frequency-period 0 --bad-crc-period 10 PASS,40 个一致性样本;plsr_long_stress_20260811_160526.csv/.json
串口断开/重连 60 秒、断开 3 秒 PASS,57 个有效样本,运动连续并正确清理;plsr_long_stress_20260811_161100.csv/.json
组合压力 70 秒动态调频、坏 CRC、35 秒处断开 3 秒 PASS,67 个有效样本;plsr_long_stress_20260811_161218.csv/.json

坏 CRC 初版注入曾因未等待 RTU T3.5 而造成正常响应超时;脚本现于坏帧前后按波特率留出静默时间,
修复后独立及组合用例均通过。四轴显示的是上电累计物理计数,且四轴 START、通信读取、动态调频
和 STOP 的时刻并不完全相同,因此累计绝对值不要求相等;单任务严格计数由 P14 验证。

结论:不含 USB 的 P18 长稳、异常帧和断线恢复均 PASS。

USB 线未接,系统只枚举到 FTDI Modbus COM5,因此以下 30 分钟 USB CDC 并发测试按用户决定暂缓:

python HostComputer\plsr_modbus_long_stress_test.py `
  --port COM5 --duration 1800 --usb-port COMx --usb-rate 64000

状态:DEFERRED。已通过的 30 分钟 Modbus/四轴长稳不能替代 USB CDC 并发验收。

13. 已确认修复且不得回退的问题

  1. PWM 端子负逻辑、启动首脉冲和段尾截断问题。
  2. 零加速参数导致状态机停在 ACCEL。
  3. 同方向段间错误插入 10 ms 延时。
  4. AB 双定时器调频相位漂移,以及运行中重写 CNT 造成的额外沿/毛刺。
  5. AB 启动两相近似同时上升、每相多 1 沿。
  6. AB 末周期悬高、双组近同时完成竞态及 D1468 超预算。
  7. AB 降频边界两相不对称、短/长脉冲和 PAUSE 非法同跳。
  8. CW/CCW 非活动通道高电平和最后脉冲截断。
  9. PAUSE 后 RESUME 保持 0 Hz、无法完成。
  10. 2000 Hz 软限位超停 2 脉冲。
  11. P14 将上电累计 physicalPulses 当成本任务计数。
  12. P16 PlsrProcess 超过 1 ms;HSD 检查点 CRC 热点已优化并合并。
  13. SFD 擦写期间上位机一次读超时被误判为 SAVE 失败;现只重试读取。
  14. P19 EXT 在1 ms路径tick同步停PWM,导致最后高电平223 µs而非250 µs;现改为冻结profile并由下一自然update/物理下降沿非阻塞停机,再推进路径。

14. 未关闭项与后续测试

优先级 项目 当前状态 关闭条件
1 最终工作区 P14/P16 发布回归 PASS P17 脚本和四通道波形均通过;Q0~Q3 各严格 200000 端子上升沿
2 30 分钟 USB CDC + Modbus + 四轴并发 DEFERRED 枚举第二 USB CDC COM,运行 1800 s;设备/主机 USB 统计和 Modbus 诊断无错误
3 SFD/HSD newest 槽坏 CRC 回退 PENDING 专用验证固件启用破坏性诊断、双槽有效、只失效 newest,重启回退旧 generation
4 真实 X、EXT、正负硬限位 PASS(X0~X3) P19 真实端子回环:X0/X1 硬限位、X2 EXT、X3 WAIT 均通过;其余映射点按需补充抽测
5 HM 掉电保持 BLOCKED 明确 HM 存储介质、容量、恢复语义并完成掉电测试
6 更长时间纯 Modbus/四轴长稳 30 分钟 PASS 已保存 1800 秒 CSV/JSON;如交付要求高于 30 分钟,再按目标时长延长
7 正式发布清理 PENDING 关闭板测启动和调试快照,保留正式控制链;生产构建完整回归

15. 最终判定

截至本报告日期:

  • P12、P13、P14/P16、P15、双 AB 三用例、M/WAIT、X0~X3 真实输入和正常 HSD/SFD 持久化均已通过。
  • P14/P16 当前完整工作区发布回归已通过,Q0~Q3 逻辑分析仪均严格 200000 个上升沿。
  • P18 已通过 60 秒冒烟、30 分钟四轴/Modbus、坏 CRC、断线重连及组合压力测试。
  • USB 30 分钟并发已明确暂缓;HM 保持和破坏性 CRC 回退尚未关闭。

项目可以进入“剩余专项验收和正式发布清理”阶段,但尚不满足“全部真机测试关闭”或
“严格对标全部完成”的声明条件。

16. P19 XDM-60T4-E 真实 X 输入回环板测(2026-08-11)

本节为 2026-08-11 的新增实测结论,优先于前文关于“真实 X 缺少映射”的旧状态。

16.1 固件与接线

  • 验证固件:PLSR_BOARD_TEST_SELECT=PLSR_BOARD_TEST_PHYSICAL_INPUT(P19)。
  • 初次自动验收接线:Y4→X0、Y5→X1、Y6→X2、Y7→X3。
  • 为使用 MCU 侧 Y0~Y4 五通道同步采集,当前 P19 改为:Y1→X0、Y2→X1、Y3→X2、Y4→X3;Y0 保留为 Q0 脉冲。
  • 当前输出公共端 COM0~COM4 接 0 V;输入公共端接 0 V。
  • P19 通过 D1540~D1546 的心跳租约驱动 Y1~Y4,租约超时自动关闭全部验证输出。
  • X 端扫描采用板卡实际电平语义:空闲为 0,端子有效为 1。

16.2 自动测试

执行命令:

python HostComputer\plsr_modbus_physical_input_test.py --port COM5 --case all
用例 实测结果 判定
电气扫描 0、1、2、4、8、3、C、F、0 九种 Y1~Y4 输出组合均与 X0~X3 raw/logical mask 完全一致 PASS
WAIT Y0严格500个完整脉冲后进入WAIT;Y4→X3释放且不再输出 PASS(脚本+波形)
EXT Y3→X2触发后1.96 ms停止,514沿;修复后最后250 µs高电平完整 PASS(脚本+波形)
正硬限位 Y1→X0后3.79 ms进入减速、49.21 ms停止,566沿,error=6、stop_reason=5 PASS(脚本+波形)
负硬限位 Y2→X1后3.79 ms进入减速、49.20 ms停止,568沿,error=7、stop_reason=6 PASS(脚本+波形)

Y1~Y4 改版后的五项独立脚本及Y0~Y4同步波形均通过。脚本结束时验证输出自动关闭,轴状态回到IDLE。

2026-08-11 最终自动组合回归再次通过:电气 mask 全部一致,WAIT=500 脉冲,EXT=516 脉冲,
正限位=564 脉冲,负限位=-566 脉冲。自动用例与上述独立波形用例的触发脉冲数存在少量通信时序差,
不改变 EXT 提前切段、硬限位受控停止、错误码和完整末脉冲的验收结论。

16.3 波形结论

  • WAIT:Y0上升/下降沿各500,主频2000 Hz、周期500.00 µs;末脉冲完整,WAIT及X3释放后全低。
  • EXT:初测发现末高电平223 µs截断;边界停机修复后复测通过,触发到停止约1.96 ms、总计514沿、无窄脉冲或残余。
  • 正硬限位:触发后约3.79 ms进入50 ms受控减速,47个减速脉冲,49.21 ms停止;末脉冲2083.4 µs完整。
  • 负硬限位:与正向对称,47个减速脉冲,49.20 ms停止;末脉冲2083.4 µs完整。
  • 正/负限位减速周期由约520.8 µs单调增至3472.2 µs;停止后至少1 ms全低,所有用例均无小于1 µs窄脉冲。

16.4 映射范围与限制

依据《实现PLSR指令.pdf》建立 X0~X12、X14~X17、X20 的 MCU GPIO 扫描映射;X13/PA14
是 SWDCLK,调试构建中不扫描。当前真机回环覆盖 X0~X3,其他已映射端子尚未逐点抽测;X21~X43
在现有资料中未取得可靠 MCU 管脚表,读取时返回数据访问错误,不做猜测映射。

Y→X 回环覆盖了 MCU输出、开集电极端子、公共端、实体输入端子、GPIO扫描和 PLSR readBit 的完整
电气链路,但不等同于机械限位开关、现场布线失效和安全回路认证。

17. 2026-08-11 最终执行清单

除注明“波形沿用已验收证据”的项目外,下表均在最终工作区重新构建相应固件后执行;切换固件时
均重新编译、烧录并硬复位。报告更新后默认固件已恢复为 P17。

固件 测试项与命令 最终结果
Host powershell -ExecutionPolicy Bypass -File PLSR\Test\run_host_tests.ps1 PASS,8 组 4932 项
IAR IarBuild.exe EWARM\Modbus.ewp -build Modbus -log warnings PASS,0 errors / 0 warnings
无需上板 python HostComputer\modbus_timing_tester.py --self-test PASS,9600/19200/115200 bit/s 的 T1.2/T1.5/T3.5 自测通过
P17 python HostComputer\plsr_modbus_counter_stress_test.py --port COM5 PASS,四轴内部与端子均严格 200000;P16/ISR 均在预算内
P17 python HostComputer\plsr_modbus_soft_limit_matrix_test.py --port COM5 PASS,四轴正/负、500/2000 Hz 均在 ±1 脉冲窗口内
P12 python HostComputer\plsr_modbus_frequency_test.py --port COM5 PASS,1000→4000→500→默认1000→钳位/保持5000→2000;波形沿用已验收证据
P13 python HostComputer\plsr_modbus_control_test.py --port COM5 PASS,COMMIT 指纹、START、PAUSE 幂等、RESUME、STOP_DECEL;最终自动样本 task/physical=3530
P17 python HostComputer\plsr_modbus_bit_input_test.py --port COM5 PASS,FC05/FC01→M123→WAIT,X/M 空间隔离
P17 plsr_modbus_ab_stress_test.py --case independent PASS,100000/200000 周期;gate=366 cycles
P17 plsr_modbus_ab_stress_test.py --case simultaneous PASS,两组各200000周期;gate=377 cycles
P17 plsr_modbus_ab_stress_test.py --case dynamic PASS,两组各600000周期,100k→50k→100k、PAUSE/RESUME;gate=365 cycles
P17 持久化 diagnostics、hsd-prepare/verify、busy-prepare/verify、sfd-save/verify、motion-save-busy PASS;最终只读诊断 HSD/SFD valid 均为 0x03,generation=1105/2
P18 60 秒、1800 秒、坏 CRC、断线重连和组合长稳 PASS,证据文件见第 12 节
P19 python HostComputer\plsr_modbus_physical_input_test.py --port COM5 --case all PASS,电气扫描、WAIT、EXT、正/负硬限位均通过;波形沿用逐项验收证据

仍未执行或未关闭:USB CDC + Modbus + 四轴 30 分钟并发(用户暂缓)、目标板破坏 newest 槽后的
CRC 回退,以及 HM 掉电保持。三项均不得写成已通过。