EVCC 定时器功能:预约充电与智能调度

EVCC 定时器功能:预约充电与智能调度

【免费下载链接】evcc Sonne tanken ☀️🚘 【免费下载链接】evcc 项目地址: https://gitcode.com/GitHub_Trending/ev/evcc

概述

EVCC(Electric Vehicle Charge Controller)是一个开源电动汽车充电控制器和家庭能源管理系统。其定时器功能是实现智能充电调度的核心组件,允许用户根据电价、太阳能发电情况或个人需求来规划充电时间。本文将深入解析EVCC的定时器架构、实现原理和使用方法。

定时器核心架构

Timer基础组件

EVCC的定时器系统基于core/timer.go实现,提供了基础的计时功能:

// Timer测量开始和停止事件之间的活动时间
type Timer struct {
    sync.Mutex
    clck               clock.Clock
    started            time.Time
    wakeupAttemptsLeft int
}

const (
    wakeupTimeout  = 30 * time.Second  // 唤醒超时时间
    wakeupAttempts = 6                 // 最大唤醒尝试次数
)

type WakeUpEvent int

const (
    WakeUpTimerInactive WakeUpEvent = iota  // 定时器未激活
    WakeUpTimerElapsed                      // 定时器已过期
    WakeUpTimerFinished                     // 定时器已完成
)

充电计划系统

core/loadpoint_plan.go中,EVCC实现了完整的充电计划功能:

// 获取充电计划
func (lp *Loadpoint) GetPlan(targetTime time.Time, requiredDuration, precondition time.Duration) api.Rates {
    if lp.planner == nil || targetTime.IsZero() {
        return nil
    }
    return lp.planner.Plan(requiredDuration, precondition, targetTime)
}

// 检查充电计划是否有当前活动的时段
func (lp *Loadpoint) plannerActive() (active bool) {
    // 实现复杂的计划激活逻辑
}

功能特性

1. 智能时间调度

EVCC支持基于以下条件的智能调度:

调度类型描述适用场景
电价优化在电价低谷时段充电分时电价用户
太阳能优先优先使用太阳能发电充电光伏系统用户
目标时间在指定时间前完成充电日常通勤需求
SOC目标充至指定电量百分比电池维护

2. 计划管理

mermaid

3. 实时调整

EVCC的定时器支持动态调整:

  • 超时处理:30秒唤醒超时机制
  • 重试机制:最多6次唤醒尝试
  • 计划覆盖:处理计划超时和提前完成情况

配置示例

基本定时配置

loadpoints:
- title: "家用充电桩"
  plan:
    targetTime: "07:00"      # 目标完成时间
    targetSoc: 80            # 目标电量百分比
    mode: "offpeak"          # 充电模式:offpeak(低谷)、pv(太阳能)、instant(即时)

高级计划配置

loadpoints:
- title: "智能充电"
  plan:
    targetTime: "06:30"
    targetSoc: 90
    mode: "cost"             # 成本优化模式
    tariffs:
      - from: "00:00"
        to: "06:00"
        price: 0.25         # 低谷电价
      - from: "06:00" 
        to: "22:00"
        price: 0.45         # 平时电价
      - from: "22:00"
        to: "24:00"
        price: 0.35         # 高峰电价

技术实现细节

计划算法

EVCC使用先进的计划算法来优化充电过程:

// 计算所需充电时长
func (lp *Loadpoint) getPlanRequiredDuration(goal, maxPower float64) time.Duration {
    if lp.socBasedPlanning() {
        if lp.socEstimator == nil {
            return 0
        }
        return lp.socEstimator.RemainingChargeDuration(int(goal), maxPower)
    }
    energy := lp.remainingPlanEnergy(goal)
    return time.Duration(energy * 1e3 / maxPower * float64(time.Hour))
}

状态管理

mermaid

使用场景

场景1:日常通勤优化

痛点:每天早晨需要满电出发,但不想支付高额电费

解决方案

plan:
  targetTime: "06:30"
  targetSoc: 100
  mode: "offpeak"
  # 系统会自动在电价最低的时段完成充电

场景2:太阳能最大化利用

痛点:希望尽可能使用自发电,减少电网用电

解决方案

plan:
  targetTime: "18:00" 
  targetSoc: 80
  mode: "pv"
  # 优先使用太阳能,不足时再用电网补足

场景3:成本最优充电

痛点:电费支出过高,需要智能优化充电成本

解决方案

plan:
  targetTime: "07:00"
  targetSoc: 90  
  mode: "cost"
  tariffs:
    - time: "00:00-06:00", price: 0.20
    - time: "06:00-22:00", price: 0.50
    - time: "22:00-24:00", price: 0.35

最佳实践

1. 计划设置建议

参数推荐值说明
targetSoc80-90%延长电池寿命
targetTime出发前1小时预留缓冲时间
模式选择根据需求选择成本/环保/速度

2. 监控与调整

# 查看当前充电计划
evcc status --plan

# 强制重新计算计划
evcc plan recalculate

# 查看计划详细时间表
evcc plan details

3. 故障排除

常见问题及解决方案:

  1. 计划无法执行:检查充电桩连接状态
  2. 充电过早停止:调整smallSlotDuration参数
  3. 计划超时:增加wakeupAttempts

性能优化

内存管理

EVCC的定时器使用轻量级设计:

  • 单次计划内存占用 < 1KB
  • 支持并发多个充电计划
  • 自动垃圾回收过期计划

计算效率

// 使用高效的时间计算算法
func plannerActive() bool {
    // 优化的时间比较逻辑
    // 减少不必要的计划重计算
    return active
}

总结

EVCC的定时器功能提供了一个强大而灵活的充电调度系统,支持多种智能充电场景。通过合理的配置和使用,用户可以:

  1. 节省电费:利用低谷电价时段充电
  2. 环保充电:优先使用可再生能源
  3. 便捷管理:自动完成充电计划
  4. 电池保护:智能控制充电策略

该系统的模块化设计和开源特性使其能够不断演进,满足日益复杂的电动汽车充电需求。随着智能电网技术的发展,EVCC的定时器功能将继续发挥重要作用,为用户提供更加智能、经济的充电体验。

【免费下载链接】evcc Sonne tanken ☀️🚘 【免费下载链接】evcc 项目地址: https://gitcode.com/GitHub_Trending/ev/evcc

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值