<object id="ir2le"></object>
  • 加入收藏 在線留言 聯系我們
    關注微信
    手機掃一掃 立刻聯系商家
    全國服務熱線15267534595
    公司新聞
    邏輯運算指令在PLC校驗程序中的應用
    發布時間: 2024-03-07 20:39 更新時間: 2024-12-27 09:10

    在PLC控制項目中,經常會用到PLC和其他設備通訊發送接收數據信息等,通訊必然會用到校驗,比如求和校驗、LRC校驗、CRC校驗等,一般來說MODBUS ASCII通訊方式會采用LRC校驗,MODBUS RTU通訊方式會采用CRC校驗,其實這些校驗程序中會利用到一些邏輯運算指令,那么這些校驗程序應該怎么編寫呢,下面小編就給大家介紹一下邏輯運算指令在PLC校驗程序中的應用吧

    案例1、邏輯運算指令在求和校驗中的應用。

    求和校驗算法:將參與校驗的數據求和,取其低8位為校驗碼。

    校驗數據為D0~D7共8個,先用CCD D0 D100 K8進行求和運算(指令中的K8就代表D0開始的8個寄存器,即D0~D7),求和結果存在D100中,再用WAND H0FF D100 D100進行邏輯與運算,根據邏輯與運算指令有0出0的特點,取出D100的低8位數據,再存放回D100中,所得出來的即為求和校驗碼。

    案例2、邏輯運算指令在LRC校驗中的應用。

    LRC校驗算法:將參與校驗的數據求和,并將和的補碼(低8位)作為校驗碼。

    校驗數據為D10~D19共10個,先用CCD D10 D110 K10進行求和運算,求和結果存在D110中,根據算法還要求出其補碼,用NEG指令即可求出補碼,Zui后再用WAND H0FF D110 D110進行邏輯與運算,根據邏輯與運算指令有0出0的特點,取出D110的低8位數據,再存放回D110中,所得出來的即為求和校驗碼。

    除了用NEG指令求補碼,還可以采用求反再加1的方法,程序如下圖,CCD求和之后,用SUB H0FFFF D120 D120進行減法運算,即為求反功能,再用INC D120加1,同樣可以求出其補碼出來。

    案例3、邏輯運算指令在CRC校驗中的應用。CRC校驗算法:

    1、設置CRC存儲器為HFFFF;

    2、把第一個參與校驗的8位二進制數與CRC低8位進行異或運算,結果仍存于CRC存儲器。

    3、把CRC存儲器右移一位,Zui高位補0,檢查Zui低位b0位;

    4、若b0=0,CRC存儲器不變,若b0=1,CRC存儲器與HA001(1010 0000 0000 0001)進行異或運算,結果仍存于CRC存儲器;

    5、重復3~4兩步,直到右移8次,這樣第一個8位數據全部進行了處理,結果仍存于CRC。

    6、重復2~5步,處理第二個8位二進制數。

    7、如此處理,直到所有參與校驗的8位二進制數全部處理完畢,結果CRC寄存器所存的就是CRC校驗碼。

    如果是將CRC校驗程序做成子程序,需要先在主程序中用CALL P0指令進行調用,子程序的結尾需用SRET作為子程序的結束。


    首先做之后需要用到的變址寄存器Z10進行清零,同時用WXOR H0FFFF K0 D10指令,將HFFFF存到D10中,設置CRC存儲器為HFFFF。根據算法第2步到第5步之間是需要循環的,同時用FOR D0設置循環次數,循環多少次是取決于校驗數據個數D0的。

    然后把第一個參與校驗的8位二進制數與CRC低8位進行異或運算,結果仍存于CRC存儲器。用WAND H0FF D100Z10 D11取出第一個校驗數據的低8位,并用WXOR D10 D11 D10與CRC低8位進行異或運算,結果存回D10中,同時對Z10進行加1,這是為了讓下次運算時是把下一個參與校驗的數據D101進行處理。因為后面的第3步到第4步之間是需要循環8次的,也要用FOR K8、NEXT指令進行循環,后面將第3步和第4步的程序編寫在FOR NEXT指令之間。

    根據算法的第3、4步,把CRC存儲器右移一位,Zui高位補0,檢查Zui低位b0位,用RCR D10 K1循環右移指令即可完成,若b0=0,CRC存儲器不變,若b0=1,即進位標志SM8022為ON,CRC存儲器D10與HA001(1010 0000 0000 0001)進行異或運算,結果仍存于CRC存儲器D10中,直到右移8次,這樣第一個8位數據全部進行了處理。


    直到所有參與校驗的8位二進制數全部處理完畢,CRC寄存器所存的就是CRC校驗碼,Zui后再用WAND指令取出CRC校驗值的低8位和高8位,再用SWAP指令進行高低字節交換即可。

    以上就是PLC通訊程序中常用的求和、LRC和CRC校驗程序


    聯系方式

    • 電  話:18126392341
    • 聯系人:梁濤
    • 手  機:15267534595
    • 微  信:15267534595