这一版的干度有跳动的,需要解决

This commit is contained in:
2025-10-17 12:03:02 +08:00
parent 4cf5429a8d
commit 663defc0ff

View File

@@ -18,12 +18,12 @@ namespace CapMachine.Wpf.Services
/// 计算扫描 Task
/// </summary>
private static Task CalcTask { get; set; }
private static readonly Logger Logger = LogManager.GetCurrentClassLogger();
public ConfigService ConfigService { get; }
private IEventAggregator _EventAggregator { get; set; }
public DataRecordService DataRecordService { get; }
public SysRunService SysRunServer { get; }
public ILogService Logger { get; }
public MachineRtDataService MachineRtDataService { get; }
public IDialogService DialogService { get; }
@@ -36,7 +36,7 @@ namespace CapMachine.Wpf.Services
/// 实例化
/// </summary>
public PPCService(ConfigService configService, IEventAggregator eventAggregator,
DataRecordService dataRecordService, SysRunService sysRunService,
DataRecordService dataRecordService, SysRunService sysRunService, ILogService logService,
MachineRtDataService machineRtDataService, IDialogService dialogService)
{
ConfigService = configService;
@@ -44,6 +44,7 @@ namespace CapMachine.Wpf.Services
_EventAggregator = eventAggregator;
DataRecordService = dataRecordService;
SysRunServer = sysRunService;
Logger = logService;
MachineRtDataService = machineRtDataService;
DialogService = dialogService;
TagManager = MachineRtDataService.TagManger;
@@ -201,13 +202,9 @@ namespace CapMachine.Wpf.Services
public ShortValueTag GasPreValveTempTag { get; set; }
/// <summary>
/// 冷媒流量
/// 需要计算的结果是气体质量流量kg/h=冷媒流量-液冷媒流量
///
/// LabVIEW 中该量为常值;此处提供为可配置常量,实时计算直接使用,不再读取 Tag。
/// 气相质量流量kg/h
/// VRV 安装在气路阀前段,测量值单位为 kg/h可直接作为 mg气体质量流量参与干度加权计算。
/// 若值<=0则视为无效将导致干度计算失败并置0。
/// 气体流量=冷媒流量-液冷媒流量
///
/// </summary>
public ShortValueTag VRVTag { get; set; }
@@ -319,7 +316,7 @@ namespace CapMachine.Wpf.Services
else
{
Superheat.PVModel.EngValue = 0;
Logger.Warn($"过热度计算失败:{shErr}");
Logger.Error($"过热度计算失败:{shErr}");
}
if (TryComputeSubcoolK_ByBarA(TxvFrPressTag.PVModel.EngValue, TxvFrTempTag.PVModel.EngValue, out double subcoolK, out string scErr))
@@ -327,7 +324,7 @@ namespace CapMachine.Wpf.Services
else
{
Subcool.PVModel.EngValue = 0;
Logger.Warn($"过冷度计算失败:{scErr}");
Logger.Error($"过冷度计算失败:{scErr}");
}
// 干度计算LabVIEW 严格流程,质量流量加权):
@@ -351,7 +348,7 @@ namespace CapMachine.Wpf.Services
{
DrynessTag.PVModel.EngValue = 0;
}
Logger.Warn($"质量流量加权干度必要测点缺失已将干度置0。缺失: {string.Join(", ", missing)}");
Logger.Error($"质量流量加权干度必要测点缺失已将干度置0。缺失: {string.Join(", ", missing)}");
}
else
{
@@ -367,40 +364,22 @@ namespace CapMachine.Wpf.Services
double tlv = TxvFrTempTag.PVModel.EngValue;//膨胀阀前温度 = SUBCOOL出口温度 =液路阀前温度
//tlv = 64.96428;
//液体流量=液冷媒流量 kg/h
//气体流量=冷媒流量-液体流量 kg/h
// 单位说明:
// - 液体质量流量 ml[kg/h] = LiqRefFlowTag.PVModel.EngValue
// - 气体质量流量 mg[kg/h] = VRVTag.PVModel.EngValueVRV 位于气管,单位已为 kg/h
double GasMassFlowKgPerH, LiquidMassFlowKgPerH;
LiquidMassFlowKgPerH = LiqRefFlowTag.PVModel.EngValue; // [kg/h]
//GasMassFlowKgPerH = Math.Max(0.0, VRVTag?.PVModel?.EngValue ?? 0.0); // [kg/h]
GasMassFlowKgPerH = (double)(VRVTag?.PVModel?.EngValue - LiquidMassFlowKgPerH);
////单位转换和数据计算
//// VRV 为体积流量 [L/min],需结合管段相态与 T/P 计算密度后换算为质量流量 [kg/h]
//double vrvLmin = VRVTag?.PVModel?.EngValue ?? 0.0;
//double totalMassKgPerH;
//string flowErr;
//if (TryConvertVolumetricFlowLMinToMassKgPerH(vrvLmin, plv, tlv, 1, out totalMassKgPerH, out flowErr)) // 1=液相(若 VRV 在液管)
//{
// GasMassFlowKgPerH = Math.Max(0.0, totalMassKgPerH - LiquidMassFlowKgPerH);
//}
//else
//{
// Logger.Warn($"VRV 体积流量→质量流量换算失败:{flowErr}。已将气体质量流量置 0。输入: VRV={vrvLmin:F3} L/min, Pl={plv:F3} BarA, Tl={tlv:F3} ℃");
// GasMassFlowKgPerH = 0.0;
//}
//LiquidMassFlowKgPerH = 214.3051;
//GasMassFlowKgPerH = 264.7956- 214.3051;
//压力参数要求为BarA
double dryness = Step_ComputeDryness_LV_FlowWeighted(
GasMassFlowKgPerH,
LiquidMassFlowKgPerH,
ps, pg, tg, plv, tlv,
out dryErr
);
GasMassFlowKgPerH,
LiquidMassFlowKgPerH,
ps, pg, tg, plv, tlv,
out dryErr
);
double val = (!double.IsNaN(dryness)) ? dryness : 0.0;
if (DrynessTag != null)
@@ -410,14 +389,14 @@ namespace CapMachine.Wpf.Services
if (double.IsNaN(dryness))
{
Logger.Warn($"质量流量加权干度计算失败:{dryErr}已置0。输入: mg={GasMassFlowKgPerH:F3} kg/h, ml={LiquidMassFlowKgPerH:F3} kg/h, Ps={ps:F3} BarA, Pg={pg:F3} BarA, Tg={tg:F3} ℃, Pl={plv:F3} BarA, Tl={tlv:F3} ℃");
Logger.Error($"质量流量加权干度计算失败:{dryErr}已置0。输入: mg={GasMassFlowKgPerH:F3} kg/h, ml={LiquidMassFlowKgPerH:F3} kg/h, Ps={ps:F3} BarA, Pg={pg:F3} BarA, Tg={tg:F3} ℃, Pl={plv:F3} BarA, Tl={tlv:F3} ℃");
}
}
}
catch (Exception ex)
{
if (DrynessTag != null) DrynessTag.PVModel.EngValue = 0;
Logger.Error(ex, "质量流量加权干度计算异常已置0");
Logger.Error("质量流量加权干度计算异常已置0");
}
}
}