KepOPC全新DA2UA中间件实现OPCDA与UA的转换及互操作
?????????KepOPC是支持OPC、S7等工業標準協議設備數據采集與交換的中間件軟件,本文主要介紹如何采用KepOPC中間件(DA2UA)實現從OPCDA到OPCUA的轉換及互操作,隨著OPCUA及跨平臺技術的不斷迭代,傳統OPCDA受制于DCOM安全機制等技術限制已經滿足不了工業互聯網架構下的應用需求,IT及OT更加迫切需要融合及互操作。下面讓我們看一下KepOPC中間件(DA2UA)的功能和操作方法。
本站下載地址:https://download.csdn.net/download/weixin_29482793/85024884
百度網盤下載地址:https://pan.baidu.com/s/1xnzS8aWZ-WYPJrzPoFSRcg
提取碼:2s8a
第一步、打開及退出軟件
????????雙擊應用軟件圖標打開“OPCDA2UA.exe”軟件,第一次配置時會彈出圖1所示提示窗口,點擊“OK”顯示軟件主窗口如圖2所示,按照提示操作步驟選擇“File”->“OPCSetting”后,打開參數設置頁面如圖3所示。軟件的退出采用輸入密碼方式退出,密碼默認是?admin ,常態化運行可以最小化到托盤,避免誤操作。
?圖1 首次應用提示窗口
?圖2?中間件主界面
?圖3?首次參數配置提示界面
第二步、OPC參數設置
????????按照圖3提示,點擊“OK”確定后顯示參數設置界面如圖4所示,參數設置分為如下幾步:
?圖4?參數設置界面
?????????(1)OPC UA參數配置:在程序默認的ServerAddress、ServerName、Security Modes、Security Policies、Anonymous或用戶名密碼、運行Mode等參數基礎上修改成自己需要的配置內容,以上各項均不能為空;
????????(2)OPC DA?添加節點:點擊”AddGroup“彈出DA服務器掃描窗口,如圖5所示:
?圖5?OPC DA服務器搜索界面
????????輸入OPCDA服務器IP地址,選擇OPC連接方式(DCOM、OPEN),點擊”SCAN“按鈕搜索服務器,選中對應的服務器點擊”Add“按鈕添加到OPCParamSetting窗口,如圖6所示。
?圖6?OPC?DA節點添加界面
????????單擊選中添加的DA參數行,點擊”Connect“按鈕連接OPCDA服務器,提示連接成功后,目錄樹展開服務器節點目錄,雙擊末支節點名稱添加到圖6右側列表,此過程亦可通過批量方式添加。選中Gruop1后,點擊”AddBranch“按鈕添加整組節點到右側窗口,實現節點的批量添加。(注意:批量添加的前提是Group1下節點均為末支節點),批量添加如圖7、圖8所示:
?圖7?OPC?DA節點批量添加方法
?圖8?OPC?DA節點批量添加完成
????????通過”Delete Item“和”Delete All“按鈕刪除表中選中的節點,實現對本組節點的管理,如圖9所示:
?圖9?OPC分組節點管理功能
????????點擊”Disconnect“按鈕完成本組節點的添加,保存到臨時隊列,如圖10所示,依次類推可以重復添加第二組、第三組。。。。。。的OPC節點和連接。添加完所有組后,點擊”Save“保存所有配置項目,保存并關閉參數設置窗口后,主界面顯示相關分組信息和節點信息,如圖11所示。
?圖10?OPC分組節點管理功能
?圖11?OPC分組節點添加到主界面
第三步、運行及停止
????????點擊”START“按鈕開始運行,運行正常的界面如圖12所示:
?圖12?OPC2UA運行正常界面
????????中間件支持UA服務器功能,參數設置界面可設置OPCUA服務器url地址,允許匿名連接和展開節點目錄樹,支持OPCUA數據交換是否啟用選擇,url地址可自定義,端口可自定義,默認地址為opc.tcp://0.0.0.0:4841/OPCUA/KepOPC。服務器不需要做任何配置或端口映射,通過第三方UA客戶端或者KepOPC中間件能夠在局域網或跨平臺直連該服務器,做數據橋接及寫值互操作,UA客戶端向中間件寫值的同時寫值到OPCDA服務器對應節點。
?圖13?UaExpert連接讀取
????????點擊”STOP“按鈕開始運行,運行正常的界面如圖14所示:
?圖14??OPC2UA停止運行界面
????????中間件采集及發布性能:OPCDA2UA中間件單套軟件支持不低于10000個節點的采集和發布,采集和發布周期不超過1秒,用戶根據現場實際情況分配各組參數,實現多組協程處理,提高DA采集效率和UA發布及互操作效率,下面是用6741個測試節點搭建測試環境的測試截圖,如圖15所示,可以看到四組節點分別采集平均耗時約300ms,平均發布時耗約300ms。
?
圖15??OPC2UA運行在服務器的界面
客戶端讀寫實例:
# encoding=utf-8
import sys,time
sys.path.insert(0, "..")
from opcua import Client
from opcua import ua
import time
from datetime import datetime,timedelta
if __name__ == "__main__":
? ? client = Client("opc.tcp://132.232.202.106:4841/OPCUA/KepOPC") #opcua服務器地址
? ? client.set_user("admin") #登陸用戶名
? ? client.set_password("123456") #登陸密碼
? ? client.set_security_string("Basic256Sha256,SignAndEncrypt,certificate-example.der,private-key-example.pem") #安全和認證模式
? ? client.application_uri = "urn:example.org:FreeOpcUa:python-opcua"
? ? client.secure_channel_timeout = 30000
? ? client.session_timeout = 30000
? ? try:
? ? ? ? client.connect()
? ? ? ? print "Connect to ua server success!"
? ? ? ? root = client.get_root_node()
? ? ? ? print("Objects node is: ", root.get_browse_name())
? ? ? ? objects = client.get_objects_node()
? ? ? ? print "childs og objects are: ", objects.get_children()
? ? ? ? channel = objects.get_children()
? ? ? ??
? ? ? ? var = client.get_node("ns=2;s=Group1.WSCC.Device1.Group1.wasiTemp") #測試讀寫點
? ? ? ? var1 = client.get_node("ns=2;s=Group1.WSCC.Device1.Group1.wasiPress")?#測試讀寫點1
? ? ? ? var2 = client.get_node("ns=2;s=Group1.WSCC.Device1.Group1.ByteArray")?#測試讀寫點2
? ? ? ??
? ? ? ? for i in range(0,100000): #循環讀寫值
? ? ? ? ? ? res = ?var2.get_data_value().Value.Value? #測試點2數組類型的讀寫操作
? ? ? ? ? ? print res
? ? ? ? ? ? write_list = []
? ? ? ? ? ? for j in range(0,len(res)):
? ? ? ? ? ? ? ? write_list.append(float(i+j+0.01))
? ? ? ? ? ? var2.set_value(write_list)
? ? ? ? ? ? time.sleep(2)
? ? ? ? ? ??
? ? ? ? ? ? var.set_value(float(i+0.25))? #測試點float類型的讀寫操作
? ? ? ? ? ? print var.get_value() # get value of node as a python builtin
? ? ? ? ? ? time.sleep(2)
? ? ? ? ? ? var1.set_value(float(i+0.55))?#測試點1float類型的讀寫操作
? ? ? ? ? ? print var1.get_value() # get value of node as a python builtin
? ? ? ? ? ? time.sleep(2)
? ? finally:
? ? ? ? client.disconnect()
????????運行客戶端實例后,可以看到圖16中服務器記錄寫值過程和狀態(成功/失敗),同時服務器將值同步寫入到opcda服務器對應的節點中去,從而實現從opcua客戶端到opcda服務器的讀/寫值互操作功能。
?圖16? 服務器端讀寫操作日志提示
?????????同時,第三方客戶端或用戶自己編寫的客戶端也能訂閱到服務器中對應寫值節點值的改變,如圖17所示,以上客戶端讀寫實例能夠完整的測試OPCDA2UA中間件軟件的連接及讀寫,使用之前請先pip安裝對應的模塊并導入.der和.pem文件。
?圖17? 客戶端讀寫操作及第三方軟件訂閱結果
總結:
????????OPCDA2UA中間件采用免安裝設計,連接方式為DCOM和OPEN兩種DA連接方式,支持同時連接多組OPCDA服務器,按照用戶要求的節點添加到各分組列表中,同時具備分組管理和節點管理功能;支持各分組參數設置及修改功能,主要包括OPCUA服務器地址、名稱及安全機制等參數。
????????KepOPC中間件系列的DA轉UA軟件能夠輕松實現從OPCDA到UA的采集轉換及讀寫互操作,減少自動化工程師的DCOM配置煩惱,相信很多自動化或IT工程師都受過DCOM的折磨;降低IT工程師在工業互聯網應用場景中使用kepware等國外軟件的應用成本,同時支持功能定制和靈活裁剪,更好適配工業互聯網應用場景;通過該方式能夠實現跨平臺數據交換,實現windows下的DA服務器與其他操作系統中ua客戶端的互聯互通,為跨平臺OPC數據交換提供一種便捷方案,應用者只需關注邊緣網關或安全設備中ua客戶端的開發,降低產品開發周期和成本。
往期回顧:
-
Raspberry?Pico?DIY應用介紹
-
基于Raspberry的超聲波測距儀
-
Web端如何通過MQTT與OPC實現設備交互控制?
-
Linux系統如何實現從OPC到阿里云IoT平臺的數據交換?
-
礦用設備感知數據接入OPC數據采集與交換
-
KepOPC-AliIoT(阿里云物聯網平臺)
-
如何實現從OPC DA到PLC的數據逆向交換?
-
如何實現從OPC到阿里云IoT平臺的數據交換?
-
OPC-阿里云&OPC-InfluxDB
-
OPC數據采集及分析軟件更新介紹
-
OPCDA-UA
-
智能制造還有多遠,KepOPC又能解決哪些問題呢?
-
如何通過KepOPC的MQTT功能訂閱工業現場數據?
-
S7中間件如何通過MySQL與PLC讀寫交互?
-
西門子S7系列PLC數據采集及交換平臺功能介紹
-
西門子S7系列PLC數據采集及交換平臺使用說明
-
KepOPC工業互聯網數據交換平臺
-
OPC實時數據發布到MQTT及存儲MySQL關系數據庫
-
OPC實時數據發布到MQTT及存儲InfluxDB時序數據庫
-
KepOPC不止是OPC客戶端那么簡單
-
如何利用Socket和COM通迅實現非標協議設備的工業互聯?
總結
以上是生活随笔為你收集整理的KepOPC全新DA2UA中间件实现OPCDA与UA的转换及互操作的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python控制安捷伦频谱仪_频谱仪远程
- 下一篇: 巧用JS位运算