- 工业科技与智能制造新闻站点

工业网关是什么?协议转换与数据采集的工作原理

智能制造 7℃ 0

工业网关是连接不同工业设备、网络或上层系统的通信设备或软件组件。在设备联网场景中,它可以接收或读取现场数据,按配置转换通信协议,并把数据提供给监控系统或平台。具备数据处理能力的网关还会解释数值、补充时间与状态、整理上传格式;这些功能是否齐全,取决于具体产品与配置。

理解工业网关,关键是分清三个问题:报文怎样到达设备,返回的数字代表什么,上层系统怎样使用它。下面以一条温度数据为例,说明从寄存器读取到平台接收的完整过程。需要先了解各类协议关系时,可阅读工业通信协议、接口与信息模型的区别。

工业仪表和PLC通过导轨式工业网关连接监控电脑的概念示意
工业网关位于设备通信与系统接入之间。图为功能关系示意,不代表具体产品或实际接线。

工业网关主要解决什么问题?

假设车间仪表只提供Modbus RTU接口,而监控系统希望通过以太网读取数据,网关可以在两侧之间转换通信方式。另一种需求是平台只接收约定格式的MQTT消息,网关就需要先取得仪表数据,再将点位、数值及记录条件组成消息。前者主要解决请求如何穿过不同网络,后者还要处理数据怎样被组织和解释。

现场设备一侧常被称为“南向”,监控或平台一侧常被称为“北向”,这是连接方向的说法。网关可能在南向主动请求数据,在北向提供读取服务或发布消息。两侧的角色、地址和通信周期要分别配置,不能只确认协议名称相同就认为已经接通。

工业网关依次读取设备、解释数值、标记时间与状态并映射上传,将示例原始值253转换为25.3摄氏度
具备数据映射能力的网关可以完成这条处理链。253与25.3℃是教学示例,具体含义来自设备点位定义。

协议转换网关怎样处理请求与响应?

转发请求:把上层读取请求送到正确设备

以Modbus TCP转Modbus RTU为例,上层发出读取请求后,网关识别目标设备,将请求转换成串行侧能够接收的报文;设备回复后,网关再按TCP侧的格式返回结果。Modbus官方TCP/IP实现指南说明,经过网关访问串行设备时,TCP报文中的Unit Identifier可用于识别网关后方的设备。

两种通信方式共享Modbus的功能码和数据访问规则,但报文封装不同:RTU串行报文包含设备地址与CRC校验;Modbus TCP使用带事务标识等信息的MBAP报文头。网关需要处理这些差异及请求与响应的对应关系,不是把串口字节原样塞进网络就完成了标准Modbus TCP转换。

还要区分接口与协议。RS-485规定物理通信接口,不能告诉网关“哪一段内容表示温度”。Modbus RTU才规定相应的报文规则;设备有RS-485端子,并不代表一定使用Modbus。接入时既要核对设备协议,也要匹配波特率、校验等串行参数。这一分层关系可见Modbus官方串行通信规范。

主动采集:先更新网关中的数据,再供上层使用

另一种工作方式是网关按自己的任务周期读取设备,把最新结果保存在内部数据区,再供上层读取或按计划上传。上层本次取得的可能是最近一次采集结果,不一定触发一次新的设备读取。因此,了解网关是转发请求还是提供缓存值,才能解释“平台请求很快,现场数值却没有同步变化”的现象。

例如,Moxa的MGate 5105技术说明介绍了采集并保存Modbus数据、再转换成另一协议报文的机制。这能说明主动采集与数据映射的实现方式,但不能据此认为所有网关都支持同样的协议、历史存储或上传功能。

网关怎样把寄存器中的253解释成25.3℃?

以下仪表、地址和数值均为教学假设。设仪表站号为1,点位文档规定:温度存放在保持寄存器的报文地址0,按16位有符号整数解释,倍率为0.1,单位为℃。网关使用功能码03,读取从地址0开始的1个寄存器。

配置或处理步骤本例内容它决定什么
设备与数据区域站号1;保持寄存器;功能码03向哪台设备、哪类数据区发起读取。
报文地址与数量起始地址0;读取1个寄存器从哪里读、读取多少数据。
返回数据与类型寄存器字节为00 FD;按16位有符号整数解释得到十进制原始值253。
工程量换算253×0.1=25.3;单位℃让原始数字具有业务可理解的温度含义。
对外点位设备T01的temperature让上层将该值识别为这台仪表的温度。

