更新CAN的配置和CAN和实时数据的连接
This commit is contained in:
@@ -78,28 +78,96 @@ namespace CapMachine.Wpf.Services
|
||||
|
||||
#region 程序驱动CAN
|
||||
|
||||
/// <summary>
|
||||
/// 转速 指令数据 实例
|
||||
/// </summary>
|
||||
private CanCmdData SpeedCanCmdData { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 功率限制 指令数据 实例
|
||||
/// </summary>
|
||||
private CanCmdData PwLimitCanCmdData { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 使能 指令数据 实例
|
||||
/// </summary>
|
||||
private CanCmdData EnableCanCmdData { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 要发送的CAN指令数据
|
||||
/// 在程序配置好后就确定要发送哪些数据
|
||||
/// </summary>
|
||||
public List<CanCmdData> CmdData { get; set; } = new List<CanCmdData>();
|
||||
|
||||
/// <summary>
|
||||
/// 增加发送的指令数据
|
||||
/// </summary>
|
||||
/// <param name="canCmdData"></param>
|
||||
public void AddCmdData(CanCmdData SendCanCmdData)
|
||||
{
|
||||
//提取常用的实例数据
|
||||
switch (SendCanCmdData.ConfigName)
|
||||
{
|
||||
case "转速":
|
||||
SpeedCanCmdData = SendCanCmdData;
|
||||
break;
|
||||
case "功率限制":
|
||||
PwLimitCanCmdData = SendCanCmdData;
|
||||
break;
|
||||
case "使能":
|
||||
EnableCanCmdData = SendCanCmdData;
|
||||
break;
|
||||
case "Anti_Sleep":
|
||||
//SpeedCanCmdData = SendCanCmdData;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
//添加到发送数据集合
|
||||
CmdData.Add(SendCanCmdData);
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 更新速度信息
|
||||
/// 默认是启动
|
||||
/// </summary>
|
||||
/// <param name="canCmdData"></param>
|
||||
public void UpdateSpeedCmdData(double SpeedData)
|
||||
{
|
||||
if (SpeedCanCmdData != null)
|
||||
{
|
||||
SpeedCanCmdData.SignalCmdValue = SpeedData;
|
||||
}
|
||||
if (EnableCanCmdData!=null)
|
||||
{
|
||||
EnableCanCmdData.SignalCmdValue = 1;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 发送消息给CAN 驱动
|
||||
/// </summary>
|
||||
public void SendMsgToCanDrive()
|
||||
public void SendMsgToCanDrive(double SpeedData)
|
||||
{
|
||||
if (ToomossCanDrive.OpenState)
|
||||
{
|
||||
if (CmdData.Count > 0)
|
||||
{
|
||||
//更新速度信息
|
||||
UpdateSpeedCmdData(SpeedData);
|
||||
|
||||
ToomossCanDrive.SendCanMsg(CmdData);
|
||||
}
|
||||
else
|
||||
{
|
||||
System.Windows.MessageBox.Show("未发现配置的数据内容", "提示", System.Windows.MessageBoxButton.OK, System.Windows.MessageBoxImage.Hand);
|
||||
}
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
System.Windows.MessageBox.Show("未打开CAN通信,无法发送数据", "提示", System.Windows.MessageBoxButton.OK, System.Windows.MessageBoxImage.Hand);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -35,6 +35,8 @@ namespace CapMachine.Wpf.Services
|
||||
/// </summary>
|
||||
private IEventAggregator _EventAggregator { get; set; }
|
||||
public AlarmService AlarmService { get; }
|
||||
public CanDriveService CanDriveService { get; }
|
||||
public SysRunService SysRunService { get; }
|
||||
|
||||
/// <summary>
|
||||
/// PLCScanTask扫描Task
|
||||
@@ -105,7 +107,7 @@ namespace CapMachine.Wpf.Services
|
||||
/// 实例化函数
|
||||
/// </summary>
|
||||
/// <param name="eventAggregator"></param>
|
||||
public MachineRtDataService(IEventAggregator eventAggregator, AlarmService alarmService)//, AlarmService alarmService
|
||||
public MachineRtDataService(IEventAggregator eventAggregator, AlarmService alarmService, CanDriveService canDriveService, SysRunService sysRunService)//, AlarmService alarmService
|
||||
{
|
||||
//ConcurrentDictionary<DateTime, RecordInfo> keyValuePairs = new ConcurrentDictionary<DateTime, RecordInfo>();
|
||||
|
||||
@@ -119,6 +121,8 @@ namespace CapMachine.Wpf.Services
|
||||
//事件服务
|
||||
_EventAggregator = eventAggregator;
|
||||
AlarmService = alarmService;
|
||||
CanDriveService = canDriveService;
|
||||
SysRunService = sysRunService;
|
||||
|
||||
//秒触发一次
|
||||
CycleTimer = new System.Timers.Timer(500);
|
||||
@@ -1115,8 +1119,9 @@ namespace CapMachine.Wpf.Services
|
||||
if (OperateResultShort.IsSuccess)
|
||||
{
|
||||
TagManger.GetTagInfoValueByName<short>(itemTag.Value.Name)!.Value = SiemensDrive.ReadInt16(itemTag.Value.PVAddress).Content;
|
||||
TagManger.GetTagByName<short>(itemTag.Value.Name).EngPvValue = TagManger.GetTagInfoValueByName<short>(itemTag.Value.Name)!.Value * 1.0 / TagManger.GetTagByName<short>(itemTag.Value.Name)!.Precision;
|
||||
TagManger.GetTagByName<short>(itemTag.Value.Name)!.EngPvValue = TagManger.GetTagInfoValueByName<short>(itemTag.Value.Name)!.Value * 1.0 / TagManger.GetTagByName<short>(itemTag.Value.Name)!.Precision;
|
||||
LinkState = true;
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -1130,8 +1135,15 @@ namespace CapMachine.Wpf.Services
|
||||
if (OperateResultSVShort.IsSuccess)
|
||||
{
|
||||
//TagManger.GetTagInfoValueByName<short>(itemTag.Value.Name)!.Value = OperateResultSVShort.Content;
|
||||
TagManger.GetTagByName<short>(itemTag.Value.Name).EngSvValue = OperateResultSVShort.Content * 1.0 / TagManger.GetTagByName<short>(itemTag.Value.Name)!.Precision;
|
||||
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 == "运行")
|
||||
{
|
||||
//更新SV的速度值
|
||||
CanDriveService.UpdateSpeedCmdData(TagManger.GetTagByName<short>(itemTag.Value.Name)!.EngSvValue);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -1145,7 +1157,7 @@ namespace CapMachine.Wpf.Services
|
||||
if (OperateResultMVShort.IsSuccess)
|
||||
{
|
||||
//TagManger.GetTagInfoValueByName<short>(itemTag.Value.Name)!.Value = OperateResultMVShort.Content;
|
||||
TagManger.GetTagByName<short>(itemTag.Value.Name).EngMvValue = OperateResultMVShort.Content*1.0/10;
|
||||
TagManger.GetTagByName<short>(itemTag.Value.Name)!.EngMvValue = OperateResultMVShort.Content * 1.0 / 10;
|
||||
LinkState = true;
|
||||
}
|
||||
else
|
||||
@@ -1155,8 +1167,8 @@ namespace CapMachine.Wpf.Services
|
||||
}
|
||||
|
||||
//手自动切换按钮条件
|
||||
AutoHandSwtichConditionState.AlarmStateResult= SiemensDrive.ReadBool(AutoHandSwtichConditionState.AlarmAddress);
|
||||
AutoHandSwtichConditionState.HandStateResult= SiemensDrive.ReadBool(AutoHandSwtichConditionState.HandStateAddress);
|
||||
AutoHandSwtichConditionState.AlarmStateResult = SiemensDrive.ReadBool(AutoHandSwtichConditionState.AlarmAddress);
|
||||
AutoHandSwtichConditionState.HandStateResult = SiemensDrive.ReadBool(AutoHandSwtichConditionState.HandStateAddress);
|
||||
AutoHandSwtichConditionState.SumResult();
|
||||
|
||||
break;
|
||||
|
||||
Reference in New Issue
Block a user