★上海交通大學戴文斌,張瀛月,康嘉樂
★北京廣利核系統工程有限公司吳彬,李剛,任寶華
★華為技術有限公司孔令波,黃還青
摘要:一方面,邊緣計算所帶來的性能提升給工業現場設備提供了巨大的潛力;另一方面,工業現場應用軟件的復雜程度也在不斷提升,對自動化工程師提出了巨大的挑戰。因此,低代碼開發已經受到工業界越來越多的關注與研發的投入。本文介紹了適用于工業控制系統的低代碼設計方法以及常用建模范式。低代碼設計已經在工業多個場景中取得了良好的效益,在提升了代碼質量的同時,也為工程開發節省了大量的成本。在邊緣計算更加普及的未來,低代碼設計方法將在工業各個行業中擁有更加廣闊的應用前景。
關鍵詞:邊緣計算;工業控制軟件;IEC61499;低代碼設計;軟件自動生成
1引言
近年來,邊緣計算給工業現場帶來了許多新的變化。由于計算、儲存能力的大幅提升,邊緣計算時代的新設備往往能夠勝任多個復雜任務。另外,隨著網絡能力的提升,邊緣設備與設備之間、邊緣設備與工業互聯網云平臺之間的通訊延遲與帶寬都不再受限。但隨著工業邊緣應用設計復雜程度的不斷提升,也對自動化工程師提出了新的挑戰。在項目推進的過程中,自動化工程師除了需要根據設計圖紙與功能規格說明來完成代碼編寫與測試之外,還需要對SCADA/HMI、外部設備等通訊接口進行組態配置,最后對部署的完整系統進行測試。而新型邊緣計算應用的出現,給傳統自動化工程師帶來了全新的要求。自動化工程師除了完成原本控制功能的設計、開發與測試之外,可能還需要面對機器視覺、運動控制、數據處理分析等復雜任務的挑戰。而同時具備所有這些能力的復合型工程師卻是少之又少,即使有,高額的經濟代價也是絕大多數工業企業所無法承受的。因此,低代碼開發,甚至是無代碼開發,受到工業界的廣泛關注。
圖1復雜工業邊緣計算應用
2工業控制系統低代碼設計
低代碼開發本質上是以一種抽象的方式來描述復雜邏輯,以降低開發者的編程能力要求。近年來,低代碼開發已經在IT領域得到了廣泛的應用,其平臺如雨后春筍般遍地開花,國內外微軟、谷歌、阿里、騰訊、百度等巨頭紛紛入局,并且已在流程應用、移動應用、數據應用等領域取得了不俗的成績。例如,浪潮推出的iGix平臺基于云原生、微服務架構以及彈性計算,實現了面向智能物聯、企業財務管理等領域的低代碼開發;微軟開發的PowerApps為企業提供了應用軟件的低代碼開發平臺,基于模型驅動工程以及所見即所得的方式,無需專業開發人員也能快速搭建基于Web或者移動端的應用軟件。在OT領域,低代碼設計也已經在工業界取得了較好的效果。例如,自動化巨頭西門子于2018年收購了Mendix低代碼構造平臺,并將其與工業互聯網平臺MindSphere結合,基于低代碼方式實現了個性化SCADA、MES或者ERP應用組件的開發與配置[1]。
低代碼設計方法主要可以歸為兩類,如圖2所示,分別是基于模型驅動工程(Model-Driven),以及基于數據驅動(Data-Driven)的設計方法,其中基于模型驅動工程的設計方法已經在工業中得到了廣泛的應用。模型驅動,顧名思義,即通過建立模型來描述、模擬系統屬性,并通常使用這些模型來自動生成代碼。由于工業各種行業特征大相徑庭,為了準確描述行業特性,通常會使用特定的領域模型來描述這些行業的特征與細節,而這些領域模型往往需要經驗豐富的工程師來設計。工藝工程師通常并不具備較強的代碼編寫能力,而模型驅動工程將工藝與代碼分離,可以讓工程師將更多的精力用在工藝設計上,而無需從事繁重且重復的代碼編寫,從而真正將工程師解放出來專注于工藝創新。
圖2工業低代碼設計方法分類
近年來,邊緣計算的興起使得大量產生的現場數據能夠實時被采集與分析,也為數據驅動低代碼設計方式的興起提供了堅實的基礎。對于高爐反應等復雜流程工藝,單單依靠人工經驗無法準確描述其運行機理。如何有效地利用大量邊緣產生的數據來描述復雜流程工藝機理,從而替代建模方法,也是近年來一個熱門的研究方向。近幾個月以來,以大模型為基礎的ChatGPT[2]等通用人工智能在代碼自動生成方面取得了不俗的進步,然而通用人工智能要在工業落地卻有著許多困難。首先,工業領域并沒有大量的線程代碼可以作為訓練數據集,多數代碼中由于包含工藝,通常也是各個系統集成商或者生產廠商的機密而無法獲取。其次,工業行業眾多且工藝完全不同,即使是相同行業,由于每條產線都存在特殊的定制化需求,因此很難通過收集大量產線數據來建立通用模型。最后,生產過程往往存在很多動態變化,例如產線中的設備隨著時間的推移老化甚至損壞,或者在生產過程中出現的隨機質量問題等等,如果不實時對代碼進行修正會影響產品質量,嚴重的情況還會發生安全事故。如果用來訓練的數據集中未包含這些故障數據(正常運行下也無法獲得這些數據),當問題發生時,生成的代碼自然也無法做出正確的應對措施。
因此,無論是模型驅動還是數據驅動的方法,都無法完全滿足工業邊緣計算的低代碼設計需求,我們需要將這兩種方法結合起來以實現工業邊緣計算應用的低代碼設計與開發。
3面向工業邊緣計算應用的低代碼設計方法
工業互聯網中OT與IT的融合一直是一項艱巨的挑戰,主要原因是OT與IT系統特性存在較大的差異。在自動化系統設計過程中,提高可靠性與降低成本永遠是企業追求的目標。對一條產線來說,至少需要達到五個九的可靠性,在核電、鋼鐵等行業則需要達到10[6]的可靠性。而代碼生成的質量則直接影響了系統的可靠性,同時反復測試與修改同樣也會大幅度增加成本。基于可靠性與成本的考量,現有的工業控制軟件低代碼設計方法基本以模型驅動為主,通過對功能的拆解,使模塊化的代碼能夠被復用,從而減少開發、測試與部署所需的時間,提升軟件設計的效率。
模塊化設計方法的核心思想是將復雜邏輯通過功能模塊封裝,通過標準化的接口來調用。軟件工程師即使對邏輯一無所知,也能快速使用這些抽象化的模塊來構建應用程序。模塊化設計主要有面向對象(Object-OrientedProgramming,OOP)、模型視圖-控制(Model-View-Controller,MVC)、微服務(Microservices)等幾種范式。
其中,面向對象的編程方法是最常見的設計范式,即將系統按照實際物理設備進行建模,為每臺目標設備創建一個實例化的模塊并以設備名稱命名。如圖3所示,在物流系統中,我們可以為輸送機、轉彎機、轉臺等設備單獨創建基于IEC61499標準[3]的功能模塊類型并實例化,然后按照實際工廠中的上下游關系進行連接,從而使得功能塊網絡與系統布局圖一一對應,幫助維護工程師快速定位代碼。當需要對設備功能升級時,只需更新模塊類型即可,而無需對接口做出改動。
圖3面向對象的設計范式示例
在MVC設計范式中,我們將一個設備的實時控制、仿真模型與人機界面(HMI)三個部分分別使用模塊封裝,如圖4所示。在調試階段,我們可以將控制部分與仿真模型進行連接,從而形成閉環。進一步地,我們可以將HMI模塊連接到控制或者模型上來實現對設備內部狀態的監控。當設備投入實際運行時,我們可以將仿真模塊替換為I/O接口模塊,直接連接設備,從而保證代碼在仿真與實際環境的一致性。MVC設計方式也可以與面向對象模塊進行融合,如圖4所示,將對象類型模塊作為容器(IEC61499復合功能塊),將基于MVC范式的功能塊網絡封裝在對象模塊類型內,使系統集成商能夠快速集成、調試各種不同的設備,同時也大幅度減少了監控畫面的設計時間。
圖4MVC設計范式示例
近幾年來,微服務架構也開始在自動化系統中嶄露頭角。與面向對象的設計范式不同,其更加適用于離散制造系統。在批量控制與過程自動化中,一方面,連續的生產過程需要所有設備協同運作,例如當我們向罐中加料時,需要管道、閥門與泵同時運作。基于面向對象的設計方法會造成大量模塊間的通訊,從而使得功能塊網絡擁擠不堪。另一方面,設備之間并無明顯上下游關系,使得我們無法將工藝流程直觀且抽象地展現出來。因此,對于此類系統,如圖5所示,我們通常是以模塊來描述生產流程中的最小單元,即微服務,進一步將這些微服務模塊按照實際生產步驟進行連接,就形成了完整的工藝流程。
圖5微服務設計范式示例
基于以上幾種設計范式,我們可以將不同類型的工業生產系統進行抽象建模,但是應該選擇何種建模語言呢?在工業4.0體系架構中,AutomationML[4]、SysML(基于UML)[5]都能提供完整的系統建模描述語言。在上述示例中,我們使用了基于IEC61499標準的功能塊網絡來建模。相對于AutomationML與IEC61131-3標準[6]的組合,IEC61499標準中的功能塊模型可以直接部署到設備上執行,從而避免了從AutomationML到IEC61131-3功能塊的模型轉換過程。IEC61499功能塊中的邏輯算法可以使用任意編程語言來實現,因此除了支持使用IEC61131-3中定義的5種編程語言外,它還可以使用高級編程語言(例如C/C++、Java、Python等)來實現復雜邏輯,同時HMI也可以使用模塊描述,更加符合工業邊緣計算場景中多種設備異構場景的需求。而IEC61499統一的功能塊接口封裝保證了復用性,無論是面向對象、MVC或是微服務范式,都可以復用現有模塊。另外,IEC61499標準使用軟硬件解耦的設計概念,如圖6所示,當需要將應用部署到多個邊緣節點中時,只需要創建相應的部署模型,將功能塊映射到目標資源上,即可完成分布式一鍵部署。每個IEC61499設備中的資源都是獨立運行的,保證了邊緣設備中不同實時性任務的資源隔離。當工藝流程設計完成時,只需要為功能塊網絡中的每個模塊設置部署資源即可完成部署,所有跨資源跨設備的連接通訊,IEC61499會在運行時自動插入訂閱/發布模塊,而無需用戶手動設計接口,從而大幅度提升了部署的效率。
圖6基于IEC61499的低代碼部署
此外,基于IEC61499的低代碼開發同樣也可以引入數據驅動的設計方法。在工業邊緣計算應用開發中,由于仿真環境無法100%還原現場所有情況,即使通過了仿真測試,在實際系統調試中,也需要按照現場實際情況對參數進行調整,這也是一項非常耗時且成本巨大的支出。如圖7所示,我們可以對采集的數據進行訓練,之后將模型插入功能塊網絡中,與需要調整的參數進行閉環,從而在運行的過程中,根據實際結果來實時調整參數。
圖7數據驅動的參數尋優方法
4低代碼設計的工業應用前景
市場上,所有主要PLC/DCS廠商都已在各自的集成開發環境中提供了模塊化設計方法。例如西門子的TIAPortal中,所有的代碼都必須封裝在模塊中,并且可以使用TecnomatixPlantSimulation建立系統仿真模型并生成相應的PLC代碼;3SCodeSys公司則與慕尼黑工業大學合作[7],推出基于UML的系統建模方法,可以將UML模型自動轉換成PLC代碼;施耐德電氣推出的EcoStruxureAutomationExpert[8]則基于IEC61499標準,為分布式控制系統提供了完整的模塊化設計軟件;北京廣利核系統工程有限公司、上海交通大學和華為技術有限公司一起設計了全新一代虛擬化核電DCS系統原型機,如圖8所示,通過華為歐拉操作系統、FusionCube超融合服務器和確定性IP網絡,配合基于IEC61499標準的分布式功能塊網絡封裝核電控制工藝,實現了低代碼構造,從而無需先分站再下裝,大量節省了開發、部署與調試時間。同時,通過華為確定性IP網絡保證了數據傳遞的實時性與可靠性,并且使用IEC61499的動態重構功能設計了低成本高可靠的熱備方案,當單個虛擬設備出現故障時,系統會自動將模塊化的代碼遷移到全新的虛擬資源。
圖8基于低代碼開發的新一代核電DCS控制系統
僅僅幾年的時間,模塊化低代碼設計已經在工業多個場景中取得了良好的效益,在提升了代碼質量的同時也為企業節省了大量的成本。在邊緣計算更加普及的未來,我們相信低代碼設計方法將在工業各個行業中擁有更加廣闊的應用前景。
作者簡介:
戴文斌,上海交通大學電子信息與電氣工程學院教授、院長助理、國家優青,兼任上海市自動化學會秘書長、IEEEP2805邊緣計算系列標準工作組主席。主要從事下一代分布式工業控制軟件、工業信息化、工業互聯網邊緣計算等方向的研究工作。
參考文獻:
[1]王戈,楊楠,崔粲,等.國際工業互聯網新進展及分析,信息通信技術與政策[J].2018,44(10):6.
[2]Avila-ChauvetL,MejíaD,AcostaQuirozCO.ChatgptasaSupportToolforOnlineBehavioralTaskProgramming[J].AvailableatSSRN4329020,2023.
[3]IEC61499,FunctionBlocks,InternationalStandard,SecondEdition[S].2012.
[4]DrathR,LuderA,PeschkeJ,etal.AutomationML-theglueforseamlessautomationengineering[C].2008IEEEInternationalConferenceonEmergingTechnologiesandFactoryAutomation,IEEE,2008:616-623.
[5]HauseM.TheSysMLmodellinglanguage[C].FifteenthEuropeanSystemsEngineeringConference,2006,9:1-12.
[6]IEC61131-3,Programmablecontrollers-Part3:Programminglanguages,InternationalStandard,ThirdEdition,2013.
[7]WitschD,Vogel-HeuserB.CloseintegrationbetweenUMLandIEC61131-3:Newpossibilitiesthroughobjectorientedextensions[C].2009IEEEConferenceonEmergingTechnologies&FactoryAutomation,IEEE,2009:1-6.
[8]PelliccioneA.SpotlightonInnovation:Bestautomation,controlandinstrumentationproductsin19categories[J].ControlEngineering,2022,69(1):47-56.
摘自《自動化博覽》2023年第2期暨《邊緣計算2023專輯》