模拟输入量处理程序的提问
有一模拟输入量处理程序,前面两个网络的语句是:
TITLE=程序注释
Network 1 // 网络标题
// 网络注释
LD SM0.0
MOVW AIW0, VW12 //将模拟量输入值存在VW12
Network 2
LDW>= VW12, 0
MOVW 0, VW10 //将输入值转换成双字
NOT
MOVW 16#FFFF, VW10
请问语句:MOVW 16#FFFF, VW10有什么功能?有书解释为,如果VW12为负,扩展标志位使双字节为负值,这样处理有什么好处,不这样处理又会有什么恶果?请诸位大侠,拉兄弟一把。先谢谢了!
最佳答案
MOVW 16#FFFF, VW10有什么功能?
NOVW 16#FFFF,VW10 //把输入值转换成双字,则VD10=当前模拟量采样值
在二进制中,负数是以补码表示。所以在转换为双字格式的时候,必须将高位的VW10的全部位全部置“1”,也就是写入“16#FFFF”。实际上VW12中已经用补码表示了,因此就不必再做改动了。两者合起来就成为双字格式的以补码表示的负数。
S7-200中还提供了一个指令“I_D”,直接将字转换为双字。这样更方便,且不易出错。
参考:
http://www.ad.siemens.com.cn/service/answer/solution.asp?Q_id=37885_1028.html
提问者对于答案的评价:
谢谢你的指点!帮助我搞清楚了,在不用指令“I_D”情况下,当一个字是负数时,如何转换为双字的。
原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc307439.html