娇小w搡bbbb搡bbb,《第一次の人妻》,中国成熟妇女毛茸茸,边啃奶头边躁狠狠躁视频免费观看

歷史上的今天

今天是:2024年09月17日(星期二)

2020年09月17日 | 基于ARM9和μC/OSII高速實時多任務數據采集的智能化設計

發布者:花錢123 來源: elecfans關鍵字:ARM9  μC  OSII  高速實時  多任務數據采集 手機看文章 掃描二維碼
隨時隨地手機看文章

引言

隨著IT技術、電子技術、通信技術、以及自動控制技術的飛速發展,對工業現場數據的高速實時采集就成為電子產品和工業控制技術發展不可避免的一個環節。

本文針對高速實時多任務數據采集中的多任務實現算法以及實時性、實效性和高速性的要求,提出了基于ARM9和μC/OSII操作系統的智能化設計方案,實現了任務優先級動態調度、系統工作參數動態設定、系統內部軟件智能化設計,針對低速外圍設備進行了系統優化,并提高了系統可靠性改善了內部任務同步性。


1 整體電路設計

整個采集系統的硬件電路如圖1所示。首先利用多路調制電路對12路信號進行調制,這部分包含相應的信號轉換、抗干擾、以及初步的信號處理等,使得各路采集信號能夠達到ARM9內核對信號采集的要求。經多路選擇和ADC采樣后進入ARM9內核。為了實現對整個系統工作狀態的實時監視、實時控制和實時調節,設置了上位機監視器和現場顯示觸摸屏,將用戶所有要求顯示的信息在上位機顯示輸出或者在現場LCD同步顯示輸出。采樣按照采樣頻段分為高頻段(300~200 ksps)、中頻段(200~100 ksps)、和低頻段(小于100 ksps)3個頻段,每個頻段由4個外部采樣通道組成。ARM9內核與上位機的通信利用UART和RS232轉換電路來實現。系統工作電源由統一的電源供給,在實現電壓轉換后對PC機和ARM9內核以及相應的工作電路提供電源支持。

 基于ARM9和μC/OSII的多頻道數據采集系統的智能化設計

圖1 數據采集系統硬件電路


2 系統總體軟件設計思路

系統的軟件設計原理如圖2所示。12路采集信號經調制電路多路選擇和ADC采樣后進入各個采集任務內部通道。每一路采集通道都設計獨立的數據采集、數據存儲、數據處理以及數據提交任務。也就是說,每一路外部采集通道都對應一個獨立的內部數據通道,而且本通道數據只在本通道內進行存儲、處理和傳遞。各個內部數據通道任務之間只有在系統調度時執行時間上的先后關系、優先級關系,沒有數據耦合關系。

 基于ARM9和μC/OSII的多頻道數據采集系統的智能化設計

 

圖2 系統軟件設計原理圖


命令掃描部分由獨立的上位機和下位機掃描任務完成對上位機監視器和下位機觸摸屏的實時監控,一旦檢測到用戶命令,立即將其發送給命令解析和處理任務,由該任務對用戶命令進行分析處理。命令處理完后將提取的結果發送給用戶要操作的采樣通道,使之按照用戶要求運行。

各個頻段的各個通道采集任務均設置兩個數據緩沖區。雙數據緩沖區為采樣任務順利存儲提供了雙重保證,使得采樣工作一旦結束就有可用緩沖區,就可立即將數據存儲而后進行下一次采集。也使得后續的數據處理任務減少數據等待時間,能迅速得到當前采樣通道需要處理的數據,并在最短的時間內處理發送給下一級任務。


采樣、數據顯示、命令掃描都涉及外圍設備,是整個系統所有任務里面運行速度最慢的,針對采樣任務設置雙數據緩沖區可以很大幅度地改善由于采樣速度慢而造成的系統速率下降問題,顯示和命令掃描部分的優化設計將在下文中詳細說明。


3 內部軟件調度算法

系統內部各個頻段命令如圖3所示。命令掃描函數捕捉到用戶命令后,對用戶命令進行驗證、分析、提取,而后將提取結果以廣播的方式發送至各個頻段的命令等待隊列。該隊列如得到新的命令,將用戶命令發送給本隊列下轄的各個采樣任務函數,用戶命令將立即得到執行,包括通道切換、變換采樣周期、改變當前任務優先級、顯示特定通道數據等。如沒有得到新的命令,等待超時后采樣任務按照原有方式繼續工作。這也是一種智能化設計,以很簡單的方式實現了按照用戶命令隨時對任何通道的查看、監督、操作、工作狀態切換、通道切換、由單通道到所有通道并行實時采集切換等所有功能的任意切換。

 基于ARM9和μC/OSII的多頻道數據采集系統的智能化設計

 

