基于RS-485總線(xiàn)的汽車(chē)四輪定位儀通訊功能的實(shí)現(xiàn)
摘要: 汽車(chē)四輪定位儀為一分布式計(jì)算機(jī)測(cè)控系統(tǒng),本文介紹了通過(guò)RS-485總線(xiàn)并利用VB 6.0 ActiveX控件的MSComm通訊控件,實(shí)現(xiàn)了汽車(chē)四輪定位儀中單臺(tái)PC機(jī)與多臺(tái)單片機(jī)的通訊功能。
關(guān)鍵詞:RS-485;串行通訊;四輪定位;VB;檢測(cè)
1、引言
汽車(chē)在正常行駛過(guò)程中,應(yīng)具有轉(zhuǎn)向操縱輕便和自動(dòng)保持直線(xiàn)行駛的能力,同時(shí)轉(zhuǎn)向輪應(yīng)盡可能為純滾動(dòng),以減輕輪胎的磨損及降低燃油消耗。上述要求的實(shí)現(xiàn)通常是通過(guò)轉(zhuǎn)向輪定位的4個(gè)參數(shù)(主銷(xiāo)后傾角、主銷(xiāo)內(nèi)傾角、車(chē)輪外傾角和前束)來(lái)保證的。由于目前汽車(chē)多數(shù)采用前輪轉(zhuǎn)向,所以轉(zhuǎn)向輪定位通常稱(chēng)為前輪定位?,F(xiàn)代汽車(chē)不僅前輪具有定位參數(shù),目前許多轎車(chē)后輪也設(shè)定了前束、外傾和推力角三項(xiàng)定位參數(shù),其目的是使前、后輪在路面上的運(yùn)動(dòng)軌跡盡可能重合,既保證了轎車(chē)高速行駛的穩(wěn)定性和安全性,又有助于減輕輪胎及懸架各零件的磨損。
汽車(chē)運(yùn)行一定時(shí)間或更換某些零件后,四輪定位參數(shù)會(huì)發(fā)生變化,因此需要及時(shí)或定期對(duì)車(chē)輛定位參數(shù)進(jìn)行檢測(cè),若超過(guò)廠(chǎng)家給定的標(biāo)準(zhǔn)值,便應(yīng)進(jìn)行調(diào)整,以恢復(fù)車(chē)輛的行駛穩(wěn)定性、安全性、燃油經(jīng)濟(jì)性,減低輪胎和有關(guān)機(jī)件的磨損。
車(chē)輪定位檢測(cè)方式有動(dòng)態(tài)檢測(cè)和靜態(tài)檢測(cè)兩種方法。動(dòng)態(tài)檢測(cè)使用側(cè)滑試驗(yàn)臺(tái),用來(lái)在汽車(chē)運(yùn)動(dòng)過(guò)程中對(duì)汽車(chē)的前輪前束值和車(chē)輪外傾角的匹配情況進(jìn)行檢測(cè)。其特點(diǎn)是操作簡(jiǎn)便,速度快,非常適合快速檢測(cè),但不能測(cè)出單項(xiàng)車(chē)輪定位值,這種檢測(cè)方式在汽車(chē)安檢線(xiàn)或綜檢線(xiàn)上得到了廣泛的應(yīng)用。靜態(tài)檢測(cè)使用四輪定位儀,其可以在汽車(chē)靜態(tài)的情況下,測(cè)出車(chē)輪的各種定位參數(shù)值,是目前應(yīng)用最廣泛的車(chē)輪定位檢測(cè)方式。
目前國(guó)內(nèi)四輪定位儀的形式主要有三種,即拉線(xiàn)式、無(wú)線(xiàn)測(cè)量有線(xiàn)傳輸式和全無(wú)線(xiàn)式。拉線(xiàn)式四輪定位儀因操作不方便,影響測(cè)量精度的因素較多,目前已基本上被淘汰。全無(wú)線(xiàn)式的特點(diǎn)是采用光學(xué)非接觸式測(cè)量,主機(jī)與傳感器之間采用無(wú)線(xiàn)信息傳輸,測(cè)量精度高,使用方便。無(wú)線(xiàn)測(cè)量有線(xiàn)傳輸式同全無(wú)線(xiàn)式的主要區(qū)別是采用信號(hào)電纜來(lái)傳遞檢測(cè)數(shù)據(jù),盡管在使用方面不如全無(wú)線(xiàn)式方便,但具有信息傳遞和檢測(cè)速度快、可靠,不存在更換電池、電池充電,使用成本低等優(yōu)點(diǎn),目前應(yīng)用同樣較廣泛。
現(xiàn)代四輪定位儀全部采用微機(jī)控制,負(fù)責(zé)控制和管理任務(wù)的上位機(jī)(PC機(jī))通過(guò)現(xiàn)場(chǎng)總線(xiàn)與負(fù)責(zé)數(shù)據(jù)采集任務(wù)的若干個(gè)下位機(jī)(單片機(jī))相連,二者組成了一分布式計(jì)算機(jī)控制和測(cè)量系統(tǒng)。通訊系統(tǒng)軟硬件的設(shè)計(jì)和選擇是四輪定位儀設(shè)計(jì)的關(guān)鍵技術(shù)之一,對(duì)系統(tǒng)的整體性能影響較大。RS-232C 串行通訊接口是PC機(jī)的標(biāo)準(zhǔn)配置,接口簡(jiǎn)單,編程方便,但只能用于兩臺(tái)微機(jī)之間的連接,不能滿(mǎn)足多接點(diǎn)連接的需要。我們采用了目前在工業(yè)測(cè)控系統(tǒng)中比較流行的RS-485 通訊接口,并通過(guò)VB 6.0的通訊控件MSComm方便的實(shí)現(xiàn)了多臺(tái)單片機(jī)的集中控制和數(shù)據(jù)采集,較好的解決了四輪定位儀中的通訊問(wèn)題。
2、四輪定位儀的系統(tǒng)構(gòu)成
四輪定位儀的系統(tǒng)的構(gòu)成如圖1所示。 整個(gè)系統(tǒng)由一個(gè)上位機(jī)和四個(gè)下位機(jī)組成。上位機(jī)為PC微型計(jì)算機(jī),負(fù)責(zé)對(duì)測(cè)量過(guò)程的控制、讀取下位機(jī)的檢測(cè)數(shù)據(jù)、數(shù)據(jù)處理與計(jì)算以及結(jié)果顯示、存儲(chǔ)、打印及管理等。四個(gè)下位機(jī)均由單片機(jī)系統(tǒng)組成,單片機(jī)采用AT89C51, 用于實(shí)現(xiàn)各車(chē)輪定位角度的測(cè)量控制及數(shù)據(jù)上傳功能。單片機(jī)分別位于左前、左后、右前和右后機(jī)頭的殼體內(nèi),機(jī)頭與卡具相連,測(cè)量時(shí)機(jī)頭通過(guò)卡具分別固定到汽車(chē)四個(gè)車(chē)輪的輪輞上。整個(gè)系統(tǒng)共采用了十四個(gè)傳感器,其中垂直平面內(nèi)角度(包括主銷(xiāo)后傾角、主銷(xiāo)內(nèi)傾角和車(chē)輪外傾角)的測(cè)量由六個(gè)精密傾角傳感器實(shí)現(xiàn)(其中前機(jī)頭各兩個(gè),后機(jī)頭各一個(gè)),八個(gè)PSD(Position Sensitive Detector)光學(xué)傳感器(前后機(jī)頭各兩組)用于測(cè)量水平平面內(nèi)車(chē)輪各定位角度。
圖1 四輪定位儀的系統(tǒng)構(gòu)成
3、系統(tǒng)通訊功能硬件的實(shí)現(xiàn)
標(biāo)準(zhǔn)的RS-232接口只能用于兩臺(tái)計(jì)算機(jī)之間的連接,PC機(jī)的兩個(gè)RS-232接口COM1和COM2最多也只能連接兩個(gè)單片機(jī),若再擴(kuò)展一塊串行通訊卡,使得四個(gè)串口分別與四個(gè)下位機(jī)相連,則不但價(jià)格高,而且結(jié)構(gòu)也較復(fù)雜。為此采用了目前在分布式工業(yè)測(cè)控系統(tǒng)中比較流行的RS-485總線(xiàn)。與RS-232相比RS-485接口具有以下特點(diǎn):
(1)接口電平比RS-232 C接口低,不易損壞接口電路的芯片,且電平與TTL電平兼
容,可方便與TTL電路連接。
(2)數(shù)據(jù)傳送速率高,波特率高達(dá)10Mbps。
(3)采用平衡驅(qū)動(dòng)器和差分接收器,抗共模干擾能力強(qiáng),即抗噪聲干擾性好。
(4)傳輸距離遠(yuǎn),最大傳輸距離為4000英尺。
(5)總線(xiàn)上可以連接多達(dá)256個(gè)收發(fā)器,即具有多站能力,用戶(hù)可以利用單一的RS-485接口方便的建立起通訊網(wǎng)絡(luò)。
在本系統(tǒng)中PC機(jī)通過(guò)RS-232接口,經(jīng)RS-232/RS-485轉(zhuǎn)換模塊與四個(gè)機(jī)頭相連,每個(gè)機(jī)頭的單片機(jī)也經(jīng)RS-485接口模塊掛在總線(xiàn)上,并都被賦于各自的通訊地址碼以識(shí)別身份。單片機(jī)所用的RS-485收發(fā)器為美信公司的MAX3082,這是一種高速,具有失效保護(hù)和限擺率功能的收發(fā)器芯片。這樣上位PC機(jī)便能通過(guò)RS-485總線(xiàn)與每個(gè)機(jī)頭的單片機(jī)進(jìn)行通訊,實(shí)現(xiàn)對(duì)定位參數(shù)的數(shù)據(jù)采集與過(guò)程控制。
4、系統(tǒng)通訊功能軟件的實(shí)現(xiàn)
4.1 系統(tǒng)的通訊方式
PC計(jì)算機(jī)與各機(jī)頭之間的通訊采用半雙工方式,通訊波特率為9600bps,通訊格式為:1位起始位,8位數(shù)據(jù)位,無(wú)奇偶校驗(yàn),1位停止位,每個(gè)機(jī)頭被賦予唯一的本機(jī)地址。主機(jī)通過(guò)發(fā)送命令幀啟動(dòng)一次通訊和數(shù)據(jù)采集,從機(jī)接收到命令幀后,判斷呼叫地址是否和本機(jī)地址相同,若相同,則根據(jù)命令字執(zhí)行相應(yīng)的數(shù)據(jù)采集并將檢測(cè)結(jié)果通過(guò)數(shù)據(jù)幀傳給主機(jī);若不同,則根據(jù)地址和命令字判斷是否發(fā)射紅外測(cè)量光。命令幀的格式如下:
第一項(xiàng)為幀頭(STX),用以標(biāo)志一幀的開(kāi)始;第二項(xiàng)為從機(jī)地址碼(ADDR);第三項(xiàng)命令字表示機(jī)頭回傳的數(shù)據(jù)內(nèi)容或本次檢測(cè)內(nèi)容,第四項(xiàng)FCS為異或校驗(yàn),為前面數(shù)據(jù)的異或校驗(yàn)和用于通訊校錯(cuò)。
數(shù)據(jù)幀的格式如下:
數(shù)據(jù)幀與命令幀除第三項(xiàng)外,其它意義相同,數(shù)據(jù)幀的第三部?jī)?nèi)容是從機(jī)根據(jù)主機(jī)發(fā)出的命令幀向主機(jī)發(fā)出的定位參數(shù)檢測(cè)數(shù)據(jù)。
4.2 VB6.0的MSComm控件及串行通訊控制的實(shí)現(xiàn)
VB6.0提供了一個(gè)ActiveX控件――Microsoft Communication Control,Version 6.0,稱(chēng)為MSComm控件,利用它可以方便地進(jìn)行計(jì)算機(jī)串口的通訊管理。MSComm控件有許多與串口有關(guān)的屬性,這里不再做詳細(xì)介紹。
串口接收到信息時(shí)MSComm 控件提供兩種處理方法,一種為查詢(xún)方式,另一種為事件響應(yīng)方式,即利用SetCommEvent()函數(shù)設(shè)置串口響應(yīng)事件。當(dāng)響應(yīng)事件發(fā)生時(shí),系統(tǒng)會(huì)激活OnComm()事件。在OnComm()事件中添加用戶(hù)處理代碼,則可實(shí)現(xiàn)類(lèi)似中斷的串口事件處理,本系統(tǒng)采用了事件響應(yīng)方式。
PC機(jī)通訊軟件的任務(wù)是控制檢測(cè)過(guò)程并讀取和處理車(chē)輪定位參數(shù)實(shí)時(shí)數(shù)據(jù)。接收和發(fā)送數(shù)據(jù)采用文本格式,主機(jī)呼叫從機(jī)無(wú)應(yīng)答時(shí),設(shè)有報(bào)警提示功能。以下給出了控件初始化和發(fā)送命令的部分源代碼。
(1)控件的初始化:
MSComm1.CommPort=2 ’選用COM2口通訊
MSComm1.Setting=“9600,N,8,1 ” ’設(shè)置通訊參數(shù)
MSComm1.Inputlen=0 ’讀取緩沖區(qū)全部?jī)?nèi)容
MSComm1.InBufferSize=50 ’設(shè)置接收緩沖區(qū)大小
MSComm1.OutBufferSize=20 ’設(shè)置發(fā)送緩沖區(qū)大小
MSComm1.InputMode=comInputModeText ’以文本形式接收數(shù)據(jù)
MSComm1.PortOpen=True ’打開(kāi)通訊端口
MSComm1.InBufferCount=0 ’清除接收緩沖區(qū)
MSComm1.OutbufferCount=0 ’清除發(fā)送緩沖區(qū)
(2)命令的發(fā)送(以前輪前束為例):
Dim Command, node, c, f As string
Dim i, fcs As integer
node=”01” ’節(jié)點(diǎn)號(hào),表示右前機(jī)頭
Command=”FT” ’ 前輪前束檢測(cè)
c=”@”+node+Command
fcs=0
For i=1 To Len(c)
fcs=fcs Xor Asc(Mid$(c,i,1)) ’ 幀校驗(yàn)碼FCS
Next i
f=Hex$(fcs)
if Len(f)=1 Then f=”0”+f
MSComm1.Output=c+f
5、結(jié)論
通過(guò)RS-485總線(xiàn)并利用VB6.0下的ActiveX控件實(shí)現(xiàn)了汽車(chē)四輪定位儀中主機(jī)PC機(jī)與多個(gè)從機(jī)之間的通訊,實(shí)踐證明本系統(tǒng)的通訊功能運(yùn)行可靠,設(shè)計(jì)合理。
參考文獻(xiàn)
[1] 精英科技譯. 串行端口大全[M]. 中國(guó)電力出版社. 2001
[2] 龔沛曾, 陸慰民, 揚(yáng)志強(qiáng). Visual Basic 程序設(shè)計(jì)教程(6.0版)[M]. 高等教育出版社. 2000
[3] 鄒宗峰, 裴仁清. 用VB實(shí)現(xiàn)OMRON系列PLC與微機(jī)的通訊[J]. 機(jī)電一體化. 2001,(1):59-60.
評(píng)論