基于CAN總線的modbus通信設(shè)計

基于CAN總線的modbus通信設(shè)計

ID:47477195

大?。?8.00 KB

頁數(shù):5頁

時間:2020-01-11

基于CAN總線的modbus通信設(shè)計_第1頁
基于CAN總線的modbus通信設(shè)計_第2頁
基于CAN總線的modbus通信設(shè)計_第3頁
基于CAN總線的modbus通信設(shè)計_第4頁
基于CAN總線的modbus通信設(shè)計_第5頁
資源描述:

《基于CAN總線的modbus通信設(shè)計》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫

1、基于CAN總線的modbus通信設(shè)計摘要:CAN總線是由德國BOSCH公司開發(fā)了的,其主要用于汽車計算機控制系統(tǒng),而在工業(yè)控制領(lǐng)域較少適用,在工業(yè)領(lǐng)域用的最多的是RS485總線。CAN總線較RS485總線具有網(wǎng)絡(luò)各節(jié)點之間的數(shù)據(jù)通信實時性強,開發(fā)周期短,已形成國際標準的現(xiàn)場總線等優(yōu)點。因此CAN總線是比較有前途的現(xiàn)場總線之一,在工業(yè)控制領(lǐng)域代替RS485是有可能的。為了能簡單地應(yīng)用CAN總線代替RS485總線,如果采用比如CANopen等協(xié)議使得設(shè)備變得復雜化,那么有沒有簡單點的協(xié)議?很多做過工業(yè)設(shè)備的工程師都熟悉MODBUS協(xié)議,在RS485總線上跑的最多的協(xié)

2、議就是MODBUS,如果我們在CAN總線上運行MODBUS協(xié)議,那么做過RS485的工程師就能很快地轉(zhuǎn)移過來,減少了開發(fā)難度。所以本文就以CAN總線上跑MODBUS協(xié)議為目的對數(shù)據(jù)網(wǎng)絡(luò)層協(xié)議進行設(shè)計。概念:MODBUS有主從概念,CAN總線支持多主,在這里我們把主機叫做客戶端,從機叫做服務(wù)器。在CAN總線上采用客戶端服務(wù)器的概念。在進行協(xié)議介紹前先對CANMODBUS進行簡單的介紹。MODBUS:閱讀過MODBUS協(xié)議的人都知道m(xù)odbus有ASCII和RTU模式,其中RTU模式用的較多,一個數(shù)據(jù)包在網(wǎng)絡(luò)上傳輸我們必須知道包的開始和結(jié)束,在RTU模式中數(shù)據(jù)包是以

3、至少3.5個字符的靜默時間開始和結(jié)束的,如果信息結(jié)束前存在超過1.5個字符以上的間隔時間則出錯。為了檢測這些時間間隔,在程序上將變得很被動。ASCII雖然有專用的開始結(jié)束標志符,但是ASCII需要把一個字節(jié)數(shù)據(jù)傳換為兩個字符發(fā)送所以其效率低。所以還是得采用RTU模式,但得根據(jù)CAN總線的特點解決數(shù)據(jù)包開始結(jié)束標志的定義。CAN總線:CAN總線的數(shù)據(jù)傳輸是以幀為單位的,一個幀包含標識符、數(shù)據(jù)段CRC等,標識符表示該幀的發(fā)送優(yōu)先級,數(shù)據(jù)段包含實際的數(shù)據(jù),數(shù)據(jù)長度從1到8字節(jié),CRC對該幀進行校驗,因為幀中包含了數(shù)據(jù)校驗功能,所以在CAN上跑modbus就不需要再對數(shù)

4、據(jù)進行CRC校驗。在這里我們看到CAN總線是有優(yōu)先級這個概念,但是沒有出現(xiàn)像modbus這樣有地址的概念,CAN總線上標識符段表示的是該幀的優(yōu)先級,它面向的是數(shù)據(jù),而modbus面向的是設(shè)備,每個數(shù)據(jù)包中都有地址,如果我們把地址放在CAN幀的數(shù)據(jù)段中那么所有設(shè)備都必須接收每一幀,然后對數(shù)據(jù)進行解析,如果網(wǎng)絡(luò)負載比較大的是時候,這對設(shè)備不利。CAN控制器一般都能對特定的標識符段進行過濾,那么我們?yōu)槭裁床荒馨褬俗R符段作為設(shè)備的地址,然后設(shè)備對特定的標識符進行過濾,這樣就減少了設(shè)備的負擔。但是如果標識符段作為目的地址,那么CAN總線上就不能有兩個主機,應(yīng)為CAN總線規(guī)

