-
您的位置:
- 網(wǎng)站首頁
- > 物聯(lián)百科
- > 行業(yè)動(dòng)態(tài)
您的位置:
我們用電腦作為Modbus主站來對(duì)Modbus從站來進(jìn)行讀寫調(diào)試。首先需要對(duì)設(shè)備的工作參數(shù)進(jìn)行配置,下面重點(diǎn)講解一下如何配置CAN數(shù)據(jù)ID和寄存器首地址的映射表來具體實(shí)現(xiàn)CAN數(shù)據(jù)和Modbus總線數(shù)據(jù)相互轉(zhuǎn)換。
1.將設(shè)備斷電后拆開,將撥碼開關(guān)2撥到on如下圖,之后將模塊上電。

2.然后用RS485轉(zhuǎn)CAN線連接設(shè)備,如下圖所示。

3.進(jìn)入配置軟件,如下圖所示。

4.選擇正確的com端口,點(diǎn)擊“連接”,如下圖所示。

5.點(diǎn)擊“讀參數(shù)”,顯示“UPload Date Success”,點(diǎn)擊確定,如下圖。

6.進(jìn)入“Recieve CAN”進(jìn)入接收CAN總線數(shù)據(jù)映射表,點(diǎn)擊“添加”按鈕添加一條空數(shù)據(jù),如下圖所示。

7.之后對(duì)新添加的數(shù)據(jù)進(jìn)行修改,本經(jīng)驗(yàn)中的設(shè)置是:COB-ID 18F00401、擴(kuò)展幀、數(shù)據(jù)幀、modbus寄存器首地址01、數(shù)據(jù)長(zhǎng)度8。設(shè)置好后點(diǎn)擊“設(shè)置參數(shù)”按鈕如下圖所示。

設(shè)置成功后,將設(shè)備撥碼開關(guān)2撥下來,重新上電后,設(shè)置生效。這時(shí)設(shè)備就可以連接CAN設(shè)備和Modbus主站,進(jìn)行通信了。注意:映射關(guān)系可以按需要配置。

在串行鏈路中,我們(Modbus)使用一種簡(jiǎn)單的主從協(xié)議(客戶機(jī)/服務(wù)器協(xié)議)進(jìn)行通信??蛻魴C(jī)作為主站,向服務(wù)器發(fā)送請(qǐng)求;服務(wù)器(從站)接到請(qǐng)求后,對(duì)請(qǐng)求進(jìn)行分析并作出應(yīng)答。我和小伙伴的通信幀被稱為應(yīng)用數(shù)據(jù)單元(Application Data Unit,ADU),它包括通信地址段、功能代碼段、數(shù)據(jù)段和校驗(yàn)段,如下圖:

其中,功能代碼段和數(shù)據(jù)段組合稱為協(xié)議數(shù)據(jù)單元(Protocol Data Unit,PDU)。功能代碼段占用一個(gè)字節(jié),取值范圍為1~255,其中128~255為保留值,用于異常消息應(yīng)答報(bào)文。1~127為功能代碼編號(hào),其中65~72和100~110為用戶自定義編碼,具體請(qǐng)看下面這張圖片:

通用功能編碼(Public function code)是已經(jīng)公布的功能代碼,有確定的功能,用戶不能修改。比如:0x01表示讀取線圈,0x02表示讀取離散量的輸入等等。下圖是一些常用的功能代碼的描述:

早期在RS485串行通信中規(guī)定ADU的最大長(zhǎng)度為256個(gè)字節(jié),其中:通信地址占用1個(gè)字節(jié),校驗(yàn)段占用2個(gè)字節(jié),所以協(xié)議數(shù)據(jù)單元(PDU)的最大長(zhǎng)度為256-1-2=253 字節(jié)。而我三弟(Modbus TCP)因?yàn)橐黾右粋€(gè)7個(gè)字節(jié)的MBAP(MODBUS Application Protocol)的報(bào)文頭,所以他的ADU的長(zhǎng)度=253+7=260 字節(jié)。