馬 躍,何雨婷,尹震宇,李明時,柴安穎
(中國科學院大學,北京 100049)
(中國科學院 沈陽計算技術研究所,沈陽 110168)
隨著世界經濟的高速發展,基于信息化與產業化高度融合的智能制造先進理念已在工業制造領域引發影響深遠的產業變革,也將引領未來全球制造業發展模式的前進與革新.目前德、美、韓、日等工業強國正積極推進以工業物聯網為主導的第4次工業革命.OPC UA提供了一種工業數據交換的規范,通過OPC UA協議,工業現場設備不僅能夠進行同層設備間的信息交互,同時也能夠縱向通信,將設備信息集成至更高層的設備層中,位于工業系統不同層次的設備信息的交換和集成,使設備間的互操作性得到進一步提升[1].
OPC UA各方面研究成為研究熱點.趙悅琪[2]設計了一種基于雙向身份認證的OPC UA認證方式,對基本安全模型進行了優化,加強了用戶信息保密、防止重放攻擊、防止冒充等安全性能;黃惠群[3]研究了一種基于OPC UA技術的盾構實時監測系統,其采集層以OPC UA解決方案來完成實時數據采集和存儲;魏旻[4]利用OPC UA提供的安全模型,設計了一種基于隱式證書的認證及密鑰協商機制,完成安全通道建立,為OPC UA客戶端與服務器之間建立安全會話提供保證;閔曉霜[5]基于國產化軟硬件平臺,設計并實現了一種OPC UA服務器,并在PLC控制系統中進行應用.柴處處[6]提出了基于OPC UA技術的實時數據服務,解決了數據采集平臺中信息模型的一致問題,為處于智能制造體系中基礎層的數據采集平臺提供了一個開放的高效的通信服務.
然而在自動化系統中交互數據頻繁,網絡帶寬資源有限,對網絡資源的有效利用已成為重要研究內容.在工業控制系統中,重要的設備狀態信息不能夠及時傳遞到系統,會造成服務質量下降甚至產生嚴重的生產問題,OPC UA服務質量的問題仍等待解決.本文在對OPC UA規范進行研究,分析了多種隊列調度算法的特點,提出了一種結合復雜優先級調度算法的OPC UA消息發送隊列,并加以驗證.
OPC UA是一種獨立于平臺的標準,通過這種標準,各種系統和設備可以通過各種類型的網絡在客戶機和服務器之間發送消息進行通信.OPC UA可以映射到各種通信協議中,數據可以以各種方式編碼,以權衡可移植性和效率[7].OPC UA協議具有傳統OPC不同方面的功能,同時還講Web服務進行,同時規范復雜地址空間并構建統一數據模型,這也為協議實現、信息建模和服務器模型設計提供技術支撐,如圖1所示.

圖1 OPC UA體系圖
OPC UA規范根據不同的用例定義了多種服務,如表1所示.這些服務由請求和應答消息組成,使用了Web服務的請求和應答機制.客戶端需要發送一個請求給服務器,才能在服務器調用所請求的服務.服務器處理完請求后,會給客戶端發送一個響應消息返回.由于消息是異步傳輸的,所有服務的調用都被定義成異步的,接受到的數據根據序列號排序還原[8].

表1 按用例劃分的OPC UA服務
OPC UA的數據通信在不同系統間進行的數據交換,客戶端和服務器運行在不同的網絡節點上或不同的進程中,所以對于錯誤的探測和處理也很重要.基于這個原因,客戶端對每個服務的調用都設置自己的超時時間(timeout).同時,超時時間隨請求發送到服務器,用于探測超時不再需要返回的消息.
OPC UA服務器首先需要建立通信上下文,這使得OPC UA服務是有狀態.正是由于這個原因,在OPC UA消息中不僅有傳遞設備數據的服務還有用于創建、保持以及修改通信上下文的服務,通信上下文層次如圖2所示.

圖2 通信上下文層次
安全通道以初始連接為基礎,用于建立通信和消息交互所需的安全環境;會話是客戶端程序與服務器程序相互連接的渠道,在安全通道中創建,位于安全通道的上層;訂閱是服務器和客戶端之間數據變化和通知的上下文,在一個會話中可以創建多個訂閱;客戶端需要進行監視數據變化的節點和需要收到通知的事件源綁定于訂閱項中,一個訂閱中可以創建多個監視項.
OPC UA規范定義的服務中,用來交換不同類型信息的服務如表2所示,其中有16個服務用來進行生產設備信息數據交互[9].

