200 SMART 有符号转无符号数值求助

已锁定

Upyou

  • 帖子

    75
  • 精华

    0
  • 被关注

    2

论坛等级:侠士

注册时间:2018-05-07

黄金 黄金 如何晋级?

200 SMART 有符号转无符号数值求助

11621

12

2021-08-25 10:28:57

现场使用200SMART与热量表MODBUS_RTU通讯
热量表的通讯地址为:
0x04 正向 累积热能(Wh) 高32 位---高16 位 03 只读 int
0x05 正向 累积热能(Wh) 高32 位---低16 位 03 只读 int
0x06 正向 累积热能(Wh) 低32 位---高16 位 03 只读 int
0x07 正向 累积热能(Wh) 低32 位---低16 位 03 只读 int
通讯后最地址终放到:
0x04(VW0)
0x05  (VW2)
0x06  (VW4)
0x07  (VW6)
然后厂家给计算热能的计算方法


//表上返回最大热值0x3E7FFFFFFFF  'wh

unsigned long th,tl;
unsigned long value;

th=0x3E7;//高32位
tl=0xffffffff;//低32位

value = (th*65536)+(tl/65536);  
t1=value * 0.065536;//mwh

我按照正常的计算方法来计算,就出现问题了{(VD0*65536)+(VD4/65536)}*0.065546

问题1.当VW2超过32767的时候,就变成负值,这样就直接影响后面的运算,我只能先把VW0挪到VD10进行运算
V0.7=1时给VD10加上65535,这样就可以变为无符号数值
不知道这样是否可行?是否加65535,还是加32767
此时
VW0(VD10)
VW2(VD14)
VW4(VD18)
VW6(VD22)
问题2.上面的每一个值都可以换算的话,那么是不是应该把VD10和VD14分别放到VD100,VD104怎么才可以把VD100有符号值装换成无符号值呢?(VD100*65535)+VD104这样可以吗?

3.一共两个问题,我描述的有点啰嗦,但是我又怕自己讲不明白,希望大神能指点一二。



200 SMART 有符号转无符号数值求助 已锁定
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-200 SMART

共有8945条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

  • 分享

  • 只看
    楼主

top
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。