1 引言
汽車在為人類帶來便利的同時(shí),,也帶來了大氣污染,、環(huán)境噪聲及交通安全等一系列問題。因此,,如何把汽車廢氣和噪音污染限制在一定的范圍內(nèi),,同時(shí)又能做到安全性能相對較高,是汽車制造應(yīng)重點(diǎn)考慮的主要因素,。汽車本身是一個(gè)較為復(fù)雜的系統(tǒng),,出廠時(shí)都要求符合一定的標(biāo)準(zhǔn),但隨著行駛里程的增加和使用時(shí)間的延續(xù),,其性能和安全狀況將會不斷降低,,那么汽車運(yùn)行一段時(shí)間后是否還能滿足標(biāo)準(zhǔn)的要求?這就要定期對其進(jìn)行安全檢測,。汽車安全性能檢測就是對汽車的安全性能狀況進(jìn)行測試和檢驗(yàn)的一門技術(shù),,它已成為交通行業(yè)管理部門對車輛安全性能檢測和汽車生產(chǎn)維修行業(yè)以及汽車進(jìn)出廠檢驗(yàn)及故障診斷的主要技術(shù)手段。
2 系統(tǒng)構(gòu)成與硬件設(shè)計(jì)
汽車檢測分為汽車性能檢測和汽車安全檢測兩類,,本文主要針對汽車安全檢測介紹全檢車過程的自動控制原理與實(shí)現(xiàn),。圖1給出了汽車安全檢測計(jì)算機(jī)控制系統(tǒng)的各組成部分結(jié)構(gòu)框圖,。該系統(tǒng)主要由登錄機(jī)、上位機(jī)和下位機(jī)(各工位檢測設(shè)備及儀表)三個(gè)部分組成[1],。
3 系統(tǒng)核心軟件設(shè)計(jì)
本系統(tǒng)軟件主要涉及各檢測設(shè)備,、登錄機(jī)與上位機(jī)三個(gè)部分。各檢測設(shè)備程序一般均由廠家提供,,系統(tǒng)通過其接口程序調(diào)用使用設(shè)備,。登錄機(jī)功能較為單一,其軟件設(shè)計(jì)也不復(fù)雜,。此處著重以上位機(jī)監(jiān)控與管理軟件來分析說明系統(tǒng)核心功能模塊的軟件設(shè)計(jì)與實(shí)現(xiàn)過程,。
3.1 數(shù)據(jù)庫與數(shù)據(jù)報(bào)表設(shè)計(jì)與實(shí)現(xiàn)
按照“汽車檢測站計(jì)算機(jī)控制系統(tǒng)技術(shù)規(guī)范(JT/T478-2002)”[2]對數(shù)據(jù)庫設(shè)計(jì)的規(guī)定,要求在車輛上線檢測時(shí),,控制系統(tǒng)應(yīng)實(shí)時(shí)記錄檢測數(shù)據(jù),,并在完成一輛車輛的所有檢測項(xiàng)目后,控制系統(tǒng)應(yīng)立即將該車輛完備的檢測數(shù)據(jù)和判定結(jié)果存入數(shù)據(jù)庫,。為此,,本系統(tǒng)選用了SQL Server 2000作數(shù)據(jù)庫管理系統(tǒng)。整個(gè)系統(tǒng)建立一個(gè)數(shù)據(jù)庫AutosDetDB,,其中主要數(shù)據(jù)表有:車輛基本信息表BaseInfoT,,車輛檔案信息表AutosT,檢測項(xiàng)目信息表DetItmT,,檢測數(shù)據(jù)信息表DetDataT,,檢測項(xiàng)目判定表AssT,項(xiàng)目合格標(biāo)準(zhǔn)表DetStdT等,;前5個(gè)數(shù)據(jù)表通過車輛標(biāo)識碼VIN字段實(shí)現(xiàn)關(guān)聯(lián),。系統(tǒng)設(shè)有數(shù)據(jù)源Autos,統(tǒng)一采用ODBC數(shù)據(jù)接口訪問數(shù)據(jù)庫,,實(shí)現(xiàn)相關(guān)數(shù)據(jù)的插入,、刪除、修改及查詢操作,。
數(shù)據(jù)報(bào)表是車輛安全檢測站在車輛安檢完畢后向車主報(bào)告或反饋車輛安全性能狀況的重要技術(shù)手段,。根據(jù)“機(jī)動車安全檢驗(yàn)項(xiàng)目和方法(GA 468-2004)”[2]對報(bào)表設(shè)計(jì)的規(guī)范,要求報(bào)表必須涵蓋如下信息:檢測站名稱,,上線流水號,,車輛基本信息,車輛七項(xiàng)線內(nèi)檢測(尾氣,、車速,、燈光、喇叭、側(cè)滑,、軸重,、制動)的檢測結(jié)果及合格判定,線內(nèi)地溝檢查結(jié)果及合格判定,,外觀檢查與路試等線外檢驗(yàn)結(jié)果及合格判定,。考慮到該數(shù)據(jù)報(bào)表涉及的數(shù)據(jù)類型及數(shù)據(jù)格式較多,、布局錯(cuò)綜復(fù)雜這一情況,,報(bào)表設(shè)計(jì)未在VB的數(shù)據(jù)環(huán)境中使用數(shù)據(jù)報(bào)表設(shè)計(jì)器DataReport對象來進(jìn)行。而是先將系統(tǒng)數(shù)據(jù)報(bào)表在Word 2000中制成A4頁面大小的表格模板,,以Doc格式文檔存盤,;然后在上位機(jī)軟件報(bào)表窗體中引入OLE容器控件,,在該容器控件中插入事先創(chuàng)建好的Doc格式報(bào)表模板文件并在已加載報(bào)表模板的相應(yīng)位置均添加Label標(biāo)簽,,各標(biāo)簽與檢測數(shù)據(jù)信息表DetDataT中的相應(yīng)字段綁定。每當(dāng)車輛檢測完后,,報(bào)表模板中所有標(biāo)簽的Caption屬性均被自動更新為當(dāng)前車輛的各項(xiàng)目檢測值,,通過調(diào)用OLE控件所在窗體對象的PrintForm事件即可實(shí)現(xiàn)報(bào)表的實(shí)時(shí)打印輸出。
3.2 通信串口程序設(shè)計(jì)與實(shí)現(xiàn)
本系統(tǒng)上位機(jī)與檢測線上的所有檢測設(shè)備和儀表均采用基于串口的主從通信方式,。上位機(jī)自帶2個(gè)串口另加一塊PCI總線8串口卡,,共可提供10個(gè)通信串口。由圖1可知,,這10個(gè)串口分別負(fù)責(zé)與工位電子顯示屏以及分布在3個(gè)工位的9臺設(shè)備和儀表進(jìn)行數(shù)據(jù)通信,,同時(shí)在系統(tǒng)程序中加載10個(gè)串口通信控件。根據(jù)各檢測設(shè)備通信協(xié)議的要求,,設(shè)置相應(yīng)串口通信控件的關(guān)鍵屬性[3],。考慮到系統(tǒng)的靈活性及檢測線中檢測設(shè)備通信故障檢修的方便性,,系統(tǒng)可為各設(shè)備動態(tài)分配通信端口,。為統(tǒng)一操作和管理,系統(tǒng)定義了一個(gè)過程MultiComInit,,負(fù)責(zé)所有串口的初始化操作,;此外,還定義了一個(gè)過程MultiComCls,,負(fù)責(zé)所有串口的關(guān)閉操作,。以下以端口8為例,給出相應(yīng)串口的初始化程序代碼[4],。
'MSComCH串口控件負(fù)責(zé)與側(cè)滑儀通信
MSComCH.CommPort=8 '端口號,,可在1~10間設(shè)置
MSComCH.Settings="2400,n,8,1" '波特率,校驗(yàn)位,數(shù)據(jù)位,,停止位
MSComCH.InputMode=comInputModeBinary '二進(jìn)制數(shù)據(jù)傳輸方式
MSComCH.InBufferSize=512 '接收緩沖區(qū)大小
MSComCH.OutBufferSize=512 '發(fā)送緩沖區(qū)大小
MSComCH.RThreshold=12 '接收12字節(jié)產(chǎn)生oncomm事件
MSComCH.SThreshold=0 '禁止發(fā)送字節(jié)產(chǎn)生oncomm事件
MSComCH.PortOpen=True '打開串口
3.3 待檢項(xiàng)目車輛就位程序設(shè)計(jì)與實(shí)現(xiàn)
車檢時(shí)車輛就位極為關(guān)鍵,。安檢線上只有地溝屬線內(nèi)目視檢查項(xiàng)目,對車輛定位沒有嚴(yán)格要求,;此外其他項(xiàng)目檢測均需車輛精確定位,,否則,檢測就無法進(jìn)行或是檢測結(jié)果不準(zhǔn)確,。本檢測線上各項(xiàng)目檢測點(diǎn)均安裝了光電開關(guān)或遙控開關(guān),,這些開關(guān)直接與上位機(jī)PCI-1762數(shù)字I/O卡各DI端口相連,系統(tǒng)通過實(shí)時(shí)判斷相應(yīng)DI端口的電平變化情況即可判定受檢車是否就位,。下面以汽車軸重檢測為例,,對本系統(tǒng)車輛就位功能模塊的設(shè)計(jì)過程加以說明。
汽車軸重儀傳感器部分由一對電子稱組成,,可用于實(shí)現(xiàn)同軸左右輪的稱重,。軸重檢測時(shí)需要前后兩對光電開光(靠近車頭的為前光電開關(guān))實(shí)現(xiàn)被檢軸定位。假定連接這兩對光電開關(guān)的I/O卡兩DI端口的電平變化情況存放在DI(0)和DI(1)數(shù)組元素中,。數(shù)組元素值為1,,表示光電信號被車輪遮擋;反之,,則表示光電信號未被車輪遮擋,。圖2描述了軸重檢測時(shí)被檢車輛當(dāng)前車軸的就位判定過程,圖中TmrDW定時(shí)間隔表示車軸就位時(shí)間,,該時(shí)間可視實(shí)際情況自由設(shè)定,。
3.4 檢測程序設(shè)計(jì)與實(shí)現(xiàn)
車輛安全檢測涉及的檢測項(xiàng)目較多,這里僅以核心檢測項(xiàng)目之一——制動檢測為例,,對其檢測程序的設(shè)計(jì)過程進(jìn)行描述,。制動檢測主要實(shí)現(xiàn)對車輛各軸左右輪制動力的檢測,本系統(tǒng)采用HYZD-10型制動儀來完成這一檢測過程,。在檢測各軸制動力時(shí),,上位機(jī)啟動設(shè)備檢測后,制動儀不斷采樣制動力并上傳采樣數(shù)據(jù),,同時(shí),,上位機(jī)利用串口事件觸發(fā)方式接收采樣數(shù)據(jù)并實(shí)時(shí)繪制制動力變化曲線,找出制動期間左右輪的最大制動力以及兩輪制動力最大差值點(diǎn)時(shí)刻左右輪制動力,。以上信息都是制動檢測項(xiàng)目合格與否的重要衡量指標(biāo),。下面給出的是連續(xù)制動5秒鐘期間系統(tǒng)繪制的同軸左右兩輪制動力變化曲線(見圖3)及繪制制動力曲線的部分主要程序代碼,其中,,數(shù)組LX,、RX分別用于存放左、右輪制動力線段的X軸坐標(biāo);數(shù)組LY,、RY分別用于存放左,、右輪制動力線段的Y軸坐標(biāo)。
OnComCnt=OnComCnt+1 '串口事件觸發(fā)計(jì)數(shù)
If OnComCnt=1
LX(1)=OnComCnt:LY(1)=TmpL '計(jì)算左輪制動力終點(diǎn)坐標(biāo)
RX(1)=OnComCnt:RY(1)=TmpR '計(jì)算右輪制動力終點(diǎn)坐標(biāo)
Else
LX(0)=LX(1):LY(0)=LY(1) '計(jì)算左輪制動力起點(diǎn)坐標(biāo)
LX(1)=OnComCnt:LY(1)=TmpL '計(jì)算左輪制動力終點(diǎn)坐標(biāo)
RX(0)=RX(1):RY(0)=RY(1) '計(jì)算右輪制動力起點(diǎn)坐標(biāo)
RX(1)=OnComCnt:RY(1)=TmpR '計(jì)算右輪制動力終點(diǎn)坐標(biāo)
End If
Pict.DrawStyle=0 '定義線型及顏色, 畫線
Pict.Line (LX(0),LY(0))-(LX(1),LY(1)),vbRed
Pict.Line (RX(0),RY(0))-(RX(1),RY(1)),vbBlue
4 結(jié)束語
該系統(tǒng)已用于本市機(jī)動車檢測中心的汽車安全檢測線,,日檢車達(dá)320輛,,高峰時(shí)系統(tǒng)允許5輛車同時(shí)在線檢測。除地溝檢查和尾氣檢測的插取樣管作業(yè)外,,其余項(xiàng)目檢測無需人工參與,,基本實(shí)現(xiàn)了無人化自動檢車。與其它檢測線相比,,本系統(tǒng)總體協(xié)調(diào)性好,,能較好地均衡各工位的工作負(fù)荷,檢車效率提高了0.7倍左右,。系統(tǒng)軟件可操作性強(qiáng),,人機(jī)界面友好。主控程序采用了前一工位封鎖后一工位的級聯(lián)式集中控制策略,,從而可確保檢測次序和防止數(shù)據(jù)錯(cuò)亂,,提高了系統(tǒng)穩(wěn)定性和檢測結(jié)果準(zhǔn)確可靠性,。此外,,上位主控機(jī)可動態(tài)設(shè)置各檢測設(shè)備的通信串口號,便于系統(tǒng)維護(hù)和設(shè)備通信故障調(diào)試,。但上,、下位機(jī)間采用主從式串口通信,使得它們之間的數(shù)據(jù)交互傳輸距離成了本系統(tǒng)的一個(gè)瓶頸,,因此,,這一不足還有待于今后努力探索和解決。