Modbus協(xié)議試驗(yàn)臺控制設(shè)備基礎(chǔ)協(xié)議_第1頁
Modbus協(xié)議試驗(yàn)臺控制設(shè)備基礎(chǔ)協(xié)議_第2頁
Modbus協(xié)議試驗(yàn)臺控制設(shè)備基礎(chǔ)協(xié)議_第3頁
Modbus協(xié)議試驗(yàn)臺控制設(shè)備基礎(chǔ)協(xié)議_第4頁
Modbus協(xié)議試驗(yàn)臺控制設(shè)備基礎(chǔ)協(xié)議_第5頁
已閱讀5頁,還剩16頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

/Modbus協(xié)議_試驗(yàn)臺控制設(shè)備基礎(chǔ)協(xié)議2016-10-28更新一、Modbus串行鏈路協(xié)議基本要求物理層RS232接口或RS485接口:RJ45/DB9連接器與電纜相接數(shù)據(jù)信號發(fā)送速率:要求9600bps波特率,推薦19200bps波特率串行鏈路系統(tǒng)上的Modbus只應(yīng)用于短距離(<20m)點(diǎn)到點(diǎn)的互連Modbus串行鏈路電纜必須屏蔽。在電纜兩端,其屏蔽必須接到保護(hù)地上(若在這個(gè)端部使用了連接器,該連接器外殼要連在電纜屏蔽上)可視診斷必須用LED(發(fā)光兩極管)指示通信狀態(tài)和設(shè)備狀態(tài)。Modbus實(shí)現(xiàn)等級Modbus串行鏈路上的每個(gè)設(shè)備必須遵守相同實(shí)現(xiàn)等級的所有的強(qiáng)制的要求,常規(guī)等級必須提供可配置能力。

二、Modbus串行鏈路幀模式RTU傳輸模式(建議采用)當(dāng)設(shè)備使用RTU(RemoteTerminalUnit)模式在Modbus串行鏈路通信,報(bào)文中每個(gè)8位字節(jié)含有兩個(gè)4位十六進(jìn)制字符。這種模式的主要優(yōu)點(diǎn)是較高的數(shù)據(jù)密度,在相同的波特率下比ASCII模式有更高的吞吐率。每個(gè)報(bào)文必須以連續(xù)的字符流傳送。RTU模式位序列報(bào)文中每個(gè)8位字節(jié)含有兩個(gè)4位十六進(jìn)制字符(0–9,A–F),每個(gè)字符傳送11位。1起始位8數(shù)據(jù)位,首先發(fā)送最低有效位1位作為奇偶校驗(yàn)(默認(rèn)偶校驗(yàn))1停止位(注:使用無校驗(yàn)要求2個(gè)停止位。)通用Modbus幀PDU-協(xié)議數(shù)據(jù)單元ADU-應(yīng)用數(shù)據(jù)單元RS232/RS485ADU=253字節(jié)+服務(wù)器地址(1byte)+CRC(2字節(jié))=256字節(jié)RTU模式幀序列由發(fā)送設(shè)備將Modbus報(bào)文構(gòu)造為帶有已知起始和結(jié)束標(biāo)記的幀。這使設(shè)備可以在報(bào)文的開始接收新幀,并且知道何時(shí)報(bào)文結(jié)束。不完整的報(bào)文必須能夠被檢測到而錯(cuò)誤標(biāo)志必須作為結(jié)果被設(shè)置。CRC校驗(yàn)在RTU模式包含一個(gè)對全部報(bào)文內(nèi)容執(zhí)行的,基于循環(huán)冗余校驗(yàn)(CRC-CyclicalRedundancyChecking)算法的錯(cuò)誤檢驗(yàn)域。CRC域檢驗(yàn)整個(gè)報(bào)文的內(nèi)容。不管報(bào)文有無奇偶校驗(yàn),均執(zhí)行此檢驗(yàn)。CRC包含由兩個(gè)8位字節(jié)組成的一個(gè)16位值。CRC域作為報(bào)文的最后的域附加在報(bào)文之后。計(jì)算后,首先附加低字節(jié),然后是高字節(jié)。CRC高字節(jié)為報(bào)文發(fā)送的最后一個(gè)子節(jié)。其實(shí)現(xiàn)的C語言程序附后。unsignedCRC16(unsignedchar*puchMsg,unsignedusDataLen){unsignedcharuchCRCHi=0xFF;/*CRC的高字節(jié)初始化*/unsignedcharuchCRCLo=0xFF;/*CRC的低字節(jié)初始化*/unsigneduIndex;/*CRC查詢表索引*/while(usDataLen--)/*完成整個(gè)報(bào)文緩沖區(qū)*/{uIndex=uchCRCLo^*puchMsgg++;uchCRCLo=uchCRCHi^auchCRCHi[uIndex};uchCRCHi=auchCRCLo[uIndex];}return(uchCRCHi<<8|uchCRCLo);}

