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

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显示电子屏功能码实现代码分享