摘要:GateWay 是一款参照 KepwareEX 设计思想打造的轻量级工业物联网网关,采用"通道-设备-标记点"三层数据模型,通过可插拔的南向采集与北向转发驱动体系,实现 Modbus、IEC104、MQTT 等多协议设备的统一接入与灵活转发。结合 Redis、InfluxDB 等现代数据中间件,可快速构建边缘侧数据采集与分发枢纽,广泛应用于工业数据采集网关、SCADA 前置处理器及多协议数据汇聚平台等场景。
工业物联网网关 GateWay:多协议采集与数据转发平台实战解析
写在前面
在工业4.0与智能制造的大背景下,海量设备数据需要被高效、安全地采集、处理并转发至上层应用系统。KepwareEX作为工业互联领域的标杆产品,凭借其强大的驱动框架和多协议支持能力,已成为众多SCADA与物联网平台的首选方案。
本文介绍的GateWay,使用QT,C++ 语言,代码在QT5.12.12编译,支持WINDOWS和LINUX多种平台运行,是一个参照KepwareEX设计思想实现的轻量级工业设备管理配置工具。它不仅提供了完整的"通道-设备-标记点"三层数据模型,还通过模块化的驱动体系,实现了多协议设备的统一接入与灵活的数据转发。结合Redis、MQTT、InfluxDB等现代数据中间件,GateWay能够快速构建起一套边缘侧的数据采集与分发枢纽。
代码仓库 https://gitee.com/walk-ten-thousand-miles/qgateway;
目前已支持的协议有 MODBUS serial , modbus tcp ,modbus asc , 国网IEC101 平衡模式仿主站,IEC101 非平衡模式仿主站 和IEC104 仿主站,及变电站IEC101 平衡模式仿主站,IEC101 非平衡模式仿主站 和IEC104 仿主站。
一、工程管理
二、数据配置整体架构:分层清晰,易于扩展
GateWay采用经典的三层数据组织结构,与KepwareEX保持一致:
通道(Channel) :代表一种物理通信链路,如串口、TCP/IP网络、MQTT Broker等。每个通道绑定一个具体的通信驱动(如Modbus TCP、IEC104)。
设备(Device) :挂载在通道下的具体设备,每个设备拥有独立的通信地址和参数配置。
标记点(Tag) :设备中的数据变量,支持布尔、整数、浮点、字符串等多种数据类型,并具备报警、记录、转换等高级属性。
下图展示了 GateWay 的「通道-设备-标记点」三层数据模型,以及南向采集驱动与北向转发驱动在整体架构中的位置关系:
通道配置
调试信息配置
设备配置
数据点组配置
数据点配置
如上图所示,南向驱动负责从现场设备采集数据,经「通道 → 设备 → 标记点」三层模型完成数据建模;北向驱动则负责将标记点数据转发至上层应用,形成「南向采集 + 北向转发」的完整数据链路。
这种分层结构使得数据模型清晰,无论是添加新设备还是配置数据点,都变得直观且高效。
报警点配置
三、驱动框架:支持多种协议的接入与转发
GateWay的核心设计之一,是其 可插拔的驱动体系。系统内置了"驱动列表"与"北向驱动列表"两大驱动管理模块:
驱动列表(南向驱动) :负责从现场设备采集数据。支持Modbus RTU、Modbus TCP、IEC101、IEC104等主流工业协议,并可通过DLL插件机制扩展自定义驱动。
北向驱动列表(转发驱动) :负责将采集到的数据转发给上层系统。支持将数据以MQTT、OPC UA、WebAPI等方式推送至云平台或数据中心。
这种"南向采集 + 北向转发"的双向驱动设计,使得GateWay既是一个数据采集网关,也可以充当一个轻量级的数据中转枢纽。
四、丰富的数据点类型与报警管理
在标记点(Tag)配置方面,GateWay提供了远超简单变量的丰富配置能力:
支持多种数据类型:离散量(Bool)、整型(INT)、浮点型(Double/Real)、字符串消息(Msg)。
灵活的转换与读写控制:支持线性转换、平方根转换、取反等输入转换,并可单独设置标记点的读写权限(只读/读写)。
完善的报警体系:针对模拟量标记点,支持低低限、低限、高限、高高限、偏差报警、变化率报警等多种报警类型,并可独立配置报警优先级、约束点和确认模型。
事件记录与数据保留:每个标记点均可独立开启事件记录与数据保留功能,便于后续追溯与分析。
这些功能的集成,使得GateWay在配置复杂测控场景时,可以做到"点"级精细化管理。
五、数据持久化与历史存储
GateWay内置了 数据记录(Logging) 机制,支持将标记点的数据变化记录到日志系统。同时,通过北向驱动与第三方数据中间件的集成,可以实现更强大的历史数据存储:
Redis:可用于缓存最新设备状态,提供快速的数据查询接口。
InfluxDB:作为时序数据库,可高效存储海量历史数据,便于生成趋势图表与统计分析。
MQTT:作为轻量级消息协议,可实时将数据推送到云平台或订阅端,实现"边-云"协同。
通过配置文件(如项目目录下的 project.xml),用户可以灵活指定日志存储路径、数据记录策略等参数。
六、完善的工程管理与用户权限
GateWay以"工程(Project)"为组织单元,所有配置(通道、设备、标记点、驱动、报警参数等)均保存在工程目录下,便于备份、迁移与版本管理。关键配置文件包括:
project.xml:项目基本信息与日志路径。
users.xml:用户账户与访问权限(管理员、工程师、操作员)。
Alarms.xml:报警等级与阈值配置。
下面是一个典型的 project.xml 配置示例,展示了「通道-设备-标记点」三层结构的组织方式:
<?xml version="1.0" encoding="UTF-8"?><ProjectName="DemoProject"Version="1.0"><!-- 项目基本信息与日志路径 --><LogPath="./logs"Level="Info"/><!-- 通道层:绑定具体通信驱动 --><ChannelName="PLC_Channel"Driver="ModbusTCP"><DeviceName="PLC_1"Address="192.168.1.100"Port="502"><!-- 标记点层:定义数据变量及属性 --><TagName="Temperature"DataType="Real"Access="ReadWrite"><AlarmLowLow="0"Low="10"High="80"HighHigh="90"/></Tag><TagName="MotorStatus"DataType="Bool"Access="ReadOnly"/></Device></Channel><!-- 北向转发配置:推送至云平台 --><NorthboundDriver="MQTT"Broker="tcp://broker.example.com:1883"Topic="gateway/data"/></Project>关键字段说明:
<Project>:工程根节点,Name为工程名称,Version为工程版本号。<Log>:日志配置,Path指定日志存储路径,Level设置日志等级(Info/Warning/Error)。<Channel>:通道节点,Name为通道名称,Driver绑定具体的南向通信驱动(如 ModbusTCP、IEC104)。<Device>:设备节点,挂载在通道下,Address与Port指定设备的通信地址与端口。<Tag>:标记点节点,DataType定义数据类型(Bool/INT/Real/Msg),Access设置读写权限(ReadOnly/ReadWrite)。<Alarm>:报警配置,可设置低低限、低限、高限、高高限等阈值。<Northbound>:北向转发配置,Driver指定转发驱动(如 MQTT),Broker与Topic配置推送目标。
系统内置了基于角色的访问控制(RBAC),不同用户拥有不同的操作权限,确保工业现场配置的安全性与合规性。
六、交互友好的配置界面
GateWay提供了完整的图形化配置界面,主要功能包括:
设备树导航:以树形结构清晰展示通道、设备、标记组及标记点的层级关系。
标记点列表:支持表格形式展示标记点全部属性,并可直接在界面中进行编辑、导入(CSV)、导出(CSV)等批量操作。
驱动选择向导:新建通道时,系统会引导用户从驱动列表中选择具体协议,并自动匹配对应的通信参数配置界面。
日志查看器:实时显示系统运行日志,支持按等级(信息/警告/错误)筛选,便于故障排查。
七、运行模式与调试支持
GateWay支持 配置模式 与 运行模式 两种工作状态:
配置模式:用于设备组态、点表编辑、报警设置等离线配置工作。
运行模式:切换到运行模式后,系统将启动数据采集与转发任务,并在标记点列表中实时显示"实时值"字段,方便在线监控与调试。
此外,系统还提供了"调试记录"标签页,可分类查看告警事件与通讯报文,极大地便利了现场调试与问题定位。
八、应用场景
得益于其灵活的驱动框架与数据转发能力,GateWay可广泛应用于以下场景:
工业数据采集网关:将现场Modbus、IEC104等设备数据统一采集,并通过MQTT上传至云平台。
SCADA系统前置处理器:作为SCADA系统的数据源,提供标准化的数据接口。
边缘计算节点:结合本地规则引擎(如DataChange脚本),实现数据预处理与报警联动。
多协议数据汇聚平台:将不同品牌、不同协议的设备数据汇聚为统一数据模型,供上层应用使用。
展望
GateWay目前已经具备了一个成熟IO驱动框架的核心功能。未来,我们可以进一步扩展其能力:
支持更多的工业协议(如Profibus、CANopen、EtherNet/IP)。
集成更强大的脚本引擎(如Lua或Python),实现复杂的边缘计算逻辑。
引入Web可视化组态功能,直接在界面中创建数据看板。
支持分布式部署,实现多网关的集中管理与数据汇总。
结语
GateWay的设计初衷,是打造一个 轻量、灵活、可扩展 的工业数据接入与转发平台。它借鉴了KepwareEX的经典架构,同时融入了现代互联网技术栈(Redis、MQTT、InfluxDB),使得传统工业数据能够更平滑地融入数字化生态系统。
如果您正在寻找一套可定制、易扩展的工业物联网数据基础设施,GateWay或许是一个不错的起点。