高字節(jié)表staticunsignedcharauchCRCHi[]={0x00,0xC1,0x81,0x40,0x01,0xC0,0x80,0x41,0x01,0xC0,0x80,0x41,0x00,0xC1,0x81,0x40,0x01,0xC0,0x80,0x41,0x00,0xC1,0x81,0x40,0x00,0xC1,0x81,0x40,0x01,0xC0,0x80,0x41,0x01,0xC0,0x80,0x41,0x00,0xC1,0x81,0x40,0x00,0xC1,0x81,0x40,0x01,0xC0,0x80,0x41,0x00,0xC1,0x81,0x40,0x01,0xC0,0x80,0x41,0x01,0xC0,0x80,0x41,0x00,0xC1,0x81,0x40,0x01,0xC0,0x80,0x41,0x00,0xC1,0x81,0x40,0x00,0xC1,0x81,0x40,0x01,0xC0,0x80,0x41,0x00,0xC1,0x81,0x40,0x01,0xC0,0x80,0x41,0x01,0xC0,0x80,0x41,0x00,0xC1,0x81,0x40,0x00,0xC1,0x81,0x40,0x01,0xC0,0x80,0x41,0x01,0xC0,0x80,0x41,0x00,0xC1,0x81,0x40,0x01,0xC0,0x80,0x41,0x00,0xC1,0x81,0x40,0x00,0xC1,0x81,0x40,0x01,0xC0,0x80,0x41,0x01,0xC0,0x80,0x41,0x00,0xC1,0x81,0x40,0x00,0xC1,0x81,0x40,0x01,0xC0,0x80,0x41,0x00,0xC1,0x81,0x40,0x01,0xC0,0x80,0x41,0x01,0xC0,0x80,0x41,0x00,0xC1,0x81,0x40,0x00,0xC1,0x81,0x40,0x01,0xC0,0x80,0x41,0x01,0xC0,0x80,0x41,0x00,0xC1,0x81,0x40,0x01,0xC0,0x80,0x41,0x00,0xC1,0x81,0x40,0x00,0xC1,0x81,0x40,0x01,0xC0,0x80,0x41,0x00,0xC1,0x81,0x40,0x01,0xC0,0x80,0x41,0x01,0xC0,0x80,0x41,0x00,0xC1,0x81,0x40,0x01,0xC0,0x80,0x41,0x00,0xC1,0x81,0x40,0x00,0xC1,0x81,0x40,0x01,0xC0,0x80,0x41,0x01,0xC0,0x80,0x41,0x00,0xC1,0x81,0x40,0x00,0xC1,0x81,0x40,0x01,0xC0,0x80,0x41,0x00,0xC1,0x81,0x40,0x01,0xC0,0x80,0x41,0x01,0xC0,0x80,0x41,0x00,0xC1,0x81,0x40};低字節(jié)表staticcharauchCRCLo[]={0x00,0xC0,0xC1,0x01,0xC3,0x03,0x02,0xC2,0xC6,0x06,0x07,0xC7,0x05,0xC5,0xC4,0x04,0xCC,0x0C,0x0D,0xCD,0x0F,0xCF,0xCE,0x0E,0x0A,0xCA,0xCB,0x0B,0xC9,0x09,0x08,0xC8,0xD8,0x18,0x19,0xD9,0x1B,0xDB,0xDA,0x1A,0x1E,0xDE,0xDF,0x1F,0xDD,0x1D,0x1C,0xDC,0x14,0xD4,0xD5,0x15,0xD7,0x17,0x16,0xD6,0xD2,0x12,0x13,0xD3,0x11,0xD1,0xD0,0x10,0xF0,0x30,0x31,0xF1,0x33,0xF3,0xF2,0x32,0x36,0xF6,0xF7,0x37,0xF5,0x35,0x34,0xF4,0x3C,0xFC,0xFD,0x3D,0xFF,0x3F,0x3E,0xFE,0xFA,0x3A,0x3B,0xFB,0x39,0xF9,0xF8,0x38,0x28,0xE8,0xE9,0x29,0xEB,0x2B,0x2A,0xEA,0xEE,0x2E,0x2F,0xEF,0x2D,0xED,0xEC,0x2C,0xE4,0x24,0x25,0xE5,0x27,0xE7,0xE6,0x26,0x22,0xE2,0xE3,0x23,0xE1,0x21,0x20,0xE0,0xA0,0x60,0x61,0xA1,0x63,0xA3,0xA2,0x62,0x66,0xA6,0xA7,0x67,0xA5,0x65,0x64,0xA4,0x6C,0xAC,0xAD,0x6D,0xAF,0x6F,0x6E,0xAE,0xAA,0x6A,0x6B,0xAB,0x69,0xA9,0xA8,0x68,0x78,0xB8,0xB9,0x79,0xBB,0x7B,0x7A,0xBA,0xBE,0x7E,0x7F,0xBF,0x7D,0xBD,0xBC,0x7C,0xB4,0x74,0x75,0xB5,0x77,0xB7,0xB6,0x76,0x72,0xB2,0xB3,0x73,0xB1,0x71,0x70,0xB0,0x50,0x90,0x91,0x51,0x93,0x53,0x52,0x92,0x96,0x56,0x57,0x97,0x55,0x95,0x94,0x54,0x9C,0x5C,0x5D,0x9D,0x5F,0x9F,0x9E,0x5E,0x5A,0x9A,0x9B,0x5B,0x99,0x59,0x58,0x98,0x88,0x48,0x49,0x89,0x4B,0x8B,0x8A,0x4A,0x4E,0x8E,0x8F,0x4F,0x8D,0x4D,0x4C,0x8C,0x44,0x84,0x85,0x45,0x87,0x47,0x46,0x86,0x82,0x42,0x43,0x83,0x41,0x81,0x80,0x40};

