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