『瀚思彼岸』» 智能家居技术论坛

 找回密码
 立即注册
查看: 3016|回复: 3

[求助] 三相电表数据上来后双字节的float咋处理啊?

[复制链接]

63

主题

762

帖子

4335

积分

论坛元老

Rank: 8Rank: 8

积分
4335
金钱
3568
HASS币
20
发表于 2020-9-2 12:53:14 | 显示全部楼层 |阅读模式
本帖最后由 guitengyue 于 2020-9-2 12:55 编辑

通过modbus传入到node-red中了
看了下电表的说明书,A,B,C三相相电压和线电压都是2位的float,分别是0-11,即0-1是一次A相电压,2-3是一次B相电压,以此类推
然后算了好久,也没找出规律,不知道怎么计算
开始以为是低位的x16的4次方,但是算出来感觉不对啊
求大神指点。。。
shuju.png
dianbiao.png
回复

使用道具 举报

63

主题

762

帖子

4335

积分

论坛元老

Rank: 8Rank: 8

积分
4335
金钱
3568
HASS币
20
 楼主| 发表于 2020-9-2 12:54:17 | 显示全部楼层
其他的长度是1的都对了,但是功率和电流精度很差,我看到有float的,2位的不会处理了。。
回复

使用道具 举报

63

主题

762

帖子

4335

积分

论坛元老

Rank: 8Rank: 8

积分
4335
金钱
3568
HASS币
20
 楼主| 发表于 2020-9-2 13:14:58 | 显示全部楼层
用百度的浮点计算器一算就对了。。。。nodered不知道怎么写
回复

使用道具 举报

63

主题

762

帖子

4335

积分

论坛元老

Rank: 8Rank: 8

积分
4335
金钱
3568
HASS币
20
 楼主| 发表于 2020-9-2 13:58:05 | 显示全部楼层
msg.payload = [53598,17247];
let pay = msg.payload;
const buf = Buffer.allocUnsafe(8);
buf.writeInt16BE(pay[0],2);
buf.writeInt16BE(pay[1],0);

msg.payload = buf.readFloatBE(0);
return msg;
回复

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-5-20 05:45 , Processed in 0.051764 second(s), 28 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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