ARM-based Design and Implementation of Supervision Control System for Waterjet Propulsion
王曉初1 徐 亮1 龔征華2 陳建平2 袁景淇1(上海交通大學(xué)自動(dòng)化系1,上?!?00240;中船708研究所噴水推進(jìn)技術(shù)重點(diǎn)實(shí)驗(yàn)室2,上?!?00011)
?
噴水推進(jìn)上位機(jī)監(jiān)控系統(tǒng)ARM設(shè)計(jì)與實(shí)現(xiàn)
Multi-thread CAN bus ARM
國(guó)家自然科學(xué)基金資助項(xiàng)目(編號(hào):61233004);
教育部博士點(diǎn)基金資助項(xiàng)目(編號(hào):20110073110018)。
修改稿收到日期:2015-07-28。
第一作者王曉初(1990-),男,現(xiàn)為上海交通大學(xué)控制科學(xué)與工程專業(yè)在讀碩士研究生;主要從事噴水推進(jìn)控制系統(tǒng)和嵌入式系統(tǒng)的研究。
噴水推進(jìn)是一種重要的船舶動(dòng)力技術(shù),廣泛應(yīng)用于高性能船舶[1]。噴水推進(jìn)器的可靠運(yùn)行離不開穩(wěn)定、高效的上位機(jī)監(jiān)控系統(tǒng)。噴水推進(jìn)系統(tǒng)上位機(jī)監(jiān)控系統(tǒng)的主要任務(wù)包括:對(duì)輸入設(shè)備的采樣、為用戶提供良好的人機(jī)交互界面、與下位機(jī)進(jìn)行數(shù)據(jù)通信以及對(duì)系統(tǒng)信息的存儲(chǔ)與查詢等。
上位機(jī)監(jiān)控系統(tǒng)的實(shí)現(xiàn)需要穩(wěn)定、高效的嵌入式硬件和軟件。隨著高性能芯片制造技術(shù)的不斷提升,具有體積小、功耗低、可靠性高的ARM系列芯片得到廣泛應(yīng)用[2]。由于ARM芯片可適應(yīng)多種嵌入式操作系統(tǒng),因此成為嵌入式處理器的首選。在操作系統(tǒng)的選擇上,VxWorks在實(shí)時(shí)性和可靠性上具有巨大優(yōu)勢(shì),但價(jià)格相當(dāng)昂貴,且開放性差,開發(fā)難度大; Linux具有源代碼開放、實(shí)時(shí)性和可移植性良好等特點(diǎn),但是尚沒有很好的用戶圖形界面; WinCE是微軟推出的一款多任務(wù)、多線程的實(shí)時(shí)操作系統(tǒng),具有緊湊、可靠性高等特點(diǎn),且用戶圖形界面良好,開發(fā)周期短、通用性強(qiáng),可滿足大部分工業(yè)領(lǐng)域嵌入式系統(tǒng)開發(fā)[3]。因此,本文采用WinCE作為上位機(jī)操作系統(tǒng)。
基于ARM和WinCE噴水推進(jìn)系統(tǒng)上位機(jī)的總體框架見圖1,主要包括采樣模塊、組態(tài)串口屏、數(shù)據(jù)庫(kù)和CAN總線通信4個(gè)部分。
圖1 噴水推進(jìn)系統(tǒng)上位機(jī)總體框架Fig. 1 Overall framework of the host computer in waterjet propulsion system
系統(tǒng)采樣模塊包括6路模擬量采樣(A/D)和8路數(shù)字量采樣(DI),采樣周期達(dá)到20 ms;組態(tài)串口屏包括噴水推進(jìn)系統(tǒng)儀表及數(shù)值的顯示,并提供歷史數(shù)據(jù)查詢的人機(jī)交互界面;數(shù)據(jù)庫(kù)則對(duì)系統(tǒng)實(shí)際運(yùn)行數(shù)據(jù)進(jìn)行存儲(chǔ),并響應(yīng)用戶的查詢操作; CAN總線通信作為上位機(jī)與下位機(jī)的橋梁,完成二者間信息交互。
需要說(shuō)明的是,盡管WinCE操作系統(tǒng)具有較好的用戶圖形界面,但在開發(fā)過程中發(fā)現(xiàn)圖形界面的繪制會(huì)消耗系統(tǒng)不小的內(nèi)存資源,制約了系統(tǒng)采樣頻率的提高。因此將系統(tǒng)的人機(jī)交互界面模塊獨(dú)立出來(lái),以組態(tài)串口屏的形式實(shí)現(xiàn)其功能。
圖2給出了系統(tǒng)硬件設(shè)計(jì)框圖,其核心是TI公司生產(chǎn)的AM3352微處理器[4],內(nèi)核為ARM Cortex-A8,頻率為800 MHz。針對(duì)A/D采樣和組態(tài)串口屏模塊,由于二者均為串口(RS-232串口,以下均簡(jiǎn)稱串口)通信,可利用處理器自帶的UART1和UART2,并通過MAX3243E芯片轉(zhuǎn)換電平得到串口; 8路DI采樣由系統(tǒng)內(nèi)部提供的GPIO接口實(shí)現(xiàn);系統(tǒng)提供的USB OTG接口用于連接計(jì)算機(jī),完成程序調(diào)試及下載; LCD接口外接調(diào)試屏,用于開發(fā)過程的界面顯示;存儲(chǔ)器方面,擴(kuò)展了256 MB DDR3 SDRAM和256 MB NAND Flash,以提高系統(tǒng)性能;同時(shí),為了能夠更大容量地存儲(chǔ)系統(tǒng)運(yùn)行數(shù)據(jù),對(duì)系統(tǒng)內(nèi)部SD卡接口進(jìn)行了擴(kuò)展,得到TF卡接口;處理器還自帶2路CAN總線接口,通過CAN總線控制芯片CTM8251AT,可實(shí)現(xiàn)CAN總線網(wǎng)絡(luò)的數(shù)據(jù)通信[5]。
圖2 系統(tǒng)硬件設(shè)計(jì)方案Fig. 2 Design scheme of system hardware
對(duì)于硬件的擴(kuò)展部分,考慮到CAN總線通信和存儲(chǔ)器擴(kuò)展技術(shù)比較成熟,因此主要對(duì)A/D采樣和組態(tài)串口屏兩個(gè)模塊作進(jìn)一步說(shuō)明。
2. 1 A/D采樣
A/D采樣包括對(duì)手輪、手柄等輸入信號(hào)的采樣,共6路,電壓范圍為0~5 V,采樣周期達(dá)到20 ms??紤]到系統(tǒng)只留有4路ADC接口,因此對(duì)A/D采樣進(jìn)行擴(kuò)展。
由于系統(tǒng)具有豐富的UART,且串口通信實(shí)現(xiàn)簡(jiǎn)單、通信波特率可達(dá)57 600 Bd/s,因此選用串口實(shí)現(xiàn)A/D采樣模塊與CPU的通信。
為了實(shí)現(xiàn)A/D采樣,本文選用了PIC18F2423集成芯片。該芯片是美國(guó)MICROCHIP公司研發(fā)的一種用于開發(fā)和控制外圍設(shè)備的集成電路,自帶13通道12位精度A/D模塊,單通道轉(zhuǎn)換速率可達(dá)50 000次/s,可滿足6通道20 ms采樣周期要求。
A/D采樣模塊的工作模式如圖3所示。PIC與CPU之間通過串口進(jìn)行通信??紤]到采樣模塊的定時(shí)并不精確,因此采用CPU通過串口定時(shí)發(fā)送采樣命令,PIC接收命令采樣并上傳的模式。
圖3 A/D采樣工作模式Fig. 3 A/D sampling mode
2. 2組態(tài)串口屏
組態(tài)串口屏是帶有組態(tài)控件、串口控制的液晶屏。組態(tài)控件包括文本、儀表、曲線、圖標(biāo)、進(jìn)度條等,組態(tài)串口屏接收CPU通過串口發(fā)送的指令,便可完成顯示操作??紤]到在WinCE上繪制大量?jī)x表、數(shù)值會(huì)消耗大量系統(tǒng)資源,因此將上位機(jī)的人機(jī)交互顯示界面以組態(tài)串口屏的方式獨(dú)立出來(lái),以提高系統(tǒng)穩(wěn)定性。
本系統(tǒng)選用廣州大彩光電科技有限公司生產(chǎn)的10. 4英寸(1英寸= 25.4 mm)組態(tài)串口屏,其核心處理器為Cortex-M3 +高速FPGA,帶觸摸,內(nèi)置虛擬數(shù)字小鍵盤和全功能鍵盤,支持串口通信方式,最高通信波特率可達(dá)115 200 Bd/s。
組態(tài)串口屏的示意界面見圖4,其主要包括運(yùn)行參數(shù)儀表顯示、輸入(模擬量和開關(guān)量)顯示以及查詢界面顯示。
圖4 組態(tài)串口屏顯示界面Fig. 4 Display interface of serial configuration screen
CPU發(fā)送給組態(tài)串口屏的數(shù)據(jù)主要包括兩類:①用戶設(shè)定信息和噴水推進(jìn)系統(tǒng)實(shí)際運(yùn)行信息;②根據(jù)用戶查詢信息從數(shù)據(jù)庫(kù)提取出的歷史數(shù)據(jù)。需要注意的是,當(dāng)待顯示數(shù)據(jù)過多時(shí),可選擇分次發(fā)送并調(diào)整發(fā)送頻率,以便組態(tài)串口屏更好地完成顯示功能。
噴水推進(jìn)系統(tǒng)上位機(jī)軟件設(shè)計(jì)過程采用模塊化設(shè)計(jì),根據(jù)不同的硬件設(shè)備,設(shè)計(jì)出相應(yīng)的軟件模塊,之后再將各獨(dú)立軟件模塊和上位機(jī)任務(wù)合理地結(jié)合起來(lái),從而實(shí)現(xiàn)上位機(jī)各項(xiàng)功能。本節(jié)先簡(jiǎn)要介紹基于ARM的WinCE 7. 0操作系統(tǒng)的定制過程,然后重點(diǎn)討論多線程技術(shù)、WinCE下串口通信和SQLite數(shù)據(jù)庫(kù)的實(shí)現(xiàn)。
3. 1 WinCE系統(tǒng)定制
Platform Builder是微軟公司發(fā)布的一款用于定制WinCE操作系統(tǒng)的集成開發(fā)環(huán)境,開發(fā)人員可使用這個(gè)集成開發(fā)環(huán)境完成嵌入式操作系統(tǒng)的定制、編譯和調(diào)試[6]。通過Platform Builder,最終可得到該平臺(tái)操作系統(tǒng)。其具體形式為映像文件nk. bin和nk. nb0,其中nk. nb0可通過相應(yīng)工具下載到開發(fā)板內(nèi)存中運(yùn)行。最后,在應(yīng)用程序開發(fā)前,需使用Platform Builder針對(duì)硬件開發(fā)板輸出相應(yīng)的軟件開發(fā)工具包(software development kit,SDK),用以輔助硬件程序的開發(fā)。
3. 2應(yīng)用程序開發(fā)
3. 2. 1多線程技術(shù)
分析A/D采樣模塊可知: CPU需完成定時(shí)、發(fā)送和接收3個(gè)任務(wù),以實(shí)現(xiàn)系統(tǒng)定時(shí)采樣。為了實(shí)現(xiàn)系統(tǒng)精確定時(shí),選用Query Performance Frequency&Counter基于硬件時(shí)鐘的定時(shí)方式。該定時(shí)方式通過獲取系統(tǒng)頻率和系統(tǒng)計(jì)數(shù)器,可實(shí)現(xiàn)毫秒級(jí)精確定時(shí)。
針對(duì)系統(tǒng)采樣頻率高、數(shù)據(jù)量大的情況,可對(duì)系統(tǒng)發(fā)送和接收任務(wù)分別創(chuàng)建線程,以提高系統(tǒng)資源的利用效率,從而加快系統(tǒng)應(yīng)用程序的響應(yīng)速度。WinCE提供了便捷的線程創(chuàng)建機(jī)制,包括基于Win API和MFC這2種線程創(chuàng)建方式[7],這里選用MFC中的CWinThread類創(chuàng)建線程。其中發(fā)送線程的相關(guān)代碼如下。
接收線程的創(chuàng)建與發(fā)送過程類似,用于讀取采樣數(shù)據(jù)。接收在發(fā)送結(jié)束后自行啟動(dòng),且發(fā)送與接收應(yīng)輪流執(zhí)行。在開發(fā)過程中發(fā)現(xiàn)二者并不同步,導(dǎo)致數(shù)據(jù)接收不正確,因此考慮對(duì)發(fā)送和接收線程進(jìn)行同步處理。
WinCE操作系統(tǒng)中,提供了事件(event)、互斥對(duì)象(mutex)、信號(hào)量(semaphores)和臨界區(qū)(critical _ section)4種同步控制對(duì)象來(lái)實(shí)現(xiàn)線程間的同步[7-8]。結(jié)合本系統(tǒng)要求和各個(gè)同步控制對(duì)象的特點(diǎn)及使用情況,選擇互斥對(duì)象來(lái)實(shí)現(xiàn)發(fā)送和接收線程的同步?;コ鈱?duì)象的原理為只有擁有互斥對(duì)象的線程才具有訪問資源的權(quán)限,且互斥對(duì)象只有一個(gè),因此決定了某一時(shí)刻只有一個(gè)線程在運(yùn)行[7]。為了使得發(fā)送線程和接收線程輪流擁有互斥對(duì)象,在每個(gè)線程執(zhí)行完畢后釋放互斥對(duì)象,并利用Sleep()函數(shù)使當(dāng)前線程進(jìn)入掛起狀態(tài),以確保另一線程的執(zhí)行。
以下為利用互斥對(duì)象實(shí)現(xiàn)線程同步的代碼。
3. 2. 2 WinCE下串口通信
發(fā)送和接收線程都需要通過串口進(jìn)行操作,WinCE下串口通信主要包括3個(gè)步驟[9]:①初始化串口;②串口通信;③關(guān)閉串口。其實(shí)現(xiàn)代碼如下:
串口發(fā)送較簡(jiǎn)單,這里僅對(duì)串口讀數(shù)據(jù)進(jìn)行分析。串口讀數(shù)據(jù)使用ReadFile函數(shù)(使用見上述代碼),其中dwLength為指定要讀取的字節(jié)數(shù),dwLengthRcv為實(shí)際讀取的字節(jié)數(shù)。A/D采樣每次上傳數(shù)據(jù)為12字節(jié),因此應(yīng)取dwLength =12,即當(dāng)ReadFile函數(shù)讀到12字節(jié)數(shù)據(jù)后返回,這時(shí)dwLengthRcv = dwLength = 12。數(shù)據(jù)偶爾丟失會(huì)導(dǎo)致實(shí)際讀取數(shù)小于12,從而影響整個(gè)數(shù)據(jù)的正常接收。事實(shí)上,串口讀數(shù)據(jù)函數(shù)ReadFile還與串口超時(shí)參數(shù)有關(guān)。下面將對(duì)串口超時(shí)參數(shù)的選擇進(jìn)行分析說(shuō)明。
串口讀有兩種超時(shí):間隔超時(shí)和總超時(shí),分別用T1和T0表示。其中,間隔超時(shí)T1是指在接收時(shí)兩個(gè)字符之間的最大時(shí)延,總超時(shí)T0是指讀操作總共花費(fèi)的最大時(shí)間。通常,總超時(shí)T0一般取較大值(如1 000 ms),以保證數(shù)據(jù)的正常讀取;間隔超時(shí)T1用于控制ReadFile讀取間隔字符的最長(zhǎng)等待時(shí)間,會(huì)對(duì)接收過程產(chǎn)生重大影響。以本文為例,采樣周期Ts= 20 ms,即CPU間隔20 ms接收12 B數(shù)據(jù)。假設(shè)某異常情況下CPU只接收了10 B,因未達(dá)到設(shè)定要求而進(jìn)入等待狀態(tài)。此時(shí),為了不影響下次數(shù)據(jù)的接收,間隔超時(shí)應(yīng)小于采樣周期,即T1<Ts,至于本次接收的錯(cuò)誤數(shù)據(jù)應(yīng)當(dāng)丟棄。
3. 2. 3 SQLite數(shù)據(jù)庫(kù)的實(shí)現(xiàn)
(1)SQLite3數(shù)據(jù)庫(kù)在WinCE平臺(tái)下的移植。
SQLite數(shù)據(jù)庫(kù)是由D. Richard Hipp開發(fā)的一個(gè)基于C庫(kù)的輕量級(jí)嵌入式關(guān)系數(shù)據(jù)庫(kù)引擎。SQLite3是其最新版本,具有自身短小、快速高效、穩(wěn)定可靠、可移植性好等眾多優(yōu)點(diǎn)[10],非常適合嵌入式系統(tǒng)中數(shù)據(jù)的存儲(chǔ)管理。
SQLite沒有提供針對(duì)WinCE系統(tǒng)平臺(tái)統(tǒng)一的工程配置文件,需要根據(jù)不同平臺(tái)自己創(chuàng)建工程[11]。SQLite3在WinCE 7.0平臺(tái)的移植流程主要包括4個(gè)步驟:①創(chuàng)建SQLite3動(dòng)態(tài)鏈接庫(kù);②獲取CppSQLite3U;③將SQLite3加入項(xiàng)目工程;④應(yīng)用程序配置。
(2)SQLite3數(shù)據(jù)庫(kù)的使用。
SQLite3數(shù)據(jù)庫(kù)在WinCE上的使用主要包括創(chuàng)建數(shù)據(jù)庫(kù)和表、插入記錄和查詢記錄,下面給出相應(yīng)關(guān)鍵代碼。
對(duì)完成的上位機(jī)系統(tǒng)進(jìn)行短時(shí)和長(zhǎng)時(shí)的測(cè)試,結(jié)果表明該系統(tǒng)基本達(dá)到預(yù)期,可靠、穩(wěn)定。其中:高速采樣周期為20 ms; CAN總線通信周期為20 ms; SQLite數(shù)據(jù)庫(kù)每隔1 s進(jìn)行存儲(chǔ);組態(tài)串口屏實(shí)現(xiàn)了用戶設(shè)定和運(yùn)行信息的顯示,刷新頻率為500 ms,同時(shí)響應(yīng)了用戶的查詢操作。
表1給出了系統(tǒng)A/D采樣過程的統(tǒng)計(jì)信息。
表1 A/D采樣統(tǒng)計(jì)信息Tab. 1 A/D sampling statistics
需要指出的是,A/D采樣周期決定了系統(tǒng)運(yùn)行周期,對(duì)整個(gè)系統(tǒng)運(yùn)行效率影響重大。從表1可以看出,系統(tǒng)的采樣周期為20 ms,達(dá)到了設(shè)定要求。
本系統(tǒng)建立在ARM Cortex-A8硬件和WinCE 7. 0操作系統(tǒng)的基礎(chǔ)上,完成了噴水推進(jìn)系統(tǒng)上位機(jī)數(shù)據(jù)采集、存儲(chǔ)、顯示、通信等各項(xiàng)功能。針對(duì)系統(tǒng)儀表顯示消耗大量系統(tǒng)資源的情況,利用組態(tài)串口屏將系統(tǒng)的人機(jī)交互界面獨(dú)立出來(lái),提高了系統(tǒng)穩(wěn)定性和實(shí)時(shí)性。另一方面,在處理器A/D采樣通道數(shù)不足的情況下,利用串口對(duì)其進(jìn)行了擴(kuò)展,并在串口通信中利用多線程技術(shù)實(shí)現(xiàn)了系統(tǒng)的20 ms的定時(shí)采樣。測(cè)試結(jié)果表明,系統(tǒng)的各項(xiàng)性能均達(dá)到了預(yù)期效果。
參考文獻(xiàn)
[1]鈕會(huì)武.噴水推進(jìn)裝置及其控制技術(shù)研究[D].哈爾濱:哈爾濱工程大學(xué),2009.
[2]周旭,李小敏,俞承芳.基于ARM的集散系統(tǒng)上位機(jī)設(shè)計(jì)[J].儀器儀表學(xué)報(bào),2006(S1): 704-706.
[3]陳立定,楊俊輝,肖力揚(yáng).三種通用嵌入式操作系統(tǒng)的分析與比較[J].微計(jì)算機(jī)信息,2009(11): 89-91.
[4]凌秀澤,周俊,王俊仁.基于AM335X的液晶顯示控制系統(tǒng)設(shè)計(jì)[J].計(jì)算機(jī)測(cè)量與控制,2015(1): 96-98.
[5]馬舒.基于CAN總線的汽車倒車?yán)走_(dá)系統(tǒng)研究[D].長(zhǎng)春:吉林大學(xué),2012.
[6]余宏兵,李寶安,申功勛.基于ARM的WinCE系統(tǒng)定制[J].現(xiàn)代電子技術(shù),2008(10): 73-75.
[7]黃丹,邵惠鶴.基于Windows CE平臺(tái)的多線程編程[J].微計(jì)算機(jī)信息,2007,35(7): 53-55.
[8]闞能琪. VC + +串口通信中多線程技術(shù)的應(yīng)用研究[J].西華大學(xué)學(xué)報(bào):自然科學(xué)版,2005(4): 84-85,88.
[9]韓寶俊,盧建華,閔華松. WinCE下串口通信模型設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)工程與設(shè)計(jì),2008(8): 1997-1999.
[10]廖一鵬.嵌入式SQLite在溫濕度巡檢儀中的應(yīng)用[J].光電技術(shù)應(yīng)用,2010(5): 61-64,79.
[11]劉祥,鄧中亮,吳巍蓀. SQLite3在基于WinCE平臺(tái)的智能移動(dòng)終端的應(yīng)用[J].工業(yè)控制計(jì)算機(jī),2009(3):19-20.
ARM-based Design and Implementation of Supervision Control System for Waterjet Propulsion
王曉初1徐亮1龔征華2陳建平2袁景淇1
(上海交通大學(xué)自動(dòng)化系1,上海200240;中船708研究所噴水推進(jìn)技術(shù)重點(diǎn)實(shí)驗(yàn)室2,上海200011)
摘要:為提高噴水推進(jìn)監(jiān)控系統(tǒng)的效能和可靠性,提出了一種基于ARM Cortex-A8內(nèi)核和WinCE 7. 0操作系統(tǒng)的上位機(jī)監(jiān)控系統(tǒng)設(shè)計(jì)方案。分析了系統(tǒng)的硬件架構(gòu)和軟件實(shí)現(xiàn),并詳細(xì)討論了系統(tǒng)采樣模塊、人機(jī)交互界面的設(shè)計(jì)與實(shí)現(xiàn),以及WinCE下多線程編程和SQLite數(shù)據(jù)庫(kù)實(shí)現(xiàn)等關(guān)鍵技術(shù)。該系統(tǒng)可實(shí)現(xiàn)6通道高速采樣,人機(jī)交互界面良好,且具有體積小、功耗低、可靠性高等優(yōu)點(diǎn)。
關(guān)鍵詞:噴水推進(jìn)嵌入式系統(tǒng)上位機(jī)監(jiān)控系統(tǒng)WinCE串口通信多線程CAN總線ARM
Abstract:Based on kernel of ARM Cortex-A8 and WinCE 7. 0 operating system,the design scheme of a supervision control system for waterjet propulsion is proposed. The hardware architecture and software implementation are analyzed,and the key technologies of the design and implementation of sampling module,interactive interface,and multi-thread programming under WinCE and SQLite database are discussed in detail. The system is characterized with 6-channel high-speed sampling,good user interface,compact,low power consumption and high reliability.
Keywords:Waterjet propulsionEmbedded systemHost computer monitoring systemWinCESerial port communication
中圖分類號(hào):TH-39; TP312
文獻(xiàn)標(biāo)志碼:A
DOI:10.16086/j.cnki.issn1000-0380.201603011