圖3 各個頻段內部命令

 

3.1 任務優先級設置及采樣任務優先級動態調度

μC/OSII操作系統是基于優先級的搶占式操作系統,所有任務必須有各自獨立且唯一的優先級[1]。命令掃描和數據顯示分別設置為最高優先級和最低優先級。掃描函數的最高優先級可以確保隨時對用戶命令進行響應,而顯示任務由于其運行速速慢,將其設置為最低優先級。只要系統設計合理,適當避免低優先級任務的饑餓現象,即可實現將用戶有效信息顯示輸出。

內部優先級設置規則是,低頻段、中頻段、高頻段3個頻段的任務之間優先級依次遞減。低頻段的采樣周期明顯比高頻段長,在低頻段數據采集的空閑時間里系統可以順利地將CPU使用權切換給其他任務,使其他任務得到CPU使用權并執行。每個頻段內部的各個任務的優先級從采樣到數據存儲、數據處理、數據提交依次遞減。


為了使得整個系統實現優先級動態調度也可以修改其他采樣參數,在軟件設計時將所有頻段采樣任務的優先級、采樣周期以全局變量的形式在進入操作系統之前進行設置,并將其定義為volaTIle格式分配獨立的變量存儲地址。而后設立獨立的掃描任務,來專門完成這些參數的判斷、修改、存儲和動態更新。這樣便使得系統除了可以按照根據采樣周期設計的初始化優先級和初始化參數運行外,還可以依據用戶自身需要對各個頻段、各個通道的采樣任務優先級以及采樣頻率進行設置和修改。修改完并確認后,修改任務會保存、更新當前系統工作參數并退出操作系統,而后重新啟動并初始化,整個采集系統將按照全新的狀態開始工作。當然,在這里用戶優先級和采樣周期設置是受限的,必須符合上文提及的優先級規則及各個頻段對采樣周期的要求。


3.2 任務時限設置


為了對整個系統的時間調度進行優化,首先說明幾個內部工作時間。i386體系和Linux2.5內核中操作系統節拍率都設置為1000 Hz[2]。在這里將μC/OSII操作系統調度時間OS_TICKS_PER_SEC也設置為1000,也就是說操作系統的任務調度以ms為單位。ARM9內核CPU工作頻率設置為400 MHz,即CPU機械周期以ns為單位。外設包括上位機命令掃描和上位機、下位機顯示部分工作都以s為單位。μC/OSII系統中任務切換、調度及延時都以系統節拍率為單位,而內部代碼的運行是以機械周期為單位。內部任務時限可以以節拍律為單位,也可以以實時時間為基準,獲得一個絕對時間差。

單個采樣任務通道內部只有采樣任務需要時限設置。為了達到智能化,用消息隊列的等待延時替代了采樣任務時限,而該延時便是本通道的采樣周期。其他的后續任務包括內存開辟、數據處理、數據發送,都依次等待上一級任務消息,受上一級任務鉗制不設置任務時限。顯示任務時限按ms設置為絕對時間差。


3.3 針對外設的時間優化

針對命令掃描和解析任務,將其設置為中斷方式,在檢測到有用戶命令輸入時發生中斷,在中斷里對用戶命令進行解析、分析、提取和處理。在中斷下半部分對命令進行廣播式發布,發布到各個采樣任務函數使其立即刷新執行。因為用戶工作方式改變,命令刷新頻率并不高而且任務量不大,所以完全可以利用中斷的快速處理來實現這種功能。

 基于ARM9和μC/OSII的多頻道數據采集系統的智能化設計

 

圖4 顯示任務工作原理圖


