国机传感科技有限公司 韩 策 张 娜 王松亭 张 凯 何 方 袁 峰
随着计算机性能的飞速发展,浏览器可支撑的项目复杂度日益提高,进而推动B/S架构、java语言、java框架成为系统的主流。其中SpringBoot已经成为当前搭建javaWeb工程最便捷的工具之一。OPC作为工业控制领域中一种重要的通信协议,可以有效的解决计算机与工控设备通信难的问题。随着SpringBoot在工控相关领域使用率逐日提高,基于SpringBoot的OPC通信技术也会成为一种不可或缺的应用。
本项目基于SpringBoot设计了OPC客户端。该客户端支持OPC DA2.0协议,支持多种OPC服务器,包括但不限于KEPserver、Matrikon、PC-Access。
工业领域中使用的OPC服务器种类众多,比较流行的模拟OPC服务器有KEPserverEx 6、MatrikonOPC Server for Simulation,S7-200 PC Access SMART(以下简称PC-Acess)。其中KEPserver、Matrikon以模拟仿真为主,功能比较完善,PC-Acess是德国西门子股份公司开发的,适用于S7-200 SMART小型PLC的OPC服务器,对于该款PLC的支持较好。本文以PC-Access为例,阐述OPC服务器的搭建过程,以及后续客户端的实现。
西门子官方网站的S7 200 Smart产品与服务器中提供了PCAccess的下载,版本为V2.3。下载后根据提示进行安装。
所有OPC DA2.0通信都基于COM和DCOM。当OPC的服务器和客户端在同一台服务器上时,使用COM进行通信,当OPC的服务器和客户端不在同一服务器上时,使用DCOM通过网络进行通信。OPC服务器搭建的前提是配置好所在服务器的DCOM设置,DCOM是OPC技术的基石。
(1)新建用户并给用户赋权
出于对系统的安全性、管理的便捷性考虑,新建一个Windows用户(本项目里用户名为OPCUser)。保证新建的服务器用户和客户端用户的用户名和密码相同。在“Distribute COM Users”用户组中添加OPCUser用户。
(2)修改防火墙配置
DCOM使用服务器上的135端口进行通信,为了保证通信不被防火墙拦截,需要将135端口添加到防火墙的白名单中。在Windows防火墙中的“高级设置”中启用“Windows Management Instrumentation(DCOM-In)”的入站规则,并将作用域里的“本地IP地址”、“远程IP地址”更改为“任何IP地址”,在指定此规则应用的配置文件中勾选“域”、“专用”、“公用”。
创建OPCEnum入站规则。OPCEnum.exe提供了客户端计算机获取OPC服务器名称的功能,故为了使客户端能够获取到正确的OPC服务器名称,需要配置OPCEnum的入站规则,使其功能不被防火墙所限制。在Windows防火墙中的“高级设置”中,点击新建规则,并在弹出的新建入站规则向导中选择程序,并添加%WINDIR%/system32/OpcEnum.exe为程序路径,勾选“允许连接”,勾选“域”、“专用”、“公用”。
创建OPC服务程序入站规则。PC Access SMART作为OPC服务程序,必须保证此程序受到防火墙信任才能保证通信无误。在Windows防火墙中的“高级设置”中,点击新建规则,并在弹出的新建入站规则向导中选择程序,并添加C:Program Files(x86)SiemensS7-200 PC Access SMARTPCAConfig.exe为程序路径,勾选“允许连接”,勾选“域”、“专用”、“公用”。
(3)设置DCOM安全
为了使OPC客户端可以远程访问OPC服务器,需要对DCOM的默认属性和COM安全进行配置。在“组件服务计算机我的电脑属性”选择“默认属性”标签页。勾选“在此计算机上启用分布式COM”;选择“默认身份验证基本别”为“连接”;选择“默认模拟级别”为“标识”。
选择“COM安全”标签页,点击“访问权限”的“编辑默认值”。将“Distribute COM Users”、“ANONYMOUS LOGON”、“Everyone”、“INTERACTIVE”、“SYSTEM”、“SELF”的本地访问和远程访问设置为允许。
点击“访问权限”的“编辑限制”。将“Distribute COM Users”、“ANONYMOUS LOGON”、“Everyone”、“INTERACTIVE”、“SYSTEM”的本地访问和远程访问设置为允许。
点击“启动和激活权限”的“编辑默认值”。将“Distribute COM Users”、“ANONYMOUS LOGON”、“Everyone”、“INTERACTIVE”、“SYSTEM”的本地启动、远程启动、本地激活、远程激活设置为允许。
点击“启动和激活权限”的“编辑限制”。将“Distribute COM Users”、“ANONYMOUS LOGON”、“Everyone”、“INTERACTIVE”、“SYSTEM”、“SELF”的本地启动、远程启动、本地激活、远程激活设置为允许。
OpcEnum的DCOM配置。在“组件服务计算机我的电脑DCOM配置”中选中OpecEnum的属性。将“常规”标签中的身份验证级别设置为“无”。在“安全”标签中自定义启动和激活权限,将“SYSTEM”、“Distribute COM Users”、“ANONYMOUS LOGON”、“Everyone”、“INTERACTIVE”的本地启动、远程启动、本地激活、远程激活设置为允许。设置自定义访问权限,将“Distribute COM Users”、“ANONYMOUS LOGON”、“Everyone”、“INTERACTIVE”、“SYSTEM”、“SELF”的本地访问和远程访问设置为允许。将“标识”标签中的“选择运行此应用程序的用户帐户”更改为“系统帐户”。
PC Access的DCOM配置。在“组件服务计算机我的电脑DCOM配置”中选中“S7200 PC Access SMART OPC Server”的属性。将“常规”标签中的身份验证级别设置为“无”。在“安全”标签中自定义启动和激活权限,将“SYSTEM”、“Distribute COM Users”、“ANONYMOUS LOGON”、“Everyone”、“INTERACTIVE”的本地启动、远程启动、本地激活、远程激活设置为允许。设置自定义访问权限,将“Distribute COM Users”、“ANONYMOUS LOGON”、“Everyone”、“INTERACTIVE”、“SYSTEM”、“SELF”的本地访问和远程访问设置为允许。将“标识”标签中的“选择运行此应用程序的用户帐户”更改为“交互式用户”。
(4)本地安全策略设置
在本地安全策略中,修改本地策略中的安全选项,将“网络访问:将Everyone权限应用于匿名用户”启用。
至此,已完成了OPC服务器的环境搭建工作。PC Acess OPC服务器只支持读操作,不支持写操作。
首先通过SpringBoot搭建新工程。在VsCode中的命令面板中,输入命令Spring Initializr:Creat a Maven Project…初始化一个SPringBoot工程。版本选择2.4.6的长效支持版本;选择java做为本工程的编程语言;输入自定义的工程名;选择Jar的打包形式;因为Java 8中的某些功能已经不被VsCode支持,所以选择Java 11作为Java版本;添加自定义模块Spring Web以支持前端Web工程,添加Lombok模块以精简项目中的代码,添加MysSQL Driver及Spring Data JPA模块以支持后续的数据库存储工作。
其次在工程根目录下的pom.xml导入Maven依赖,以
OPC客户端采用前后端分离的方式进行开发。客户端的前端采用VUE框架进行搭建,通过http与后端进行通信,后端以MVC框架为基础进行开发,包括OPC数据的读取、写入功能的实现。
表1 Utgard所需的项目依赖
(1)配置连接信息。
需要将OPC服务器的IP地址、用户名、密码及OPC服务程序(即PC-Access)的应用程序ID配置到ConnectionInformation中。关键代码如下:
(2)创建Server对象
(3)将Group对象添加到Server
(4)将item对象添加到Group
(5)读取OPC的值
(6)关闭服务
通过SpringBoot方式实现OPC客户端,拉近了工业现场与互联网之间的距离。使得工业现场的数据更快速、更准确的传到上位机上,为工业数据进行云计算、机器学习、数据处理等提供了良好、稳定的数据传输途径,在工业现场有着良好的实用价值。