• {{item.name}}
{{item.name}}
{{item2.name}}
更多

PEEK和POKE的功能

star star star star star
0 分
  • 软件编程
  • 使用操作
  • S7-1500
  • PEEK
  • POKE
  • 寻址指令
发布时间:2024年01月18日
  • 0
  • 14
本章节介绍了SCL中PEEK和POKE的功能、适用条件、语法以及使用示例的内容。

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指令使用示例

  • 评论
更多
  • 分享

    扫码分享

扫码进入移动端

信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。