在處理完命令掃描和采樣任務之后,影響整個系統性能的就剩下上位機和下位機顯示部分了。顯示任務工作原理如圖4所示,利用μC/OSII系統提供的消息隊列對顯示部分進行改善。分別建立兩個長度為16的消息隊列和內存塊鏈表,數據提交任務從空閑內存池中得到可用內存塊之后將本任務要顯示的數據存入該內存塊,此時該內存就變成了帶有數據的待顯示數據塊。而后將該內存塊的地址以消息的形式注冊在顯示消息隊列上。消息隊列的長度設置為16,雖然這里只有12個任務會發送消息給消息隊列,但在實時多任務程序中,各個任務的運行是隨機的,消息隊列在一段時間內得到的消息個數是個不定值,所以留出4個空位作為裕度。而且設置初始值為16的計數信號量來保護消息隊列,數據提交任務在提交數據之前先檢測該信號量,如該信號量有效就可以發送信號,如信號量無效則需等待,直到有可用信號位時方可將信號發出。在外部硬件操作端,由外部發送任務將消息隊列中的消息按照固定速率發送到外部信號線上。

這樣設計,消息隊列就相當于一個緩沖區,使得所有提交任務都可以向這個緩沖區發送待顯示數據,有效地避免了多個任務爭用一個外圍設備而引起的死鎖、競爭冒險等問題。同時減少了任務數量,減少了任務切換的次數,充分利用了系統時間,提高了系統性能。

3.4 關鍵區保護

多任務設計中每個任務在任何時刻都可能被其他任務打斷,必須充分考慮代碼的安全性、可重入性、可靠性、饑餓、互鎖、死鎖等情況。[3]

為了避免上述情況,任務間消息發送和傳遞時以及在數據采樣時對相應函數體進行關鍵區保護,在這些函數運行的時候禁止中斷和任務調度,以保證數據傳遞和數據采樣的絕對正確性和系統運行的絕對安全性。


4 極限頻率測定及總結

上位機超級終端接收到的極限頻率測試結果如圖5所示。

 基于ARM9和μC/OSII的多頻道數據采集系統的智能化設計

 

圖5 極限頻率測量結果


分別測試了高頻段、中頻段和低頻段的極限頻率,結果在CPU使用率80%~90%的情況下測定。該系統成功實現了智能化設計和優先級動態調度、系統參數動態設置等功能,達到了設計指標。

關鍵字:ARM9  μC  OSII  高速實時  多任務數據采集 引用地址:基于ARM9和μC/OSII高速實時多任務數據采集的智能化設計

上一篇:基于ARM嵌入式系統的數字音頻播放系統設計
下一篇:基于ARM+FPGA的開發平臺實現了基于CSMA/CA的MAC協議

推薦閱讀

帶方言口音的普通話人工智能能聽懂嗎?在嘈雜的環境中,知道要“聽”哪些聲音而忽視另一些聲音嗎?“聽”到不同表述方式,能夠理解嗎?隨著智能音箱、人機互動家電等應用人工智能的產品進入人們生活,大家對機器“聽”人講話并給出回應已經不陌生。但是,到底怎樣“聽”才算“聽得懂”,卻并無統一標準。不過,這一局面有望改變。解放日報·上觀新聞記者9...
隨著人們對降低油耗和CO2排放量的要求日益提升,市場亟需找到針對性的解決方案。48V技術應運而生并帶來諸多優勢,因為它使眾多僅通過12V系統無法解決的節能措施得以實現。其功能特性包括: 功率大于5kW時,能量回收效率很高 擴張的啟停功能,如緩慢啟動或平滑停止 電氣化單元,如渦輪增壓器和電動助力轉向系統 支持微混型和輕度混合動力解決方案 今天的主...
spi flash W25Q128會偶爾出現寫入錯誤的情況,會發現讀出的值和寫入的值不一致,需加入2次讀出比較判斷。W25QXX_Read(&temp_date_count,0x000000,1); //W25QXX_Write((u8*)&temp_date,0x400000,135); //W25QXX_Read((u8*)&temp_data_test,0x400000,135); W25QXX_Write((u8*)&temp_date,(temp_date_count*135+1),135); W25QXX_Read(...
myPalletizer小象碼垛機械臂由大象機器人和M5stack聯合研發,是繼小象碼垛機械臂、小象協作機械臂之后,大象機器人輕量級產品線的又一力作。小象碼垛機械臂自重僅960g,體積小重量輕但功能強大,既可搭配多種末端執行器適配多種應用場景,也可支持多平臺軟件的二次開發,滿足科研教育、智能家居、個人開發應用等各種場景需求。實現用戶個性化定制,是生產...

