陳 海
(1.中電智能科技有限公司,北京 102209;2.華北計(jì)算機(jī)系統(tǒng)工程研究所,北京 100083)
近幾年,云計(jì)算在越來越多的領(lǐng)域成為了核心技術(shù)[1-2]。云計(jì)算具備一些很重要的特性,如按需部署、動態(tài)可擴(kuò)展、靈活性高、可靠性高、性價比高等。這些特性引起了工業(yè)自動化領(lǐng)域的關(guān)注,以研究新型云應(yīng)用在自動化中的適用性。隨著工業(yè)4.0 和工業(yè)互聯(lián)網(wǎng)的出現(xiàn),云將成為工業(yè)系統(tǒng)中主要的基礎(chǔ)設(shè)施、服務(wù)和算法都將在云端分布式執(zhí)行。軟PLC 是該系統(tǒng)下的一種應(yīng)用,可以在云端采集傳感器數(shù)據(jù)并對工廠進(jìn)行控制。但是,連接到云系統(tǒng)的軟PLC 不能保證系統(tǒng)的硬實(shí)時性,因此基于云的軟PLC 不適合運(yùn)行有硬實(shí)時性要求的關(guān)鍵控制程序。
然而,基于云的軟PLC 有以下優(yōu)點(diǎn):
(1)軟PLC 比硬件PLC 更容易部署和改進(jìn),可以作為系統(tǒng)開發(fā)與調(diào)試期間的一種控制手段;
(2)軟PLC 的冗余成本遠(yuǎn)遠(yuǎn)低于硬件PLC 系統(tǒng),可以大大節(jié)約系統(tǒng)建設(shè)成本;
(3)基于云的軟PLC 價格低廉、易于擴(kuò)展,可以迅速在一些新興領(lǐng)域取得突破效果,如工業(yè)互聯(lián)網(wǎng)、工業(yè)4.0及物聯(lián)網(wǎng)等應(yīng)用。
為了能夠在這些場景下進(jìn)行應(yīng)用,需要對基于云的軟PLC 系統(tǒng)進(jìn)行深入研究。本文提出了一種多實(shí)例可擴(kuò)展的軟PLC 系統(tǒng)架構(gòu),分析了在云環(huán)境下部署和執(zhí)行軟PLC 的可行性,并對實(shí)時性、可靠性等關(guān)鍵性指標(biāo)進(jìn)行了評估,闡述了基于云的控制系統(tǒng)可能的現(xiàn)實(shí)場景。
工業(yè)控制的應(yīng)用范圍很廣范,包括過程自動化、離散制造、發(fā)電配電、樓宇控制等領(lǐng)域。為了滿足這些多方面應(yīng)用不斷增長的需求,自動化系統(tǒng)需要不斷創(chuàng)新,從而采用其他領(lǐng)域已被驗(yàn)證的新技術(shù)。例如,基于PC 的高性能控制器補(bǔ)充了傳統(tǒng)的控制器在性能上的不足,并且可以在控制器中集成如HMI、MES 等額外的應(yīng)用程序。智能化現(xiàn)場設(shè)備的出現(xiàn)導(dǎo)致控制現(xiàn)場越來約分散,更有利于基于云的軟PLC 分布式部署。
通常情況下,實(shí)時控制是在固定周期內(nèi)進(jìn)行的。例如每50 ms 進(jìn)行一次數(shù)采集、執(zhí)行算法、控制輸出,這種方法非常適合硬件PLC 中通常存在的固定資源。然而部署在云端的軟PLC 系統(tǒng)的負(fù)載不太好預(yù)測,資源效率是軟件提供最佳操作的關(guān)鍵,基于事件的控制方法顯得更有意義。在這種方法中,算法的執(zhí)行只在更改輸入時觸發(fā),可以節(jié)省不必要的計(jì)算周期,然而這種方法從傳統(tǒng)控制角度來看,會使得整個控制算法的執(zhí)行不可預(yù)測。因此,在討論基于云的軟PLC 控制應(yīng)用場景時,應(yīng)該按以下分類確定該架構(gòu)何時可行。
(1)硬實(shí)時:自動化系統(tǒng)錯過了控制截止時間,導(dǎo)致整個自動化系統(tǒng)失效。系統(tǒng)保證所有的控制截止時間是第一要務(wù),例如鍋爐的控制。
(2)強(qiáng)實(shí)時:系統(tǒng)可以容忍一些控制截止時間的延遲,但系統(tǒng)的服務(wù)等級會下降。如果錯過了所有的控制截止時間,系統(tǒng)失效。例如零件分揀控制是允許一定比例的漏撿的,但該比例需控制在一定范圍內(nèi)。
(3)軟實(shí)時:系統(tǒng)錯過控制截止時間僅僅會降低系統(tǒng)的服務(wù)質(zhì)量,響應(yīng)時間的平均值可接受即可,允許每次控制在一定范圍內(nèi)波動。例如視頻會議控制系統(tǒng)是允許數(shù)據(jù)包延遲的。
由此可見,基于云的軟PLC 控制僅僅可以用于軟實(shí)時控制或者強(qiáng)實(shí)時控制中的特定場合,如樓宇自動化、太陽能電池板控制、電動汽車充電站等。
工業(yè)控制系統(tǒng)對實(shí)時性的要求從自動化金字塔的頂部到底部逐漸增強(qiáng),如圖1 所示。最高層級的系統(tǒng)對實(shí)時性要求并不高,如ERP 和MES 系統(tǒng),研究人員已經(jīng)將云計(jì)算與生產(chǎn)制造系統(tǒng)進(jìn)行了融合[3-4]。在控制系統(tǒng)的監(jiān)控層級(SCADA)移到云端也有了一定研究,國外率先提出了一種能夠部署在云端基于Web 的SCADA系統(tǒng)[5-7]。
底層PLC 系統(tǒng)對實(shí)時性的限制以及對可靠性和安全性的嚴(yán)格要求,限制了基于云的軟PLC 系統(tǒng)的研究和應(yīng)用。

