您的位置:控制工程论坛网论坛 » 西门子社区 » WinCC MODBUS/TCP接收64位浮点数问题

swy

swy   |   当前状态:在线

总积分:8597  2024年可用积分:2

注册时间: 2006-08-05

最后登录时间: 2023-08-21

空间 发短消息加为好友

WinCC MODBUS/TCP接收64位浮点数问题

swy  发表于 2017/3/27 18:42:42      4674 查看 3 回复  [上一主题]  [下一主题]

手机阅读

问题已解决,wincc7.3的modbus采集64位浮点数格式确实有问题,后来自己编写程序将字节位置调换以后解决了,具体格式为:
1、如果从站采用64位浮点数(不交换),则wincc接收到的数据需要按以下顺序交换字节位置:45670123
2、如果从站采用64位浮点数(交换),则wincc接收到的数据需要按以下顺序交换字节位置:23016745
有个项目,需要wincc用modbus通道接收一个modbus设备的数据,其中有一个数据采用的是double inverse(64位浮点数 高低位交换)格式。结果发现wincc的modbus接收64位浮点数不对,modbus slave设备采用double和double inverse两种格式wincc接收的数据都不对。连接参数里面那个(转换字类型数据为16位值)对64位浮点数没有影响,勾不勾选接收到的值都不变。
请问这个怎么解决啊?  怎样正确接收这个数据?
下面两张图是我用modbus slave模拟器模拟的数据,用modscan和wincc同时连接这个模拟器,modbusscan接收的数据正确,wincc接收的数据不对。



1楼 0 0 回复
  • wangchen

    wangchen   |   当前状态:在线

    总积分:9915  2024年可用积分:7

    注册时间: 2010-03-25

    最后登录时间: 2024-05-22

    空间 发短消息加为好友

    wangchen   发表于 2017/3/28 21:05:16

    64位浮点数不止2种排列

    wincc用的是下图第二种

    2楼 回复本楼

    引用 wangchen 2017/3/28 21:05:16 发表于2楼的内容

  • wuwei01

    wuwei01   |   当前状态:在线

    总积分:3850  2024年可用积分:0

    注册时间: 2010-03-25

    最后登录时间: 2023-08-11

    空间 发短消息加为好友

    wuwei01   发表于 2017/4/2 11:22:19

    我的测试是wincc对于double类型,能够写入,但显示有问题,一直是0.00 .测试环境是虚拟机win10+wincc7.4+modbus slave 。

    定义64为浮点数变量到400001,写入数据123.45, 十六进制表示为 16#405E_DCCC_CCCC_CCCD,

    400001~400004分别为

    CCCD

    CCCC

    DCCC

    405E

    3楼 回复本楼

    引用 wuwei01 2017/4/2 11:22:19 发表于3楼的内容

  • xueba

    xueba   |   当前状态:在线

    总积分:2090  2024年可用积分:0

    注册时间: 2014-01-06

    最后登录时间: 2023-08-11

    空间 发短消息加为好友

    xueba   发表于 2017/4/2 14:20:52

    如果Wincc无内置这样顺序,而且只是显示的话,只能分别读4个寄存器然后用脚本合成字符串再显示咯…40位有效值,这么一长串数字看着都头皮嘛…
    楼主的什么设备需要64位浮点数精度这么高的精度…难道是银河系内的纳米级别的GPS定位?!!!!吓人又穿越了么……

    4楼 回复本楼

    引用 xueba 2017/4/2 14:20:52 发表于4楼的内容

总共 , 当前 /