MODBUS通訊CRC校驗碼怎麼算,有那位能告訴我呀

2022-02-09 03:30:27 字數 1667 閱讀 9670

1樓:匿名使用者

modbus中如何計算crc效驗(人工計算)

2樓:之何勿思

在crc計算時只用8個資料位,起始位及停止位,如有奇偶校驗位也包括奇偶校驗位,都不參與crc計算。

crc計算方法是:

1、 載入一值為0xffff的16位暫存器,此暫存器為crc暫存器。

2、 把第一個8位二進位制資料(即通訊資訊幀的第一個位元組)與16位的crc暫存器的相異或,異或的結果仍存放於該crc暫存器中。

3、 把crc暫存器的內容右移一位,用0填補最高位,並檢測移出位是0還是1。

4、 如果移出位為零,則重複第三步(再次右移一位);如果移出位為1,crc暫存器與0xa001進行異或。

3樓:匿名使用者

我搞過modbus,對它很熟悉,用c++編過幾千行**,程式一直在執行著。

modbus 的crc不是簡單的相加運算,挺複雜的,所以,要手工算很麻煩。

如果你c**看不懂,就很難搞清這個crc運算的,演算法有兩種:

慢速的:要移位運算;高速的:有一個很大的對照表,你說怎能用手工說清楚?!

計算程式我有,不貼了,反正你也不想看。

modbus協議crc校驗計算方式?該怎麼計算?

4樓:虎嘯

執行八次之後就不再執行移位操作了。

5樓:匿名使用者

儘量簡單點說: 一般傳輸錯誤大概率發生在單個資料位,所以需要監測每個bit位。把要傳送的資料所有bit首尾相連,變成一個8bit乘位元組長度的大數,然後約定一個除數,計算最後的餘數就是crc。

做二進位制除法,每除一位時要做減法,商為1時減除數,商為零時不減除數,然後移到下一位繼續算(這段不懂回憶一下小學10進位制除法)。在實際應用中,為適應高速通訊,二進位制除法採用簡易演算法,減法不借位,就是異或替代減法。crc在應用中有很多差異花的標準,資料傳輸有的高位在前,有的低位在前,所以演算法有些差異,有左移位的有右移位的。

適應不同的硬體處理器,除數有2位、8、12、16、32位,對應crc8、crc16、crc32等。為了計算首尾的bit,所以協議規定了計算初始補0000或ffff,通過大量計算,協議規定了優選的除數,就是多項式。

6樓:wzlj2033是我

crc計算方法是:

1、載入一值為0xffff的16位暫存器,此暫存器為crc暫存器。

2、把第一個8位二進位制資料(即通訊資訊幀的第一個位元組)與16位的crc暫存器的相異或,異或的結果仍存放於該crc暫存器中。

3、把crc暫存器的內容右移一位,用0填補最高位,並檢測移出位是0還是1。

4、如果移出位為零,則重複第三步(再次右移一位);如果移出位為1,crc暫存器與0xa001進行異或。

5、重複步驟3和4,直到右移8次,這樣整個8位資料全部進行了處理。

6、重複步驟2和5,進行通訊資訊幀下一個位元組的處理。

7、將該通訊資訊幀所有位元組按上述步驟計算完成後,得到的16位crc暫存器的高、低位元組進行交換

8、最後得到的crc暫存器內容即為:crc校驗碼。

modbus協議rtu模式校驗碼怎麼計算

微控制器通訊uart和modbus有什麼區別

modbus是一個應用層的協議,他是構建在串列埠,網線等底層傳輸基礎上的。uart只是串列埠協議而已 在微控制器中uart代表的是串列埠通訊,是物理鏈路。而modbus只是一個協議,在微控制器中一般使用的是modbus rtu要比網路的tcp ip簡單些,modbus協議在工業上應用狠普遍crc的偵...

三菱FX3u與溫控儀做MODBUS通訊需要哪些硬體

硬體如下 1,plc fx3u 2,通訊板fx3u 485 bd或通訊介面卡fx3u 485adp mb 3,帶有modbus通訊功能的溫控儀 4,220v電源 5,2芯電纜,最好是2芯遮蔽雙絞電纜 6,plc程式設計線 7,裝有三菱plc程式設計軟體的電腦 您好,我看到您的問題很久沒有人來回答,但...

modbus與canbus的區別

canbus 匯流排和dumodebus 匯流排都是國際現場zhi匯流排 會通過的幾十dao 多個標準回現場匯流排的其中的兩答個標準。為什麼有那麼多呢?是因為在自動控制裝置的國際廠家太多,為了協調國際電工委員會和國際現場匯流排 會為了平衡各廠家的利益通過了幾十個這樣的協議。其中有西門子的profib...