工业通信网络结构

工业通信网络包含所谓的工业现场总线、局域网、公网等概念。这些概念在物理环境下并不是界线分明的,是一种主观上的分类。在物理环境下,目前工业网络结构都是设备与双绞线之间的通信。可以互相通信的设备与双绞线的集合称为网络。当网络中含有工业生产、加工、安防设备时,此网络可以称为工业通信网络。工业通信网络与其它网络命名不是互斥关系,同一个网络可以有多种定义。

网络结构是对设备通信逻辑的设计理念,目前已有的网络结构有多主结构(如:CANOpen)、一主多从结构(如:Modbus)、一从多主结构(如:MQTT)。

所谓的多主结构,是指网络上的设备都具有主动发送有意义的请求的逻辑结构,目前只有CAN链路可以真正实现多主结构。当我们把路由器、交换机这类网络通信设备作为线路的一部分时,UDP Socket通信也可以实现多主结构。多主结构的优点在于信号按需发送,在变化信号较少的情况下可以节省带宽。但是变化信号多的情况下,多主结构容易造成冲突,使网络质量下降。当TCP Socket网络上只有两台设备时,也可以实现多主网络。

一主多从结构,是指网络上只有一台设备具有主动发送有意义的请求的逻辑结构,一主多从是非常普遍的结构,主要应用在485链路上。一主多从结构的优点在于逻辑有序,当变化信号较多时不会冲突。但是变化信号较少时会浪费带宽。

一从多主结构,是指网络上只有一台设备不能主动发送有意义的请求的逻辑结构,一从多主的代表是SQL数据库、WEB服务器、OPC服务器和MQTT服务器。一从多主实际上是数据库结构。所有一从多主的网络都是围绕着实质上是数据库的从机建设的。OPC是一种实时数据库、MQTT是一种临时数据库、WEB服务器是一种资源数据库,它们都是数据库,都是按相似的流程工作的。当然,这几种数据库也各有其特点。OPCUA的特点是数据库软件可以自己产生有意义的数据,MQTT数据库可以主动推送数据本身并不需要长期持有数据,WEB服务器具有较强的可视化功能。一从多主结构的优点是将通信逻辑的难点集中在一台设备上,使网络上其他设备的开发变得简单,也可以模拟多主结构和一主多从结构,具有较强的灵活性。但是一从多主结构的通信流程通常较复杂,从机上的数据流量大,依赖TCP Socket。

工业通信网络的跨度可能是一个有限的现场或虚拟现场,也可能是公共网络。当工业通信网络跨越公共网络时,会产生更多的要求。

公共网络需要进行通信保密设计

通信保密的方法有身份验证、数据加密两种思路。

身份验证即是指对从双绞线上传来的数据进行来源验证,它的优点是可以很方便地将网络建设分配给公共开发者实现,缺点是容易被破解、流程复杂。身份验证常伴有不完全的加密,以防止身份信息被窃听。常见的身份验证方式是VPN、数据库的登陆。

数据加密即是指对将送往双绞线上的数据流进行加密,再由接收者解密。它的优点是数据安全性高,断线时也不需要对授权进行撤销,缺点是计算量大消耗更多时间,没有登入机制则难以大规模公开使用。只要对数据进行加密,所有通信规约都可以用于公网。

公共网络需要身份确认和探测和自恢复设计

身份确认是确认信息是否是授权设备发出的逻辑,对于有登入机制的通信流程,身份确认是流程中必然存在的一个环节。对于仅依赖数据加密的通信方式,身份确认可以使用与身份相关的校验码、RSA密钥的匹配来实现。不论是登入还是校验,密钥总是会被一定程度上地公开。

探测和自恢复是确认网络设备是否存在,并在恢复通信时自动重新授权的逻辑。对于TCP客户端,可以在应用层按时通信得到服务器端是否还在线的状态。对于TCP服务器端,可以收到对方主动下线的消息,但是异常断线仍然需要接收心跳包并以超时机制判断。对于UCP和485这种无连接状态的链路,主机使用主动访问通过是否有回复确定从机是否在线,从机只有心跳超时逻辑这一种选择。若使用登入机制,自恢复的过程包含重新登入流程。若仅加密数据无登入,则自恢复的过程就是直接开始正常通信。

简单的公网通信方案

  1. tcp/ip/http post application/json携带加密的数据报文和身份信息,具有身份验证和数据加密两种功能,又能很方便地和WEB工程通信,其地位等同于现场485总线上的Modbus-RTU,是一种广泛、公认、简单、强大的公网通信方案。不建议使用https。https需要几十倍的通信时间,而且https不具备双向身份校验的功能。它的缺点是http短连接在公网上会浪费额外的时间。
  2. RSA加密后通过公网TCP Socket通信。这是一种比较适合于自建平台的方案。适合使用自制的软件或SDK通过公网进行数据同步,再从局域网或localhost将数据以任意方式传送给其它进程或子程序。它可以采用长连接工作,效率更高,但没有办法提供登入机制,无法公开给公众使用。
  3. VPN。使用VPN意味着数据的安全性和稳定性更低一些,换来的好处是开发难度更低。使用VPN和RSA加密可以达到比http登入更高的安全性,但仍然不适合开放给公众使用。

复杂的主流方案

  1. MQTT、OPC及其它公网数据库交换数据。所有数据库类型的通信方案都有一个很大的问题,就是通信规约不完善,自由度较高,但又有一定程度的限制。所有的数据标签、数据类型都没有定义,只知道如何与数据库连接和一个可能性的范围。这种情况下开发难度并不会有什么好的改观,我们依然不知道别人的设备会产生什么数据。但这种方法可以节省一些设计时间。比如MQTT已经定义了有效负载是UTF8字符串,那么我们就不会花时间去考虑非UTF-8的可行性了,也不考虑二进制的可行性了。OPC需要对数据库进行数据定义,附带的好处是可以产生一份数据标签的类型的清单,这样我们就不会花时间再去建一份清单了。
  2. 使用扩展的Modbus进行通信。扩展的Modbus实际上已经不是兼容的通信规约了,也没有规定登入机制,其实没有必要再按Modbus的方式去设计报文。但Modbus是唯一的一种实际上通用的兼容通信规约,对于简单数据类型的通信有较好的借鉴价值。
  3. 使用云服务或转换器。云服务和转换器的配置工作较多,但有成品的通信规约程序,可以节省研发工作。成本较高,云服务的可信度较低。使用云或转换器意味着将技术问题中的主要部分交给别人解决,是一种降低工程难度的好办法。