全球旧事资料 分类
01
04
10
23
00
01
75
01
设备
功能码
寄存器
寄存器
寄存器
寄存器
CRC
CRC
地址
地址高位地址高位长度高位长度低位
高位
低位
主站接收到从站回传7个字节数据:
01
04
02
03
20
78
F0
设备
功能码
数据
2个字节整型
CRC
CRC
地址
长度
(入口温度)
高位
低位
温度带有1位小数。入口温度800℃
10读出口温度(同读入口温度)
11
fLmag电磁流量计转换器通讯协议
七、应用举例
1C语言MODBUS示例程序
1CRC16算法:
INT16UCRC16INT8UpuchMsgINT16UusDataLe


INT8UuchCRCHi0xFF
高CRC字节初始化
INT8UuchCRCLo0xFF
低CRC字节初始化
INT8UuI
dex
CRC循环中的索引
whileusDataLe

传输消息缓冲区

uI
dexuchCRCHipuchMsg计算CRC
uchCRCHiuchCRCLoauchCRCHiuI
dex
uchCRCLoauchCRCLouI
dex

retur
uchCRCHi8uchCRCLo

(2)发送命令程序
本例程以Mag64为核心CPU
voidRead_I
PutINT8UAddrINT16UStartINT16ULe


INT16UCRC
Se
dBuffer_4850Addr
设备地址
Se
dBuffer_48510x04
modbus功能码
Se
dBuffer_4852Start256
Start为寄存器地址
Se
dBuffer_4853Start256
Se
dBuffer_4854Le
256
Le
为读取寄存器长度
Se
dBuffer_4855Le
256
CRCCRC16Se
dBuffer_4856
Se
dBuffer_4856CRC256
CRC校验高位
Se
dBuffer_4857CRC256
CRC校验低位
R485_OUT
使能RS485发送
Se
dLe
_4858
Se
dNum_4850
CloseINT0
关闭串口接受中断
UCSR0BBITUDRIE0
打开串口发送中断

12
fLmag电磁流量计转换器通讯协议
(3)返回数据解析(只以瞬时流量为例)
数据接收使用串口中断,ReceivedBuffer_485为接收数据组,ReceivedNum_485为接收到数据
长度,ReceivedFlag_485接收到数据标志。函数floatDatasumINT8UBYTE1INT8UBYTE2INT8U
BYTE3INT8UBYTE4把浮点数的4个字节转换为1个浮点数。
floatDatasumINT8UFloatByte1INT8UFloatByte2INT8UFloatByte3INT8UFloatByte4

floataa
u
io
I
tTOFP

FP32
F32
INT8U
T84

u
io
I
tTOFPaa
aaT80FloatByte1
aaT81FloatByte2
aaT82FloatByte3
aaT83FloatByte4
retur
aa

voidRead_LmagINT8UAd

INT8Uij
INT8UNum110BIT
INT16UCRC1CRC2
FP32Flow
aaa为瞬时流量数值
ReceivedFlag_4851
Ope
_Time1_Ms520
Read_I
PutAd0x10102
发送设备地址、寄存器地址、寄存器长度
whileReceivedFlag_485
等待接收结束
ifReceivedNum_4859ReceivedBuffer_4850Ad判断数据是否正确

CRC1CRC16ReceivedBuffer_4857
CRC2ReceivedBuffer_4857256ReceivedBuffer_4858
ifCRC1CRC2
转换数据为浮点数
FlowDatasumReceivedBuffer_4856ReceivedBuffer_4855
ReceivedBuffer_4854ReceivedBuffer_4853;



13
fLmagr
好听全球资料 返回顶部