99精品国产在热久久无码,av无码精品一区二区三区四区_国产69精品久久久久9999_精品久久久中文字幕无码_国产精品麻豆VA在线播放_亚洲日韩欧美专区制服_色久视频_婷婷久久综合,久久久精品国产免费,欧美精品久久久久久久自慰,无码国产精品一区二区高潮,国内精品九九久久久精品_国产99久久久久久免费看_中文精品99久久国产

首頁(yè)
產(chǎn)品
卓越 ? 易用 ? 可靠
視頻
讓中國(guó)物聯(lián)網(wǎng)領(lǐng)先世界
搜索
歷史搜索
搜索發(fā)現(xiàn)

Modbus協(xié)議的CRC校驗(yàn)說(shuō)明

2022-09-23 10:53:44| 來(lái)源:聚英電子| | 0

  Modbus通訊協(xié)議兩種傳輸方式

  1工藝技術、ASCII模式

  當(dāng)控制器設(shè)為在Modbus網(wǎng)絡(luò)上以ASCII(美國(guó)標(biāo)準(zhǔn)信息交換代碼)模式通信,在消息中的每個(gè)8Bit字節(jié)都作為兩個(gè)ASCII字符發(fā)送導向作用。這種方式的主要優(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ú)

  

modbus應(yīng)用協(xié)議


  

  CRC域是兩個(gè)字節(jié),包含一16位的二進(jìn)制值明顯。由傳輸設(shè)備計(jì)算后加入消息中更好。接收設(shè)備重新計(jì)算收到消息的CRC,并與接收到的CRC域中的值比較,如果兩值不同,則有無(wú)。

  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)容相或(OR),結(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)前值相或應用領域。最終寄存器中的值,是消息中所有的字節(jié)都執(zhí)行之后的CRC值。

  CRC添加到消息中時(shí),低字節(jié)先加入,然后高字節(jié)提高鍛煉。

  CRC簡(jiǎn)單函數(shù)如下:

  unsigned short CRC16(puchMsg, usDataLen)

  unsigned char *puchMsg ; /* 要進(jìn)行CRC校驗(yàn)的消息 */

  unsigned short usDataLen ; /* 消息中字節(jié)數(shù) */

  {

  unsigned char uchCRCHi = 0xFF ; /* 高CRC字節(jié)初始化 */

  unsigned char uchCRCLo = 0xFF ; /* 低CRC 字節(jié)初始化 */

  unsigned uIndex ; /* CRC循環(huán)中的索引 */

  while (usDataLen--) /* 傳輸消息緩沖區(qū) */

  {

  uIndex = uchCRCHi ^ *puchMsgg++ ; /* 計(jì)算CRC */

  uchCRCHi = uchCRCLo ^ auchCRCHi[uIndex} ;

  uchCRCLo = auchCRCLo[uIndex] ;

  }

  return (uchCRCHi << 8 | uchCRCLo) ;

  }

  /* CRC 高位字節(jié)值表 */

  static unsigned char auchCRCHi[] = {

  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é)值表*/

  static char auchCRCLo[] = {

  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ǎng)絡(luò)是一個(gè)工業(yè)通信系統(tǒng),由帶智能終端的可編程序控制器和計(jì)算機(jī)通過(guò)公用線路或局部專(zhuān)用線路連接而成統籌推進。其系統(tǒng)結(jié)構(gòu)既包括硬件、亦包括軟件進行培訓】破栈顒??蓱?yīng)用于各種數(shù)據(jù)采集和過(guò)程監(jiān)控。下表1是ModBus的功能碼定義關鍵技術。

  表1 ModBus功能碼

  01 READ COIL STATUS

  02 READ INPUT STATUS

  03 READ HOLDING REGISTER

  04 READ INPUT REGISTER

  05 WRITE SINGLE COIL

  06 WRITE SINGLE REGISTER

  15 WRITE MULTIPLE COIL

  16 WRITE MULTIPLE REGISTER

  ModBus網(wǎng)絡(luò)只是一個(gè)主機(jī),所有通信都由他發(fā)出逐漸完善。網(wǎng)絡(luò)可支持247個(gè)之多的遠(yuǎn)程從數(shù)控制器,但實(shí)際所支持的從機(jī)數(shù)要由所用通信設(shè)備決定。采用這個(gè)系統(tǒng),各PC可以和中心主機(jī)交換信息而不影響各PC執(zhí)行本身的控制任務(wù)有所提升。

  ModBus的傳輸方式

  在ModBus系統(tǒng)中有2種傳輸模式可選擇穩定性。這2種傳輸模式與從機(jī)PC通信的能力是同等的。選擇時(shí)應(yīng)視所用ModBus主機(jī)而定,每個(gè)ModBus系統(tǒng)只能使用一種模式,不允許2種模式混用敢於挑戰。一種模式是ASCII(美國(guó)信息交換碼),另一種模式是RTU(遠(yuǎn)程終端設(shè)備)這兩種模式的定義見(jiàn)表3

  

ASCII和RTU傳輸模式的特性


  

  ASCII和RTU傳輸模式的特性

  控制器能設(shè)置為兩種傳輸模式(ASCII或RTU)中的任何一種在標(biāo)準(zhǔn)的Modbus網(wǎng)絡(luò)通信健康發展。用戶選擇想要的模式,包括串口通信參數(shù)(波特率、校驗(yàn)方式等),在配置每個(gè)控制器的時(shí)候,在一個(gè)Modbus網(wǎng)絡(luò)上的所有設(shè)備都必須選擇相同的傳輸模式和串口參數(shù)飛躍。

  所選的ASCII或RTU方式僅適用于標(biāo)準(zhǔn)的Modbus網(wǎng)絡(luò),定義了在這些網(wǎng)絡(luò)上連續(xù)傳輸?shù)南⒍蔚拿恳晃?以及決定怎樣將信息打包成消息域和如何解碼。在其網(wǎng)絡(luò)上(MAP和Modbus Plus)Modbus消息被轉(zhuǎn)成與串行傳輸無(wú)關(guān)的幀積極。


聯(lián)系銷(xiāo)售
銷(xiāo)售王經(jīng)理微信 銷(xiāo)售王經(jīng)理
微信公眾號(hào) 微信公眾號(hào)
服務(wù)熱線
400-6688-400
祁东县| 鹰潭市| 乌拉特中旗| 华亭县| 磐安县| 磴口县| 龙里县| 洛浦县| 德令哈市| 台南县| 灌阳县| 漳平市| 建始县| 交城县| 汝州市| 肥乡县| 奉节县| 迁安市| 元阳县| 建昌县| 大余县| 湖州市| 泊头市| 南开区| 察隅县| 永寿县| 阳高县| 永顺县| 乌兰县| 军事| 阆中市| 永清县| 平舆县| 随州市| 宜丰县| 乐山市| 葵青区| 康乐县| 云浮市| 资中县| 阆中市|