• 公司地址
    广东,深圳
  • 联系电话
    4000-077-366

磁致伸缩位移传感器ModBus协议C语言

  综合ModBus协议规范和磁致伸缩位移传感器应用场合,编程实现基本参数设定、参数校正、起点位置、终点位置和当前数据读取的功能。采用单片机内部串口接收数据,并解析收到的信息帧。若信息帧的地址域值与本机地址相同,则解析信息帧的功能代码。根据不同的功能代码,将各个字节排序,组成一帧信息发送到ModBus网络上。ModBus协议C语言程序实现流程图如图1所示。

  数据帧的接收通过单片机串口中断子函数来完成。接收数据完成后,置位新数据到来标志。主程序中循环查询新数据到来标志,若有新数据到来,则进行数据帧解析,数据帧生成以及数据帧发送等工作。数据帧校验采用CRC校验来完成,保证了ModBus数据发送与接收的正确性。关键代码如下:

  UBRRH=0x00;

  UBRRL=Ox33;//波特率9600

  UCSRC=OxOE;//异步通讯方式,8位数据,2位停止位

  UCSRB=(1<<RXCIE)|(1<<RXEN)|(1<<TXEN);//开启接收中断

  UCSRA=0x00;//不使用倍速模式

  串口工作模式一设置如上代码所示,按照一定的顺序将数据帧通过串口发送出去。本设计采用CRC校验,其关键代码如下:

  unsigned int uchCRCHi=OxFF;//高CRC字节初始化

  unsigned int uchCRCLo=OxFF;//低CRC字竹初始化

  unsigned int ulndex ; //CRC循环中的索引

  while (usDataLen一)//计算CRC值

  {

  ulndex=uchCRCHi ^ *puchMsg++;

  uchCRCHi=uchCRCLo ^ auchCRCHi[ulndex];

  uchCRCLo=auchCRCLo[ulndex};

  }

  return (uchCRCHi<<8|uchCRCLo);//返回CRC值

  由于本设计采用RS232物理连接方式,磁致伸缩位移传感器可直接与电脑连接实现ModBus数据和命令的传输。