6个物性参数和干度的公式的更改
This commit is contained in:
@@ -32,9 +32,10 @@ namespace CapMachine.Wpf.Services
|
||||
public ILogService Logger { get; }
|
||||
public MachineRtDataService MachineRtDataService { get; }
|
||||
public IDialogService DialogService { get; }
|
||||
private readonly object _refpropLock = new object();
|
||||
private readonly PPCSuperheatSubcoolCalculator _superheatSubcoolCalculator;
|
||||
private readonly PPCThermodynamicSixResultsCalculator _thermodynamicSixResultsCalculator;
|
||||
|
||||
private readonly EnthalpyDrynessCalculator _enthalpyDrynessCalculator;
|
||||
|
||||
/// <summary>
|
||||
/// 标签中心
|
||||
@@ -71,39 +72,39 @@ namespace CapMachine.Wpf.Services
|
||||
|
||||
InhTempTag = TagManager.DicTags.GetValueOrDefault("吸气温度[℃]");
|
||||
|
||||
//InhTempTag = TagManager.DicTags.GetValueOrDefault("吸气温度[℃]")!;
|
||||
//ComCapBusVolTag = TagManager.DicTags.GetValueOrDefault("通讯母线电压[V]");
|
||||
//ComCapBusCurTag = TagManager.DicTags.GetValueOrDefault("通讯母线电流[A]");
|
||||
//ComCapPwTag = TagManager.DicTags.GetValueOrDefault("通讯功率[W]");
|
||||
//OS2TempTag = TagManager.DicTags.GetValueOrDefault("吸气混合器温度[℃]");
|
||||
|
||||
//TxvFrTempTag = TagManager.DicTags.GetValueOrDefault("膨胀阀前温度[℃]")!;
|
||||
//TxvFrPressTag = TagManager.DicTags.GetValueOrDefault("膨胀阀前压力[BarA]")!;
|
||||
|
||||
TxvFrTempTag = TagManager.DicTags.GetValueOrDefault("膨胀阀前温度[℃]");
|
||||
|
||||
TxvFrPressTag = TagManager.DicTags.GetValueOrDefault("膨胀阀前压力[BarA]");
|
||||
|
||||
//LiqRefFlowTag = TagManager.DicTags.GetValueOrDefault("液冷媒流量[kg/h]");
|
||||
GasPreValvePressTag = TagManager.DicTags.GetValueOrDefault("气路阀前压力[BarA]");
|
||||
GasPreValveTempTag = TagManager.DicTags.GetValueOrDefault("气路阀前温度[℃]");
|
||||
|
||||
//kg/h
|
||||
DrynessTag = TagManager.DicTags.GetValueOrDefault("干度[-]");
|
||||
if (DrynessTag == null)
|
||||
{
|
||||
DrynessTag = TagManager.DicTags.GetValueOrDefault("干度");
|
||||
}
|
||||
|
||||
VRVTag = TagManager.DicTags.GetValueOrDefault("冷媒流量[L/min]");
|
||||
VRVTag = TagManager.DicTags.GetValueOrDefault("冷媒流量[kg/h]");
|
||||
if (VRVTag == null)
|
||||
{
|
||||
VRVTag = TagManager.DicTags.GetValueOrDefault("冷媒流量[L/min]");
|
||||
}
|
||||
|
||||
//润滑油流量
|
||||
LiqRefFlowTag = TagManager.DicTags.GetValueOrDefault("液冷媒流量[kg/h]");
|
||||
if (LiqRefFlowTag == null)
|
||||
{
|
||||
LiqRefFlowTag = TagManager.DicTags.GetValueOrDefault("液体流量[kg/h]");
|
||||
}
|
||||
|
||||
LubeFlowTag = TagManager.DicTags.GetValueOrDefault("润滑油流量[L/min]");
|
||||
|
||||
|
||||
//Cond1TempTag = TagManager.DicTags.GetValueOrDefault("冷凝器出口水温[℃]");
|
||||
//CondInTempTag = TagManager.DicTags.GetValueOrDefault("冷凝器进口温度[℃]");
|
||||
|
||||
//Superheat = TagManager.DicTags.GetValueOrDefault("过热度[K]");
|
||||
//Subcool = TagManager.DicTags.GetValueOrDefault("过冷度[K]");
|
||||
LubeFlowTag = TagManager.DicTags.GetValueOrDefault("润滑油流量[kg/h]");
|
||||
if (LubeFlowTag == null)
|
||||
{
|
||||
LubeFlowTag = TagManager.DicTags.GetValueOrDefault("润滑油流量[L/min]");
|
||||
}
|
||||
|
||||
Superheat = TagManager.DicTags.GetValueOrDefault("过热度[K]");
|
||||
|
||||
|
||||
Subcool = TagManager.DicTags.GetValueOrDefault("过冷度[K]");
|
||||
|
||||
HeatingCapacity = TagManager.DicTags.GetValueOrDefault("制热量Qh[KW]");
|
||||
@@ -113,15 +114,37 @@ namespace CapMachine.Wpf.Services
|
||||
COPCool = TagManager.DicTags.GetValueOrDefault("压缩机性能系数(制冷)[K]");
|
||||
VoltricEff = TagManager.DicTags.GetValueOrDefault("容积效率nv[%]");
|
||||
|
||||
|
||||
SuperHeatCoolConfig.FluidsPath = ConfigHelper.GetValue("FluidsPath");
|
||||
SuperHeatCoolConfig.Cryogen = ConfigHelper.GetValue("Cryogen");
|
||||
_superheatSubcoolCalculator = new PPCSuperheatSubcoolCalculator();
|
||||
_thermodynamicSixResultsCalculator = new PPCThermodynamicSixResultsCalculator();
|
||||
_thermodynamicSixResultsCalculator = new PPCThermodynamicSixResultsCalculator(_refpropLock);
|
||||
_enthalpyDrynessCalculator = new EnthalpyDrynessCalculator(_refpropLock);
|
||||
ReloadTherdyH3TempOffset();
|
||||
|
||||
RtScanDeviceStart();
|
||||
}
|
||||
|
||||
private const string TherdyH3TempOffsetConfigKey = "Therdy_H3TempOffset_C";
|
||||
|
||||
public void ReloadTherdyH3TempOffset()
|
||||
{
|
||||
double offsetC = -10.0;
|
||||
try
|
||||
{
|
||||
string raw = ConfigHelper.GetValue(TherdyH3TempOffsetConfigKey);
|
||||
if (!string.IsNullOrWhiteSpace(raw) && double.TryParse(raw, out var parsed))
|
||||
{
|
||||
offsetC = parsed;
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Logger?.Error($"读取 {TherdyH3TempOffsetConfigKey} 失败: {ex.Message}");
|
||||
}
|
||||
|
||||
_thermodynamicSixResultsCalculator.SetH3TempOffset_C(offsetC);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 当前的配置
|
||||
/// </summary>
|
||||
@@ -227,7 +250,6 @@ namespace CapMachine.Wpf.Services
|
||||
/// </summary>
|
||||
public ITag LubeFlowTag { get; set; }
|
||||
|
||||
|
||||
public ITag HeatingCapacity { get; set; }
|
||||
public ITag COPHeat { get; set; }
|
||||
public ITag IsentrpEff { get; set; }
|
||||
@@ -235,7 +257,6 @@ namespace CapMachine.Wpf.Services
|
||||
public ITag COPCool { get; set; }
|
||||
public ITag VoltricEff { get; set; }
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 风量数据-乘以系数的后的最终结果
|
||||
/// </summary>
|
||||
@@ -261,6 +282,48 @@ namespace CapMachine.Wpf.Services
|
||||
/// </summary>
|
||||
private bool DebugLog { get; set; } = false;
|
||||
|
||||
private double _HeatingCapacityQh_kW;
|
||||
public double HeatingCapacityQh_kW
|
||||
{
|
||||
get { return _HeatingCapacityQh_kW; }
|
||||
set { _HeatingCapacityQh_kW = value; RaisePropertyChanged(); }
|
||||
}
|
||||
|
||||
private double _COPHeating;
|
||||
public double COPHeating
|
||||
{
|
||||
get { return _COPHeating; }
|
||||
set { _COPHeating = value; RaisePropertyChanged(); }
|
||||
}
|
||||
|
||||
private double _IsentropicEfficiencyPct;
|
||||
public double IsentropicEfficiencyPct
|
||||
{
|
||||
get { return _IsentropicEfficiencyPct; }
|
||||
set { _IsentropicEfficiencyPct = value; RaisePropertyChanged(); }
|
||||
}
|
||||
|
||||
private double _CoolingCapacityQc_kW;
|
||||
public double CoolingCapacityQc_kW
|
||||
{
|
||||
get { return _CoolingCapacityQc_kW; }
|
||||
set { _CoolingCapacityQc_kW = value; RaisePropertyChanged(); }
|
||||
}
|
||||
|
||||
private double _COPCooling;
|
||||
public double COPCooling
|
||||
{
|
||||
get { return _COPCooling; }
|
||||
set { _COPCooling = value; RaisePropertyChanged(); }
|
||||
}
|
||||
|
||||
private double _VolumetricEfficiencyPct;
|
||||
public double VolumetricEfficiencyPct
|
||||
{
|
||||
get { return _VolumetricEfficiencyPct; }
|
||||
set { _VolumetricEfficiencyPct = value; RaisePropertyChanged(); }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// PLC扫描线程
|
||||
/// </summary>
|
||||
@@ -281,6 +344,21 @@ namespace CapMachine.Wpf.Services
|
||||
}
|
||||
}
|
||||
|
||||
if (TryUpdateDryness(out var drynessErr))
|
||||
{
|
||||
if (!string.IsNullOrWhiteSpace(drynessErr))
|
||||
{
|
||||
Logger?.Error($"干度计算警告: {drynessErr}");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!string.IsNullOrWhiteSpace(drynessErr))
|
||||
{
|
||||
Logger?.Error($"干度计算失败: {drynessErr}");
|
||||
}
|
||||
}
|
||||
|
||||
if (TryUpdateThermodynamicSixResults(out var thermoErr))
|
||||
{
|
||||
if (!string.IsNullOrWhiteSpace(thermoErr))
|
||||
@@ -305,27 +383,12 @@ namespace CapMachine.Wpf.Services
|
||||
});
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 更新过热度与过冷度结果。
|
||||
/// </summary>
|
||||
/// <param name="error">
|
||||
/// 错误汇总输出。
|
||||
/// 当两个结果都失败时,返回拼接后的失败原因;
|
||||
/// 当仅一个结果失败时,只返回该项失败原因;
|
||||
/// 当至少有一项成功更新时,方法返回 <see langword="true"/>。
|
||||
/// </param>
|
||||
/// <returns>
|
||||
/// 是否至少成功更新了一个结果。
|
||||
/// 该方法保持原有行为:过热度和过冷度彼此独立,只要其中之一成功就返回 <see langword="true"/>。
|
||||
/// </returns>
|
||||
private bool TryUpdateSuperheatAndSubcool(out string error)
|
||||
{
|
||||
error = string.Empty;
|
||||
bool updated = false;
|
||||
StringBuilder errorBuilder = new StringBuilder();
|
||||
|
||||
// 第一段:收集过热度所需标签,并把实时值直接交给独立计算类。
|
||||
// PPCService 只负责“取值 + 回写”,具体热力学过程由 PPCSuperheatSubcoolCalculator 承担。
|
||||
if (InhPressTag == null || InhTempTag == null || Superheat == null)
|
||||
{
|
||||
AppendCalculationError(errorBuilder, "缺少过热度计算标签");
|
||||
@@ -340,8 +403,6 @@ namespace CapMachine.Wpf.Services
|
||||
AppendCalculationError(errorBuilder, superheatErr);
|
||||
}
|
||||
|
||||
// 第二段:收集过冷度所需标签,并按同样方式委托给独立计算类。
|
||||
// 两个结果互不阻塞,保持与旧实现一致的“部分成功也可回写”的策略。
|
||||
if (TxvFrPressTag == null || TxvFrTempTag == null || Subcool == null)
|
||||
{
|
||||
AppendCalculationError(errorBuilder, "缺少过冷度计算标签");
|
||||
@@ -375,234 +436,67 @@ namespace CapMachine.Wpf.Services
|
||||
errorBuilder.Append(error);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 按图片的最终流程计算干度:
|
||||
/// 1) 质量流量加权混合焓 h_mix = (h_vap*mg + h_liq*ml) / (mg + ml)
|
||||
/// 2) 干度 x = (h_mix - h_l) / (h_v - h_l),并限幅到 [0,1]
|
||||
///
|
||||
/// 入参单位:
|
||||
/// - hVap_kJkg, hLiq_kJkg, hSatL_kJkg, hSatV_kJkg 均为 kJ/kg
|
||||
/// - mGas_kg_h, mLiq_kg_h 均为 kg/h
|
||||
/// 返回:true 表示成功,输出 x∈[0,1] 与 h_mix;false 返回 error
|
||||
/// </summary>
|
||||
/// <param name="hVap_kJkg">气相质量焓 h_vap [kJ/kg]</param>
|
||||
/// <param name="hLiq_kJkg">液相质量焓 h_liq [kJ/kg]</param>
|
||||
/// <param name="mGas_kg_h">气体质量流量 mg [kg/h]</param>
|
||||
/// <param name="mLiq_kg_h">液体质量流量 ml [kg/h]</param>
|
||||
/// <param name="hSatL_kJkg">饱和液质量焓 h_l [kJ/kg]</param>
|
||||
/// <param name="hSatV_kJkg">饱和气质量焓 h_v [kJ/kg]</param>
|
||||
/// <param name="dryness">输出干度 x ∈ [0,1]</param>
|
||||
/// <param name="hMix_kJkg">输出混合后总比焓 h_mix [kJ/kg]</param>
|
||||
/// <param name="error">Err</param>
|
||||
/// <returns></returns>
|
||||
public bool TryComputeDrynessByEnthalpy(
|
||||
double hVap_kJkg, // 气相质量焓 h_vap [kJ/kg]
|
||||
double hLiq_kJkg, // 液相质量焓 h_liq [kJ/kg]
|
||||
double mGas_kg_h, // 气体质量流量 mg [kg/h]
|
||||
double mLiq_kg_h, // 液体质量流量 ml [kg/h]
|
||||
double hSatL_kJkg, // 饱和液质量焓 h_l [kJ/kg]
|
||||
double hSatV_kJkg, // 饱和气质量焓 h_v [kJ/kg]
|
||||
out double dryness, // 输出干度 x ∈ [0,1]
|
||||
out double hMix_kJkg, // 输出混合后总比焓 h_mix [kJ/kg]
|
||||
out string error)
|
||||
private bool TryUpdateDryness(out string error)
|
||||
{
|
||||
dryness = double.NaN;
|
||||
hMix_kJkg = double.NaN;
|
||||
error = string.Empty;
|
||||
bool updated = false;
|
||||
StringBuilder errorBuilder = new StringBuilder();
|
||||
|
||||
// 1) 合法性校验
|
||||
if (double.IsNaN(hVap_kJkg) || double.IsNaN(hLiq_kJkg) || double.IsNaN(hSatL_kJkg) || double.IsNaN(hSatV_kJkg))
|
||||
if (GasPreValvePressTag == null || GasPreValveTempTag == null || TxvFrPressTag == null || TxvFrTempTag == null || InhPressTag == null)
|
||||
{
|
||||
error = "输入焓值存在 NaN";
|
||||
AppendCalculationError(errorBuilder, "缺少干度计算压力/温度标签");
|
||||
error = errorBuilder.ToString();
|
||||
return false;
|
||||
}
|
||||
if (double.IsNaN(mGas_kg_h) || double.IsNaN(mLiq_kg_h))
|
||||
if (VRVTag == null || LiqRefFlowTag == null)
|
||||
{
|
||||
error = "输入质量流量存在 NaN";
|
||||
return false;
|
||||
}
|
||||
// 负值处理:小于 0 视为 0(避免传感器噪声或符号错误影响)
|
||||
double mg = Math.Max(0.0, mGas_kg_h);
|
||||
double ml = Math.Max(0.0, mLiq_kg_h);
|
||||
double mSum = mg + ml;
|
||||
if (mSum <= 0)
|
||||
{
|
||||
error = "气液质量流量之和为 0,无法进行加权混合焓计算";
|
||||
AppendCalculationError(errorBuilder, "缺少干度计算流量标签");
|
||||
error = errorBuilder.ToString();
|
||||
return false;
|
||||
}
|
||||
|
||||
// 2) 质量流量加权混合焓(严格按图片:上、下两路相加后除以总流量)
|
||||
hMix_kJkg = (hVap_kJkg * mg + hLiq_kJkg * ml) / mSum;
|
||||
|
||||
// 3) 干度计算:x = (h_mix - h_l) / (h_v - h_l)
|
||||
double denom = (hSatV_kJkg - hSatL_kJkg);
|
||||
const double eps = 1e-9;
|
||||
if (Math.Abs(denom) < eps)
|
||||
double lubeFlowKgPerH = 0.0;
|
||||
if (LubeFlowTag != null)
|
||||
{
|
||||
error = "饱和气/液焓差过小,无法计算干度(可能接近临界点或输入异常)";
|
||||
return false;
|
||||
lubeFlowKgPerH = LubeFlowTag.EngPvValue;
|
||||
}
|
||||
|
||||
double x = (hMix_kJkg - hSatL_kJkg) / denom;
|
||||
var drynessResult = _enthalpyDrynessCalculator.Calculate(
|
||||
new EnthalpyDrynessCalculator.Input(
|
||||
gasPreValvePressBarA: GasPreValvePressTag.EngPvValue,
|
||||
gasPreValveTempC: GasPreValveTempTag.EngPvValue,
|
||||
txvFrPressBarA: TxvFrPressTag.EngPvValue,
|
||||
txvFrTempC: TxvFrTempTag.EngPvValue,
|
||||
inhPressBarA: InhPressTag.EngPvValue,
|
||||
vrvFlowKgPerH: VRVTag.EngPvValue,
|
||||
liqRefFlowKgPerH: LiqRefFlowTag.EngPvValue,
|
||||
lubeFlowKgPerH: lubeFlowKgPerH));
|
||||
|
||||
// 4) 限幅到 [0,1]
|
||||
if (double.IsNaN(x) || double.IsInfinity(x))
|
||||
if (drynessResult.IsDryness1Success)
|
||||
{
|
||||
error = "干度计算结果异常(NaN/Inf)";
|
||||
return false;
|
||||
if (DrynessTag != null)
|
||||
{
|
||||
DrynessTag.EngPvValue = Math.Round(drynessResult.Dryness1_01, 4);
|
||||
}
|
||||
updated = true;
|
||||
}
|
||||
dryness = Math.Min(1.0, Math.Max(0.0, x));
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 按图片的最终流程计算干度2:
|
||||
/// 干度2的计算:临时用作为对比使用
|
||||
/// 1) 质量流量加权混合焓 h_mix = (h_vap*mg + h_liq*ml) / (mg + ml)
|
||||
/// 2) 干度 x = (h_mix - h_l) / (h_v - h_l),并限幅到 [0,1]
|
||||
///
|
||||
/// 入参单位:
|
||||
/// - hVap_kJkg, hLiq_kJkg, hSatL_kJkg, hSatV_kJkg 均为 kJ/kg
|
||||
/// - mGas_kg_h, mLiq_kg_h 均为 kg/h
|
||||
/// 返回:true 表示成功,输出 x∈[0,1] 与 h_mix;false 返回 error
|
||||
/// </summary>
|
||||
/// <param name="hVap_kJkg">气相质量焓 h_vap [kJ/kg]</param>
|
||||
/// <param name="hLiq_kJkg">液相质量焓 h_liq [kJ/kg]</param>
|
||||
/// <param name="mGas_kg_h">气体质量流量 mg [kg/h]</param>
|
||||
/// <param name="mLiq_kg_h">液体质量流量 ml [kg/h]</param>
|
||||
/// <param name="hSatL_kJkg">饱和液质量焓 h_l [kJ/kg]</param>
|
||||
/// <param name="hSatV_kJkg">饱和气质量焓 h_v [kJ/kg]</param>
|
||||
/// <param name="dryness">输出干度 x ∈ [0,1]</param>
|
||||
/// <param name="hMix_kJkg">输出混合后总比焓 h_mix [kJ/kg]</param>
|
||||
/// <param name="error">Err</param>
|
||||
/// <returns></returns>
|
||||
public bool TryComputeDrynessByEnthalpy2(
|
||||
double hVap_kJkg, // 气相质量焓 h_vap [kJ/kg]
|
||||
double hLiq_kJkg, // 液相质量焓 h_liq [kJ/kg]
|
||||
double mGas_kg_h, // 气体质量流量 mg [kg/h]
|
||||
double lubeFlow_kg_h, // 润滑油流量 mg [kg/h]
|
||||
double mLiq_kg_h, // 液体质量流量 ml [kg/h]
|
||||
double hSatL_kJkg, // 饱和液质量焓 h_l [kJ/kg]
|
||||
double hSatV_kJkg, // 饱和气质量焓 h_v [kJ/kg]
|
||||
out double dryness, // 输出干度 x ∈ [0,1]
|
||||
out double hMix_kJkg, // 输出混合后总比焓 h_mix [kJ/kg]
|
||||
out string error)
|
||||
{
|
||||
dryness = double.NaN;
|
||||
hMix_kJkg = double.NaN;
|
||||
error = string.Empty;
|
||||
|
||||
// 1) 合法性校验
|
||||
if (double.IsNaN(hVap_kJkg) || double.IsNaN(hLiq_kJkg) || double.IsNaN(hSatL_kJkg) || double.IsNaN(hSatV_kJkg))
|
||||
else
|
||||
{
|
||||
error = "输入焓值存在 NaN";
|
||||
return false;
|
||||
}
|
||||
if (double.IsNaN(mGas_kg_h) || double.IsNaN(mLiq_kg_h))
|
||||
{
|
||||
error = "输入质量流量存在 NaN";
|
||||
return false;
|
||||
}
|
||||
// 负值处理:小于 0 视为 0(避免传感器噪声或符号错误影响)
|
||||
//double mg1 = Math.Max(0.0, mGas_kg_h);
|
||||
double mg = Math.Max(0.0, mGas_kg_h) + Math.Max(0.0, lubeFlow_kg_h); // 这个是改动 气体流量再加上润滑油流量
|
||||
double ml = Math.Max(0.0, mLiq_kg_h);
|
||||
double mSum = mg + ml;
|
||||
if (mSum <= 0)
|
||||
{
|
||||
error = "气液质量流量之和为 0,无法进行加权混合焓计算";
|
||||
return false;
|
||||
AppendCalculationError(errorBuilder, drynessResult.Error1);
|
||||
}
|
||||
|
||||
// 2) 质量流量加权混合焓(严格按图片:上、下两路相加后除以总流量)
|
||||
hMix_kJkg = (hVap_kJkg * mg + hLiq_kJkg * ml) / mSum;
|
||||
|
||||
// 3) 干度计算:x = (h_mix - h_l) / (h_v - h_l)
|
||||
double denom = (hSatV_kJkg - hSatL_kJkg);
|
||||
const double eps = 1e-9;
|
||||
if (Math.Abs(denom) < eps)
|
||||
if (drynessResult.IsDryness2Success)
|
||||
{
|
||||
error = "饱和气/液焓差过小,无法计算干度(可能接近临界点或输入异常)";
|
||||
return false;
|
||||
DrynessTag2Value = Math.Round(drynessResult.Dryness2_01, 4);
|
||||
updated = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
AppendCalculationError(errorBuilder, drynessResult.Error2);
|
||||
}
|
||||
|
||||
double x = (hMix_kJkg - hSatL_kJkg) / denom;
|
||||
|
||||
// 4) 限幅到 [0,1]
|
||||
if (double.IsNaN(x) || double.IsInfinity(x))
|
||||
{
|
||||
error = "干度计算结果异常(NaN/Inf)";
|
||||
return false;
|
||||
}
|
||||
dryness = Math.Min(1.0, Math.Max(0.0, x));
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
///制热量、压缩机性能系数COP(制热)、等熵效率、制冷量、压缩机性能系数COP(制冷)、容积效率 计算
|
||||
#region
|
||||
|
||||
private double _HeatingCapacityQh_kW;
|
||||
/// <summary>
|
||||
/// 制热量 Qh [kW]
|
||||
/// </summary>
|
||||
public double HeatingCapacityQh_kW
|
||||
{
|
||||
get { return _HeatingCapacityQh_kW; }
|
||||
set { _HeatingCapacityQh_kW = value; RaisePropertyChanged(); }
|
||||
}
|
||||
|
||||
private double _COPHeating;
|
||||
/// <summary>
|
||||
/// 压缩机性能系数 COP(制热)[-]
|
||||
/// </summary>
|
||||
public double COPHeating
|
||||
{
|
||||
get { return _COPHeating; }
|
||||
set { _COPHeating = value; RaisePropertyChanged(); }
|
||||
}
|
||||
|
||||
private double _IsentropicEfficiencyPct;
|
||||
/// <summary>
|
||||
/// 等熵效率 ηs [%]
|
||||
/// </summary>
|
||||
public double IsentropicEfficiencyPct
|
||||
{
|
||||
get { return _IsentropicEfficiencyPct; }
|
||||
set { _IsentropicEfficiencyPct = value; RaisePropertyChanged(); }
|
||||
}
|
||||
|
||||
private double _CoolingCapacityQc_kW;
|
||||
/// <summary>
|
||||
/// 制冷量 Qc [kW]
|
||||
/// </summary>
|
||||
public double CoolingCapacityQc_kW
|
||||
{
|
||||
get { return _CoolingCapacityQc_kW; }
|
||||
set { _CoolingCapacityQc_kW = value; RaisePropertyChanged(); }
|
||||
}
|
||||
|
||||
private double _COPCooling;
|
||||
/// <summary>
|
||||
/// 压缩机性能系数 COP(制冷)[-]
|
||||
/// </summary>
|
||||
public double COPCooling
|
||||
{
|
||||
get { return _COPCooling; }
|
||||
set { _COPCooling = value; RaisePropertyChanged(); }
|
||||
}
|
||||
|
||||
private double _VolumetricEfficiencyPct;
|
||||
/// <summary>
|
||||
/// 容积效率 ηv [%]
|
||||
/// </summary>
|
||||
public double VolumetricEfficiencyPct
|
||||
{
|
||||
get { return _VolumetricEfficiencyPct; }
|
||||
set { _VolumetricEfficiencyPct = value; RaisePropertyChanged(); }
|
||||
error = errorBuilder.ToString();
|
||||
return updated;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -690,11 +584,6 @@ namespace CapMachine.Wpf.Services
|
||||
error = "缺少总流量(冷媒流量)标签";
|
||||
return false;
|
||||
}
|
||||
if (LubeFlowTag == null)
|
||||
{
|
||||
error = "缺少油流量标签";
|
||||
return false;
|
||||
}
|
||||
if (InhPressTag == null || InhTempTag == null)
|
||||
{
|
||||
error = "缺少吸气压力/吸气温度标签";
|
||||
@@ -715,10 +604,15 @@ namespace CapMachine.Wpf.Services
|
||||
error = "缺少转速标签";
|
||||
return false;
|
||||
}
|
||||
if (!TryGetCompressorDisplacement_cc(out var displacementCc, out var displacementErr))
|
||||
if (!TryGetCompressorDisplacement_cc(out var displacementCc, out _))
|
||||
{
|
||||
error = displacementErr;
|
||||
return false;
|
||||
displacementCc = double.NaN;
|
||||
}
|
||||
|
||||
double oilFlowKgPerH = 0.0;
|
||||
if (LubeFlowTag != null)
|
||||
{
|
||||
oilFlowKgPerH = LubeFlowTag.EngPvValue;
|
||||
}
|
||||
|
||||
// 将实时标签值与配置值组装为独立计算类可直接消费的输入对象。
|
||||
@@ -726,7 +620,7 @@ namespace CapMachine.Wpf.Services
|
||||
{
|
||||
CompressorPowerW = HVPwTag.EngPvValue,
|
||||
TotalMassFlowKgPerHour = VRVTag.EngPvValue,
|
||||
OilMassFlowKgPerHour = LubeFlowTag.EngPvValue,
|
||||
OilMassFlowKgPerHour = oilFlowKgPerH,
|
||||
SuctionPressureBarA = InhPressTag.EngPvValue,
|
||||
SuctionTemperatureC = InhTempTag.EngPvValue,
|
||||
DischargePressureBarA = ExPressTag.EngPvValue,
|
||||
@@ -776,7 +670,5 @@ namespace CapMachine.Wpf.Services
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user