穆莉莉 倪申翔 薛程光
摘要:為提高煤礦井下斜巷提升絞車的安全運行及信號自動控制,設(shè)計了一種基于嵌入式實時操作系統(tǒng)μC/OS-II的絞車控制信號裝置串口屏人機交互系統(tǒng)。系統(tǒng)基于Cortex-M3內(nèi)核微控制器STM32F101C8T6硬件平臺,采用μC/OS-II實現(xiàn)絞車控制器與串口屏的數(shù)據(jù)通信,實現(xiàn)了絞車斜巷中各聲光信號器歷史數(shù)據(jù)記錄、當前狀態(tài)顯示、打點、語音播報及絞車電機實時控制等。實驗表明,采用μC/OS-II進行人機交互及絞車控制等多任務(wù)管理,增強了系統(tǒng)的穩(wěn)定性,提高了系統(tǒng)控制的實時性。
關(guān)鍵詞:μC/OS-II;絞車控制;串口屏;人機交互
中圖分類號:TD534.6文獻標志碼:A文章編號:1672-1098(2014)04-0068-05
目前國內(nèi)煤礦井下斜巷提升普遍采用聲光信號器和絞車控制信號裝置手動發(fā)送打點和語音信號的方式來對絞車進行控制[1]。在該方式下,信號把鉤工與絞車司機通過打點音和語音通話及時反饋斜巷狀況,相對早期的打點器和電鈴有很大的進步[2],但對于布置多臺聲光信號器的長距離運輸斜巷,存在多臺聲光信號器同時發(fā)送控制信號的情況發(fā)生,絞車司機將無法準確區(qū)分具體打點和語音位置,并且絞車控制信號裝置無打點、語音和絞車運行記錄功能,不利于提高生產(chǎn)調(diào)度與管理。因此設(shè)計一種絞車控制信號裝置,通過人機交互系統(tǒng)實時顯示和記錄井下斜巷工作面狀況將成為提高煤礦產(chǎn)業(yè)信息化和安全性的一種發(fā)展趨勢[3]。
串口屏由于其簡單的通訊接口和友好的多功能觸摸界面的集成化設(shè)計,已廣泛運用于人機界面中。在與串口屏通訊的過程中,以往的方式均采用前、后臺系統(tǒng),在處理多任務(wù)時,系統(tǒng)的實時性無法得到保證[4]。因此,在所研制的一種絞車控制信號裝置上,對人機交互系統(tǒng)進行了詳細設(shè)計。采用了基于Cortex-M3內(nèi)核微控制器(STM32F101C8T6)硬件平臺,結(jié)合嵌入式實時操作系統(tǒng)μC/OS-II對系統(tǒng)多機多任務(wù)進行管理,以提高系統(tǒng)控制的實時性,最終實現(xiàn)了對絞車控制裝置網(wǎng)絡(luò)中不同任務(wù)的實時顯示和歷史記錄保存。
1系統(tǒng)硬件設(shè)計
11串口屏介紹
串口屏由于內(nèi)部嵌入32位處理器,集成化程度高,本身就是一個獨立的系統(tǒng),用戶只需利用單片機串口發(fā)送相應(yīng)的指令,就可以實現(xiàn)圖片、文本和曲線的顯示,給用戶設(shè)計帶來極大的方便。
選用廣州大彩公司的工業(yè)串口屏DC48270S043-01,串口屏內(nèi)部結(jié)構(gòu)如圖1所示,其內(nèi)部采用Cortex-M3+FPGA雙核設(shè)計,功能強大,可以提供USB口工程下載、發(fā)送和接收串口指令緩存區(qū)數(shù)據(jù)、控制矩陣鍵盤和RTC實時時鐘等外設(shè)。FPGA主要實現(xiàn)NandFlash讀取和TFT-LCD控制顯示。
圖1串口屏內(nèi)部結(jié)構(gòu)12系統(tǒng)電路設(shè)計
為實現(xiàn)主機與串口屏間始終處于實時高效和準確無誤的通訊狀態(tài),采用了如圖2所示的系統(tǒng)構(gòu)架。其中,主機與串口屏分別采用33 VDC和12 VDC供電。主機微控制器選用ARM公司生產(chǎn)的基于Cortex-M3內(nèi)核的STM32F101C8T6,該微控制器性價比較高,工作頻率最高達36 MHz,具有64kFlash,10kSRAM, 2個通用定時器,3個串口,57個IO口等,豐富的外設(shè)滿足了系統(tǒng)設(shè)計要求。
系統(tǒng)主時鐘源選用8 MHz頻率高速外部振蕩器。實時時鐘源選用32768 kHz頻率低速外部振蕩器,它們?yōu)橄到y(tǒng)提供了準確的時鐘頻率;利用JTAG接口在線調(diào)試及代碼下載與調(diào)試節(jié)省了大量的調(diào)試時間;串口屏的DIN和DOUT口選用TTL串口通信方式直接與主控制器的USART1的PA9、PA10接口連接進行數(shù)據(jù)通訊,節(jié)省了RS232電平轉(zhuǎn)TTL電平電路的設(shè)計。
圖2人機交互系統(tǒng)電路示意圖2系統(tǒng)軟件設(shè)計
21系統(tǒng)功能介紹
結(jié)合斜巷中絞車控制信號裝置(主機)和多聲光信號器(分機)相互傳送打點、語音信號的方式,對人機交互系統(tǒng)的功能做了規(guī)劃(見圖3)。主機接收各臺分機發(fā)送的打點、講話等觸發(fā)事件信號的同時,串口屏使用圖標控件實時顯示各分機的通訊狀態(tài),并利用串口屏內(nèi)部128KFlash對分機事件進行記錄。串口屏矩陣鍵盤和按鈕等控件主要是上傳更新通知至主機,控制絞車運行及主機打點、講話等事件地觸發(fā)、顯示與記錄。
圖3系統(tǒng)功能圖22串口屏指令集
DC48270S043-01串口屏的指令集包括組態(tài)控件指令集和基本指令集,指令幀如表1所示,由幀頭(EE)、指令、指令參數(shù)、幀尾(FF FC FF FF)組成,其中指令數(shù)值為十六進制。若指令參數(shù)大于一個字節(jié),采用高字節(jié)在前,低字節(jié)在后的方式發(fā)送。組態(tài)控件指令包括:按鈕控件ID值上傳、更新文本控件、動畫控件顯示和圖標控件等;基本指令包括:矩陣鍵盤控制、Flash讀寫和讀取RTC時鐘等。
表1串口屏指令幀
指令集指令指令參數(shù) 矩陣鍵盤12/13K1 Flash讀寫88/87Adr4 L2/Adr4 Dn 讀RTC82\ 文本B1 11Sid2 Cid2 11 Sn 圖標B1 26Sid2 Cid2 00/01 Id1 動畫B1 20Sid2 Cid2 23指令幀的發(fā)送與接收
串口屏指令幀的接收與發(fā)送采用主微控制器串口1外設(shè)中斷方式,指令幀的接收是先將指令緩入緩存區(qū)rdata[QUEUE-MAX-SIZE],然后通過判斷幀頭、幀尾定時循環(huán)地從指令緩入緩存區(qū)中提取串口屏發(fā)送至主機的每條指令幀,相關(guān)代碼如下:
u8 data=USART1->DR;
/*串口1接受一個字節(jié)數(shù)據(jù)*/
queue-push(data);/*緩入rdata緩存區(qū)*/
if(queue-find-cmd(buf,len)> 0);/*指令幀幀頭和幀尾判斷,為真時進行指令類型判斷,buf:緩沖區(qū)指針,len:指令幀長度*/
由于串口屏每條指令幀包含字節(jié)數(shù)量較大,當各分機與主機間通訊頻繁時,若采用主微控制器串口直接發(fā)送每個字節(jié),則占用了系統(tǒng)大量時間,因此系統(tǒng)的實時性無法得到保證。本設(shè)計中主機根據(jù)各分機發(fā)送的通訊信號,先將待發(fā)送的指令幀先依次寫入發(fā)送環(huán)形緩沖區(qū)cmd-buffer[CMD-MAX-BUFFER],系統(tǒng)定時循環(huán)檢測緩沖區(qū)不空,并在串口發(fā)送中斷服務(wù)函數(shù)中采用先入先出的方式,逐個發(fā)送緩沖區(qū)內(nèi)的每個指令字節(jié)至串口屏,相關(guān)代碼如下:
sendToBuf(p,num);
/*寫入環(huán)形緩沖區(qū),p為指令幀指針,num為指令幀字節(jié)數(shù)*/
readFromBuf(void);
/*依次從環(huán)形緩沖區(qū)讀取一個字節(jié)數(shù)據(jù),發(fā)送至串口屏*/
24系統(tǒng)程序設(shè)計
采用實時操作系統(tǒng)μC/OS-II作為STM32F101C8T6的片上操作系統(tǒng)(見圖4),相對前、后臺系統(tǒng),系統(tǒng)實時性和多任務(wù)管理能力得到了很大的提高。
圖4程序流程圖
系統(tǒng)首先對硬件和操作系統(tǒng)進行初始化,包括初始化主微控制器時鐘和systick定時器,初始化串口,初始化操作系統(tǒng)初始變量等。初始化函數(shù)如下:
Stm32-Clock-Init(9);//時鐘初始化
SysTick-Init(72);//systick定時器初始化
uart-init(72,9600);//串口初始化
OSInit (void);//操作系統(tǒng)初始化變量初始化
其次創(chuàng)建系統(tǒng)任務(wù)和事件,并掛起部分任務(wù),系統(tǒng)按優(yōu)先級先后順序依次對串口屏通訊、矩陣鍵盤、按鈕控件處理、讀RTC時鐘、Flash讀寫和分機信號處理等任務(wù)進行調(diào)度。任務(wù)之間的通信事件采用信號量、郵箱和消息隊列機制,部分函數(shù)如下:
OSTaskCreate(lcd-task,(void*)0,(OS-STK*)&LCD-TASK-STK[LCD-STK-SIZE-1],LCD-TASK-PRIO);
/*創(chuàng)建串口屏指令幀接收與發(fā)送任務(wù)*/
OSTaskSuspend(KEY-TASK-PRIO);
/*掛起矩陣鍵盤任務(wù)*/
F-Semp=OSSemCreate(1);
/*創(chuàng)建信號量*/
WF-Box=OSMboxCreate((void *)0);
/*創(chuàng)建寫flash郵箱*/
S-Q=OSQCreate(&MsgGrp[0],N-MESSAGES);
/*創(chuàng)建分機事件信號消息隊列*/
…
最后系統(tǒng)對不同優(yōu)先級任務(wù)進行調(diào)度,各任務(wù)按優(yōu)先級順序內(nèi)容如下:
Lcd-task:20ms循環(huán)執(zhí)行,接收到串口屏指令幀后,使用findcmd函數(shù)解讀后恢復key-task、button-task、RF-task任務(wù);
Rtc-task:100ms循環(huán)執(zhí)行,對串口屏內(nèi)部時鐘數(shù)據(jù)的進行讀取后,發(fā)送至T-Box郵箱,用于記錄主分機的通訊時間;
key-task:Lcd-task恢復后執(zhí)行,判斷主機打點、講話信號,絞車開停,觸發(fā)相應(yīng)事件動作后向各分機發(fā)送事件信號,并發(fā)送對應(yīng)的圖標控件指令幀至發(fā)送環(huán)形緩沖區(qū),執(zhí)行完成后掛起該任務(wù);
button-task:Lcd-task恢復后執(zhí)行,判斷串口屏記錄查詢按鈕控件ID值為真后請求RF-Box郵箱和信號量F-Semp,獲得權(quán)限后發(fā)送更新文本控件指令幀發(fā)送環(huán)形緩沖區(qū),執(zhí)行完成后掛起該任務(wù);
RF-task:Lcd-task恢復后執(zhí)行,讀取串口屏內(nèi)部Flash數(shù)據(jù)并發(fā)送至RF-Box郵箱成功后,釋放信號量F-Semp,執(zhí)行完成后掛起該任務(wù);
Ext-task: 100ms循環(huán)執(zhí)行,從消息隊列S-Q中提取分機信號后,發(fā)送至WF-Box郵箱并恢復WF-task任務(wù);
WF-task:Ext-task恢復后執(zhí)行,同時請求WF-Box郵箱和T-Box郵箱后,發(fā)送寫記錄到Flash的指令幀至發(fā)送環(huán)形緩沖區(qū),執(zhí)行完成后掛起該任務(wù);
其中,串口1發(fā)送接收完成中斷服務(wù)函數(shù)USART1-IRQHandler可隨時打斷上述任務(wù)的執(zhí)行,按字節(jié)接收串口屏指令幀并發(fā)送至接收指令緩存區(qū),使用readFromBuf函數(shù)將發(fā)送環(huán)形緩沖區(qū)內(nèi)數(shù)據(jù)發(fā)送至串口顯示或記錄。
3人機交互界面
絞車控制信號裝置人機交互界面主要分為主分機與絞車運行界面(見圖5)和歷史記錄查詢界面(見圖6)。
圖5主分機與絞車運行界面
圖6歷史記錄查詢界面
交互界面中用到的按鈕、圖標和文本等控件的數(shù)量近30個,不同的控件類型,需發(fā)送的指令幀格式不同;不同分機號,需發(fā)送的指令幀內(nèi)容不同,因此系統(tǒng)通過串口與顯示屏交互時,易發(fā)生通信堵塞,處理事件繁索等問題。由于μC/OS-II操作系統(tǒng)在任務(wù)調(diào)度和時間管理方面的優(yōu)異性能,外加串口屏內(nèi)部設(shè)有4 kB的指令緩沖區(qū),有效的避免了此類狀況的發(fā)生,用戶在使用該人機交互界面時,實時狀態(tài)顯示及時,觸摸響應(yīng)靈敏,不會產(chǎn)生死機現(xiàn)象,基本上滿足了煤礦井下設(shè)備的安全使用要求。
4結(jié)論
本系統(tǒng)在采用精簡內(nèi)核的嵌入式實時操作系統(tǒng)μC/OS-II對系統(tǒng)多任務(wù)進行調(diào)度,在減少系統(tǒng)代碼量和提高系統(tǒng)實時性的同時,增強了系統(tǒng)的模塊化設(shè)計,系統(tǒng)調(diào)試通過,現(xiàn)已穩(wěn)定運行于現(xiàn)場。
所設(shè)計的μC/OS-II的串口屏人機交互系統(tǒng)通用性高,還可廣泛應(yīng)用于其他中小型礦用電器設(shè)備控制系統(tǒng)中,比如礦用蓄電池監(jiān)控設(shè)備、礦用充電機及礦用通風監(jiān)控系統(tǒng)等。
參考文獻:
[1]常宏奎,劉戰(zhàn)軍.斜巷提升語音聲光組合信號系統(tǒng)的開發(fā)與應(yīng)用[J].中州煤炭,2010(2):16-17.
[2]周廣興,姜永春,張廣蘭,等.單片機在礦井提升機打點器中的應(yīng)用[J].煤礦機械,2004(7):87-88.
[3]倪樹標,張冠文,劉日威,等.淺談串口屏在儀器人機界面設(shè)計中的應(yīng)用[J]. 廣東科技,2012(21):176-177.
[4]任哲.嵌入式實時操作系統(tǒng)μC/OS-II原理及應(yīng)用[M].北京:北京航空航天大學出版社,2009:116-118.
[5]公茂法,劉建平,徐新源,等.基于串口屏的井下多回路電網(wǎng)監(jiān)測儀的設(shè)計[J].煤礦機械,2013,34(1):263-264.
(責任編輯:何學華,吳曉紅)