BBC、LRC、CRC校驗
庫介紹:
使用軟件和硬件環境:
STEP 7-Micro/WIN SMART V2.2及以上
S7-200 SMART固件V2.2及以上
特點:
伴隨着新版本的STEP 7-Micro/WIN SMART和S7-200 SMART CPU的發布,S7-200 SMART CPU性能越來越強大。由於串口通信設計較為困難,基於此筆者設計了BBC(異或校驗)、LRC(縱向冗余檢驗)、CRC(循環冗余校驗),便於初學者快速用於Modbus RTU/ASCII協議及相關支持BBC、LCR和CRC協議的設計,為后續工作打下堅實的基礎。
使用注意事項:
1)計算 BBC 校驗值
說明:
本程序使用異或的方法計算信息幀的BBC 值。
輸入參數:
Ris_Edge 使能信號 : 上升沿信號有效觸發轉換
P_Dint 緩沖區頭指針,由第一個字節給出信息長度
Num 校驗數據數量
輸出參數:
Out_Value BBC 計算結果
通信報文:30 35 38 45 34 32,注意此通信報文為ASCII格式的16進制表示
需要帶求的校驗碼:37 45 對應的ASCII格式為'7' 'E'

BBC校驗
2)計算 LRC 校驗值
說明:
本程序使用位或的方法計算信息幀的 LRC 值。
輸入參數:
First_on 使能信號 : 上升沿信號有效觸發轉換
Pint 緩沖區頭指針,由第一個字節給出信息長度
Num 校驗數據數量
輸出參數:
Out_Value LRC 計算結果
本例程以Modbus Ascii通信的報文為依據求取相應的校驗碼
通信報文:30 31 30 33 30 30 30 30 30 30 30 31,注意此通信報文為ASCII格式的16進制表示需要轉換為
真實的16進制
需要帶求的校驗碼:46 42 對應的ASCII格式為'F' 'B'
LRC校驗
3)計算 CRC16 校驗值
說明:
本程序使用位或的方法計算信息幀的 CRC 值。
使用緩沖區的第一個字節作為待計算的數據長度,信息字節串緊隨其后
注意:
本程序用到累加器 AC0,但並不自動保存/恢復它
因本庫中調用它的程序會保存累加器,所以這里不需要保存
但如在本庫以外的地方調用此程序,則需要用戶自己做保存/恢復工作
輸入參數:
pBuf 緩沖區頭指針,由第一個字節給出信息長度
bExchg 是否交換計算結果的高低字節 : 1=交換、0=不交換
bPutBack 結果寫回緩沖區數據尾部 : 1=寫入、0=不寫入
本庫其實不需要這兩個參數,僅僅是為了增加在本庫以外的地方使用本程序的兼容性
輸出參數:
wCrc CRC 計算結果
結果同時被放回到緩沖區緊隨數據之后
本例程以Modbus RTU通信的報文為依據求取相應的校驗碼
初始化校驗數據:01 03 00 00 00 01其中VB0=6代表數據字節個數
CRC16數據01 03 00 00 00 01 輸出結果16#84 0A 10#33802


CRC校驗
源代碼鏈接:https://item.taobao.com/item.htm?spm=a1z10.3-c.w4002-19247315394.37.68455c83dQG7t7&id=578581253719
