S7-200模拟输入量处理
刘玉蓉
发布于2014-10-31 17:39
1
0
标签:
模拟输入量处理程序的提问
有一模拟输入量处理程序,前面两个网络的语句是:
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”,直接将字转换为双字。这样更方便,且不易出错。
参考:
https://www.ad.siemens.com.cn/service/answer/solution.asp?Q_id=37885&cid=1028