關於PLC虛擬化的思考–當下及未來
- 2019 年 10 月 4 日
- 筆記
「軟體正在吞噬世界,所有過去特定硬體實現的功能,現在都會通過軟體實現」,傳統封閉的工業控制系統,其通過特定硬體實現的功能在工業互聯網或工業4.0時代都將被軟體所取代。–再為題
一、關於PLC虛擬化
我一直在關注當前和未來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虛擬化的發展也終將會隨著相關軟硬體技術、社會價值和商業模式的發展成熟而瓜熟蒂落。
2.1.發展PLC虛擬化的軟硬體技術
隨著虛擬化PLC的軟硬體技術的成熟,比如在技術和工程層面,通過軟體能夠實現針對PLC系統的處理器、ISA匯流排、各種專用硬體卡、網路IO等的模擬和模擬實現,這些基礎能力構成了PLC虛擬化實現和發展的技術前提。
2.1.1.PLC的硬體重構和軟體定義
那麼,現目前我們如何針對PLC進行虛擬化運作,業界在通過什麼技術在進行PLC虛擬化的技術嘗試呢?在舊文《工業控制系統的發展趨勢-PLC虛擬化和軟體定義》中,我們描述了目前包括西門子等在內的控制系統供應商在進行的研究項目,他們將PLC執行環境與I/O模組解耦,並將PLC執行環境標準化、模組化、虛擬化的實現。並通過軟體定義將PLC的邏輯抽象出來,利用軟體定義網路的實現思路,通過一個應用程式實現針對PLC執行邏輯的程式開發和管理,讓應用程式定義硬體PLC的功能。也就是將PLC的邏輯控制、程式存儲和IO模組分離,利用應用程式實現邏輯控制部分。從技術角度來講,這是針對PLC系統的「硬體重構和軟體定義」。硬體重構和軟體定義是基於虛擬化技術之上更高級、更抽象的資源和數據自動化。控制系統廠商試圖彎道超車,直接進行PLC設備的硬體重構和軟體定義,推出具備適應工業互聯網或工業4.0時代的新型PLC設備以替代傳統PLC設備在新時代浪潮下的適應性問題。在舊文《ALC–軟體定義架構的PLC》一文中,我簡單介紹了目前業界基於上述研究推出的一系列過渡成品。
2.1.2.傳統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型號眾多的現狀下,試圖採用這種方式貌似是一種吃力不討好的解決方案。
2.1.3.OpenPLC的純軟體模擬
那麼還沒有其他的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虛擬化,或者那個時候回是一個嶄新的概念。
2.2.產生的巨大社會價值和商業模式
PLC虛擬化技術的實現,能夠帶來的優勢和好處顯而易見,在此我無需贅述。而基於PLC虛擬化技術所產生的巨大的社會價值和商業模式,才是工業互聯網或工業4.0時代,工業行業取之不竭的源動力。
所謂的巨大社會價值,指的是從用戶角度出發,PLC虛擬化的採用使任意組織和個人得以站在巨人的肩膀上開展業務,避免重複造輪,極大提高了軟體與服務構建各環節效率,加速了各類應用的架構和落地,而雲端按需啟用和隨意擴展的資源彈性,也能夠為企業節省巨大成本。
所謂偉大的商業模式,指的是PLC虛擬化技術出現後,基於PLC虛擬化的產品和服務形態非常適合新時代的工業互聯網或工業4.0需要,標準化、模組化、人工智慧和軟體定義的控制系統核心大腦大幅降低了客戶的進入門檻,而技術基礎設施架構方面的穩定性、靈活性和便捷性又帶來了較高的客戶粘性,再加上雲計算、大數據中心所能帶來的規模效應,這些因素使得基於PLC虛擬化的物聯網、工業互聯網能夠成為一門好的生意,對應著一個極佳的 B 端商業模式。
三、總結
PLC虛擬化不僅僅在業務層面取得成功,也會在根本上改變現有工業控制系統的安全架構和安全治理模式。就像傳統資訊系統的虛擬化取得的優勢一樣,PLC虛擬化堆棧在網路安全的優勢無與倫比,我們可以基於SDN網路構建PLC的網路IO,通過對東西網路流量進行精細控制,構建精細化的全流量檢測、全功能轉發以及「零信任網路」環境的安全網路鏈路,甚至可構建基於區塊鏈的工業安全區塊體系。此外,在PLC的內部和前端,我們可以從容的放置和定義工控軟體防火牆對進出PLC的流量進行安全防護。因此,PLC虛擬化的架構應用在網路安全形度看來,會比現在的工業控制系統健壯。