zhu2009
级别: 略有小成
精华主题: 0
发帖数量: 191 个
工控威望: 336 点
下载积分: 3637 分
在线时间: 127(小时)
注册时间: 2013-08-08
最后登录: 2025-08-12
查看zhu2009的 主题 / 回贴
楼主  发表于: 3天前
将R_PLC上的程序写到FX5上测试结果发现得出的结果不一样,傻眼啦

在R_PLC和FX5_PLC中分别调用函数(REAL_TO_DINT)将浮点型转换为双整形,结果发现二种控制器的结果不一样怎办?这怎么解决




  
zhu2009
级别: 略有小成
精华主题: 0
发帖数量: 191 个
工控威望: 336 点
下载积分: 3637 分
在线时间: 127(小时)
注册时间: 2013-08-08
最后登录: 2025-08-12
查看zhu2009的 主题 / 回贴
1楼  发表于: 3天前
一个值为1000000,一个值为999999
不小心遇见你
自动项目、PLC、视觉、通讯等工控软件开发QQ3515716
级别: 工控侠客

精华主题: 3 篇
发帖数量: 2122 个
工控威望: 3045 点
下载积分: 25407 分
在线时间: 1521(小时)
注册时间: 2014-01-05
最后登录: 2025-08-12
查看不小心遇见你的 主题 / 回贴
2楼  发表于: 前天
浮点数存储本来就是超出位忽略存储,加上R系列是新的硬件架构,存储精度是存在差异。特别是尾数23位,新的架构考虑了第24位是0还是1
项目、视觉、通讯QQ3515716
zhu2009
级别: 略有小成
精华主题: 0
发帖数量: 191 个
工控威望: 336 点
下载积分: 3637 分
在线时间: 127(小时)
注册时间: 2013-08-08
最后登录: 2025-08-12
查看zhu2009的 主题 / 回贴
3楼  发表于: 昨天
引用
引用第2楼不小心遇见你于2025-08-10 09:32发表的  :
浮点数存储本来就是超出位忽略存储,加上R系列是新的硬件架构,存储精度是存在差异。特别是尾数23位,新的架构考虑了第24位是0还是1

谢谢高见!你的意思是说fx5数据类型只支持float型,而R可以最高支持double型造成的,可以这样理解吗?
zmrs163
级别: 家园常客
精华主题: 0
发帖数量: 414 个
工控威望: 564 点
下载积分: 1573 分
在线时间: 342(小时)
注册时间: 2017-06-12
最后登录: 2025-08-12
查看zmrs163的 主题 / 回贴
4楼  发表于: 6小时前
硬件架构不一样导致浮点数计算存在细微差别,虽然没研究三菱的CPU,但是打个比方有的CPU浮点数中间计算精度不止float,结果只是截断成float,处理方法就是尽量避免这种大范围数值相除。
zhu2009
级别: 略有小成
精华主题: 0
发帖数量: 191 个
工控威望: 336 点
下载积分: 3637 分
在线时间: 127(小时)
注册时间: 2013-08-08
最后登录: 2025-08-12
查看zhu2009的 主题 / 回贴
5楼  发表于: 4小时前
引用
引用第4楼zmrs163于2025-08-12 08:58发表的  :
硬件架构不一样导致浮点数计算存在细微差别,虽然没研究三菱的CPU,但是打个比方有的CPU浮点数中间计算精度不止float,结果只是截断成float,处理方法就是尽量避免这种大范围数值相除。

非常感谢!
zhu2009
级别: 略有小成
精华主题: 0
发帖数量: 191 个
工控威望: 336 点
下载积分: 3637 分
在线时间: 127(小时)
注册时间: 2013-08-08
最后登录: 2025-08-12
查看zhu2009的 主题 / 回贴
6楼  发表于: 4小时前
看来只能尽量定义convert_Value为常量使用,把除法变乘法,等于x1000来用。