using CapMachine.Core;
using CapMachine.Shared.Controls;
using CapMachine.Wpf.Dtos;
using CapMachine.Wpf.Models;
using CapMachine.Wpf.Models.Tag;
using CapMachine.Wpf.PrismEvent;
using CapMachine.Wpf.Services;
using ImTools;
using Prism.Commands;
using Prism.Events;
using Prism.Services.Dialogs;
using System.Collections.ObjectModel;
using System.Windows.Controls.Primitives;
using static CapMachine.Wpf.Models.ComEnum;
namespace CapMachine.Wpf.ViewModels
{
public class MonitorViewModel : NavigationViewModel
{
///
/// 实例化函数
///
///
///
///
///
///
///
public MonitorViewModel(ConfigService configService, IEventAggregator eventAggregator,
DataRecordService dataRecordService, CanFdDriveService canFdDriveService, SysRunService sysRunService, AlarmService alarmService, PPCService pPCService,CanDriveService canDriveService,LinDriveService linDriveService,
MachineRtDataService machineRtDataService, IDialogService dialogService)
{
ConfigService = configService;
//事件服务
_EventAggregator = eventAggregator;
DataRecordService = dataRecordService;
SysRunServer = sysRunService;
AlarmService = alarmService;
PPCService = pPCService;
CanDriveService = canDriveService;
CanFdDriveService = canFdDriveService;
LinDriveService = linDriveService;
MachineRtDataService = machineRtDataService;
DialogService = dialogService;
TagManager = MachineRtDataService.TagManger;
_EventAggregator.GetEvent().Subscribe(GetChartRtEvent);
//赋值实例化
ListHandSwitchData = MachineRtDataService.ListHandSwitchData;
ListTag = new ObservableCollection(TagManager.DicTags.Values.ToList());
ListMeterTag = TagManager.DicTags.Values.Where(a => a.IsMeter == true).ToList();
SpeedTag = TagManager.DicTags.GetValueOrDefault("转速[rpm]");
ExPressTag = TagManager.DicTags.GetValueOrDefault("排气压力[BarA]");
ExTempTag = TagManager.DicTags.GetValueOrDefault("排气温度[℃]");
InhPressTag = TagManager.DicTags.GetValueOrDefault("吸气压力[BarA]");
InhTempTag = TagManager.DicTags.GetValueOrDefault("吸气温度[℃]");
ComCapBusVolTag = TagManager.DicTags.GetValueOrDefault("通讯Cmp母线电压[V]");
ComCapBusCurTag = TagManager.DicTags.GetValueOrDefault("通讯Cmp母线电流[A]");
ComCapPwTag = TagManager.DicTags.GetValueOrDefault("通讯Cmp功率[W]");
OS2TempTag = TagManager.DicTags.GetValueOrDefault("吸气混合器温度[℃]");
TxvFrTempTag = TagManager.DicTags.GetValueOrDefault("膨胀阀前温度[℃]");
TxvFrPressTag = TagManager.DicTags.GetValueOrDefault("膨胀阀前压力[BarA]");
Cond1TempTag = TagManager.DicTags.GetValueOrDefault("COND1温度[℃]");
CondInTempTag = TagManager.DicTags.GetValueOrDefault("冷凝器进口温度[℃]");
VRVTag = TagManager.DicTags.GetValueOrDefault("冷媒流量[kg/h]");
LubeFlowTag = TagManager.DicTags.GetValueOrDefault("润滑油流量[kg/h]");
LiqRefFlowTag= TagManager.DicTags.GetValueOrDefault("液冷媒流量[kg/h]");
Cond2TempTag = TagManager.DicTags.GetValueOrDefault("COND2温度[℃]");
}
public ConfigService ConfigService { get; }
private IEventAggregator _EventAggregator { get; set; }
public DataRecordService DataRecordService { get; }
public SysRunService SysRunServer { get; }
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; }
public List ListChartRtValue { get; set; } = new List()
{
new ChartRtValue(){ Name="温度",Value=12.3,Unit="℃"},
new ChartRtValue(){ Name="压力",Value=12.3,Unit="bar"},
new ChartRtValue(){ Name="湿度",Value=12.3,Unit="%"},
};
private ObservableCollection _ListTag;
///
/// 标签集合信息
///
public ObservableCollection ListTag
{
get { return _ListTag; }
set { _ListTag = value; RaisePropertyChanged(); }
}
private List _ListMeterTag;
///
/// 标签集合信息 仪表的参数
///
public List ListMeterTag
{
get { return _ListMeterTag; }
set { _ListMeterTag = value; RaisePropertyChanged(); }
}
///
/// 标签中心
///
public TagManager TagManager { get; set; }
////
///// 手自动切换集合数据
/////
public List ListHandSwitchData { get; set; }
///
/// 复位标签
///
public HandSwitchData ResetTag { get; set; }
///
/// 消音标签
///
public HandSwitchData MuteTag { get; set; }
#region 工艺图数据
///
/// 转速标签
///
public ITag SpeedTag { get; set; }
///
/// 排气压力
///
public ITag ExPressTag { get; set; }
///
/// 排气温度
///
public ITag ExTempTag { get; set; }
///
/// 吸气压力
///
public ITag InhPressTag { get; set; }
///
/// 吸气温度
///
public ITag InhTempTag { get; set; }
///
/// 通讯母线电压
///
public ITag ComCapBusVolTag { get; set; }
///
/// 通讯母线电流
///
public ITag ComCapBusCurTag { get; set; }
///
/// 通讯功率
///
public ITag ComCapPwTag { get; set; }
///
/// 吸气混合器温度
///
public ITag OS2TempTag { get; set; }
///
/// 膨胀阀前温度
///
public ITag TxvFrTempTag { get; set; }
///
/// 膨胀阀前压力
///
public ITag TxvFrPressTag { get; set; }
///
/// 冷凝器出口水温
///
public ITag Cond1TempTag { get; set; }
///
/// 冷凝器进口温度
///
public ITag CondInTempTag { get; set; }
///
/// 润滑油流量
///
public ITag LubeFlowTag { get; set; }
///
/// 液冷煤流量
///
public ITag LiqRefFlowTag { get; set; }
///
/// 冷媒流量
///
public ITag VRVTag { get; set; }
public ITag Cond2TempTag { get; set; }
#endregion
private DelegateCommand _OperCmd;
///
/// 操作指令你
///
public DelegateCommand OperCmd
{
set
{
_OperCmd = value;
}
get
{
if (_OperCmd == null)
{
_OperCmd = new DelegateCommand((p) => OperCmdCall(p));
}
return _OperCmd;
}
}
///
/// 操作指令执行方法
///
///
private void OperCmdCall(string Par)
{
switch (Par)
{
case "开始":
MachineRtDataService.SysStart();
this.SysRunServer.MachineRunState1.FireStart();
DataRecordService.StartRecord();
break;
case "结束":
MachineRtDataService.SysEnd();
this.SysRunServer.MachineRunState1.FireEnd();
DataRecordService.EndRecord();
//结束运行的时候,需要将压缩机的速度值设置为0
switch (ConfigService.CanLinRunStateModel.CurSysSelectedCanLin)
{
case CanLinEnum.Can:
//获取PLC的SV数据 更新SV的速度值到压缩机
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);
//itemTag.Value.EngPvValue = 0;
break;
default:
break;
}
break;
case "复位":
MachineRtDataService.SysReset();
this.SysRunServer.MachineRunState1.FireReset();
DataRecordService.EndRecord();
//结束运行的时候,需要将压缩机的速度值设置为0
switch (ConfigService.CanLinRunStateModel.CurSysSelectedCanLin)
{
case CanLinEnum.Can:
//获取PLC的SV数据 更新SV的速度值到压缩机
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);
//itemTag.Value.EngPvValue = 0;
break;
default:
break;
}
break;
case "消音":
MachineRtDataService.SysMute();
//ShowDialogExpInfo();
break;
case "暂停":
MachineRtDataService.SysPause();
//ShowDialogExpInfo();
break;
case "试验信息":
ShowDialogExpInfo();
break;
case "SuperHeatCool":
//ShowSuperHeatCool();
break;
default:
break;
}
}
private DelegateCommand