modbus协议显示屏|modbus通讯显示屏|modbus显示电子屏功能码实现代码分享

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了modbus协议显示屏|modbus通讯显示屏|modbus显示电子屏功能码实现代码分享相关的知识,希望对你有一定的参考价值。

modbus协议显示屏|modbus通讯显示屏|modbus显示电子屏功能码实现代码分享,主要用来实现“预置多个寄存器功能码”。

MODBUS-RTU协议的“0X1F”功能码实物效果图拍摄如下:

 

MODBUS-RTU协议的“0X1F”功能码示例如下:

例:请求在从机MODBUS显示屏设备17 中的2 个寄存器中放入预置值,起始寄存器为40002 ,预置值为00 0AH 和01 02H。
QUERY
Field Name
Slave Address
Function
Starting Address Hi
Starting Address Lo
No. of Registers Hi
No. of Registers Lo
Byte Count
Data Hi
Data Lo
Data Hi
Data Lo
Error Check (LRC or CRC)


Example
(Hex)
11
10
00
01
00
02
04
00
0A
01
02

预置多个寄存器

 

 void ISR_Usart1(void){
 unsigned int crc=0,i=0;
 unsigned char x=0;
 //nx,ny校正
 if(nx==0){
   x=4;
 }else{
  x=nx-1;
 }
 //工业MODBUS显示屏参数处理
 if(Rxdata[0]==IP_Num[x][0]&&Rxdata[1]==0x03){
  crc=crc16(Rxdata,5);
  if(crc==(Rxdata[6]<<8)+Rxdata[5]){
   //校验正确接收处理数据进入
   MODBUS_Num[x][0]=(Rxdata[3]<<8)+Rxdata[4];       
  }
 }
 //MODBUS通讯时间参数处理
 if(Rxdata[0]==0x55&&Rxdata[1]==0x03){
  crc=crc16(Rxdata,19);
  if(crc==(Rxdata[20]<<8)+Rxdata[19]){
   //校验正确接收处理数据进入
   for(i=0;i<8;i++){
    time_buf[i]=Rxdata[4+2*i];
   }
   for(i=0;i<7;i++){
    time_num[0+2*i]=time_buf[i]>>4;
    time_num[1+2*i]=time_buf[i]&0x0f;
   }       
  }
 }
}

 

 

 

---------由立显光电技术提供,请勿转载,谢谢!

立显光电项目负责人:徐飞
英文名称:parserval
联系电话:13927460644
          0796-7203100
QQ:13654984
EMAIL:parserval@126.com
       led@vip.qq.com
网址:http://www.ledsup.com
邮编:518038

 

以上是关于modbus协议显示屏|modbus通讯显示屏|modbus显示电子屏功能码实现代码分享的主要内容,如果未能解决你的问题,请参考以下文章

modbus tcp和modbusrtu的区别

485通讯协议和modbus协议区别

MODBUS RTU通讯协议简介

modbus通讯协议详解

标准modbus通讯协议都有哪些?

Modbus通讯协议