PEEK 指令
PEEK 指令用来读取存储区数据,支持位、字节、字、双字、长字操作。PEEK指令将获取的数据值以返回值的方式赋值给对应的变量。
1、指令语法
新建SCL程序块FB1,在基本指令->移动操作->读/写存储区内,调用PEEK指令。PEEK指令的语法,如图1所示。
EEK指令管脚参数说明:
参数 | 数据类型 | 含义 |
area |
BYTE |
//可以选择以下区域:
|
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_BOOL和PEEK_LWORD指令测试示例,如图3所示。
POKE 指令
1、指令语法
POKE 指令用来对存储区数据写入操作。不仅支持位、字节、字、双字、长字操作,还可以实现区域数据移动操作。
POKE 指令,可在指令内直接将结果传递给对应变量。
(1) POKE指令
新建SCL程序块FB1,在基本指令->移动操作->读/写存储区内,调用POKE指令。POKE指令的语法,如图4所示。
POKE指令管脚参数说明:
参数 | 数据类型 | 含义 |
area |
BYTE |
//可以选择以下区域:
|
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所示。
POKE_BLK指令管脚参数说明:
参数 | 数据类型 | 含义 |
area_src |
BYTE |
//可以在源存储区中选择以下区域:
|
dbNumber_src |
DINT、DB_ANY |
//如果 AREA = DB,则为源存储区中的数据块数量,否则为“0” |
byteoffset_src |
DINT |
//源存储区中待读取的地址 |
area_dest | 可以在目的存储区中选择以下区域:
|
|
dbNumber_dest |
//如果 AREA = DB,则为目的存储区中的数据块数量,否则为“0” |
|
byteoffset_dest |
INT |
//目的存储区中待写入的地址 |
count |
DINT |
//待复制的字节数目 |
注意:dbNumber_src 和 dbNumber_dest 参数必须属于同一种数据类型。即,两个变量必须为 DINT 数据类型或 DB_ANY 数据类型。
2、示例程序
(1) POKE 指令示例
POKE_BOOL和POKE指令测试示例,如图6所示。
(2) POKE_BLK指令
POKE_BLK指令测试示例,如图7所示。
标签:Peek,存储,POKE,16,DB,____,PEEK,博图,指令 From: https://www.cnblogs.com/ZBO123/p/17967742