表2 OPC UA信息服務
在本節中,分析了OPC UA通信及服務的特點,提出了一種基于多優先級最早時限優先的多級反饋隊列算法(Multi-Layer Feedback Queue based on Earliest Deadline First with Multi Priority,MLFQ-EDF-MP),并根據該算法進行OPC UA消息隊列設計,最后提出了適用于該算法的評價方法.
OPC UA是建立在TCP基礎上的應用層協議,OPC UA棧用來處理OPC UA通信的3種必須任務,即數據編碼、安全通信和數據傳輸.OPC UA二進制編碼、UA-SecureConversation安全協議和UA TCP協議完成了客戶端與服務器的通信.
通信時客戶端與服務器分別建立TCP、安全信道以及應用程序層的連接.建立過程如圖3所示.TCP層次的初始連接需要打開socket套接字并通過UA TCP協議發送HEL/ACK報文進行兩次握手;安全信道層的連接通過安全信道服務驗證雙方身份信息;應用層通過會話服務建立并激活會話.以上3層連接的建立構成了OPC UA的通信上下文,基于OPC UA通信上下文的數據通信才能確可擴展性、可靠性和安全性[10].所有OPC UA的信息交互服務都建立于會話上.

圖3 通信連接過程
OPC UA消息由服務器調用不同的服務生成,經過通信棧的編碼和加密后通過網絡連接發送.OPC UA消息結構如圖4所示.每個OPC UA消息的消息頭(Message Header)中包含了消息的時間戳,超時時間以及消息的服務類型等.

圖4 OPC UA消息結構
根據OPC UA的服務類型和應用場景,可以將OPC UA規范定義的消息分為兩類:信息消息(Information Message,IM)和通信上下文消息(Communication Context Message,CCM),其中IM消息為工業系統中用于傳輸設備信息的消息.根據不同的實時性可以分為4類,每種類型的消息如下:
1) CCM:其他信息發送的基礎,其中包括建立初始連接(HEL/ACK消息)和返回錯誤的消息(ERR消息)以及建立通信上下文的消息(OpenSecureChannel,CreateSession,CreateMonitorItems,CreateSubscription)等;
2) PHM:實時性較強、優先級(Priority)較高的消息,如Event Publish消息;
3) PLM:具有較低的優先級和較低的實時性,在OPC UA消息中除了CCM、PHM和TCM外都是此類消息;
4) TCM:具有最低的優先級,為周期性發送的本地狀態信息,如DataChange Publish消息.
本文提出的MLFQ-EDF-MP算法是一種適用于OPC UA通信的動態隊列調度算法,為了實現對OPC UA消息隊列的差異化管理和調度,本算法將消息時限、消息優先級以及消息應用場景作為參考因素,對消息進行分類和排序.
OPC UA是有狀態的服務,通信上下文的改變會影響IM消息的交互.CCM和IM消息需以MLFQ算法進行調度[11,12],這兩種消息在產生后分別進入服務保證隊列和盡力服務隊列.CCM消息的優先性最高,進入消息隊列后搶占所有發送資源,只有CCM消息全部處理完成后才能調度IM消息.CCM在調度時采用先進先出(FIFO)的資源調度方式,以保證通信上下文的構建.
一種EDF-MP算法用來對IM消息進行調度.EDF-MP算法根據該權值(Weight)將各個隊列進行調整并衡量每個隊列的發送能力,消息權值根據消息優先級和消息時限等因素計算得出.不同優先級的隊列都有不同的隊列管理機制,IM消息進入各自消息隊列后有不同的調度方式.由于該算法的變量為時限和優先級,可以避免低時限低優先級消息將高優先級消息無限擠占而造成的超時現象[13,14].
OPC UA消息隊列構建時的基本思想就是在OPC UA服務接口和OPC UA棧之間將生成的消息根據服務分成不同的類型,進入不同的隊列,對每個消息隊列實施不同的管理方式[15].OPC UA通信棧在接收到消息時就根據消息頭中的時間戳(timestamp)、服務ID(serviceid)以及超時時間(timeout)對消息進行分類,并按照響應的流量控制策略將消息組包并由OPC UA通信棧出口送至網絡中.
根據OPC UA服務的特點,設計了如圖5所示的OPC UA消息隊列模型,共由4種隊列組成,即3個盡力服務隊列(Q1,Q2,Q3)和一個保證服務隊列(Q0),其中CCM消息進入保證服務隊列Q0,PHM類消息進入盡力服務隊列Q1,PLM類消息進入盡力服務隊列Q2,TCM類消息進入盡力服務隊列Q3.

