发布时间:2026/8/16 3:36:13
从零写一个工控多协议通讯库(五):画面组态——从写死一个监视器,到用组态把它拼出来 本文首发于我的博客talkplc.com系《从零写一个工控多协议通讯库》系列第五篇。转载请注明出处。第四篇接第二种协议时立过一个标准新协议进来框架和界面一行不改。S7 通过了考试。但界面本身一直是块心病——协议树、点表、收发帧监视全是写死在MainWindow里的。这篇把界面也变成数据原来是我写一个监控软件现在监控软件的页面由组态软件拼出来。项目代号 talkplc个人时间与设备自研实现不碰任何厂商代码。起点一份代码即界面的监视器talkplc 的监视窗口长这样左边协议树右边串口参数、八列点表、收发帧监视顶上一颗连接状态灯。功能没毛病但每加一个显示需求都要改 C 重新编译。界面是代码不是数据。组态软件WinCC、组态王、Ignition 这类的路子正好相反界面是一份配置文件运行器加载它、按配置采集和显示。好处人人都知道。但真下手做的时候问题一个一个冒出来。设计器画的东西运行器怎么认这需要一个双方都认的东西也就是契约。构件数值、仪表、按钮这些怎么加才不用改一堆地方这个问题协议层已经答过一次注册表。还有表格、设备列表这种长得像表的东西是一个一个写还是有别的办法第一步契约先行别管界面设计器和运行器是两个角色工控惯例是组态环境和运行环境分开。但它们之间只需要一个东西工程文件。所以第一刀切在数据上。工程 project connections[] screens[] connections[i] 一个 tp_conn_config 一个 id协议/链路/点表全是已有的 screens[i] 画布尺寸 widgets[]构件数组 widgets[j] type rect 绑定(conn id 点名) 各自属性构件绑定用名字连接 id 加点名而不是索引稳定、可读手改 JSON 也不容易错运行时再解析成索引。旧的单连接配置文件自动视作一个iddefault的连接向前兼容白送。有了契约程序形态反而是小事。一个 exe 两个模式--design进设计器产出工程--screen进运行器消费工程。设计器只产不跑设计态不连设备构件画占位运行器只跑不编辑。将来要拆成两个程序或者把运行器下沉到嵌入式LVGL契约一个字不用改。内核照旧零改。运行器核心tp_runtime是个纯 C 引擎吃一份工程每连接自动开一个会话每拍把值递给渲染层。Qt 只是它的一个前端。构件自己报属性属性面板谁也不认识设计器里最容易被低估的是属性面板。我的做法是让每个构件自己声明有哪些属性绑定、量程、颜色、动作面板只负责把声明渲染成编辑行、把编辑写回去QListWidgetPropGaugeItem::typeProps()const{QListWidgetPropL;LwpMake(unit,单位,WP_Text)wpMake(min,最小,WP_Real)wpMake(max,最大,WP_Real);returnL;}面板是通用的加构件不用改面板。这句话后来被我自己打脸了一次。画面跳转按钮有个 bug属性面板显示目标画面画面1存盘后却是空的跳转永远没反应。查下来是两个不起眼的事凑在一起——下拉框显示着第一项但这个值从没被写进构件。你看到的和你存下来的不是一回事。修法是把所见即所存定成面板的硬规则值为空时把显示着的默认项真正提交进去。这个 bug 比功能本身值钱。通用 UI 的坑往往就藏在显示和数据的缝隙里。加构件和加协议一个待遇前四篇最得意的设计是协议注册表tp_registry名字到工厂加协议等于加一行框架核心零改。那构件凭什么例外// gui/screen/items/TableItem.cpp 文件尾staticScreenItem*makeTable(ints,intw,consttp_screen_widget_td){returnnewTableItem(s,w,d);}namespace{structTableRegistrar{TableRegistrar(){ItemInfo ii{table,表格,70,360,260,paintTableIcon,makeTable};itemRegistryAdd(ii);}}tableReg_;}每个构件一个自包含文件文件尾一个静态注册器把自己登记进ItemRegistry登记的内容是类型名、调色板标签、默认尺寸、图标、工厂。设计器的调色板和工厂只读注册表。工厂 switch、调色板数组、图标 if/else这些我在第一版里亲手写过的东西全都不存在了。加一个构件 加一个文件 CMake 一行。和加协议一个待遇。一段弯路专门构件的坑接下来我犯了这篇里最大的错值得原样记下来。做设备管理页左边设备列表右边选中设备的点表和参数的时候我按老习惯写了三个专门构件类TableItem点表四列写死、DeviceListItem设备列表、DevParamsItem参数卡带编辑按钮。每个都要新类、工厂分支、调色板注册、图标、默认尺寸。注册表明明已经把成本降到加一个文件了我还在往一个文件里堆类。手上有了新工具脑袋还在旧习惯里。想通之后全部推倒。点表、设备列表、参数卡本质是同一种东西一张表只是数据源不同。于是通用表格有了source属性conn是整连接点表可以子集选点devices是设备清单行点击可以选中设备devattr是选中设备的属性卡。列用columns配行点击动作用row_action配。参数卡上那个编辑参数按钮就是普通按钮构件的一个动作actionparams。{type:table,source:devices,columns:dot,id,proto,row_action:select,rect:[40,96,300,660]}上面这七行就是原来 DeviceListItem 那 150 行类的全部。后来我给自己定了个规矩再遇到表状的东西先想能不能用通用表格配出来能配就不写类。让右侧跟着左侧走master-detail 还差一口气左边点了一台设备右边的点表、仪表怎么跟着换给构件绑定加一个特殊值conn意思是跟随运行器当前选中的设备。选中状态放在tp_runtime里绑定解析每次即时求值解析成选中的连接 id。任何构件绑上就自动联动跨设备同名点位比如都叫 temp无缝跟随不同名的显示无效。参数编辑也顺下来了。画面上一个编辑参数按钮绑点了弹出该设备当前值预填的表单。表单字段来自协议清单protocols.json每种协议声明自己有哪些可编辑参数又是一层配置。确定之后改配置、断开重连、自动存回工程 JSON。运行中的监视页面可以改波特率、换 IP改完状态灯闪一下连接中就回来了。验收把监视器拼回来说再多验收标准就一条原来写死的那个监视页面现在能用设计器拼出来。标题是文本构件点表是通用表格绑连接写入行是输入框绑点位仪表盘是三个 gauge。原来几百行 C 的界面现在是四十来行 JSON。点表里每一行的值和状态是活的仪表的指针在动。再往上叠一层就是完整的设备管理页三台设备三种协议S7、Modbus RTU、Omron NJ全部跑内置仿真从站点左边的行右边整块跟着换参数卡上改个采集周期重连生效存盘留痕。而它本身也是设计器里拖出来的没有硬件怎么验证老规矩sim链路三台仿真从站一起跑画面上的值就是活的。纯 C 的契约层工程读写、绑定解析、选中、重连在 ctest 里跑一遍全绿GUI 层人工过——画面来回切几轮看跳转设备列表点几行看右侧跟不跟参数改个采集周期看状态灯闪一下连接中再回来。没有 PLC 也能把整条画面逻辑过一遍这套方法从第一篇用到现在。接下来四篇立住了数据面协议是外挂的这一篇立住了表达面。工程 JSON 是设计器和运行器之间唯一的东西构件自描述加注册表加构件和加协议一样便宜表状界面是配置不是类型这条弯路比任何功能都值钱一个字符master-detail 免费送。后面排得上号的趋势曲线window_s字段从第一版起就躺在契约里等着被用、设计器里一键生成设备页、把纯 C 运行器搬到 LVGL 上。契约不变换个前端而已。每加一层都回来对照一次改动越小说明当初的抽象越对。系列前四篇① 架构与传输抽象 · ② Modbus TCP 与重构 · ③ 数据构件仪表盘 · ④ 西门子 S7

