0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何用SMART編寫CRC校驗(yàn)算法程序

1bGT_GKYXT1508 ? 來源:未知 ? 作者:胡薇 ? 2018-11-26 09:50 ? 次閱讀

CRC即循環(huán)冗余校驗(yàn)碼(Cyclic Redundancy Check):是數(shù)據(jù)通信領(lǐng)域中最常用的一種查錯(cuò)校驗(yàn)碼,其特征是信息字段和校驗(yàn)字段的長度可以任意選定。循環(huán)冗余檢查(CRC)是一種數(shù)據(jù)傳輸檢錯(cuò)功能,對數(shù)據(jù)進(jìn)行多項(xiàng)式計(jì)算,并將得到的結(jié)果附在幀的后面,接收設(shè)備也執(zhí)行類似的算法,以保證數(shù)據(jù)傳輸?shù)恼_性和完整性。

在Modbus RTU通訊中數(shù)據(jù)報(bào)文中有一幀是CRC校驗(yàn)碼,用來進(jìn)行錯(cuò)誤檢測。其原理是由發(fā)送設(shè)備將數(shù)據(jù)幀進(jìn)行一定的運(yùn)算得出一個(gè)檢驗(yàn)碼,然后加在數(shù)據(jù)幀后一起發(fā)送過去,接收設(shè)備接收到數(shù)據(jù)后重新運(yùn)算,再講運(yùn)算出來的校驗(yàn)碼與發(fā)送過去的校驗(yàn)碼進(jìn)行比較,如果一致則說明數(shù)據(jù)無錯(cuò)誤,如果不一致則說明數(shù)據(jù)傳輸錯(cuò)誤。

CRC運(yùn)算過程如下:

CRC是先存入0 XFFFF到CRC寄存器,然后調(diào)用一個(gè)過程將消息中連續(xù)的8Bit字節(jié)與當(dāng)前寄存器中的值進(jìn)行處理。僅每個(gè)字符中的8Bⅰt數(shù)據(jù)對CRC有效,起始位和停止位以及奇偶校驗(yàn)位均無效。CRC產(chǎn)生過程中:每個(gè)8位字符都單獨(dú)和CRC寄存器內(nèi)容相異或(X0R),結(jié)果向最低有效位方向移動,最高有效位以0填充。LSB被提取出來檢測,如果LSB為1,CRC寄存器單獨(dú)和預(yù)置的值相異或,如果LSB為0,則不進(jìn)行。整個(gè)過程要重復(fù)8次。在最后一位(第8位)完成后,下一個(gè)8位字節(jié)又單獨(dú)和CRC寄存器的當(dāng)前值相異或。最終CRC寄存器中的值,是消息中所有的字節(jié)都執(zhí)行之后的CRC值。

下面為產(chǎn)生GRG的計(jì)算過程

1.將一個(gè)16位寄存器的值設(shè)置為FFFF(hex),稱之為CRC寄存器。

2.將數(shù)據(jù)的第一個(gè)8Bit字符與16位CRC寄存器的低8位進(jìn)行異或計(jì)算,并把結(jié)果存入CRC寄存器。

3.CRC寄存器向右移一位(向著最低位LSB),最高位MSB補(bǔ)零,移出并檢查LSB。

4.如果LSB為0:重復(fù)第三步(另一個(gè)移位)如果LSB為1:CRC寄存器與預(yù)置值:A001H(1010000000000001B)進(jìn)行異或操作。

5.重復(fù)第3與第4步直到8次移位全部完成,此時(shí)一個(gè)8Bit數(shù)據(jù)處理完畢。

6.重復(fù)第2與第5步直到所有數(shù)據(jù)全部處理完成。

7.最終CRC寄存的內(nèi)容即為CRC值。

注意:CRC校驗(yàn)碼使用時(shí)低字節(jié)在前,高字節(jié)在后。

用S7-200 SMART編寫運(yùn)算程序如下:

將CRC算法創(chuàng)建成庫,在主程序中調(diào)用即可算出CRC結(jié)果。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • crc
    crc
    +關(guān)注

    關(guān)注

    0

    文章

    199

    瀏覽量

    29465
  • SMART
    +關(guān)注

    關(guān)注

    3

    文章

    224

    瀏覽量

    44694

原文標(biāo)題:SMART如何編寫CRC校驗(yàn)算法程序