史海拾趣

問答坊 | AI 解惑

Make the most of the unlicensed ISM band

Combat interference and achieve better link range for RF transceivers operating in the 915-MHz ISM band. By ShreHarsha Rao, Texas Instruments Due to its unlicensed nature, the 915-MHz U.S. ISM (Industrial, Scientific, and Medi ...…

查看全部問答∨

SM24C02電可擦除只讀存儲器(EEPROM).

SM24C02是一種電可擦除只讀存儲器 (EEPROM),它內含256×8位存儲空間,具有工作電壓寬,擦寫次數多,寫入速度快等特點。可多達8個該器件同時連接到二線制總線,通過SDA(串行數據線)及SCL(串行時鐘線)在連接總線上的器件之間傳送數據,并根據地 ...…

查看全部問答∨

課件:低噪放,功放,射頻鎖相環 設計

[ 本帖最后由 freemanmm 于 2009-3-10 18:50 編輯 ]…

查看全部問答∨

網上熱評“我的大學六年”(大學成就工程師)

本帖最后由 paulhyde 于 2014-9-15 09:05 編輯 我的大學六年 --郭天祥 在哈爾濱工程大學六年,我在學校電子創新實驗室呆了四年,這四年里創新實驗室給我提供了良好的學習環境和完善的實驗設備;在與眾多電子愛好者的交流中,使我學到了更多的專業 ...…

查看全部問答∨

如何改進程序提高工作頻率

我現在編寫了一個數據轉換的程序,但是工作頻率始終不能達到我的要求,我在程序中需要125MHZ的頻率,但是現在只有82MHZ,我現在把程序列出來,希望大家給點改進意見。 我說一下程序的大概意思吧:將連續輸入的24個24bit寬的數據重排,將24個數據分 ...…

查看全部問答∨

帶IPOD功能的接口電路

各位大俠:      鄙人在做一個帶接IPOD功能的音響,可是不知道這個電路怎樣設計?請知道的同行給我提供下,非常急,謝謝,知道的話可以發到我的油箱:zouhaunming@163.com…

查看全部問答∨

基于虛擬儀器技術的柴油機噴油器故障診斷研究

基于虛擬儀器技術的柴油機噴油器故障診斷研究…

查看全部問答∨

h.264 解碼器

本人現在正在研究H.264解碼器的verilog 代碼,源代碼是從網上下的qcif分辨率,baseline的解碼器,csnd中已經有人上傳過,我現在要把解碼器改成cif分辨率,把代碼修改之后只能解碼一部分數據,其他都是不定態,哪位高手也是研究這方面的,能給指點一 ...…

查看全部問答∨

str711地址問題

菜鳥提問,希望得到幫助!! 最近剛使用STR711,看了DATASHEET和相關例程,收獲不少,但是還是有些疑問: 將str711設置為內部FLASH啟動,也就是說將FLASH的地址映射到0x0,那么當運用程序讀FLASH的地址為什么要使用0x4****x,而不是0;寫的 ...…

查看全部問答∨

怎么使用uip源代碼?

在網上下載的uip源代碼。不知道怎么移植實現TCP/IP實現協議棧。 有沒有哪位大哥用過?可以具體的講講怎么移植的嗎?…

查看全部問答∨
小廣播
設計資源 培訓 開發板 精華推薦

最新單片機文章
何立民專欄 單片機及嵌入式寶典

北京航空航天大學教授,20余年來致力于單片機與嵌入式系統推廣工作。

 
EEWorld訂閱號

 
EEWorld服務號

 
汽車開發圈

 
機器人開發圈

電子工程世界版權所有 京ICP證060456號 京ICP備10001474號-1 電信業務審批[2006]字第258號函 京公網安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 左云县| 修文县| 滦南县| 永新县| 兴安县| 贵港市| 中超| 日喀则市| 富顺县| 瑞昌市| 双辽市| 陇南市| 泰宁县| 桐城市| 永宁县| 旬阳县| 南昌县| 凤台县| 通渭县| 西乌珠穆沁旗| 昭平县| 绍兴县| 尖扎县| 海口市| 友谊县| 淳化县| 松阳县| 广河县| 鱼台县| 久治县| 永年县| 滨海县| 芦山县| 庆安县| 三明市| 岐山县| 满城县| 临漳县| 丰城市| 湖南省| 罗甸县|