Modbus的应用协议规范定义了保持寄存器读取、报文地址及数据编码规则,设备应用与这些地址的对应关系则由设备定义。协议不会自动告诉网关,253应当除以10、单位是℃,还是其实代表压力。因此,地址读通之后仍需配置类型、换算和单位。

这里的站号1与寄存器地址0是不同概念,不能混填。文档中的寄存器编号也不一定等于报文中的地址:Modbus报文地址从0开始,而有些文档或配置界面按从1开始的编号展示。应确认网关输入栏采用哪种规则,避免将同一个偏移重复减1。

数值类型同样会影响解释。若本例温度允许为负,就不能把同一组16位数据一律当无符号整数;若另一设备改用跨两个寄存器的32位数据,则还需核对寄存器组合顺序。网关按配置执行转换,无法仅凭“这个结果看起来像温度”判断配置是否正确。

示例寄存器地址0中的原始值253,按16位整数和0.1倍率转换为25.3摄氏度
地址帮助找到数据,类型与倍率决定数值解释,单位说明它表示什么。各项定义都应与设备文档一致。

网关通过MQTT和OPC UA怎样向上层提供数据?

MQTT:发布消息时,双方仍要约定字段含义

使用MQTT时,网关可作为客户端,把整理后的数据发布到约定主题,经消息服务器交给订阅方。例如将T01温度发到factory/T01/temperature,消息内容可以采用下面的自定义JSON。这里假设仪表未提供源端时间,时间字段记录网关成功读取的时刻。

{
  "device_id": "T01",
  "point": "temperature",
  "value": 25.3,
  "unit": "degC",
  "acquired_at": "2026-10-26T02:00:00Z",
  "quality": "good"
}

字段名和good含义是本例双方的约定,不是MQTT规定的工业数据模型。MQTT 5.0标准说明,消息传输并不解释负载内容。平台仍需知道这个值属于哪个设备、采用什么单位、如何判断质量;两端都支持MQTT,只能说明具备相应通信能力。

OPC UA:以变量及其状态、时间提供结果

如果网关提供OPC UA服务,可把本例温度映射为一个变量节点,供客户端读取或订阅。节点的类型、名称和单位等信息需要按所用模型配置;它们不会因为接入了Modbus就自动完整生成。

OPC Foundation的DataValue定义把值、状态码及时间戳分别表示。状态码可说明值是否可用,源时间与服务器时间也有不同含义。将旧设备映射为OPC UA时,应说明时间由设备提供还是由网关赋予,不能把网关读到数值的时刻直接当成传感器测量发生的精确时刻。

无论采用哪种方式,通信失败后都不应把本例温度填成0℃。如果界面保留最后已知的25.3℃,应同时显示失联或不可确认状态和最近成功读取时间;数值一直不变,也不能单独证明设备失联。这些信息决定上层看到的是当前确认值,还是仅供参考的旧值。

采集周期与上报周期为什么不能混为一谈?

采集周期是网关多久尝试取得一次设备数据,上报周期是多久向上层发送一次结果。本例假设网关每1秒读取温度、每5秒上报一次;这不意味着平台必然收到5条温度记录,取决于网关采用哪种保存和发送方式。

若每次读取只覆盖“最新值”,5秒时上传的是当时保存的最新结果,中间变化可能不再保留。若网关逐条保存这5次读取,并在上报时打包发送,平台才可能得到对应的5条记录及各自时间。按变化上报或先求平均值又是不同的策略,应明确平台需要即时显示、趋势记录还是统计结果。

每1秒采集与每5秒上报示意,对比只上报最新值和打包上报采集记录两种方式
采集与上报是两个独立环节。图中周期仅为教学设定,中间样本能否保留取决于存储与上报策略。

配置成每1秒读取,也不代表每次都能准时成功。串行侧需要传输请求、等待响应,超时重试和其他点位还会占用时间。增加设备或缩短周期后,应查看实际完成的读取间隔与超时情况;把上报周期调短,不能让尚未取得的设备数据更及时。

如果温度在两次读取之间短暂变化后恢复,只读取当前寄存器值的网关可能完全看不到这次变化。需要保留这种事件时,应由设备提供适合的事件或历史记录,或者调整经过验证的采集方案。普通联网与上传链路不承担本例设备的实时控制闭环。

