modbus協(xié)議介紹_第1頁(yè)
modbus協(xié)議介紹_第2頁(yè)
modbus協(xié)議介紹_第3頁(yè)
modbus協(xié)議介紹_第4頁(yè)
modbus協(xié)議介紹_第5頁(yè)
免費(fèi)預(yù)覽已結(jié)束,剩余4頁(yè)可下載查看

下載本文檔

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

文檔簡(jiǎn)介

精品文檔 ModBus 協(xié)議1. Modbus是由Modicon(現(xiàn)為施耐德電氣公司的一個(gè)品牌)在1979年發(fā)明的,是全球第一個(gè)真正用于工業(yè)現(xiàn)場(chǎng)的總線協(xié)議,在中國(guó),Modbus已經(jīng)成為國(guó)家標(biāo)準(zhǔn)GB/T19582-2008。2. ModBus網(wǎng)絡(luò):系統(tǒng)結(jié)構(gòu)既包括硬件、亦包括軟件。它可應(yīng)用于各種數(shù)據(jù)采集和過(guò)程監(jiān)控。3. Modbus協(xié)議:控制器相互之間、控制器經(jīng)由網(wǎng)絡(luò)(例如以太網(wǎng))和其它設(shè)備之間可以通信。當(dāng)在同一Modbus網(wǎng)絡(luò)上通信時(shí),此協(xié)議決定了每個(gè)控制器需要知道它們的設(shè)備地址,識(shí)別按地址發(fā)來(lái)的消息,決定要產(chǎn)生何種行動(dòng)。如果需要回應(yīng),控制器將生成反饋信息并用Modbus協(xié)議發(fā)出。在其它網(wǎng)絡(luò)上,包含了Modbus協(xié)議的消息轉(zhuǎn)換為在此網(wǎng)絡(luò)上使用的幀或包結(jié)構(gòu)。這種轉(zhuǎn)換也擴(kuò)展了根據(jù)具體的網(wǎng)絡(luò)解決節(jié)地址、路由路徑及錯(cuò)誤檢測(cè)的方法。支持傳統(tǒng)的RS-232、RS-422、RS-485和以太網(wǎng)設(shè)備。許多工業(yè)設(shè)備,包括PLC,DCS,智能儀表等都在使用Modbus協(xié)議作為他們之間的通信標(biāo)準(zhǔn)。控制器能直接或經(jīng)由Modem組網(wǎng)。 4. 標(biāo)準(zhǔn)的Modbus口是使用RS-232-C兼容串行接口,它定義了連接口的針腳、電纜、信號(hào)位、傳輸波特率、奇偶校驗(yàn)。5. Modbus協(xié)議建立了主設(shè)備查詢的格式:設(shè)備(或廣播)地址、功能代碼、所有要發(fā)送的數(shù)據(jù)、錯(cuò)誤檢測(cè)域。6. 從設(shè)備回應(yīng)消息也由Modbus協(xié)議構(gòu)成,包括:確認(rèn)要行動(dòng)的域、任何要返回的數(shù)據(jù)、和一錯(cuò)誤檢測(cè)域。如果在消息接收過(guò)程中發(fā)生一錯(cuò)誤,或從設(shè)備不能執(zhí)行其命令,從設(shè)備將建立一錯(cuò)誤消息并把它作為回應(yīng)發(fā)送出去。7. 查詢:數(shù)據(jù)段包含了從設(shè)備要執(zhí)行功能的任何附加信息:從何寄存器開始讀、要讀的寄存 器數(shù)量,錯(cuò)誤檢測(cè)域?yàn)閺脑O(shè)備提供了一種驗(yàn)證消息內(nèi)容是否正確的方法 回應(yīng):查詢消息中的功能代碼的回應(yīng)。數(shù)據(jù)段包括了從設(shè)備收集的數(shù)據(jù):像寄存器值或狀 態(tài)。如果有錯(cuò)誤發(fā)生,功能代碼將被修改以用于指出回應(yīng)消息是錯(cuò)誤的,同時(shí)數(shù)據(jù) 段包含了描述此錯(cuò)誤信息的代碼。錯(cuò)誤檢測(cè)域允許主設(shè)備確認(rèn)消息內(nèi)容是否可用。8. 傳輸方式:2種傳輸模式:一種模式是ASCII(美國(guó)信息交換碼),另一種模式是RTU(遠(yuǎn) 程終端設(shè)備)。2種模式不能混用。ASCII可打印字符便于故障檢測(cè),而且對(duì) 用高級(jí)語(yǔ)言(如Fortran)編程的主計(jì)算機(jī)及主PC很適宜。RTU則適用于機(jī) 器語(yǔ)言編程的計(jì)算機(jī)和PC主機(jī) (1)ASCII模式與RTU模式相互轉(zhuǎn)換: RTU模式傳輸?shù)臄?shù)據(jù):是8位二進(jìn)制字符,分高位和低位,每部分各含4位。 ASCII模式傳輸?shù)臄?shù)據(jù):是16位十六進(jìn)制字符。 轉(zhuǎn)換:將RTU的每4個(gè)高位和低位分別轉(zhuǎn)換成ASCII對(duì)應(yīng)的16進(jìn)制字符。 區(qū)別:ASCII模式使用的字符雖是RTU模式的兩倍,但ASCII數(shù)據(jù)的譯碼和處理更為容易一些用RTU模式時(shí)報(bào)文字符必須以連續(xù)數(shù)據(jù)流的形式傳送,用ASCII模式,字符之間可產(chǎn)生長(zhǎng)達(dá)1s的間隔,以適應(yīng)速度較慢的機(jī)器。(2) ASCII模式一個(gè)信息中的每4位字節(jié)作為1個(gè)ASCII字符傳輸,如數(shù)值63H用ASCII方式時(shí),需發(fā)送兩個(gè)字節(jié),即ASCII“6(0110110)和ASCII”3“(0110011),1個(gè)ASCII字符占用的位數(shù)有7位和8位,國(guó)際通用7位為多。這種方式的主要優(yōu)點(diǎn)是字符發(fā)送的時(shí)間間隔可達(dá)到1秒而不產(chǎn)生錯(cuò)誤。代碼系統(tǒng): 十六進(jìn)制,ASCII字符0.9,A.F 消息中的每個(gè)ASCII字符都是一個(gè)十六進(jìn)制字符組成 每個(gè)字節(jié)的位: 1個(gè)起始位7個(gè)數(shù)據(jù)位,最小的有效位先發(fā)送1個(gè)奇偶校驗(yàn)位,無(wú)校驗(yàn)則無(wú)1個(gè)停止位(有校驗(yàn)時(shí)),2個(gè)Bit(無(wú)校驗(yàn)時(shí))錯(cuò)誤檢測(cè)域 LRC(縱向冗長(zhǎng)檢測(cè))(3) RTU模式當(dāng)控制器設(shè)為在Modbus網(wǎng)絡(luò)上以RTU模式通信,在消息中的每個(gè)8Bit字節(jié)按照原值傳送,不做處理,如63H,RTU將直接發(fā)送01100011。這種方式的主要優(yōu)點(diǎn)是:數(shù)據(jù)幀傳送之間沒有間隔,相同波特率下傳輸數(shù)據(jù)的密度要比ASCII高,傳輸速度更快。代碼系統(tǒng):8位二進(jìn)制,十六進(jìn)制數(shù)0.9,A.F消息中的每個(gè)8位域都是一或兩個(gè)十六進(jìn)制字符組成 每個(gè)字節(jié)的位:1個(gè)起始位8個(gè)數(shù)據(jù)位,最小的有效位先發(fā)送1個(gè)奇偶校驗(yàn)位,無(wú)校驗(yàn)則無(wú)1個(gè)停止位(有校驗(yàn)時(shí)),2個(gè)Bit(無(wú)校驗(yàn)時(shí))9.數(shù)據(jù)校驗(yàn)方式CRCCRC域是兩個(gè)字節(jié),包含一16位的二進(jìn)制值。它由傳輸設(shè)備計(jì)算后加入到消息中。接收設(shè)備重新計(jì)算收到消息的CRC,并與接收到的CRC域中的值比較,如果兩值不同,則有誤。CRC是先調(diào)入一值是全“1”的16位寄存器,然后調(diào)用一過(guò)程將消息中連續(xù)的8位字節(jié)和當(dāng)前寄存器中的值進(jìn)行處理。僅每個(gè)字符中的8Bit數(shù)據(jù)對(duì)CRC有效,起始位和停止位以及奇偶校驗(yàn)位均無(wú)效。CRC產(chǎn)生過(guò)程中,每個(gè)8位字符都單獨(dú)和寄存器內(nèi)容相異或(XOR),結(jié)果向最低有效位方向移動(dòng),最高有效位以0填充。LSB被提取出來(lái)檢測(cè),如果LSB為1,寄存器單獨(dú)和預(yù)置的值或一下,如果LSB為0,則不進(jìn)行。整個(gè)過(guò)程要重復(fù)8次。在最后一位(第8位)完成后,下一個(gè)8位字節(jié)又單獨(dú)和寄存器的當(dāng)前值相異或(XOR)。最終寄存器中的值,是消息中所有的字節(jié)都執(zhí)行之后的CRC值。CRC添加到消息中時(shí),低字節(jié)先加入,然后高字節(jié)。CRC-16錯(cuò)誤校驗(yàn)程序如下:報(bào)文(此處只涉及數(shù)據(jù)位,不指起始位、停止位和任選的奇偶校驗(yàn)位)被看作是一個(gè)連續(xù)的二進(jìn)制,其最高有效位(MSB)首選發(fā)送。報(bào)文先與X16相乘(左移16位),然后看X16+X15+X2+1除,X16+X15+X2+1可以表示為二進(jìn)制數(shù)11000,0000,0000,0101。整數(shù)商位忽略不記,16位余數(shù)加入該報(bào)文(MSB先發(fā)送),成為2個(gè)CRC校驗(yàn)字節(jié)。余數(shù)中的1全部初始化,以免所有的零成為一條報(bào)文被接收。經(jīng)上述處理而含有CRC字節(jié)的報(bào)文,若無(wú)錯(cuò)誤,到接收設(shè)備后再被同一多項(xiàng)式(X16+X15+X2+1)除,會(huì)得到一個(gè)零余數(shù)(接收設(shè)備核驗(yàn)這個(gè)CRC字節(jié),并將其與被傳送的CRC比較)。全部運(yùn)算以2為模(無(wú)進(jìn)位)。習(xí)慣于成串發(fā)送數(shù)據(jù)的設(shè)備會(huì)首選送出字符的最右位(LSB-最低有效位)。而在生成CRC情況下,發(fā)送首位應(yīng)是被除數(shù)的最高有效位MSB。由于在運(yùn)算中不用進(jìn)位,為便于操作起見,計(jì)算CRC時(shí)設(shè)MSB在最右位。生成多項(xiàng)式的位序也必須反過(guò)來(lái),以保持一致。多項(xiàng)式的MSB略去不記,因其只對(duì)商有影響而不影響余數(shù)。生成CRC-16校驗(yàn)字節(jié)的步驟如下:裝如一個(gè)16位寄存器,所有數(shù)位均為1。該16位寄存器的高位字節(jié)與開始8位字節(jié)進(jìn)行“異或”運(yùn)算。運(yùn)算結(jié)果放入這個(gè)16位寄存器。把這個(gè)16寄存器向右移一位。若向右(標(biāo)記位)移出的數(shù)位是1,則生成多項(xiàng)式10,1000,000,0000,001和這個(gè)寄存器進(jìn)行“異或”運(yùn)算;若向右移出的數(shù)位是0,則返回。重復(fù)和,直至移出8位。另外8位與該十六位寄存器進(jìn)行“異或”運(yùn)算。重復(fù),直至該報(bào)文所有字節(jié)均與16位寄存器進(jìn)行“異或”運(yùn)算,并移位8次。這個(gè)16位寄存器的內(nèi)容即2字節(jié)CRC錯(cuò)誤校驗(yàn),被加到報(bào)文的最高有效位。另外,在某些非ModBus通信協(xié)議中也經(jīng)常使用CRC16作為校驗(yàn)手段,而且產(chǎn)生了一些CRC16的變種,他們是使用CRC16多項(xiàng)式X16+X15+X2+1,單首次裝入的16位寄存器為0000;使用CRC16的反序X16+X14+X1+1,首次裝入寄存器值為0000或FFFFH。CRC簡(jiǎn)單函數(shù)如下:123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101unsignedchar*puchMsg;/*要進(jìn)行CRC校驗(yàn)的消息*/unsignedshortusDataLen;/*消息中字節(jié)數(shù)*/unsignedshortCRC16(puchMsg,usDataLen)unsignedcharuchCRCHi=0xFF;/*高CRC字節(jié)初始化*/unsignedcharuchCRCLo=0xFF;/*低CRC字節(jié)初始化*/unsigneduIndex;/*CRC循環(huán)中的索引*/while(usDataLen-)/*傳輸消息緩沖區(qū)*/uIndex=uchCRCHi*puchMsg+;/*計(jì)算CRC*/uchCRCHi=uchCRCLoauchCRCHiuIndex;uchCRCLo=auchCRCLouIndex;return(uchCRCHi8)|uchCRCLo);/*CRC高位字節(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;/CRC低位字節(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

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論