C /OS- II和CORTEX- M3單片機在電磁流量計中的應用
摘要: 為了提高電磁流量計的流量檢測和數據處理的實時性, 設計了基于實時嵌入式操作系統..C /OS- II和以新型CORTEX - M 3內核單片機為控制器的電磁流量計。通過實時多任務的軟件程序設計, 實現了數據采集、處理、人機交互等復雜功能, 并提高了儀表系統的實時性、穩定性與可靠性。
關鍵詞: ..C /OS- II; CORTEX- M 3; 電磁流量計
1.. 以CORTEX-M3單片機為核心的系統原理設計
1. 1.. 系統總體硬件設計方案及原理
電磁流量計測量原理框圖如圖1所示。單片機控制勵磁激勵模塊輸出勵磁電流, 勵磁電流通過電磁流量計傳感器的勵磁線圈后產生了磁場, 當流體流過傳感器產生的磁場時, 產生了反映流速的感應電動勢信號; 流速信號經過去噪放大后, 經電壓/頻率的模數轉換, 由單片機進行采集、處理, 最后顯示在液晶屏上。圖1.. 電磁流量計功能模塊示意圖整個硬件電路主要由以下5部分組成:
1) 開關電源。提供3. 3V 數字電源(提供單片機和數字芯片電源), 5V 電源, 20V 電源用于電流輸出; 模擬地和數字地通過單點接地。
2) 勵磁激勵輸出模塊。產生低頻矩形波勵磁, 輸出固定激勵電流到傳感器勵磁線圈, 產生測量流速的磁場。
3) 模擬信號采集處理模塊。采集反映流速的電壓信號, 差分去噪, 放大濾波, 經過V /F (電壓/頻率) 轉換芯片AD7741轉換成一定頻率的脈沖信號, 由單片機對脈沖信號進行脈沖計數, 測算脈沖頻率。
4) 人機交互模塊。包括19264 點陣液晶和四個觸摸鍵, 實時顯示測量數據, 提供設置儀表參數的人機接口。
5) 以STM 32F103VC 單片機為核心的數字信號處理模塊, 對整個儀表的運行進行控制。
1. 2.. CORTEX - M3單片機的特點
系統選用了STM32F103VC 作為電磁流量計的微控制器, 是意法半導體公司生產的一款基于CORTEX - M3內核的單片機。ARM V7架構的ARM Co rtexM 系列為成本控制和微處理器應用提供優化, 是基于
ARM v7- M 架構的款ARM 處理器??梢栽趯δ芎统杀久舾械那度胧綉弥袑崿F較高的系統性能, 從而大大簡化了可編程性, 使ARM 架構成為各種應用方案( 即使是的方案) 的上佳選擇。STM32F103VC 單片機支持硬件乘法和硬件除法, 能顯著提高電磁流量計的數據處理速度, 提高流量測量實時性和反應能力。
2.. ..C /OS- II在電磁流量計中的應用
2. 1.. ..C /OS- II簡介
C /OS- II是一個源代碼公開、可移植、可固化、可剪裁的占先式實時多任務內核, 具備現代操作系統的特點, 可用于8 位、16 位和32 位單片機、ARM 或DSP。..C /OS- II的特點有: 源代碼公開; 已經被移植到多種不同架構的微處理器上; 可固化性; 可裁剪, 用戶程序可以只編譯自己需要的功能, 不用編譯不需要的功能; 可剝奪, 服務的執行時間具有確定性; 每個任務都有自己單獨的棧; 提供很多服務系統, 具有對任務運行進行協調的能力; 中斷可以使正在執行的任務暫時掛起; 具有穩定性和可靠性。
2. 2.. ..C /OS- II在電磁流量計中應用的優點
( 1) 提高電磁流量計數據采集和處理部分功能的實時性。本系統的電磁流量計只采用了一片STM32F103VC 單片機, 單片機的處理任務既包括實時性要求非常高的信號激勵和采集任務, 還包括實時性要求相對低一些的數據處理和4~ 20mA 輸出任務, 還有實時性要求的液晶顯示和按鍵響應任務。應用..C /OS- II可以使數據采集和處理的功能得到優先執行, 使單片機軟件資源分配更加合理。
( 2) 相比不帶操作系統的前后臺程序系統, 提高了軟件系統的整體實時性。不應用操作系統的嵌入式程序叫做前后臺系統, 即應用程序是一個無限循環, 循環中調用相應的函數完成相應的操作, 這部分可以看成后臺行為; 中斷服務程序處理異步事件, 這部分可以看成前臺行為。如果采用前后臺系統, 實時性要求的信號激勵和采集任務可以放在中斷中進行, 而其余軟件任務都放在后臺程序中一次運行, 數據處理和4~ 20mA輸出任務的實時性會受到慢速的液晶顯示任務的影響, 液晶顯示刷新一次, 最多需要10ms, 數據處理任務有可能被液晶顯示任務拖延10m s。而在操作系統管理下, 儀表在執行液晶顯示任務時, 如果突然有數據處理需要, 數據處理任務可以搶占CPU, 優*行數據處理后再繼續運行液晶顯示任務, 從而提高了儀表軟件的整體實時性。
( 3) 優化軟件系統的結構, 減少各軟件模塊之間的耦合度, 便于程序的維護升級。在前后臺系統中, 程序的耦合度大, 特別是在后臺的無限循環程序中, 不同功能的程序模塊互相耦合, 給程序的修改和維護增加了難度, 往往程序的某一處修改, 會導致整個系統運行變化, 牽一發而動全身。應用了操作系統后, 程序按功能、硬件關聯性以及實時性要求被分割成不同的任務, 修改其中某個任務不會影響到程序系統中的其余部分, 簡化程序的調試、升級和維護。
( 4) 從程序員的角度看, 應用..C /OS- II可以簡化編程環境, 并且幫助程序員有效地使用硬件。..C / OS- II直接作用在硬件之上, 為應用軟件提供硬件接口, 使應用軟件不需要了解硬件的底層實現, 通過調用系統服務, 即可控制硬件。
2. 3.. ..C /OS- II在CORTEX - M3單片機中的移植
C /OS- II的代碼大部分是用C 語言編寫的, 但是根據應用的單片機不同, 需要用C 語言和匯編語言編寫一些與處理器硬件相關的代碼。M icri..m公司已經完成了把..C /OS- II移植到CORTEX- M3單片機的工作, 可以從網站上下載移植完畢的程序包, 隨后對操作系統進行配置, 設置操作系統節拍, 裁剪操作系統, 去除不需要的操作系統服務, 如消息郵箱, 消息隊列, 內存管理等。
C /OS- II在設計時已經充分考慮了可移植性, 所以移植較為簡單, 主要編寫OS _CPU. H, OS _CPU _ C. C, OS _CPU _A. ASM, OS _DBG. C 這四個文件的代碼。OS_CPU. H 中包含了涉及處理器和相關應用上的常量, 宏, 函數的定義。OS_CPU _C. C 中包含任務堆棧的初始化函數, 一些按照特殊需要擴展操作系統功能的函數。OS_CPU _A. ASM 中包含了需要用匯編語言編寫的與處理器相關的函數, 如觸發PendSV 中斷, 任務切換, PendSV的中斷處理。OS_DBG. C 是與系統調試相關的代碼。
3.. 基于..C /OS- II的電磁流量計軟件設計
在編寫基于..C /OS- II的程序時, 需要對程序進行分層, 盡量做到把與硬件有關的程序和與硬件無關的程序分開, 分別稱為硬件層和應用層。硬件層為單片機和相關外設的驅動函數, 應用層與下層硬件無關。本程序中硬件層的程序包括: 單片機片內外設的配置驅動程序、液晶驅動程序、按鍵驅動程序、AD420驅動程序、AD采集驅動程序。應用層的程序包括: 液晶人機界面程序、數據處理程序、信號激勵程序、信號采集程序。
3. 1.. ..C /OS- II的任務設計
首先需要理解..C /OS- II在STM32F103VC 單片
機上實現任務調度的方法。任務調度的時機包括: 創建或者刪除任務、掛起或者恢復任務、改變任務優先級; 任務主動使用OST imeD ly 函數延時的時候; 發送(或者等待)信號量、郵箱、消息的時候; 中斷函數返回的時候。當發生任務切換時, 系統置位PENDSV 軟中斷, 單片機在進入中斷時, 自動把寄存器xPSR, PC, LR, R12和R0~ R3壓入堆棧。進入PENDSV 中斷后, 程序保存除PSP以外的其余寄存器, 把PSP保存在任務控制塊OSTCB的個數據中。找出就緒狀態的優先級任務, 把該任務中的任務堆棧指針賦給系統堆棧PSP, 任務堆棧中寄存器全部出棧, 從而實現任務切換。在理解了任務調度原理和時機之后, 把電磁流量計的軟件功能劃分成若干個任務。任務劃分的首要目標是滿足系統實時性指標, 任務數目必須合理。本文中任務的劃分是以任務實現的功能為標準的, 任務的功能不同, 其實時性要求也不同。模擬信號采集功能作為一個任務, 它的實時性要求; 數據處理程序也被包裝成一個任務, 實時性要求為其次; 再次是4~ 20mA 輸出部分的任務; 最后是人機交互任務。電磁流量計的軟件系統中, 信號激勵程序的實時性要求非常高, 并且這部分程序的執行語句較少, 運行時間短, 與工頻信號同步; 工頻信號由外部中斷檢測, 故把這部分程序放在中斷中運行。4個主要任務的程序框圖如圖2所示。圖2.. 任務流程圖任務1: 系統引導任務。程序啟動后建立的個任務, 進行一些硬件初始化工作, 創建其余任務, 最后刪除自身。任務2: 模擬信號采集任務。實時性要求, 設為優先級2。當需要采集液位信號時, 在中斷服務程序中向模擬信號采集任務發信號量, 退出中斷后, 立即進行任務切換, 運行模擬信號采集任務。任務3: 數據處理任務。實時性要求相對較低, 設為優先級3。當一個采集周期結束后, 由中斷服務程序向數據處理任務發送信號量, 當中斷服務程序退出后, 等待信號量的數據處理任務進入就緒狀態, 進行任務調度, 數據處理任務開始執行。任務4: 4~ 20mA 電流輸出任務。需要等待數據處理任務處理完數據, 獲取數據處理完成信號量后執行電流輸出程序, 設優先級為4。任務5: 人機交互任務。包括液晶顯示和按鍵處理, 實時性要求, 設為優先級5。當其余任務都處在掛起狀態時, 人機交互任務開始執行, 不斷刷新屏幕顯示。
3. 2.. 基于..C /OS- II的中斷服務程序設計
C /OS- II系統管理下的中斷服務程序的執行流程如下: 進入中斷后, 除了保護現場之外, 還需要調用.. 進入中斷..服務程序, 用來通知實時操作系統, 使操作系統掌握當前中斷的嵌套層數; 接著運行中斷服務功能代碼, 實現與任務的通信, 在退出中斷時必須執行操作系統規定的.. 退出中斷..語句。如果允許任務調度, 當退出中斷時, 操作系統將運行進入就緒狀態的任務優先級的任務?;?.C /OS- II的電磁流量計程序主要包括三種中斷: 按鍵中斷, 工頻中斷, 定時器中斷。按鍵中斷的功能是捕捉按下的鍵號, 置為按鍵的標志位, 在人機交互任務中將查詢按鍵標志位。工頻中斷服務的功能是進行勵磁激勵, 勵磁激勵的實時性要求非常高, 所以放在中斷中進行。定時器中斷服務程序的功能包括勵磁激勵, 以及向數據采集任務發送信號量, 激活數據采集任務。整個程序系統的運行過程如下: 系統上電后, 首*行..C /OS - II內核初始化, 然后進行單片機和相關硬件的初始化, 接著創建任務, 最后啟動多任務環境。通過各任務和中斷服務程序間的協調運行, 實現了電磁流量計的數據采集、數據運算、人機交互等全部功能。
4.. 總結
文中提出的應用..C /OS- II和CORTEX - M3單片機的方法, 已經成功運用到電磁流量計中, 制作出了樣機。通過理論驗證和實踐, 證明這種方法與采用傳統增強型51單片機和普通裸機程序結構相比, 簡化了程序結構, 增強了程序執行的實時性, 使程序運行更快速, 更高效。這種方法在工業儀表的應用中具有普遍意義, 能提高儀表性能, 具有一定應用價值。參考文獻: [ 1] 姚文詳, 宋巖. ARM C ortex- M 3指南[M ]. 北京: 北京航空航天大學出版社, 2009. [ 2] 周航慈. 基于嵌入式實時操作系統的程序設計[M ]. 北京: 北京航空航天大學出版社, 2006. --擴展閱讀:開封中儀流量儀表有限公司專業生產電磁流量計、孔板流量計、渦街流量計、文丘里流量計、v錐流量計、v型錐流量計、噴嘴流量計、插入式電磁流量計、智能電磁流量計、分體式電磁流量計、一體式電磁流量計、標準孔板流量計、標準孔板、一體化孔板流量計、標準噴嘴流量計、長徑噴嘴流量計、標準噴嘴、長徑噴嘴、插入式渦街流量計、智能渦街流量計、錐型流量計、v錐型流量計、節流裝置、節流孔板、限流孔板等流量產品,更多有關電磁流量計、孔板流量計、渦街流量計的信息請訪問開封中儀網站:
免責聲明
客服熱線: 13199863987
加盟熱線: 13199863987
媒體合作: 0571-87759945
投訴熱線: 0571-87759942
下載儀表站APP
Ybzhan手機版
Ybzhan公眾號
Ybzhan小程序