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

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

实验三 寄存器间接寻址

1) 目的

了解地址寄存器ARx

2) 实验内容

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

①内部区域寄存器间接寻址表示为:存储器标识符 [ ARx, 地址偏移量 ] 创建一个DB119,包含10个整形变量。 将指针 P#2.0 装载到地址寄存器 1 中,利用内部区域寄存器间接寻址访问DB119中的DBW4和DBW8。

②交叉区域寄存器间接寻址表示为: 访问宽度 [ ARx, 偏移量 ] 将P#M50.0装载到地址寄存器1中,利用交叉区域寄存器间接寻址,将不同的值赋值给MW52和MW54。

3) 实验流程

实验①

创建DB119,在DB119中定义10个INT型变量,如下图所示。

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

图1-创建DB119

在FC2中使用OPN DB119来打开DB,将指针P#2.0装载到地址寄存器 1 中,并将DBW4赋值为4,使用内部区域寄存器间接寻址:T DBW[AR1,P#2.0];将指针P#8.0装载到地址寄存器 2 中,并将10赋值给DBW8,使用内部区域寄存器间接寻址:再把两者相加赋值给DBW10,T DBW[AR2,P#0.0],(具体理论理解见STEP7编程指南172页)编程如下图所示。

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

图2-编程示例

注意:相加部分程序解释

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

图3-备注

保存编译下载到PLCSIM,在变量表VAT_1中监视程序运行的结果,DB119中以第4字节开始的int型变量和以第8个字节开始的int型变量被赋值,以及第10个字节为两者相加,如下图所示。

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

图4-监控结果

实验②

交叉区域寄存器间接寻址表示方式,如下图所示。

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

图5-寻址表示方式

在FC2将P#M50.0装载到地址寄存器1中,利用交叉区域寄存器间接寻址: T W[AR1,P#2.0], T W[AR1,P#4.0],将不同的值赋值给MW52和MW54。编程如下图所示。

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

图6-编程示例

保存编译下载到PLCSIM,在变量表VAT_1中监视程序运行的结果,MW52和MW54被赋值,如下图所示。

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

图7-监控结果

4)总结

1、P#10.3为指向第10个字节第3位的指针常数。若把一个32位整型转换为字节指针常数,根据指针格式,要把该数左移3位或乘8,或者就是其转化为二进制表示4.0。

2、通过CPU地址寄存器AR1和AR2寻址方式称为寄存器间接寻址,分为内部区域寻址和交叉区域寻址(指定了存储区域信息)。

敬请期待下一篇-STL编程实战

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

作者简介

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

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

发表评论

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

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