版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、Modbus通訊協(xié)議及編程方法.txt愛情就像腳上的鞋,只有失去的時(shí)候才知道赤腳走路是什么滋味騙人有風(fēng)險(xiǎn),說慌要謹(jǐn)慎。不要愛上年紀(jì)小的男人,他會(huì)把你當(dāng)成愛情學(xué)校,一旦學(xué)徒圓滿,便會(huì)義無反顧地離開你。ModBus RTU通訊協(xié)議。下面就ModBus RTU協(xié)議簡(jiǎn)要介紹如下:一、通訊協(xié)議:1、通訊傳送方式:通訊傳送分為獨(dú)立的信息頭,和發(fā)送的編碼數(shù)據(jù)。以下的通訊傳送方式定義也與MODBUS RTU 通訊規(guī)約相兼容:編碼 8位二進(jìn)制起始位 1位數(shù)據(jù)位 8位奇偶校驗(yàn)位 1位(偶校驗(yàn)位/無效驗(yàn)位停止位 1位錯(cuò)誤校檢 CRC(冗余循環(huán)碼初始結(jié)構(gòu) = 4字節(jié)的時(shí)間地址碼 = 1 字節(jié)功能碼 = 1 字節(jié)數(shù)據(jù)區(qū)
2、 = N 字節(jié)錯(cuò)誤校檢 = 16位CRC碼結(jié)束結(jié)構(gòu) = 4字節(jié)的時(shí)間地址碼:地址碼為通訊傳送的第一個(gè)字節(jié)。這個(gè)字節(jié)表明由用戶設(shè)定地址碼的從機(jī)將接收由主機(jī)發(fā)送來的信息。并且每個(gè)從機(jī)都有具有唯一的地址碼,并且響應(yīng)回送均以各自的地址碼開始。主機(jī)發(fā)送的地址碼表明將發(fā)送到的從機(jī)地址,而從機(jī)發(fā)送的地址碼表明回送的從機(jī)地址。功能碼:通訊傳送的第二個(gè)字節(jié)。ModBus通訊規(guī)約定義功能號(hào)為1到127。本儀表只利用其中的一部分功能碼。作為主機(jī)請(qǐng)求發(fā)送,通過功能碼告訴從機(jī)執(zhí)行什么動(dòng)作。作為從機(jī)響應(yīng),從機(jī)發(fā)送的功能碼與從主機(jī)發(fā)送來的功能碼一樣,并表明從機(jī)已響應(yīng)主機(jī)進(jìn)行操作。如果從機(jī)發(fā)送的功能碼的最高位為1(比如功能碼
3、大與此同時(shí)127,則表明從機(jī)沒有響應(yīng)操作或發(fā)送出錯(cuò)。數(shù)據(jù)區(qū):數(shù)據(jù)區(qū)是根據(jù)不同的功能碼而不同。數(shù)據(jù)區(qū)可以是實(shí)際數(shù)值、設(shè)置點(diǎn)、主機(jī)發(fā)送給從機(jī)或從機(jī)發(fā)送給主機(jī)的地址。CRC碼:二字節(jié)的錯(cuò)誤檢測(cè)碼。2、通訊規(guī)約:當(dāng)通訊命令發(fā)送至儀器時(shí),符合相應(yīng)地址碼的設(shè)備接通訊命令,并除去地址碼,讀取信息,如果沒有出錯(cuò),則執(zhí)行相應(yīng)的任務(wù);然后把執(zhí)行結(jié)果返送給發(fā)送者。返送的信息中包括地址碼、執(zhí)行動(dòng)作的功能碼、執(zhí)行動(dòng)作后結(jié)果的數(shù)據(jù)以及錯(cuò)誤校驗(yàn)碼。如果出錯(cuò)就不發(fā)送任何信息。(1信息幀結(jié)構(gòu)地址碼功能碼數(shù)據(jù)區(qū)錯(cuò)誤校驗(yàn)碼8位8位N×8位16位地址碼:地址碼是信息幀的第一字節(jié)(8位,從0到255。這個(gè)字節(jié)表明由用戶設(shè)置地
4、址的從機(jī)將接收由主機(jī)發(fā)送來的信息。每個(gè)從機(jī)都必須有唯一的地址碼,并且只有符合地址碼的從機(jī)才能響應(yīng)回送。當(dāng)從機(jī)回送信息時(shí),相當(dāng)?shù)牡刂反a表明該信息來自于何處。功能碼:主機(jī)發(fā)送的功能碼告訴從機(jī)執(zhí)行什么任務(wù)。表1-1列出的功能碼都有具體的含義及操作。代碼含義操作03 讀取數(shù)據(jù)讀取當(dāng)前寄存器內(nèi)一個(gè)或多個(gè)二進(jìn)制值06 重置單一寄存器把設(shè)置的二進(jìn)制值寫入單一寄存器數(shù)據(jù)區(qū):數(shù)據(jù)區(qū)包含需要從機(jī)執(zhí)行什么動(dòng)作或由從機(jī)采集的返送信息。這些信息可以是數(shù)值、參考地址等等。例如,功能碼告訴從機(jī)讀取寄存器的值,則數(shù)據(jù)區(qū)必需包含要讀取寄存器的起始地址及讀取長(zhǎng)度。對(duì)于不同的從機(jī),地址和數(shù)據(jù)信息都不相同。錯(cuò)誤校驗(yàn)碼:主機(jī)或從機(jī)可用
5、校驗(yàn)碼進(jìn)行判別接收信息是否出錯(cuò)。有時(shí),由于電子噪聲或其它一些干擾,信息在傳輸過程中會(huì)發(fā)生細(xì)微的變化,錯(cuò)誤校驗(yàn)碼保證了主機(jī)或從機(jī)對(duì)在傳送過程中出錯(cuò)的信息不起作用。這樣增加了系統(tǒng)的安全和效率。錯(cuò)誤校驗(yàn)采用CRC-16校驗(yàn)方法。注:信息幀的格式都基本相同:地址碼、功能碼、數(shù)據(jù)區(qū)和錯(cuò)誤校驗(yàn)碼。/-(2錯(cuò)誤校驗(yàn)冗余循環(huán)碼(CRC包含2個(gè)字節(jié),即16位二進(jìn)制。CRC碼由發(fā)送設(shè)備計(jì)算,放置于發(fā)送信息的尾部。接收信息的設(shè)備再重新計(jì)算接收到信息的 CRC碼,比較計(jì)算得到的CRC碼是否與接收到的相符,如果兩者不相符,則表明出錯(cuò)。CRC碼的計(jì)算方法是,先預(yù)置16位寄存器全為1。再逐步把每8位數(shù)據(jù)信息進(jìn)行處理。在進(jìn)行
6、CRC碼計(jì)算時(shí)只用8位數(shù)據(jù)位,起始位及停止位,如有奇偶校驗(yàn)位的話也包括奇偶校驗(yàn)位,都不參與CRC碼計(jì)算。在計(jì)算CRC碼時(shí),8位數(shù)據(jù)與寄存器的數(shù)據(jù)相異或,得到的結(jié)果向低位移一字節(jié),用0填補(bǔ)最高位。再檢查最低位,如果最低位為1,把寄存器的內(nèi)容與預(yù)置數(shù)相異或,如果最低位為0,不進(jìn)行異或運(yùn)算。這個(gè)過程一直重復(fù)8次。第8次移位后,下一個(gè)8位再與現(xiàn)在寄存器的內(nèi)容相相異或,這個(gè)過程與以上一樣重復(fù)8次。當(dāng)所有的數(shù)據(jù)信息處理完后,最后寄存器的內(nèi)容即為CRC碼值。CRC碼中的數(shù)據(jù)發(fā)送、接收時(shí)低字節(jié)在前。計(jì)算CRC碼的步驟為:1、預(yù)置16位寄存器為十六進(jìn)制FFFF(即全為1。稱此寄存器為CRC寄存器;2、把第一個(gè)8
7、位數(shù)據(jù)與16位CRC寄存器的低位相異或,把結(jié)果放于CRC寄存器;3、把寄存器的內(nèi)容右移一位(朝低位,用0填補(bǔ)最高位,檢查最低位;4、如果最低位為0:重復(fù)第3步(再次移位; 如果最低位為1:CRC寄存器與多項(xiàng)式A001(1010 0000 0000 0001進(jìn)行異或;5、重復(fù)步驟3和4,直到右移8次,這樣整個(gè)8位數(shù)據(jù)全部進(jìn)行了處理;6、重復(fù)步驟2到步驟5,進(jìn)行下一個(gè)8位數(shù)據(jù)的處理;7、最后得到的CRC寄存器即為CRC碼。(3功能碼03,讀取點(diǎn)和返回值:儀表采用Modbus RTU通訊規(guī)約,利用通訊命令,可以進(jìn)行讀取點(diǎn)(“保持寄存器” 或返回值(“輸入寄存器” 的操作。保持和輸入寄存器都是16位(
8、2字節(jié)值,并且高位在前。這樣用于儀表的讀取點(diǎn)和返回值都是2字節(jié)。一次最多可讀取寄存器數(shù)是60。由于一些可編程控制器不用功能碼03,所以功能碼03被用作讀取點(diǎn)和返回值。從機(jī)響應(yīng)的命令格式是從機(jī)地址、功能碼、數(shù)據(jù)區(qū)及CRC碼。數(shù)據(jù)區(qū)中的寄存器數(shù)據(jù)都是每?jī)蓚€(gè)字節(jié)高字節(jié)在前。(4功能碼06,單點(diǎn)保存主機(jī)利用這條命令把單點(diǎn)數(shù)據(jù)保存到儀表的存儲(chǔ)器。從機(jī)也用這個(gè)功能碼向主機(jī)返送信息。二、編程舉例:下面是一個(gè)用VC編寫的ModBus RTU通訊的例子通訊口設(shè)置DCB dcb;hCom=CreateFile("COM1",GENERIC_READ|GENERIC_WRITE,0,NULL,O
9、PEN_EXISTING,0,NULL;if(hCom=INVALID_HANDLE_VALUEMessageBox("createfile error,error"BOOL error=SetupComm(hCom,1024,1024;if(!errorMessageBox("setupcomm error"error=GetCommState(hCom,&dcb;if(!errorMessageBox("getcommstate,error"dcb.BaudRate=2400;dcb.ByteSize=8;dcb.Pari
10、ty=EVENPARITY;/NOPARITY;dcb.StopBits=ONESTOPBIT;error=SetCommState(hCom,&dcb;CRC校驗(yàn)碼計(jì)算UINT crcvoid calccrc(BYTE crcbufBYTE i;crc=crc crcbuf;for(i=0;i<8;i+BYTE TT;TT=crc&1;crc=crc>>1;crc=crc&0x7fff;if (TT=1crc=crc0xa001;crc=crc&0xffff;數(shù)據(jù)發(fā)送zxaddr=11;/讀取地址為11的巡檢表數(shù)據(jù)zxnum=10;/讀取十個(gè)通道的數(shù)據(jù)writebuf20=zxaddr;writebuf21=3;writebuf22=0;writebuf23=0;writebuf24=0;writebuf25=zxnum;crc=0xffff;calccrc(writebuf20;calccrc(writebuf21;calccrc(writebuf22;calccrc(writebuf23;calccrc(writebuf24;calccrc(writebuf25;writebuf26=crc & 0xff;w
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 創(chuàng)業(yè)投資信托協(xié)議書(2篇)
- 2024年草船借箭教學(xué)設(shè)計(jì)(53篇)
- 2024年福建省莆田市涵江區(qū)三江口鎮(zhèn)招聘社區(qū)工作者考前自測(cè)高頻考點(diǎn)模擬試題(共500題)含答案
- 2024年福建省《消防員資格證之一級(jí)防火考試》必刷500題標(biāo)準(zhǔn)卷
- 黃金卷3-【贏在中考·黃金八卷】(原卷版)
- 2024屆四川省綿陽(yáng)市高三上學(xué)期第二次診斷性考試(二模)文綜試題
- 2025屆南開中學(xué)初中考生物押題試卷含解析
- 互補(bǔ)發(fā)電系統(tǒng)行業(yè)深度研究報(bào)告
- 2025公司質(zhì)押借款合同范本
- 2024年度天津市公共營(yíng)養(yǎng)師之二級(jí)營(yíng)養(yǎng)師綜合檢測(cè)試卷A卷含答案
- 網(wǎng)球國(guó)家二級(jí)裁判培訓(xùn)講座
- 中南大學(xué)軍事理論學(xué)習(xí)通超星課后章節(jié)答案期末考試題庫(kù)2023年
- 員工工資條模板
- 缺點(diǎn)列舉法課件
- 籃球?qū)m?xiàng)體育課教學(xué)大綱、教學(xué)計(jì)劃
- 創(chuàng)新與創(chuàng)業(yè)管理-四川大學(xué)中國(guó)大學(xué)mooc課后章節(jié)答案期末考試題庫(kù)2023年
- 2023-2024學(xué)年安徽省界首市小學(xué)語(yǔ)文三年級(jí)期末評(píng)估試卷詳細(xì)參考答案解析
- 執(zhí)行依據(jù)主文范文(通用4篇)
- 2022年鄭州市惠濟(jì)區(qū)事業(yè)單位考試真題及答案
- 磁共振臨床應(yīng)用
- 基站外電引入建設(shè)指導(dǎo)意見
評(píng)論
0/150
提交評(píng)論