首先,在開始實例演示前,我們需要了解ECAN-401設備是怎么實現CAN轉ModBus通信的:ECAN-401在串口側使用的是標準ModBus RTU協議格式,所以ECAN-401不僅支持用戶使用ModBus RTU協議,模塊也可以直接和其它支持ModBus RTU協議的設備相接口。
在CAN側,制定了一個簡單易用的分段通訊格式來實現ModBus通訊,一個長度大于一個CAN報文最大數據長度的信息進行分段以及重組的方法,“數據 1”用于分段標識數據,傳輸的ModBus協議內容即可從“數據 2”字節開始,如果協議內容大于7個字節,那么將剩下的協議內容照這種分段格式繼續轉換,直到轉換完成。在CAN總線上傳輸的數據不需要CRC效驗方式。CAN總線上的數據效驗已經具有更加完善的效驗方式。
此模式下,設備支持的是ModBus驗證和轉發,而不是ModBus的主機或者從機,用戶按照ModBus協議通訊即可。針對于“數據1”的分段標識協議,以下表格和示例可以幫助理解:
分段標記:表明該報文是否是分段報文。該位為 0 表示單獨報文,為 1 表示屬于被分段報文中的一幀。
分段類型:表明是第一段、中間段的還是最后段。
分段計數器:每一個段的標志,表示該段在整個報文中的序號,如果是第幾個段,計數器的值就是幾。這樣在接收時就能夠驗證是否有分段被遺失。共使用5Bit,范圍為 0~31。
示例: 幀ID為013,串口接收到的ModBus數據是:01 03 00 00 00 01 84 0A。除去ModBus的校驗數據后,數據長度為 6 ,CAN除去分段協議占用的數據位后,能接收的長度是7。小于我們要接受的數據長度。
此時CAN總線上的數據1的分段報文標記為0;分段類型為0;分段計數器為1。將以上數據按照分段傳輸協議定義,將數據填入指定的位置,CAN總線的數據1即可得到數據1的二進制數據位0000 0001,轉換為16進制數據即為0x01。在將ModBus數據填入到后續對應的位置即可得到CAN總線上數據:
在了解了ECAN-401的CAN轉ModBus功能后,我們可以開始實際操作。準備以下設備:
ECAN-401一臺
CAN分析儀ECAN-U01一臺
ModBus POLL軟件
這里我們使用ECAN-401做數據轉換工具,ECAN-U01發送和接收CAN報文,ModBus Poll軟件模擬ModBus 設備發送ModBus 指令。將ECAN-401與ECAN-U01的CAN_L和CAN_H連接,ECAN-401的485接口通過485換USB轉換器連接到電腦,如下圖所示:
通過ECAN-401的上位機,將設備通訊模式切換為ModBus模式,參數配置如下圖:
打開CAN分析儀ECAN-U01以及ModBus Poll軟件,使用ModBus Poll 軟件模擬出一個ModBus設備,通過ECAN-401的485串口發送ModBus 指令,這里可以看到ECAN-U01設備已經接收到了ECAN-401所轉換出來的數據:
ECAN-401的485串口支持的是ModBus RTU協議,接收到的ModBus 指令為01 03 00 00 00 0A C5 CD,經過處理后轉換到ECAN-U01的CAN數據后為01 01 03 00 00 00 0A。這里可以看到CAN幀的第一位數據01是經過處理后添加的分段標識,也自動去掉了CRC校驗位,真實數據為01 03 00 00 00 0A。
這樣就成功通過ECAN-401實現ModBus與CAN數據格式的轉換。
-
CAN
+關注
關注
57文章
2744瀏覽量
463621 -
通信
+關注
關注
18文章
6024瀏覽量
135950
發布評論請先 登錄
相關推薦
評論