Nie możesz wybrać więcej, niż 25 tematów Tematy muszą się zaczynać od litery lub cyfry, mogą zawierać myślniki ('-') i mogą mieć do 35 znaków.
 
 
 
 
 
 

3.6 KiB

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):independentsimultaneousdynamic均已通过自动测试和100MS/s四通道真机验收。前者Q0/Q1严格100000沿、Q2/Q3严格200000沿、D1468=382 cycles;等长用例四通道各严格200000沿、D1468=392 cycles,已确认修复CH2多1沿及停止悬高;动态用例四通道各严格600000沿,100kHz→50kHz→100kHz、00边界PAUSE/RESUME、调频边界和末周期均通过。三组首沿均在2.50us±0.05us边界内,正反相序、完整末周期和停止全低均通过。稳定段约±50~60ns偏差作为采样量化级记录。

测试前提

  • 烧录当前工作区固件后执行硬复位,使 DWT 最大值从零开始。
  • main.c 的板测准备路径必须执行 PlsrHardwareCounterSelfTestPrepare(),以生成 K3。
  • Modbus RTU 默认 COM5、9600、8E1。
  • 逻辑分析仪四通道同步连接 CH0~CH3=Q0~Q3,建议 100MS/s。

自动测试

完整执行独立停止、等长并发、动态变频/暂停三个用例:

python HostComputer\plsr_modbus_ab_stress_test.py --port COM5

为便于逻辑分析仪精确统计,推荐硬复位后分别采集:

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 使用每组600000周期,给9600bps下的串行START、一致性状态读取和FC16变频留出足够时间;要求两组调频时保持相位和连续计数;Q0/Q1只在
完整00边界暂停并保持低,Q2/Q3不受影响,随后Q0/Q1从00恢复正确相序。

脚本还检查 D1468~D1469 发布的 AB 末周期快速门控最大周期数。168MHz 下必须
非零且小于 420 cycles(2.5us,一个 100kHz AB 周期的四分之一)。
D1468取实际停表门控扫描和输出ISR异常返回前最终跨组安全扫描的最大值;整个输出ISR另由P16输出ISR预算约束。

逻辑分析仪验收

  • 独立停止用例:CH0=CH1=100000 个上升沿;CH2=CH3=200000 个上升沿。
  • 等长用例:CH0=CH1=CH2=CH3=200000 个上升沿。
  • 动态用例:CH0=CH1=CH2=CH3=600000 个上升沿;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 只用于固件一致性检查,不能替代端子波形验收。