S7-200怎么把一个字的值大于32767的数转换成实数后为正数

通过modbus采集的通信仪表的值,仪表显示值为3303.0,PLC采集后,监控PLC地址的值,若干是有符号去监视VW8显示为-32506,用无符号去监视VW8显示为33030,通过换算到实数VD20后监视的值为-3250.6,另外可以肯定的是通信地址仪表用的是40001这个字的值。问题是怎样把采集过来的值用无符号的值去转换成实数,而不是用有符号的值去转换成实数!

图片说明:

S7-200怎么把一个字的值大于32767的数转换成实数后为正数    S7-200怎么把一个字的值大于32767的数转换成实数后为正数   

最佳答案

本人经常采用的方法:
1、将n地址置为0,如VW0为0,将PLC采集后数值存放在n+2地址中,例如VW2中。这样取VD0(VW0与VW2)中就是一个有符号的双字长的数值(实际上VW0为0,永远保证为正数),但对于低字VW2中数值可视为无符号的数值。
2、再应用双字整数转实数指令DTR指令,转换为实数。

提问者对于答案的评价:
谢谢!这方法确实不错!32个赞

专家置评

已阅,最佳答案正确。

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

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2017年8月18日 下午10:35
下一篇 2017年8月18日 下午10:35

相关推荐