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