<object id="5egnf"></object>

    <dfn id="5egnf"></dfn>

  1. <sup id="5egnf"></sup>
        加入收藏 在線留言 聯系我們
        關注微信
        手機掃一掃 立刻聯系商家
        全國服務熱線17838383235

        西門子代理商6DL89100AC100AB5

        更新時間
        2024-10-30 14:14:21
        價格
        請來電詢價
        聯系電話
        17838383235
        聯系手機
        17838383235
        聯系人
        徐嘉泉
        立即詢價

        詳細介紹
         西門子PLC

          德國西門子(SIEMENS)公司生產的可編程序控制器在我國的應用也相當廣泛,在冶金、化工、印刷生產線等領域都有應用。西門子(SIEMENS)公司的PLC產品包括LOGO、S7-200、S7-1200、S7-300、S7-400等。 西門子S7系列PLC體積小、速度快、標準化,具有網絡通信能力,功能更強,可靠性高。S7系列PLC產品可分為微型PLC(如S7-200),小規模性能要求的PLC(如S7-300)和中、高性能要求的PLC(如S7-400)等。

          CRC校驗

          RC即循環冗余校驗碼(Cyclic Redundancy Check):是數據通信領域中常用的一種查錯校驗碼,其特征是信息字段和校驗字段的長度可以任意選定。循環冗余檢查(CRC)是一種數據傳輸檢錯功能,對數據進行多項式計算,并將得到的結果附在幀的后面,接收設備也執行類似的算法,以保證數據傳輸的正確性和完整性。

          工作原理

          循環冗余校驗碼(CRC)的基本原理是:在K位信息碼后再拼接R位的校驗碼,整個編碼長度為N位,因此,這種編碼也叫(N,K)碼。對于一個給定的(N,K)碼,可以證明存在一個高次冪為N-K=R的多項式G(x)。根據G(x)可以生成K位信息的校驗碼,而G(x)叫做這個CRC碼的生成多項式。

          校驗碼的具體生成過程為:假設要發送的信息用多項式C(X)表示,將C(x)左移R位(可表示成C(x)*2R),這樣C(x)的右邊就會空出R位,這就是校驗碼的位置。用 C(x)*2R 除以生成多項式G(x)得到的余數就是校驗碼。任意一個由二進制位串組成的代碼都可以和一個系數僅為‘0’和‘1’取值的多項式一一對應。例如:代碼1010111對應的多項式為x6+x4+x2+x+1,而多項式為x5+x3+x2+x+1對應的代碼101111。

          

          PLC的crc校驗程序

          方法1:計算法

          主程序:OB1

          Network 1

          LD M0.0

          EU

          CALL SBR0, AC0 /

          INCB VB0

          INCB VB0

          XMT 發送接收緩沖區, 0

          Network 2

          LD M0.1

          EU

          CALL SBR0, AC0

          AW《》 AC0, +0

          MOVB 1, AC0

          SBR_0:SBR0

          VAR_OUTPUT

          crc:INT;

          END_VAR

          VAR

          count:INT;

          ptr:DWORD;

          END_VAR

          BEGIN

          Network 1

          // MOVW AC0, *#ptr 用于發送,直接將CRC寫入發送緩沖區,然后mmodbusBufr加2。

          //

          LD SM0.0

          MOVW 16#FFFF, AC0

          BTI VB0, LW2

          MOVD &VB0, LD4

          INCD LD4

          FOR AC2, +1, LW2

          XORB *LD4, AC0

          FOR AC1, +1, +8

          SRW AC0, 1

          LD SM1.1

          XORW 16#A001, AC0

          NEXT

          LD SM0.0

          INCD LD4

          NEXT

          Network 2

          // MOVW AC0, #crc 用于接收

          // 如果程序無須接收,則可刪除這一行,刪除crc這個OUT參數。

          //

          //

          //

          // MOVW AC0, *#ptr 用于發送

          // 直接將CRC寫入發送緩沖區,然后mmodbusBufr加2。

          // 如果程序無須發送,則可刪除這一行。

          LD SM0.0

          SWAP AC0

          MOVW AC0, LW0

          MOVW AC0, *LD4

          Network 3 // 網絡標題

          // 網絡注釋

          END_SUBROUTINE_BLOCK

          INTERRUPT_BLOCK INT_0:INT0

          TITLE=中斷程序注釋

          BEGIN

          Network 1 // 網絡標題

          // 網絡注釋

          END_INTERRUPT_BLOCK

          方法2:查表法

          ORGANIZATION_BLOCK 主程序:OB1

          TITLE=和方法1不同的是多了個初始化,簡化了CRC計算過程,縮短了時間。

          // 調用方法和方法1一樣

          BEGIN

          Network 1 // 網絡標題

          // 初始化CRC表,需要512個字節。VB2256---------VB2767

          LD SM0.1

          CALL SBR0

          Network 2 // 網絡標題

          // 發送

          LD M0.0

          EU

          CALL SBR1, AC0 //AC0在此無用

          INCB VB2000

          INCB VB2000

          XMT 發送接收緩沖區, 0

          Network 3

          // 接收完成后檢查接收的數據對錯,如果計算結果為0,則說明傳輸正確。

          LD M0.1

          EU

          CALL SBR1, AC0

          AW《》 AC0, +0

          MOVB 1, AC0

          END_ORGANIZATION_BLOCK

          SUBROUTINE_BLOCK SBR_0:SBR0

          TITLE=子程序注釋

          VAR

          index1:INT;

          index2:INT;

          END_VAR

          BEGIN

          Network 1

          LD SM0.0

          MOVD &VB2256, AC3

          MOVD +0, AC2

          FOR LW0, +1, +256

          MOVW AC2, AC0

          FOR LW2, +1, +8

          SRW AC0, 1

          Network 2

          LD SM1.1

          XORW 16#A001, AC0

          Network 3

          NEXT

          Network 4

          LD SM0.0

          MOVW AC0, *AC3

          INCW AC2

          +I +2, AC3

          Network 5

          NEXT

          Network 6 // 網絡標題

          // 網絡注釋

          END_SUBROUTINE_BLOCK

          SUBROUTINE_BLOCK SBR_1:SBR1

          TITLE=子程序注釋

          VAR_OUTPUT

          crc:INT;

          END_VAR

          VAR

          count:INT;

          ptr:DWORD;

          END_VAR

          BEGIN

          Network 1

          LD SM0.0

          BTI VB2000, LW2

          MOVD &VB2000, LD4

          INCD LD4

          XORD AC0, AC0

          MOVD 16#FFFF, AC2

          FOR AC1, +1, LW2

          MOVB *LD4, AC0

          XORW AC2, AC0

          ANDW 16#FF, AC0

          SLW AC0, 1

          MOVD &VB2256, AC3

          +I AC0, AC3

          SWAP AC2

          ANDW 16#FF, AC2

          XORW *AC3, AC2

          INCD LD4

          Network 2

          NEXT

          Network 3

          LD SM0.0

          SWAP AC2

          MOVW AC2, LW0

          MOVW AC2, *LD4

          Network 4 // 網絡標題

          // 網絡注釋

          END_SUBROUTINE_BLOCK

          INTERRUPT_BLOCK INT_0:INT0

          TITLE=中斷程序注釋

          BEGIN

          Network 1 // 網絡標題

          // 網絡注釋

          END_INTERRUPT_BLOCK


        相關產品

        聯系方式

        • 電  話:17838383235
        • 經理:徐嘉泉
        • 手  機:17838383235
        • 微  信:17838383235