称重仪表modbus协议
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了称重仪表modbus协议相关的知识,希望对你有一定的参考价值。
D2008仪表Modbus协议说明
仪表通信方式TF =1 为Modbus通信方式
读传感器内码 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
地址 | 功能码 | 传感器号n | CRC16L | CRC16H | ||||
0x01 | 0x03 | 0x00 | 0x10+1 | 0x00 | 0x04 | 0x14 | 0x0C |
注意:传感器编号n从1开始
CRC校验参与的字节是0~5之间的数节,返回值也是亦同。
返回值:
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
地址 | 0x03 | 0x08 | 符号+/- | Data5 | Data4 | Data3 | Data2 | Data1 |
1 | 0x03 | 0x08 | 0x30 | 0x30 | 0x30 | 0x30 | 0x30 | 0x30 |
9 | 10 | 11 | 12 |
Data0 | 小数点(从右往左) | CRC16L | CRC16H |
0x38 | 0x30 | 0xff | 0xff |
读取实时重量 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
地址 | 功能码 | 起始地址 | CRC16L | CRC16H | ||||
0x01 | 0x03 | 0x00 | 0x01 | 0x00 | 0x04 | 0x15 | 0xC9 |
返回值:
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
地址 | 0x03 | 0x08 | 符号+/- | Data5 | Data4 | Data3 | Data2 | Data1 |
1 | 0x03 | 0x08 | 0x2D | 0x30 | 0x30 | 0x30 | 0x30 | 0x37 |
9 | 10 | 11 | 12 |
Data0 | 小数点(从右往左) | CRC16L | CRC16H |
0x30 | 0x30 | 0x89 | 0x7B |
读当前仪表总内码
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
仪表地址 | 功能码 | 寄存器开始地址 | 数据量 | CRC16L | CRC16H | ||
0x01 | 0x03 | 0x00 | 0x07 | 0x00 | 0x02 | 0x75 | 0xCA |
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
仪表地址 | 功能码 | 数据长度 | 返回数据 | CRC16L | CRC16H | |||
0x01 | 0x03 | 0x04 | 0x30 | 0x30 | 0x30 | 0x30 | 0xE1 | 0x28 |
返回值:
Modbus浮点数转换
float get_float_from_byte(byte *p)
{
byte pTemp[4] = { 0 };
pTemp[0] = p[1];
pTemp[1] = p[0];
pTemp[2] = p[3];
pTemp[3] = p[2];
return *(float*)&pTemp;
}
void CMFCApplication1Dlg::OnBnClickedButton3()
{//调用转换函数
byte pp[4] = { 0 };
pp[0] = 0xb2;
pp[1] = 0x2d;
pp[2] = 0x3f;
pp[3] = 0x5d;
float mf1 = get_float_from_byte(pp); // mf1 = 220.0
}
以上是关于称重仪表modbus协议的主要内容,如果未能解决你的问题,请参考以下文章