相关新闻

2026/8/16 3:36:13

Python趣味游戏开发:少儿编程启蒙实践

1. 项目概述:用Python打造趣味小游戏的启蒙实践这个项目源于我在少儿编程教学中的一次课堂实践——通过编写简单小游戏来巩固Python基础知识。不同于传统枯燥的语法练习,游戏开发能让孩子在创造中获得即时反馈,当看到自己编写的代码变成可交互…

2026/8/16 3:36:13

渗透测试入门指南:从环境搭建到实战技巧

1. 渗透测试入门基础解析第一次接触渗透测试的新手往往会被各种专业术语和工具吓到,但任何安全专家都是从这一步开始的。渗透测试本质上是通过模拟黑客攻击的方式,评估系统安全性的过程。就像医生给病人做体检一样,渗透测试人员用专业工具和方…

2026/8/16 3:31:12

数据分析转大模型:能跑通 Demo 的很多,能上线的很少

聊《数据分析转大模型实战,第一道门槛可能不是算法》之前,先说一句实在的:别急着背概念,先看它在真实项目里到底解决什么问题。摘要从写 SQL 出报表到做智能分析 Agent,很多人以为换个工具就能上手。但我做完第一个上线…

2026/8/16 4:36:16

macOS 13输入法卡顿排查:搜狗输入法性能问题诊断与解决方案

1. 项目概述:当输入法成为Mac的“性能刺客”如果你正在使用Mac,特别是升级到macOS 13 Ventura之后,突然发现系统时不时地“卡”一下——比如切换应用时动画掉帧、打字时光标反应迟钝、甚至整个桌面都短暂失去响应,那么你很可能不是…

