微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > modbus与电表通讯累积充电量

modbus与电表通讯累积充电量

时间:10-02 整理:3721RD 点击:

这里使用的是一块电力仪表。这块是三相的,但实际上使用一块单相的就可以了。

仪表大多使用是MODBUSRTU的通讯规约,而其中要使用的就是0x03功能码了。

0x03功能码的帧模式如下图:



这里的寄存器地址就是我们要读取的值了。

但是没有电力汽车,就没有电流了,电能值是不会增加的,读也不会改变的,所以就读取了电压值。

从说明书上找到对应的寄存器地址:



还有就是电能的寄存器,不过这里先不用这个了,其他的寄存器也暂时用不到。



转接板上将RS485与串口5连接在一起。在开发板上的程序就要使用到串口5了。

其中16位CRC校验程序:


  1. unsigned int formcrc16(unsigned char * startaddress, unsigned char bytecount)
  2. {  unsigned char i, j  
  3.    unsigned int crc16value = 0xffff  
  4.    unsigned int polynomial = 0xa001  
  5.    for ( i = 0  i > 1 ) ^ polynomial  
  6.          else
  7.                 crc16value = crc16value >> 1        
  8.            }   
  9.     }
  10.      return  crc16value  
  11. }

复制代码


仪表的地址使用了默认的01.

那么对应的帧就是:0x010x03 0x9c 0x42 0x00 0x01 0x0A 0x4E

即读取电压寄存器一个寄存器中的值,后面的两个字节是用上面的程序计算出的CRC值。

打开串口5使用的是open函数。

fd = open("/dev/ttyO5", O_RDWR |O_NOCTTY);

其他部分程序:

  1. #include
  2. #include
  3. #include   
  4. #include
  5. #include
  6. #include
  7. #include
  8. #include    
  9. #include
  10. #include
  11. #include
  12. #include

  13. #define DATA_LEN                0xFF  
  14. ......
  15. unsigned int MakeModbusData(char *data,char fun,unsigned char reg ,char L);
  16. unsigned int formcrc16(unsigned char * startaddress, unsigned char bytecount);
  17. unsigned int testmodbus(void)
  18. {
  19.         char tmp[1024];
  20.         int len;
  21.         int fd, i;
  22.         unsigned int Voltage ;
  23.         fd = open("/dev/ttyO5", O_RDWR | O_NOCTTY);
  24.         //生成Modbus帧数据,功能码03,寄存器地址0x9c42,寄存器数1个。
  25.         len=MakeModbusData(tmp,0x03,0x9c42,0x01);
  26.         write(fd, tmp, len);       
  27.         DisplayVoltage();//从帧中截取电压值打印到终端
  28. }
  29. ......

复制代码


通过两条线将转接板上的RS485的A、B与电力仪表上的A、B一一对应连接。

给仪表上电后。在没有加电压时,电表显示为:





加上电压后,由于这块仪表是从现场拆回来的,可能是AD部分有点问题,但是通讯是正常的,由于项目中无法实现真正的电能累积,所以此部分作为理论验证,电压显示为:




转接板上的连接。




程序在开发板上进行读取电压值







小编厉害,学习了~感谢

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top