diff --git a/CapMachine.Model/MeterConfig/MeterSpeed.cs b/CapMachine.Model/MeterConfig/MeterSpeed.cs
index 535eeda..92d6b74 100644
--- a/CapMachine.Model/MeterConfig/MeterSpeed.cs
+++ b/CapMachine.Model/MeterConfig/MeterSpeed.cs
@@ -68,41 +68,62 @@ namespace CapMachine.Model
[Column(Name = "OutLock")]
public bool OutLock { get; set; }
- ///
- ///参数编号(1~16)
- /// 跟随速度步骤的常值数据
- ///
- [Column(Name = "ParNo")]
- public int ParNo { get; set; }
+ /////
+ /////参数编号(1~16)
+ ///// 跟随速度步骤的常值数据
+ /////
+ //[Column(Name = "ParNo")]
+ //public int ParNo { get; set; }
///
///EV(1~4)
+ ///对应4个阀门
/// 跟随速度步骤的常值数据
///
[Column(Name = "Ev")]
public int Ev { get; set; }
- //
+ ///
/// 压缩机使能(0/1)
/// 跟随速度步骤的常值数据
///
[Column(Name = "CapEnable")]
public bool CapEnable { get; set; }
- //
+ ///
/// 吸排气阀(0/1)
/// 跟随速度步骤的常值数据
///
[Column(Name = "InhExhValve")]
public bool InhExhValve { get; set; }
- //
+ ///
/// 加热器使能(0/1)PTC使能
/// 跟随速度步骤的常值数据
///
[Column(Name = "PTCEnable")]
public bool PTCEnable { get; set; }
+ ///
+ /// PID No
+ /// 跟随速度步骤的常值数据
+ ///
+ [Column(Name = "PIDNo")]
+ public int PIDNo { get; set; }
+
+ ///
+ /// 限幅 No
+ /// 跟随速度步骤的常值数据
+ ///
+ [Column(Name = "LimitNo")]
+ public int LimitNo { get; set; }
+
+ ///
+ /// 报警 No
+ /// 跟随速度步骤的常值数据
+ ///
+ [Column(Name = "AlarmNo")]
+ public int AlarmNo { get; set; }
[Column(ServerTime = DateTimeKind.Local, CanUpdate = false)]
public DateTime CreateTime { get; set; }
diff --git a/CapMachine.Wpf/MapperProfile/ConfigAlarmProfile.cs b/CapMachine.Wpf/MapperProfile/ConfigAlarmProfile.cs
new file mode 100644
index 0000000..004f886
--- /dev/null
+++ b/CapMachine.Wpf/MapperProfile/ConfigAlarmProfile.cs
@@ -0,0 +1,14 @@
+using AutoMapper;
+using CapMachine.Model;
+using CapMachine.Wpf.Dtos;
+
+namespace CapMachine.Wpf.MapperProfile
+{
+ public class ConfigAlarmProfile : Profile
+ {
+ public ConfigAlarmProfile()
+ {
+ CreateMap().ReverseMap();
+ }
+ }
+}
diff --git a/CapMachine.Wpf/Models/ProModelPars/ProExModel.cs b/CapMachine.Wpf/Models/ProModelPars/ProExModel.cs
index de0a758..bfdab53 100644
--- a/CapMachine.Wpf/Models/ProModelPars/ProExModel.cs
+++ b/CapMachine.Wpf/Models/ProModelPars/ProExModel.cs
@@ -202,7 +202,7 @@ namespace CapMachine.Wpf.Models.ProModelPars
}
else//不存在斜坡数据的话,则直接发送EndSV数据即可
{
- ProRunChannel.Writer.TryWrite(new ProRunChannelData()
+ ProRunChannel.Writer.WriteAsync(new ProRunChannelData()
{
MeterName = MeterName,
SV = NextProStepExe.EndSV,
@@ -237,7 +237,6 @@ namespace CapMachine.Wpf.Models.ProModelPars
ListProStepExe.FindFirst(a => a.MeterStep == LastProStepExe.MeterStep).MeterStepIsOK = true;
}
-
//设置下一步步骤数据
if (ListProStepExe.Where(x => x.MeterStep == CurProStepExe.MeterStep + 1).Any())
{
@@ -258,7 +257,7 @@ namespace CapMachine.Wpf.Models.ProModelPars
//设置下一步步骤运行时间
RunEnable = true;
-
+
}
else
{
@@ -314,6 +313,7 @@ namespace CapMachine.Wpf.Models.ProModelPars
///
private void StartSlopExStep()
{
+ //用SlopExEnable控制,存在一个可能,就是设置后,立刻执行,那么第一个步骤(第一秒)时间会被压缩,后面就正常了。最大是快一秒了,第一秒提前打点,这是可以接受的。
SlopExEnable = true;
}
diff --git a/CapMachine.Wpf/Models/ProModelPars/ProStepExe.cs b/CapMachine.Wpf/Models/ProModelPars/ProStepExe.cs
index 46330b5..556f0ac 100644
--- a/CapMachine.Wpf/Models/ProModelPars/ProStepExe.cs
+++ b/CapMachine.Wpf/Models/ProModelPars/ProStepExe.cs
@@ -131,5 +131,9 @@ namespace CapMachine.Wpf.Models.ProModelPars
///
public int AlarmNo { get; set; }
+ ///
+ /// AlarmNo的配置信息
+ ///
+ public ConfigAlarmDto? CurConfigAlarmDto { get; set; }
}
}
diff --git a/CapMachine.Wpf/ProPars/ProParsHelper.cs b/CapMachine.Wpf/ProPars/ProParsHelper.cs
index d936d20..8ab1204 100644
--- a/CapMachine.Wpf/ProPars/ProParsHelper.cs
+++ b/CapMachine.Wpf/ProPars/ProParsHelper.cs
@@ -58,7 +58,10 @@ namespace CapMachine.Wpf.ProPars
new PlcParsData(){ Name="压缩机环境温度",EnName="EnvTemp",Step=100,SetAddressInfo=AddressInfo.NoCycle,Steps=new List(),Ratio=10,Unit="" ,ValueStartAddress=1026,MinStartAddress=1084,SecStartAddress=1086,CycleStartAddress=0 },
new PlcParsData(){ Name="输出锁定",EnName="OutLock",Step=100,SetAddressInfo=AddressInfo.NoTimeAndCycle,Steps=new List(),Ratio=1,Unit="" ,ValueStartAddress=1038,MinStartAddress=0,SecStartAddress=0,CycleStartAddress=0 },
- new PlcParsData(){ Name="参数编号",EnName="ParNo",Step=100,SetAddressInfo=AddressInfo.NoTimeAndCycle,Steps=new List(),Ratio=1,Unit="" ,ValueStartAddress=1040,MinStartAddress=0,SecStartAddress=0,CycleStartAddress=0 },
+ //new PlcParsData(){ Name="参数编号",EnName="ParNo",Step=100,SetAddressInfo=AddressInfo.NoTimeAndCycle,Steps=new List(),Ratio=1,Unit="" ,ValueStartAddress=1040,MinStartAddress=0,SecStartAddress=0,CycleStartAddress=0 },
+ new PlcParsData(){ Name="PID编号",EnName="PIDNo",Step=100,SetAddressInfo=AddressInfo.NoTimeAndCycle,Steps=new List(),Ratio=1,Unit="" ,ValueStartAddress=1040,MinStartAddress=0,SecStartAddress=0,CycleStartAddress=0 },
+ new PlcParsData(){ Name="限幅编号",EnName="LimitNo",Step=100,SetAddressInfo=AddressInfo.NoTimeAndCycle,Steps=new List(),Ratio=1,Unit="" ,ValueStartAddress=1040,MinStartAddress=0,SecStartAddress=0,CycleStartAddress=0 },
+ new PlcParsData(){ Name="报警编号",EnName="AlarmNo",Step=100,SetAddressInfo=AddressInfo.NoTimeAndCycle,Steps=new List(),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(),Ratio=1,Unit="" ,ValueStartAddress=1042,MinStartAddress=0,SecStartAddress=0,CycleStartAddress=0 },
new PlcParsData(){ Name="压缩机使能",EnName="CapEnable",Step=100,SetAddressInfo=AddressInfo.NoTimeAndCycle,Steps=new List(),Ratio=1,Unit="" ,ValueStartAddress=1044,MinStartAddress=0,SecStartAddress=0,CycleStartAddress=0 },
new PlcParsData(){ Name="吸排气阀",EnName="InhExhValve",Step=100,SetAddressInfo=AddressInfo.NoTimeAndCycle,Steps=new List(),Ratio=1,Unit="" ,ValueStartAddress=1046,MinStartAddress=0,SecStartAddress=0,CycleStartAddress=0 },
@@ -311,10 +314,25 @@ namespace CapMachine.Wpf.ProPars
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 FindParNo = ListPlcParsData.Find(a => a.Name.Equals("参数编号"));
+ //var ParNoData = plcMeterStepCell.DeepClone();
+ //ParNoData.Value = Convert.ToDouble(item.ParNo);
+ //FindParNo.Steps.Add(ParNoData);
+
+ var FindPidNo = ListPlcParsData.Find(a => a.Name.Equals("PID编号"));
+ var PidNoData = plcMeterStepCell.DeepClone();
+ PidNoData.Value = Convert.ToDouble(item.PIDNo);
+ FindPidNo.Steps.Add(PidNoData);
+
+ var FindLimitNo = ListPlcParsData.Find(a => a.Name.Equals("限幅编号"));
+ var LimitNoData = plcMeterStepCell.DeepClone();
+ LimitNoData.Value = Convert.ToDouble(item.LimitNo);
+ FindLimitNo.Steps.Add(LimitNoData);
+
+ var FindAlarmNo = ListPlcParsData.Find(a => a.Name.Equals("报警编号"));
+ var AlarmNoData = plcMeterStepCell.DeepClone();
+ AlarmNoData.Value = Convert.ToDouble(item.AlarmNo);
+ FindAlarmNo.Steps.Add(AlarmNoData);
var FindEV = ListPlcParsData.Find(a => a.Name.Equals("EV"));
var EVData = plcMeterStepCell.DeepClone();
@@ -364,10 +382,25 @@ namespace CapMachine.Wpf.ProPars
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 FindParNo = ListPlcParsData.Find(a => a.Name.Equals("参数编号"));
+ //var ParNoData = plcMeterStepCell.DeepClone();
+ //ParNoData.Value = Convert.ToDouble(Data.ParNo);
+ //FindParNo.Steps.Add(ParNoData);
+
+ var FindPidNo = ListPlcParsData.Find(a => a.Name.Equals("PID编号"));
+ var PidNoData = plcMeterStepCell.DeepClone();
+ PidNoData.Value = Convert.ToDouble(Data.PIDNo);
+ FindPidNo.Steps.Add(PidNoData);
+
+ var FindLimitNo = ListPlcParsData.Find(a => a.Name.Equals("限幅编号"));
+ var LimitNoData = plcMeterStepCell.DeepClone();
+ LimitNoData.Value = Convert.ToDouble(Data.LimitNo);
+ FindLimitNo.Steps.Add(LimitNoData);
+
+ var FindAlarmNo = ListPlcParsData.Find(a => a.Name.Equals("报警编号"));
+ var AlarmNoData = plcMeterStepCell.DeepClone();
+ AlarmNoData.Value = Convert.ToDouble(Data.AlarmNo);
+ FindAlarmNo.Steps.Add(AlarmNoData);
var FindEV = ListPlcParsData.Find(a => a.Name.Equals("EV"));
var EVData = plcMeterStepCell.DeepClone();
diff --git a/CapMachine.Wpf/ProPars/ProParsSongZhiHelper.cs b/CapMachine.Wpf/ProPars/ProParsSongZhiHelper.cs
index 3db1da9..158b7bc 100644
--- a/CapMachine.Wpf/ProPars/ProParsSongZhiHelper.cs
+++ b/CapMachine.Wpf/ProPars/ProParsSongZhiHelper.cs
@@ -365,10 +365,25 @@ namespace CapMachine.Wpf.ProPars
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 FindParNo = ListPlcParsData.Find(a => a.Name.Equals("参数编号"));
+ //var ParNoData = plcMeterStepCell.DeepClone();
+ //ParNoData.Value = Convert.ToDouble(item.ParNo);
+ //FindParNo.Steps.Add(ParNoData);
+
+ var FindPidNo = ListPlcParsData.Find(a => a.Name.Equals("PID编号"));
+ var PidNoData = plcMeterStepCell.DeepClone();
+ PidNoData.Value = Convert.ToDouble(item.PIDNo);
+ FindPidNo.Steps.Add(PidNoData);
+
+ var FindLimitNo = ListPlcParsData.Find(a => a.Name.Equals("限幅编号"));
+ var LimitNoData = plcMeterStepCell.DeepClone();
+ LimitNoData.Value = Convert.ToDouble(item.LimitNo);
+ FindLimitNo.Steps.Add(LimitNoData);
+
+ var FindAlarmNo = ListPlcParsData.Find(a => a.Name.Equals("报警编号"));
+ var AlarmNoData = plcMeterStepCell.DeepClone();
+ AlarmNoData.Value = Convert.ToDouble(item.AlarmNo);
+ FindAlarmNo.Steps.Add(AlarmNoData);
var FindEV = ListPlcParsData.Find(a => a.Name.Equals("EV"));
var EVData = plcMeterStepCell.DeepClone();
@@ -418,10 +433,25 @@ namespace CapMachine.Wpf.ProPars
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 FindParNo = ListPlcParsData.Find(a => a.Name.Equals("参数编号"));
+ //var ParNoData = plcMeterStepCell.DeepClone();
+ //ParNoData.Value = Convert.ToDouble(Data.ParNo);
+ //FindParNo.Steps.Add(ParNoData);
+
+ var FindPidNo = ListPlcParsData.Find(a => a.Name.Equals("PID编号"));
+ var PidNoData = plcMeterStepCell.DeepClone();
+ PidNoData.Value = Convert.ToDouble(Data.PIDNo);
+ FindPidNo.Steps.Add(PidNoData);
+
+ var FindLimitNo = ListPlcParsData.Find(a => a.Name.Equals("限幅编号"));
+ var LimitNoData = plcMeterStepCell.DeepClone();
+ LimitNoData.Value = Convert.ToDouble(Data.LimitNo);
+ FindLimitNo.Steps.Add(LimitNoData);
+
+ var FindAlarmNo = ListPlcParsData.Find(a => a.Name.Equals("报警编号"));
+ var AlarmNoData = plcMeterStepCell.DeepClone();
+ AlarmNoData.Value = Convert.ToDouble(Data.AlarmNo);
+ FindAlarmNo.Steps.Add(AlarmNoData);
var FindEV = ListPlcParsData.Find(a => a.Name.Equals("EV"));
var EVData = plcMeterStepCell.DeepClone();
diff --git a/CapMachine.Wpf/Services/MachineRtDataService.cs b/CapMachine.Wpf/Services/MachineRtDataService.cs
index b8347c3..cdb18f9 100644
--- a/CapMachine.Wpf/Services/MachineRtDataService.cs
+++ b/CapMachine.Wpf/Services/MachineRtDataService.cs
@@ -1,7 +1,9 @@
using AutoMapper.Internal;
using CapMachine.Core;
+using CapMachine.Wpf.ChannelModel;
using CapMachine.Wpf.Dtos;
using CapMachine.Wpf.Models;
+using CapMachine.Wpf.Models.ProModelPars;
using CapMachine.Wpf.Models.Tag;
using CapMachine.Wpf.PrismEvent;
using HslCommunication;
@@ -16,6 +18,7 @@ using System.Collections.ObjectModel;
using System.Diagnostics;
using System.Linq;
using System.Text;
+using System.Threading.Channels;
using System.Threading.Tasks;
using System.Timers;
using System.Windows;
@@ -148,51 +151,51 @@ namespace CapMachine.Wpf.Services
#region 标签管理
////三电 Sample
- TagManger.AddTag(new Tag("转速", "转速[rpm]", "Speed", "程序", "VW15000", 100, 0, 1, "rpm", new ShortTagValue(), true) { DecimalPoint = 0 });
- TagManger.AddTag(new Tag("排气压力", "排气压力[BarA]", "ExPress", "程序", "VW15002", 100, 0, 100, "BarA", new ShortTagValue(), true) { DecimalPoint = 2 });
- TagManger.AddTag(new Tag("吸气压力", "吸气压力[BarA]", "InhPress", "程序", "VW15004", 100, 0, 100, "BarA", new ShortTagValue(), true) { DecimalPoint = 2 });
- TagManger.AddTag(new Tag("吸气温度", "吸气温度[℃]", "InhTemp", "程序", "VW15006", 100, 0, 10, "℃", new ShortTagValue(), true) { DecimalPoint = 1 });
- TagManger.AddTag(new Tag("COND1温度", "COND1温度[℃]", "Cond1Temp", "程序", "VW15008", 100, 0, 10, "℃", new ShortTagValue(), true) { DecimalPoint = 1 });
- TagManger.AddTag(new Tag("润滑油压力", "润滑油压力[BarA]", "LubePress", "程序", "VW15010", 100, 0, 100, "BarA", new ShortTagValue(), true) { DecimalPoint = 2 });
- TagManger.AddTag(new Tag("COND2压力", "COND2压力[BarA]", "Cond2Press", "程序", "VW15012", 100, 0, 100, "BarA", new ShortTagValue(), false) { DecimalPoint = 2 });
- TagManger.AddTag(new Tag("OCR", "OCR[%]", "OCR", "程序", "VW15014", 100, 0, 10, "%", new ShortTagValue(), true) { DecimalPoint = 1 });
- TagManger.AddTag(new Tag("HV[V]", "HV[V]", "HV", "程序", "VW15016", 100, 0, 10, "V", new ShortTagValue(), true) { DecimalPoint = 1 });
- TagManger.AddTag(new Tag("HV[A]", "HV[A]", "HVCur", "程序", "VW15018", 100, 0, 100, "A", new ShortTagValue(), false) { DecimalPoint = 2 });
- TagManger.AddTag(new Tag("HV[W]", "HV[W]", "HVPw", "程序", "VW15020", 100, 0, 1, "W", new ShortTagValue(), false) { DecimalPoint = 1 });
- TagManger.AddTag(new Tag("LV[V]", "LV[V]", "LV", "程序", "VW15022", 100, 0, 10, "V", new ShortTagValue(), true) { DecimalPoint = 1 });
+ TagManger.AddTag(new Tag("转速", "转速[rpm]", "Speed", "程序", "VW15000", 100, 0, 1, "rpm", new ShortTagValue(), true) { DecimalPoint = 0, IsMeter = true, });
+ TagManger.AddTag(new Tag("排气压力", "排气压力[BarA]", "ExPress", "程序", "VW15002", 100, 0, 100, "BarA", new ShortTagValue(), true) { DecimalPoint = 2, IsMeter = true });
+ TagManger.AddTag(new Tag("吸气压力", "吸气压力[BarA]", "InhPress", "程序", "VW15004", 100, 0, 100, "BarA", new ShortTagValue(), true) { DecimalPoint = 2, IsMeter = true });
+ TagManger.AddTag(new Tag("吸气温度", "吸气温度[℃]", "InhTemp", "程序", "VW15006", 100, 0, 10, "℃", new ShortTagValue(), true) { DecimalPoint = 1, IsMeter = true });
+ TagManger.AddTag(new Tag("COND1温度", "COND1温度[℃]", "Cond1Temp", "程序", "VW15008", 100, 0, 10, "℃", new ShortTagValue(), true) { DecimalPoint = 1, IsMeter = true });
+ TagManger.AddTag(new Tag("润滑油压力", "润滑油压力[BarA]", "LubePress", "程序", "VW15010", 100, 0, 100, "BarA", new ShortTagValue(), true) { DecimalPoint = 2, IsMeter = true });
+ TagManger.AddTag(new Tag("COND2压力", "COND2压力[BarA]", "Cond2Press", "程序", "VW15012", 100, 0, 100, "BarA", new ShortTagValue(), false) { DecimalPoint = 2, IsMeter = true });
+ TagManger.AddTag(new Tag("OCR", "OCR[%]", "OCR", "程序", "VW15014", 100, 0, 10, "%", new ShortTagValue(), true) { DecimalPoint = 1, IsMeter = true });
+ TagManger.AddTag(new Tag("HV[V]", "HV[V]", "HV", "程序", "VW15016", 100, 0, 10, "V", new ShortTagValue(), true) { DecimalPoint = 1, IsMeter = true });
+ TagManger.AddTag(new Tag("HV[A]", "HV[A]", "HVCur", "程序", "VW15018", 100, 0, 100, "A", new ShortTagValue(), false) { DecimalPoint = 2, IsMeter = true });
+ TagManger.AddTag(new Tag("HV[W]", "HV[W]", "HVPw", "程序", "VW15020", 100, 0, 1, "W", new ShortTagValue(), false) { DecimalPoint = 1, IsMeter = true });
+ TagManger.AddTag(new Tag("LV[V]", "LV[V]", "LV", "程序", "VW15022", 100, 0, 10, "V", new ShortTagValue(), true) { DecimalPoint = 1, IsMeter = true });
//TagManger.AddTag(new Tag("LV[A]", "LV[A]", "LVCur", "程序", "VW15024", 100, 0, 1, "A", new ShortTagValue(), false) { DecimalPoint = 1 });
- TagManger.AddTag(new Tag("LV[A]", "LV[A]", "LVCur", "程序", "VW15024", 100, 0, 100, "A", new ShortTagValue(), false) { DecimalPoint = 2 });
- TagManger.AddTag(new Tag("环境温度", "环境温度[℃]", "EnvTemp", "程序", "VW15026", 100, 0, 10, "℃", new ShortTagValue(), true) { DecimalPoint = 1 });
+ TagManger.AddTag(new Tag("LV[A]", "LV[A]", "LVCur", "程序", "VW15024", 100, 0, 100, "A", new ShortTagValue(), false) { DecimalPoint = 2, IsMeter = true });
+ TagManger.AddTag(new Tag("环境温度", "环境温度[℃]", "EnvTemp", "程序", "VW15026", 100, 0, 10, "℃", new ShortTagValue(), true) { DecimalPoint = 1, IsMeter = true });
//TagManger.AddTag(new Tag("环境湿度", "环境湿度[%]", "EnvRH", "程序", "VW15028", 100, 0, 10, "%", new ShortTagValue(), true) { DecimalPoint = 1 });
- TagManger.AddTag(new Tag("环境湿度", "环境湿度[%]", "EnvRH", "程序", "VW15028", 100, 0, 10, "%", new ShortTagValue(), true) { DecimalPoint = 1 });
- TagManger.AddTag(new Tag("OS1温度", "OS1温度[℃]", "OS1Temp", "程序", "VW15030", 100, 0, 10, "℃", new ShortTagValue(), false) { DecimalPoint = 1 });
- TagManger.AddTag(new Tag("OS2温度", "OS2温度[℃]", "OS2Temp", "程序", "VW15032", 100, 0, 10, "℃", new ShortTagValue(), false) { DecimalPoint = 1 });
- TagManger.AddTag(new Tag("COND2温度", "COND2温度[℃]", "Cond2Temp", "程序", "VW15034", 100, 0, 10, "℃", new ShortTagValue(), false) { DecimalPoint = 1 });
- TagManger.AddTag(new Tag("EVAP出口温度", "EVAP出口温度[℃]", "EVAPExpTemp", "程序", "VW15036", 100, 0, 10, "℃", new ShortTagValue(), false) { DecimalPoint = 1 });
+ TagManger.AddTag(new Tag("环境湿度", "环境湿度[%]", "EnvRH", "程序", "VW15028", 100, 0, 10, "%", new ShortTagValue(), true) { DecimalPoint = 1, IsMeter = true });
+ TagManger.AddTag(new Tag("OS1温度", "OS1温度[℃]", "OS1Temp", "程序", "VW15030", 100, 0, 10, "℃", new ShortTagValue(), false) { DecimalPoint = 1, IsMeter = true });
+ TagManger.AddTag(new Tag("OS2温度", "OS2温度[℃]", "OS2Temp", "程序", "VW15032", 100, 0, 10, "℃", new ShortTagValue(), false) { DecimalPoint = 1, IsMeter = true });
+ TagManger.AddTag(new Tag("COND2温度", "COND2温度[℃]", "Cond2Temp", "程序", "VW15034", 100, 0, 10, "℃", new ShortTagValue(), false) { DecimalPoint = 1, IsMeter = true });
+ TagManger.AddTag(new Tag("EVAP出口温度", "EVAP出口温度[℃]", "EVAPExpTemp", "程序", "VW15036", 100, 0, 10, "℃", new ShortTagValue(), false) { DecimalPoint = 1, IsMeter = true });
//TagManger.AddTag(new Tag("冷媒流量", "冷媒流量[L/min]", "VRV", "程序", "VW15038", 100, 0, 1, "L/min", new ShortTagValue(), false) { DecimalPoint = 1 });
- TagManger.AddTag(new Tag("冷媒流量", "冷媒流量[L/min]", "VRV", "程序", "VW15038", 100, 0, 10, "L/min", new ShortTagValue(), false) { DecimalPoint = 1 });
- TagManger.AddTag(new Tag("润滑油流量", "润滑油流量[L/min]", "LubeFlow", "程序", "VW15040", 100, 0, 10, "L/min", new ShortTagValue(), false) { DecimalPoint = 1 });
- TagManger.AddTag(new Tag("排气温度", "排气温度[℃]", "ExTemp", "程序", "VW15042", 100, 0, 10, "℃", new ShortTagValue(), true) { DecimalPoint = 1 });
- TagManger.AddTag(new Tag("膨胀阀前压力", "膨胀阀前压力[BarA]", "TxvFrPress", "程序", "VW15044", 100, 0, 100, "BarA", new ShortTagValue(), false) { DecimalPoint = 2 });
- TagManger.AddTag(new Tag("膨胀阀前温度", "膨胀阀前温度[℃]", "TxvFrTemp", "程序", "VW15046", 100, 0, 10, "℃", new ShortTagValue(), false) { DecimalPoint = 1 });
- TagManger.AddTag(new Tag("EVAP出口压力", "EVAP出口压力[BarA]", "EVAPExpPress", "程序", "VW15048", 100, 0, 100, "BarA", new ShortTagValue(), false) { DecimalPoint = 2 });
- TagManger.AddTag(new Tag("腔内压力", "腔内压力[BarA]", "IntrplPress", "程序", "VW15050", 100, 0, 100, "BarA", new ShortTagValue(), false) { DecimalPoint = 2 });
- TagManger.AddTag(new Tag("压缩机表面温度", "压缩机表面温度[℃]", "CapSurfTemp", "程序", "VW15052", 100, 0, 10, "℃", new ShortTagValue(), false) { DecimalPoint = 1 });
- TagManger.AddTag(new Tag("PTC流量", "PTC流量[L/min]", "PTCFlow", "程序", "VW15054", 100, 0, 1, "L/min", new ShortTagValue(), false) { DecimalPoint = 1 });
- TagManger.AddTag(new Tag("PTC入水温度", "PTC入水温度[℃]", "PTCEntTemp", "程序", "VW15056", 100, 0, 10, "℃", new ShortTagValue(), false) { DecimalPoint = 1 });
- TagManger.AddTag(new Tag("PTC出水温度", "PTC出水温度[℃]", "PTCExpTemp", "程序", "VW15058", 100, 0, 10, "℃", new ShortTagValue(), false) { DecimalPoint = 1 });
- TagManger.AddTag(new Tag("通讯Cmp母线电流", "通讯Cmp母线电流[A]", "ComCapBusCur", "程序", "VW15060", 100, 0, 100, "A", new ShortTagValue(), false) { DecimalPoint = 2 });
- TagManger.AddTag(new Tag("通讯Cmp母线电压", "通讯Cmp母线电压[V]", "ComCapBusVol", "程序", "VW15062", 100, 0, 10, "V", new ShortTagValue(), false) { DecimalPoint = 1 });
- TagManger.AddTag(new Tag("通讯Cmp逆变器温度", "通讯Cmp逆变器温度[℃]", "ComCapInvTemp", "程序", "VW15064", 100, 0, 1, "℃", new ShortTagValue(), false) { DecimalPoint = 0 });
- TagManger.AddTag(new Tag("通讯Cmp相电流", "通讯Cmp相电流[A]", "ComCapPhCur", "程序", "VW15066", 100, 0, 100, "A", new ShortTagValue(), false) { DecimalPoint = 1 });
- TagManger.AddTag(new Tag("通讯Cmp功率", "通讯Cmp功率[W]", "ComCapPw", "程序", "VW15068", 100, 0, 1, "W", new ShortTagValue(), false) { DecimalPoint = 1 });
- TagManger.AddTag(new Tag("通讯Cmp芯片温度", "通讯Cmp芯片温度[℃]", "ComCapChipTemp", "程序", "VW15070", 100, 0, 1, "℃", new ShortTagValue(), false) { DecimalPoint = 0 });
- TagManger.AddTag(new Tag("通讯PTC入水温度", "通讯PTC入水温度[℃]", "ComPTCEntTemp", "程序", "VW15072", 100, 0, 10, "℃", new ShortTagValue(), false) { DecimalPoint = 1 });
- TagManger.AddTag(new Tag("通讯PTC出水温度", "通讯PTC出水温度[℃]", "ComPTCExpTemp", "程序", "VW15074", 100, 0, 10, "℃", new ShortTagValue(), false) { DecimalPoint = 1 });
- TagManger.AddTag(new Tag("通讯PTC峰值电流", "通讯PTC峰值电流[A]", "ComPTCPeakCur", "程序", "VW15076", 100, 0, 1, "A", new ShortTagValue(), false) { DecimalPoint = 1 });
- TagManger.AddTag(new Tag("通讯PTC母线电流", "通讯PTC母线电流[A]", "ComPTCBusCur", "程序", "VW15078", 100, 0, 1, "A", new ShortTagValue(), false) { DecimalPoint = 1 });
- TagManger.AddTag(new Tag("通讯PTC膜温", "通讯PTC膜温[℃]", "ComPTCFlmTemp", "程序", "VW15080", 100, 0, 1, "℃", new ShortTagValue(), false) { DecimalPoint = 0 });
- TagManger.AddTag(new Tag("通讯PTC模块温度", "通讯PTC模块温度[℃]", "ComPTCMdTemp", "程序", "VW15082", 100, 0, 1, "℃", new ShortTagValue(), false) { DecimalPoint = 0 });
+ TagManger.AddTag(new Tag("冷媒流量", "冷媒流量[L/min]", "VRV", "程序", "VW15038", 100, 0, 10, "L/min", new ShortTagValue(), false) { DecimalPoint = 1, IsMeter = true });
+ TagManger.AddTag(new Tag("润滑油流量", "润滑油流量[L/min]", "LubeFlow", "程序", "VW15040", 100, 0, 10, "L/min", new ShortTagValue(), false) { DecimalPoint = 1, IsMeter = true });
+ TagManger.AddTag(new Tag("排气温度", "排气温度[℃]", "ExTemp", "程序", "VW15042", 100, 0, 10, "℃", new ShortTagValue(), true) { DecimalPoint = 1, IsMeter = true });
+ TagManger.AddTag(new Tag("膨胀阀前压力", "膨胀阀前压力[BarA]", "TxvFrPress", "程序", "VW15044", 100, 0, 100, "BarA", new ShortTagValue(), false) { DecimalPoint = 2, IsMeter = true });
+ TagManger.AddTag(new Tag("膨胀阀前温度", "膨胀阀前温度[℃]", "TxvFrTemp", "程序", "VW15046", 100, 0, 10, "℃", new ShortTagValue(), false) { DecimalPoint = 1, IsMeter = true });
+ TagManger.AddTag(new Tag("EVAP出口压力", "EVAP出口压力[BarA]", "EVAPExpPress", "程序", "VW15048", 100, 0, 100, "BarA", new ShortTagValue(), false) { DecimalPoint = 2, IsMeter = true });
+ TagManger.AddTag(new Tag("腔内压力", "腔内压力[BarA]", "IntrplPress", "程序", "VW15050", 100, 0, 100, "BarA", new ShortTagValue(), false) { DecimalPoint = 2, IsMeter = true });
+ TagManger.AddTag(new Tag("压缩机表面温度", "压缩机表面温度[℃]", "CapSurfTemp", "程序", "VW15052", 100, 0, 10, "℃", new ShortTagValue(), false) { DecimalPoint = 1, IsMeter = true });
+ TagManger.AddTag(new Tag("PTC流量", "PTC流量[L/min]", "PTCFlow", "程序", "VW15054", 100, 0, 1, "L/min", new ShortTagValue(), false) { DecimalPoint = 1, IsMeter = true });
+ TagManger.AddTag(new Tag("PTC入水温度", "PTC入水温度[℃]", "PTCEntTemp", "程序", "VW15056", 100, 0, 10, "℃", new ShortTagValue(), false) { DecimalPoint = 1, IsMeter = true });
+ TagManger.AddTag(new Tag("PTC出水温度", "PTC出水温度[℃]", "PTCExpTemp", "程序", "VW15058", 100, 0, 10, "℃", new ShortTagValue(), false) { DecimalPoint = 1, IsMeter = true });
+ TagManger.AddTag(new Tag("通讯Cmp母线电流", "通讯Cmp母线电流[A]", "ComCapBusCur", "程序", "VW15060", 100, 0, 100, "A", new ShortTagValue(), false) { DecimalPoint = 2, IsMeter = false });
+ TagManger.AddTag(new Tag("通讯Cmp母线电压", "通讯Cmp母线电压[V]", "ComCapBusVol", "程序", "VW15062", 100, 0, 10, "V", new ShortTagValue(), false) { DecimalPoint = 1, IsMeter = false });
+ TagManger.AddTag(new Tag("通讯Cmp逆变器温度", "通讯Cmp逆变器温度[℃]", "ComCapInvTemp", "程序", "VW15064", 100, 0, 1, "℃", new ShortTagValue(), false) { DecimalPoint = 0, IsMeter = false });
+ TagManger.AddTag(new Tag("通讯Cmp相电流", "通讯Cmp相电流[A]", "ComCapPhCur", "程序", "VW15066", 100, 0, 100, "A", new ShortTagValue(), false) { DecimalPoint = 1, IsMeter = false });
+ TagManger.AddTag(new Tag("通讯Cmp功率", "通讯Cmp功率[W]", "ComCapPw", "程序", "VW15068", 100, 0, 1, "W", new ShortTagValue(), false) { DecimalPoint = 1, IsMeter = false });
+ TagManger.AddTag(new Tag("通讯Cmp芯片温度", "通讯Cmp芯片温度[℃]", "ComCapChipTemp", "程序", "VW15070", 100, 0, 1, "℃", new ShortTagValue(), false) { DecimalPoint = 0, IsMeter = false });
+ TagManger.AddTag(new Tag("通讯PTC入水温度", "通讯PTC入水温度[℃]", "ComPTCEntTemp", "程序", "VW15072", 100, 0, 10, "℃", new ShortTagValue(), false) { DecimalPoint = 1, IsMeter = false });
+ TagManger.AddTag(new Tag("通讯PTC出水温度", "通讯PTC出水温度[℃]", "ComPTCExpTemp", "程序", "VW15074", 100, 0, 10, "℃", new ShortTagValue(), false) { DecimalPoint = 1, IsMeter = false });
+ TagManger.AddTag(new Tag("通讯PTC峰值电流", "通讯PTC峰值电流[A]", "ComPTCPeakCur", "程序", "VW15076", 100, 0, 1, "A", new ShortTagValue(), false) { DecimalPoint = 1, IsMeter = false });
+ TagManger.AddTag(new Tag("通讯PTC母线电流", "通讯PTC母线电流[A]", "ComPTCBusCur", "程序", "VW15078", 100, 0, 1, "A", new ShortTagValue(), false) { DecimalPoint = 1, IsMeter = false });
+ TagManger.AddTag(new Tag("通讯PTC膜温", "通讯PTC膜温[℃]", "ComPTCFlmTemp", "程序", "VW15080", 100, 0, 1, "℃", new ShortTagValue(), false) { DecimalPoint = 0, IsMeter = false });
+ TagManger.AddTag(new Tag("通讯PTC模块温度", "通讯PTC模块温度[℃]", "ComPTCMdTemp", "程序", "VW15082", 100, 0, 1, "℃", new ShortTagValue(), false) { DecimalPoint = 0, IsMeter = false });
#endregion
@@ -1050,7 +1053,7 @@ namespace CapMachine.Wpf.Services
private void InitialPLCCom()
{
var IPInfo = ConfigHelper.GetValue("PLCIP");
-
+
SiemensDrive = new SiemensS7Net(SiemensPLCS.S200Smart, IPInfo);
// 连接对象
@@ -1137,11 +1140,14 @@ namespace CapMachine.Wpf.Services
while (ThreadEnable)
{
- //await Task.Delay(5);
- await Task.CompletedTask;
+
+ //await Task.CompletedTask;
DiagnosticsTime.Reset();
DiagnosticsTime.Start();
+
+ await Task.Delay(200);
+
try
{
//TagInfo.RtValue.Value++;
@@ -1403,6 +1409,10 @@ namespace CapMachine.Wpf.Services
}
}
+ //程序步骤的写入
+ ProRunStepWrite();
+
+
//stopwatch.Stop(); //停止Stopwatch
//Console.WriteLine("Add Elapsed output runTime:{0}", stopwatch.Elapsed.TotalSeconds.ToString());
//stopwatch.Reset();
@@ -1470,7 +1480,7 @@ namespace CapMachine.Wpf.Services
}
DiagnosticsTime.Stop();
- ConfigService.PlcCycleTime = (int)DiagnosticsTime.Elapsed.TotalMilliseconds - 300;
+ ConfigService.PlcCycleTime = (int)DiagnosticsTime.Elapsed.TotalMilliseconds;
//Console.WriteLine($"扫描时间:{DiagnosticsTime.Elapsed.TotalMilliseconds.ToString()}");
}
});
@@ -1511,5 +1521,105 @@ namespace CapMachine.Wpf.Services
});
}
+
+
+
+ #region 队列数据
+
+
+ ///
+ /// 队列通道
+ /// 当前队列消费触发的数据记录
+ ///
+ public Channel ProRunChannel = Channel.CreateUnbounded(new UnboundedChannelOptions()
+ {
+ SingleWriter = false,//允许一次写入多条数据
+ SingleReader = true //一次只能读取一条消息
+ });
+
+ /////
+ ///// 程序执行管道监听方法
+ /////
+ /////
+ //private async void ListenProRunChannelAction()
+ //{
+ // while (await ProRunChannel.Reader.WaitToReadAsync())
+ // {
+ // if (ProRunChannel.Reader.TryRead(out var ProRunChannelData))
+ // {
+ // ////第一次计时
+ // //stopwatch.Start(); //启动Stopwatch
+ // if (ProRunChannelData.RunStepType == RunStepType.SlopCell)
+ // {
+ // Console.WriteLine($"【时间】{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss fff")} " +
+ // $"【参数名称】:{ProRunChannelData.MeterName} " +
+ // $"【程序Seg】{ProRunChannelData.ProSegName} " +
+ // $"【程序步骤】{ProRunChannelData.MeterStep} " +
+ // $"【斜坡打点步骤】{ProRunChannelData.SlopStepNo} " +
+ // $"【斜坡打点值SV】{ProRunChannelData.SV} " +
+ // $"【Msg】:接受到仿真写入PLC OK ");
+ // }
+ // else
+ // {
+ // Console.WriteLine($"【时间】{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss fff")} " +
+ // $"【参数名称】:{ProRunChannelData.MeterName} " +
+ // $"【程序Seg】{ProRunChannelData.ProSegName} " +
+ // $"【程序步骤】{ProRunChannelData.MeterStep} " +
+ // $"【步骤SV】{ProRunChannelData.SV} " +
+ // $"【Msg】:接受到步骤仿真写入PLC OK ");
+ // }
+
+
+ // Thread.Sleep(50);
+ // //DownLoadPID();
+ // //stopwatch.Stop(); //停止Stopwatch
+ // //Console.WriteLine("保存数据耗时::{0}", stopwatch.Elapsed.TotalSeconds.ToString());
+ // //stopwatch.Reset();
+ // }
+ // }
+ //}
+
+
+ ///
+ /// 运行步骤写入
+ ///
+ private void ProRunStepWrite()
+ {
+ while (ProRunChannel.Reader.TryRead(out var ProRunChannelData))
+ {
+ ////第一次计时
+ //stopwatch.Start(); //启动Stopwatch
+ if (ProRunChannelData.RunStepType == RunStepType.SlopCell)
+ {
+ SiemensDrive.Write("D1", (short)ProRunChannelData.SV);
+ Console.WriteLine($"【时间】{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss fff")} " +
+ $"【参数名称】:{ProRunChannelData.MeterName} " +
+ $"【程序Seg】{ProRunChannelData.ProSegName} " +
+ $"【程序步骤】{ProRunChannelData.MeterStep} " +
+ $"【斜坡打点步骤】{ProRunChannelData.SlopStepNo} " +
+ $"【斜坡打点值SV】{ProRunChannelData.SV} " +
+ $"【Msg】:接受到仿真写入PLC OK ");
+ }
+ else
+ {
+ SiemensDrive.Write("D1", (short)ProRunChannelData.SV);
+ Console.WriteLine($"【时间】{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss fff")} " +
+ $"【参数名称】:{ProRunChannelData.MeterName} " +
+ $"【程序Seg】{ProRunChannelData.ProSegName} " +
+ $"【程序步骤】{ProRunChannelData.MeterStep} " +
+ $"【步骤SV】{ProRunChannelData.SV} " +
+ $"【Msg】:接受到步骤仿真写入PLC OK ");
+ }
+
+
+ Thread.Sleep(50);
+ //DownLoadPID();
+ //stopwatch.Stop(); //停止Stopwatch
+ //Console.WriteLine("保存数据耗时::{0}", stopwatch.Elapsed.TotalSeconds.ToString());
+ //stopwatch.Reset();
+ }
+ }
+
+ #endregion
}
}
diff --git a/CapMachine.Wpf/Services/ProRuntimeService.cs b/CapMachine.Wpf/Services/ProRuntimeService.cs
index 68da2de..3803eee 100644
--- a/CapMachine.Wpf/Services/ProRuntimeService.cs
+++ b/CapMachine.Wpf/Services/ProRuntimeService.cs
@@ -22,6 +22,7 @@ using static CapMachine.Wpf.Models.ComEnum;
using System.Windows.Forms;
using HslCommunication.Profinet.Siemens;
using Masuit.Tools.Hardware;
+using CapMachine.Model.MeterConfig;
namespace CapMachine.Wpf.Services
{
@@ -39,6 +40,7 @@ namespace CapMachine.Wpf.Services
FreeSql = freeSql;
Mapper = mapper;
MachineRtDataService = machineRtDataService;
+ ProRunChannel = MachineRtDataService.ProRunChannel;
LogService = logService;
//实例化函数
@@ -141,11 +143,27 @@ namespace CapMachine.Wpf.Services
}
};
+ //从变量集合中加载PLC转制的配置数据
+ ListPlcLoadConfigCell = new List();
+ foreach (var itemKeyValue in MachineRtDataService.TagManger.DicTags)
+ {
+ //是否未仪表的参数
+ if (itemKeyValue.Value.IsMeter)
+ {
+ ListPlcLoadConfigCell.Add(new PlcLoadConfigCell()
+ {
+ Name = itemKeyValue.Key,
+ Address = itemKeyValue.Value.SVAddress,
+ Precision = itemKeyValue.Value.Precision,
+ });
+ }
+ }
+
//驱动实例
SiemensDrive = MachineRtDataService.SiemensDrive;
//程序运行实时管道数据监听
- Task.Run(() => ListenProRunChannelAction());
+ //Task.Run(() => ListenProRunChannelAction());
}
///
@@ -179,6 +197,7 @@ namespace CapMachine.Wpf.Services
///
/// 加载选中的程序运行集合
+ /// 目前步骤设置常值,是OK的,但是在斜坡多步骤里面也可以设置 50-50 10秒的常值设置,那么在打点时,上面的两个常值都能识别
///
public void LoadProSegRun(List SelectedListProSegRun)
{
@@ -232,83 +251,31 @@ namespace CapMachine.Wpf.Services
{
//单行步骤中包含多个仪表参数的配置,需要逐个仪表参数手动操作解析
- //********* 单个速度步骤信息的解析 *********
- var CurMeterName = "速度";
- if (itemStep.MeterSpeeds != null && itemStep.MeterSpeeds.Any())
+ //********* 单个【速度】步骤信息的解析 *********
{
- switch (itemStep.MeterSpeeds.FirstOrDefault()!.ValueType)
+ var CurMeterName = "速度";
+ if (itemStep.MeterSpeeds != null && itemStep.MeterSpeeds.Any())
{
- case ConfigValueType.Constant: //常值
- //常值的话就一个数据,循环执行一次
- foreach (var itemMeterValueCell in itemStep.MeterSpeeds)
- {
- var Pid = new ConfigPID();
- if (FreeSql.Select().Where(a => a.MeterName == CurMeterName && a.IndexNo == itemMeterValueCell.ParNo).Any())
- {
- Pid = FreeSql.Select().Where(a => a.MeterName == CurMeterName && a.IndexNo == itemMeterValueCell.ParNo).First();
- }
- var Limit = new ConfigLimit();
- if (FreeSql.Select().Where(a => a.MeterName == CurMeterName && a.IndexNo == itemMeterValueCell.Ev).Any())
- {
- Limit = FreeSql.Select().Where(a => a.MeterName == CurMeterName && a.IndexNo == itemMeterValueCell.Ev).First();
- }
- var Alarm = new ConfigAlarm();
- if (FreeSql.Select().Where(a => a.MeterName == CurMeterName && a.IndexNo == itemMeterValueCell.Ev).Any())
- {
- Alarm = FreeSql.Select().Where(a => a.MeterName == CurMeterName && a.IndexNo == itemMeterValueCell.Ev).First();
- }
-
- ListProExModel.FindFirst(a => a.MeterName == CurMeterName).ListProStepExe.Add(new ProStepExe()
- {
- //程序块
- ProSegName = CurProgramSeg.Name,
- ProSegStep = SegIndex,
- ProSegRepeat = CurProgramSeg.ProRepeat,
- ProSegIsExeing = false,//配置阶段默认不执行 false
-
- //程序步骤数据
- StartSV = GetSVByProcess(itemMeterValueCell.Constant, CurMeterName),
- EndSV = GetSVByProcess(itemMeterValueCell.Constant, CurMeterName),
- KeepTime = itemMeterValueCell.KeepTime,
- MeterStepIsExeing = false,//配置阶段默认不执行 false
- MeterStepIsOK = false,//配置阶段默认不完成 false
- ExistSlop = false,//常值没有斜率 //开始和结束不一样则存在斜率
-
- MeterStep = ListProExModel.FindFirst(a => a.MeterName == CurMeterName).ListProStepExe.Count + 1,
- MeterName = CurMeterName,
-
- LimitNo = itemMeterValueCell.ParNo,
- AlarmNo = itemMeterValueCell.Ev,
- PIDNo = itemMeterValueCell.Ev,
-
- CurConfigPIDDto = Mapper.Map(Pid),
- CurConfigLimitDto = Mapper.Map(Limit),
-
- ProStepInfo = $"{itemStep.StepNo}-{itemMeterValueCell.StepNo}",
- });
- }
- break;
- case ConfigValueType.Slope: //斜率
- //根据循环次数确定
- for (int StepIndex = 0; StepIndex < itemStep.SpeedCycle; StepIndex++)
- {
- //根据循环次数执行
+ switch (itemStep.MeterSpeeds.FirstOrDefault()!.ValueType)
+ {
+ case ConfigValueType.Constant: //常值
+ //常值的话就一个数据,循环执行一次
foreach (var itemMeterValueCell in itemStep.MeterSpeeds)
{
var Pid = new ConfigPID();
- if (FreeSql.Select().Where(a => a.MeterName == CurMeterName && a.IndexNo == itemMeterValueCell.ParNo).Any())
+ if (FreeSql.Select().Where(a => a.MeterName == CurMeterName && a.IndexNo == itemMeterValueCell.PIDNo).Any())
{
- Pid = FreeSql.Select().Where(a => a.MeterName == CurMeterName && a.IndexNo == itemMeterValueCell.ParNo).First();
+ Pid = FreeSql.Select().Where(a => a.MeterName == CurMeterName && a.IndexNo == itemMeterValueCell.PIDNo).First();
}
var Limit = new ConfigLimit();
- if (FreeSql.Select().Where(a => a.MeterName == CurMeterName && a.IndexNo == itemMeterValueCell.Ev).Any())
+ if (FreeSql.Select().Where(a => a.MeterName == CurMeterName && a.IndexNo == itemMeterValueCell.LimitNo).Any())
{
- Limit = FreeSql.Select().Where(a => a.MeterName == CurMeterName && a.IndexNo == itemMeterValueCell.Ev).First();
+ Limit = FreeSql.Select().Where(a => a.MeterName == CurMeterName && a.IndexNo == itemMeterValueCell.LimitNo).First();
}
var Alarm = new ConfigAlarm();
- if (FreeSql.Select().Where(a => a.MeterName == CurMeterName && a.IndexNo == itemMeterValueCell.Ev).Any())
+ if (FreeSql.Select().Where(a => a.MeterName == CurMeterName && a.IndexNo == itemMeterValueCell.AlarmNo).Any())
{
- Alarm = FreeSql.Select().Where(a => a.MeterName == CurMeterName && a.IndexNo == itemMeterValueCell.Ev).First();
+ Alarm = FreeSql.Select().Where(a => a.MeterName == CurMeterName && a.IndexNo == itemMeterValueCell.AlarmNo).First();
}
ListProExModel.FindFirst(a => a.MeterName == CurMeterName).ListProStepExe.Add(new ProStepExe()
@@ -320,33 +287,220 @@ namespace CapMachine.Wpf.Services
ProSegIsExeing = false,//配置阶段默认不执行 false
//程序步骤数据
- //SV = CALCHelper.GetQuickSV(itemMeterValueCell.Constant, 1),
- StartSV = GetSVByProcess(itemMeterValueCell.StartValue, CurMeterName),
- EndSV = GetSVByProcess(itemMeterValueCell.EndValue, CurMeterName),
+ StartSV = GetSVByProcess(itemMeterValueCell.Constant, CurMeterName),
+ EndSV = GetSVByProcess(itemMeterValueCell.Constant, CurMeterName),
KeepTime = itemMeterValueCell.KeepTime,
MeterStepIsExeing = false,//配置阶段默认不执行 false
MeterStepIsOK = false,//配置阶段默认不完成 false
- ExistSlop = itemMeterValueCell.StartValue == itemMeterValueCell.EndValue ? false : true,//开始和结束不一样则存在斜率
+ ExistSlop = false,//常值没有斜率 //开始和结束不一样则存在斜率
MeterStep = ListProExModel.FindFirst(a => a.MeterName == CurMeterName).ListProStepExe.Count + 1,
+ MeterName = CurMeterName,
- LimitNo = itemMeterValueCell.ParNo,
- AlarmNo = itemMeterValueCell.ParNo,
- PIDNo = itemMeterValueCell.Ev,
+ LimitNo = itemMeterValueCell.LimitNo,
+ AlarmNo = itemMeterValueCell.AlarmNo,
+ PIDNo = itemMeterValueCell.PIDNo,
CurConfigPIDDto = Mapper.Map(Pid),
CurConfigLimitDto = Mapper.Map(Limit),
+ CurConfigAlarmDto = Mapper.Map(Alarm),
ProStepInfo = $"{itemStep.StepNo}-{itemMeterValueCell.StepNo}",
- MeterName = CurMeterName,
});
}
- }
- break;
- default:
- break;
+ break;
+ case ConfigValueType.Slope: //斜率
+ //根据循环次数确定
+ for (int StepIndex = 0; StepIndex < itemStep.SpeedCycle; StepIndex++)
+ {
+ //根据循环次数执行
+ foreach (var itemMeterValueCell in itemStep.MeterSpeeds)
+ {
+ var Pid = new ConfigPID();
+ if (FreeSql.Select().Where(a => a.MeterName == CurMeterName && a.IndexNo == itemMeterValueCell.PIDNo).Any())
+ {
+ Pid = FreeSql.Select().Where(a => a.MeterName == CurMeterName && a.IndexNo == itemMeterValueCell.PIDNo).First();
+ }
+ var Limit = new ConfigLimit();
+ if (FreeSql.Select().Where(a => a.MeterName == CurMeterName && a.IndexNo == itemMeterValueCell.LimitNo).Any())
+ {
+ Limit = FreeSql.Select().Where(a => a.MeterName == CurMeterName && a.IndexNo == itemMeterValueCell.LimitNo).First();
+ }
+ var Alarm = new ConfigAlarm();
+ if (FreeSql.Select().Where(a => a.MeterName == CurMeterName && a.IndexNo == itemMeterValueCell.AlarmNo).Any())
+ {
+ Alarm = FreeSql.Select().Where(a => a.MeterName == CurMeterName && a.IndexNo == itemMeterValueCell.AlarmNo).First();
+ }
+
+ ListProExModel.FindFirst(a => a.MeterName == CurMeterName).ListProStepExe.Add(new ProStepExe()
+ {
+ //程序块
+ ProSegName = CurProgramSeg.Name,
+ ProSegStep = SegIndex,
+ ProSegRepeat = CurProgramSeg.ProRepeat,
+ ProSegIsExeing = false,//配置阶段默认不执行 false
+
+ //程序步骤数据
+ //SV = CALCHelper.GetQuickSV(itemMeterValueCell.Constant, 1),
+ StartSV = GetSVByProcess(itemMeterValueCell.StartValue, CurMeterName),
+ EndSV = GetSVByProcess(itemMeterValueCell.EndValue, CurMeterName),
+ KeepTime = itemMeterValueCell.KeepTime,
+ MeterStepIsExeing = false,//配置阶段默认不执行 false
+ MeterStepIsOK = false,//配置阶段默认不完成 false
+ ExistSlop = itemMeterValueCell.StartValue == itemMeterValueCell.EndValue ? false : true,//开始和结束不一样则存在斜率
+
+ MeterStep = ListProExModel.FindFirst(a => a.MeterName == CurMeterName).ListProStepExe.Count + 1,
+
+ LimitNo = itemMeterValueCell.LimitNo,
+ AlarmNo = itemMeterValueCell.AlarmNo,
+ PIDNo = itemMeterValueCell.PIDNo,
+
+ CurConfigPIDDto = Mapper.Map(Pid),
+ CurConfigLimitDto = Mapper.Map(Limit),
+ CurConfigAlarmDto = Mapper.Map(Alarm),
+
+ ProStepInfo = $"{itemStep.StepNo}-{itemMeterValueCell.StepNo}",
+ MeterName = CurMeterName,
+ });
+ }
+ }
+ break;
+ default:
+ break;
+ }
}
}
+
+
+ //********* 单个【排气压力】步骤信息的解析 *********
+ {
+ var CurMeterName = "排气压力";
+ if (itemStep.MeterExPresss != null && itemStep.MeterExPresss.Any())
+ {
+ switch (itemStep.MeterExPresss.FirstOrDefault()!.ValueType)
+ {
+ case ConfigValueType.Constant: //常值
+ //常值的话就一个数据,循环执行一次
+ foreach (var itemMeterValueCell in itemStep.MeterExPresss)
+ {
+ var Pid = new ConfigPID();
+ if (FreeSql.Select().Where(a => a.MeterName == CurMeterName && a.IndexNo == itemMeterValueCell.PIDNo).Any())
+ {
+ Pid = FreeSql.Select().Where(a => a.MeterName == CurMeterName && a.IndexNo == itemMeterValueCell.PIDNo).First();
+ }
+ var Limit = new ConfigLimit();
+ if (FreeSql.Select().Where(a => a.MeterName == CurMeterName && a.IndexNo == itemMeterValueCell.LimitNo).Any())
+ {
+ Limit = FreeSql.Select().Where(a => a.MeterName == CurMeterName && a.IndexNo == itemMeterValueCell.LimitNo).First();
+ }
+ var Alarm = new ConfigAlarm();
+ if (FreeSql.Select().Where(a => a.MeterName == CurMeterName && a.IndexNo == itemMeterValueCell.AlarmNo).Any())
+ {
+ Alarm = FreeSql.Select().Where(a => a.MeterName == CurMeterName && a.IndexNo == itemMeterValueCell.AlarmNo).First();
+ }
+
+ ListProExModel.FindFirst(a => a.MeterName == CurMeterName).ListProStepExe.Add(new ProStepExe()
+ {
+ //程序块
+ ProSegName = CurProgramSeg.Name,
+ ProSegStep = SegIndex,
+ ProSegRepeat = CurProgramSeg.ProRepeat,
+ ProSegIsExeing = false,//配置阶段默认不执行 false
+
+ //程序步骤数据
+ StartSV = GetSVByProcess(itemMeterValueCell.Constant, CurMeterName),
+ EndSV = GetSVByProcess(itemMeterValueCell.Constant, CurMeterName),
+ KeepTime = itemMeterValueCell.KeepTime,
+ MeterStepIsExeing = false,//配置阶段默认不执行 false
+ MeterStepIsOK = false,//配置阶段默认不完成 false
+ ExistSlop = false,//常值没有斜率 //开始和结束不一样则存在斜率
+
+ MeterStep = ListProExModel.FindFirst(a => a.MeterName == CurMeterName).ListProStepExe.Count + 1,
+ MeterName = CurMeterName,
+
+ LimitNo = itemMeterValueCell.LimitNo,
+ AlarmNo = itemMeterValueCell.AlarmNo,
+ PIDNo = itemMeterValueCell.PIDNo,
+
+ CurConfigPIDDto = Mapper.Map(Pid),
+ CurConfigLimitDto = Mapper.Map(Limit),
+ CurConfigAlarmDto = Mapper.Map(Alarm),
+
+ ProStepInfo = $"{itemStep.StepNo}-{itemMeterValueCell.StepNo}",
+ });
+ }
+ break;
+ case ConfigValueType.Slope:
+ //带斜率
+ //根据循环次数确定
+ var Cycle = GetCycleBySpeed(itemStep.MeterSpeeds, itemStep.SpeedCycle, itemStep.MeterExPresss.Select(p => new MeterCom { Constant = p.Constant, KeepTime = p.KeepTime, StepNo = p.StepNo, ValueType = p.ValueType }).ToList());
+ for (int StepCycleIndex = 1; StepCycleIndex <= Cycle; StepCycleIndex++)
+ {
+ //根据循环次数执行
+ foreach (var itemMeterValueCell in itemStep.MeterExPresss)
+ {
+ var Pid = new ConfigPID();
+ if (FreeSql.Select().Where(a => a.MeterName == CurMeterName && a.IndexNo == itemMeterValueCell.PIDNo).Any())
+ {
+ Pid = FreeSql.Select().Where(a => a.MeterName == CurMeterName && a.IndexNo == itemMeterValueCell.PIDNo).First();
+ }
+ var Limit = new ConfigLimit();
+ if (FreeSql.Select().Where(a => a.MeterName == CurMeterName && a.IndexNo == itemMeterValueCell.LimitNo).Any())
+ {
+ Limit = FreeSql.Select().Where(a => a.MeterName == CurMeterName && a.IndexNo == itemMeterValueCell.LimitNo).First();
+ }
+ var Alarm = new ConfigAlarm();
+ if (FreeSql.Select().Where(a => a.MeterName == CurMeterName && a.IndexNo == itemMeterValueCell.AlarmNo).Any())
+ {
+ Alarm = FreeSql.Select().Where(a => a.MeterName == CurMeterName && a.IndexNo == itemMeterValueCell.AlarmNo).First();
+ }
+
+ ListProExModel.FindFirst(a => a.MeterName == CurMeterName).ListProStepExe.Add(new ProStepExe()
+ {
+ //程序块
+ ProSegName = CurProgramSeg.Name,
+ ProSegStep = SegIndex,
+ ProSegRepeat = CurProgramSeg.ProRepeat,
+ ProSegIsExeing = false,//配置阶段默认不执行 false
+
+ //程序步骤数据
+ //SV = CALCHelper.GetQuickSV(itemMeterValueCell.Constant, 1),
+ StartSV = GetSVByProcess(itemMeterValueCell.StartValue, CurMeterName),
+ EndSV = GetSVByProcess(itemMeterValueCell.EndValue, CurMeterName),
+ KeepTime = itemMeterValueCell.KeepTime,
+ MeterStepIsExeing = false,//配置阶段默认不执行 false
+ MeterStepIsOK = false,//配置阶段默认不完成 false
+ ExistSlop = itemMeterValueCell.StartValue == itemMeterValueCell.EndValue ? false : true,//开始和结束不一样则存在斜率
+
+ MeterStep = ListProExModel.FindFirst(a => a.MeterName == CurMeterName).ListProStepExe.Count + 1,
+
+ LimitNo = itemMeterValueCell.LimitNo,
+ AlarmNo = itemMeterValueCell.AlarmNo,
+ PIDNo = itemMeterValueCell.PIDNo,
+
+ CurConfigPIDDto = Mapper.Map(Pid),
+ CurConfigLimitDto = Mapper.Map(Limit),
+ CurConfigAlarmDto = Mapper.Map(Alarm),
+
+ ProStepInfo = $"{itemStep.StepNo}-{itemMeterValueCell.StepNo}",
+ MeterName = CurMeterName,
+ });
+ }
+ }
+ break;
+ default:
+ break;
+ }
+ }
+ else
+ {
+ LogService.Warn($"【名称】: {CurMeterName} - 未找到步骤信息。步骤为空");
+ }
+
+ }
+
+
+
}
}
@@ -364,10 +518,10 @@ namespace CapMachine.Wpf.Services
///
private int GetSVByProcess(double SV, string Name)
{
- var Data = ListPlcLoadConfigCell.Where(a => a.Name == Name);
+ var Data = ListPlcLoadConfigCell.Where(a => a.Name.Contains(Name));
if (Data.Any())
{
- return (int)(SV / (Data.FirstOrDefault()!.Precision));
+ return (int)(SV * (Data.FirstOrDefault()!.Precision));
}
else
{
@@ -377,6 +531,69 @@ namespace CapMachine.Wpf.Services
}
}
+
+ ///
+ /// 根据速度表时间获取当前参数的循环的次数
+ /// 只考虑斜率下的循环次数
+ /// 常值不考虑,调用方已经考虑了常值
+ ///
+ ///
+ ///
+ private int GetCycleBySpeed(List MeterSpeeds, int SpeedCycle, List MeterComs)
+ {
+ if (MeterComs != null && MeterComs.Count > 0 && MeterSpeeds != null && MeterSpeeds.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
+ {
+ //目标参数全部时间为0,认为不执行,不进行操作
+ return 0;
+ }
+ }
+ else
+ {
+ //速度是常值
+ var TotalTime = MeterSpeeds!.FirstOrDefault()!.KeepTime;
+ var MeterConstTime = MeterComs.Sum(a => a.KeepTime);
+ if (MeterConstTime != 0)
+ {
+ return TotalTime / MeterConstTime;
+ }
+ else
+ {
+ //目标参数全部时间为0,认为不执行,不进行操作
+ return 0;
+ }
+ }
+ }
+ else
+ {
+ // meterComs 常值 就一步了,执行一次,没有循环
+ return 1;
+ }
+ }
+ else
+ {
+ //集合没有数据,不进行操作
+ return 0;
+ }
+
+ }
+
+
#region 程序调度执行
///
@@ -439,53 +656,57 @@ namespace CapMachine.Wpf.Services
/// 队列通道
/// 当前队列消费触发的数据记录
///
- public Channel ProRunChannel = Channel.CreateUnbounded(new UnboundedChannelOptions()
- {
- SingleWriter = false,//允许一次写入多条数据
- SingleReader = true //一次只能读取一条消息
- });
+ public Channel ProRunChannel { get; set; }
- ///
- /// 程序执行管道监听方法
- ///
- ///
- private async void ListenProRunChannelAction()
- {
- while (await ProRunChannel.Reader.WaitToReadAsync())
- {
- if (ProRunChannel.Reader.TryRead(out var ProRunChannelData))
- {
- ////第一次计时
- //stopwatch.Start(); //启动Stopwatch
- if (ProRunChannelData.RunStepType == RunStepType.SlopCell)
- {
- Console.WriteLine($"【时间】{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss fff")} " +
- $"【参数名称】:{ProRunChannelData.MeterName} " +
- $"【程序Seg】{ProRunChannelData.ProSegName} " +
- $"【程序步骤】{ProRunChannelData.MeterStep} " +
- $"【斜坡打点步骤】{ProRunChannelData.SlopStepNo} " +
- $"【斜坡打点值SV】{ProRunChannelData.SV} " +
- $"【Msg】:接受到仿真写入PLC OK ");
- }
- else
- {
- Console.WriteLine($"【时间】{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss fff")} " +
- $"【参数名称】:{ProRunChannelData.MeterName} " +
- $"【程序Seg】{ProRunChannelData.ProSegName} " +
- $"【程序步骤】{ProRunChannelData.MeterStep} " +
- $"【步骤SV】{ProRunChannelData.SV} " +
- $"【Msg】:接受到步骤仿真写入PLC OK ");
- }
+ // = Channel.CreateUnbounded(new UnboundedChannelOptions()
+ //{
+ // SingleWriter = false,//允许一次写入多条数据
+ // SingleReader = true //一次只能读取一条消息
+ //});
+
+ /////
+ ///// 程序执行管道监听方法
+ /////
+ /////
+ //private async void ListenProRunChannelAction()
+ //{
+ // while (await ProRunChannel.Reader.WaitToReadAsync())
+ // {
+ // if (ProRunChannel.Reader.TryRead(out var ProRunChannelData))
+ // {
+ // ////第一次计时
+ // //stopwatch.Start(); //启动Stopwatch
+ // if (ProRunChannelData.RunStepType == RunStepType.SlopCell)
+ // {
+ // Console.WriteLine($"【时间】{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss fff")} " +
+ // $"【参数名称】:{ProRunChannelData.MeterName} " +
+ // $"【程序Seg】{ProRunChannelData.ProSegName} " +
+ // $"【程序步骤】{ProRunChannelData.MeterStep} " +
+ // $"【斜坡打点步骤】{ProRunChannelData.SlopStepNo} " +
+ // $"【斜坡打点值SV】{ProRunChannelData.SV} " +
+ // $"【Msg】:接受到仿真写入PLC OK ");
+ // }
+ // else
+ // {
+ // Console.WriteLine($"【时间】{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss fff")} " +
+ // $"【参数名称】:{ProRunChannelData.MeterName} " +
+ // $"【程序Seg】{ProRunChannelData.ProSegName} " +
+ // $"【程序步骤】{ProRunChannelData.MeterStep} " +
+ // $"【步骤SV】{ProRunChannelData.SV} " +
+ // $"【Msg】:接受到步骤仿真写入PLC OK ");
+ // }
+
+
+ // Thread.Sleep(50);
+ // //DownLoadPID();
+ // //stopwatch.Stop(); //停止Stopwatch
+ // //Console.WriteLine("保存数据耗时::{0}", stopwatch.Elapsed.TotalSeconds.ToString());
+ // //stopwatch.Reset();
+ // }
+ // }
+ //}
- Thread.Sleep(50);
- //DownLoadPID();
- //stopwatch.Stop(); //停止Stopwatch
- //Console.WriteLine("保存数据耗时::{0}", stopwatch.Elapsed.TotalSeconds.ToString());
- //stopwatch.Reset();
- }
- }
- }
/////
///// 下载PID 信息
diff --git a/CapMachine.Wpf/ViewModels/ProConfigViewModel.cs b/CapMachine.Wpf/ViewModels/ProConfigViewModel.cs
index 07c63f4..e3d91da 100644
--- a/CapMachine.Wpf/ViewModels/ProConfigViewModel.cs
+++ b/CapMachine.Wpf/ViewModels/ProConfigViewModel.cs
@@ -2764,7 +2764,11 @@ namespace CapMachine.Wpf.ViewModels
PTCEnable = SelectedSlopMeterSpeed.PTCEnable,
CapEnable = SelectedSlopMeterSpeed.CapEnable,
OutLock = SelectedSlopMeterSpeed.OutLock,
- ParNo = SelectedSlopMeterSpeed.ParNo,
+ //ParNo = SelectedSlopMeterSpeed.ParNo,
+ PIDNo = SelectedSlopMeterSpeed.PIDNo,
+ AlarmNo = SelectedSlopMeterSpeed.AlarmNo,
+ LimitNo = SelectedSlopMeterSpeed.LimitNo,
+
//StepNo = AutoGetMeterSpeedStepNo(),
};
@@ -2790,7 +2794,10 @@ namespace CapMachine.Wpf.ViewModels
FreeSql.Update()
.Set(a => a.Constant, SelectedConstSpeedValue)
.Set(a => a.KeepTime, SelectedConstSpeedTimeValue)
- .Set(a => a.ParNo, SelectedSlopMeterSpeed.ParNo)
+ //.Set(a => a.ParNo, SelectedSlopMeterSpeed.ParNo)
+ .Set(a => a.PIDNo, SelectedSlopMeterSpeed.PIDNo)
+ .Set(a => a.LimitNo, SelectedSlopMeterSpeed.LimitNo)
+ .Set(a => a.AlarmNo, SelectedSlopMeterSpeed.AlarmNo)
.Set(a => a.OutLock, SelectedSlopMeterSpeed.OutLock)
.Set(a => a.CapEnable, SelectedSlopMeterSpeed.CapEnable)
.Set(a => a.Ev, SelectedSlopMeterSpeed.Ev)
@@ -2859,7 +2866,10 @@ namespace CapMachine.Wpf.ViewModels
Id = SelectedData.Id,
InhExhValve = SelectedData.InhExhValve,
OutLock = SelectedData.OutLock,
- ParNo = SelectedData.ParNo,
+ //ParNo = SelectedData.ParNo,
+ AlarmNo = SelectedData.AlarmNo,
+ LimitNo = SelectedData.LimitNo,
+ PIDNo = SelectedData.PIDNo,
ProStep = SelectedData.ProStep,
ProStepId = SelectedData.ProStepId,
StartValue = SelectedData.StartValue,
@@ -2944,7 +2954,10 @@ namespace CapMachine.Wpf.ViewModels
PTCEnable = SelectedSlopMeterSpeed.PTCEnable,
CapEnable = SelectedSlopMeterSpeed.CapEnable,
OutLock = SelectedSlopMeterSpeed.OutLock,
- ParNo = SelectedSlopMeterSpeed.ParNo,
+ //ParNo = SelectedSlopMeterSpeed.ParNo,
+ AlarmNo = SelectedSlopMeterSpeed.AlarmNo,
+ LimitNo = SelectedSlopMeterSpeed.LimitNo,
+ PIDNo = SelectedSlopMeterSpeed.PIDNo,
ValueType = ConfigValueType.Slope,
StepNo = AutoGetMeterSpeedStepNo(),
};
@@ -3024,7 +3037,10 @@ namespace CapMachine.Wpf.ViewModels
.Set(a => a.KeepTime, SelectedSlopMeterSpeed.KeepTime)
.Set(a => a.StepNo, SelectedSlopMeterSpeed.StepNo)
- .Set(a => a.ParNo, SelectedSlopMeterSpeed.ParNo)
+ //.Set(a => a.ParNo, SelectedSlopMeterSpeed.ParNo)
+ .Set(a => a.PIDNo, SelectedSlopMeterSpeed.PIDNo)
+ .Set(a => a.LimitNo, SelectedSlopMeterSpeed.LimitNo)
+ .Set(a => a.AlarmNo, SelectedSlopMeterSpeed.AlarmNo)
.Set(a => a.OutLock, SelectedSlopMeterSpeed.OutLock)
.Set(a => a.CapEnable, SelectedSlopMeterSpeed.CapEnable)
.Set(a => a.Ev, SelectedSlopMeterSpeed.Ev)
diff --git a/CapMachine.Wpf/Views/ProConfigView.xaml b/CapMachine.Wpf/Views/ProConfigView.xaml
index 2e138b6..7024f36 100644
--- a/CapMachine.Wpf/Views/ProConfigView.xaml
+++ b/CapMachine.Wpf/Views/ProConfigView.xaml
@@ -1268,10 +1268,19 @@
Style="{StaticResource MaterialDesignSwitchToggleButton}"
ToolTip="输出锁定" />
-
-
-
+
+
+
+
@@ -1285,18 +1294,30 @@
Style="{StaticResource MaterialDesignSwitchToggleButton}"
ToolTip="压缩机使能" />
+
-
-
+
+
+
+
+
+
+
+
+