grrrmeng
级别: 正式会员
精华主题: 0
发帖数量: 3 个
工控威望: 96 点
下载积分: 673 分
在线时间: 1(小时)
注册时间: 2017-02-07
最后登录: 2024-01-09
查看grrrmeng的 主题 / 回贴
楼主  发表于: 2017-06-02 14:37
图片:
初次使用欧姆龙系类的PLC,CP1H的 见图片 为啥 数据转换的那步指令FIX不执行,实在是找不出毛病,求救对欧姆龙熟悉的老司机!
cvlsam
富士低压,POD(觸摸屏),PLC专卖
级别: VIP会员

精华主题: 3 篇
发帖数量: 6740 个
工控威望: 37095 点
下载积分: 9144 分
在线时间: 9402(小时)
注册时间: 2006-09-13
最后登录: 2024-05-17
查看cvlsam的 主题 / 回贴
1楼  发表于: 2017-06-02 14:45
FIX已经执行了。

看到E后面的那个负号么,代表你的浮点数已经是只剩下小数部分了,小于0的浮点数的转换结果就是0了。

Good Luck~
本帖最近评分记录:
  • 下载积分:+1(grrrmeng) 怎么会出现负值了 我这都 ..
    cvlsam
    富士低压,POD(觸摸屏),PLC专卖
    级别: VIP会员

    精华主题: 3 篇
    发帖数量: 6740 个
    工控威望: 37095 点
    下载积分: 9144 分
    在线时间: 9402(小时)
    注册时间: 2006-09-13
    最后登录: 2024-05-17
    查看cvlsam的 主题 / 回贴
    2楼  发表于: 2017-06-02 14:59
    引用
    引用第1楼cvlsam于2017-06-02 14:45发表的  :
    FIX已经执行了。

    看到E后面的那个负号么,代表你的浮点数已经是只剩下小数部分了,小于0的浮点数的转换结果就是0了。

    Good Luck~


    您需要去看一下浮点数的科学表示法章节!

    1.0E+001,代表10.0
    1.0E-001,代表0.1

    以上只是浮点数中很肤浅的例子,你仍然需要去看浮点数的相关知识!

    Good Luck~
    本帖最近评分记录:
  • 下载积分:+1(penn_yuan)
    grrrmeng
    级别: 正式会员
    精华主题: 0
    发帖数量: 3 个
    工控威望: 96 点
    下载积分: 673 分
    在线时间: 1(小时)
    注册时间: 2017-02-07
    最后登录: 2024-01-09
    查看grrrmeng的 主题 / 回贴
    3楼  发表于: 2017-06-02 15:29
    图片:
    OK 问题已经找到了 原来是浮点乘法的时候 使用常数 他本身不能够变为浮点。增加了一部赋值就好了 谢谢 谢谢
    cvlsam
    富士低压,POD(觸摸屏),PLC专卖
    级别: VIP会员

    精华主题: 3 篇
    发帖数量: 6740 个
    工控威望: 37095 点
    下载积分: 9144 分
    在线时间: 9402(小时)
    注册时间: 2006-09-13
    最后登录: 2024-05-17
    查看cvlsam的 主题 / 回贴
    4楼  发表于: 2017-06-02 15:41
    引用
    引用第3楼grrrmeng于2017-06-02 15:29发表的  :
    OK 问题已经找到了 原来是浮点乘法的时候 使用常数 他本身不能够变为浮点。增加了一部赋值就好了 谢谢 谢谢


    原因并不是本身不能够变成浮点,而是浮点数在内存中排列与有符号数不同。

    你可以对一个32位数进行随意赋值一个不为0的常数,最终都能出现浮点数。

    出现你目前的原因是:
    因为你将一个常数赋予浮点数,也可以认为你将一个常数给了一个32位存储空间,而这个常数在32位存储空间中排列所得到的浮点数是一个很小的值。

    由于这个值非常小,导致乘法结果是一个小数,最终导致一个小数被转化指令转化为0了。

    这才是导致你认为FIX没有执行的真正原因,因此,如果你希望在这个领域水平有所提高的话,你还是需要去看IEEE754浮点数的相关内容,特别是浮点数在内存中的排列格式。

    Good Luck~
    本帖最近评分记录:
  • 下载积分:+5(hlq_0815) 耐心教人
    grrrmeng
    级别: 正式会员
    精华主题: 0
    发帖数量: 3 个
    工控威望: 96 点
    下载积分: 673 分
    在线时间: 1(小时)
    注册时间: 2017-02-07
    最后登录: 2024-01-09
    查看grrrmeng的 主题 / 回贴
    5楼  发表于: 2017-06-02 15:46
    OK 感谢感谢 这个数据方面的是要恶补 我本身不是计算机编程出身  对格式方面不太了解。以后一定加强!
    haiyouyang
    LabVIEW & C++
    级别: 网络英雄
    精华主题: 0
    发帖数量: 178 个
    工控威望: 8151 点
    下载积分: 41498 分
    在线时间: 879(小时)
    注册时间: 2011-03-29
    最后登录: 2024-05-17
    查看haiyouyang的 主题 / 回贴
    6楼  发表于: 2017-06-03 09:01
    常数你直接用+1.0,就表示为浮点(#1770=+6000.0)
    永恒14
    级别: 略有小成
    精华主题: 0
    发帖数量: 324 个
    工控威望: 451 点
    下载积分: 13981 分
    在线时间: 232(小时)
    注册时间: 2014-12-17
    最后登录: 2023-04-09
    查看永恒14的 主题 / 回贴
    7楼  发表于: 2017-07-12 14:50
    好主意,谢谢指点
    nxt086
    级别: 正式会员
    精华主题: 0
    发帖数量: 5 个
    工控威望: 99 点
    下载积分: 741 分
    在线时间: 2(小时)
    注册时间: 2017-07-12
    最后登录: 2017-07-12
    查看nxt086的 主题 / 回贴
    8楼  发表于: 2017-07-12 16:42
    应该用FIXL  双倍乘法     应为小数的话保存在高位     FIX只是对单个地址的乘法    用FIXL就好了