導(dǎo)讀:在工作現(xiàn)場,經(jīng)常會用到通訊與其它設(shè)備交互信息,而通訊必然會需要校驗。 而初學(xué)者學(xué)習(xí)MODBUS RTU的時候往往會糾結(jié)這個CRC校驗程序如何編寫?CRC校驗程序相對來說比較繁瑣,但是大家可以收藏好這個程序(使用200SMART PLC),加以理解,需要的時候調(diào)用此程序即可。
那首先我們來看CRC校驗的步驟,嚴(yán)格按照步驟來寫程序即可:
1、設(shè)置CRC存儲器為16#FFFF。
2、把第一個參與校驗的8位數(shù)與CRC的低八位進(jìn)行異或運算結(jié)果仍存與CRC。
3、把CRC右移一位,最高位補0,檢查最低位b0位。
4、若b0=0,CRC不變,若b0=1, CRC與16#A001進(jìn)行異或運算,結(jié)果仍存與CRC。
5、重復(fù)3、4兩步,直到右移8次,這樣第一個八位數(shù)就進(jìn)行處理了結(jié)果仍然存于CRC。
6、重復(fù)2-5步,處理第二個八位數(shù)。
【程序結(jié)構(gòu)描述】
西門子S7-200SMART系列PLC的程序結(jié)構(gòu)分為主程序、子程序、中斷程序。此程序用“MAIN”程序調(diào)用“CRC校驗程序”子程序
定義子程序變量表:如圖1-0

子程序變量表定義圖1-0
(1)“CRC校驗程序”子程序,初始化存儲器,并把16#FFFF裝載到CRC寄存器中(定義AC0為CRC寄存器)。并利用FOR語句循環(huán),循環(huán)的次數(shù)由LW4決定。程序如圖1-1所示

圖1-1初始化存儲器
(2)取第一個地址與CRC寄存器做異或運算。并利用FOR語句循環(huán),循環(huán)的次數(shù)為8,因為一個字節(jié)的數(shù)據(jù)是8個位。程序如圖1-2所示

圖1-2異或運算
(3)執(zhí)行移位操作,并判斷移出為的狀態(tài),若移出位為1,則在與16#A001做異或運算。程序如圖1-3所示

圖1-3執(zhí)行移位操作
(4)利用指針,指針加1,指向下一個地址,取出下一個地址之后再進(jìn)行重復(fù)以上步驟效驗,直到數(shù)據(jù)都效驗完,程序退出FOR循環(huán)。程序如圖1-4所示

圖1-4指針加1
(5)對計算結(jié)果進(jìn)行高低字節(jié)交換,把結(jié)果輸出。程序如圖1-5所示

圖1-5高低字節(jié)交換
(6)在“MAIN”程序中通過按鈕的觸發(fā)調(diào)用“CRC校驗程序”子程序。

驗證一:寫入數(shù)據(jù)到VB0至VB5中,CRC效驗值存儲在VW100中

CRC效驗計算小助手(與程序中計算相符):

驗證二:寫入數(shù)據(jù)到VB0至VB5中,CRC效驗值存儲在VW100中

CRC效驗計算小助手計算(與程序中計算相符):

-
存儲器
+關(guān)注
關(guān)注
39文章
7695瀏覽量
170239 -
西門子
+關(guān)注
關(guān)注
98文章
3233瀏覽量
119449 -
crc
+關(guān)注
關(guān)注
0文章
204瀏覽量
30528
原文標(biāo)題:西門子200SMART PLC CRC校驗程序的編寫
文章出處:【微信號:玩轉(zhuǎn)PLC工業(yè)機(jī)器人,微信公眾號:玩轉(zhuǎn)PLC工業(yè)機(jī)器人】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
西門子plc的crc校驗程序
西門子PLC S7-200smart程序下載錯誤分析
PLC網(wǎng)關(guān)采集西門子S7-200SMART數(shù)據(jù)配置流程
西門子200smart PLC模擬量檢測程序
西門子200Smart PLC的Socket通信技術(shù)
如何利用200SMART編程軟件的間接尋址功能來讀取不同配方號的數(shù)據(jù)呢
快速了解西門子串口PPI、200、200smart驅(qū)動協(xié)議如何使用
西門子S7-200SMART系列PLC位相關(guān)指令分享
西門子PLC S7-200 SMART PID控制功能分享
西門子Smart200PLC如何實現(xiàn)Profinet通信
西門子網(wǎng)口S7-COMM協(xié)議200smart驅(qū)動如何使用?
西門子S7-200 Smart PLC加密設(shè)置全面指南

西門子200SMART PLC CRC校驗程序的編寫
評論