2233 lines
96 KiB
C#
2233 lines
96 KiB
C#
using CapMachine.Model.MeterConfig;
|
||
using CapMachine.Model;
|
||
using HslCommunication.Profinet.Siemens;
|
||
using System;
|
||
using System.Collections.Generic;
|
||
using System.Linq;
|
||
using System.Text;
|
||
using System.Threading.Tasks;
|
||
using System.Windows.Controls;
|
||
using Masuit.Tools;
|
||
|
||
namespace CapMachine.Wpf.ProPars
|
||
{
|
||
/// <summary>
|
||
/// 程序解析方法
|
||
/// 每个参数的配置是独立的
|
||
/// 松芝用
|
||
/// </summary>
|
||
public class ProParsSongZhiHelper
|
||
{
|
||
/// <summary>
|
||
/// 静态的集合信息
|
||
/// </summary>
|
||
public static List<PlcParsData> ListPlcParsData { get; set; }
|
||
|
||
/// <summary>
|
||
/// //当前的程序开始标记
|
||
/// 把地址信息给规范好
|
||
/// </summary>
|
||
public static void Start()
|
||
{
|
||
//取得的PLC步骤数据,提前预设好
|
||
ListPlcParsData = new List<PlcParsData>()
|
||
{
|
||
new PlcParsData(){ Name="速度",EnName="Speed",Step=150,SetAddressInfo=AddressInfo.OK,Steps=new List<PlcMeterStepCell>(),Ratio=1,Unit="",ValueStartAddress=1008,MinStartAddress=1000,SecStartAddress=1002,CycleStartAddress=1006,SlopConstAddress=1004 },
|
||
new PlcParsData(){ Name="排气压力",EnName="ExPress",SetAddressInfo=AddressInfo.OK,Step=150,Steps=new List<PlcMeterStepCell>(),Ratio=100,Unit="" ,ValueStartAddress=1032,MinStartAddress=1024,SecStartAddress=1026,CycleStartAddress=1030,SlopConstAddress=1028 },
|
||
new PlcParsData(){ Name="吸气压力",EnName="InhPress",SetAddressInfo=AddressInfo.OK,Step=150,Steps=new List<PlcMeterStepCell>(),Ratio=100,Unit="" ,ValueStartAddress=1046,MinStartAddress=1038,SecStartAddress=1040,CycleStartAddress=1044,SlopConstAddress=1042 },
|
||
new PlcParsData(){ Name="吸气温度",EnName="InhTemp",SetAddressInfo=AddressInfo.OK,Step=150,Steps=new List<PlcMeterStepCell>(),Ratio=10,Unit="" ,ValueStartAddress=1060,MinStartAddress=1052,SecStartAddress=1054,CycleStartAddress=1058,SlopConstAddress=1056 },
|
||
new PlcParsData(){ Name="冷凝器出口水温",EnName="Cond1Temp",SetAddressInfo=AddressInfo.OK,Step=150,Steps=new List<PlcMeterStepCell>(),Ratio=10,Unit="",ValueStartAddress=1074,MinStartAddress=1066,SecStartAddress=1068,CycleStartAddress=1072,SlopConstAddress=1070 },
|
||
new PlcParsData(){ Name="吸气混合器温度",EnName="OS2Temp",Step=150,SetAddressInfo=AddressInfo.NoCycle,Steps=new List<PlcMeterStepCell>(),Ratio=10,Unit="" ,ValueStartAddress=1088,MinStartAddress=1080,SecStartAddress=1082 },//??
|
||
new PlcParsData(){ Name="HV电压",EnName="HVVol",Step=150,SetAddressInfo=AddressInfo.OK,Steps=new List<PlcMeterStepCell>(),Ratio=10,Unit="" ,ValueStartAddress=1102,MinStartAddress=1094,SecStartAddress=1096,CycleStartAddress=1100,SlopConstAddress=1198 },
|
||
new PlcParsData(){ Name="LV电压",EnName="LVVol",Step=150,SetAddressInfo=AddressInfo.NoCycle,Steps=new List<PlcMeterStepCell>(),Ratio=10,Unit="" ,ValueStartAddress=1114,MinStartAddress=1106,SecStartAddress=1108},
|
||
new PlcParsData(){ Name="压缩机环境温度",EnName="EnvTemp",Step=150,SetAddressInfo=AddressInfo.OK,Steps=new List<PlcMeterStepCell>(),Ratio=10,Unit="" ,ValueStartAddress=1128,MinStartAddress=1120,SecStartAddress=1122,CycleStartAddress=1126,SlopConstAddress=1024 },
|
||
new PlcParsData(){ Name="压缩机环境湿度",EnName="EnvRH",Step=150,SetAddressInfo=AddressInfo.NoCycle,Steps=new List<PlcMeterStepCell>(),Ratio=10,Unit="" ,ValueStartAddress=1142,MinStartAddress=1134,SecStartAddress=1136},
|
||
|
||
|
||
|
||
//new PlcParsData(){ Name="COND2温度",EnName="Cond2Temp",Step=100,SetAddressInfo=AddressInfo.NoTimeAndCycle, Steps=new List<PlcMeterStepCell>(),Ratio=10,Unit="" ,ValueStartAddress=1034,MinStartAddress=0,SecStartAddress=0,CycleStartAddress=0 },
|
||
//new PlcParsData(){ Name="COND2压力",EnName="Cond2Press",Step=100,Steps=new List<PlcMeterStepCell>(),Ratio=100,Unit="" ,ValueStartAddress=1018,MinStartAddress=1076,SecStartAddress=1078,CycleStartAddress=0 },
|
||
//new PlcParsData(){ Name="EVAP出口温度",EnName="EVAPExpTemp",Step=100,SetAddressInfo=AddressInfo.NoTimeAndCycle,Steps=new List<PlcMeterStepCell>(),Ratio=10,Unit="" ,ValueStartAddress=1036,MinStartAddress=0,SecStartAddress=0,CycleStartAddress=0 },
|
||
|
||
|
||
|
||
|
||
//new PlcParsData(){ Name="润滑油压力",EnName="LubePress",Step=100,SetAddressInfo=AddressInfo.NoCycle,Steps=new List<PlcMeterStepCell>(),Ratio=100,Unit="" ,ValueStartAddress=1016,MinStartAddress=1072,SecStartAddress=1074,CycleStartAddress=0 },
|
||
|
||
|
||
//new PlcParsData(){ Name="OCR",EnName="OCR",Step=100,SetAddressInfo=AddressInfo.NoTimeAndCycle,Steps=new List<PlcMeterStepCell>(),Ratio=10,Unit="" ,ValueStartAddress=1020,MinStartAddress=0,SecStartAddress=0,CycleStartAddress=0 },
|
||
|
||
//new PlcParsData(){ Name="OS1温度",EnName="OS1Temp",Step=100,SetAddressInfo=AddressInfo.NoTimeAndCycle,Steps=new List<PlcMeterStepCell>(),Ratio=10,Unit="" ,ValueStartAddress=1030,MinStartAddress=0,SecStartAddress=0,CycleStartAddress=0 },
|
||
|
||
//new PlcParsData(){ Name="PTC入口温度",EnName="PTCEntTemp",Step=100,SetAddressInfo=AddressInfo.NoTimeAndCycle,Steps=new List<PlcMeterStepCell>(),Ratio=10,Unit="" ,ValueStartAddress=1054,MinStartAddress=0,SecStartAddress=0,CycleStartAddress=0 },
|
||
//new PlcParsData(){ Name="PTC流量",EnName="PTCFlow",Step=100,SetAddressInfo=AddressInfo.NoTimeAndCycle,Steps=new List<PlcMeterStepCell>(),Ratio=10,Unit="" ,ValueStartAddress=1052,MinStartAddress=0,SecStartAddress=0,CycleStartAddress=0 },
|
||
//new PlcParsData(){ Name="PTC功率",EnName="PTCPw",Step=100,SetAddressInfo=AddressInfo.NoTimeAndCycle,Steps=new List<PlcMeterStepCell>(),Ratio=1,Unit="" ,ValueStartAddress=1050,MinStartAddress=0,SecStartAddress=0,CycleStartAddress=0 },
|
||
|
||
|
||
new PlcParsData(){ Name="输出锁定",EnName="OutLock",Step=100,SetAddressInfo=AddressInfo.NoTimeAndCycle,Steps=new List<PlcMeterStepCell>(),Ratio=1,Unit="" ,ValueStartAddress=1016,MinStartAddress=0,SecStartAddress=0,CycleStartAddress=0 },
|
||
new PlcParsData(){ Name="参数编号",EnName="ParNo",Step=100,SetAddressInfo=AddressInfo.NoTimeAndCycle,Steps=new List<PlcMeterStepCell>(),Ratio=1,Unit="" ,ValueStartAddress=1018,MinStartAddress=0,SecStartAddress=0,CycleStartAddress=0 },
|
||
new PlcParsData(){ Name="EV",EnName="EV",Step=100,SetAddressInfo=AddressInfo.NoTimeAndCycle,Steps=new List<PlcMeterStepCell>(),Ratio=1,Unit="" ,ValueStartAddress=0,MinStartAddress=0,SecStartAddress=0,CycleStartAddress=0 },
|
||
new PlcParsData(){ Name="压缩机使能",EnName="CapEnable",Step=100,SetAddressInfo=AddressInfo.NoTimeAndCycle,Steps=new List<PlcMeterStepCell>(),Ratio=1,Unit="" ,ValueStartAddress=1010,MinStartAddress=0,SecStartAddress=0,CycleStartAddress=0 },
|
||
new PlcParsData(){ Name="吸排气阀",EnName="InhExhValve",Step=100,SetAddressInfo=AddressInfo.NoTimeAndCycle,Steps=new List<PlcMeterStepCell>(),Ratio=1,Unit="" ,ValueStartAddress=1014,MinStartAddress=0,SecStartAddress=0,CycleStartAddress=0 },
|
||
new PlcParsData(){ Name="PTC使能",EnName="PTCEnable",Step=100,SetAddressInfo=AddressInfo.NoTimeAndCycle,Steps=new List<PlcMeterStepCell>(),Ratio=1,Unit="" ,ValueStartAddress=0,MinStartAddress=0,SecStartAddress=0,CycleStartAddress=0 },
|
||
|
||
//new PlcParsData(){ Name="时间分钟",EnName="TimeMin",Step=100,Steps=new List<PlcMeterStepCell>(),Ratio=1,Unit="" ,ValueStartAddress=1000,MinStartAddress=XXX,SecStartAddress=XXX,CycleStartAddress=XXX },
|
||
//new PlcParsData(){ Name="时间秒",EnName="TimeSec",Step=100,Steps=new List<PlcMeterStepCell>(),Ratio=1,Unit="" ,ValueStartAddress=1002,MinStartAddress=XXX,SecStartAddress=XXX,CycleStartAddress=XXX },
|
||
//new PlcParsData(){ Name="次数",EnName="Cycle",Step=100,Steps=new List<PlcMeterStepCell>(),Ratio=1,Unit="" ,ValueStartAddress=1004,MinStartAddress=XXX,SecStartAddress=XXX,CycleStartAddress=XXX },
|
||
|
||
};
|
||
|
||
}
|
||
|
||
/// <summary>
|
||
/// 获取PLC步骤信息
|
||
/// Cycle暂时不用,默认执行一次,程序的循环次数不进行
|
||
/// </summary>
|
||
/// <param name="proSteps"></param>
|
||
/// <returns></returns>
|
||
public static List<PlcParsData> GetPlcParsData(List<ProStep> proSteps, int Cycle)
|
||
{
|
||
//装载ListPlcParsData的结构数据
|
||
//for (int i = 0; i < Cycle; i++)//Proge 大循环 未启用,默认执行一次
|
||
//{
|
||
foreach (ProStep proStep in proSteps)//ProStep 小循环
|
||
{
|
||
//每个ProStep步骤里面包含多个参数的设置
|
||
ListPlcParsData = LoadPlcParsData(proStep, ListPlcParsData);//内部循环
|
||
}
|
||
//}
|
||
|
||
//装载地址 VW1000
|
||
ListPlcParsData = LoadPlcCellAddress(ListPlcParsData);
|
||
//var datga = LoadPlcBlockAddress(ListPlcParsData, 1000);
|
||
|
||
return ListPlcParsData;
|
||
}
|
||
|
||
|
||
/// <summary>
|
||
/// 加载数据到PLC
|
||
/// </summary>
|
||
public static void LoadDataToPLC(SiemensS7Net siemensS7NetStance, List<PlcParsData> plcParsDatas)
|
||
{
|
||
foreach (var item in plcParsDatas)
|
||
{
|
||
|
||
foreach (var itemStep in item.Steps)
|
||
{
|
||
if (!string.IsNullOrEmpty(itemStep.ValueAddress))
|
||
{
|
||
var Result = siemensS7NetStance.Write(itemStep.ValueAddress, (short)(itemStep.Value * item.Ratio));
|
||
//var Result1 = siemensS7NetStance.Write(itemStep.ValueAddress, (short)(itemStep.Value * item.Ratio),100);
|
||
if (!Result.IsSuccess)
|
||
{
|
||
var data1 = 1;
|
||
}
|
||
}
|
||
if (!string.IsNullOrEmpty(itemStep.MinAddress))
|
||
{
|
||
var Result = siemensS7NetStance.Write(itemStep.MinAddress, (short)itemStep.TimeMin);
|
||
if (!Result.IsSuccess)
|
||
{
|
||
var data1 = 1;
|
||
}
|
||
}
|
||
if (!string.IsNullOrEmpty(itemStep.SecAddress))
|
||
{
|
||
var Result = siemensS7NetStance.Write(itemStep.SecAddress, (short)itemStep.TimeSec);
|
||
if (!Result.IsSuccess)
|
||
{
|
||
var data1 = 1;
|
||
}
|
||
}
|
||
if (!string.IsNullOrEmpty(itemStep.CycleAddress))
|
||
{
|
||
var Result = siemensS7NetStance.Write(itemStep.CycleAddress, (short)itemStep.Cycle);
|
||
if (!Result.IsSuccess)
|
||
{
|
||
var data1 = 1;
|
||
}
|
||
}
|
||
if (!string.IsNullOrEmpty(itemStep.SlopConstAddress))
|
||
{
|
||
var Result = siemensS7NetStance.Write(itemStep.SlopConstAddress, (short)itemStep.SlopConst);
|
||
if (!Result.IsSuccess)
|
||
{
|
||
var data1 = 1;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
//siemensS7NetStance.Write();
|
||
}
|
||
|
||
/// <summary>
|
||
/// 单步骤程序解析
|
||
/// 单步骤里面包括多个仪表参数的配置信息
|
||
/// </summary>
|
||
/// <param name="proStep">配置信息</param>
|
||
/// <param name="plcParsDatas">输出的结构信息</param>
|
||
/// <returns></returns>
|
||
private static List<PlcParsData> LoadPlcParsData(ProStep proStep, List<PlcParsData> plcParsDatas)
|
||
{
|
||
if (proStep != null && proStep.MeterSpeeds != null)
|
||
{
|
||
//速度
|
||
GetStepsByMeterSpeeds(proStep.MeterSpeeds, plcParsDatas.Find(a => a.EnName == "Speed")!, proStep.SpeedCycle, plcParsDatas);
|
||
GetStepsByMeterExPresss(proStep.MeterExPresss, plcParsDatas.Find(a => a.EnName == "ExPress")!,
|
||
GetCycleBySpeed(proStep.MeterSpeeds, proStep.SpeedCycle, proStep.MeterExPresss!.Select(p => new MeterCom { Constant = p.Constant, EndValue = p.EndValue, KeepTime = p.KeepTime, StartValue = p.StartValue, StepNo = p.StepNo, ValueType = p.ValueType }).ToList()));
|
||
GetStepsByMeterInhPresss(proStep.MeterInhPresss, plcParsDatas.Find(a => a.EnName == "InhPress")!,
|
||
GetCycleBySpeed(proStep.MeterSpeeds, proStep.SpeedCycle, proStep.MeterInhPresss!.Select(p => new MeterCom { Constant = p.Constant, EndValue = p.EndValue, KeepTime = p.KeepTime, StartValue = p.StartValue, StepNo = p.StepNo, ValueType = p.ValueType }).ToList()));
|
||
GetStepsByMeterInhTemps(proStep.MeterInhTemps, plcParsDatas.Find(a => a.EnName == "InhTemp")!,
|
||
GetCycleBySpeed(proStep.MeterSpeeds, proStep.SpeedCycle, proStep.MeterInhTemps!.Select(p => new MeterCom { Constant = p.Constant, EndValue = p.EndValue, KeepTime = p.KeepTime, StartValue = p.StartValue, StepNo = p.StepNo, ValueType = p.ValueType }).ToList()));
|
||
GetStepsByMeterCond1Temps(proStep.MeterCond1Temps, plcParsDatas.Find(a => a.EnName == "Cond1Temp")!,
|
||
GetCycleBySpeed(proStep.MeterSpeeds, proStep.SpeedCycle, proStep.MeterCond1Temps!.Select(p => new MeterCom { Constant = p.Constant, EndValue = p.EndValue, KeepTime = p.KeepTime, StartValue = p.StartValue, StepNo = p.StepNo, ValueType = p.ValueType }).ToList()));
|
||
GetStepsByMeterOS2Temps(proStep.MeterOS2Temps, plcParsDatas.Find(a => a.EnName == "OS2Temp")!,
|
||
GetCycleBySpeed(proStep.MeterSpeeds, proStep.SpeedCycle, proStep.MeterOS2Temps!.Select(p => new MeterCom { Constant = p.Constant, EndValue = p.EndValue, KeepTime = p.KeepTime, StartValue = p.StartValue, StepNo = p.StepNo, ValueType = p.ValueType }).ToList()));
|
||
GetStepsByMeterHVVols(proStep.MeterHVVols, plcParsDatas.Find(a => a.EnName == "HVVol")!,
|
||
GetCycleBySpeed(proStep.MeterSpeeds, proStep.SpeedCycle, proStep.MeterHVVols!.Select(p => new MeterCom { Constant = p.Constant, EndValue = p.EndValue, KeepTime = p.KeepTime, StartValue = p.StartValue, StepNo = p.StepNo, ValueType = p.ValueType }).ToList()));
|
||
GetStepsByMeterLVVols(proStep.MeterLVVols, plcParsDatas.Find(a => a.EnName == "LVVol")!,
|
||
GetCycleBySpeed(proStep.MeterSpeeds, proStep.SpeedCycle, proStep.MeterLVVols!.Select(p => new MeterCom { Constant = p.Constant, EndValue = p.EndValue, KeepTime = p.KeepTime, StartValue = p.StartValue, StepNo = p.StepNo, ValueType = p.ValueType }).ToList()));
|
||
GetStepsByMeterEnvTemps(proStep.MeterEnvTemps, plcParsDatas.Find(a => a.EnName == "EnvTemp")!,
|
||
GetCycleBySpeed(proStep.MeterSpeeds, proStep.SpeedCycle, proStep.MeterEnvTemps!.Select(p => new MeterCom { Constant = p.Constant, EndValue = p.EndValue, KeepTime = p.KeepTime, StartValue = p.StartValue, StepNo = p.StepNo, ValueType = p.ValueType }).ToList()));
|
||
GetStepsByMeterEnvRHs(proStep.MeterEnvRHs, plcParsDatas.Find(a => a.EnName == "EnvRH")!,
|
||
GetCycleBySpeed(proStep.MeterSpeeds, proStep.SpeedCycle, proStep.MeterEnvRHs!.Select(p => new MeterCom { Constant = p.Constant, EndValue = p.EndValue, KeepTime = p.KeepTime, StartValue = p.StartValue, StepNo = p.StepNo, ValueType = p.ValueType }).ToList()));
|
||
|
||
|
||
//GetStepsByMeterCond2Temps(proStep.MeterCond2Temps, plcParsDatas.Find(a => a.EnName == "Cond2Temp")!,
|
||
// GetCycleBySpeed(proStep.MeterSpeeds, proStep.SpeedCycle, proStep.MeterCond2Temps!.Select(p => new MeterCom { Constant = p.Constant, EndValue = p.EndValue, KeepTime = p.KeepTime, StartValue = p.StartValue, StepNo = p.StepNo, ValueType = p.ValueType }).ToList()));
|
||
|
||
//GetStepsByMeterCond2Presss(proStep.MeterCond2Presss, plcParsDatas.Find(a => a.EnName == "Cond2Press")!,
|
||
// GetCycleBySpeed(proStep.MeterSpeeds, proStep.SpeedCycle, proStep.MeterCond2Presss!.Select(p => new MeterCom { Constant = p.Constant, EndValue = p.EndValue, KeepTime = p.KeepTime, StartValue = p.StartValue, StepNo = p.StepNo, ValueType = p.ValueType }).ToList()));
|
||
|
||
//GetStepsByMeterEVAPExpTemps(proStep.MeterEVAPExpTemps, plcParsDatas.Find(a => a.EnName == "EVAPExpTemp")!,
|
||
// GetCycleBySpeed(proStep.MeterSpeeds, proStep.SpeedCycle, proStep.MeterEVAPExpTemps!.Select(p => new MeterCom { Constant = p.Constant, EndValue = p.EndValue, KeepTime = p.KeepTime, StartValue = p.StartValue, StepNo = p.StepNo, ValueType = p.ValueType }).ToList()));
|
||
|
||
//GetStepsByMeterLubePresss(proStep.MeterLubePresss, plcParsDatas.Find(a => a.EnName == "LubePress")!,
|
||
// GetCycleBySpeed(proStep.MeterSpeeds, proStep.SpeedCycle, proStep.MeterLubePresss!.Select(p => new MeterCom { Constant = p.Constant, EndValue = p.EndValue, KeepTime = p.KeepTime, StartValue = p.StartValue, StepNo = p.StepNo, ValueType = p.ValueType }).ToList()));
|
||
|
||
//GetStepsByMeterOCRs(proStep.MeterOCRs, plcParsDatas.Find(a => a.EnName == "OCR")!,
|
||
// GetCycleBySpeed(proStep.MeterSpeeds, proStep.SpeedCycle, proStep.MeterOCRs!.Select(p => new MeterCom { Constant = p.Constant, EndValue = p.EndValue, KeepTime = p.KeepTime, StartValue = p.StartValue, StepNo = p.StepNo, ValueType = p.ValueType }).ToList()));
|
||
|
||
//GetStepsByMeterOS1Temps(proStep.MeterOS1Temps, plcParsDatas.Find(a => a.EnName == "OS1Temp")!,
|
||
// GetCycleBySpeed(proStep.MeterSpeeds, proStep.SpeedCycle, proStep.MeterOS1Temps!.Select(p => new MeterCom { Constant = p.Constant, EndValue = p.EndValue, KeepTime = p.KeepTime, StartValue = p.StartValue, StepNo = p.StepNo, ValueType = p.ValueType }).ToList()));
|
||
|
||
//GetStepsByMeterPTCEntTemps(proStep.MeterPTCEntTemps, plcParsDatas.Find(a => a.EnName == "PTCEntTemp")!,
|
||
// GetCycleBySpeed(proStep.MeterSpeeds, proStep.SpeedCycle, proStep.MeterPTCEntTemps!.Select(p => new MeterCom { Constant = p.Constant, EndValue = p.EndValue, KeepTime = p.KeepTime, StartValue = p.StartValue, StepNo = p.StepNo, ValueType = p.ValueType }).ToList()));
|
||
|
||
//GetStepsByMeterPTCFlows(proStep.MeterPTCFlows, plcParsDatas.Find(a => a.EnName == "PTCFlow")!,
|
||
// GetCycleBySpeed(proStep.MeterSpeeds, proStep.SpeedCycle, proStep.MeterPTCFlows!.Select(p => new MeterCom { Constant = p.Constant, EndValue = p.EndValue, KeepTime = p.KeepTime, StartValue = p.StartValue, StepNo = p.StepNo, ValueType = p.ValueType }).ToList()));
|
||
|
||
//GetStepsByMeterPTCPws(proStep.MeterPTCPws, plcParsDatas.Find(a => a.EnName == "PTCPw")!,
|
||
// GetCycleBySpeed(proStep.MeterSpeeds, proStep.SpeedCycle, proStep.MeterPTCPws!.Select(p => new MeterCom { Constant = p.Constant, EndValue = p.EndValue, KeepTime = p.KeepTime, StartValue = p.StartValue, StepNo = p.StepNo, ValueType = p.ValueType }).ToList()));
|
||
|
||
|
||
return plcParsDatas;
|
||
}
|
||
return plcParsDatas;
|
||
}
|
||
|
||
/// <summary>
|
||
/// 根据速度表时间获取循环的次数
|
||
/// </summary>
|
||
/// <param name="StepNo"></param>
|
||
/// <returns></returns>
|
||
private static int GetCycleBySpeed(List<MeterSpeed> meterSpeeds, int SpeedCycle, List<MeterCom> meterComs)
|
||
{
|
||
if (meterComs != null && meterComs.Count > 0)
|
||
{
|
||
if (meterComs.Where(a => a.ValueType == ConfigValueType.Slope).Count() > 0)
|
||
{
|
||
if (meterSpeeds != null && meterSpeeds.Where(a => a.ValueType == ConfigValueType.Slope).Count() > 0)
|
||
{
|
||
var TotalTime = meterSpeeds.Sum(a => a.KeepTime) * SpeedCycle;
|
||
var MeterSlopTime = meterComs.Sum(a => a.KeepTime);
|
||
if (MeterSlopTime != 0)
|
||
{
|
||
return TotalTime / MeterSlopTime;
|
||
}
|
||
else
|
||
{
|
||
return 0;
|
||
}
|
||
}
|
||
else
|
||
{
|
||
//速度是常值
|
||
var TotalTime = meterSpeeds.FirstOrDefault()!.KeepTime;
|
||
var MeterSlopTime = meterComs.Sum(a => a.KeepTime);
|
||
if (MeterSlopTime != 0)
|
||
{
|
||
return TotalTime / MeterSlopTime;
|
||
}
|
||
else
|
||
{
|
||
return 0;
|
||
}
|
||
}
|
||
}
|
||
else
|
||
{
|
||
// meterComs 常值 就一步了,没有循环
|
||
return 0;
|
||
}
|
||
}
|
||
else
|
||
{
|
||
return 0;
|
||
}
|
||
|
||
}
|
||
|
||
/// <summary>
|
||
/// 单步(内部多个小步骤)解析 单个仪表参数
|
||
/// 获取 步骤信息 Speed
|
||
/// </summary>
|
||
/// <returns></returns>
|
||
/// <exception cref="NotImplementedException"></exception>
|
||
private static PlcParsData GetStepsByMeterSpeeds(ICollection<MeterSpeed>? MeterDatas, PlcParsData PLCParsData, int Cycle, List<PlcParsData> ListPlcParsData)
|
||
{
|
||
if (MeterDatas != null && MeterDatas.Count > 0)
|
||
{
|
||
//判断当前的速度是否包含斜坡或者常值
|
||
//当前有斜率
|
||
if (MeterDatas.Where(a => a.ValueType == ConfigValueType.Slope).Count() > 0)
|
||
{
|
||
//排序
|
||
var MeterSpeedsOrder = MeterDatas.OrderBy(a => a.StepNo).ToList();
|
||
var ListCount = MeterDatas.Count;
|
||
var Index = 0;
|
||
|
||
foreach (var item in MeterSpeedsOrder)
|
||
{
|
||
PlcMeterStepCell plcMeterStepCell = new PlcMeterStepCell();
|
||
|
||
plcMeterStepCell.Value = item.EndValue;
|
||
plcMeterStepCell.TimeMin = GetKeepTimeMin(item.KeepTime);
|
||
plcMeterStepCell.TimeSec = GetKeepTimeSec(item.KeepTime);
|
||
plcMeterStepCell.Step = GetStep(PLCParsData);
|
||
plcMeterStepCell.Cycle = GetCycleCount(Cycle, Index, ListCount);
|
||
plcMeterStepCell.SlopConst = 1;
|
||
|
||
//增加步骤信息
|
||
PLCParsData.Steps.Add(plcMeterStepCell);
|
||
|
||
//跟速度绑定的数据 装载 输出锁定、参数编号、EV、压缩机使能、吸排气阀、PTC使能
|
||
var FindOutLock = ListPlcParsData.Find(a => a.Name.Equals("输出锁定"));
|
||
var OutLockData = plcMeterStepCell.DeepClone();
|
||
OutLockData.Value = Convert.ToDouble(item.OutLock);
|
||
FindOutLock.Steps.Add(OutLockData);
|
||
|
||
var FindParNo = ListPlcParsData.Find(a => a.Name.Equals("参数编号"));
|
||
var ParNoData = plcMeterStepCell.DeepClone();
|
||
ParNoData.Value = Convert.ToDouble(item.ParNo);
|
||
FindParNo.Steps.Add(ParNoData);
|
||
|
||
//var FindEV = ListPlcParsData.Find(a => a.Name.Equals("EV"));
|
||
//var EVData = plcMeterStepCell.DeepClone();
|
||
//EVData.Value = Convert.ToDouble(item.Ev);
|
||
//FindEV.Steps.Add(EVData);
|
||
|
||
var FindCapEnable = ListPlcParsData.Find(a => a.Name.Equals("压缩机使能"));
|
||
var CapEnableData = plcMeterStepCell.DeepClone();
|
||
CapEnableData.Value = Convert.ToDouble(item.CapEnable);
|
||
FindCapEnable.Steps.Add(CapEnableData);
|
||
|
||
var FindInhExhValve = ListPlcParsData.Find(a => a.Name.Equals("吸排气阀"));
|
||
var InhExhValveData = plcMeterStepCell.DeepClone();
|
||
InhExhValveData.Value = Convert.ToDouble(item.InhExhValve);
|
||
FindInhExhValve.Steps.Add(InhExhValveData);
|
||
|
||
//var FindPTCEnable = ListPlcParsData.Find(a => a.Name.Equals("PTC使能"));
|
||
//var PTCEnableData = plcMeterStepCell.DeepClone();
|
||
//PTCEnableData.Value = Convert.ToDouble(item.PTCEnable);
|
||
//FindPTCEnable.Steps.Add(PTCEnableData);
|
||
|
||
Index++;
|
||
}
|
||
|
||
|
||
return PLCParsData;
|
||
}
|
||
else//常值
|
||
{
|
||
var Data = MeterDatas.Where(a => a.ValueType == ConfigValueType.Constant).FirstOrDefault();
|
||
if (Data != null)
|
||
{
|
||
PlcMeterStepCell plcMeterStepCell = new PlcMeterStepCell();
|
||
|
||
plcMeterStepCell.Value = Data.Constant;
|
||
plcMeterStepCell.TimeMin = GetKeepTimeMin(Data.KeepTime);
|
||
plcMeterStepCell.TimeSec = GetKeepTimeSec(Data.KeepTime);
|
||
plcMeterStepCell.Step = GetStep(PLCParsData);
|
||
plcMeterStepCell.Cycle = 0;
|
||
plcMeterStepCell.SlopConst = 0;
|
||
//增加步骤信息
|
||
PLCParsData.Steps.Add(plcMeterStepCell);
|
||
|
||
//跟速度绑定的数据 装载 输出锁定、参数编号、EV、压缩机使能、吸排气阀、PTC使能
|
||
var FindOutLock = ListPlcParsData.Find(a => a.Name.Equals("输出锁定"));
|
||
var OutLockData = plcMeterStepCell.DeepClone();
|
||
OutLockData.Value = Convert.ToDouble(Data.OutLock);
|
||
FindOutLock.Steps.Add(OutLockData);
|
||
|
||
var FindParNo = ListPlcParsData.Find(a => a.Name.Equals("参数编号"));
|
||
var ParNoData = plcMeterStepCell.DeepClone();
|
||
ParNoData.Value = Convert.ToDouble(Data.ParNo);
|
||
FindParNo.Steps.Add(ParNoData);
|
||
|
||
//var FindEV = ListPlcParsData.Find(a => a.Name.Equals("EV"));
|
||
//var EVData = plcMeterStepCell.DeepClone();
|
||
//EVData.Value = Convert.ToDouble(Data.Ev);
|
||
//FindEV.Steps.Add(EVData);
|
||
|
||
var FindCapEnable = ListPlcParsData.Find(a => a.Name.Equals("压缩机使能"));
|
||
var CapEnableData = plcMeterStepCell.DeepClone();
|
||
CapEnableData.Value = Convert.ToDouble(Data.CapEnable);
|
||
FindCapEnable.Steps.Add(CapEnableData);
|
||
|
||
var FindInhExhValve = ListPlcParsData.Find(a => a.Name.Equals("吸排气阀"));
|
||
var InhExhValveData = plcMeterStepCell.DeepClone();
|
||
InhExhValveData.Value = Convert.ToDouble(Data.InhExhValve);
|
||
FindInhExhValve.Steps.Add(InhExhValveData);
|
||
|
||
//var FindPTCEnable = ListPlcParsData.Find(a => a.Name.Equals("PTC使能"));
|
||
//var PTCEnableData = plcMeterStepCell.DeepClone();
|
||
//PTCEnableData.Value = Convert.ToDouble(Data.PTCEnable);
|
||
//FindPTCEnable.Steps.Add(PTCEnableData);
|
||
|
||
return PLCParsData;
|
||
}
|
||
|
||
return PLCParsData;
|
||
}
|
||
}
|
||
else
|
||
{
|
||
return PLCParsData;
|
||
}
|
||
}
|
||
|
||
|
||
/// <summary>
|
||
/// 单步(内部多个小步骤)解析 单个仪表参数
|
||
/// 获取 步骤信息 Cond1Temp
|
||
/// </summary>
|
||
/// <returns></returns>
|
||
/// <exception cref="NotImplementedException"></exception>
|
||
private static PlcParsData GetStepsByMeterCond1Temps(ICollection<MeterCond1Temp>? MeterDatas, PlcParsData PLCParsData, int Cycle)
|
||
{
|
||
if (MeterDatas != null && MeterDatas.Count > 0)
|
||
{
|
||
if (MeterDatas.Where(a => a.ValueType == ConfigValueType.Slope).Count() > 0)
|
||
{
|
||
//排序
|
||
var MeterCond1TempsOrder = MeterDatas.OrderBy(a => a.StepNo).ToList();
|
||
var ListCount = MeterDatas.Count;
|
||
var Index = 0;
|
||
|
||
foreach (var item in MeterCond1TempsOrder)
|
||
{
|
||
PlcMeterStepCell plcMeterStepCell = new PlcMeterStepCell();
|
||
|
||
plcMeterStepCell.Value = item.EndValue;
|
||
plcMeterStepCell.TimeMin = GetKeepTimeMin(item.KeepTime);
|
||
plcMeterStepCell.TimeSec = GetKeepTimeSec(item.KeepTime);
|
||
plcMeterStepCell.Step = GetStep(PLCParsData);
|
||
plcMeterStepCell.Cycle = GetCycleCount(Cycle, Index, ListCount);
|
||
//增加步骤信息
|
||
PLCParsData.Steps.Add(plcMeterStepCell);
|
||
|
||
Index++;
|
||
}
|
||
|
||
return PLCParsData;
|
||
}
|
||
else//常值
|
||
{
|
||
var Data = MeterDatas.Where(a => a.ValueType == ConfigValueType.Constant).FirstOrDefault();
|
||
if (Data != null)
|
||
{
|
||
PlcMeterStepCell plcMeterStepCell = new PlcMeterStepCell();
|
||
|
||
plcMeterStepCell.Value = Data.Constant;
|
||
plcMeterStepCell.TimeMin = GetKeepTimeMin(Data.KeepTime);
|
||
plcMeterStepCell.TimeSec = GetKeepTimeSec(Data.KeepTime);
|
||
plcMeterStepCell.Step = GetStep(PLCParsData);
|
||
plcMeterStepCell.Cycle = 0;
|
||
|
||
//增加步骤信息
|
||
PLCParsData.Steps.Add(plcMeterStepCell);
|
||
|
||
return PLCParsData;
|
||
}
|
||
|
||
return PLCParsData;
|
||
}
|
||
}
|
||
else
|
||
{
|
||
return PLCParsData;
|
||
}
|
||
|
||
}
|
||
|
||
/// <summary>
|
||
/// 单步(内部多个小步骤)解析 单个仪表参数
|
||
/// 获取 步骤信息 Cond2Temp
|
||
/// </summary>
|
||
/// <returns></returns>
|
||
/// <exception cref="NotImplementedException"></exception>
|
||
private static PlcParsData GetStepsByMeterCond2Temps(ICollection<MeterCond2Temp>? MeterDatas, PlcParsData PLCParsData, int Cycle)
|
||
{
|
||
if (MeterDatas != null && MeterDatas.Count > 0)
|
||
{
|
||
if (MeterDatas.Where(a => a.ValueType == ConfigValueType.Slope).Count() > 0)
|
||
{
|
||
//排序
|
||
var MeterCond2TempsOrder = MeterDatas.OrderBy(a => a.StepNo).ToList();
|
||
var ListCount = MeterDatas.Count;
|
||
var Index = 0;
|
||
|
||
foreach (var item in MeterCond2TempsOrder)
|
||
{
|
||
PlcMeterStepCell plcMeterStepCell = new PlcMeterStepCell();
|
||
|
||
plcMeterStepCell.Value = item.EndValue;
|
||
plcMeterStepCell.TimeMin = GetKeepTimeMin(item.KeepTime);
|
||
plcMeterStepCell.TimeSec = GetKeepTimeSec(item.KeepTime);
|
||
plcMeterStepCell.Step = GetStep(PLCParsData);
|
||
plcMeterStepCell.Cycle = GetCycleCount(Cycle, Index, ListCount);
|
||
plcMeterStepCell.SlopConst = 1;
|
||
//增加步骤信息
|
||
PLCParsData.Steps.Add(plcMeterStepCell);
|
||
|
||
Index++;
|
||
}
|
||
|
||
return PLCParsData;
|
||
}
|
||
else//常值
|
||
{
|
||
var Data = MeterDatas.Where(a => a.ValueType == ConfigValueType.Constant).FirstOrDefault();
|
||
if (Data != null)
|
||
{
|
||
PlcMeterStepCell plcMeterStepCell = new PlcMeterStepCell();
|
||
|
||
plcMeterStepCell.Value = Data.Constant;
|
||
plcMeterStepCell.TimeMin = GetKeepTimeMin(Data.KeepTime);
|
||
plcMeterStepCell.TimeSec = GetKeepTimeSec(Data.KeepTime);
|
||
plcMeterStepCell.Step = GetStep(PLCParsData);
|
||
plcMeterStepCell.Cycle = 0;
|
||
plcMeterStepCell.SlopConst = 0;
|
||
|
||
//增加步骤信息
|
||
PLCParsData.Steps.Add(plcMeterStepCell);
|
||
|
||
return PLCParsData;
|
||
}
|
||
|
||
return PLCParsData;
|
||
}
|
||
}
|
||
else
|
||
{
|
||
return PLCParsData;
|
||
}
|
||
|
||
}
|
||
|
||
|
||
/// <summary>
|
||
/// 单步(内部多个小步骤)解析 单个仪表参数
|
||
/// 获取 步骤信息 Cond2Press
|
||
/// </summary>
|
||
/// <returns></returns>
|
||
/// <exception cref="NotImplementedException"></exception>
|
||
private static PlcParsData GetStepsByMeterCond2Presss(ICollection<MeterCond2Press>? MeterDatas, PlcParsData PLCParsData, int Cycle)
|
||
{
|
||
if (MeterDatas != null && MeterDatas.Count > 0)
|
||
{
|
||
if (MeterDatas.Where(a => a.ValueType == ConfigValueType.Slope).Count() > 0)
|
||
{
|
||
//排序
|
||
var MeterCond2PresssOrder = MeterDatas.OrderBy(a => a.StepNo).ToList();
|
||
var ListCount = MeterDatas.Count;
|
||
var Index = 0;
|
||
|
||
foreach (var item in MeterCond2PresssOrder)
|
||
{
|
||
PlcMeterStepCell plcMeterStepCell = new PlcMeterStepCell();
|
||
|
||
plcMeterStepCell.Value = item.EndValue;
|
||
plcMeterStepCell.TimeMin = GetKeepTimeMin(item.KeepTime);
|
||
plcMeterStepCell.TimeSec = GetKeepTimeSec(item.KeepTime);
|
||
plcMeterStepCell.Step = GetStep(PLCParsData);
|
||
plcMeterStepCell.Cycle = GetCycleCount(Cycle, Index, ListCount);
|
||
plcMeterStepCell.SlopConst = 1;
|
||
//增加步骤信息
|
||
PLCParsData.Steps.Add(plcMeterStepCell);
|
||
|
||
Index++;
|
||
}
|
||
|
||
return PLCParsData;
|
||
}
|
||
else//常值
|
||
{
|
||
var Data = MeterDatas.Where(a => a.ValueType == ConfigValueType.Constant).FirstOrDefault();
|
||
if (Data != null)
|
||
{
|
||
PlcMeterStepCell plcMeterStepCell = new PlcMeterStepCell();
|
||
|
||
plcMeterStepCell.Value = Data.Constant;
|
||
plcMeterStepCell.TimeMin = GetKeepTimeMin(Data.KeepTime);
|
||
plcMeterStepCell.TimeSec = GetKeepTimeSec(Data.KeepTime);
|
||
plcMeterStepCell.Step = GetStep(PLCParsData);
|
||
plcMeterStepCell.Cycle = 0;
|
||
plcMeterStepCell.SlopConst = 0;
|
||
|
||
//增加步骤信息
|
||
PLCParsData.Steps.Add(plcMeterStepCell);
|
||
|
||
return PLCParsData;
|
||
}
|
||
|
||
return PLCParsData;
|
||
}
|
||
}
|
||
else
|
||
{
|
||
return PLCParsData;
|
||
}
|
||
|
||
}
|
||
|
||
|
||
/// <summary>
|
||
/// 单步(内部多个小步骤)解析 单个仪表参数
|
||
/// 获取 步骤信息 EVAPExpTemp
|
||
/// </summary>
|
||
/// <returns></returns>
|
||
/// <exception cref="NotImplementedException"></exception>
|
||
private static PlcParsData GetStepsByMeterEVAPExpTemps(ICollection<MeterEVAPExpTemp>? MeterDatas, PlcParsData PLCParsData, int Cycle)
|
||
{
|
||
if (MeterDatas != null && MeterDatas.Count > 0)
|
||
{
|
||
if (MeterDatas.Where(a => a.ValueType == ConfigValueType.Slope).Count() > 0)
|
||
{
|
||
//排序
|
||
var MeterEVAPExpTempsOrder = MeterDatas.OrderBy(a => a.StepNo).ToList();
|
||
var ListCount = MeterDatas.Count;
|
||
var Index = 0;
|
||
|
||
foreach (var item in MeterEVAPExpTempsOrder)
|
||
{
|
||
PlcMeterStepCell plcMeterStepCell = new PlcMeterStepCell();
|
||
|
||
plcMeterStepCell.Value = item.EndValue;
|
||
plcMeterStepCell.TimeMin = GetKeepTimeMin(item.KeepTime);
|
||
plcMeterStepCell.TimeSec = GetKeepTimeSec(item.KeepTime);
|
||
plcMeterStepCell.Step = GetStep(PLCParsData);
|
||
plcMeterStepCell.Cycle = GetCycleCount(Cycle, Index, ListCount);
|
||
plcMeterStepCell.SlopConst = 1;
|
||
//增加步骤信息
|
||
PLCParsData.Steps.Add(plcMeterStepCell);
|
||
|
||
Index++;
|
||
}
|
||
|
||
return PLCParsData;
|
||
}
|
||
else//常值
|
||
{
|
||
var Data = MeterDatas.Where(a => a.ValueType == ConfigValueType.Constant).FirstOrDefault();
|
||
if (Data != null)
|
||
{
|
||
PlcMeterStepCell plcMeterStepCell = new PlcMeterStepCell();
|
||
|
||
plcMeterStepCell.Value = Data.Constant;
|
||
plcMeterStepCell.TimeMin = GetKeepTimeMin(Data.KeepTime);
|
||
plcMeterStepCell.TimeSec = GetKeepTimeSec(Data.KeepTime);
|
||
plcMeterStepCell.Step = GetStep(PLCParsData);
|
||
plcMeterStepCell.Cycle = 0;
|
||
plcMeterStepCell.SlopConst = 0;
|
||
|
||
//增加步骤信息
|
||
PLCParsData.Steps.Add(plcMeterStepCell);
|
||
|
||
return PLCParsData;
|
||
}
|
||
|
||
return PLCParsData;
|
||
}
|
||
}
|
||
else
|
||
{
|
||
return PLCParsData;
|
||
}
|
||
|
||
}
|
||
|
||
|
||
/// <summary>
|
||
/// 单步(内部多个小步骤)解析 单个仪表参数
|
||
/// 获取 步骤信息 ExPress
|
||
/// </summary>
|
||
/// <returns></returns>
|
||
/// <exception cref="NotImplementedException"></exception>
|
||
private static PlcParsData GetStepsByMeterExPresss(ICollection<MeterExPress>? MeterDatas, PlcParsData PLCParsData, int Cycle)
|
||
{
|
||
if (MeterDatas != null && MeterDatas.Count > 0)
|
||
{
|
||
if (MeterDatas.Where(a => a.ValueType == ConfigValueType.Slope).Count() > 0)
|
||
{
|
||
//排序
|
||
var MeterExPresssOrder = MeterDatas.OrderBy(a => a.StepNo).ToList();
|
||
var ListCount = MeterDatas.Count;
|
||
var Index = 0;
|
||
|
||
foreach (var item in MeterExPresssOrder)
|
||
{
|
||
PlcMeterStepCell plcMeterStepCell = new PlcMeterStepCell();
|
||
|
||
plcMeterStepCell.Value = item.EndValue;
|
||
plcMeterStepCell.TimeMin = GetKeepTimeMin(item.KeepTime);
|
||
plcMeterStepCell.TimeSec = GetKeepTimeSec(item.KeepTime);
|
||
plcMeterStepCell.Step = GetStep(PLCParsData);
|
||
plcMeterStepCell.Cycle = GetCycleCount(Cycle, Index, ListCount);
|
||
plcMeterStepCell.SlopConst = 1;
|
||
//增加步骤信息
|
||
PLCParsData.Steps.Add(plcMeterStepCell);
|
||
|
||
Index++;
|
||
}
|
||
|
||
return PLCParsData;
|
||
}
|
||
else//常值
|
||
{
|
||
var Data = MeterDatas.Where(a => a.ValueType == ConfigValueType.Constant).FirstOrDefault();
|
||
if (Data != null)
|
||
{
|
||
PlcMeterStepCell plcMeterStepCell = new PlcMeterStepCell();
|
||
|
||
plcMeterStepCell.Value = Data.Constant;
|
||
plcMeterStepCell.TimeMin = GetKeepTimeMin(Data.KeepTime);
|
||
plcMeterStepCell.TimeSec = GetKeepTimeSec(Data.KeepTime);
|
||
plcMeterStepCell.Step = GetStep(PLCParsData);
|
||
plcMeterStepCell.Cycle = 0;
|
||
plcMeterStepCell.SlopConst = 0;
|
||
//增加步骤信息
|
||
PLCParsData.Steps.Add(plcMeterStepCell);
|
||
|
||
return PLCParsData;
|
||
}
|
||
|
||
return PLCParsData;
|
||
}
|
||
}
|
||
else
|
||
{
|
||
return PLCParsData;
|
||
}
|
||
|
||
}
|
||
|
||
|
||
/// <summary>
|
||
/// 单步(内部多个小步骤)解析 单个仪表参数
|
||
/// 获取 步骤信息 HVVol
|
||
/// </summary>
|
||
/// <returns></returns>
|
||
/// <exception cref="NotImplementedException"></exception>
|
||
private static PlcParsData GetStepsByMeterHVVols(ICollection<MeterHVVol>? MeterDatas, PlcParsData PLCParsData, int Cycle)
|
||
{
|
||
if (MeterDatas != null && MeterDatas.Count > 0)
|
||
{
|
||
if (MeterDatas.Where(a => a.ValueType == ConfigValueType.Slope).Count() > 0)
|
||
{
|
||
//排序
|
||
var MeterHVVolsOrder = MeterDatas.OrderBy(a => a.StepNo).ToList();
|
||
var ListCount = MeterDatas.Count;
|
||
var Index = 0;
|
||
|
||
foreach (var item in MeterHVVolsOrder)
|
||
{
|
||
PlcMeterStepCell plcMeterStepCell = new PlcMeterStepCell();
|
||
|
||
plcMeterStepCell.Value = item.EndValue;
|
||
plcMeterStepCell.TimeMin = GetKeepTimeMin(item.KeepTime);
|
||
plcMeterStepCell.TimeSec = GetKeepTimeSec(item.KeepTime);
|
||
plcMeterStepCell.Step = GetStep(PLCParsData);
|
||
plcMeterStepCell.Cycle = GetCycleCount(Cycle, Index, ListCount);
|
||
//增加步骤信息
|
||
PLCParsData.Steps.Add(plcMeterStepCell);
|
||
|
||
Index++;
|
||
}
|
||
|
||
return PLCParsData;
|
||
}
|
||
else//常值
|
||
{
|
||
var Data = MeterDatas.Where(a => a.ValueType == ConfigValueType.Constant).FirstOrDefault();
|
||
if (Data != null)
|
||
{
|
||
PlcMeterStepCell plcMeterStepCell = new PlcMeterStepCell();
|
||
|
||
plcMeterStepCell.Value = Data.Constant;
|
||
plcMeterStepCell.TimeMin = GetKeepTimeMin(Data.KeepTime);
|
||
plcMeterStepCell.TimeSec = GetKeepTimeSec(Data.KeepTime);
|
||
plcMeterStepCell.Step = GetStep(PLCParsData);
|
||
plcMeterStepCell.Cycle = 0;
|
||
|
||
//增加步骤信息
|
||
PLCParsData.Steps.Add(plcMeterStepCell);
|
||
|
||
return PLCParsData;
|
||
}
|
||
|
||
return PLCParsData;
|
||
}
|
||
}
|
||
else
|
||
{
|
||
return PLCParsData;
|
||
}
|
||
|
||
}
|
||
|
||
|
||
/// <summary>
|
||
/// 单步(内部多个小步骤)解析 单个仪表参数
|
||
/// 获取 步骤信息 InhPress
|
||
/// </summary>
|
||
/// <returns></returns>
|
||
/// <exception cref="NotImplementedException"></exception>
|
||
private static PlcParsData GetStepsByMeterInhPresss(ICollection<MeterInhPress>? MeterDatas, PlcParsData PLCParsData, int Cycle)
|
||
{
|
||
if (MeterDatas != null && MeterDatas.Count > 0)
|
||
{
|
||
if (MeterDatas.Where(a => a.ValueType == ConfigValueType.Slope).Count() > 0)
|
||
{
|
||
//排序
|
||
var MeterInhPresssOrder = MeterDatas.OrderBy(a => a.StepNo).ToList();
|
||
var ListCount = MeterDatas.Count;
|
||
var Index = 0;
|
||
|
||
foreach (var item in MeterInhPresssOrder)
|
||
{
|
||
PlcMeterStepCell plcMeterStepCell = new PlcMeterStepCell();
|
||
|
||
plcMeterStepCell.Value = item.EndValue;
|
||
plcMeterStepCell.TimeMin = GetKeepTimeMin(item.KeepTime);
|
||
plcMeterStepCell.TimeSec = GetKeepTimeSec(item.KeepTime);
|
||
plcMeterStepCell.Step = GetStep(PLCParsData);
|
||
plcMeterStepCell.Cycle = GetCycleCount(Cycle, Index, ListCount);
|
||
plcMeterStepCell.SlopConst = 1;
|
||
//增加步骤信息
|
||
PLCParsData.Steps.Add(plcMeterStepCell);
|
||
|
||
Index++;
|
||
}
|
||
|
||
return PLCParsData;
|
||
}
|
||
else//常值
|
||
{
|
||
var Data = MeterDatas.Where(a => a.ValueType == ConfigValueType.Constant).FirstOrDefault();
|
||
if (Data != null)
|
||
{
|
||
PlcMeterStepCell plcMeterStepCell = new PlcMeterStepCell();
|
||
|
||
plcMeterStepCell.Value = Data.Constant;
|
||
plcMeterStepCell.TimeMin = GetKeepTimeMin(Data.KeepTime);
|
||
plcMeterStepCell.TimeSec = GetKeepTimeSec(Data.KeepTime);
|
||
plcMeterStepCell.Step = GetStep(PLCParsData);
|
||
plcMeterStepCell.Cycle = 0;
|
||
plcMeterStepCell.SlopConst = 0;
|
||
//增加步骤信息
|
||
PLCParsData.Steps.Add(plcMeterStepCell);
|
||
|
||
return PLCParsData;
|
||
}
|
||
|
||
return PLCParsData;
|
||
}
|
||
}
|
||
else
|
||
{
|
||
return PLCParsData;
|
||
}
|
||
|
||
}
|
||
|
||
|
||
/// <summary>
|
||
/// 单步(内部多个小步骤)解析 单个仪表参数
|
||
/// 获取 步骤信息 InhTemp
|
||
/// </summary>
|
||
/// <returns></returns>
|
||
/// <exception cref="NotImplementedException"></exception>
|
||
private static PlcParsData GetStepsByMeterInhTemps(ICollection<MeterInhTemp>? MeterDatas, PlcParsData PLCParsData, int Cycle)
|
||
{
|
||
if (MeterDatas != null && MeterDatas.Count > 0)
|
||
{
|
||
if (MeterDatas.Where(a => a.ValueType == ConfigValueType.Slope).Count() > 0)
|
||
{
|
||
//排序
|
||
var MeterInhTempsOrder = MeterDatas.OrderBy(a => a.StepNo).ToList();
|
||
var ListCount = MeterDatas.Count;
|
||
var Index = 0;
|
||
|
||
foreach (var item in MeterInhTempsOrder)
|
||
{
|
||
PlcMeterStepCell plcMeterStepCell = new PlcMeterStepCell();
|
||
|
||
plcMeterStepCell.Value = item.EndValue;
|
||
plcMeterStepCell.TimeMin = GetKeepTimeMin(item.KeepTime);
|
||
plcMeterStepCell.TimeSec = GetKeepTimeSec(item.KeepTime);
|
||
plcMeterStepCell.Step = GetStep(PLCParsData);
|
||
plcMeterStepCell.Cycle = GetCycleCount(Cycle, Index, ListCount);
|
||
plcMeterStepCell.SlopConst = 1;
|
||
//增加步骤信息
|
||
PLCParsData.Steps.Add(plcMeterStepCell);
|
||
|
||
Index++;
|
||
}
|
||
|
||
return PLCParsData;
|
||
}
|
||
else//常值
|
||
{
|
||
var Data = MeterDatas.Where(a => a.ValueType == ConfigValueType.Constant).FirstOrDefault();
|
||
if (Data != null)
|
||
{
|
||
PlcMeterStepCell plcMeterStepCell = new PlcMeterStepCell();
|
||
|
||
plcMeterStepCell.Value = Data.Constant;
|
||
plcMeterStepCell.TimeMin = GetKeepTimeMin(Data.KeepTime);
|
||
plcMeterStepCell.TimeSec = GetKeepTimeSec(Data.KeepTime);
|
||
plcMeterStepCell.Step = GetStep(PLCParsData);
|
||
plcMeterStepCell.Cycle = 0;
|
||
plcMeterStepCell.SlopConst = 0;
|
||
|
||
//增加步骤信息
|
||
PLCParsData.Steps.Add(plcMeterStepCell);
|
||
|
||
return PLCParsData;
|
||
}
|
||
|
||
return PLCParsData;
|
||
}
|
||
}
|
||
else
|
||
{
|
||
return PLCParsData;
|
||
}
|
||
|
||
}
|
||
|
||
|
||
/// <summary>
|
||
/// 单步(内部多个小步骤)解析 单个仪表参数
|
||
/// 获取 步骤信息 LubePress
|
||
/// </summary>
|
||
/// <returns></returns>
|
||
/// <exception cref="NotImplementedException"></exception>
|
||
private static PlcParsData GetStepsByMeterLubePresss(ICollection<MeterLubePress>? MeterDatas, PlcParsData PLCParsData, int Cycle)
|
||
{
|
||
if (MeterDatas != null && MeterDatas.Count > 0)
|
||
{
|
||
if (MeterDatas.Where(a => a.ValueType == ConfigValueType.Slope).Count() > 0)
|
||
{
|
||
//排序
|
||
var MeterLubePresssOrder = MeterDatas.OrderBy(a => a.StepNo).ToList();
|
||
var ListCount = MeterDatas.Count;
|
||
var Index = 0;
|
||
|
||
foreach (var item in MeterLubePresssOrder)
|
||
{
|
||
PlcMeterStepCell plcMeterStepCell = new PlcMeterStepCell();
|
||
|
||
plcMeterStepCell.Value = item.EndValue;
|
||
plcMeterStepCell.TimeMin = GetKeepTimeMin(item.KeepTime);
|
||
plcMeterStepCell.TimeSec = GetKeepTimeSec(item.KeepTime);
|
||
plcMeterStepCell.Step = GetStep(PLCParsData);
|
||
plcMeterStepCell.Cycle = GetCycleCount(Cycle, Index, ListCount);
|
||
plcMeterStepCell.SlopConst = 1;
|
||
//增加步骤信息
|
||
PLCParsData.Steps.Add(plcMeterStepCell);
|
||
|
||
Index++;
|
||
}
|
||
|
||
return PLCParsData;
|
||
}
|
||
else//常值
|
||
{
|
||
var Data = MeterDatas.Where(a => a.ValueType == ConfigValueType.Constant).FirstOrDefault();
|
||
if (Data != null)
|
||
{
|
||
PlcMeterStepCell plcMeterStepCell = new PlcMeterStepCell();
|
||
|
||
plcMeterStepCell.Value = Data.Constant;
|
||
plcMeterStepCell.TimeMin = GetKeepTimeMin(Data.KeepTime);
|
||
plcMeterStepCell.TimeSec = GetKeepTimeSec(Data.KeepTime);
|
||
plcMeterStepCell.Step = GetStep(PLCParsData);
|
||
plcMeterStepCell.Cycle = 0;
|
||
plcMeterStepCell.SlopConst = 0;
|
||
|
||
//增加步骤信息
|
||
PLCParsData.Steps.Add(plcMeterStepCell);
|
||
|
||
return PLCParsData;
|
||
}
|
||
|
||
return PLCParsData;
|
||
}
|
||
}
|
||
else
|
||
{
|
||
return PLCParsData;
|
||
}
|
||
|
||
}
|
||
|
||
|
||
/// <summary>
|
||
/// 单步(内部多个小步骤)解析 单个仪表参数
|
||
/// 获取 步骤信息 LVVol
|
||
/// </summary>
|
||
/// <returns></returns>
|
||
/// <exception cref="NotImplementedException"></exception>
|
||
private static PlcParsData GetStepsByMeterLVVols(ICollection<MeterLVVol>? MeterDatas, PlcParsData PLCParsData, int Cycle)
|
||
{
|
||
if (MeterDatas != null && MeterDatas.Count > 0)
|
||
{
|
||
if (MeterDatas.Where(a => a.ValueType == ConfigValueType.Slope).Count() > 0)
|
||
{
|
||
//排序
|
||
var MeterLVVolsOrder = MeterDatas.OrderBy(a => a.StepNo).ToList();
|
||
var ListCount = MeterDatas.Count;
|
||
var Index = 0;
|
||
|
||
foreach (var item in MeterLVVolsOrder)
|
||
{
|
||
PlcMeterStepCell plcMeterStepCell = new PlcMeterStepCell();
|
||
|
||
plcMeterStepCell.Value = item.EndValue;
|
||
plcMeterStepCell.TimeMin = GetKeepTimeMin(item.KeepTime);
|
||
plcMeterStepCell.TimeSec = GetKeepTimeSec(item.KeepTime);
|
||
plcMeterStepCell.Step = GetStep(PLCParsData);
|
||
plcMeterStepCell.Cycle = GetCycleCount(Cycle, Index, ListCount);
|
||
plcMeterStepCell.SlopConst = 1;
|
||
//增加步骤信息
|
||
PLCParsData.Steps.Add(plcMeterStepCell);
|
||
|
||
Index++;
|
||
}
|
||
|
||
return PLCParsData;
|
||
}
|
||
else//常值
|
||
{
|
||
var Data = MeterDatas.Where(a => a.ValueType == ConfigValueType.Constant).FirstOrDefault();
|
||
if (Data != null)
|
||
{
|
||
PlcMeterStepCell plcMeterStepCell = new PlcMeterStepCell();
|
||
|
||
plcMeterStepCell.Value = Data.Constant;
|
||
plcMeterStepCell.TimeMin = GetKeepTimeMin(Data.KeepTime);
|
||
plcMeterStepCell.TimeSec = GetKeepTimeSec(Data.KeepTime);
|
||
plcMeterStepCell.Step = GetStep(PLCParsData);
|
||
plcMeterStepCell.Cycle = 0;
|
||
plcMeterStepCell.SlopConst = 0;
|
||
|
||
//增加步骤信息
|
||
PLCParsData.Steps.Add(plcMeterStepCell);
|
||
|
||
return PLCParsData;
|
||
}
|
||
|
||
return PLCParsData;
|
||
}
|
||
}
|
||
else
|
||
{
|
||
return PLCParsData;
|
||
}
|
||
|
||
}
|
||
|
||
/// <summary>
|
||
/// 单步(内部多个小步骤)解析 单个仪表参数
|
||
/// 获取 步骤信息 OCR
|
||
/// </summary>
|
||
/// <returns></returns>
|
||
/// <exception cref="NotImplementedException"></exception>
|
||
private static PlcParsData GetStepsByMeterOCRs(ICollection<MeterOCR>? MeterDatas, PlcParsData PLCParsData, int Cycle)
|
||
{
|
||
if (MeterDatas != null && MeterDatas.Count > 0)
|
||
{
|
||
if (MeterDatas.Where(a => a.ValueType == ConfigValueType.Slope).Count() > 0)
|
||
{
|
||
//排序
|
||
var MeterOCRsOrder = MeterDatas.OrderBy(a => a.StepNo).ToList();
|
||
var ListCount = MeterDatas.Count;
|
||
var Index = 0;
|
||
|
||
foreach (var item in MeterOCRsOrder)
|
||
{
|
||
PlcMeterStepCell plcMeterStepCell = new PlcMeterStepCell();
|
||
|
||
plcMeterStepCell.Value = item.EndValue;
|
||
plcMeterStepCell.TimeMin = GetKeepTimeMin(item.KeepTime);
|
||
plcMeterStepCell.TimeSec = GetKeepTimeSec(item.KeepTime);
|
||
plcMeterStepCell.Step = GetStep(PLCParsData);
|
||
plcMeterStepCell.Cycle = GetCycleCount(Cycle, Index, ListCount);
|
||
plcMeterStepCell.SlopConst = 1;
|
||
//增加步骤信息
|
||
PLCParsData.Steps.Add(plcMeterStepCell);
|
||
|
||
Index++;
|
||
}
|
||
|
||
return PLCParsData;
|
||
}
|
||
else//常值
|
||
{
|
||
var Data = MeterDatas.Where(a => a.ValueType == ConfigValueType.Constant).FirstOrDefault();
|
||
if (Data != null)
|
||
{
|
||
PlcMeterStepCell plcMeterStepCell = new PlcMeterStepCell();
|
||
|
||
plcMeterStepCell.Value = Data.Constant;
|
||
plcMeterStepCell.TimeMin = GetKeepTimeMin(Data.KeepTime);
|
||
plcMeterStepCell.TimeSec = GetKeepTimeSec(Data.KeepTime);
|
||
plcMeterStepCell.Step = GetStep(PLCParsData);
|
||
plcMeterStepCell.Cycle = 0;
|
||
plcMeterStepCell.SlopConst = 0;
|
||
|
||
//增加步骤信息
|
||
PLCParsData.Steps.Add(plcMeterStepCell);
|
||
|
||
return PLCParsData;
|
||
}
|
||
|
||
return PLCParsData;
|
||
}
|
||
}
|
||
else
|
||
{
|
||
return PLCParsData;
|
||
}
|
||
|
||
}
|
||
|
||
/// <summary>
|
||
/// 单步(内部多个小步骤)解析 单个仪表参数
|
||
/// 获取 步骤信息 OS1Temp
|
||
/// </summary>
|
||
/// <returns></returns>
|
||
/// <exception cref="NotImplementedException"></exception>
|
||
private static PlcParsData GetStepsByMeterOS1Temps(ICollection<MeterOS1Temp>? MeterDatas, PlcParsData PLCParsData, int Cycle)
|
||
{
|
||
if (MeterDatas != null && MeterDatas.Count > 0)
|
||
{
|
||
if (MeterDatas.Where(a => a.ValueType == ConfigValueType.Slope).Count() > 0)
|
||
{
|
||
//排序
|
||
var MeterOS1TempsOrder = MeterDatas.OrderBy(a => a.StepNo).ToList();
|
||
var ListCount = MeterDatas.Count;
|
||
var Index = 0;
|
||
|
||
foreach (var item in MeterOS1TempsOrder)
|
||
{
|
||
PlcMeterStepCell plcMeterStepCell = new PlcMeterStepCell();
|
||
|
||
plcMeterStepCell.Value = item.EndValue;
|
||
plcMeterStepCell.TimeMin = GetKeepTimeMin(item.KeepTime);
|
||
plcMeterStepCell.TimeSec = GetKeepTimeSec(item.KeepTime);
|
||
plcMeterStepCell.Step = GetStep(PLCParsData);
|
||
plcMeterStepCell.Cycle = GetCycleCount(Cycle, Index, ListCount);
|
||
plcMeterStepCell.SlopConst = 1;
|
||
//增加步骤信息
|
||
PLCParsData.Steps.Add(plcMeterStepCell);
|
||
|
||
Index++;
|
||
}
|
||
|
||
return PLCParsData;
|
||
}
|
||
else//常值
|
||
{
|
||
var Data = MeterDatas.Where(a => a.ValueType == ConfigValueType.Constant).FirstOrDefault();
|
||
if (Data != null)
|
||
{
|
||
PlcMeterStepCell plcMeterStepCell = new PlcMeterStepCell();
|
||
|
||
plcMeterStepCell.Value = Data.Constant;
|
||
plcMeterStepCell.TimeMin = GetKeepTimeMin(Data.KeepTime);
|
||
plcMeterStepCell.TimeSec = GetKeepTimeSec(Data.KeepTime);
|
||
plcMeterStepCell.Step = GetStep(PLCParsData);
|
||
plcMeterStepCell.Cycle = 0;
|
||
plcMeterStepCell.SlopConst = 0;
|
||
|
||
//增加步骤信息
|
||
PLCParsData.Steps.Add(plcMeterStepCell);
|
||
|
||
return PLCParsData;
|
||
}
|
||
|
||
return PLCParsData;
|
||
}
|
||
}
|
||
else
|
||
{
|
||
return PLCParsData;
|
||
}
|
||
|
||
}
|
||
|
||
|
||
/// <summary>
|
||
/// 单步(内部多个小步骤)解析 单个仪表参数
|
||
/// 获取 步骤信息 OS2Temp
|
||
/// </summary>
|
||
/// <returns></returns>
|
||
/// <exception cref="NotImplementedException"></exception>
|
||
private static PlcParsData GetStepsByMeterOS2Temps(ICollection<MeterOS2Temp>? MeterDatas, PlcParsData PLCParsData, int Cycle)
|
||
{
|
||
if (MeterDatas != null && MeterDatas.Count > 0)
|
||
{
|
||
if (MeterDatas.Where(a => a.ValueType == ConfigValueType.Slope).Count() > 0)
|
||
{
|
||
//排序
|
||
var MeterOS2TempsOrder = MeterDatas.OrderBy(a => a.StepNo).ToList();
|
||
var ListCount = MeterDatas.Count;
|
||
var Index = 0;
|
||
|
||
foreach (var item in MeterOS2TempsOrder)
|
||
{
|
||
PlcMeterStepCell plcMeterStepCell = new PlcMeterStepCell();
|
||
|
||
plcMeterStepCell.Value = item.EndValue;
|
||
plcMeterStepCell.TimeMin = GetKeepTimeMin(item.KeepTime);
|
||
plcMeterStepCell.TimeSec = GetKeepTimeSec(item.KeepTime);
|
||
plcMeterStepCell.Step = GetStep(PLCParsData);
|
||
plcMeterStepCell.Cycle = GetCycleCount(Cycle, Index, ListCount);
|
||
plcMeterStepCell.SlopConst = 1;
|
||
//增加步骤信息
|
||
PLCParsData.Steps.Add(plcMeterStepCell);
|
||
|
||
Index++;
|
||
}
|
||
|
||
return PLCParsData;
|
||
}
|
||
else//常值
|
||
{
|
||
var Data = MeterDatas.Where(a => a.ValueType == ConfigValueType.Constant).FirstOrDefault();
|
||
if (Data != null)
|
||
{
|
||
PlcMeterStepCell plcMeterStepCell = new PlcMeterStepCell();
|
||
|
||
plcMeterStepCell.Value = Data.Constant;
|
||
plcMeterStepCell.TimeMin = GetKeepTimeMin(Data.KeepTime);
|
||
plcMeterStepCell.TimeSec = GetKeepTimeSec(Data.KeepTime);
|
||
plcMeterStepCell.Step = GetStep(PLCParsData);
|
||
plcMeterStepCell.Cycle = 0;
|
||
plcMeterStepCell.SlopConst = 0;
|
||
|
||
//增加步骤信息
|
||
PLCParsData.Steps.Add(plcMeterStepCell);
|
||
|
||
return PLCParsData;
|
||
}
|
||
|
||
return PLCParsData;
|
||
}
|
||
}
|
||
else
|
||
{
|
||
return PLCParsData;
|
||
}
|
||
|
||
}
|
||
|
||
|
||
/// <summary>
|
||
/// 单步(内部多个小步骤)解析 单个仪表参数
|
||
/// 获取 步骤信息 PTCEntTemp
|
||
/// </summary>
|
||
/// <returns></returns>
|
||
/// <exception cref="NotImplementedException"></exception>
|
||
private static PlcParsData GetStepsByMeterPTCEntTemps(ICollection<MeterPTCEntTemp>? MeterDatas, PlcParsData PLCParsData, int Cycle)
|
||
{
|
||
if (MeterDatas != null && MeterDatas.Count > 0)
|
||
{
|
||
if (MeterDatas.Where(a => a.ValueType == ConfigValueType.Slope).Count() > 0)
|
||
{
|
||
//排序
|
||
var MeterPTCEntTempsOrder = MeterDatas.OrderBy(a => a.StepNo).ToList();
|
||
var ListCount = MeterDatas.Count;
|
||
var Index = 0;
|
||
|
||
foreach (var item in MeterPTCEntTempsOrder)
|
||
{
|
||
PlcMeterStepCell plcMeterStepCell = new PlcMeterStepCell();
|
||
|
||
plcMeterStepCell.Value = item.EndValue;
|
||
plcMeterStepCell.TimeMin = GetKeepTimeMin(item.KeepTime);
|
||
plcMeterStepCell.TimeSec = GetKeepTimeSec(item.KeepTime);
|
||
plcMeterStepCell.Step = GetStep(PLCParsData);
|
||
plcMeterStepCell.Cycle = GetCycleCount(Cycle, Index, ListCount);
|
||
plcMeterStepCell.SlopConst = 1;
|
||
//增加步骤信息
|
||
PLCParsData.Steps.Add(plcMeterStepCell);
|
||
|
||
Index++;
|
||
}
|
||
|
||
return PLCParsData;
|
||
}
|
||
else//常值
|
||
{
|
||
var Data = MeterDatas.Where(a => a.ValueType == ConfigValueType.Constant).FirstOrDefault();
|
||
if (Data != null)
|
||
{
|
||
PlcMeterStepCell plcMeterStepCell = new PlcMeterStepCell();
|
||
|
||
plcMeterStepCell.Value = Data.Constant;
|
||
plcMeterStepCell.TimeMin = GetKeepTimeMin(Data.KeepTime);
|
||
plcMeterStepCell.TimeSec = GetKeepTimeSec(Data.KeepTime);
|
||
plcMeterStepCell.Step = GetStep(PLCParsData);
|
||
plcMeterStepCell.Cycle = 0;
|
||
plcMeterStepCell.SlopConst = 0;
|
||
|
||
//增加步骤信息
|
||
PLCParsData.Steps.Add(plcMeterStepCell);
|
||
|
||
return PLCParsData;
|
||
}
|
||
|
||
return PLCParsData;
|
||
}
|
||
}
|
||
else
|
||
{
|
||
return PLCParsData;
|
||
}
|
||
|
||
}
|
||
|
||
|
||
/// <summary>
|
||
/// 单步(内部多个小步骤)解析 单个仪表参数
|
||
/// 获取 步骤信息 PTCFlow
|
||
/// </summary>
|
||
/// <returns></returns>
|
||
/// <exception cref="NotImplementedException"></exception>
|
||
private static PlcParsData GetStepsByMeterPTCFlows(ICollection<MeterPTCFlow>? MeterDatas, PlcParsData PLCParsData, int Cycle)
|
||
{
|
||
if (MeterDatas != null && MeterDatas.Count > 0)
|
||
{
|
||
if (MeterDatas.Where(a => a.ValueType == ConfigValueType.Slope).Count() > 0)
|
||
{
|
||
//排序
|
||
var MeterPTCFlowsOrder = MeterDatas.OrderBy(a => a.StepNo).ToList();
|
||
var ListCount = MeterDatas.Count;
|
||
var Index = 0;
|
||
|
||
foreach (var item in MeterPTCFlowsOrder)
|
||
{
|
||
PlcMeterStepCell plcMeterStepCell = new PlcMeterStepCell();
|
||
|
||
plcMeterStepCell.Value = item.EndValue;
|
||
plcMeterStepCell.TimeMin = GetKeepTimeMin(item.KeepTime);
|
||
plcMeterStepCell.TimeSec = GetKeepTimeSec(item.KeepTime);
|
||
plcMeterStepCell.Step = GetStep(PLCParsData);
|
||
plcMeterStepCell.Cycle = GetCycleCount(Cycle, Index, ListCount);
|
||
plcMeterStepCell.SlopConst = 1;
|
||
//增加步骤信息
|
||
PLCParsData.Steps.Add(plcMeterStepCell);
|
||
|
||
Index++;
|
||
}
|
||
|
||
return PLCParsData;
|
||
}
|
||
else//常值
|
||
{
|
||
var Data = MeterDatas.Where(a => a.ValueType == ConfigValueType.Constant).FirstOrDefault();
|
||
if (Data != null)
|
||
{
|
||
PlcMeterStepCell plcMeterStepCell = new PlcMeterStepCell();
|
||
|
||
plcMeterStepCell.Value = Data.Constant;
|
||
plcMeterStepCell.TimeMin = GetKeepTimeMin(Data.KeepTime);
|
||
plcMeterStepCell.TimeSec = GetKeepTimeSec(Data.KeepTime);
|
||
plcMeterStepCell.Step = GetStep(PLCParsData);
|
||
plcMeterStepCell.Cycle = 0;
|
||
plcMeterStepCell.SlopConst = 0;
|
||
|
||
//增加步骤信息
|
||
PLCParsData.Steps.Add(plcMeterStepCell);
|
||
|
||
return PLCParsData;
|
||
}
|
||
|
||
return PLCParsData;
|
||
}
|
||
}
|
||
else
|
||
{
|
||
return PLCParsData;
|
||
}
|
||
|
||
}
|
||
|
||
|
||
/// <summary>
|
||
/// 单步(内部多个小步骤)解析 单个仪表参数
|
||
/// 获取 步骤信息 PTCPw
|
||
/// </summary>
|
||
/// <returns></returns>
|
||
/// <exception cref="NotImplementedException"></exception>
|
||
private static PlcParsData GetStepsByMeterPTCPws(ICollection<MeterPTCPw>? MeterDatas, PlcParsData PLCParsData, int Cycle)
|
||
{
|
||
if (MeterDatas != null && MeterDatas.Count > 0)
|
||
{
|
||
if (MeterDatas.Where(a => a.ValueType == ConfigValueType.Slope).Count() > 0)
|
||
{
|
||
//排序
|
||
var MeterPTCPwsOrder = MeterDatas.OrderBy(a => a.StepNo).ToList();
|
||
var ListCount = MeterDatas.Count;
|
||
var Index = 0;
|
||
|
||
foreach (var item in MeterPTCPwsOrder)
|
||
{
|
||
PlcMeterStepCell plcMeterStepCell = new PlcMeterStepCell();
|
||
|
||
plcMeterStepCell.Value = item.EndValue;
|
||
plcMeterStepCell.TimeMin = GetKeepTimeMin(item.KeepTime);
|
||
plcMeterStepCell.TimeSec = GetKeepTimeSec(item.KeepTime);
|
||
plcMeterStepCell.Step = GetStep(PLCParsData);
|
||
plcMeterStepCell.Cycle = GetCycleCount(Cycle, Index, ListCount);
|
||
plcMeterStepCell.SlopConst = 1;
|
||
//增加步骤信息
|
||
PLCParsData.Steps.Add(plcMeterStepCell);
|
||
|
||
Index++;
|
||
}
|
||
|
||
return PLCParsData;
|
||
}
|
||
else//常值
|
||
{
|
||
var Data = MeterDatas.Where(a => a.ValueType == ConfigValueType.Constant).FirstOrDefault();
|
||
if (Data != null)
|
||
{
|
||
PlcMeterStepCell plcMeterStepCell = new PlcMeterStepCell();
|
||
|
||
plcMeterStepCell.Value = Data.Constant;
|
||
plcMeterStepCell.TimeMin = GetKeepTimeMin(Data.KeepTime);
|
||
plcMeterStepCell.TimeSec = GetKeepTimeSec(Data.KeepTime);
|
||
plcMeterStepCell.Step = GetStep(PLCParsData);
|
||
plcMeterStepCell.Cycle = 0;
|
||
plcMeterStepCell.SlopConst = 0;
|
||
|
||
//增加步骤信息
|
||
PLCParsData.Steps.Add(plcMeterStepCell);
|
||
|
||
return PLCParsData;
|
||
}
|
||
|
||
return PLCParsData;
|
||
}
|
||
}
|
||
else
|
||
{
|
||
return PLCParsData;
|
||
}
|
||
|
||
}
|
||
|
||
/// <summary>
|
||
/// 单步(内部多个小步骤)解析 单个仪表参数
|
||
/// 获取 步骤信息 EnvRH
|
||
/// </summary>
|
||
/// <returns></returns>
|
||
/// <exception cref="NotImplementedException"></exception>
|
||
private static PlcParsData GetStepsByMeterEnvRHs(ICollection<MeterEnvRH>? MeterDatas, PlcParsData PLCParsData, int Cycle)
|
||
{
|
||
if (MeterDatas != null && MeterDatas.Count > 0)
|
||
{
|
||
if (MeterDatas.Where(a => a.ValueType == ConfigValueType.Slope).Count() > 0)
|
||
{
|
||
//排序
|
||
var MeterEnvRHsOrder = MeterDatas.OrderBy(a => a.StepNo).ToList();
|
||
var ListCount = MeterDatas.Count;
|
||
var Index = 0;
|
||
|
||
foreach (var item in MeterEnvRHsOrder)
|
||
{
|
||
PlcMeterStepCell plcMeterStepCell = new PlcMeterStepCell();
|
||
|
||
plcMeterStepCell.Value = item.EndValue;
|
||
plcMeterStepCell.TimeMin = GetKeepTimeMin(item.KeepTime);
|
||
plcMeterStepCell.TimeSec = GetKeepTimeSec(item.KeepTime);
|
||
plcMeterStepCell.Step = GetStep(PLCParsData);
|
||
plcMeterStepCell.Cycle = GetCycleCount(Cycle, Index, ListCount);
|
||
plcMeterStepCell.SlopConst = 1;
|
||
//增加步骤信息
|
||
PLCParsData.Steps.Add(plcMeterStepCell);
|
||
|
||
Index++;
|
||
}
|
||
|
||
return PLCParsData;
|
||
}
|
||
else//常值
|
||
{
|
||
var Data = MeterDatas.Where(a => a.ValueType == ConfigValueType.Constant).FirstOrDefault();
|
||
if (Data != null)
|
||
{
|
||
PlcMeterStepCell plcMeterStepCell = new PlcMeterStepCell();
|
||
|
||
plcMeterStepCell.Value = Data.Constant;
|
||
plcMeterStepCell.TimeMin = GetKeepTimeMin(Data.KeepTime);
|
||
plcMeterStepCell.TimeSec = GetKeepTimeSec(Data.KeepTime);
|
||
plcMeterStepCell.Step = GetStep(PLCParsData);
|
||
plcMeterStepCell.Cycle = 0;
|
||
plcMeterStepCell.SlopConst = 0;
|
||
|
||
//增加步骤信息
|
||
PLCParsData.Steps.Add(plcMeterStepCell);
|
||
|
||
return PLCParsData;
|
||
}
|
||
|
||
return PLCParsData;
|
||
}
|
||
}
|
||
else
|
||
{
|
||
return PLCParsData;
|
||
}
|
||
|
||
}
|
||
|
||
/// <summary>
|
||
/// 单步(内部多个小步骤)解析 单个仪表参数
|
||
/// 获取 步骤信息 EnvTemp
|
||
/// </summary>
|
||
/// <returns></returns>
|
||
/// <exception cref="NotImplementedException"></exception>
|
||
private static PlcParsData GetStepsByMeterEnvTemps(ICollection<MeterEnvTemp>? MeterDatas, PlcParsData PLCParsData, int Cycle)
|
||
{
|
||
if (MeterDatas != null && MeterDatas.Count > 0)
|
||
{
|
||
if (MeterDatas.Where(a => a.ValueType == ConfigValueType.Slope).Count() > 0)
|
||
{
|
||
//排序
|
||
var MeterEnvTempsOrder = MeterDatas.OrderBy(a => a.StepNo).ToList();
|
||
var ListCount = MeterDatas.Count;
|
||
var Index = 0;
|
||
|
||
foreach (var item in MeterEnvTempsOrder)
|
||
{
|
||
PlcMeterStepCell plcMeterStepCell = new PlcMeterStepCell();
|
||
|
||
plcMeterStepCell.Value = item.EndValue;
|
||
plcMeterStepCell.TimeMin = GetKeepTimeMin(item.KeepTime);
|
||
plcMeterStepCell.TimeSec = GetKeepTimeSec(item.KeepTime);
|
||
plcMeterStepCell.Step = GetStep(PLCParsData);
|
||
plcMeterStepCell.Cycle = GetCycleCount(Cycle, Index, ListCount);
|
||
plcMeterStepCell.SlopConst = 1;
|
||
//增加步骤信息
|
||
PLCParsData.Steps.Add(plcMeterStepCell);
|
||
|
||
Index++;
|
||
}
|
||
|
||
return PLCParsData;
|
||
}
|
||
else//常值
|
||
{
|
||
var Data = MeterDatas.Where(a => a.ValueType == ConfigValueType.Constant).FirstOrDefault();
|
||
if (Data != null)
|
||
{
|
||
PlcMeterStepCell plcMeterStepCell = new PlcMeterStepCell();
|
||
|
||
plcMeterStepCell.Value = Data.Constant;
|
||
plcMeterStepCell.TimeMin = GetKeepTimeMin(Data.KeepTime);
|
||
plcMeterStepCell.TimeSec = GetKeepTimeSec(Data.KeepTime);
|
||
plcMeterStepCell.Step = GetStep(PLCParsData);
|
||
plcMeterStepCell.Cycle = 0;
|
||
plcMeterStepCell.SlopConst = 0;
|
||
|
||
//增加步骤信息
|
||
PLCParsData.Steps.Add(plcMeterStepCell);
|
||
|
||
return PLCParsData;
|
||
}
|
||
|
||
return PLCParsData;
|
||
}
|
||
}
|
||
else
|
||
{
|
||
return PLCParsData;
|
||
}
|
||
|
||
}
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
/// <summary>
|
||
/// 获取KeepTime分钟信息
|
||
/// </summary>
|
||
/// <returns></returns>
|
||
private static int GetKeepTimeMin(int keeptime)
|
||
{
|
||
return keeptime / 60;
|
||
}
|
||
|
||
/// <summary>
|
||
/// 获取KeepTime 秒信息
|
||
/// </summary>
|
||
/// <returns></returns>
|
||
private static int GetKeepTimeSec(int keeptime)
|
||
{
|
||
return keeptime % 60;
|
||
}
|
||
|
||
|
||
/// <summary>
|
||
/// 获取步骤信息
|
||
/// </summary>
|
||
/// <param name="plcParsData"></param>
|
||
/// <param name="name"></param>
|
||
/// <returns></returns>
|
||
private static int GetStep(PlcParsData plcParsData)
|
||
{
|
||
if (plcParsData.Steps != null && plcParsData.Steps.Any())
|
||
{
|
||
return plcParsData.Steps.Count + 1;
|
||
}
|
||
else
|
||
{
|
||
return 1;
|
||
}
|
||
}
|
||
|
||
|
||
|
||
/// <summary>
|
||
/// 获取Cycle信息
|
||
/// </summary>
|
||
/// <returns></returns>
|
||
private static int GetCycleCount(int Cycle, int Index, int ListCount)
|
||
{
|
||
if (Cycle==1)
|
||
{
|
||
//只有一次,也就是没有循环,就是直接的步骤,统一返回没有循环固定值
|
||
return 0;
|
||
}
|
||
|
||
if (ListCount > 1)
|
||
{
|
||
//步骤ProStep内部有循环
|
||
if (Index == 0)
|
||
{
|
||
//循环开始
|
||
return -1;
|
||
}
|
||
if (ListCount == Index + 1)
|
||
{
|
||
//循环结束
|
||
return Cycle;
|
||
}
|
||
//循环中间
|
||
return 0;
|
||
}
|
||
else
|
||
{
|
||
//步骤ProStep内部就一个步序,没有循环,则直接返回步骤的Cycle
|
||
//单步骤,没有循环
|
||
return 0;
|
||
}
|
||
}
|
||
|
||
/// <summary>
|
||
/// 加载PLC的地址
|
||
/// 单元分割
|
||
/// </summary>
|
||
/// <returns></returns>
|
||
private static List<PlcParsData> LoadPlcCellAddress(List<PlcParsData> plcParsDatas)
|
||
{
|
||
//单步长度
|
||
int StepLengh = 150;
|
||
|
||
//展开每个控制参数的具体配置
|
||
foreach (var itemMeter in plcParsDatas)
|
||
{
|
||
//循环Index
|
||
int Index = 0;
|
||
//每个参数循环内部的步骤信息,每个参数都是独立的时间和循环次数,数据上面已经铺开了,但是地址没有
|
||
foreach (var itemStep in itemMeter.Steps.OrderBy(a => a.Step))
|
||
{
|
||
if (itemMeter.ValueStartAddress != 0)
|
||
{
|
||
var StepValueAddress = itemMeter.ValueStartAddress + Index * StepLengh;
|
||
itemStep.ValueAddress = "V" + StepValueAddress;
|
||
}
|
||
if (itemMeter.MinStartAddress != 0)
|
||
{
|
||
var StepMinAddress = itemMeter.MinStartAddress + Index * StepLengh;
|
||
itemStep.MinAddress = "V" + StepMinAddress;
|
||
}
|
||
if (itemMeter.SecStartAddress != 0)
|
||
{
|
||
var StepSecAddress = itemMeter.SecStartAddress + Index * StepLengh;
|
||
itemStep.SecAddress = "V" + StepSecAddress;
|
||
}
|
||
if (itemMeter.CycleStartAddress != 0)
|
||
{
|
||
var StepCycleAddress = itemMeter.CycleStartAddress + Index * StepLengh;
|
||
itemStep.CycleAddress = "V" + StepCycleAddress;
|
||
}
|
||
if (itemMeter.SlopConstAddress != 0)//斜率和常值的地址
|
||
{
|
||
var StepCycleAddress = itemMeter.SlopConstAddress + Index * StepLengh;
|
||
itemStep.SlopConstAddress = "V" + StepCycleAddress;
|
||
}
|
||
Index++;
|
||
}
|
||
|
||
}
|
||
|
||
return plcParsDatas;
|
||
}
|
||
|
||
/// <summary>
|
||
/// 加载PLC块地址信息
|
||
/// </summary>
|
||
/// <param name="plcParsDatas"></param>
|
||
/// <param name="start"></param>
|
||
/// <returns></returns>
|
||
private static List<PlcBlockData> LoadPlcBlockAddress(List<PlcParsData> plcParsDatas, int start)
|
||
{
|
||
//开始地址
|
||
int StartAddress = start;
|
||
//单步长度
|
||
int StepLengh = 100;
|
||
//循环Index
|
||
int Index = 0;
|
||
//数据集合
|
||
List<PlcBlockData> BlockDatas = new List<PlcBlockData>();
|
||
|
||
foreach (var item in plcParsDatas)
|
||
{
|
||
var StepAddress = StartAddress + Index * StepLengh;
|
||
|
||
//每个步骤封装成一个PlcBlockData
|
||
short[] shorts = new short[19];//看有多少个字段
|
||
//shorts[item.Speed!.Index - 1] = (short)item.Speed!.Value!;
|
||
//shorts[item.Cond1Temp!.Index - 1] = (short)item.Cond1Temp!.Value!;
|
||
//shorts[item.Cond2Temp!.Index - 1] = (short)item.Cond2Temp!.Value!;
|
||
//shorts[item.CondPress!.Index - 1] = (short)item.CondPress!.Value!;
|
||
//shorts[item.EVAPExpTemp!.Index - 1] = (short)item.EVAPExpTemp!.Value!;
|
||
//shorts[item.ExPress!.Index - 1] = (short)item.ExPress!.Value!;
|
||
//shorts[item.HVVol!.Index - 1] = (short)item.HVVol!.Value!;
|
||
//shorts[item.InhPress!.Index - 1] = (short)item.InhPress!.Value!;
|
||
//shorts[item.InhTemp!.Index - 1] = (short)item.InhTemp!.Value!;
|
||
//shorts[item.LoPress!.Index - 1] = (short)item.LoPress!.Value!;
|
||
//shorts[item.LVVol!.Index - 1] = (short)item.LVVol!.Value!;
|
||
//shorts[item.OCR!.Index - 1] = (short)item.OCR!.Value!;
|
||
//shorts[item.OS1Temp!.Index - 1] = (short)item.OS1Temp!.Value!;
|
||
//shorts[item.OS2Temp!.Index - 1] = (short)item.OS2Temp!.Value!;
|
||
//shorts[item.PTCEntTemp!.Index - 1] = (short)item.PTCEntTemp!.Value!;
|
||
//shorts[item.PTCFlow!.Index - 1] = (short)item.PTCFlow!.Value!;
|
||
//shorts[item.PTCPw!.Index - 1] = (short)item.PTCPw!.Value!;
|
||
//shorts[item.TestBoxRH!.Index - 1] = (short)item.TestBoxRH!.Value!;
|
||
//shorts[item.TestBoxTemp!.Index - 1] = (short)item.TestBoxTemp!.Value!;
|
||
|
||
BlockDatas.Add(new PlcBlockData()
|
||
{
|
||
StartAddress = "VW" + StepAddress.ToString(),
|
||
ArrValue = shorts
|
||
});
|
||
|
||
Index++;
|
||
}
|
||
|
||
return BlockDatas;
|
||
}
|
||
|
||
/// <summary>
|
||
/// 根据名称获取Index信息
|
||
/// </summary>
|
||
/// <returns></returns>
|
||
public static int GetIndexByName(DataGridColumn dataGridColumn)
|
||
{
|
||
var headerText = (dataGridColumn.Header as TextBlock).Text;
|
||
if (headerText.Contains("COND1温度 "))
|
||
{
|
||
return 0;
|
||
}
|
||
else if (headerText.Contains("COND2温度"))
|
||
{
|
||
return 1;
|
||
}
|
||
else if (headerText.Contains("COND2压力"))
|
||
{
|
||
return 2;
|
||
}
|
||
else if (headerText.Contains("EVAP出口温度"))
|
||
{
|
||
return 3;
|
||
}
|
||
else if (headerText.Contains("排气压力"))
|
||
{
|
||
return 4;
|
||
}
|
||
else if (headerText.Contains("HV电压"))
|
||
{
|
||
return 5;
|
||
}
|
||
else if (headerText.Contains("吸气压力"))
|
||
{
|
||
return 6;
|
||
}
|
||
else if (headerText.Contains("吸气温度"))
|
||
{
|
||
return 7;
|
||
}
|
||
else if (headerText.Contains("润滑油压力"))
|
||
{
|
||
return 8;
|
||
}
|
||
else if (headerText.Contains("LV电压"))
|
||
{
|
||
return 9;
|
||
}
|
||
else if (headerText.Contains("OCR"))
|
||
{
|
||
return 10;
|
||
}
|
||
else if (headerText.Contains("OS1温度"))
|
||
{
|
||
return 11;
|
||
}
|
||
else if (headerText.Contains("OS2温度"))
|
||
{
|
||
return 12;
|
||
}
|
||
else if (headerText.Contains("PTC入口温度"))
|
||
{
|
||
return 13;
|
||
}
|
||
else if (headerText.Contains("PTC流量"))
|
||
{
|
||
return 14;
|
||
}
|
||
else if (headerText.Contains("PTC功率"))
|
||
{
|
||
return 15;
|
||
}
|
||
else if (headerText.Contains("试验箱湿度"))
|
||
{
|
||
return 16;
|
||
}
|
||
else if (headerText.Contains("试验箱温度"))
|
||
{
|
||
return 17;
|
||
}
|
||
else
|
||
{
|
||
return 0;
|
||
}
|
||
}
|
||
|
||
|
||
#region 获取数据
|
||
|
||
/// <summary>
|
||
/// 获取 MeterCellByMeterCond1Temps
|
||
/// </summary>
|
||
/// <returns></returns>
|
||
private static double GetMeterCellByMeterCond1Temps(ICollection<MeterCond1Temp> meterCond1Temps, int Index)
|
||
{
|
||
try
|
||
{
|
||
if (meterCond1Temps.Count() >= (Index + 1))
|
||
{
|
||
return meterCond1Temps.ToList()[Index].EndValue;
|
||
}
|
||
//找不到的话,则返回第一个值
|
||
return meterCond1Temps.FirstOrDefault()!.EndValue;
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
return 0.0;
|
||
}
|
||
}
|
||
/// <summary>
|
||
/// 获取 MeterCellByMeterCond2Temps
|
||
/// </summary>
|
||
/// <returns></returns>
|
||
private static double GetMeterCellByMeterCond2Temps(ICollection<MeterCond2Temp> meterCond2Temps, int Index)
|
||
{
|
||
try
|
||
{
|
||
if (meterCond2Temps.Count() >= (Index + 1))
|
||
{
|
||
return meterCond2Temps.ToList()[Index].EndValue;
|
||
}
|
||
//找不到的话,则返回第一个值
|
||
return meterCond2Temps.FirstOrDefault()!.EndValue;
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
return 0.0;
|
||
}
|
||
}
|
||
/// <summary>
|
||
/// 获取 MeterCellByMeterCondPresss
|
||
/// </summary>
|
||
/// <returns></returns>
|
||
private static double GetMeterCellByMeterCondPresss(ICollection<MeterCond2Press> meterCondPresss, int Index)
|
||
{
|
||
try
|
||
{
|
||
if (meterCondPresss.Count() >= (Index + 1))
|
||
{
|
||
return meterCondPresss.ToList()[Index].EndValue;
|
||
}
|
||
//找不到的话,则返回第一个值
|
||
return meterCondPresss.FirstOrDefault()!.EndValue;
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
return 0.0;
|
||
}
|
||
}
|
||
/// <summary>
|
||
/// 获取 MeterCellByMeterEVAPExpTemps
|
||
/// </summary>
|
||
/// <returns></returns>
|
||
private static double GetMeterCellByMeterEVAPExpTemps(ICollection<MeterEVAPExpTemp> meterEVAPExpTemps, int Index)
|
||
{
|
||
try
|
||
{
|
||
if (meterEVAPExpTemps.Count() >= (Index + 1))
|
||
{
|
||
return meterEVAPExpTemps.ToList()[Index].EndValue;
|
||
}
|
||
//找不到的话,则返回第一个值
|
||
return meterEVAPExpTemps.FirstOrDefault()!.EndValue;
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
return 0.0;
|
||
}
|
||
}
|
||
/// <summary>
|
||
/// 获取 MeterCellByMeterExPresss
|
||
/// </summary>
|
||
/// <returns></returns>
|
||
private static double GetMeterCellByMeterExPresss(ICollection<MeterExPress> meterExPresss, int Index)
|
||
{
|
||
try
|
||
{
|
||
if (meterExPresss.Count() >= (Index + 1))
|
||
{
|
||
return meterExPresss.ToList()[Index].EndValue;
|
||
}
|
||
//找不到的话,则返回第一个值
|
||
return meterExPresss.FirstOrDefault()!.EndValue;
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
return 0.0;
|
||
}
|
||
}
|
||
/// <summary>
|
||
/// 获取 MeterCellByMeterHVVols
|
||
/// </summary>
|
||
/// <returns></returns>
|
||
private static double GetMeterCellByMeterHVVols(ICollection<MeterHVVol> meterHVVols, int Index)
|
||
{
|
||
try
|
||
{
|
||
if (meterHVVols.Count() >= (Index + 1))
|
||
{
|
||
return meterHVVols.ToList()[Index].EndValue;
|
||
}
|
||
//找不到的话,则返回第一个值
|
||
return meterHVVols.FirstOrDefault()!.EndValue;
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
return 0.0;
|
||
}
|
||
}
|
||
/// <summary>
|
||
/// 获取 MeterCellByMeterInhPresss
|
||
/// </summary>
|
||
/// <returns></returns>
|
||
private static double GetMeterCellByMeterInhPresss(ICollection<MeterInhPress> meterInhPresss, int Index)
|
||
{
|
||
try
|
||
{
|
||
if (meterInhPresss.Count() >= (Index + 1))
|
||
{
|
||
return meterInhPresss.ToList()[Index].EndValue;
|
||
}
|
||
//找不到的话,则返回第一个值
|
||
return meterInhPresss.FirstOrDefault()!.EndValue;
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
return 0.0;
|
||
}
|
||
}
|
||
/// <summary>
|
||
/// 获取 MeterCellByMeterInhTemps
|
||
/// </summary>
|
||
/// <returns></returns>
|
||
private static double GetMeterCellByMeterInhTemps(ICollection<MeterInhTemp> meterInhTemps, int Index)
|
||
{
|
||
try
|
||
{
|
||
if (meterInhTemps.Count() >= (Index + 1))
|
||
{
|
||
return meterInhTemps.ToList()[Index].EndValue;
|
||
}
|
||
//找不到的话,则返回第一个值
|
||
return meterInhTemps.FirstOrDefault()!.EndValue;
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
return 0.0;
|
||
}
|
||
}
|
||
/// <summary>
|
||
/// 获取 MeterCellByMeterLoPresss
|
||
/// </summary>
|
||
/// <returns></returns>
|
||
private static double GetMeterCellByMeterLoPresss(ICollection<MeterLubePress> meterLoPresss, int Index)
|
||
{
|
||
try
|
||
{
|
||
if (meterLoPresss.Count() >= (Index + 1))
|
||
{
|
||
return meterLoPresss.ToList()[Index].EndValue;
|
||
}
|
||
//找不到的话,则返回第一个值
|
||
return meterLoPresss.FirstOrDefault()!.EndValue;
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
return 0.0;
|
||
}
|
||
}
|
||
/// <summary>
|
||
/// 获取 MeterCellByMeterLVVols
|
||
/// </summary>
|
||
/// <returns></returns>
|
||
private static double GetMeterCellByMeterLVVols(ICollection<MeterLVVol> meterLVVols, int Index)
|
||
{
|
||
try
|
||
{
|
||
if (meterLVVols.Count() >= (Index + 1))
|
||
{
|
||
return meterLVVols.ToList()[Index].EndValue;
|
||
}
|
||
//找不到的话,则返回第一个值
|
||
return meterLVVols.FirstOrDefault()!.EndValue;
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
return 0.0;
|
||
}
|
||
}
|
||
/// <summary>
|
||
/// 获取 MeterCellByMeterOCRs
|
||
/// </summary>
|
||
/// <returns></returns>
|
||
private static double GetMeterCellByMeterOCRs(ICollection<MeterOCR> meterOCRs, int Index)
|
||
{
|
||
try
|
||
{
|
||
if (meterOCRs.Count() >= (Index + 1))
|
||
{
|
||
return meterOCRs.ToList()[Index].EndValue;
|
||
}
|
||
//找不到的话,则返回第一个值
|
||
return meterOCRs.FirstOrDefault()!.EndValue;
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
return 0.0;
|
||
}
|
||
}
|
||
/// <summary>
|
||
/// 获取 MeterCellByMeterOS1Temps
|
||
/// </summary>
|
||
/// <returns></returns>
|
||
private static double GetMeterCellByMeterOS1Temps(ICollection<MeterOS1Temp> meterOS1Temps, int Index)
|
||
{
|
||
try
|
||
{
|
||
if (meterOS1Temps.Count() >= (Index + 1))
|
||
{
|
||
return meterOS1Temps.ToList()[Index].EndValue;
|
||
}
|
||
//找不到的话,则返回第一个值
|
||
return meterOS1Temps.FirstOrDefault()!.EndValue;
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
return 0.0;
|
||
}
|
||
}
|
||
/// <summary>
|
||
/// 获取 MeterCellByMeterOS2Temps
|
||
/// </summary>
|
||
/// <returns></returns>
|
||
private static double GetMeterCellByMeterOS2Temps(ICollection<MeterOS2Temp> meterOS2Temps, int Index)
|
||
{
|
||
try
|
||
{
|
||
if (meterOS2Temps.Count() >= (Index + 1))
|
||
{
|
||
return meterOS2Temps.ToList()[Index].EndValue;
|
||
}
|
||
//找不到的话,则返回第一个值
|
||
return meterOS2Temps.FirstOrDefault()!.EndValue;
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
return 0.0;
|
||
}
|
||
}
|
||
/// <summary>
|
||
/// 获取 MeterCellByMeterPTCEntTemps
|
||
/// </summary>
|
||
/// <returns></returns>
|
||
private static double GetMeterCellByMeterPTCEntTemps(ICollection<MeterPTCEntTemp> meterPTCEntTemps, int Index)
|
||
{
|
||
try
|
||
{
|
||
if (meterPTCEntTemps.Count() >= (Index + 1))
|
||
{
|
||
return meterPTCEntTemps.ToList()[Index].EndValue;
|
||
}
|
||
//找不到的话,则返回第一个值
|
||
return meterPTCEntTemps.FirstOrDefault()!.EndValue;
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
return 0.0;
|
||
}
|
||
}
|
||
/// <summary>
|
||
/// 获取 MeterCellByMeterPTCFlows
|
||
/// </summary>
|
||
/// <returns></returns>
|
||
private static double GetMeterCellByMeterPTCFlows(ICollection<MeterPTCFlow> meterPTCFlows, int Index)
|
||
{
|
||
try
|
||
{
|
||
if (meterPTCFlows.Count() >= (Index + 1))
|
||
{
|
||
return meterPTCFlows.ToList()[Index].EndValue;
|
||
}
|
||
//找不到的话,则返回第一个值
|
||
return meterPTCFlows.FirstOrDefault()!.EndValue;
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
return 0.0;
|
||
}
|
||
}
|
||
/// <summary>
|
||
/// 获取 MeterCellByMeterPTCPws
|
||
/// </summary>
|
||
/// <returns></returns>
|
||
private static double GetMeterCellByMeterPTCPws(ICollection<MeterPTCPw> meterPTCPws, int Index)
|
||
{
|
||
try
|
||
{
|
||
if (meterPTCPws.Count() >= (Index + 1))
|
||
{
|
||
return meterPTCPws.ToList()[Index].EndValue;
|
||
}
|
||
//找不到的话,则返回第一个值
|
||
return meterPTCPws.FirstOrDefault()!.EndValue;
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
return 0.0;
|
||
}
|
||
}
|
||
/// <summary>
|
||
/// 获取 MeterCellByMeterTestBoxRHs
|
||
/// </summary>
|
||
/// <returns></returns>
|
||
private static double GetMeterCellByMeterTestBoxRHs(ICollection<MeterEnvRH> meterTestBoxRHs, int Index)
|
||
{
|
||
try
|
||
{
|
||
if (meterTestBoxRHs.Count() >= (Index + 1))
|
||
{
|
||
return meterTestBoxRHs.ToList()[Index].EndValue;
|
||
}
|
||
//找不到的话,则返回第一个值
|
||
return meterTestBoxRHs.FirstOrDefault()!.EndValue;
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
return 0.0;
|
||
}
|
||
}
|
||
/// <summary>
|
||
/// 获取 MeterCellByMeterTestBoxTemps
|
||
/// </summary>
|
||
/// <returns></returns>
|
||
private static double GetMeterCellByMeterTestBoxTemps(ICollection<MeterEnvTemp> meterTestBoxTemps, int Index)
|
||
{
|
||
try
|
||
{
|
||
if (meterTestBoxTemps.Count() >= (Index + 1))
|
||
{
|
||
return meterTestBoxTemps.ToList()[Index].EndValue;
|
||
}
|
||
//找不到的话,则返回第一个值
|
||
return meterTestBoxTemps.FirstOrDefault()!.EndValue;
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
return 0.0;
|
||
}
|
||
}
|
||
|
||
#endregion
|
||
|
||
}
|
||
|
||
}
|