Kvaser t腳本完整指南
在工業自動化和數位化轉型的浪潮中,實現不同系統間的無縫整合與數據交換變得至關重要。在實際操作中,您可能會面臨需要整合兩條 CAN 匯流排的場景,或是需要在不同速率和協定的匯流排間進行數據傳輸。
圖一 - 工業自動化
通常,這可以通過引入網關設備來實現。但是,如果您擁有多通道 Kvaser 設備,也可以利用 t腳本 來創建自己的網關。Kvaser 現場應用工程師 Adam Raymer 從實際應用出發,詳細介紹了如何通過編寫 t腳本來建立自己的網關。
什麼是 t腳本?
Kvaser 的 t腳本與 C 語言類似,它允許使用者使用 “hooks” 對匯流排上的某些事件進行程式反應。t腳本在 Kvaser 設備上本地運行,一旦載入並啟動,無需再與 PC 通訊。
t腳本的特點是它可以讓 Kvaser 設備在無需連接到 PC 的情況下本地執行。這使得它特別適合於分散式工業系統,您可以通過 t腳本在多個匯流排之間進行數據交換,而不依賴外部系統的干預。具體應用包括車輛系統中的匯流排整合、工廠自動化設備之間的數據傳輸等。
開始使用 t腳本前需要準備什麼?
圖二 - Kvaser 網關
1. 支援 Kvaser t腳本的硬體
如 Kvaser Memorator Pro 2xHS 和 Memorator Pro 5xHS CAN 通訊儀和數據記錄儀。
2. 下載 CANlib
CANlib SDK 是免費的,包括 TRX 用於編寫和控制 t腳本的 IDE,以及示例庫,幫助您快速入門。
3. 下載 t腳本指南
該指南詳細介紹了 t腳本的功能,並提供了代碼片段以幫助您理解。
如何設置網關?
圖三 - 數據呈現
首先,您需要一台支援 t腳本的多通道設備,例如 USBcan Pro(2xHS 或 4xHS)或 Kvaser Memorator Pro(2xHS v2 或 5xHS)。將通道 1 和 2 分別連接到兩條 CAN 匯流排。如果設備有超過兩條通道,也可以接入不同的匯流排。在此示例中,我們使用通道 1 和 2。如果在獨立模式下使用 Memorator Pro,則需要為通道 1 供電。
補充說明:在使用 TRX 編寫腳本時,您應當確保設置正確的 CAN 通道號和速率。在一些應用中,CAN 通道之間的速率不同,這就要求您在 t腳本中為不同通道設置相應的數據格式和速率匹配機制。對於新手,您可以使用 TRX 中提供的範例腳本進行修改,這能幫助您快速上手。
通過 Kvaser 用於創建、編譯和運行 t腳本的整合式開發環境 TRX,您可以使用以下 t腳本,並將其下載到通道 1 上的設備中。
圖四 - t腳本示例1
在 TRX 中運行此腳本時,通道 1 和通道 2 都將以 250 kb/s 的位元速率接入匯流排。之後,第一條 CAN 匯流排上的流量將傳輸至第二條 CAN 匯流排,反之亦然。
使用 t腳本作為網關是如何運行的?
該腳本包含四個 "hooks":on start、on stop、on CANMessage 和 on CANMessage。當腳本載入並開始運行時,"on start" 將被觸發,通道將被置於匯流排上。當 TRX 通知停止腳本時,"on stop" 將被觸發並關閉通道。如果 CAN 通道 1 讀取報文,將觸發 on CANMessage,並將報文複製到 CAN 通道 2。而如果 CAN 通道 2 讀取報文,則運行 on CANMessage 中的代碼。
當設備已經在匯流排上時該怎麼辦?
如果設備已在匯流排上,則無需使用 on start 和 on stop hooks。為了便於讀取,可以刪除這些 hooks。
圖五 - t腳本示例2
如果您使用的是 Kvaser USBcan Pro 2xHS v2、Kvaser USBcan Pro 4xHS 等設備,這裡是啟動腳本的步驟:
- 打開匯流排監控/分析軟體
- 配置設備並打開通道
- 啟動 TRX 並載入專案
- 在 TRX 中將設備設置為「線上」狀態
- 在 TRX 中將 t腳本下載到設備上
- 在 TRX 中啟動 t腳本
當設備作為網關運行時,您仍可使用匯流排分析/監控軟體。這就是設置基本網關的全部內容。
如何連接兩條不同位元速率的匯流排?
您可以為 CAN 通道設置所需的位元速率。
圖六 - t腳本示例3
如果使用軟體來監控匯流排,則在軟體中進行配置。如果需要兩個以上的通道,可以為這些通道添加更多的 "CanMessage" hooks。
如何將某些報文 ID 轉移到另一個通道?
我們可以使用 hooks 根據報文 ID 進行過濾。該 hooks 事件只會將一個 11 位 ID 1019(十進位)的報文傳送到 CAN 通道 2。
圖七 - t腳本示例4
如何從 CAN 轉到 CAN FD?
從 CAN 轉到 CAN FD 更為複雜。您無法直接複製報文,需重新格式化為 CAN FD 格式。
在此示例中,我們將 CAN 通道 2 設置為 CAN FD,標稱位元速率為 500 kb/s,數據段位元速率為 2 Mb/s。CAN 通道 1 接收到的任何報文都將以 CAN FD 格式傳輸至 CAN 通道 2,反之亦然。此例中 CAN 和 CAN FD 的 DLC 均為 8。在更高級的示例中,傳輸報文時還需考慮 CAN 和 CAN FD 之間的其他差異,例如 CAN FD 幀大於 8 個數據位元組。
轉換過程中可能遇到的挑戰包括如何保持數據的一致性,特別是在報文長度和格式不匹配的情況下。您可以在腳本中加入錯誤檢測機制,來防止格式錯誤的報文進行傳輸,並根據需求進行數據截斷或重新封裝。
圖八 - t腳本示例5
如果您的設備被用作 USB 通訊儀,在程式運行時從電腦上拔下設備會導致 t腳本停止運行。此外,由於 t腳本調度程式每次只能處理一個非定時 hooks 事件,因此在處理報文時會有 1 ms 的延遲。在某些情況下,如果同時發送多條報文,可能會推遲執行,因為調度程式會以 1 ms 的處理間隔逐一處理每一條報文。請在將本示例整合到您的網路時考慮到上述內容。
使用 Kvaser t腳本的優勢
您無需購買全新設備作為網關,並且可以使用現有的、具有相容性的 Kvaser 設備作為網關。Kvaser 的 t指令碼語言允許使用現有硬體靈活地解決常見問題,以便節省您的時間和資源。
這只是使用支援 t腳本的設備和幾行代碼就能解決問題的一個示例。如需瞭解更多資訊,請聯絡我們。