《電子技術應用》
您所在的位置:首頁 > 通信與網絡 > 設計應用 > MODBUS通訊協議解析及編碼例程
MODBUS通訊協議解析及編碼例程
互聯網
摘要: 地址碼:地址碼為通訊傳送的第一個字節。這個字節表明由用戶設定地址碼的從機將接收由主機發送來的信息。并且每個從機都有具有唯一的地址碼,并且響應回送均以各自的地址碼開始。主機發送的地址碼表明將發送到的從機地址,而從機發送的地址碼表明回送的從機地址。
Abstract:
Key words :

ModBus通訊協議分為RTU協議和ASCII協議,下面就ModBus RTU協議簡要介紹如下:

一、通訊協議

(一)、通訊傳送方式:

   通訊傳送分為獨立的信息頭,和發送的編碼數據。以下的通訊傳送方式定義也與MODBUS RTU通訊規約相兼容:

編 碼 8位二進制
起始位 1位
數據位 8位
奇偶校驗位 1位(偶校驗位)
停止位 1位
錯誤校檢 CRC(冗余循環碼)

初始結構 = ≥4字節的時間
地址碼 = 1 字節
功能碼 = 1 字節
數據區 = N 字節
錯誤校檢 = 16位CRC碼
結束結構 = ≥4字節的時間

  地址碼:地址碼為通訊傳送的第一個字節。這個字節表明由用戶設定地址碼的從機將接收由主機發送來的信息。并且每個從機都有具有唯一的地址碼,并且響應回送均以各自的地址碼開始。主機發送的地址碼表明將發送到的從機地址,而從機發送的地址碼表明回送的從機地址。

  功能碼:通訊傳送的第二個字節。ModBus通訊規約定義功能號為1到127。本儀表只利用其中的一部分功能碼。作為主機請求發送,通過功能碼告訴從機執行什么動作。作為從機響應,從機發送的功能碼與從主機發送來的功能碼一樣,并表明從機已響應主機進行操作。如果從機發送的功能碼的最高位為1(比如功能碼大與此同時127),則表明從機沒有響應操作或發送出錯。

  數據區:數據區是根據不同的功能碼而不同。數據區可以是實際數值、設置點、主機發送給從機或從機發送給主機的地址。

   CRC碼:二字節的錯誤檢測碼。

(二)、通訊規約:

  當通訊命令發送至儀器時,符合相應地址碼的設備接通訊命令,并除去地址碼,讀取信息,如果沒有出錯,則執行相應的任務;然后把執行結果返送給發送者。返送的信息中包括地址碼、執行動作的功能碼、執行動作后結果的數據以及錯誤校驗碼。如果出錯就不發送任何信息。

1.信息幀結構

地址碼 功能碼 數據區 錯誤校驗碼
8位 8位 N × 8位 16位

  地址碼:地址碼是信息幀的第一字節(8位),從0到255。這個字節表明由用戶設置地址的從機將接收由主機發送來的信息。每個從機都必須有唯一的地址碼,并且只有符合地址碼的從機才能響應回送。當從機回送信息時,相當的地址碼表明該信息來自于何處。

   功能碼:主機發送的功能碼告訴從機執行什么任務。表1-1列出的功能碼都有具體的含義及操作。

代碼 含義 操作

03 讀取數據 讀取當前寄存器內一個或多個二進制值

06 重置單一寄存器 把設置的二進制值寫入單一寄存器

  數據區:數據區包含需要從機執行什么動作或由從機采集的返送信息。這些信息可以是數值、參考地址等等。例如,功能碼告訴從機讀取寄存器的值,則數據區必需包含要讀取寄存器的起始地址及讀取長度。對于不同的從機,地址和數據信息都不相同。

  錯誤校驗碼:主機或從機可用校驗碼進行判別接收信息是否出錯。有時,由于電子噪聲或其它一些干擾,信息在傳輸過程中會發生細微的變化,錯誤校驗碼保證了主機或從機對在傳送過程中出錯的信息不起作用。這樣增加了系統的安全和效率。錯誤校驗采用CRC-16校驗方法。

注:信息幀的格式都基本相同:地址碼、功能碼、數據區和錯誤校驗碼。

