西門子S7-200SMART系列PLC的程序結(jié)構(gòu)分為主程序、子程序、中斷程序。此程序用“MAIN”程序調(diào)用“CRC校驗(yàn)程序”子程序
定義子程序變量表:如圖1-0
子程序變量表定義圖1-0
(1)“CRC校驗(yàn)程序”子程序,初始化存儲(chǔ)器,并把16#FFFF裝載到CRC寄存器中(定義AC0為CRC寄存器)。并利用FOR語句循環(huán),循環(huán)的次數(shù)由LW4決定。程序如圖1-1所示
圖1-1初始化存儲(chǔ)器
(2)取第一個(gè)地址與CRC寄存器做異或運(yùn)算。并利用FOR語句循環(huán),循環(huán)的次數(shù)為8,因?yàn)橐粋€(gè)字節(jié)的數(shù)據(jù)是8個(gè)位。程序如圖1-2所示
圖1-2異或運(yùn)算
(3)執(zhí)行移位操作,并判斷移出為的狀態(tài),若移出位為1,則在與16#A001做異或運(yùn)算。程序如圖1-3所示
圖1-3執(zhí)行移位操作
(4)利用指針,指針加1,指向下一個(gè)地址,取出下一個(gè)地址之后再進(jìn)行重復(fù)以上步驟效驗(yàn),直到數(shù)據(jù)都效驗(yàn)完,程序退出FOR循環(huán)。程序如圖1-4所示
圖1-4指針加1
(5)對(duì)計(jì)算結(jié)果進(jìn)行高低字節(jié)交換,把結(jié)果輸出。程序如圖1-5所示
圖1-5高低字節(jié)交換
(6)在“MAIN”程序中通過按鈕的觸發(fā)調(diào)用“CRC校驗(yàn)程序”子程序。
驗(yàn)證一:寫入數(shù)據(jù)到VB0至VB5中,CRC效驗(yàn)值存儲(chǔ)在VW100中
CRC效驗(yàn)計(jì)算小助手(與程序中計(jì)算相符):
驗(yàn)證二:寫入數(shù)據(jù)到VB0至VB5中,CRC效驗(yàn)值存儲(chǔ)在VW100中
CRC效驗(yàn)計(jì)算小助手計(jì)算(與程序中計(jì)算相符):
循環(huán)冗余校驗(yàn)碼(CRC),簡(jiǎn)稱循環(huán)碼,是一種常用的、具有檢錯(cuò)、糾錯(cuò)能力的校驗(yàn)碼,在早期的通信中運(yùn)用廣泛。循環(huán)冗余校驗(yàn)碼常用于外存儲(chǔ)器和計(jì)算機(jī)同步通信的數(shù)據(jù)校驗(yàn)。奇偶校驗(yàn)碼和海明校驗(yàn)碼都是采用奇偶檢測(cè)為手段檢錯(cuò)和糾錯(cuò)的(奇偶校驗(yàn)碼不具有糾錯(cuò)能力),而循環(huán)冗余校驗(yàn)則是通過某種數(shù)學(xué)運(yùn)算來建立數(shù)據(jù)位和校驗(yàn)位的約定關(guān)系的。
循環(huán)冗余校驗(yàn)碼(cyclic redundancy check)簡(jiǎn)稱CRC(循環(huán)碼),是一種能力相當(dāng)強(qiáng)的檢錯(cuò)、糾錯(cuò)碼,并且實(shí)現(xiàn)編碼和檢碼的電路比較簡(jiǎn)單,常用于串行傳送(二進(jìn)制位串沿一條信號(hào)線逐位傳送)的輔助存儲(chǔ)器與主機(jī)的數(shù)據(jù)通信和計(jì)算機(jī)網(wǎng)絡(luò)中。
循環(huán)碼是指通過某種數(shù)學(xué)運(yùn)算實(shí)現(xiàn)有效信息與校驗(yàn)位之間的循環(huán)校驗(yàn)(而海明碼是一種多重校驗(yàn))。
這種編碼基本思想是將要傳送的信息M(X)表示為一個(gè)多項(xiàng)式L,用L除以一個(gè)預(yù)先確定的多項(xiàng)式G(X),得到的余式就是所需的循環(huán)冗余校驗(yàn)碼。
這種校驗(yàn)又稱多項(xiàng)式校驗(yàn)。
理論上可以證明循環(huán)冗余校驗(yàn)碼的檢錯(cuò)能力有以下特點(diǎn):①可檢測(cè)出所有奇數(shù)位錯(cuò);②可檢測(cè)出所有雙比特的錯(cuò);③可檢測(cè)出所有小于、等于校驗(yàn)位長(zhǎng)度的突發(fā)錯(cuò)。
聯(lián)系客服