各位老铁, 如图蓝色画圈部分。这三个指令B-I VB0存储的数据转换后存储到LW0 中这个我当然明白。往后的两个指令同理。 但是 VB0 转换整数后 存储到 LW0 也就是就是整数数据的%ignore_a_1%16位。LW0=(LB0+LB1) LW0 转换成双整数存放到 LD2 中, 不能存放 LD0 中,因为 LW0已经占用了LB0 LB1 两个字节。 LD2 双整数占用 32位就是4个字节。也就是LB2+ LB3 + LB4 +LB5 最后的最后整数LD2转换成浮点数,浮点数存放在VD4 的里面。 我的疑问是既然VB0 已经在最开始占用了,但是VB 2 VB3 还都没有占用,是否可以不存放VD4而存放在 VD2 里面??? 毕竟VB2这个字节也没有用着嘛。。
图片说明:
最佳答案
前面理解的都对。
但是VB 2 VB3 还都没有占用,是否可以不存放VD4而存放在VD2 里面?
回答:
仅仅看这一段,那回答是肯定可以的,但在整个项目来说是不一定的。
因为 V 存储区是全局存储区,在主程序、中断程序、子程序中都可以寻址,如果与成 VD2,那就一定要确认在整个程序中其它地方有没有对这一存储区域的访问含上位机。如果没有那是可以写成 VD2 的,这样可以确保没有任何非预期的引用。
如果其它地方有使用这一区域,只要保证在使用前都有预期的值,即值是可用的,那也没问题。
这一区域的引用包括:
比如,位引用 V2.0-V2.7、V3.0-3.7;
字节引用 VB2、VB3;
字引用 VW1(含了VB1、 VB2)、VW2、VW3(含了VB2、VB3)。
双字引用 VD0(含了VB0、VB1、 VB2、VB3)
VD1(含了VB1、VB2、VB3、VB4)
VD2(含了VB2、VB3、VB4、VB5)
VD3(含了VB3、VB4、VB5、VB6)
提问者对于答案的评价:
OK OK 谢谢啦
原创文章,作者:ximenziask,如若转载,请注明出处:https://www.zhaoplc.com/plc361568.html