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


 

點擊上方藍字"PLC發燒友"關注我們吧!

29個工控編程軟件安裝視頻,免費領

 

圖片 導讀:在工作現場,經常會用到通訊與其它設備交互信息,而通訊必然會需要校驗。而初學者學習MODBUS RTU的時候往往會糾結這個CRC校驗程序如何編寫?CRC校驗程序相對來說比較繁瑣,但是大家可以收藏好這個程序(使用200SMART PLC),加以理解,需要的時候調用此程序即可。 圖片

那首先我們來看CRC校驗的步驟,嚴格按照步驟來寫程序即可:

1、設置CRC存儲器為16#FFFF。

2、把第一個參與校驗的8位數與CRC的低八位進行異或運算結果仍存與CRC。

3、把CRC右移一位,最高位補0,檢查最低位b0位。

4、若b0=0,CRC不變,若b0=1, CRC與16#A001進行異或運算,結果仍存與CRC。

5、重復3、4兩步,直到右移8次,這樣第一個八位數就進行處理了結果仍然存於CRC。

6、重復2-5步,處理第二個八位數。

 

【程序結構描述】

西門子S7-200SMART系列PLC的程序結構分為主程序、子程序、中斷程序。此程序用“MAIN”程序調用“CRC校驗程序”子程序

定義子程序變量表:如圖1-0

圖片

子程序變量表定義圖1-0

 

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

圖片

圖1-1初始化存儲器

 

(2)取第一個地址與CRC寄存器做異或運算。並利用FOR語句循環,循環的次數為8,因為一個字節的數據是8個位。程序如圖1-2所示

圖片

圖1-2異或運算

 

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

圖片

圖1-3執行移位操作

 

(4)利用指針,指針加1,指向下一個地址,取出下一個地址之后再進行重復以上步驟效驗,直到數據都效驗完,程序退出FOR循環。程序如圖1-4所示

     圖片

圖1-4指針加1

 

(5)對計算結果進行高低字節交換,把結果輸出。程序如圖1-5所示

圖片

圖1-5高低字節交換

 

(6)在“MAIN”程序中通過按鈕的觸發調用“CRC校驗程序”子程序。

圖片

 

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

圖片

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

圖片

 

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

圖片

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

圖片

 

來源:PLC發燒友,作者:技成-郭彪。轉載請注明出處!評論處大家可以補充文章解釋不對或欠缺的部分,這樣下一個看到的人會學到更多,你知道的正是大家需要的。。。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM