石毅壯
(赤峰市農(nóng)牧業(yè)機械化研究推廣中心推廣科,內(nèi)蒙古赤峰024000)
遠(yuǎn)程監(jiān)控系統(tǒng)軟件功能主要包括工業(yè)現(xiàn)場模擬數(shù)據(jù)、數(shù)字量的采集、觸摸屏的界面顯示、坐標(biāo)向量的獲取、GPRS串行通信任務(wù)的完成.
整個嵌入式軟件系統(tǒng)軟件框架是在基于μC/OS-Ⅱ操作系統(tǒng)的多任務(wù)環(huán)境和啟動多任務(wù)運行上構(gòu)建的,如圖1所示.系統(tǒng)對μC/OS-Ⅱ和目標(biāo)電路板進行初始化,緊接建立模擬量采集、數(shù)字量采集、觸摸屏界面顯示、觸摸屏坐標(biāo)的獲取和GPRS串行通信等多項任務(wù).若要在多任務(wù)調(diào)度開始后啟動程序,需要由其他任務(wù)建立任務(wù)程序.
遠(yuǎn)程監(jiān)控系統(tǒng)軟件將嵌入式開發(fā)平臺作為基礎(chǔ),優(yōu)先考慮任務(wù)的實時性操作,具體過程為:首先在STM 32平臺上移植μC/OS-Ⅱ;然后編寫對應(yīng)軟件驅(qū)動程序及用戶操作界面,并在接口函數(shù)里開發(fā)應(yīng)用程序,構(gòu)成對應(yīng)的嵌入式軟件;最后按照實時性優(yōu)先級將軟件中不同種類功能模塊進行分類,并分配到對應(yīng)的任務(wù)中.
圖1 圖1系統(tǒng)軟件框
為保證遠(yuǎn)程監(jiān)控操作系統(tǒng)正常運行,函數(shù)OSInit()的初始化、μC/OS-Ⅱ中所有的變量以及數(shù)據(jù)結(jié)構(gòu)要最先被調(diào)用,為了使任務(wù)區(qū)域功能始終處于就緒狀態(tài),要建立空閑任務(wù)OS_Taskldle().
在多項任務(wù)運行之前,與硬件相關(guān)的內(nèi)容需要進行對應(yīng)的配置,來完成目標(biāo)板的初始化.如硬件初端的驅(qū)動部分與API接口進行對應(yīng)的配置,這樣可使多項任務(wù)在同時運行過程中不需要過多的與硬件相關(guān)聯(lián)部分的操作.目標(biāo)電路板的初始化主要包括中斷源的配置、系統(tǒng)時鐘的初始化、DMA控制器的初始化、ADC的初始化、觸摸電路初始化、I/O口的初始化、串口的初始化、FSMC的初始化及TFT接口初始化.
遠(yuǎn)程監(jiān)控系統(tǒng)模擬量采集過程的實質(zhì)是將直接存儲器存取用來提供給外設(shè)和存儲器之間或者存儲器和存儲器之間的高速數(shù)據(jù)進行傳輸,也就是將ADC轉(zhuǎn)換結(jié)果以DMA方式傳遞出去.其中ADC通道選擇分為規(guī)則組和注入組,注入組最多只能設(shè)置4個通道,需要觸發(fā)才可以采集到設(shè)置通道里的ADC值,而規(guī)則組可以依照通道設(shè)置的先后順序?qū)Ω魍ǖ酪来芜M行數(shù)據(jù)采集,解決了多路ADC通道的自動采集缺陷.由于規(guī)則通道轉(zhuǎn)換的值儲存在指定的數(shù)據(jù)寄存器里,即便轉(zhuǎn)換多個規(guī)則通道并保證同時實現(xiàn)DMA功能時,也可以避免存儲在ADC_DR寄存器中的數(shù)據(jù)丟失.規(guī)則通道的轉(zhuǎn)換結(jié)束后,產(chǎn)生了DMA請求,通過ADC_DR寄存器將已轉(zhuǎn)換的數(shù)據(jù)傳輸?shù)接脩糁付ǖ刂?由于利用了DMA數(shù)據(jù)的快速移動性能,節(jié)省了CPU空間資源,節(jié)省下來的資源可以完成其他操作任務(wù).
ADC單次轉(zhuǎn)換時間為采樣周期(對電壓的采樣時間)和轉(zhuǎn)換周期(采樣結(jié)束后的轉(zhuǎn)換時間)的總和.ADC采樣周期取決于時鐘來源.配置RCC時,PLL為72M作為主時鐘,配置PCLK2為PLL的2分頻,同時配置ADC時鐘為PCLK2的4分頻.時鐘頻率Fadc為9 MHz,設(shè)定采樣時間為55.5個時鐘周期,ADC的轉(zhuǎn)換時間為12.5個時鐘周期,整個轉(zhuǎn)換所需要的周期數(shù)為68個時鐘周期,單次的轉(zhuǎn)換時間為7.5μs.
設(shè)置配置I/O口為數(shù)字量的采集上拉輸入模式,二進制數(shù)字量的讀取通過讀引腳狀態(tài),來完成對應(yīng)I/O口存到相應(yīng)變量的采集功能.
通過建立BUTTON來控件觸摸屏界面顯示任務(wù)是自動監(jiān)控狀態(tài)還是手動發(fā)送狀態(tài).當(dāng)沒有響應(yīng)的情況下,系統(tǒng)進入自動狀態(tài),并且每隔一定的時間向遠(yuǎn)程監(jiān)控終端(手機)發(fā)送當(dāng)前采集到的所有數(shù)據(jù)量(包括模擬量和數(shù)字量),同時對通道進行編號排序,為功能區(qū)域擴展做鋪墊;當(dāng)系統(tǒng)采用手動模式時,界面彈出選擇查看窗口,通過BUTTON選擇來進入查看模擬量或數(shù)字量的界面.所有顯示通道數(shù)值后邊都對應(yīng)復(fù)選框控件,使操作者能夠手動發(fā)送當(dāng)前相應(yīng)通道的數(shù)據(jù)量至遠(yuǎn)程監(jiān)控終端(手機),其流程如圖2所示.
圖2 界面顯示程序流程
遠(yuǎn)程監(jiān)控系統(tǒng)里通信任務(wù)必須保證其實時性,通過向GPRS模塊發(fā)送AT命令來控制其向遠(yuǎn)程監(jiān)控終端(手機)發(fā)送數(shù)據(jù).采集每個數(shù)據(jù)量(包括模擬量和數(shù)字量)的通道都有標(biāo)志位.若選擇手動模式,為確保是否發(fā)送該通道的數(shù)值,需要檢查發(fā)送短信的信號量之后每個通道的標(biāo)志位;若選擇自動模式,則省略此流程,直接發(fā)送全部通道數(shù)值,隨后每個通道的標(biāo)志位自動清零.串行通信任務(wù)流程,如圖3所示.
圖3 串行通信任務(wù)流程
為了驗證GPRS遠(yuǎn)程監(jiān)控系統(tǒng)設(shè)計系統(tǒng)是否能夠達(dá)到設(shè)計要求,需要對系統(tǒng)整體性能進行測試.
利用可調(diào)電位器產(chǎn)生模擬電壓進行測試,數(shù)字量用高低電平來替代,A/D參考電壓范圍0~3.3 V,數(shù)字量顯示正常,如圖4所示.
圖4 信號的采集顯示
監(jiān)控系統(tǒng)通道選擇界面時,系統(tǒng)開始直接進入自動監(jiān)控界面,可人工選擇手動進入通道查看選擇界面,用以發(fā)送所需要傳輸?shù)臄?shù)據(jù).
在實現(xiàn)GPRS遠(yuǎn)程監(jiān)控系統(tǒng)過程中,人機交互界面設(shè)計得簡潔方便,參照模塊化設(shè)計思想,依照各種功能的實時性要求的不同,將終端的功能需求進行分類,并在各自不同任務(wù)中得以實現(xiàn),最后通過操作系統(tǒng)對任務(wù)進行管理,實現(xiàn)嵌入式遠(yuǎn)程監(jiān)控系統(tǒng)的各項功能.
[1] 張森,陳源,陳昌敏.在Linux上模擬μC/OS-Ⅱ?qū)崟r操作系統(tǒng)的實現(xiàn)[J].微計算機信息,2006,(23):80-82.
[2] 拉伯羅斯.嵌入式實時操作系統(tǒng)μC/OS-Ⅲ應(yīng)用開發(fā)[M].宮輝,曾鳴,龔光華,等譯.北京:北京航空航天大學(xué)出版社,2012.
[3] 陳瑤,李佳,宋寶華.Cortex-M 3+μC/OS-Ⅱ嵌入式系統(tǒng)開發(fā)入門與應(yīng)用[M].北京:人民郵電出版社,2010.
[4] 黃燕平.μCOS ARM移植要點詳解[M].北京:北京航空航天大學(xué)出版社,2005.