文章出處:【微信號:GKYXT1508,微信公眾號:工控云學(xué)堂】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    基于C8051F的CRC校驗(yàn)算法的實(shí)現(xiàn)

    基于C8051F的CRC校驗(yàn)算法的實(shí)現(xiàn) 
    發(fā)表于 03-14 17:14

    Labview編寫CRC8校驗(yàn)程序

    用Labview編寫CRC8校驗(yàn)程序,輸入碼字序列后生成校驗(yàn)碼,通過閱讀此程序,用戶可采用類似
    發(fā)表于 10-22 21:13

    常用的校驗(yàn)算法有哪些?

    常用的校驗(yàn)算法有哪些,是不是和通信規(guī)約有關(guān)。比如MODBUS一般都用CRC16(不確定是不是叫這個(gè))。這些校驗(yàn)算法是之前積累下來的嗎。自己也可以定義一個(gè)校驗(yàn)算法吧,只要發(fā)送端和接收端用
    發(fā)表于 11-03 06:50

    基于C8051F的CRC校驗(yàn)算法的實(shí)現(xiàn)

    介紹了CRC(循環(huán)冗余碼校驗(yàn))原理及集成混合信號片上系統(tǒng)單片機(jī)C8051F的新特性,推導(dǎo)獲得以字節(jié)為單位的數(shù)據(jù)序列CRC碼遞推算法,利用C8051F單片機(jī)的自帶CAN2.0B總線接口控
    發(fā)表于 03-14 08:39 ?46次下載

    基于iSCSI協(xié)議校驗(yàn)算法的改進(jìn)

    CRC 校驗(yàn)作為iSCSI 協(xié)議中使用最頻繁的一種檢錯(cuò)機(jī)制,其算法的優(yōu)劣會直接影響協(xié)議的執(zhí)行效率。文章在分析傳統(tǒng)CRC算法低效率的基礎(chǔ)上,引
    發(fā)表于 11-08 16:45 ?12次下載

    IP協(xié)議校驗(yàn)算法程序

     IP 協(xié)議采用統(tǒng)一的校驗(yàn)算法,其計(jì)算比較簡單:設(shè)校驗(yàn)和初值為0,然后對數(shù)據(jù)每16位求異或,結(jié)果取反,便得校驗(yàn)和。校驗(yàn)時(shí)將數(shù)據(jù)(含校驗(yàn)和)按
    發(fā)表于 08-13 10:55 ?1047次閱讀

    LTE系統(tǒng)的CRC校驗(yàn)算法及DSP實(shí)現(xiàn)

    通過對兩種常用CRC校驗(yàn)算法的研究分析,為TD-LTE測試儀表系統(tǒng)選擇了一種最優(yōu)的CRC校驗(yàn)算法,并在TMS320C64xDSP中實(shí)現(xiàn)。將CRC
    發(fā)表于 02-23 14:58 ?30次下載

    16位CRC校驗(yàn)原理與算法分析

    16位CRC校驗(yàn)原理與算法分析,感興趣的小伙伴們可以看看。
    發(fā)表于 10-10 14:55 ?11次下載

    一種基于矩陣的并行CRC校驗(yàn)算法

    針對高速網(wǎng)絡(luò)通信中高位寬并行數(shù)據(jù)的實(shí)時(shí)校驗(yàn)需求,提出了一種可單周期實(shí)現(xiàn)的、面向128位并行數(shù)據(jù)的循環(huán)冗余校驗(yàn)算法(Cyclic Redundancy Check,CRC )。該算法首先
    發(fā)表于 10-30 16:39 ?3次下載
    一種基于矩陣的并行<b class='flag-5'>CRC</b><b class='flag-5'>校驗(yàn)算法</b>

    如何使用SMART編寫CRC校驗(yàn)算法程序

    本文檔的主要內(nèi)容詳細(xì)介紹的是如何使用SMART編寫CRC校驗(yàn)算法程序。
    發(fā)表于 10-24 08:00 ?4次下載
    如何使用<b class='flag-5'>SMART</b><b class='flag-5'>編寫</b><b class='flag-5'>CRC</b>的<b class='flag-5'>校驗(yàn)算法</b><b class='flag-5'>程序</b>

    如何使用51單片機(jī)實(shí)現(xiàn)CRC校驗(yàn)算法

    介紹了CRC(循環(huán)冗余碼校驗(yàn))原理及集成混合信號片上系統(tǒng)單片機(jī)C8051F的新特性,推導(dǎo)獲得以字節(jié)為單位的數(shù)據(jù)序列CRC碼遞推算法,利用C8051F單片機(jī)的自帶CAN2.0B總線接口控
    發(fā)表于 12-17 16:09 ?17次下載
    如何使用51單片機(jī)實(shí)現(xiàn)<b class='flag-5'>CRC</b><b class='flag-5'>校驗(yàn)算法</b>

    CRC校驗(yàn)算法原理及c語言實(shí)現(xiàn)

    CRC校驗(yàn)算法原理及c語言實(shí)現(xiàn)
    發(fā)表于 11-30 10:04 ?9次下載

    西門子200SMART PLC CRC校驗(yàn)程序編寫

    CRC校驗(yàn)程序”子程序,初始化存儲器,并把16#FFFF裝載到CRC寄存器中(定義AC0為CRC
    的頭像 發(fā)表于 07-10 15:45 ?3517次閱讀
    西門子200<b class='flag-5'>SMART</b> PLC <b class='flag-5'>CRC</b><b class='flag-5'>校驗(yàn)</b><b class='flag-5'>程序</b>的<b class='flag-5'>編寫</b>

    TSMaster中如何自定義CRC校驗(yàn)算法

    在通訊過程中,用戶需要利用CheckSum信號對傳輸數(shù)據(jù)用自己規(guī)定的算法邏輯進(jìn)行校驗(yàn),來看數(shù)據(jù)在傳輸過程中是否被更改或傳輸錯(cuò)誤。本文主要介紹TSMaster如何設(shè)置自己的CRC算法信號
    的頭像 發(fā)表于 09-09 08:23 ?1489次閱讀
    TSMaster中如何自定義<b class='flag-5'>CRC</b><b class='flag-5'>校驗(yàn)算法</b>

    虹科技術(shù)|保障數(shù)據(jù)傳輸穩(wěn)定性:BabyLIN產(chǎn)品的CRC算法實(shí)現(xiàn)

    文章將以CRC8校驗(yàn)為例,介紹在BabyLIN產(chǎn)品中如何使用CRC校驗(yàn)算法。 CRC校驗(yàn)原理 在
    的頭像 發(fā)表于 01-02 10:45 ?505次閱讀
    虹科技術(shù)|保障數(shù)據(jù)傳輸穩(wěn)定性:BabyLIN產(chǎn)品的<b class='flag-5'>CRC</b><b class='flag-5'>算法</b>實(shí)現(xiàn)