西門子S7-1200 PLC的PEEK指令使用詳解
發(fā)布時間:2024-04-03 16:03 [ 我要自學網(wǎng)原創(chuàng) ] 發(fā)布人: 快樂小女

門子現(xiàn)在正大力推廣標準化編程方式,已推出不少編程框架,是未來編程的趨勢,其中開始的環(huán)節(jié)就是將輸入點輸出點映射到DB塊中,這樣做的好處是可以直接掃描過程映像區(qū),縮短掃描時間,提高了程序的運行效率,也符未來編程合符號尋址的趨勢。批量的IO映射可以使用PEEKPOKE這兩個指令,下面對這兩個指令的用法進行介紹。

一、 指令的適用條件

1、 只能用在SCL語言編程環(huán)境;

2、 軟件從TIA PORTAL V11 SP2支持該指令;

3、 S7-1200 CPU 固件從 V2.2支持該指令;

4、 適用操作數(shù),IQ、MDB;

5、 DB必須是非優(yōu)化訪問的塊。

二、 PEEK指令介紹

1. 指令格式

指令格式如下圖1所示:

1

PEEK 指令用來讀取輸入(I)、輸出(Q)、存儲器(M)或數(shù)據(jù)塊(DB)變量,支持位、字節(jié)、字、雙字操作。PEEK指令將獲取的數(shù)據(jù)值以返回值的方式賦值給對應(yīng)的變量。需要注意的是,在指令列表紅框中只有PEEKPEEK_BOOL兩個指令,而PEEK相當于PEEK_BYTE,當需要使用PEEK_WORD或者PEEK_DWORD,可以在將指令拖拽到程序編輯區(qū)后手動添加后綴,或者在程序中直接輸入指令然后通過選擇的方式選定,如下圖2所示:

2

序號1的指令為讀取字節(jié)變量的PEEK指令,序號2的指令為讀取字變量的PEEK指令,輸入的方式為在序號1的基礎(chǔ)上在PEEK后輸入下劃線會彈出數(shù)據(jù)類型的選項,包括BYTEWORD、DWORD,這里選擇WORD。也可直接在下劃線后輸入WORDDWORD的輸入格式亦是如此。圖中的紅色波浪線當填入正確的變量后會自動消失。

2. PEEK用法解析

如上圖2所示,括號內(nèi)的元素即為PEEK指令的形參和實參。出了PEEK_BOOL指令有四個輸入?yún)?shù),其余三個均為3個,下面分別加以介紹。

PEEK_BYTE(讀字節(jié)變量,指令中BYTE 類型可省略,指令格式。)

PEEKarea:=_byte_in, // 尋址區(qū)域,BYTE類型

dbnumber:=_dint_in, // DB塊塊號,非DB塊尋址時填0DINT類型或DB ANY類型

byteoffset:=_dint_in);// 被讀取變量的字節(jié)地址,DINT類型

PEEK_WORD(讀字變量,指令格式。)

PEEKarea:=_byte_in, // 尋址區(qū)域,BYTE類型

dbnumber:=_dint_in, // DB塊塊號,非DB塊尋址時填0,DINT類型或DB ANY類型

byteoffset:=_dint_in);// 被讀取變量的字節(jié)地址,DINT類型

PEEK_DWORD(讀字變量,指令格式。)

PEEKarea:=_byte_in, // 尋址區(qū)域,BYTE類型

dbnumber:=_dint_in, // DB塊塊號,非DB塊尋址時填0DINT類型或DB ANY類型

byteoffset:=_dint_in);// 被讀取變量的字節(jié)地址,DINT類型

PEEK_BOOL(讀變量,指令格式。)

PEEKarea:=_byte_in, // 尋址區(qū)域,BYTE類型

dbnumber:=_dint_in, // DB塊塊號,非DB塊尋址時填0,DINT類型或DB ANY類型

byteoffset:=_dint_in // 被讀取變量的字節(jié)地址

byteoffset:=_dint_in);// 被讀取變量的位地址,INT類型

參數(shù)area,根據(jù)所讀區(qū)域的不同,分為四種類型,如下表1所示:

area

類型

說明

16#81

I

輸入變量區(qū)

16#82

Q

輸出變量區(qū)

16#83

M

中間變量區(qū)

16#84

DB

數(shù)據(jù)塊變量區(qū)

1

三、 PEEK使用例程

1、為了使大家能掌握該指令的使用,下面舉例加以說明,以博圖V16軟件進行操作。將數(shù)據(jù)區(qū)DB1中的A的內(nèi)容讀到B中,C的內(nèi)容讀到D中,E的狀態(tài)讀到F中。

打開博圖V16,新建一個名為PEEK指令測試的項目,添加一臺S7-1215CCPU創(chuàng)建數(shù)據(jù)塊DB1,分別建立A、B、C、D、EF變量,如下圖3所示:

3

需要注意的是,一定要將DB1的優(yōu)化塊訪問的屬性勾掉,否則無法在PEEK指令中使用。操作步驟為右擊項目樹下的DATADB在彈出的選項列表中選擇屬性,又會彈出個對話框。勾掉優(yōu)化的塊訪問前面的勾,再次選中DB1,點擊工具欄的編譯,如下圖4所示:

4

由上圖最后一張圖可見,當勾選掉優(yōu)化塊的屬性并點擊編譯后,DB塊就會顯示出便宜地址列。新建名稱為peektestFC功能,語言選擇scl,點確定。在打開的FC1程序編輯區(qū)輸入三條peek指令,peek指令在指令列表的基本指令-移動操作-/寫存儲器下。如下圖5所示:

圖5

上圖中序號1和序號2的代碼都加了轉(zhuǎn)換指令,分別是將字轉(zhuǎn)換為整數(shù)、雙字轉(zhuǎn)換為雙整數(shù),因為A、BC、D的數(shù)據(jù)類型分別為INTDINT如果不用轉(zhuǎn)換指令的話,指令下方會出現(xiàn)黃色波浪線以示報警。序號3為位變量的讀取。上述指令均是讀取DB塊內(nèi)的變量,而且都在同一個數(shù)據(jù)塊DB1,所以area16#84,dbNumber1數(shù)據(jù)A的字節(jié)地址偏移為0,數(shù)據(jù)C的字節(jié)地址偏移為4,數(shù)據(jù)E的字節(jié)地址偏移為12,位偏移為0,所以在byteoffsetbitoffset處分別填上上述數(shù)據(jù)。偏移量如下圖6所示:

6

2、仿真測試

仿真過程及測試的結(jié)果如下圖7所示:

7

7后面兩張圖可以看出測試的結(jié)果,使DB1處于監(jiān)控狀態(tài),A、C、E分別輸入456、-45678、true,BD、F也得到相應(yīng)的值,當把AE改為0f

若有收獲,就點個贊吧!

S7-1200SCL入門基礎(chǔ)教程
我要自學網(wǎng)商城 ¥40 元
進入購買
文章評論
0 條評論 按熱度排序 按時間排序 /350
添加表情
遵守中華人民共和國的各項道德法規(guī),
承擔因您的行為而導致的法律責任,
本站有權(quán)保留或刪除有爭議評論。
參與本評論即表明您已經(jīng)閱讀并接受
上述條款。
V
特惠充值
聯(lián)系客服
APP下載
官方微信
返回頂部
分類選擇:
電腦辦公 平面設(shè)計 室內(nèi)設(shè)計 室外設(shè)計 機械設(shè)計 工業(yè)自動化 影視動畫 程序開發(fā) 網(wǎng)頁設(shè)計 會計課程 興趣成長 AIGC