三、Modbus事務(wù)處理和功能碼Modbus事務(wù)處理(含異常碼生成)通用Modbus幀Modbus數(shù)據(jù)模型

常用功能碼(公共功能碼)使用以下5組公共碼1讀線圈3讀多個(gè)寄存器5寫單個(gè)線圈16寫多個(gè)寄存器43讀設(shè)備識別碼

1讀線圈在一個(gè)遠(yuǎn)程設(shè)備中,使用該功能碼讀取線圈的1至2000連續(xù)狀態(tài)。請求PDU詳細(xì)說明了起始地址(高字節(jié)在前,后同),即指定的第一個(gè)線圈地址和線圈編號,從零開始尋址線圈。線圈數(shù)量(高字節(jié)在前)指示需訪問線圈個(gè)數(shù)。數(shù)據(jù)域每個(gè)比特指示狀態(tài)為1=ON和0=OFF。第一個(gè)數(shù)據(jù)字節(jié)的LSB(最低有效位)指向起始地址的線圈,其它線圈依次類推,一直到這個(gè)字節(jié)的高位端為止,并在后續(xù)字節(jié)中從低位到高位的順序。如果返回的線圈數(shù)量不是8的倍數(shù),將用零填充最后數(shù)據(jù)字節(jié)中的剩余比特(一直到字節(jié)的高位端)。(異常碼參照Modbus事務(wù)處理機(jī)制,下同)3讀多個(gè)寄存器在一個(gè)遠(yuǎn)程設(shè)備中,使用該功能碼讀取保持寄存器連續(xù)塊的內(nèi)容。請求PDU說明了起始寄存器地址和寄存器數(shù)量。從零開始尋址寄存器。每個(gè)寄存器有兩字節(jié),高字節(jié)在前。

