0 喜欢 0 不喜欢
256 浏览
分类:国内交流 | 用户: (2.9k 分)
总功率79.999kw时,数值正常,而当大于79.999kw时,功率数值不正确。

什么原因,如何解决?

1个回答

0 喜欢 0 不喜欢
用户: (2.9k 分)
修改于 用户:

这是由于645协议规定导致的,按协议格式,总功率取值范围为:0.0000~79.9999,如下图645协议标准描述。
645协议对功率的限制
 

其他解决方式:

方法1、抄表系统分别读取A、B、C三相的功率,再A、B、C三相功率相加得到总功率。从而突破协议中总功率79.9999的限制。

方法2、将电能表的CT变比值,设置的更小些,不要让数据突破79.999,之后再抄表得到的数据,再缩小的变比还原成真实的功率值。比如变比缩小一倍,那电表的75kw,实际就是150kw。这种方式,会让电能表上显示的数值也缩小一倍。

方法3、改用其他协议。比如Modbus协议,但我司用的Modbus协议的功率数据,是没乘以CT变比的原始数据。


注意:我公司上位机,虽然能改功率的小数位数,如下图,但却无法突破645协议中对79.9999的限制,也就是说,645协议对总功率就是限制在80以下,小数位数不会影响到79.9999的小数位数。

修改电能显示功率(最大需量)小数位数步骤

用户: (330 分)
0 0

 79.9999kW 的功率上限并非技术瓶颈,而是 “数据格式 + 应用场景” 双重匹配的结果,其主要原因是数据编码格式的物理限制:

  1. 该协议对瞬时功率的存储采用3 字节 BCD 码(二进制编码十进制) 设计:1 字节可存储 2 位十进制数,3 字节共 6 位十进制数;同时协议定义功率单位为 “kW”,且固定保留 4 位小数(即精度为 0.0001kW)。

常见的BCD编码.png

小知识:BCD码能以最少的硬件来实现二进制与十进制数字的转换。BCD码是用一组四位二进制码来表示一位十进制数字的一种方法。 它只取四位二进制码可能有的十六种组合中的十种来表示0一 9十个数字。 在BCD码中(8421码),1001是最大的四位组。

按此格式,6 位十进制数的分配为 “2 位整数 + 4 位小数”,最大可表示的数值即为 “79.9999kW”。

你可能会疑惑,那为什么是不是99.9999kW呢,这是因为功率有正向和反向,也就是数字“7”的四个二进制中,最高位是功率的方向,0表示正,1表示负。那么只剩三个二进制,三个二进制数最大表示的数值是“111”,转换为十进制,可不就是数字“7”了。

若真的要设计为 “99.9999kW”,按以上所述,则需增加字节长度,改为4字节存储,而当时的电能表硬件(如 MCU 存储资源)无需如此设计。

欢迎来到 瑞银电子工业事业部FAQ ,有什么不懂的可以尽管在这里提问,你将会收到部门其他成员的回答。
...