寫在前面
ZCANPRO是致遠電子ZLG公司推出的canpro繼任軟件,儘管界面花哨了很多,不過個人用得並不習慣。主要原因有以下幾點:
- ZCANPRO沒有了【導入數據】功能,只能通過【數據回放】來將保存的離線數據進行加載,在一定程度上浪費了點時間;
- ZCANPRO可顯示的報文列表最大數量僅僅只有100000幀,你沒數錯,就是隻有10萬幀,這對於總線負載比較高的場合也就是幾分鐘數據就得被覆蓋,非常不利於將數據保存下來離線分析。然而原版的CANpro的列表顯示上限不設限制,個人測試中顯示過300多萬幀都不卡。
- 還是數據量的問題,儘管ZCANPRO也可以進行【實時保存】,但是它每隔10萬幀就會自動分割成兩個文件,不利於離線分析。
不過,ZLG官網已經不再提供CANpro的下載了,所以在這裏我們就針對他主推的ZCANPRO軟件的.can文件來分析分析。如果有CANpro安裝包需要,可以點擊這裏到百度網盤下載,提取碼:001q 。ZCANPRO軟件請自行到ZLG官網下載,下圖是ZCANPRO軟件本尊:
言歸正傳
ZLG公司是國內CAN總線的先驅者,其推出的CAN總線產品也是廣受好評。對於吾等處於無產階級的學生仔來說,ZLG的CANtest、CANpro等軟件可以免費無限制使用真是太好了。ZLG公司也針對其產品,定義了.can格式的二進制文件來保存CAN數據,以降低文件的體積。ZCANPRO軟件作爲CANpro的接棒者,其保存的.can格式文件與CANpro軟件的.can文件並不相同。CANpro軟件生成的.can文件的解析請參看本人另一篇博文《ZLG的CANpro保存的.can文件解析》。
先拋結論
- 在CANpro中,.can文件中保存的N幀CAN報文數據的總字節數爲:20+N×24;
- 在ZCANPRO中,.can文件中保存的CAN報文數據是變長度的,其N幀報文總字節數爲:
如有錯誤,請務必指正,謝謝!
這都是什麼鬼東西
固定前綴
ZCANPRO的.can文件的固定前綴爲12字節:ff ff ff ff 00 00 00 00 01 00 00 00。嗯,也不知道它代表啥意思,不像CANpro那樣很直白的“Zhiyuan CAN Data ”。反正就是這麼個前綴。
單幀報文
ZCANPRO的.can文件的單幀報文爲變長度的58~66字節。
Bytes | 含義 | 示例 |
---|---|---|
Byte0~Byte4 | 組號GROUP_ID | 15 00 00 00 01 表示組號爲:0x0100000015 |
Byte5~Byte29 | 不詳 | - |
Byte30~Byte33 | CAN_ID | ef 1f f1 18 表示組號爲:0x18F11FEF |
Byte34 | 不詳 | - |
Byte35 | 幀格式 | 0x00爲數據幀,0x01爲遠程幀 |
Byte36 | 幀類型 | 0x00爲標準幀,0x01爲擴展幀 |
Byte37 | 數據長度length | 根據數據長度取值,例如0x08表示長度爲8 |
Byte38~Byte41 | 不詳 | - |
Byte42~Byte(42+length-1) | 數據Data[0]~Data[?] | 此區域長度爲數據長度。 |
Byte(42+length)~Byte(42+length+5?) | 時間戳(微秒) | 單位爲微秒,例如:FC 98 7F 04 00(即0x00047F98FC)表示時間戳爲75.471100 s。特別說明:此處長度有可能不止5字節 |
Byte(42+length+5?)~Byte(42+length+15) | 不詳 | - |
接下來,我們對不同長度的CAN報文進行測試,爲了更便於觀察,已將前綴10個字節刪去,不同數據長度下單幀報文的數據如下:
通過以上各Bit的解析,即可對.can文件進行數據分析,本人在自開發的X-CAN離線分析軟件中也實現了對ZCANPRO軟件生成的.can文件的數據解析。詳情請看本人博文:CAN報文的離線分析:X-CAN離線分析平臺