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