回复:300\400存储器与寄存器间接寻址有什么区别

宁超

  • 帖子

    1009
  • 精华

    39
  • 被关注

    373

论坛等级:至圣

注册时间:2012-12-11

普通 普通 如何晋级?

发布于 2016-01-01 17:24:33

3楼

AR1,AR2常被用来寻址,应变灵活的字节偏移要求。因为提供一些与AR1,AR2相关的操作指令,在处理一些难一点的寻址的时候会比较好。

寄存器优点

1.第一个优点得益于它本身的表达方式 yy [Ar1,P#x.x]

例如某几个连续的DP通讯变频器的GSD文件,组态的类型都是 I/O 32字节,起始地址是256,288,...变频器反馈的状态字如IW256里,正转运行标志是bit0,反转bit1,故障是bit4。

L StartAddress //假设256

ITD

SLD 3

LAR1 

A I[AR1,P#0.0] //指向了I256.0

= DriverRunFbk //变频器运行反馈

A I[AR1,P#0.4] //I256.4

= Fault        //变频器故障

L IW[AR1,P#2.0]

ITD

DTR

T SpeedRbk //读回的变频器速度反馈

你这样发现了吗?只需要改变[AR1,P#x.x]中的x.x就能访问到这32个I输入,而存储器间接寻址需要频繁的对地址信息存储的Dowrd计算。


2.另外在LOOP中使用 +AR1,P#0.1 移动一个bit 活着+AR1,P#2.0 移动一个字的长度等都是很方便的,比如计算32位的Dowrd中有多少个为TRUE的bit,就可以使用+AR1 P#0.1


3.然后就是TAR1,LAR1,TAR2,LAR2,CAR指令(这些指令也很用)如访问上述情况32I/O里的Bit4

 L StartAddress //256,

 L 12           //像这样常数都可以用变量代替写成活的可变换的数字 

+I              //268

itd

sld 3

lar1       //到这个位置时,I[AR1,p#0.4]已经是I268.4 

L 4

itd

tar1

+d

LAR1         //I[AR1,p#0.0]已经是I268.4


为甚么不直接使用L  P# 268.4,这也的话就写死了。我要访问第2个变频器偏移的12.4怎么办?

不再是256+12+0.4 而是288+12+0.4


存储器寻址的好处:

1.个数可以不受限制?AR1,AR2只有两个。我有时候觉得不够用,用着觉得少。

2.在FB里使用AR2很容易出错,如果没有掌握好寻址的规则,AR1配合存储器寻址却挺好。


我懂的就这么多了。我几乎没用过存储器寻址,可能会说错了什么,以上。





评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-300/400

共有54775条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

  • 分享

  • 只看
    楼主

top
X 图片
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。