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.
当前开发交接
更新日期:2026-08-27。本文件只保留当前工作区、本轮验证和下一步。
当前状态
当前窗口需求.md 的多字数值扩展已完成:现有 Int16/Float32 链路已扩展为 Int16/Int32/Float32/Float64
- HMI 数值显示/输入、编辑态数据监控、运行态自由监控、离线初始值、工程 JSON、地址冲突检查、PLC 轮询和 Modbus 写入均使用同一套类型与连续字规则
- 项目仍只生成和运行本地 HMI/梯形图仿真,不生成、编译或下载 PLC 程序;真机本地梯形图轨迹仍只读 PLC 缓存并在临时仓库推算
- 本轮没有实现 Int64、无符号数、二/八/十六进制、ASCII、POU 变量监控、信捷原版寄存器网格或自定义监控偏移
- TouchWin 没有原生 Double64 数值控件;本项目的
Double (Float64) HMI 是基于 PLC 连续四个 D 的增强能力
梯形图竖线连续录入
- 工具栏“竖线”和
F12 成功连接当前行与下一行后,会保持原列位置并自动选择下一视觉行;连续操作可以逐段向下建立竖线
- 推进时保留网格、输出槽或列边界的原选择形态,目标行超出可视区域时画布自动滚动
- 当前段已经存在时只向下推进,不重复保存连接、不把工程标记为修改,也不生成空撤销记录;状态栏会提示该段原本已经存在
- 到达最后一个现有行后明确停止,不自动创建空行;鼠标拖动画竖线的原有批量行为不变
梯形图鼠标画线预览
- 鼠标画线/删线拖动时由
LogicEditorWidget 前景层绘制临时横线或竖线预览,移动过程中不修改工程模型
- 合法预览使用蓝色(画线)或橙色(删线),偏离同一行/同一列时使用红色提示;释放时才调用范围编辑服务一次性提交
- 非法释放会丢弃当前整次预览,之前已保存的线路不受影响;合法释放只产生一条撤销记录
- 横线范围目标已经是相同状态时直接成功返回,不标记工程修改,也不生成空历史
- 在鼠标画线或删线模式下按
Esc 会退出工具并返回选择模式,同时取消拖动预览和工具栏勾选
类型与地址规则
| 类型 |
占用字数 |
起始地址 |
输入规则 |
Int16 |
1 |
D0~D4000 |
-32768~32767 的整数 |
Int32 |
2 |
D0~D3999 |
-2147483648~2147483647 的整数 |
Float32 |
2 |
D0~D3999 |
有限 IEEE-754 单精度值 |
Float64 |
4 |
偶数 D0~D3996 |
有限 IEEE-754 双精度值 |
- 多字值固定按信捷顺序保存:低地址是低 16 位,地址递增时依次保存更高的 16 位
Int32Codec、Float32Codec、Float64Codec 和统一数值 variant 负责类型化读写;底层仓库仍只保存原始 16 位字
- Float32 显示 9 位有效数字,Double 显示 17 位有效数字;浮点输入使用 C locale 并支持科学计数法,NaN、Inf 和溢出值拒绝
- Double 奇数首地址、Int32/Float32 的
D4000、Double 的 D3997 及其他越界范围在领域层拒绝
HMI、监控与工程
- HMI 属性面板和运行输入支持四种 D 类型;Int16/Int32 使用整数输入,Float32/Double 使用科学计数法文本输入
- HMI 多字绑定按完整字范围检查:相同地址和相同类型允许重复绑定,部分重叠或同起始地址不同类型拒绝
- MOVE、ADD、SUB 仍是 16 位整数指令,禁止写入任何 Int32、Float32 或 Float64 HMI 值占用的 D
- 编辑态数据监控和运行态自由监控继续共用
RegisterMonitorService;Int32/Float32 批量步长为 2,Double 步长为 4,类型列显示完整占用范围
- 多字离线初始值按连续字块完整捕获;停止仿真后恢复 Int32/Float32/Double 的全部占用字
- 监控表最多 64 行,PLC 上限按去重后的实际 16 位 M/D 地址计数,最多 256 个;候选监控集合会在提交前验证,失败不留下部分监控点
- 工程 JSON 仍是严格
formatVersion: "2.0",dataType 新增 int32 和 float64;未知的 int64 等枚举直接拒绝
PLC 通信
- 仓库增加通用
readWords/writeWords 连续字接口;虚拟仓库完整校验后一次复制,PLC 仓库保留 Int16 单字通道并为 2~4 字值使用多字通道
- Int16 继续写一个 Holding Register;Int32、Float32 和 Double 分别把 2 个或 4 个连续字放在一次多寄存器请求中发送
- 轮询元数据从 Float32 起始地址泛化为连续
RegisterWordRange;每个读块最多 120 字,拆块边界不会切开 2 字或 4 字值
- 地址和多字范围在当前异步回复结束后一起切换;候选配置失败时运行模式和监控模型都恢复旧状态
- PLC 缓存仍只在真实轮询读回后更新,不以写请求受理代替设备确认
最近验证
- 13 个 Release Functional 测试目标全量通过
- 新增回归覆盖 Int32 最小/最大值和负数、Float32
20.0 字序、Double 1.0 字序、Double 偶数地址、NaN/Inf、JSON 往返、HMI 复制粘贴、多字冲突和 16 位梯形图写入保护
- 监控回归覆盖四类型批量步长、完整轮询地址、离线初始值捕获、停止仿真恢复、64 行与 256 实际地址上限的候选拒绝
- PLC 回归覆盖 Int16 单字路径、Int32/Double 一次多字回调、Double
D118~D121 不跨 120 字边界、无法合法拆分的重叠范围拒绝和地址集合原子切换
- 梯形图回归新增 F12 同列连续下移、目标自动滚动、末行停止、逐段撤销,以及重复竖线不产生脏状态和空历史
- 梯形图画线回归覆盖拖动预览、非法释放整次取消、合法释放一次提交和一次撤销恢复
- 梯形图画线回归覆盖
Esc 退出鼠标画线和删线模式
- Qt Release 主程序已重新构建到
build/release/release/integrated_platform.exe,离屏启动 3 秒正常保持事件循环
git diff --check 通过,没有空白错误
- 本轮竖线改动只涉及编辑服务和画布交互,不访问 PLC,因此没有重复真机测试
工作区与下一步
- 本轮代码和说明文档已提交 Git;工作区仅保留既有
AGENTS.md 修改和未跟踪的 docx 文件
- 设备可用后在 PLC STOP 状态先读取一组连续 D 原值,分别验证 Int32、Float32、Double 的一次多寄存器写入与读回,再恢复全部原值并读回确认
- 人工打开控制逻辑页面,分别从网格、列边界和第 10 列位置连续按 F12,检查选中框、滚动和状态栏提示
- 人工打开 HMI 页面和数据监控,检查四类型下拉框、Double 偶数地址提示、长数值显示和不同系统缩放下的输入框布局