ARM-based Design and Implementation of Supervision Control System for Waterjet Propulsion
王曉初1 徐 亮1 龔征華2 陳建平2 袁景淇1(上海交通大學自動化系1,上?!?00240;中船708研究所噴水推進技術重點實驗室2,上?!?00011)
?
噴水推進上位機監控系統ARM設計與實現
Multi-thread CAN bus ARM
國家自然科學基金資助項目(編號:61233004);
教育部博士點基金資助項目(編號:20110073110018)。
修改稿收到日期:2015-07-28。
第一作者王曉初(1990-),男,現為上海交通大學控制科學與工程專業在讀碩士研究生;主要從事噴水推進控制系統和嵌入式系統的研究。
噴水推進是一種重要的船舶動力技術,廣泛應用于高性能船舶[1]。噴水推進器的可靠運行離不開穩定、高效的上位機監控系統。噴水推進系統上位機監控系統的主要任務包括:對輸入設備的采樣、為用戶提供良好的人機交互界面、與下位機進行數據通信以及對系統信息的存儲與查詢等。
上位機監控系統的實現需要穩定、高效的嵌入式硬件和軟件。隨著高性能芯片制造技術的不斷提升,具有體積小、功耗低、可靠性高的ARM系列芯片得到廣泛應用[2]。由于ARM芯片可適應多種嵌入式操作系統,因此成為嵌入式處理器的首選。在操作系統的選擇上,VxWorks在實時性和可靠性上具有巨大優勢,但價格相當昂貴,且開放性差,開發難度大; Linux具有源代碼開放、實時性和可移植性良好等特點,但是尚沒有很好的用戶圖形界面; WinCE是微軟推出的一款多任務、多線程的實時操作系統,具有緊湊、可靠性高等特點,且用戶圖形界面良好,開發周期短、通用性強,可滿足大部分工業領域嵌入式系統開發[3]。因此,本文采用WinCE作為上位機操作系統。
基于ARM和WinCE噴水推進系統上位機的總體框架見圖1,主要包括采樣模塊、組態串口屏、數據庫和CAN總線通信4個部分。

圖1 噴水推進系統上位機總體框架Fig. 1 Overall framework of the host computer in waterjet propulsion system
系統采樣模塊包括6路模擬量采樣(A/D)和8路數字量采樣(DI),采樣周期達到20 ms;組態串口屏包括噴水推進系統儀表及數值的顯示,并提供歷史數據查詢的人機交互界面;數據庫則對系統實際運行數據進行存儲,并響應用戶的查詢操作; CAN總線通信作為上位機與下位機的橋梁,完成二者間信息交互。
需要說明的是,盡管WinCE操作系統具有較好的用戶圖形界面,但在開發過程中發現圖形界面的繪制會消耗系統不小的內存資源,制約了系統采樣頻率的提高。因此將系統的人機交互界面模塊獨立出來,以組態串口屏的形式實現其功能。
圖2給出了系統硬件設計框圖,其核心是TI公司生產的AM3352微處理器[4],內核為ARM Cortex-A8,頻率為800 MHz。針對A/D采樣和組態串口屏模塊,由于二者均為串口(RS-232串口,以下均簡稱串口)通信,可利用處理器自帶的UART1和UART2,并通過MAX3243E芯片轉換電平得到串口; 8路DI采樣由系統內部提供的GPIO接口實現;系統提供的USB OTG接口用于連接計算機,完成程序調試及下載; LCD接口外接調試屏,用于開發過程的界面顯示;存儲器方面,擴展了256 MB DDR3 SDRAM和256 MB NAND Flash,以提高系統性能;同時,為了能夠更大容量地存儲系統運行數據,對系統內部SD卡接口進行了擴展,得到TF卡接口;處理器還自帶2路CAN總線接口,通過CAN總線控制芯片CTM8251AT,可實現CAN總線網絡的數據通信[5]。

圖2 系統硬件設計方案Fig. 2 Design scheme of system hardware
對于硬件的擴展部分,考慮到CAN總線通信和存儲器擴展技術比較成熟,因此主要對A/D采樣和組態串口屏兩個模塊作進一步說明。
2. 1 A/D采樣
A/D采樣包括對手輪、手柄等輸入信號的采樣,共6路,電壓范圍為0~5 V,采樣周期達到20 ms??紤]到系統只留有4路ADC接口,因此對A/D采樣進行擴展。
由于系統具有豐富的UART,且串口通信實現簡單、通信波特率可達57 600 Bd/s,因此選用串口實現A/D采樣模塊與CPU的通信。
為了實現A/D采樣,本文選用了PIC18F2423集成芯片。該芯片是美國MICROCHIP公司研發的一種用于開發和控制外圍設備的集成電路,自帶13通道12位精度A/D模塊,單通道轉換速率可達50 000次/s,可滿足6通道20 ms采樣周期要求。
A/D采樣模塊的工作模式如圖3所示。PIC與CPU之間通過串口進行通信??紤]到采樣模塊的定時并不精確,因此采用CPU通過串口定時發送采樣命令,PIC接收命令采樣并上傳的模式。

