验证四轴同时以100kHz输出时的脉冲计数、16位计数器跨界、计数资源冲突回退和Modbus并发读状态。P14按硬件连接动态分配计数资源:Q0/Q2共享TIM9,Q1/Q3共享TIM12;按Q0、Q1、Q2、Q3顺序启动时,Q0/Q1使用硬件计数,Q2/Q3使用软件回退。
PLSR_ENABLE_BOARD_SELF_TEST=1,PLSR_BOARD_TEST_SELECT可选PLSR_BOARD_TEST_HW_COUNTER或PLSR_BOARD_TEST_DUAL_AB,两者都会准备P14所需K1参数。python HostComputer\plsr_modbus_counter_stress_test.py --port COM5
脚本会自动完成四轴位置清零、S0/S1写入、COMMIT、START、运行期状态轮询和最终计数核对,不需要在Watch窗口手工修改变量。
当前固件同时为后续P15配置了±1000000软限位;P14每轴只运动200000脉冲,因此不会触发该限位。
hardwareCounter=1,Q2/Q3为0。PLSR_STATE_COMPLETED。logicalPosition和taskPulses均精确等于200000;physicalPulses是上电累计值,脚本以运行前基线为准,要求本次增量精确等于200000,不能直接比较累计绝对值。error=0且最后执行结果为PLSR_RESULT_OK。可选Watch观察项(只需观察,不需要修改):
PlsrHwCounterOwners[0]:运行期为0,表示TIM9分配给Q0。PlsrHwCounterOwners[1]:运行期为1,表示TIM12分配给Q1。PlsrHwAxes[0].counterBlockPulses和PlsrHwAxes[1].counterBlockPulses:运行中依次跨过65536、131072、196608。PlsrHwAxes[0..3].hardwareCounterActive:运行期依次为1、1、0、0;完成后租约释放并回到0。若脚本通过而硬件计数轴的波形数量不符,应优先检查TIM9/TIM12内部触发边沿与物理输出反相关系;Host测试无法覆盖这一项。
physicalPulses增量均为200000。上述记录关闭当前P14 PULSE/DIR计数验收,但不能替代双AB、掉电恢复或长稳并发专项验收。
该记录也是最终AB/持久化/USB批次合入前的基线;烧录当前最终工作区后应再执行一次本脚本和四通道
边沿统计,确认共享HAL与中断改动没有造成PULSE/DIR回退。