1985年,理查德·斯托曼(Richard Stallman)創(chuàng)立了自由軟件基金會(the Free Software Foundation,F(xiàn)SF),目標是推動開源軟件的運用。這源自每個人都應(yīng)該有機會修改、改進或改變軟件基礎(chǔ)的設(shè)想,或許可以算是開源軟件的始端。
一、軟件開源和開源軟件
我們通常使用的數(shù)字設(shè)備里面的程序都是由基本代碼構(gòu)成的軟件。按照開放與否這種基本代碼可以分為兩類:開放源碼和封閉源碼。凡是可以被任何人共享和修改維護的稱之為開放源碼;凡是只能為代碼開發(fā)者獨享和修改維護的就是封閉源碼。
開源軟件(Open Source Software,OSS)意味著每個運用它的人都可以根據(jù)自己的意愿修改、改進或利用軟件,而不受任何限制。因此,可以在現(xiàn)有開源軟件的基礎(chǔ)上針對自己的特定應(yīng)用對其定制化。開源軟件是協(xié)同的產(chǎn)物,依賴所在社群的程序編制者和同行使用、更改、評審和彼此共享源代碼。開發(fā)人員共享見解、想法和代碼,共同或單獨創(chuàng)建更多創(chuàng)新的軟件解決方案。這個可伸縮且靈活的軟件開發(fā)方式確保任何擁有源代碼的人都可以修改、增強和重新分發(fā)它,以獲得更好的可重用性和可存取性。開源軟件遵循對等生產(chǎn)和大規(guī)模協(xié)同的基本原則,為最終用戶創(chuàng)造更可持續(xù)的軟件。
封閉源碼軟件(Close Source Software,CSS)是不向公眾發(fā)布的專有軟件。軟件是加密的,只有創(chuàng)造代碼的原創(chuàng)作者才有合法復(fù)制、修改、更新和編輯源代碼的權(quán)利。對最終用戶而言,封閉軟件對其應(yīng)用程序的操作施加了限制,防止用戶修改、共享、復(fù)制或重新發(fā)布源代碼。在開源和閉源之外,還有一種被稱之為FOSS的自由開源軟件,允許用戶從更原理的角度存取軟件。在自由開源軟件體系中,自由軟件基金會(FSF)旨在保護用戶的自由,開放源碼組織(OSI)旨在確??煽寇浖募夹g(shù)價值。
由于開源軟件的出現(xiàn),在過去20年里,計算環(huán)境發(fā)生了巨大的變化。這種巨大的變化發(fā)生在開源軟件開發(fā)者社群提供軟件和代碼的背景下,這些軟件和代碼是他們花費了數(shù)百萬工時來開發(fā)和驗證的。用戶可以從這些庫和基礎(chǔ)塊中組裝軟件,而不是從頭開始編寫,以前覺得代價高昂的軟件開發(fā)成本現(xiàn)在花費少多了,以前需要長期開發(fā)的項目現(xiàn)在可以很快開發(fā)出來。
這種開源軟件大致可以分為三類。首先是操作系統(tǒng),Linux和安卓(Android)就屬于這一類。目前100%的超級計算機和85%的智能手機中,大多數(shù)的邊緣計算設(shè)備都在運行Linux,全球100萬臺頂級服務(wù)器中的96.3%和90%的云基礎(chǔ)設(shè)施上,都在運行Linux。這顯然意味著,隨著越來越多的工廠開始用服務(wù)器和云連接,并增強其基礎(chǔ)設(shè)施,Linux將會在工業(yè)自動化市場繼續(xù)發(fā)展。第二類開源軟件由應(yīng)用程序組成,比如數(shù)據(jù)庫和瀏覽器。在工業(yè)領(lǐng)域,這一類的軟件往往不像其他類別的軟件那樣受歡迎。但是一些開源數(shù)據(jù)庫,比如出自PostgreSQL全球開發(fā)組織的PostgreSQL和來自O(shè)racle的MySQL還是廣受歡迎。開源軟件中更受歡迎的一類是可以嵌入到其他軟件項目中的代碼庫?,F(xiàn)在軟件項目中90%的代碼都是有關(guān)多線程的處理,軟件開發(fā)者給軟件帶來的價值只有10%。因此,具備必要才能的軟件開發(fā)人員和用戶通常會結(jié)合開源和商用代碼來構(gòu)建他們的大部分代碼。
許多公司和個人更喜歡使用開源軟件,而不是專有或商業(yè)軟件,因為它的多功能性、安全性、進化性、社群氛圍和支持、培訓(xùn)和穩(wěn)定性。使用開源軟件的一些優(yōu)點是成本的節(jié)省、定制代碼的靈活性,以及可以自由地利用社群而不是依賴單個供應(yīng)商。開源也有一些缺點,包括:支持不足、測試不足、文檔不足、不適當?shù)膹?fù)雜性和軟件漏洞。
二、工業(yè)自動化開源的背景及進展
相對于IT行業(yè)的開源運動,工業(yè)自動化領(lǐng)域的軟件開源發(fā)展要晚得多。為了弄清開放軟件運動是如何影響工業(yè)軟件技術(shù)的,我們先看一下當前驅(qū)動許多新的自動化技術(shù)決策的大趨勢,主要有:
(1)終端用戶的需求日益增長,導(dǎo)致軟件的應(yīng)用和程序的復(fù)雜性也隨之增長;為滿足個性化和多樣性的技術(shù)需求以及提供穩(wěn)定可靠的工業(yè)技術(shù)的快速實現(xiàn)之間求得平衡,迫使和推動工業(yè)自動化邁向開源的未來。
(2)工業(yè)自動化與工業(yè)互聯(lián)網(wǎng)日益融合或結(jié)合的趨勢,體現(xiàn)了OT與IT在更廣泛的范圍內(nèi)融合的客觀需求;把多年來推動IT技術(shù)迅猛發(fā)展的開源模式引入OT領(lǐng)域,以期突破OT領(lǐng)域在軟件方面的長期保守和封閉局面。
(3)工業(yè)自動化領(lǐng)域從七八年前吹起了開放自動化的清風,一方面瞄準了DCS和PLC這些主力控制系統(tǒng)硬件和軟件捆綁所帶來的弊端,另一方面也是最終用戶在長期封閉的開發(fā)環(huán)境束縛之下,尋求一種革命性的出路;追求采用不同供應(yīng)商的軟硬組件構(gòu)成具有開放、互操作、內(nèi)生信息安全以及快速部署和投運為特征的新興控制系統(tǒng)的目標,也必須借鑒和充分利用開源軟件的無限生命力和潛能,從而使廣大的最終用戶擺脫對特定供應(yīng)商的依賴,掌握自身發(fā)展的節(jié)奏。
簡而言之,“應(yīng)用驅(qū)動技術(shù)”是開源軟件開發(fā)的核心,這種社群成員可以使用、修改和共享源代碼的模式,注定將成為一種難以抗拒的趨勢。自動化行業(yè)面對這一趨勢必須首先澄清并迅速轉(zhuǎn)變的是“根本不理解任何開源商業(yè)模式”這一主要問題。有識之士認為,在未來這個更多的企業(yè)管理軟件源自開源軟件的時代,大中小型自動化公司以及工業(yè)組織或工業(yè)聯(lián)盟應(yīng)該考慮如何跟上形勢運用開源軟件。這是公司和組織發(fā)展戰(zhàn)略的一個重要組成部分。
德國的A&D咨詢公司曾對來自自動化行業(yè)的363名參與者進行有關(guān)開源軟件在自動化領(lǐng)域應(yīng)用的調(diào)查。大約2/3的人認為高性能在未來的應(yīng)用中至關(guān)重要,控制器作為一個開放的通信中心,需要與云連接,并支持任何編程/開發(fā)工具。幾乎80%的人關(guān)注一個事關(guān)“無廠商鎖定”(“No Vendor Lock-in”)的關(guān)鍵問題,即在控制平臺中開放接口,以減少在他們自有的集成開發(fā)環(huán)境中的集成工作。當涉及開源軟件時,參與調(diào)查的人士存在一定的分歧,因為許多人對于開源軟件仍然有很多無知。雖然2/3的受訪者認為通過社群平臺和開放且免費的源代碼進行信息交換非常有幫助,但大約1/3的人仍然青睞擁有專有技術(shù)并經(jīng)過驗證的PLC解決方案,頑強地認為對于控制任務(wù),開放社區(qū)解決方案往往不受信任。
綜上所述可以認為,工業(yè)控制器系統(tǒng)正在增加工業(yè)級開源軟件的性能選項,但仍然有許多意見并不看好開源的可編程邏輯控制器(PLC)。那么我們就先從這里談起。五十多年前,為工業(yè)應(yīng)用量身定做的PLC一經(jīng)問世,短短幾年就風靡全球,迅速擴散到各種類別的離散制造業(yè)。還不斷擴展包括I/O、通信、運動控制功能,改善運算速度和可靠性,還循著標準化的道路制定了整個行業(yè)普遍接受的國際標準IEC61131,同時應(yīng)用領(lǐng)域還擴大到運動控制和過程控制。
PLC設(shè)備結(jié)構(gòu)緊湊,可以安裝在機械設(shè)備和移動設(shè)備的現(xiàn)場,在很大程度上推動了自動化的發(fā)展,甚至被譽為第三次工業(yè)革命的標志之一。PLC通常使用專用的電纜、通信協(xié)議和編程語言來執(zhí)行任務(wù)。盡管它們是相對封閉的平臺,但它們的任務(wù)非常具體,并且長盛不衰地為大中小型工業(yè)應(yīng)用提供了多樣而有效的控制、數(shù)據(jù)采集和監(jiān)控等服務(wù)??墒牵S著IT技術(shù)的迅猛發(fā)展,即使是如此成熟的控制產(chǎn)品現(xiàn)今也面臨著開源軟件和開源硬件的影響和沖擊。
開源的PLC以許多不同的方式呈現(xiàn)了其獨特的優(yōu)勢,例如:在開源軟件代碼的基礎(chǔ)上可以進行免費代碼合成和代碼再共享;可進行更高程度的合作和協(xié)同;在有序的許可管理的條件下可對源代碼進行存取;終結(jié)排他性的供應(yīng)商軟件鎖定;等等。于是這些年來在美國、德國等都涌現(xiàn)了既繼承傳統(tǒng)PLC的特點又帶有開源特色的產(chǎn)品,例如德國菲尼克斯(Phoenix Contact)的可編程邏輯控制器的PLCnext和美國OPTO 22的邊緣可編程工業(yè)控制器EPIC。還有基于樹莓派和Arduinos開源硬件的工業(yè)級開源PLC(見圖2)及其集成開發(fā)環(huán)境。Arduino是一種源自歐洲的便捷靈活、方便上手的開源電子原型平臺,包括各種型號的硬件Arduino板和軟件Arduino IDE。
圖2 基于Arduinos擴展的開源PLC
作為開放流程自動化的倡導(dǎo)者和踐行者,??松梨谝恢痹谘芯咳绾螐腜LCnext中獲益。受到樹莓派和其他開放架構(gòu)社群的啟發(fā),菲尼克斯開發(fā)了這款PLC作為開源設(shè)備。??松梨趶?019年起將它引入位于新澤西州克林頓的試驗工廠,用于提供基本的計算和可配置的I/O。除了是一個傳統(tǒng)的PLC,PLCnext也是一個支持Linux的設(shè)備,這表明它允許使用傳統(tǒng)的IEC61131-3語言以及編程語言,如C++、C語言和Python。這個開源PLC可以在Eclipse 4DIAC、Visual Studio、Matlab等幾乎任何IDE(集成開發(fā)環(huán)境)編譯器上運行。??松梨谧非蟮拈_放自動化概念是不依賴一家供應(yīng)商,而是將多家軟硬件的供應(yīng)商按照O-PAS的系列標準構(gòu)成可互操作、組態(tài)可移植、應(yīng)用程序可移植和可互換的控制系統(tǒng)(見圖3)。該試驗廠一直在使用PLCnext驗證這一概念,但凡由埃克森美孚工程技術(shù)人員開發(fā)的基于Linux的軟件都可以在任何開放的、支持Linux的控制器上運行。
圖3 ??松梨陂_放流程自動化測試實驗室由多供應(yīng)商的硬軟組件構(gòu)成的控制系統(tǒng)
秉承互聯(lián)網(wǎng)開放和可互操作的整體理念,工業(yè)物聯(lián)網(wǎng)和工業(yè)互聯(lián)網(wǎng)顯然也需要建立在開放和可互操作的基礎(chǔ)上。最終用戶需要意識到開放軟件運動對工業(yè)軟件技術(shù)的影響,重要的是要認識到互聯(lián)網(wǎng)的基本構(gòu)建模塊的開放性。譬如現(xiàn)在作為互聯(lián)網(wǎng)的通信協(xié)議TCP/IP和網(wǎng)站開發(fā)用超文本標記語言HTML,前者曾是美國國防部高級研究計劃局DARPA為在核戰(zhàn)爭中生存而建立的開放協(xié)議,后者則是由歐洲核子研究中心創(chuàng)建的互聯(lián)網(wǎng)開放語言。一旦它們變成開源軟件,就大大推動了互聯(lián)網(wǎng)的普及。同理,工業(yè)中互聯(lián)網(wǎng)的使用越來越多也得益于開源軟件。近些年來工業(yè)物聯(lián)網(wǎng)IIoT的流行促進了HTML的最新版本HTML5和TCP/IP的開源版本的運用,還促進了使用MQTT開放消息傳遞協(xié)議。據(jù)MQTT的共同發(fā)明人Arlen Nipper的說法,在所有工業(yè)物聯(lián)網(wǎng)項目中MQTT的使用已經(jīng)占有64%的份額。MQTT協(xié)議的開源版本在Eclipse上叫做mosquitto。
三、開源軟件在工業(yè)自動化應(yīng)用中的優(yōu)勢
顯而易見的是,制造業(yè)自動化領(lǐng)域許多參與者的崛起,以及工廠越來越多地采用工業(yè)物聯(lián)網(wǎng)和自動化解決方案,為開源軟件的應(yīng)用提供了合適的環(huán)境。無論制造商的操作技術(shù)和管理要求如何,開源軟件都是一種增值解決方案,因為它具有定制化、高適應(yīng)彈性、可擴展性、可訪問性、成本效益和質(zhì)量等優(yōu)勢。
1、定制化
軟件開發(fā)人員通過使用開源代碼為本身特定應(yīng)用軟件的創(chuàng)建提供核心代碼,在此基礎(chǔ)上再建立特定的特性,并允許用戶訪問它并根據(jù)需要進行更改。與將用戶鎖定的封閉系統(tǒng)不同,開源允許他們調(diào)整和修改代碼以滿足特定的需求或應(yīng)用。這中附加編碼方式可對定制化不加限制,從而使社群(即用戶的集合)能夠在軟件集成階段添加有益的特性,例如用于用戶測試的特性或為機器找到最佳解決方案的特性。定制在數(shù)據(jù)和流程可視化方面也很有價值,用戶可以開發(fā)最能描述其操作的儀表板和視覺效果。如果采用合適的傳感器為特定機器提供實時狀態(tài)監(jiān)測數(shù)據(jù),就可以定制采集和處理特定參數(shù)數(shù)據(jù)或計算特定值的軟件代碼。
2、適應(yīng)彈性
由于可快速對源代碼進行修改,開源軟件對變化的適應(yīng)性表現(xiàn)得很有彈性??焖偬砑踊騽h除功能以及適應(yīng)網(wǎng)絡(luò)環(huán)境或特定應(yīng)用的能力,可能使新開發(fā)的程序不穩(wěn)定,但通過接觸不同的環(huán)境和應(yīng)用,開源代碼也可以變得更強,得以應(yīng)對網(wǎng)絡(luò)安全威脅。由于有如此多的編碼人員或程序員進行測試和增強,實現(xiàn)開源代碼的風險(例如在網(wǎng)絡(luò)安全方面)并不一定比封閉代碼來得高。在采用開源軟件開發(fā)自己的定制軟件時,實現(xiàn)者可以借鑒適用于其他閉源軟件的相同規(guī)則,不過實現(xiàn)者必須了解代碼的源代碼,并避免使用不知名的源代碼,因為這些源代碼可能會帶著不良的意圖修改代碼??偟膩碚f,開源代碼具有彈性、適應(yīng)性和敏捷性,能夠適應(yīng)給定的新環(huán)境。
3、可伸縮性
開放源碼的附加組件和定制功能也允許代碼具有高度的可伸縮性。這種可伸縮的實現(xiàn)在兩個維度上進行,即采用時間軸和基于應(yīng)用的實現(xiàn)。為了保證用戶愿意接受,并滿足操作和應(yīng)用的要求,這兩者都不可或缺。關(guān)于采用時間軸,可伸縮性允許修改軟件和代碼以滿足用戶的期望。開源代碼能夠?qū)崿F(xiàn)用戶測試和反饋的特性。最終的解決方案將包括多次迭代,以滿足用戶的需求和實現(xiàn)運行預(yù)期。另一方面,基于不同的應(yīng)用,代碼程序也可以根據(jù)控制目的或要求加以變化和伸縮。例如控制不同的機器,或同一類型的機器但運用環(huán)境或場景不盡相同,或者為特定用途添加/刪除某些功能特性等等。如果有三臺相同的機器(A、B和C),它們處于不同的環(huán)境中:A在零下2度的環(huán)境下工作,B在室溫下,C處于不停的洗沖中。那么狀態(tài)監(jiān)控軟件要為每個場景定義可接受的參數(shù),避免錯誤觸發(fā)的誤報警。為此可以調(diào)整基本代碼,以滿足不同應(yīng)用的特定功能。
4、可訪問性
一般來說,在線上可以找到性價比高的開源代碼。還有一些額外的資源,比如免費的編碼教程,也不需要任何許可。此外,當程序員更新開源代碼時,他們必須讓新版本共享,以便再次可用,并確保代碼是可訪問的和最新的。
5、成本效益和質(zhì)量
使用社群開源代碼大大降低了獨自構(gòu)建應(yīng)用程序的開發(fā)、集成和測試諸階段的成本。同時還減少了實施的時間,有利滿足項目的進度或產(chǎn)品上市的時間。本質(zhì)上說,開源軟件應(yīng)該是受信任的源代碼,是由眾多編碼人員和用戶創(chuàng)建的高質(zhì)量、可靠的代碼。
6、開源的安全和權(quán)限管理系統(tǒng)
與其他操作系統(tǒng)相比,開源Linux的一個優(yōu)點是權(quán)限管理和安全性。為了授予定制的存取權(quán)限,Linux提供了一種非常細粒度的、可獨立調(diào)整的權(quán)限管理,嚴格的權(quán)限分配以及對用戶和組的管理。例如,允許保護配置文件和控制設(shè)置,防止未經(jīng)授權(quán)的訪問或無意的更改。這樣,機器操作員就不能通過所分配的適當權(quán)限來對工藝參數(shù)進行任何更改。嚴格的權(quán)限管理可以保護操作系統(tǒng)免受網(wǎng)絡(luò)攻擊,在日益網(wǎng)絡(luò)化的控制系統(tǒng)中,安全問題尤為重要。許多商用的基于工業(yè)PC的控制器使用Windows作為操作系統(tǒng),其效果是必須定期安裝安全刷新。特別是在生產(chǎn)環(huán)境中,安全刷新意味著中斷,并可能導(dǎo)致不希望的副作用。然而,在基于Linux的內(nèi)核中,有一些經(jīng)過特殊加固的“設(shè)計安全”內(nèi)核。操作系統(tǒng)通過簡化獲得額外的安全性:只保留所設(shè)定任務(wù)執(zhí)行必要的代碼。可能導(dǎo)致額外攻擊載體的不必要軟件一開始就沒有安裝在系統(tǒng)上。還有一個優(yōu)勢是在開源庫和自由程序中出現(xiàn)了新的安全漏洞,由于開放性,相應(yīng)的補丁可以很快地從社群中導(dǎo)入。與此相反依賴于制造商的安全補丁,這可能需要很長時間。
四、運用開源軟件必須注意的問題
集成商和最終用戶從相關(guān)的開源網(wǎng)站借用免費代碼用于他們的項目,為了確保它運行良好,使用安全,首先需要對它進行審慎的審查。審查應(yīng)該從對許可證的評估開始,要確定這是否是一個在商業(yè)上友好的開源軟件許可證,能否合法使用。還要確定是否允許修改代碼。開源不一定意味著必須修改它,但一定能看到和運用代碼。
除了檢查許可證,還要考慮安全性。最好從使用活躍用戶社群支持和維護的開源應(yīng)用程序和庫開始。用戶越多越好,因為更多的眼睛尋找漏洞并提出修復(fù)方案,不僅會持續(xù)改進軟件,而且有助于讓社群領(lǐng)先于惡意行為者。每個社群都有自己的特點,如果想要加入的社群中有熟悉的人更好,可以了解更多的情況。還要搞清誰是代碼的發(fā)布者。一般來講愿意把自己的名字與所做的工作公開的人不太可能做任何惡意的事情。
任何好的審查過程還必須包括性能測試。從開源社群獲得一些代碼時,接下去的工作就是確保這些代碼可以為我所用,并且始終應(yīng)該對所部署或修改的任何內(nèi)容進行嚴格的測試。
審查開源軟件的另一個重要方面是考慮其在產(chǎn)品生命周期內(nèi)的成本和收益。與自行開發(fā)的軟件相比,在整個產(chǎn)品生命周期內(nèi)操作和維護開源軟件的能力變得更重要,也更具有挑戰(zhàn)性。
出于這個原因,應(yīng)該開發(fā)自己的內(nèi)部標準和指導(dǎo)方針,以審查任何考慮納入其產(chǎn)品的開源代碼。在軟件評估階段,從多個角度檢查軟件,比如它在該領(lǐng)域的記錄、產(chǎn)品質(zhì)量、與類似軟件的比較、提供長期維護的能力以及許可證的結(jié)構(gòu)等。
在使用開放源碼時,仍然必須遵守許可條件,并在必要時澄清許可條件。所以每個開源軟件的使用者必須讓自己的程序基于開放源代碼。還要考慮封閉的源代碼是否可以供自己使用,這些程序是否可以商業(yè)發(fā)行等問題。
原則上,在公司內(nèi)部使用各種開源許可證,如GPL(GNU General Public License)或BSD(Berkeley Software Distribution)時,它們之間的差別很小。但是,如果開源軟件被進一步開發(fā)并發(fā)布,就應(yīng)該注意許可條件。這里開源程序區(qū)分了“有版權(quán)Copyleft”和“無版權(quán)Non-Copyleft”的許可類型。如果制造商使用基于copyleft許可的開放源代碼,就像眾所周知的GPL一樣,那么修改后的代碼也必須按照原始許可再次發(fā)布給社群。這是為了防止用戶或制造商分發(fā)修改了使用條款的修改后的源代碼。因此,在其解決方案中使用帶有copyleft許可證的開源軟件的自動化解決方案提供商必須仔細檢查除了許可文本之外,是否必須提供編輯過的源代碼。例如,某些copyleft許可要求開放源碼軟件的每個編輯版本都不受限制地發(fā)布。但是也有中度的copyleft變體,只在特定條件下才要求發(fā)布源代碼。它與包括BSD許可的軟件的非copyleft許可證類型不同,不要求發(fā)布修訂后的代碼。因此,用戶可以根據(jù)自己的需求進一步使用BSD許可開發(fā)軟件,并獲得專有許可。作為一種選擇這樣就可以開發(fā)商業(yè)產(chǎn)品,源代碼不需要公開??傊?,開源軟件使用的合規(guī)性是一個必須嚴肅遵守的文問題。
五、國內(nèi)自動化公司運用開源軟件的體會
盡管開源軟件的還存在諸如文檔弱、沒有專門技術(shù)支持等弊端,目前國內(nèi)有些小型的自動化公司還是非常贊同采用開源軟件來構(gòu)建工業(yè)控制器,為此需要做不少工作。
當然不得不承認工業(yè)控制系統(tǒng)要求還是比較特殊,盲目提高核心處理器性能并不能帶來絕對的控制性能的提高,由于像PLC這樣的工業(yè)控制系統(tǒng)基本都是采取循環(huán)掃描方式工作,并且對于實時性的要求相對較高,因此選用開源軟件時需要進行詳細的評估與測試,特別對于基礎(chǔ)的實時操作系統(tǒng)更是如此。對比下來,不開放源代碼的商業(yè)實時操作系統(tǒng)(如:VxWorks,QNX等等)具有完善的文檔與團隊對工業(yè)控制系統(tǒng)采用的實時操作系統(tǒng)進行技術(shù)保證,但其費用需要采用者進行詳細評估才能做出。對于基礎(chǔ)實時操作系統(tǒng),一些小型自動化公司更傾向于商用開源的解決方案,例如研發(fā)PLC時可以考慮采用:uCOSIII、KEIL RTX5、embOS、ThreadX等等,這些RTOS應(yīng)用非常成熟,并且均已經(jīng)開放源代碼,提供商業(yè)技術(shù)支持,而且后續(xù)無版權(quán)費或在部分指定芯片上無版權(quán)費。
Linux操作系統(tǒng)應(yīng)用在工業(yè)控制器產(chǎn)品上,則需要加入實時補丁,目前主流的實時補丁有Preempt-RT、Xenomai。其中Xenomai實時補丁綜合評測下來實時性較高,在對實時性要求較高的運控控制系統(tǒng)中得到大量的應(yīng)用與驗證,并且采用微內(nèi)核模式的架構(gòu),實時應(yīng)用執(zhí)行效率更高。Preempt-RT與Xenomai補丁均為開源社群項目,其實時性在具體平臺上的表現(xiàn)不盡相同,因此需要進行大量的測試與驗證,用戶需要評估公司團隊是否具備測試與優(yōu)化的能力。
由上所述可知,在工業(yè)控制器中采用開源軟件來進行基礎(chǔ)系統(tǒng)構(gòu)建,同樣也是一把雙刃劍。上海翌控科技公司在此方面積累了不少寶貴經(jīng)驗,他們認為最佳模式是基礎(chǔ)實時操作系統(tǒng)采用商業(yè)開源軟件,或者聘請專業(yè)工程師或者與第三方專業(yè)公司合作解決基礎(chǔ)實時操作系統(tǒng)問題。對于像IEC61131-3 PLC運行時系統(tǒng)此類非常專業(yè)的基礎(chǔ)系統(tǒng),雖然開源社群也有類似的開源軟件平臺,但是其成熟度遠遠落后市面專業(yè)公司的產(chǎn)品,如果公司項目無法投入巨量的資金來基于此開源社群產(chǎn)品進行優(yōu)化,則非常難以滿足市場客戶的要求。因此,以開發(fā)工業(yè)控制器為己任的OEM公司與專業(yè)控制軟件公司合作則是最佳解決方案。
翌控科技公司在構(gòu)建NXTOS工業(yè)控制器系統(tǒng)平臺時也基于以上的分析與判斷,采用商業(yè)專用軟件(LogicLab IEC61131-3軟件平臺)、商業(yè)開源軟件、開源免費軟件相互結(jié)合方式來實現(xiàn)最終產(chǎn)品。例如:NXTOS基于x86平臺選用了Linux操作系統(tǒng),并支持Xenomai/Preemp-RT補丁,因此翌控科技在此平臺優(yōu)化與測試上花費大量精力,最終在極端嚴苛負載情況下進行實時性測試,其最差抖動對于Xenomai依然可以達到小于13us,而對于Preempt-RT小于27us。NXTOS在嵌入式MCU平臺上平均做到10us以內(nèi)的最差抖動(部分平臺1-2us)。因此在較低抖動的情況下可以大幅增加處理器的利用效率,即使采用Cortex-M處理器也可以實現(xiàn)EtherCAT 1ms的運行周期。對于工業(yè)控制系統(tǒng)來說,該公司的結(jié)論是:商業(yè)專用軟件、商業(yè)開源、開源免費結(jié)合使用。另外PLC運行內(nèi)核非常不推薦采用開源社群方案,這種方案僅僅可以作為參考,但是離產(chǎn)品化的距離實在太大。
結(jié)束語
充滿希望和活力的開源精靈已經(jīng)從潘多拉魔盒里出來了,沒有辦法再回到過去構(gòu)建軟件的專利模式。當然,也不可能會在一夜之間用開源軟件取代所有現(xiàn)有的軟件和未來的軟件。但整個軟件世界,包括工業(yè)自動化的軟件領(lǐng)域,目標已經(jīng)確定,正在朝著這個方向前進。過去的一些年在強調(diào)軟件的重要性時,我們都聽說過“軟件正在吞噬世界”這句話,但真正吞噬世界的或許將是開源軟件。
開源軟件的重要推手也使開源運動發(fā)展得有聲有色。這里有每年有數(shù)十億美元收入、接管了近750個大中型開源項目的Linux基金會,以極大的熱情倡導(dǎo)工業(yè)自動化和智能化開源軟件開發(fā)的ECLIPSE基金會,還有老牌的軟件公司微軟近些年來傾注了大量力氣支持開源軟件的應(yīng)用和推動。在工業(yè)自動化界也涌現(xiàn)了不少努力投入基于開源軟件的開發(fā)和應(yīng)用的公司,例如美國的Inductive Automation公司,其創(chuàng)建的Ignition社群非常活躍和有效;德國菲尼克斯公司的PLCnext成為富有傳統(tǒng)PLC特色的開放自動化的樣板;美國OPTO22公司倡導(dǎo)的的邊緣可編程工業(yè)控制器EPIC,開辟了PLC控制和工業(yè)互聯(lián)網(wǎng)結(jié)合的發(fā)展路徑。
國內(nèi)眾多的自動化公司和研究單位面對開源軟件蓬勃發(fā)展的形勢將如何選擇和行動,人們翹首以待。