鲲鹏恒控的跨平台交付 —— Windows 上组态,Linux 上运行

> 现场不都是 Windows。国产化替代、客户指定 Ubuntu、车间那台老工控机装的是 Linux...... 鲲鹏恒控现在**同一个工程,编译时选平台**:Windows 运行程序、Linux 运行程序各出一份。**编辑器还在 Windows 上,交付不再只有 Windows 一条路。**

【配图:编辑器"编译"对话框 ------ 平台选择(Windows 运行程序 / Linux 运行程序)+ 输出目录】


一、编译时选平台 ------ 一个工程,两份交付

在编辑器里点"编译"(F7),先选目标平台再编:

  • **选 Windows** → 出原来的 Windows 运行程序(`.exe`),配方一字未动。

  • **选 Linux** → 出 Linux 运行程序(原生可执行文件),和 Windows 包**同源、同工程、同画面**。

两个平台的产物目录带不同后缀、**互不覆盖** ------ 同一个工程,今天编个 Windows 版给 A 客户,明天编个 Linux 版给 B 客户,画面、点表、脚本、报警一律通用,**不用维护两份工程**。


二、Linux 上长什么样 ------ 全屏 kiosk,就是"现场上位机"的样子

Linux 版不是"开个浏览器输网址",那没有交付软件的样子。它是一个**独立的运行程序**:

  • 启动后自动以**全屏 kiosk** 拉起界面 ------ 无地址栏、无标签页、无浏览器痕迹,整屏只有你的监控画面,和 Windows 版的无边框全屏**同一口径**。

  • 画面由系统浏览器(Chromium / Firefox)渲染,数据走**本地回环**的 WebSocket 真桥 ------ 服务只绑定 `127.0.0.1`,端口被占自动顺延,**不对外开网络端口**。

  • 需要调试?加 `--windowed` 参数退回普通窗口;想指定浏览器?`--browser` 参数说了算。

现场操作员看到的就是一台"只会跑监控画面"的机器 ------ 按 `Alt+F4` 退出。

【配图:Linux 真机全屏运行画面 ------ 整屏监控界面,无地址栏/标签页】


三、目标机什么都不用装

Linux 交付包是**自包含**的:目标机器**无需安装 .NET、无需配运行环境**,拷过去就能跑。包里该有的都有:

| 内容 | 说明 |

|---|---|

| 运行程序(原生可执行) | 自包含,连运行时都带着 |

