冷镜露点仪ModeBus通信协议(通用)
通信协议
支持的功能码:
0x03 读多路寄存器 0x10 写多路寄存器
主机帧格式:
从机地址+0x03+寄存器起始地址(2字节)+寄存器数量(2字节)+CRC低位+CRC高位
从机地址+0x10+寄存器起始地址(2字节)+寄存器数量(2字节)+发送字节数+数据0+..+数据n +CRC低位+CRC高位
从机返回格式:
从机地址+0x03+返回字节数+数据0+..+数据n+CRC低位+CRC高位
从机地址+0x10+寄存器起始地址(2字节)+寄存器数量(2字节)+CRC低位+CRC高位
错误码:
0x81 非法的功能码(不支持的功能码)
0x82 读取非法的地址
0x83 写非法的数据(写到不可写的寄存器地址)
CRC算法
unsigned int CRC16(unsigned char *ptr, unsigned char len)
{
unsigned int crc=0xffff;
unsigned char i;
while(len--)
{
crc ^=*ptr++;
for(i=0;i<8;i++)
{
if(crc & 0x1)
{
crc>>=1;
crc^=0xa001;
}
else
{
crc>>=1;
}
}
}
return crc;
}