2.錯誤校驗

  冗余循環碼(CRC)包含2個字節,即16位二進制。CRC碼由發送設備計算,放置于發送信息的尾部。接收信息的設備再重新計算接收到信息的 CRC碼,比較計算得到的CRC碼是否與接收到的相符,如果兩者不相符,則表明出錯。

  CRC碼的計算方法是,先預置16位寄存器全為1。再逐步把每8位數據信息進行處理。在進行CRC碼計算時只用8位數據位,起始位及停止位,如有奇偶校驗位的話也包括奇偶校驗位,都不參與CRC碼計算。

  在計算CRC碼時,8位數據與寄存器的數據相異或,得到的結果向低位移一字節,用0填補最高位。再檢查最低位,如果最低位為1,把寄存器的內容與預置數相異或,如果最低位為0,不進行異或運算。

  這個過程一直重復8次。第8次移位后,下一個8位再與現在寄存器的內容相相異或,這個過程與以上一樣重復8次。當所有的數據信息處理完后,最后寄存器的內容即為CRC碼值。CRC碼中的數據發送、接收時低字節在前。

  計算CRC碼的步驟為:

預置16位寄存器為十六進制FFFF(即全為1)。稱此寄存器為CRC寄存器;
把第一個8位數據與16位CRC寄存器的低位相異或,把結果放于CRC寄存器;
把寄存器的內容右移一位(朝低位),用0填補最高位,檢查最低位;
如果最低位為0:重復第3步(再次移位); 如果最低位為1:CRC寄存器與多項式A001(1010 0000 0000 0001)進行異或;
重復步驟3和4,直到右移8次,這樣整個8位數據全部進行了處理;
重復步驟2到步驟5,進行下一個8位數據的處理;
最后得到的CRC寄存器即為CRC碼。
3.功能碼03,讀取點和返回值:

  儀表采用Modbus RTU通訊規約,利用通訊命令,可以進行讀取點(“保持寄存器”) 或返回值(“輸入寄存器” )的操作。保持和輸入寄存器都是16位(2字節)值,并且高位在前。這樣用于儀表的讀取點和返回值都是2字節。一次最多可讀取寄存器數是60。由于一些可編程控制器不用功能碼03,所以功能碼03被用作讀取點和返回值。從機響應的命令格式是從機地址、功能碼、數據區及CRC碼。數據區中的寄存器數據都是每兩個字節高字節在前。

4.功能碼06,單點保存

  主機利用這條命令把單點數據保存到儀表的存儲器。從機也用這個功能碼向主機返送信息。

二、編程舉例

  下面是一個用VC編寫的ModBus RTU通訊的例子

(一)、通訊口設置

DCB dcb;
hCom=CreateFile("COM1",
     GENERIC_READ|GENERIC_WRITE,
     0,
     NULL,
     OPEN_EXISTING,
     0,
     NULL);
if(hCom==INVALID_HANDLE_VALUE)
{

         MessageBox("createfile error,error");
}
BOOL error=SetupComm(hCom,1024,1024);
if(!error)
  MessageBox("setupcomm error");
error=GetCommState(hCom,&dcb);
if(!error)
  MessageBox("getcommstate,error");
dcb.BaudRate=2400;
dcb.ByteSize=8;

dcb.Parity=EVENPARITY;//NOPARITY;
dcb.StopBits=ONESTOPBIT;

error=SetCommState(hCom,&dcb);

(二)、CRC校驗碼計算

UINT crc
void calccrc(BYTE crcbuf)
{
BYTE i;

crc=crc ^ crcbuf;
for(i=0;i<8;i++)
{
BYTE TT;
TT=crc&1;
crc=crc>>1;
crc=crc&0x7fff;
if (TT==1)
crc=crc^0xa001;
crc=crc&0xffff;
}
}

(三)、數據發送

zxaddr=11;//讀取地址為11的巡檢表數據

zxnum=10;//讀取十個通道的數據

