《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 設計應用 > 基于嵌入式開發(fā)平臺的粘度控制器設計
基于嵌入式開發(fā)平臺的粘度控制器設計
來源:微型機與應用2013年第15期
陳 林
(中國船舶重工集團公司第七一〇研究所,湖北 宜昌 443003)
摘要: 介紹了一種船舶主機燃油粘度試驗臺中粘度控制器的設計,。包括控制器人機界面的設計,、控制器的嵌入式開發(fā)平臺和開發(fā)環(huán)境、硬件接口設計原理以及軟件設計方法等,。
Abstract:
Key words :

摘  要: 介紹了一種船舶主機燃油粘度試驗臺中粘度控制器的設計,。包括控制器人機界面的設計、控制器的嵌入式開發(fā)平臺和開發(fā)環(huán)境,、硬件接口設計原理以及軟件設計方法等,。
關鍵詞: 嵌入式;主機,;粘度,;控制

 近代船舶柴油機為降低營運成本,使用低質(zhì)燃油,,由于在常溫下其粘度很高,,在管路中難以運輸,更不能直接噴入氣缸進行燃燒,。為了保證船舶主機燃燒良好,,能正常運行,燃油粘度必須保持在一個合適的范圍內(nèi)[1],。半實物主機燃油粘度仿真控制系統(tǒng),,把船上的燃油粘度控制系統(tǒng)遷移到了教學實驗室中。本文內(nèi)容為試驗臺上粘度控制器的設計與實現(xiàn),。
1 粘度控制器人機界面
 粘度控制器人機界面如圖1所示,。矩形區(qū)域為LCD顯示區(qū)域。下方8個按鍵區(qū)域為控制狀態(tài)選擇區(qū),,分別有粘度控制,、溫度控制、手動控制和停止控制,、主界面,、設置模式、報警復位等按鍵,。右邊16個按鍵的區(qū)域為數(shù)字鍵操作區(qū)域和符號鍵區(qū)域,。包括數(shù)字鍵、修改數(shù)據(jù),、移動光標,、清除數(shù)據(jù)、確定等按鍵,。

2 控制器硬件設計
 在本半實物主機燃油粘度控制系統(tǒng)設計中,,燃油粘度控制器需要實現(xiàn)操作模式、控制方式,、開關量,、數(shù)據(jù)量等狀態(tài)的顯示,也要實現(xiàn)各個變量的修改,,也可以進行報警復位的操作,。為實現(xiàn)如上功能,除需要嵌入式網(wǎng)絡模塊外還需有LCD顯示,、鍵盤輸入,、與上位機通信,、開關量輸出等模塊。
2.1 嵌入式網(wǎng)絡模塊
 控制器以成都英創(chuàng)的EM9260嵌入式網(wǎng)絡模塊為基礎開發(fā)完成,。EM9260是一款面向工業(yè)自動化領域的高性價比嵌入式網(wǎng)絡模塊,,其內(nèi)核CPU為工業(yè)級品質(zhì)的AT91SAM9260,模塊已預裝正版Window CE5.0實時多任務操作系統(tǒng),,用戶可直接使用Microsoft提供的免費軟件開發(fā)工具eVC(+SP4)或其他更高版本的開發(fā)工具,,在EM9260上開發(fā)自己的應用程序。英創(chuàng)公司針對EM9260提供了完整的接口底層驅動以及豐富的應用程序范例,,用戶可在此基礎上方便,、快速地開發(fā)出各種工控產(chǎn)品。
2.2 LCD顯示部分
 EM9260的主要應用領域是那些需要連續(xù)工作的工業(yè)環(huán)境,,甚至是無人值守的環(huán)境,,因此對顯示的要求相對較低。即使使用LCD,,通常也是顯示一些設備工況信息,,因此可選用一些低成本LCD模塊,如控制器為KS0108,、分辨率為128×64的點陣LCD模塊就是典型的低成本LCD,。在程序設計上,LCD顯示僅僅是作為ISA總線上擴展的簡單外設,,而不是通常意義下的Windows顯示窗口,。從CE的觀點來看,EM9260屬于典型的無頭設備(Headless),。對常用的幾款低成本LCD屏,,EM9260的LCD驅動程序可實現(xiàn)自動識別,為客戶產(chǎn)品的LCD選型提供了靈活性,。
 控制器選用240×128 LCD屏,,將信號線與模塊連接即可實現(xiàn)。LCD信號接口電路如圖2所示,。


 圖4是通過ISA總線擴展矩陣鍵盤的原理圖,,用1片74HCT139對總線地址譯碼,再通過74HCT273實現(xiàn)8位數(shù)字輸出用于掃描輸出,,通過74HCT245回讀掃描碼,,僅需要3個器件,就能實現(xiàn)8×8矩陣鍵盤擴展,。
外接矩陣鍵盤原理圖如圖5所示,。

 

 

 將CAN接口與CAN接口卡按信號線相接,即可實現(xiàn)與上位機的通信,。
2.5 開關量輸出部分
 使用嵌入式模塊的GPIO輸出接口,,可以實現(xiàn)控制器的報警聲音,,以及指示燈的點亮。電路如圖7所示,。

