电费单反推24小时负荷曲线:光伏储能方案设计实战方法

发布时间:2026/9/8 0:56:25
电费单反推24小时负荷曲线:光伏储能方案设计实战方法 做光伏和储能项目我一年少说也要翻上百家企业电费单。找客户要负荷曲线太难但电费单基本一开口就有。麻烦的是光伏要算自发自用比例储能要定充放电策略电力交易要报曲线这些事没负荷曲线根本推不下去。客户通常会甩过来一句“数据都在这了你看怎么弄。”面对一张只有电费、电量、需量的账单硬着头皮也要把24小时负荷曲线给估出来。这篇文章就把我常用的反推方法完整讲清楚电费单上哪些字段能当真、哪些只能参考怎么结合行业典型曲线把一条“典型日负荷曲线”拟合出来以及Excel和Python两种落地做法。内容更适合分布式光伏开发、储能方案设计、售电公司和做企业能源管理的人看完你也能照着做。1. 为什么做光伏、储能和电力交易的人都在死磕负荷曲线1.1 光伏方案设计午间负荷直接决定自发自用比例光伏项目最怕的不是光照不好而是“白天发了电企业用不完”。光伏出力集中在9点到15点如果企业是晚上生产、白天休息那光伏发出的电大部分要低价上网收益率直接腰斩。所以做踏勘的时候我第一个想弄清楚的就是这个厂中午到底开不开工午休有多长12点到14点的实际负荷大概在什么水平。这些信息电费单上看不到但可以通过电费单里的峰平谷电量结构反推。多数地区的中午时段在“平段”或“谷段”范围把这个时段的电量特征和对应行业的生产规律结合起来能大致判断光伏午间出力有多少可以被企业自己吃掉。只要预估的自发自用比例靠谱后续的装机容量、组串方案、并网模式才能站得住脚。1.2 储能收益测算峰谷时段分布决定充放电次数储能项目的经济模型核心是三件事峰谷价差、每天循环次数、能不能做需量管理。峰谷价差来自电价表循环次数和需量管理效果却完全依赖负荷曲线。举个例子如果企业最晚高峰出现在18点到22点那储能在凌晨谷段充满、傍晚高峰放电的逻辑就特别通畅如果企业是连续生产、全天负荷都高那储能只能吃价差收益结构完全不同。还有一种情况很常见企业最大负荷只出现在每个月的某几天峰值高出平时一大截。如果我手里有负荷曲线就能算出这几天的峰值持续时间从而判断储能用“削峰填谷”来做需量管理到底能压掉多少容量电费。没有曲线只凭感觉方案很容易报高或报低最后不是客户不买账就是公司自己亏。1.3 电力交易负荷曲线才是套餐报价的底层依据售电公司和做电力交易的人可能感受更深。给工商业用户做零售套餐的时候用户只关心“一度电便宜几分”但售电公司要承担偏差考核风险。一个用户是白天集中用电还是夜间连续生产对应的批发市场采购策略完全不同。如果按统一的曲线形态去报价遇到用电习惯特殊的用户偏差损失可能吃掉全部价差利润。很多售电公司给用户装分时计量或能源管理终端但存量用户太多短期不可能全覆盖。这时候用历史电费单批量重构典型负荷曲线至少能把用户按“单班制”“两班制”“连续生产”“季节性生产”分成几类再对不同类别定制采购和报价策略比一刀切靠谱得多。2. 一张电费单能挖出哪些关键信息2.1 基本电费部分变压器容量和最大需量是关键电费单里“基本电费”这一栏很多人只看金额其实它的计费方式决定了你能拿到多关键的数据。如果企业按变压器容量计费电费单上会写明变压器容量单位是kVA。如果按最大需量计费电费单上会直接给出当月最大需量单位是kW这个数字代表当月任意15分钟平均功率的最大值。最大需量是做负荷曲线反推时最有价值的约束条件。它告诉我们这条曲线在当月的最高点不会超过这个数值而且通常就是负荷峰值附近。没有这个数我只能按变压器容量乘一个经验负载率去猜误差要大不少。所以我拿到电费单后第一件事就是先看基本电费栏是按容量还是按需量计费。2.2 峰平谷电量重构用的核心约束来自这里一般工商业和大工业用户的电费单会分时段列电量常见的是尖峰、高峰、平段、低谷四段也有只分峰平谷三段的。这个数据直接给了我一组积分约束某个时段范围内全天负荷曲线积分下来的电量必须等于账单上的电量。用来反推曲线的时候峰平谷三个值能帮我把曲线的整体形状校准到相对合理的区间。需要注意部分电费单把“峰段电量”和“尖峰电量”分开列而有些地区的尖峰只在夏季或冬季特定月份存在。处理时要把尖峰和高峰合并成同一个“峰时段”否则和普通月份的曲线无法横向对比。2.3 功率因数与力调电费别被它带偏方向电费单上还有功率因数和力调电费有些朋友会把功率因数当成判断负荷曲线形态的依据这是个误区。功率因数反映的是无功补偿水平和用电时间分布没有直接关系。电费单上写功率因数是0.89只能说明这个企业无功补偿做得不够好但不能说明它白天用电多还是晚上用电多。力调电费的金额如果特别高那是无功补偿的问题应该从电容柜入手解决跟光伏储能的容量测算没有直接关系。反推负荷曲线时我通常直接把功率因数这栏忽略只把它的存在当作判断企业用电管理水平的辅助信息。2.4 一张电费单信息量有限要清楚精度边界把电费单上能用的信息全列出来其实就这几项变压器容量、最大需量、峰平谷电量、总电量、生产日期跨度。这些信息加在一起也不足以唯一确定一条24小时曲线。数学上这叫欠定问题意思是满足条件的曲线有无穷多条。所以我做的所有方法都只能说“在这些约束下找一条最符合该行业用电规律的合理曲线”而不是“还原真实曲线”。这也是为什么我先要强调精度边界用这个方法做前期判断、方案比选、客户分级、收益粗算完全够用。但如果你要拿来做现货市场的正式申报曲线或者要在合同里承诺用户的考核偏差那还是得装表或者接入电力公司数据不能拿估算结果冒险。3. 只凭电费单重构24小时负荷曲线的核心思路3.1 先想清楚为什么不能直接从电量推出每小时负荷假设企业某个月峰段电量是12万度峰段时长是8小时很多人会直接拿12万除以8小时得出峰段平均功率15MW再当成峰段负荷来用。这个做法太粗糙因为峰段内部并不是均匀的早上刚开工和傍晚赶工时的负荷明显不一样。如果直接按平均功率拉平等于把曲线最关键的“高低起伏”抹掉了储能方案根本没法设计。还有一个问题是时段之间不是独立存在的。峰段里哪几个小时高、哪几个小时低要参考行业作息。比如机械加工厂上午9点到11点设备全开中午休息负荷降下来下午再升上去。两班制的厂在傍晚交接班时负荷会落一下再起来。这些细节只有行业模板曲线才能提供。3.2 行业典型曲线用“先验”补足缺失的信息既然电费单给的信息不够我们就要从行业用电规律里找补。我平时会积累一套“行业典型负荷曲线库”大类包括单班制、两班制、三班制、连续生产、商业制冷、数据中心等。每条曲线本质上是24个系数表示每个小时相对全天平均负荷的倍数总和在24附近所以拿到日总电量后乘一下就是一条基准曲线。以两班制机械加工厂为例夜间只有保安负荷和少量保温设备早上7点到8点开始爬坡上午9到11点进入高峰中午11点半到12点半午休回落下午继续高负荷傍晚六七点有一段下班高峰加班时间。这些特征写进模板后就避免了把中午低谷算成高负荷的低级错误。模板库越丰富反推的曲线越接近真实。3.3 三步拟合法缩放、限幅、平滑有了行业模板再结合电费单信息做三件事。第一步把账单里的峰平谷电量分别除以生产天数得到代表日的峰平谷电量。再用模板曲线计算每个时段的理论电量和账单实际值一比得到峰、平、谷三个时段的缩放系数乘回对应时段的逐时功率。这一步做完曲线已经能满足总电量和峰平谷电量约束。第二步是限幅。如果缩放后的曲线峰值超过了电费单上的最大需量就把超过需量的部分按比例压下来再把压掉的电量重新分配到曲线较低的其他小时迭代一两次直到不再溢出。第三步是做边界平滑。因为峰平谷各自乘了不同系数8点钟和23点钟这种时段交界处会出现台阶跳变对边界点做一次三点加权平均曲线看着就自然多了。4. 实操把电费单变成一条24小时曲线4.1 先把手里的电费单整理成一张参数表不管是Excel还是Python第一步都是把电费单信息结构化。我这里列一张常用的参数表实际使用时按自己手上的账单类型增减字段。参数名示例值来源与说明用户名称某机械加工厂用于项目命名变压器容量1250 kVA基本电费栏按容量计费时出现最大需量820 kW基本电费栏按需量计费时出现峰段电量128600 kWh尖峰和高峰电量合并后填入平段电量102400 kWh电费单平段电量谷段电量88600 kWh电费单谷段电量本月日历天数30账单起始日到结束日预计生产天数26剔除周末与节假日可人工修正需要注意生产天数直接影响代表日的日总电量。电费单覆盖30天不代表企业30天都在生产。如果某周设备检修或者放假直接把日历天数当成生产天数算出来的曲线整体会偏低。拿不准的时候可以先问客户一句“这个月正常开了多少天”多数情况下比拍脑袋准得多。4.2 Excel做法不需要代码按公式拉一张表就行如果只算一个用户Excel够用。我是这样建表的。第一张工作表放参数第二张工作表放模板。把24个模板系数放在第2行到第25行A列写小时编号0到23B列写对应时段的类型C列写模板系数。这里C列用的两班制模板我整理了一份相对常见的数值整体夜间低、白天高、中午略有回落、傍晚保持一段高负荷再下降。关键计算列可以这样设计。假设日总电量算出来是E_all代表日平均负荷就是E_all除以24。模板认为某小时用电是“代表日平均负荷乘该小时系数”。对峰段来说先算出峰段所有小时模板系数之和记为Cpeak再用“日峰电量”除以“Cpeak乘代表日平均负荷”得到峰段缩放系数。平段和谷段同理。最后某小时功率就是“代表日平均负荷乘该小时模板系数再乘该小时的时段缩放系数”。实际用Excel公式时不少朋友会绕晕我的建议是加一列辅助列来标识每个小时属于峰还是平还是谷然后用SUMIF把峰、平、谷的模板系数和分别算出来。这样公式不长逻辑也清楚。最后用二维折线图画出24点曲线10多分钟就能完成一个用户的粗算。4.3 Python一键脚本适合批量处理几十上百个用户手上超过十个用户的时候Excel逐个做比较痛苦。我自己写了一个极简脚本把模板、时段和参数都固定成字典输入参数后直接输出24点或96点负荷曲线并生成CSV文件。代码里没有用重度第三方库安装了Python就能跑。下面这段是核心函数。# -*- coding: utf-8 -*- # 电费单反推典型日负荷曲线简易版 # 默认分时峰 8-11 18-23平 11-18谷 23-8 # 使用时请按当地实际峰谷时段修改 PEAK_HOURS / FLAT_HOURS / VALLEY_HOURS PEAK_HOURS [8, 9, 10, 18, 19, 20, 21, 22] FLAT_HOURS [11, 12, 13, 14, 15, 16, 17] VALLEY_HOURS [23, 0, 1, 2, 3, 4, 5, 6, 7] # 两班制机械加工厂的典型系数相对全天平均负荷的倍数 TEMPLATE_TWO_SHIFT [ 0.32, 0.28, 0.26, 0.24, 0.28, 0.42, 0.75, 0.92, 1.06, 1.22, 1.18, 0.98, 0.75, 0.92, 1.12, 1.18, 1.10, 0.95, 0.88, 0.78, 0.68, 0.56, 0.46, 0.36 ] def segment_of(hour): if hour in PEAK_HOURS: return peak if hour in FLAT_HOURS: return flat return valley def rebuild_curve(peak_kwh, flat_kwh, valley_kwh, prod_days26, max_demandNone, templateNone, smoothTrue): if template is None: template TEMPLATE_TWO_SHIFT assert len(template) 24, 模板必须包含24个系数 daily_kwh (peak_kwh flat_kwh valley_kwh) / prod_days avg_load daily_kwh / 24.0 seg_kwh { peak: peak_kwh / prod_days, flat: flat_kwh / prod_days, valley: valley_kwh / prod_days, } seg_coef_sum {peak: 0.0, flat: 0.0, valley: 0.0} for h in range(24): seg_coef_sum[segment_of(h)] template[h] seg_scale {} for seg in seg_kwh: theoretical avg_load * seg_coef_sum[seg] if theoretical 0: seg_scale[seg] 1.0 else: seg_scale[seg] seg_kwh[seg] / theoretical power [] for h in range(24): p avg_load * template[h] * seg_scale[segment_of(h)] power.append(round(p, 2)) # 限幅如果超过最大需量压到需量内并把超出电量按比例回补到低负荷小时 if max_demand and max_demand 0: for _ in range(10): excess 0.0 for i in range(24): if power[i] max_demand: excess power[i] - max_demand power[i] max_demand if excess 0: break low_sum sum(1 for v in power if v max_demand * 0.8) if low_sum 0: break add_per_low excess / low_sum for i in range(24): if power[i] max_demand * 0.8: power[i] add_per_low # 平滑时段边界避免出现台阶跳变 if smooth: smoothed power[:] for h in [8, 11, 18, 23]: prev_h (h - 1) % 24 next_h (h 1) % 24 smoothed[h] (power[h] * 2 power[prev_h] power[next_h]) / 4.0 power [round(v, 2) for v in smoothed] return power, daily_kwh if __name__ __main__: curve, day_kwh rebuild_curve( peak_kwh128600, flat_kwh102400, valley_kwh88600, prod_days26, max_demand820, ) for h, val in enumerate(curve): print(f{h:02d}:00, {val:.2f}) print(f日总电量约: {day_kwh:.2f} kWh)输出会直接打印24个点小时为0到23对应每个整点的典型负荷。需要15分钟粒度时在整点之间做线性插值即可。如果要做成真正的“一键生成”可以把这段代码封装成一个带界面的小工具或者做成一个接收CSV参数的批处理脚本一批用户几条命令就能算完。4.4 一个真实算例某机械加工厂重构图长什么样我用上面代码跑一个示例。电费单参数当月峰段电量128600度平段电量102400度谷段电量88600度生产天数26天最大需量820kW行业选两班制机械加工。计算出来的代表日日总电量约12285度全天平均负荷约512kW。生成的24点曲线中上午9点到10点出现早高峰大概在700到760kW之间浮动。下午15点到17点出现日内最高区间接近800kW但没越过820kW这个最大需量。晚上20点到22点还有一个小高峰数值大约500到600kW之后逐渐回落到凌晨的低谷段。这个形态和两班制机械加工厂实际情况是吻合的。这个曲线拿去做储能测算会很直接每天凌晨23点到第二天7点之间的谷段负荷基本在100到300kW储能充电相对从容傍晚和下午的高负荷区间持续约3到5个小时适合安排放电策略。如果再叠加当地峰谷电价就能算出每天两充两放还是一充一放更划算。5. 常见问题与排查技巧实录5.1 最大需量这一栏电费单上没有怎么办不少按变压器容量计费的用户电费单上只写了容量没有最大需量。这时可以按变压器容量乘负载率来估计上限。我的经验是机械加工、纺织这类连续生产的行业负载率可能到0.7到0.8办公商业类负载率常在0.4到0.6之间。保守一点可以先按0.7估算然后用生成的曲线检查峰值如果超过估算的需量就再调低。也可以找用户要近几个月电费单如果某个月出现过按需量计费或电费单上有“最大需量”记录优先用那个值。实在没有时把生成的曲线峰值作为“估算最大负荷”在报告里注明这是估算值即可不要写在正式合同里。5.2 生成的曲线峰值超过了变压器容量或需量哪里出问题了最常见原因是行业模板选错了。比如用户实际是三班连续生产你套了两班制模板夜间负荷系数被压得很低白天被迫划出一个特别高的峰来凑电量结果峰值就虚高了。这时候换连续生产型模板重新跑一遍峰值通常会降下来。另一种情况是生产天数填少了。日总电量被放大整条曲线同比例抬高峰值自然就爆了。检查一下生产天数是否和实际开工情况一致。最后还有一种常见低级错误峰谷电量填反了比如把谷段电量填到峰段峰段缩放系数被拉得极大直接超出需量。遇到峰值异常先检查这几个原因通常能解决大半问题。5.3 各省峰谷时段不一样千万别套错同一个企业在A省是“峰8到11、18到23”搬到B省可能变成“峰10到12、14到19”差别很大。如果时段划分搞错峰平谷缩放系数作用的小时段就错了生成的曲线形态会严重失真。特别是做多个省份项目的时候不要用一套固定时段跑天下。我的处理方式是把各省典型的峰谷时段整理成一张配置表。代码里把时段定义提取成常量每个省份单独维护一份。Excel版本同样建议在工作表里做一个省份下拉菜单选中省份后自动带出对应时段。看起来是多花了一点工作量但能避免一大批由于时段不一致导致的返工。5.4 只拿一个月电费单季节差异没法体现单月电费单只能反映这一个月的生产状态。有些行业季节性特别强比如冷链物流夏季负荷比冬季高很多建材行业梅雨季停工来料加工企业跟着订单走每个月曲线差异可能很大。如果只拿某一个月的账单做方案很可能高估或低估全年收益。建议至少调取过去6到12个月的电费单逐月生成曲线然后分成“旺季典型曲线”和“淡季典型曲线”两组数据。做光伏时用淡季曲线看保底自用比例做储能时用旺季曲线校验需量管理效果这样项目方案才经得起时间检验。5.5 电费单上是四段电价尖峰、高峰、平、谷怎么处理有些省份在夏季执行尖峰电价账单上会把“尖峰电量”单独列出来。反推曲线时把尖峰并入高峰一起处理就行否则你会人为把尖峰时段弄成特别窄的高负荷平台。比如尖峰只有2小时高峰有6小时直接把2小时的尖峰电量除以2当成功率会得到一个虚高的尖峰值最大需量很容易被撑爆。处理逻辑是先把尖峰和高峰合并成“峰”段加总电量后填入前面的参数表再用代码或Excel重算。到了非尖峰执行月份再单独按照当月的时段规则跑一次然后对比两条曲线的差异。这样既避免了虚高峰值又能看出季节性尖峰对月最大需量的影响。6. 一些我自己的使用体会6.1 用这条曲线判断“能干什么”比“准不准”更重要很多人第一次看到反推曲线会问这准吗说实话单条曲线和真实每天逐时曲线比一定是有偏差的。但工程前期需要的不是100%精确而是区分度。用反推曲线能把“白天高负荷、需要光伏自用”的企业和“夜间高负荷、光伏收益差”的企业清楚分开也能把“最适合每天两充两放”的客户筛出来。做了这么多项目我的感受是前期判断用反推曲线足够支撑决策反而是没有曲线时凭感觉拍脑袋的误差更大。6.2 后续值得做的两个扩展方向第一个方向是积累自己的行业模板库。我给的模板只是通用值每个区域、每个细分行业的用电习惯都有差异。每做完一个项目如果客户后续提供了真实负荷数据可以把反推曲线和真实曲线对比再用真实数据反向修正这个行业的模板系数。做得多了模板库会越来越准这是别人拿不走的资产。第二个方向是做96点曲线和光伏发电曲线的叠加分析。目前用24点曲线做日尺度判断够用但如果要做储能充放电策略的日内仿真建议把24点线性插值成96点然后叠加光伏预测出力曲线得到净负荷曲线。净负荷曲线才是储能容量优化真正要用的基础数据这块扩展起来并不难却能把前期判断的精度再提高一大截。