1 / 11
文档名称:

modbus通讯协议.doc

格式:doc   大小:32KB   页数:11页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

modbus通讯协议.doc

上传人:2982835315 2022/2/15 文件大小:32 KB

下载得到文件列表

modbus通讯协议.doc

文档介绍

文档介绍:Modbus通讯协议
  一、 Modbus 协议简介
  Modbus 协议是应用于电子控制器上的一种通用语言。通过此协议,控制器相互之间、控制器经由网络〔例如以太网〕和其它设备之间可以通信。它已经成为一通用工业标准。有了它,不同厂是全“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 = 0*FF ; /* 高CRC字节初始化 */
  unsigned char uchCRCLo = 0*FF ; /* 低CRC 字节初始化 */
  unsigned uInde* ; /* CRC循环中的索引 */
  while (usDataLen--) /* 传输消息缓冲区 */
  {
  uInde* = uchCRCHi ^ *puchMsgg++ ; /* 计算CRC */
  uchCRCHi = uchCRCLo ^ auchCRCHi[uInde*} ;
  uchCRCLo = auchCRCLo[uInde*] ;
  }
  return (uchCRCHi << 8 uchCRCLo) ;
  }
  /* CRC 高位字节值表 */
  static unsigned char auchCRCHi[] = {
  0*00, 0*C1, 0*81, 0*40, 0*01, 0*C0, 0*80, 0*41, 0*01, 0*C0,
  0*80, 0*41, 0*00, 0*C1, 0*81, 0*40, 0*01, 0*C0, 0*80, 0*41,
  0*00, 0*C1, 0*81, 0*40, 0*00, 0*C1, 0*81, 0*40, 0*01, 0*C0,
  0*80, 0*41, 0*01, 0*C0, 0*80, 0*41, 0*00, 0*C1, 0*81, 0*40,
  0*00, 0*C1, 0*81, 0*40, 0*01, 0*C0, 0*80, 0*41, 0*00, 0*C1,
  0*81, 0*40, 0*01, 0*C0, 0*80, 0*41, 0*01, 0*C0, 0*80, 0*41,
  0*00, 0*C1, 0*81, 0*40, 0*01, 0*C0, 0*80, 0*41, 0*00, 0*C1,
  0*81, 0*40, 0*00, 0*C1, 0*81, 0*40, 0*01, 0*C0, 0*80, 0*41,
  0*00, 0*C1, 0*81, 0*40, 0*01, 0*C0, 0*80, 0*41, 0*01, 0*C0,
  0*80, 0*41, 0*00, 0*C1, 0*81, 0*40, 0*00, 0*C1, 0*81, 0*40,
  0*01, 0*C0, 0*80, 0*41, 0*01, 0*C0, 0*80, 0*41, 0*00, 0*C1,
  0*81, 0*40, 0*01, 0*C0, 0*80, 0*41, 0*00, 0*C1, 0*81, 0*40,
  0*00, 0*C1, 0*81, 0*40, 0*01, 0*C0, 0*80, 0*41, 0*01, 0*C0,
  0*80, 0*41, 0*00, 0*C1, 0*81, 0*40, 0*00, 0*C1, 0*81, 0*40,
  0*01, 0*C0, 0*80, 0*41, 0*00, 0*C1, 0*81, 0*40, 0*01, 0*C0,
  0*80, 0*41, 0*01, 0*C0, 0*80, 0*41, 0*