所谓网关,主要负责两个异质网络的连接,这在工业物联网场景中尤其常见,因为传感网络经常采用的是和通用的网络层(长输网)完全不同的电气信号和协议。
工业网关功能组成
感知层信号接口
主要承担对接传感网内各设备的信号的任务。该模块包括对接不同电气信号的硬件接口,也包括对应的数据采集和指令发送的软件。为了应对感知层的复杂性,工业网关的生产企业一般会根据其目标应用领域的不同,配备感知层信号接口的一个硬件接口和协议组合。
网络层信号接口
主要承担对接网络层的信号的任务。相对感知层信号接口而言,网络层信号接口一般相对简单得多,因为通常整个系统中只需要一种标准的长输网络及其协议,所以对应的硬件接口和数据收发软件都相对单一。不过这并不是说只能支持一种,在实际应用中,工业网关的生产企业为了产品的通用性往往设计成可以支持多种长输网络的形式。具体的形式,可以是多种接口同时配备的方式,也可以是将产品设计成插卡可配置的形式,让用户选择不同的配置在出厂的时候配置好。
数据处理
设备端的数据处理主要解决的是数据失配问题。也就是说,服务端需要的数据的范围、频率、完整性等方面的差异。数据处理的目的是整理输入接口进入的数据,转化成适合输出的数据形式并推送到输出接口。这里的输入方和输出方即可以由设备端扮演,也可以由服务端扮演,因此数据的流动是双向的,而且因数据的类型不同也有所区别。
就地数据库
处理后的数据在某些场景下还需要存储在网关本地的数据库内,以便复杂的数据处理流程或者其他的就地业务逻辑处理而使用。因为工业网关一般属于嵌入式计算设备,所以此类数据库一般也采用嵌入式数据库。嵌入式数据库功能较为简单,一般有内存缓冲以提高存取速度。
就地业务逻辑
主要是处理与网关所关联的那部分传感网所连接的设备、传感器和执行器有关的局部系统的业务逻辑。不同网关的就地业务逻辑模块的丰富和复杂程度差异较大,如果一个工业网关中没有这部分功能模块,则经常被称为数据透传式的网关,或者称为协议转换器、通讯管理机。对就地业务逻辑的详细描述,可参见“边缘计算”。
其他功能
除了以上主要模块,一个网关还往往配置其功能的用户操作界面,可以采用按键、命令行(通过telnet或串口)或者图形界面的模式(如内置有WEB Server甚至带有面板)。如果网关具有就地业务逻辑,可能还需要向其加载本地业务逻辑所需要的脚本文件、配置文件的工具。
安全模块
与一般的网络设备一样,安全是必不可少的设计考量。除了要抵御来自外部的网络攻击,还要考虑设备接入服务端时的身份认证问题,也就是说,只有合法的设备才能连接服务端。
这就要求每个设备端成员(工业网关或智能设备)必须有唯一的识别标志和授权标志才能进入工业物联网,否则能有可能会被冒名的外部恶意设备接入,从而干扰整个系统的正常运行。
同样地,设备也只能接入合法的服务端,否则会被恶意冒用身份的服务端干扰设备的正常工作。
工业网关作为远程设备,其自维护性也很重要。一般要求其应利用自身连接服务端的优势,能够从服务端自动下载自身的软件更新包并完成更新,一些设定和配置工作也应该可以通过远程登录来完成,从而降低派驻人员现场维护的成本,并提高对用户需求的响应速度。
技术实现
工业网关一般采取嵌入式架构来实现。
系统根据设计所支持的电气接口种类配置有需要的接口硬件。
处理器可能采取专用的SoC,比如基于ARM、MIPS等架构的,也可能是通用的PC架构的低端Intel X86 CPU。
同时还要配备必要数量的内存和存储设备,以便支持计算和保存数据和配置参数。
操作系统常见为各种嵌入式操作系统,其中Linux目前较为流行。
作为通信管理设备,自然需要配备必要种类的通信协议解析模块。通信协议解析根据协议和操作系统的特点,可能是用户态的进程,也可能是操作系统内核态的进程。
然后是作为整个网关核心的数据处理模块。
数据处理模块主要由软件和主处理器实现,但是不排除在某些场景下为了加速而采用GPU等协处理器。
业务逻辑和嵌入式数据库属于可选部分,另外配有必要的用户界面和其他应用。安全机制在各个层面都应该有适当的体现。
在软件部分的编程语言上,对于这种计算能力较低但有一定实时性要求的嵌入式设备,C/C++通常是首选,
但是这并没有挡住开发者们在网关中使用shell、java、Python等高级语言的热情。
因为在用户配置界面等低频操作中,使用这些高级语言的开发效率较高,而这些低频操作中即便性能较差也并不会造成日常运行的性能问题。
在现场传感层因为用户的业务流程的不稳定性而不得不跟着改变的场景中,网关也不得不随之改变配置甚至需要一定的现场二次开发,这种高级语言提供的快速开发能力可能就更加必要了。