基于μc/OS-II的多傳感器測控系統研究
3 軟件設計
本文引用地址:http://dyxdggzs.com/article/266073.htm3.1 系統任務(wù)分配
為了充分發(fā)揮操作系統在任務(wù)調度、任務(wù)管理、任務(wù)通信、時(shí)間管理和內存管理等方面的優(yōu)勢,首先必須根據需要實(shí)現的功能,合理的劃分任務(wù)和分配任務(wù)的優(yōu)先級。按溫濕度測控系統所要求實(shí)現的功能,將整個(gè)系統劃分為并行存在的任務(wù)層和中斷程序。μC/OS-II嵌入式實(shí)時(shí)操作系統中的任務(wù)狀態(tài)轉換如圖2所示。

圖2 μC/OS-II任務(wù)狀態(tài)轉換示意圖
多任務(wù)系統在運行時(shí)每個(gè)任務(wù)好像獨立占用CPU一樣,因此系統必須為每個(gè)任務(wù)開(kāi)辟一塊內存空間作為該任務(wù)的任務(wù)堆棧。該堆棧的作用是保存任務(wù)被切換前時(shí)CPU各寄存器的值以及系統堆棧的數據。在進(jìn)行任務(wù)切換時(shí)需要完成工作的主要步驟如下:①將當前任務(wù)CPU所有的寄存器壓棧;②將CPU系統堆棧的數據全部拷貝到當前任務(wù)的任務(wù)堆棧中;③ 得到下一個(gè)處于運行態(tài)優(yōu)先級最高的任務(wù)的任務(wù)堆棧的指針;④ 恢復下一個(gè)任務(wù)的CPU寄存器的值;⑤ 恢復下一個(gè)任務(wù)的系統堆棧中的數據;⑥ 通過(guò)中斷返回指令或函數返回指令,間接修改PC寄存器的值來(lái)進(jìn)行任務(wù)切換。在為μC/OS-II編寫(xiě)任務(wù)切換代碼時(shí)需要注意的是:μC/OS-II在每次發(fā)生中斷后都會(huì )產(chǎn)生任務(wù)調度,但在中斷結束后進(jìn)行的任務(wù)切換,不能調用普通任務(wù)切換函數,這是因為在中斷過(guò)程中往往伴隨將CPU的狀態(tài)寄存器壓棧操作。
任務(wù)切換方法:凌陽(yáng)SPACE061A單片機有R1-R5 五個(gè)通用寄存器,還有1個(gè)SR(CPU狀態(tài)寄存器),再加上PC,總共有7個(gè)CPU內部寄存器在任務(wù)切換時(shí)需要保存。μC/OS-II系統調用OSCtxSw( )來(lái)實(shí)現任務(wù)的切換。系統中并行存在的幾個(gè)任務(wù)按優(yōu)先級從高到低依次是:系統監視任務(wù)、數據采集任務(wù)、數據處理任務(wù)、數據輸出任務(wù)、顯示任務(wù)。在實(shí)際系統中,每個(gè)任務(wù)都是無(wú)限循環(huán)的,分別實(shí)現某一特定的功能,由μC/OS-II內核來(lái)進(jìn)行調度。系統監視任務(wù)主要完成系統可靠性的監管;數據采集任務(wù)主要完成溫度濕度氧濃度的檢測和A/D轉換;數據處理任務(wù)主要完成采集數據和設定數據的比較判定;數據輸出任務(wù)主要完成數據輸出給LCD、通過(guò)RS232傳輸給主機、以及輸出控制信號給繼電器電路,完成通風(fēng)、加熱、加濕等功能;顯示任務(wù)主要完成溫度濕度氧濃度參數的顯示。系統主程序任務(wù)流程圖如圖3所示。

圖3 系統主程序任務(wù)流程圖
3.2 μc/OS-II的移植
μC/OS-II是一種專(zhuān)門(mén)為微控制器設計的搶占式實(shí)時(shí)多任務(wù)操作系統,它以源代碼的形式給出。其內核主要提供進(jìn)程管理、時(shí)間管理、內存管理等服務(wù)。系統最多支持56個(gè)任務(wù),每個(gè)任務(wù)均有一個(gè)獨有的優(yōu)先級。由于其內核為搶先式,所以總是處于運行態(tài)最高優(yōu)先級的任務(wù)占用CPU。系統提供了豐富的API函數,實(shí)現進(jìn)程之間的通信以及進(jìn)程狀態(tài)的轉化。
μC/OS-II的軟件體系結構如圖4所示。從圖4中可以看到,如果要使用μC/OS-II, 必須為其編寫(xiě)OS_CPU.H、OS_CPU_C.C、OS_CPU_A.ASM三個(gè)文件。這三個(gè)文件是與芯片的硬件特性有關(guān)的,它們主要提供任務(wù)切換與系統時(shí)鐘的功能。其它文件用C寫(xiě)成,它們?yōu)橄到y提供任務(wù)管理、任務(wù)之間通信、時(shí)間管理以及內存管理等功能。

圖4 μC/OS-II 軟件體系結構示意圖
μC/OS-II系統時(shí)鐘:以凌陽(yáng)SPCE061A單片機的TMB2時(shí)基信號作為系統時(shí)鐘,每經(jīng)歷一個(gè)時(shí)鐘節拍的時(shí)間將產(chǎn)生一次中斷,在中斷服務(wù)子程序中會(huì )調用OSTickISR()函數。
移植工作的主要內容:用#define 設置一個(gè)常量值(OS_CPU.H);聲明10個(gè)數據類(lèi)型(OS_CPU.H); 用#define 聲明3個(gè)宏(OS_CPU.H);用C語(yǔ)言編寫(xiě)6個(gè)簡(jiǎn)單的函數(OS_CPU_C.C);編寫(xiě)4個(gè)匯編語(yǔ)言函數(OS_CPU_A.ASM)。
4 結論
μC/OS-II RTOS是當今嵌入式應用的熱點(diǎn)之一,應用RTOS提高了測控系統系統的可靠性、實(shí)時(shí)性,降低了研發(fā)周期。本文基于μC/OS-II構建的測控系統應用在漯河農業(yè)局2000萬(wàn)公斤紅薯儲藏保鮮工程項目中,完全達到了設計的控制指標:溫度10-14℃±0.5℃ ,濕度80—95%RH±2%,氧濃度≮4.5%。降低了紅薯因為溫度濕度氧濃度不正常造成的變質(zhì),完好率100%,與不使用本系統的倉儲對比減少損耗25%,約500萬(wàn)公斤,直接經(jīng)濟效益500多萬(wàn)元,同時(shí)也取得了較好的社會(huì )效益。另外,該系統具有較好的可擴展性,很容易擴展到其它對溫度、濕度或者氧濃度有一定要求的領(lǐng)域。經(jīng)試驗,溫度測定范圍可以達到-20-85℃±0.5℃;濕度20—98%RH±2%;氧濃度≮1.5%。所以,該測控系統具有較廣的應用前景。
本文創(chuàng )新點(diǎn):采用高性能SPCE061A單片機和高精度溫度傳感器、濕度傳感器和氧濃度傳感器,通過(guò)移植μC/OS-II多任務(wù)實(shí)時(shí)操作系統,構建了高精度、高可靠性的多傳感器嵌入式測控系統。實(shí)際工程應用表明,系統擴展性好、測控精度高、性能穩定。
傳感器相關(guān)文章:傳感器工作原理
風(fēng)速傳感器相關(guān)文章:風(fēng)速傳感器原理 電容傳感器相關(guān)文章:電容傳感器原理 土壤濕度傳感器相關(guān)文章:土壤濕度傳感器原理
評論