diff --git a/CapMachine.Wpf/App.xaml.cs b/CapMachine.Wpf/App.xaml.cs index 97142b0..ffc484d 100644 --- a/CapMachine.Wpf/App.xaml.cs +++ b/CapMachine.Wpf/App.xaml.cs @@ -96,7 +96,7 @@ namespace CapMachine.Wpf var IsOK = SoftAuthorizeHelper.CheckLience(MachineCode, PublicKey, Lience); if (!IsOK) { - LogService.Error("授权失败"); + LogService.Info("授权失败"); //this.Shutdown(); } } @@ -130,7 +130,7 @@ namespace CapMachine.Wpf //containerRegistry.RegisterSingleton(); containerRegistry.RegisterSingleton(); containerRegistry.RegisterSingleton(); - + containerRegistry.RegisterSingleton(); containerRegistry.RegisterSingleton(); containerRegistry.RegisterSingleton(); @@ -289,7 +289,7 @@ namespace CapMachine.Wpf //给当前的全局异常捕捉服务使用 LogService = ContainerLocator.Container.Resolve(); - LogService.Error("Start-->OnInitialized"); + LogService.Info("程序启动"); base.OnInitialized(); //#endregion @@ -317,7 +317,7 @@ namespace CapMachine.Wpf void App_Exit(object sender, ExitEventArgs e) { //程序退出时需要处理的业务 - LogService.Error("程序退出"); + LogService.Info("App-程序退出"); } @@ -332,12 +332,14 @@ namespace CapMachine.Wpf try { HandleException(e.Exception); - MessageBox.Show("UI线程异常:" + e.Exception.Message); + //MessageBox.Show("UI线程异常:" + e.Exception.Message); + LogService.Error("UI线程异常:" + e.Exception.Message); } catch (Exception ex) { HandleException(ex); - MessageBox.Show("UI线程发生致命错误!"); + //MessageBox.Show("UI线程发生致命错误!"); + LogService.Error("UI线程发生致命错误!"); } finally { @@ -374,8 +376,8 @@ namespace CapMachine.Wpf { sbEx.Append(e.ExceptionObject); } - MessageBox.Show(sbEx.ToString()); - + //MessageBox.Show(sbEx.ToString()); + LogService.Error(sbEx.ToString()); } } catch (Exception ex) @@ -402,7 +404,8 @@ namespace CapMachine.Wpf { HandleException(exception); //task线程内未处理捕获 - MessageBox.Show("Task线程异常:" + e.Exception.Message); + //MessageBox.Show("Task线程异常:" + e.Exception.Message); + LogService.Error($"Task线程异常"); } } catch (Exception ex) @@ -423,7 +426,7 @@ namespace CapMachine.Wpf private void HandleException(Exception ex) { //记录日志 - LogService.Error(ex.ToString()); + LogService.Error($"App捕捉HandleException-{ex.ToString()}"); } diff --git a/CapMachine.Wpf/CanDrive/CanFD/ToomossCanFD.cs b/CapMachine.Wpf/CanDrive/CanFD/ToomossCanFD.cs index c8e1762..edb98b5 100644 --- a/CapMachine.Wpf/CanDrive/CanFD/ToomossCanFD.cs +++ b/CapMachine.Wpf/CanDrive/CanFD/ToomossCanFD.cs @@ -32,7 +32,7 @@ namespace CapMachine.Wpf.CanDrive { ContainerProvider = containerProvider; HighSpeedDataService = ContainerProvider.Resolve(); - + LogService = ContainerProvider.Resolve(); //Stopwatch.Frequency表示高精度计时器每秒的计数次数(ticks/秒)每毫秒的ticks数 = 每秒的ticks数 ÷ 1000 TicksPerMs = Stopwatch.Frequency / 1000.0; } @@ -42,18 +42,27 @@ namespace CapMachine.Wpf.CanDrive /// public HighSpeedDataService HighSpeedDataService { get; set; } + public ILogService LogService { get; set; } + /// /// 开始CAN的驱动 /// public void StartCanDrive() { - IsExistsDllFile(); - ScanDevice(); - OpenDevice(); - GetDeviceInfo(); - GetCANConfig(); - InitCAN(); - + try + { + IsExistsDllFile(); + ScanDevice(); + OpenDevice(); + GetDeviceInfo(); + GetCANConfig(); + InitCAN(); + } + catch (Exception ex) + { + LogService.Error(ex.Message); + System.Windows.MessageBox.Show($"{ex.Message}", "提示", System.Windows.MessageBoxButton.OK, System.Windows.MessageBoxImage.Hand); + } } /// @@ -473,8 +482,6 @@ namespace CapMachine.Wpf.CanDrive private static readonly Random _random = new Random(); - - /// /// 精确周期发送CAN数据 /// @@ -608,6 +615,7 @@ namespace CapMachine.Wpf.CanDrive } catch (Exception ex) { + LogService.Error(ex.Message); Console.WriteLine($"CAN周期发送异常: {ex.Message}"); // 短暂暂停避免异常情况下CPU占用过高 await Task.Delay(10, token); @@ -618,7 +626,7 @@ namespace CapMachine.Wpf.CanDrive { // 确保在任何情况下(正常退出、异常、取消)都会停止计时器 Stopwatcher.Stop(); - + LogService.Error(ex.Message); // 清理其他可能的资源 Console.WriteLine("CAN周期发送任务已结束,资源已清理"); } @@ -818,6 +826,7 @@ namespace CapMachine.Wpf.CanDrive } catch (Exception ex) { + LogService.Error(ex.Message); //LogService.Info($"时间:{DateTime.Now.ToString()}-【Meter】-{ex.Message}"); } } diff --git a/CapMachine.Wpf/Models/CanLinRunStateModel.cs b/CapMachine.Wpf/Models/CanLinRunStateModel.cs index 2241dcf..12d618e 100644 --- a/CapMachine.Wpf/Models/CanLinRunStateModel.cs +++ b/CapMachine.Wpf/Models/CanLinRunStateModel.cs @@ -33,6 +33,10 @@ namespace CapMachine.Wpf.Models SelectedCanLinMsg = "CAN"; CanLinRunState=true; break; + case CanLinEnum.CANFD: + SelectedCanLinMsg = "CANFD"; + CanLinRunState = true; + break; case CanLinEnum.Lin: SelectedCanLinMsg = "LIN"; CanLinRunState = true; diff --git a/CapMachine.Wpf/Models/SysErrState.cs b/CapMachine.Wpf/Models/SysErrState.cs new file mode 100644 index 0000000..44933b2 --- /dev/null +++ b/CapMachine.Wpf/Models/SysErrState.cs @@ -0,0 +1,69 @@ +using Microsoft.VisualBasic; +using Prism.Mvvm; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace CapMachine.Wpf.Models +{ + /// + /// 系统错误状态 + /// + public class SysErrState : BindableBase + { + + private string? _ErrTime= "无错误"; + /// + /// 错误时间 + /// + public string? ErrTime + { + get { return _ErrTime; } + set { _ErrTime = value; RaisePropertyChanged(); } + } + + private string? _ErrMsg; + /// + /// 错误消息 + /// + public string? ErrMsg + { + get { return _ErrMsg; } + set { _ErrMsg = value; RaisePropertyChanged(); } + } + + private bool _ErrState=false; + /// + /// 错误状态 + /// + public bool ErrState + { + get { return _ErrState; } + set { _ErrState = value; RaisePropertyChanged(); } + } + + /// + /// 激活错误状态 + /// + public void ActiveErr(string Msg) + { + ErrState=true; + ErrTime =DateTime.Now.ToString("MM-dd HH:mm:ss"); + ErrMsg = "见日志"; + } + + /// + /// 清空错误状态 + /// + public void ClearErr() + { + ErrState = false; + ErrTime = "无错误"; + ErrMsg = ""; + } + + + } +} diff --git a/CapMachine.Wpf/PrismEvent/ErrStateEvent.cs b/CapMachine.Wpf/PrismEvent/ErrStateEvent.cs new file mode 100644 index 0000000..47be4c0 --- /dev/null +++ b/CapMachine.Wpf/PrismEvent/ErrStateEvent.cs @@ -0,0 +1,17 @@ +using Prism.Events; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace CapMachine.Wpf.PrismEvent +{ + /// + /// 错误状态事件 + /// + public class ErrStateEvent : PubSubEvent + { + + } +} diff --git a/CapMachine.Wpf/PrismEvent/ErrStateMsg.cs b/CapMachine.Wpf/PrismEvent/ErrStateMsg.cs new file mode 100644 index 0000000..6966240 --- /dev/null +++ b/CapMachine.Wpf/PrismEvent/ErrStateMsg.cs @@ -0,0 +1,19 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace CapMachine.Wpf.PrismEvent +{ + /// + /// 错误状态消息 + /// + public class ErrStateMsg + { + /// + /// 错误消息内容 + /// + public string? ErrMsg { get; set; } + } +} diff --git a/CapMachine.Wpf/Services/DataRecordService.cs b/CapMachine.Wpf/Services/DataRecordService.cs index bd20512..6cc31ad 100644 --- a/CapMachine.Wpf/Services/DataRecordService.cs +++ b/CapMachine.Wpf/Services/DataRecordService.cs @@ -311,69 +311,77 @@ namespace CapMachine.Wpf.Services { if (RecoredChannelInfo.Reader.TryRead(out var recordChannelData)) { - ////第一次计时 - //stopwatch.Start(); //启动Stopwatch - - //新增数据 - CacheRecordData.Add(recordChannelData); - MaxCacheCellCount++; - - //先判断缓存的单元大小,防止每次都检查删除,数据达到时间范围外的话,则删除,即是600次后进行一次判断删除 - if (MaxCacheCellCount >= 600) + try { - //不在缓存的时间范围内的话,则删除数据 - if (CacheRecordData.Where(a => a.CreateTime <= DateTime.Now.AddSeconds(-ConfigService.ChartRtDataCacheTimeSec)).Any()) + ////第一次计时 + //stopwatch.Start(); //启动Stopwatch + + //新增数据 + CacheRecordData.Add(recordChannelData); + MaxCacheCellCount++; + + //先判断缓存的单元大小,防止每次都检查删除,数据达到时间范围外的话,则删除,即是600次后进行一次判断删除 + if (MaxCacheCellCount >= 600) { - CacheRecordData.RemoveAll(a => a.CreateTime <= DateTime.Now.AddSeconds(-ConfigService.ChartRtDataCacheTimeSec)); + //不在缓存的时间范围内的话,则删除数据 + if (CacheRecordData.Where(a => a.CreateTime <= DateTime.Now.AddSeconds(-ConfigService.ChartRtDataCacheTimeSec)).Any()) + { + CacheRecordData.RemoveAll(a => a.CreateTime <= DateTime.Now.AddSeconds(-ConfigService.ChartRtDataCacheTimeSec)); + } + MaxCacheCellCount = 0; } - MaxCacheCellCount = 0; + + //ConcurrentQueueData. + + //Prism发布数据 + _EventAggregator.GetEvent().Publish(recordChannelData.DeepClone()); + + //判断集合的数据是否达到要求 + //if (CacheRecordData.Count >= MaxCacheCount) + //{ + //CacheRecordData可能存在多个表格数据,依据表名进行分类 + + //考虑多个表结构 + //var GroupTableData = CacheRecordData.GroupBy(a => a.TableName).ToList(); + + //foreach (var ItemData in GroupTableData) + //{ + //表名称 + //var TableName = ItemData.Key; + //当前表格的数据 + //var Datas = ItemData.Select(item => item.Data).ToList(); + + //var Datas = recordChannelData.Select(item => item.Data).ToList(); + + //List models = Datas.Select(dict => ConvertToCsvRecordModel(dict)).ToList(); + + //转换到CSV的数据 + var models = ConvertToCsvRecordModel(recordChannelData.Data); + //填充工况名称 + models.WorkCond = ConfigService.CurExpInfo.Name; + + //数据库保存 + //zeroDbContext.Insert(Datas); + + //CSV文件保存 + SaveToCsv(new List() { models }); + //} + + //CacheRecordData.Clear(); + + //Console.WriteLine($"{DateTime.Now.ToString("HH:mm:ss:fff")}-{LineName}-保存成功!"); + //} + + + //stopwatch.Stop(); //停止Stopwatch + //Console.WriteLine("保存数据耗时::{0}", stopwatch.Elapsed.TotalSeconds.ToString()); + //stopwatch.Reset(); + } + catch (Exception ex) + { + LogService.Error(ex.Message); } - //ConcurrentQueueData. - - //Prism发布数据 - _EventAggregator.GetEvent().Publish(recordChannelData.DeepClone()); - - //判断集合的数据是否达到要求 - //if (CacheRecordData.Count >= MaxCacheCount) - //{ - //CacheRecordData可能存在多个表格数据,依据表名进行分类 - - //考虑多个表结构 - //var GroupTableData = CacheRecordData.GroupBy(a => a.TableName).ToList(); - - //foreach (var ItemData in GroupTableData) - //{ - //表名称 - //var TableName = ItemData.Key; - //当前表格的数据 - //var Datas = ItemData.Select(item => item.Data).ToList(); - - //var Datas = recordChannelData.Select(item => item.Data).ToList(); - - //List models = Datas.Select(dict => ConvertToCsvRecordModel(dict)).ToList(); - - //转换到CSV的数据 - var models = ConvertToCsvRecordModel(recordChannelData.Data); - //填充工况名称 - models.WorkCond = ConfigService.CurExpInfo.Name; - - //数据库保存 - //zeroDbContext.Insert(Datas); - - //CSV文件保存 - SaveToCsv(new List() { models }); - //} - - //CacheRecordData.Clear(); - - //Console.WriteLine($"{DateTime.Now.ToString("HH:mm:ss:fff")}-{LineName}-保存成功!"); - //} - - - //stopwatch.Stop(); //停止Stopwatch - //Console.WriteLine("保存数据耗时::{0}", stopwatch.Elapsed.TotalSeconds.ToString()); - //stopwatch.Reset(); } } } @@ -400,9 +408,9 @@ namespace CapMachine.Wpf.Services //增加日期和时间两个列 model.WorkDay = model.CreateTime.ToString("yyyy-MM-dd"); model.Time = model.CreateTime.ToString("HH:mm:ss"); - - + + return model; } @@ -452,7 +460,7 @@ namespace CapMachine.Wpf.Services var DataInfo = MachineRtDataService.TagManger.DicTags .ToDictionary(kvp => kvp.Key, kvp => (object)MachineRtDataService.TagManger.TryGetRecordPVValue(kvp.Value.Name)); DataInfo.Add("创建时间", DateTime.Now); - + var RecordData = new RecordChannelData() { CreateTime = DateTime.Now, @@ -474,7 +482,7 @@ namespace CapMachine.Wpf.Services catch (Exception ex) { //CycleTimer.Start(); //执行完毕后再开启器 - LogService.Info($"时间:{DateTime.Now.ToString()}-【PwAnalyze-CycleAction】-{ex.Message}"); + LogService.Error($"时间:{DateTime.Now.ToString()}-【RecoredCycleAction】-{ex.Message}"); } } diff --git a/CapMachine.Wpf/Services/LogService.cs b/CapMachine.Wpf/Services/LogService.cs index c8b893d..0fed8d4 100644 --- a/CapMachine.Wpf/Services/LogService.cs +++ b/CapMachine.Wpf/Services/LogService.cs @@ -1,4 +1,6 @@ -using NLog; +using CapMachine.Wpf.PrismEvent; +using NLog; +using Prism.Events; using Prism.Services.Dialogs; using System; using System.Collections.Generic; @@ -15,6 +17,16 @@ namespace CapMachine.Wpf.Services { private static Logger Logger = LogManager.GetCurrentClassLogger(); //初始化日志类 + public IEventAggregator EventAggregator { get; } + + /// + /// NLog服务构造函数 + /// + public LogService(IEventAggregator eventAggregator) + { + EventAggregator = eventAggregator; + } + /// /// 调试日志 /// @@ -48,6 +60,8 @@ namespace CapMachine.Wpf.Services public void Error(string msg) { Logger.Error(msg); + //发布错误状态消息,给页脚显示用 + EventAggregator.GetEvent().Publish(new ErrStateMsg() { ErrMsg=msg}); } /// diff --git a/CapMachine.Wpf/Services/MachineRtDataService.cs b/CapMachine.Wpf/Services/MachineRtDataService.cs index 55e4fca..53e11ea 100644 --- a/CapMachine.Wpf/Services/MachineRtDataService.cs +++ b/CapMachine.Wpf/Services/MachineRtDataService.cs @@ -37,6 +37,7 @@ namespace CapMachine.Wpf.Services private IEventAggregator _EventAggregator { get; set; } public AlarmService AlarmService { get; } public ConfigService ConfigService { get; } + public ILogService LogService { get; } public CanDriveService CanDriveService { get; } public CanFdDriveService CanFdDriveService { get; } public LinDriveService LinDriveService { get; } @@ -121,7 +122,7 @@ namespace CapMachine.Wpf.Services /// 实例化函数 /// /// - public MachineRtDataService(IEventAggregator eventAggregator, AlarmService alarmService, ConfigService configService, + public MachineRtDataService(IEventAggregator eventAggregator, AlarmService alarmService, ConfigService configService,ILogService logService, CanDriveService canDriveService, CanFdDriveService canFdDriveService, LinDriveService linDriveService, SysRunService sysRunService)//, AlarmService alarmService { //ConcurrentDictionary keyValuePairs = new ConcurrentDictionary(); @@ -139,6 +140,7 @@ namespace CapMachine.Wpf.Services _EventAggregator = eventAggregator; AlarmService = alarmService; ConfigService = configService; + LogService = logService; CanDriveService = canDriveService; CanFdDriveService = canFdDriveService; LinDriveService = linDriveService; @@ -1728,7 +1730,7 @@ namespace CapMachine.Wpf.Services } catch (Exception ex) { - //LogService.Info($"时间:{DateTime.Now.ToString()}-【Meter】-{ex.Message}"); + LogService.Error(ex.Message); } diff --git a/CapMachine.Wpf/Services/SysRunService.cs b/CapMachine.Wpf/Services/SysRunService.cs index 5b842a4..8c2b6fc 100644 --- a/CapMachine.Wpf/Services/SysRunService.cs +++ b/CapMachine.Wpf/Services/SysRunService.cs @@ -1,4 +1,5 @@ using CapMachine.Wpf.Models; +using CapMachine.Wpf.PrismEvent; using Prism.Events; using Prism.Mvvm; using System; @@ -10,11 +11,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,10 +29,27 @@ namespace CapMachine.Wpf.Services ConfigService = configService; CanDriveService = canDriveService; LinDriveService = linDriveService; - MachineRunState1 = new MachineRunState("M1", EventAggregator, ConfigService,canDriveService,linDriveService); + MachineRunState1 = new MachineRunState("M1", EventAggregator, ConfigService, canDriveService, linDriveService); + + EventAggregator.GetEvent().Subscribe(ErrStateAction); } + /// + /// 错误状态处理方法 + /// + /// + /// + private void ErrStateAction(ErrStateMsg errStateMsg) + { + SysErrStateInfo.ActiveErr(errStateMsg.ErrMsg!); + } + + /// + /// 系统错误状态 + /// + public SysErrState SysErrStateInfo { get; set; } = new SysErrState(); + /// /// 设备运行状态 /// diff --git a/CapMachine.Wpf/TagConfig/SysTags.json b/CapMachine.Wpf/TagConfig/SysTags.json index 87e5eae..b60af6c 100644 --- a/CapMachine.Wpf/TagConfig/SysTags.json +++ b/CapMachine.Wpf/TagConfig/SysTags.json @@ -14,7 +14,7 @@ "DataType": "Short", "RWInfo": "PLCRead", "PVModel": { - "Address": "VW15000", + "Address": "VW14100", "ReWritePLCAddress": "V14100", "EngValue": 0, "EngValueStr": "", diff --git a/CapMachine.Wpf/ViewModels/CANFDConfigViewModel.cs b/CapMachine.Wpf/ViewModels/CANFDConfigViewModel.cs index 93d6ccc..f20664c 100644 --- a/CapMachine.Wpf/ViewModels/CANFDConfigViewModel.cs +++ b/CapMachine.Wpf/ViewModels/CANFDConfigViewModel.cs @@ -34,7 +34,7 @@ namespace CapMachine.Wpf.ViewModels { public CANFDConfigViewModel(IDialogService dialogService, IFreeSql freeSql, IEventAggregator eventAggregator, IRegionManager regionManager, SysRunService sysRunService, - ComActionService actionService, + ComActionService actionService,ILogService logService, ConfigService configService, CanFdDriveService canFdDriveService, IMapper mapper, MachineRtDataService machineRtDataService) { @@ -44,6 +44,7 @@ namespace CapMachine.Wpf.ViewModels RegionManager = regionManager; SysRunService = sysRunService; ComActionService = actionService; + LogService = logService; ConfigService = configService; CanFdDriveService = canFdDriveService; Mapper = mapper; @@ -139,6 +140,7 @@ namespace CapMachine.Wpf.ViewModels public IRegionManager RegionManager { get; } public SysRunService SysRunService { get; } public ComActionService ComActionService { get; } + public ILogService LogService { get; } public ConfigService ConfigService { get; } public CanFdDriveService CanFdDriveService { get; } public IMapper Mapper { get; } @@ -905,6 +907,7 @@ namespace CapMachine.Wpf.ViewModels switch (Par) { case "Open": + if (ComActionService.IsCanToDoWork() == false) { System.Windows.MessageBox.Show("请关闭LIN连接后才能开启CAN,同一个时刻只能有一个通信驱动压缩机", "提示", System.Windows.MessageBoxButton.OK, System.Windows.MessageBoxImage.Hand); diff --git a/CapMachine.Wpf/ViewModels/MainViewModel.cs b/CapMachine.Wpf/ViewModels/MainViewModel.cs index 9b37bb1..6687c04 100644 --- a/CapMachine.Wpf/ViewModels/MainViewModel.cs +++ b/CapMachine.Wpf/ViewModels/MainViewModel.cs @@ -64,6 +64,31 @@ namespace CapMachine.Wpf.ViewModels IsTopDrawerOpen = false; } + //private DelegateCommand _WindowClosingCmd; + ///// + ///// 顶部弹窗按钮命令 + ///// + //public DelegateCommand WindowClosingCmd + //{ + // set + // { + // _WindowClosingCmd = value; + // } + // get + // { + // if (_WindowClosingCmd == null) + // { + // _WindowClosingCmd = new DelegateCommand(() => WindowClosingCmdCall()); + // } + // return _WindowClosingCmd; + // } + //} + + //private void WindowClosingCmdCall() + //{ + // var dd = 1; + //} + private DelegateCommand _TopDrawerCmd; /// /// 顶部弹窗按钮命令 diff --git a/CapMachine.Wpf/ViewModels/MonitorViewModel.cs b/CapMachine.Wpf/ViewModels/MonitorViewModel.cs index be9b249..5f55b30 100644 --- a/CapMachine.Wpf/ViewModels/MonitorViewModel.cs +++ b/CapMachine.Wpf/ViewModels/MonitorViewModel.cs @@ -27,7 +27,8 @@ namespace CapMachine.Wpf.ViewModels /// /// public MonitorViewModel(ConfigService configService, IEventAggregator eventAggregator, - DataRecordService dataRecordService, SysRunService sysRunService, AlarmService alarmService, PPCService pPCService,CanDriveService canDriveService,LinDriveService linDriveService, + DataRecordService dataRecordService, SysRunService sysRunService, AlarmService alarmService, PPCService pPCService, + CanDriveService canDriveService, CanFdDriveService canFdDriveService, LinDriveService linDriveService, MachineRtDataService machineRtDataService, IDialogService dialogService) { ConfigService = configService; @@ -38,6 +39,7 @@ namespace CapMachine.Wpf.ViewModels AlarmService = alarmService; PPCService = pPCService; CanDriveService = canDriveService; + CanFdDriveService = canFdDriveService; LinDriveService = linDriveService; MachineRtDataService = machineRtDataService; DialogService = dialogService; @@ -75,6 +77,7 @@ namespace CapMachine.Wpf.ViewModels public AlarmService AlarmService { get; } public PPCService PPCService { get; } public CanDriveService CanDriveService { get; } + public CanFdDriveService CanFdDriveService { get; } public LinDriveService LinDriveService { get; } public MachineRtDataService MachineRtDataService { get; } public IDialogService DialogService { get; } @@ -229,6 +232,10 @@ namespace CapMachine.Wpf.ViewModels this.SysRunServer.MachineRunState1.FireStart(); DataRecordService.StartRecord(); + + //清空错误状态 + SysRunServer.SysErrStateInfo.ClearErr(); + break; case "结束": MachineRtDataService.SysEnd(); @@ -244,6 +251,11 @@ namespace CapMachine.Wpf.ViewModels CanDriveService.UpdateSpeedCmdData(0); //itemTag.Value.EngPvValue = 0; break; + case CanLinEnum.CANFD: + //获取PLC的SV数据 更新SV的速度值到压缩机 + CanFdDriveService.UpdateSpeedCmdData(0); + //itemTag.Value.EngPvValue = 0; + break; case CanLinEnum.Lin: //获取PLC的SV数据 更新SV的速度值到压缩机 LinDriveService.UpdateSpeedCmdData(0); @@ -261,6 +273,9 @@ namespace CapMachine.Wpf.ViewModels this.SysRunServer.MachineRunState1.FireReset(); DataRecordService.EndRecord(); + //清空错误状态 + SysRunServer.SysErrStateInfo.ClearErr(); + //结束运行的时候,需要将压缩机的速度值设置为0 switch (ConfigService.CanLinRunStateModel.CurSysSelectedCanLin) { @@ -269,6 +284,11 @@ namespace CapMachine.Wpf.ViewModels CanDriveService.UpdateSpeedCmdData(0); //itemTag.Value.EngPvValue = 0; break; + case CanLinEnum.CANFD: + //获取PLC的SV数据 更新SV的速度值到压缩机 + CanFdDriveService.UpdateSpeedCmdData(0); + //itemTag.Value.EngPvValue = 0; + break; case CanLinEnum.Lin: //获取PLC的SV数据 更新SV的速度值到压缩机 LinDriveService.UpdateSpeedCmdData(0); diff --git a/CapMachine.Wpf/Views/FooterView.xaml b/CapMachine.Wpf/Views/FooterView.xaml index 8d4fb6e..2eea34c 100644 --- a/CapMachine.Wpf/Views/FooterView.xaml +++ b/CapMachine.Wpf/Views/FooterView.xaml @@ -64,7 +64,7 @@ + Text="运行状态:" /> + + + + + + + + + +