交接人:ZCode 会话(deepseek)
接收人:Codex
项目:信捷 XDM 兼容 PLSR 脉冲定位模块(STM32F407 + IAR EWARM 8.3 + uC/OS-II + Modbus RTU)
在 STM32F407 上实现信捷 XD/XL 系列 PLC 的 PLSR 多段脉冲定位指令,对标 XDM-60T4-E:
PLSR S0 S1 S2 D——S0=段表(每段 10 字:频率/脉冲/等待码/跳转),S1=模式/起始段,S2=参数组(K0=HSD460-539,K1-K4=SFD950+),D=Y0-Y3Document/PLSR_document/信捷XD_XL系列PLC定位控制手册_PD02_20260510_V1.3.pdf(1-4-2 节输出方式=OC;1-4-4 节集电极开路+负逻辑;1-4 节接线图 R=3.3K 上拉;PDF 50 页加减速斜率定义)PLSR/Inc|Src/:plsr_core(状态机/命令)、plsr_job(任务快照解析/校验)、plsr_path(多段路径执行器)、plsr_profile(速度曲线 Q32.32)、plsr_hal_f407(定时器/GPIO)、plsr_persistence(Flash 存储)、plsr_self_test(上电自测)、plsr_resource、plc_devicePLSR/Test/run_host_tests.ps1——6 套件共 1268 项(plc_device 180 / core 174 / job 115 / path 227 / profile 182 / hal 390),-std=c11 -Wall -Wextra -Werror -DPLSR_HOST_TEST -lmEWARM/Modbus.ewp 配置名 Modbus,IarBuild.exe Modbus.ewp -build Modbus,当前 0 错误 0 警告| # | 问题 | 修复 | 验证证据 |
|---|---|---|---|
| 1 | 无方波(PF6 恒高 672ms) | PlsrHwConfigurePwm 补配 CCMR1.OC1M=110(PWM 模式1)+ OC1PE |
逻辑分析仪见正常方波 |
| 2 | 多余脉冲 7517(理论 7500) | CR1.ARPE=1(ARR 预装载)+ EGR.UG 启动加载影子 |
多文件实测总脉冲 7500 正好 |
| 3 | 段间 14.9ms 延时 | PlsrHwStartPulse 仅方向变化时走 DIR_SETTLING(首次/换向/换点) |
段间 → ~2ms |
| 4 | 段尾冻结收尾(段3 150Hz 平台 38 脉冲,800ms) | core tick 中 PlsrProfileSyncPulses 每 tick 把 profile 虚拟计数校准到 PlsrHwGetEmittedPulses() |
段3 800ms→520ms,减速平滑;总脉冲仍 7500 |
上板自测:plsr_self_test.c——3 段(2000Hz/1000 脉冲、5000Hz/6000、1000Hz/500),K1 参数,方向点 Y4(SFD906=4),上电延时 1s 后启动,完成后可删除。
段2/3 起步波形:高 50ms + 低 0.5ms → 恒定 1000Hz(理论:10Hz 起步,第一周期 100ms:高 50ms+低 50ms,之后每 1ms +10Hz 平滑加速到目标)。时频图上表现为折线(陡→缓),段2 加速段从 ~1000Hz 开始(缺失 0→1000Hz 的加速)。
Snap[0]: reason=0, psc=256, arr=65369(10Hz), ccr=32684, cnt=0 ← 启动正常
Snap[1]: reason=2, psc=2, arr=55999(divider(1000Hz)!!), ccr=27999, cnt=67 ← 第一个更新事件
Snap[2..7]: 全部 (psc=2, arr=55999) —— 之后恒定 1000Hz
PlsrHwDbgSnap[64]:PwmBegin 重置,之后每 tick(1ms)记录 (reason, psc, arr, ccr, cnt)。用户暂停后读数组 → CNT 演化直接分辨:
Document/PLSR_document/波形/plot_waveform.py:
python plot_waveform.py <xxx.bin> → 输出时频图 + 三段结构 + 脉冲数plsr_hal_f407.c 中 PlsrHwDbgSnap(当前 64 条 tick 级,P4 后删除)https://ark.cn-beijing.volces.com/api/v3/chat/completions,模型 doubao-seed-2-1-pro-260628(支持图片),key 见 ~/.zcode/v2/config.json provider 87847afb...。读 IAR Watch 截图数字用它,比 GLM 准PLSR/Test/run_host_tests.ps1(1268 项全绿)和 IAR 编译确认基线plot_waveform.py 分析