OPC UA 概述
OPC UA是一項開放標準,適用于從機器到機器間(M2M)的水平通信和從機器直到云端的垂直通信。該標準獨立于供應商和平臺,支持廣泛的安全機制,并且可以與 PROFINET 共享同一工業以太網絡。
OPC UA通信的特性及優勢
特性:
? ?獨立于供應商和平臺
? ?集成的安全概念(加密、簽名和驗證)
? ?一致、端到端,并可擴展
? ?信息模型和語義服務
? ?與PROFINET 不受限制的并行傳輸
優勢:
? ?標準化接口和廣泛的可用性
? ?直接按照協議進行安全通信,無需額外硬件
? ?跨所有自動化層的直接連接和通信
? ?簡單明了的數據解釋
? ?基于以太網的簡單網絡,使用現有的工業以太網基礎設施
?簡單機器集成用的國際標準化接口(配套規范)
西門子為全集成自動化(TIA)提供從現場層擴展到控制和操作層的全面硬件和軟件組合。作為開放的通信標準,OPC UA 在整個 TIA 產品組合中扮演著重要的角色。
圖1:產品概覽
應用示例內容及軟/硬件需求
此應用示例的內容
為了實現 OPC UA 客戶端與 SIMATIC S7-1500 的服務器進行數據交換,這個應用示例將向您詳細介紹 SIMATIC S7-1500 的 OPC UA 服務器的配置以及如何通過 OPC UA 客戶端軟件連接 S7-1500 服務器。
用于測試用途的 OPC UA 客戶端
● ?Unified Automation 的 “UaExpert”??擅赓M使用的功能豐富的客戶端:? ?下載 UaExpert 的鏈接 ( https://www.unified-automation.com/downloads/opc-ua-clients.html )
?● ?OPC Foundation 的 “UA Sample Client” 。在 OPC Foundation 注冊的用戶可免費使用該客戶端:下載 OPC Foundation 示例客戶端的鏈接 ( https://opcfoundation.org )
S7-1500 配置 OPC UA 服務器的軟/硬件需求
已獲得操作 OPC UA 功能的運行系統許可證。
TIA Portal V14 以及S7-1500 V2.0以后開始支持OPC UA服務器功能,除 S7-1500 標準 ? ? ?CPU 之外,這一特性同樣適用于 S7-1500F、S7-1500T、S7-1500C、S7-1500pro ? ? CPU、ET 200SP CPU、SIMATIC S7-1500 軟件控制器和 PLCSIM Advanced。S7-1500 CPU 上所有集成的 PROFINET 接口,均可用于訪問該 CPU 的 OPC UA ? ? ?服務器。? ? 不能借助 CP 或 CM 通過自動化系統的背板總線直接訪問 CPU 的 OPC UA 服務器。下表列出了不同版本所支持的功能。
表1:OPC UA功能列表
S7-1500 的 OPC UA 服務器實驗環境
在本應用實例中,使用以下產品配置 OPC UA 服務器。
圖2:實驗環境
軟件:
TIA V15.1
UA Expert V1.5.1
硬件:
CPU 1511-1PN V2.6
配置 S7-1500 的 OPC UA 服務器
1、使能 OPC UA 服務器
S7-1500的 OPC UA 服務器默認是禁用的,下面介紹如何使能一個簡單的 OPC UA 服務器
1.1、導航至 CPU 的屬性常規界面選擇 OPC UA 服務器常規選項激活 OPC UA 服務器,如下圖。
圖3. 使能OPC UA服務器
1.2、導航至 "CPU 屬性>運行系統許可證> OPC UA" 選擇選擇所需許可證類型,如下圖4。
運行 S7-1500 CPU 的 OPC UA 服務器需要使用許可證。所需的許可證類型取決于相應 ? ? CPU 的性能。將許可證類型分為以下幾類:
● ?SIMATIC OPC UA S7-1500 小型(CPU 1511、CPU 1512、CPU 1513、ET 200SP ? ?CPU、CPU 1515SP PC 需要使用這種類型)
● ?SIMATIC OPC UA S7-1500 中型(適用于 CPU 1515、CPU 1516、軟件控制器 CPU ? ?1507、CPU 1516pro-2PN)
● ?SIMATIC OPC UA S7-1500 大型(CPU 1517、CPU 1518 需要使用這種類型)
圖4. 運行許可證
1.3、導航至 ?"CPU 屬性>OPC UA>常規" ?選項設置 OPC UA 應用名稱,也可以使用默認名稱,如下圖5。請注意,證書上需要輸入應用程序名稱(主題備用名稱),并且更改應用程序名稱后可能需要再次生成現有證書。
圖5. 應用名稱
1.4、導航至 "CPU 屬性>OPC UA>服務器" 選項設置服務器會話數量限制以及采樣發布的最短間隔,無特殊需求也可以使用默認設置,如下圖6。
● ?會話最大超時,在該字段中指定在不進行數據交換的情況下 OPC UA 服務器關閉會話之前的最大時長。? ?允許值在 1 到 600000 秒之間。
● ?最大 OPC UA 會話數,在該字段中指定 OPC UA 服務器啟動并同時操作的最大會話數。最大會話數取決于 CPU 的性能。每個會話都會占用資源。
● ?最大注冊節點數,在該字段中指定 OPC UA 服務器注冊的最大節點數。最大注冊節點數取決于 CPU 的容量,并會在組態字段內容時顯示(將光標放在字段中)。每次注冊都會占用資源。
● 最短采樣時間間隔, ? ?在“最短采樣時間間隔”中,可設置 OPC UA 服務器記錄 ? ? CPU 變量值并與以前值相比較檢查是否發生變更的時間間隔。
● 最短發布時間間隔, 在“最短發布時間間隔”中,可設置變量值發生改變時服務器通過新值向客戶端發送消息的時間間隔。
● 所監視元素的最大數量,在該字段中指定該 CPU 的 OPC UA 服務器可同時監視值更改的最大元素數量。?監視會占用資源,可監視元素的最大數量取決于所用的 CPU。
圖6. 選項
1.5、編譯硬件并下載就可以啟用一個簡單的 OPC UA 服務器,服務器在其標準配置中允許任意客戶端進行連接,如下圖7所示。如果需要管理客戶端證書以及訪問認證管理請繼續進行下面配置。
圖7. 非安全訪問測試
2、使能全局安全設置
為了管理 OPC UA 服務器的證書必須啟用TIA項目的全局安全設置。
2.1、導航至項目樹下安全設置為項目設置用戶名密碼,如下圖8。
?
?
?
?
圖8. 安全設置
2.2、導航至 "CPU 屬性>防護與安全>證書管理器" 選項使能證書管理器,如下圖9。
圖9. 證書管理器
3、配置安全策略
通過 OPC UA 服務器的安全策略來配置 OPC UA 客戶端和服務器之間的加密和身份驗證方式,如下圖10,選擇允許的安全策略。
圖10. 安全策略
4、通過管理證書實現安全訪問
為了實現只允許指定的 OPC UA 客戶端與 OPC UA 服務器進行連接,需要做以下配置
4.1、創建服務器證書,根據需要選擇自簽署還是 CA 簽署,如下圖11。
圖11. 創建服務器證書
4.2、禁止運行過程中自動接受客戶端證書,如下圖12。
圖12. 禁用自動接受客戶端證書
4.3、導出客戶端證書,如下圖13。
圖13. 客戶端證書
4.4、管理受信證書,把之前導出的客戶端證書導入到受信證書一欄,如下圖14。
圖14.受信證書導入
4.5、分配可信客戶端,如下圖15。
圖15.可信客戶端
5、用戶身份認證
S7-1500 OPC UA服務器用戶身份認證分為2種,一種是訪客認證,另一種是用戶名和密碼認證。如果需要指定用戶登錄權限需要禁止訪客認證并增加用戶名密碼認證,如下圖16。
圖16. 用戶身份認證
6、分配 PLC 變量的訪問權
對 PLC 中創建的變量分配它的讀寫權限,默認都可以訪問,可以單獨為變量分配讀寫權限,也可以整個 DB 塊設置訪問權限,如下圖17。
圖17.變量訪問權限
7、項目編譯下載后進行訪問測試
通過 UA Expert 進行連接訪問,選擇安全策略及用戶身份認證方式后進入證書驗證界面,需要信任服務器證書并接受臨時會話請求,如下圖18。注意這里 UA Expert 通過 Trust Server Certificate 按鈕即可完成 Server 證書的導入,如果是其它客戶端沒有此功能需要手動到 TIA 下的證書管理器中導出 CA 證書和設備證書并拷貝到客戶端對應受信證書列表里即可。
圖18.建立連接
建立連接成功后瀏覽PLC數據,并進行讀寫訪問測試,如下圖19。
圖19.數據訪問
8、OPC UA 服務器方法的創建
在 S7-1500 CPU(自固件版本 V2.5 起)的 OPC UA 服務器中,可以選擇通過用戶程序提供方法。? ? OPC UA 方法為不同通信節點之間的交互提供了有效機制,該機制提供作業確認和反饋值,因此用戶無需再編程握手機制。
OPC UA 方法的工作原理 ? ?
通常,OPC UA 方法的工作原理與運行系統中由外部 OPC UA 客戶端調用的受專有技術保護函數塊的原理類似。OPC UA 客戶端僅"監視"已定義的輸入和輸出,函數塊、方法或算法的內容對外部 OPC ? ? UA 客戶端保持隱藏,OPC UA 客戶端接收成功執行的反饋以及函數塊(方法)返回的值,或者,如果執行不成功,則會收到錯誤消息。
服務器方法的實現 1. 使用 OPC_UA_ServerMethodPre 查詢服務器方法調用該指令將執行以下任務: – ?通過該指令詢問 CPU 的 OPC UA 服務器是否已通過 OPC UA 客戶端調用服務器方法。 – ?如果已調用方法,并且服務器方法具有輸入參數,服務器方法現在會接收到輸入參數。 2. 編輯服務器方法 ? ?在這部分服務器方法中,用戶提供實際用戶程序。如果服務器方法使用輸入參數,則可使用這些參數。? ?僅當 OPC UA 客戶端已調用服務器方法時,才可執行服務器方法的這一部分。成功執行方法后,如果方法具有輸出參數,需要設置服務器方法的輸出參數。 3. 使用 OPC_UA_ServerMethodPost 響應服務器方法 ? ?要完成服務器方法,應調用 “OPC_UA_ServerMethodPost” 指令。使用參數通知 “OPC_UA_ServerMethodPost” 指令是否已處理用戶程序,如果用戶程序已成功執行,則會通過相關參數通知 OPC UA 服務器。OPC UA 服務器隨后會將服務器方法的輸出參數發送到 OPC UA 客戶端。 ? ?無論用戶程序是由 “OPC_UA_ServerMethodPre” 和 “OPC_UA_ServerMethodPost” 指令處理還是在下一個周期繼續執行,始終以成對的形式調用這兩個指令。
如下圖20所示給出了使用 OPC UA 服務器方法指令為用戶程序中所執行的 OPC UA 客戶端提供一個方法。需要注意的是服務器方法指令的多重實例必須命名為 “OPC_UA_ServerMethodPre_Instance” 和 “OPC_UA_ServerMethodPost_Instance”,否則不會在服務器上創建方法,還有就是需要聲明 “UAMethod_InParameters” 和 “UAMethod_OutParameters” 兩個變量分別連接到方法指令引腳上,否則方法指令會報錯。
圖20.方法程序代碼
在客戶端內瀏覽到創建的服務器方法,選中 Method 后鼠標右鍵來調用方法,在調用方法對話框中傳輸輸入參數點擊 Call 按鈕,返回輸出參數及方法執行后的狀態,如下圖 21 所示。
圖21.方法測試
常見問題及建議
1、通過 OPC UA 客戶端訪問 OPC UA 服務器的建議
● ?對于一次性或不頻繁的數據訪問,請使用標準的讀/寫訪問。
● 對于少量數據的循環訪問(循環間隔最長約為 5 秒),請使用訂閱。?優化 OPC UA 服務器中的最短發布時間間隔設置和最小采樣時間間隔設置。
● 如果定期訪問某些特定變量(重復訪問),則可使用函數 “RegisteredRead” 和 “Regist ?eredWrite” 。
2、導致 OPC UA 服務器連接失敗的原因
當建立到 OPC UA 服務器的連接時,需用注意許多要點來保證過程順利地進行。以下連接建立出錯的原因與用到的 OPC UA 客戶端和服務器無關。
基于證書連接的日期和時間
基于證書授權的通訊中,在OPC UA 服務器上,需要檢查證書的有效期。這就要求終端系統具備當前時間。對證書檢查時,OPC UA 服務器可能會給出時間錯誤響應,狀態碼為 “BadSecurityChecksFailed” 或者 “BadCertificateTimeInvalid” 。解決方案建議使用 NTP 服務器來實現時鐘同步。如果 NTP 無法實現,則只能手動為終端系統設置當前時間。
經過 NAT 路由器的 OPC UA 客戶端-服務器連接嘗試失敗,產生錯誤信息 “BadCommunicationError” 或 “BadNotConnected” 。
在NAT系統中,IPv4 數據包被路由器處理。?這意味著數據包的源IP?( “Source NAT” ) 或者目的 IP ( “Destination NAT” ) 會被路由器配置的IP地址替換掉 ( 取決于目的端口 )。而客戶端和服務器并不知道這個過程。
編輯:黃飛
評論
查看更多