范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文

Modbus协议的CRC校验说明

  Modbus通讯协议两种传输方式
  1、ASCII模式
  当控制器设为在Modbus网络上以ASCII(美国标准信息交换代码)模式通信,在消息中的每个8Bit字节都作为两个ASCII字符发送。这种方式的主要优点是字符发送的时间间隔可达到1秒而不产生错误。
  代码系统
  • 十六进制,ASCII字符0...9,A...F
  • 消息中的每个ASCII字符都是一个十六进制字符组成
  每个字节地位
  • 1个起始位
  • 7个数据位,最小的有效位先发送
  • 1个奇偶校验位,无校验则无
  modbus应用协议
  CRC域是两个字节,包含一16位的二进制值。由传输设备计算后加入消息中。接收设备重新计算收到消息的CRC,并与接收到的CRC域中的值比较,如果两值不同,则有无。
  CRC是先调入一值是全"1"的16位寄存器,然后调用一过程将消息中连续的8位字节各当前寄存器中的值进行处理。仅每个字符中的8Bit数据对CRC有效,起始位和停止位以及奇偶校验位均无效。
  CRC产生过程中,每个8位字符都单独和寄存器内容相或(OR),结果向最低有效位方向移动,最高有效位以0填充。LSB被提取出来检测,如果LSB为1,寄存器单独和预置的值或一下,如果LSB为0,则不进行。整个过程要重复8次。在最后一位(第8位)完成后,下一个8位字节又单独和寄存器的当前值相或。最终寄存器中的值,是消息中所有的字节都执行之后的CRC值。
  CRC添加到消息中时,低字节先加入,然后高字节。
  CRC简单函数如下:
  unsigned short CRC16(puchMsg, usDataLen)
  unsigned char *puchMsg ; /* 要进行CRC校验的消息 */
  unsigned short usDataLen ; /* 消息中字节数 */
  {
  unsigned char uchCRCHi = 0xFF ; /* 高CRC字节初始化 */
  unsigned char uchCRCLo = 0xFF ; /* 低CRC 字节初始化 */
  unsigned uIndex ; /* CRC循环中的索引 */
  while (usDataLen--) /* 传输消息缓冲区 */
  {
  uIndex = uchCRCHi ^ *puchMsgg++ ; /* 计算CRC */
  uchCRCHi = uchCRCLo ^ auchCRCHi[uIndex} ;
  uchCRCLo = auchCRCLo[uIndex] ;
  }
  return (uchCRCHi << 8 | uchCRCLo) ;
  }
  /* CRC 高位字节值表 */
  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低位字节值表*/
  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网络是一个工业通信系统,由带智能终端的可编程序控制器和计算机通过公用线路或局部专用线路连接而成。其系统结构既包括硬件、亦包括软件。可应用于各种数据采集和过程监控。下表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网络只是一个主机,所有通信都由他发出。网络可支持247个之多的远程从数控制器,但实际所支持的从机数要由所用通信设备决定。采用这个系统,各PC可以和中心主机交换信息而不影响各PC执行本身的控制任务。
  ModBus的传输方式
  在ModBus系统中有2种传输模式可选择。这2种传输模式与从机PC通信的能力是同等的。选择时应视所用ModBus主机而定,每个ModBus系统只能使用一种模式,不允许2种模式混用。一种模式是ASCII(美国信息交换码),另一种模式是RTU(远程终端设备)这两种模式的定义见表3
  ASCII和RTU传输模式的特性
  ASCII和RTU传输模式的特性
  控制器能设置为两种传输模式(ASCII或RTU)中的任何一种在标准的Modbus网络通信。用户选择想要的模式,包括串口通信参数(波特率、校验方式等),在配置每个控制器的时候,在一个Modbus网络上的所有设备都必须选择相同的传输模式和串口参数。
  所选的ASCII或RTU方式仅适用于标准的Modbus网络,定义了在这些网络上连续传输的消息段的每一位,以及决定怎样将信息打包成消息域和如何解码。在其网络上(MAP和Modbus Plus)Modbus消息被转成与串行传输无关的帧。

