增加了初始弹窗,但是没有成功

更改了CAN和LIN协调
更改了配置程序的名称顺序
This commit is contained in:
2025-01-11 12:04:34 +08:00
parent 620c5e8178
commit e49a48fb25
53 changed files with 5118 additions and 131 deletions

View File

@@ -36,7 +36,9 @@ namespace CapMachine.Wpf.Services
/// </summary>
private IEventAggregator _EventAggregator { get; set; }
public AlarmService AlarmService { get; }
public ConfigService ConfigService { get; }
public CanDriveService CanDriveService { get; }
public LinDriveService LinDriveService { get; }
public SysRunService SysRunService { get; }
/// <summary>
@@ -74,10 +76,10 @@ namespace CapMachine.Wpf.Services
/// </summary>
private bool IsValueShow { get; set; } = true;
///// <summary>
///// 仪表数据集合
///// </summary>
//public List<MeterRtDataModel> ListMeterRtData { get; set; }
/// <summary>
/// 系统拓展数据
/// </summary>
public SysExdInfo CurSysExdInfo { get; set; }
///// <summary>
///// Tag数据集合
@@ -108,7 +110,8 @@ namespace CapMachine.Wpf.Services
/// 实例化函数
/// </summary>
/// <param name="eventAggregator"></param>
public MachineRtDataService(IEventAggregator eventAggregator, AlarmService alarmService, CanDriveService canDriveService, SysRunService sysRunService)//, AlarmService alarmService
public MachineRtDataService(IEventAggregator eventAggregator, AlarmService alarmService, ConfigService configService,
CanDriveService canDriveService, LinDriveService linDriveService, SysRunService sysRunService)//, AlarmService alarmService
{
//ConcurrentDictionary<DateTime, RecordInfo> keyValuePairs = new ConcurrentDictionary<DateTime, RecordInfo>();
@@ -122,7 +125,9 @@ namespace CapMachine.Wpf.Services
//事件服务
_EventAggregator = eventAggregator;
AlarmService = alarmService;
ConfigService = configService;
CanDriveService = canDriveService;
LinDriveService = linDriveService;
SysRunService = sysRunService;
//秒触发一次
@@ -132,6 +137,7 @@ namespace CapMachine.Wpf.Services
CycleTimer.Enabled = true;
#region
//【测试】
@@ -637,7 +643,7 @@ namespace CapMachine.Wpf.Services
Name = "通讯母线电压[V]",//名称带单位
NameNoUnit = "通讯母线电压",//无单位名称
EnName = "ComCapBusVol",//英文名称
Group = "CAN",//分组
Group = "CANLIN",//分组
MinValue = 0,
MaxValue = 100,
Unit = "V",
@@ -656,7 +662,7 @@ namespace CapMachine.Wpf.Services
Name = "通讯母线电流[A]",//名称带单位
NameNoUnit = "通讯母线电流",//无单位名称
EnName = "ComCapBusCur",//英文名称
Group = "CAN",//分组
Group = "CANLIN",//分组
MinValue = 0,
MaxValue = 100,
Unit = "A",
@@ -675,7 +681,7 @@ namespace CapMachine.Wpf.Services
Name = "通讯相电流[A]",//名称带单位
NameNoUnit = "通讯相电流",//无单位名称
EnName = "ComCapPhCur",//英文名称
Group = "CAN",//分组
Group = "CANLIN",//分组
MinValue = 0,
MaxValue = 100,
Unit = "A",
@@ -694,7 +700,7 @@ namespace CapMachine.Wpf.Services
Name = "通讯功率[W]",//名称带单位
NameNoUnit = "通讯功率",//无单位名称
EnName = "ComCapPw",//英文名称
Group = "CAN",//分组
Group = "CANLIN",//分组
MinValue = 0,
MaxValue = 100,
Unit = "W",
@@ -713,7 +719,7 @@ namespace CapMachine.Wpf.Services
Name = "通讯芯片温度[℃]",//名称带单位
NameNoUnit = "通讯芯片温度",//无单位名称
EnName = "ComCapChipTemp",//英文名称
Group = "CAN",//分组
Group = "CANLIN",//分组
MinValue = 0,
MaxValue = 100,
Unit = "℃",
@@ -858,7 +864,10 @@ namespace CapMachine.Wpf.Services
InitialPLCCom();
PubRtDataStart();
//拓展的参数信息
CurSysExdInfo = new SysExdInfo(SiemensDrive);
//PubRtDataStart();
}
@@ -1060,6 +1069,11 @@ namespace CapMachine.Wpf.Services
/// </summary>
private OperateResult<bool[]> OperateResultAlarm { get; set; }
/// <summary>
/// 时间诊断
/// </summary>
private Stopwatch DiagnosticsTime { get; set; } = new Stopwatch();
/// <summary>
/// PLC扫描线程
/// </summary>
@@ -1071,10 +1085,11 @@ namespace CapMachine.Wpf.Services
while (ThreadEnable)
{
await Task.Delay(10);
//await Task.Delay(5);
await Task.CompletedTask;
//DiagnosticsTime.Reset();
//DiagnosticsTime.Start();
DiagnosticsTime.Reset();
DiagnosticsTime.Start();
try
{
//TagInfo.RtValue.Value++;
@@ -1114,13 +1129,34 @@ namespace CapMachine.Wpf.Services
TagManger.GetTagInfoValueByName<short>(itemTag.Value.Name)!.IsShow = IsValueShow;
////仿真数据
////TagManger.GetTagInfoValueByName<short>(itemTag.Value.Name)!.Value = (short)Random.Next(1, 100);
////TagManger.GetTagByName<short>(itemTag.Value.Name).EngPvValue = (short)Random.Next(1, 100) * 1.0 / TagManger.GetTagByName<short>(itemTag.Value.Name)!.Precision;
////LinkState = false;
//TagManger.GetTagInfoValueByName<short>(itemTag.Value.Name)!.Value = (short)Random.Next(1, 100);
//TagManger.GetTagByName<short>(itemTag.Value.Name).EngPvValue = (short)Random.Next(1, 100) * 1.0 / TagManger.GetTagByName<short>(itemTag.Value.Name)!.Precision;
//LinkState = false;
//PLC 数据
if (!string.IsNullOrEmpty(itemTag.Value.PVAddress))
{
//反写CANLIN速度数据到PLC,提前写入PLC后面会回读PV值
if (itemTag.Value.NameNoUnit == "转速")
{
switch (ConfigService.CanLinRunStateModel.CurSysSelectedCanLin)
{
case CanLinEnum.Can:
//通信转速 Dbc中间配置名称的转速数据读取出来 给PLC
SiemensDrive.Write(itemTag.Value.PVAddress, (short)CanDriveService.GetDbcSpeedValueBySpeedName("通讯转速"));
//itemTag.Value.EngPvValue = 0;
break;
case CanLinEnum.Lin:
//通信转速 Dbc中间配置名称的转速数据读取出来 给PLC
SiemensDrive.Write(itemTag.Value.PVAddress, (short)LinDriveService.GetLdfSpeedValueBySpeedName("通讯转速"));
//itemTag.Value.EngPvValue = 0;
break;
default:
break;
}
}
OperateResultShort = SiemensDrive.ReadInt16(itemTag.Value.PVAddress);
if (OperateResultShort.IsSuccess)
{
@@ -1133,17 +1169,34 @@ namespace CapMachine.Wpf.Services
LinkState = false;
}
//CAN数据读取 //回读CAN通信的数据到集合中
//CAN组合并且在循环接收数据中时才读取数据
if (itemTag.Value.Group == "CAN")
//根据CANLIN的选择读取对应的解析实时数据更新到数据中心,这些数据相当于都是PV的实时数据
switch (ConfigService.CanLinRunStateModel.CurSysSelectedCanLin)
{
//回读CAN通信的DBC集合数据到集合中
itemTag.Value.EngPvValue = CanDriveService.GetDbcValueByName(itemTag.Value.NameNoUnit);
case CanLinEnum.Can:
//CAN数据读取 //回读CAN通信的数据到集合中
//CAN组合并且在循环接收数据中时才读取数据
if (itemTag.Value.Group == "CANLIN")
{
//回读CAN通信的DBC集合数据到集合中
itemTag.Value.EngPvValue = CanDriveService.GetDbcValueByName(itemTag.Value.NameNoUnit);
}
break;
case CanLinEnum.Lin:
//LIN数据读取 //回读LIN通信的数据到集合中
//LIN组合并且在循环接收数据中时才读取数据
if (itemTag.Value.Group == "CANLIN")
{
//回读LIN通信的DBC集合数据到集合中
itemTag.Value.EngPvValue = LinDriveService.GetLdfValueByName(itemTag.Value.NameNoUnit);
}
break;
default:
break;
}
}
else //地址为空PLC驱动不读取数据
{
}
if (!string.IsNullOrEmpty(itemTag.Value.SVAddress))
@@ -1207,7 +1260,6 @@ namespace CapMachine.Wpf.Services
}
}
//循环读取手自动切换
foreach (var item in ListHandSwitchData)
{
@@ -1218,7 +1270,12 @@ namespace CapMachine.Wpf.Services
}
}
//拓展信息的展示
foreach (var itemQuickTag in CurSysExdInfo.QuickTags)
{
itemQuickTag.OperateResultSource = SiemensDrive.Read(itemQuickTag.ValueAddress, itemQuickTag.ByteLength);
}
CurSysExdInfo.SumRunTime();
}
catch (Exception ex)
@@ -1227,9 +1284,9 @@ namespace CapMachine.Wpf.Services
}
//DiagnosticsTime.Stop();
//ScanRtTimeinfo = $"电表{DiagnosticsTime.Elapsed.TotalMilliseconds.ToString()}";
DiagnosticsTime.Stop();
ConfigService.PlcCycleTime = (int)DiagnosticsTime.Elapsed.TotalMilliseconds;
//Console.WriteLine($"扫描时间{DiagnosticsTime.Elapsed.TotalMilliseconds.ToString()}");
}
});
}