ywh
|
fdbbe71aea
|
P13 Modbus 控制窗口打通:COMMIT/START 分离、命令应答与一致性状态读取 + PAUSE/RESUME 修复
本批完成内容:
Modbus 控制窗口(新增 plsr_modbus_control/data + modbus_data_store):
- COMMIT 与 START 分离:COMMIT 校验通过后生效;COMMIT 后
再修改 S0/S1,START 返回 BUSY,要求重新提交。
- 命令支持:停止、暂停、继续、位置设置、清零、保存;
重复命令序号幂等,不重复执行。
- 四轴状态均可读取;32/64 位状态用首尾版本号保证一致性
(防撕裂读取)。
- 控制窗口基址可配置:P13 暂用 D1200~D1455(非信捷固定
地址),S0=D1600、S1=D1700。
PAUSE/RESUME 闭环修复:
- PAUSE 不再终止当前 S0 路径,保留当前段与已发脉冲;
RESUME 从 S2 起始速度重新激活速度曲线。
- 硬件定时器恢复时不清零脉冲计数,任务累计连续。
- 暂停回差补偿段时恢复专用速度参数。
- STOP_DECEL 正常收到减速完成事件并进入 STOPPED。
- Python 脚本增加"频率非零 + 计数增长"恢复判定,不再把
ACCEL+0Hz 误判为恢复成功。
测试:
- Host:3500 项检查全部通过(含控制窗口/命令/一致性/幂等)。
- IAR:0 errors,0 warnings。
- 上板验证(逻辑分析仪,Q0):
START 后 1000Hz 平滑加速至 2000Hz → 稳定段 → PAUSE 约
200ms 平滑减速停止,暂停期间 0 边沿恒低 → 重复 PAUSE
无第二次动作 → RESUME 从 ~1000Hz 重新加速 → STOP_DECEL
平滑减速至停。全程 0 个 <10µs 毛刺、无截断尾脉冲、
无意外重启。
|
1 month ago |
ywh
|
6c61682617
|
工程单位/脉冲当量换算落地(余数累计真机验证)+ 位置链路闭环 + AB 启动预热
本批完成内容:
工程单位换算(新增 plsr_position 模块):
- 单位代码校验、脉冲数/转与移动量/转等效配置校验。
- 工程单位 ↔ 脉冲双向换算(相对/绝对模式),带溢出检查。
- 段目标按等效配置换算为脉冲,换算余数跨段累计,
避免每段独立取整造成累计位置误差。
任务解析(plsr_job):
- S2 等效配置(单位代码/脉冲每转/移动量每转)解析与校验。
- 段目标支持工程单位形式(相对/绝对),换算失败返回
PLSR_RESULT_POSITION_OVERFLOW 并给出解析块定位。
位置链路(plsr_core):
- logicalPosition/taskPulses/totalPulses 随运动实时累加,
带 int64 溢出检查(溢出发 COUNTER_FAULT)。
- HSD 掉电检查点:运动开始/完成/停止时保存位置与有效标志。
- 软急停、正/负限位 I 事件处理接入状态机。
HAL(AB 启动预热):
- 首次启动保持"吞周期"流程建立 00 相位;完成预热后
段间/调频重定相直接从已验证的 00 边界交还 AF,
不再吞掉用户周期。(待 AB 上板验证)
host 测试扩展:
- 单位换算(含余数累计)、等效配置解析、位置累加/溢出、
AB 预热状态机断言,全量测试通过。
上板验证(逻辑分析仪实测):
- 两段各 1001 工程单位 → 段1 输出 1501 脉冲、段2 输出 1502
脉冲(余数累计正确),总计 3003 脉冲。
- 稳定频率 1500Hz,无毛刺,起步/收尾平滑,时长约 2.2s。
|
1 month ago |
ywh
|
539fe6b4a5
|
PLSR P3a 上板准备:GPIO/定时器初始化 + 上电自测(Q0 测试脉冲)
- PlsrHwInit 补生产初始化:全部输出点上电安全电平(先输出拉低再切 AF)、
PF6/7=AF3、PF8/9=AF9 定时器复用、TIM10/11/13/14 时钟与更新中断 NVIC(优先级1)
- 新增 plsr_self_test.c/.h:上电自动执行 Q0 发 2000Hz/1000 脉冲(K1 默认参数、
方向端子 Y4、静态数据源),main.c 一行接入,验证后可删
- 六套 host 测试 1151 项全绿,IAR 0 错误 0 警告
|
1 month ago |
ywh
|
83803085ec
|
PLSR 新增 P3a 硬件层:单轴 PULSE/DIR 输出打通(host 模拟 + core 接线)
- 新增 plsr_hal_f407.c/.h:Q0~Q3 定时器/引脚映射(PF6-9 + TIM10/11/13/14)、
DIR 输出与方向建立延时状态机、PWM 启停/动态改频(50%占空比、预装载无毛刺)、
更新中断软件计数 + 段完成事件注入、精确停止(周期末关通道,无额外脉冲)
- 定时器时钟按 RCC 实际配置计算(修正 TIM13/14=84MHz 疑点,APB2 分频2 时实际 168MHz)
- core 接线:段进入自动启动硬件+速度曲线、段间自动重启、tick 驱动 profile→改频、
加速完成自动注入 ACCEL_COMPLETE、STOP/急停/限位/故障/终态统一停止硬件
- PLSR_HOST_TEST 下模拟定时器寄存器,HAL 逻辑可单测
- 新增 test_plsr_hal 380 项(含端到端:START→DIR延时→PWM→加速→计数→段间→完成),
六套 host 测试共 1151 项全绿,IAR 0 错误 0 警告
- 待办:上板前补 GPIO 复用与 NVIC 使能(host 覆盖不到)
|
1 month ago |
ywh
|
ec430e357c
|
PLSR 新增 P2 速度规划器(Q32.32 定点曲线计算)
- 新增 plsr_profile.c/.h:梯形/S形/正弦三种曲线,Q32.32 定点,刷新中断内零浮点,
正弦用 256 项查表(无 FPU/库依赖),总脉冲数精确到误差 0
- 支持三角曲线(短距离自动降峰值)、起始/终止速度、完成/后续模式衔接参数、
运行中动态调频(升频平滑过渡,降频先减速到新目标再匀速)
- 1ms/0.1ms 双刷新率;PlsrProfilePlan 提供时间轴诊断(非中断内 double)
- 新增 test_plsr_profile 13 场景 75 项(积分精度逐场景验证),
五套 host 测试共 771 项全绿,IAR 0 错误 0 警告
|
1 month ago |
ywh
|
2fe534c39f
|
PLSR 多段路径执行器落地,并完成 P0 接口纠偏
【P1 多段路径执行器】新增 plsr_path.c/.h,在任务快照与十态状态机之上实现段级执行语义:
- 六种等待条件(完成/WAIT时间/WAIT信号/ACT/EXT/EXT或完成),ACT 可截断未完成段,段先完则等 ACT
- EXT 按 0→1 新边沿触发,段开始已有效的电平不误触发
- 跳转支持顺序、指定段、自循环,动态跳转(D/HD/FD)每次跳转时重新求值,运行期越界转 ERROR
- 绝对模式零位移与相对零脉冲段直接跳转;每轮最多 100 次连续无脉冲跳转后让出 CPU
- 状态转换表放宽 RUN/DECEL→ACCEL(段间衔接为正常路径);新增 SEGMENT_COMPLETE 事件与 1ms tick 推进
- STATUS 增加 currentSegment 诊断字段;STOP/PAUSE/急停/限位/故障时路径立即终止
【P0 接口纠偏】
- HSD 改为 16 位 WORD 语义(两个相邻 WORD 组成 32 位值),新增 Dword 读写 API,对外回绕并置溢出诊断
- HSD 检查点记录升级 v2:持久化 position_valid/last_busy,运动中掉电恢复后位置不可信
- SET/CLEAR_POSITION、启动、完成/停止/错误均触发 HSD 检查点(此前生产流程从未保存)
- SFD/K0 出厂默认值补齐(FOLLOW=50、最大速度 100000 等),全新 Flash 可直接启动
- directionDelayUs 改名 directionDelayMs;PlsrPostStart 隐藏为仅测试可用
- 新增 test_plsr_path(13 场景 227 项);四套 host 测试共 696 项全绿,IAR 0 错误 0 警告
|
1 month ago |
ywh
|
9296f55657
|
PLSR S0 S1 S2 D 现在可以解析、校验、生成不可变任务快照,并异步提交给 PLSR 核心
|
1 month ago |
ywh
|
ffd715ae75
|
建立十态单轴状态机
|
1 month ago |
ywh
|
1dd8de5b2f
|
SFD900~1419 现在可以安全保存到片内 Flash
|
1 month ago |
ywh
|
1fa91b403e
|
固化四轴地址映射,包括HSD、SFD、SM、SD和I事件入口。[plsr_address_map.h (line 10)](F:\\Xinje_Modbus_IAR\\TrainCamp_yuwenhao_modbus\\PLSR\\Inc\\plsr_address_map.h:10)
实现紧凑软元件存储:HSD:384字节
SFD RAM缓存:2080字节
SD:192字节
SM:4字节
实现地址范围和空洞检查,例如SD1012~1019会判定为非法地址。
实现访问权限:HSD0~15、SM、SD禁止外部直接写入。
HSD460~539和SFD900~1419允许配置写入。
实现HSD相邻两个32位软元件的原子64位读写。
实现HSD脏标志和安全检查点。[plc_device.c (line 254)](F:\\Xinje_Modbus_IAR\\TrainCamp_yuwenhao_modbus\\PLSR\\Src\\plc_device.c:254)
实现I6000~6399事件地址计算,段号使用1~100。[plc_device.c (line 441)](F:\\Xinje_Modbus_IAR\\TrainCamp_yuwenhao_modbus\\PLSR\\Src\\plc_device.c:441)
在系统启动并开启Backup SRAM后初始化软元件层。[main.c (line 164)](F:\\Xinje_Modbus_IAR\\TrainCamp_yuwenhao_modbus\\Core\\Src\\main.c:164)
将新模块加入IAR工程和头文件搜索路径。
|
1 month ago |
ywh
|
3986737ec8
|
写了一点PLSR的文档
|
1 month ago |
ywh
|
d49b1f3663
|
写了点测试报告,增加了提升单数个寄存器读取效率的功能
|
1 month ago |
ywh
|
cac11d26c2
|
增加了ccram的配置
|
1 month ago |
ywh
|
d6825564ee
|
新增掉电保持功能
|
1 month ago |
ywh
|
3a44a1e033
|
新增ModbusRTU代码,测试通过,可以和触摸屏通信
|
1 month ago |
ywh
|
c29722f2ac
|
增加了一些注释
|
1 month ago |
ywh
|
29ab30cffd
|
移植完ucosII,并写了一个最小启动任务,测试通过
|
1 month ago |
ywh
|
32de64be9f
|
配置了一下串口
|
1 month ago |
ywh
|
67971b3770
|
HAL库新工程
|
1 month ago |