潘文卿, 周善政, 王飛飛, 宋炳雨
(濰柴動力股份有限公司, 山東 濰坊 261061)
在電控系統(tǒng)開發(fā)過程中有大量的標(biāo)定監(jiān)控數(shù)據(jù), 通常采用的是基于CAN的XCP/CCP協(xié)議, 因為傳統(tǒng)的CAN協(xié)議支持的最大波特率是1000kb/s, 每一條報文最多可以傳輸8個字節(jié)的數(shù)據(jù)。 隨著控制邏輯的不斷增加, 尤其是智能駕駛的興起, 需要標(biāo)定監(jiān)控的數(shù)據(jù)量不斷加大, 繼續(xù)采用基于傳統(tǒng)CAN的標(biāo)定監(jiān)控方法, 會降低數(shù)據(jù)采集速度, 限制數(shù)據(jù)單次采集量, 總線負(fù)載率還會不斷攀升, 影響數(shù)據(jù)傳輸?shù)姆€(wěn)定性和可靠性。 為了解決負(fù)載率問題同時還要兼容傳統(tǒng)的CAN協(xié)議, CANFD協(xié)議應(yīng)運而生, 其可以向下兼容傳統(tǒng)的CAN, 同時在數(shù)據(jù)段可以將波特率最大提升到5000kb/s, 數(shù)據(jù)段長度可以增加到64字節(jié), 可以用更快速度來傳輸更多的數(shù)據(jù)。
CANFD的幀結(jié)構(gòu)如圖1所示, CANFD的幀結(jié)構(gòu)中分為兩段: 仲裁段和數(shù)據(jù)段。 在仲裁段有一個BRS (Bit Rate Switch) 位, 1表示進(jìn)行速率切換, 0表示不進(jìn)行速率切換,仲裁段最大可支持的波特率是1000kb/s, 如果數(shù)據(jù)段要提升速率從此位開始, 最大可支持5000kb/s。 CANFD的數(shù)據(jù)段的數(shù)據(jù)場可以最大支持64字節(jié)的數(shù)據(jù), 同時CRC校驗在傳統(tǒng)CAN的基礎(chǔ)上進(jìn)行了軟件升級, 如果數(shù)據(jù)段長度大于16字節(jié)時, CRC的長度為21bits, 采用CRC_21多項式校驗算法, 小于16字節(jié)時, 采用CRC_17多項式校驗算法。 根據(jù)數(shù)據(jù)長度采用更加可靠的校驗算法, 能保證數(shù)據(jù)傳輸?shù)目煽啃浴?/p>
圖1 CANFD幀結(jié)構(gòu)圖
當(dāng)前的標(biāo)定監(jiān)控協(xié)議一般是采用XCP 或者CCP 協(xié)議,XCP協(xié)議更具有靈活性, 定義了不同的傳輸層, XCP逐漸取代了古老的CAN標(biāo)定協(xié)議CCP, 其在功能上有了很多改進(jìn),包括: 支持任何物理層, 不僅限于CAN, 還包括以太網(wǎng)、Flexray、 LIN、 USB等, 優(yōu)化了控制單元資源的利用率, 同步數(shù)據(jù)激勵, 支持啟動測量, 通過塊傳輸命令優(yōu)化通信,即插即用配置, 通過測量控件內(nèi)的時間戳, 從而精確測量數(shù)據(jù)采集。 在數(shù)據(jù)采集方面, 主要采用DAQ模式, 在這種模式的應(yīng)用下, 加持CANFD的特性, 會大大提升數(shù)據(jù)的監(jiān)控量和數(shù)據(jù)的傳輸速度, 同時還會降低總線負(fù)載率。
在數(shù)據(jù)采集過程中首先通過連接指令建立上位機(jī)與下位機(jī)的連接, 然后通過seedkey校驗, 完成功能解鎖, 然后獲取通信模式, 設(shè)置內(nèi)存空間和接收傳來的地址和數(shù)據(jù)長度。 下位機(jī)會通過報文告訴上位機(jī)工作模式, 可以用的DAQ通道數(shù)和允許發(fā)送的最大包數(shù), 上位機(jī)收到信息后, 會整理要監(jiān)控的數(shù)據(jù)地址和數(shù)據(jù)長度, 通過報文下發(fā)給下位機(jī), 下位機(jī)收到相關(guān)信息后將按照順序?qū)?shù)據(jù)地址和數(shù)據(jù)長度存放到一個結(jié)構(gòu)體中, 然后在周期任務(wù)中逐條發(fā)送相關(guān)數(shù)據(jù)的值。 此過程如圖2所示。
圖2 XCP_DAQ配置過程
在建立連接、 安全訪問以及DAQ準(zhǔn)備的過程中都是采用問答形式, 所以傳統(tǒng)的8 字節(jié)傳輸形式就可以滿足要求,此過程中僅僅提升數(shù)據(jù)段的波特率即可。 在DAQ配置過程和數(shù)據(jù)傳輸過程因為數(shù)據(jù)量會特別大,采用最大64字節(jié)的數(shù)據(jù)傳輸形式, 根據(jù)實際數(shù)據(jù)量確定數(shù)據(jù)段的長度。 如圖3所示, 在本文中, 通過0xC7命令寫多個DAQ時, 最多每次最大可以傳輸64個字節(jié), 將更多的數(shù)據(jù)地址和數(shù)據(jù)長度相關(guān)信息同時傳遞給下位機(jī), 下位機(jī)收到信息后, 根據(jù)傳入的順序?qū)?shù)據(jù)地址和長度存儲到結(jié)構(gòu)體中, 并在周期任務(wù)中 (10ms或100ms) 向總線上發(fā)送這些地址和長度對應(yīng)的數(shù)據(jù)。 在本文的測試中采用仲裁段1000kb/s, 數(shù)據(jù)段4000kb/s的波特率。 傳輸數(shù)據(jù)是以16個字節(jié)的長度, 10ms周期發(fā)送到總線上。 如果有100ms采集數(shù)據(jù)的需求, 會在10ms采集數(shù)據(jù)的后面配置100ms的DAQ, 實現(xiàn)DAQ動態(tài)可配置的功能, 方便靈活。
圖3 CANFD_XCP的應(yīng)用
本文基于CANFD的優(yōu)勢特性, 在數(shù)據(jù)標(biāo)定監(jiān)控中, 通過提升數(shù)據(jù)段的波特率, 增加數(shù)據(jù)段的長度, 可以使XCP監(jiān)控數(shù)據(jù)量, 報文容量提升至少3倍, 同時還可以降低總線的負(fù)載率, 使得通信更加穩(wěn)定可靠, 可以滿足當(dāng)前控制邏輯日益復(fù)雜化的標(biāo)定監(jiān)控需求。