ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

工业 Qt 上位机全套开源库分类清单,随手而来的便利

工业 Qt 上位机全套开源库分类清单,随手而来的便利

今天来盘一下工业 Qt 上位机常用开源库分类。列个大概的清单(工控场景全覆盖,分通讯、数据解析、界面、日志、存储、协议、工具、嵌入式适配)
结合我这些年做 Qt 工控、Modbus 设备、RK 嵌入式、Windows 上位机的开发场景,以下是工业界一些常用的开源库,标注适用场景、优缺点、替代方案,方便大家选型。

一、工业总线通讯库(和 libmodbus 同分类,设备交互核心)

1. Modbus 系列

libmodbus:
支持 Modbus RTU/TCP/ASCII,跨 Windows/Linux/ARM,纯 C,轻量;Qt 直接调用。
适用:变频器、温控、仪表、485 / 网口设备。
QtModbus(Qt 官方内置模块)
Qt5.12+、Qt6 自带,QModbusTcpClient/QModbusRtuSerialMaster,C++ 原生 Qt 信号槽,无第三方编译。
优点:不用编译库、线程友好;缺点:批量读写性能弱,复杂异常处理不如 libmodbus。
modbuspp
C++ 封装 libmodbus,面向对象,简化 API;适合不想写 C 风格代码的 Qt 项目。

2. 以太网工业总线(PLC 主流协议)

  • libs7(Snap7)
    西门子 S7 协议开源库,S7-1200/1500/300/400、Smart200 PLC 读写,跨平台。
    工控标配,几乎所有西门子上位机都用它,读 DB 块、M 区、V 区。
  • EtherCAT:SOEM
    开源 EtherCAT 主站库,伺服、运动控制设备专用;RK 嵌入式、Windows 都能跑。
  • Profinet:pcapng-profinet / libpnng
    轻量 Profinet 抓包 / 简易客户端;主站商用库居多,开源仅调试用。
  • OPC UA(工业物联网通用标准)
    open62541:纯 C 开源 OPC UA 客户端 / 服务端,跨 ARM,工业设备对接 MES、云平台首选;
    Qt OpcUa(Qt 官方模块):Qt 封装 OPC UA,快速做 UA 客户端。
  • CAN 总线(车载 / 工控采集器)
    libsocketcan:Linux 嵌入式 CAN(比如RK3326就可以用);
    QCanBus(Qt 自带):Windows CANalyst、Linux socketcan 统一封装;
    libcanfestival:CANopen 协议,伺服、IO 模块。

3. 串口 / 485 通用串口库

Qt SerialPort(Qt 自带)
原生串口,无依赖,简易 485 调试;大数据收发稳定性一般。
libserialport
跨平台高性能串口,比 QtSerialPort 底层稳定,海量仪表轮询场景推荐。

二、数据处理 & 工控数值解析库(浮点、字节序、协议解析)

1.endianlite

跨平台大小端转换工具库,解决 Modbus 浮点、32 位寄存器高低字颠倒问题,仅头文件,无编译。

2.fmtlib/fmt

高性能格式化库,替代 sprintf,工业日志、数据打印速度远超 Qt 原生 QDebug。

3.nlohmann/json(json.hpp)

单头文件 JSON 解析,工控配置文件、设备参数导出、对接 HTTP 后台必备,全平台兼容。

4.protobuf(Google Protobuf)

二进制序列化,设备上报数据、上位机和后台服务通信,比 JSON 体积小、速度快;MES 对接高频使用。
libb64
Base64 编解码,图片、二进制采集数据上传云端。

三、日志系统(工控必须持久化日志、分级、滚动存储)

1.spdlog

工业最主流高性能日志库,C++,支持日志分级、按大小 / 时间分割日志文件、异步日志、控制台输出,兼容 Windows/Linux/ARM;比 Qt 文件读写日志性能高 10 倍以上。

2.log4cpp

老牌 C++ 日志,多线程稳定,适合老旧工控项目维护。

3.Qt 自带 QFile 日志

仅小型单机工具,不推荐大型产线上位机,无日志分割,多线程易乱码。

四、数据库存储库(设备历史曲线、报警记录、生产工单)

轻量本地存储(单机上位机,无服务器)

1.SQLite3(Qt 自带 QSqlite)

零配置本地数据库,存储历史采集数据、报警、工单;所有小型工控上位机标配。
sqlite_modern_cpp
C++ 封装 SQLite,简化 SQL 语句,不用手写原生 SQL。
对接服务器数据库(产线 MES、车间服务器)

