專利名稱:一種基于ARM9和μC/OSII的多頻道數據采集系統(tǒng)的制作方法
技術領域:
本發(fā)明涉及一種數據采集系統(tǒng),尤其涉及一種基于ARM9和μ C/0SII的多頻道數據采集系統(tǒng),屬于數據采集技術領域。
背景技術:
隨著IT技術、電子技術、通信技術、以及自動控制技術的飛速發(fā)展,對工業(yè)現(xiàn)場數據的高速實時采集就成為電子產品和工業(yè)控制技術發(fā)展不可避免的一個環(huán)節(jié)。針對高速實時多任務數據采集中的多任務實現(xiàn)算法以及實時性、實效性和高速性的要求,提出了基于ARM9和μ C/0SII操作系統(tǒng)的智能化設計方案,實現(xiàn)了任務優(yōu)先級動態(tài)調度、系統(tǒng)工作參數動態(tài)設定、系統(tǒng)內部軟件智能化設計,針對低速外圍設備進行了系統(tǒng)優(yōu)化,并提高了系統(tǒng)可靠性改善了內部任務同步性。
發(fā)明內容
本發(fā)明為解決上述技術問題提供了一種基于ARM9和μ C/0SII的多頻道數據采集系統(tǒng),實現(xiàn)了任務優(yōu)先級動態(tài)調度、系統(tǒng)工作參數動態(tài)設定、系統(tǒng)內部軟件智能化設計,針對低速外圍設備進行了系統(tǒng)優(yōu)化,并提高了系統(tǒng)可靠性改善了內部任務同步性。本發(fā)明為實現(xiàn)上述目的,采用如下技術方案:一種基于ARM9和μ C/0SII的多頻道數據采集系統(tǒng),包括上位PC監(jiān)視模塊、電源模塊、RS232模塊、通用異步收發(fā)裝置UART模塊、電壓轉換模塊、LCD工作現(xiàn)場信息顯示模塊、ARM9內核模塊、模數轉換器ADC模塊、多路選擇模塊、12路信號調制模塊,電源模塊的輸出端分別連接上位PC監(jiān)視模塊和電壓轉換模塊的輸入端,電壓轉換模塊的輸出端分別連接通用異步收發(fā)裝置UART模塊和ARM9內核模塊的輸入端,ARM9內核模塊的輸出端分別連接LCD工作現(xiàn)場信息顯示模塊和通用異步收發(fā)裝置UART模塊的輸入端,通用異步收發(fā)裝置UART模塊通過RS232模塊與上位PC機監(jiān)視模塊連接,12路信號調制模塊依次連接多路選擇模塊、模數轉換器ADC模塊和ARM9內核模塊。本發(fā)明的有益效果是:本發(fā)明中的系統(tǒng),實現(xiàn)了任務優(yōu)先級動態(tài)調度、系統(tǒng)工作參數動態(tài)設定、系統(tǒng)內部軟件智能化設計,針對低速外圍設備進行了系統(tǒng)優(yōu)化,并提高了系統(tǒng)可靠性改善了內部任務同步性。
圖1為數據采集系統(tǒng)硬件電路原理圖;圖2為系統(tǒng)軟件設計原理圖;圖3為各個頻段內部命令結構框圖;圖4為顯示任務工作原理圖。
具體實施例方式下面結合附圖對發(fā)明的技術方案實現(xiàn)方法進行說明:如圖1所示,一種基于ARM9和μ C/OSII的多頻道數據采集系統(tǒng),包括上位PC監(jiān)視模塊、電源模塊、RS232模塊、通用異步收發(fā)裝置UART模塊、電壓轉換模塊、LCD工作現(xiàn)場信息顯示模塊、ARM9內核模塊、模數轉換器ADC模塊、多路選擇模塊、12路信號調制模塊,電源模塊的輸出端分別連接上位PC監(jiān)視模塊和電壓轉換模塊的輸入端,電壓轉換模塊的輸出端分別連接通用異步收發(fā)裝置UART模塊和ARM9內核模塊的輸入端,ARM9內核模塊的輸出端分別連接LCD工作現(xiàn)場信息顯示模塊和通用異步收發(fā)裝置UART模塊的輸入端,通用異步收發(fā)裝置UART模塊通過RS232模塊與上位PC機監(jiān)視模塊連接,12路信號調制模塊依次連接多路選擇模塊、模數轉換器ADC模塊和ARM9內核模塊。首先利用多路調制電路對12路信號進行調制,這部分包含相應的信號轉換、抗干擾、以及初步的信號處理等,使得各路采集信號能夠達到ARM9內核對信號采集的要求。經多路選擇和ADC采樣后進入ARM9內核。為了實現(xiàn)對整個系統(tǒng)工作狀態(tài)的實時監(jiān)視、實時控制和實時調節(jié),設置了上位機監(jiān)視器和現(xiàn)場顯示觸摸屏,將用戶所有要求顯示的信息在上位機顯示輸出或者在現(xiàn)場LCD同步顯示輸出。采樣按照采樣頻段分為高頻段(300 200ksps)、中頻段(200 IOOksps)、和低頻段(小于IOOksps) 3個頻段,每個頻段由4個外部采樣通道組成。ARM9內核與上位機的通信利用UART和RS232轉換電路來實現(xiàn)。系統(tǒng)工作電源由統(tǒng)一的電源供給,在實現(xiàn)電壓轉換后對PC機和ARM9內核以及相應的工作電路提供電源支持。系統(tǒng)的軟件設計原理如圖2所示,12路采集信號經調制電路多路選擇和ADC采樣后進入各個采集任務內部通道。每一路采集通道都設計獨立的數據采集、數據存儲、數據處理以及數據提交任務。也就是說,每一路外部采集通道都對應一個獨立的內部數據通道,而且本通道數據只在本通道內進行存儲、處理和傳遞。各個內部數據通道任務之間只有在系統(tǒng)調度時執(zhí)行時間上的先后關系、優(yōu)先級關系,沒有數據耦合關系。命令掃描部分由獨立的上位機和下位機掃描任務完成對上位機監(jiān)視器和下位機觸摸屏的實時監(jiān)控,一旦檢測到用戶命令,立即將其發(fā)送給命令解析和處理任務,由該任務對用戶命令進行分析處理。命令處理完后將提取的結果發(fā)送給用戶要操作的采樣通道,使之按照用戶要求運行。各個頻段的各個通道采集任務均設置兩個數據緩沖區(qū)。雙數據緩沖區(qū)為采樣任務順利存儲提供了雙重保證,使得采樣工作一旦結束就有可用緩沖區(qū),就可立即將數據存儲而后進行下一次采集。也使得后續(xù)的數據處理任務減少數據等待時間,能迅速得到當前采樣通道需要處理的數據,并在最短的時間內處理發(fā)送給下一級任務。采樣、數據顯示、命令掃描都涉及外圍設備,是整個系統(tǒng)所有任務里面運行速度最慢的,針對采樣任務設置雙數據緩沖區(qū)可以很大幅度地改善由于采樣速度慢而造成的系統(tǒng)速率下降問題,顯示和命令掃描部分的優(yōu)化設計將在下文中詳細說明。系統(tǒng)內部各個頻段命令如圖3所示,命令掃描函數捕捉到用戶命令后,對用戶命令進行驗證、分析、提取,而后將提取結果以廣播的方式發(fā)送至各個頻段的命令等待隊列。該隊列如得到新的命令,將用戶命令發(fā)送給本隊列下轄的各個采樣任務函數,用戶命令將立即得到執(zhí)行,包括通道切換、變換采樣周期、改變當前任務優(yōu)先級、顯示特定通道數據等。如沒有得到新的命令,等待超時后采樣任務按照原有方式繼續(xù)工作。這也是一種智能化設計,以很簡單的方式實現(xiàn)了按照用戶命令隨時對任何通道的查看、監(jiān)督、操作、工作狀態(tài)切換、通道切換、由單通道到所有通道并行實時采集切換等所有功能的任意切換。μ C/0SII操作系統(tǒng)是基于優(yōu)先級的搶占式操作系統(tǒng),所有任務必須有各自獨立且唯一的優(yōu)先級[I]。命令掃描和數據顯示分別設置為最高優(yōu)先級和最低優(yōu)先級。掃描函數的最高優(yōu)先級可以確保隨時對用戶命令進行響應,而顯示任務由于其運行速速慢,將其設置為最低優(yōu)先級。只要系統(tǒng)設計合理,適當避免低優(yōu)先級任務的饑餓現(xiàn)象,即可實現(xiàn)將用戶有效信息顯示輸出。內部優(yōu)先級設置規(guī)則是,低頻段、中頻段、高頻段3個頻段的任務之間優(yōu)先級依次遞減。低頻段的采樣周期明顯比高頻段長,在低頻段數據采集的空閑時間里系統(tǒng)可以順利地將CPU使用權切換給其他任務,使其他任務得到CPU使用權并執(zhí)行。每個頻段內部的各個任務的優(yōu)先級從采樣到數據存儲、數據處理、數據提交依次遞減。為了使得整個系統(tǒng)實現(xiàn)優(yōu)先級動態(tài)調度也可以修改其他采樣參數,在軟件設計時將所有頻段采樣任務的優(yōu)先級、采樣周期以全局變量的形式在進入操作系統(tǒng)之前進行設置,并將其定義為VOlaTIle格式分配獨立的變量存儲地址。而后設立獨立的掃描任務,來專門完成這些參數的判斷、修改、存儲和動態(tài)更新。這樣便使得系統(tǒng)除了可以按照根據采樣周期設計的初始化優(yōu)先級和初始化參數運行外,還可以依據用戶自身需要對各個頻段、各個通道的采樣任務優(yōu)先級以及采樣頻率進行設置和修改。修改完并確認后,修改任務會保存、更新當前系統(tǒng)工作參數并退出操作系統(tǒng),而后重新啟動并初始化,整個采集系統(tǒng)將按照全新的狀態(tài)開始工作。當然,在這里用戶優(yōu)先級和采樣周期設置是受限的,必須符合上文提及的優(yōu)先級規(guī)則及各個頻段對采樣周期的要求。為了對整個系統(tǒng)的時間調度進行優(yōu)化,首先說明幾個內部工作時間。i386體系和Linux2.5內核中操作系統(tǒng)節(jié)拍率都設置為1000Hz[2]。在這里將μ C/0SII操作系統(tǒng)調度時間OS_TICKS_PER_SEC也設置為1000,也就是說操作系統(tǒng)的任務調度以ms為單位。ARM9內核CPUT作頻率設置為400MHz,即CPU機械周期以ns為單位。外設包括上位機命令掃描和上位機、下位機顯示部分工作都以s為單位。μ C/0SII系統(tǒng)中任務切換、調度及延時都以系統(tǒng)節(jié)拍率為單位,而內部代碼的運行是以機械周期為單位。內部任務時限可以以節(jié)拍律為單位,也可以以實時時間為基準,獲得一個絕對時間差。單個采樣任務通道內部只有采樣任務需要時限設置。為了達到智能化,用消息隊列的等待延時替代了采樣任務時限,而該延時便是本通道的采樣周期。其他的后續(xù)任務包括內存開辟、數據處理、數據發(fā)送,都依次等待上一級任務消息,受上一級任務鉗制不設置任務時限。顯示任務時限按ms設置為絕對時間差。針對命令掃描和解析任務,將其設置為中斷方式,在檢測到有用戶命令輸入時發(fā)生中斷,在中斷里對用戶命令進行解析、分析、提取和處理。在中斷下半部分對命令進行廣播式發(fā)布,發(fā)布到各個采樣任務函數使其立即刷新執(zhí)行。因為用戶工作方式改變,命令刷新頻率并不高而且任務量不大,所以完全可以利用中斷的快速處理來實現(xiàn)這種功能。在處理完命令掃描和采樣任務之后,影響整個系統(tǒng)性能的就剩下上位機和下位機顯示部分了。顯示任務工作原理如圖4所示,利用yC/OSII系統(tǒng)提供的消息隊列對顯示部分進行改善。分別建立兩個長度為16的消息隊列和內存塊鏈表,數據提交任務從空閑內存池中得到可用內存塊之后將本任務要顯示的數據存入該內存塊,此時該內存就變成了帶有數據的待顯示數據塊。而后將該內存塊的地址以消息的形式注冊在顯示消息隊列上。消息隊列的長度設置為16,雖然這里只有12個任務會發(fā)送消息給消息隊列,但在實時多任務程序中,各個任務的運行是隨機的,消息隊列在一段時間內得到的消息個數是個不定值,所以留出4個空位作為裕度。而且設置初始值為16的計數信號量來保護消息隊列,數據提交任務在提交數據之前先檢測該信號量,如該信號量有效就可以發(fā)送信號,如信號量無效則需等待,直到有可用信號位時方可將信號發(fā)出。在外部硬件操作端,由外部發(fā)送任務將消息隊列中的消息按照固定速率發(fā)送到外部信號線上。這樣設計,消息隊列就相當于一個緩沖區(qū),使得所有提交任務都可以向這個緩沖區(qū)發(fā)送待顯示數據,有效地避免了多個任務爭用一個外圍設備而引起的死鎖、競爭冒險等問題。同時減少了任務數量,減少了任務切換的次數,充分利用了系統(tǒng)時間,提高了系統(tǒng)性倉泛。多任務設計中每個任務在任何時刻都可能被其他任務打斷,必須充分考慮代碼的安全性、可重入性、可靠性、饑餓、互鎖、死鎖等情況。[3]為了避免上述情況,任務間消息發(fā)送和傳遞時以及在數據采樣時對相應函數體進行關鍵區(qū)保護,在這些函數運行的時候禁止中斷和任務調度,以保證數據傳遞和數據采樣的絕對正確性和系統(tǒng)運行的絕對安全性。
權利要求
1.一種基于ARM9和μ C/OSII的多頻道數據采集系統(tǒng),其特征在于,包括上位PC監(jiān)視模塊、電源模塊、RS232模塊、通用異步收發(fā)裝置UART模塊、電壓轉換模塊、LCD工作現(xiàn)場信息顯示模塊、ARM9內核模塊、模數轉換器ADC模塊、多路選擇模塊、12路信號調制模塊,電源模塊的輸出端分別連接上位PC監(jiān)視模塊和電壓轉換模塊的輸入端,電壓轉換模塊的輸出端分別連接通用異步收發(fā)裝置UART模塊和ARM9內核模塊的輸入端,ARM9內核模塊的輸出端分別連接LCD工作現(xiàn)場信息顯示模塊和通用異步收發(fā)裝置UART模塊的輸入端,通用異步收發(fā)裝置UART模塊通過RS232模塊與上位PC機監(jiān)視模塊連接,12路信號調制模塊依次連接多路選擇模塊、模數轉換器ADC模塊和ARM9內核模塊。
全文摘要
本發(fā)明公布了一種基于ARM9和μC/OSII的多頻道數據采集系統(tǒng),包括上位PC監(jiān)視模塊、電源模塊、RS232模塊、通用異步收發(fā)裝置UART模塊、電壓轉換模塊、LCD工作現(xiàn)場信息顯示模塊、ARM9內核模塊、模數轉換器ADC模塊、多路選擇模塊、12路信號調制模塊,多路調制電路對12路信號進行調制,經多路選擇和ADC采樣后進入ARM9內核,用戶信息在上位機顯示輸出或者在現(xiàn)場LCD同步顯示輸出。所述ARM9內核與上位機通過UART和RS232轉換電路實現(xiàn)通信。該系統(tǒng)實現(xiàn)智能化設計和優(yōu)先級動態(tài)調度、系統(tǒng)參數動態(tài)設置功能。
文檔編號G06F13/38GK103092792SQ20111033879
公開日2013年5月8日 申請日期2011年11月1日 優(yōu)先權日2011年11月1日
發(fā)明者呂曉威 申請人:呂曉威