断网缓存能保住哪些数据?

首先看中断发生在哪一段。网关到平台断开、设备到网关仍正常时,支持本地存储转发的网关可以继续采集并排队保存记录,恢复后再补传。如果设备到网关已经断开,网关没有取得的数据就无法靠本地缓存补出来;能否恢复,还要看设备本身是否保留可回读的历史。

“保存最新值”与“保存历史队列”也不同。前者可能只保留25.3℃这一项当前结果,后者才会保存多次记录。前述Moxa产品将云连接中断时的数据缓冲列为具体功能,说明缓存需要产品与配置支持,不能从“工业网关”这个名称推断出来。

上行断网时网关保存已采集记录并在恢复后补传,设备侧断开则出现无法由网关补造的数据缺口
缓存只能保护已经取得并成功保存的记录。补传应保留原记录时间,设备侧未采到的数据需另查源端历史。

使用缓存时,需要确认记录写在内存还是持久化介质、重启后能否保留、队列满后如何处置,以及恢复时如何处理旧记录。补传的10:00记录仍属于10:00,不能改成10:05的到达时间;历史值也不应覆盖平台已经收到的较新当前值。

MQTT的消息确认与网关历史存储是不同机制。例如QoS 1可能出现重复消息,消息服务器确认接收也不等于业务数据库已写入成功。若补传数据参与统计,应约定稳定的记录身份,并在消费端避免把同一记录重复计入;不能仅凭“支持MQTT”就承诺断网期间数据全部保留。

工业网关与PLC、交换机、路由器有什么区别?

对象主要职责在本例中的位置
工业网关连接不同协议或系统,按能力读取、映射和交换数据。将仪表数据整理为上层能够使用的信息。
PLC执行设备控制逻辑,处理输入、程序状态与输出。需要温度控制时,按设备设计执行相应控制任务。
工业交换机连接以太网设备并转发网络帧。提供网络连接,本身不负责把253解释成25.3℃。
路由器在不同IP网络间转发数据包。提供跨网段通信路径,不因转发报文就完成点位语义映射。

实际产品可能集成多种功能,例如带路由能力的网关,或能够直接提供上层协议的PLC,应按具体功能判断。控制器已经提供所需协议和数据时,也未必需要额外增加一台网关。PLC的控制过程可参看PLC组成与工作原理。

本例只读温度,不修改设备参数。若项目还需下发设定值,就多了一条写入路径:应明确允许写哪些点、数值范围、谁有权限,以及怎样确认设备接受并执行。普通数据网关的双向通信能力不能直接替代经设计验证的控制或安全功能;读取显示与写入控制应分别实现和验收。

怎样确认网关完成了正确的数据转换?

可以沿本例的数据路径分段核对:先用已知输入或设备测试值确认原始寄存器确为253,再检查网关显示25.3℃,最后核对平台点位、单位、时间和质量。这样发现数值错误时,能够区分是读错地址、解释错误,还是上层字段映射错误。

随后测试数值变化和通信异常。改变测试值,观察实际采集与上报间隔;分别中断上行链路和设备侧链路,检查缓存、旧值标记与恢复行为是否符合约定。若启用整批上报,还应逐条核对中间记录,不能只看恢复后的最后一个温度值正确。

工业网关的工作原理可以归纳为:按协议找到数据,按点位定义解释数据,再按上层接口要求提供数据。理解这三步,也就能判断问题出在通信、映射还是记录处理。扩展到整条产线的点位规划、业务关联和采集验收时,可继续阅读工业数据采集实施与数据治理。

参考资料

  • Modbus Organization:MODBUS Application Protocol Specification V1.1b3,数据模型、地址规则与功能码03章节。
  • Modbus Organization:MODBUS over Serial Line Specification and Implementation Guide V1.02;MODBUS Messaging on TCP/IP Implementation Guide V1.0b,接口、报文与网关转发章节。
  • OPC Foundation:OPC 10000-4,7.11 DataValue,值、状态码与时间戳定义。
  • OASIS:MQTT Version 5.0,2019年3月7日,消息负载及服务质量相关章节。
  • Moxa:MGate 5105-MB-EIP Series官方技术说明,数据采集、协议转换与云连接中断缓冲功能。

评论留言

暂时没有留言!

我要留言

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。