張 亮,程明霄,朱增偉,孔德鴻
(南京工業(yè)大學(xué)自動化與電氣工程學(xué)院,江蘇南京 211816)
?
基于STM32和μC/OS-Ⅱ的智能在線分析平臺的研究
張 亮,程明霄,朱增偉,孔德鴻
(南京工業(yè)大學(xué)自動化與電氣工程學(xué)院,江蘇南京 211816)
設(shè)計(jì)了以集成數(shù)據(jù)采集和數(shù)據(jù)處理為一體的STM32模塊為核心的智能在線分析儀,并在軟件設(shè)計(jì)中植入了嵌入式實(shí)時操作系統(tǒng)μC/OS-II。文中重點(diǎn)介紹了分析平臺硬件模塊的設(shè)計(jì)及其工作原理,以及對STM32進(jìn)行μC/OS-II系統(tǒng)裁剪與移植,μC/OS-II下在線分析平臺圖形用戶界面的設(shè)計(jì)。在實(shí)驗(yàn)室環(huán)境下,利用CO進(jìn)行實(shí)驗(yàn)測試,并對實(shí)驗(yàn)結(jié)果進(jìn)行分析。測試結(jié)果表明:該分析平臺準(zhǔn)確性高、穩(wěn)定性好、響應(yīng)速度快,實(shí)現(xiàn)了對氣體組分的實(shí)時分析與測定。
STM32;μC/OS-II;在線分析平臺;系統(tǒng)裁剪與移植
在線分析系統(tǒng)主要應(yīng)用于流程工業(yè)、環(huán)境監(jiān)測、國防、軍工以及其他科學(xué)領(lǐng)域的連續(xù)在線成分分析,專業(yè)性強(qiáng),技術(shù)難度大[1]。為全社會的安全節(jié)能、質(zhì)量控制、環(huán)保檢測、控源減排等提供了重要的保障,并且已廣泛應(yīng)用于化工、石油、冶金、電站等生產(chǎn)系統(tǒng)中的生產(chǎn)管理和生產(chǎn)控制,逐漸成為不可缺少的分析和控制工具。因此隨著計(jì)算機(jī)技術(shù)特別是嵌入式系統(tǒng)的發(fā)展,使用性能更加高效并且成本較低的處理器以及更加先進(jìn)的軟件開發(fā)技術(shù)已經(jīng)成為新一代智能化在線分析儀器發(fā)展的趨勢。
文中研究的基于STM32的以μC/OS-II為操作系統(tǒng)的智能在線分析儀采用光源驅(qū)動電路、信號調(diào)理電路、A/D轉(zhuǎn)換電路將數(shù)字信號送到STM32進(jìn)行數(shù)據(jù)處理,對所選用的STM32F103芯片進(jìn)行μC/OS-II的裁剪與移植,能夠?qū)崿F(xiàn)氣體的連續(xù)自動分析,同時,μC/OS-II以其開源性、可移植性、多任務(wù)性等優(yōu)點(diǎn)為后續(xù)系統(tǒng)功能的擴(kuò)展奠定了基礎(chǔ)。
在線分析系統(tǒng)包括光學(xué)部分和兩路傳感器信號調(diào)理電路以及STM32微控制器控制電路部分。STM32微控制器控制電路部分硬件結(jié)構(gòu)[2]如圖1所示。該系統(tǒng)主要功能是紅外發(fā)光光源在驅(qū)動電路以及PWM調(diào)制信號的作用下,發(fā)出周期性的紅外光投射到兩個組分的測量氣室以及接收氣室內(nèi),待測氣體通過外接有抽氣泵的預(yù)處理系統(tǒng)連續(xù)通入到兩個分析回路的測量氣室,測量氣室兩側(cè)分別是紅外光源和接收氣室,光源中心與兩氣室的中心軸線在一條水平線上,以保證光源發(fā)出的光平行的穿過測量氣室。接收氣室被設(shè)計(jì)成串聯(lián)型的雙層結(jié)構(gòu),兩層接收氣室通過微流量傳感器連接在一起,微流量傳感器將氣體濃度信號轉(zhuǎn)化為電信號,經(jīng)過放大整流濾波等環(huán)節(jié)之后送入STM32F103VE微處理器進(jìn)行后續(xù)的處理,轉(zhuǎn)換為相應(yīng)的數(shù)字信號,經(jīng)數(shù)字濾波處理后的氣體濃度信息最終可送入TFT液晶顯示器顯示。
圖1 基于STM32的智能在線分析平臺的硬件框圖
1.1 微處理器STM32F103
該在線分析平臺以STM32F103VE作為數(shù)據(jù)處理的控制核心,該芯片采用了集高性能、低功耗、高性價比于一體的業(yè)界領(lǐng)先的Cortex-M3內(nèi)核,并與大部分ARM開發(fā)工具和開發(fā)環(huán)境兼容。集成度高,省去了很多外圍電路的設(shè)計(jì),節(jié)約了開發(fā)成本,并且具有豐富而又性能出眾的片上外設(shè)資源。STM32的優(yōu)勢來源于雙APB總線結(jié)構(gòu),內(nèi)置兩個12位的A/D轉(zhuǎn)換器,2個DMA可以管理內(nèi)存到內(nèi)存、外設(shè)到內(nèi)存之間的數(shù)據(jù)傳輸[3]。多達(dá)2個SPI接口,在主或從模式下,全雙工或半雙工時的通信速率可達(dá)18Mb/s,2個USART接口。內(nèi)置FSMC接口可以與同步或者異步存儲器和16位的存儲卡直接連接。
1.2 STM32電源電路設(shè)計(jì)
設(shè)計(jì)穩(wěn)定可靠的電源電路對于在線分析系統(tǒng)的正常運(yùn)行具有極其重要的作用,其中作為系統(tǒng)核心的STM32處理器的供電電路(如圖2所示)就變得尤為重要。STM32F103VE芯片的工作電壓,即VDD為2.0~3.6 V,這里選擇典型值3.3 V作為芯片的工作電壓。通過芯片內(nèi)部的電壓調(diào)節(jié)器提供內(nèi)核所需的1.8 V電源。
若發(fā)生主電源VDD掉電,那么可以通過VBAT腳上連接的電池為實(shí)時時鐘和備份寄存器供電。該設(shè)計(jì)使用LM1117為系統(tǒng)提供穩(wěn)定的3.3 V電源,LM1117-3.3是低壓差電壓調(diào)節(jié)器,在輸入輸出端都接入了47 μF的電解電容以改善電路的瞬態(tài)響應(yīng)以獲得穩(wěn)定的電源電壓。當(dāng)系統(tǒng)供電后,指示燈被點(diǎn)亮,提示系統(tǒng)處于供電狀態(tài)。
圖2 電源電路原理圖
1.3 A/D采樣模塊設(shè)計(jì)
由于ADC轉(zhuǎn)換的輸出結(jié)果是模擬輸入信號的電壓和外接參考電壓之間的比例關(guān)系,模擬電源引腳用于為轉(zhuǎn)換提供參考電壓,因此任何模擬參考電源上的噪聲都會使轉(zhuǎn)換結(jié)果產(chǎn)生變化,電源穩(wěn)壓對于ADC的精度是非常重要的。設(shè)計(jì)采用了ADC1的通道10和通道11所對應(yīng)的PC0和PC1作為模擬信號的輸入端。出于對電壓穩(wěn)定性的考慮,提高模擬系統(tǒng)的抗噪性,模擬部分應(yīng)該與數(shù)字部分分開供電,在電路上L5、L6、C16、C19作為模擬電路部分,用于隔離來自數(shù)字電路部分的噪聲。STM32F103的ADC的輸出為12位數(shù)字量,由于輸入的滿刻度電壓為3.3V,因此ADC能分辨出來的輸入電壓變化的最小值為3.3V/212=0.806 mV,完全滿足了系統(tǒng)對分辨率的要求。AD采樣電路如圖3所示。
圖3 AD采樣模塊接口電路
1.4 光源調(diào)制PWM
光源的調(diào)制主要用到了STM32F103的PWM功能,利用定時器3的通道3 對應(yīng)GPIO的PB0端口產(chǎn)生頻率為8 Hz占空比為50%的PWM信號。STM32F103的通用定時器TIM2、TIM3、TIM4和TIM5都可以產(chǎn)生需要的PWM信號。定時器的時鐘源為TIMCLK可以經(jīng)系統(tǒng)時鐘分頻得到。
PWM信號的占空比計(jì)算公式為CCR1_Val/(TIM_Period +1),因此程序中將占空比的數(shù)值CCR1_Val賦給與PWM相關(guān)的結(jié)構(gòu)體TIM_OCInitStructure中的變量TIM_Pulse即可。然后還需要設(shè)置TIM_OCMode為PWM1模式,TIM_OCPolarity 為高,即當(dāng)定時器計(jì)數(shù)值小于CCR1_Val時為高電平。最后調(diào)用TIM_TimeBaseInit()和TIM_OC1Init()進(jìn)行初始化即可。
整個軟件系統(tǒng)的開發(fā)是由C語言來完成的,配合J-Link仿真器可以在線調(diào)試各個程序模塊的功能。系統(tǒng)軟件架構(gòu)主要由用戶應(yīng)用程序、圖形用戶接口、μC/OS-II操作系統(tǒng)內(nèi)核、BSP底層硬件模塊驅(qū)動程序和相應(yīng)的STM32外設(shè)庫文件組成。軟件設(shè)計(jì)中以嵌入式實(shí)時操作系統(tǒng)μC/OS-II作為系統(tǒng)核心[3-4],在底層硬件驅(qū)動程序和應(yīng)用程序之間實(shí)現(xiàn)系統(tǒng)資源分配以及任務(wù)之間的調(diào)度與通信等。
系統(tǒng)主函數(shù)流程圖如圖4所示,程序運(yùn)行時首先調(diào)用μC/OS-II的初始化函數(shù)OSInit()完成操作系統(tǒng)初始化相關(guān)的操作,包括對系統(tǒng)所使用的各種全局變量和重要的數(shù)據(jù)結(jié)構(gòu)如任務(wù)控制塊及其鏈表、全局變量等重要的數(shù)據(jù)結(jié)構(gòu)進(jìn)行初始化操作,并創(chuàng)建了空閑任務(wù)和統(tǒng)計(jì)任務(wù),完成μC/OS-II運(yùn)行前的準(zhǔn)備工作。之后主函數(shù)調(diào)用BSP_Init()函數(shù)完成系統(tǒng)硬件模塊的初始化操作,主要有系統(tǒng)時鐘初始化、中斷配置、GPIO端口配置、TFT的FSMC接口初始化以及AD轉(zhuǎn)換配置初始化等,此時系統(tǒng)各個硬件模塊已準(zhǔn)備完成,主函數(shù)調(diào)用μC/OS-II的任務(wù)創(chuàng)建函數(shù)OSTaskCreate()創(chuàng)建系統(tǒng)主任務(wù),也即起始任務(wù),因?yàn)棣藽/OS-II在啟動多任務(wù)管理之前,必須得先創(chuàng)建一個任務(wù)。主任務(wù)是操作系統(tǒng)啟動時運(yùn)行的第一個任務(wù),具有最高優(yōu)先級,主任務(wù)的主要功能一是在任務(wù)函數(shù)代碼中調(diào)用App_TaskCreate()函數(shù)創(chuàng)建本系統(tǒng)所需的其他任務(wù),二是調(diào)用OS_CPU_SysTickInit()函數(shù)完成操作系統(tǒng)μC/OS-II時鐘節(jié)拍的初始化。以上工作完成之后即可調(diào)用系統(tǒng)服務(wù)函數(shù)OSStart()來啟動μC/OS-II內(nèi)核,開始多任務(wù)的調(diào)度。
圖4 主函數(shù)流程圖
2.1 處理器相關(guān)的C語言函數(shù)OS_CPU_C.C
用戶在進(jìn)行代碼移植時需要在OS_CPU_C.C文件中修改10個C語言函數(shù),其中堆棧初始化函數(shù)OSTaskStkInit()為必改函數(shù),其余9個為功能擴(kuò)展的鉤子函數(shù)可以不必修改。用戶調(diào)用OSTastCreat()或OSTaskCreatExt()函數(shù)創(chuàng)建任務(wù)時,在這兩個函數(shù)中調(diào)用了OSTaskStkInit()函數(shù),主要完成任務(wù)棧區(qū)的初始化工作,在用戶開辟的任務(wù)棧中保存處理器寄存器的內(nèi)容,任務(wù)堆棧初始化之后各個寄存器的初始值如圖5所示。函數(shù)OSTaskStkInit()的代碼如下:
OS_STK *OSTaskStkInit (void (*task)(void *p_arg),void *p_arg,OS_STK *ptos,INT16U opt)
{
保存任務(wù)參數(shù)p_arg;
在用戶開辟的任務(wù)堆棧的開始位置保存堆棧長度;
任務(wù)函數(shù)代碼的首地址入棧;
各個寄存器的值依次入棧
return(stk) ;//返回堆棧棧頂?shù)闹羔樄┯脩粽{(diào)用
}
圖5 OSTaskStkInit()函數(shù)任務(wù)堆棧初始化示意圖
2.2 μC/OS-II圖形用戶界面設(shè)計(jì)
在線分析平臺的數(shù)據(jù)顯示界面采用μC/GUI圖形用戶接口來設(shè)計(jì),顯示界面主要在函數(shù)Fun.c中實(shí)現(xiàn),在μC/OS-II的數(shù)據(jù)顯示任務(wù)中只需要調(diào)用相應(yīng)的函數(shù)即可。采用μC/GUI設(shè)計(jì)顯示界面首先需要定義對話框的資源,以指定包含在對話框中所有控件,也就是在顯示界面上需要用到的一些控件等。
首先對話框資源的定義是在一個GUI_WIDGET_CREATE_INFO類型的數(shù)組中進(jìn)行的,主要實(shí)現(xiàn)代碼如下所示:
static const GUI_WIDGET_CREATE_INFO aDialogCreate[]= {//建立窗體,大小是400*240 原點(diǎn)在0,0
{FRAMEWIN_CreateIndirect,"在線分析平臺的研究與設(shè)計(jì)",0,0,0,400,240,F(xiàn)RAMEWIN_CF_ACTIVE },
{BUTTON_CreateIndirect,"測量",GUI_ID_BUTTON2,0,174,80,40 },
……
{ BUTTON_CreateIndirect,"返回",GUI_ID_BUTTON4,320,174,80,40},//建立TEXT控件,起點(diǎn)是窗體的2,60,大小130X55 文字右對齊
{ TEXT_CreateIndirect,"CO:",GUI_ID_TEXT0,2,40,130,55,TEXT_CF_RIGHT},
……
{ TEXT_CreateIndirect,"CH4:",GUI_ID_TEXT2,2,100,130,55,TEXT_CF_RIGHT},
{ TEXT_CreateIndirect,"ppm",GUI_ID_TEXT3,198,100,95,35,TEXT_CF_RIGHT },
};
其次,在定義好對話框資源之后,可以使用函數(shù)GUI_CreateDialogBox()來建立包含了所需資源的對話框。
hWin=GUI_CreateDialogBox(aDialogCreate,GUI_COUNTOF(aDialogCreate),0,0,0,0);該函數(shù)第一個參數(shù)就是包含資源列表的指針,即數(shù)組名,第二個參數(shù)對話框中所有控件的數(shù)量。液晶顯示效果如圖6所示。
圖6 液晶顯示效果圖
檢測對象CO的測量范圍為0~14%,分別配置了體積分?jǐn)?shù)為1.20%,3.35%,7.56%,9.00%,12.30%,13.85%的一氧化碳?xì)怏w,依次通入測量氣室中進(jìn)行系統(tǒng)標(biāo)定。試驗(yàn)中首先通入空氣,由于空氣中一氧化碳的濃度約為50~200 ppb,二氧化碳的濃度為0.038%,甲烷的濃度約為1.76 ppm,濃度值都相對很小可以忽略不計(jì),因此當(dāng)通入空氣時光源發(fā)出的紅外光在測量氣室內(nèi)沒有被吸收,此時傳感器的輸出信號應(yīng)該達(dá)到最大,系統(tǒng)輸出的值就是零點(diǎn)對應(yīng)的AD轉(zhuǎn)換數(shù)為4095。然后通入13.85%的CO氣體,調(diào)節(jié)調(diào)零電路使得AD轉(zhuǎn)換輸出接近為0。之后依次通入標(biāo)準(zhǔn)氣體,獲得相應(yīng)的電壓值,并且每個值都讀取個并求10得平均值記錄如表1所示。
利用Matlab最小二乘法對表中數(shù)據(jù)進(jìn)行數(shù)據(jù)擬合得到曲線如圖7所示。
曲線方程為:
y=-262.1x+3131
(1)
式中:變量y為氣體的濃度所對應(yīng)的電壓值,mV;x為氣體濃度,vol%.
表1 實(shí)測數(shù)據(jù) V
圖7 實(shí)測氣體的濃度和電壓值的關(guān)系曲線
由線性相關(guān)系數(shù)公式:
(2)
根據(jù)式(2)以及表1中的數(shù)據(jù)在Matlab計(jì)算得到R=0.95,線性相關(guān)度較高,效果較為理想,該計(jì)算方法可以用于氣體濃度的轉(zhuǎn)換計(jì)算。
根據(jù)獲得的擬合曲線關(guān)系式進(jìn)行反演試驗(yàn)分析檢測精度,
依次通入標(biāo)準(zhǔn)濃度的待測氣體,實(shí)驗(yàn)測得數(shù)據(jù)如表2所示。
表2 精度分析數(shù)據(jù) % vol
精度值=(測量值-標(biāo)準(zhǔn)值)/標(biāo)準(zhǔn)值
根據(jù)表2中的數(shù)據(jù)可以得到4個精度值分別為1.67%、1.8%、1.06%、1.7%,取最大值為1.8%,符合系統(tǒng)測試要求。
基于STM32和μC/OS-II的智能在線分析儀采用光源調(diào)制PWM、A/D采樣電路和植入了嵌入式實(shí)時操作系統(tǒng)μC/OS-II的高性能STM32F107微控制器,完成了對于氣體組分的自動在線測量要求。針對系統(tǒng)需求進(jìn)行了相關(guān)的任務(wù)設(shè)計(jì),顯示界面加入了μC/GUI圖形用戶接口。μC/OS-II以其程序執(zhí)行效率高、實(shí)時性等優(yōu)點(diǎn)很好滿足了工業(yè)過程分析儀的迫切需要。
[1] 高喜奎,程明霄.在線分析系統(tǒng)工程技術(shù).北京:化學(xué)工業(yè)出版社,2013.
[2] 朱升每,程明霄.基于80C196KC單片機(jī)的分析儀器的硬件平臺設(shè)計(jì).分析儀器,2004(2):17-20.
[3] 劉波文.ARM Cortex-M3 應(yīng)用開發(fā)實(shí)例詳解.北京:電子工業(yè)出版社,2011.
[4] 張靜,張凱.嵌入式實(shí)時操作系統(tǒng)μC/OS-Ⅱ在ARM7上移植的研究與實(shí)現(xiàn).計(jì)算機(jī)工程與應(yīng)用,2004(4):100-102,153.
[5] 盧友亮.嵌入式實(shí)時操作系統(tǒng)μC/OS-Ⅱ原理與實(shí)踐.北京:電子工業(yè)出版社,2012.
[6] 王蘭英.基于STM32嵌入式系統(tǒng)的μCGUI移植.四川理工學(xué)院學(xué)報,2012,2(1):56-58.
Research of Intelligent Online Analysis PlatformBased on STM32 and μC/OS-II
ZHANG liang1,CHENG Ming-xiao1,ZHU Zeng-wei2,KONG De-hong2
(College of Automation and Electrical Engineering,Nanjing 211816,China)
Based on STM32 module as the core and integrated of data acquisition and data processing as a whole,an intelligent on-line analyzer was designed.In the design of the software,the embedded real-time operating system μC/OS-II was implanted.This paper mainly introduced the design and working principle of analysis platform hardware module,cutting and transplantation μC/OS-II system on STM32,and the design of graphical user interface for online analysis platform under μC/OS-II.Experiments of CO under laboratory environment were conducted and the experimental results were analyzed.The experimental results show that the analyzer has high accuracy,good stability and fast response speed,thus achieving real-time analysis and determination of gas components.
STM32;μC/OS-II; online analysis platform; system cutting and transplantation
2014-01-10 收修改稿日期:2014-11-07
TP216
A
1002-1841(2015)01-0044-04
張亮(1991—),碩士研究生,研究方向?yàn)榉治鰞x器。 E-mail:bennyzl@163.com