这段语句表程序有的地方看不懂,如tu1所示,请大家指教谢谢!!!

问题: 1、程序中   L   +10 //将16位整数10存入ACC1  
                             L   L#+10 //以32位形式 
            这两条指令中怎么第一个+10 就是16位的, L#+10 就是32位的呢??这个怎么区分??
2、这条指令中  A   I[MD104]   //对 I1.2进行与逻辑操作   
       这条指令中 MD104 等于10  ,  A   I[MD104]  =  A   I[10]  为什么不是 A  IB10 呢???   或者一个字节是8位  也应该是  A    I1.1  也不是1.2啊???  基础很差  求指教。
3、 这条赋值指令  =DIX[MD2] //赋值背景数据位DIX6.5!  
    是不是 32位的16进制数35 ,转换成32位 的十进制数是53 ,53转换成八进制位模式应该是DIX6.4  还有0位应该算进去把。   不知道自己理解对不对??
4、  程序中   L  L#+10   与   L   +10    ,是不是加上 L  或者 # 号   后,  16位的数 就变成32位 了  ???       L 局部存储器中的数  是不是都是32位的??

最佳答案

1. L#用来表示32位双整数常数,例如L#+56 , L# -43 。这个是西门子规定,只要记住就可以了。16位整数常数直接输入就可以了。例如十进制45直接输入45,如果是16进制常数45就输入W#16#45就可以了。详情参考西门子PLC数据类型:http://wenku.baidu.com/link?url=clUl4LXS5rztGm56lqXTDbGLrvrSejvvkMqC4uFoz_YdbHQTz0q05HL1DHIOWimLgFBIGp0dTSASIcuJo3Er04VLDe3-u7A9_1AdTorno3S
2.A I[MD104]这个是间接寻址,属于存储区间接寻址。32位地址指针也可以使用常数表示,32位地址指针数据与双整数可以相互转换,由于指针指到一个位地址上,每一个位地址加1,相应转换的整数值加1的倍数,例如P#0.0转换双整数为L#0,P#0.1转换双整数为L#1,每一个字节地址加1,相应转换的整数值加8的倍数,例如P#3.1转换双整数为L#25,因此MD104=10,就是P#1.2 。所以A I[MD104] 就是A I1.2 。详情参考西门子PLC间接寻址:http://wenku.baidu.com/link?url=vfNLUkdL-v2X_iH11KtkiPfXLx2ykOQTBiPX-ldzU12m-zZhMsS7X9sBRuR1mOaRaYQB3jxRCiHnz2pGf2EbTnD3-G3dxTzSVEHBfpcDEIG
3.是的,这个和第2个问题是同一个问题,你第2个问题理解了,这个也就理解了。
DIX[MD2】=DIX6.5,MD2=P#6.5,用10进进制整数表示就是53 。可以参考西门子PLC间接寻址资料看看。
4.这个L#是数据类型表示的格式,如果表示32位整数常数必须加L#,不可以加L或#,这个和L局部存储区没有关系。L局部存储区不都是32位的。L存储区使用请见以下链接:http://blog.sina.com.cn/s/blog_669692a60101b5bg.html
4.

提问者对于答案的评价:
我认为 A   I [MD104]中 MD104是32位指针,包含具体数值单元。 MD104=L#10 , L#+10转换成二进制应该是 1000  0001   0000   0000   0000    0000    0000    1010  ,   2的1次方加2的三次方等于10.   0到2位  表示位    。所以是  I1.2   这么理解对吗

最佳答案作者回复:
0-3位是位寻址,3-18位是字节寻址

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

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2017年11月1日 下午8:10
下一篇 2017年11月1日 下午8:11

相关推荐