# PLSR 双 AB 100kHz 压力测试 本测试覆盖两组固定 AB 点对:Q0/Q1(轴 Y0)和 Q2/Q3(轴 Y2)。脚本使用 K3 的 100kHz 零加减速配置,自动写入 S0/S1、COMMIT、START,并核对两组 TIM9/TIM12 硬件计数租约、任务/位置/物理周期数和 DWT 实时预算。动态用例还会 执行100kHz→50kHz→100kHz原子变频以及Q0/Q1单组PAUSE/RESUME。 > 当前状态(2026-08-10):安全首沿建立、双硬件计数租约和末周期快速门控代码已通过Host回归及IAR编译;尚未按本文件完成四通道真机波形验收,因此AB首次启动7501历史问题和双AB 100kHz压力项仍不得标记为关闭。 ## 测试前提 - 烧录当前工作区固件后执行硬复位,使 DWT 最大值从零开始。 - `main.c` 的板测准备路径必须执行 `PlsrHardwareCounterSelfTestPrepare()`,以生成 K3。 - Modbus RTU 默认 COM5、9600、8E1。 - 逻辑分析仪四通道同步连接 CH0~CH3=Q0~Q3,建议 100MS/s。 ## 自动测试 完整执行独立停止、等长并发、动态变频/暂停三个用例: ```powershell python HostComputer\plsr_modbus_ab_stress_test.py --port COM5 ``` 为便于逻辑分析仪精确统计,推荐硬复位后分别采集: ```powershell 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 ``` `independent` 要求 Q0/Q1 完成后计数冻结且保持低,同时 Q2/Q3 继续运行。 `simultaneous` 使用相同的 200000 周期目标验证两组并发完成;两个 START 通过 Modbus 串行提交,因此两组实际启动/结束时刻允许相差一次 RTU 事务时间。 `dynamic` 使用每组300000周期,要求两组调频时保持相位和连续计数;Q0/Q1只在 完整`00`边界暂停并保持低,Q2/Q3不受影响,随后Q0/Q1从`00`恢复正确相序。 脚本还检查 D1468~D1469 发布的 AB 末周期快速门控最大周期数。168MHz 下必须 非零且小于 420 cycles(2.5us,一个 100kHz AB 周期的四分之一)。 ## 逻辑分析仪验收 - 独立停止用例:CH0=CH1=100000 个上升沿;CH2=CH3=200000 个上升沿。 - 等长用例:CH0=CH1=CH2=CH3=200000 个上升沿。 - 动态用例:CH0=CH1=CH2=CH3=300000 个上升沿;Q0/Q1含一个暂停低电平窗口。 - 100kHz区间完整AB周期10.000us、各相高宽5.000us;50kHz区间周期20.000us、 各相高宽10.000us;不得有小于1us的窄脉冲。 - 正向必须为 `00→10→11→01→00`,反向必须为逆序。 - 调频前后保持严格±90°且不得增加边沿;PAUSE只能在`00`边界生效,RESUME从 `00`重新建立相序,另一组全程不得停顿或串扰。 - 启动前为 `00`;A/B 首个上升沿间隔 2.50us(建议容差 ±0.05us),不得同时上升。 - 末周期完整回到 `00`;停止后至少 1ms 全低且无残余边沿。 脚本的内部 `physical_pulses` 只用于固件一致性检查,不能替代端子波形验收。