官宣!2023中国杯世界花样滑冰大奖赛落地重庆中国杯世界花样滑冰大奖赛又又又来重庆啦!2月22日,中国花样滑冰协会发布公告,正式宣布2023中国杯世界花样滑冰大奖赛落地重庆。这是继2019年2020年我市连续两年成功举办大赛后实力不允许,挑战新的世界工程纪录,甬舟铁路要来了宁波至舟山铁路,简称甬舟铁路,甬舟铁路是浙江省大通道建设十大标志性项目之一,项目设计行车速度为每小时250公里,全线共设7个站,项目起宁波东站,东至舟山白泉,全长约76。4公里,利考研自学or报班,来看看他们怎么说2月21日起,2023年全国硕士研究生招生考试初试成绩开通查询,相关新闻登上了热搜。据研招网官方统计,2023年研究生报考人数为474万,报考人数创历年最高。图片APP在庞大的报考奋进的春天稳投资促消费稳外贸乘势而上开好局起好步掘地9026米!位于四川盆地的蓬深6井顺利完钻并成功固井,井深最深达9026米,刷新亚洲最深直井纪录奋战海拔4600米!初春时节,川西高原白雪皑皑,雅砻江柯拉光伏电站施工正酣掘进海南沙卫士脚下是孤悬海上的岛礁,四周是水天相接的汪洋,他们秉承着热爱祖国无私奉献英勇作战艰苦创业团结协作的南沙精神,用无畏青春捍卫蓝色国土和海洋权益。今天的士兵面孔,聚焦4名南沙守礁战士,让国盛智科2022年净利1。91亿元同比下降4。96中证智能财讯国盛智科(688558)2月24日晚间披露2022年度业绩快报,公司实现营业收入11。62亿元,同比增长2。22归母净利润1。91亿元,同比下降4。96扣非净利润1。6中国网络文学影响力榜集结令丨爱潜水的乌贼网文出海,情感是关键视频加载中红网时刻新闻2月24日讯(记者袁思蕾)3月1日,中国网络文学影响力榜发布仪式将在长沙举行。这将是一场中国网络文学盛典,来自全国各地的网络作家将汇聚一堂,共襄盛举。盛会举办宫廷土豆片18元5片?大多数消费者并不买账没有什么事是一顿火锅解决不了的,如果有,那就两顿。有烦恼,就去吃火锅,这是当代年轻人解压的一种创新方式。但是没想到,现在就连吃火锅也有了烦恼。据报道,近日,陕西西安一女子吐槽,在某同事上午刚办完退休手续,下午就打电话,让人来把空调拆走带回家同事上午刚刚办完了退休手续,然后他下午就马上打电话,叫人来把办公室的空调拆掉,打算把空调带回家。这时候,部门的领导闻讯赶来,他阻止了我同事,说这是单位的东西,不允许他带走。可是同事海外基金最新持仓曝光中概互联网龙头受捧证券时报记者王小芊海外基金的最新持仓动向披露,哪些中概股更被看好?近日,高瓴旗下HHLR景林贝莱德桥水基金老虎环球等海外资管机构的最新持仓曝光,中概股的最新动向也浮出水面。具体来看奋进的春天对内对外两手抓中国经济展现硬实力央视网消息中国贸促会2月22日举行例行新闻发布会,新闻发言人介绍,近日,中国贸促会对390多家外资企业和外国商协会进行调研,结果显示,98。2的受访外资企业和外国商协会对今年中国经
苏州该如何发展?苏州的等级低,或者说苏州的地位在下降?我认为这是一个伪命题。很多人对苏州有误解,要么觉得苏州很牛逼,天生就应该是江南的老大,要么有恐惧症,觉得苏州的gdp下降了,苏州就会倒。我觉得爱打麻将有哪些潜在危害?如何戒掉打麻将的瘾?对于打麻将这个问题,个人觉得有三点危害一,对社会秩序的危害,首先,占有赌博性质的麻将参与者都抱有异想天开的心态,总想在短时间内赚取到比打工甚至当老板更多的钱,但是打麻将的大部分人都家庭装修工地安装摄像头是否真的实用?安装摄像头当然是真的实用的呀。我从三个角度来给你进行分析1业主业主哪怕不在工地,只要你手机有电有网络就能看到家里工地上的装修情况。虽然只是看得到装修到哪步,对于业主而言是有很必要的现在农村已经后继无人啦。怎么才能留住村里的年轻人呢?我们国家是农业大国,三农的发展是重中之重,目前,全国各地积极实施乡村振兴战略,实现乡村振兴,首先要做到农村人才的振兴,人才振兴的前提是让村里的年轻人才能够留下来,安心在农村发展。重既然液体不能上飞机,为什么飞机餐食可以提供水和饮料??2018年春运期间,一名24岁男子在武汉天河机场乘机,起飞10分钟后突发急性哮喘,险些丧命,机长只得返航,男子被送往医院治疗,这件事本该不会发生,原因就是因为这名男子随身携带的喷雾无锡公积金3600,属于顶级水平吗?无锡如果你单人交3600是不可能的,毕竟封顶在那里。如果你跟公司加一起3600可能性有的,不仅仅无锡,哪怕放眼全国,这已经很高标准。企业规定不一样,有的厂之按照最低工资缴纳,有的厂如果一个会计不去考职称证书,只是踏实工作,在工作中提升能力。会怎么样?目前我国事业单位编制工作人员的待遇是以职称挂钩的。一个会计不考职称证书,就晋升不了职称,只是靠踏实工作提升能力,最多评选为优秀或选进,奖金不过3至5百元,改变不了你的实际收入状况。女,44,已交26年社保,不想上班了,大家有什么建议?有26年的社保也不错了,不想上班就不上呗,如果有能力还是要缴费,办个灵活就业社保,4050补三年,然后退休我四十岁开始不上班了,在单位办理的内退,离开单位已经快十年了,很快的,弹指去农村赶集摆地摊,一个月有一万八千元的收入,你会放下面子去摆地摊吗?在农村集市上赶集摆摊,很没面子吗?不是的。相反,在我们那儿,倒是另外一种说法。都说那些赶集摆摊的人,是能人。说他们头午赶集挣了钱,下午回家再种田,滴水不漏过日子,劳苦持家不得闲。咱徐州洛阳襄阳长治等城市为什么可以成为副省级中心城市?副省级中心城市,一般都是城市的省会,副省级中心城市,一般都有经济和立法权限。这些地方交通都很发达,离省及中心城市比较近,也是重要的军事基地和交通枢纽城市。我认为其理由如下1国家中部六十多岁了存款十万,有退休金,请问这些钱够花的吗?我来回答!我马上奔六了,存款十万多点,退休金每个月剩余2千。够用了!正常情况下,不发生什么意外,身体健康不生大病,生活能自理,每月都有养老金,即便钱少些也够用的,更何况还有10万元