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