5寫單個(gè)線圈在一個(gè)遠(yuǎn)程設(shè)備上,使用該功能碼寫單個(gè)輸出為ON或OFF。請求PDU說明了線圈地址,從零開始尋址線圈。線圈值域的常量說明請求的ON/OFF狀態(tài)。十六進(jìn)制值0XFF00請求線圈為ON。十六進(jìn)制值0X0000請求線圈為OFF。其它所有值均為非法的,并且對線圈不起作用。16寫多個(gè)寄存器在一個(gè)遠(yuǎn)程設(shè)備中,使用該功能碼寫連續(xù)寄存器塊(1至約120個(gè)寄存器)。在請求數(shù)據(jù)域中說明了請求寫入的值。每個(gè)寄存器將數(shù)據(jù)分成兩字節(jié)(高字節(jié)在前)。

43讀設(shè)備識別碼這個(gè)功能碼允許讀取與遠(yuǎn)程設(shè)備的物理描述和功能描述相關(guān)的識別碼和附加報(bào)文。將讀設(shè)備識別碼接口模擬為一個(gè)地址空間,這個(gè)地址空間由一組可尋址數(shù)據(jù)元素組成。數(shù)據(jù)元素是被叫對象,并且對象Id確定這個(gè)數(shù)據(jù)元素。接口由3種對象組成:基本設(shè)備識別碼。所有此種對象都是必備的:廠商名稱、產(chǎn)品代碼和修訂本號。正常設(shè)備識別碼。除基本數(shù)據(jù)對象以外,設(shè)備提供了附加的和可選擇的識別碼以與數(shù)據(jù)對象描述。按標(biāo)準(zhǔn)定義所有種類的對象,但是這種對象的執(zhí)行是可選的。擴(kuò)展設(shè)備識別碼。除正常數(shù)據(jù)對象以外,設(shè)備提供了附加的和可選的識別碼以與專用數(shù)據(jù)描述。所有這些數(shù)據(jù)都是與設(shè)備有關(guān)的??芍贿x設(shè)計(jì)基本設(shè)備識別碼。MEI類型:14(0x0E)功能子碼,強(qiáng)制。ReadDevId:限制為01,02,03,04含義如下01:請求獲得基本設(shè)備識別碼(流訪問)02:請求獲得正常設(shè)備識別碼(流訪問)03:請求獲得擴(kuò)展設(shè)備識別碼(流訪問)04:請求獲得特定識別碼對象(單個(gè)訪問)

對象Id:一致性等級:設(shè)備的識別碼一致性等級和支持訪問的類型01:基本識別碼(僅流訪問)02:正常識別碼(僅流訪問)03:擴(kuò)展識別碼(僅流訪問)81:基本識別碼(流訪問和單個(gè)訪問)82:正常識別碼(流訪問和單個(gè)訪問)83:擴(kuò)展識別碼(流訪問和單個(gè)訪問)隨后更多:在ReadDevId碼01、02或03(流訪問)的情況下,如果識別碼數(shù)據(jù)超出單個(gè)響應(yīng)(總256字節(jié)),那么需要幾個(gè)請求/響應(yīng)事務(wù)處理。00:可完整響應(yīng);FF:需要更多MODBUS事務(wù)處理下一個(gè)對象Id:隨后更多=FF,那么請求下一個(gè)對象id隨后更多=00,那么必須設(shè)置為00(無用的)對象號在響應(yīng)中返回的對象id個(gè)數(shù)(對于單個(gè)訪問,對象號碼=1)對象id列表第一個(gè)對象id(流訪問)或請求對象的識別碼(單個(gè)訪問)對象長度第一個(gè)對象的字節(jié)長度對象值第一個(gè)對象值....直到完成本次MODBUS事務(wù)處理。

四、Modbus應(yīng)用層協(xié)議前三部分為Modbus串行鏈路的基礎(chǔ)通用協(xié)議,必須進(jìn)一步完成應(yīng)用層協(xié)議。重點(diǎn)設(shè)計(jì)Modbus的數(shù)據(jù)表與其應(yīng)用說明。以下僅給出示例。數(shù)據(jù)表與說明地址變量類型變量定義功能碼其他說明0線圈(位變量)存儲器讀寫出錯(cuò)11線圈(位變量)ECU空閑1,52線圈(位變量)ECU實(shí)時(shí)監(jiān)控1,53線圈(位變量)ECU參數(shù)設(shè)置1,54線圈(位變量)電磁閥短路1單體泵5線圈(位變量)電磁閥開路1

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論