s7-200PLC模拟量求平均值时将输入值转换成双字,为什么输入为正数时扩充的双字前16位填0,为负数时填1

Network 1 // 网络标题
 // 网络注释
 LD     SM0.0
 MOVW   AIW0, VW12

 Network 2 
 LDW>=  VW12, 0
 MOVW   0, VW10
 NOT
 MOVW   16#FFFF, VW10  (为什么会有这一步?)
 此程序为s7200用户手册中模拟量处理的例子程序

 

最佳答案

在二进制中,负数是以补码表示。所以在转换为双字格式的时候,必须将高位的VW10的全部位全部置“1”,也就是写入“16#FFFF”。实际上VW12中已经用补码表示了,因此就不必再做改动了。两者合起来就成为双字格式的以补码表示的负数。
 S7-200中还提供了一个指令“I_D”,直接将字转换为双字。这样更方便,且不易出错。

提问者对于答案的评价:
谢谢指导!

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

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2021年7月5日 上午12:33
下一篇 2021年7月5日 上午12:33

相关推荐

发表回复

登录后才能评论