「軟件正在吞噬世界,全部過去特定硬件實現的功能,如今都會經過軟件實現」,傳統封閉的工業控制系統,其經過特定硬件實現的功能在工業互聯網或工業4.0時代都將被軟件所取代。前端
我一直在關注當前和將來PLC虛擬化發展狀態的演進,虛擬化技術的偉大之處在於,在過去六十年的IT中,沒有任何其餘進步能提供比虛擬化更多的可量化優點。從歷史來看,PLC和PC的祖宗是一家人,他們都是經歷繼電器時代發展演變而來。既然IT在虛擬化中取得巨大成功,同是一家人的PLC爲何不能享受虛擬化的巨大優點?編程
值得再次強調的是,本文所指PLC虛擬化絕非軟件版本PLC或安裝運行在虛擬機裏面的PLC軟件。軟件PLC或者「SoftPLC」實際上是一種失敗品,這些僅僅是控制系統廠家在控制系統和信息系統之間進行整合嘗試的失敗品,他們看到了信息系統通用平臺巨大的好處和成功,可是很惋惜推出的系列「SoftPLC」嘗試並未能進入市場。安全
本文所指PLC虛擬化,我認爲能夠這樣定義:PLC虛擬化,是將傳統專用的PLC硬件功能解耦,利用軟件化的方法和通用的標準模塊化硬件仿真或模擬看起來和行爲相似於特定PLC硬件的系統。本質上來講,基於PLC的特殊專用硬件環境,PLC虛擬化最好的途徑是PLC供應商主動提供PLC的虛擬化版本,即擁抱現有的虛擬化技術。實質上,有些PLC供應商也會在一些大型的項目中,爲了下降客戶的控制器成本或維持控制器的高性能要求而給客戶部署虛擬化版本的控制器,這些控制器能夠運行在商用IT硬件環境上。這是PLC供應商針對自身的控制器進行虛擬化以適配IT虛擬化技術的結果。一般來講,這些可以虛擬化版本的控制器不會出如今市面上,也不會出如今供應商的產品目錄中,甚至都不會有任何產品編號。服務器
回到咱們的第一個疑問,PLC能享受虛擬化的巨大優點嗎?答案固然是確定的,之因此咱們看不到,是由於任何事物的誕生和發展必定有其前提條件和土壤,PLC虛擬化亦是如此。網絡
科學技術的革新始終在推進時代巨輪轟鳴向前。PLC虛擬化的發展也終將會隨着相關軟硬件技術、社會價值和商業模式的發展成熟而順理成章。架構
隨着虛擬化PLC的軟硬件技術的成熟,好比在技術和工程層面,經過軟件可以實現針對PLC系統的處理器、ISA總線、各類專用硬件卡、網絡IO等的仿真和模擬實現,這些基礎能力構成了PLC虛擬化實現和發展的技術前提。ide
那麼,現目前咱們如何針對PLC進行虛擬化運做,業界在經過什麼技術在進行PLC虛擬化的技術嘗試呢?在舊文《工業控制系統的發展趨勢-PLC虛擬化和軟件定義》中,咱們描述了目前包括西門子等在內的控制系統供應商在進行的研究項目,他們將PLC執行環境與I/O模塊解耦,並將PLC執行環境標準化、模塊化、虛擬化的實現。並經過軟件定義將PLC的邏輯抽象出來,利用軟件定義網絡的實現思路,經過一個應用程序實現針對PLC執行邏輯的程序開發和管理,讓應用程序定義硬件PLC的功能。也就是將PLC的邏輯控制、程序存儲和IO模塊分離,利用應用程序實現邏輯控制部分。從技術角度來說,這是針對PLC系統的「硬件重構和軟件定義」。硬件重構和軟件定義是基於虛擬化技術之上更高級、更抽象的資源和數據自動化。控制系統廠商試圖彎道超車,直接進行PLC設備的硬件重構和軟件定義,推出具有適應工業互聯網或工業4.0時代的新型PLC設備以替代傳統PLC設備在新時代浪潮下的適應性問題。在舊文《ALC--軟件定義架構的PLC》一文中,我簡單介紹了目前業界基於上述研究推出的一系列過渡成品。模塊化
那麼爲何控制系統廠商會直接忽略虛擬化現有PLC設備,而推出新的架構形態的PLC設備呢?虛擬化現有PLC設備很難嗎?性能
從技術實現的可行性角度分析,咱們若是須要實現PLC的虛擬化,須要作到如下幾點:區塊鏈
1、可以在通用架構上運行虛擬化的PLC CPU;
2、可以解決交換以太網的時效性問題;
3、可以針對PLC的專用硬件虛擬化成標準化的IO卡運行在通用架構上;
4、可以支持如今的商用電源,好比220V;
5、可以支持冗餘的商用IO卡/控制器。
也就是咱們須要將PLC架構中專用的部分經過仿真或模擬,將其運行於標準架構之上。首先咱們須要建立虛擬機同樣的一個虛擬PLC軟件容器,將PLC裝進去。這個虛擬PLC軟件容器和虛擬機同樣,具有特定控制系統供應商的CPU、ISA總線、IO卡等PLC特殊的虛擬硬件設備。
從PLC處理器架構層次的虛擬化上來看,PLC虛擬化首要要解決的就是在經過架構上運行PLC CPU的仿真和模擬。因爲西門子S7-400已經被社區普遍研究和逆向,所以本文采用西門子S7-400 PLC進行舉例說明。西門子S7-400採用兩個英飛凌TriCore處理器用於運行PLC的處理邏輯。而現有的仿真模擬器QEMU就支持對TriCore處理器的仿真和模擬,那麼是否是意味着利用QEMU能夠運行仿真西門子S7-400呢?若是是西門子官方來作這件事情,我相信只須要西門子研發部門對西門子S7-400的固件進行從新編譯,或者對QEMU添加特定的西門子S7-400配置文件支持,便可在QEMU中運行西門子S7-400,我也相信西門子內部會存在這樣相似的模擬器。從外部廠商的實現角度上來講,因爲不知道這種架構是否通過西門子的特別修改,所以實現起來會特別困難,可是在技術角度上是能夠實現的。若是西門子對西門子S7-400的英飛凌TriCore處理器進行過特別的處理和修改,那麼外部廠商在QEMU實現仿真和模擬西門子S7-400的時候,須要在QEMU中構建一個擴展示有QEMU TriCore配置的新配置文件來適配西門子S7-400的特殊修改項。
從PLC ISA架構層次的虛擬化上來看,S7-400在TriCore架構之上運行一種虛擬機。這個虛擬機實現了針對西門子機器代碼與處理器機器代碼的翻譯和轉換。在TriCore ISA中,無條件跳轉以機器代碼字節0x1d開始,而PLC虛擬機內部的相似無條件跳轉以機器代碼字節0x70 0x0b開始。虛擬機內的機器代碼稱爲MC7,目前MC7尚未在公網上出現或泄露過固件版本,還沒有被外部各方徹底進行逆向掌握。所以實現ISA的虛擬化是無比困難的。除非找到一種很好的設計可以解決他們之間的翻譯和轉換,並經過軟件對其進行翻譯和轉換進行虛擬化或反轉。或者經過設計硬件級別的ISA來解決。這個就有點相似於IT虛擬化技術中的二進制翻譯技術、半虛擬化技術和硬件輔助虛擬化技術。可是因爲PLC設備各個廠家的ISA的標準設計不一,世界上現目前都還不可能出現一種標準化的ISA虛擬化技術可以徹底的虛擬化大部分控制系統廠家的設備。在IT環境中,這些虛擬化技術之因此成功,是由於IT硬件的標準已經趨於統一,具有足夠的技術條件來實現虛擬化的翻譯和轉換。
從PLC 運行程序架構層次的虛擬化上來看,咱們須要將S7-400固件徹底克隆成爲QEMU映像,並經過QEMU TriCore處理器和專門的S7-400 QEMU虛擬機配置文件進行虛擬PLC機器的建立和運行。這些虛擬機配置文件的包括S7-400的輔助硬件設備(如以太網和I/O等)。可是因爲缺少相應的資料,得到包含完整固件的克隆(包括引導加載程序和完整的RTOS)也很困難。所以,除了CPU和ISA以外,構建西門子-S7-400 PLC虛擬化的還需構建西門子S7-400的輔助硬件設備(如以太網和I/O)的配置文件。
綜合來講,若是咱們須要在現有的虛擬化架構之上構建PLC的虛擬化技術,咱們須要解決的問題有不少,而且針對每一款PLC型號的PLC系統咱們都會構建相對應的虛擬PLC虛擬機和虛擬硬件。總體的仿真或模擬流程以下圖所示:
可是在PLC型號衆多的現狀下,試圖採用這種方式貌似是一種吃力不討好的解決方案。
那麼尚未其餘的PLC虛擬化解決方案?除了上述技術路線比較陡峭以外,目前業界的另一種方式是經過純軟件的方式實現PLC的軟件化模擬,開源OpenPLC就是其中的一個典型表明。OpenPLC的概念也是在實際的產業應用中產生的。1995年,在中國的馬鞍山鋼鐵公司的動力調度中心,面臨一個題目,動力調度中心要監控馬鋼來自發電廠、水廠、煤氣廠和動力廠(負責電力輸送)的各種能源和動力信號,但這四個數據來源,包括這些能源與動力的輸送的管網所涉及的上百個變電所、增壓站和泵站的自身的控制系統是不兼容的,有的仍是專用系統,不只沒有協議,連開發人都已經沒法找到。除了通信不兼容外,連這幾個系統的控制結構也截然不同,電廠是相似於DCS的結構,水廠和睦廠是PLC結構,動力廠是SCADA結構,對集成職員理解系統也造成了較大的困難。該項目最後當然沒有用OpenPLC解決(當時尚未),但該項目的需求致使了OpenPLC的誕生。
從OpenPLC的論文中,OpenPLC針對過程控制和離散製造業廣泛存在的,各種控制要求不一樣的系統的互連的題目,做者提出了設計一個新型的開放式控制系統的構想。因爲該系統的目的是要儘量地適用各種不一樣的應用場合,所以,定名爲開放式可編程控制系統,而英文則是Open Programmable Logic Controller,縮寫爲OpenPLC。該系統從1995年開始構思,到1997年基本明確設計思想,幾條主要的設計原則以下:
1、OpenPLC應該是一種以PC技術爲基礎的系統,尤爲是在可以發揮出PC特點的場合(如網絡,與外界的鏈接,優化,專家系統,操縱界面,數據監測,文件記錄和打印等),工做由以PC爲基礎的系統來承擔;
2、在底層,須要高可靠和實時控制時,由分散控制系統承擔,但它不一樣於現場總線,它不是基於儀表的系統,而是基於系統的系統,儀表仍是普通儀表,只是將I/O和控制單元放在了現場,傳回中心控制室的是數字信號,而不是模擬的4—20mA信號,要求原來的儀表仍然可用;
3、在I/O點較集中的場合,能夠採用相似於DCS或PLC的機櫃或機架,內部模塊用總線或網絡鏈接,整個系統應該具備較高的可靠性,同時有較好的兼容性和開放性;
4、系統應該具備真正的分佈性,前端可集中,也能夠延續幾百米、幾千米甚至幾千千米(在地球的另外一端),爲此,系統必須具有與TCP/IP兼容的協議和WEB服務器;
5、規模也能夠從小至幾十點,大至幾千點甚至幾十萬點。系統I/O規模的增長不該該致使系統的大的改變。
OpenPLC是一個開源實現,能夠在Linux上模擬PLC,能夠在通用的架構上使用。在現有的虛擬化技術中實現OpenPLC很是簡單,由於它能夠輕鬆地在Linux和x86架構上進行編譯和安裝。目前的OpenPLC通過多年的發展日益成熟,已經逐漸的應用在一些領域中。
綜上所述,無論基於新型「硬件重構和軟件定義」的新型PLC虛擬化仍是基於傳統的PLC設備進行虛擬化,亦或者純軟件實現的OpenPLC等虛擬化技術,無不昭示PLC的發展趨勢須要在新的架構下面臨的蛻變與重生。隨着技術的發展,PLC虛擬化的軟硬件技術成熟度趨近於產品或技術解決方案的工程化應用,構建PLC虛擬化的條件開始陸續具有,PLC的虛擬化就必定會到來,只不過不必定叫PLC虛擬化,或者那個時候回是一個嶄新的概念。
PLC虛擬化技術的實現,可以帶來的優點和好處顯而易見,在此我無需贅述。而基於PLC虛擬化技術所產生的巨大的社會價值和商業模式,纔是工業互聯網或工業4.0時代,工業行業取之不竭的源動力。
所謂的巨大社會價值,指的是從用戶角度出發,PLC虛擬化的採用使任意組織和我的得以站在巨人的肩膀上開展業務,避免重複造輪,極大提升了軟件與服務構建各環節效率,加速了各種應用的架構和落地,而云端按需啓用和隨意擴展的資源彈性,也可以爲企業節省巨大成本。
所謂偉大的商業模式,指的是PLC虛擬化技術出現後,基於PLC虛擬化的產品和服務形態很是適合新時代的工業互聯網或工業4.0須要,標準化、模塊化、人工智能和軟件定義的控制系統核心大腦大幅下降了客戶的進入門檻,而技術基礎設施架構方面的穩定性、靈活性和便捷性又帶來了較高的客戶粘性,再加上雲計算、大數據中心所能帶來的規模效應,這些因素使得基於PLC虛擬化的物聯網、工業互聯網可以成爲一門好的生意,對應着一個極佳的 B 端商業模式。
PLC虛擬化不只僅在業務層面取得成功,也會在根本上改變現有工業控制系統的安全架構和安全治理模式。就像傳統信息系統的虛擬化取得的優點同樣,PLC虛擬化堆棧在網絡安全的優點無與倫比,咱們能夠基於SDN網絡構建PLC的網絡IO,經過對東西網絡流量進行精細控制,構建精細化的全流量檢測、全功能轉發以及「零信任網絡」環境的安全網絡鏈路,甚至可構建基於區塊鏈的工業安全區塊體系。此外,在PLC的內部和前端,咱們能夠從容的放置和定義工控軟件防火牆對進出PLC的流量進行安全防禦。所以,PLC虛擬化的架構應用在網絡安全角度看來,會比如今的工業控制系統健壯。