S7-1500 SCL PEEK 和 POKE 指令使用
PEEK 和 POKE 指令,可在不指定數據類型的情況下對 Input區、Output區、M 存儲區、DB塊和PI/Q(物理輸入/輸出,僅S7-1500支持)讀取或寫入。通過 POKE_BLK 指令,還可以實現數據區域的復制或移動。
指令適用條件:
只能用于 SCL 編程語言;
適用操作存儲區域,I、Q、M、DB、PI/Q(僅S7-1500支持);
DB必須是非優化訪問的塊。
以下內容使用TIA V17 Pro軟件測試。
PEEK 指令
PEEK 指令用來讀取存儲區數據,支持位、字節、字、雙字、長字操作。PEEK指令將獲取的數據值以返回值的方式賦值給對應的變量。
1、指令語法
新建SCL程序塊FB1,在基本指令->移動操作->讀/寫存儲區內,調用PEEK指令。PEEK指令的語法,如圖1所示。
圖1. PEEK指令語法
PEEK指令管腳參數說明:
參數 | 數據類型 | 含義 |
area | BYTE |
//可以選擇以下區域: 16#81:輸入 16#82:輸出 16#83:位存儲區 16#84:DB 16#1:外設輸入(僅 S7-1500) |
dbNumber | DINT、DB_ANY | //如果 AREA = DB,則為數據塊數量,否則為“0” |
byteoffset | DINT | //待讀取的地址 |
bitoffset | INT | //待讀取的位 |
函數值 | BOOL、BYTE、WORD、DWORD、LWORD | //PEEK指令讀取返回值 |
需要注意的是,在指令列表中只有PEEK和PEEK_BOOL兩個指令,PEEK相當于PEEK_BYTE。
當需要其他使用PEEK指令時,可以在將指令拖拽到程序編輯區后手動添加后綴“_WORD”或“_DWORD”,或者在程序中直接輸入指令然后通過選擇的方式選定,如圖2所示。
圖2. 輸入PEEK指令
2、示例程序
以PEEK_BOOL和PEEK_LWORD指令測試示例,如圖3所示。
圖3. PEEK指令使用示例
POKE 指令
1、指令語法
POKE 指令用來對存儲區數據寫入操作。不僅支持位、字節、字、雙字、長字操作,還可以實現區域數據移動操作。
POKE 指令,可在指令內直接將結果傳遞給對應變量。
(1) POKE指令
新建SCL程序塊FB1,在基本指令->移動操作->讀/寫存儲區內,調用POKE指令。POKE指令的語法,如圖4所示。
圖4. POKE指令語法
POKE指令管腳參數說明:
參數 | 數據類型 | 含義 |
area | BYTE |
//可以選擇以下區域: 16#81:輸入 16#82:輸出 16#83:位存儲區 16#84:DB 16#2:外設輸出(僅 S7-1500) |
dbNumber | DINT、DB_ANY | //如果 AREA = DB,則為數據塊數量,否則為“0” |
byteoffset | DINT | //待寫入的地址 |
bitoffset | INT | //待寫入的位 |
value | BOOL、BYTE、WORD、DWORD、LWORD | //待寫入的值 |
說明:沒有POKE_BYTE、POKE_WORD、POKE_DWORD、POKE_LWORD指令。實現寫入字節、字、雙字、長字,取決于待寫入的變量value的數據類型,如圖4所示,不同的數據類型寫入的結果不同。
(2) POKE_BLK指令
指令功能:將源數據塊、I/O 或存儲區從 byteOffset 開始的"count"個字節,寫入目標數據塊、I/O 或存儲區 byteOffset 開始的區域。
新建SCL程序塊FB1,在基本指令->移動操作->讀/寫存儲區內,調用POKE_BLK指令。POKE_BLK指令的語法,如圖5所示。
圖5. POKE_BLK指令語法
POKE_BLK指令管腳參數說明:
參數 | 數據類型 | 含義 |
area_src | BYTE |
//可以在源存儲區中選擇以下區域: 16#81:Input 16#82:Output 16#83:位存儲區 16#84:DB |
dbNumber_src | DINT、DB_ANY | //如果 AREA = DB,則為源存儲區中的數據塊數量,否則為“0” |
byteoffset_src | DINT | //源存儲區中待讀取的地址 |
area_dest |
可以在目的存儲區中選擇以下區域: 16#81:Input 16#82:Output 16#83:位存儲區 16#84:DB |
|
dbNumber_dest | //如果 AREA = DB,則為目的存儲區中的數據塊數量,否則為“0” | |
byteoffset_dest | INT | //目的存儲區中待寫入的地址 |
count | DINT | //待復制的字節數目 |
注意:dbNumber_src 和 dbNumber_dest 參數必須屬于同一種數據類型。即,兩個變量必須為 DINT 數據類型或 DB_ANY 數據類型。
2、示例程序
(1) POKE 指令示例
POKE_BOOL和POKE指令測試示例,如圖6所示。
圖6. POKE指令使用示例
(2) POKE_BLK指令
POKE_BLK指令測試示例,如圖7所示。
圖7. POKE_BLK指令使用示例
審核編輯:劉清
-
編程語言
+關注
關注
10文章
1942瀏覽量
34707 -
SCL
+關注
關注
1文章
239瀏覽量
17057 -
S7-1500
+關注
關注
3文章
300瀏覽量
6392
原文標題:S7-1500 SCL PEEK 和 POKE 指令使用
文章出處:【微信號:gh_a8b121171b08,微信公眾號:機器人及PLC自動化應用】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論