新型捷達汽車(chē)組合儀表的串行通訊的實(shí)現
1 引 言
在開(kāi)發(fā)汽車(chē)儀表檢測設備的過(guò)程中,非常重要的工作就是實(shí)現工控機與汽車(chē)儀表的串行通訊。通過(guò)串行通訊可以實(shí)現對儀表軟、硬件版本的檢測、儀表里程清零及儀表調校等一系列儀表出廠(chǎng)前重要的檢測項目及參數設定。對應于“新捷達”型汽車(chē)組合儀表(西門(mén)子vdo公司產(chǎn)品),為實(shí)現技術(shù)安全性,故其串行口采用非標準串行通訊協(xié)議,是用一般的串口通訊控件所難以實(shí)現的,必須由熟悉儀表軟件結構的人員從底層編寫(xiě)通訊程序。
本文采用c++builder開(kāi)發(fā)平臺,在windows 98操作系統下,成功實(shí)現了與“新捷達”型汽車(chē)組合儀表的通訊,并具有美觀(guān)簡(jiǎn)潔的用戶(hù)操作界面。
2 newjetta型儀表串行通訊要求簡(jiǎn)述
2.1 硬件連接
文中工控機與儀表的硬件連接是從儀表的k-line經(jīng)過(guò)電平轉換器連接工控機的rs-232串行口,采用半雙工串行異步通訊方式。如圖1所示。

2.2 軟件規范
軟件規范關(guān)于串口數據通訊協(xié)議中包括了通信握手、多重校驗、出錯重發(fā)、超時(shí)處理等。
2.2.1 通訊初始化
當儀表點(diǎn)火信號端起動(dòng)約2 s后可以建立通訊響應。首先以5 b通訊速率發(fā)送信息,該信息包含1個(gè)起始位,7個(gè)數據位,1個(gè)奇偶校驗位和1個(gè)停止位(向儀表發(fā)送**h)。
儀表收到該信息后大約要等待一個(gè)約5 ms的循環(huán)時(shí)間,然后通訊模塊起動(dòng)。從此時(shí)起所有的通訊字節將以10 400 b/s的波特率來(lái)收發(fā)(此波特率為非標準波特率)。
經(jīng)過(guò)100 ms儀表送出同步字節(1個(gè)起始位,8個(gè)數據位,1個(gè)停止位,為**h),再經(jīng)過(guò)10 ms儀表送出密碼的低字節,10 ms后儀表送出密碼的高字節(1個(gè)起始位,7個(gè)數據位,1個(gè)奇偶校驗位,1個(gè)停止位,密碼值為****h)。
此后,儀表等待工控機送回倒序的密碼高字節。這種回送方式是本串行通訊的防錯處理機制。如果此字節儀表沒(méi)有接收到,那么儀表將再次發(fā)送同步字節和密碼字節。
當儀表接收到回送字節后,標準模塊通訊以10 400 b/s的波特率起動(dòng)(每字節包含1個(gè)起始位,8個(gè)數據位,1個(gè)停止位)。此時(shí),儀表開(kāi)始發(fā)送儀表id在這4個(gè)模塊的發(fā)送過(guò)程中,儀表與工控機之間又有很多的信息應答要求,如有差錯則通訊中止。
2.2.2 正常通訊過(guò)程
經(jīng)過(guò)通訊初始化后,正常通訊以10 400 b/s的波特率開(kāi)始建立,此時(shí)工控機可以發(fā)送命令字節流給儀表,來(lái)實(shí)現對儀表的控制及參數設置。每隔特定的時(shí)間間隔,儀表與工控機間仍須互送握手信號,否則通訊中止。
3 軟件程序設計
本通訊方式屬于零modem串行異步通訊。在異步通訊中,字符格式和波特率是2個(gè)重要指標。本文中通訊過(guò)程既有波特率的變化,也有幀格式的變化,對通訊的響應時(shí)間也有嚴格要求。
在c++builder可視化編程格式下不再支持直接對寄存器操作的函數,故首先用嵌入匯編的辦法實(shí)現inporb和outporb函數。本通訊的數據流是以字節為發(fā)送單位的,故編寫(xiě)字節收發(fā)函數,為查詢(xún)方式,如








4 結 語(yǔ)
本文采用c++builder軟件平臺成功開(kāi)發(fā)了儀表特殊串行口通訊程序,該系統在西門(mén)子vdo(蕪湖)公司生產(chǎn)線(xiàn)投入使用一年多,與采用快速通訊方式相比通訊傳輸性能穩定,并具有了方便美觀(guān)的用戶(hù)界面,為實(shí)現儀表檢測設備奠定了基礎,具有重要的應用價(jià)值。
評論