压缩机PTC 功能
参数控制,由跟随速度到单个大参数控制
This commit is contained in:
@@ -797,7 +797,7 @@ namespace CapMachine.Wpf.Services
|
||||
EnName = "PTCPw",
|
||||
Group = "程序",
|
||||
MinValue = 0,
|
||||
MaxValue = 150,
|
||||
MaxValue = 5000,
|
||||
IsMeter = true,
|
||||
DecimalPoint = 1,
|
||||
Precision = 1,
|
||||
@@ -819,36 +819,100 @@ namespace CapMachine.Wpf.Services
|
||||
RWInfo = RWInfo.Control,
|
||||
});
|
||||
|
||||
//PTC功率2 控制但非仪表控制 -北厂未启用此功能,南厂有此功能
|
||||
//TagManger.AddTag(new ShortControlTag()
|
||||
//{
|
||||
// Id = 201,
|
||||
// Name = "PTC功率2[W]",
|
||||
// NameNoUnit = "PTC功率2",
|
||||
// EnName = "PTCPw2",
|
||||
// Group = "程序",
|
||||
// MinValue = 0,
|
||||
// MaxValue = 10000,
|
||||
// IsMeter = true,
|
||||
// DecimalPoint = 1,
|
||||
// Precision = 1,
|
||||
// Unit = "W",
|
||||
// DataType = TagDataType.Short,
|
||||
// PVModel = new MeterValueAttrCell() { Address = "VW434", EngValue = 0, EngValueStr = "", Block = "PV", BlockIndex = 334},
|
||||
// SVModel = new MeterValueAttrCell() { Address = "VW434", EngValue = 0, EngValueStr = "", Block = "SV", BlockIndex = 34 },
|
||||
// MVModel = new MeterValueAttrCell() { Address = "", EngValue = 0, EngValueStr = "", Block = "MV", BlockIndex = 1, Enable = false },
|
||||
// MVAutoHandModel = new MvAmAttrCell() { Address = "", EngValueStr = "", Block = "MVAM", BlockIndex = 1, Enable = false },
|
||||
//PTC功率2 控制但非仪表控制
|
||||
TagManger.AddTag(new ShortControlTag()
|
||||
{
|
||||
Id = 201,
|
||||
Name = "PTC功率2[W]",
|
||||
NameNoUnit = "PTC功率2",
|
||||
EnName = "PTCPw2",
|
||||
Group = "程序",
|
||||
MinValue = 0,
|
||||
MaxValue = 10000,
|
||||
IsMeter = true,
|
||||
DecimalPoint = 1,
|
||||
Precision = 1,
|
||||
Unit = "W",
|
||||
DataType = TagDataType.Short,
|
||||
PVModel = new MeterValueAttrCell() { Address = "VW14022", EngValue = 0, EngValueStr = "", Block = "PV", BlockIndex = 334 },
|
||||
SVModel = new MeterValueAttrCell() { Address = "", EngValue = 0, EngValueStr = "", Block = "SV", BlockIndex = 34 },
|
||||
MVModel = new MeterValueAttrCell() { Address = "", EngValue = 0, EngValueStr = "", Block = "MV", BlockIndex = 1, Enable = false },
|
||||
MVAutoHandModel = new MvAmAttrCell() { Address = "", EngValueStr = "", Block = "MVAM", BlockIndex = 1, Enable = false },
|
||||
|
||||
// Pid_PModel = new MeterExdAttrCell() { Address = "", EngValue = 0, EngValueStr = "", Enable = false },
|
||||
// Pid_IModel = new MeterExdAttrCell() { Address = "", EngValue = 0, EngValueStr = "", Enable = false },
|
||||
// Pid_DModel = new MeterExdAttrCell() { Address = "", EngValue = 0, EngValueStr = "", Enable = false },
|
||||
// Limit_UpModel = new MeterExdAttrCell() { Address = "", EngValue = 0, EngValueStr = "", Enable = false },
|
||||
// Limit_DownModel = new MeterExdAttrCell() { Address = "", EngValue = 0, EngValueStr = "", Enable = false },
|
||||
// AlarmModel = new MeterExdAttrCell() { Address = "", EngValue = 0, EngValueStr = "", Enable = false },
|
||||
// AutoHandState = false,
|
||||
Pid_PModel = new MeterExdAttrCell() { Address = "", EngValue = 0, EngValueStr = "", Enable = false },
|
||||
Pid_IModel = new MeterExdAttrCell() { Address = "", EngValue = 0, EngValueStr = "", Enable = false },
|
||||
Pid_DModel = new MeterExdAttrCell() { Address = "", EngValue = 0, EngValueStr = "", Enable = false },
|
||||
Limit_UpModel = new MeterExdAttrCell() { Address = "", EngValue = 0, EngValueStr = "", Enable = false },
|
||||
Limit_DownModel = new MeterExdAttrCell() { Address = "", EngValue = 0, EngValueStr = "", Enable = false },
|
||||
AlarmModel = new MeterExdAttrCell() { Address = "", EngValue = 0, EngValueStr = "", Enable = false },
|
||||
AutoHandState = false,
|
||||
|
||||
RWInfo = RWInfo.Control,
|
||||
});
|
||||
|
||||
|
||||
//PTC目标水温 控制但非仪表控制
|
||||
TagManger.AddTag(new ShortControlTag()
|
||||
{
|
||||
Id = 202,
|
||||
Name = "PTC目标水温[℃]",
|
||||
NameNoUnit = "PTC目标水温",
|
||||
EnName = "PTCWaterTemp",
|
||||
Group = "程序",
|
||||
MinValue = 0,
|
||||
MaxValue = 150,
|
||||
IsMeter = true,
|
||||
DecimalPoint = 1,
|
||||
Precision = 1,
|
||||
Unit = "W",
|
||||
DataType = TagDataType.Short,
|
||||
PVModel = new MeterValueAttrCell() { Address = "VW14026", EngValue = 0, EngValueStr = "", Block = "PV", BlockIndex = 334 },
|
||||
SVModel = new MeterValueAttrCell() { Address = "", EngValue = 0, EngValueStr = "", Block = "SV", BlockIndex = 34 },
|
||||
MVModel = new MeterValueAttrCell() { Address = "", EngValue = 0, EngValueStr = "", Block = "MV", BlockIndex = 1, Enable = false },
|
||||
MVAutoHandModel = new MvAmAttrCell() { Address = "", EngValueStr = "", Block = "MVAM", BlockIndex = 1, Enable = false },
|
||||
|
||||
Pid_PModel = new MeterExdAttrCell() { Address = "", EngValue = 0, EngValueStr = "", Enable = false },
|
||||
Pid_IModel = new MeterExdAttrCell() { Address = "", EngValue = 0, EngValueStr = "", Enable = false },
|
||||
Pid_DModel = new MeterExdAttrCell() { Address = "", EngValue = 0, EngValueStr = "", Enable = false },
|
||||
Limit_UpModel = new MeterExdAttrCell() { Address = "", EngValue = 0, EngValueStr = "", Enable = false },
|
||||
Limit_DownModel = new MeterExdAttrCell() { Address = "", EngValue = 0, EngValueStr = "", Enable = false },
|
||||
AlarmModel = new MeterExdAttrCell() { Address = "", EngValue = 0, EngValueStr = "", Enable = false },
|
||||
AutoHandState = false,
|
||||
|
||||
RWInfo = RWInfo.Control,
|
||||
});
|
||||
|
||||
//PTC水流量 控制但非仪表控制
|
||||
TagManger.AddTag(new ShortControlTag()
|
||||
{
|
||||
Id = 203,
|
||||
Name = "PTC水流量[L/Min]",
|
||||
NameNoUnit = "PTC水流量",
|
||||
EnName = "PTCWaterFlow",
|
||||
Group = "程序",
|
||||
MinValue = 0,
|
||||
MaxValue = 500,
|
||||
IsMeter = true,
|
||||
DecimalPoint = 2,
|
||||
Precision = 1,
|
||||
Unit = "W",
|
||||
DataType = TagDataType.Short,
|
||||
PVModel = new MeterValueAttrCell() { Address = "VW14024", EngValue = 0, EngValueStr = "", Block = "PV", BlockIndex = 334 },
|
||||
SVModel = new MeterValueAttrCell() { Address = "", EngValue = 0, EngValueStr = "", Block = "SV", BlockIndex = 34 },
|
||||
MVModel = new MeterValueAttrCell() { Address = "", EngValue = 0, EngValueStr = "", Block = "MV", BlockIndex = 1, Enable = false },
|
||||
MVAutoHandModel = new MvAmAttrCell() { Address = "", EngValueStr = "", Block = "MVAM", BlockIndex = 1, Enable = false },
|
||||
|
||||
Pid_PModel = new MeterExdAttrCell() { Address = "", EngValue = 0, EngValueStr = "", Enable = false },
|
||||
Pid_IModel = new MeterExdAttrCell() { Address = "", EngValue = 0, EngValueStr = "", Enable = false },
|
||||
Pid_DModel = new MeterExdAttrCell() { Address = "", EngValue = 0, EngValueStr = "", Enable = false },
|
||||
Limit_UpModel = new MeterExdAttrCell() { Address = "", EngValue = 0, EngValueStr = "", Enable = false },
|
||||
Limit_DownModel = new MeterExdAttrCell() { Address = "", EngValue = 0, EngValueStr = "", Enable = false },
|
||||
AlarmModel = new MeterExdAttrCell() { Address = "", EngValue = 0, EngValueStr = "", Enable = false },
|
||||
AutoHandState = false,
|
||||
|
||||
RWInfo = RWInfo.Control,
|
||||
});
|
||||
|
||||
// RWInfo = RWInfo.Control,
|
||||
//});
|
||||
|
||||
|
||||
//PTC流量 控制但非仪表控制
|
||||
@@ -2939,6 +3003,31 @@ namespace CapMachine.Wpf.Services
|
||||
{
|
||||
while (ProRunChannel.Reader.TryRead(out var ProRunChannelData))
|
||||
{
|
||||
if (ProRunChannelData.ProExFlag != ProExFlag.None)
|
||||
{
|
||||
switch (ProRunChannelData.ProExFlag)
|
||||
{
|
||||
case ProExFlag.CapSpeed:
|
||||
SendSpeedSvToCap(ProRunChannelData.SV);
|
||||
break;
|
||||
case ProExFlag.CapPTCPw:
|
||||
SendPTCPwSvToCap(ProRunChannelData.SV);
|
||||
break;
|
||||
case ProExFlag.CapPTCPw2:
|
||||
SendPTCPwSv2ToCap(ProRunChannelData.SV);
|
||||
break;
|
||||
case ProExFlag.CapPTCWaterTemp:
|
||||
SendPTCWaterTempToCap(ProRunChannelData.SV);
|
||||
break;
|
||||
case ProExFlag.CapPTCWaterFlow:
|
||||
SendPTCWaterFlowToCap(ProRunChannelData.SV);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
continue;
|
||||
}
|
||||
|
||||
////第一次计时
|
||||
//stopwatch.Start(); //启动Stopwatch
|
||||
switch (ProRunChannelData.RunStepType)
|
||||
@@ -3149,89 +3238,89 @@ namespace CapMachine.Wpf.Services
|
||||
continue;
|
||||
}
|
||||
|
||||
//压缩机PTC功率1的参数直接给压缩机触发
|
||||
if (itemStepExd.Name!.Contains("PTC功率1"))
|
||||
{
|
||||
switch (ConfigService.CanLinRunStateModel.CurSysSelectedCanLin)
|
||||
{
|
||||
case CanLinEnum.Can:
|
||||
CanDriveService.UpdateCapPTCPwCmdData((double)itemStepExd.Value!);
|
||||
break;
|
||||
case CanLinEnum.CANFD:
|
||||
CanFdDriveService.UpdateCapPTCPwCmdData((double)itemStepExd.Value!);
|
||||
break;
|
||||
case CanLinEnum.Lin:
|
||||
LinDriveService.UpdateCapEnableCmdData((bool)itemStepExd.Value!);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
continue;
|
||||
}
|
||||
////压缩机PTC功率1的参数直接给压缩机触发
|
||||
//if (itemStepExd.Name!.Contains("PTC功率1"))
|
||||
//{
|
||||
// switch (ConfigService.CanLinRunStateModel.CurSysSelectedCanLin)
|
||||
// {
|
||||
// case CanLinEnum.Can:
|
||||
// CanDriveService.UpdateCapPTCPwCmdData((double)itemStepExd.Value!);
|
||||
// break;
|
||||
// case CanLinEnum.CANFD:
|
||||
// CanFdDriveService.UpdateCapPTCPwCmdData((double)itemStepExd.Value!);
|
||||
// break;
|
||||
// case CanLinEnum.Lin:
|
||||
// LinDriveService.UpdateCapEnableCmdData((bool)itemStepExd.Value!);
|
||||
// break;
|
||||
// default:
|
||||
// break;
|
||||
// }
|
||||
// continue;
|
||||
//}
|
||||
|
||||
|
||||
//压缩机PTC功率2的参数直接给压缩机触发
|
||||
if (itemStepExd.Name!.Contains("PTC功率2"))
|
||||
{
|
||||
switch (ConfigService.CanLinRunStateModel.CurSysSelectedCanLin)
|
||||
{
|
||||
case CanLinEnum.Can:
|
||||
CanDriveService.UpdateCapPTCPwCmdData((double)itemStepExd.Value!);
|
||||
break;
|
||||
case CanLinEnum.CANFD:
|
||||
CanFdDriveService.UpdateCapPTCPwCmdData((double)itemStepExd.Value!);
|
||||
break;
|
||||
case CanLinEnum.Lin:
|
||||
//LinDriveService.UpdateCapEnableCmdData((bool)itemStepExd.Value!);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
continue;
|
||||
}
|
||||
////压缩机PTC功率2的参数直接给压缩机触发
|
||||
//if (itemStepExd.Name!.Contains("PTC功率2"))
|
||||
//{
|
||||
// switch (ConfigService.CanLinRunStateModel.CurSysSelectedCanLin)
|
||||
// {
|
||||
// case CanLinEnum.Can:
|
||||
// CanDriveService.UpdateCapPTCPwCmdData((double)itemStepExd.Value!);
|
||||
// break;
|
||||
// case CanLinEnum.CANFD:
|
||||
// CanFdDriveService.UpdateCapPTCPwCmdData((double)itemStepExd.Value!);
|
||||
// break;
|
||||
// case CanLinEnum.Lin:
|
||||
// //LinDriveService.UpdateCapEnableCmdData((bool)itemStepExd.Value!);
|
||||
// break;
|
||||
// default:
|
||||
// break;
|
||||
// }
|
||||
// continue;
|
||||
//}
|
||||
|
||||
//压缩机PTC水流量的参数直接给压缩机触发
|
||||
if (itemStepExd.Name!.Contains("PTC水流量"))
|
||||
{
|
||||
switch (ConfigService.CanLinRunStateModel.CurSysSelectedCanLin)
|
||||
{
|
||||
case CanLinEnum.Can:
|
||||
CanDriveService.UpdateCapPTCFlowCmdData((double)itemStepExd.Value!);
|
||||
break;
|
||||
case CanLinEnum.CANFD:
|
||||
CanFdDriveService.UpdateCapPTCFlowCmdData((double)itemStepExd.Value!);
|
||||
break;
|
||||
case CanLinEnum.Lin:
|
||||
//LinDriveService.UpdateCapEnableCmdData((bool)itemStepExd.Value!);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
continue;
|
||||
}
|
||||
////压缩机PTC水流量的参数直接给压缩机触发
|
||||
//if (itemStepExd.Name!.Contains("PTC水流量"))
|
||||
//{
|
||||
// switch (ConfigService.CanLinRunStateModel.CurSysSelectedCanLin)
|
||||
// {
|
||||
// case CanLinEnum.Can:
|
||||
// CanDriveService.UpdateCapPTCFlowCmdData((double)itemStepExd.Value!);
|
||||
// break;
|
||||
// case CanLinEnum.CANFD:
|
||||
// CanFdDriveService.UpdateCapPTCFlowCmdData((double)itemStepExd.Value!);
|
||||
// break;
|
||||
// case CanLinEnum.Lin:
|
||||
// //LinDriveService.UpdateCapEnableCmdData((bool)itemStepExd.Value!);
|
||||
// break;
|
||||
// default:
|
||||
// break;
|
||||
// }
|
||||
// continue;
|
||||
//}
|
||||
|
||||
//压缩机PTC水温的参数直接给压缩机触发
|
||||
if (itemStepExd.Name!.Contains("PTC水温"))
|
||||
{
|
||||
switch (ConfigService.CanLinRunStateModel.CurSysSelectedCanLin)
|
||||
{
|
||||
case CanLinEnum.Can:
|
||||
CanDriveService.UpdateCapPTCWaterTempCmdData((double)itemStepExd.Value!);
|
||||
break;
|
||||
case CanLinEnum.CANFD:
|
||||
CanFdDriveService.UpdateCapPTCWaterTempCmdData((double)itemStepExd.Value!);
|
||||
break;
|
||||
case CanLinEnum.Lin:
|
||||
//LinDriveService.UpdateCapEnableCmdData((bool)itemStepExd.Value!);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
continue;
|
||||
////压缩机PTC水温的参数直接给压缩机触发
|
||||
//if (itemStepExd.Name!.Contains("PTC水温"))
|
||||
//{
|
||||
// switch (ConfigService.CanLinRunStateModel.CurSysSelectedCanLin)
|
||||
// {
|
||||
// case CanLinEnum.Can:
|
||||
// CanDriveService.UpdateCapPTCWaterTempCmdData((double)itemStepExd.Value!);
|
||||
// break;
|
||||
// case CanLinEnum.CANFD:
|
||||
// CanFdDriveService.UpdateCapPTCWaterTempCmdData((double)itemStepExd.Value!);
|
||||
// break;
|
||||
// case CanLinEnum.Lin:
|
||||
// //LinDriveService.UpdateCapEnableCmdData((bool)itemStepExd.Value!);
|
||||
// break;
|
||||
// default:
|
||||
// break;
|
||||
// }
|
||||
// continue;
|
||||
|
||||
//Console.WriteLine($"{ProRunChannelData.MeterName}拓展参数------------:{itemStepExd.Name}:{itemStepExd.Value}");
|
||||
//continue;
|
||||
}
|
||||
// //Console.WriteLine($"{ProRunChannelData.MeterName}拓展参数------------:{itemStepExd.Name}:{itemStepExd.Value}");
|
||||
// //continue;
|
||||
//}
|
||||
|
||||
var DataAdrees = ListPlcExdConfigCell.FirstOrDefault(a => a.Name == itemStepExd.Name);
|
||||
if (DataAdrees != null)
|
||||
@@ -3292,6 +3381,7 @@ namespace CapMachine.Wpf.Services
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 发送速度SV到压缩机
|
||||
/// 自动步骤数据发送
|
||||
@@ -3329,6 +3419,98 @@ namespace CapMachine.Wpf.Services
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 发送PTCPw SV到压缩机
|
||||
/// 自动步骤数据发送
|
||||
/// </summary>
|
||||
private void SendPTCPwSvToCap(double Valuve)
|
||||
{
|
||||
switch (ConfigService.CanLinRunStateModel.CurSysSelectedCanLin)
|
||||
{
|
||||
case CanLinEnum.Can:
|
||||
CanDriveService.UpdateCapPTCPwCmdData(Valuve!);
|
||||
break;
|
||||
case CanLinEnum.CANFD:
|
||||
CanFdDriveService.UpdateCapPTCPwCmdData(Valuve!);
|
||||
break;
|
||||
case CanLinEnum.Lin:
|
||||
//LinDriveService.UpdateCapPTCPwCmdData((bool)ProRunChannelData.SV!);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 发送PTCPw2 SV到压缩机
|
||||
/// 自动步骤数据发送
|
||||
/// </summary>
|
||||
private void SendPTCPwSv2ToCap(double Valuve)
|
||||
{
|
||||
switch (ConfigService.CanLinRunStateModel.CurSysSelectedCanLin)
|
||||
{
|
||||
case CanLinEnum.Can:
|
||||
CanDriveService.UpdateCapPTCPwCmdData(Valuve!);
|
||||
break;
|
||||
case CanLinEnum.CANFD:
|
||||
CanFdDriveService.UpdateCapPTCPwCmdData(Valuve!);
|
||||
break;
|
||||
case CanLinEnum.Lin:
|
||||
//LinDriveService.UpdateCapPTCPwCmdData((bool)ProRunChannelData.SV!);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 发送PTCPw2 SV到压缩机
|
||||
/// 自动步骤数据发送
|
||||
/// </summary>
|
||||
private void SendPTCWaterTempToCap(double Valuve)
|
||||
{
|
||||
switch (ConfigService.CanLinRunStateModel.CurSysSelectedCanLin)
|
||||
{
|
||||
case CanLinEnum.Can:
|
||||
CanDriveService.UpdateCapPTCWaterTempCmdData(Valuve!);
|
||||
break;
|
||||
case CanLinEnum.CANFD:
|
||||
CanFdDriveService.UpdateCapPTCWaterTempCmdData(Valuve!);
|
||||
break;
|
||||
case CanLinEnum.Lin:
|
||||
//LinDriveService.UpdateCapPTCPwCmdData((bool)ProRunChannelData.SV!);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 发送PTCPw2 SV到压缩机
|
||||
/// 自动步骤数据发送
|
||||
/// </summary>
|
||||
private void SendPTCWaterFlowToCap(double Valuve)
|
||||
{
|
||||
switch (ConfigService.CanLinRunStateModel.CurSysSelectedCanLin)
|
||||
{
|
||||
case CanLinEnum.Can:
|
||||
CanDriveService.UpdateCapPTCFlowCmdData(Valuve!);
|
||||
break;
|
||||
case CanLinEnum.CANFD:
|
||||
CanFdDriveService.UpdateCapPTCFlowCmdData(Valuve!);
|
||||
break;
|
||||
case CanLinEnum.Lin:
|
||||
//LinDriveService.UpdateCapPTCPwCmdData((bool)ProRunChannelData.SV!);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
|
||||
@@ -82,6 +82,7 @@ namespace CapMachine.Wpf.Services
|
||||
MeterName = itemKeyValue.Value.NameNoUnit,
|
||||
ListProStepExe = new List<ProStepExe>(),
|
||||
IsSpeed = itemKeyValue.Value.Name.Contains("转速") == true ? true : false,
|
||||
ProExFlag = GetProExFlagByName(itemKeyValue.Value.NameNoUnit),
|
||||
CurShortControlTag = MachineRtDataService.TagManger.GetShortControlTagByName(itemKeyValue.Key)!,
|
||||
});
|
||||
}
|
||||
@@ -166,6 +167,32 @@ namespace CapMachine.Wpf.Services
|
||||
return $"{hours}:{minutes:D2}:{seconds:D2}";
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 根据名称获取具体的标记信息
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
private ProExFlag GetProExFlagByName(string Name)
|
||||
{
|
||||
//转速的话,直接获取
|
||||
if (Name.Contains("转速")) return ProExFlag.CapSpeed;
|
||||
|
||||
switch (Name)
|
||||
{
|
||||
case "PTC功率":
|
||||
return ProExFlag.CapPTCPw;
|
||||
case "PTC功率2":
|
||||
return ProExFlag.CapPTCPw2;
|
||||
case "PTC目标水温":
|
||||
return ProExFlag.CapPTCWaterTemp;
|
||||
case "PTC水流量":
|
||||
return ProExFlag.CapPTCWaterFlow;
|
||||
default:
|
||||
return ProExFlag.None;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 是否在下载中
|
||||
/// </summary>
|
||||
@@ -231,6 +258,9 @@ namespace CapMachine.Wpf.Services
|
||||
.IncludeMany(b => b.MeterPTCPws)
|
||||
.IncludeMany(b => b.MeterEnvRHs)
|
||||
.IncludeMany(b => b.MeterEnvTemps)
|
||||
.IncludeMany(b => b.MeterPTCPw2s)
|
||||
.IncludeMany(b => b.MeterPTCWaterFlows)
|
||||
.IncludeMany(b => b.MeterPTCWaterTemps)
|
||||
).ToList().FirstOrDefault();
|
||||
|
||||
//获取当前的程序
|
||||
@@ -294,7 +324,7 @@ namespace CapMachine.Wpf.Services
|
||||
MeterStepIsExeing = false,//配置阶段默认不执行 false
|
||||
MeterStepIsOK = false,//配置阶段默认不完成 false
|
||||
ExistSlop = false,//常值没有斜率 //开始和结束不一样则存在斜率
|
||||
|
||||
|
||||
MeterStep = ListProExModel.FindFirst(a => a.MeterName == CurMeterName).ListProStepExe.Count + 1,
|
||||
MeterName = CurMeterName,
|
||||
|
||||
@@ -314,10 +344,10 @@ namespace CapMachine.Wpf.Services
|
||||
new StepExd(){ Name="压缩机使能",Value=itemMeterValueCell.CapEnable,ValueType=ExdValueType.Bool},
|
||||
|
||||
new StepExd(){ Name="PTC使能",Value=itemMeterValueCell.PTCEnable,ValueType=ExdValueType.Bool},
|
||||
new StepExd(){ Name="PTC功率1",Value=itemMeterValueCell.PTCPw1,ValueType=ExdValueType.Double},
|
||||
new StepExd(){ Name="PTC功率2",Value=itemMeterValueCell.PTCPw2,ValueType=ExdValueType.Double},
|
||||
new StepExd(){ Name="PTC水流量",Value=itemMeterValueCell.PTCWaterFlow,ValueType=ExdValueType.Double},
|
||||
new StepExd(){ Name="PTC水温",Value=itemMeterValueCell.PTCWaterTemp,ValueType=ExdValueType.Double},
|
||||
//new StepExd(){ Name="PTC功率1",Value=itemMeterValueCell.PTCPw1,ValueType=ExdValueType.Double},
|
||||
//new StepExd(){ Name="PTC功率2",Value=itemMeterValueCell.PTCPw2,ValueType=ExdValueType.Double},
|
||||
//new StepExd(){ Name="PTC水流量",Value=itemMeterValueCell.PTCWaterFlow,ValueType=ExdValueType.Double},
|
||||
//new StepExd(){ Name="PTC水温",Value=itemMeterValueCell.PTCWaterTemp,ValueType=ExdValueType.Double},
|
||||
},
|
||||
|
||||
ProStepInfo = $"{itemStep.StepNo}",
|
||||
@@ -387,10 +417,10 @@ namespace CapMachine.Wpf.Services
|
||||
new StepExd(){ Name="压缩机使能",Value=itemMeterValueCell.CapEnable,ValueType=ExdValueType.Bool},
|
||||
|
||||
new StepExd(){ Name="PTC使能",Value=itemMeterValueCell.PTCEnable,ValueType=ExdValueType.Bool},
|
||||
new StepExd(){ Name="PTC功率1",Value=itemMeterValueCell.PTCPw1,ValueType=ExdValueType.Double},
|
||||
new StepExd(){ Name="PTC功率2",Value=itemMeterValueCell.PTCPw2,ValueType=ExdValueType.Double},
|
||||
new StepExd(){ Name="PTC水流量",Value=itemMeterValueCell.PTCWaterFlow,ValueType=ExdValueType.Double},
|
||||
new StepExd(){ Name="PTC水温",Value=itemMeterValueCell.PTCWaterTemp,ValueType=ExdValueType.Double},
|
||||
//new StepExd(){ Name="PTC功率1",Value=itemMeterValueCell.PTCPw1,ValueType=ExdValueType.Double},
|
||||
//new StepExd(){ Name="PTC功率2",Value=itemMeterValueCell.PTCPw2,ValueType=ExdValueType.Double},
|
||||
//new StepExd(){ Name="PTC水流量",Value=itemMeterValueCell.PTCWaterFlow,ValueType=ExdValueType.Double},
|
||||
//new StepExd(){ Name="PTC水温",Value=itemMeterValueCell.PTCWaterTemp,ValueType=ExdValueType.Double},
|
||||
},
|
||||
|
||||
ProStepInfo = $"{itemStep.StepNo}-{itemMeterValueCell.StepNo}",
|
||||
@@ -3167,6 +3197,466 @@ namespace CapMachine.Wpf.Services
|
||||
|
||||
}
|
||||
|
||||
//********* 单个【PTC功率2】步骤信息的解析 *********
|
||||
{
|
||||
var CurMeterName = "PTC功率2";
|
||||
if (itemStep.MeterPTCPw2s != null && itemStep.MeterPTCPw2s.Any())
|
||||
{
|
||||
switch (itemStep.MeterPTCPw2s.FirstOrDefault()!.ValueType)
|
||||
{
|
||||
case ConfigValueType.Constant: //常值
|
||||
//常值的话就一个数据,循环执行一次
|
||||
foreach (var itemMeterValueCell in itemStep.MeterPTCPw2s)
|
||||
{
|
||||
var Pid = new ConfigPID();
|
||||
if (FreeSql.Select<ConfigPID>().Where(a => a.MeterName == CurMeterName && a.IndexNo == itemMeterValueCell.PIDNo).Any())
|
||||
{
|
||||
Pid = FreeSql.Select<ConfigPID>().Where(a => a.MeterName == CurMeterName && a.IndexNo == itemMeterValueCell.PIDNo).First();
|
||||
}
|
||||
var Limit = new ConfigLimit();
|
||||
if (FreeSql.Select<ConfigLimit>().Where(a => a.MeterName == CurMeterName && a.IndexNo == itemMeterValueCell.LimitNo).Any())
|
||||
{
|
||||
Limit = FreeSql.Select<ConfigLimit>().Where(a => a.MeterName == CurMeterName && a.IndexNo == itemMeterValueCell.LimitNo).First();
|
||||
}
|
||||
var Alarm = new ConfigAlarm();
|
||||
if (FreeSql.Select<ConfigAlarm>().Where(a => a.MeterName == CurMeterName && a.IndexNo == itemMeterValueCell.AlarmNo).Any())
|
||||
{
|
||||
Alarm = FreeSql.Select<ConfigAlarm>().Where(a => a.MeterName == CurMeterName && a.IndexNo == itemMeterValueCell.AlarmNo).First();
|
||||
}
|
||||
|
||||
ListProExModel.FindFirst(a => a.MeterName == CurMeterName).ListProStepExe.Add(new ProStepExe()
|
||||
{
|
||||
//程序块
|
||||
ProSegName = CurProgramSeg.Name,
|
||||
ProSegStep = SegIndex,
|
||||
ProSegRepeat = CurProgramSeg.ProRepeat,
|
||||
ProSegIsExeing = false,//配置阶段默认不执行 false
|
||||
|
||||
//程序步骤数据
|
||||
StartSV = GetSVByProcess(itemMeterValueCell.Constant, CurMeterName),
|
||||
EndSV = GetSVByProcess(itemMeterValueCell.Constant, CurMeterName),
|
||||
KeepTime = itemMeterValueCell.KeepTime,
|
||||
MeterStepIsExeing = false,//配置阶段默认不执行 false
|
||||
MeterStepIsOK = false,//配置阶段默认不完成 false
|
||||
ExistSlop = false,//常值没有斜率 //开始和结束不一样则存在斜率
|
||||
|
||||
MeterStep = ListProExModel.FindFirst(a => a.MeterName == CurMeterName).ListProStepExe.Count + 1,
|
||||
MeterName = CurMeterName,
|
||||
|
||||
LimitNo = itemMeterValueCell.LimitNo,
|
||||
AlarmNo = itemMeterValueCell.AlarmNo,
|
||||
PIDNo = itemMeterValueCell.PIDNo,
|
||||
|
||||
CurConfigPIDDto = Mapper.Map<ConfigPIDDto>(Pid),
|
||||
CurConfigLimitDto = Mapper.Map<ConfigLimitDto>(Limit),
|
||||
CurConfigAlarmDto = Mapper.Map<ConfigAlarmDto>(Alarm),
|
||||
|
||||
ProStepInfo = $"{itemStep.StepNo}",
|
||||
ProStep = $"{itemStep.StepNo}/{SpeedMaxStep}",
|
||||
StepExeInfo = $"{itemStep.StepNo}{Environment.NewLine}{itemMeterValueCell.Constant}->{itemMeterValueCell.Constant}{Environment.NewLine}[{ConvertSecToTimeStr(itemMeterValueCell.KeepTime)}]",
|
||||
});
|
||||
}
|
||||
break;
|
||||
case ConfigValueType.Slope:
|
||||
//带斜率
|
||||
//根据循环次数确定
|
||||
var Cycle = GetCycleBySpeed(itemStep.MeterSpeeds, itemStep.SpeedCycle, itemStep.MeterPTCPw2s.Select(p => new MeterCom { Constant = p.Constant, KeepTime = p.KeepTime, StepNo = p.StepNo, ValueType = p.ValueType }).ToList());
|
||||
for (int StepCycleIndex = 1; StepCycleIndex <= Cycle; StepCycleIndex++)
|
||||
{
|
||||
//根据循环次数执行
|
||||
foreach (var itemMeterValueCell in itemStep.MeterPTCPw2s)
|
||||
{
|
||||
var Pid = new ConfigPID();
|
||||
if (FreeSql.Select<ConfigPID>().Where(a => a.MeterName == CurMeterName && a.IndexNo == itemMeterValueCell.PIDNo).Any())
|
||||
{
|
||||
Pid = FreeSql.Select<ConfigPID>().Where(a => a.MeterName == CurMeterName && a.IndexNo == itemMeterValueCell.PIDNo).First();
|
||||
}
|
||||
var Limit = new ConfigLimit();
|
||||
if (FreeSql.Select<ConfigLimit>().Where(a => a.MeterName == CurMeterName && a.IndexNo == itemMeterValueCell.LimitNo).Any())
|
||||
{
|
||||
Limit = FreeSql.Select<ConfigLimit>().Where(a => a.MeterName == CurMeterName && a.IndexNo == itemMeterValueCell.LimitNo).First();
|
||||
}
|
||||
var Alarm = new ConfigAlarm();
|
||||
if (FreeSql.Select<ConfigAlarm>().Where(a => a.MeterName == CurMeterName && a.IndexNo == itemMeterValueCell.AlarmNo).Any())
|
||||
{
|
||||
Alarm = FreeSql.Select<ConfigAlarm>().Where(a => a.MeterName == CurMeterName && a.IndexNo == itemMeterValueCell.AlarmNo).First();
|
||||
}
|
||||
|
||||
ListProExModel.FindFirst(a => a.MeterName == CurMeterName).ListProStepExe.Add(new ProStepExe()
|
||||
{
|
||||
//程序块
|
||||
ProSegName = CurProgramSeg.Name,
|
||||
ProSegStep = SegIndex,
|
||||
ProSegRepeat = CurProgramSeg.ProRepeat,
|
||||
ProSegIsExeing = false,//配置阶段默认不执行 false
|
||||
|
||||
//程序步骤数据
|
||||
//SV = CALCHelper.GetQuickSV(itemMeterValueCell.Constant, 1),
|
||||
StartSV = GetSVByProcess(itemMeterValueCell.StartValue, CurMeterName),
|
||||
EndSV = GetSVByProcess(itemMeterValueCell.EndValue, CurMeterName),
|
||||
KeepTime = itemMeterValueCell.KeepTime,
|
||||
MeterStepIsExeing = false,//配置阶段默认不执行 false
|
||||
MeterStepIsOK = false,//配置阶段默认不完成 false
|
||||
ExistSlop = itemMeterValueCell.StartValue == itemMeterValueCell.EndValue ? false : true,//开始和结束不一样则存在斜率
|
||||
|
||||
MeterStep = ListProExModel.FindFirst(a => a.MeterName == CurMeterName).ListProStepExe.Count + 1,
|
||||
|
||||
LimitNo = itemMeterValueCell.LimitNo,
|
||||
AlarmNo = itemMeterValueCell.AlarmNo,
|
||||
PIDNo = itemMeterValueCell.PIDNo,
|
||||
|
||||
CurConfigPIDDto = Mapper.Map<ConfigPIDDto>(Pid),
|
||||
CurConfigLimitDto = Mapper.Map<ConfigLimitDto>(Limit),
|
||||
CurConfigAlarmDto = Mapper.Map<ConfigAlarmDto>(Alarm),
|
||||
|
||||
ProStepInfo = $"{itemStep.StepNo}-{itemMeterValueCell.StepNo}",
|
||||
ProStep = $"{itemStep.StepNo}/{SpeedMaxStep}",
|
||||
StepExeInfo = $"{itemStep.StepNo}-{itemMeterValueCell.StepNo}{Environment.NewLine}{itemMeterValueCell.StartValue}->{itemMeterValueCell.EndValue}{Environment.NewLine}[{ConvertSecToTimeStr(itemMeterValueCell.KeepTime)}]",
|
||||
MeterName = CurMeterName,
|
||||
});
|
||||
}
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
//判断当前的参数是全部都没有设置还是这一步没有设置,如果这个步骤没有设置,则沿用上一个步骤数据
|
||||
var CurMeterListStepExe = ListProExModel.FindFirst(a => a.MeterName == CurMeterName).ListProStepExe;
|
||||
if (CurMeterListStepExe.Any())
|
||||
{
|
||||
//之前有步骤数据的话,则直接使用上一步的数据
|
||||
|
||||
//Copy这个步骤的数据
|
||||
var LastStepData = CurMeterListStepExe.OrderByDescending(a => a.MeterStep).FirstOrDefault().DeepClone();
|
||||
//处理这个步骤的数据-处理按照常值的恒定的模式运行,就是维持结束的常值数据
|
||||
LastStepData!.MeterStep = LastStepData.MeterStep + 1;//步骤+1
|
||||
LastStepData.KeepTime = SpeedStepTotaolTime;//时间是整个时间
|
||||
LastStepData.ExistSlop = false;
|
||||
LastStepData.StartSV = LastStepData.EndSV;
|
||||
LastStepData.ProStepInfo = $"{itemStep.StepNo}-{1}";
|
||||
//添加
|
||||
CurMeterListStepExe.Add(LastStepData);
|
||||
//SpeedStepTotaolTime
|
||||
}
|
||||
else
|
||||
{
|
||||
//之前步骤没有数据的话,则放弃,不做任何处理
|
||||
}
|
||||
LogService.Warn($"【名称】: {CurMeterName} - 未找到步骤信息。步骤为空");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
//********* 单个【PTC目标水温】步骤信息的解析 *********
|
||||
{
|
||||
var CurMeterName = "PTC目标水温";
|
||||
if (itemStep.MeterPTCWaterTemps != null && itemStep.MeterPTCWaterTemps.Any())
|
||||
{
|
||||
switch (itemStep.MeterPTCWaterTemps.FirstOrDefault()!.ValueType)
|
||||
{
|
||||
case ConfigValueType.Constant: //常值
|
||||
//常值的话就一个数据,循环执行一次
|
||||
foreach (var itemMeterValueCell in itemStep.MeterPTCWaterTemps)
|
||||
{
|
||||
var Pid = new ConfigPID();
|
||||
if (FreeSql.Select<ConfigPID>().Where(a => a.MeterName == CurMeterName && a.IndexNo == itemMeterValueCell.PIDNo).Any())
|
||||
{
|
||||
Pid = FreeSql.Select<ConfigPID>().Where(a => a.MeterName == CurMeterName && a.IndexNo == itemMeterValueCell.PIDNo).First();
|
||||
}
|
||||
var Limit = new ConfigLimit();
|
||||
if (FreeSql.Select<ConfigLimit>().Where(a => a.MeterName == CurMeterName && a.IndexNo == itemMeterValueCell.LimitNo).Any())
|
||||
{
|
||||
Limit = FreeSql.Select<ConfigLimit>().Where(a => a.MeterName == CurMeterName && a.IndexNo == itemMeterValueCell.LimitNo).First();
|
||||
}
|
||||
var Alarm = new ConfigAlarm();
|
||||
if (FreeSql.Select<ConfigAlarm>().Where(a => a.MeterName == CurMeterName && a.IndexNo == itemMeterValueCell.AlarmNo).Any())
|
||||
{
|
||||
Alarm = FreeSql.Select<ConfigAlarm>().Where(a => a.MeterName == CurMeterName && a.IndexNo == itemMeterValueCell.AlarmNo).First();
|
||||
}
|
||||
|
||||
ListProExModel.FindFirst(a => a.MeterName == CurMeterName).ListProStepExe.Add(new ProStepExe()
|
||||
{
|
||||
//程序块
|
||||
ProSegName = CurProgramSeg.Name,
|
||||
ProSegStep = SegIndex,
|
||||
ProSegRepeat = CurProgramSeg.ProRepeat,
|
||||
ProSegIsExeing = false,//配置阶段默认不执行 false
|
||||
|
||||
//程序步骤数据
|
||||
StartSV = GetSVByProcess(itemMeterValueCell.Constant, CurMeterName),
|
||||
EndSV = GetSVByProcess(itemMeterValueCell.Constant, CurMeterName),
|
||||
KeepTime = itemMeterValueCell.KeepTime,
|
||||
MeterStepIsExeing = false,//配置阶段默认不执行 false
|
||||
MeterStepIsOK = false,//配置阶段默认不完成 false
|
||||
ExistSlop = false,//常值没有斜率 //开始和结束不一样则存在斜率
|
||||
|
||||
MeterStep = ListProExModel.FindFirst(a => a.MeterName == CurMeterName).ListProStepExe.Count + 1,
|
||||
MeterName = CurMeterName,
|
||||
|
||||
LimitNo = itemMeterValueCell.LimitNo,
|
||||
AlarmNo = itemMeterValueCell.AlarmNo,
|
||||
PIDNo = itemMeterValueCell.PIDNo,
|
||||
|
||||
CurConfigPIDDto = Mapper.Map<ConfigPIDDto>(Pid),
|
||||
CurConfigLimitDto = Mapper.Map<ConfigLimitDto>(Limit),
|
||||
CurConfigAlarmDto = Mapper.Map<ConfigAlarmDto>(Alarm),
|
||||
|
||||
ProStepInfo = $"{itemStep.StepNo}",
|
||||
ProStep = $"{itemStep.StepNo}/{SpeedMaxStep}",
|
||||
StepExeInfo = $"{itemStep.StepNo}{Environment.NewLine}{itemMeterValueCell.Constant}->{itemMeterValueCell.Constant}{Environment.NewLine}[{ConvertSecToTimeStr(itemMeterValueCell.KeepTime)}]",
|
||||
});
|
||||
}
|
||||
break;
|
||||
case ConfigValueType.Slope:
|
||||
//带斜率
|
||||
//根据循环次数确定
|
||||
var Cycle = GetCycleBySpeed(itemStep.MeterSpeeds, itemStep.SpeedCycle, itemStep.MeterPTCWaterTemps.Select(p => new MeterCom { Constant = p.Constant, KeepTime = p.KeepTime, StepNo = p.StepNo, ValueType = p.ValueType }).ToList());
|
||||
for (int StepCycleIndex = 1; StepCycleIndex <= Cycle; StepCycleIndex++)
|
||||
{
|
||||
//根据循环次数执行
|
||||
foreach (var itemMeterValueCell in itemStep.MeterPTCWaterTemps)
|
||||
{
|
||||
var Pid = new ConfigPID();
|
||||
if (FreeSql.Select<ConfigPID>().Where(a => a.MeterName == CurMeterName && a.IndexNo == itemMeterValueCell.PIDNo).Any())
|
||||
{
|
||||
Pid = FreeSql.Select<ConfigPID>().Where(a => a.MeterName == CurMeterName && a.IndexNo == itemMeterValueCell.PIDNo).First();
|
||||
}
|
||||
var Limit = new ConfigLimit();
|
||||
if (FreeSql.Select<ConfigLimit>().Where(a => a.MeterName == CurMeterName && a.IndexNo == itemMeterValueCell.LimitNo).Any())
|
||||
{
|
||||
Limit = FreeSql.Select<ConfigLimit>().Where(a => a.MeterName == CurMeterName && a.IndexNo == itemMeterValueCell.LimitNo).First();
|
||||
}
|
||||
var Alarm = new ConfigAlarm();
|
||||
if (FreeSql.Select<ConfigAlarm>().Where(a => a.MeterName == CurMeterName && a.IndexNo == itemMeterValueCell.AlarmNo).Any())
|
||||
{
|
||||
Alarm = FreeSql.Select<ConfigAlarm>().Where(a => a.MeterName == CurMeterName && a.IndexNo == itemMeterValueCell.AlarmNo).First();
|
||||
}
|
||||
|
||||
ListProExModel.FindFirst(a => a.MeterName == CurMeterName).ListProStepExe.Add(new ProStepExe()
|
||||
{
|
||||
//程序块
|
||||
ProSegName = CurProgramSeg.Name,
|
||||
ProSegStep = SegIndex,
|
||||
ProSegRepeat = CurProgramSeg.ProRepeat,
|
||||
ProSegIsExeing = false,//配置阶段默认不执行 false
|
||||
|
||||
//程序步骤数据
|
||||
//SV = CALCHelper.GetQuickSV(itemMeterValueCell.Constant, 1),
|
||||
StartSV = GetSVByProcess(itemMeterValueCell.StartValue, CurMeterName),
|
||||
EndSV = GetSVByProcess(itemMeterValueCell.EndValue, CurMeterName),
|
||||
KeepTime = itemMeterValueCell.KeepTime,
|
||||
MeterStepIsExeing = false,//配置阶段默认不执行 false
|
||||
MeterStepIsOK = false,//配置阶段默认不完成 false
|
||||
ExistSlop = itemMeterValueCell.StartValue == itemMeterValueCell.EndValue ? false : true,//开始和结束不一样则存在斜率
|
||||
|
||||
MeterStep = ListProExModel.FindFirst(a => a.MeterName == CurMeterName).ListProStepExe.Count + 1,
|
||||
|
||||
LimitNo = itemMeterValueCell.LimitNo,
|
||||
AlarmNo = itemMeterValueCell.AlarmNo,
|
||||
PIDNo = itemMeterValueCell.PIDNo,
|
||||
|
||||
CurConfigPIDDto = Mapper.Map<ConfigPIDDto>(Pid),
|
||||
CurConfigLimitDto = Mapper.Map<ConfigLimitDto>(Limit),
|
||||
CurConfigAlarmDto = Mapper.Map<ConfigAlarmDto>(Alarm),
|
||||
|
||||
ProStepInfo = $"{itemStep.StepNo}-{itemMeterValueCell.StepNo}",
|
||||
ProStep = $"{itemStep.StepNo}/{SpeedMaxStep}",
|
||||
StepExeInfo = $"{itemStep.StepNo}-{itemMeterValueCell.StepNo}{Environment.NewLine}{itemMeterValueCell.StartValue}->{itemMeterValueCell.EndValue}{Environment.NewLine}[{ConvertSecToTimeStr(itemMeterValueCell.KeepTime)}]",
|
||||
MeterName = CurMeterName,
|
||||
});
|
||||
}
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
//判断当前的参数是全部都没有设置还是这一步没有设置,如果这个步骤没有设置,则沿用上一个步骤数据
|
||||
var CurMeterListStepExe = ListProExModel.FindFirst(a => a.MeterName == CurMeterName).ListProStepExe;
|
||||
if (CurMeterListStepExe.Any())
|
||||
{
|
||||
//之前有步骤数据的话,则直接使用上一步的数据
|
||||
|
||||
//Copy这个步骤的数据
|
||||
var LastStepData = CurMeterListStepExe.OrderByDescending(a => a.MeterStep).FirstOrDefault().DeepClone();
|
||||
//处理这个步骤的数据-处理按照常值的恒定的模式运行,就是维持结束的常值数据
|
||||
LastStepData!.MeterStep = LastStepData.MeterStep + 1;//步骤+1
|
||||
LastStepData.KeepTime = SpeedStepTotaolTime;//时间是整个时间
|
||||
LastStepData.ExistSlop = false;
|
||||
LastStepData.StartSV = LastStepData.EndSV;
|
||||
LastStepData.ProStepInfo = $"{itemStep.StepNo}-{1}";
|
||||
//添加
|
||||
CurMeterListStepExe.Add(LastStepData);
|
||||
//SpeedStepTotaolTime
|
||||
}
|
||||
else
|
||||
{
|
||||
//之前步骤没有数据的话,则放弃,不做任何处理
|
||||
}
|
||||
LogService.Warn($"【名称】: {CurMeterName} - 未找到步骤信息。步骤为空");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
//********* 单个【PTC水流量】步骤信息的解析 *********
|
||||
{
|
||||
var CurMeterName = "PTC水流量";
|
||||
if (itemStep.MeterPTCWaterFlows != null && itemStep.MeterPTCWaterFlows.Any())
|
||||
{
|
||||
switch (itemStep.MeterPTCWaterFlows.FirstOrDefault()!.ValueType)
|
||||
{
|
||||
case ConfigValueType.Constant: //常值
|
||||
//常值的话就一个数据,循环执行一次
|
||||
foreach (var itemMeterValueCell in itemStep.MeterPTCWaterFlows)
|
||||
{
|
||||
var Pid = new ConfigPID();
|
||||
if (FreeSql.Select<ConfigPID>().Where(a => a.MeterName == CurMeterName && a.IndexNo == itemMeterValueCell.PIDNo).Any())
|
||||
{
|
||||
Pid = FreeSql.Select<ConfigPID>().Where(a => a.MeterName == CurMeterName && a.IndexNo == itemMeterValueCell.PIDNo).First();
|
||||
}
|
||||
var Limit = new ConfigLimit();
|
||||
if (FreeSql.Select<ConfigLimit>().Where(a => a.MeterName == CurMeterName && a.IndexNo == itemMeterValueCell.LimitNo).Any())
|
||||
{
|
||||
Limit = FreeSql.Select<ConfigLimit>().Where(a => a.MeterName == CurMeterName && a.IndexNo == itemMeterValueCell.LimitNo).First();
|
||||
}
|
||||
var Alarm = new ConfigAlarm();
|
||||
if (FreeSql.Select<ConfigAlarm>().Where(a => a.MeterName == CurMeterName && a.IndexNo == itemMeterValueCell.AlarmNo).Any())
|
||||
{
|
||||
Alarm = FreeSql.Select<ConfigAlarm>().Where(a => a.MeterName == CurMeterName && a.IndexNo == itemMeterValueCell.AlarmNo).First();
|
||||
}
|
||||
|
||||
ListProExModel.FindFirst(a => a.MeterName == CurMeterName).ListProStepExe.Add(new ProStepExe()
|
||||
{
|
||||
//程序块
|
||||
ProSegName = CurProgramSeg.Name,
|
||||
ProSegStep = SegIndex,
|
||||
ProSegRepeat = CurProgramSeg.ProRepeat,
|
||||
ProSegIsExeing = false,//配置阶段默认不执行 false
|
||||
|
||||
//程序步骤数据
|
||||
StartSV = GetSVByProcess(itemMeterValueCell.Constant, CurMeterName),
|
||||
EndSV = GetSVByProcess(itemMeterValueCell.Constant, CurMeterName),
|
||||
KeepTime = itemMeterValueCell.KeepTime,
|
||||
MeterStepIsExeing = false,//配置阶段默认不执行 false
|
||||
MeterStepIsOK = false,//配置阶段默认不完成 false
|
||||
ExistSlop = false,//常值没有斜率 //开始和结束不一样则存在斜率
|
||||
|
||||
MeterStep = ListProExModel.FindFirst(a => a.MeterName == CurMeterName).ListProStepExe.Count + 1,
|
||||
MeterName = CurMeterName,
|
||||
|
||||
LimitNo = itemMeterValueCell.LimitNo,
|
||||
AlarmNo = itemMeterValueCell.AlarmNo,
|
||||
PIDNo = itemMeterValueCell.PIDNo,
|
||||
|
||||
CurConfigPIDDto = Mapper.Map<ConfigPIDDto>(Pid),
|
||||
CurConfigLimitDto = Mapper.Map<ConfigLimitDto>(Limit),
|
||||
CurConfigAlarmDto = Mapper.Map<ConfigAlarmDto>(Alarm),
|
||||
|
||||
ProStepInfo = $"{itemStep.StepNo}",
|
||||
ProStep = $"{itemStep.StepNo}/{SpeedMaxStep}",
|
||||
StepExeInfo = $"{itemStep.StepNo}{Environment.NewLine}{itemMeterValueCell.Constant}->{itemMeterValueCell.Constant}{Environment.NewLine}[{ConvertSecToTimeStr(itemMeterValueCell.KeepTime)}]",
|
||||
});
|
||||
}
|
||||
break;
|
||||
case ConfigValueType.Slope:
|
||||
//带斜率
|
||||
//根据循环次数确定
|
||||
var Cycle = GetCycleBySpeed(itemStep.MeterSpeeds, itemStep.SpeedCycle, itemStep.MeterPTCWaterFlows.Select(p => new MeterCom { Constant = p.Constant, KeepTime = p.KeepTime, StepNo = p.StepNo, ValueType = p.ValueType }).ToList());
|
||||
for (int StepCycleIndex = 1; StepCycleIndex <= Cycle; StepCycleIndex++)
|
||||
{
|
||||
//根据循环次数执行
|
||||
foreach (var itemMeterValueCell in itemStep.MeterPTCWaterFlows)
|
||||
{
|
||||
var Pid = new ConfigPID();
|
||||
if (FreeSql.Select<ConfigPID>().Where(a => a.MeterName == CurMeterName && a.IndexNo == itemMeterValueCell.PIDNo).Any())
|
||||
{
|
||||
Pid = FreeSql.Select<ConfigPID>().Where(a => a.MeterName == CurMeterName && a.IndexNo == itemMeterValueCell.PIDNo).First();
|
||||
}
|
||||
var Limit = new ConfigLimit();
|
||||
if (FreeSql.Select<ConfigLimit>().Where(a => a.MeterName == CurMeterName && a.IndexNo == itemMeterValueCell.LimitNo).Any())
|
||||
{
|
||||
Limit = FreeSql.Select<ConfigLimit>().Where(a => a.MeterName == CurMeterName && a.IndexNo == itemMeterValueCell.LimitNo).First();
|
||||
}
|
||||
var Alarm = new ConfigAlarm();
|
||||
if (FreeSql.Select<ConfigAlarm>().Where(a => a.MeterName == CurMeterName && a.IndexNo == itemMeterValueCell.AlarmNo).Any())
|
||||
{
|
||||
Alarm = FreeSql.Select<ConfigAlarm>().Where(a => a.MeterName == CurMeterName && a.IndexNo == itemMeterValueCell.AlarmNo).First();
|
||||
}
|
||||
|
||||
ListProExModel.FindFirst(a => a.MeterName == CurMeterName).ListProStepExe.Add(new ProStepExe()
|
||||
{
|
||||
//程序块
|
||||
ProSegName = CurProgramSeg.Name,
|
||||
ProSegStep = SegIndex,
|
||||
ProSegRepeat = CurProgramSeg.ProRepeat,
|
||||
ProSegIsExeing = false,//配置阶段默认不执行 false
|
||||
|
||||
//程序步骤数据
|
||||
//SV = CALCHelper.GetQuickSV(itemMeterValueCell.Constant, 1),
|
||||
StartSV = GetSVByProcess(itemMeterValueCell.StartValue, CurMeterName),
|
||||
EndSV = GetSVByProcess(itemMeterValueCell.EndValue, CurMeterName),
|
||||
KeepTime = itemMeterValueCell.KeepTime,
|
||||
MeterStepIsExeing = false,//配置阶段默认不执行 false
|
||||
MeterStepIsOK = false,//配置阶段默认不完成 false
|
||||
ExistSlop = itemMeterValueCell.StartValue == itemMeterValueCell.EndValue ? false : true,//开始和结束不一样则存在斜率
|
||||
|
||||
MeterStep = ListProExModel.FindFirst(a => a.MeterName == CurMeterName).ListProStepExe.Count + 1,
|
||||
|
||||
LimitNo = itemMeterValueCell.LimitNo,
|
||||
AlarmNo = itemMeterValueCell.AlarmNo,
|
||||
PIDNo = itemMeterValueCell.PIDNo,
|
||||
|
||||
CurConfigPIDDto = Mapper.Map<ConfigPIDDto>(Pid),
|
||||
CurConfigLimitDto = Mapper.Map<ConfigLimitDto>(Limit),
|
||||
CurConfigAlarmDto = Mapper.Map<ConfigAlarmDto>(Alarm),
|
||||
|
||||
ProStepInfo = $"{itemStep.StepNo}-{itemMeterValueCell.StepNo}",
|
||||
ProStep = $"{itemStep.StepNo}/{SpeedMaxStep}",
|
||||
StepExeInfo = $"{itemStep.StepNo}-{itemMeterValueCell.StepNo}{Environment.NewLine}{itemMeterValueCell.StartValue}->{itemMeterValueCell.EndValue}{Environment.NewLine}[{ConvertSecToTimeStr(itemMeterValueCell.KeepTime)}]",
|
||||
MeterName = CurMeterName,
|
||||
});
|
||||
}
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
//判断当前的参数是全部都没有设置还是这一步没有设置,如果这个步骤没有设置,则沿用上一个步骤数据
|
||||
var CurMeterListStepExe = ListProExModel.FindFirst(a => a.MeterName == CurMeterName).ListProStepExe;
|
||||
if (CurMeterListStepExe.Any())
|
||||
{
|
||||
//之前有步骤数据的话,则直接使用上一步的数据
|
||||
|
||||
//Copy这个步骤的数据
|
||||
var LastStepData = CurMeterListStepExe.OrderByDescending(a => a.MeterStep).FirstOrDefault().DeepClone();
|
||||
//处理这个步骤的数据-处理按照常值的恒定的模式运行,就是维持结束的常值数据
|
||||
LastStepData!.MeterStep = LastStepData.MeterStep + 1;//步骤+1
|
||||
LastStepData.KeepTime = SpeedStepTotaolTime;//时间是整个时间
|
||||
LastStepData.ExistSlop = false;
|
||||
LastStepData.StartSV = LastStepData.EndSV;
|
||||
LastStepData.ProStepInfo = $"{itemStep.StepNo}-{1}";
|
||||
//添加
|
||||
CurMeterListStepExe.Add(LastStepData);
|
||||
//SpeedStepTotaolTime
|
||||
}
|
||||
else
|
||||
{
|
||||
//之前步骤没有数据的话,则放弃,不做任何处理
|
||||
}
|
||||
LogService.Warn($"【名称】: {CurMeterName} - 未找到步骤信息。步骤为空");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user