writebuf2[0]=zxaddr;
writebuf2[1]=3;
writebuf2[2]=0;
writebuf2[3]=0;
writebuf2[4]=0;
writebuf2[5]=zxnum;
crc=0xffff;
calccrc(writebuf2[0]);
calccrc(writebuf2[1]);
calccrc(writebuf2[2]);
calccrc(writebuf2[3]);
calccrc(writebuf2[4]);
calccrc(writebuf2[5]);

writebuf2[6]=crc & 0xff;
writebuf2[7]=crc/0x100;
WriteFile(hCom,writebuf2,8,&comnum,NULL);

(四)、數據讀取

ReadFile(hCom,writebuf,5+zxnum*2,&comnum,NULL);//讀取zxnum個通道數據

可增加錯誤處理程序,如地址碼錯誤、CRC碼錯誤判斷、通訊故障處理等。

此內容為AET網站原創,未經授權禁止轉載。
热re99久久精品国产66热_欧美小视频在线观看_日韩成人激情影院_庆余年2免费日韩剧观看大牛_91久久久久久国产精品_国产原创欧美精品_美女999久久久精品视频_欧美大成色www永久网站婷_国产色婷婷国产综合在线理论片a_国产精品电影在线观看_日韩精品视频在线观看网址_97在线观看免费_性欧美亚洲xxxx乳在线观看_久久精品美女视频网站_777国产偷窥盗摄精品视频_在线日韩第一页
  • <strike id="ygamy"></strike>
  • 
    
      • <del id="ygamy"></del>
        <tfoot id="ygamy"></tfoot>
          <strike id="ygamy"></strike>
          国产精品一区二区三区成人| 国产欧美一区二区三区久久人妖| 99re国产精品| 欧美一区二区视频观看视频| 亚洲深夜福利视频| 国产一区二区欧美日韩| 国语自产偷拍精品视频偷| 久久久免费观看视频| 日韩一级精品视频在线观看| 你懂的国产精品永久在线| 在线亚洲免费视频| 国产精品久久久久7777婷婷| 一区二区三区欧美日韩| 亚洲日本va午夜在线影院| 亚洲精品美女在线| 亚洲黄色在线| 欧美在线免费一级片| 午夜精品亚洲一区二区三区嫩草| 国产精品sm| 中文网丁香综合网| 最近中文字幕日韩精品| 欧美三级乱人伦电影| 亚洲电影免费观看高清| 国产精品伊人日日| 久久综合国产精品台湾中文娱乐网| 久久久久一本一区二区青青蜜月| 国产精品久久中文| 精品av久久707| 亚洲激情小视频| 香蕉久久一区二区不卡无毒影院| 亚洲一二三区精品| 欧美视频日韩视频| 亚洲视频综合在线| 国产在线精品一区二区中文| 国产精品护士白丝一区av| 亚洲欧美国产精品专区久久| 亚洲成人资源| 一区二区三区视频在线| 久久综合激情| 欧美一区二区视频网站| 欧美伦理视频网站| 亚洲欧美成人综合| 老鸭窝91久久精品色噜噜导演| 午夜在线一区二区| 亚洲精品国精品久久99热| 国产精品porn| 久久亚洲高清| 亚洲欧洲综合| 久久精品一区二区| 亚洲综合999| 在线免费观看一区二区三区| 国产综合久久久久影院| 欧美日韩国产成人在线91| 亚洲国产一区二区精品专区| 在线精品视频一区二区三四| 欧美视频你懂的| 久久国产精品亚洲77777| 亚洲丝袜av一区| 欧美日韩在线免费观看| 久久综合色影院| 久久在线播放| 亚洲精品国产精品乱码不99| 国产精品国产三级国产aⅴ浪潮| 老**午夜毛片一区二区三区| 久久国产精品一区二区三区| 99成人精品| 亚洲人精品午夜在线观看| 久久精品国产免费观看| 亚洲欧洲日韩在线| 国产专区综合网| 国产一区在线看| 亚洲综合色激情五月| 久久精品视频在线播放| 亚洲欧美综合另类中字| 亚洲电影免费观看高清完整版在线观看| 国产午夜亚洲精品不卡| 久久婷婷蜜乳一本欲蜜臀| 国产精品久久网| 久久夜色精品国产| 国产主播在线一区| 悠悠资源网亚洲青| 久久不见久久见免费视频1| 中文日韩电影网站| 销魂美女一区二区三区视频在线| 伊人久久男人天堂| 在线成人亚洲| 亚洲一区免费网站| 亚洲一区二区成人| 午夜精品久久久久久久久久久久久| 噜噜噜在线观看免费视频日韩| 性伦欧美刺激片在线观看| 一本大道久久a久久精二百| 欧美性猛交xxxx免费看久久久| 久久久久久成人| 欧美日韩亚洲系列| 国产永久精品大片wwwapp| 91久久国产综合久久| 欧美一区二区三区久久精品| 亚洲欧洲日产国产综合网| 欧美精品一卡| 国产精品第一区| 好男人免费精品视频| 日韩视频永久免费| 欧美精品日韩综合在线| 久久影院午夜论| 欧美午夜三级| 亚洲欧洲日本在线| 亚洲国产精品一区二区尤物区| 亚洲黑丝在线| 亚洲一区二三| 久久久久国色av免费看影院| 欧美大片国产精品| 国产精品夜色7777狼人| 国产精品ⅴa在线观看h| 国产欧美一区二区白浆黑人| 91久久久久久久久| 亚洲激情影视| 国产麻豆一精品一av一免费| 国内精品免费午夜毛片| 亚洲国产高清一区二区三区| 永久免费毛片在线播放不卡| 99亚洲精品| 日韩视频精品| 久久精品人人做人人综合| 亚洲午夜久久久| 国模套图日韩精品一区二区| 国产一区二区三区久久精品| 禁断一区二区三区在线| 亚洲美女视频在线免费观看| 亚洲三级视频| 国产日韩欧美| 久久女同互慰一区二区三区| 中日韩高清电影网| 亚洲欧洲精品一区二区三区| 欧美三级午夜理伦三级中文幕| 久久免费国产精品| 最新国产乱人伦偷精品免费网站| 亚洲手机在线| 亚洲网址在线| 久久精品视频在线播放| 久久视频在线视频| 狠狠色香婷婷久久亚洲精品| 欧美激情精品久久久六区热门| 欧美日韩一区二区三| 欧美一区二区三区婷婷月色| 欧美欧美午夜aⅴ在线观看| 国产精品久久久亚洲一区| 国产精品二区在线观看| 国产精品久久夜| 国产在线国偷精品产拍免费yy| 国产精品永久| 禁断一区二区三区在线| 国产精品一区二区久久久久| 久久久久久黄| 一区二区三区不卡视频在线观看| 亚洲欧美自拍偷拍| 久久久噜噜噜久久| 免费成人高清在线视频| 国产免费观看久久黄| 欧美午夜视频| 亚洲欧洲视频| 午夜欧美理论片| 欧美专区第一页| 国产精品久久一级| 国产亚洲二区| 亚洲深夜福利视频| 欧美亚洲日本网站| 在线成人www免费观看视频| 亚洲一二区在线| 亚洲高清免费在线| 亚洲视频一区在线| 久久精品av麻豆的观看方式| 国产乱码精品一区二区三区五月婷| 欧美国产亚洲精品久久久8v| 欧美日韩免费一区二区三区| 欧美日本精品| 亚洲综合色激情五月| 亚洲免费激情| 欧美1区2区3区| 亚洲国产欧美一区| 激情亚洲网站| 在线一区免费观看| 黄色综合网站| 欧美在线三级| 国产精品99久久久久久白浆小说| 在线观看中文字幕不卡| 日韩午夜在线播放| 欧美精品成人91久久久久久久| 日韩视频中文字幕| 狠狠久久亚洲欧美专区| 亚洲第一在线综合网站| 欧美jizzhd精品欧美巨大免费| 欧美日韩黄色一区二区| 亚洲精品一区二区三区在线观看| 久久久久久一区二区三区| 免费视频最近日韩| 国产日韩一区二区三区| 亚洲女同在线| 国产日韩欧美综合一区| 欧美一级淫片aaaaaaa视频| 午夜精品久久久久久久99樱桃| 欧美一区二区三区视频免费| **欧美日韩vr在线| 久久精品女人| 99视频在线观看一区三区| 久久国产精品99国产精| 在线国产欧美| 免费亚洲视频| 国产日产亚洲精品| 欧美精品一区二区视频| 亚洲欧美激情一区二区| 亚洲女ⅴideoshd黑人| 亚洲一区日韩在线| 欧美日一区二区三区在线观看国产免| 午夜精品福利一区二区蜜股av| 欧美日本成人| 亚洲综合激情| 欧美亚洲在线观看| 亚洲性感美女99在线| 免费毛片一区二区三区久久久| 精品999在线播放| 国产区二精品视| 欧美一区二区视频免费观看| 欧美一区二区三区在线观看| 亚洲高清一区二区三区| 在线观看亚洲视频啊啊啊啊| 欧美视频久久| 99国内精品久久| 国产精品久在线观看| 国产亚洲网站| 亚洲美女免费精品视频在线观看| 悠悠资源网亚洲青| 一区二区在线观看av| 欧美国产日本高清在线| 国产伦精品免费视频| 亚洲第一中文字幕| 欧美精品亚洲一区二区在线播放| 国产亚洲精品一区二区| 亚洲欧美国产日韩天堂区| 欧美在线视频一区| 一区二区不卡在线视频 午夜欧美不卡在| 久久综合一区| 久久亚洲影音av资源网| 亚洲精品中文字幕在线观看| 亚洲欧美日本另类| 久久国产精品亚洲va麻豆| 久久精品综合网| 欧美性大战xxxxx久久久| 欧美激情日韩| 亚洲视频专区在线| 久久成人免费网| 欧美日韩成人在线视频| 亚洲神马久久| 欧美精品久久99久久在免费线| 欧美14一18处毛片| 久久久亚洲成人| 免费久久久一本精品久久区| 日韩网站在线看片你懂的| 国产亚洲一区在线播放| 一本久道久久综合婷婷鲸鱼| 国产午夜精品理论片a级大结局| 欧美激情综合| 91久久精品www人人做人人爽| 亚洲第一级黄色片| 欧美在线三级| 裸体一区二区三区| 亚洲精品护士| 亚洲日本va在线观看| 亚洲美女在线看| 亚洲一区二区三区四区五区午夜| 尤物yw午夜国产精品视频明星| 在线激情影院一区| 亚洲国产成人av| 一本高清dvd不卡在线观看| 欧美一级欧美一级在线播放| 亚洲激情精品| 欧美一区二区| 在线欧美不卡| 欧美婷婷在线| 欧美精品在线视频观看| 欧美在线亚洲综合一区| 欧美三级乱人伦电影| 午夜精品久久久| 99精品黄色片免费大全| 久久人体大胆视频| 国产精品免费视频xxxx| 亚洲一区二区精品在线观看| 欧美在线日韩在线| 国产欧美短视频| 国产偷国产偷亚洲高清97cao| 国产精品日韩在线| 亚洲女性裸体视频| 国产欧美日韩免费| 欧美日韩黄视频| 麻豆国产精品va在线观看不卡| 久久免费午夜影院| 在线成人激情黄色| 亚洲淫片在线视频| 最近中文字幕mv在线一区二区三区四区| 日韩视频免费观看高清在线视频| 久久成人免费| 亚洲素人在线| 亚洲九九九在线观看| 久久精品国产一区二区三区免费看| 久久精品色图| 亚洲欧美久久久久一区二区三区| 欧美成人免费在线视频| 在线观看91精品国产麻豆| 国产欧美69| 在线一区亚洲| 亚洲国产老妈| 欧美日韩免费精品| 一区二区三区|亚洲午夜| 亚洲国产精品欧美一二99| 久久久综合激的五月天| 久久九九99| 国产精品99免费看| 国产精品成人一区二区三区夜夜夜| 韩国女主播一区二区三区| 在线免费观看一区二区三区| 国产精品久久久久婷婷| 国产美女精品视频免费观看| 国产精品久久久999| 亚洲免费成人av电影| 久久看片网站| 一本色道精品久久一区二区三区| 亚洲精品国产精品国自产观看浪潮| 欧美精品1区2区3区|