临时变量

新建程序:临时变量#TEMP0 双字 地址0.0  程序:L MB0  T #TEMP0
A L[#TEMP0]  =M100.0 当给MB0赋值为27或28 M100.0接通 请高手解释下

问题补充:
高手 您好!1:因为我是新建的程序,没有对L3.3赋值。而且只有这一段语句,我是把数值一个一个的试才知道赋值27或28,M100.0才能接通。2:如果我不逐个试的 那又改怎么对应起来了。有或者我的临时变量的地址是8.0 然后赋值是27,M100.0接通。是不是也是查L3.3呢?

图片说明:

临时变量   

最佳答案

本人认为楼主所给的程序有问题,应该为:
L MD0 //将MB0改为MD0,应该为双字长。理由见下述解释。
T #TEMP0//如果#TEMP0(必须双字长)中为27
A L[#TEMP0]
 =M100.0 //即当L 3.3置位,则M100.0置位。
1、关于间接寻址:
这是间接寻址:间接寻址就是间接的给出指令的确切操作数。存储器间接寻址具有两个指针格式:单字和双字。
单字指针是一个16bit的结构,从0-15bit,指示一个从0-65535的数值,这个数值就是被寻址的存储区域的编号。  
  双字指针是一个32bit的结构,从0-2bit,共三位,按照8进制指示被寻址的位编号,也就是0-7;而从3-18bit,共16位,指示一个从0-65535的数值,这个数值就是被寻址的字节编号。 
因此就本程序来讲,#TEMP0必须是双字(所以要用MD0来传送)。
2、上述程序问题:
L 是临时变量,只在本程序段内有效。
A  L 10.0
 =M100.0
如果要达到上述指令的效果,#TEMP0必须是双字(所以要用MD0来传送),因为需要形成带有字节与位编号的地址。
例如赋值为十进制27时,换算方法:
1、十进制27为十六进制的1B,即0001 1011.
2、32bit的结构:0000 0000 0000 0000 0000 0000 0001 1011;从0-2bit,共三位,按照8进制指示被寻址的位编号,则为3。而从3-18bit,共16位,这个数值就是被寻址的字节编号,则为3。
3、位编号为3,字节编号为3。这样,即形成地址3.3.
4、A L[#TEMP0]则等价于,A  L3.3。

5、相关文档:

见《关于S7-300和S7-400指针寻址的说明与例程(更新版)(2008.03.04)     》下载:
http://www.ad.siemens.com.cn/download/searchResult.aspx?searchText=F0215
详见《step7编程之地址概念详解》连接:
http://www.plc365.com/jishu/57.html

提问者对于答案的评价:
通过查找资料 终于明白了

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

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2020年10月31日 下午3:12
下一篇 2020年10月31日 下午3:12

相关推荐