工業(yè)自動控制系統(tǒng)所采用的編程語言不可能一成不變,總是環(huán)繞著服務(wù)對象的需求和應(yīng)用場景的變化在演進(jìn)。從上世紀(jì)的90年代至今,IEC 61131-3作為PLC、DCS和軟PLC事實上的國際工控編程語言標(biāo)準(zhǔn),已是不爭的現(xiàn)實;IEC 61499作為IEC 61131-3的重要補(bǔ)充,尤其是作為分布式控制系統(tǒng)的建模語言標(biāo)準(zhǔn),正在緊鑼密鼓地進(jìn)入工控領(lǐng)域。
不過面對智能制造、工業(yè)互聯(lián)網(wǎng)和工業(yè)物聯(lián)網(wǎng)的迫切需求,以及IT/OT融合、工業(yè)大數(shù)據(jù)分析、人工智能等技術(shù)方法的深入落地,采用什么編程語言這一話題的討論,近兩年來在海外尤其北美自動化專業(yè)網(wǎng)站和雜志中屢見不鮮。歸結(jié)起來核心的兩個問題是:(1)IT領(lǐng)域的編程語言和OT領(lǐng)域的編程語言在工業(yè)自動化領(lǐng)域中如何體現(xiàn)融合;(2)IT領(lǐng)域的編程語言是否可能替代OT領(lǐng)域的編程語言。
問題從何而來?
我們先看問題是怎么提出的:
(1)最近在美國的一次技術(shù)會議上,ISA下屬automation.com網(wǎng)站的資深編輯與Arlen Nipper(Cirrus Link Solutions的首席技術(shù)官和MQTT的共同發(fā)明者)交談時,問及自動控制中編程語言的演變,請他對自動化和控制工程師目前使用的編程語言進(jìn)行排序。他指出Python、Java和C系列語言(C、C++和C#)是前三名。但他又澄清說,它們的流行并不以任何方式排斥其他編程語言。由于語法相似,Python和Java被認(rèn)為是C語言家族的一部分,?C語言家族還包括Julia、Perl和許多其他語言。
(2)艾默生的Darrell Halterman在去年6月的《InTech》雜志上發(fā)表了一篇題為《面向邊緣的未來控制編程》的文章,指出:盡管可編程自動化控制器(PAC)的專用實時操作系統(tǒng)RTOS存在一些限制,不過也開始承擔(dān)了與邊緣相關(guān)的任務(wù)。在許多情況下,用戶有必要創(chuàng)建復(fù)雜的算法,諸如機(jī)器學(xué)習(xí)策略等,使用現(xiàn)代IT類型的語言如C++和Python在PC機(jī)或工業(yè) PC機(jī)上運(yùn)行,與PAC一起工作。Halterman表示,用戶應(yīng)該盡可能尋找包含開放編程、軟件和通信標(biāo)準(zhǔn)的產(chǎn)品組合。對于邊緣控制器需要它們可以使用C/ C++、Python和其他適用于機(jī)器學(xué)習(xí)和人工智能等應(yīng)用的現(xiàn)代語言。
(3)在2022年10月美國《機(jī)器人和自動化新聞》網(wǎng)站刊出一篇題為《最流行的自動化編程語言》的文章。作者M(jìn)ark Allinson指出,根據(jù)去年進(jìn)行的調(diào)查,Python是開發(fā)自動化系統(tǒng)最受歡迎的語言。它的主要優(yōu)點是開源和自由,其高可讀性使得它相對容易上手。作者強(qiáng)烈鼓勵任何新企業(yè)使用Python作為其主要編程語言。文章中還提到了JavaScript、Java和C#在自動化和企業(yè)環(huán)境中也是很流行的編程語言。
(4)Python的領(lǐng)先地位在IEEE Spectrum最近發(fā)布的第十屆年度頂級編程語言排名中進(jìn)一步得到印證。今年P(guān)ython不僅在其排名中保持第一,而且還擴(kuò)大了領(lǐng)先優(yōu)勢。Python日益增長的主導(dǎo)地位似乎主要是以犧牲更小、更專業(yè)的語言為代價的。它已經(jīng)成為一門萬能的語言,甚至是某些領(lǐng)域(比如人工智能)中的語言大師,強(qiáng)大而廣泛的AI庫使它無處不在。
IEC 61131-3/IEC 61499處于何種境地?2019年P(guān)LCopen國際組織和美國automation.com網(wǎng)站聯(lián)合進(jìn)行了PLC用戶編程偏好的調(diào)查??倲?shù)為200個響應(yīng)者絕大部分來自北美和歐洲。調(diào)查的結(jié)果反映了PLC編程的趨勢,以及用戶對PLC編程軟件供應(yīng)商的一些想法和意見。用戶喜歡用哪些編程語言的調(diào)查結(jié)果是:用得最多的是結(jié)構(gòu)化文本語言,其次是梯形圖,再次是功能塊圖,第四是順序功能圖,其它編程語言位居最后,在其它編程語言中用的最多的是C/C++語言。從用戶這些語言偏好可以得出以下結(jié)論: (1)各種編程語言運(yùn)用的差距并不大,沒有特別多的,即使居第一的結(jié)構(gòu)化文本也不過比居于第五的其它語言多的有限。 (2)明顯可見,用戶對于面向?qū)ο蟮恼Z言如結(jié)構(gòu)化文本語言和C/C++語言更為青睞。這反映了在智能制造和工業(yè)互聯(lián)網(wǎng)的應(yīng)用中面向?qū)ο蟮木幊陶Z言更能滿足用戶編程的需求。 (3)許多PLC的編程環(huán)境支持用C/C++語言編寫功能塊。 從2019年到2023年,在這不算太長的四年中,自動化和控制的編程語言卻有了明顯的變化,這反映出開放的、可互操作的編程標(biāo)準(zhǔn)正在OT中興起,這些標(biāo)準(zhǔn)試圖取代與特定工業(yè)硬件綁定的專有編程語言。在automation.com網(wǎng)站中曾經(jīng)刊登過一篇文章《缺失的工業(yè)4.0/數(shù)字化鏈接——開放編程標(biāo)準(zhǔn)一致性與認(rèn)證》中,作者Bill Lydon寫道:“IEC 61131-3的基本原理已被世界各地的自動化供應(yīng)商廣泛采用。IEC 61131-3由PLCopen組織支持,通過特殊興趣小組、標(biāo)準(zhǔn)和認(rèn)證擴(kuò)展了標(biāo)準(zhǔn)。這些標(biāo)準(zhǔn)和認(rèn)證包括運(yùn)動控制、機(jī)械安全、OPC UA、XML數(shù)據(jù)交換和可重用性。由于IEC 61131可實現(xiàn)完整的任務(wù)結(jié)構(gòu),事件驅(qū)動和循環(huán)編程都可以完成?!?文章還指出,無論采用何種編程方法,“制造商和過程生產(chǎn)公司必須數(shù)字化,否則他們將與競爭對手形成戰(zhàn)略差距,使他們陷于巨大的競爭劣勢中。”實現(xiàn)數(shù)字化首先需要一個標(biāo)準(zhǔn)化的公益組織以開放標(biāo)準(zhǔn)的形式來利用工業(yè)4.0和物聯(lián)網(wǎng)(IoT)的概念、技術(shù)和架構(gòu),供應(yīng)商對開放互操作編程標(biāo)準(zhǔn)的遵從和認(rèn)證將加速制造行業(yè)的數(shù)字化??墒怯捎谌狈EC 61131-3這樣的工業(yè)自動化編程標(biāo)準(zhǔn)的強(qiáng)一致性認(rèn)證,從而導(dǎo)致工業(yè)自動化行業(yè)留下市場空白,“這塊空白很有可能會被外部搶占先機(jī)“。這是否意味著以IT為中心的語言(如Python)就是來自工業(yè)自動化領(lǐng)域的外部? 在這個領(lǐng)域內(nèi)的人們也擔(dān)心這些IT式的解決方案永遠(yuǎn)無法在工業(yè)自動化中發(fā)揮提綱挈領(lǐng)的作用,因為在這一重要關(guān)頭,需要的不僅僅是某種能夠表達(dá)人工智能和深度學(xué)習(xí)的簡明扼要的編程語言,而是一種沿襲工業(yè)自動化領(lǐng)域數(shù)十年積累的底層邏輯和行業(yè)共同遵循的規(guī)約習(xí)慣,并能夠進(jìn)行系統(tǒng)建模和按需自動構(gòu)造應(yīng)用的編程語言體系。在這個意義上,IT和OT系統(tǒng)的融合意味著不再有所謂的派別。從梯形邏輯到Python,以及IEC 61131-3以及IEC 61499等其他版本的演變,只是說明了行業(yè)的發(fā)展需求和發(fā)展方向。只有將面向PLC、DCS、SCADA的工控編程語言和基于 PC的IT類型語言相互補(bǔ)充和融合,才能夠共同促進(jìn)工業(yè)數(shù)字化轉(zhuǎn)型。
開放自動化系統(tǒng)對編程語言的要求 上海交大的戴文斌教授在介紹新一代工業(yè)開放自動化系統(tǒng)的定義時是這樣展開的:系統(tǒng)由開放的硬件、開放的軟件和開放的網(wǎng)絡(luò)三部分構(gòu)成。開放的硬件就是可采用任意設(shè)備,并任意部署。我理解任意設(shè)備就是在軟件與硬件徹底解耦的前提下,任意滿足應(yīng)用要求、具備一定算力的硬件都在選用之列。開放的網(wǎng)絡(luò)就是點對點的確定性通信,設(shè)備可靈活介入,可用零配置方式進(jìn)行異構(gòu),確保最長延遲滿足系統(tǒng)要求。開放的軟件就是要實現(xiàn)按需自動構(gòu)建應(yīng)用的目標(biāo),具體地說就是面向工藝的設(shè)計,自動生成代碼,動態(tài)應(yīng)用遷移升級等。這里只討論開放的軟件及其可采用的編程語言的問題。開放的軟件是在能應(yīng)對工藝變化而自動生成代碼的軟件開發(fā)環(huán)境中開發(fā)的應(yīng)用軟件。其軟件形態(tài)表現(xiàn)為面向工藝變化進(jìn)行生成式構(gòu)造,這有別于基于已知工藝的動態(tài)構(gòu)造。開放自動化系統(tǒng)在其軟件的設(shè)計階段從可復(fù)用的模塊庫中選用模塊或自行開發(fā)可復(fù)用的模塊,將這些模塊連接成適用于一類工藝的工藝包,設(shè)置模塊參數(shù)后進(jìn)行實例化。軟件自動構(gòu)造的本質(zhì)是將模塊化代碼按照架構(gòu)組織成應(yīng)用邏輯來提升軟件的復(fù)用性。為此需要使用一種建模語言來描述IT與OT融合的工藝流程,按照目前可以使用且已經(jīng)成熟的工業(yè)標(biāo)準(zhǔn)來看,采用IEC 61499是一種合適的選擇,堪當(dāng)按需自動構(gòu)造應(yīng)用的重任。開放自動控制系統(tǒng)的應(yīng)用軟件呈現(xiàn)出高度的模塊化,其中包括數(shù)據(jù)采集處理、實時控制、運(yùn)動控制、人機(jī)界面、機(jī)器視覺以及生產(chǎn)調(diào)度管理等功能塊(見圖1),不同功能塊的代碼可以采用最適合的常用于OT領(lǐng)域和IT領(lǐng)域的任意編程語言來編寫(見圖2)。IEC 61499由于具有抽象化的功能塊設(shè)計、軟件硬件解耦的結(jié)構(gòu)、事件觸發(fā)的機(jī)制等特點,作為一種統(tǒng)管系統(tǒng)的建模語言足可以協(xié)調(diào)各種系統(tǒng)功能的執(zhí)行。
圖1 IEC 61499堪當(dāng)自動構(gòu)造應(yīng)用的重責(zé) 圖源:戴文斌《新一代工業(yè)開放自動化系統(tǒng)》
圖2 在IEC 61499統(tǒng)管下運(yùn)用OT/IT領(lǐng)域中最合適的編程語言編寫功能塊 圖源:戴文斌《新一代工業(yè)開放自動化系統(tǒng)》
還有一種可選的技術(shù)路線是運(yùn)用OPC UA和IEC 61131-3實現(xiàn)一套分布式的編程體系。用OPC UA的伙伴配套信息模型來描述工藝對象構(gòu)造工藝模型,用IEC 61131-3的4種編程語言和C/C++來構(gòu)造實現(xiàn)工藝控制的應(yīng)用邏輯和設(shè)備間的通信。已經(jīng)獲得成功應(yīng)用的例子就是PackML,一種為包裝工藝而開發(fā)的集成開發(fā)環(huán)境。它完全可以無障礙地推廣到以順序控制為基礎(chǔ)的各種機(jī)械加工工藝的控制系統(tǒng)中,也在一定程度上符合開放自動化系統(tǒng)的開放硬件、開放軟件和開放網(wǎng)絡(luò)的要求。相對于IEC 61499來說,這條技術(shù)路線更符合工業(yè)自動化領(lǐng)域已經(jīng)建立而且多年來行之有效的方法論。
關(guān)于工業(yè)邊緣計算的編程語言討論
工業(yè)邊緣計算設(shè)備的終極功能是感知和控制物理過程,運(yùn)行本地程序,并與工業(yè)控制器、工廠運(yùn)營系統(tǒng)、企業(yè)業(yè)務(wù)管理系統(tǒng)和云應(yīng)用程序通信。其主要價值是就近在實際生產(chǎn)的地點捕獲實時數(shù)據(jù),執(zhí)行包括數(shù)據(jù)分析等在內(nèi)的應(yīng)用程序,以極低的延遲實現(xiàn)快速響應(yīng),和以低成本通信的方式傳遞大量制造基礎(chǔ)信息。顯然,這個角色在分布式制造架構(gòu)中起著IT/OT融合的作用。為此加強(qiáng)和推進(jìn)工業(yè)邊緣計算的設(shè)施和能力首先要從工業(yè)邊緣計算的編程語言來考慮。總的來講,其編程語言和工具需要:
(1)確定性控制引擎必須支持IEC 61131-3標(biāo)準(zhǔn)和C語言,這是系統(tǒng)穩(wěn)定運(yùn)行的基本保證。 (2)編程語言和工具靈活多樣,可以根據(jù)要求不同而變化,也就是不恪守單一的編程語言,而采用多樣化的編程標(biāo)準(zhǔn),以及用戶定義的數(shù)據(jù)類型。包括使用C/ C++、Python和其他適用于機(jī)器學(xué)習(xí)和人工智能等應(yīng)用程序的現(xiàn)代語言編程。 (3)同樣,功能塊也可以采用多樣化的編程語言標(biāo)準(zhǔn),并可由用戶定義。 (4)能夠運(yùn)行開源應(yīng)用程序,如圖形化編程工具Node-RED和數(shù)據(jù)可視化工具Grafana,以及商業(yè)和定制應(yīng)用程序。
工業(yè)邊緣控制系統(tǒng)應(yīng)該支持面向?qū)ο蟮耐ㄐ艆f(xié)議(如OPC UA),以實現(xiàn)在確定性控制程序和分析/決策應(yīng)用程序之間無縫傳輸數(shù)據(jù);支持以O(shè)T為中心的通信協(xié)議,即IEC 1158所規(guī)范的通信協(xié)議,諸如Modbus、Profibus和Profinet等;還需要支持以IT為中心的通信協(xié)議,如MQTT和HTTPS。
此外,邊緣控制器的通用計算部分采用基于Linux操作系統(tǒng),便于邊緣控制器可以運(yùn)行各種各樣的非實時計算和分析應(yīng)用程序,還可以獨立于確定性控制部分啟動和升級。Linux是輕量級的高性能OS,與其它操作系統(tǒng)平臺相比需要更少的CPU和RAM的資源。用戶還可以利用預(yù)裝的工業(yè)邊緣平臺軟件加載數(shù)字化轉(zhuǎn)型項目所需的應(yīng)用。
總之,具有這些特性的邊緣控制器是實現(xiàn)傳統(tǒng)確定性控制的同時充分利用現(xiàn)在和未來邊緣計算發(fā)展成果的最佳選擇。圖3是艾默生邊緣控制器ControlLogic的軟件框圖。
圖3 艾默生邊緣控制器ControlLogic的軟件框圖
進(jìn)一步探討OT/IT的編程及其關(guān)系 面向OT的編程是面向業(yè)務(wù)的編程,需要深入、系統(tǒng)地理解業(yè)務(wù)及其需求、特征、要求和約束。工業(yè)自動化編程的核心和立足點是工業(yè)自動化,其編程語言需要符合工業(yè)行業(yè)領(lǐng)域的理解和習(xí)慣。 IT編程語言發(fā)展很快,語言繁多,且各有特點和優(yōu)缺點。由于工業(yè)自動化仍然需在計算機(jī)底層硬件上運(yùn)行并實現(xiàn)業(yè)務(wù)控制與目標(biāo),所以除了需要首先考慮工業(yè)自動化行業(yè)及具體場景的要求與特點而外,仍然需要面向計算機(jī)及IT的編程語言為工業(yè)自動化的業(yè)務(wù)目標(biāo)實現(xiàn)提供支撐與發(fā)展。 OT/工業(yè)自動化行業(yè)、領(lǐng)域及場景,有自動化人的一整套的行業(yè)體系、架構(gòu)、要求(比如確定性、對延時的要求與約束等等都是由業(yè)務(wù)的性能所決定)、習(xí)慣以及行業(yè)語言,構(gòu)成了一種體系化的行業(yè)生態(tài)與配套工具及其實現(xiàn)機(jī)制,在這里IT中的編程語言、實現(xiàn)機(jī)制、協(xié)議等用來支撐對OT/工業(yè)自動化行業(yè)/領(lǐng)域的目標(biāo)與要求,方便其開發(fā)和實現(xiàn)。對OT/工業(yè)自動控制這樣的行業(yè)、領(lǐng)域,由其自身的行業(yè)語言、習(xí)慣,需有行業(yè)自身的語義、信息模型,這樣的語義模型及語義定義、數(shù)據(jù)字典、狀態(tài)機(jī)、信息模型結(jié)構(gòu)及其含義,是以O(shè)T/工業(yè)自動化行業(yè)視角下的抽象、設(shè)計并定義的,它不同于IT視角下的情況。雖然OT/工業(yè)自動化視角下的這些語義、信息模型,最終的實現(xiàn)仍然需要借助IT的編程語言與機(jī)制、工具來作為基礎(chǔ)支撐與實現(xiàn),但它的主要特點和屬性歸屬于OT/工業(yè)自動化的行業(yè)范疇,基于但又區(qū)別于IT行業(yè)的情況。 OT/工業(yè)自動化行業(yè)/領(lǐng)域有自身的特定標(biāo)準(zhǔn)、規(guī)范,這些標(biāo)準(zhǔn)、規(guī)范的設(shè)計、系統(tǒng)及配套工具,都是圍繞OT/工業(yè)自動化的行業(yè)要求來展開,這一整套的OT/工業(yè)自動化的林林總總,同樣需要一個“工業(yè)自動化操作系統(tǒng)OS”,這個OS不同于IT視角下的面向計算機(jī)底層硬件資源管理與調(diào)度的OS,而是針對并滿足服務(wù)于OT/工業(yè)自動化領(lǐng)域的行業(yè)操作系統(tǒng),它以滿足OT/工業(yè)自動化自身的行業(yè)要求和服務(wù)為著眼點和立足點,也是成體系化的。IT視角下的面向計算機(jī)硬件資源管理與調(diào)度控制的OS,是為OT/工業(yè)自動化行業(yè)行業(yè)OS提供管理與調(diào)度計算機(jī)硬件資源的底層運(yùn)行環(huán)境。 工業(yè)自動化的發(fā)展歷程告訴我們,IT領(lǐng)域的編程語言難以全面替代OT領(lǐng)域的編程語言。IT/OT融合的趨勢應(yīng)該表現(xiàn)為由OT領(lǐng)域中的一種建模語言來構(gòu)筑框架,以便于主持其它編程語言在最合適的場合發(fā)揮其所長,而不是用某一種編程語言來排斥其它的編程語言。具體地說,在編程語言這一基礎(chǔ)領(lǐng)域,要體現(xiàn)IT/OT融合的趨勢,還是應(yīng)該由OT領(lǐng)域的機(jī)構(gòu)來主導(dǎo)。
結(jié)語和感謝
基于上述討論可以得到兩個結(jié)論: (1)新一代的控制系統(tǒng)需要一種集成的綜合開發(fā)環(huán)境,讓實時的和確定性的控制程序可以與非實時的數(shù)據(jù)分析、AI應(yīng)用程序按需交換數(shù)據(jù),并協(xié)調(diào)運(yùn)行于同一系統(tǒng)。因此OT領(lǐng)域的編程語言和IT領(lǐng)域的編程語言應(yīng)該在編程運(yùn)用中各司其職,各盡所長。但真正能進(jìn)入確定性控制核心的編程語言仍然必須是OT領(lǐng)域的編程語言。 (2)盡管可以選用OT/IT領(lǐng)域中各種不同的編程語言為開放自動化系統(tǒng)編寫功能塊代碼,仍然需要一種系統(tǒng)建模語言或綜合開發(fā)環(huán)境將這些功能塊按工藝應(yīng)用要求連接起來并能自動執(zhí)行,這不是任意一種編程語言能夠單獨承擔(dān)的任務(wù)。
-
自動化
+關(guān)注
關(guān)注
29文章
5776瀏覽量
84762 -
編程語言
+關(guān)注
關(guān)注
10文章
1956瀏覽量
36586 -
工業(yè)自動化
+關(guān)注
關(guān)注
17文章
2725瀏覽量
68312
原文標(biāo)題:工業(yè)自動化編程語言演變的方向!
文章出處:【微信號:數(shù)字化企業(yè),微信公眾號:數(shù)字化企業(yè)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
愛普生SG-8200CG可編程晶振成為工業(yè)自動化領(lǐng)域的理想選擇

工業(yè)DTU對工業(yè)自動化通信格局的重塑

電源技術(shù)在工業(yè)自動化中的應(yīng)用
三菱PLC編程語言解析
CAN總線在工業(yè)自動化中的作用
PLC在工業(yè)自動化的應(yīng)用及解決方案

語言模型自動化的優(yōu)點
工業(yè)自動化的發(fā)展歷程與未來趨勢
CAN總線在工業(yè)自動化中的應(yīng)用
PLC控制系統(tǒng)與工業(yè)自動化關(guān)系
中國工業(yè)自動化的現(xiàn)狀和發(fā)展方向
愛普生SG-8101CA可編程晶振應(yīng)用在工業(yè)自動化機(jī)器人

評論