摘要:實現工業互聯網價值離不開邊緣計算的支撐,而工業現場設備種類繁多, 領域特性又大相徑庭,目前工業邊緣計算應用雖然已有一定數量,但通用性較差。工業邊緣計算是OT與IT融合的典型應用場景,工業邊緣APP需要同時支撐邏輯運動控制、監控人機界面等OT應用與視覺檢測、數據采集分析、預測性維護、生產管理等IT應用。通過IEC 61499標準與微服務、容器化技術融合,工業邊緣應用可以實現多種編程語言混合設計,通過軟硬件解耦靈活部署到任意邊緣節點, 從而實現工業互聯網從數據到模型再到控制的完整閉環,真正為制造業賦能。
關鍵詞:邊緣計算;工業邊緣APP;微服務;容器化;IEC 61499
1 引言
在過去幾年中,工業互聯網平臺如雨后春筍般涌現,無論是通用性平臺還是面向垂直領域的專業功能性平臺目前都有千余家在運營,已初具規模。工業互聯網平臺需要大量邊緣設備接入,采集海量過程數據并進行處理分析來實現對生產過程的優化。更重要的是優化模型也需要以工業邊緣App的形式重新部署到邊緣設備上,使得工業互聯網平臺真正實現賦能企業。
工業邊緣計算應用(工業邊緣App)種類繁多, 除了包含傳統的實時控制、運動控制、現場總線通訊、人機界面等功能外,還融合了數據采集與處理、機器視覺、生產管理、運營維護等創新性應用。無論是側重于OT或是IT的工業邊緣App,面向異構平臺都需要多種OT與IT語言混合設計。顯然傳統基于桌面應用的工業軟件開發方式無法滿足工業邊緣計算應用輕量、靈活與協作的特性。
歐盟早在2017年就對此問題展開研究,例如圖1中列舉的Horizon 2020的DAEDALUS項目的架構[1],為支撐信息物理系統設備間協作,圍繞IEC 61499標準[2],使用面向對象的模塊化設計方法對現場中各種設備進行封裝,通過基于IEC 61499的集成開發環境與自動化App 應用商店提升應用與算法的復用性,建立以自動化開發者、設備與零件供應商以及系統集成商為核心的生態圈。此外,由幾十家廠商所組成的開放過程自動化聯盟(OPAF)[3]同樣以開放標準來整合MES、DCS、HMI、 PLC以及I/O功能,基于模塊化設計實現過程控制系統的開放性以及互操作性。
圖1 歐盟Horizon 2020 DAEDALUS項目架構[1]
工業互聯網平臺要發揮賦能作用,除了數據上云之外,更重要的是提供通用的編程語言與設計工具,協助現場工程師高效地將Know-How轉變成工業邊緣App, 無需具備專業知識的全棧工程師也能快速地開發、部署與調試工業邊緣App,從而真正實現工業互聯網價值落地,填補工業互聯網關鍵核心技術空心化的問題。
2 基于微服務的工業邊緣應用設計
近年來, IT系統軟件設計范式已經逐漸從面向對象編程(OOP)向面向服務架構(SOA)進化。面 向服務架構的軟件設計方法對模塊接口的統一定義來實現軟件模塊的松散耦合,使得由不同編程語言、操作系統與硬件平臺實現的應用模塊通過統一編排來完成特定功能,從而提升軟件復用性。SOA解決了不同系統之間應用數據交互的難題。與SOA類似,微服務(Microservice)同樣由松散耦合的可復用軟件模塊組成。不同的是,SOA更加適合開發大型企業級應用, 而微服務更多滿足針對某個特定領域的定制化需求,并具有更新簡單、擴展容易等特點。工業邊緣計算系統涉及領域眾多、通常由異構設備組成等特性完全符合微服務的適用范圍,因此,微服務是工業邊緣App設計范式的完美選擇。
隨著工業邊緣設備計算與儲存能力的不斷提升,工業邊緣計算節點除了能涵蓋原ISA-95架構中的感知層、控制層以及監控層的應用,還能支撐視覺檢測、機器人與AGV控制、數據采集處理、生產管理等新型工業邊緣應用。如圖2所示,一個工業邊緣App可以分為三個類型:獨立工業邊緣App、分布式工業邊緣App以及邊- 云協同工業App。獨立工業邊緣App通常適用于單一功能應用(例如數據采集)或者包含實時控制、人機界面以及數據采集的小型系統,此類工業邊緣App通常只需一個節點即可完成所有任務;分布式工業邊緣App通常需要多個節點協同來實現復雜任務,例如大型物流系統或者復雜生產系統;邊-云協同工業App則是針對類似于大數據處理或者深度學習等無法完全依靠邊緣計算解決的新型混合系統,需要利用云平臺的計算與儲存能力來協助實現生產過程中的優化。
圖2 工業邊緣App分類
工業邊緣App通常是由多個功能組合而成,如一個PCB質量檢測的產線牽涉到實時控制、運動控制、機器視覺、數據采集、模型訓練、人機界面等多項功能, 而每項功能則可能由不同的編程語言所開發。例如,實時控制通常采用基于IEC 61131-3[4]的邏輯控制,運動控制多基于G代碼,而機器視覺則采用Python或者C++ 等高級語言。如果將每個功能看作是獨立的微服務,用戶則需要使用統一的建模語言編排這些微服務。而IEC 61499功能塊系列標準則是目前適合的建模語言。IEC 61499標準提供了基于事件觸發功能塊的標準封裝方式,對包含IEC 61131-3、C++等高級語言的統一封裝,能有效地獨立于微服務開發。除此之外,標準中提供了功能塊網絡模型、資源模型、設備資源等完整的軟件模型來支持微服務的復用性與可移植性。如圖3 所示,將每個功能塊看作是獨立的微服務,而功能塊接口則是調用API。功能塊網絡將各個模塊通過控制流與數據流整合,形成一個或者多個應用程序,通過IEC 61499部署模型將應用程序映射到不同的邊緣計算節點上,實現了系統級工業邊緣計算應用的統一建模設計。與UML等建模語言不同的是,IEC 61499提供了完整的功能塊執行機制,因此功能塊網絡能夠被直接部署與執行,從而減少了從建模語言到可執行代碼的轉換, 避免了由于模型轉換造成的代碼質量問題,從而提升設計效率。目前施耐德電氣EcoStruxure Automation Expert[5]以及國產海王星模塊工匠Function Block Builder[6]等IEC 61499工具已經初步具備了應對工業邊緣計算混合設計的能力。
圖3 基于IEC 61499的OT與IT混合設計
3 輕量級容器化工業邊緣應用運行環境
在IT應用開發中,微服務往往與容器密不可分。將微服務通過容器化封裝可以實現微服務的獨立運行, 同時將依賴庫文件與操作系統一同移植可以有效減少由于開發環境與部署環境的差異而造成的問題。現有的Linux容器主要有Docker、LXC/LXD等選擇,然而目前所有Linux容器都是為IT應用設計,針對計算與儲存能力有限的工業邊緣計算節點而言,這些容器都過于臃腫。特別是面向工業實時控制等高實時性、高可靠性要求的傳統OT應用,目前容器在更新時間、文件大小以及操作性等關鍵上與工業現場實際需求還存在一定的差距,針對工業邊緣計算的輕量級容器化運行環境仍然是待解決的重要問題。
圖4 基于IEC 61499的工業邊緣計算容器化運行環境
基于IEC 61499的微服務化工業邊緣App同樣需要輕量級容器化的運行環境支撐。如圖4所示,以Linux 容器為基礎,將每個微服務作為單獨容器封裝,容器依次將IEC 61499微服務運行環境、所需要的編程語言支撐環境以及基于IEC 61499的應用程序加載,最后通過IEC 61499功能塊網絡將不同微服務之間串聯起來。當需要對應用程序重新編排時,僅需對微服務調用順序進行重新編排,無需對容器進行修改;當需要對微服務進行更新時,則只需要對容器內的頂層應用程序進行更新即可完成,而無需影響其他微服務以及系統的運作。通過容器化封裝功能塊,微服務可以實現軟件與硬件的完全解耦,從而顯著提升邊緣計算系統的靈活性。
當工業邊緣App開發完成后,最后一步需要將工業邊緣App從云端或者網關部署到邊緣計算節點上。容器化工業邊緣App能保證從開發環境部署到生產環境的一致性,開發者將封裝完成的容器上傳到云端的工業邊緣App市場,系統集成商或者設備制造商可以根據需求從云端購買相應的工業邊緣App,并且通過簡易配置部署到邊緣計算節點。在這方面國內已經有了非常不錯的基礎,華為云IEF以及容器市場已經實現了容器的交易、配置以及從云端向邊緣端的部署,當與基于IEC 61499 實現對微服務的統一編排與管理融合后,快捷地遠程部署調試將不再是夢想。
4 結語
如何高效設計OT與IT融合工業互聯網邊緣計算應用一直是制約工業互聯網價值落地的關鍵技術之一。將IEC 61499功能塊標準與微服務、容器化融合能夠賦予工業邊緣App軟硬件解耦的能力,使其適用于擁有不用計算、儲存與通訊能力的邊緣計算節點,提升系統的靈活性、互操作性與可移植性。當基于微服務、輕量級容器以及IEC 61499的工業邊緣App與確定性IP網絡、TSN等網絡緊密結合時,工業互聯網邊緣計算將發揮其真正的價值。
作者簡介:
戴文斌,上海交通大學電子信息與電氣工程自動化系副教授,博士生導師,隸屬“系統控制與信息處理”教育部重點實驗室,上海市自動化學會秘書長。近年來主要從事下一代分布式工業控制軟件、工業信息化、工業互聯網邊緣計算等方向的研究工作。是IEC TC65B/WG15(IEC 61499)標準委員會國內唯一專家,IEEE P2805邊緣計算標準工作組組長。目前擔任IEEE-TII編委、IEEE-IES工業信息學技術專委會主席以及多個IEEE-IES旗艦會議的程序委員會主席等職務。
參考文獻:
[1] EU. Horizon 2020 DAEDALUS Project[EB/OL]. http://daedalus.iec61499.eu/.
[2] IEC 61499, Function Blocks, International Standard, Second Edition[S]. 2012.
[3] The Open Group. The Open Process Automation Forum[EB/OL]. https://www.opengroup.org/forum/open-processautomation-forum.
[4] IEC 61131-3, Programmable controllers - Part 3: Programming languages, International Standard, Third Edition[S]. 2013.
[5] Schneider Electric. Schneider Electric EcoStruxure Automation Expert[EB/OL]. https://www.se.com/ww/en/productrange-presentation/23643079-ecostruxure%E2%84%A2-automation-expert/.
[6] 國際電工委員會. Function Block Builder[EB/OL]. http://www.iec61499.cn
摘自《自動化博覽》2021年2月刊