圖1 自動化金字塔
在軟件架構(gòu)中,高級的架構(gòu)設(shè)計(jì)理論在解決特定的架構(gòu)需求時扮演了十分重要的角色。本文的軟件體系架構(gòu)參考了專門為云計(jì)算系統(tǒng)創(chuàng)建的軟件架構(gòu)設(shè)計(jì)方法[8],提高了系統(tǒng)的可伸縮性、可維護(hù)性、可定制性和可用性。如圖2 所示[9],軟件體系架構(gòu)分為客戶端、會話層、應(yīng)用層、數(shù)據(jù)庫層4 個層級,4 個層級依次串行交互。

圖2 云計(jì)算軟件體系架構(gòu)
OpenPLC[10]是一款開源的PLC 運(yùn)行時軟件,能夠在多個平臺下進(jìn)行安裝應(yīng)用。OpenPLC 是根據(jù)IEC 61131-3標(biāo)準(zhǔn)創(chuàng)建的,支持結(jié)構(gòu)化文本(ST)、指令列表(IL)和功能框圖(FBD)等多種語言的編程解析及執(zhí)行功能。OpenPLC能夠與Arduino 開源硬件配套使用。本文描述的基于云的軟PLC 架構(gòu)中,外部輸入信息通過網(wǎng)絡(luò)通信輸入給OpenPLC 實(shí)例,OpenPLC 實(shí)例將已編好的PLC 程序解釋執(zhí)行并將結(jié)果輸出,如圖3 所示。

