打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
参照例子,SCL中PEEK和POKE命令的使用
userphoto

2022.10.20 江苏

关注

使用西门子 SCL 编程语言的 PEEK 和 POKE 指令,可以实现对 I/O、M 存储器和数据块的读取或写入。 而通过 POKE_BLK 指令,还可以实现数据区域的复制或移动。

指令适用条件:

  • 只用于 SCL 编程语言
  • 软件从TIA PORTAL V11 SP2起;
  • S7-1200 CPU 固件从 V2.2起;
  • 适用操作数,I、Q、M、DB;
  • DB必须是非优化访问的块

一、PEEK指令

PEEK 指令用来读取输入(I)、输出(Q)、存储器(M)或数据块(DB)变量,支持位、字节、字、双字操作。PEEK指令将获取的数据值以返回值的方式赋值给对应的变量。

需要注意的是,在指令列表中只有PEEK和PEEK_BOOL两个指令,而PEEK相当于PEEK_BYTE,当需要使用PEEK_WORD或者PEEK_DWORD,可以在将指令拖拽到程序编辑区后手动添加后缀,或者在程序中直接输入指令然后通过选择的方式选定。

PEEK_BOOL

命令的转换

输入输出选取功能表

对于实数,则需要经过DWORD---REAL的转换。

先读取双字,再转换成实数

二、POKE指令

POKE 指令可以用来对输入(I)(一般不使用)、输出(Q)、存储器(M)或数据块(DB)变量地址进行写操作,不仅支持位、字节、字、双字操作,还可以区域操作,实现区域数据移动。POKE 指令,可在指令体内将结果传递给对应变量。

POKE指令和PEEK指令不同,没有POKE_BYTE、POKE_WORD、POKE_DWORD指令,实现写入字节、字、双字,取决于待写入的变量value的数据类型,不同的数据类型写入的结果不同。

POKE_BLK是多出来的一个命令,将源数据块、I/O 或存储区从 byteOffset 开始的“count”个字节,写入目标数据块、I/O 或存储区 byteOffset 开始的区域。

POKE_BLK

与PEEK相同

三、实际应用

在实际项目中,需要经常读取IO的状态,已完成一定的报警,显示等功能,那么用这个PEEK和POKE功能,就明显的效率加快好多,特别是有IO点规范设计习惯的人员。

例如:在FC1DIO对照功能,在里面可以编程

临时变量i变量设定为Temp中的int类型

for #i:=0 to 15 do //循环赋值;

DB1.array1[#i]:=PEEK_BOOL(area:=#81; // I变量;

dbnumber:=0;//除了DB块,其他的都设置为0;

byteoffset:=#i/8; //除以8的商作为字节的地址;

bitoffset:=#i MOD 8;//余数作为位的地址;

end_for;

起始地址I0.0的16个I点的值,分别送入DB1的16个Bool的数组的每一个元素,对应方式:

  • I0.0 -- > 元素0
  • I0.1 -- > 元素1
  • .
  • .
  • I0.7 -- > 元素7
  • I1.0 -- > 元素8
  • I1.1 -- > 元素9
  • .
  • .
  • I1.7 -- > 元素16

通过上述对应关系,可以发现规律,数组元素下标从0开始逐个加1,对应的I点输入地址的位变量是从0到7再往复,而字节地址是先是8个0,然后是1,所以总结是字节地址是下标整除8的商,位地址是下标整除8的余数,换成编程语言就是字节地址是下标/8,位地址是下标MOD8。然后就可以利用FOR循环来快速实现逐个位的赋值。

Main程序

FC功能

DB数据

对输入进行强制

感叹号为强制激活

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
西门子SCL简介寻址
西门子SCL编程入门教程连载(11)-POKE指令
想学好PLC编程,要学会这个指令的用法!
西门子 S7-1200PLC编程 数组的使用方法
S7-SCL编写FIFO程序分享
西门子PLC数据类型——指针3
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服