嵌入式控制系統設計/系統複雜性分類
本章將討論系統複雜性問題。
什麼是系統複雜性?
在處理分類問題之前,重要的是定義複雜性的含義。有人可能會認為,系統越大,越複雜。讓我們來看一個例子。
一位電工要為兩棟建築物佈線。一棟是小房子,另一棟是公寓樓。顯然,為第二棟建築物佈線需要更多工作,並且後者的保險絲盒看起來更復雜,但關鍵思想是相同的:將電輸送到燈泡和插座。插座的數量無關緊要。如果您能為一個插座佈線,您就能為一千個插座佈線。規模更大,但複雜性相同!
從這個角度來看複雜性,很明顯複雜性不是由規模(在本例中是導線的數量)定義的。
在本章中,複雜性由非同步子系統的數量及其不同的通訊和同步需求來定義:兩個並行執行的活動之間的每一次資訊交換都會以某種方式干擾這兩個正在執行的程序,並且以可預測的方式處理這種干擾並不容易。 (這些方面在關於非同步活動的章節中進行了更詳細的解釋。)從這個角度來看,房子和公寓樓都屬於非複雜系統,因為只有一個系統,不需要通訊。
如何對複雜性進行分類?
這裡給出了使用上述定義進行分類的一種可能的分類。
- 集中式硬體 - 集中式控制 (C1):在這種系統中,所有資訊都集中在一個地方。不需要作業系統。這些系統可以由一家很小的公司的一到兩位工程師設計和開發,因為整個設計和開發都可以容納在一個人的頭腦中。
- 分散式硬體 - 集中式控制 (C2):這些系統由多個較小的系統組成。每個子系統都有自己的控制單元。但每個子系統都與主計算機通訊,主計算機負責系統的所有決策。這些系統需要一個團隊,比如,一家大型公司中的十幾個工程師。專業化通常是不可避免的。
- 分散式硬體 - 分散式控制 (C3):這些系統也由多個子系統組成,但每個系統都可以做出自己的決策,因此不需要中央主計算機。這些是最複雜的系統群,數百名開發人員需要共同努力,可能在許多不同的公司。
這種分類的目標不是要詳盡無遺或完整,而是要讓技術專案經理對各種嵌入式系統的複雜性(以及成本)有一個初步的瞭解,以及對每種類別中系統可以預期的技術和管理挑戰有一個瞭解。
這類系統的例子包括自動售貨機、電梯控制器、傳送帶、交通欄杆等。控制這些系統的一個非常重要的元素是可程式設計邏輯控制器 (PLC)。它是簡單系統介面和控制背後的傳統裝置。
這類嵌入式系統(更確切地說,是嵌入式裝置)的特點如下
- 它有一個單一處理器,通常是嵌入式型別。
- 所有硬體外設都透過直接訊號線連線到處理器板。
- 硬體介面可以透過記憶體對映 I/O進行。
- 軟體包含一個單一執行緒,該執行緒一遍又一遍地執行相同的程式迴圈。
- 因此,它不需要作業系統。
- 該裝置用於非常明確的任務,在非常明確的環境中,也就是說,幾乎不需要適應或變化。
機器人或機床控制器是這類系統的典型代表。
這類嵌入式系統的特點如下
- 它有一個單一處理器,PC 型別,在某些硬體外設中可能還有多個嵌入式處理器。
- 某些硬體外設透過現場匯流排連線到處理器板。
- 這種型別硬體的介面需要一個軟體堆疊來接收和傳送現場總線上的訊息,以及解釋訊息內容。
- 一些外圍硬體使用中斷。
- 軟體包含多個執行緒(共享記憶體)或多個程序(在受保護的記憶體空間中執行),它們各自執行自己的程式,但需要彼此之間進行同步和資料交換。
- 因此,需要作業系統。
- 該裝置具有可重新程式設計功能,使其能夠在相當明確的環境中完成各種任務。
機器人多代理系統、空中交通管制系統或機場行李處理系統是這類系統的典型代表。
這類嵌入式系統的特點如下
- 整個系統由圍繞多個子系統的軟體和通訊層組成,每個子系統本身都屬於前面幾類中的某一類。
- 每個子系統通常具有多個處理器,嵌入式和PC 型別。
- 子系統透過各種網路技術進行通訊,例如有線或無線乙太網、無線通訊等。
- 通訊通常是非同步的。
- 通訊軟體需要廣泛的協議,這些協議對控制整個系統的知識進行編碼。
- 一些外圍硬體使用中斷。
- 軟體包含多個程式,面向服務的架構型別。
- 各個子系統可以使用多個作業系統。
- 整個系統具有廣泛的可重新程式設計功能(甚至可以動態替換子系統或其軟體),使其能夠在非常不同的環境中完成各種任務。
在設計這類系統時,強烈需要模型驅動的工程。您需要能夠將系統劃分為子系統並劃分功能,因為您在不同的開發團隊中工作。但是,目前還沒有足夠的模型可用。
處理複雜性
在設計複雜系統時,會遇到一些問題。
處理複雜性的一個關鍵方面是,系統的使用者不應面對系統的複雜性。這似乎不是問題,因為您可以讓系統像黑盒子一樣工作。不幸的是,大多數系統都需要監控。事實證明,這是一個問題,因為介面需要儘可能簡單,但仍然需要提供正確的資訊量。
三里島事故說明了前面的說法。三里島反應堆的一個元件停止工作,導致許多其他系統元件也關閉。控制室的指示燈顯示了這些問題,操作員突然被大量資訊淹沒,其中大部分資訊無關或誤導性。操作員錯誤地解釋了指示燈,並感到非常困惑,以至於做出了錯誤的決定,導致了部分堆芯熔燬。
解決這個問題的一種可能方法是監控功能而不是元件。只有當功能出現問題時,才需要檢視元件。
隨著複雜性的增加,故障的風險也會增加。更多的互動會導致更高的錯誤風險,而更大的複雜性會讓使用者更難發現問題所在。對於錯誤,有三種可能的反應
- 找到錯誤以防止災難
- 看看您首先應該做什麼來修復系統元件
- 找到導致系統故障的設計錯誤
複雜性示例:汽車
起初,汽車只不過是一輛由發動機驅動的戰車。沒有涉及非同步子系統,也沒有計算機參與決策。很明顯,當使用前面解釋的概念時,這種型別的車輛屬於型別 1 的非複雜系統。
多年來,汽車發生了很大的演變。從 80 年代開始,汽車中越來越多地使用計算機。有 ECU、ABS 和 ESP 單元,甚至還有一個調節空調的計算機。這些都是非同步子系統,使汽車成為型別 3 的系統。(注意,您可以找到將汽車宣告為型別 2 系統的論據。)
多年來,使用者介面並沒有真正改變。仍然有方向盤、換擋桿以及一些顯示冷卻液溫度、燃油液位和機油壓力的儀表。這很好地說明了,不向使用者展示車輛的全部複雜性是可能的。
還有一種可能的第四類集中式硬體和分散式控制系統。現代汽車很難歸類為上述任何一種系統,但它可能正在發展成為這種第四種系統。汽車的主計算機需要同時執行多個程式。這些程式之間沒有任何互動。