1. 加入收藏 在線留言 聯系我們
        關注微信
        手機掃一掃 立刻聯系商家
        全國服務熱線13185520415
        公司新聞
        西門子S7-1200編程入門教程之PEEK/POKE使用
        發布時間: 2024-03-25 14:47 更新時間: 2024-12-02 08:00
        觀看西門子S7-1200編程入門教程之PEEK/POKE使用視頻

          在工業控制中,經常會使用到變址運算的功能。那在S7-1200中,我們需要怎么實現變址的效果呢?PEEK/POKE指令為我們提供了一個實現方法。

            讓我們先認識一下PEEK/POKE指令吧。

            在S7-1200里面,PEEK/POKE指令僅在SCL中可用。指令位于“基本指令”--“移動操作”--“讀/寫存儲器”中。如“圖1”所示。


        圖1 PEEK/POKE指令位置

            PEEK:讀取存儲地址,可讀取Byte、Word、Dword類型的數據寄存器;

            PEEK_BOOL:讀取位存儲地址,可讀取Bool類型的數據寄存器;

            指令格式如下:

            #Peeker := PEEK(AREA := 16#84,

                                        DBNUMBER := 1,

                                        BYTEOFFSET := 2);

          #Peeker_BOOL := PEEK_BOOL(AREA := 16#84,

                                                        DBNUMBER := 1,

                                                        BYTEOFFSET := 2,

                                                        BITOFFSET := 1);   

         其中#Peeker、#Peeker_BOOL為PEEK指令讀取返回出來的寄存器值。

            AREA為讀取的寄存器區域:16#81對應輸入I區;16#82對應輸出Q區;16#83對應位存儲區M區;16#84對應數據塊DB區。

            DBNUMBER 為讀取的數據塊DB編號。當AREA為“16#84”時,如讀取“DB10”,則“DBNUMER”為10。如果AREA不是“16#84”,則DBNUMER應設為“0”。

            BYTEOFFSET為字節偏移量,決定讀取寄存器的起始地址。如讀取DB10.DBD56,則BYTEOFFSET為“56”。

            BITOFFSET為位偏移量,PEEK_BOOL指令中需要填寫。如讀取DB1.DBX5.3,則BYTEOFFSET為“5”,BITOFFSET為“3”。


            POKE(AREA := 16#84,

                        DBNUMBER := 1,

                        BYTEOFFSET := 2,

                        VALUE := BYTE#7);

            POKE(AREA := 16#84,

                    DBNUMBER := 1,

                    BYTEOFFSET := 2,

                    BITOFFSET := 4,

                    VALUE := TRUE);

           其中AREA、DBNUMBER、BYTEOFFSET、BITOFFSET這些引腳和PEEK指令是一致的。VALUE為寫入到寄存器中的值。


            下面我們以一個案例來講解PEEK和POKE的使用吧。


            例程1:求和DB1數據塊中,從DB1.DBW0~DB1.DBW18十個字的數據之和。

                   首先,我們新建一個DB1,并在DB1里添加10個INT變量,如圖2所示。由于PEEK需要指向juedui地址,因此需要將DB塊屬性中的“優化的塊訪問”取消。


        圖2 數據塊DB1內容

            然后,我們新建一個FC功能,來編寫求和程序,求和程序代碼如下圖所示。


        圖3 PEEK求和程序代碼

            Zui后,運行看看我們的結果吧。

        圖片

        圖4 PEEK求和程序運行

            

            例程2:將M0.5~M1.2六個位地址值傳送至DB2.DBX0.0~DB2.DBX0.5中;

                同例1一樣方法新建DB2。

                新建一個FC功能,編寫程序,程序代碼如下圖所示。


        圖5 PEEK/POKE數據批量傳送程序

        程序運行結果如下:

        圖片

        圖6 PEEK/POKE數據批量傳送運行結果


        聯系方式

        • 電  話:13510737515
        • 聯系人:董海波
        • 手  機:13185520415
        • 微  信:13185520415