圖3 OpenPLC 實(shí)例的應(yīng)用
基于云的軟PLC 系統(tǒng)架構(gòu)根據(jù)上文提到的軟件體系架構(gòu)進(jìn)行搭建,融合了云計(jì)算的多種優(yōu)秀特性,其中包括通過消息總線使用云級通信,并且使用了平臺即服務(wù)(PaaS)的功能,保證系統(tǒng)的快速部署和組件的可擴(kuò)展性。
3.3.1 云端通信
如圖4 所示,基于云的軟PLC 系統(tǒng)與受控工業(yè)現(xiàn)場的本地組件(例如傳感器和執(zhí)行器)通過基于OPC-UA的連接器進(jìn)行通信。OPC-UA[11]是最新的OPC 標(biāo)準(zhǔn),通過提供一個完整的、安全和可靠的跨平臺的架構(gòu),以獲取實(shí)時和歷史數(shù)據(jù)和時間。OPC-UA 為工業(yè)系統(tǒng)的互聯(lián)互通提供了統(tǒng)一的訪問方式、更好的認(rèn)證互操作性、設(shè)計(jì)的可靠性,并提供標(biāo)準(zhǔn)的安全模型。OPC-UA 是客戶端-服務(wù)器協(xié)議,支持二進(jìn)制TCP 協(xié)議、HTTP(s)協(xié)議和XML Web 服務(wù)等功能,客戶端啟動連接后可訂閱服務(wù)器數(shù)據(jù)。

圖4 基于云的軟PLC 系統(tǒng)架構(gòu)
3.3.2 基于云的軟PLC 系統(tǒng)組件
云系統(tǒng)的內(nèi)部操作(如部署、監(jiān)視、維護(hù))和擴(kuò)展系統(tǒng)的應(yīng)用程序和服務(wù)等功能由PaaS 平臺實(shí)現(xiàn)。主流的PaaS 平臺提供了許多云模型[12]。例如CloudFoundry 提供了監(jiān)視已部署的應(yīng)用程序并可以彈性擴(kuò)展的方法;提供了健康管理器,在系統(tǒng)出現(xiàn)故障時會自動重新啟動故障組件;在充分利用CloudFoundry 所提供的云級特性基礎(chǔ)上設(shè)計(jì)如圖4 所示的應(yīng)用程序架構(gòu),下面將分別介紹軟PLC 系統(tǒng)中的重要組件。
(1)監(jiān)控器
監(jiān)控器組件作為彈性管理器負(fù)責(zé)監(jiān)視系統(tǒng)的各種統(tǒng)計(jì)信息,例如面向消息的中間件中的隊(duì)列長度或應(yīng)用程序的CPU 負(fù)載。基于這些統(tǒng)計(jì)數(shù)據(jù),監(jiān)控器可以利用PaaS 的API 動態(tài)生成數(shù)據(jù)收集器、緩存編寫器和軟PLC 本身的新實(shí)例。
(2)數(shù)據(jù)收集器
為了保證分布式云組件的負(fù)載均衡,負(fù)載均衡器接收所有數(shù)據(jù)并分發(fā)到適當(dāng)?shù)臄?shù)據(jù)收集器實(shí)例。數(shù)據(jù)被OPC-UA 數(shù)據(jù)采集器實(shí)例收取后,它就被轉(zhuǎn)發(fā)到由面向消息的中間件(MOM)組成的中央通信組件(RabbitMQ),數(shù)據(jù)收集器確保安全的處理來自客戶端的數(shù)據(jù),并將其映射到適當(dāng)?shù)慕粨Q隊(duì)列。
(3)緩存編寫器
將控制算法的執(zhí)行與軟PLC 的狀態(tài)分離,即設(shè)計(jì)一片內(nèi)存緩沖區(qū)域,該緩存由MOM 中的緩存編寫器進(jìn)行填充。它確保現(xiàn)場傳入數(shù)據(jù)和PLC 結(jié)果的緩存值始終是最新的。因此,在軟PLC 出現(xiàn)故障時,新生成的實(shí)例可以根據(jù)緩存中存儲的值輕松地繼續(xù)控制計(jì)算。
(4)控制工程
對于控制算法中的輸入/輸出變量或調(diào)度屬性等映射關(guān)系,需要定義一個UI 組件進(jìn)行可視化配置[13]。控制算法和調(diào)度信息存儲在文檔數(shù)據(jù)庫中。
(5)控制程序調(diào)度器
控制程序調(diào)度器負(fù)責(zé)將控制程序加載到軟PLC 實(shí)例中,并指定程序的循壞執(zhí)行或觸發(fā)執(zhí)行方式。軟PLC 實(shí)例間的通信通過MOM 中的一個監(jiān)聽所有軟PLC 實(shí)例的特殊控制隊(duì)列實(shí)現(xiàn)[14]。
(6)軟PLC 組件
執(zhí)行控制算法的核心組件就是基于OpenPLC 的軟PLC 組件。軟PLC 組件作為云架構(gòu)中的應(yīng)用組件,允許動態(tài)縮放和分配工作負(fù)載。在這種模式下一組激活的軟PLC 實(shí)例可以同時執(zhí)行一系列控制程序。控制程序按周期運(yùn)行,并根據(jù)給定的輸入值計(jì)算輸出值。為了使軟PLC的輸入輸出與狀態(tài)無關(guān),這些值存儲在緩存組件中。通過從數(shù)據(jù)庫加載程序并且使用緩存中的內(nèi)部狀態(tài)值,可以在不同的軟PLC 中執(zhí)行新的循環(huán),這使得工作負(fù)載可以按需快速彈性地分配到負(fù)載較少的實(shí)例上[15]。
由于實(shí)驗(yàn)條件有限,使用VirtualBOX、OpenPLC、Node-RED[13]、CloudFoundry 等軟件工具單個實(shí)例的實(shí)時性進(jìn)行實(shí)驗(yàn)仿真分析。硬件配置:i58250u,主頻1.8 GHz,內(nèi)存16 GB,硬盤256SSD。

