引言 隨著各種電子系統在各領域中應用的不斷深入,對電子系統本身的各方面性能提出了越來越高的要求,使應用軟件朝著系統化方向加速發展。傳統的嵌入式系統設計中,大多采用單任務的順序機制。應用程序是一個無限的大循環,所有的事件都得按順序執行,與時間相關性較強的事件靠定時中斷來保證。這種方式編程的優勢在于程序較為直觀,但由此帶來一個重要的問題,那就是系統的穩定性、實時性較差。尤其當系統功能較復雜,同時對實時性要求較嚴格時,這種單任務機制的弱點使暴露無遺。 在配電監測終端軟件的設計中,筆者將買時操作系統μC/OS-II用于TMS320F206的程序設計;將系統所要的功能細化成為幾個核心任務,由μC/OS-II實時內核進行調度,實現了多任務的并行執行,系統的可靠性和實時性得到大幅提升。ΜC/OS-II是免費的、源代碼公開的、微內核嵌入式實時操作系統,其實時性能和內核的健壯性早已經在大量的實際應用中得到了證實。 1 系統概述 在電力系統中,對電子設備的要求是比較高的。配電監測終端是監測電網運行狀況的一種重要設備,主要完成以下功能:對電壓、電流信號進行采樣,A/D轉換;對所采集到的數據進行計算分析,得出各種監測指標參數;對所有指標參數進行統計分析,處理液晶顯示和鍵盤掃描,響應按鍵命令,進行數據通信處理。在對電壓、電流模擬通道信號的采樣和A/D轉換過程中,為保證嚴格的等時間間隔,將這部分事件處理放到實時器中斷中進行。數字信號分析處理作為一個程序模塊,完成數據的分析運行。鍵盤掃描和液晶顯示處理部分程序,作為人機交換信息最直接的通道。它的設計是否合理,直接影響到用戶使用的滿意程序。在單任務系統中,程序循環的周期不確定,因此鍵盤掃描周期無法確定。當程序運算量較大時,容易造成明顯的鍵盤響應遲鈍。鍵盤掃描周期很大程序上受到主程序循環時序的影響,而且,當主程序中某個程序模塊出現問題時,將出現程序卡住,直到看門狗復位為止。 在多任務系統中,這些問題可以得到很好的解決。利用嵌入式實時操作系統內核對所有“任務”進行統一調度和管理,使CPU的使用權在建立的“任務”間切換;同時,在多任務機制下,使應用程序模塊化,使開發任務層次化。 整個系統的設計可以分為三個層次:最底層為硬件平臺是,包含微處理器系統及相關應用電路,第二層為任務層,包含電路驅動程序和應用程序;最高一層為μC/OS-II操作系統層,是整個系統的管理核心,如圖1所示。 2 硬件描述 配電監測終端的設計采用定點DSP TMS320F206作為處理器。它是采用先進的改進型哈佛結構、多級流水高速設計,具有極其強大的數據處理能力和管理能力。該終端從功能上可分為數據采集部分,液晶顯示及鍵盤陣列部分,數據存儲、通信部分及微處理器小系統部分。數據采集部分用來對電壓、電流信號進行采樣和A/D轉換;液晶顯示和鍵盤陣列為人機信息交換硬件接口;數據存儲部分存儲大量歷史統計數據,采用掉電保護設計,在系統掉電情況下數據不會丟失。 3 系統軟件設計 按系統所要求實現的功能,將整個系統劃分為幾個并行存在的任務層。占先式操作系統對任務的調度是按優先權的高低進行的,將系統的幾個任務按其優先級從高到低順序排列依次是:系統監視任務、鍵盤掃描和液晶顯示任務、通信任務、數據運算統計處理任務。數據采集部分放到定時器中斷程序中執行。其中,系統監視任務是用來監視除系統監視任務外其它任務的。當被監視任務在執行過程中出現差錯時,系統監視任務將按照預先設定的處理表對其進行處理,使出現差錯的任務恢復正常運行,提高系統運行的可靠性。優先權的設置是按照整個系統運行的時序來確定的,對系統安全運行較重要和對實時性要求較嚴格的任務,設成較高的優先級。一般而言,在系統運行過程中,各任務的優先級是固定不變的。 μC/OS-II控制下的任務可以分為休眠態、就緒態、運行態、中斷態和掛起態。在嵌入式系統中,為節省存儲器空間不會保留休眠態的任務。當某個任務正在占用CPU的使用權時,該任務處于運行態。處于運行態任務的優先權一定高于其它所有就緒態任務的優先權。當系統運行致使某一就緒態任務優先權高于運行態任務的優先權時,調用調度函數,運行態任務將轉入掛起態等待某一消息或信號量,或者轉入就緒態;而那個擁有較高優先權的任務將占有CPU的使用權而轉為運行態。某一時刻只有個任務占有CPU的使用權,也就是說,某一時刻只有一個任務處于運行狀態。掛起態的任務在所規定的時間內,如果得到所期待的數據(可能是消息陣列,也可能是信號量),就自動轉為就緒態;如果等待超時,就被時間管理函數強制轉化為就緒態,等待任務調度。中斷發生時,系統將強行剝奪運行態任務對CPU的使用權,將它轉入中斷態,保存相關數據到堆棧區之后,執行中斷服務程序。在中斷返回時,系統返回函數將重新進行任務調度,將優先權最高的就緒態任務轉為運行態。 在實際系統中,每個任務都是一個無限循環的,分別實現某一特定的功能,由μC/OS-II內核來進行調度。電力行業中對設備可靠性的要求是很高的。對于監測設備,由于在啟外運行,所受的電力諧波干擾相當大,有時會引起程序跑飛、死機現象,直到看門狗復位可使系統恢復正常;但在看門狗復位這段時間內,設備對電流、電壓的采樣不能正常進行,相關采樣數據就會丟失,直接影響到電能量計算的準確度,同時會影響到數據通信。筆者利用軟件狗的原理設計了一個系統監視任務,用來對其它任務進行監視。在系統運行中,當發現某一個任務運行出現異常時,該任務將按相關步驟做出相應處理。具體做法是:系統監視任務在正常運行情況下處于掛起狀態,在某一時間范圍內,等待每個被監視任務向它發送代表該被監視任務正常運行的消息。每個被監視的任務在運行狀態下向系統監視任務發送這一消息,用以說明本任務運轉正常。系統監視任務等待這一消息的時間范圍按每個任務執行所需時間的最大值設定。系統監視任務在等待時間范圍內收到消息,說明被監視任務運轉正常,否則,系統內核自動將系統監視任務由掛起態轉為就緒態。由于系統監視任務優先權最高,所它將取得CPU使用權,系統監視任務將出錯任務的運行任務堆棧改為該任務的起始地址,并將其置為就緒態,掛起自身。如此,剛才出錯的任務以重新開始執行,避免看門狗復位。 系統運行時,首先進行系統初始化操作,初始化所有數據結構,分別堆棧空間,然后建立任務間通信的信號量或者消息隊列,進行任務建立,并且分配任務優先權。所有新建任務被置為就緒態,系統程序從優先權最高的任務開始執行。 該配電監測終端軟件中,系統監視任務優先權最高,最先進入運行態。該任務分別查詢每一個被監視的任務是否向其發送消息。如果沒有,則該任務進入掛起態。按優先權級別順序,鍵盤掃描和液晶顯示任務將由就緒態轉為運行態。在該任務將要執行完畢時,向系統監視任務發送消息,然后執行延時函數將自身轉為掛起態,交出CPU使用權讓其它任務得以執行。此時系統監視任務得到消息轉為運行態,繼續查詢其它被監視任務的運行消息。如果沒有,則進入掛起態,再次等待其它被監視任務的運行消息,系統按任務優先級繼續執行優先級高的就緒態任務等等,依此類推。當鍵盤掃描和液晶顯示任務延時時間到時,系統內核自動將它再次轉為就緒態。一般鍵盤掃描和液晶顯示任務延時時間按人手觸摸按鍵反應時間而定,大約在100ms。在正常情況下,由于系統監視任務只是查詢消息量,程序執行時間很短,甚至可以忽略,同時鍵盤掃描和液晶顯示任務優先權排在第二。所以,只要鍵盤掃描和液晶顯示任務進入就緒態就可以得到及時響應,能夠很好地滿足鍵盤掃描和液晶顯示的實時性,解決在單任務環境下很難解決的鍵盤查詢處理的實時性問題;同時,數據分析處理任務和通信任務可以在鍵盤掃描和液晶顯示任務延時時間間隔內執行。由于TMS320F206處理器速度足夠快,所有任務得以在滿足時序的前提下順利執行。 當系統響應定時中斷時,中斷程序將占據CPU的使用權進行電流和電壓采樣,設置下一次中斷時間。在退出中斷時,內核將重新進行任務調度。 結語 μC/OS-II是一套優秀的嵌入式實時操作系統。將該操作系統應用于配電監測終端中,大大提高了系統的穩定性和可靠性,提高了產品性能,成功地解決了一系列在單任務環境下不可避免的問題。 參考文獻 1. Labrosse Jean J.邵貝貝 μ C/OS-Ⅱ源碼公開的實時嵌入式操作系統 2001 2. 李剛.林凌.葉文宇 TMS320F206 DSP結構、原理及應用 2002 作者:山東山大電力技術有限公司 歷寶忠 王劍 胡珂 來源:單片機與嵌入式系統應用 2003 (7) |