diff --git a/CapMachine.Wpf/ChannelModel/ProRunChannelData.cs b/CapMachine.Wpf/ChannelModel/ProRunChannelData.cs
index 555df7c..3a9805d 100644
--- a/CapMachine.Wpf/ChannelModel/ProRunChannelData.cs
+++ b/CapMachine.Wpf/ChannelModel/ProRunChannelData.cs
@@ -53,5 +53,11 @@ namespace CapMachine.Wpf.ChannelModel
///
public Limit? CurLoadLimit { get; set; }
+ ///
+ /// 拓展参数集合
+ /// 比如:速度参数拓展的输出锁定、吸排气阀,压缩机使能等这些拓展参数
+ /// 也可以是其他参数附带的拓展信息
+ ///
+ public List? ListStepExd { get; set; }
}
}
diff --git a/CapMachine.Wpf/Dtos/MeterExInfoDto.cs b/CapMachine.Wpf/Dtos/MeterExInfoDto.cs
index a7db1ed..05a7f69 100644
--- a/CapMachine.Wpf/Dtos/MeterExInfoDto.cs
+++ b/CapMachine.Wpf/Dtos/MeterExInfoDto.cs
@@ -61,5 +61,36 @@ namespace CapMachine.Wpf.Dtos
get { return _IsTimeOk; }
set { _IsTimeOk = value; RaisePropertyChanged(); }
}
+
+ private int _DefaultPIDNo;
+ ///
+ /// DefaultPIDNo
+ ///
+ public int DefaultPIDNo
+ {
+ get { return _DefaultPIDNo; }
+ set { _DefaultPIDNo = value; RaisePropertyChanged(); }
+ }
+
+ private int _DefaultLimitNo;
+ ///
+ /// DefaultLimitNo
+ ///
+ public int DefaultLimitNo
+ {
+ get { return _DefaultLimitNo; }
+ set { _DefaultLimitNo = value; RaisePropertyChanged(); }
+ }
+
+ private int _DefaultAlarmNo;
+ ///
+ /// DefaultAlarmNo
+ ///
+ public int DefaultAlarmNo
+ {
+ get { return _DefaultAlarmNo; }
+ set { _DefaultAlarmNo = value; RaisePropertyChanged(); }
+ }
+
}
}
diff --git a/CapMachine.Wpf/Models/PlcExdConfigCell.cs b/CapMachine.Wpf/Models/PlcExdConfigCell.cs
new file mode 100644
index 0000000..7000570
--- /dev/null
+++ b/CapMachine.Wpf/Models/PlcExdConfigCell.cs
@@ -0,0 +1,30 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace CapMachine.Wpf.Models
+{
+ ///
+ /// PLC加载配置拓展单元-包括 压缩机使能、吸排气阀、输出锁定等
+ /// 下载PLC数据,用整型的数据下载,但是我们这边可能是浮点数,需要格式的转换,精度的转换
+ ///
+ public class PlcExdConfigCell
+ {
+ ///
+ /// 配置字段 名称
+ ///
+ public string? Name { get; set; }
+
+ ///
+ /// 地址
+ ///
+ public string? Address { get; set; }
+
+ ///
+ /// 精度 1,10,100,1000
+ ///
+ public int Precision { get; set; }
+ }
+}
diff --git a/CapMachine.Wpf/Models/ProModelPars/ProExModel.cs b/CapMachine.Wpf/Models/ProModelPars/ProExModel.cs
index 155cca9..1f396f9 100644
--- a/CapMachine.Wpf/Models/ProModelPars/ProExModel.cs
+++ b/CapMachine.Wpf/Models/ProModelPars/ProExModel.cs
@@ -41,7 +41,7 @@ namespace CapMachine.Wpf.Models.ProModelPars
///
/// 是否是速度仪表参数
///
- public bool IsSpeed { get; set; }=false;
+ public bool IsSpeed { get; set; } = false;
///
/// 程序执行管道
@@ -155,7 +155,7 @@ namespace CapMachine.Wpf.Models.ProModelPars
//RunEnable = false;
//时间到了触发下载下一步步骤
-
+
//不为空的数据
if (NextProStepExe == null)
@@ -210,6 +210,9 @@ namespace CapMachine.Wpf.Models.ProModelPars
CurLoadLimit = LimitResult == true ? new Limit() { Up = (short)NextProStepExe.CurConfigLimitDto.Up, Down = (short)NextProStepExe.CurConfigLimitDto.Down } : new Limit(),
CurLoadPID = PidResult == true ? new PID() { P = (short)NextProStepExe.CurConfigPIDDto.P, I = (short)NextProStepExe.CurConfigPIDDto.I, D = (short)NextProStepExe.CurConfigPIDDto.D } : new PID(),
RunStepType = GetRunStepType(PidResult, LimitResult, false),
+
+ ListStepExd = GetStepExds(NextProStepExe),//拓展参数
+
});
//存在坡度数据
@@ -247,6 +250,8 @@ namespace CapMachine.Wpf.Models.ProModelPars
CurLoadLimit = LimitResult == true ? new Limit() { Up = (short)NextProStepExe.CurConfigLimitDto.Up, Down = (short)NextProStepExe.CurConfigLimitDto.Down } : new Limit(),
CurLoadPID = PidResult == true ? new PID() { P = (short)NextProStepExe.CurConfigPIDDto.P, I = (short)NextProStepExe.CurConfigPIDDto.I, D = (short)NextProStepExe.CurConfigPIDDto.D } : new PID(),
RunStepType = GetRunStepType(PidResult, LimitResult, true),
+
+ ListStepExd = GetStepExds(NextProStepExe),//拓展参数
});
Console.WriteLine($"【时间】{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss fff")} 【参数名称】:{MeterName} " +
$"【程序Seg】{CurProStepExe.ProSegName} " +
@@ -309,6 +314,21 @@ namespace CapMachine.Wpf.Models.ProModelPars
}
}
+
+ ///
+ /// 获取拓展信息
+ /// 一般是速度有这些参数
+ ///
+ ///
+ private List GetStepExds(ProStepExe proStepExe)
+ {
+ if (proStepExe.ListStepExd != null && proStepExe.ListStepExd.Count() > 0)
+ {
+ return proStepExe.ListStepExd;
+ }
+ return null;
+ }
+
///
/// 当前步骤已经运行时长-秒
///
diff --git a/CapMachine.Wpf/Models/ProModelPars/ProStepExe.cs b/CapMachine.Wpf/Models/ProModelPars/ProStepExe.cs
index 556f0ac..03bc87d 100644
--- a/CapMachine.Wpf/Models/ProModelPars/ProStepExe.cs
+++ b/CapMachine.Wpf/Models/ProModelPars/ProStepExe.cs
@@ -135,5 +135,12 @@ namespace CapMachine.Wpf.Models.ProModelPars
/// AlarmNo的配置信息
///
public ConfigAlarmDto? CurConfigAlarmDto { get; set; }
+
+ ///
+ /// 拓展参数集合
+ /// 比如:速度参数拓展的输出锁定、吸排气阀,压缩机使能等这些拓展参数
+ /// 也可以是其他参数附带的拓展信息
+ ///
+ public List? ListStepExd { get; set; }
}
}
diff --git a/CapMachine.Wpf/Models/ProModelPars/StepExd.cs b/CapMachine.Wpf/Models/ProModelPars/StepExd.cs
new file mode 100644
index 0000000..193685e
--- /dev/null
+++ b/CapMachine.Wpf/Models/ProModelPars/StepExd.cs
@@ -0,0 +1,50 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace CapMachine.Wpf.Models.ProModelPars
+{
+ ///
+ /// ProStepExe 参数执行的拓展参数
+ /// 比如:速度参数拓展的输出锁定、吸排气阀,压缩机使能等这些拓展参数
+ ///
+ public class StepExd
+ {
+ ///
+ /// 参数名称
+ ///
+ public string? Name { get; set; }
+
+ ///
+ /// 值信息
+ ///
+ public object? Value { get; set; }
+
+ ///
+ /// 值类型
+ ///
+ public ExdValueType ValueType { get; set; }
+ }
+
+
+ ///
+ /// 值类型
+ ///
+ public enum ExdValueType
+ {
+ ///
+ /// 布尔
+ ///
+ Bool=1,
+ ///
+ /// 整型数据
+ ///
+ Short=2,
+ ///
+ /// 浮点数
+ ///
+ Double=3,
+ }
+}
diff --git a/CapMachine.Wpf/Services/MachineRtDataService.cs b/CapMachine.Wpf/Services/MachineRtDataService.cs
index 308e499..8e691d0 100644
--- a/CapMachine.Wpf/Services/MachineRtDataService.cs
+++ b/CapMachine.Wpf/Services/MachineRtDataService.cs
@@ -104,6 +104,11 @@ namespace CapMachine.Wpf.Services
///
public List ListPlcLoadConfigCell { get; set; }
+ ///
+ /// PLC加载配置拓展数据集合
+ ///
+ public List ListPlcExdConfigCell { get; set; }
+
///
/// 标签管理中心
///
@@ -2225,6 +2230,14 @@ namespace CapMachine.Wpf.Services
new HandSwitchData(){Name="使能",ActionAddress="M2.7",StateAddress="V15.1" },
};
+ ListPlcExdConfigCell = new List()
+ {
+ new PlcExdConfigCell(){ Name="输出锁定",Address="VW482",Precision=1},
+ new PlcExdConfigCell(){ Name="吸排气阀",Address="VW490",Precision=1},
+ new PlcExdConfigCell(){ Name="EV",Address="VW492",Precision=1},
+ new PlcExdConfigCell(){ Name="压缩机使能",Address="VW484",Precision=1},
+ new PlcExdConfigCell(){ Name="PTC使能",Address="VW486",Precision=1},
+ };
//TagManger.ListTag[0].Name = "new TestType() { byteValue=12}";
@@ -2434,7 +2447,6 @@ namespace CapMachine.Wpf.Services
{
var IPInfo = ConfigHelper.GetValue("PLCIP");
-
SiemensDrive = new SiemensS7Net(SiemensPLCS.S200Smart, IPInfo);
// 连接对象
OperateResult connect = SiemensDrive.ConnectServer();
@@ -2543,7 +2555,7 @@ namespace CapMachine.Wpf.Services
await Task.Delay(20);
-
+
try
@@ -2674,7 +2686,7 @@ namespace CapMachine.Wpf.Services
//地址为空的话则下一个
if (string.IsNullOrEmpty(mVModel!.Address)) continue;
//给MvModel的原始属性赋值 MV是0-100 % 有标准的转换格式
- mVModel!.EngValue = SiemensDrive.ByteTransform.TransInt16(OperateResultBlockMVRead.Content, mVModel.BlockIndex)*1.0/10;
+ mVModel!.EngValue = SiemensDrive.ByteTransform.TransInt16(OperateResultBlockMVRead.Content, mVModel.BlockIndex) * 1.0 / 10;
}
//MV 手自动切换 只有控制才有MVAM控制
@@ -2879,17 +2891,24 @@ namespace CapMachine.Wpf.Services
SendSpeedSvToCap(ProRunChannelData.SV);
//Pid
- var Pid_PResult = SiemensDrive.Write(CurMeterInfo.Pid_PAddress, (short)ProRunChannelData.CurLoadPID!.P);
- if (!Pid_PResult.IsSuccess) Console.WriteLine($"{ProRunChannelData.MeterName}:PID-P写入失败");
- var Pid_IResult = SiemensDrive.Write(CurMeterInfo.Pid_IAddress, (short)ProRunChannelData.CurLoadPID!.I);
- if (!Pid_IResult.IsSuccess) Console.WriteLine($"{ProRunChannelData.MeterName}:PID-I写入失败");
- var Pid_DResult = SiemensDrive.Write(CurMeterInfo.Pid_DAddress, (short)ProRunChannelData.CurLoadPID!.D);
- if (!Pid_DResult.IsSuccess) Console.WriteLine($"{ProRunChannelData.MeterName}:PID-D写入失败");
+ if (!string.IsNullOrEmpty(CurMeterInfo.Pid_PAddress))
+ {
+ var Pid_PResult = SiemensDrive.Write(CurMeterInfo.Pid_PAddress, (short)ProRunChannelData.CurLoadPID!.P);
+ if (!Pid_PResult.IsSuccess) Console.WriteLine($"{ProRunChannelData.MeterName}:PID-P写入失败");
+ var Pid_IResult = SiemensDrive.Write(CurMeterInfo.Pid_IAddress, (short)ProRunChannelData.CurLoadPID!.I);
+ if (!Pid_IResult.IsSuccess) Console.WriteLine($"{ProRunChannelData.MeterName}:PID-I写入失败");
+ var Pid_DResult = SiemensDrive.Write(CurMeterInfo.Pid_DAddress, (short)ProRunChannelData.CurLoadPID!.D);
+ if (!Pid_DResult.IsSuccess) Console.WriteLine($"{ProRunChannelData.MeterName}:PID-D写入失败");
+ }
+
//Limit
- var Limit_UpResult = SiemensDrive.Write(CurMeterInfo.Limit_UpAddress, (short)ProRunChannelData.CurLoadLimit!.Up);
- if (!Limit_UpResult.IsSuccess) Console.WriteLine($"{ProRunChannelData.MeterName}:Limit_Up写入失败");
- var Limit_DownResult = SiemensDrive.Write(CurMeterInfo.Limit_DownAddress, (short)ProRunChannelData.CurLoadLimit!.Down);
- if (!Limit_DownResult.IsSuccess) Console.WriteLine($"{ProRunChannelData.MeterName}:Limit_Down写入失败");
+ if (!string.IsNullOrEmpty(CurMeterInfo.Limit_UpAddress))
+ {
+ var Limit_UpResult = SiemensDrive.Write(CurMeterInfo.Limit_UpAddress, (short)ProRunChannelData.CurLoadLimit!.Up);
+ if (!Limit_UpResult.IsSuccess) Console.WriteLine($"{ProRunChannelData.MeterName}:Limit_Up写入失败");
+ var Limit_DownResult = SiemensDrive.Write(CurMeterInfo.Limit_DownAddress, (short)ProRunChannelData.CurLoadLimit!.Down);
+ if (!Limit_DownResult.IsSuccess) Console.WriteLine($"{ProRunChannelData.MeterName}:Limit_Down写入失败");
+ }
}
break;
case RunStepType.StepPID:
@@ -2900,13 +2919,17 @@ namespace CapMachine.Wpf.Services
if (!SvResult.IsSuccess) Console.WriteLine($"{ProRunChannelData.MeterName}:SV写入失败");
//速度SV到压缩机
SendSpeedSvToCap(ProRunChannelData.SV);
+
//Pid
- var Pid_PResult = SiemensDrive.Write(CurMeterInfo.Pid_PAddress, (short)ProRunChannelData.CurLoadPID!.P);
- if (!Pid_PResult.IsSuccess) Console.WriteLine($"{ProRunChannelData.MeterName}:PID-P写入失败");
- var Pid_IResult = SiemensDrive.Write(CurMeterInfo.Pid_IAddress, (short)ProRunChannelData.CurLoadPID!.I);
- if (!Pid_IResult.IsSuccess) Console.WriteLine($"{ProRunChannelData.MeterName}:PID-I写入失败");
- var Pid_DResult = SiemensDrive.Write(CurMeterInfo.Pid_DAddress, (short)ProRunChannelData.CurLoadPID!.D);
- if (!Pid_DResult.IsSuccess) Console.WriteLine($"{ProRunChannelData.MeterName}:PID-D写入失败");
+ if (!string.IsNullOrEmpty(CurMeterInfo.Pid_PAddress))
+ {
+ var Pid_PResult = SiemensDrive.Write(CurMeterInfo.Pid_PAddress, (short)ProRunChannelData.CurLoadPID!.P);
+ if (!Pid_PResult.IsSuccess) Console.WriteLine($"{ProRunChannelData.MeterName}:PID-P写入失败");
+ var Pid_IResult = SiemensDrive.Write(CurMeterInfo.Pid_IAddress, (short)ProRunChannelData.CurLoadPID!.I);
+ if (!Pid_IResult.IsSuccess) Console.WriteLine($"{ProRunChannelData.MeterName}:PID-I写入失败");
+ var Pid_DResult = SiemensDrive.Write(CurMeterInfo.Pid_DAddress, (short)ProRunChannelData.CurLoadPID!.D);
+ if (!Pid_DResult.IsSuccess) Console.WriteLine($"{ProRunChannelData.MeterName}:PID-D写入失败");
+ }
}
break;
case RunStepType.StepLimit:
@@ -2919,10 +2942,14 @@ namespace CapMachine.Wpf.Services
SendSpeedSvToCap(ProRunChannelData.SV);
//Limit
- var Limit_UpResult = SiemensDrive.Write(CurMeterInfo.Limit_UpAddress, (short)ProRunChannelData.CurLoadLimit!.Up);
- if (!Limit_UpResult.IsSuccess) Console.WriteLine($"{ProRunChannelData.MeterName}:Limit_Up写入失败");
- var Limit_DownResult = SiemensDrive.Write(CurMeterInfo.Limit_DownAddress, (short)ProRunChannelData.CurLoadLimit!.Down);
- if (!Limit_DownResult.IsSuccess) Console.WriteLine($"{ProRunChannelData.MeterName}:Limit_Down写入失败");
+ if (!string.IsNullOrEmpty(CurMeterInfo.Limit_UpAddress))
+ {
+ var Limit_UpResult = SiemensDrive.Write(CurMeterInfo.Limit_UpAddress, (short)ProRunChannelData.CurLoadLimit!.Up);
+ if (!Limit_UpResult.IsSuccess) Console.WriteLine($"{ProRunChannelData.MeterName}:Limit_Up写入失败");
+ var Limit_DownResult = SiemensDrive.Write(CurMeterInfo.Limit_DownAddress, (short)ProRunChannelData.CurLoadLimit!.Down);
+ if (!Limit_DownResult.IsSuccess) Console.WriteLine($"{ProRunChannelData.MeterName}:Limit_Down写入失败");
+ }
+
}
break;
case RunStepType.StepSV:
@@ -2939,40 +2966,57 @@ namespace CapMachine.Wpf.Services
case RunStepType.LimitPid:
{
var CurMeterInfo = ListPlcLoadConfigCell.FirstOrDefault(a => a.Name!.Contains(ProRunChannelData.MeterName!));
+
//Pid
- var Pid_PResult = SiemensDrive.Write(CurMeterInfo.Pid_PAddress, (short)ProRunChannelData.CurLoadPID!.P);
- if (!Pid_PResult.IsSuccess) Console.WriteLine($"{ProRunChannelData.MeterName}:PID-P写入失败");
- var Pid_IResult = SiemensDrive.Write(CurMeterInfo.Pid_IAddress, (short)ProRunChannelData.CurLoadPID!.I);
- if (!Pid_IResult.IsSuccess) Console.WriteLine($"{ProRunChannelData.MeterName}:PID-I写入失败");
- var Pid_DResult = SiemensDrive.Write(CurMeterInfo.Pid_DAddress, (short)ProRunChannelData.CurLoadPID!.D);
- if (!Pid_DResult.IsSuccess) Console.WriteLine($"{ProRunChannelData.MeterName}:PID-D写入失败");
+ if (!string.IsNullOrEmpty(CurMeterInfo.Pid_PAddress))
+ {
+ var Pid_PResult = SiemensDrive.Write(CurMeterInfo.Pid_PAddress, (short)ProRunChannelData.CurLoadPID!.P);
+ if (!Pid_PResult.IsSuccess) Console.WriteLine($"{ProRunChannelData.MeterName}:PID-P写入失败");
+ var Pid_IResult = SiemensDrive.Write(CurMeterInfo.Pid_IAddress, (short)ProRunChannelData.CurLoadPID!.I);
+ if (!Pid_IResult.IsSuccess) Console.WriteLine($"{ProRunChannelData.MeterName}:PID-I写入失败");
+ var Pid_DResult = SiemensDrive.Write(CurMeterInfo.Pid_DAddress, (short)ProRunChannelData.CurLoadPID!.D);
+ if (!Pid_DResult.IsSuccess) Console.WriteLine($"{ProRunChannelData.MeterName}:PID-D写入失败");
+ }
+
//Limit
- var Limit_UpResult = SiemensDrive.Write(CurMeterInfo.Limit_UpAddress, (short)ProRunChannelData.CurLoadLimit!.Up);
- if (!Limit_UpResult.IsSuccess) Console.WriteLine($"{ProRunChannelData.MeterName}:Limit_Up写入失败");
- var Limit_DownResult = SiemensDrive.Write(CurMeterInfo.Limit_DownAddress, (short)ProRunChannelData.CurLoadLimit!.Down);
- if (!Limit_DownResult.IsSuccess) Console.WriteLine($"{ProRunChannelData.MeterName}:Limit_Down写入失败");
+ if (!string.IsNullOrEmpty(CurMeterInfo.Limit_UpAddress))
+ {
+ var Limit_UpResult = SiemensDrive.Write(CurMeterInfo.Limit_UpAddress, (short)ProRunChannelData.CurLoadLimit!.Up);
+ if (!Limit_UpResult.IsSuccess) Console.WriteLine($"{ProRunChannelData.MeterName}:Limit_Up写入失败");
+ var Limit_DownResult = SiemensDrive.Write(CurMeterInfo.Limit_DownAddress, (short)ProRunChannelData.CurLoadLimit!.Down);
+ if (!Limit_DownResult.IsSuccess) Console.WriteLine($"{ProRunChannelData.MeterName}:Limit_Down写入失败");
+ }
+
}
break;
case RunStepType.Pid:
{
var CurMeterInfo = ListPlcLoadConfigCell.FirstOrDefault(a => a.Name!.Contains(ProRunChannelData.MeterName!));
//Pid
- var Pid_PResult = SiemensDrive.Write(CurMeterInfo.Pid_PAddress, (short)ProRunChannelData.CurLoadPID!.P);
- if (!Pid_PResult.IsSuccess) Console.WriteLine($"{ProRunChannelData.MeterName}:PID-P写入失败");
- var Pid_IResult = SiemensDrive.Write(CurMeterInfo.Pid_IAddress, (short)ProRunChannelData.CurLoadPID!.I);
- if (!Pid_IResult.IsSuccess) Console.WriteLine($"{ProRunChannelData.MeterName}:PID-I写入失败");
- var Pid_DResult = SiemensDrive.Write(CurMeterInfo.Pid_DAddress, (short)ProRunChannelData.CurLoadPID!.D);
- if (!Pid_DResult.IsSuccess) Console.WriteLine($"{ProRunChannelData.MeterName}:PID-D写入失败");
+ if (!string.IsNullOrEmpty(CurMeterInfo.Pid_PAddress))
+ {
+ var Pid_PResult = SiemensDrive.Write(CurMeterInfo.Pid_PAddress, (short)ProRunChannelData.CurLoadPID!.P);
+ if (!Pid_PResult.IsSuccess) Console.WriteLine($"{ProRunChannelData.MeterName}:PID-P写入失败");
+ var Pid_IResult = SiemensDrive.Write(CurMeterInfo.Pid_IAddress, (short)ProRunChannelData.CurLoadPID!.I);
+ if (!Pid_IResult.IsSuccess) Console.WriteLine($"{ProRunChannelData.MeterName}:PID-I写入失败");
+ var Pid_DResult = SiemensDrive.Write(CurMeterInfo.Pid_DAddress, (short)ProRunChannelData.CurLoadPID!.D);
+ if (!Pid_DResult.IsSuccess) Console.WriteLine($"{ProRunChannelData.MeterName}:PID-D写入失败");
+ }
+
}
break;
case RunStepType.Limit:
{
var CurMeterInfo = ListPlcLoadConfigCell.FirstOrDefault(a => a.Name!.Contains(ProRunChannelData.MeterName!));
//Limit
- var Limit_UpResult = SiemensDrive.Write(CurMeterInfo.Limit_UpAddress, (short)ProRunChannelData.CurLoadLimit!.Up);
- if (!Limit_UpResult.IsSuccess) Console.WriteLine($"{ProRunChannelData.MeterName}:Limit_Up写入失败");
- var Limit_DownResult = SiemensDrive.Write(CurMeterInfo.Limit_DownAddress, (short)ProRunChannelData.CurLoadLimit!.Down);
- if (!Limit_DownResult.IsSuccess) Console.WriteLine($"{ProRunChannelData.MeterName}:Limit_Down写入失败");
+ if (!string.IsNullOrEmpty(CurMeterInfo.Limit_UpAddress))
+ {
+ var Limit_UpResult = SiemensDrive.Write(CurMeterInfo.Limit_UpAddress, (short)ProRunChannelData.CurLoadLimit!.Up);
+ if (!Limit_UpResult.IsSuccess) Console.WriteLine($"{ProRunChannelData.MeterName}:Limit_Up写入失败");
+ var Limit_DownResult = SiemensDrive.Write(CurMeterInfo.Limit_DownAddress, (short)ProRunChannelData.CurLoadLimit!.Down);
+ if (!Limit_DownResult.IsSuccess) Console.WriteLine($"{ProRunChannelData.MeterName}:Limit_Down写入失败");
+ }
+
}
break;
case RunStepType.SlopCell:
@@ -2990,6 +3034,33 @@ namespace CapMachine.Wpf.Services
break;
}
+ //拓展参数
+ if (ProRunChannelData.ListStepExd != null && ProRunChannelData.ListStepExd.Count() > 0)
+ {
+ foreach (var itemStepExd in ProRunChannelData.ListStepExd)
+ {
+ var DataAdrees = ListPlcExdConfigCell.FirstOrDefault(a => a.Name == itemStepExd.Name);
+ if (DataAdrees != null)
+ {
+ switch (itemStepExd.ValueType)
+ {
+ case ExdValueType.Bool:
+ SiemensDrive.Write(DataAdrees.Address, (bool)itemStepExd.Value == true ? 1 : 0);
+ break;
+ case ExdValueType.Short:
+ SiemensDrive.Write(DataAdrees.Address, (short)itemStepExd.Value);
+ break;
+ case ExdValueType.Double:
+ break;
+ default:
+ break;
+ }
+
+ }
+ }
+ }
+
+
if (ProRunChannelData.RunStepType == RunStepType.SlopCell)
{
//SiemensDrive.Write("D1", (short)ProRunChannelData.SV);
diff --git a/CapMachine.Wpf/Services/ProRuntimeService.cs b/CapMachine.Wpf/Services/ProRuntimeService.cs
index 12a7495..fc72c30 100644
--- a/CapMachine.Wpf/Services/ProRuntimeService.cs
+++ b/CapMachine.Wpf/Services/ProRuntimeService.cs
@@ -38,8 +38,8 @@ namespace CapMachine.Wpf.Services
///
/// 实例化函数
///
- public ProRuntimeService(IFreeSql freeSql, IMapper mapper, IEventAggregator eventAggregator,
- MachineRtDataService machineRtDataService,ConfigService configService, CanDriveService canDriveService, LinDriveService linDriveService,
+ public ProRuntimeService(IFreeSql freeSql, IMapper mapper, IEventAggregator eventAggregator,
+ MachineRtDataService machineRtDataService, ConfigService configService, CanDriveService canDriveService, LinDriveService linDriveService,
ILogService logService)
{
FreeSql = freeSql;
@@ -165,7 +165,7 @@ namespace CapMachine.Wpf.Services
ListPlcLoadConfigCell.Add(new PlcLoadConfigCell()
{
Name = itemKeyValue.Key,
- SvAddress = MachineRtDataService.TagManger.TryGetSVModel(itemKeyValue.Value.Name,out MeterValueAttrCell? controlAttrCell)==true? controlAttrCell!.Address:"",
+ SvAddress = MachineRtDataService.TagManger.TryGetSVModel(itemKeyValue.Value.Name, out MeterValueAttrCell? controlAttrCell) == true ? controlAttrCell!.Address : "",
Limit_UpAddress = MachineRtDataService.TagManger.TryGetLimitUpModel(itemKeyValue.Value.Name, out MeterExdAttrCell? controlAttrCell2) == true ? controlAttrCell2!.Address : "",
Limit_DownAddress = MachineRtDataService.TagManger.TryGetLimitDownModel(itemKeyValue.Value.Name, out MeterExdAttrCell? controlAttrCell3) == true ? controlAttrCell3!.Address : "",
Pid_PAddress = MachineRtDataService.TagManger.TryGetPidPModel(itemKeyValue.Value.Name, out MeterExdAttrCell? controlAttrCell4) == true ? controlAttrCell4!.Address : "",
@@ -359,6 +359,14 @@ namespace CapMachine.Wpf.Services
CurConfigLimitDto = Mapper.Map(Limit),
CurConfigAlarmDto = Mapper.Map(Alarm),
+ ListStepExd = new List()
+ {
+ new StepExd(){ Name="输出锁定",Value=itemMeterValueCell.OutLock,ValueType=ExdValueType.Bool},
+ new StepExd(){ Name="吸排气阀",Value=itemMeterValueCell.InhExhValve,ValueType=ExdValueType.Bool},
+ new StepExd(){ Name="EV",Value=(short)itemMeterValueCell.Ev,ValueType=ExdValueType.Short},
+ new StepExd(){ Name="压缩机使能",Value=itemMeterValueCell.CapEnable,ValueType=ExdValueType.Bool},
+ },
+
ProStepInfo = $"{itemStep.StepNo}-{itemMeterValueCell.StepNo}",
});
@@ -416,6 +424,14 @@ namespace CapMachine.Wpf.Services
CurConfigLimitDto = Mapper.Map(Limit),
CurConfigAlarmDto = Mapper.Map(Alarm),
+ ListStepExd = new List()
+ {
+ new StepExd(){ Name="输出锁定",Value=itemMeterValueCell.OutLock,ValueType=ExdValueType.Bool},
+ new StepExd(){ Name="吸排气阀",Value=itemMeterValueCell.InhExhValve,ValueType=ExdValueType.Bool},
+ new StepExd(){ Name="EV",Value=(short)itemMeterValueCell.Ev,ValueType=ExdValueType.Short},
+ new StepExd(){ Name="压缩机使能",Value=itemMeterValueCell.CapEnable,ValueType=ExdValueType.Bool},
+ },
+
ProStepInfo = $"{itemStep.StepNo}-{itemMeterValueCell.StepNo}",
MeterName = CurMeterName,
});
@@ -3220,7 +3236,7 @@ namespace CapMachine.Wpf.Services
{
Console.WriteLine($"【时间】{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss fff")} 【Msg】:程序运行结束 《《《《-------------------");
//EndProRun();
-
+
EventAggregator.GetEvent().Publish(new ProRunEventMsg() { Machine = "M1", Msg = "执行完毕" });
MachineRunState1.RunStateMsg = "执行完毕";
diff --git a/CapMachine.Wpf/ViewModels/ProConfigViewModel.cs b/CapMachine.Wpf/ViewModels/ProConfigViewModel.cs
index 6b76749..0672408 100644
--- a/CapMachine.Wpf/ViewModels/ProConfigViewModel.cs
+++ b/CapMachine.Wpf/ViewModels/ProConfigViewModel.cs
@@ -2658,6 +2658,7 @@ namespace CapMachine.Wpf.ViewModels
return _SpeedConstSaveCmd;
}
}
+
///
/// 常值保存命令 速度
///
@@ -3250,6 +3251,74 @@ namespace CapMachine.Wpf.ViewModels
}
+ private DelegateCommand _SpeedExdDefaultCmd;
+ ///
+ /// 速度的默认参数 PID LIMIT ALARM NO 配置弹窗
+ ///
+ public DelegateCommand SpeedExdDefaultCmd
+ {
+ set
+ {
+ _SpeedExdDefaultCmd = value;
+ }
+ get
+ {
+ if (_SpeedExdDefaultCmd == null)
+ {
+ _SpeedExdDefaultCmd = new DelegateCommand((str) => SpeedExdDefaultCmdMethod(str));
+ }
+ return _SpeedExdDefaultCmd;
+ }
+ }
+ ///
+ /// 速度的默认参数 PID LIMIT ALARM NO 配置弹窗
+ ///
+ ///
+ ///
+ private void SpeedExdDefaultCmdMethod(string Par)
+ {
+ switch (Par)
+ {
+ case "PID":
+ //弹窗
+ DialogService.ShowDialog("DialogPIDConfigView", new DialogParameters() { { "Name", "转速" } }, (par) =>
+ {
+ if (par.Result == ButtonResult.OK)
+ {
+ //程序名称
+ var ReturnValue = par.Parameters.GetValue("Name");
+
+ }
+ else if (par.Result == ButtonResult.Cancel)
+ {
+ //取消
+
+ }
+ });
+ break;
+ case "Limit":
+ //弹窗
+ DialogService.ShowDialog("DialogLimitConfigView", new DialogParameters() { { "Name", "转速" } }, (par) =>
+ {
+ if (par.Result == ButtonResult.OK)
+ {
+ //程序名称
+ var ReturnValue = par.Parameters.GetValue("Name");
+
+ }
+ else if (par.Result == ButtonResult.Cancel)
+ {
+ //取消
+
+ }
+
+ });
+ break;
+ default:
+ break;
+ }
+ }
+
#endregion
///
diff --git a/CapMachine.Wpf/Views/ProConfigView.xaml b/CapMachine.Wpf/Views/ProConfigView.xaml
index 0462907..c9f5c34 100644
--- a/CapMachine.Wpf/Views/ProConfigView.xaml
+++ b/CapMachine.Wpf/Views/ProConfigView.xaml
@@ -935,7 +935,7 @@
Margin="3,0"
FontSize="20"
Foreground="White"
- Text="速度设置" />
+ Text="转速设置" />
@@ -965,7 +965,10 @@
-
+
+
+
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+