Du kan inte välja fler än 25 ämnen Ämnen måste starta med en bokstav eller siffra, kan innehålla bindestreck ('-') och vara max 35 tecken långa.
 
 
 
 
 
 

7.6 KiB

PLSR 项目交接提示词(2026-08-10)

用途:将此文件全文粘贴到新的 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
  • 指令语义:S0=段表(每段 10 字:频率/脉冲/等待码/跳转),S1=模式/起始段,S2=参数组(K0=HSD460-539,K1-K4=SFD950+),D=Y0-Y3
  • 十态状态机:UNINITIALIZED/IDLE/ACCEL/RUN/DECEL/WAIT/PAUSED/COMPLETED/STOPPED/ERROR
  • 速度规划:Q32.32 定点,中断中无浮点,直线/S曲线/正弦加减速,动态调频
  • 输出特性:Y 输出为集电极开路(OC/NPN 漏型)负逻辑,正向=低电平=ON
  • 参考手册:Document/PLSR_document/信捷XD_XL系列PLC定位控制手册_PD02_20260510_V1.3.pdf

二、⚠️ 进入任务前必读(当前工作区状态)

  1. 工作区有 22 个文件未提交(P14 硬件计数新增 437 行 + 软限位修复 + AB 预热机制等全在工作区,未 commit)——先 git status 查看,与老对话确认提交策略后再动工。
  2. 最近提交:fdbbe71 P13(Modbus 控制窗口)、7750e43 P6(四轴并发自测)、c776438 P5(软限位保护)。
  3. 上板自测 plsr_self_test.c 仍在(收尾时要删)。
  4. 真机验证环境:STM32F407 + 逻辑分析仪导出 16 通道 .bin(100MS/s,2字节/采样小端 uint16),波形分析脚本 Document/PLSR_document/波形/plot_waveform.py

三、主线:5 批规划与完成度(已核实代码)

批次 内容 状态 证据
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

五、压力测试与正式收尾(⑤批)——下一步主线

  1. 上板验证(立即):AB 预热(7500)、硬件计数 -1(四轴 200000)、软限位回归。
  2. 四轴 100kHz AB 模式:只测过 PULSE/DIR 100kHz;AB 高频加速段重定相干扰未实测。
  3. 双 AB 并发:Q0/Q1 + Q2/Q3 同时 AB 运行(独立轴停止互不影响已有实现,未实测并发)。
  4. Modbus 压力HostComputer/plsr_modbus_counter_stress_test.py 已有部分覆盖(12 次状态读取),补全并发读写压力。
  5. 掉电恢复:Flash 存储(SFD900~1419 片内 Flash 已实现)掉电/上电恢复未实测。
  6. 性能测试HostComputer/PLSR_MODBUS_PERFORMANCE_TEST.md 已建,脚本未写。
  7. 清自测收尾:删 plsr_self_test.c(及 main 中的调用)、调试快照、tmp 资料清理、git 历史大对象(1GB bin 松散对象)清理。

六、已固化的关键决策(勿回退)

  • Y 输出 OC 负逻辑(正向=低=ON);PULSE/DIR、AB、CW/CCW 三模式,CW/CCW 返回 NOT_SUPPORTED
  • AB 仅允许 D=Y0/Y2(Q0/Q1、Q2/Q3),调频同时更新 A/B 不重置相位,正常完成只在完整 00 周期边界停止
  • 段间衔接仅方向变化时走 DIR_SETTLING(~2ms),否则直连
  • 每 tick PlsrProfileSyncPulses 校准 profile 虚拟计数到硬件实发数(段尾冻结修复)
  • 地址映射固定:HSD 384B / SFD RAM 缓存 2080B / SD 192B / SM 4B,plsr_address_map.h
  • PLSR 阶段不实现 FOLLOW 随动运算(见批次③)

七、代码地图与测试体系

  • PLSR/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_device
  • Host 测试PLSR/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 警告基线)
  • 真机测试脚本(HostComputer/):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)
  • 文档:方案设计书 V1.0、需求规格统计 V1.3、对标追踪矩阵、问题总清单 2026-08-10

八、建议的下一步行动(新对话从这里开始)

  1. git status + git log --oneline -5 确认工作区 22 个未提交文件内容(P14 硬件计数批次),先上板验证再提交(或与用户确认提交策略)。
  2. 上板验证三件套:硬件计数 -1(counter_stress 脚本)→ AB 预热(7500)→ 软限位回归(matrix 脚本)。
  3. 通过后提交 P14 批次,然后按第五节 2→7 推进压力测试与收尾。