乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      S7-200 CPU上的通信口Port0支持Modbus RTU協(xié)議

       打遍天下的醬油 2018-05-20

      一、Modbus協(xié)議簡(jiǎn)介

      S7-200 CPU上的通信口Port0支持Modbus RTU協(xié)議。要實(shí)現(xiàn)Modbus RTU通信,需要STEP 7-Micro/WIN32 V3.2以上版本的編程軟件,而且須安裝STEP 7-Micro/WIN32 V3.2 Instruction Library(指令庫(kù))。Modbus RTU功能是通過(guò)指令庫(kù)中預(yù)先編好的程序功能塊實(shí)現(xiàn)的。

      Modbus 協(xié)議是應(yīng)用于電子控制器上的一種通用語(yǔ)言。通過(guò)此協(xié)議,控制器相互之間、控制器經(jīng)由網(wǎng)絡(luò)(例如以太網(wǎng))和其它設(shè)備之間可以通信。它已經(jīng)成為通用工業(yè)標(biāo)準(zhǔn)。有了它,不同廠商生產(chǎn)的控制設(shè)備可以連成工業(yè)網(wǎng)絡(luò),進(jìn)行集中監(jiān)控。

      協(xié)議用于主從查詢模式,進(jìn)行數(shù)據(jù)通訊。此協(xié)議定義了控制器能認(rèn)識(shí)使用的消息結(jié)構(gòu),結(jié)構(gòu)形式如下所示:

      S7-200  CPU上的通信口Port0支持Modbus  RTU協(xié)議

      常用的功能碼如下:

      代碼名稱作用
      01讀取線圈狀態(tài)取得一組邏輯線圈的當(dāng)前狀態(tài)(ON/OFF) ,功能 01 返回任意個(gè)數(shù)輸出點(diǎn)(Q)的 ON/OFF 狀態(tài)。
      02讀取輸入狀態(tài)取得一組開(kāi)關(guān)輸入的當(dāng)前狀態(tài)(ON/OFF),功能 02 返回任意個(gè)數(shù)輸入點(diǎn)(I)的 ON/OFF 狀態(tài)。
      03讀取保持寄存器讀取單個(gè)/多個(gè)保持寄存器。功能 03 返回 V 存儲(chǔ)區(qū)的內(nèi)容。在 Modbus 協(xié)議下保持寄存器都是'字'值,在一次請(qǐng)求中可以讀取最多 120 個(gè)字的數(shù)據(jù)。
      04讀取輸入寄存器讀取單個(gè)/多個(gè)輸入寄存器。功能 04 返回 S7-200 的模擬量數(shù)據(jù)值。
      05強(qiáng)置單線圈寫單個(gè)線圈(離散量輸出點(diǎn))。功能0 5 用于將離散量輸出點(diǎn)設(shè)置為指定的值。這個(gè)點(diǎn)不是被強(qiáng)制的,用戶程序可以覆蓋 Modbus 通信請(qǐng)求寫入的值。
      06預(yù)置單寄存器寫單個(gè)保持寄存器。功能 06 寫一個(gè)值到 S7-200 的 V 存儲(chǔ)區(qū)的保持寄存器中。
      07讀取異常狀態(tài)取得8個(gè)內(nèi)部線圈的通斷狀態(tài)
      15強(qiáng)置多線圈寫多個(gè)線圈(離散量輸出點(diǎn))。功能 15 把多個(gè)離散量輸出點(diǎn)的值寫到 S7-200 的輸出映像寄存器(Q 區(qū))。輸出點(diǎn)的地址必須以字節(jié)邊界起始(如 Q0.0 或 Q2.0),并且輸出點(diǎn)的數(shù)目必須是 8 的整數(shù)倍。這是此 Modbus RTU 從站指令庫(kù)的限制。些點(diǎn)不是被強(qiáng)制的,用戶程序可以覆蓋 Modbus 通信請(qǐng)求寫入的值。
      16預(yù)置多寄存器寫多個(gè)保持寄存器。功能 16 寫多個(gè)值到 S7-200 的 V 存儲(chǔ)區(qū)的保持寄存器中。在一次請(qǐng)求中可以寫最多 120 個(gè)字的數(shù)據(jù)。
      17報(bào)告從機(jī)標(biāo)識(shí)可使主機(jī)判斷編址從機(jī)的類型及該從機(jī)運(yùn)行指示燈的狀態(tài)

      舉例說(shuō)明:主機(jī)要從17號(hào)從機(jī)讀3個(gè)采集到的基本數(shù)據(jù)U1、U2、U3,U1的地址為0000H, U2的地址為0001H,U3的地址為0002H。主機(jī)發(fā)送的命令格式是:110300000003075B

      其中11是16進(jìn)制數(shù)表示的地址是17號(hào)從站,03表示查詢命令,0000是查詢的寄存器起始地址,0003是要查詢的寄存器末地址,075B是CRC校驗(yàn)值。

      當(dāng)主機(jī)的信息幀到達(dá)終端設(shè)備時(shí),從機(jī)讀取數(shù)據(jù),如果沒(méi)有錯(cuò)誤,就執(zhí)行數(shù)據(jù)所請(qǐng)求的任務(wù),然后,它將自己生成的數(shù)據(jù)幀返回給主機(jī)。返回的響應(yīng)數(shù)據(jù)中包含了以下內(nèi)容:終端從機(jī)地址(Address)、被執(zhí)行了的命令(Function)、執(zhí)行命令生成的被請(qǐng)求數(shù)據(jù)(Data)和校驗(yàn)碼(Check)。如上例中主機(jī)發(fā)送110300000003075B,從機(jī)響應(yīng)格式是:11030603E803E703E9FD9C,其中11是地址(16進(jìn)制數(shù)),03是功能碼,06是返回的字節(jié)數(shù),03E803E703E9(U1=03E8H,U2=03E7H,U3=03E9H)是返回的6個(gè)字節(jié)數(shù)據(jù),F(xiàn)D9C是CRC校驗(yàn)碼。

      另一個(gè)例子是請(qǐng)求17號(hào)從機(jī)0040H的值為2717。主機(jī)發(fā)送命令:110600400A9D4D87

      其中11是地址,06是功能碼(預(yù)設(shè)單寄存器),0040是寄存器地址,0A9D是數(shù)據(jù),等于十進(jìn)制的2717,4D87是CRC校驗(yàn)碼。從機(jī)對(duì)于預(yù)置單寄存器請(qǐng)求的正常響應(yīng)是在寄存器值改變以后將接收到的數(shù)據(jù)傳送回去。從機(jī)返回的數(shù)據(jù)是:110600400A9D4D87。

      例如單片機(jī)作為主機(jī)要讀s7-200的V存儲(chǔ)區(qū)數(shù)據(jù),需要發(fā)送0C0300320004E4DB讀取保持寄存器(功能碼03)此例是要在12號(hào)從機(jī)的存儲(chǔ)區(qū)起始地址是0032h地址讀4個(gè)數(shù)據(jù),返回8個(gè)字節(jié)。0C03080092009200000000A46F,若要讀PLC輸入狀態(tài)(功能碼02),發(fā)送0C0200000001返回0C02010162E4,若要讀PLC的輸出狀態(tài)(功能碼01),發(fā)送0C0100000001返回0C01010192E4。

      二、51單片機(jī)作為主機(jī)讀寫S7-200數(shù)據(jù)的程序

      在主程序中調(diào)用下面子程序即可。

      51單片機(jī)讀PLC輸入狀態(tài)I0.0的子程序如下:

      FFJ02: MOV B,#10H ;讀PLC輸入狀態(tài)I0.0

      FJ4: MOV 2DH,#0CH ;地址;;;;;;;;;;;;

      MOV 2EH,#02H ;功能碼02h

      MOV 2FH,#00H ;起始開(kāi)關(guān)量地址

      MOV 30H,#00H ;起始寄存器地址

      MOV 31H,#00H ;寄存器個(gè)數(shù),最多25個(gè)

      MOV 32H,#01H

      ORL AUX,#80H ;p1.6p1.7當(dāng)串口

      CLR EA

      SETB P3.7

      MOV CRCCD,#06H

      LCALL CRC

      MOV R2,#08H

      MOV R0,#2DH;2CH

      FJ1: MOV SBUF,@R0

      JNB TI,$

      CLR TI

      INC R0

      DJNZ R2,FJ1

      LCALL PDOK1 ;讀返回的DI,DO值

      JNZ FJ0 ;如果沒(méi)有檢測(cè)到OK,重復(fù)發(fā)

      CALL DELAY

      DJNZ B,FJ4

      FJ0: SETB FLAG_1

      SETB EA

      RET

      51單片機(jī)讀V存儲(chǔ)區(qū)數(shù)據(jù)的子程序如下:

      FFJ03: MOV B,#10H ;'讀V存儲(chǔ)區(qū)數(shù)據(jù)

      FJ7: MOV 2DH,#0CH ;地址

      MOV 2EH,#03H ;功能碼03h

      MOV 2FH,#00H ;起始寄存器地址高位

      MOV 30H,#32H ;起始寄存器地址低位

      MOV 31H,#00H ;寄存器個(gè)數(shù),最多25個(gè)

      MOV 32H,#04H

      ORL AUX,#80H ;p1.6p1.7當(dāng)串口

      CLR EA

      SETB P3.7

      MOV CRCCD,#06H

      LCALL CRC

      MOV R2,#08H

      MOV R0,#2DH

      AJMP FJ1

      51單片機(jī)讀S7-200輸出狀態(tài)Q0.0的子程序如下:

      FFJ033: MOV B,#10H ;讀'Q狀態(tài)

      FJ9: MOV 2DH,#0CH ;地址;;;;;;;;;;;;

      MOV 2EH,#01H ;功能碼02h

      MOV 2FH,#00H ;起始開(kāi)關(guān)量地址

      MOV 30H,#00H ;起始寄存器地址

      MOV 31H,#00H ;寄存器個(gè)數(shù),最多25個(gè)

      MOV 32H,#01H

      ORL AUX,#80H ;p1.6p1.7當(dāng)串口

      SETB P3.7

      CLR EA

      MOV CRCCD,#06H

      LCALL CRC

      MOV R2,#08H

      MOV R0,#2DH

      AJMP FJ1

      PDOK1: MOV R0,#35H

      MOV R2,#11D

      CLR P3.7

      SETB REN

      FXL2: CLR RI ;軟件清除串口中斷標(biāo)記

      LCALL PDRI1 ;等待下一個(gè)串口數(shù)據(jù)

      MOV A,SBUF ;將串口寄存器中接收到de數(shù)據(jù)給A

      MOV @R0,A

      INC R0

      DJNZ R2,FXL2

      MOV R0,#0C0H

      CLR RI ;軟件清除串口中斷標(biāo)記

      LCALL PDRI1 ;等待下一個(gè)串口數(shù)據(jù)

      MOV A,SBUF ;將串口寄存器中接收到de數(shù)據(jù)給A

      MOV @R0,A ;CRC存放首址

      INC R0

      CLR RI ;軟件清除串口中斷標(biāo)記

      LCALL PDRI1 ;等待下一個(gè)串口數(shù)據(jù)

      MOV A,SBUF ;將串口寄存器中接收到de數(shù)據(jù)給A

      MOV @R0,A ;CRC校驗(yàn)碼第二字節(jié)

      MOV R0,#35H ;對(duì)發(fā)來(lái)的數(shù)據(jù)進(jìn)行CRC校驗(yàn),

      MOV CRCCD,#11D;

      LCALL CRC1

      MOV R0,#0C0H ;AAH-ABH存放下位機(jī)發(fā)來(lái)的CRC校驗(yàn)碼

      MOV A,@R0 ;CRC校驗(yàn)碼首字節(jié)

      CJNE A,06H,SB1 ;CRC校驗(yàn)碼首地址 06H=R6

      INC R0

      MOV A,@R0 ;CRC校驗(yàn)碼第二字節(jié)

      CJNE A,07H,SB1 ;07H=R7

      MOV A,#0FFH ;檢測(cè)到OK,對(duì)A置1

      AJMP SB2

      SB1: CLR A ;沒(méi)有檢測(cè)到OK,對(duì)A清零

      SB2: CLR RI ;清除有串口數(shù)據(jù)標(biāo)志

      SETB EA

      RET

      一、S7-200程序

      1、 安裝Modbus協(xié)議庫(kù)

      下載Modbus協(xié)議庫(kù),打開(kāi)目錄,點(diǎn)擊

      S7-200  CPU上的通信口Port0支持Modbus  RTU協(xié)議

      進(jìn)行安裝。

      S7-200  CPU上的通信口Port0支持Modbus  RTU協(xié)議

      安裝成功后左側(cè)瀏覽條的“庫(kù)”中如下圖:

      S7-200  CPU上的通信口Port0支持Modbus  RTU協(xié)議

      2、S7-200程序

      S7-200程序如下圖,首先調(diào)用MBUS_INIT模塊,初始化有關(guān)參數(shù),如波特率,奇偶校驗(yàn)等要與主機(jī)一致。每一項(xiàng)的含義如下所示:

      S7-200  CPU上的通信口Port0支持Modbus  RTU協(xié)議

      Mode: 模式選擇,啟動(dòng)/停止MODBUS,1=啟動(dòng);0=停止

      Address: 從站地址,MODBUS從站地址,取值1~247

      Baud: 波特率,可選1200,2400,4800,9600,19200,38400,57600,115200

      Parity: 奇偶校驗(yàn),0=無(wú)校驗(yàn);1=奇校驗(yàn);2=偶校驗(yàn)

      Delay: 延時(shí),附加字符間延時(shí),缺省值為0

      MaxIQ: 最大I/Q位,參與通信的最大I/O點(diǎn)數(shù),S7-200的I/O映像區(qū)為128/128,缺省值為128

      MaxAI: 最大AI字?jǐn)?shù),參與通信的最大AI通道數(shù),可為16或32

      MaxHold: 最大保持寄存器區(qū),參與通信的V存儲(chǔ)區(qū)字(VW)

      HoldStart: 保持寄存器區(qū)起始地址,以&VBx指定(間接尋址方式)

      Done: 初始化完成標(biāo)志,成功初始化后置1

      Error: 初始化錯(cuò)誤代碼

      在本例子中,設(shè)置從站地址為3

      Port0 通訊波特率為9600

      無(wú)校驗(yàn)

      可以使用的S7-200最大數(shù)字量輸入輸出點(diǎn)數(shù)為128

      可以使用的S7-200最大模擬量輸入寄存器字?jǐn)?shù)為32

      可以使用的V區(qū)寄存器地址字?jǐn)?shù)為100, 起始地址為VB1000

      SM0.0是s7-200的特殊寄存器,RUN監(jiān)控,PLC在運(yùn)行狀態(tài)時(shí),SM0.0總為ON。

      本程序初始化完成后,還調(diào)用了MBUS_SLAVE子程序,它屬于協(xié)議庫(kù)的一部分。此程序是加密的。如下圖左面有一個(gè)鎖,在“查看”選屬性后會(huì)彈出密碼保護(hù)如下圖。

      S7-200  CPU上的通信口Port0支持Modbus  RTU協(xié)議

      S7-200  CPU上的通信口Port0支持Modbus  RTU協(xié)議

      S7-200  CPU上的通信口Port0支持Modbus  RTU協(xié)議

      注意:本例子中,Modbus RTU 從站指令使用的庫(kù)存儲(chǔ)為VB0---VB779,這段寄存器地址不能再被程序中的任何指令使用,包括MBUS_INIT 和 MBUS_SLAVE 指令在內(nèi)。

        本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評(píng)論

        發(fā)表

        請(qǐng)遵守用戶 評(píng)論公約

        類似文章 更多