一路向前hg
相互学习,共同进步!
级别: 略有小成
精华主题: 0
发帖数量: 229 个
工控威望: 303 点
下载积分: 917 分
在线时间: 145(小时)
注册时间: 2019-12-07
最后登录: 2024-08-04
查看一路向前hg的 主题 / 回贴
楼主  发表于: 2020-08-14 16:24
想请教各位大师,这个CRC校验码到底有啥用,是如何计算
我用串口调试助手发送 读取MODBUS温控器温度
00 03 0000 0004
没有填写校验码,助手上校验码哪里就自动得出5C44
发送完后温控器返回:
04 03 08 00DB 00DD 00CF 00D2 B3 67
B367事校验码
那么问题是:
1助手上5C44是怎么出来的
2温控器返回B367是怎么算的
3为什么我不发送效验码温控器也能返回数值
斗志不能低
微鑫科技
级别: 正式会员
精华主题: 0
发帖数量: 51 个
工控威望: 89 点
下载积分: 640 分
在线时间: 9(小时)
注册时间: 2020-08-03
最后登录: 2024-05-19
查看微鑫科技的 主题 / 回贴
1楼  发表于: 2020-08-15 22:38
unsigned int MOD_BUS(void)//MODBUS校验码计算函数
{
    unsigned int x=0xffff;
    unsigned char i,n;        
    for(i=0;i<12;i++)//这里的12是指有12个数据,根据不同的数据量做适当的修改
    {
        x^=SYS_DATA;
        for(n=0;n<8;n++)
        {        
            if(x&0x01)
            {
                x=(x>>1)^0xa001;
            }
            else
            {
                x=x>>1;
            }
        }            
    }
    return x;
}
这个就是。
微鑫科技
级别: 正式会员
精华主题: 0
发帖数量: 51 个
工控威望: 89 点
下载积分: 640 分
在线时间: 9(小时)
注册时间: 2020-08-03
最后登录: 2024-05-19
查看微鑫科技的 主题 / 回贴
2楼  发表于: 2020-08-15 22:41
还是传图片吧,直接传代码的话,有些内容显示不出来。