SmartDisplay Custom CAN protocol 簡介
前言
SmartDisplay 目前支援CANbus硬體通訊介面,並使用CANopen軟體通訊協定,CANopen是基於CAN總線的工業標準通訊協定,被廣泛應用於各種領域,如醫療設備,車輛,鐵路應用或建築自動化。然而,使用CANopen協定時, 由於它是一種基於節點之間的通訊,因此客戶端需要在其主機端實作協定,這可能對那些想簡單使用CANbus的應用是個負擔。因此,為了簡化客戶的使用,我們設計出新的Custom CAN協定,其不需要在客戶端實作CANopen協定,只需要透過自定義的DBC文件設置資料, 就能輕易地將CAN ID / 數據和顯示器上的Widget相關聯, 從而實現及時的互動, 此種互動方式可以幫助客戶更好的掌握和控制系統中的數據,並達到彈性高、維護方便等目的。
介紹
Custom CAN protocol 主要是透過 DBC(CAN Database)文件來設置數據並和顯示器上的部件之間的互動方式。DBC 文件是用來定義系統中的 CAN ID、消息格式解碼等相關信息的重要工具。使用自定義的 DBC 文件可以輕鬆地將不同的 CAN ID / 數據和顯示器上的部件相關聯,這樣就可以實現及時的互動, 例如透過 CAN ID / 數據來控制顯示器上的圖形或者文字,顯示器上的按鈕或滑動條可以用來控制 CAN 的數據. 這種互動方式可以幫助客戶更好的掌握和控制系統中的數據。
DBC 介紹
DBC檔案通常是ASCII純文字檔, 其中包含各種關於在CAN總線上傳輸的物理信號的資訊, 包括信號的CAN ID、名稱、轉換比例、定義等, 這些檔案用於將原始的CAN數據解碼成有意義的值, 並將不同的CAN ID映射到其對應的信號。DBC檔案提供了將CAN訊息有效載荷轉換為物理信號值所需的資訊。
以下為Raw CAN 資料測試資料範例
假設你有CAN DBC 檔案, 且這個檔案. 有包含此CAN Id (0x181) 的解譯規則設定, 則你可從此DBC File 資訊解碼出下列的資訊
DBC 文件的主要功能為描述如何解碼 CAN 消息和信號的規則,
下列為 DBC 檔案節錄的測試資料說明
由上列DBC 資訊中, 可得知下列這些解碼資訊
由上列的解碼規則設定, 可將先前取得的Raw CAN Data 解碼成下列資訊
藉由以上的說明,有了DBC檔案設定,我們就可以正確解碼出CAN ID與CAN Data所代表的實際值. DBC文件包含訊息和信號布局,可以解析數據並將原始數據轉換為物理值,系統能理解透過CAN傳輸的真實訊息.
DBC 編輯器
DBC檔案通常是ASCII文本檔,其中包含了關於在CAN总线上傳輸的物理信號的資訊,這些檔案由於內容格式的關係,很難讀取和編輯。為了解決這個問題,市面上已經有許多關於DBC編輯器軟體。這些軟體可以幫助用戶更輕鬆地建立和編輯自定義DBC檔案。 其中一個常用的DBC編輯器是 vector CANdb++,由 Vector Informatik GmbH開發,這個軟體可以用於建立和編輯DBC檔案,提供了一個易於使用的介面,可以新增訊息、新增信號、定義訊息和信號的屬性,如訊息ID、起始位、長度、比例、偏移量等等。
SmartDisplay GUI Builder – Custom CAN 設定說明
SmartDisplay GUI Builder 為您提供了一個直觀友好的操作界面,讓您可以輕鬆創建屬於自己的 CAN 項目,您只需要導入 DBC 檔案並進行信號/訊息與對應的 Widget 的映射,即可在 SmartDisplay 裝置上輕鬆顯示與互動。操作簡單且具有靈活性功能,能夠滿足您的各種需求,讓您的工作更加高效率。
以下會依序介紹SmartDisplay GUI Builder 如何建立Custom CAN project與設定 DBC 與 Widget 關係
● 建立Custom CAN project
依據需求, 輸入project 名稱, 選擇SmartDisplay 機種, 於protocol 選擇 Custom CAN Id (CANbus), 即可建立Custom CAN project.
● 匯入自定義 DBC File
● 於主畫面新增一個 Gauge 和 Horizontal Slider widget
點選Gauge object, 並於 Gauge 屬性頁面, 於 CAN Signal 欄位, 設定Message 為 EEC1, Signal為 EngSpeed, 代表此 Gauge物件與EngSpeed 綁上關係, 此Gauge 物件畫面顯示變化是來自 EngSpeed value 值。
點選Horizontal Slider object, 並於 Horizontal Slider 屬性頁面, 於 CAN Signal 欄位, 設定Message 為 HorizontalSliderMessage, Signal為 HorizontalSliderSignal1, 代表此 Horizontal Slider物件與HorizontalSliderSignal1 綁上關係, 此Gauge 物件畫面顯示變化是來自 HorizontalSliderSignal1 值。
● 模擬 CAN ID / CAN Data 與 Widget 的互動
點選 icon:"Simulator With GUI" 啟動模擬器
啟動模擬器後, 可拉動下方 EngSpeed slider 來模擬Host端送出 EngSpeed 資料, 觀察模擬器Gauge 變動, 也可以從右方的Message Log 看到, CAN ID 與 CAN Data 的變化,也可以操作模擬器的Horizontal Slider, 模擬Device端送出的資料。
● 更新SmartDisplay 裝置設定
經由模擬器驗證功能後, 如果沒有問題後, 就可以連上 Device, 將project 設定上傳到 SmartDisplay 裝置端。
等待上傳並更新完畢
● 驗證 Device CAN ID / CAN Data 與 Widget 的互動
上傳Project到Device端後, 可以進一步驗證, SmartDisplay 裝置端功能, 用GUI Builder 連上Device 端後, 點選 "Test Device", 即可測試Host 端與 Device 端的互動了。
Test Device Window
藉由此測試畫面, 可模擬 Host 端依據 DBC 設定送出相對應的 CAN Id 與 CAN Data。
拉動下方 EngSpeed slider 模擬Host端送出 EngSpeed 資料, 觀察裝置Gauge 變動, 也可以從右方的Message Log 看到, CAN ID 與 CAN Data 的變化, 也可以操作Device的Horizontal Slider, 驗證 Device端送出的資料是否合乎需求
SmartDisplay 裝置實際畫面
Custom CAN command說明
接下來將說明Custom CAN所使用的command protocol。透過這些指令,Host端可輕鬆控制SmartDisplay,包括換頁、調整背光亮度,或者使Buzzer發出聲音。
下列為command protocol 所使用到的CAN Id 設定:
- CAN Id format:29 bit
CAN Id:0xEF0000 + 0x7B00 (default channel id. 可透過GUI Builder修改)
以下為 Send Command 的基本資料格式
Header Byte (1 Byte) | Length (1 Byte) | Payload (N byte) | CRC (2 Byte) |
---|---|---|---|
固定為0x53 (S) | Value = 4 + Payload length Payload max size: 250 |
資料內容與長度參閱Send Command Payload | Modbus CRC16 |
以下為 Response Command 的基本資料格式
Header Byte (1 Byte) | Length (1 Byte) | Payload (N byte) | CRC (2 Byte) |
---|---|---|---|
固定為0x52 (R) | Value = 4 + Payload length Payload max size: 250 |
資料內容與長度參閱Response Command Payload | Modbus CRC16 |
● Command Payload
下列為各個command payload 的說明
- Set Brightness:0x6
Send Command
Command Code | 1 Byte | 0x6 |
Brightnes | 1 Byte | Brightness value |
Response command
Command Code | 1 Byte | 0x6 |
Error Code | 1 Byte | 0:Success 1:Failed |
- Set Buzzer: 0x7
Send Command
Command Code | 1 Byte | 0x7 |
Cycle | 1 Byte | Cycle value |
High | 1 Byte | High value |
Low | 1 Byte | Low value |
Response command
Command Code | 1 Byte | 0x7 |
Error Code | 1 Byte | 0:Success 1:Failed |
- Set Page Index:0x8
Send Command
Command Code | 1 Byte | 0x8 |
Page Index | 1 Byte | Page Index value |
Response command
Command Code | 1 Byte | 0x8 |
Error Code | 1 Byte | 0:Success 1:Failed |
- Get Page Count: 0xA
Send Command
Command Code | 1 Byte | 0xA |
Response command
Command Code | 1 Byte | 0xA |
Error Code | 1 Byte | 0:Success 1:Failed |
High | 1 Byte | Page Count value |
- Get Current Page Index:0xF
Send Command
Command Code | 1 Byte | 0xF |
Response command
Command Code | 1 Byte | 0xF |
Error Code | 1 Byte | 0:Success 1:Failed |
Page Index | 1 Byte | Page Index value |
- Set Device State:0x20
Send Command
Command Code | 1 Byte | 0x20 |
Device State | 1 Byte | 0: ConfigMode 1: DisplayMode |
Response command
Command Code | 1 Byte | 0x20 |
Error Code | 1 Byte | 0:Success 1:Failed |
● 傳輸範例
- 設定亮度為 90
- 切換Page Index 為 1
切換Page 時, 需要先設定Device State 為ConfigMode, 之後在下換頁命令, 結束換頁命令後, 就再設定Device State Mode 為Display Mode, 即可完成換頁的命令, 相關命令順序如下:
結論
經由Custom CAN protocol , 客戶可透過標準 DBC file, 自由無限制地定義CAN Id 與 CAN Data 的設定, 再透過SmartDisplay GUI Builder 綁定Message / Signal 與 Widget 的關係, 就這麼簡單, 一個客制的CAN HMI 就完成了, 不需要複雜的CAN protocol (如 CANopen, J1939…) 與設定即可簡易無縫地與SmartDisplay Device 接軌, 心動了嗎? 趕快下載 SmartDisplay GUI Builder, 在還沒購買SmartDisplay 前, 可先試用模擬器確認SmartDisplay 是否能滿足你的需求!