最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 正文

S7-1200 SCL PEEK 和 POKE 指令使用

来源:动视网 责编:小OO 时间:2025-09-28 14:07:07
文档

S7-1200 SCL PEEK 和 POKE 指令使用

S7-1200SCLPEEK和POKE指令使用使用S7-1200SCL编程语言的PEEK和POKE指令,可以实现对I/O、M存储器和数据块的读取或写入。而通过POKE_BLK指令,还可以实现数据区域的复制或移动。指令适用条件:l只用于SCL编程语言;l软件从TIAPORTALV11SP2起;lS7-1200CPU固件从V2.2起;l适用操作数,I、Q、M、DB;lDB必须是非优化访问的块。本文生成环境:l硬件:CPU1214CV4.4l软件:Windows10Pro1903和TIAPORTAL
推荐度:
导读S7-1200SCLPEEK和POKE指令使用使用S7-1200SCL编程语言的PEEK和POKE指令,可以实现对I/O、M存储器和数据块的读取或写入。而通过POKE_BLK指令,还可以实现数据区域的复制或移动。指令适用条件:l只用于SCL编程语言;l软件从TIAPORTALV11SP2起;lS7-1200CPU固件从V2.2起;l适用操作数,I、Q、M、DB;lDB必须是非优化访问的块。本文生成环境:l硬件:CPU1214CV4.4l软件:Windows10Pro1903和TIAPORTAL
S7-1200 SCL PEEK 和 POKE指令使用

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

指令适用条件:

l只用于 SCL 编程语言;

l软件从TIA PORTAL V11 SP2起;

l S7-1200 CPU 固件从V2.2起;

l适用操作数,I、Q、M、DB;

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

本文生成环境:

l硬件: CPU1214C V4.4

l软件:Windows 10 Pro 1903和 TIA PORTAL 专业版 V16

一、项目生成与指令位置:

(1)创建 S7-1200 项目文件

在TIA PORTAL创建新项目,双击“添加新设备”在项目中添加 S7-1200 PLC_1,CPU 1214C DC/DC/DC。

图1 添加新设备

(2)添加 SCL逻辑块

展开PLC_1,双击“程序块”中的“添加新块”,选择语言“SCL”,添加 FC 块,名称为FC1 。

图2 添加新块

(3)添加 PEEK、POK E指令

双击FC1 打开SCL 逻辑块,将指令的“基本指令>移动操作>读写存储器”中 PEEK、POKE指令拖入程序编辑区。

图3 添加指令

二、PEEK 指令

1、指令格式

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

PEEK_BOOL,读位变量,指令格式。

图4 PEEK_BOOL

PEEK (_BYTE) ,读字节变量,指令中BYTE

类型可省略,指令格式。图5 PEEK_BYTE

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

图6 PEEK_WORD

PEEK_DWORD ,读双字变量,指令格式。

图7 PEEK_DWORD

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

图8输入PEEK

参数area ,根据数据所在区域的不同有四种取值。

2、示例程序

(1)PEEK_BOOL 指令

将M0.1 的状态值读取到 M0_7(M0.7),执行结果如图9 所示: 图9 PEEK_BOOL

(2)PEEK(_BYTE)指令

将IB20 的值读取到 DB1的Byte 类型变量,执行结果如图10 所示: area

类型

说明16#81

I 输入区变量16#82

Q 输出区变量16#83

M M 区变量16#84

DB 数据块变量

图10 PEEK(_BYTE)

(3)PEEK_WORD指令

如图11 所示, FC2 是字寻址,执行 FC2,将QW30 的值读取到 DB1的Word类型变量:

图11 PEEK_WORD

(4) PEEK_DWORD指令

如图12 所示, FC3 是双字寻址,执行 FC3,将变量 DB2.DBD0的值读取到 DB1的DWord类型变量:

图12 PEEK_DWORD

3.应用案例

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

l I0.0--> 元素0

l I0.1 --> 元素1

l I0.7 --> 元素7

l I1.0 --> 元素8

l I1.1 --> 元素9

l I1.5 --> 元素13

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

图13 程序示例

图14 程序结果

三、POKE写指令

1、指令格式

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

POKE指令,可在指令体内将结果传递给对应变量。

POKE 位操作:

图15 POKE 位操作

POKE 字节、字、双字操作:

图16POKE字节、字、双字

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

图17 POKE区别

将源数据块、I/O或存储区从byteOffset 开始的“count”个字节,写入目标数据块、I/O 或存储区byteOffset 开始的区域。

图18POKE_BLK

参数area ,根据数据所在区域的不同有四种取值。

2、示例程序

(1)POKE_BOOL 指令

将M0_1(M0.1) 的状态值写入 Q0.7,执行结果如图19 所示: 图19 POKE_BOOL

(2) POKE 指令

使用 POKE 指令编写程序FC4 ,将MW2 的值写入 DB2.DBW20,执行结果如图20 所示:图20 POKE 字操作

(3)POKE_BLK 指令

使用 POKE_BLK 指令编写程序 FC5,将DB2.DBB22开始的12个字节的值写入 MB100开始的地址,执行结果如图21

所示: area

类型

说明16#81

I 输入区变量16#82

Q 输出区变量16#83

M M 区变量16#84

DB 数据块变量

图21 POKE_BLK

四、常见问题

1.如何使用PEEK指令将一个Real类型变量读取到另一个Real类型?

因为PEEK指令不检查数据类型,所以理论上可以输入一个Real类型变量的地址,返回一个Real类型,但是实际上和想象不同,如图22所示。

图22 PEEK指令

当输入一个浮点数,输出的浮点数是一个乱码似的数,需要使用DWORD_TO_REAL把该数进行转换,但是转换结果会产生一定的误差。

为了解决这个问题,可以先将原始Real变量使用PEEK指令转换为Dword类型,然后使用DWORD_TO_REAL,如图23所示。

同样是输入1.2,输出也是1.2了。

所以建议使用第二种方法,也就是先将原始Real变量使用PEEK指令转换为Dword类型,然后使用DWORD_TO_REAL。

2.如何使用POKE指令将一个Real类型变量写入到另一个Real类型?

和问题1类似,因为POKE指令不检查数据类型,所以理论上可以输入一个Real类型变量的地址,返回一个Real类型,但是解决方法和第一个不太一样,如图24所示。

图24 POKE指令

当输入一个正数,输出的数是通过ROUND取证的一个DINT类型,需要再转换,并且精度丢失,而输入一个负数,输出正常,这种方法肯定是不可取的。为了解决这个问题,可以先将原始Real类型使用Real_TO_DWord转换为Dword类型,然后使用POKE指令,如图25所示。

图25 POKE指令

所以建议使用第二种方法,先将原始Real类型使用Real_TO_DWord转换为Dword类型,然后使用POKE指令。

文档

S7-1200 SCL PEEK 和 POKE 指令使用

S7-1200SCLPEEK和POKE指令使用使用S7-1200SCL编程语言的PEEK和POKE指令,可以实现对I/O、M存储器和数据块的读取或写入。而通过POKE_BLK指令,还可以实现数据区域的复制或移动。指令适用条件:l只用于SCL编程语言;l软件从TIAPORTALV11SP2起;lS7-1200CPU固件从V2.2起;l适用操作数,I、Q、M、DB;lDB必须是非优化访问的块。本文生成环境:l硬件:CPU1214CV4.4l软件:Windows10Pro1903和TIAPORTAL
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top