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