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