5.5 台区电表运行误差估计
1、案例概况
本案例介绍利用mems实现台区电表运行误差估计算法,包括电表数据获取、误差估计、结果输出。
低压台区电能表运行误差可以根据运行大数据进行估计。根据低压台区树形拓扑结构,以台区所有电能表组成集群,由能量守恒关系可以得到:
台区总表供电量=所有分表用电量之和+台区可变损耗+台区固定损耗
台区可变损耗近似与台区总用电量成正比,同时台区总表精度等级远高于用户表,可合理假设台区总表计量足够准确,计量误差为0,则上述关系可用公式表示如下:

式中:y为台区总表供电量;P为台区用户表数量;φj为第j个用户表的用电量;ej为第j个用户表的运行误差;ey为台区可变损耗与用电量的比例系数;e0为台区固定损耗。
将上式中运行误差变量和常量分离可得:

令:

代入上式,并将上式两侧均除以y进行归一化可得:

通过采集P+2个数量以上时段的台区电表有效运行数据,可对上式进行求解,对电能表运行误差进行估计。将多个时段得到的式子写成矩阵形式如下:

式中:(i)表示时段i的数据。
2、DataFrame流配置方法
规定电表运行数据输入文件格式为:

台区电能表运行误差估计的DataFrame流配置文件如下所示:

在DFF中配置了4个节点和4条边,其中节点1类型为SOURCE_FILE,作用是从文件中读取电能表数据,形成一个DataFrame,边1;2和1;3分别将该DataFrame传到节点2和节点3。
在节点2中进行电能表运行误差估计计算,该节点类型为TensorEval。其中:
- non_zero_cols = any(meter_data, 0);作用为检测矩阵第0维(即各列)是否存在非零元素,返回值为一个向量,若列中存在非零元素对应元素为1,否则为0;
- nz_meter_data = select(meter_data, [], find(non_zero_cols));作用为获取存在非零元素的列,避免计算矩阵奇异,find(non_zero_cols)可获取存在非零元素的列编号,select函数可获取给定编号的各列数据;
- y = select(nz_meter_data, [], 0);作用为获取台区总表供电量数据;
- norm_nz_meter_data = nz_meter_data./y;作用为对数据进行归一化;
- dy = select(norm_nz_meter_data, [], 0) - select(norm_nz_meter_data, [], 1);作用为计算 ;
- t_num = length(dy);作用为获取时段数量;
- meter_num = get(size(norm_nz_meter_data), 1);作用为获取电表数量;
- X = horzcat(ones(t_num, 1)./y, select(norm_nz_meter_data, [], 1), -slice(norm_nz_meter_data, [0], [2, meter_num, 1]));作用为形成前文推导得到的矩阵,其中horzcat作用是对矩阵进行水平拼接;
- err = linsolve(X’*X,X’*dy);作用是利用最小二乘法计算误差估计结果;
- err_0 = set(non_zero_cols, find(non_zero_cols), err’);作用是将数据均为0的电表误差设为0。
- 在节点3中为计算结果添加标签,该节点类型为TensorEval,同时在第6列填入4,表示支持Polars操作。其中:
- meter_id = select(col(‘*’), meter_data_columns);作用为获取输入文件数据中的列标签(包含电表编号信息);
- res_df1 = concat(horizontal, meter_id, meter_bias);作用为将列标签与电表运行误差计算结果进行水平拼接;
- h = height(res_df1);作用为获取计算结果中的数值数量;
- res_df2 = with_columns(alias(when_then_otherwise(arange(0, h) == 0, alias(e0,columns), col(columns)), columns), res_df1);作用为将第1个标签替换为e0;
- res_df3 = with_columns(alias(when_then_otherwise(arange(0, h) == 1, alias(ey,columns), col(columns)), columns), res_df2);作用为将第2个标签替换为ey;
- res_df4 = with_columns(replace(col(columns), p, “e_”), res_df3);作用为将标签中的字符“p“替换为“e_“;
- 边3;4类型为WriteFile,作用为将结果输出到文件。
5. 电表误差估计结果查看
输入电表数据文件示例如下所示:

运行电表误差估计的DataFrame流,输出数据如下所示:

以下附件中提供了上述台区电表运行误差估计DataFrame流的配置文件及测试案例,可参考使用。