技成培训网 技成学习APP 技成工具箱 技成企业服务

欢迎回到技成培训网

技成培训网

电工题库宝典

技成电工课堂

PLC练习题

技成PLC课堂

变频器故障查询

技成PLC学吧

伺服驱动故障查询

技成PLC网校

当前位置:技成首页 > 文章中心 > 西门子PLC > 西门子S7-1200 PLC的PEEK指令使用详解

西门子S7-1200 PLC的PEEK指令使用详解

王曾 发布于2023-06-01 11:27 139 4 标签:西门子PLC,西门子S7-1200PLC,PEEK指令

导读:

西门子现在正大力推广标准化编程方式,已推出不少编程框架,是未来编程的趋势,其中开始的环节就是将输入点输出点映射到DB块中,这样做的好处是可以直接扫描过程映像区,缩短扫描时间,提高了程序的运行效率,也符未来编程合符号寻址的趋势。批量的IO映射可以使用PEEKPOKE这两个指令,下面对这两个指令的用法进行介绍。 免费试学PLC精品教程

一、 指令的适用条件

1、 只能用在SCL语言编程环境;

2、 软件从TIA PORTAL V11 SP2支持该指令;

3、 S7-1200 CPU 固件从 V2.2支持该指令;

4、 适用操作数,IQMDB

5、 DB必须是非优化访问的块。

二、 PEEK指令介绍

1. 指令格式

指令格式如下图1所示:

1

PEEK 指令用来读取输入(I)、输出(Q)、存储器(M)或数据块(DB)变量,支持位、字节、字、双字操作。PEEK指令将获取的数据值以返回值的方式赋值给对应的变量。需要注意的是,在指令列表红框中只有PEEKPEEK_BOOL两个指令,而PEEK相当于PEEK_BYTE,当需要使用PEEK_WORD或者PEEK_DWORD,可以在将指令拖拽到程序编辑区后手动添加后缀,或者在程序中直接输入指令然后通过选择的方式选定,如下图2所示:

2

序号1的指令为读取字节变量的PEEK指令,序号2的指令为读取字变量的PEEK指令,输入的方式为在序号1的基础上在PEEK后输入下划线会弹出数据类型的选项,包括BYTEWORDDWORD这里选择WORD也可直接在下划线后输入WORDDWORD的输入格式亦是如此。图中的红色波浪线当填入正确的变量后会自动消失。

2. PEEK用法解析

如上图2所示,括号内的元素即为PEEK指令的形参和实参。出了PEEK_BOOL指令有四个输入参数,其余三个均为3个,下面分别加以介绍。

PEEK_BYTE(读字节变量,指令中BYTE 类型可省略,指令格式。)

PEEKarea:=_byte_in, // 寻址区域,BYTE类型

dbnumber:=_dint_in, // DB块块号,非DB块寻址时填0DINT类型或DB ANY类型

byteoffset:=_dint_in);// 被读取变量的字节地址,DINT类型

PEEK_WORD(读字变量,指令格式。)

PEEKarea:=_byte_in, // 寻址区域,BYTE类型

dbnumber:=_dint_in, // DB块块号,非DB块寻址时填0DINT类型或DB ANY类型

byteoffset:=_dint_in);// 被读取变量的字节地址,DINT类型

PEEK_DWORD(读字变量,指令格式。)

PEEKarea:=_byte_in, // 寻址区域,BYTE类型

dbnumber:=_dint_in, // DB块块号,非DB块寻址时填0DINT类型或DB ANY类型

byteoffset:=_dint_in);// 被读取变量的字节地址,DINT类型

PEEK_BOOL(读变量,指令格式。)

PEEKarea:=_byte_in, // 寻址区域,BYTE类型

dbnumber:=_dint_in, // DB块块号,非DB块寻址时填0DINT类型或DB ANY类型

byteoffset:=_dint_in // 被读取变量的字节地址

byteoffset:=_dint_in);// 被读取变量的位地址,INT类型

参数area根据所读区域的不同,分为四种类型,如下表1所示:

area

类型

说明

16#81

I

输入变量区

16#82

Q

输出变量区

16#83

M

中间变量区

16#84

DB

数据块变量区

1

三、 PEEK使用例程

1、为了使大家能掌握该指令的使用,下面举例加以说明,以博图V16软件进行操作。将数据区DB1中的A的内容读到B中,C的内容读到D中,E的状态读到F中。

打开博图V16新建一个名为PEEK指令测试的项目,添加一台S7-1215CCPU创建数据块DB1分别建立ABCDEF变量,如下图3所示:

3

需要注意的是,一定要将DB1的优化块访问的属性勾掉,否则无法在PEEK指令中使用。操作步骤为右击项目树下的DATADB在弹出的选项列表中选择属性,又会弹出个对话框。勾掉优化的块访问前面的勾,再次选中DB1点击工具栏的编译,如下图4所示:

4

由上图最后一张图可见,当勾选掉优化块的属性并点击编译后,DB块就会显示出便宜地址列。新建名称为peektestFC功能,语言选择scl点确定。在打开的FC1程序编辑区输入三条peek指令,peek指令在指令列表的基本指令-移动操作-/写存储器下。如下图5所示:

图5

上图中序号1和序号2的代码都加了转换指令,分别是将字转换为整数、双字转换为双整数,因为ABCD的数据类型分别为INTDINT如果不用转换指令的话,指令下方会出现黄色波浪线以示报警。序号3为位变量的读取。上述指令均是读取DB块内的变量,而且都在同一个数据块DB1,所以area16#84dbNumber1数据A的字节地址偏移为0,数据C的字节地址偏移为4,数据E的字节地址偏移为12,位偏移为0,所以在byteoffsetbitoffset处分别填上上述数据。偏移量如下图6所示:

6

2、仿真测试

仿真过程及测试的结果如下图7所示:

7

7后面两张图可以看出测试的结果,使DB1处于监控状态,ACE分别输入456-45678trueBDF也得到相应的值,当把AE改为0f

若有收获,就点个赞吧!

文章来源于网络及文献如有侵权请联系站长
分享到:

微信扫一扫分享

阅读与本文标签相同的文章

西门子PLC 西门子S7-1200PLC,PEEK指令

相关推荐

最新文章 热门文章
最新课程 免费课程
PLC资料下载 电工电气资料下载
应用新秀
变频器故障代码查询APP
伺服故障代码查询APP
技成
手机APP
热门标签