2026/8/16 4:36:16

Work Buddy 的 4 种线上死法:AI Agent 越智能,我越不敢开生产权限

Work Buddy 的 4 种线上死法:AI Agent 越智能,我越不敢开生产权限 AI Agent生产环境踩坑实录:从权限失控到稳定运行的180天 周五下午3点15分,监控大屏突然跳出刺眼的红色警报--我们的AI Agent Work Buddy正在以每秒20次的异常频率调用计费API。当我冲到终端前紧急掐断服务时,这…

2026/8/16 4:36:16

基于MCP协议与Chrome DevTools的AI浏览器自动化实战指南

1. 从“手动点点点”到“AI替你点”:为什么我们需要让AI掌握浏览器自动化如果你和我一样,是个常年泡在浏览器里的开发者,那你肯定对Chrome DevTools(开发者工具)又爱又恨。爱的是,它几乎是我们调试前端、分…

2026/8/16 4:36:16

数据治理不规范?标准化数据治理如何搭建与落地?

标准订了一摞,数据还是各说各话,问题出在哪?前阵子跟一位制造业的数据负责人聊天,他说了一句话让我特别有共鸣。公司花了大半年做数据治理项目——定了标准、建了平台、洗了数据。结果上个月做跨系统报表时,ERP和MES的…

2026/8/16 4:36:16

OpenClaw智能体框架在大气科学工作流自动化中的应用实践

1. 项目概述:当“小龙虾”遇上大气科学最近在AI智能体圈子里,OpenClaw(大家戏称“小龙虾”)的热度一直居高不下。作为一个开源的、可本地化部署的AI智能体框架,它允许你将不同的大语言模型(LLM)…

2026/8/16 4:31:16

HTTP代理实战完全指南:从入门到精通的每一个坑都替你踩过了

写在前面:我是一个用了快六年 HTTP 代理的老玩家,从最早免费代理 IP 挨个试到现在管理着日请求量百万级的代理池,这中间踩过的坑、交过的学费、攒下的经验,足够写一本小册子。这篇文章不讲虚的,从原理到代码、从选型到…

2026/8/16 0:00:35

工业通信系统底层逻辑:04 反射——高频能量撞墙之后会发生什么?

第四篇:反射——高频能量撞墙之后会发生什么? —— 你以为信号已经过去了,其实它正在回来打你 老Q的现场笔记 第五季,我们正式进入工业神经系统层。这里不再是单个设备的战斗,而是整个工厂“经脉”层面的秩序之战。从这一篇开始,你将第一次看清:看似简单的信号传播,背…

2026/8/16 0:00:36

工业传感器与变送器详解:序章 从物理世界到工业数据

序章 从物理世界到工业数据 ——重新认识工业传感器与变送器 工业自动化系统正变得日益复杂。今天的工业现场早已不是简单的控制回路,而是由多层技术共同构成的立体体系:PLC、DCS、SCADA、MES、工业互联网、边缘计算与人工智能。控制系统可以执行复杂算法,工业网络可以实现…

2026/8/16 0:00:35

工业通信系统底层逻辑:04 反射——高频能量撞墙之后会发生什么?

第四篇:反射——高频能量撞墙之后会发生什么? —— 你以为信号已经过去了,其实它正在回来打你 老Q的现场笔记 第五季,我们正式进入工业神经系统层。这里不再是单个设备的战斗,而是整个工厂“经脉”层面的秩序之战。从这一篇开始,你将第一次看清:看似简单的信号传播,背…

2026/8/16 0:00:36

工业传感器与变送器详解:序章 从物理世界到工业数据

序章 从物理世界到工业数据 ——重新认识工业传感器与变送器 工业自动化系统正变得日益复杂。今天的工业现场早已不是简单的控制回路,而是由多层技术共同构成的立体体系:PLC、DCS、SCADA、MES、工业互联网、边缘计算与人工智能。控制系统可以执行复杂算法,工业网络可以实现…

2026/8/15 9:46:39

实测才敢推 AI论文网站 2026最新测评与推荐

2026年真正好用的AI论文网站,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。一、综…

2026/8/15 4:56:16

2026必备!AI论文网站测评:最新推荐与深度对比

2026年真正好用的AI论文网站,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。 一、…

2026/8/15 9:46:30

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

一天写完毕业论文在2026年已不再是天方夜谭。2026年最炸裂、实测能大幅提速的AI论文写作工具,覆盖选题构思、文献整理、内容生成、格式排版等核心场景,真正帮你高效搞定论文难题。 一、全流程王者:一站式搞定论文全链路(一天定稿首…