5、定不能有兩個相同標識符的幀同時發(fā)送。既然標識符符不能作為目的地址,那么就實現(xiàn)不了設(shè)備對數(shù)據(jù)的過濾。我的解決辦法是把幀的標識符段分為兩部分,一部分為發(fā)送方地址,另一部分為接收方地址,其中接收方地址在標識符的高端。這樣我們就能通過表標識符段知道這幀數(shù)據(jù)是誰發(fā)給誰的,對于接收方它通過設(shè)置過濾器只接收表識符高端數(shù)據(jù)為自己地址的幀,這樣就解決了CAN總線中地址的概念。這個地址還表示的設(shè)備的優(yōu)先級,地址越小優(yōu)先級就越高,接收方地址和發(fā)送方地址就決定這幀的發(fā)送優(yōu)先級。標識符段分為標準幀和擴展幀,標準幀的標識符為11bit,擴展幀的標識符為29bit,按照接收方地址加發(fā)送方地址

6、的分配方法標準幀的地址范圍為0~31,共計32個地址,如果用擴展幀的來分配地址范圍為0~16383,共計16384個地址。標識符接收方地址發(fā)送方地址因為一幀最多能發(fā)送8字節(jié)數(shù)據(jù),因此要發(fā)送超過8字節(jié)的數(shù)據(jù)就必須使用多幀,為了能適應(yīng)多任務(wù)環(huán)境,我們在把幀的數(shù)據(jù)段的前兩自己數(shù)據(jù)用作特殊用途:第一字節(jié)表示幀數(shù)據(jù)的ID,其bit7為1:表示服務(wù)器返回的數(shù)據(jù)幀,為0:表示客戶端請求的數(shù)據(jù)幀;第二字節(jié)表示著一幀在這個數(shù)據(jù)包中的相對為位置,其bit7為1:表示這是最后一幀,因此我們可以根據(jù)這一幀就能計算出此次要傳輸?shù)臄?shù)據(jù)字節(jié)數(shù),有這兩字節(jié)的數(shù)據(jù)我們就能把一個數(shù)據(jù)包分成多個幀發(fā)

7、送出去,然后在接收方根據(jù)這兩字節(jié)的信息把數(shù)據(jù)包從新組裝。由第二字節(jié)信息我們可以計算出一次能傳輸?shù)臄?shù)據(jù)包的大小為128*6=768字節(jié)。你也許會問,那個ID數(shù)據(jù)有什么用,為了支持多任務(wù)處理,一個客服端可能有多個任務(wù)同時把數(shù)據(jù)發(fā)送到同一個服務(wù)器,這個ID就是區(qū)分不同任務(wù)的,客戶端發(fā)送到的時候分配一個空閑的ID然后以此ID把數(shù)據(jù)發(fā)送出去。服務(wù)器接受到同一個客服端發(fā)來的不同ID的數(shù)據(jù)包,那么服務(wù)器就根據(jù)ID的不同分別處理;回復客戶端時把ID的最高位置1,然后發(fā)送回去,客服端收到發(fā)回復后根據(jù)ID把數(shù)據(jù)分發(fā)給對應(yīng)的任務(wù)。一個設(shè)備可以是客戶端也可以是服務(wù)器,還可以包含兩者,那

8、么CAN接收服務(wù)程序就必

當前文檔最多預覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當前文檔最多預覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學公式或PPT動畫的文件,查看預覽時可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負責整理代發(fā)布。如果您對本文檔版權(quán)有爭議請及時聯(lián)系客服。
3. 下載前請仔細閱讀文檔內(nèi)容,確認文檔內(nèi)容符合您的需求后進行下載,若出現(xiàn)內(nèi)容與標題不符可向本站投訴處理。
4. 下載文檔時可能由于網(wǎng)絡(luò)波動等原因無法下載或下載錯誤,付費完成后未能成功下載的用戶請聯(lián)系客服處理。