我们在做项目中,经常需要把背景数据块(DB块)里面的数据传送到其他西门子PLC的背景数据块(DB块)里,这下就需要用到批量传送。
KEEK :读取存储器指令
“读取存储地址”指令用于在不指定数据类型的情况下从存储区读取存储地址。
使用以下语法更改指令的数据类型:
PEEK_();
使用存储区 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; |
POKE:写入存储器地址指令
“写入存储地址”指令用于在不指定数据类型的情况下将存储地址写入标准存储区。
使用存储区 16#84:DB
如果将数据块用作存储区且在创建程序代码时未知,则可通过 EN/ENO 机制识别可能的访问错误:
SCL示例原理:
POKE(AREA := 16#84, |
DBNUMBER := 1, |
BYTEOFFSET := 2, |
VALUE := BYTE#7, |
ENO => ENO); |
以上我们简单的了解PEEK指令 和POKE指令的用法及注意事项,下面我们打开软件:
1.)组态一个PLC并添加两个背景数据块(DB)及FB程序需要的变量接口和数据类型声明
2.)调用PEEK指令:
3.)设置PEEK指令必要参数:
4.)调用POKE指令:
5.)我们开始进入SCL程序编写:
6.)我们在线进行测试,用DB1数据块数组A写入DB2数据块数组B里面:
(DB1数组写入时不清0状态)
7.)结构体多种数据的写入(还是在DB1/DB2数据块中进行测试):
(结构数据类型的测试)
文章简单的介绍了数据块与数据块的批量传送数据,其中用数组与数据传送,用结构体数据与结构体数据传送,DB2数据块正常结束DB1写入的数据。由于时间关系及作者自身水平有限,文章中难免介绍有错的地方,望广大朋友,专家,学者多多指导