3 控制器軟件設計
 主板安裝了操作系統(tǒng)WindowsCE,,WindowsCE是微軟公司嵌入式,、移動計算平臺的基礎,,它是一個開放的、可升級的32位嵌入式操作系統(tǒng),,是基于掌上電腦類的電子設備操作系統(tǒng),,Windows CE是精簡的Windows 95,它的圖形用戶界面相當出色,。Windows CE是有優(yōu)先級的多任務操作系統(tǒng),,它允許多重功能、進程在相同時間系統(tǒng)中運行Windows CE支持最大的32位同步進程,。一個進程包括一個或多個線程,,每個線程代表進程的一個獨立部分,一個線程被指定為進程的基本線程,,進程也能創(chuàng)造一個未定數(shù)目的額外線程,,額外線程實際數(shù)目僅由可利用的系統(tǒng)資源限定[2]。
 軟件開發(fā)工具為eVC,,eVC是微軟針對嵌入式系統(tǒng)提供的一套功能完善且可免費獲取的開發(fā)工具,,與PC平臺通用的VC保持了高度的一致性,同時考慮C/C++的執(zhí)行效率,,因此eVC被作為EM9260應用程序開發(fā)的首選工具,。建立好英創(chuàng)ARM9嵌入式模塊所需的硬、軟件開發(fā)環(huán)境,,并利用以太網(wǎng)將開發(fā)主機和英創(chuàng)ARM9嵌入式模塊連接成功以后,,用戶就可以通過eVC開發(fā)、調(diào)試自己所需的應用程序了,。eVC開發(fā)環(huán)境和普通的VC非常相似,,客戶可以通過市面上很常見的大量VC書籍資料來進行編程方面的學習。然而,,使用eVC開發(fā)和VC的最大區(qū)別之一在于VC開發(fā)的程序直接運行于普通PC機,;eVC開發(fā)的應用程序最終要在目標機而非PC機上運行調(diào)試。這一過程是廣大VC程序員和剛接觸嵌入式系統(tǒng)的工程師所不熟悉的,。
3.1 系統(tǒng)主程序軟件設計
 根據(jù)控制器系統(tǒng)設計,,軟件開發(fā)涉及到LCD菜單顯示、按鍵,、CAN通信等操作,??刂破髦鞒绦蛄鞒虉D如圖8所示。

3.2 矩陣鍵盤軟件設計
 矩陣鍵盤驅動程序每隔20 ms掃描一次鍵盤,,判斷是否有按鍵輸入,,如果確認了按鍵輸入,則產(chǎn)生WM_KEYDOWN消息,,緊接著判斷按鍵是否釋放,,按鍵釋放后產(chǎn)生WM_KEYUP消息,然后進行下一次掃描,,如此循環(huán),。圖9是按鍵掃描程序的流程圖。

 根據(jù)上述流程圖,,封裝的KEY_API類,,該類提供兩個方法函數(shù),如下:
 //打開鍵盤掃描
 //nRow,,nCol矩陣鍵盤行列數(shù),,最大為8×8
 BOOL OpenKeyPad(int nRow,int nCol),;
 //關閉鍵盤掃描
 BOOL CloseKeyPad(),;
 通過KEY_API類,在應用程序中,,僅需要調(diào)用OpenKeyPad()函數(shù),,就能打開鍵盤掃描程序。當鍵盤上某個鍵按下時,,驅動程序將產(chǎn)生WM_KEYDOWN和WM_KEYUP消息,。這兩個消息的附加參數(shù)(wParam和lParam)包含的是虛擬鍵代碼和掃描碼等信息,應用程序中可通過TranslateMessage函數(shù)將WM_KEYDOWN和WM_KEYUP消息組合轉換為一條WM_CHAR消息,,該消息的wParam附加參數(shù)包含了按鍵字符的ASCII碼[3],。
3.3 CAN通信軟件設計
3.3.1 CAN報文的幀格式

 在CAN2.0B中存在兩種不同的幀格式,其主要的區(qū)別在于標識符的長度,,具有11位標識符的幀稱為標準幀,,而包括有29位標識符的幀稱為擴展幀。
3.3.2 啟動CAN通信接口
 CAN通信接口的驅動程序采用的是WinCE下流式驅動程序(StreamDevice Driver),,并在此驅動程序的基礎上為客戶封裝了一套簡單實用的API函數(shù),。各個函數(shù)的定義在can_api.h文件下,在該頭文件中對于各個API函數(shù)均有相應的中文說明,。作為流式接口函數(shù)通常是和文件系統(tǒng)的API函數(shù)(如CreateFile)緊密匹配的,,因此在使用英創(chuàng)提供的CAN接口的API函數(shù)時,首先需要調(diào)用CreateFile(…)來獲取CAN接口設備的句柄handle,如使用CAN1通信口,,可以用以下函數(shù):
     m_hCAN=CreateFile(_T(“CAN1:”),,
    GENERIC_READ|GENERIC_WRITE,
              0,,NULL,,OPEN_EXISTING,0,,NULL),;
 對于CAN2通信接口,只需將其中的名稱換成:_T(“CAN2:”)即可,。在創(chuàng)建CAN設備得到有效的handle之后,,就可以調(diào)用can_api.h中定義的相應函數(shù)來啟動CAN設備接口BOOL CAN_StartChip(HANDLE hDevice);至此CAN通信接口進入工作模式,。
