diff --git a/CapMachine.Wpf/ChannelModel/ProRunChannelData.cs b/CapMachine.Wpf/ChannelModel/ProRunChannelData.cs
index 4b358e1..555df7c 100644
--- a/CapMachine.Wpf/ChannelModel/ProRunChannelData.cs
+++ b/CapMachine.Wpf/ChannelModel/ProRunChannelData.cs
@@ -41,7 +41,7 @@ namespace CapMachine.Wpf.ChannelModel
///
/// 值
///
- public int? SV { get; set; }
+ public int SV { get; set; }
///
/// PID的配置信息
diff --git a/CapMachine.Wpf/Services/MachineRtDataService.cs b/CapMachine.Wpf/Services/MachineRtDataService.cs
index 0dcca6c..d160f9c 100644
--- a/CapMachine.Wpf/Services/MachineRtDataService.cs
+++ b/CapMachine.Wpf/Services/MachineRtDataService.cs
@@ -1372,27 +1372,7 @@ namespace CapMachine.Wpf.Services
TagManger.GetTagByName(itemTag.Value.Name)!.EngSvValue = OperateResultSVShort.Content * 1.0 / TagManger.GetTagByName(itemTag.Value.Name)!.Precision;
LinkState = true;
- //在运行时,更新速度的SV的值
- if (itemTag.Value.Name == "转速[rpm]" && SysRunService.MachineRunState1.RunStateMsg == "运行")
- {
- switch (ConfigService.CanLinRunStateModel.CurSysSelectedCanLin)
- {
- case CanLinEnum.Can:
- //获取PLC的SV数据 更新SV的速度值到压缩机
- CanDriveService.UpdateSpeedCmdData(itemTag!.Value.EngSvValue);
- //itemTag.Value.EngPvValue = 0;
- break;
- case CanLinEnum.Lin:
- //获取PLC的SV数据 更新SV的速度值到压缩机
- LinDriveService.UpdateSpeedCmdData(itemTag!.Value.EngSvValue);
- //itemTag.Value.EngPvValue = 0;
- break;
- default:
- break;
- }
- ////更新SV的速度值
- //CanDriveService.UpdateSpeedCmdData(TagManger.GetTagByName(itemTag.Value.Name)!.EngSvValue);
- }
+
}
else
{
@@ -1614,6 +1594,9 @@ namespace CapMachine.Wpf.Services
//Sv
var SvResult = SiemensDrive.Write(CurMeterInfo!.SvAddress, (short)ProRunChannelData.SV!);
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写入失败");
@@ -1634,6 +1617,8 @@ namespace CapMachine.Wpf.Services
//Sv
var SvResult = SiemensDrive.Write(CurMeterInfo!.SvAddress, (short)ProRunChannelData.SV!);
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写入失败");
@@ -1649,6 +1634,9 @@ namespace CapMachine.Wpf.Services
//Sv
var SvResult = SiemensDrive.Write(CurMeterInfo!.SvAddress, (short)ProRunChannelData.SV!);
if (!SvResult.IsSuccess) Console.WriteLine($"{ProRunChannelData.MeterName}:SV写入失败");
+ //速度SV到压缩机
+ 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写入失败");
@@ -1662,6 +1650,9 @@ namespace CapMachine.Wpf.Services
//Sv
var SvResult = SiemensDrive.Write(CurMeterInfo!.SvAddress, (short)ProRunChannelData.SV!);
if (!SvResult.IsSuccess) Console.WriteLine($"{ProRunChannelData.MeterName}:SV写入失败");
+ //速度SV到压缩机
+ SendSpeedSvToCap(ProRunChannelData.SV);
+
}
break;
case RunStepType.LimitPid:
@@ -1709,6 +1700,9 @@ namespace CapMachine.Wpf.Services
//Sv
var SvResult = SiemensDrive.Write(CurMeterInfo!.SvAddress, (short)ProRunChannelData.SV!);
if (!SvResult.IsSuccess) Console.WriteLine($"{ProRunChannelData.MeterName}:SV写入失败");
+ //速度SV到压缩机
+ SendSpeedSvToCap(ProRunChannelData.SV);
+
}
break;
default:
@@ -1746,6 +1740,28 @@ namespace CapMachine.Wpf.Services
}
}
+ ///
+ /// 发送速度SV到压缩机
+ ///
+ private void SendSpeedSvToCap(int SpeedSv)
+ {
+ switch (ConfigService.CanLinRunStateModel.CurSysSelectedCanLin)
+ {
+ case CanLinEnum.Can:
+ //获取PLC的SV数据 更新SV的速度值到压缩机
+ CanDriveService.UpdateSpeedCmdData(SpeedSv);
+ //itemTag.Value.EngPvValue = 0;
+ break;
+ case CanLinEnum.Lin:
+ //获取PLC的SV数据 更新SV的速度值到压缩机
+ LinDriveService.UpdateSpeedCmdData(SpeedSv);
+ //itemTag.Value.EngPvValue = 0;
+ break;
+ default:
+ break;
+ }
+ }
+
#endregion
}
}
diff --git a/CapMachine.Wpf/Services/ProRuntimeService.cs b/CapMachine.Wpf/Services/ProRuntimeService.cs
index ba597ba..f195d22 100644
--- a/CapMachine.Wpf/Services/ProRuntimeService.cs
+++ b/CapMachine.Wpf/Services/ProRuntimeService.cs
@@ -38,17 +38,20 @@ namespace CapMachine.Wpf.Services
///
/// 实例化函数
///
- public ProRuntimeService(IFreeSql freeSql, IMapper mapper, IEventAggregator eventAggregator, MachineRtDataService machineRtDataService, ILogService logService)
+ public ProRuntimeService(IFreeSql freeSql, IMapper mapper, IEventAggregator eventAggregator,
+ MachineRtDataService machineRtDataService,ConfigService configService, CanDriveService canDriveService, LinDriveService linDriveService,
+ ILogService logService)
{
FreeSql = freeSql;
Mapper = mapper;
EventAggregator = eventAggregator;
MachineRtDataService = machineRtDataService;
-
+ ConfigService = configService;
+ CanDriveService = canDriveService;
+ LinDriveService = linDriveService;
ProRunChannel = MachineRtDataService.ProRunChannel;
LogService = logService;
-
//实例化函数
ListProExModel = new List();
#region 初始化程序执行模型
@@ -152,9 +155,6 @@ namespace CapMachine.Wpf.Services
#endregion
-
-
-
//从变量集合中加载PLC转制的配置数据
ListPlcLoadConfigCell = new List();
foreach (var itemKeyValue in MachineRtDataService.TagManger.DicTags)
@@ -191,10 +191,11 @@ namespace CapMachine.Wpf.Services
//反写给MachineRtDataService,MachineRtDataService也要写到PLC中
MachineRtDataService.ListPlcLoadConfigCell = ListPlcLoadConfigCell;
-
//驱动实例
SiemensDrive = MachineRtDataService.SiemensDrive;
+ MachineRunState1 = new MachineRunState("M1", EventAggregator, ConfigService, canDriveService, linDriveService);
+
//程序运行实时管道数据监听
//Task.Run(() => ListenProRunChannelAction());
@@ -209,7 +210,9 @@ namespace CapMachine.Wpf.Services
public IMapper Mapper { get; }
public IEventAggregator EventAggregator { get; }
public MachineRtDataService MachineRtDataService { get; }
-
+ public ConfigService ConfigService { get; }
+ public CanDriveService CanDriveService { get; }
+ public LinDriveService LinDriveService { get; }
public ILogService LogService { get; }
///
@@ -232,6 +235,12 @@ namespace CapMachine.Wpf.Services
///
public List ListPlcLoadConfigCell { get; set; }
+ ///
+ /// 设备运行状态
+ ///
+ public MachineRunState MachineRunState1 { get; set; }
+
+
///
/// 加载选中的程序运行集合
/// 目前步骤设置常值,是OK的,但是在斜坡多步骤里面也可以设置 50-50 10秒的常值设置,那么在打点时,上面的两个常值都能识别
@@ -3212,9 +3221,11 @@ namespace CapMachine.Wpf.Services
private void ProRuntimeService_SpeedRunEndEvent(object? sender, string e)
{
Console.WriteLine($"【时间】{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss fff")} 【Msg】:程序运行结束 《《《《-------------------");
- EndProRun();
-
+ //EndProRun();
+
EventAggregator.GetEvent().Publish(new ProRunEventMsg() { Machine = "M1", Msg = "执行完毕" });
+
+ MachineRunState1.RunStateMsg = "执行完毕";
}
///
diff --git a/CapMachine.Wpf/Services/SysRunService.cs b/CapMachine.Wpf/Services/SysRunService.cs
index 5b842a4..677d957 100644
--- a/CapMachine.Wpf/Services/SysRunService.cs
+++ b/CapMachine.Wpf/Services/SysRunService.cs
@@ -10,11 +10,11 @@ using System.Threading.Tasks;
namespace CapMachine.Wpf.Services
{
///
- /// 系统
+ /// 系统运行服务
///
public class SysRunService : BindableBase
{
- public SysRunService(IEventAggregator eventAggregator,ConfigService configService,CanDriveService canDriveService,LinDriveService linDriveService)
+ public SysRunService(IEventAggregator eventAggregator, ConfigService configService, CanDriveService canDriveService, LinDriveService linDriveService)
{
// 创建一个定时器,设置间隔时间为2000毫秒(即2秒)
CurTimer = new System.Timers.Timer(5000);
@@ -28,16 +28,9 @@ namespace CapMachine.Wpf.Services
ConfigService = configService;
CanDriveService = canDriveService;
LinDriveService = linDriveService;
- MachineRunState1 = new MachineRunState("M1", EventAggregator, ConfigService,canDriveService,linDriveService);
}
- ///
- /// 设备运行状态
- ///
- public MachineRunState MachineRunState1 { get; set; }
-
-
private void CurTimer_Elapsed(object? sender, System.Timers.ElapsedEventArgs e)
{
CurDateTime = DateTime.Now;
diff --git a/CapMachine.Wpf/ViewModels/FooterViewModel.cs b/CapMachine.Wpf/ViewModels/FooterViewModel.cs
index 3e065bb..3461761 100644
--- a/CapMachine.Wpf/ViewModels/FooterViewModel.cs
+++ b/CapMachine.Wpf/ViewModels/FooterViewModel.cs
@@ -10,16 +10,18 @@ namespace CapMachine.Wpf.ViewModels
{
public class FooterViewModel : NavigationViewModel
{
- public FooterViewModel(DataRecordService dataRecordService,ConfigService configService,MachineRtDataService machineRtDataService,SysRunService sysService)
+ public FooterViewModel(DataRecordService dataRecordService,ConfigService configService,ProRuntimeService proRuntimeService, MachineRtDataService machineRtDataService,SysRunService sysService)
{
DataRecordService = dataRecordService;
ConfigService = configService;
+ ProRuntimeService = proRuntimeService;
MachineRtDataService = machineRtDataService;
SysRunService = sysService;
}
public DataRecordService DataRecordService { get; }
public ConfigService ConfigService { get; }
+ public ProRuntimeService ProRuntimeService { get; }
public MachineRtDataService MachineRtDataService { get; }
public SysRunService SysRunService { get; }
}
diff --git a/CapMachine.Wpf/ViewModels/MonitorViewModel.cs b/CapMachine.Wpf/ViewModels/MonitorViewModel.cs
index f5b9ee2..d8ec9ab 100644
--- a/CapMachine.Wpf/ViewModels/MonitorViewModel.cs
+++ b/CapMachine.Wpf/ViewModels/MonitorViewModel.cs
@@ -233,7 +233,7 @@ namespace CapMachine.Wpf.ViewModels
{
case "开始":
//状态机运行 用状态机的状态判断逻辑
- if (this.SysRunServer.MachineRunState1.FireStart())
+ if (this.ProRuntimeService.MachineRunState1.FireStart())
{
//程序步骤执行开始运行
ProRuntimeService.StartProRun();
@@ -247,7 +247,7 @@ namespace CapMachine.Wpf.ViewModels
break;
case "结束":
//状态机结束 用状态机的状态判断逻辑
- if (this.SysRunServer.MachineRunState1.FireEnd())
+ if (this.ProRuntimeService.MachineRunState1.FireEnd())
{
//程序步骤执行结束运行
ProRuntimeService.EndProRun();
@@ -277,7 +277,7 @@ namespace CapMachine.Wpf.ViewModels
break;
case "复位":
//状态机 复位 用状态机的状态判断逻辑
- if (this.SysRunServer.MachineRunState1.FireReset())
+ if (this.ProRuntimeService.MachineRunState1.FireReset())
{
//程序步骤执行结束运行
ProRuntimeService.EndProRun();
@@ -315,7 +315,7 @@ namespace CapMachine.Wpf.ViewModels
case "暂停":
//状态机 暂停 用状态机的状态判断逻辑
- if (this.SysRunServer.MachineRunState1.FirePause())
+ if (this.ProRuntimeService.MachineRunState1.FirePause())
{
//程序步骤执行暂停运行
ProRuntimeService.PauseProRun();
@@ -327,7 +327,7 @@ namespace CapMachine.Wpf.ViewModels
break;
case "继续":
//状态机 继续 用状态机的状态判断逻辑
- if (this.SysRunServer.MachineRunState1.FireContinue())
+ if (this.ProRuntimeService.MachineRunState1.FireContinue())
{
//程序步骤执行继续运行
ProRuntimeService.ContinueProRun();
diff --git a/CapMachine.Wpf/ViewModels/ProConfigViewModel.cs b/CapMachine.Wpf/ViewModels/ProConfigViewModel.cs
index fbc1d43..4680a32 100644
--- a/CapMachine.Wpf/ViewModels/ProConfigViewModel.cs
+++ b/CapMachine.Wpf/ViewModels/ProConfigViewModel.cs
@@ -2374,7 +2374,7 @@ namespace CapMachine.Wpf.ViewModels
//ProParsSongZhiHelper.LoadDataToPLC(MachineRtDataService.SiemensDrive, ReturnPlcParsData);
//下载完成的话,则标记状态
- SysRunService.MachineRunState1.IsProLoad = true;
+ ProRuntimeService.MachineRunState1.IsProLoad = true;
}
}
diff --git a/CapMachine.Wpf/ViewModels/QuickMeterStepViewModel.cs b/CapMachine.Wpf/ViewModels/QuickMeterStepViewModel.cs
index 9a59dbf..65c6575 100644
--- a/CapMachine.Wpf/ViewModels/QuickMeterStepViewModel.cs
+++ b/CapMachine.Wpf/ViewModels/QuickMeterStepViewModel.cs
@@ -21,13 +21,14 @@ namespace CapMachine.Wpf.ViewModels
/// 实例化函数
///
public QuickMeterStepViewModel(IDialogService dialogService, IFreeSql freeSql, IEventAggregator eventAggregator,
- IRegionManager regionManager, MachineRtDataService machineRtDataService, SysRunService sysRunService)
+ IRegionManager regionManager, MachineRtDataService machineRtDataService, SysRunService sysRunService,ProRuntimeService proRuntimeService)
{
FreeSql = freeSql;
EventAggregator = eventAggregator;
RegionManager = regionManager;
this.MachineRtDataService = machineRtDataService;
SysRunService = sysRunService;
+ ProRuntimeService = proRuntimeService;
//MachineDataService = machineDataService;
DialogService = dialogService;
@@ -77,6 +78,7 @@ namespace CapMachine.Wpf.ViewModels
public IRegionManager RegionManager { get; }
public MachineRtDataService MachineRtDataService { get; }
public SysRunService SysRunService { get; }
+ public ProRuntimeService ProRuntimeService { get; }
///
/// 弹窗服务
@@ -321,14 +323,14 @@ namespace CapMachine.Wpf.ViewModels
if (MachineRtDataService.LinkState==false)
{
MessageBox.Show("当前PLC链接失败,无法下载程序,但会标记下载!", "提示", MessageBoxButton.OKCancel, MessageBoxImage.Hand);
- SysRunService.MachineRunState1.IsProLoad = true;
+ ProRuntimeService.MachineRunState1.IsProLoad = true;
return;
}
ProParsHelperQuick.GetPlcParsData(ListQuickMeterStepDto.ToList(), this.MachineRtDataService.SiemensDrive);
//下载完成的话,则标记状态
- SysRunService.MachineRunState1.IsProLoad = true;
+ ProRuntimeService.MachineRunState1.IsProLoad = true;
}
else
{
diff --git a/CapMachine.Wpf/Views/FooterView.xaml b/CapMachine.Wpf/Views/FooterView.xaml
index c00708f..acb26f1 100644
--- a/CapMachine.Wpf/Views/FooterView.xaml
+++ b/CapMachine.Wpf/Views/FooterView.xaml
@@ -69,7 +69,7 @@
Margin="5,0"
FontSize="16"
Foreground="White"
- Text="{Binding SysRunService.MachineRunState1.RunStateMsg}" />
+ Text="{Binding ProRuntimeService.MachineRunState1.RunStateMsg}" />
diff --git a/CapMachine.Wpf/Views/MonitorView.xaml b/CapMachine.Wpf/Views/MonitorView.xaml
index 8d9ff9c..facf221 100644
--- a/CapMachine.Wpf/Views/MonitorView.xaml
+++ b/CapMachine.Wpf/Views/MonitorView.xaml
@@ -532,7 +532,7 @@
FontSize="30"
FontWeight="Bold"
Foreground="LimeGreen"
- Text="{Binding SysRunServer.MachineRunState1.RunStateMsg}" />
+ Text="{Binding ProRuntimeService.MachineRunState1.RunStateMsg}" />