S7-200模拟输入量处理

模拟输入量处理程序的提问
  有一模拟输入量处理程序,前面两个网络的语句是:

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

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2020年11月1日
下一篇 2020年11月1日

相关推荐