3.3.3 設置CAN通信接口參數(shù)
 在進行CAN數(shù)據(jù)通信之前,需要設置和CAN通信相關的一些參數(shù),,包括CAN通信的波特率設置以及對接收過濾器的設置,。BOOL CAN_SetBaudRate(HANDLE hDevice,BYTE*index)用于設置CAN通信的波特率,,波特率的設置范圍為:10 kb/s~1 Mb/s,。具體的定義參見can_api.h文件中的注釋說明。通過配置接收過濾器,,CAN通信接口可以實現(xiàn)只接收標識符也接收過濾器預設值相一致的報文,。接收過濾器由接收碼寄存器ACRn和接收屏蔽碼寄存器AMRn來定義,還可以選擇兩種不同的過濾器模式,,單過濾器模式或者雙過濾器模式,。關于ACR、AMR中各位的定義,,參見SJA1000的數(shù)據(jù)手冊,。在英創(chuàng)提供的API函數(shù)中,用戶可以調(diào)用以下函數(shù)來實現(xiàn)接收過濾器的設置:
 BOOL CAN_SetGlobalAcceptanceFilter(HANDLE hDevice,,BYTE*AcceptanceFilter,,BYTE size)
3.3.4 CAN通信接口的數(shù)據(jù)收發(fā)
 采用的CAN通信方案中,CAN通信的數(shù)據(jù)收發(fā)均采用中斷方式,,驅動程序中已自動完成了數(shù)據(jù)的收發(fā)以及內(nèi)部定義的CAN接收緩沖區(qū)和發(fā)送緩沖區(qū)的管理,。對于用戶開發(fā)應用程序來說,只需要調(diào)用英創(chuàng)公司提供的CAN通信API函數(shù)中的收發(fā)函數(shù)即可[4],。
 在進行CAN通信應用程序的開發(fā)時,,對于CAN通信數(shù)據(jù)接收線程可以采用兩種方式:一種可以采用定時查詢,即定時調(diào)用函數(shù)CAN_GetNextReceivedFrame(…)檢測是否接收到CAN報文數(shù)據(jù);一種可以利用操作系統(tǒng)的消息機制,,采用事件響應的方式,,一旦硬件接收到數(shù)據(jù)報文,底層的驅動接收程序會自動讀取報文,,同時發(fā)送一個接收事件,。作為應用程序的接收線程在等待到該事件后,調(diào)用CAN_GetNextReceivedFrame(…)即可進行CAN數(shù)據(jù)報文的讀取,。需要注意的是函數(shù)CAN_GetNextReceivedFrame每執(zhí)行一次,,只是讀取了1幀CAN數(shù)據(jù)報文,如果在應用程序中需要將最新的數(shù)據(jù)全部讀出,,只需反復調(diào)用該函數(shù),,直到該函數(shù)的返回值為FALSE[5]。
 CAN數(shù)據(jù)報文的發(fā)送比較簡單,,應用程序直接調(diào)用函數(shù)CAN_SendFrame(…)即可,。
 在粘度控制器的開發(fā)中,對嵌入式開發(fā)平臺的熟悉過程至關重要,。其中包括開發(fā)板接口的使用,,各個模塊的調(diào)試和實現(xiàn)。對硬件接口規(guī)劃完成后大量的工作集中在程序的編寫,。包括擴展鍵盤的實現(xiàn)中類庫的加載,、數(shù)字量數(shù)據(jù)位數(shù)的調(diào)試、can通信規(guī)則的調(diào)試,、光標的實現(xiàn)過程中多線程方法的學習和使用,,且解決了調(diào)試過程中發(fā)現(xiàn)的由于電磁干擾導致LCD復位黑屏的問題以及LCD背光的實現(xiàn)。
 經(jīng)后期在已完成的3套粘度控制試驗臺上使用測試,,該粘度控制器系統(tǒng)穩(wěn)定,、使用簡單方便,滿足了預期的控制和通信的功能,,但是由于采用的是成品的嵌入式平臺,,開發(fā)板資源配置上還可以優(yōu)化以節(jié)約資源成本。
參考文獻
[1] 姜淑翠.基于單片機的船舶主機燃油黏度控制[D].大連:大連海事大學,,2010.
[2] 王洪杰.Windows CE下多線程多路播放的設計[D].天津:天津大學,,2006.
[3] 胡在華.實時嵌入式系統(tǒng)的研究與應用[D].長沙:湖南大學,2002.
[4] 蔡建平.關于嵌入式應用開發(fā)技術[J].單片機與嵌入式系統(tǒng)應用,,2001(3):5-11,,34.
[5] 張琪君.基于面向對象的嵌入式系統(tǒng)軟件開發(fā)方法研究及其應用[D].濟南:山東大學,2006.

此內(nèi)容為AET網(wǎng)站原創(chuàng),,未經(jīng)授權禁止轉載,。