回复:关于西门子F0215文档的一个疑问

威师爷

  • 帖子

    5108
  • 精华

    47
  • 被关注

    255

论坛等级:至圣

注册时间:2013-09-18

白金 白金 如何晋级?

发布于 2017-02-14 10:11:16

14楼

展开查看
以下是引用Letham在2017-02-14 09:31:35的发言 >13楼

S7-300/400 硬件平台上 熟练使用指针 可以使你编出更灵活的程序,但是要能熟练使用指针 ,必须了解指针的结构》
S7-300/400 所使用的指针,总体上可分为16位指针和32位指针

1:16 位指针
此类指针,比较简单很好理解,主要用于对定时器,计数器,程序块的寻址,16位指针就是一个无符号整数(0-65535)结构如下

举例 要对一个 定时器寻址,我们使用 MW0 来作为指针

L 1

T MW0

A I 0.0

SD T[MW0] //就是启动定时器 T1。


对DB块寻址

 L 100

 T MW100

OPN DB[MW100] 世纪上就是打开 DB100

好了,看上去16位指针简单吧,简单说明下[  ]里面的值是多少 就是对相应号码的 T,C,FB,FC,DB寻址。


2:32位指针

32位指针又可分为2类,一类是区域内指针,还有一种的区域间指针,什么为区域内指针,什么为区域间指针?看下面


L MD[MD100] 中的MD100就是区域内指针


L W[MD200] 中的MD200就是区域间指针,至于 语句访问的是哪个区域 是在MD200中指明的。下面看看2类指针有什么不同


2.1 区域内指针

如上图 32位区域内指针的 19-31位是未定义的,3-18位是定义字节地址,0-2是定义位地址的,这点 对于区域间 指针也是同样的。


根据上图 解释下 为什么 320 加了括号后 就变成P#40.0了。首先 P#x.y是指针常数,可以8*x+y转化为DWORD数值,比如 P#3.2 转化为DWORD 数值就是26=100110。

比如 对MD40进行寻址 指针放在MD28中 要使MD40=MD[MD28],MD28应该是多少?楼主程序中已经表明了MD28=320,我们来说明为什么是 320。那么需要看 上图32位区域内指针结构了。

320在PLC 内存中应该是 101000000 根据 指针机构 分解为  101000,000 ,101000 对应寻址的指针BYTE部分,000对应BIT部分,101000 对应10进制就是40, 所以 要使MD40=MD[MD28]  MD28的值就是320,如果 MD28=40 那么 MD[MD28]就等于MD5了。各位大侠 看出什么了吗?其实 ,我们存储在DWORD内存的数值*3 就是指针了,比如 40*8=P#40.0,这也是在程序中经常看到SLD 3语句的原因了 就是左移3位,其实就是乘以8。


如果除以8 还有余数怎么办?余数就是位地址,比如 321/8=40*8+1 其实 就是对应指针 P#40.1,简单的计算方法 就是 321/8=40.125 其中小数部分 称8 就是对应的位地址。


2.2 区域间指针

区域间指针 和区域内指针 差别不大,只是 区域间指针用到了 19-31位中的 31位,和24-26位。看下面定义

 32位区域间指针 除了字节和位地址还包含了 区域信息

24-31 位具体代表什么区域了,看下图

下面举例说明,还是用MD40 对区域间指针来解释吧,

L P#M40.0  注意是P#M40.0 不是P#40.0

T MD28 这个时候MD28值还是320 吗?当然不是!

MD28应该等于320 or 16#8300000000000000 对应的16进制数就是16#8300000000000140

这个时候 我们进行间接寻址的时候 就可以这样编写下面语句了

L D[MD28]了,其实大侠们 应该看明白了 ,32位区域间指针就是区域内指针或运算一个 数据区代码16#81-87 罢了,正常编程时,一般很少用。


最后 S7-300/400 的CPU中还有 AR1和AR2地址寄存器,使用AR1,AR2来存储指针的优点是可以在[]内进行指针的偏移运算。

加上MD28=320

L MD[MD28] 等同与 MD40,如果我们再想 对MD41进行指针化,那么需要将MD28+8 ,d但是MD[MD28+8]是非法的,但是使用AR1,AR2地址寄存器则是可以的。

L MD28

LAR1

L MD[AR1,P#1.0] 就相对于MD41了.P#1.0就是偏移地址


西门子有篇不错的文档建议大家看看 
S7-300/400寻址



       


写的非常好,非常明白!给你点赞!


谢谢了!

工业起重机防摇摆 QQ:404136820 AntiSwayControl
评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-300/400

共有54622条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

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

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

  • 分享

  • 只看
    楼主

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