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