在《物联网设备的网络连接---上篇》中我们介绍了物联网的网格结构及物联网组网技术;在《物联网设备的网络连接---中篇》中我们介绍了物联网的传输协议;
本篇,我们将带您了解物联网操作系统及平台的连接设计。
四、 物联网操作系统/平台的连接设计
根据前面两节的介绍,我们已经了解了,物联网络通常不是一个单纯的IP网络,它往往涉及多个网络的集成,最终以IP网络为核心,将多个异种网络连接起来进行通信和数据交换。这一节我们通过一个典型的物联网场景,来讨论物联网操作系统或物联网平台的连接设计。
很多工业设备支持RS-485串行网络连接,并使用MODBUS协议进行数据上报和接受控制,IP网络中的物联网服务器通过一个智能网关与这些工业设备进行通信,如图21所示。在硬件上,RS-485总线网络与IP网络通过智能网关连接起来;在应用层协议上,RS-485总线上的设备采用MODBUS协议,而IP网络上的数据通信采用MQTT协议。因此,在智能网关节点上,必须要在两种协议之间进行转换。
图21 典型的物联网场景:RS-485连IP网能够让RS-485总线连接的这些设备加入到物联网操作系统或者物联网平台中,关键是智能网关实现了MODBUS和MQTT协议的对接,因而这些设备可以向IoT服务器上报信息,并且,若IoT服务器需要控制这些设备,可以通过MODBUS协议向这些设备写入控制数据。在这个场景中,IoT设备、智能网关、IoT服务器和客户端需要支持相应的协议能力:1.IoT设备。这是MODBUS的从设备角色,能够响应主方的请求;2.智能网关。它一方面实现MQTT协议的发布/订阅模型,与IoT服务器建立连接;另一方面作为MODBUS协议的主方,主动发起与IoT设备的通信。3.IoT服务器。这是物联网操作系统或者平台的核心,它负责管理MQTT发布/订阅模型的各种主题,并支持上层应用对于物联网设备的各种访问需求。4.客户端。通过MQTT协议与IoT服务器进行通信,获取IoT设备的信息,或者控制这些设备。
在常见的物联网操作系统或平台的设计方案中,IoT服务器位于IP网络,支持常用的物联网协议,比如MQTT或CoAP等。为了支持来自各种网络的IoT设备,物联网操作系统或平台需要做好全局的规划,重点在于以下三个方面:
1.地址标识。如果所有的设备都在IP网络,那么,最简单的做法是使用IP地址来标识每一个设备,或者采用IoT设备的MAC地址(如果都存在的话)作为设备标识。对于非IP网络的设备,可以使用两级地址,譬如在图21的结构中,可以使用智能网关的IP地址加上设备编号,合起来标识一个RS-485设备。2.设备的状态和参数管理。每个设备都有状态信息,它可能在线,也可能因为各种原因不在线;设备还有各种业务属性,比如温度值、压力值、亮度值,等等。维护一个全系统或平台范围的元数据或数据字典是非常有意义的。协议各方可以依据此字典来解释IoT设备的状态和参数。另外,对于一个物联网场景,不在线的设备如何维护,也需要有灵活的可选方案。 3.设备的真实性。设备的真实性是物联网安全的一个重要方面,当前绝大多数物联网场景,由于缺乏设备真实性的保证,很容易被入侵。物联网操作系统或平台负责管理和控制一个场景中的设备,其连接机制通过精心设计,可杜绝恶意设备连接到网络中,也可以及时发现设备或协议的脆弱性。
物联网操作系统或平台的连接设计需要有足够的抽象性,才能够满足异种网络的设备协同工作。通常情形下,IoT设备是由不同厂商生产的,其中运行的设备操作系统也不尽相同,所支持的连接协议即使是标准协议,也可能存在自定义或扩展的字段,这就要求整个系统或平台的连接方案必须有足够的扩展性和可定制性。另一种做法是,要求设备厂商遵守必要的规范和协议,这在封闭或可控的生态环境中是可行的。下面介绍三个典型的物联网平台或操作系统的设备连接做法。
一、阿里云IoT平台1.1阿里云IoT平台支持海量设备上云,它提供了安全可靠的连接通信能力,支持设备上报数据;服务端通过调用云端API下发指令至设备端,实现远程控制。1.2阿里云IoT平台支持MQTT、CoAP,以及HTTP/HTTPS协议,既满足长连接的实时性要求,又满足短连接的低功耗要求。相应地,它也支持TLS或DTLS来保证数据传输的安全性。1.3阿里云IoT平台也提供设备端SDK,将它所支持的协议封装起来,以支持不同设备、网关快速接入阿里云。有多种编程语言或开发平台的SDK可供开发者选择,包括C、Java、Python、Android、NodeJS、iOS,以及一个泛化协议SDK;如果这些SDK不能满足要求,也可以自行开发软件,通过Alink协议与云端平台进行通信。有关阿里云IoT平台的更多信息,可参考https://iot.aliyun.com/。
二、 MindSphere- MindConnect2.1MindSphere是西门子基于Cloud Foundry构建的物联网操作系统,部署在公有云或私有云上。MindSphere采集物联网设备数据的组件是MindConnect。在MindShpere的架构中,所有的设备或软件都通过MindConnect来上报数据或接受控制。2.2MindConnect与MindSphere之间按照标准的IP网络进行通信,此通信过程采用传输层安全协议(TLS 1.2)进行加密。2.3MindConnect既可以是硬件,也可以是软件,包括如下:
- MindConnect Nano,支持的接口主要包括USB、以太网、PCIe、串行接口。每秒可读取250个数据点,上传带宽至少0.5Mb/s。
- MindConnect IoT2040,支持的接口主要包括USB、以太网、串行接口。
- MindConnect Lib,支持常用的操作系统平台,允许西门子外的软件或硬件设备商将数据传送至MindSphere。
2.4MindConnect与物联网设备之间支持多种数据传输协议,包括S7、OPC UA、SIMATIC I/O、MODBUS TCP&RTU。有关MindConnect的更多信息,可参考西门子官方网站的MindConnect文档。网址如下:https://documentation.mindsphere.io/resources/html/getting-connected/en-US/index.html。
三、指令集智能操作系统3.1指令集智能操作系统(iSysCore OS)是一个物联网操作系统,提供了物联网设备连接、数据处理以及基础的物联网服务能力。它通过一个专门设计的驱动程序框架,来支持广泛的物联网设备接入。3.2指令集智能操作系统采用MQTT作为系统使用的物联网传输协议,同时也支持像MODBUS、BACNET、OPC(DA, UA)、OBIX、DALI等常见的物联网协议。支持这些协议的物联网设备可直接接入到系统中。其他的设备,可以通过开发驱动的方式来对接到指令集智能操作系统。3.3有些设备(或者一组设备构成的独立子系统)不一定支持这些物联网协议,但是会暴露开放的接口或提供SDK。在这种情况下,只需开发一个专门的驱动程序,调用这些接口来管理和控制设备,就可以接入到指令集智能操作系统中。为此,指令集智能操作系统维护了一个共享驱动库,以避免重复的驱动程序开发。3.4对于跨网络的设备,需要通过智能网关接入到系统中。指令集智能操作系统提供了网关软件,本质上是协议解析和数据转发模块,它既可以部署在云端,也可以部署在硬件网关上,取决于具体的组网环境。有关指令集智能操作系统的更多信息,可参考http://www.isyscore.com。