圖5 OPC UA消息隊列結構
OPC UA與其他網絡協議類似,有最大消息負載,超過負載的消息會被切塊,同一待發送消息的消息塊通過消息指針連接成一個消息體.消息隊列的公共屬性有:隊列長度、隊列容量和指向消息體的隊列頭尾指針,盡力服務隊列的屬性還包含當前最大權值.CCM消息體由待發消息組成,PHM消息體和PLM消息類似,包括待發送消息、TTL和權值.
1) 權值:權值的計算函數為Fn(XTTL,XPri,XOverStack)(n=1,2,3),同類消息積壓數量、消息優先級以及生存時限等因素都會影響權值的大小,在設置函數時應該注意一下幾個要點:
i.TTL相同且優先級相同時,權值相同;
ii.TTL相同但優先級不同時,WPHM>WPLM>WTCM;
iii.Fn為分段函數.
2) TTL:消息剩余的有效時間.
在同組TCM信息中,能夠反映設備當前狀態的最新信息最重要,同組消息數和同組消息指針是TCM消息體中特有的屬性,用來標記最后進入隊列的消息.
基于MLFQ-EDF-MP算法的隊列調度流程如圖6所示,實現過程分為以下幾個步驟:

圖6 MLFQ-EDF-MP算法流程
Step1.隊列初始化:首先建立并初始化3個盡力服務隊列(Q1,Q2,Q3)和一個保證服務隊列(Q0)用于存放不同類型的消息;
Step2.消息入隊:進入通信棧的消息分類后鏈入相應的隊尾.特別的是,TCM消息體鏈入該隊列同組消息隊尾,并更新這組消息本組消息數;
Step3.隊列選擇:首先判斷保證服務隊列Q0中是否有未發送的消息體,如果存在未發消息,則選擇保證服務隊列的第1個消息,進入Step 6;如果保證服務隊列Q0為空,則進入Step 4;
Step4.隊列更新:更新盡力服務隊列中消息體的TTL值,丟棄預發送TTL不大于0的消息體;根據權重更新函數(W= XPri * XOverStack / XTTL)更新隊列中消息體的權值并調整隊列中消息順序;
Step5.全局擇優:取3個盡力服務隊列中權值最大的消息體Elemax發送,重新整理發送隊列;
Step6.發送:將獲取的OPC UA消息體傳組包并發送,發送成功后,回到Step 3重新選擇待發送消息.
OPC UA消息隊列對服務器服務質量(QoS)的影響因素有消息的丟包率和消息的優先調度性[16].消息的發送在網絡時延和帶寬固定的情況下會相互制約,即一類消息對網絡的占用會對其他消息的發送產生影響,所以該OPC UA消息隊列評估環境的網絡是相同的.
OPC UA客戶端對各類消息的接收情況為該消息隊列模型的第一個評估標準.可以通過該評估指標計算各類消息在OPC UA客戶端中的接受占比,從而觀測出該隊列模型對高優先級消息的優先發送特性,同時反映出優先級消息發送的公平性是否兼顧.
第2個評估標準為服務器的服務質量.利用分值獎懲機制對各優先級消息的發送情況進行評估[17],如表3所示.因 CCM、PHM、PLM 和 TCM 各隊列的消息價值不同,則對每個隊列發送消息的獎勵和懲罰額度都要進行區分.CCM類消息為其他消息的交互構建基本通信環境,它的發送獎勵和丟棄懲罰分數最高,其他消息依次排序,即A1>B1>C1>D1,A2>B2>C2>D2.

