國機傳感科技有限公司 韓 策 張 娜 王松亭 張 凱 何 方 袁 峰
隨著計算機性能的飛速發(fā)展,瀏覽器可支撐的項目復雜度日益提高,進而推動B/S架構、java語言、java框架成為系統(tǒng)的主流。其中SpringBoot已經(jīng)成為當前搭建javaWeb工程最便捷的工具之一。OPC作為工業(yè)控制領域中一種重要的通信協(xié)議,可以有效的解決計算機與工控設備通信難的問題。隨著SpringBoot在工控相關領域使用率逐日提高,基于SpringBoot的OPC通信技術也會成為一種不可或缺的應用。
本項目基于SpringBoot設計了OPC客戶端。該客戶端支持OPC DA2.0協(xié)議,支持多種OPC服務器,包括但不限于KEPserver、Matrikon、PC-Access。
工業(yè)領域中使用的OPC服務器種類眾多,比較流行的模擬OPC服務器有KEPserverEx 6、MatrikonOPC Server for Simulation,S7-200 PC Access SMART(以下簡稱PC-Acess)。其中KEPserver、Matrikon以模擬仿真為主,功能比較完善,PC-Acess是德國西門子股份公司開發(fā)的,適用于S7-200 SMART小型PLC的OPC服務器,對于該款PLC的支持較好。本文以PC-Access為例,闡述OPC服務器的搭建過程,以及后續(xù)客戶端的實現(xiàn)。
西門子官方網(wǎng)站的S7 200 Smart產品與服務器中提供了PCAccess的下載,版本為V2.3。下載后根據(jù)提示進行安裝。
所有OPC DA2.0通信都基于COM和DCOM。當OPC的服務器和客戶端在同一臺服務器上時,使用COM進行通信,當OPC的服務器和客戶端不在同一服務器上時,使用DCOM通過網(wǎng)絡進行通信。OPC服務器搭建的前提是配置好所在服務器的DCOM設置,DCOM是OPC技術的基石。
(1)新建用戶并給用戶賦權
出于對系統(tǒng)的安全性、管理的便捷性考慮,新建一個Windows用戶(本項目里用戶名為OPCUser)。保證新建的服務器用戶和客戶端用戶的用戶名和密碼相同。在“Distribute COM Users”用戶組中添加OPCUser用戶。
(2)修改防火墻配置
DCOM使用服務器上的135端口進行通信,為了保證通信不被防火墻攔截,需要將135端口添加到防火墻的白名單中。在Windows防火墻中的“高級設置”中啟用“Windows Management Instrumentation(DCOM-In)”的入站規(guī)則,并將作用域里的“本地IP地址”、“遠程IP地址”更改為“任何IP地址”,在指定此規(guī)則應用的配置文件中勾選“域”、“專用”、“公用”。
創(chuàng)建OPCEnum入站規(guī)則。OPCEnum.exe提供了客戶端計算機獲取OPC服務器名稱的功能,故為了使客戶端能夠獲取到正確的OPC服務器名稱,需要配置OPCEnum的入站規(guī)則,使其功能不被防火墻所限制。在Windows防火墻中的“高級設置”中,點擊新建規(guī)則,并在彈出的新建入站規(guī)則向導中選擇程序,并添加%WINDIR%/system32/OpcEnum.exe為程序路徑,勾選“允許連接”,勾選“域”、“專用”、“公用”。
創(chuàng)建OPC服務程序入站規(guī)則。PC Access SMART作為OPC服務程序,必須保證此程序受到防火墻信任才能保證通信無誤。在Windows防火墻中的“高級設置”中,點擊新建規(guī)則,并在彈出的新建入站規(guī)則向導中選擇程序,并添加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的屬性。將“常規(guī)”標簽中的身份驗證級別設置為“無”。在“安全”標簽中自定義啟動和激活權限,將“SYSTEM”、“Distribute COM Users”、“ANONYMOUS LOGON”、“Everyone”、“INTERACTIVE”的本地啟動、遠程啟動、本地激活、遠程激活設置為允許。設置自定義訪問權限,將“Distribute COM Users”、“ANONYMOUS LOGON”、“Everyone”、“INTERACTIVE”、“SYSTEM”、“SELF”的本地訪問和遠程訪問設置為允許。將“標識”標簽中的“選擇運行此應用程序的用戶帳戶”更改為“系統(tǒng)帳戶”。
PC Access的DCOM配置。在“組件服務計算機我的電腦DCOM配置”中選中“S7200 PC Access SMART OPC Server”的屬性。將“常規(guī)”標簽中的身份驗證級別設置為“無”。在“安全”標簽中自定義啟動和激活權限,將“SYSTEM”、“Distribute COM Users”、“ANONYMOUS LOGON”、“Everyone”、“INTERACTIVE”的本地啟動、遠程啟動、本地激活、遠程激活設置為允許。設置自定義訪問權限,將“Distribute COM Users”、“ANONYMOUS LOGON”、“Everyone”、“INTERACTIVE”、“SYSTEM”、“SELF”的本地訪問和遠程訪問設置為允許。將“標識”標簽中的“選擇運行此應用程序的用戶帳戶”更改為“交互式用戶”。
(4)本地安全策略設置
在本地安全策略中,修改本地策略中的安全選項,將“網(wǎng)絡訪問:將Everyone權限應用于匿名用戶”啟用。
至此,已完成了OPC服務器的環(huán)境搭建工作。PC Acess OPC服務器只支持讀操作,不支持寫操作。
首先通過SpringBoot搭建新工程。在VsCode中的命令面板中,輸入命令Spring Initializr:Creat a Maven Project…初始化一個SPringBoot工程。版本選擇2.4.6的長效支持版本;選擇java做為本工程的編程語言;輸入自定義的工程名;選擇Jar的打包形式;因為Java 8中的某些功能已經(jīng)不被VsCode支持,所以選擇Java 11作為Java版本;添加自定義模塊Spring Web以支持前端Web工程,添加Lombok模塊以精簡項目中的代碼,添加MysSQL Driver及Spring Data JPA模塊以支持后續(xù)的數(shù)據(jù)庫存儲工作。
其次在工程根目錄下的pom.xml導入Maven依賴,以
OPC客戶端采用前后端分離的方式進行開發(fā)??蛻舳说那岸瞬捎肰UE框架進行搭建,通過http與后端進行通信,后端以MVC框架為基礎進行開發(fā),包括OPC數(shù)據(jù)的讀取、寫入功能的實現(xiàn)。
表1 Utgard所需的項目依賴
(1)配置連接信息。
需要將OPC服務器的IP地址、用戶名、密碼及OPC服務程序(即PC-Access)的應用程序ID配置到ConnectionInformation中。關鍵代碼如下:
(2)創(chuàng)建Server對象
(3)將Group對象添加到Server
(4)將item對象添加到Group
(5)讀取OPC的值
(6)關閉服務
通過SpringBoot方式實現(xiàn)OPC客戶端,拉近了工業(yè)現(xiàn)場與互聯(lián)網(wǎng)之間的距離。使得工業(yè)現(xiàn)場的數(shù)據(jù)更快速、更準確的傳到上位機上,為工業(yè)數(shù)據(jù)進行云計算、機器學習、數(shù)據(jù)處理等提供了良好、穩(wěn)定的數(shù)據(jù)傳輸途徑,在工業(yè)現(xiàn)場有著良好的實用價值。