2.MySQL/MariaDB:libmysqlclient + Qt QSqlMysql

车间多机同步生产数据。

3.PostgreSQL:libpq

大型工厂海量历史曲线存储,大数据量查询性能优于 MySQL。

4.nfluxDB Client C++

时序数据库专用库,工业采集高频点位(每秒 100 + 寄存器)存储曲线,专门处理时序数据,比 SQLite 快几十倍。

五、网络通信库(TCP/UDP/HTTP/MQTT,对接云、后台)

MQTT 物联网(设备上云、远程监控)

paho.mqtt.c:

纯 C MQTT 客户端,跨 ARM 嵌入式,对接阿里云 / 华为云 / 本地 MQTT 服务器;

qmqtt:

第三方 Qt MQTT 封装,信号槽风格,开发更快。
HTTP/HTTPS 客户端(对接 MES、Web 后台)

Qt Network(QNetworkAccessManager):

简易的 HTTP直接交互;

libcurl:

全功能 HTTP 库,支持 POST、文件上传、HTTPS、证书、超时控制,工业上传采集文件首选。

WebSocket:

Qt QWebSocket 自带,上位机网页端实时推送设备状态。

六、界面 / 图表可视化库(Qt 工控曲线、仪表盘、报表)

QCustomPlot(工控 TOP1 免费绘图库)

单头文件,无依赖,实时曲线、历史曲线、多坐标轴、报警阈值线,90% Qt 工控上位机在用;商用免费。

Qt Charts(Qt 商业模块,付费)

Qt 官方图表,简单,但大点位实时刷新卡顿,产线高频采集不推荐。

QSkinny / Qt Material

工业扁平化 UI 样式库,快速做现代化触控上位机界面。

Qwt

老牌科学绘图库,示波器、频谱分析设备上位机专用;API 偏老旧。

Qt Advanced Docking System

开源窗口停靠框架,类似 VS 多窗口布局,大型多功能工控软件必备。

七、文件、报表、打印库(生产报表导出)

libxlsxwriter

导出 Excel 报表,支持单元格、图表、打印,生产工单、设备数据报表导出刚需。

Poppler

PDF 生成 / 解析,导出报警 PDF 报表、设备说明书预览。

miniz

轻量 zip 压缩库,打包日志、采集数据批量导出。

八、加密、权限、校验工具库

mbedtls

轻量级加密库(替代 openssl),ARM 嵌入式友好;HTTPS 证书、MQTT 加密、设备数据加密传输。

CRC32/CRC16 开源工具库

自定义串口协议校验、数据完整性校验(libmodbus 自带 CRC16,自定义协议需单独)。

argon2

用户密码加密存储,上位机操作员登录权限管理。

九、嵌入式 Linux(RK3326)专用工具库

libgpiod

Linux 硬件 GPIO 控制,工控 IO 板、指示灯、继电器控制。

libudev

自动识别 USB 设备(485 转换器、采集仪、CAN 适配器),热插拔检测。
libevdev
触控屏、工业按键外设驱动适配。

十、跨平台通用工具库

Boost

超大工具集:多线程、定时器、内存池、字符串处理;缺点库体积大,小型嵌入式慎用。

tinyxml2

XML 配置文件解析,设备参数配置 XML 文件,轻量替代 Qt XML。

rapidxml

高速 XML 解析,大批量设备配置加载。

附加说明:

快速选型优先级(按你的项目场景)

小型单机设备上位机(Modbus 仪表、单机检测设备)

必选:libmodbus + QCustomPlot + spdlog + nlohmann/json + SQLite
可选:libcurl、paho.mqtt.c

产线多设备工控软件(PLC + 多 Modbus + 曲线报表 + MES 对接)

必选:Snap7 (libs7) + libmodbus + QCustomPlot + spdlog + InfluxDB 客户端 + libxlsxwriter + libcurl
可选:open62541 (OPC UA)、Qt Advanced Docking

RK 嵌入式工业一体机(无系统资源,轻量化)

必选:libmodbus、libsocketcan、libgpiod、spdlog、endianlite、mbedtls
禁用:Boost、重型图表库

注:

全部上面列出均为开源免费可商用,无版权风险(QCustomPlot、libmodbus、spdlog MIT/LGPL 协议,工控商用无问题);
Qt Charts、Qt OPC UA 属于 Qt 商业模块,需要购买 Qt 授权,优先选开源替代;
嵌入式 ARM 交叉编译优先纯 C 库(libmodbus、snap7、paho.mqtt、mbedtls),C++ 库注意交叉编译工具链适配。

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进