圖3 A/D采樣工作模式Fig. 3 A/D sampling mode
2. 2組態串口屏
組態串口屏是帶有組態控件、串口控制的液晶屏。組態控件包括文本、儀表、曲線、圖標、進度條等,組態串口屏接收CPU通過串口發送的指令,便可完成顯示操作??紤]到在WinCE上繪制大量儀表、數值會消耗大量系統資源,因此將上位機的人機交互顯示界面以組態串口屏的方式獨立出來,以提高系統穩定性。
本系統選用廣州大彩光電科技有限公司生產的10. 4英寸(1英寸= 25.4 mm)組態串口屏,其核心處理器為Cortex-M3 +高速FPGA,帶觸摸,內置虛擬數字小鍵盤和全功能鍵盤,支持串口通信方式,最高通信波特率可達115 200 Bd/s。
組態串口屏的示意界面見圖4,其主要包括運行參數儀表顯示、輸入(模擬量和開關量)顯示以及查詢界面顯示。

圖4 組態串口屏顯示界面Fig. 4 Display interface of serial configuration screen
CPU發送給組態串口屏的數據主要包括兩類:①用戶設定信息和噴水推進系統實際運行信息;②根據用戶查詢信息從數據庫提取出的歷史數據。需要注意的是,當待顯示數據過多時,可選擇分次發送并調整發送頻率,以便組態串口屏更好地完成顯示功能。
噴水推進系統上位機軟件設計過程采用模塊化設計,根據不同的硬件設備,設計出相應的軟件模塊,之后再將各獨立軟件模塊和上位機任務合理地結合起來,從而實現上位機各項功能。本節先簡要介紹基于ARM的WinCE 7. 0操作系統的定制過程,然后重點討論多線程技術、WinCE下串口通信和SQLite數據庫的實現。
3. 1 WinCE系統定制
Platform Builder是微軟公司發布的一款用于定制WinCE操作系統的集成開發環境,開發人員可使用這個集成開發環境完成嵌入式操作系統的定制、編譯和調試[6]。通過Platform Builder,最終可得到該平臺操作系統。其具體形式為映像文件nk. bin和nk. nb0,其中nk. nb0可通過相應工具下載到開發板內存中運行。最后,在應用程序開發前,需使用Platform Builder針對硬件開發板輸出相應的軟件開發工具包(software development kit,SDK),用以輔助硬件程序的開發。
3. 2應用程序開發
3. 2. 1多線程技術
分析A/D采樣模塊可知: CPU需完成定時、發送和接收3個任務,以實現系統定時采樣。為了實現系統精確定時,選用Query Performance Frequency&Counter基于硬件時鐘的定時方式。該定時方式通過獲取系統頻率和系統計數器,可實現毫秒級精確定時。
針對系統采樣頻率高、數據量大的情況,可對系統發送和接收任務分別創建線程,以提高系統資源的利用效率,從而加快系統應用程序的響應速度。WinCE提供了便捷的線程創建機制,包括基于Win API和MFC這2種線程創建方式[7],這里選用MFC中的CWinThread類創建線程。其中發送線程的相關代碼如下。

接收線程的創建與發送過程類似,用于讀取采樣數據。接收在發送結束后自行啟動,且發送與接收應輪流執行。在開發過程中發現二者并不同步,導致數據接收不正確,因此考慮對發送和接收線程進行同步處理。
WinCE操作系統中,提供了事件(event)、互斥對象(mutex)、信號量(semaphores)和臨界區(critical _ section)4種同步控制對象來實現線程間的同步[7-8]。結合本系統要求和各個同步控制對象的特點及使用情況,選擇互斥對象來實現發送和接收線程的同步?;コ鈱ο蟮脑頌橹挥袚碛谢コ鈱ο蟮木€程才具有訪問資源的權限,且互斥對象只有一個,因此決定了某一時刻只有一個線程在運行[7]。為了使得發送線程和接收線程輪流擁有互斥對象,在每個線程執行完畢后釋放互斥對象,并利用Sleep()函數使當前線程進入掛起狀態,以確保另一線程的執行。
以下為利用互斥對象實現線程同步的代碼。

3. 2. 2 WinCE下串口通信
發送和接收線程都需要通過串口進行操作,WinCE下串口通信主要包括3個步驟[9]:①初始化串口;②串口通信;③關閉串口。其實現代碼如下:

