本文同步发布于 GitHub / Gitee / GitCode,三个平台任选下载

先讲两个真事

第一个事。

前几年去一个厂,他们的空压机房装了温控系统。甲方要求看数据——温度曲线、历史记录、微信报警。厂里三个电工折腾了一个月,最后买了某品牌组态软件,花了八千多,还得配一台专用电脑。那个组态软件装完光是画画面就画了一周。

我问电工老李在哪学的组态软件,他说:“学个屁,淘宝买了个破解教程,边看边画。”

第二个事。

另一个厂,PLC 采集数据要上云。厂里请了家系统集成公司,报价八万。老板嫌贵,让自己电工搞。电工在网上搜了一个 Modbus 采集软件,英文界面、要配 YAML 文件、要装 Python 环境、数据库还得另外装。一套下来,电工崩溃了。

最后花了三万找了个兼职程序员才搞定。

这两个事让我想做一个东西:让电工自己就能干。

不是做出来让程序员用的,是做出来给一线电工用的。


我没见过哪个电工喜欢学新东西的

电工这个行当,什么人都见过。二十五岁的、五十五岁的。大专生、高中生,也有些小学毕业跟师傅出师的。共同点是:

  • 他们不喜欢看文档。说明书拿在手里翻两页就丢一边。
  • 他们很怕装软件。"装个 Python"对有些人来说跟"重装系统"是一个级别的操作。
  • 他们不想学新东西。“这个用 Excel 能不能搞?”——这是电工问得最多的一句话。
  • 但他们真的很能解决问题。现场有什么故障,拉个线、换个板子、调个参数,三两下就搞定了。

所以如果你做一个采集软件,要电工去学 YAML 配置、学数据库操作、学 Linux 命令,那这个软件就是个失败品。

要让他们能干活,但不能让他们学新东西。 这是核心矛盾。


我做的东西很简单:填 Excel,双击 .exe

14,000 行 Go 代码,一个文件搞定。

怎么用呢?

第一步: 把 .exe 放到电脑上。

第二步: 在同一目录下放一个 Excel 表格。

这个表格长什么样子?就长这样——变量名、设备地址、寄存器地址、采集频率、通讯参数……都是电工看得懂的词

关键是,如果你不放表格,程序会自动帮你生成一个空表,里面已经画好了列名。你只需要填数据就行。

而且这个模板不是随便画的——它包含了所有可能用到的应用场景。 温度监控、压力采集、电表读数、液位控制……不管你在哪个行业,拿过来改一下变量名和设备地址就能用。这不是一个"基础的壳子让你从头搭",而是一个已经包含了各种实战经验的完整模板,改改就好。

更关键的是——你填错了,软件会帮你兜底。

有些错误比较严重,比如串口号写错了、设备根本没接,软件不会自作主张乱改——但会在表格的错误信息列里告诉你哪个变量采集异常,并给出排查提示。只提示,不背锅。

但有些地方,你可以放心偷懒:

  • 打包大小不填或越界?软件默认用最大打包,性能拉满。
  • 通讯参数忘了配?自动用最通用的默认值。
  • 记录间隔没设?自动按常规频率存,不会爆库。

这些默认值不是随便拍脑袋定的——是我这个干了三十年的老电工,一个一个现场试出来的。 温度监控用多快的采集频率、电表读数间隔设多久、通讯超时设多少合适……覆盖了大部分常见场景。你什么都不填,软件也能跑;你填了但填得不对劲,软件也一样跑。

跑归跑,它会记录:表格里每个变量后面有错误信息列,告诉你"这个变量采集不到,可能是什么原因"——串口没通、地址不对、参数不匹配,一条条列清楚。同时微信推送里也会告诉你:“当前有 3 个变量采集异常,请查看表格。”

你不能指望一个电工坐在电脑前 debug。但你可以让软件替他 debug。

总之我的原则就一句话:该软件干的,不要让人工干。 能自动处理就自动处理,处理不了的再告诉人。

第三步: 双击 .exe。

没了。

浏览器打开 http://127.0.0.1:53046/统计,按照提示操作即可。

登录密码是你自己在 Excel 表格里设定的,别说忘记了密码。表格里还有使用者信息,方便排查问题时我联系你——你若不填,软件一样跑,不留隐私。所有默认设置都在源代码里,想改哪里直接改代码重新编译就好,控制权完全在你手里。

想看曲线图?在 http://127.0.0.1:53046/统计 页面里找到 SQLiteDB 查询的链接,改一下参数就能用。


不是吹的,这破代码跑了六年了

我听人说过一句话:工业软件要么没跑过,要么跑了十年。

我这个从第一个现场跑到现在,六七年了。见过的现场比任何一个工业软件公司的销售都多:

  • 造纸厂烘缸温度监控。蒸汽阀门一开,温度曲线跟过山车一样。
  • 中央空调系统远程监控。一个项目几十个温控器,分布在好几层楼。
  • 污水处理厂。PLC 采集频率要求毫秒级,一个字没写对就丢数据。
  • 电泳车间。强电磁干扰的环境,普通采集卡根本扛不住。

