孫雷,梅志千,李向國(guó),朱 靜
(1.河海大學(xué)機(jī)電工程學(xué)院,江蘇常州 213022;2.棗莊市水利局勝利渠管理處,山東 棗莊 277317)
HMR3500數(shù)字羅盤(pán)是美國(guó)Honeywell公司新近生產(chǎn)的數(shù)字磁羅盤(pán)模塊,它通過(guò)對(duì)地球磁場(chǎng)等信息的讀取、計(jì)算,并能實(shí)時(shí)精確輸出地載體的航向角、縱傾角和橫傾角三個(gè)方向上的姿態(tài)數(shù)據(jù)等參數(shù),廣泛應(yīng)用于航海、航天、測(cè)量系統(tǒng)等領(lǐng)域。與Honeywell公司前一代數(shù)字電子羅盤(pán)HMR3000相比,具有更大的測(cè)量范圍,且接收數(shù)據(jù)的格式包不相同。數(shù)字電子羅盤(pán)HMR3500與上位機(jī)通過(guò)RS-232進(jìn)行串行通信,實(shí)現(xiàn)與上位機(jī)的信息交流與控制,從而在上位機(jī)中實(shí)現(xiàn)精確定位導(dǎo)航功能。在工業(yè)控制的機(jī)器中普遍裝有嵌入式操作系統(tǒng),本文結(jié)合帶有微軟Wince操作系統(tǒng)的設(shè)備平臺(tái)對(duì)HMR3500的應(yīng)用和開(kāi)發(fā)介紹。
HMR3500數(shù)字磁羅盤(pán)是一個(gè)很小的電路模塊。它的主要構(gòu)成部件如圖1所示,主要被用于測(cè)量模塊的三維定向。三個(gè)硅磁力計(jì)被用于測(cè)量地球的磁場(chǎng)。三個(gè)硅加速計(jì)被用于測(cè)量地心引力向量,同時(shí)在計(jì)算羅盤(pán)方位角時(shí)提供傾斜補(bǔ)償。輸入電源通過(guò)幾個(gè)集成電路供電電源裝置轉(zhuǎn)化達(dá)到模塊指定的電壓要求。數(shù)據(jù)和信號(hào)處理是通過(guò)一個(gè)16位微控制器及相關(guān)固件進(jìn)行的。固件將傳感器信號(hào)轉(zhuǎn)換成適當(dāng)?shù)碾x散型變量,并對(duì)加速計(jì)和磁力計(jì)的讀數(shù)進(jìn)行處理以完成傾斜補(bǔ)償[1]。
圖1 HMR3500數(shù)字磁羅盤(pán)模塊示意圖
HMR3500與工業(yè)控制計(jì)算機(jī)的接口是用標(biāo)準(zhǔn)的RS-232 T型頭接口,采用串口通信方式進(jìn)行數(shù)據(jù)傳輸。串口通信運(yùn)行的波特率為9 600 bit/s,1位開(kāi)始位,8位數(shù)據(jù)位,1位停止位,無(wú)奇偶校驗(yàn)位,非同步進(jìn)行。具體連接電路如圖2所示。
圖2 HMR3500數(shù)字磁羅盤(pán)通信接口示意圖
HMR3500數(shù)據(jù)包格式,格式如下
標(biāo)題 數(shù)據(jù) 文尾字節(jié)數(shù)5 18 1
標(biāo)題字段,格式如下
______________信息包源 信息包ID 字節(jié)計(jì)數(shù)_____字節(jié)數(shù)3 1 1
標(biāo)題字段的前三個(gè)字節(jié)是固定的,按照順序排列,分別為0x0D,0x0A和0x7E,它們分別為回車(chē)、換行和代字號(hào)(~)的ASCII代碼,信息包ID為返回的信息包類(lèi)型,0x70羅盤(pán)定向指令,字節(jié)計(jì)數(shù)為18字節(jié)。羅盤(pán)定向數(shù)據(jù)包字節(jié)如表1所示。
表1 HMR3500輸出數(shù)據(jù)格式
基于Wince嵌入式操作系統(tǒng)的軟件是由eVC開(kāi)發(fā)平臺(tái)開(kāi)發(fā),HMR3500通過(guò)RS-232與外部主機(jī)相連,發(fā)送與接收信息由簡(jiǎn)單的ASCII字符串組成的,滿足通信協(xié)議數(shù)據(jù)包格式,HMR3500根據(jù)指定的格式發(fā)送數(shù)據(jù)包到主機(jī),主機(jī)根據(jù)指令格式解析數(shù)據(jù)包,并完成數(shù)據(jù)處理,最終得到HMR3500返回的當(dāng)前狀態(tài)各項(xiàng)參數(shù)[2]。
串口編程的方法有使用 MSComm控件編程、使用WinAPI串口編程等,在eVC開(kāi)發(fā)環(huán)境下不存在MSComm控件,因此可以采用WinAPI串口編程方式。使用WinAPI進(jìn)行串口通信程序設(shè)計(jì),具有很強(qiáng)的靈活性,但編程復(fù)雜,編程人員需要多了解相關(guān)的函數(shù)。與HMR3500的通信,只需要在主機(jī)方編寫(xiě)接收程序即可。針對(duì)HMR3500的應(yīng)用編寫(xiě)串口程序的步驟可分為以下幾步:創(chuàng)建串口、配置串口、讀串口并數(shù)據(jù)處理、關(guān)閉串口[3]。
1)打開(kāi)串口
如圖3所示,經(jīng)過(guò)上述讀串口程序,將讀取的串口數(shù)據(jù)放到了char型字符組str中,從字符串str的起始位置查找包頭字符串,如果查找到包頭字符串,取出包頭字符串后18位字符存放到新的char型變量string中,否則返回重新讀取串口操作。在變量string中,分別針對(duì)HMR3500發(fā)送數(shù)據(jù)包的格式進(jìn)行解包,取出HMR3500對(duì)應(yīng)的數(shù)據(jù)字符位,并進(jìn)行int型強(qiáng)制轉(zhuǎn)換,將HMR3500要輸出的各參數(shù)高低位運(yùn)算求和,輸出電子羅盤(pán) HMR3500各項(xiàng)參數(shù)[4]。
4)關(guān)閉串口
圖3 HMR3500讀串口數(shù)據(jù)處理流程圖
由于HMR3500與主機(jī)通訊采用標(biāo)準(zhǔn)的RS-232串口通信,接口較為簡(jiǎn)單,采用高級(jí)語(yǔ)言能夠使得接收的數(shù)據(jù)控制處理比較靈活,且可移植性強(qiáng)。在工業(yè)控制計(jì)算機(jī)中,普遍采用Wince操作系統(tǒng),適合eVC編譯環(huán)境下開(kāi)發(fā),且與VC環(huán)境開(kāi)發(fā)幾乎相近,編程簡(jiǎn)單、易懂。此程序能在eVC編譯環(huán)境下編譯通過(guò),其精度高、響應(yīng)速度快,并能很好地應(yīng)用在已開(kāi)發(fā)的項(xiàng)目中。
[1]HMR3500 TruePoint Digital Compass User's Guide.Honeyewll.2007.8.
[2]汪兵,李存斌,陳鵬,等.EVC高級(jí)編程及其應(yīng)用開(kāi)發(fā)[M].北京:中國(guó)水利水電出版社,2005.
[3]龔建偉,熊光明.Visual C++/Turbo C串口通信編程實(shí)踐[M].北京:電子工業(yè)出版社,2004.
[4]文方,黃錢(qián)飛.HMR3000在機(jī)器人姿態(tài)自控系統(tǒng)上的應(yīng)用[J].工業(yè)控制與應(yīng)用,2010,29(6):27-28.
[5]張穎.基于高級(jí)語(yǔ)言的HMR3000模塊接口編程[J].兵工自動(dòng)化,2002,21(4):41-43.