lzhpsky
工控小菜鸟
级别: 论坛先锋
精华主题: 0
发帖数量: 1045 个
工控威望: 1151 点
下载积分: 2796 分
在线时间: 767(小时)
注册时间: 2009-08-02
最后登录: 2024-10-16
查看lzhpsky的 主题 / 回贴
楼主  发表于: 2010-12-03 12:42






    我现在快晕了,大家看,为什么VD708和VD28的数据都是1.64,程序就是不通呢?为什么在状态表里监控无符号数据时不一样?换成监控浮点数的话,就都是1.64了,为什么?上面的程序VD708我已经四舍五入了,取小数点后2位了,数据是1.64,VD28是设定的数据,也是保留小数点后2位,但是为什么都相等了,就是不通呢?哪位高手指点一下,谢谢
sjm213
有小知识,无大学问。
级别: 论坛版主

精华主题: 7 篇
发帖数量: 5200 个
工控威望: 7423 点
下载积分: 158799 分
在线时间: 3161(小时)
注册时间: 2007-11-21
最后登录: 2024-11-22
查看sjm213的 主题 / 回贴
1楼  发表于: 2010-12-03 16:25
VD28是如何转换过来的?
浮点数精度过高,直接用==R很容易出现这个情况。
就像监控时这样,用浮点数监控都是1.64,但实际上其数值并非完全一样,所以程序比较出来两者不相等。
建议将浮点数转换为整数,用整数比较指令。
或者设定一个小误差范围,如用<=R VD708 1.641 替代==R
lzhpsky
工控小菜鸟
级别: 论坛先锋
精华主题: 0
发帖数量: 1045 个
工控威望: 1151 点
下载积分: 2796 分
在线时间: 767(小时)
注册时间: 2009-08-02
最后登录: 2024-10-16
查看lzhpsky的 主题 / 回贴
2楼  发表于: 2010-12-03 17:51
谢谢版主,明白了,谢谢你
yuming1231
工控我爱你
级别: 略有小成
精华主题: 0
发帖数量: 158 个
工控威望: 435 点
下载积分: 917 分
在线时间: 160(小时)
注册时间: 2010-11-15
最后登录: 2018-08-24
查看yuming1231的 主题 / 回贴
3楼  发表于: 2010-12-03 19:09
版主说的有道理