一路向前hg
相互學習,共同進步!
級別: 略有小成
精華主題: 0
發(fā)帖數(shù)量: 229 個
工控威望: 303 點
下載積分: 917 分
在線時間: 145(小時)
注冊時間: 2019-12-07
最后登錄: 2024-08-04
查看一路向前hg的 主題 / 回貼
樓主  發(fā)表于: 2020-08-14 16:24
想請教各位大師,這個CRC校驗碼到底有啥用,是如何計算
我用串口調(diào)試助手發(fā)送 讀取MODBUS溫控器溫度
00 03 0000 0004
沒有填寫校驗碼,助手上校驗碼哪里就自動得出5C44
發(fā)送完后溫控器返回:
04 03 08 00DB 00DD 00CF 00D2 B3 67
B367事校驗碼
那么問題是:
1助手上5C44是怎么出來的
2溫控器返回B367是怎么算的
3為什么我不發(fā)送效驗碼溫控器也能返回數(shù)值
斗志不能低
微鑫科技
級別: 正式會員
精華主題: 0
發(fā)帖數(shù)量: 51 個
工控威望: 89 點
下載積分: 640 分
在線時間: 9(小時)
注冊時間: 2020-08-03
最后登錄: 2024-05-19
查看微鑫科技的 主題 / 回貼
1樓  發(fā)表于: 2020-08-15 22:38
unsigned int MOD_BUS(void)//MODBUS校驗碼計算函數(shù)
{
    unsigned int x=0xffff;
    unsigned char i,n;        
    for(i=0;i<12;i++)//這里的12是指有12個數(shù)據(jù),根據(jù)不同的數(shù)據(jù)量做適當?shù)男薷?br />    {
        x^=SYS_DATA;
        for(n=0;n<8;n++)
        {        
            if(x&0x01)
            {
                x=(x>>1)^0xa001;
            }
            else
            {
                x=x>>1;
            }
        }            
    }
    return x;
}
這個就是。
微鑫科技
級別: 正式會員
精華主題: 0
發(fā)帖數(shù)量: 51 個
工控威望: 89 點
下載積分: 640 分
在線時間: 9(小時)
注冊時間: 2020-08-03
最后登錄: 2024-05-19
查看微鑫科技的 主題 / 回貼
2樓  發(fā)表于: 2020-08-15 22:41
還是傳圖片吧,直接傳代碼的話,有些內(nèi)容顯示不出來。