这些现场踩过的坑,我都写在代码里了。你在 14,000 行里能看到什么:

  • 怎么在串口强干扰下保持通讯稳定(连续失败多少次才判异常,异常后自动恢复)
  • 怎么让几千个变量不打架(每个串口独立 goroutine,同一个设备批量打包读)
  • 怎么让数据库不膨胀到爆炸(值没变化超过一定比例就不存)
  • 怎么远程升级设备固件(浏览器上传 .exe,自动替换、自动重启,不需要人去现场)

这些东西,翻书学不到,只有现场踩过坑才知道。


后来我发现,这东西还能远程采集

中国很多工厂的现状是:设备在全国各地,但技术人员窝在总部。

传统的方案是什么?拉专线、搭 VPN、买云平台。一个项目做下来几万块。

我换了个思路:用最便宜的 DTU 盒子。

这个东西长什么样?跟口红一样大,几十块钱一个。自带 eSIM,不用买卡插卡,开机就能上网——而且厂家送了 8 年免费流量,非频繁采集完全够用。它做的事情很简单:把串口数据转成 TCP 数据,丢到互联网上。

然后服务器的虚拟串口软件把远程的 TCP 数据转回本地 COM 口。虚拟串口软件最好用同一个品牌的,兼容性最好。

具体什么品牌我不说了,这是我这几十年的老电工精选出来的,算是我报恩推广。 你们自己去他们官网搜 DTU 就能找到。总之靠谱、便宜、省心。

神奇的事情出现了:对 one-modbus 来说,它根本不知道这个 COM 口后面是连了 10 米的线还是 1000 公里的网线。它只管读数据。

所以一个 DTU + 一根 RS-485 线 = 一个现场最多接 254 台设备。

注意这个成本:¥99 搞定一个现场的采集。

更离谱的是,一台服务器配上虚拟串口软件,可以挂最多 254 个 DTU(一个 DTU 占一个串口)。每个 DTU 带一个现场、每个现场 254 台设备——一台服务器理论上能采集六万多台设备。 当然了,一般用不了这么多,但说明这套架构的上限很高。

当然这不是重点。重点是——电工兄弟不用去现场了。

以前一个现场出问题,电工要开车两小时过去看看是不是通讯线松了。现在呢?打开浏览器看一下数据有没有变就知道了。


微信报警和曲线图是最实用的

线下跟电工聊天,他们最常问我的是两个功能:

“数据能发到手机上吗?”

能。企业微信群机器人推送。压力超限了、温度过高了、通讯断了,微信上第一时间知道。推送内容不是冰冷的报警码,而是:

温度传感器_1: 85.3°C(超限)
位置: 锅炉房2号机组
当前值: 85.3, 报警上限: 80.0

“能看历史曲线吗?”

能。浏览器打开一个链接,直接返回一张 PNG 曲线图。

有人跟我说这个太简陋了,不如组态软件好看。我说,那个电工只是想看一下今天凌晨三点压力有没有异常,他不想学怎么画 HMI 画面。

而且我还加了一个很多人想不到的功能——软件每隔一小时自动把运行状态推到你的企业微信。 不用打开浏览器、不用记 IP 地址、不用登录。手机上一看就知道:C盘还剩多少空间、采集正不正常、有没有变量报错、数据库有多大。有问题了它会告诉你,没问题了它也会告诉你。

浏览器上看最全的信息,手机上收最要紧的提醒——两个渠道,各管各的。

你想想看:你人在家里,手机震一下,打开微信就看到"当前有 2 个变量采集异常",跟看短信一样简单。这就是老电工想要的东西。


写在最后

我搞了一辈子自动化。在厂子里干过,在组态王上画过几百个画面,也被集成商坑过几十万。

做了这么多年,我最深的感受是:工业软件这个东西,不是给程序员做的,是给一线工人做的。

你的软件做得再牛,如果电工不会用,那就是废铁。

开源这个项目,不是为了让更多的程序员去 Star、去 Fork。我是想让电工兄弟知道:以后你们自己就能干这活了。

没了中间商赚差价,没了集成商给你报八万的项目,没了让人头疼的组态软件。

一个 Excel 表格,双击 .exe,完事。


下载地址(点 Releases 可直接下载 .exe,不用自己编译):

  • GitHub:https://github.com/dingjiazhi/one-modbus
  • Gitee(国内快):https://gitee.com/dingjiazhi/one-modbus
  • GitCode:https://gitcode.com/weixin_45444393/one-modbus

三个平台都支持直接从 Releases 页面下载编译好的 .exe,电工兄弟双击即用。
开源协议:GNU Affero General Public License v3.0 (AGPL-3.0)。
个人和小公司随便用,如果公司拿去修改后做成商业服务卖给客户,必须公开修改后的源码。
有问题欢迎提 Issue,我有空就回。

直接用,别客气。
在这里插入图片描述

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