合信论坛

快捷导航
查看: 3558|回复: 0

浮点数状态相等,但比较等于时却条件不成立问题解决

[复制链接]

8

主题

9

帖子

786

积分

高级会员

Rank: 3Rank: 3

积分
786
发表于 2023-6-30 23:10:39 | 显示全部楼层 |阅读模式
本帖最后由 谋圣在人间 于 2023-6-30 23:13 编辑

虽然浮点数在状态上相等,但为什么在“比较实数是否相等”运算中却检测到存在差异
对于“比较实数是否相等”的比较运算,由过程运算提供的实数类型的数值非常不精确。由于实数存在修正的误差,故不推荐使用此数据格式进行“相等”比较。
浮点数 (或实数) 由一个 32 位的单精度数表示,而访问时使用双字格式。在 合信200PLC 中,实数精确到 6 个小数位。
当使用包括较大数和很小数的一系列数值来计算实数时,可能会出现不精确的结果。当在状态表中查看实数时,相同的实数可能有不同的二进制表示。
计算示例如下图:监控状态都是0.7但是比较指令并未导通。
20230630223830.jpg
在状态表中监控VD100和VD104  二进制并不相同
20230630224317.jpg

因此我们推荐不要使用“LDR=”函数,而是使用“LDR<=”和“LDR>=”这两个函数来进行比较运算。这为你提供一个数值比较的比较框架。

20230630230152.jpg
子程序代码附上
20230630230333.jpg

最后还有一种浮点数等于比较的方法就是先放大倍数再使用整数进行比较就不会出现程序中的这种虽然数值看上去相等,却导致后面不输出的情况。



您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

客服热线
400-700-4858 周一至周五:09:00 - 18:00
深圳市南山区打石一路深圳国际创新谷6栋A座9层

深圳市合信自动化技术有限公司(简称“合信技术”)成立于2003年,高新技术企业,专注于工业自动化产品的研发、生产、销售和技术服务,依靠高质量、高性能的自动化控制产品与方案为客户创造最大价值,立志于成为全球领先的工业自动化解决方案供应商。

Archiver|手机版|小黑屋|COTRUST Inc. ( 粤ICP备13051915号 )

GMT+8, 2024-12-26 22:18 , Processed in 0.135168 second(s), 27 queries .

快速回复 返回顶部 返回列表