PEEK:读取存储地址
“读取存储地址”指令用于在不指定数据类型的情况下从存储区读取存储地址。
使用以下语法更改指令的数据类型:
PEEK_<data type>();
使用存储区 16#84:DB
如果将数据块用作存储区且在创建程序代码时未知,则可通过 EN/ENO 机制识别可能的访问错误:
SCL |
---|
#Peeker := PEEK(AREA := 16#84, |
DBNUMBER := 1, |
BYTEOFFSET := 2, |
ENO => ENO); |
IF NOT ENO THEN; |
#Peeker := 16#ffff; |
END_IF; |
参数
下表列出了该指令的参数:
参数 | 声明 | 数据类型 | 存储区 | 说明 |
---|---|---|---|---|
AREA | Input | BYTE | I、Q、M、D | 可以选择以下区域:
|
DBNUMBER | Input | DINT、DB_ANY | D | 如果 AREA = DB,则为数据块数量,否则为“0” |
BYTEOFFSET | Input | DINT | I、Q、M、D | 待读取的地址 仅使用 16 个最低有效位。 |
_<数据类型> | 位字符串 | - | 函数值的数据类型:
| |
函数值 | 位字符串 | I、Q、M、D | 指令的结果 |
说明 如果要读取输入、输出或位存储区中的存储地址,则必须将参数 DBNUMBER 的值设置为“0”,否则指令将无效。 |
示例
以下示例说明了该指令的工作原理:
SCL |
---|
"Tag_Result1" := PEEK(AREA := "Tag_Area", |
DBNUMBER := "Tag_DBNumber", |
BYTEOFFSET := "Tag_Byte"); |
SCL |
---|
"Tag_Result2" := PEEK_WORD(AREA := "Tag_Area", |
DBNUMBER := "Tag_DBNumber", |
BYTEOFFSET := "Tag_Byte"); |
下表将通过具体的操作数值对该指令的工作原理进行说明:
参数 | 操作数 | 值 |
---|---|---|
AREA | Tag_Area | 16#84 |
DBNUMBER | Tag_DBNumber | 5 |
BYTEOFFSET | Tag_Byte | 20 |
函数值 | Tag_Result1 | 字节值“20” |
函数值 | Tag_Result2 | 字值“20” |
该指令从数据块“5”中的“Tag_Byte”操作数内读取地址值“20”,并将结果作为“Tag_Result”操作数的函数值返回。
§ PEEK指令只从存储器地址中读取数据,不指定数据类型 ;寻址结果通过赋值语句传递给变量。
索引寻址PEEK读M区地址
索引寻址PEEK读DB