重新设计了标签变量系统

This commit is contained in:
2025-03-20 23:51:17 +08:00
parent 89a9ef54f0
commit df07efe5b6
23 changed files with 3178 additions and 789 deletions

View File

@@ -50,14 +50,18 @@ namespace CapMachine.Wpf.ViewModels
//赋值实例化
ListHandSwitchData = MachineRtDataService.ListHandSwitchData;
ListTag = new ObservableCollection<ITag>(TagManager.DicTags.Values.ToList());
ListMeterTag = TagManager.DicTags.Values.Where(a => a.IsMeter == true).ToList();
//ListTag = new ObservableCollection<ITag>(TagManager.DicTags.Values.ToList());
RefreshListTag();
ListMeterTag = TagManager.DicTags.Values.Where(a => a.Group == "程序").OrderBy(a=>a.Id).Take(11).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("通讯母线电压[V]");
ComCapBusCurTag = TagManager.DicTags.GetValueOrDefault("通讯母线电流[A]");
ComCapPwTag = TagManager.DicTags.GetValueOrDefault("通讯功率[W]");
@@ -89,6 +93,34 @@ namespace CapMachine.Wpf.ViewModels
new ChartRtValue(){ Name="湿度",Value=12.3,Unit="%"},
};
private List<string> _FilterGroups = new List<string> { "程序", "采集", "压缩机" };
/// <summary>
/// 动态过滤(支持运行时更改过滤条件)
/// </summary>
public List<string> FilterGroups
{
get => _FilterGroups;
set
{
_FilterGroups = value;
RaisePropertyChanged();
RefreshListTag(); // 更新ListTag
}
}
/// <summary>
/// 动态过滤ListTag支持运行时更改过滤条件
/// </summary>
private void RefreshListTag()
{
ListTag = new ObservableCollection<ITag>(
TagManager.DicTags.Values.Where(tag =>
FilterGroups.Contains(tag.Group) || FilterGroups.Count == 0
).OrderBy(a => a.Id).ToList()
);
}
private ObservableCollection<ITag> _ListTag;
/// <summary>
/// 标签集合信息
@@ -241,7 +273,7 @@ namespace CapMachine.Wpf.ViewModels
MachineRtDataService.SysStart();
//开始记录数据
DataRecordService.StartRecord();
}
break;
@@ -389,6 +421,7 @@ namespace CapMachine.Wpf.ViewModels
return _AutoHandCmd;
}
}
/// <summary>
/// 操作指令执行方法
/// </summary>
@@ -404,11 +437,15 @@ namespace CapMachine.Wpf.ViewModels
//
foreach (var item in TagManager.DicTags)
{
//用无单位的比较
if (item.Value.NameNoUnit == MeterControl.MeterName)
{
if (!string.IsNullOrEmpty(item.Value.AutoHandSwitchAddress))
if (TagManager.TryGetShortControlTagByName(item.Value.Name, out ShortControlTag? shortControlTag))
{
var Result = MachineRtDataService.SiemensDrive.Write(item.Value.AutoHandSwitchAddress, MeterControl.AutoHandState == true ? (short)1 : (short)0);
if (!string.IsNullOrEmpty(shortControlTag!.MVAutoHandModel.Address))
{
var Result = MachineRtDataService.SiemensDrive.Write(shortControlTag!.MVAutoHandModel.Address, MeterControl.AutoHandState == true ? (short)1 : (short)0);
}
}
break;
}
@@ -450,22 +487,29 @@ namespace CapMachine.Wpf.ViewModels
//
foreach (var item in TagManager.DicTags)
{
//用无单位的比较
if (item.Value.NameNoUnit == ChannelValue.Name)
{
switch (ChannelValue.Type)
{
case "MV"://10的倍率
if (!string.IsNullOrEmpty(item.Value.MVAddress))
if (TagManager.TryGetMVModel(item.Value.Name, out MeterValueAttrCell? MvcontrolAttrCell))
{
var Result = MachineRtDataService.SiemensDrive.Write(item.Value.MVAddress, (short)((double)ChannelValue.Value * 10));
break;
if (!string.IsNullOrEmpty(MvcontrolAttrCell!.Address))
{
var Result = MachineRtDataService.SiemensDrive.Write(MvcontrolAttrCell!.Address, (short)((double)ChannelValue.Value * 10));
break;
}
}
break;
case "SV":
if (!string.IsNullOrEmpty(item.Value.SVAddress))
if (TagManager.TryGetSVModel(item.Value.Name, out MeterValueAttrCell? sVcontrolAttrCell))
{
var Result = MachineRtDataService.SiemensDrive.Write(item.Value.SVAddress, (short)((double)ChannelValue.Value * item.Value.Precision));
break;
if (!string.IsNullOrEmpty(sVcontrolAttrCell!.Address))
{
var Result = MachineRtDataService.SiemensDrive.Write(sVcontrolAttrCell!.Address, (short)((double)ChannelValue.Value * item.Value.Precision));
break;
}
}
break;
default: