孙胜兵
随着工业4.0 以及中国制造2025 的持续升温[1],互联网、物联网技术与制造业深度融合,工业企业对于工业互联网与数据资产等方面的认知逐渐加强[2]。工业互联网将连接对象延伸到工业全系统、全产业链、全价值链,可实现人、物品、机器、车间、企业等全要素,以及设计、研发、生产、管理、服务等各环节的深度互联[3]。4G、5G 移动技术的发展为无线访问提供必要的网络基础设施和网络服务质量。网络安全技术的发展为工业网络的远程访问提供可靠的保证。应用工业网络的远程访问技术可以方便地对分布在不同区域、不同工厂、不同设备的数据进行访问、存储与分析;可以迅速发现设备的问题;可以远程调试、下载程序,降低维护成本。
PLC 远程访问方案有基于Modbus Tcp、MQTT、OPC UA 及4G 的云网关等。其中,Modbus 是一种工业环境中广泛应用的网络协议,可以在设备之间传输离散或模拟的IO 数据或寄存器数据,其Modbus Tcp 协议可以使工业设备在任何地方通过Internet 进行寻址;MQTT 是当今最受欢迎的物联网协议,是一种客户/服务器架构的发布/订阅模式的消息传输协议,它轻巧、开放、简单、规范,易于实现,MQTT 最初是为低带宽、高延迟、不可靠的网络设计的;OPC UA 是在传统的OPC 技术取得成功后的又一突破,在被确立为工业4.0 标准通信协议后,在工业上应用越来越广泛,由于OPC UA 具有多种网络安全特性,如授权、加密、认证、数字签名等,使其较不易受到网络攻击,OPC UA 具有客户/服务器和发布者/订阅者两种实现机制,但它并没有提供自定义的通信协议来实现它们,而是基于现有协议[4],OPC UA 组件可以以不同形式存在于不同平台,从嵌入式设备到各种机器利用网关提供OPC UA 功能;4G 云网关可以将采集到的PLC 等设备的信息通过4G 网络传送到企业私有云或云服务供应商的服务器上。
笔者针对几种不同的访问方案,分别进行Modbus Tcp、MQTT、OPC UA、4G 云网关远程监测与数据透传实验,来进行PLC 的远程访问。
做Modbus Tcp 实验时需了解协议报文的组成,了解功能码及其作用。Modbus Tcp 协议是把Modbus 协议中的CRC 校验去掉,增加MBAP 报文头。协议中并无IP 地址及端口号,这是因为它只是一个应用层协议,需要和Tcp 协议一起使用才能传输数据。它由MBAP 报文头、功能码(见表1)[5]、数据组成。本文以西门子PLC S7-1200 为例说明Modbus Tcp 指令的使用方法。首先,在博图编程软件中加入Modbus Tcp 指令MB_SERVER(见图1),设置指令参数,指定其做为服务器,设置缓冲区位置及大小,并指定TCON_IP_v4 类型的连接描述结构的指针。在数据块中的TCON_IP_v4结构中指定硬件标志符、客户机的IP 地址及端口号等(见图2)。
表1 功能码作用
图1 MB_SERVER 指令
图2 数据块的设置
然后通过Modbus Poll 软件与PLC 建立连接,之后可以尝试各种功能码的作用。 选择communication 菜单项,观察发出及返回的数据。
通过MQTT 协议访问西门子PLC 有多种方案,比如通过西门子WINCC 或IOT2050 网关产品用MQTT 协议访问PLC,也可以用西门子MQTT CLIENT 指令库实现。本文以指令库实现方案进行实验。首先,在博图软件中引入MQTT 指令库,在程序中加入LMQTT_client 指令并设置相应的数据块,在connParam 参数中设置MQTT 服务器地址、端口号等,在设置消息内容、主题后通过publish 和subscribe 参数来发布和订阅消息。通过MQTT.fx 等软件和PLC 交互,通过互发消息验证信息的正确性(见图3)。
图3 建立的数据块
4G 云网关远程监测与数据透传实验采用有人物联网技术有限公司的PLCNET210 产品,PLCNET210 通过网口连接PLC[6],在采集PLC 数据后通过4G 网络传送至云端。除在有人云进行组态,将数据以图形、表格等方式直观的呈现出来以外,还可以设置报警条件、报警方式,比如温度值高于60 ℃时通过短信、微信等方式发送通知。也可以通过有人云将不同区域的工业设备接入,以便于监控和管理。如,在有人云端设计的组态画面中的“开关”连接到M2.0 位存储器上,“指示灯”连接在过程映像输出Q0.0 上。在博图软件中写一个启保停和一个每秒增1 的计数程序。“温度计”连在一个计数器上,每秒增1。“设备状态”负责显示设备是否在线及设备是否有报警(见图4)。利用PLCNET210 还可以进行云端的透传。在安装有人产品配置软件USR-PLCNET 后会产生一个虚拟网卡VirtualBox,开启透传选项后,在博图软件里选择该网卡即可远程下载、调试程序(见图5)。
图4 有人云端组态手机端画面
做OPC UA 实验时可以将S7-1200 作为OPC UA 服务器,以UA Expert 作为OPC UA 客户端。首先,在PLC 上编写一个简单的启保停程序,在博图WINCC 上组态一个画面以便于调试。组态好IP 地址后激活OPC UA 服务器,Secure channel 选择默认设置,设置许可证为SIMATIC OPC UA S7-1200 Basic,设置完成后在OPC UA 通信中新建一个接口,将PLC 变量加入接口后把程序下载进PLC。服务器端准备完毕。
在UA Expert 上增加一个服务器,添加PLC 上OPC UA 服务器的地址。浏览到OPC UA 服务器后选择对应安全策略,本文以无安全策略、访客权限登录。验证证书后访问OPC UA 服务器上的接口的节点(见图6)。
图6 UA Expert 访问OPC UA 服务器
Modbus Tcp 可以经由TLS 来保证安全传输,称为Modbus Tcp Security。Modbus Tcp Security 在系统中的端口号由传统的502 改为802,它与Modbus Tcp 的关系类似http 与https 的关系,由TLS 提供证书进行身份验证。MQTT 协议不是双向信任的,它没有提供客户端验证服务端身份的机制,但在使用TLS 时,客户端可以使用服务端发送的SSL 证书验证服务端的身份。在验证身份时,由于CONNECT 报文中包含了用户名和密码,实验者可以选择自己的身份验证机制,或者使用操作系统的认证机制。OPC UA 具有完善的分层安全模型,能保证数据通信和数据访问的安全。通过使用证书可以验证建立连接的应用程序和主机的合法性,以此保证数据通信的安全。通过用户身份验证确定用户是否有权访问特定资源,保证数据和系统访问的安全。通过将安全模式设置为签名并加密,保证数据的机密性和完整性。
本文通过Modbus Tcp、MQTT、OPC UA、4G云网关技术分别访问西门子S7-1200 PLC 工程实验,介绍远程访问PLC 的安全机制。实际使用时可根据与PLC 通信设备的通信接口和安全需求选择不同的访问方案。