MachineRunState1移动到ProRuntimeService

This commit is contained in:
2025-03-06 12:05:41 +08:00
parent d2d39acdec
commit be7ef37b08
10 changed files with 77 additions and 53 deletions

View File

@@ -41,7 +41,7 @@ namespace CapMachine.Wpf.ChannelModel
/// <summary>
/// 值
/// </summary>
public int? SV { get; set; }
public int SV { get; set; }
/// <summary>
/// PID的配置信息

View File

@@ -1372,27 +1372,7 @@ namespace CapMachine.Wpf.Services
TagManger.GetTagByName<short>(itemTag.Value.Name)!.EngSvValue = OperateResultSVShort.Content * 1.0 / TagManger.GetTagByName<short>(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<short>(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
}
}
/// <summary>
/// 发送速度SV到压缩机
/// </summary>
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
}
}

View File

@@ -38,17 +38,20 @@ namespace CapMachine.Wpf.Services
/// <summary>
/// 实例化函数
/// </summary>
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<ProExModel>();
#region
@@ -152,9 +155,6 @@ namespace CapMachine.Wpf.Services
#endregion
//从变量集合中加载PLC转制的配置数据
ListPlcLoadConfigCell = new List<PlcLoadConfigCell>();
foreach (var itemKeyValue in MachineRtDataService.TagManger.DicTags)
@@ -191,10 +191,11 @@ namespace CapMachine.Wpf.Services
//反写给MachineRtDataServiceMachineRtDataService也要写到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; }
/// <summary>
@@ -232,6 +235,12 @@ namespace CapMachine.Wpf.Services
/// </summary>
public List<PlcLoadConfigCell> ListPlcLoadConfigCell { get; set; }
/// <summary>
/// 设备运行状态
/// </summary>
public MachineRunState MachineRunState1 { get; set; }
/// <summary>
/// 加载选中的程序运行集合
/// 目前步骤设置常值是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<ProRunEvent>().Publish(new ProRunEventMsg() { Machine = "M1", Msg = "执行完毕" });
MachineRunState1.RunStateMsg = "执行完毕";
}
/// <summary>

View File

@@ -10,7 +10,7 @@ using System.Threading.Tasks;
namespace CapMachine.Wpf.Services
{
/// <summary>
/// 系统
/// 系统运行服务
/// </summary>
public class SysRunService : BindableBase
{
@@ -28,16 +28,9 @@ namespace CapMachine.Wpf.Services
ConfigService = configService;
CanDriveService = canDriveService;
LinDriveService = linDriveService;
MachineRunState1 = new MachineRunState("M1", EventAggregator, ConfigService,canDriveService,linDriveService);
}
/// <summary>
/// 设备运行状态
/// </summary>
public MachineRunState MachineRunState1 { get; set; }
private void CurTimer_Elapsed(object? sender, System.Timers.ElapsedEventArgs e)
{
CurDateTime = DateTime.Now;

View File

@@ -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; }
}

View File

@@ -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();

View File

@@ -2374,7 +2374,7 @@ namespace CapMachine.Wpf.ViewModels
//ProParsSongZhiHelper.LoadDataToPLC(MachineRtDataService.SiemensDrive, ReturnPlcParsData);
//下载完成的话,则标记状态
SysRunService.MachineRunState1.IsProLoad = true;
ProRuntimeService.MachineRunState1.IsProLoad = true;
}
}

View File

@@ -21,13 +21,14 @@ namespace CapMachine.Wpf.ViewModels
/// 实例化函数
/// </summary>
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; }
/// <summary>
/// 弹窗服务
@@ -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
{

View File

@@ -69,7 +69,7 @@
Margin="5,0"
FontSize="16"
Foreground="White"
Text="{Binding SysRunService.MachineRunState1.RunStateMsg}" />
Text="{Binding ProRuntimeService.MachineRunState1.RunStateMsg}" />
</StackPanel>
</Border>

View File

@@ -532,7 +532,7 @@
FontSize="30"
FontWeight="Bold"
Foreground="LimeGreen"
Text="{Binding SysRunServer.MachineRunState1.RunStateMsg}" />
Text="{Binding ProRuntimeService.MachineRunState1.RunStateMsg}" />
</StackPanel>
</materialDesign:Card>