| `wwwroot\` | 画面资源,放在程序旁自动找到 |

| `start.sh` / `stop.sh` | 启动 / 停止脚本(文件名故意用 ASCII ------ 中文名经 U 盘、共享目录拷贝易乱码) |

| 双击启动图标 | `.desktop` 图标 + 一键安装脚本,**双击就能启动**,也能装进应用列表 |

| `使用说明-Linux.txt` | 给现场工程师的部署说明 |

解压 → 双击图标(或 `./start.sh`)→ 出画面。完事。

【配图:Linux 交付包目录结构 + 桌面双击图标】


四、为什么敢做 ------ 数据链路天然跨平台,老交付链一行没动

这不是"硬凑"出来的跨平台,是架构本来就走在了对的路上:

  • **采集、实时库、脚本、报警、历史、转发 ------ 整条数据链路零 Windows 专有调用**。组态软件最要紧的"数据跑得住",在 Linux 上就是原样能跑。

  • **前后端分离**早就做了:后端是无头内核,前端是 HTML/SVG。Linux 版只是把"渲染宿主"从 WebView2 换成系统浏览器,画面渲染逻辑一行没改。

  • **Windows 交付链零改动**:Windows 分支就是原来的发布函数,函数体一字未动;Linux 是**新增**的独立分支和打包脚本。老用户的东西,我们不碰。


五、不是"PPT 功能" ------ 实测过

跨平台最容易被做成"理论上支持"。我们拿 Linux 真环境跑过全链路(Ubuntu 22.04,2026-10-08):

| 验证项 | 结果 |

|---|---|

| Linux 原生运行程序 | ✅ 原生可执行文件直接运行(非模拟、非转译) |

| 采集 / 脚本 / 报警 | ✅ 液位温度持续变化,高位报警照常触发 |

| 浏览器渲染运行画面 | ✅ 登录 → 画面 → 数值实时跳动 |

| JS 控制台 | ✅ 零报错、零警告 |

| 全屏 kiosk | ✅ 实测 `fullscreen`,整屏无浏览器痕迹 |

| 编辑器内编 Linux 包 | ✅ 端到端回归测试真跑一次发布,产物数百文件、百余 MB,关键文件逐项自检 |

**并且把"编辑器编 Linux 包"钉进了自动化回归** ------ 每次发版都会真编一次 Linux 包、验产物形状,不会悄悄坏掉。


六、v0.4 补上:Linux 运行程序,和 Windows 一样能操作

跨平台交付一开始做到的是"Linux 上能看、能显示"。这一版把最后一段补齐了:

  • **运行态真下发**:运行窗口里的按钮、开关、滑块、输入框,在 Linux 上同样能把值**写到 PLC / 设备** ------ 和 Windows 版一致。

  • **登录门控**:要不要登录、谁能操作,同样由你摆不摆登录元件决定 ------ 两个平台同一套规则。

也就是说,同一个工程编译出的 Windows 版和 Linux 版,**能看、能操作、能控权限,能力完全对齐**。交出去,不用再想"这个功能 Linux 上有没有"。


七、如实交代(边界与建议)

我们习惯把话说全,不夸大:

  • **编辑器本身仍只在 Windows 上跑**(组态端用了 WPF + WebView2,这是有意的技术选型)。跨平台交付的是**运行程序**,"Windows 上组态、两平台运行"。

  • **现场浏览器建议装 Chromium**:Firefox 若已有实例在跑,kiosk 全屏会不生效(它会开个新标签页);snap 版 Firefox 还有更多坑。装个 Chromium,一切安好。

  • **Linux 上转发令牌 / 邮件密码存的是明文**(Windows 上有系统级加密,Linux 没有等价物)------ 适用于内网隔离场景,这条我们在持续改进。

  • **串口设备**需要目标机当前用户有串口权限(`dialout` 组),一行命令的事,说明里写了。

  • 已实测 x64(Ubuntu 22.04);arm64 / 其他发行版按需加。


八、一句话总结

**在 Windows 上把工程搭好,编译时选平台 ------ Windows 版、Linux 版各拿各的,目标机什么都不用装,双击图标就出全屏画面;两个平台能看、能操作,能力一致。** 现场是什么系统,你就交付什么系统。

相关推荐
XMAIPC_Robot1 小时前
储能控制器产品化:ARM+FPGA整机高低温、EMC可靠性测试实战总结
arm开发·人工智能·fpga开发·arm+fpga·rk3588+fpga
Martina_03211 小时前
AI生成的海岸城市一移动镜头,水面反射就跳?用6步统一反射探针、SSR与平面反射
图像处理·人工智能·平面·3d·ai·自然语言处理·游戏策划
Matlab程序猿1 小时前
【MATLAB源码-第459期】基于matlab的D-H模型与阻尼最小二乘逆运动学的六自由度机械臂五次轨迹规划及动力学前馈PD控制仿真。
人工智能·算法·matlab·d-h建模·六自由度串联机械臂
QYR-分析1 小时前
人机交互升级浪潮下,全球电容式触摸传感器市场格局与细分赛道深度研判
人工智能·人机交互
血小溅1 小时前
什么是 Agent?
人工智能
szxinmai主板定制专家1 小时前
面向虚拟电厂协调控制:RK3588+FPGA+AI边缘控制器设计思路与算力评估
人工智能·嵌入式硬件·fpga开发·机器人·jetson·zynq·振动采集
JingliAlex1 小时前
微信自动回复突然全停了?五个检查点从外到内
人工智能
谢亮_vipxieliang1 小时前
云原生存储进阶:CSI 演进与 AI 工作负载的存储架构设计
人工智能·云原生
ZZ202601152 小时前
维普露禾平台免费开放,聊聊教育垂直大模型的RAG实现思路
大数据·人工智能·系统架构·知识图谱