间接寻址程序问题

从西门子网站下下来的资料中有这样一段程序和解释:
L     P#20.0                 //将地址指针P#20.0装载到MD24中。
T     MD24
L     320                      //320转换指针为P#40.0并装载到MD28中。
T     MD28

我的问题是:1、“L     320  ” 中的这个320是什么进制的数,是怎么转换为P#40.0的?
2、指针是32位的,P#40.0不是超界了吗?
3、如果320是常数,转换为指针应该左移的,这里没有左移,能说明不是常数吗?

最佳答案

1. 320是十进制的数;是怎么转换为P#40.0的?这个与指针的定义和P#指令有关,简单来说,就是320乘以8, 表示40个字节
2.指针是32位的,P#40.0不是超界了吗?指针是32位的,表示这个类型的指针共占了32个位,4个字节,两个字;而不是只能代表32个字节;
3.如果320是常数,转换为指针应该左移的,这里没有左移,能说明不是常数吗?这里呢,编程时就考虑了要40个字节的变量提前做了乘以8个计算,
也可以写成
L  40
SLW 3
楼主不妨看看:S7-300S7-400寻址
https://support.industry.siemens.com/cs/document/79632832/s7-300和s7-400寻址?dti=0&lc=zh-CN

提问者对于答案的评价:
谢谢。我所举例就是西门子网站的寻址的学习内容。不知道是不是笔误,你里面说是320乘以8,是不是应该为320除以8。其次,装载了320怎么去理解为转换为了指针呢?

专家置评

已阅,最佳答案正确。

原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc187948.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2017年7月26日
下一篇 2017年7月26日

相关推荐