using OrpaonEMS.App.Services; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace OrpaonEMS.App.Models { /// /// 判断是不是夜晚充的电量 /// 判断模型 /// public class NightChargEleModel { public NightChargEleModel(ConfigDataService configDataService) { MasterCheck = DischargInfo.NoComplete; SlaveCheck = DischargInfo.NoComplete; ConfigDataService = configDataService; } /// /// 是否开始校验 /// public bool IsStartCheck { get; set; } /// /// 夜间充的电 主储能箱是否放完 /// public DischargInfo MasterCheck { get; set; } /// /// 夜间充的电 从储能箱是否放完 /// public DischargInfo SlaveCheck { get; set; } private double _MasterSoc; /// /// 主储能柜的SOC /// 在新的一天中,根据SOC达到阈值决定是否夜间的电放完 /// public double MasterSoc { get { return _MasterSoc; } set { if (IsStartCheck) { if (_MasterSoc != value && value <= ConfigDataService.energyStorageRunConfig.BMSSocDownSignLimitValue) { MasterCheck = DischargInfo.DischargComplete; _MasterSoc = value; } } else { _MasterSoc = value; } } } private double _SlaveSoc; /// /// 从储能柜的SOC /// 在新的一天中,根据SOC达到阈值决定是否夜间的电放完 /// public double SlaveSoc { get { return _SlaveSoc; } set { if (IsStartCheck) { if (_SlaveSoc != value && value <= ConfigDataService.energyStorageRunConfig.BMSSocDownSignLimitValue) { SlaveCheck = DischargInfo.DischargComplete; _SlaveSoc = value; } } else { _SlaveSoc = value; } } } /// /// 配置数据 /// public ConfigDataService ConfigDataService { get; } ///// ///// 获取状态 ///// ///// //public bool GetCheckState() //{ // return MasterCheck && SlaveCheck; //} /// /// 设置一天的初始状态 /// public void SetDayInitState(double Mastersoc, double Slavesoc) { //比如从夜间切换到白天,算是一天的开始,判断此时的SOC是否被充满,如果是充满的话,则是属于夜间低谷的电量,需要标记 IsStartCheck = true; if (Mastersoc >= ConfigDataService.energyStorageRunConfig.BMSSocUpSignLimitValue * 0.8) { MasterCheck = DischargInfo.NoComplete; } else { MasterCheck = DischargInfo.DischargComplete; } //理论是从储能充电60% if (Slavesoc >= 50) { SlaveCheck = DischargInfo.NoComplete; } else { SlaveCheck = DischargInfo.DischargComplete; } } /// /// 设置白天结束的状态 /// public void SetDayEndState() { IsStartCheck = false; } } /// /// 放电信息 /// public enum DischargInfo { /// /// 放电放完了 /// DischargComplete = 1, /// /// 没有完成 /// NoComplete = 2 } }