This commit is contained in:
2024-12-18 15:50:21 +08:00
parent 684973e6b7
commit b2c54119ea
214 changed files with 65908 additions and 8461 deletions

View File

@@ -1,6 +1,8 @@
using CapMachine.Model;
using CapMachine.Model.MeterConfig;
using CapMachine.Model.PLCParsModel;
using HslCommunication.Profinet.Siemens;
using Masuit.Tools;
using SharpDX;
using System.Windows.Controls;
@@ -8,9 +10,67 @@ namespace CapMachine.Wpf.ProPars
{
/// <summary>
/// 程序解析方法
/// 每个参数的配置是独立的
/// </summary>
public class ProParsHelper
{
/// <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",Steps=new List<PlcMeterStepCell>(),Ratio=1,Unit="",ValueStartAddress=1006,MinStartAddress=1000,SecStartAddress=1002,CycleStartAddress=1004 },
new PlcParsData(){ Name="COND1温度 ",EnName="Cond1Temp",Step=100,Steps=new List<PlcMeterStepCell>(),Ratio=10,Unit="",ValueStartAddress=1014,MinStartAddress=1068,SecStartAddress=1070,CycleStartAddress=1098 },
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="ExPress",Step=100,Steps=new List<PlcMeterStepCell>(),Ratio=100,Unit="" ,ValueStartAddress=1008,MinStartAddress=1056,SecStartAddress=1058,CycleStartAddress=1090 },
new PlcParsData(){ Name="HV电压",EnName="HVVol",Step=100,SetAddressInfo=AddressInfo.NoCycle,Steps=new List<PlcMeterStepCell>(),Ratio=10,Unit="" ,ValueStartAddress=1022,MinStartAddress=1080,SecStartAddress=1082,CycleStartAddress=0 },
new PlcParsData(){ Name="吸气压力",EnName="InhPress",Step=100,Steps=new List<PlcMeterStepCell>(),Ratio=100,Unit="" ,ValueStartAddress=1010,MinStartAddress=1060,SecStartAddress=1062,CycleStartAddress=1094 },
new PlcParsData(){ Name="吸气温度",EnName="InhTemp",Step=100,Steps=new List<PlcMeterStepCell>(),Ratio=10,Unit="" ,ValueStartAddress=1012,MinStartAddress=1064,SecStartAddress=1066,CycleStartAddress=1096 },
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="LV电压",EnName="LVVol",Step=100,SetAddressInfo=AddressInfo.NoTimeAndCycle,Steps=new List<PlcMeterStepCell>(),Ratio=10,Unit="" ,ValueStartAddress=1024,MinStartAddress=0,SecStartAddress=0,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="OS2温度",EnName="OS2Temp",Step=100,SetAddressInfo=AddressInfo.NoTimeAndCycle,Steps=new List<PlcMeterStepCell>(),Ratio=10,Unit="" ,ValueStartAddress=1032,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="EnvRH",Step=100,SetAddressInfo=AddressInfo.NoCycle,Steps=new List<PlcMeterStepCell>(),Ratio=10,Unit="" ,ValueStartAddress=1028,MinStartAddress=1088,SecStartAddress=1090,CycleStartAddress=0 },
new PlcParsData(){ Name="压缩机环境温度",EnName="EnvTemp",Step=100,SetAddressInfo=AddressInfo.NoCycle,Steps=new List<PlcMeterStepCell>(),Ratio=10,Unit="" ,ValueStartAddress=1026,MinStartAddress=1084,SecStartAddress=1086,CycleStartAddress=0 },
new PlcParsData(){ Name="输出锁定",EnName="OutLock",Step=100,SetAddressInfo=AddressInfo.NoTimeAndCycle,Steps=new List<PlcMeterStepCell>(),Ratio=1,Unit="" ,ValueStartAddress=1038,MinStartAddress=0,SecStartAddress=0,CycleStartAddress=0 },
new PlcParsData(){ Name="参数编号",EnName="ParNo",Step=100,SetAddressInfo=AddressInfo.NoTimeAndCycle,Steps=new List<PlcMeterStepCell>(),Ratio=1,Unit="" ,ValueStartAddress=1040,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=1042,MinStartAddress=0,SecStartAddress=0,CycleStartAddress=0 },
new PlcParsData(){ Name="压缩机使能",EnName="CapEnable",Step=100,SetAddressInfo=AddressInfo.NoTimeAndCycle,Steps=new List<PlcMeterStepCell>(),Ratio=1,Unit="" ,ValueStartAddress=1044,MinStartAddress=0,SecStartAddress=0,CycleStartAddress=0 },
new PlcParsData(){ Name="吸排气阀",EnName="InhExhValve",Step=100,SetAddressInfo=AddressInfo.NoTimeAndCycle,Steps=new List<PlcMeterStepCell>(),Ratio=1,Unit="" ,ValueStartAddress=1046,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=1048,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步骤信息
@@ -19,55 +79,12 @@ namespace CapMachine.Wpf.ProPars
/// <returns></returns>
public static List<PlcParsData> GetPlcParsData(List<ProStep> proSteps, int Cycle)
{
//取得的PLC步骤数据,提前预设好
List<PlcParsData> ListPlcParsData = new List<PlcParsData>()
//装载ListPlcParsData的结构数据
for (int i = 0; i < Cycle; i++)//Proge 大循环
{
new PlcParsData(){ Name="速度",EnName="Speed",Steps=new List<PlcMeterStepCell>(),Ratio=1,Unit="",ValueStartAddress=1006,MinStartAddress=1000,SecStartAddress=1002,CycleStartAddress=1004 },
new PlcParsData(){ Name="COND1温度 ",EnName="Cond1Temp",Steps=new List<PlcMeterStepCell>(),Ratio=1,Unit="",ValueStartAddress=1014,MinStartAddress=1068,SecStartAddress=1070,CycleStartAddress=1098 },
new PlcParsData(){ Name="COND2温度",EnName="Cond2Temp",Steps=new List<PlcMeterStepCell>(),Ratio=1,Unit="" ,ValueStartAddress=1034,MinStartAddress=0,SecStartAddress=0,CycleStartAddress=0 },
new PlcParsData(){ Name="COND2压力",EnName="Cond2Press",Steps=new List<PlcMeterStepCell>(),Ratio=1,Unit="" ,ValueStartAddress=1018,MinStartAddress=1076,SecStartAddress=1078,CycleStartAddress=0 },
new PlcParsData(){ Name="EVAP出口温度",EnName="EVAPExpTemp",Steps=new List<PlcMeterStepCell>(),Ratio=1,Unit="" ,ValueStartAddress=1036,MinStartAddress=0,SecStartAddress=0,CycleStartAddress=0 },
new PlcParsData(){ Name="排气压力",EnName="ExPress",Steps=new List<PlcMeterStepCell>(),Ratio=1,Unit="" ,ValueStartAddress=1008,MinStartAddress=1058,SecStartAddress=1058,CycleStartAddress=1092 },
new PlcParsData(){ Name="HV电压",EnName="HVVol",Steps=new List<PlcMeterStepCell>(),Ratio=1,Unit="" ,ValueStartAddress=1022,MinStartAddress=1080,SecStartAddress=1082,CycleStartAddress=0 },
new PlcParsData(){ Name="吸气压力",EnName="InhPress",Steps=new List<PlcMeterStepCell>(),Ratio=1,Unit="" ,ValueStartAddress=1010,MinStartAddress=1060,SecStartAddress=1062,CycleStartAddress=1094 },
new PlcParsData(){ Name="吸气温度",EnName="InhTemp",Steps=new List<PlcMeterStepCell>(),Ratio=1,Unit="" ,ValueStartAddress=1012,MinStartAddress=1064,SecStartAddress=1066,CycleStartAddress=1096 },
new PlcParsData(){ Name="润滑油压力",EnName="LubePress",Steps=new List<PlcMeterStepCell>(),Ratio=1,Unit="" ,ValueStartAddress=1016,MinStartAddress=1072,SecStartAddress=1074,CycleStartAddress=0 },
new PlcParsData(){ Name="LV电压",EnName="LVVol",Steps=new List<PlcMeterStepCell>(),Ratio=1,Unit="" ,ValueStartAddress=1024,MinStartAddress=0,SecStartAddress=0,CycleStartAddress=0 },
new PlcParsData(){ Name="OCR",EnName="OCR",Steps=new List<PlcMeterStepCell>(),Ratio=1,Unit="" ,ValueStartAddress=1020,MinStartAddress=0,SecStartAddress=0,CycleStartAddress=0 },
new PlcParsData(){ Name="OS1温度",EnName="OS1Temp",Steps=new List<PlcMeterStepCell>(),Ratio=1,Unit="" ,ValueStartAddress=1030,MinStartAddress=0,SecStartAddress=0,CycleStartAddress=0 },
new PlcParsData(){ Name="OS2温度",EnName="OS2Temp",Steps=new List<PlcMeterStepCell>(),Ratio=1,Unit="" ,ValueStartAddress=1032,MinStartAddress=0,SecStartAddress=0,CycleStartAddress=0 },
new PlcParsData(){ Name="PTC入口温度",EnName="PTCEntTemp",Steps=new List<PlcMeterStepCell>(),Ratio=1,Unit="" ,ValueStartAddress=1054,MinStartAddress=0,SecStartAddress=0,CycleStartAddress=0 },
new PlcParsData(){ Name="PTC流量",EnName="PTCFlow",Steps=new List<PlcMeterStepCell>(),Ratio=1,Unit="" ,ValueStartAddress=1052,MinStartAddress=0,SecStartAddress=0,CycleStartAddress=0 },
new PlcParsData(){ Name="PTC功率",EnName="PTCPw",Steps=new List<PlcMeterStepCell>(),Ratio=1,Unit="" ,ValueStartAddress=1050,MinStartAddress=0,SecStartAddress=0,CycleStartAddress=0 },
new PlcParsData(){ Name="压缩机环境湿度",EnName="EnvRH",Steps=new List<PlcMeterStepCell>(),Ratio=1,Unit="" ,ValueStartAddress=1028,MinStartAddress=1088,SecStartAddress=1090,CycleStartAddress=0 },
new PlcParsData(){ Name="压缩机环境温度",EnName="EnvTemp",Steps=new List<PlcMeterStepCell>(),Ratio=1,Unit="" ,ValueStartAddress=1026,MinStartAddress=1084,SecStartAddress=1086,CycleStartAddress=0 },
new PlcParsData(){ Name="输出锁定",EnName="OutLock",Steps=new List<PlcMeterStepCell>(),Ratio=1,Unit="" ,ValueStartAddress=0,MinStartAddress=0,SecStartAddress=0,CycleStartAddress=0 },
new PlcParsData(){ Name="参数编号",EnName="ParNo",Steps=new List<PlcMeterStepCell>(),Ratio=1,Unit="" ,ValueStartAddress=0,MinStartAddress=0,SecStartAddress=0,CycleStartAddress=0 },
new PlcParsData(){ Name="EV",EnName="Ev",Steps=new List<PlcMeterStepCell>(),Ratio=1,Unit="" ,ValueStartAddress=0,MinStartAddress=0,SecStartAddress=0,CycleStartAddress=0 },
new PlcParsData(){ Name="压缩机使能",EnName="CapEnable",Steps=new List<PlcMeterStepCell>(),Ratio=1,Unit="" ,ValueStartAddress=0,MinStartAddress=0,SecStartAddress=0,CycleStartAddress=0 },
new PlcParsData(){ Name="吸排气阀",EnName="InhExhValve",Steps=new List<PlcMeterStepCell>(),Ratio=1,Unit="" ,ValueStartAddress=0,MinStartAddress=0,SecStartAddress=0,CycleStartAddress=0 },
new PlcParsData(){ Name="加热器使能",EnName="HeatEnable",Steps=new List<PlcMeterStepCell>(),Ratio=1,Unit="" ,ValueStartAddress=0,MinStartAddress=0,SecStartAddress=0,CycleStartAddress=0 },
//new PlcParsData(){ Name="加热器功率",EnName="HeatPw",Steps=new List<PlcMeterStepCell>(),Ratio=1,Unit="" },
//new PlcParsData(){ Name="加热器流量",EnName="HeatFlow",Steps=new List<PlcMeterStepCell>(),Ratio=1,Unit="" },
//new PlcParsData(){ Name="加热器入口水温",EnName="HeatInWatTemp",Steps=new List<PlcMeterStepCell>(),Ratio=1,Unit="" },
};
for (int i = 0; i < Cycle; i++)//大循环
{
foreach (ProStep proStep in proSteps)//小循环
foreach (ProStep proStep in proSteps)//ProStep 小循环
{
//每个步骤里面包含多个参数的设置
//每个ProStep步骤里面包含多个参数的设置
ListPlcParsData = LoadPlcParsData(proStep, ListPlcParsData);//内部循环
}
}
@@ -87,11 +104,12 @@ namespace CapMachine.Wpf.ProPars
{
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);
var Result = siemensS7NetStance.Write(itemStep.ValueAddress, (short)(itemStep.Value * item.Ratio));
if (!Result.IsSuccess)
{
var data1 = 1;
@@ -124,7 +142,6 @@ namespace CapMachine.Wpf.ProPars
}
}
var data = 1;
//siemensS7NetStance.Write();
}
@@ -132,16 +149,18 @@ namespace CapMachine.Wpf.ProPars
/// 单步骤程序解析
/// 单步骤里面包括多个仪表参数的配置信息
/// </summary>
/// <param name="proStep"></param>
/// <param name="plcParsDatas"></param>
/// <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);
//跟速度绑定的数据
GetStepsByMeterSpeeds(proStep.MeterSpeeds, plcParsDatas.Find(a => a.EnName == "Speed")!, proStep.SpeedCycle, plcParsDatas);
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()));
@@ -261,7 +280,7 @@ namespace CapMachine.Wpf.ProPars
/// </summary>
/// <returns></returns>
/// <exception cref="NotImplementedException"></exception>
private static PlcParsData GetStepsByMeterSpeeds(ICollection<MeterSpeed>? MeterDatas, PlcParsData PLCParsData, int Cycle)
private static PlcParsData GetStepsByMeterSpeeds(ICollection<MeterSpeed>? MeterDatas, PlcParsData PLCParsData, int Cycle, List<PlcParsData> ListPlcParsData)
{
if (MeterDatas != null && MeterDatas.Count > 0)
{
@@ -285,9 +304,41 @@ namespace CapMachine.Wpf.ProPars
//增加步骤信息
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//常值
@@ -306,6 +357,37 @@ namespace CapMachine.Wpf.ProPars
//增加步骤信息
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;
}
@@ -316,7 +398,6 @@ namespace CapMachine.Wpf.ProPars
{
return PLCParsData;
}
}
@@ -1554,14 +1635,31 @@ namespace CapMachine.Wpf.ProPars
//单步长度
int StepLengh = 100;
//展开每个参数的具体配置
foreach (var itemMeter in plcParsDatas)
{
//var Stepaddress = StartAddress + Index * StepLengh;
//switch (itemMeter.SetAddressInfo)
//{
// case AddressInfo.OK:
// break;
// case AddressInfo.NoCycle:
// break;
// case AddressInfo.NoTimeAndCycle:
// break;
// default:
// break;
//}
//循环Index
int Index = 0;
//循环内部的步骤信息
//每个参数循环内部的步骤信息,每个参数都是独立的时间和循环次数,数据上面已经铺开了,但是地址没有
foreach (var itemStep in itemMeter.Steps.OrderBy(a => a.Step))
{
if (itemMeter.ValueStartAddress != 0)

View File

@@ -1,5 +1,4 @@
using CapMachine.Model;
using CapMachine.Model.MeterConfig;
using CapMachine.Model.PLCParsModel;
using CapMachine.Wpf.Dtos;
using HslCommunication.Profinet.Siemens;
@@ -23,41 +22,41 @@ namespace CapMachine.Wpf.ProPars
List<PlcParsDataQuick> ListPlcParsDataQuick = new List<PlcParsDataQuick>()
{
new PlcParsDataQuick(){ Name="速度",EnName="Speed",Step=100,Steps=new List<PlcMeterStepCellQuick>(),Ratio=1,Unit="",ValueStartAddress=1006, },
new PlcParsDataQuick(){ Name="COND1温度 ",EnName="Cond1Temp",Step=100,Steps=new List<PlcMeterStepCellQuick>(),Ratio=1,Unit="",ValueStartAddress=1014, },
new PlcParsDataQuick(){ Name="COND2温度",EnName="Cond2Temp",Step=100,Steps=new List<PlcMeterStepCellQuick>(),Ratio=1,Unit="" ,ValueStartAddress=1034, },
new PlcParsDataQuick(){ Name="COND2压力",EnName="Cond2Press",Step=100,Steps=new List<PlcMeterStepCellQuick>(),Ratio=1,Unit="" ,ValueStartAddress=1018, },
new PlcParsDataQuick(){ Name="EVAP出口温度",EnName="EVAPExpTemp",Step=100,Steps=new List<PlcMeterStepCellQuick>(),Ratio=1,Unit="" ,ValueStartAddress=1036, },
new PlcParsDataQuick(){ Name="排气压力",EnName="ExPress",Step=100,Steps=new List<PlcMeterStepCellQuick>(),Ratio=1,Unit="" ,ValueStartAddress=1008, },
new PlcParsDataQuick(){ Name="COND1温度 ",EnName="Cond1Temp",Step=100,Steps=new List<PlcMeterStepCellQuick>(),Ratio=10,Unit="",ValueStartAddress=1014, },
new PlcParsDataQuick(){ Name="COND2温度",EnName="Cond2Temp",Step=100,Steps=new List<PlcMeterStepCellQuick>(),Ratio=10,Unit="" ,ValueStartAddress=1034, },
new PlcParsDataQuick(){ Name="COND2压力",EnName="Cond2Press",Step=100,Steps=new List<PlcMeterStepCellQuick>(),Ratio=100,Unit="" ,ValueStartAddress=1018, },
new PlcParsDataQuick(){ Name="EVAP出口温度",EnName="EVAPExpTemp",Step=100,Steps=new List<PlcMeterStepCellQuick>(),Ratio=10,Unit="" ,ValueStartAddress=1036, },
new PlcParsDataQuick(){ Name="排气压力",EnName="ExPress",Step=100,Steps=new List<PlcMeterStepCellQuick>(),Ratio=100,Unit="" ,ValueStartAddress=1008, },
new PlcParsDataQuick(){ Name="HV电压",EnName="HVVol",Step=100,Steps=new List<PlcMeterStepCellQuick>(),Ratio=1,Unit="" ,ValueStartAddress=1022, },
new PlcParsDataQuick(){ Name="HV电压",EnName="HVVol",Step=100,Steps=new List<PlcMeterStepCellQuick>(),Ratio=10,Unit="" ,ValueStartAddress=1022, },
new PlcParsDataQuick(){ Name="吸气压力",EnName="InhPress",Step=100,Steps=new List<PlcMeterStepCellQuick>(),Ratio=1,Unit="" ,ValueStartAddress=1010,},
new PlcParsDataQuick(){ Name="吸气压力",EnName="InhPress",Step=100,Steps=new List<PlcMeterStepCellQuick>(),Ratio=100,Unit="" ,ValueStartAddress=1010,},
new PlcParsDataQuick(){ Name="吸气温度",EnName="InhTemp",Step=100,Steps=new List<PlcMeterStepCellQuick>(),Ratio=1,Unit="" ,ValueStartAddress=1012, },
new PlcParsDataQuick(){ Name="吸气温度",EnName="InhTemp",Step=100,Steps=new List<PlcMeterStepCellQuick>(),Ratio=10,Unit="" ,ValueStartAddress=1012, },
new PlcParsDataQuick(){ Name="润滑油压力",EnName="LubePress",Step=100,Steps=new List<PlcMeterStepCellQuick>(),Ratio=1,Unit="" ,ValueStartAddress=1016, },
new PlcParsDataQuick(){ Name="润滑油压力",EnName="LubePress",Step=100,Steps=new List<PlcMeterStepCellQuick>(),Ratio=100,Unit="" ,ValueStartAddress=1016, },
new PlcParsDataQuick(){ Name="LV电压",EnName="LVVol",Step=100,Steps=new List<PlcMeterStepCellQuick>(),Ratio=1,Unit="" ,ValueStartAddress=1024, },
new PlcParsDataQuick(){ Name="LV电压",EnName="LVVol",Step=100,Steps=new List<PlcMeterStepCellQuick>(),Ratio=10,Unit="" ,ValueStartAddress=1024, },
new PlcParsDataQuick(){ Name="OCR",EnName="OCR",Step=100,Steps=new List<PlcMeterStepCellQuick>(),Ratio=1,Unit="" ,ValueStartAddress=1020, },
new PlcParsDataQuick(){ Name="OCR",EnName="OCR",Step=100,Steps=new List<PlcMeterStepCellQuick>(),Ratio=10,Unit="" ,ValueStartAddress=1020, },
new PlcParsDataQuick(){ Name="OS1温度",EnName="OS1Temp",Step=100,Steps=new List<PlcMeterStepCellQuick>(),Ratio=1,Unit="" ,ValueStartAddress=1030, },
new PlcParsDataQuick(){ Name="OS2温度",EnName="OS2Temp",Step=100,Steps=new List<PlcMeterStepCellQuick>(),Ratio=1,Unit="" ,ValueStartAddress=1032, },
new PlcParsDataQuick(){ Name="OS1温度",EnName="OS1Temp",Step=100,Steps=new List<PlcMeterStepCellQuick>(),Ratio=10,Unit="" ,ValueStartAddress=1030, },
new PlcParsDataQuick(){ Name="OS2温度",EnName="OS2Temp",Step=100,Steps=new List<PlcMeterStepCellQuick>(),Ratio=10,Unit="" ,ValueStartAddress=1032, },
new PlcParsDataQuick(){ Name="PTC入口温度",EnName="PTCEntTemp",Step=100,Steps=new List<PlcMeterStepCellQuick>(),Ratio=1,Unit="" ,ValueStartAddress=1054, },
new PlcParsDataQuick(){ Name="PTC流量",EnName="PTCFlow",Step=100,Steps=new List<PlcMeterStepCellQuick>(),Ratio=1,Unit="" ,ValueStartAddress=1052, },
new PlcParsDataQuick(){ Name="PTC入口温度",EnName="PTCEntTemp",Step=100,Steps=new List<PlcMeterStepCellQuick>(),Ratio=10,Unit="" ,ValueStartAddress=1054, },
new PlcParsDataQuick(){ Name="PTC流量",EnName="PTCFlow",Step=100,Steps=new List<PlcMeterStepCellQuick>(),Ratio=10,Unit="" ,ValueStartAddress=1052, },
new PlcParsDataQuick(){ Name="PTC功率",EnName="PTCPw",Step=100,Steps=new List<PlcMeterStepCellQuick>(),Ratio=1,Unit="" ,ValueStartAddress=1050, },
new PlcParsDataQuick(){ Name="压缩机环境湿度",EnName="EnvRH",Step=100,Steps=new List<PlcMeterStepCellQuick>(),Ratio=1,Unit="" ,ValueStartAddress=1028, },
new PlcParsDataQuick(){ Name="压缩机环境温度",EnName="EnvTemp",Step=100,Steps=new List<PlcMeterStepCellQuick>(),Ratio=1,Unit="" ,ValueStartAddress=1026, },
new PlcParsDataQuick(){ Name="压缩机环境温度",EnName="EnvTemp",Step=100,Steps=new List<PlcMeterStepCellQuick>(),Ratio=10,Unit="" ,ValueStartAddress=1026, },
new PlcParsDataQuick(){ Name="输出锁定",EnName="OutLock",Step=100,Steps=new List<PlcMeterStepCellQuick>(),Ratio=1,Unit="" ,ValueStartAddress=1038, },
new PlcParsDataQuick(){ Name="参数编号",EnName="ParNo",Step=100,Steps=new List<PlcMeterStepCellQuick>(),Ratio=1,Unit="" ,ValueStartAddress=1040, },
new PlcParsDataQuick(){ Name="EV",EnName="EV",Step=100,Steps=new List<PlcMeterStepCellQuick>(),Ratio=1,Unit="" ,ValueStartAddress=1042, },
new PlcParsDataQuick(){ Name="压缩机使能",EnName="CapEnable",Step=100,Steps=new List<PlcMeterStepCellQuick>(),Ratio=1,Unit="" ,ValueStartAddress=1044, },
new PlcParsDataQuick(){ Name="吸排气阀",EnName="InhExhValve",Step=100,Steps=new List<PlcMeterStepCellQuick>(),Ratio=1,Unit="" ,ValueStartAddress=1046, },
new PlcParsDataQuick(){ Name="加热器使能",EnName="HeatEnable",Step=100,Steps=new List<PlcMeterStepCellQuick>(),Ratio=1,Unit="" ,ValueStartAddress=1048, },
new PlcParsDataQuick(){ Name="PTC使能",EnName="PTCEnable",Step=100,Steps=new List<PlcMeterStepCellQuick>(),Ratio=1,Unit="" ,ValueStartAddress=1048, },
new PlcParsDataQuick(){ Name="时间分钟",EnName="TimeMin",Step=100,Steps=new List<PlcMeterStepCellQuick>(),Ratio=1,Unit="" ,ValueStartAddress=1000, },
new PlcParsDataQuick(){ Name="时间秒",EnName="TimeSec",Step=100,Steps=new List<PlcMeterStepCellQuick>(),Ratio=1,Unit="" ,ValueStartAddress=1002, },
new PlcParsDataQuick(){ Name="次数",EnName="Cycle",Step=100,Steps=new List<PlcMeterStepCellQuick>(),Ratio=1,Unit="" ,ValueStartAddress=1004, },
@@ -96,11 +95,50 @@ namespace CapMachine.Wpf.ProPars
{
if (!string.IsNullOrEmpty(itemStep.Address))
{
var Result = siemensS7NetStance.Write(itemStep.Address, (short)itemStep.Value);
if (!Result.IsSuccess)
{
var data1 = 1;
}
var Result = siemensS7NetStance.Write(itemStep.Address, (short)(itemStep.Value * item.Ratio));
//if (item.Name.Contains("压力"))
//{
// var Result = siemensS7NetStance.Write(itemStep.Address, (short)itemStep.Value * 100);
// if (!Result.IsSuccess)
// {
// }
//}
//else if (item.Name.Contains("温度"))
//{
// var Result = siemensS7NetStance.Write(itemStep.Address, (short)itemStep.Value * 10);
// if (!Result.IsSuccess)
// {
// }
//}
//else if (item.Name.Contains("电压"))
//{
// var Result = siemensS7NetStance.Write(itemStep.Address, (short)itemStep.Value * 10);
// if (!Result.IsSuccess)
// {
// }
//}
//else if (item.Name.Contains("湿度"))
//{
// var Result = siemensS7NetStance.Write(itemStep.Address, (short)itemStep.Value * 10);
// if (!Result.IsSuccess)
// {
// }
//}
//else
//{
// var Result = siemensS7NetStance.Write(itemStep.Address, (short)itemStep.Value);
// if (!Result.IsSuccess)
// {
// }
//}
}
}
}
@@ -116,7 +154,7 @@ namespace CapMachine.Wpf.ProPars
/// <param name="proStep"></param>
/// <param name="plcParsDatas"></param>
/// <returns></returns>
private static List<PlcParsDataQuick> LoadPlcParsData(QuickMeterStepDto proStep, List<PlcParsDataQuick> plcParsDatas,int CurStep)
private static List<PlcParsDataQuick> LoadPlcParsData(QuickMeterStepDto proStep, List<PlcParsDataQuick> plcParsDatas, int CurStep)
{
if (proStep != null)
{
@@ -196,8 +234,8 @@ namespace CapMachine.Wpf.ProPars
case "InhExhValve":
item.Steps.Add(new PlcMeterStepCellQuick() { Step = CurStep, Value = proStep.InhExhValve == true ? 1 : 0, Address = GetAddress(item.ValueStartAddress, CurStep, item.Step) });
break;
case "HeatEnable":
item.Steps.Add(new PlcMeterStepCellQuick() { Step = CurStep, Value = proStep.HeatEnable == true ? 1 : 0 });
case "PTCEnable":
item.Steps.Add(new PlcMeterStepCellQuick() { Step = CurStep, Value = proStep.PTCEnable == true ? 1 : 0,Address= GetAddress(item.ValueStartAddress, CurStep, item.Step) });
break;