摘 要:工業控制是嵌入式系統的應用的重要領域,Linux 系統是嵌入式系統開發的有力工具,本文主要利用Linux系統來具體實現一個嵌入式工業控制系統。同時,所討論的實時系統的研究,為在一個系統中同時支持多種實時調度方法提供了可能性。
關鍵字:實時性 嵌入式系統 工業控制
1. 前言
嵌入式技術是21世紀最有生命力的新技術之一,目前已經廣泛應用于社會生活的各個方面。嵌入式系統的應用與開發則是當今計算機行業發展的一個熱點。現今嵌入式軟件的應用與開發的領域主要有:國防、移動通信、電子、辦公自動化、機/車頂盒、掌上電腦(或PDA)、手機軟件、工業控制、信息家電等領域。工業等各部門對智能控制需求的不斷增長,對嵌入式微處理器的實時性、運算速度、可擴充能力、系統可靠性、功耗和集成度等方面提出了更高的要求。
2. 嵌入式系統與工業控制網絡
美國電氣工程師協會(IEE)的一個定義:嵌入式系統是用來控制或監視機器、裝置或工廠等大規模系統的設備。嵌入式系統通常具有如下特性:
(1)通常只執行特定功能;是在特定領域內完成特定的功能的專用計算機系統,比如,它可用于一種工業儀器,也可能用于航天設備中的某個電子裝置。這一點與一般桌上型辦公設備或數據庫系統有很大區別。
(2)嵌入式系統中硬件配置一般是根據系統的性能指標來確定的;除了附加的調試接口外,沒有多余的硬件設備,一般是以計算機周邊器件構成核心,其規模可在大范圍內變化。如從8051芯片到X86芯片。而且嵌入式系統中是軟件和硬件緊密結合。
(3)嚴格的時序和穩定性要求;這是因為在機器控制的大型系統中,程序運行稍有差錯則可能使得整個系統失去控制,甚至釀成災害。而且系統一般不進行交互動作,所以要求系統的自動運行要穩定、糾錯能力強,可靠運行。
(4)具有實時性;因為在工業控制應用中大多數是屬于過程控制,這些領域對系統要求是必須具有實時性,而且還要求有實時性的嵌入式操作系統。
(5)嵌入式系統的開發一般采用宿主機/目標機模式;在某個環境下調試好目標機器的軟件和硬件,才能使目標機器離開開發環境,從而獨立運行。
嵌入式系統是電腦軟件與硬件的綜合體,它是以應用為中心,以計算機技術為基礎,軟件硬件可裁剪,從而能夠適應應用系統,對功能、可靠性、成本、體積、功耗嚴格要求的專用計算機系統。它將操作系統和功能軟件集成于計算機硬件系統之中,簡單的說就是系統的應用軟件與系統的硬件一體化,類似于BIOS的工作方式,具有軟件代碼小,高度自動化,響應速度快等特點。特別適合于要求實時的和多任務的體系。
工業控制網絡是由傳感器、執行機構、顯示和數據記錄設備等組成,用于監視和控制電氣設備的系統。通常除遇到系統不能自愈的故障需要人工干預排除外,均應有自動實現監控功能。在工業應用中,控制網絡可以用于監視設備的狀態、調節轉速和流量等、采集模擬輸入量、順序開關/起停設備、與主控機通信并在顯示器或專門定制的顯示設備上顯示各參量的大小和狀態。由于工業控制系統特別強調可靠性和實時性。控制網絡數據通信以引發物質或能量的運動為最終目的。用于測量與控制的數據通信的主要特點是:允許對實時的事件進行驅動通信,具有很高的數據完整性。
智能儀表的出現推動著工業控制網絡的發展,新一代的工業控制網絡呼喚功能更強大的儀表和控制器的出現,面向工業控制的嵌入式系統應勢而生。
3. 系統實現
系統的實現包括硬件實現和軟件實現。
硬件實現
系統結構框圖如圖1。兩個串行通信接口可以采用RS232。用以采集來自其他設備的遠程的數據,然后由ARM微處理器進行處理,處理后的結果通過以太網接口分發給其他設備。為了調試的方便,Flash存儲器使用了兩個,512K的用于存儲引導裝載程序,2M的用來承載包含應用程序的操作系統映像。此種設計方式可以使在啟動加載方式下,調試不同操作系統的應用程序時,只需要簡單的更換包含對應的操作系統的引導程序的Flash芯片就能做到。為了滿足大多數情況的需要,內存選用容量為16M的16bit的芯片。10M以太網接口的設計是考慮到通用性。為了調試的方便,這里使用了一個JTAG(國際標準測試協議)接口,可以訪問其他系統資源,它還可以跟仿真器相連。USB接口分為兩個主機接口和一個設備接口。LED用來在調試和使用過程中的顯示數據結果。
[align=center]

