关于S7-300的寻址解析
【前沿部分】 首先介绍一下寻址的原因:
我们知道,PLC的运算功能实际上就是能进行逻辑与算术两种运算。那么运算必须要有对象,这个对象与运算结果的存储就形成了寻址问题。比如,乘法运算中,乘数与被乘数还有积,这三个数大小范围,类型形式,存储空间,必须被考虑。否则会出现溢出出错,或是存储不当覆盖其他存储区值等等。针对此例中,关于数大小范围我们需要考虑运算是否会溢出?如 555 X 666 = 369630 你换算成2进制时会发现有19位之多,那么这个积就无法有字格式存储,否则会溢出。因为字格式的存储器只能放下范围0—65535大小的数据。关于存储空间则比较好理解,比如,乘数是常数555,但是被乘数是变量MW中给出的内容,显然不同的取数就会有不同的存储区域。另外,类型形式也好理解,比如乘数是常数555,但是被乘数是0.666时。整形与小数型当然会是不同的类型与存储区域。
综上所述,我们需要对数据进行操作,并进一步管理,所以,就产生了寻址方式等问题。下面我们讲正文:
【正文部分】 完整的一条指令,应该包含指令符+操作数(当然不包括那些单指令,比如NOT等)。其中的操作数是指令要执行的目标,也就是指令要进行操作的地址。
我们知道,在PLC中划有各种用途的存储区,比如物理输入输出区P、映像输入区I、映像输出区Q、位存储区M、定时器T、计数器C、数据区DB和L等,同时我们还知道,每个区域可以用位(BIT)、字节(BYTE)、字(WORD)、双字(DWORD)来衡量,或者说来指定确切的大小。当然定时器T、计数器C不存在这种衡量体制,它们仅用位来衡量。由此我们可以得到,要描述一个地址,至少应该包含两个要素:
1、存储的区域
2、这个区域中具体的位置
比如:A Q2.0
其中的A是指令符,Q2.0是A的操作数,也就是地址。这个地址由两部分组成:
Q:指的是映像输出区
2.0:就是这个映像输出区第二个字节的第0位。
由此,我们得出, 一个确切的地址组成应该是:
〖存储区符〗〖存储区尺寸符〗〖尺寸数值〗.〖位数值〗,例如:DBX200.0。
DB X 200 .0
其中,我们又把〖存储区符〗〖存储区尺寸符〗这两个部分合称为:地址标识符。这样,一个确切的地址组成,又可以写成:
地址标识符 + 确切的数值单元
【间接寻址的概念】
寻址,就是指定指令要进行操作的地址。给定指令操作的地址方法,就是寻址方法。
在谈间接寻址之前,我们简单的了解一下直接寻址。所谓直接寻址,简单的说,就是直接给出指令的确切操作数,象上面所说的,A Q2.0,就是直接寻址,对于A这个指令来说,Q2.0就是它要进行操作的地址。
这样看来,间接寻址就是间接的给出指令的确切操作数。对,就是这个概念。
。。。。。。。。。
呵呵,大家还是来看看原稿吧。
[9004]
[11225]
[20350]
[12146]
[9695]
[9528]
[7791]
[7466]
[7784]
[27247]

客服
小程序
公众号