潘文卿, 周善政, 王飛飛, 宋炳雨
(濰柴動力股份有限公司, 山東 濰坊 261061)
在電控系統開發過程中有大量的標定監控數據, 通常采用的是基于CAN的XCP/CCP協議, 因為傳統的CAN協議支持的最大波特率是1000kb/s, 每一條報文最多可以傳輸8個字節的數據。 隨著控制邏輯的不斷增加, 尤其是智能駕駛的興起, 需要標定監控的數據量不斷加大, 繼續采用基于傳統CAN的標定監控方法, 會降低數據采集速度, 限制數據單次采集量, 總線負載率還會不斷攀升, 影響數據傳輸的穩定性和可靠性。 為了解決負載率問題同時還要兼容傳統的CAN協議, CANFD協議應運而生, 其可以向下兼容傳統的CAN, 同時在數據段可以將波特率最大提升到5000kb/s, 數據段長度可以增加到64字節, 可以用更快速度來傳輸更多的數據。
CANFD的幀結構如圖1所示, CANFD的幀結構中分為兩段: 仲裁段和數據段。 在仲裁段有一個BRS (Bit Rate Switch) 位, 1表示進行速率切換, 0表示不進行速率切換,仲裁段最大可支持的波特率是1000kb/s, 如果數據段要提升速率從此位開始, 最大可支持5000kb/s。 CANFD的數據段的數據場可以最大支持64字節的數據, 同時CRC校驗在傳統CAN的基礎上進行了軟件升級, 如果數據段長度大于16字節時, CRC的長度為21bits, 采用CRC_21多項式校驗算法, 小于16字節時, 采用CRC_17多項式校驗算法。 根據數據長度采用更加可靠的校驗算法, 能保證數據傳輸的可靠性。

圖1 CANFD幀結構圖
當前的標定監控協議一般是采用XCP 或者CCP 協議,XCP協議更具有靈活性, 定義了不同的傳輸層, XCP逐漸取代了古老的CAN標定協議CCP, 其在功能上有了很多改進,包括: 支持任何物理層, 不僅限于CAN, 還包括以太網、Flexray、 LIN、 USB等, 優化了控制單元資源的利用率, 同步數據激勵, 支持啟動測量, 通過塊傳輸命令優化通信,即插即用配置, 通過測量控件內的時間戳, 從而精確測量數據采集。 在數據采集方面, 主要采用DAQ模式, 在這種模式的應用下, 加持CANFD的特性, 會大大提升數據的監控量和數據的傳輸速度, 同時還會降低總線負載率。
在數據采集過程中首先通過連接指令建立上位機與下位機的連接, 然后通過seedkey校驗, 完成功能解鎖, 然后獲取通信模式, 設置內存空間和接收傳來的地址和數據長度。 下位機會通過報文告訴上位機工作模式, 可以用的DAQ通道數和允許發送的最大包數, 上位機收到信息后, 會整理要監控的數據地址和數據長度, 通過報文下發給下位機, 下位機收到相關信息后將按照順序將數據地址和數據長度存放到一個結構體中, 然后在周期任務中逐條發送相關數據的值。 此過程如圖2所示。

圖2 XCP_DAQ配置過程
在建立連接、 安全訪問以及DAQ準備的過程中都是采用問答形式, 所以傳統的8 字節傳輸形式就可以滿足要求,此過程中僅僅提升數據段的波特率即可。 在DAQ配置過程和數據傳輸過程因為數據量會特別大,采用最大64字節的數據傳輸形式, 根據實際數據量確定數據段的長度。 如圖3所示, 在本文中, 通過0xC7命令寫多個DAQ時, 最多每次最大可以傳輸64個字節, 將更多的數據地址和數據長度相關信息同時傳遞給下位機, 下位機收到信息后, 根據傳入的順序將數據地址和長度存儲到結構體中, 并在周期任務中 (10ms或100ms) 向總線上發送這些地址和長度對應的數據。 在本文的測試中采用仲裁段1000kb/s, 數據段4000kb/s的波特率。 傳輸數據是以16個字節的長度, 10ms周期發送到總線上。 如果有100ms采集數據的需求, 會在10ms采集數據的后面配置100ms的DAQ, 實現DAQ動態可配置的功能, 方便靈活。

圖3 CANFD_XCP的應用
本文基于CANFD的優勢特性, 在數據標定監控中, 通過提升數據段的波特率, 增加數據段的長度, 可以使XCP監控數據量, 報文容量提升至少3倍, 同時還可以降低總線的負載率, 使得通信更加穩定可靠, 可以滿足當前控制邏輯日益復雜化的標定監控需求。