串口發送較簡單,這里僅對串口讀數據進行分析。串口讀數據使用ReadFile函數(使用見上述代碼),其中dwLength為指定要讀取的字節數,dwLengthRcv為實際讀取的字節數。A/D采樣每次上傳數據為12字節,因此應取dwLength =12,即當ReadFile函數讀到12字節數據后返回,這時dwLengthRcv = dwLength = 12。數據偶爾丟失會導致實際讀取數小于12,從而影響整個數據的正常接收。事實上,串口讀數據函數ReadFile還與串口超時參數有關。下面將對串口超時參數的選擇進行分析說明。
串口讀有兩種超時:間隔超時和總超時,分別用T1和T0表示。其中,間隔超時T1是指在接收時兩個字符之間的最大時延,總超時T0是指讀操作總共花費的最大時間。通常,總超時T0一般取較大值(如1 000 ms),以保證數據的正常讀取;間隔超時T1用于控制ReadFile讀取間隔字符的最長等待時間,會對接收過程產生重大影響。以本文為例,采樣周期Ts= 20 ms,即CPU間隔20 ms接收12 B數據。假設某異常情況下CPU只接收了10 B,因未達到設定要求而進入等待狀態。此時,為了不影響下次數據的接收,間隔超時應小于采樣周期,即T1<Ts,至于本次接收的錯誤數據應當丟棄。
3. 2. 3 SQLite數據庫的實現
(1)SQLite3數據庫在WinCE平臺下的移植。
SQLite數據庫是由D. Richard Hipp開發的一個基于C庫的輕量級嵌入式關系數據庫引擎。SQLite3是其最新版本,具有自身短小、快速高效、穩定可靠、可移植性好等眾多優點[10],非常適合嵌入式系統中數據的存儲管理。
SQLite沒有提供針對WinCE系統平臺統一的工程配置文件,需要根據不同平臺自己創建工程[11]。SQLite3在WinCE 7.0平臺的移植流程主要包括4個步驟:①創建SQLite3動態鏈接庫;②獲取CppSQLite3U;③將SQLite3加入項目工程;④應用程序配置。
(2)SQLite3數據庫的使用。
SQLite3數據庫在WinCE上的使用主要包括創建數據庫和表、插入記錄和查詢記錄,下面給出相應關鍵代碼。

對完成的上位機系統進行短時和長時的測試,結果表明該系統基本達到預期,可靠、穩定。其中:高速采樣周期為20 ms; CAN總線通信周期為20 ms; SQLite數據庫每隔1 s進行存儲;組態串口屏實現了用戶設定和運行信息的顯示,刷新頻率為500 ms,同時響應了用戶的查詢操作。
表1給出了系統A/D采樣過程的統計信息。

表1 A/D采樣統計信息Tab. 1 A/D sampling statistics
需要指出的是,A/D采樣周期決定了系統運行周期,對整個系統運行效率影響重大。從表1可以看出,系統的采樣周期為20 ms,達到了設定要求。
本系統建立在ARM Cortex-A8硬件和WinCE 7. 0操作系統的基礎上,完成了噴水推進系統上位機數據采集、存儲、顯示、通信等各項功能。針對系統儀表顯示消耗大量系統資源的情況,利用組態串口屏將系統的人機交互界面獨立出來,提高了系統穩定性和實時性。另一方面,在處理器A/D采樣通道數不足的情況下,利用串口對其進行了擴展,并在串口通信中利用多線程技術實現了系統的20 ms的定時采樣。測試結果表明,系統的各項性能均達到了預期效果。
參考文獻
[1]鈕會武.噴水推進裝置及其控制技術研究[D].哈爾濱:哈爾濱工程大學,2009.
[2]周旭,李小敏,俞承芳.基于ARM的集散系統上位機設計[J].儀器儀表學報,2006(S1): 704-706.
[3]陳立定,楊俊輝,肖力揚.三種通用嵌入式操作系統的分析與比較[J].微計算機信息,2009(11): 89-91.
[4]凌秀澤,周俊,王俊仁.基于AM335X的液晶顯示控制系統設計[J].計算機測量與控制,2015(1): 96-98.
[5]馬舒.基于CAN總線的汽車倒車雷達系統研究[D].長春:吉林大學,2012.
[6]余宏兵,李寶安,申功勛.基于ARM的WinCE系統定制[J].現代電子技術,2008(10): 73-75.
[7]黃丹,邵惠鶴.基于Windows CE平臺的多線程編程[J].微計算機信息,2007,35(7): 53-55.
[8]闞能琪. VC + +串口通信中多線程技術的應用研究[J].西華大學學報:自然科學版,2005(4): 84-85,88.
[9]韓寶俊,盧建華,閔華松. WinCE下串口通信模型設計與實現[J].計算機工程與設計,2008(8): 1997-1999.
[10]廖一鵬.嵌入式SQLite在溫濕度巡檢儀中的應用[J].光電技術應用,2010(5): 61-64,79.
[11]劉祥,鄧中亮,吳巍蓀. SQLite3在基于WinCE平臺的智能移動終端的應用[J].工業控制計算機,2009(3):19-20.
ARM-based Design and Implementation of Supervision Control System for Waterjet Propulsion
王曉初1徐亮1龔征華2陳建平2袁景淇1
(上海交通大學自動化系1,上海200240;中船708研究所噴水推進技術重點實驗室2,上海200011)
摘要:為提高噴水推進監控系統的效能和可靠性,提出了一種基于ARM Cortex-A8內核和WinCE 7. 0操作系統的上位機監控系統設計方案。分析了系統的硬件架構和軟件實現,并詳細討論了系統采樣模塊、人機交互界面的設計與實現,以及WinCE下多線程編程和SQLite數據庫實現等關鍵技術。該系統可實現6通道高速采樣,人機交互界面良好,且具有體積小、功耗低、可靠性高等優點。
關鍵詞:噴水推進嵌入式系統上位機監控系統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