用途:将此文件全文粘贴到新的 Codex/对话中,即可无缝接替上一段长对话(ZCode-deepseek 会话)的全部任务。
交接人:ZCode 会话(deepseek);接收人:Codex 新会话。
项目:信捷 XDM 兼容 PLSR 脉冲定位模块(STM32F407 + IAR EWARM 8.3 + uC/OS-II + Modbus RTU 从站)。
在 STM32F407 上实现信捷 XD/XL 系列 PLC 的 PLSR S0 S1 S2 D 多段脉冲定位指令(对标 XDM-60T4-E),上板真机验证,当前处于收尾阶段:只剩遗留精度验证与压力测试/清理。
F:\Xinje_Modbus_IAR\TrainCamp_yuwenhao_modbus(git,当前分支 deepseek,主分支 master)Document/PLSR_document/信捷XD_XL系列PLC定位控制手册_PD02_20260510_V1.3.pdfgit status 查看,与老对话确认提交策略后再动工。fdbbe71 P13(Modbus 控制窗口)、7750e43 P6(四轴并发自测)、c776438 P5(软限位保护)。plsr_self_test.c 仍在(收尾时要删)。Document/PLSR_document/波形/plot_waveform.py。| 批次 | 内容 | 状态 | 证据 |
|---|---|---|---|
| ① | Modbus 数据源正式接入(真实 D/HD/FD → S0/S1/动态调频) | ✅ 完成 | plsr_modbus_data.c readWord=PlsrModbusReadWord;S0=D1600/S1=D1700 经 0x10 原子写入;动态调频 D1000/D1100 已真机验证 |
| ② | Modbus 命令与状态接口(START/STOP/PAUSE/状态/错误码/位置/计数) | ✅ 完成 | fdbbe71:COMMIT/START 分离、停止/暂停/继续/位置设置/清零/保存、重复序号幂等、四轴状态、32/64 位版本一致性;错误码 5/6 + RESET_ERROR 已验 |
| ③ | FOLLOW 与前馈补偿 | ✅ 关闭(不实现) | P14 按手册确认 FOLLOW/FOLLOW_AB 是独立随动指令,PLSR 仅保留参数字段存储校验,不实现随动运算。勿再开发 |
| ④ | 遗留精度问题 | ⚠️ 见下表 | — |
| ⑤ | 压力测试与正式收尾 | ❌ 大部分未做 | 见第五节 |
| # | 问题 | 状态 | 验证/修复方法 |
|---|---|---|---|
| 1 | P14 硬件计数 -1(Q0/Q1=199999 而非 200000;TIM9/TIM12 硬件计数;Q2/Q3 软件回退精确) | 🟡 代码已修未上板验证、未提交 | 修复:计数器延迟到源 OC 启动 UG 完成后再配置/使能,消除无物理脉冲的内部首沿;验收=四轴均 200000。用 HostComputer/plsr_modbus_counter_stress_test.py(四轴 100kHz 压力) |
| 2 | AB 启动边沿(段1 起步 A-R/B-R 同升,各多 1 沿 → 7501/7501;首周期从 11 开始非 00→10→11;稳定复现 6 版固件) | 🔴 预热机制 abStartupPriming 已写(plsr_hal_f407.c:845/893/1065)未上板验证 |
① 两 ISR 各翻转调试 GPIO 抓先后;② SetPwmMode1 移到 SetCc1e 之前;③ 启动后读两路 CNT 确认初值。验收=严格 7500 |
| 3 | CW/CCW 段尾截断窄脉冲(段末最后脉冲仅 2.5~5µs 高,未走完完整周期) | 🟡 未关闭(主验收已过,微秒毛刺标准不达标) | 停止应延迟到最后脉冲 CC1 匹配(下降沿)之后 |
| 4 | 软限位边界 | ✅ 已关闭 | P15 高频采样补偿(2000Hz 提前 1 脉冲进入减速)→ 四轴正/负 500/2000Hz 矩阵 ±1 脉冲窗口全过 |
| 5 | AB 段3 反向切换 10ms 过渡期 / 方向信号 Q5 1µs 毛刺 | 🟢 低优先级,可暂缓 | — |
详细记录见 Document/PLSR_document/问题总清单_2026-08-10.md、已知问题清单_2026-08-09.md。
HostComputer/plsr_modbus_counter_stress_test.py 已有部分覆盖(12 次状态读取),补全并发读写压力。HostComputer/PLSR_MODBUS_PERFORMANCE_TEST.md 已建,脚本未写。plsr_self_test.c(及 main 中的调用)、调试快照、tmp 资料清理、git 历史大对象(1GB bin 松散对象)清理。PlsrProfileSyncPulses 校准 profile 虚拟计数到硬件实发数(段尾冻结修复)plsr_address_map.hPLSR/Inc|Src/:plsr_core(状态机/命令)、plsr_job(任务快照解析/校验)、plsr_path(多段执行器)、plsr_profile(速度曲线)、plsr_hal_f407(定时器/GPIO/硬件计数)、plsr_modbus_control(命令)、plsr_modbus_data(D 区数据源)、plsr_persistence(Flash)、plsr_self_test(上电自测)、plsr_position、plsr_resource、plc_devicePLSR/Test/run_host_tests.ps1(1268 项,-std=c11 -Wall -Wextra -Werror -DPLSR_HOST_TEST -lm);IAR 编译:IarBuild.exe EWARM/Modbus.ewp -build Modbus(0 错误 0 警告基线)plsr_modbus_control_test.py(命令)、plsr_modbus_counter_stress_test.py(四轴 100kHz+计数)、plsr_modbus_frequency_test.py(动态调频)、plsr_modbus_soft_limit_matrix_test.py(限位矩阵)、modbus_timing_tester.py(时序)Document/PLSR_document/波形/*.bin + plot_waveform.py(时频分析:总脉冲数/段结构/频率命中/段间 gap)git status + git log --oneline -5 确认工作区 22 个未提交文件内容(P14 硬件计数批次),先上板验证再提交(或与用户确认提交策略)。