單詞“peek”在英語中表示“偷看,瞥一眼”,在計算機編程中表示“讀取數據”。
在西門子SCL編程中,PEEK指令可以用來讀取輸入緩存區(I)、輸出緩存區(Q)、位存儲區(M)及數據塊(DB)中的數據,常用作間接尋址。今天這篇文章,我們來學習下PEEK指令。
PEEK指令支持以位(Bit)、字節(Byte)、字(Word)及雙字(Double Word)的形式進行操作,如果PEEK指令的後面不指定數據類型,則默認為對字節型數據進行操作。可以在【基本指令(Basic instructions)】-【移動操作(move operations)】-【讀寫内存(Read/Write memory)】中找到該指令,如下圖:
在FB/FC中添加PEEK指令并将其賦值給字節型變量temp_byte的代碼如下圖:
可以看到,PEEK指令有三個參數:area ,dbNumber及byteOffset,各參數的含義如下:
1、area:字節型數據(Byte),用來指定訪問存儲區的類型。16#81表示輸入緩存區(I)、16#82表示輸出緩存區(Q)、16#83表示位存儲區(M)、16#84表示數據塊(DB)、16#1表示外設輸入(PI)。其中,16#84隻能訪問“标準的”數據塊;16#1對外設的讀取,隻能在S7-1500系列PLC中使用。
2、dbNumber:雙整型數據(DINT),用來指定數據塊的編号,僅在訪問數據塊時使用;訪問其它存儲區時設置為0;
3、byteOffse:雙整型數據(DINT),用來指定讀取數據的地址偏移量;
舉個例子:
假設我們要讀取輸入緩存區(I)的第9個字節到位存儲區(M)的第20個字節,則可以使用如下的代碼:
PEEK_BOOL指令來讀取布爾型數據,其返回值是布爾型變量。從指令列表中添加PEEK_BOOL指令的初始狀态如下:
該指令有四個參數:
area,dbNumber,byteOffset和bitOffset。
前三個參數的含義與PEEK指令中介紹的相同,第四個參數bitOffset表示要讀取的位的偏移,其取值範圍為0~7。
舉個例子,假設我們要讀取M0.7的值,并将其賦值給Q0.0,則可以使用如下的代碼:
PEEK_WORD指令用來讀取字(WORD)類型數據。
假設我們要讀取DB100的第20個字節開始的字到MW10中,則可以使用如下的代碼:
PEEK_DWORD指令用來讀取雙字(Double WORD)類型數據。
假設我們要讀取DB100的第10個字節開始的雙字到MD0中,則可以使用如下的代碼:
好了,關于西門子SCL語言中的PEEK指令就先介紹到這裡。
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!