表3 獎懲機制
在該實驗中,實驗環境依賴于小型智能產線.根據該小型智能產線進行信息建模,將產線節點集成到OPC UA服務器的地址空間.實際工業系統中的數據往往TCM消息產生的頻率高于其他幾類消息,這會導致測試的結果隨機性較強,不具有普遍性,且觀測困難,在進行實驗驗證時需要固定消息的配比.測試執行過程如下:
1) 使測試OPC UA客戶端與服務器建立基礎通信上下文,包括初始連接、安全信道和會話;
2) 訂閱目標節點的數據變化和事件通知;
3) 通過節點數值變化以及模擬事件觸發訂閱;
4) 讀寫與瀏覽地服務器地址空間中的節點信息;
5) 對客戶端接收到的消息進行分析并得出結論.
以泊松分布在發送能力150%的壓力下對改進后的OPC UA服務器進行測試,觀測客戶端對每種類型消息的接受情況,根據評價指標計算OPC UA服務器的服務質量.
在實驗中,將3種消息(PHM、PLM、TCM)的生成比例設置為1∶1∶2;服務質量評估分數A1、A2均設置為2,B1、B2設置為0.5,C1、C2設置為0.1,D1、D2設置為0.02;OPC UA消息隊列算法生成函數如公式(1)所示:
(1)
通過捕獲的客戶端服務器通信消息記錄,觀察建立連接和通信上下文情況,如圖7所示.可以觀察到,首先OPC UA初始連接通過HEL和ACK消息建立,在此基礎上建立安全信道(OpenSecureChannel)、創建會話(CreateSession)、打開會話(ActivateSession)以及創建訂閱(CreateMonitoredItems),通信上下文構建完成,證明了該算法對CCM類信息的最優搶占調度性.

圖7 上下文連接信息記錄
對各類消息的發送情況進行統計,并與采用OPC UA規范標準服務器通信時的客戶端接受消息情況進行對比.未改進的OPC UA服務器對消息處理的原則為先到先處理,即先進先出(FIFO).
實驗參數設置的消息生成符合泊松流,消息發送配比為1∶1∶2,可知原OPC UA客戶端接受到的各種類型消息分布比例為1∶1∶2.
圖8為客戶端接收信息中PHM消息所占比例,客戶端接受到的PHM消息占比為58.6%.此時網絡壓力為正常通信時的150%,OPC UA消息隊列中積壓的PHM消息得到了優先調度導致該類消息發送占比升高.通過此結果可知,該算法對PHM消息的優先調度性,使得PHM消息具有最小的響應時間.

圖8 PHM消息接收情況
圖9為客戶端接收信息中PLM消息所占比例,客戶端接受到的PLM消息占比為28.91%.在設置算法生成函數時,PLM消息的優先級低于PHM消息,導致消息調度的優先性PLM低于PHM,因此客戶端對PLM消息的接收量相比于PHM消息的接收量低.

圖9 PLM消息接收情況
圖10為客戶端接收信息中TCM消息所占比例,客戶端接收到的TCM消息占比為12.49%.由于TCM消息的優先級最低,且只發送相同訂閱項同組消息中當前最新生成的消息,導致TCM類消息占比最低.

圖10 TCM消息接收情況
根據分值獎懲機制對該OPC UA消息隊列的丟包和發送情況進行評估,客戶端接收消息量為6000時的得分結果如表4所示.證明服務器的服務質量有明顯提升,高優先級消息的丟包率和發送率有較大程度改善.但該消息隊列的時間復雜度有所上升,隊列的處理時間增加.

表4 獎懲機制
本文分析了OPC UA通信架構及OPC UA規范定義的標準服務,根據服務的應用和實時性需求等特征進行分析,將OPC UA消息歸納為4種不同的類型,并提出一種面向OPC UA消息通信的多優先級動態調度算法——MLFQ-EDF-MP算法.并基于該算法設計了OPC UA消息隊列模型,差異性管理消息發送隊列.提出了兩種對該算法的評價方法.根據已有小型智能產線設備節點情況進行信息建模,將該智能產線節點集成到OPC UA服務器的地址空間,生成實施生產信息進行實驗驗證.實驗證明,該算法能夠適用于OPC UA通信,在OPC UA通信棧中應用的基于該算法的消息隊列對差異化服務消息的調度起到了較好的調節作用.在構建了OPC UA通信上下文環境后,高實時性消息得到了優先處理,實時性消息也能夠避免被無差別擠占無法發送的現象,這使得OPC UA服務器的服務質量得到了進一步提升.然而,該算法的時間空間復雜度高于優化前,對該算法的時空復雜度研究還有待研究.