问题:1、程序中L+10//将16位整数10存入ACC1
LL#+10//以32位形式
这两条指令中怎么第一个+10就是16位的,L#+10就是32位的呢??这个怎么区分??
2、这条指令中AI[MD104]//对I1.2进行与逻辑操作
这条指令中MD104等于10,AI[MD104]=AI[10]为什么不是AIB10呢???或者一个字节是8位也应该是AI1.1也不是1.2啊???基础很差求指教。
3、这条赋值指令=DIX[MD2]//赋值背景数据位DIX6.5!
是不是32位的16进制数35,转换成32位的十进制数是53,53转换成八进制位模式应该是DIX6.4还有0位应该算进去把。不知道自己理解对不对??
4、程序中LL#+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.AI[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。所以AI[MD104]就是AI1.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.
提问者对于答案的评价:
我认为AI[MD104]中MD104是32位指针,包含具体数值单元。MD104=L#10,L#+10转换成二进制应该是10000001000000000000000000001010,2的1次方加2的三次方等于10.0到2位表示位。所以是I1.2这么理解对吗
最佳答案作者回复:
0-3位是位寻址,3-18位是字节寻址