一些更改
This commit is contained in:
@@ -143,9 +143,21 @@ namespace CapMachine.Wpf.Services
|
||||
{
|
||||
SpeedCanCmdData.SignalCmdValue = SpeedData;
|
||||
}
|
||||
//if (EnableCanCmdData != null)
|
||||
//{
|
||||
// EnableCanCmdData.SignalCmdValue = 1;
|
||||
//}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 更新压缩机使能数据
|
||||
/// </summary>
|
||||
/// <param name="IsEnable"></param>
|
||||
public void UpdateCapEnableCmdData(bool IsEnable)
|
||||
{
|
||||
if (EnableCanCmdData != null)
|
||||
{
|
||||
EnableCanCmdData.SignalCmdValue = 1;
|
||||
EnableCanCmdData.SignalCmdValue = IsEnable ? 1 : 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -118,10 +118,15 @@ namespace CapMachine.Wpf.Services
|
||||
}
|
||||
}
|
||||
|
||||
private bool _IsExpInfoOk;
|
||||
/// <summary>
|
||||
/// 试验信息是否OK
|
||||
/// </summary>
|
||||
public bool IsExpInfoOk { get; set; }
|
||||
public bool IsExpInfoOk
|
||||
{
|
||||
get { return _IsExpInfoOk; }
|
||||
set { _IsExpInfoOk = value; RaisePropertyChanged(); }
|
||||
}
|
||||
|
||||
///// <summary>
|
||||
///// 当前的试验信息
|
||||
|
||||
@@ -141,9 +141,22 @@ namespace CapMachine.Wpf.Services
|
||||
{
|
||||
SpeedLinCmdData.SignalCmdValue = SpeedData;
|
||||
}
|
||||
//if (EnableLinCmdData != null)
|
||||
//{
|
||||
// EnableLinCmdData.SignalCmdValue = 1;
|
||||
//}
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 更新压缩机使能数据
|
||||
/// </summary>
|
||||
/// <param name="IsEnable"></param>
|
||||
public void UpdateCapEnableCmdData(bool IsEnable)
|
||||
{
|
||||
if (EnableLinCmdData != null)
|
||||
{
|
||||
EnableLinCmdData.SignalCmdValue = 1;
|
||||
EnableLinCmdData.SignalCmdValue = IsEnable ? 1 : 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -6,10 +6,6 @@ using CapMachine.Wpf.Models.Tag;
|
||||
using CapMachine.Wpf.PrismEvent;
|
||||
using HslCommunication;
|
||||
using HslCommunication.Profinet.Siemens;
|
||||
using ImTools;
|
||||
using Microsoft.Extensions.Caching.Memory;
|
||||
using NPOI.HSSF.Record.Chart;
|
||||
using NPOI.SS.Formula.Atp;
|
||||
using Prism.Events;
|
||||
using Prism.Mvvm;
|
||||
using System;
|
||||
@@ -81,6 +77,11 @@ namespace CapMachine.Wpf.Services
|
||||
/// </summary>
|
||||
public SysExdInfo CurSysExdInfo { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 布尔拓展信息
|
||||
/// </summary>
|
||||
public SysExdBoolInfo SysExdBoolInfos { get; set; }
|
||||
|
||||
///// <summary>
|
||||
///// Tag数据集合
|
||||
///// </summary>
|
||||
@@ -708,7 +709,7 @@ namespace CapMachine.Wpf.Services
|
||||
SVAddress = "",
|
||||
MVAddress = "",
|
||||
IsMeter = false,
|
||||
Precision = 1,
|
||||
Precision = 1000,
|
||||
DecimalPoint = 2,
|
||||
Samp = 1,
|
||||
ValueType = typeof(short),
|
||||
@@ -820,9 +821,9 @@ namespace CapMachine.Wpf.Services
|
||||
ListHandSwitchData = new List<HandSwitchData>()
|
||||
{
|
||||
new HandSwitchData(){Name="自动",ActionAddress="M0.0",StateAddress="M0.0" },
|
||||
new HandSwitchData(){Name="抽真空",ActionAddress="M0.1",StateAddress="M0.1" },
|
||||
new HandSwitchData(){Name="复位",ActionAddress="M0.2",StateAddress="M0.2" },
|
||||
new HandSwitchData(){Name="消音",ActionAddress="M0.3",StateAddress="M0.3" },
|
||||
new HandSwitchData(){Name="抽真空",ActionAddress="M0.1",StateAddress="V15.2" },
|
||||
//new HandSwitchData(){Name="复位",ActionAddress="M0.2",StateAddress="M0.2" },放到上侧的按钮区域了
|
||||
//new HandSwitchData(){Name="消音",ActionAddress="M0.3",StateAddress="M0.3" },放到上侧的按钮区域了
|
||||
new HandSwitchData(){Name="HV电源",ActionAddress="M1.1",StateAddress="Q0.1" },
|
||||
new HandSwitchData(){Name="HV启动",ActionAddress="M1.2",StateAddress="Q0.6" },
|
||||
new HandSwitchData(){Name="LV电源",ActionAddress="M1.3",StateAddress="Q0.2" },
|
||||
@@ -866,7 +867,7 @@ namespace CapMachine.Wpf.Services
|
||||
|
||||
//拓展的参数信息
|
||||
CurSysExdInfo = new SysExdInfo(SiemensDrive);
|
||||
|
||||
SysExdBoolInfos = new SysExdBoolInfo(SiemensDrive);
|
||||
//PubRtDataStart();
|
||||
}
|
||||
|
||||
@@ -958,21 +959,44 @@ namespace CapMachine.Wpf.Services
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 程序暂停
|
||||
/// 取反
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public bool SysPause()
|
||||
{
|
||||
var Result = SiemensDrive.Write("M0.6", true);
|
||||
if (Result.IsSuccess)
|
||||
var StateResult = SiemensDrive.ReadBool("M0.6");
|
||||
if (StateResult.IsSuccess)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
return false;
|
||||
if (StateResult.Content == true)
|
||||
{
|
||||
var Result = SiemensDrive.Write("M0.6", false);
|
||||
if (Result.IsSuccess)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
var Result = SiemensDrive.Write("M0.6", true);
|
||||
if (Result.IsSuccess)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
#endregion
|
||||
@@ -1069,6 +1093,11 @@ namespace CapMachine.Wpf.Services
|
||||
/// </summary>
|
||||
private OperateResult<bool[]> OperateResultAlarm { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// CAP的使能状态
|
||||
/// </summary>
|
||||
private OperateResult<bool> OperateResultCapEnable { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 时间诊断
|
||||
/// </summary>
|
||||
@@ -1155,18 +1184,18 @@ namespace CapMachine.Wpf.Services
|
||||
break;
|
||||
}
|
||||
}
|
||||
else if(itemTag.Value.NameNoUnit == "通讯母线电压")
|
||||
else if (itemTag.Value.NameNoUnit == "通讯母线电压")
|
||||
{
|
||||
switch (ConfigService.CanLinRunStateModel.CurSysSelectedCanLin)
|
||||
{
|
||||
case CanLinEnum.Can:
|
||||
//通信转速 Dbc中间配置名称的转速数据读取出来 给PLC
|
||||
SiemensDrive.Write(itemTag.Value.PVAddress, (short)CanDriveService.GetDbcSpeedValueBySpeedName("通讯母线电压"));
|
||||
SiemensDrive.Write(itemTag.Value.PVAddress, (short)(CanDriveService.GetDbcValueByName("通讯母线电压") * itemTag.Value.Precision));
|
||||
//itemTag.Value.EngPvValue = 0;
|
||||
break;
|
||||
case CanLinEnum.Lin:
|
||||
//通信转速 Dbc中间配置名称的转速数据读取出来 给PLC
|
||||
SiemensDrive.Write(itemTag.Value.PVAddress, (short)LinDriveService.GetLdfSpeedValueBySpeedName("通讯母线电压"));
|
||||
SiemensDrive.Write(itemTag.Value.PVAddress, (short)(LinDriveService.GetLdfValueByName("通讯母线电压") * itemTag.Value.Precision));
|
||||
//itemTag.Value.EngPvValue = 0;
|
||||
break;
|
||||
default:
|
||||
@@ -1179,12 +1208,12 @@ namespace CapMachine.Wpf.Services
|
||||
{
|
||||
case CanLinEnum.Can:
|
||||
//通信转速 Dbc中间配置名称的转速数据读取出来 给PLC
|
||||
SiemensDrive.Write(itemTag.Value.PVAddress, (short)CanDriveService.GetDbcSpeedValueBySpeedName("通讯母线电流"));
|
||||
SiemensDrive.Write(itemTag.Value.PVAddress, (short)(CanDriveService.GetDbcValueByName("通讯母线电流") * itemTag.Value.Precision));
|
||||
//itemTag.Value.EngPvValue = 0;
|
||||
break;
|
||||
case CanLinEnum.Lin:
|
||||
//通信转速 Dbc中间配置名称的转速数据读取出来 给PLC
|
||||
SiemensDrive.Write(itemTag.Value.PVAddress, (short)LinDriveService.GetLdfSpeedValueBySpeedName("通讯母线电流"));
|
||||
SiemensDrive.Write(itemTag.Value.PVAddress, (short)(LinDriveService.GetLdfValueByName("通讯母线电流") * itemTag.Value.Precision));
|
||||
//itemTag.Value.EngPvValue = 0;
|
||||
break;
|
||||
default:
|
||||
@@ -1197,12 +1226,12 @@ namespace CapMachine.Wpf.Services
|
||||
{
|
||||
case CanLinEnum.Can:
|
||||
//通信转速 Dbc中间配置名称的转速数据读取出来 给PLC
|
||||
SiemensDrive.Write(itemTag.Value.PVAddress, (short)CanDriveService.GetDbcSpeedValueBySpeedName("通讯相电流"));
|
||||
SiemensDrive.Write(itemTag.Value.PVAddress, (short)(CanDriveService.GetDbcValueByName("通讯相电流") * itemTag.Value.Precision));
|
||||
//itemTag.Value.EngPvValue = 0;
|
||||
break;
|
||||
case CanLinEnum.Lin:
|
||||
//通信转速 Dbc中间配置名称的转速数据读取出来 给PLC
|
||||
SiemensDrive.Write(itemTag.Value.PVAddress, (short)LinDriveService.GetLdfSpeedValueBySpeedName("通讯相电流"));
|
||||
SiemensDrive.Write(itemTag.Value.PVAddress, (short)(LinDriveService.GetLdfValueByName("通讯相电流") * itemTag.Value.Precision));
|
||||
//itemTag.Value.EngPvValue = 0;
|
||||
break;
|
||||
default:
|
||||
@@ -1215,12 +1244,12 @@ namespace CapMachine.Wpf.Services
|
||||
{
|
||||
case CanLinEnum.Can:
|
||||
//通信转速 Dbc中间配置名称的转速数据读取出来 给PLC
|
||||
SiemensDrive.Write(itemTag.Value.PVAddress, (short)CanDriveService.GetDbcSpeedValueBySpeedName("通讯功率"));
|
||||
SiemensDrive.Write(itemTag.Value.PVAddress, (short)(CanDriveService.GetDbcValueByName("通讯功率") * itemTag.Value.Precision));
|
||||
//itemTag.Value.EngPvValue = 0;
|
||||
break;
|
||||
case CanLinEnum.Lin:
|
||||
//通信转速 Dbc中间配置名称的转速数据读取出来 给PLC
|
||||
SiemensDrive.Write(itemTag.Value.PVAddress, (short)LinDriveService.GetLdfSpeedValueBySpeedName("通讯功率"));
|
||||
SiemensDrive.Write(itemTag.Value.PVAddress, (short)(LinDriveService.GetLdfValueByName("通讯功率") * itemTag.Value.Precision));
|
||||
//itemTag.Value.EngPvValue = 0;
|
||||
break;
|
||||
default:
|
||||
@@ -1233,12 +1262,12 @@ namespace CapMachine.Wpf.Services
|
||||
{
|
||||
case CanLinEnum.Can:
|
||||
//通信转速 Dbc中间配置名称的转速数据读取出来 给PLC
|
||||
SiemensDrive.Write(itemTag.Value.PVAddress, (short)CanDriveService.GetDbcSpeedValueBySpeedName("通讯芯片温度"));
|
||||
SiemensDrive.Write(itemTag.Value.PVAddress, (short)(CanDriveService.GetDbcValueByName("通讯芯片温度") * itemTag.Value.Precision));
|
||||
//itemTag.Value.EngPvValue = 0;
|
||||
break;
|
||||
case CanLinEnum.Lin:
|
||||
//通信转速 Dbc中间配置名称的转速数据读取出来 给PLC
|
||||
SiemensDrive.Write(itemTag.Value.PVAddress, (short)LinDriveService.GetLdfSpeedValueBySpeedName("通讯芯片温度"));
|
||||
SiemensDrive.Write(itemTag.Value.PVAddress, (short)(LinDriveService.GetLdfValueByName("通讯芯片温度") * itemTag.Value.Precision));
|
||||
//itemTag.Value.EngPvValue = 0;
|
||||
break;
|
||||
default:
|
||||
@@ -1300,8 +1329,23 @@ namespace CapMachine.Wpf.Services
|
||||
//在运行时,更新速度的SV的值
|
||||
if (itemTag.Value.Name == "转速[rpm]" && SysRunService.MachineRunState1.RunStateMsg == "运行")
|
||||
{
|
||||
//更新SV的速度值
|
||||
CanDriveService.UpdateSpeedCmdData(TagManger.GetTagByName<short>(itemTag.Value.Name)!.EngSvValue);
|
||||
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
|
||||
@@ -1356,6 +1400,25 @@ namespace CapMachine.Wpf.Services
|
||||
if (item.StateOperateResult.IsSuccess)
|
||||
{
|
||||
item.State = item.StateOperateResult.Content;
|
||||
//根据PLC得到执行的步骤数据,更新到CAN和LIN的数据
|
||||
if (item.Name!.Equals("使能"))
|
||||
{
|
||||
switch (ConfigService.CanLinRunStateModel.CurSysSelectedCanLin)
|
||||
{
|
||||
case CanLinEnum.Can:
|
||||
//获取PLC的使能状态,更新到CAN的使能状态
|
||||
CanDriveService.UpdateCapEnableCmdData(item.State);
|
||||
//itemTag.Value.EngPvValue = 0;
|
||||
break;
|
||||
case CanLinEnum.Lin:
|
||||
//获取PLC的使能状态,更新到LIN的使能状态
|
||||
LinDriveService.UpdateCapEnableCmdData(item.State);
|
||||
//itemTag.Value.EngPvValue = 0;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1365,6 +1428,11 @@ namespace CapMachine.Wpf.Services
|
||||
itemQuickTag.OperateResultSource = SiemensDrive.Read(itemQuickTag.ValueAddress, itemQuickTag.ByteLength);
|
||||
}
|
||||
CurSysExdInfo.SumRunTime();
|
||||
//布尔拓展信息的展示
|
||||
foreach (var itemQuickTag in SysExdBoolInfos.QuickTags)
|
||||
{
|
||||
itemQuickTag.OperateResultSource = SiemensDrive.Read(itemQuickTag.ValueAddress, itemQuickTag.ByteLength);
|
||||
}
|
||||
|
||||
}
|
||||
catch (Exception ex)
|
||||
@@ -1374,7 +1442,7 @@ namespace CapMachine.Wpf.Services
|
||||
}
|
||||
|
||||
DiagnosticsTime.Stop();
|
||||
ConfigService.PlcCycleTime = (int)DiagnosticsTime.Elapsed.TotalMilliseconds-300;
|
||||
ConfigService.PlcCycleTime = (int)DiagnosticsTime.Elapsed.TotalMilliseconds - 300;
|
||||
//Console.WriteLine($"扫描时间:{DiagnosticsTime.Elapsed.TotalMilliseconds.ToString()}");
|
||||
}
|
||||
});
|
||||
@@ -1394,21 +1462,21 @@ namespace CapMachine.Wpf.Services
|
||||
try
|
||||
{
|
||||
await Task.Delay(1000);
|
||||
_EventAggregator.GetEvent<ChartRtEvent>().Publish(new List<Models.ChartRtValue>()
|
||||
{
|
||||
new Models.ChartRtValue(){Name="EVA风量",Value=random.NextDouble()*100,Unit="℃"},
|
||||
new Models.ChartRtValue(){Name="中间轴转速",Value=random.NextDouble()*100,Unit="℃"},
|
||||
new Models.ChartRtValue(){Name="加热电力",Value=random.NextDouble()*100,Unit="℃"},
|
||||
new Models.ChartRtValue(){Name="加湿电力",Value=random.NextDouble()*100,Unit="℃"},
|
||||
new Models.ChartRtValue(){Name="EMPCV电流",Value=random.NextDouble()*100,Unit="℃"},
|
||||
new Models.ChartRtValue(){Name="INJ压力",Value=random.NextDouble()*100,Unit="℃"},
|
||||
new Models.ChartRtValue(){Name="冷媒流量",Value=random.NextDouble()*100,Unit="℃"},
|
||||
});
|
||||
//_EventAggregator.GetEvent<ChartRtEvent>().Publish(new List<Models.ChartRtValue>()
|
||||
//{
|
||||
// new Models.ChartRtValue(){Name="EVA风量",Value=random.NextDouble()*100,Unit="℃"},
|
||||
// new Models.ChartRtValue(){Name="中间轴转速",Value=random.NextDouble()*100,Unit="℃"},
|
||||
// new Models.ChartRtValue(){Name="加热电力",Value=random.NextDouble()*100,Unit="℃"},
|
||||
// new Models.ChartRtValue(){Name="加湿电力",Value=random.NextDouble()*100,Unit="℃"},
|
||||
// new Models.ChartRtValue(){Name="EMPCV电流",Value=random.NextDouble()*100,Unit="℃"},
|
||||
// new Models.ChartRtValue(){Name="INJ压力",Value=random.NextDouble()*100,Unit="℃"},
|
||||
// new Models.ChartRtValue(){Name="冷媒流量",Value=random.NextDouble()*100,Unit="℃"},
|
||||
//});
|
||||
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
var dd = 1;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -14,7 +14,7 @@ namespace CapMachine.Wpf.Services
|
||||
/// </summary>
|
||||
public class SysRunService : BindableBase
|
||||
{
|
||||
public SysRunService(IEventAggregator eventAggregator,ConfigService configService)
|
||||
public SysRunService(IEventAggregator eventAggregator,ConfigService configService,CanDriveService canDriveService,LinDriveService linDriveService)
|
||||
{
|
||||
// 创建一个定时器,设置间隔时间为2000毫秒(即2秒)
|
||||
CurTimer = new System.Timers.Timer(5000);
|
||||
@@ -26,7 +26,9 @@ namespace CapMachine.Wpf.Services
|
||||
|
||||
EventAggregator = eventAggregator;
|
||||
ConfigService = configService;
|
||||
MachineRunState1 = new MachineRunState("M1", EventAggregator, ConfigService);
|
||||
CanDriveService = canDriveService;
|
||||
LinDriveService = linDriveService;
|
||||
MachineRunState1 = new MachineRunState("M1", EventAggregator, ConfigService,canDriveService,linDriveService);
|
||||
|
||||
}
|
||||
|
||||
@@ -36,7 +38,6 @@ namespace CapMachine.Wpf.Services
|
||||
public MachineRunState MachineRunState1 { get; set; }
|
||||
|
||||
|
||||
|
||||
private void CurTimer_Elapsed(object? sender, System.Timers.ElapsedEventArgs e)
|
||||
{
|
||||
CurDateTime = DateTime.Now;
|
||||
@@ -63,5 +64,7 @@ namespace CapMachine.Wpf.Services
|
||||
/// </summary>
|
||||
public IEventAggregator EventAggregator { get; }
|
||||
public ConfigService ConfigService { get; }
|
||||
public CanDriveService CanDriveService { get; }
|
||||
public LinDriveService LinDriveService { get; }
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user