董 浩,王 建,趙云波
(北京航空航天大學 交通科學與工程學院,北京 100191)
汽車儀表經歷機械式、電氣式、模擬電路電子式和全數(shù)字式的發(fā)展過程,目前正處在從模擬電路電子式轉向全數(shù)字式的時期。帶CAN總線接口的汽車儀表采集并處理傳感器的車速、油量、油壓等信號,并根據(jù)SAE J1939協(xié)議讀取發(fā)動機轉速、水溫等信息。該型汽車儀表具有指示精度高、反應靈敏、結構簡單、可靠性高等優(yōu)點,代表汽車儀表的發(fā)展方向。
控制器局域網CAN(Controller Area Network)是用于眾多控制單元、測試儀器之間實時數(shù)據(jù)交換而開發(fā)的一種串行通信協(xié)議,CAN2.0包括2.0A和2.0B兩部分。CAN拓撲結構為總線式,所以也稱CAN總線。SAE J1939協(xié)議是以CAN2.0B作為網絡核心協(xié)議,用于客車、貨車、農業(yè)及建筑車輛的網絡串行通信和控制協(xié)議。該協(xié)議通過對CAN擴展幀的29位標識符編碼,用CAN數(shù)據(jù)幀封裝其數(shù)據(jù)信息,從而形成獨特的編碼系統(tǒng)。作為車輛通訊標準,該協(xié)議明確規(guī)定汽車內部ECU的地址配置、命名、通訊方式以及報文發(fā)送優(yōu)先級等,詳細說明汽車內部具體ECU通訊內容。SAE J1939協(xié)議標準更大限度地發(fā)揮CAN優(yōu)異的性能,減少線束數(shù)量,實現(xiàn)車輛電子設備間高速數(shù)據(jù)傳輸。
CAN支持4種類型的報文幀傳送信息:數(shù)據(jù)幀(Data Frame)、遠程幀(Remote Frame)、出錯幀(Error Frame)和超載幀(Overload Frame)。CAN有2類消息幀:標準幀和擴展幀,其本質的差別在于標識符 (ID)的長度,標準幀的ID有11位,擴展幀則有18位[1]。表1為CAN擴展格式數(shù)據(jù)幀結構。
CAN數(shù)據(jù)幀分為以下位場:起始場(SOF)、仲裁場、控制場、數(shù)據(jù)場、循環(huán)冗余校驗場(CRC)、應答場(ACK)和幀結束(EOF)。控制場由6位組成,包括數(shù)據(jù)長度碼(DLC)和2個保留位r1、r0,在數(shù)據(jù)幀里這2位必須為顯性位。DLC為4位,指出數(shù)據(jù)場里的字節(jié)數(shù)目,編碼為0~8。循環(huán)冗余校驗CRC場由15位CRC序列及CRC邊界符組成。CRC范圍包括幀起始、仲裁場、控制場和數(shù)據(jù)場。應答場(ACK)長度為2位,包含應答間隙和應答界定符。在應答場中,發(fā)送器發(fā)送這2位為隱性位。當接收器正確接收到有效報文時,會在應答間隙期間向發(fā)送器發(fā)送一顯性位以示應答。每一數(shù)據(jù)幀均由7位隱性電平組成幀結束。
J1939協(xié)議支持CAN 2.0協(xié)議標準,使用擴展幀格式以報文為單位傳送信息。協(xié)議數(shù)據(jù)單元(PDU)是J1939協(xié)議定義的一個框架,用以組織CAN數(shù)據(jù)幀中與J1939協(xié)議相關的關鍵信息。 PDU 由優(yōu)先權域(P)、保留域(R)、數(shù)據(jù)頁域(DP)、PDU格式域(PF)、組成標識符的PDU特定域(PS)和源地址域(SA),以及數(shù)據(jù)域(Data Field)共 7 個位域組成[2]。這些位域分別對應CAN擴展幀的29位標識符和數(shù)據(jù)域。其中PS是一個8位段,其定義取決于PF值。若PF值小于240,PS是目標地址 (DA);若PF值在240~255之間,則PS為組擴展(GE)。CAN擴展幀格式和SAE J1939信息幀格式標識符比較如表2所示[3]。PDU的定義并未將CAN幀中的SOF(幀起始)、SRR(替代遠程請求)、IDE(識別符擴展)、RTR(遠程請求),部分控制域、CRC(校驗域)、ACK(應答域)及 EOF(幀結束)等控制域歸入,因為這些域已由CAN2.0規(guī)范明確定義,并且當OSI模型高于數(shù)據(jù)鏈路層時它們是不可見的。
表1 CAN擴展幀格式數(shù)據(jù)幀結構
表2 CAN擴展幀格式和J1939信息幀格式標識符比較
應用層定義J1939協(xié)議的數(shù)據(jù)長度、數(shù)據(jù)類型、分辨率、范圍及參考標簽等參數(shù),并為每個參數(shù)分配1個編號(SPN)。由于J1939協(xié)議是以協(xié)議數(shù)據(jù)單元(PDU)的形式傳輸數(shù)據(jù),而1個PDU可傳輸8個字節(jié)數(shù)據(jù)。所以,需要對參數(shù)進行組合傳輸。J1939應用層協(xié)議中定義參數(shù)組,并為每個參數(shù)組分配一個編號(PGN)作為該參數(shù)組的唯一標簽。參數(shù)組內容包括該組參數(shù)的更新率、有效數(shù)據(jù)長度、數(shù)據(jù)頁、PDU格式、PDU待定、默認優(yōu)先級以及數(shù)據(jù)域的具體內容。以電子發(fā)動機控制器1(EEC1)為例說明SAE J1939協(xié)議標準下的CAN數(shù)據(jù)幀[4]。J1939對電子發(fā)動機控制器 1(EEC1)定義如下:
PGN 61444 電子發(fā)動機控制器1
發(fā)動機相關參數(shù):
傳輸循環(huán)速度:依發(fā)動機轉速決定;數(shù)據(jù)長度:8個字節(jié);數(shù)據(jù)頁:0;PDU 格式(PF):240;PDU 待定(PS):3;默認優(yōu)先級:3;參數(shù)組編號(PGN):61444 (0xF004)
根據(jù)SAE J1939協(xié)議的定義,參數(shù)EEC1的PDU編碼應為“0C F0 04 00 XX XX XX XX XX XX XX XX (XX 表示任意數(shù)據(jù))”,其中前4個字節(jié)為29位標識符,后8個字節(jié)為數(shù)據(jù)域,其中數(shù)據(jù)域中第4、5字節(jié)表示發(fā)動機轉速。若收到來自發(fā)動機控制單元的數(shù)據(jù)為0C F0 04 00 XX XX XX 5D C0 XX XX XX,根據(jù)這2個字節(jié)的數(shù)值及SPN190中的定義可算得發(fā)動機轉速[5]:
發(fā)動機轉速=原始數(shù)×分辨率+偏移量=24 000(0x5DC0)×0.125+0=3 000 r/m。
同樣,根據(jù)J1939的定義還可以計算出汽車儀表所需的其他數(shù)據(jù)。然后交由儀表ECU處理并驅動顯示部件準確顯示當前的車輛狀態(tài)。
該汽車數(shù)字儀表系統(tǒng)由信號采集和處理顯示等模塊組成,圖1為應用MC9S12HZ256微控制器的總線式汽車數(shù)字儀表組成框圖。
圖1 汽車數(shù)字儀表組成框圖
信號采集包含CAN總線數(shù)據(jù)采集和傳感器數(shù)據(jù)采集。通過模擬量信號分壓,脈沖信號濾波整形,開關信號光電隔離,微處理器采集傳感器信號,同時通過收發(fā)器讀取CAN總線信號,然后進行信號處理,再通過控制器驅動步進電機,LCD液晶屏及其他器件。在實際車載環(huán)境中,該系統(tǒng)設計遵循SAE J1939協(xié)議在CAN總線上獲取發(fā)動機轉速、水溫和故障代碼信息,車速、油量、機油壓力、制動氣壓等信息則以模擬量和脈沖量形式從相應傳感器讀取。
MC9S12HZ256是飛思卡爾公司生產的MC9S12系列面向汽車儀表應用的增強型16位單片機微控制器(MCU)。其集成度高,片內資源豐富,功能強大,接口模塊包括SPI、SCI、I2C、A/D、PWM等[6]。采用增強型 16位 S12CPU,加入鎖相環(huán)電路,可產生高于外部晶振頻率的時鐘信號,片內總線時鐘頻率最高達25 MHz;具有12 KB RAM、2 KB的EEPROM;2個異步串行通信接口(SCI),1 個同步串行設備接口(SPI),1 個I2C 總線接口(I2C);1個 8通道 16位定時器(TIM),1個 16通道 10位模數(shù)轉換器 (ATD),1個6通道脈沖寬度調制器(PWM),2個CAN控制器模塊(兼容 CAN 2.0 A/B)。 此外,這款MCU還集成1個32×4的液晶驅動模塊(LCD)。再有該單片機的背景調試模式(BDM)和CodeWarrior開發(fā)環(huán)境,使應用該款單片機的總線式汽車數(shù)字儀表的外圍硬件電路相對簡化,開發(fā)過程簡單、方便。
步進電機是將電脈沖信號轉換成相應的角位移或線位移的轉換器,且其轉速或線速度與脈沖頻率成正比。步進電機可以用脈沖信號直接進行開環(huán)定位控制,無需位置或速度傳感器。VID29系列步進電機內置減速比180/1的齒輪系,可工作于5~10 V的脈沖下。在微步模式下,1個脈沖可使轉子轉動 15°,相應輸出軸轉動(1/12)°,最大角速度 600(°)/s。 每片VID66-06儀表步進電機驅動芯片可同時驅動4路步進電機以微步模式工作,工作原理如圖2所示。每個步進電機只需2路控制信號。在輸入信號F(SCX)的上升沿驅動電機輸出軸轉動 1 個微步,即(1/12)°,輸入信號“CW/CCW”(順時針/逆時針)控制步進電機輸出軸轉向。
圖2 VIDD66-06工作原理
主控器件MC9S12H256集成有支持CAN2.0A/B的CAN控制器,并集成CAN協(xié)議的物理層和數(shù)據(jù)鏈路層功能,可完成對數(shù)據(jù)通信的成幀處理,包括位填充、數(shù)據(jù)塊編碼、CRC校驗和優(yōu)先級判別等。選用CAN收發(fā)器PCA82C250,該收發(fā)器適用于汽車中高速(高達1 Mb/s)CAN總線數(shù)據(jù)傳輸。設置終端電阻(一般為120 Ω)與CAN控制器與物理總線間的接口,以提升總線的差動發(fā)送和接收功能。圖3為CAN接口電路。
圖3 CAN接口電路
霍爾式車速傳感器的輸出信號為矩形波,磁電式車速傳感器的輸出信號為正弦波,信號頻率與車速均成正比。速度信號經處理電路轉換為單片機能夠處理的矩形波信號,測量車速即測量矩形波頻率。
周期法是利用標準時鐘信號序列填充被測信號的一個或多個周期,通過計數(shù)標準時鐘脈沖個數(shù)來計算被測信號周期的測量方法[7]。被測信號周期為T,參考時基信號周期為τ,標準脈沖個數(shù)為n,被填充的被測信號周期個數(shù)為N,則有:
測量誤差主要來自2部分:一部分是標準時基的相對誤差dτ/τ,由于標準時基是由單片機內部的石英晶振產生的,這部分誤差通常在10-6以下,可忽略;另一部分是計數(shù)誤差dn/n,該誤差產生的原理如圖4所示。
圖4 周期法測量車速信號原理
時基信號序列的最后一個正跳變未處在被填充的被測信號范圍內,可產生的最大計數(shù)誤差為-1。這部分誤差在低速時很小,在高速時稍大。以車輛特征系數(shù)(車輛行駛每公里里程時速度傳感器的轉數(shù))為1 320,8脈沖車速傳感器為例,標準時基信號周期為50 μs,車速為100 km/h時,最大相對誤差為1.47%,車速為180 km/h時,最大相對誤差為2.64%。完全符合汽車摩托車儀表標準QC/T727-2004中對車速表誤差的基本要求。適當降低時基信號周期τ和高速時增加N值可減小誤差。周期法計算車速V:
式中,Z為輪速傳感器旋轉一周輸出脈沖個數(shù);Ω為車輛特征系數(shù),即汽車每行駛1 km輪速傳感器的轉數(shù)。
主程序流程和讀取CAN信息流程如圖5所示。該汽車數(shù)字儀表主要完成數(shù)據(jù)采集、數(shù)據(jù)處理、數(shù)值顯示以及與上位機通信等功能。本儀表的功能是不斷接收信息并進行信息傳送、處理、輸出顯示和報警的循環(huán)過程。開機后系統(tǒng)首先初始化主控制器、CAN節(jié)點、LCD液晶屏、步進電機,讀取EEPROM中數(shù)值并使能CAN中斷,設置CAN屏蔽碼和驗收碼。接著進入主程序,各步進電機快速回位,指針歸零。然后采集外部信號,計算車速、油壓等信息并讀取CAN總線上的消息隊列,根據(jù)J1939協(xié)議計算判斷發(fā)動機轉速、水溫和故障代碼信息,處理這些信息并控制步進電機和液晶屏顯示。
圖5 軟件設計流程
研究CAN總線通訊協(xié)議及SAE J1939協(xié)議,實現(xiàn)了基于CAN總線的汽車數(shù)字儀表系統(tǒng)設計。軟件設計實現(xiàn)了汽車儀表的各項功能。該軟件設計充分利MC9S12HZ256微控制器中集成的功能模塊,減少外圍電路器件用量。該儀表響應快速、定位精確、工作可靠。隨著總線技術的日益發(fā)展以及相關法規(guī)對汽車電子控制要求的提高,基于CAN總線的汽車數(shù)字儀表將得到更廣泛的應用。
[1]Bosch.CAN specification[S].Version 2.0,Robert Bosch Gmb-H,1991:42-48.
[2]SAE.J1939-21,Data link layer[S].USA:Society of Automotive Engineers,1994-07:3-16.
[3]SAE.J1939,(R)Recommended practice for a serial control and communication vehicle network[S].USA:Society of Automotive Engineers,2005-1:11.
[4]SAE.J1939-71.Vehicle application layer(through December 2004)[S].USA:Society of Automotive Engineers,2006-6:41,493.
[5]王 建,戴方全.SAE J1939協(xié)議在汽車儀表中的應用[J].輕型汽車技術,2006(12):7-9.
[6]朱維杰,于湘珍.基于MCS12HZ的智能汽車組合儀表[J].儀器儀表用戶,2009(2):46-48.
[7]李 飛.汽車數(shù)字儀表總成的研究開發(fā)[D].武漢:武漢科技大學,2008.