西门子S7-300入门级教程04-基础编程篇02-存储器间接寻址

<a href=https://www.xmzyj.com/ximenzi>西门子</a>S7-300入门级教程04-基础编程篇02-存储器间接寻址” inline=”0″></p>
<p class=S7-300

实验二 存储器间接寻址

1) 目的

了解存储器间接寻址

2)实验内容

参考《S7-300/400寻址》;

①16 位指针寻址格式表示为: 区域标识符 [ 16 位地址指针 ]以MW20作为一个16位指针,将它作为定时器、计数器、程序块的号。设计简单程序,根据MW20的不同值而寻址不同定时器、计数器、FC、FB、DB(如 T[MW20], C [MW20], FC[MW20], FB[MW20] ,DB[MW20]),验证这种间接寻址方式;

②32 位指针寻址格式表示为: 地址存储器标识符 [ 32 位地址指针 ]以MD40、MD44作为32位指针,给MD40赋值P#2.0,给MD44赋值32。创建一个DB118,包含10个字。给它的变量DBW[MD40]和DBW[MD44]各赋不同的值,如16#FF,16#EE等,在DB118中观察变量的变化。

3)实验流程

实验①

根据实验要求,首先创建OB1,选择编程语言为STL ,如下图所示。

西门子S7-300入门级教程04-基础编程篇02-存储器间接寻址

图1-创建编程语言为STL的OB1

建立FC1,调用定时器,采用存储器间接寻址 T[MW20],MW20赋值为1,编程如下图所示:

西门子S7-300入门级教程04-基础编程篇02-存储器间接寻址

图2-调用定时器

保存编译下载到PLCSIM,新建变量表VAT_1来监视程序运行的结果,I0.7触发时状态如下图所示。

西门子S7-300入门级教程04-基础编程篇02-存储器间接寻址

图3-监视结果

在FC1中调用计数器,采用存储器间接寻址C[MW22],MW22赋值为2,编程如下图所示,(其中+I与+D一样,+I用于16位,+D用于32位,都是把第一个装到累加器1,再把第二次装到累加器1,原来的被挤到累加器2,然后再把累加器1和累加器2加起来)

西门子S7-300入门级教程04-基础编程篇02-存储器间接寻址

图4-调用计数器

保存编译下载到PLCSIM,在变量表VAT_1中监视程序运行的结果,I0.0上升沿触发计数器加1,如下图所示。

西门子S7-300入门级教程04-基础编程篇02-存储器间接寻址

图5-监视结果

新建FC7,在FC7中编写程序如下:

西门子S7-300入门级教程04-基础编程篇02-存储器间接寻址

图6-新建FC7

在FC1中调用FC7,采用存储器间接寻址UC FC[MW24](无条件调用),MW24赋值为7,编程如下图所示。

西门子S7-300入门级教程04-基础编程篇02-存储器间接寻址

图7-无条件调用

保存编译下载到PLCSIM,在变量表VAT_1中监视程序运行的结果,I1.0为true时,Q0.0也变为true,如下图所示。

西门子S7-300入门级教程04-基础编程篇02-存储器间接寻址

图8-监视结果

新建FB8,再新建DB6,作为FB8的背景DB。

在FB8中编写程序如下图所示。

西门子S7-300入门级教程04-基础编程篇02-存储器间接寻址

图9-新建FB8

在FC1中调用FB8,采用存储器间接寻址CC FB[MW26](有条件调用),MW26赋值为8,编程如下图所示。

西门子S7-300入门级教程04-基础编程篇02-存储器间接寻址

图10-有条件调用

保存编译下载到PLCSIM,在变量表VAT_1中监视程序运行的结果,I0.1为true时,且I1.1也为true,Q0.1也变为true,如下图所示。

西门子S7-300入门级教程04-基础编程篇02-存储器间接寻址

图11-监视结果

新建DB1,在DB1中定义WORD型变量A,如下图所示。

西门子S7-300入门级教程04-基础编程篇02-存储器间接寻址

图12-定义WORD型变量A

在FC1中调用DB1,采用存储器间接寻址OPN DB[MW28],MW28赋值为1,编程如下图所示。

西门子S7-300入门级教程04-基础编程篇02-存储器间接寻址

图13-存储器间接寻址OPN DB

保存编译下载到PLCSIM,在变量表VAT_1中监视程序运行的结果,当修改DB1中的变量值时,MW30读取到该数值,如下图所示。

西门子S7-300入门级教程04-基础编程篇02-存储器间接寻址

图14-监视结果

注意:以上实验在同一个NETwork中都是MW20来作为他们的指针是可以的,只是MW20中显示的是最后一次赋值的值,但在使用中MW20能够完成每一次指针。

实验②

根据实验要求,首先创建DB118,在DB118中定义10个WORD型变量,初始值为0,如下图所示。

西门子S7-300入门级教程04-基础编程篇02-存储器间接寻址

图15-创建DB118

在FC2中以MD40、MD44作为32位指针,给MD40赋值P#2.0,给MD44赋值32,使用OPN DB118来打开DB,使用存储器间接寻址T DBW[MD40],T DBW[MD44]来赋值,编程如下图所示。(注意查看STEP7编程指南171页的内容)

西门子S7-300入门级教程04-基础编程篇02-存储器间接寻址

图16-32位指针用法

保存编译下载到PLCSIM,DB118中以第2字节开始的word型变量和以第4个字节开始的word型变量被赋值,如下图所示。

西门子S7-300入门级教程04-基础编程篇02-存储器间接寻址

图17-监视结果

4)总结

1、S7-300/400 PLC寻址方式分为直接寻址和间接寻址。直接寻址包括绝对地址和符号寻 址,间接寻址分存储器间接寻址和寄存器间接寻址,间接寻址的指针分为16 位指针和32 位指针,而32位指针又分为内部区域寻址和交叉区域寻址。

①16位指针被看作一个无符号整数(0~65535),它表示定时器(T)、计数器(C)、数据块(DB、DI)或程序块(FB、FC)的号。

②32位地址指针用于I、Q、M、L、数据块等存储器中位、字节、字及双字的寻址,32位的地址指针可以使用一个双字表示,第0~2位作为寻址操作的位地址,第3~18位作为字节地址。

敬请期待下一篇-寄存器间接寻址

PS:友情提醒,所有文章都是一个系列,是连贯的,顺着看效果更好~

作者简介

谭俊豪:重庆大学机械工程学院学士,西门子中国公司培训生

本文为原创文章,欢迎转载关注,请注明出处和作者!

发表评论

电子邮件地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据