圖5 I/O 設(shè)備數(shù)據(jù)傳輸圖
如圖5 所示,PLC 程序以固定的間隔TI周期性地讀取發(fā)生器的生成的I/O 設(shè)備輸入,并將反向值寫入輸出,使用示波器測量并記錄。輸入信號間隔用TI表示,輸出間隔用TO表示。通常,輸出會受延遲影響,記為ΔT,見方程式(1):

由于網(wǎng)絡(luò)沒有完全同步,因此當(dāng)幀開始在網(wǎng)絡(luò)上傳輸時,應(yīng)考慮周期更新時間。該時間值在方程式(2)中顯示為TCD。在最壞的情況下,如果一個幀在其上下游時間等待整個周期時間,則該延遲將為2TCD。

用式(3)定義N 個實(shí)驗(yàn)的ΔT 的平均值,作為評估基于云的軟PLC 系統(tǒng)性能指標(biāo)。實(shí)驗(yàn)記錄N=1 000 次,置信度為90%。

如圖6 所示,評估結(jié)果表明,基于云的軟PLC 系統(tǒng)在輸出端有一定延遲,特別是對于較短的輸入間隔,系統(tǒng)的工作負(fù)載將大量增加,從可編程邏輯控制器的CPU使用情況和網(wǎng)絡(luò)流量來看,ΔT 值將更高,這表明系統(tǒng)的性能較差。但是,對于軟實(shí)時應(yīng)用來說,性能降低是可以接受的,因?yàn)閷τ谶@類應(yīng)用來說,TI更高。

圖6 實(shí)時性折線圖
本文提出了一種基于云的多用戶可擴(kuò)展的軟PLC系統(tǒng)架構(gòu),并且根據(jù)最簡單的單實(shí)例模式分析了系統(tǒng)的實(shí)時性,從仿真實(shí)驗(yàn)分析結(jié)果得出結(jié)論,在軟實(shí)時控制系統(tǒng)中使用基于云的軟PLC 系統(tǒng)是可行的。但由于實(shí)驗(yàn)條件有限,未能進(jìn)一步測試多實(shí)例對系統(tǒng)實(shí)時性的影響、系統(tǒng)的冗余恢復(fù)時間、內(nèi)存數(shù)據(jù)庫及消息中間件對系統(tǒng)的影響等質(zhì)量指標(biāo)。在接下來的工作中會搭建完善的系統(tǒng)原型,并對系統(tǒng)中未測試的部分進(jìn)行補(bǔ)充測試,以明確該系統(tǒng)適合的應(yīng)用場景。在未來,將探索進(jìn)一步的應(yīng)用領(lǐng)域,在工業(yè)4.0 的過程中推進(jìn)基于云的軟PLC 系統(tǒng)應(yīng)用。