圖1 系統硬件結構圖[/align]
軟件實現
軟件的實現包括兩個方面,一個是系統的內核,另一個是設備的驅動程序。
(1)首先編譯 Kernel的源代碼:
執行下列命令:
cd /usr/src/linux
make mrproper
make xconfig
會出現一個界面,可以根據自己的實際需要來選擇。在編譯內核的過程中,最繁雜的事情就是這步配置工作。在配置過程中,大部分選項可以使用其缺省值,只有小部分需要根據用戶不同的需要選擇。選擇的原則是將與內核其它部分關系較遠且不經常使用的部分功能代碼編譯成為可加載模塊,有利于減小內核的長度,減小內核消耗的內存,簡化該功能相應的環境改變時對內核的影響;不需要的功能就不要選;與內核關系緊密而且經常使用的部分功能代碼直接編譯到內核中。在選項Code maturity level options、Loadable module support、Processor type and features、Networking options、Network device support、ISDN subsystem、Character devices等分別選擇適合自己所需要的項目。File systems建議選擇相應的項目,為了以后擴充使用。
(2)為每個設備編寫程序
Linux系統的設備驅動程序完成的主要工作是:
① 對每個硬件設備進行初始化和釋放;
② 數據傳輸,將數據從內核傳到硬件設備,或者從硬件設備傳到內核,讀取應用程序傳送給硬件設備的數據和回送應用程序請求的數據;
③ 檢測和處理硬件設備出現的錯誤和異常;
Linux系統的設備驅動程序的主要組成部分有:
① 自動配置和初始化子程序;
② 服務于I/O請求的子程序;
③ 中斷服務子程序;
根據所選擇的設備和設備所要完成的功能分別進行編寫。
4. 實時性解決辦法
實時操作系統是實時控制系統和實時處理系統的統稱。所謂實時就是要求系統及時響應外部條件的要求,在規定的時間內完成對該事件的處理,并控制所有實時設備和實時任務協調一致地運行。實時控制系統實質上是過程控制系統。實時操作系統首先考慮的是系統的實時性和可靠性。實時處理系統主要指對信息進行及時的處理。
高實時性是許多工業控制網絡的基本要求,Linux 在這樣的環境下還存在許多缺陷。它不是一個真正的實時操作系統,內核不支持事件優先級和搶占實時特性。那么,要將 Linux 系統改造成為適用于工業控制領域內的嵌入式系統必須解決一個重要的問題——實時性。所以,在開發嵌入式 Linux 的過程中,首要問題是擴展 Linux 的實時性能。目前把Linux改造為嵌入式實時系統的方法有兩個:一個方法是對Linux系統的內核進行改造;另一個方法是在 Linux 系統底層添加一個硬件抽象層,也就是添加一個實時內核進行改造。其目的都是為了保證系統會首先執行優先級更高的實時進程然后才是優先級低的普通進程,并且防止別的普通進程打斷實時進程的運行。
為達到系統實時性的要求,本文對Linux 內核進行改造的方法。改造方法主要是通過截取硬件底層中斷,在硬件上實現一個抽象層,通過抽象層來傳遞和控制 Linux 中斷。目前,為滿足實時性而進行的系統改造主要集中在雙內核、中斷和時鐘機制、內核狀態調整、進程間通信方式的調整和進程搶占式調度算法這五個方面:
第一, 雙內核技術
這種方法對于支持工業控制,數據采集等等有硬實時性要求的應用系統比較合適。所謂的雙內核主要是指,在標準的 Linux 內核的下面再提供子內核,這個子內核不是一個完整的內核,它沒有足夠的驅動程序,缺乏擴展庫,它是標準內核的補充,主要處理實時任務。而原來的 Linux 內核作為在其上運行的一個核心任務。在硬件中斷和原來的 Linux 內核之間加入一個實時內核,通過實時內核解決原 Linux 內核的關中斷問題,該實時內核始終不關閉硬件中斷,可以接受所有的中斷信號,當中斷信號需要實時進程來處理時,由優先級更高的實時進程搶占Linux內核。
第二,中斷和時鐘機制。
實時系統與外部中斷處理相關的一個重要的方面是“關閉中斷”處理機制,需要保證確認硬件外部中斷時內核不再重入,并且緊跟一個軟件中斷處理流程,實質就是用軟中斷來代替硬中斷。實時系統與外部中斷處理相關的另一個重要的方面是系統中斷嵌套的能力,即可以指定外部事件服務的相對優先級,并且保證關鍵的外部操作能夠提前處理。同時,可以改造時鐘機制來縮小軟中斷的切換時間。
第三,提高內核的可搶占性。
為了提供進程間通信和進程搶占式調度的良好實現,需要對進程狀態進行改造,完全的改造 Linux 內核為可強占內核。加一個搶占點來改良系統響應時間長的問題,所謂的搶占點就是,在這個點的時候如果系統中有更高優先級的進程就序,系統提供這樣一個機會高優先級的進程運行。那么就可在一個用戶進程在核心狀態執行時能被一個更高的優先級的可執行進程搶占。將實時進程包括在內核里,實時內核本身也通過內核模塊的方式進行裝載與卸載,其目的是為了方便進程間通信的及時進行,并且可以實現更好的進程搶占式調度算法。
第四,進程間通信方式調整。
用可搶占式內核的方法實現進程調度,需要采用關中斷或使用信號量機制來保護臨界區,需要提供進程間通信的若干實現方法。
第五,進程搶占式調度。
實時系統的調度必須滿足以下條件:進程的優先級通過 API 指定、調度器自動選擇并執行最高優先級的進程、調度在一個固定的時間周期里選擇和執行最高優先級的進程。系統需要提供滿足要求的調度方法。
5. 系統測試分析
為了保證系統的正常運行,在理論上通過的前提下,測試是必不可少的。限篇幅有限這里只將測試結果列表如下:
表5-1 測試結果統計
6. 結論
本論文的創新點在于:(1)提出了一種嵌入式工業控制網的硬件模型;(2)詳細的分析了影響工業控制過程實時性的因素。通過測試結果可以發現,本文提出的硬件模型性能較好,能夠滿足大多數工業控制的需要。同時,在吸取前人關于實時性分析問題經驗的基礎上,提出了自己的觀點,并用測試實驗得以驗證。
參考文獻
[1]班建民,付保川等.基于嵌入式數據庫的實時數據采集方法.微計算機信息.2005,10
[2]田霖,李正熙,童朝南.實時仿真與嵌入式系統.微計算機信息.2005,13
[3]王保進.一種提高構件化嵌入式操作系統性能的方案.微計算機信息.2005,7
[4]許海燕,付炎.嵌入式系統技術與應用.北京:機械工業出版社,2003
[5]雷澎.Linux 的內核與編程.北京:機械工業出版社,2000
[6]陳莉君.Linux 操作系統內核分析.北京:人民郵電出版社,2000
[7]鄒思軼.嵌入式 Linux 設計與應用.北京:清華大學出版社,2002