diff --git a/CapMachine.Core/ConfigHelper.cs b/CapMachine.Core/ConfigHelper.cs index a361eaa..58797f1 100644 --- a/CapMachine.Core/ConfigHelper.cs +++ b/CapMachine.Core/ConfigHelper.cs @@ -55,5 +55,14 @@ namespace CapMachine.Core ConfigurationManager.AppSettings.Remove(key); } + /// + /// 判断Key是否存在 + /// + /// + /// + public static bool IsExist(string key) + { + return ConfigurationManager.AppSettings[key] != null; + } } } diff --git a/CapMachine.Wpf/App.config b/CapMachine.Wpf/App.config index f00b9b7..a902ac6 100644 --- a/CapMachine.Wpf/App.config +++ b/CapMachine.Wpf/App.config @@ -10,5 +10,6 @@ + \ No newline at end of file diff --git a/CapMachine.Wpf/CapMachine.Wpf.csproj b/CapMachine.Wpf/CapMachine.Wpf.csproj index 601c025..5f97789 100644 --- a/CapMachine.Wpf/CapMachine.Wpf.csproj +++ b/CapMachine.Wpf/CapMachine.Wpf.csproj @@ -744,6 +744,9 @@ PreserveNewest + + PreserveNewest + diff --git a/CapMachine.Wpf/Models/Tag/BaseTag.cs b/CapMachine.Wpf/Models/Tag/BaseTag.cs new file mode 100644 index 0000000..e0e7fb3 --- /dev/null +++ b/CapMachine.Wpf/Models/Tag/BaseTag.cs @@ -0,0 +1,102 @@ +using Prism.Mvvm; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace CapMachine.Wpf.Models.Tag +{ + public abstract class BaseTag : BindableBase, ITag + { + + #region 公共属性 + + /// + /// Id + /// + public long Id { get; set; } + + /// + /// 名称 中文 + /// + public string Name { get; set; } + + /// + /// 名称 英文 + /// + public string EnName { get; set; } + + /// + /// 名称 无单位中文名称 + /// + public string NameNoUnit { get; set; } + + /// + /// 标签组 + /// + public string Group { get; set; } + + /// + /// 数据类型信息 + /// + public TagDataType DataType { get; set; } + + /// + /// 读写信息 + /// + public RWInfo RWInfo { get; set; } + + /// + /// 最大值 + /// + public double MaxValue { get; set; } + + /// + /// 最小值 + /// + public double MinValue { get; set; } + + /// + /// 精度 到PLC的转换精度/分辨率 + /// + public short Precision { get; set; } + + /// + /// 小数点 展示时用的小数点 + /// + public short DecimalPoint { get; set; } + + /// + /// 单位 + /// + public string? Unit { get; set; } + + /// + /// 是否为仪表参数 + /// + public bool IsMeter { get; set; } = true; + + /// + /// PV 工程值 字符串 + /// + public string? PVEngValueStr { get; set; } + + /// + /// 手自动切换地址 ++ + /// + public string AutoHandSwitchAddress { get; set; } + + /// + /// 地址 ++ + /// + public string MVAddress { get; set; } + + /// + /// 地址 ++ + /// + public string SVAddress { get; set; } + + #endregion + } +} diff --git a/CapMachine.Wpf/Models/Tag/CalcTag.cs b/CapMachine.Wpf/Models/Tag/CalcTag.cs new file mode 100644 index 0000000..fc5242c --- /dev/null +++ b/CapMachine.Wpf/Models/Tag/CalcTag.cs @@ -0,0 +1,20 @@ +using CapMachine.Wpf.Models.Tag.Cell; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace CapMachine.Wpf.Models.Tag +{ + /// + /// 计算得到的标签 + /// + public class CalcTag : BaseTag + { + /// + /// PV Value Model + /// + public QuickAttrCell? PVModel { get; set; } + } +} diff --git a/CapMachine.Wpf/Models/Tag/CapTag.cs b/CapMachine.Wpf/Models/Tag/CapTag.cs new file mode 100644 index 0000000..23bd4bc --- /dev/null +++ b/CapMachine.Wpf/Models/Tag/CapTag.cs @@ -0,0 +1,20 @@ +using CapMachine.Wpf.Models.Tag.Cell; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace CapMachine.Wpf.Models.Tag +{ + /// + /// 压缩机通信标签 + /// + public class CapTag : BaseTag + { + /// + /// PV Value Model + /// + public QuickAttrCell? PVModel { get; set; } + } +} diff --git a/CapMachine.Wpf/Models/Tag/Cell/MeterExdAttrCell.cs b/CapMachine.Wpf/Models/Tag/Cell/MeterExdAttrCell.cs new file mode 100644 index 0000000..79ba278 --- /dev/null +++ b/CapMachine.Wpf/Models/Tag/Cell/MeterExdAttrCell.cs @@ -0,0 +1,62 @@ +using Prism.Mvvm; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace CapMachine.Wpf.Models.Tag.Cell +{ + /// + /// 标签信息仪表值拓展属性单元 + /// 比如 PID Limit ALARM的值信息 + /// + public class MeterExdAttrCell : BindableBase + { + /// + /// 地址 + /// + public string? Address { get; set; } + + /// + /// 启用 + /// + public bool? Enable { get; set; } = true; + + ///// + ///// 读取的块信息 + ///// 人工确认 + ///// + //public string? Block { get; set; } + + ///// + ///// 读取的块信息的Index + ///// + //public short BlockIndex { get; set; } + + private double _EngValue; + /// + /// 工程值 SV + /// + public double EngValue + { + get { return _EngValue; } + set + { + _EngValue = value; + RaisePropertyChanged(); + //EngValueStr = Math.Round(value, DecimalPoint).ToString(); + } + } + + private string? _EngValueStr; + /// + /// 工程值的字符串 MV + /// + public string? EngValueStr + { + get { return _EngValueStr; } + set { _EngValueStr = value; RaisePropertyChanged(); } + } + } +} diff --git a/CapMachine.Wpf/Models/Tag/Cell/MeterValueAttrCell.cs b/CapMachine.Wpf/Models/Tag/Cell/MeterValueAttrCell.cs new file mode 100644 index 0000000..d60bc9e --- /dev/null +++ b/CapMachine.Wpf/Models/Tag/Cell/MeterValueAttrCell.cs @@ -0,0 +1,107 @@ +using Prism.Mvvm; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace CapMachine.Wpf.Models.Tag.Cell +{ + /// + /// 标签信息的主要仪表值的属性单元 + /// 比如SV PV MV等主要数据的属性单元 + /// + public class MeterValueAttrCell : BindableBase + { + /// + /// 实例化构造函数 + /// + /// + /// + public MeterValueAttrCell() + { + + } + + /// + /// 地址 + /// + public string? Address { get; set; } + + /// + /// 启用 + /// + public bool? Enable { get; set; } = true; + + /// + /// 读取的块信息 + /// 人工确认 + /// + public string? Block { get; set; } + + /// + /// 读取的块信息的Index + /// + public short BlockIndex { get; set; } + + /// + /// 精度 到PLC的转换精度/分辨率 + /// 引用的属性信息 + /// + public short Precision { get; set; } + + /// + /// 小数点 展示时用的小数点 + /// 引用的属性信息 + /// + public short DecimalPoint { get; set; } + + private short _EngSrcValue = -1; + /// + /// PLC的原始值 SV + /// + public short EngSrcValue + { + get { return _EngSrcValue; } + set + { + //有改动的话则更新 + if (value != _EngSrcValue) + { + _EngSrcValue = value; + //原始数据转换成工程值 + EngValue = _EngSrcValue * 1.0 / Precision; + } + } + } + + private double _EngValue; + /// + /// 工程值 SV + /// + public double EngValue + { + get { return _EngValue; } + set + { + if (value != _EngValue) + { + _EngValue = value; + RaisePropertyChanged(); + //工程值转换成字符串,可以灵活显示 + EngValueStr = Math.Round(value, DecimalPoint).ToString(); + } + } + } + + private string? _EngValueStr; + /// + /// 工程值的字符串 MV + /// + public string? EngValueStr + { + get { return _EngValueStr; } + set { _EngValueStr = value; RaisePropertyChanged(); } + } + } +} diff --git a/CapMachine.Wpf/Models/Tag/Cell/MvAmAttrCell.cs b/CapMachine.Wpf/Models/Tag/Cell/MvAmAttrCell.cs new file mode 100644 index 0000000..d3a60e7 --- /dev/null +++ b/CapMachine.Wpf/Models/Tag/Cell/MvAmAttrCell.cs @@ -0,0 +1,66 @@ +using Prism.Mvvm; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace CapMachine.Wpf.Models.Tag.Cell +{ + /// + /// MV的手自动的值的属性 + /// + public class MvAmAttrCell : BindableBase + { + /// + /// 地址 + /// + public string? Address { get; set; } + + /// + /// 启用 + /// + public bool? Enable { get; set; } = true; + + /// + /// 读取的块信息 + /// 人工确认 + /// + public string? Block { get; set; } + + /// + /// 读取的块信息的Index + /// + public short BlockIndex { get; set; } + + private short _EngSrcValue = -1; + /// + /// PLC的原始值 + /// 手自动的切换应该没有转换,直接0和1的区别,直接使用工程的原值 + /// + public short EngSrcValue + { + get { return _EngSrcValue; } + set + { + //有改动的话则更新 + if (value != _EngSrcValue) + { + _EngSrcValue = value; + //原始数据转换成工程值 + EngValueStr = _EngSrcValue.ToString(); + } + } + } + + private string? _EngValueStr; + /// + /// 工程值的字符串 MV + /// + public string? EngValueStr + { + get { return _EngValueStr; } + set { _EngValueStr = value; RaisePropertyChanged(); } + } + } +} diff --git a/CapMachine.Wpf/Models/Tag/Cell/QuickAttrCell.cs b/CapMachine.Wpf/Models/Tag/Cell/QuickAttrCell.cs new file mode 100644 index 0000000..5274822 --- /dev/null +++ b/CapMachine.Wpf/Models/Tag/Cell/QuickAttrCell.cs @@ -0,0 +1,52 @@ +using Prism.Mvvm; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace CapMachine.Wpf.Models.Tag.Cell +{ + /// + /// 快速属性标签 + /// + public class QuickAttrCell : BindableBase + { + /// + /// 地址 PLC分配的地址 + /// 可能分配给PLC展示用,也可能不使用 + /// + public string? Address { get; set; } + + /// + /// 启用 + /// + public bool? Enable { get; set; } = true; + + private double _EngValue; + /// + /// 工程值 SV + /// + public double EngValue + { + get { return _EngValue; } + set + { + _EngValue = value; + RaisePropertyChanged(); + //EngValueStr = Math.Round(value, DecimalPoint).ToString(); + EngValueStr = value.ToString(); + } + } + + private string? _EngValueStr; + /// + /// 工程值的字符串 + /// + public string? EngValueStr + { + get { return _EngValueStr; } + set { _EngValueStr = value; RaisePropertyChanged(); } + } + } +} diff --git a/CapMachine.Wpf/Models/Tag/ITag.cs b/CapMachine.Wpf/Models/Tag/ITag.cs index a7d5cbe..14ed49e 100644 --- a/CapMachine.Wpf/Models/Tag/ITag.cs +++ b/CapMachine.Wpf/Models/Tag/ITag.cs @@ -6,6 +6,11 @@ namespace CapMachine.Wpf.Models.Tag /// public interface ITag { + /// + /// Id + /// + long Id { get; set; } + /// /// 中文名称 /// @@ -31,42 +36,6 @@ namespace CapMachine.Wpf.Models.Tag /// string? Unit { get; set; } - /// - /// 工程值 PV - /// - double EngPvValue { get; set; } - - /// - /// 工程值的字符串 PV - /// - string EngPvValueStr { get; set; } - - /// - /// 工程值 Sv - /// - double EngSvValue { get; set; } - - /// - /// 工程值的字符串 Sv - /// - string EngSvValueStr { get; set; } - - /// - /// 工程值 Mv - /// - double EngMvValue { get; set; } - - /// - /// 工程值的字符串 Mv - /// - string EngMvValueStr { get; set; } - - - /// - /// MV - /// - double MVValue { get; set; } - /// /// 最大值 /// @@ -78,29 +47,14 @@ namespace CapMachine.Wpf.Models.Tag double MinValue { get; set; } /// - /// 值类型 + /// 标签值类型 /// - Type ValueType { get; set; } + TagDataType DataType { get; set; } /// - /// 地址 + /// 标签读写信息 /// - string PVAddress { get; set; } - - /// - /// 地址 - /// - string SVAddress { get; set; } - - /// - /// 地址 - /// - string MVAddress { get; set; } - - /// - /// Index - /// - string Index { get; set; } + RWInfo RWInfo { get; set; } /// /// 精度 @@ -116,6 +70,25 @@ namespace CapMachine.Wpf.Models.Tag /// 是否为仪表参数 /// bool IsMeter { get; set; } + + /// + /// PV 工程值 字符串 + /// UI展示用 + /// + string? PVEngValueStr { get; set; } + /// + /// ++ + /// string AutoHandSwitchAddress { get; set; } + + /// + /// 地址 ++ + /// + string MVAddress { get; set; } + + /// + /// 地址 ++ + /// + string SVAddress { get; set; } } } diff --git a/CapMachine.Wpf/Models/Tag/RWInfo.cs b/CapMachine.Wpf/Models/Tag/RWInfo.cs new file mode 100644 index 0000000..f691632 --- /dev/null +++ b/CapMachine.Wpf/Models/Tag/RWInfo.cs @@ -0,0 +1,35 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace CapMachine.Wpf.Models.Tag +{ + /// + /// 读写信息 + /// + public enum RWInfo + { + /// + /// 控制 + /// + Control = 1, + + /// + /// 从PLC读取 + /// + PLCRead = 2, + + /// + /// 从压缩机读取 + /// + CapRead = 5, + + /// + /// 计算 + /// + PCCalcu = 8, + + } +} diff --git a/CapMachine.Wpf/Models/Tag/ShortControlTag.cs b/CapMachine.Wpf/Models/Tag/ShortControlTag.cs new file mode 100644 index 0000000..873e73d --- /dev/null +++ b/CapMachine.Wpf/Models/Tag/ShortControlTag.cs @@ -0,0 +1,122 @@ +using CapMachine.Wpf.Models.Tag.Cell; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace CapMachine.Wpf.Models.Tag +{ + /// + /// Short类型 步序控制 标签数据 + /// 当前的数据无论是整型、浮点数等其他数据都是用Short表示,然后根据精度运算成所需数据 + /// 如果后期其他项目不是这样处理,则新建其他类对应 + /// + public class ShortControlTag : BaseTag + { + /// + /// 构造函数 + /// + public ShortControlTag() + { + + } + + /// + /// 初始化数据 + /// + public void UpdateInit() + { + PVModel!.DecimalPoint = this.DecimalPoint; + PVModel!.Precision = this.Precision; + + SVModel!.DecimalPoint = this.DecimalPoint; + SVModel!.Precision = this.Precision; + + //MV的值是固定到0-100,不需要转换 + MVModel!.DecimalPoint = 0; + MVModel!.Precision = 1; + } + + /// + /// PV Model + /// + public MeterValueAttrCell PVModel { get; set; } + + /// + /// SV Model + /// + public MeterValueAttrCell SVModel { get; set; } + + /// + /// MV Model + /// + public MeterValueAttrCell MVModel { get; set; } + + /// + /// AutoHand Model + /// 仪表的MV手动和自动 模型 + /// + public MvAmAttrCell MVAutoHandModel { get; set; } + + /// + /// Pid-P + /// + public MeterExdAttrCell Pid_PModel { get; set; } + + /// + /// Pid-I + /// + public MeterExdAttrCell Pid_IModel { get; set; } + + /// + /// Pid-D + /// + public MeterExdAttrCell Pid_DModel { get; set; } + + /// + /// Limit-Up + /// + public MeterExdAttrCell Limit_UpModel { get; set; } + + /// + /// Limit-Down + /// + public MeterExdAttrCell Limit_DownModel { get; set; } + + /// + /// Alarm + /// + public MeterExdAttrCell AlarmModel { get; set; } + + + private bool _AutoHandState; + /// + /// 手自动状态 + /// + public bool AutoHandState + { + get { return _AutoHandState; } + set { _AutoHandState = value; RaisePropertyChanged(); } + } + + private string _StepExeInfo = "--"; + /// + /// 步骤执行的信息 + /// 作为主界面的Meter当前步骤的数据的信息 + /// + public string StepExeInfo + { + get { return _StepExeInfo; } + set { _StepExeInfo = value; RaisePropertyChanged(); } + } + + + + ///// + ///// 手自动切换地址 + ///// + //public string AutoHandSwitchAddress { get; set; } + + } +} diff --git a/CapMachine.Wpf/Models/Tag/ShortValueTag.cs b/CapMachine.Wpf/Models/Tag/ShortValueTag.cs new file mode 100644 index 0000000..fbba85d --- /dev/null +++ b/CapMachine.Wpf/Models/Tag/ShortValueTag.cs @@ -0,0 +1,30 @@ +using CapMachine.Wpf.Models.Tag.Cell; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace CapMachine.Wpf.Models.Tag +{ + /// + /// Short类型 标签数据 + /// 这个版本的标签数据取代控制参数,因为当前版本是PLC下发步骤数据,不需要程序操作进行,那么跟北厂的那个就不一样了,把ShortValueTag拓展整合了数据。 + /// + public class ShortValueTag : BaseTag + { + /// + /// PV Model + /// + public MeterValueAttrCell PVModel { get; set; } + + /// + /// 初始化数据 + /// + public void UpdateInit() + { + PVModel!.DecimalPoint = this.DecimalPoint; + PVModel!.Precision = this.Precision; + } + } +} diff --git a/CapMachine.Wpf/Models/Tag/Tag.cs b/CapMachine.Wpf/Models/Tag/Tag.cs deleted file mode 100644 index 719dc74..0000000 --- a/CapMachine.Wpf/Models/Tag/Tag.cs +++ /dev/null @@ -1,288 +0,0 @@ -using HslCommunication; -using Prism.Mvvm; - -namespace CapMachine.Wpf.Models.Tag -{ - /// - /// 基础模型 - /// - public class Tag : BindableBase, ITag - { - /// - /// 实例化函数 - /// - /// - /// - /// - public Tag(string nameNoUnit, string name, string enName, string group, string PVaddress, double maxValue, double minValue, short precision, string unit, ITagValue tagValue, bool isMeter) - { - Group = group; - Name = name; - Unit = unit; - EnName = enName; - PVAddress = PVaddress; - MaxValue = maxValue; - MinValue = minValue; - Precision = precision; - - IsMeter = isMeter; - - NameNoUnit = nameNoUnit; - - //实例化 - TagValue = tagValue; - ValueType = typeof(T); - - } - - /// - /// 实例化函数 - /// - /// - /// - /// - public Tag(ITagValue tagValue) - { - //实例化 - TagValue = tagValue; - ValueType = typeof(T); - - } - - /// - /// 实例化函数 - /// - /// - /// - /// - public Tag() - { - //实例化 - ValueType = typeof(T); - - } - - /// - /// 名称 中文 - /// - public string Name { get; set; } - - /// - /// 名称 英文 - /// - public string EnName { get; set; } - - /// - /// 名称 无单位中文名称 - /// - public string NameNoUnit { get; set; } - - /// - /// 标签组 - /// - public string Group { get; set; } - - ///// - ///// 实时值 - ///// - //public abstract IRegisterValue RtValue { get; set; } - - private ITagValue _TagValue; - /// - /// 实时值 - /// - public ITagValue TagValue - { - get { return _TagValue; } - set { _TagValue = value; RaisePropertyChanged(); } - } - - /// - /// 原始值实时值 - /// - public OperateResult OperateResultSource { get; set; } // - - /// - /// 数据类型信息 - /// - public Type ValueType { get; set; } - - /// - /// 地址信息 PV - /// - public string PVAddress { get; set; } - - /// - /// 地址信息 SV - /// - public string SVAddress { get; set; } - - /// - /// 地址信息 MV - /// - public string MVAddress { get; set; } - - /// - /// 地址信息 Index - /// - public string Index { get; set; } - - /// - /// 最大值 - /// - public double MaxValue { get; set; } - - /// - /// 最小值 - /// - public double MinValue { get; set; } - - /// - /// 精度 到PLC的转换精度/分辨率 - /// - public short Precision { get; set; } - - /// - /// 小数点 展示时用的小数点 - /// - public short DecimalPoint { get; set; } - - /// - /// 单位 - /// - public string? Unit { get; set; } - - /// - /// 采样周期 - /// - public int Samp { get; set; } - - /// - /// 是否为仪表参数 - /// - public bool IsMeter { get; set; } - - /// - /// 手自动切换地址 - /// - public string AutoHandSwitchAddress { get; set; } - - private bool _AutoHandState; - /// - /// 手自动状态 - /// - public bool AutoHandState - { - get { return _AutoHandState; } - set { _AutoHandState = value; RaisePropertyChanged(); } - } - - private double _EngSvValue; - /// - /// 工程值 SV - /// - public double EngSvValue - { - get { return _EngSvValue; } - set - { - _EngSvValue = value; - if (TagValue.IsShow) - { - RaisePropertyChanged(); - } - EngSvValueStr = Math.Round(value, DecimalPoint).ToString(); - } - } - - private string _EngSvValueStr; - /// - /// 工程值的字符串 SV - /// - public string EngSvValueStr - { - get { return _EngSvValueStr; } - set { _EngSvValueStr = value; RaisePropertyChanged(); } - } - - - private double _EngPvValue; - /// - /// 工程值 PV - /// - public double EngPvValue - { - get { return _EngPvValue; } - set - { - _EngPvValue = value; - if (TagValue.IsShow) - { - RaisePropertyChanged(); - } - EngPvValueStr = Math.Round(value, DecimalPoint).ToString(); - } - } - - private string _EngPvValueStr; - /// - /// 工程值的字符串 - /// - public string EngPvValueStr - { - get { return _EngPvValueStr; } - set { _EngPvValueStr = value; RaisePropertyChanged(); } - } - - - private double _EngMvValue; - /// - /// 工程值 MV - /// - public double EngMvValue - { - get { return _EngMvValue; } - set - { - _EngMvValue = value; - if (TagValue.IsShow) - { - RaisePropertyChanged(); - } - EngMvValueStr = value.ToString(); - } - } - - private string _EngMvValueStr; - /// - /// 工程值的字符串 MV - /// - public string EngMvValueStr - { - get { return _EngMvValueStr; } - set { _EngMvValueStr = value; RaisePropertyChanged(); } - } - - - private double _MVValue = 20; - /// - /// MV值 - /// 不是所有的数据都有MV值,只有仪表参数设置的有 - /// - public double MVValue - { - get { return _MVValue; } - set - { - _MVValue = value; - if (TagValue.IsShow) - { - RaisePropertyChanged(); - } - } - } - - - } - -} diff --git a/CapMachine.Wpf/Models/Tag/TagDataType.cs b/CapMachine.Wpf/Models/Tag/TagDataType.cs new file mode 100644 index 0000000..9bb92a0 --- /dev/null +++ b/CapMachine.Wpf/Models/Tag/TagDataType.cs @@ -0,0 +1,28 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace CapMachine.Wpf.Models.Tag +{ + /// + /// 标签的数据类型 + /// + public enum TagDataType + { + Short, + Int, + Long, + Float, + Double, + String, + Bool, + DateTime, + Byte, + UShort, + UInt, + ULong, + UByte + } +} diff --git a/CapMachine.Wpf/Models/Tag/TagManager.cs b/CapMachine.Wpf/Models/Tag/TagManager.cs index f263ebe..e0d33c7 100644 --- a/CapMachine.Wpf/Models/Tag/TagManager.cs +++ b/CapMachine.Wpf/Models/Tag/TagManager.cs @@ -1,4 +1,9 @@ -namespace CapMachine.Wpf.Models.Tag +using CapMachine.Wpf.Models.Tag.Cell; +using Newtonsoft.Json; +using System.Collections.Concurrent; +using System.IO; + +namespace CapMachine.Wpf.Models.Tag { /// /// 标签管理中心 @@ -17,23 +22,649 @@ /// /// 标签集合数据 /// - public Dictionary DicTags { get; set; } = new Dictionary(); + //public Dictionary DicTags { get; set; } = new Dictionary(); + + /// + /// 标签集合数据 + /// 线程安全 + /// + public readonly ConcurrentDictionary DicTags = new ConcurrentDictionary(); /// /// 增加标签 /// - public void AddTag(Tag baseTag) + public void AddTag(BaseTag baseTag) { DicTags[baseTag.Name] = baseTag; } /// - /// 获取标签信息 + /// PV锁 + /// + private static readonly object PvLock = new object(); + + + #region 获取标签的PVModel SVModel MVModel + + /// + /// 尝试获取标签的PVModel模型 + /// + /// 标签名称 + /// 输出的pVModel模型,如果获取失败则为null + /// 是否成功获取PV模型 + public bool TryGetPVModel(string tagName, out MeterValueAttrCell? pVModel) + { + lock (PvLock) + { + pVModel = null; + + if (string.IsNullOrEmpty(tagName)) + return false; + + // 尝试从字典中获取标签 + if (DicTags.TryGetValue(tagName, out var tag)) + { + // 尝试将标签转换为ShortControlTag + if (tag is ShortControlTag controlTag) + { + pVModel = controlTag.PVModel; + return true; + } + else if (tag is ShortValueTag shortTag) + { + pVModel = shortTag.PVModel; + return true; + } + return false; + } + return false; + } + + } + + + /// + /// 需要提前知道这个标签是CapTag标签,否则为空 + /// 尝试获取CapTag标签的PVModel模型 + /// 压缩机通信的标签 + /// + /// 标签名称 + /// 输出的pVModel模型,如果获取失败则为null + /// 是否成功获取PV模型 + public bool TryGetCapPVModel(string tagName, out QuickAttrCell? pVModel) + { + lock (PvLock) + { + pVModel = null; + + if (string.IsNullOrEmpty(tagName)) + return false; + + // 尝试从字典中获取标签 + if (DicTags.TryGetValue(tagName, out var tag)) + { + // 尝试将标签转换为ShortControlTag + if (tag is CapTag capTag) + { + pVModel = capTag.PVModel; + return true; + } + return false; + } + return false; + } + + } + + + /// + /// 尝试获取标签的PVModel模型 + /// 给数据记录使用 + /// + /// 标签名称 + /// 输出的pVModel模型,如果获取失败则为null + /// 是否成功获取PV模型 + public MeterValueAttrCell TryGetRecordPVModel(string tagName) + { + if (string.IsNullOrEmpty(tagName)) + return null; + + // 尝试从字典中获取标签 + if (DicTags.TryGetValue(tagName, out var tag)) + { + // 尝试将标签转换为ShortControlTag + if (tag is ShortControlTag controlTag) + { + return controlTag.PVModel; + } + else if (tag is ShortValueTag shortTag) + { + return shortTag.PVModel; + } + } + return null; + } + + /// + /// 尝试获取标签的PVModel模型的数据 + /// 给数据记录使用 + /// + /// 标签名称 + /// 输出的pVModel模型,如果获取失败则为null + /// 是否成功获取PV模型 + public double TryGetRecordPVValue(string tagName) + { + if (string.IsNullOrEmpty(tagName)) + return 0; + + // 尝试从字典中获取标签 + if (DicTags.TryGetValue(tagName, out var tag)) + { + // 尝试将标签转换为ShortControlTag + if (tag is ShortControlTag controlTag) + { + return controlTag.PVModel.EngValue; + } + else if (tag is ShortValueTag shortTag) + { + return shortTag.PVModel.EngValue; + } + else if (tag is CalcTag calcTag) + { + return calcTag.PVModel!.EngValue; + } + else if (tag is CapTag capTag) + { + return capTag.PVModel!.EngValue; + } + } + return 0; + } + + /// + /// 尝试获取标签的SVModel模型 + /// + /// 标签名称 + /// 输出的sVModel模型,如果获取失败则为null + /// 是否成功获取SV模型 + public bool TryGetSVModel(string tagName, out MeterValueAttrCell? sVModel) + { + sVModel = null; + + if (string.IsNullOrEmpty(tagName)) + return false; + + // 尝试从字典中获取标签 + if (DicTags.TryGetValue(tagName, out var tag)) + { + // 尝试将标签转换为ShortControlTag + if (tag is ShortControlTag controlTag) + { + sVModel = controlTag.SVModel; + return true; + } + return false; + } + return false; + } + + /// + /// 尝试获取标签的MVModel模型 + /// + /// 标签名称 + /// 输出的MVModel模型,如果获取失败则为null + /// 是否成功获取MV模型 + public bool TryGetMVModel(string tagName, out MeterValueAttrCell? mVModel) + { + mVModel = null; + + if (string.IsNullOrEmpty(tagName)) + return false; + + // 尝试从字典中获取标签 + if (DicTags.TryGetValue(tagName, out var tag)) + { + // 尝试将标签转换为ShortControlTag + if (tag is ShortControlTag controlTag) + { + mVModel = controlTag.MVModel; + return true; + } + return false; + } + return false; + } + + /// + /// 尝试获取标签的MVAm模型 + /// + /// 标签名称 + /// 输出的MVAmModel模型,如果获取失败则为null + /// 是否成功获取MV模型 + public bool TryGetMVAmModel(string tagName, out MvAmAttrCell? mVAmModel) + { + mVAmModel = null; + + if (string.IsNullOrEmpty(tagName)) + return false; + + // 尝试从字典中获取标签 + if (DicTags.TryGetValue(tagName, out var tag)) + { + // 尝试将标签转换为ShortControlTag + if (tag is ShortControlTag controlTag) + { + mVAmModel = controlTag.MVAutoHandModel; + return true; + } + return false; + } + return false; + } + + #endregion + + + + #region 获取控制属性的PID LIMIT ALARM + + /// + /// 尝试获取标签的PID_P模型 + /// + /// + /// + /// + public bool TryGetPidPModel(string tagName, out MeterExdAttrCell? pidPModel) + { + pidPModel = null; + + if (string.IsNullOrEmpty(tagName)) + return false; + + // 尝试从字典中获取标签 + if (DicTags.TryGetValue(tagName, out var tag)) + { + // 尝试将标签转换为ShortControlTag + if (tag is ShortControlTag controlTag) + { + pidPModel = controlTag.Pid_PModel; + return true; + } + } + return false; + } + + /// + /// 尝试获取标签的PID_I模型 + /// + /// + /// + /// + public bool TryGetPidIModel(string tagName, out MeterExdAttrCell? pidIModel) + { + pidIModel = null; + + if (string.IsNullOrEmpty(tagName)) + return false; + + // 尝试从字典中获取标签 + if (DicTags.TryGetValue(tagName, out var tag)) + { + // 尝试将标签转换为ShortControlTag + if (tag is ShortControlTag controlTag) + { + pidIModel = controlTag.Pid_IModel; + return true; + } + } + return false; + } + + /// + /// 尝试获取标签的PID_D模型 + /// + /// 标签名称 + /// 输出的PID_D模型,如果获取失败则为null + /// 是否成功获取PID_D模型 + public bool TryGetPidDModel(string tagName, out MeterExdAttrCell? pidDModel) + { + pidDModel = null; + + if (string.IsNullOrEmpty(tagName)) + return false; + + // 尝试从字典中获取标签 + if (DicTags.TryGetValue(tagName, out var tag)) + { + // 尝试将标签转换为ShortControlTag + if (tag is ShortControlTag controlTag) + { + pidDModel = controlTag.Pid_DModel; + return true; + } + } + return false; + } + + + /// + /// 尝试获取标签的limitUpModel模型 + /// + /// + /// + /// + public bool TryGetLimitUpModel(string tagName, out MeterExdAttrCell? limitUpModel) + { + limitUpModel = null; + + if (string.IsNullOrEmpty(tagName)) + return false; + + // 尝试从字典中获取标签 + if (DicTags.TryGetValue(tagName, out var tag)) + { + // 尝试将标签转换为ShortControlTag + if (tag is ShortControlTag controlTag) + { + limitUpModel = controlTag.Limit_UpModel; + return true; + } + } + return false; + } + + /// + /// 尝试获取标签的limitDownModel模型 + /// + /// + /// + /// + public bool TryGetLimitDownModel(string tagName, out MeterExdAttrCell? limitDownModel) + { + limitDownModel = null; + + if (string.IsNullOrEmpty(tagName)) + return false; + + // 尝试从字典中获取标签 + if (DicTags.TryGetValue(tagName, out var tag)) + { + // 尝试将标签转换为ShortControlTag + if (tag is ShortControlTag controlTag) + { + limitDownModel = controlTag.Limit_DownModel; + return true; + } + } + return false; + } + + /// + /// 尝试获取标签的Alarm模型 + /// + /// + /// + /// + public bool TryGetAlarmModel(string tagName, out MeterExdAttrCell? alarmModel) + { + alarmModel = null; + + if (string.IsNullOrEmpty(tagName)) + return false; + + // 尝试从字典中获取标签 + if (DicTags.TryGetValue(tagName, out var tag)) + { + // 尝试将标签转换为ShortControlTag + if (tag is ShortControlTag controlTag) + { + alarmModel = controlTag.AlarmModel; + return true; + } + return false; + } + return false; + } + + /// + /// 尝试获取标签的MvAmAttrCelll模型 + /// + /// + /// + /// + public bool TryGetMvAmModel(string tagName, out MvAmAttrCell? mvAmModel) + { + mvAmModel = null; + + if (string.IsNullOrEmpty(tagName)) + return false; + + // 尝试从字典中获取标签 + if (DicTags.TryGetValue(tagName, out var tag)) + { + // 尝试将标签转换为ShortControlTag + if (tag is ShortControlTag controlTag) + { + mvAmModel = controlTag.MVAutoHandModel; + return true; + } + return false; + } + return false; + } + + /// + /// 尝试获取标签的MvAmAttrCelll模型 + /// + /// + /// + /// + public bool TryGetQuickAttrModel(string tagName, out QuickAttrCell? quickAttrCell) + { + quickAttrCell = null; + + if (string.IsNullOrEmpty(tagName)) + return false; + + // 尝试从字典中获取标签 + if (DicTags.TryGetValue(tagName, out var tag)) + { + // 尝试将标签转换为ShortControlTag + if (tag is CapTag capTag) + { + quickAttrCell = capTag.PVModel; + return true; + } + else if (tag is CalcTag calcTag) + { + quickAttrCell = calcTag.PVModel; + return true; + } + return false; + } + return false; + } + + + #endregion + + + + #region 获取标签 + + + /// + /// 尝试获取ShortControlTag变量 + /// + /// + /// + /// + public bool TryGetShortControlTagByName(string name, out ShortControlTag? shortControlTag) + { + shortControlTag = null; + + if (string.IsNullOrEmpty(name)) + return false; + + // 尝试从字典中获取标签 + if (DicTags.TryGetValue(name, out var tag)) + { + // 尝试将标签转换为ShortControlTag + if (tag is ShortControlTag controlTag) + { + shortControlTag = controlTag; + return true; + } + } + return false; + } + + /// + /// 尝试获取ShortTag变量 + /// + /// + /// + /// + public bool TryGetShortTagByName(string name, out ShortValueTag? shortTag) + { + shortTag = null; + + if (string.IsNullOrEmpty(name)) + return false; + + // 尝试从字典中获取标签 + if (DicTags.TryGetValue(name, out var tag)) + { + // 尝试将标签转换为ShortControlTag + if (tag is ShortValueTag getshortTag) + { + shortTag = getshortTag; + return true; + } + } + return false; + } + + /// + /// 尝试获取CapTag变量 + /// + /// + /// + /// + public bool TryGetCapTagByName(string name, out CapTag? capTag) + { + capTag = null; + + if (string.IsNullOrEmpty(name)) + return false; + + // 尝试从字典中获取标签 + if (DicTags.TryGetValue(name, out var tag)) + { + // 尝试将标签转换为ShortControlTag + if (tag is CapTag getshortTag) + { + capTag = getshortTag; + return true; + } + } + return false; + } + + + /// + /// 尝试获取CalcTag变量 + /// + /// + /// + /// + public bool TryGetCalcTagByName(string name, out CalcTag? calcTag) + { + calcTag = null; + + if (string.IsNullOrEmpty(name)) + return false; + + // 尝试从字典中获取标签 + if (DicTags.TryGetValue(name, out var tag)) + { + // 尝试将标签转换为ShortControlTag + if (tag is CalcTag getshortTag) + { + calcTag = getshortTag; + return true; + } + } + return false; + } + + + /// + /// 检查标签是否为ShortControlTag标签类型 + /// + /// 标签名称 + /// 如果是ShortControlTag类型返回true,否则返回false + public bool IsShortControlTag(string tagName) + { + if (DicTags.TryGetValue(tagName, out var tag)) + { + return tag is ShortControlTag; + } + return false; + } + + /// + /// 检查标签是否为ShortTag标签类型 + /// + /// 标签名称 + /// 如果是ShortValueTag类型返回true,否则返回false + public bool IsShortTag(string tagName) + { + if (DicTags.TryGetValue(tagName, out var tag)) + { + return tag is ShortValueTag; + } + return false; + } + + + /// + /// 检查标签是否为CapTag标签类型 + /// + /// 标签名称 + /// 如果是CapTag类型返回true,否则返回false + public bool IsCapTag(string tagName) + { + if (DicTags.TryGetValue(tagName, out var tag)) + { + return tag is CapTag; + } + return false; + } + + + /// + /// 检查标签是否为CalcTag标签类型 + /// + /// 标签名称 + /// 如果是CalcTag类型返回true,否则返回false + public bool IsCalcTag(string tagName) + { + if (DicTags.TryGetValue(tagName, out var tag)) + { + return tag is CalcTag; + } + return false; + } + + + /// + /// 获取原始标签信息 /// /// /// /// - public Tag? GetTagByName(string name) + public BaseTag? GetBaseTagByName(string name) { //return ListTag.OfType>() // .FirstOrDefault(t => t.Name.Equals(name, StringComparison.OrdinalIgnoreCase)); @@ -41,47 +672,90 @@ // 尝试从字典中获取标签,并使用 as 关键字避免类型转换失败抛出异常 if (DicTags.TryGetValue(name, out var FindTag)) { - return FindTag as Tag;// 成功转换返回具体类型的标签,失败返回 null + return FindTag as BaseTag;// 成功转换返回具体类型的标签,失败返回 null + } + return null; + } + + + /// + /// 通过标签名称获取 ShortControlTag 信息 无返回是否为空 + /// + /// 标签名称 + /// 找到则返回ShortControlTag,否则返回null + public ShortControlTag? GetShortControlTagByName(string Name) + { + // 尝试从字典中获取标签 + if (DicTags.TryGetValue(Name, out var findTag)) + { + // 尝试转换为 ShortControlTag + return findTag as ShortControlTag; } return null; } /// - /// 获取标签的值 + /// 通过标签名称获取 ShortTag 信息 无返回是否为空 /// - /// /// /// - public T? GetTagValueByName(string name) + public ShortValueTag GetShortTagByName(string name) { - var FindTag = GetTagByName(name); - - // 如果找到标签,则返回其值,否则返回默认值 - if (FindTag != null) + // 尝试从字典中获取标签 + if (DicTags.TryGetValue(name, out var findTag)) { - return FindTag!.TagValue.Value; + // 尝试转换为 ShortControlTag + return findTag as ShortValueTag; } - - return default; + return null; } + + #endregion + + + #region 标签文件加载 + /// - /// 获取标签的值信息 + /// 从JSON配置文件加载标签 /// - /// - /// - /// - public ITagValue? GetTagInfoValueByName(string name) + /// 配置文件路径 + public void LoadTagsFromConfig(string configFilePath) { - var FindTag = GetTagByName(name); - - // 如果找到标签,则返回其值,否则返回默认值 - if (FindTag != null) + try { - return FindTag!.TagValue; - } + if (!File.Exists(configFilePath)) + { + throw new FileNotFoundException($"标签配置文件不存在: {configFilePath}"); + } - return default; + // 读取JSON文件 + string jsonContent = File.ReadAllText(configFilePath); + + // 反序列化JSON直接为ShortValueTag列表 + var tagList = JsonConvert.DeserializeObject>(jsonContent); + + if (tagList == null) + { + throw new InvalidOperationException("标签配置文件格式不正确或为空"); + } + + // 遍历标签并添加到TagManager + foreach (var tag in tagList) + { + // 初始化标签数据 + tag.UpdateInit(); + + // 添加标签到管理器 + AddTag(tag); + } + } + catch (Exception ex) + { + // 处理异常,记录日志或抛出更详细的异常 + throw new Exception($"加载标签配置文件时发生错误: {ex.Message}", ex); + } } + #endregion } } diff --git a/CapMachine.Wpf/Models/TagJsonConfig/TagConfigRoot.cs b/CapMachine.Wpf/Models/TagJsonConfig/TagConfigRoot.cs new file mode 100644 index 0000000..6d6b9c8 --- /dev/null +++ b/CapMachine.Wpf/Models/TagJsonConfig/TagConfigRoot.cs @@ -0,0 +1,15 @@ +using CapMachine.Wpf.Models.Tag; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace CapMachine.Wpf.Models.TagJsonConfig +{ + + public class TagConfigRoot + { + public List Tags { get; set; } = new List(); + } +} diff --git a/CapMachine.Wpf/Services/ConfigService.cs b/CapMachine.Wpf/Services/ConfigService.cs index 6b0348f..8b072dd 100644 --- a/CapMachine.Wpf/Services/ConfigService.cs +++ b/CapMachine.Wpf/Services/ConfigService.cs @@ -1,4 +1,5 @@ -using CapMachine.Model; +using CapMachine.Core; +using CapMachine.Model; using CapMachine.Model.CANLIN; using CapMachine.Wpf.Dtos; using CapMachine.Wpf.Models; @@ -23,6 +24,14 @@ namespace CapMachine.Wpf.Services EventAggregator = eventAggregator; DialogService = dialogService; + + if (ConfigHelper.IsExist("CsvFilePath")) + { + SaveCsvRootPath = ConfigHelper.GetValue("CsvFilePath"); + HighSpeedMsgSaveCsvRootPath = ConfigHelper.GetValue("CsvFilePath"); + } + + } diff --git a/CapMachine.Wpf/Services/DataRecordService.cs b/CapMachine.Wpf/Services/DataRecordService.cs index 81b814f..7466e19 100644 --- a/CapMachine.Wpf/Services/DataRecordService.cs +++ b/CapMachine.Wpf/Services/DataRecordService.cs @@ -440,7 +440,7 @@ namespace CapMachine.Wpf.Services //CycleTimer.Stop(); //先关闭定时器 var DataInfo = MachineRtDataService.TagManger.DicTags - .ToDictionary(kvp => kvp.Key, kvp => (object)kvp.Value.EngPvValue); + .ToDictionary(kvp => kvp.Key, kvp => (object)MachineRtDataService.TagManger.TryGetRecordPVValue(kvp.Value.Name)); DataInfo.Add("创建时间", DateTime.Now); var RecordData = new RecordChannelData() diff --git a/CapMachine.Wpf/Services/MachineRtDataService.cs b/CapMachine.Wpf/Services/MachineRtDataService.cs index 806a98f..11543cb 100644 --- a/CapMachine.Wpf/Services/MachineRtDataService.cs +++ b/CapMachine.Wpf/Services/MachineRtDataService.cs @@ -3,10 +3,12 @@ using CapMachine.Core; using CapMachine.Wpf.Dtos; using CapMachine.Wpf.Models; using CapMachine.Wpf.Models.Tag; +using CapMachine.Wpf.Models.Tag.Cell; using CapMachine.Wpf.PrismEvent; using HslCommunication; using HslCommunication.Profinet.Melsec; using HslCommunication.Profinet.Siemens; +using Org.BouncyCastle.Utilities; using Prism.Events; using Prism.Mvvm; using System; @@ -14,6 +16,7 @@ using System.Collections.Concurrent; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Diagnostics; +using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; @@ -147,697 +150,1027 @@ namespace CapMachine.Wpf.Services #region 标签管理 - ////三电 Sample - TagManger.AddTag(new Tag("转速", "转速[rpm]", "Speed", "程序", "VW15000", 100, 0, 1, "rpm", new ShortTagValue(), true) { DecimalPoint = 0,SVAddress= "VW14002" }); - TagManger.AddTag(new Tag("排气压力", "排气压力[BarA]", "ExPress", "程序", "VW15002", 100, 0, 100, "BarA", new ShortTagValue(), true) { DecimalPoint = 2 }); - TagManger.AddTag(new Tag("吸气压力", "吸气压力[BarA]", "InhPress", "程序", "VW15004", 100, 0, 100, "BarA", new ShortTagValue(), true) { DecimalPoint = 2 }); - TagManger.AddTag(new Tag("吸气温度", "吸气温度[℃]", "InhTemp", "程序", "VW15006", 100, 0, 10, "℃", new ShortTagValue(), true) { DecimalPoint = 1 }); - TagManger.AddTag(new Tag("COND1温度", "COND1温度[℃]", "Cond1Temp", "程序", "VW15008", 100, 0, 10, "℃", new ShortTagValue(), true) { DecimalPoint = 1 }); - TagManger.AddTag(new Tag("润滑油压力", "润滑油压力[BarA]", "LubePress", "程序", "VW15010", 100, 0, 100, "BarA", new ShortTagValue(), true) { DecimalPoint = 2 }); - TagManger.AddTag(new Tag("COND2压力", "COND2压力[BarA]", "Cond2Press", "程序", "VW15012", 100, 0, 100, "BarA", new ShortTagValue(), false) { DecimalPoint = 2 }); - TagManger.AddTag(new Tag("OCR", "OCR[%]", "OCR", "程序", "VW15014", 100, 0, 10, "%", new ShortTagValue(), true) { DecimalPoint = 1 }); - TagManger.AddTag(new Tag("HV[V]", "HV[V]", "HV", "程序", "VW15016", 100, 0, 10, "V", new ShortTagValue(), true) { DecimalPoint = 1 }); - TagManger.AddTag(new Tag("HV[A]", "HV[A]", "HVCur", "程序", "VW15018", 100, 0, 100, "A", new ShortTagValue(), false) { DecimalPoint = 2 }); - TagManger.AddTag(new Tag("HV[W]", "HV[W]", "HVPw", "程序", "VW15020", 100, 0, 1, "W", new ShortTagValue(), false) { DecimalPoint = 1 }); - TagManger.AddTag(new Tag("LV[V]", "LV[V]", "LV", "程序", "VW15022", 100, 0, 10, "V", new ShortTagValue(), true) { DecimalPoint = 2 }); - //TagManger.AddTag(new Tag("LV[A]", "LV[A]", "LVCur", "程序", "VW15024", 100, 0, 1, "A", new ShortTagValue(), false) { DecimalPoint = 1 }); - TagManger.AddTag(new Tag("LV[A]", "LV[A]", "LVCur", "程序", "VW15024", 100, 0, 100, "A", new ShortTagValue(), false) { DecimalPoint = 3 }); - TagManger.AddTag(new Tag("环境温度", "环境温度[℃]", "EnvTemp", "程序", "VW15026", 100, 0, 10, "℃", new ShortTagValue(), true) { DecimalPoint = 1 }); - //TagManger.AddTag(new Tag("环境湿度", "环境湿度[%]", "EnvRH", "程序", "VW15028", 100, 0, 10, "%", new ShortTagValue(), true) { DecimalPoint = 1 }); - TagManger.AddTag(new Tag("环境湿度", "环境湿度[%]", "EnvRH", "程序", "VW15028", 100, 0, 10, "%", new ShortTagValue(), true) { DecimalPoint = 1 }); - TagManger.AddTag(new Tag("OS1温度", "OS1温度[℃]", "OS1Temp", "程序", "VW15030", 100, 0, 10, "℃", new ShortTagValue(), false) { DecimalPoint = 1 }); - TagManger.AddTag(new Tag("OS2温度", "OS2温度[℃]", "OS2Temp", "程序", "VW15032", 100, 0, 10, "℃", new ShortTagValue(), false) { DecimalPoint = 1 }); - TagManger.AddTag(new Tag("COND2温度", "COND2温度[℃]", "Cond2Temp", "程序", "VW15034", 100, 0, 10, "℃", new ShortTagValue(), false) { DecimalPoint = 1 }); - TagManger.AddTag(new Tag("EVAP出口温度", "EVAP出口温度[℃]", "EVAPExpTemp", "程序", "VW15036", 100, 0, 10, "℃", new ShortTagValue(), false) { DecimalPoint = 1 }); - //TagManger.AddTag(new Tag("冷媒流量", "冷媒流量[L/min]", "VRV", "程序", "VW15038", 100, 0, 1, "L/min", new ShortTagValue(), false) { DecimalPoint = 1 }); - TagManger.AddTag(new Tag("冷媒流量", "冷媒流量[L/min]", "VRV", "程序", "VW15038", 100, 0, 10, "L/min", new ShortTagValue(), false) { DecimalPoint = 1 }); - TagManger.AddTag(new Tag("润滑油流量", "润滑油流量[L/min]", "LubeFlow", "程序", "VW15040", 100, 0, 10, "L/min", new ShortTagValue(), false) { DecimalPoint = 1 }); - TagManger.AddTag(new Tag("排气温度", "排气温度[℃]", "ExTemp", "程序", "VW15042", 100, 0, 10, "℃", new ShortTagValue(), true) { DecimalPoint = 1 }); - TagManger.AddTag(new Tag("膨胀阀前压力", "膨胀阀前压力[BarA]", "TxvFrPress", "程序", "VW15044", 100, 0, 100, "BarA", new ShortTagValue(), false) { DecimalPoint = 2 }); - TagManger.AddTag(new Tag("膨胀阀前温度", "膨胀阀前温度[℃]", "TxvFrTemp", "程序", "VW15046", 100, 0, 10, "℃", new ShortTagValue(), false) { DecimalPoint = 1 }); - TagManger.AddTag(new Tag("EVAP出口压力", "EVAP出口压力[BarA]", "EVAPExpPress", "程序", "VW15048", 100, 0, 100, "BarA", new ShortTagValue(), false) { DecimalPoint = 2 }); - TagManger.AddTag(new Tag("腔内压力", "腔内压力[BarA]", "IntrplPress", "程序", "VW15050", 100, 0, 100, "BarA", new ShortTagValue(), false) { DecimalPoint = 2 }); - TagManger.AddTag(new Tag("压缩机表面温度", "压缩机表面温度[℃]", "CapSurfTemp", "程序", "VW15052", 100, 0, 10, "℃", new ShortTagValue(), false) { DecimalPoint = 1 }); - TagManger.AddTag(new Tag("PTC流量", "PTC流量[L/min]", "PTCFlow", "程序", "VW15054", 100, 0, 10, "L/min", new ShortTagValue(), false) { DecimalPoint = 1 }); - TagManger.AddTag(new Tag("PTC入水温度", "PTC入水温度[℃]", "PTCEntTemp", "程序", "VW15056", 100, 0, 10, "℃", new ShortTagValue(), false) { DecimalPoint = 1 }); - TagManger.AddTag(new Tag("PTC出水温度", "PTC出水温度[℃]", "PTCExpTemp", "程序", "VW15058", 100, 0, 10, "℃", new ShortTagValue(), false) { DecimalPoint = 1 }); - - //TagManger.AddTag(new Tag("AT04_01", "AT04_01[℃]", "AT04_01Temp", "程序", "VW70", 100, 0, 10, "℃", new ShortTagValue(), false) { DecimalPoint = 1 }); - //TagManger.AddTag(new Tag("AT04_02", "AT04_02[℃]", "AT04_02Temp", "程序", "VW72", 100, 0, 10, "℃", new ShortTagValue(), false) { DecimalPoint = 1 }); - - TagManger.AddTag(new Tag("通讯Cmp母线电流", "通讯Cmp母线电流[A]", "ComCapBusCur", "程序", "VW15060", 100, 0, 100, "A", new ShortTagValue(), false) { DecimalPoint = 2 }); - TagManger.AddTag(new Tag("通讯Cmp母线电压", "通讯Cmp母线电压[V]", "ComCapBusVol", "程序", "VW15062", 100, 0, 1, "V", new ShortTagValue(), false) { DecimalPoint = 0 }); - TagManger.AddTag(new Tag("通讯Cmp逆变器温度", "通讯Cmp逆变器温度[℃]", "ComCapInvTemp", "程序", "VW15064", 100, 0, 1, "℃", new ShortTagValue(), false) { DecimalPoint = 0 }); - TagManger.AddTag(new Tag("通讯Cmp相电流", "通讯Cmp相电流[A]", "ComCapPhCur", "程序", "VW15066", 100, 0, 100, "A", new ShortTagValue(), false) { DecimalPoint = 2 }); - TagManger.AddTag(new Tag("通讯Cmp功率", "通讯Cmp功率[W]", "ComCapPw", "程序", "VW15068", 100, 0, 1, "W", new ShortTagValue(), false) { DecimalPoint = 1 }); - TagManger.AddTag(new Tag("通讯Cmp芯片温度", "通讯Cmp芯片温度[℃]", "ComCapChipTemp", "程序", "VW15070", 100, 0, 1, "℃", new ShortTagValue(), false) { DecimalPoint = 0 }); - - TagManger.AddTag(new Tag("通讯PTC入水温度", "通讯PTC入水温度[℃]", "ComPTCEntTemp", "程序", "VW15072", 100, 0, 10, "℃", new ShortTagValue(), false) { DecimalPoint = 1 }); - TagManger.AddTag(new Tag("通讯PTC出水温度", "通讯PTC出水温度[℃]", "ComPTCExpTemp", "程序", "VW15074", 100, 0, 10, "℃", new ShortTagValue(), false) { DecimalPoint = 1 }); - TagManger.AddTag(new Tag("通讯PTC峰值电流", "通讯PTC峰值电流[A]", "ComPTCPeakCur", "程序", "VW15076", 100, 0, 1, "A", new ShortTagValue(), false) { DecimalPoint = 1 }); - TagManger.AddTag(new Tag("通讯PTC母线电流", "通讯PTC母线电流[A]", "ComPTCBusCur", "程序", "VW15078", 100, 0, 100, "A", new ShortTagValue(), false) { DecimalPoint = 2 }); - TagManger.AddTag(new Tag("通讯PTC膜温", "通讯PTC膜温[℃]", "ComPTCFlmTemp", "程序", "VW15080", 100, 0, 1, "℃", new ShortTagValue(), false) { DecimalPoint = 0 }); - TagManger.AddTag(new Tag("通讯PTC模块温度", "通讯PTC模块温度[℃]", "ComPTCMdTemp", "程序", "VW15082", 100, 0, 1, "℃", new ShortTagValue(), false) { DecimalPoint = 0 }); - - TagManger.AddTag(new Tag("液冷媒流量", "液冷媒流量[L/min]", "LiqRefFlow", "程序", "VW15084", 100, 0, 10, "L/min", new ShortTagValue(), false) { DecimalPoint = 1 }); - TagManger.AddTag(new Tag("干度流量", "干度流量[L/min]", "DryFlow", "程序", "VW15086", 100, 0, 10, "L/min", new ShortTagValue(), false) { DecimalPoint = 1 }); - TagManger.AddTag(new Tag("H5吸气混合器温度", "H5吸气混合器温度[℃]", "H5InhMixTemp", "程序", "VW15088", 100, 0, 10, "℃", new ShortTagValue(), false) { DecimalPoint = 1 }); - TagManger.AddTag(new Tag("COND循环水温", "COND循环水温[℃]", "CONDCirWaterTemp", "程序", "VW15090", 100, 0, 10, "℃", new ShortTagValue(), false) { DecimalPoint = 1 }); - TagManger.AddTag(new Tag("SUBCOOL出口温度", "SUBCOOL出口温度[℃]", "SubcoolOutTemp", "程序", "VW15092", 100, 0, 10, "℃", new ShortTagValue(), false) { DecimalPoint = 1 }); - TagManger.AddTag(new Tag("吸气混合器出口温度", "吸气混合器出口温度[℃]", "InhMixOutTemp", "程序", "VW15094", 100, 0, 10, "℃", new ShortTagValue(), false) { DecimalPoint = 1 }); - TagManger.AddTag(new Tag("H1出口温度", "H1出口温度[℃]", "H1OutTemp", "程序", "VW15096", 100, 0, 10, "℃", new ShortTagValue(), false) { DecimalPoint = 1 }); - TagManger.AddTag(new Tag("S.C循环水温", "S.C循环水温[℃]", "SCCirWaterTemp", "程序", "VW15098", 100, 0, 10, "℃", new ShortTagValue(), false) { DecimalPoint = 1 }); - TagManger.AddTag(new Tag("EVAP循环水温", "EVAP循环水温[℃]", "EvapCirWaterTemp", "程序", "VW15100", 100, 0, 10, "℃", new ShortTagValue(), false) { DecimalPoint = 1 }); - TagManger.AddTag(new Tag("吸气混合器出口压力", "吸气混合器出口压力[BarA]", "InhMixOutPress", "程序", "VW15102", 100, 0, 10, "BarA", new ShortTagValue(), false) { DecimalPoint = 1 }); - - #endregion - - - #region SongZhi - - ////【SongZhi】 - - //TagManger.AddTag(new Tag(new ShortTagValue()) - //{ - // Name = "转速[rpm]",//名称带单位 - // NameNoUnit = "转速",//无单位名称 - // EnName = "Speed",//英文名称 - // Group = "程序",//分组 - // MinValue = 0, - // MaxValue = 100, - // Unit = "rpm", - // PVAddress = "VW100",//地址信息 - // SVAddress = "VW200", - // MVAddress = "VW242", - // IsMeter = true, - // AutoHandSwitchAddress = "VW240", - // Precision = 1, - // DecimalPoint = 0, - // Samp = 1, - // ValueType = typeof(short), - // Index = "", - //}); - //TagManger.AddTag(new Tag(new ShortTagValue()) - //{ - // Name = "排气压力[MpaA]",//名称带单位 - // NameNoUnit = "排气压力",//无单位名称 - // EnName = "ExPress",//英文名称 - // Group = "程序",//分组 - // MinValue = 0, - // MaxValue = 100, - // Unit = "MpaA", - // PVAddress = "VW102",//地址信息 - // SVAddress = "VW202", - // MVAddress = "VW242", - // IsMeter = true, - // AutoHandSwitchAddress = "VW240", - // Precision = 1000, - // DecimalPoint = 3, - // Samp = 1, - // ValueType = typeof(short), - // Index = "", - //}); - //TagManger.AddTag(new Tag(new ShortTagValue()) - //{ - // Name = "吸气压力[MpaA]",//名称带单位 - // NameNoUnit = "吸气压力",//无单位名称 - // EnName = "InhPress",//英文名称 - // Group = "程序",//分组 - // MinValue = 0, - // MaxValue = 100, - // Unit = "MpaA", - // PVAddress = "VW104",//地址信息 - // SVAddress = "VW204", - // MVAddress = "VW246", - // IsMeter = true, - // AutoHandSwitchAddress = "VW244", - // Precision = 1000, - // DecimalPoint = 3, - // Samp = 1, - // ValueType = typeof(short), - // Index = "", - //}); - //TagManger.AddTag(new Tag(new ShortTagValue()) - //{ - // Name = "吸气温度[℃]",//名称带单位 - // NameNoUnit = "吸气温度",//无单位名称 - // EnName = "InhTemp",//英文名称 - // Group = "程序",//分组 - // MinValue = 0, - // MaxValue = 100, - // Unit = "℃", - // PVAddress = "VW106",//地址信息 - // SVAddress = "VW206", - // MVAddress = "VW250", - // IsMeter = true, - // AutoHandSwitchAddress = "VW248", - // Precision = 10, - // DecimalPoint = 1, - // Samp = 1, - // ValueType = typeof(short), - // Index = "", - //}); - //TagManger.AddTag(new Tag(new ShortTagValue()) - //{ - // Name = "冷凝器出口水温[℃]",//名称带单位 COND1水温 - // NameNoUnit = "冷凝器出口水温",//无单位名称 - // EnName = "Cond1Temp",//英文名称 - // Group = "程序",//分组 - // MinValue = 0, - // MaxValue = 100, - // Unit = "℃", - // PVAddress = "VW108",//地址信息 - // SVAddress = "VW208", - // MVAddress = "VW254", - // IsMeter = true, - // AutoHandSwitchAddress = "VW252", - // Precision = 10, - // DecimalPoint = 1, - // Samp = 1, - // ValueType = typeof(short), - // Index = "", - //}); - //TagManger.AddTag(new Tag(new ShortTagValue()) - //{ - // Name = "吸气混合器温度[℃]",//名称带单位 OS2温度 - // NameNoUnit = "吸气混合器温度",//无单位名称 OS2温度 - // EnName = "OS2Temp",//英文名称 - // Group = "程序",//分组 - // MinValue = 0, - // MaxValue = 100, - // Unit = "℃", - // PVAddress = "VW110",//地址信息 - // SVAddress = "VW210", - // MVAddress = "VW258", - // IsMeter = true, - // AutoHandSwitchAddress = "VW256", - // Precision = 10, - // DecimalPoint = 1, - // Samp = 1, - // ValueType = typeof(short), - // Index = "", - //}); - //TagManger.AddTag(new Tag(new ShortTagValue()) - //{ - // Name = "HV_V[V]",//名称带单位 - // NameNoUnit = "HV_V",//无单位名称 - // EnName = "HV_V",//英文名称 - // Group = "程序",//分组 - // MinValue = 0, - // MaxValue = 100, - // Unit = "V", - // PVAddress = "VW112",//地址信息 - // SVAddress = "VW212", - // MVAddress = "VW262", - // IsMeter = true, - // AutoHandSwitchAddress = "VW260", - // Precision = 10, - // DecimalPoint = 1, - // Samp = 1, - // ValueType = typeof(short), - // Index = "", - //}); - //TagManger.AddTag(new Tag(new ShortTagValue()) - //{ - // Name = "HV_A[A]",//名称带单位 - // NameNoUnit = "HV_A",//无单位名称 - // EnName = "HV_A",//英文名称 - // Group = "程序",//分组 - // MinValue = 0, - // MaxValue = 100, - // Unit = "A", - // PVAddress = "VW114",//地址信息 - // SVAddress = "", - // MVAddress = "", - // IsMeter = false, - // Precision = 100, - // DecimalPoint = 2, - // Samp = 1, - // ValueType = typeof(short), - // Index = "", - //}); - //TagManger.AddTag(new Tag(new ShortTagValue()) - //{ - // Name = "HV_W[W]",//名称带单位 - // NameNoUnit = "HV_W",//无单位名称 - // EnName = "HV_W",//英文名称 - // Group = "程序",//分组 - // MinValue = 0, - // MaxValue = 100, - // Unit = "W", - // PVAddress = "VW116",//地址信息 - // SVAddress = "", - // MVAddress = "", - // IsMeter = false, - // Precision = 1, - // DecimalPoint = 0, - // Samp = 1, - // ValueType = typeof(short), - // Index = "", - //}); - //TagManger.AddTag(new Tag(new ShortTagValue()) - //{ - // Name = "LV_V[V]",//名称带单位 - // NameNoUnit = "LV_V",//无单位名称 - // EnName = "LV_V",//英文名称 - // Group = "程序",//分组 - // MinValue = 0, - // MaxValue = 100, - // Unit = "V", - // PVAddress = "VW118",//地址信息 - // SVAddress = "VW214", - // MVAddress = "", - // IsMeter = true, - // AutoHandSwitchAddress = "", - // Precision = 10, - // DecimalPoint = 1, - // Samp = 1, - // ValueType = typeof(short), - // Index = "", - //}); - //TagManger.AddTag(new Tag(new ShortTagValue()) - //{ - // Name = "LV_A[A]",//名称带单位 - // NameNoUnit = "LV_A",//无单位名称 - // EnName = "LV_A",//英文名称 - // Group = "程序",//分组 - // MinValue = 0, - // MaxValue = 100, - // Unit = "A", - // PVAddress = "VW120",//地址信息 - // SVAddress = "", - // MVAddress = "", - // IsMeter = false, - // Precision = 100, - // DecimalPoint = 2, - // Samp = 1, - // ValueType = typeof(short), - // Index = "", - //}); - //TagManger.AddTag(new Tag(new ShortTagValue()) - //{ - // Name = "试验箱温度[℃]",//名称带单位 - // NameNoUnit = "试验箱温度",//无单位名称 - // EnName = "EnvTemp",//英文名称 - // Group = "程序",//分组 - // MinValue = 0, - // MaxValue = 100, - // Unit = "℃", - // PVAddress = "VW122",//地址信息 - // SVAddress = "VW216", - // MVAddress = "", - // IsMeter = true, - // AutoHandSwitchAddress = "", - // Precision = 10, - // DecimalPoint = 1, - // Samp = 1, - // ValueType = typeof(short), - // Index = "", - //}); - //TagManger.AddTag(new Tag(new ShortTagValue()) - //{ - // Name = "试验箱湿度[%]",//名称带单位 - // NameNoUnit = "试验箱湿度",//无单位名称 - // EnName = "EnvRH",//英文名称 - // Group = "程序",//分组 - // MinValue = 0, - // MaxValue = 100, - // Unit = "%", - // PVAddress = "VW124",//地址信息 - // SVAddress = "VW218", - // MVAddress = "", - // IsMeter = true, - // AutoHandSwitchAddress = "", - // Precision = 10, - // DecimalPoint = 1, - // Samp = 1, - // ValueType = typeof(short), - // Index = "", - //}); - //TagManger.AddTag(new Tag(new ShortTagValue()) - //{ - // Name = "排气温度[℃]",//名称带单位 - // NameNoUnit = "排气温度",//无单位名称 - // EnName = "ExTemp",//英文名称 - // Group = "程序",//分组 - // MinValue = 0, - // MaxValue = 100, - // Unit = "℃", - // PVAddress = "VW126",//地址信息 - // SVAddress = "", - // MVAddress = "", - // IsMeter = false, - // Precision = 10, - // DecimalPoint = 1, - // Samp = 1, - // ValueType = typeof(short), - // Index = "", - //}); - //TagManger.AddTag(new Tag(new ShortTagValue()) - //{ - // Name = "膨胀阀前温度[℃]",//名称带单位 - // NameNoUnit = "膨胀阀前温度",//无单位名称 - // EnName = "TxvFrTemp",//英文名称 - // Group = "程序",//分组 - // MinValue = 0, - // MaxValue = 100, - // Unit = "℃", - // PVAddress = "VW128",//地址信息 - // SVAddress = "", - // MVAddress = "", - // IsMeter = false, - // Precision = 10, - // DecimalPoint = 1, - // Samp = 1, - // ValueType = typeof(short), - // Index = "", - //}); - //TagManger.AddTag(new Tag(new ShortTagValue()) - //{ - // Name = "膨胀阀前压力[MpaA]",//名称带单位 - // NameNoUnit = "膨胀阀前压力",//无单位名称 - // EnName = "TxvFrPress",//英文名称 - // Group = "程序",//分组 - // MinValue = 0, - // MaxValue = 100, - // Unit = "MpaA", - // PVAddress = "VW130",//地址信息 - // SVAddress = "", - // MVAddress = "", - // IsMeter = false, - // Precision = 1000, - // DecimalPoint = 3, - // Samp = 1, - // ValueType = typeof(short), - // Index = "", - //}); - //TagManger.AddTag(new Tag(new ShortTagValue()) - //{ - // Name = "冷凝器进口温度[℃]",//名称带单位 - // NameNoUnit = "冷凝器进口温度",//无单位名称 - // EnName = "CondInTemp",//英文名称 - // Group = "程序",//分组 - // MinValue = 0, - // MaxValue = 100, - // Unit = "℃", - // PVAddress = "VW132",//地址信息 - // SVAddress = "", - // MVAddress = "", - // IsMeter = false, - // Precision = 10, - // DecimalPoint = 1, - // Samp = 1, - // ValueType = typeof(short), - // Index = "", - //}); - //TagManger.AddTag(new Tag(new ShortTagValue()) - //{ - // Name = "冷凝器进口压力[MpaA]",//名称带单位 - // NameNoUnit = "冷凝器进口压力",//无单位名称 - // EnName = "CondInPress",//英文名称 - // Group = "程序",//分组 - // MinValue = 0, - // MaxValue = 100, - // Unit = "MpaA", - // PVAddress = "VW134",//地址信息 - // SVAddress = "", - // MVAddress = "", - // IsMeter = false, - // Precision = 1000, - // DecimalPoint = 3, - // Samp = 1, - // ValueType = typeof(short), - // Index = "", - //}); - //TagManger.AddTag(new Tag(new ShortTagValue()) - //{ - // Name = "水箱进水温度[℃]",//名称带单位 - // NameNoUnit = "水箱进水温度",//无单位名称 - // EnName = "WaterTankInTemp",//英文名称 - // Group = "程序",//分组 - // MinValue = 0, - // Unit = "℃", - // MaxValue = 100, - // PVAddress = "VW136",//地址信息 - // SVAddress = "", - // MVAddress = "", - // IsMeter = false, - // Precision = 10, - // DecimalPoint = 1, - // Samp = 1, - // ValueType = typeof(short), - // Index = "", - //}); - //TagManger.AddTag(new Tag(new ShortTagValue()) - //{ - // Name = "水加热温度H1[℃]",//名称带单位 - // NameNoUnit = "水加热温度H1",//无单位名称 - // EnName = "WaterHeatTempH1",//英文名称 - // Group = "程序",//分组 - // MinValue = 0, - // MaxValue = 100, - // Unit = "℃", - // PVAddress = "VW138",//地址信息 - // SVAddress = "", - // MVAddress = "", - // IsMeter = false, - // Precision = 10, - // DecimalPoint = 1, - // Samp = 1, - // ValueType = typeof(short), - // Index = "", - //}); - //TagManger.AddTag(new Tag(new ShortTagValue()) - //{ - // Name = "压缩机表面温度1[℃]",//名称带单位 - // NameNoUnit = "压缩机表面温度1",//无单位名称 - // EnName = "CapSurfTemp1",//英文名称 - // Group = "程序",//分组 - // MinValue = 0, - // MaxValue = 100, - // Unit = "℃", - // PVAddress = "VW140",//地址信息 - // SVAddress = "", - // MVAddress = "", - // IsMeter = false, - // Precision = 10, - // DecimalPoint = 1, - // Samp = 1, - // ValueType = typeof(short), - // Index = "", - //}); - //TagManger.AddTag(new Tag(new ShortTagValue()) - //{ - // Name = "压缩机表面温度2[℃]",//名称带单位 - // NameNoUnit = "压缩机表面温度2",//无单位名称 - // EnName = "CapSurfTemp2",//英文名称 - // Group = "程序",//分组 - // MinValue = 0, - // MaxValue = 100, - // Unit = "℃", - // PVAddress = "VW142",//地址信息 - // SVAddress = "", - // MVAddress = "", - // IsMeter = false, - // Precision = 10, - // DecimalPoint = 1, - // Samp = 1, - // ValueType = typeof(short), - // Index = "", - //}); - //TagManger.AddTag(new Tag(new ShortTagValue()) - //{ - // Name = "压缩机表面温度3[℃]",//名称带单位 - // NameNoUnit = "压缩机表面温度3",//无单位名称 - // EnName = "CapSurfTemp3",//英文名称 - // Group = "程序",//分组 - // MinValue = 0, - // MaxValue = 100, - // Unit = "℃", - // PVAddress = "VW144",//地址信息 - // SVAddress = "", - // MVAddress = "", - // IsMeter = false, - // Precision = 10, - // DecimalPoint = 1, - // Samp = 1, - // ValueType = typeof(short), - // Index = "", - //}); - //TagManger.AddTag(new Tag(new ShortTagValue()) - //{ - // Name = "通讯母线电压[V]",//名称带单位 - // NameNoUnit = "通讯母线电压",//无单位名称 - // EnName = "ComCapBusVol",//英文名称 - // Group = "CANLIN",//分组 - // MinValue = 0, - // MaxValue = 100, - // Unit = "V", - // PVAddress = "VW146",//地址信息 - // SVAddress = "", - // MVAddress = "", - // IsMeter = false, - // Precision = 10, - // DecimalPoint = 1, - // Samp = 1, - // ValueType = typeof(short), - // Index = "", - //}); - //TagManger.AddTag(new Tag(new ShortTagValue()) - //{ - // Name = "通讯母线电流[A]",//名称带单位 - // NameNoUnit = "通讯母线电流",//无单位名称 - // EnName = "ComCapBusCur",//英文名称 - // Group = "CANLIN",//分组 - // MinValue = 0, - // MaxValue = 100, - // Unit = "A", - // PVAddress = "VW148",//地址信息 - // SVAddress = "", - // MVAddress = "", - // IsMeter = false, - // Precision = 100, - // DecimalPoint = 2, - // Samp = 1, - // ValueType = typeof(short), - // Index = "", - //}); - //TagManger.AddTag(new Tag(new ShortTagValue()) - //{ - // Name = "通讯相电流[A]",//名称带单位 - // NameNoUnit = "通讯相电流",//无单位名称 - // EnName = "ComCapPhCur",//英文名称 - // Group = "CANLIN",//分组 - // MinValue = 0, - // MaxValue = 100, - // Unit = "A", - // PVAddress = "VW150",//地址信息 - // SVAddress = "", - // MVAddress = "", - // IsMeter = false, - // Precision = 100, - // DecimalPoint = 2, - // Samp = 1, - // ValueType = typeof(short), - // Index = "", - //}); - //TagManger.AddTag(new Tag(new ShortTagValue()) - //{ - // Name = "通讯功率[W]",//名称带单位 - // NameNoUnit = "通讯功率",//无单位名称 - // EnName = "ComCapPw",//英文名称 - // Group = "CANLIN",//分组 - // MinValue = 0, - // MaxValue = 100, - // Unit = "W", - // PVAddress = "VW152",//地址信息 - // SVAddress = "", - // MVAddress = "", - // IsMeter = false, - // Precision = 1000, - // DecimalPoint = 2, - // Samp = 1, - // ValueType = typeof(short), - // Index = "", - //}); - //TagManger.AddTag(new Tag(new ShortTagValue()) - //{ - // Name = "通讯芯片温度[℃]",//名称带单位 - // NameNoUnit = "通讯芯片温度",//无单位名称 - // EnName = "ComCapChipTemp",//英文名称 - // Group = "CANLIN",//分组 - // MinValue = 0, - // MaxValue = 100, - // Unit = "℃", - // PVAddress = "VW154",//地址信息 - // SVAddress = "", - // MVAddress = "", - // IsMeter = false, - // Precision = 10, - // DecimalPoint = 1, - // Samp = 1, - // ValueType = typeof(short), - // Index = "", - //}); - //TagManger.AddTag(new Tag(new ShortTagValue()) - //{ - // Name = "过冷度[K]",//名称带单位 - // NameNoUnit = "过冷度",//无单位名称 - // EnName = "Subcooling",//英文名称 - // Group = "计算",//分组 - // MinValue = 0, - // MaxValue = 100, - // Unit = "K", - // PVAddress = "",//地址信息 - // SVAddress = "", - // MVAddress = "", - // IsMeter = false, - // Precision = 10, - // DecimalPoint = 1, - // Samp = 1, - // ValueType = typeof(short), - // Index = "", - //}); - //TagManger.AddTag(new Tag(new ShortTagValue()) - //{ - // Name = "过热度[K]",//名称带单位 - // NameNoUnit = "过热度",//无单位名称 - // EnName = "Superheat",//英文名称 - // Group = "计算",//分组 - // MinValue = 0, - // MaxValue = 100, - // Unit = "K", - // PVAddress = "",//地址信息 - // SVAddress = "", - // MVAddress = "", - // IsMeter = false, - // Precision = 10, - // DecimalPoint = 1, - // Samp = 1, - // ValueType = typeof(short), - // Index = "", - //}); - - //#endregion - + //////三电 Sample + //TagManger.AddTag(new Tag("转速", "转速[rpm]", "Speed", "程序", "VW15000", 100, 0, 1, "rpm", new ShortTagValue(), true) { DecimalPoint = 0, SVAddress = "VW14002" }); + //TagManger.AddTag(new Tag("排气压力", "排气压力[BarA]", "ExPress", "程序", "VW15002", 100, 0, 100, "BarA", new ShortTagValue(), true) { DecimalPoint = 2 }); + //TagManger.AddTag(new Tag("吸气压力", "吸气压力[BarA]", "InhPress", "程序", "VW15004", 100, 0, 100, "BarA", new ShortTagValue(), true) { DecimalPoint = 2 }); + //TagManger.AddTag(new Tag("吸气温度", "吸气温度[℃]", "InhTemp", "程序", "VW15006", 100, 0, 10, "℃", new ShortTagValue(), true) { DecimalPoint = 1 }); + //TagManger.AddTag(new Tag("COND1温度", "COND1温度[℃]", "Cond1Temp", "程序", "VW15008", 100, 0, 10, "℃", new ShortTagValue(), true) { DecimalPoint = 1 }); + //TagManger.AddTag(new Tag("润滑油压力", "润滑油压力[BarA]", "LubePress", "程序", "VW15010", 100, 0, 100, "BarA", new ShortTagValue(), true) { DecimalPoint = 2 }); + //TagManger.AddTag(new Tag("COND2压力", "COND2压力[BarA]", "Cond2Press", "程序", "VW15012", 100, 0, 100, "BarA", new ShortTagValue(), false) { DecimalPoint = 2 }); //TagManger.AddTag(new Tag("OCR", "OCR[%]", "OCR", "程序", "VW15014", 100, 0, 10, "%", new ShortTagValue(), true) { DecimalPoint = 1 }); //TagManger.AddTag(new Tag("HV[V]", "HV[V]", "HV", "程序", "VW15016", 100, 0, 10, "V", new ShortTagValue(), true) { DecimalPoint = 1 }); - //TagManger.AddTag(new Tag("HV[A]", "HV[A]", "HVCur", "程序", "VW15018", 100, 0, 1, "A", new ShortTagValue(), false) { DecimalPoint = 1 }); + //TagManger.AddTag(new Tag("HV[A]", "HV[A]", "HVCur", "程序", "VW15018", 100, 0, 100, "A", new ShortTagValue(), false) { DecimalPoint = 2 }); //TagManger.AddTag(new Tag("HV[W]", "HV[W]", "HVPw", "程序", "VW15020", 100, 0, 1, "W", new ShortTagValue(), false) { DecimalPoint = 1 }); - //TagManger.AddTag(new Tag("LV[V]", "LV[V]", "LV", "程序", "VW15022", 100, 0, 10, "V", new ShortTagValue(), true) { DecimalPoint = 1 }); + //TagManger.AddTag(new Tag("LV[V]", "LV[V]", "LV", "程序", "VW15022", 100, 0, 10, "V", new ShortTagValue(), true) { DecimalPoint = 2 }); ////TagManger.AddTag(new Tag("LV[A]", "LV[A]", "LVCur", "程序", "VW15024", 100, 0, 1, "A", new ShortTagValue(), false) { DecimalPoint = 1 }); - //TagManger.AddTag(new Tag("LV[A]", "LV[A]", "LVCur", "程序", "VW15024", 100, 0, 100, "A", new ShortTagValue(), false) { DecimalPoint = 2 }); + //TagManger.AddTag(new Tag("LV[A]", "LV[A]", "LVCur", "程序", "VW15024", 100, 0, 100, "A", new ShortTagValue(), false) { DecimalPoint = 3 }); //TagManger.AddTag(new Tag("环境温度", "环境温度[℃]", "EnvTemp", "程序", "VW15026", 100, 0, 10, "℃", new ShortTagValue(), true) { DecimalPoint = 1 }); ////TagManger.AddTag(new Tag("环境湿度", "环境湿度[%]", "EnvRH", "程序", "VW15028", 100, 0, 10, "%", new ShortTagValue(), true) { DecimalPoint = 1 }); - //TagManger.AddTag(new Tag("环境湿度", "环境湿度[%]", "EnvRH", "程序", "VW15028", 100, 0, 1, "%", new ShortTagValue(), true) { DecimalPoint = 0 }); + //TagManger.AddTag(new Tag("环境湿度", "环境湿度[%]", "EnvRH", "程序", "VW15028", 100, 0, 10, "%", new ShortTagValue(), true) { DecimalPoint = 1 }); //TagManger.AddTag(new Tag("OS1温度", "OS1温度[℃]", "OS1Temp", "程序", "VW15030", 100, 0, 10, "℃", new ShortTagValue(), false) { DecimalPoint = 1 }); //TagManger.AddTag(new Tag("OS2温度", "OS2温度[℃]", "OS2Temp", "程序", "VW15032", 100, 0, 10, "℃", new ShortTagValue(), false) { DecimalPoint = 1 }); //TagManger.AddTag(new Tag("COND2温度", "COND2温度[℃]", "Cond2Temp", "程序", "VW15034", 100, 0, 10, "℃", new ShortTagValue(), false) { DecimalPoint = 1 }); //TagManger.AddTag(new Tag("EVAP出口温度", "EVAP出口温度[℃]", "EVAPExpTemp", "程序", "VW15036", 100, 0, 10, "℃", new ShortTagValue(), false) { DecimalPoint = 1 }); ////TagManger.AddTag(new Tag("冷媒流量", "冷媒流量[L/min]", "VRV", "程序", "VW15038", 100, 0, 1, "L/min", new ShortTagValue(), false) { DecimalPoint = 1 }); //TagManger.AddTag(new Tag("冷媒流量", "冷媒流量[L/min]", "VRV", "程序", "VW15038", 100, 0, 10, "L/min", new ShortTagValue(), false) { DecimalPoint = 1 }); - //TagManger.AddTag(new Tag("润滑油流量", "润滑油流量[L/min]", "LubeFlow", "程序", "VW15040", 100, 0, 1, "L/min", new ShortTagValue(), false) { DecimalPoint = 1 }); + //TagManger.AddTag(new Tag("润滑油流量", "润滑油流量[L/min]", "LubeFlow", "程序", "VW15040", 100, 0, 10, "L/min", new ShortTagValue(), false) { DecimalPoint = 1 }); //TagManger.AddTag(new Tag("排气温度", "排气温度[℃]", "ExTemp", "程序", "VW15042", 100, 0, 10, "℃", new ShortTagValue(), true) { DecimalPoint = 1 }); - //TagManger.AddTag(new Tag("膨胀阀前压力", "膨胀阀前压力[MpaA]", "TxvFrPress", "程序", "VW15044", 100, 0, 100, "MpaA", new ShortTagValue(), false) { DecimalPoint = 2 }); + //TagManger.AddTag(new Tag("膨胀阀前压力", "膨胀阀前压力[BarA]", "TxvFrPress", "程序", "VW15044", 100, 0, 100, "BarA", new ShortTagValue(), false) { DecimalPoint = 2 }); //TagManger.AddTag(new Tag("膨胀阀前温度", "膨胀阀前温度[℃]", "TxvFrTemp", "程序", "VW15046", 100, 0, 10, "℃", new ShortTagValue(), false) { DecimalPoint = 1 }); - //TagManger.AddTag(new Tag("EVAP出口压力", "EVAP出口压力[MpaA]", "EVAPExpPress", "程序", "VW15048", 100, 0, 100, "MpaA", new ShortTagValue(), false) { DecimalPoint = 2 }); - //TagManger.AddTag(new Tag("腔内压力", "腔内压力[MpaA]", "IntrplPress", "程序", "VW15050", 100, 0, 100, "MpaA", new ShortTagValue(), false) { DecimalPoint = 2 }); + //TagManger.AddTag(new Tag("EVAP出口压力", "EVAP出口压力[BarA]", "EVAPExpPress", "程序", "VW15048", 100, 0, 100, "BarA", new ShortTagValue(), false) { DecimalPoint = 2 }); + //TagManger.AddTag(new Tag("腔内压力", "腔内压力[BarA]", "IntrplPress", "程序", "VW15050", 100, 0, 100, "BarA", new ShortTagValue(), false) { DecimalPoint = 2 }); //TagManger.AddTag(new Tag("压缩机表面温度", "压缩机表面温度[℃]", "CapSurfTemp", "程序", "VW15052", 100, 0, 10, "℃", new ShortTagValue(), false) { DecimalPoint = 1 }); - //TagManger.AddTag(new Tag("PTC流量", "PTC流量[L/min]", "PTCFlow", "程序", "VW15054", 100, 0, 1, "L/min", new ShortTagValue(), false) { DecimalPoint = 1 }); + //TagManger.AddTag(new Tag("PTC流量", "PTC流量[L/min]", "PTCFlow", "程序", "VW15054", 100, 0, 10, "L/min", new ShortTagValue(), false) { DecimalPoint = 1 }); //TagManger.AddTag(new Tag("PTC入水温度", "PTC入水温度[℃]", "PTCEntTemp", "程序", "VW15056", 100, 0, 10, "℃", new ShortTagValue(), false) { DecimalPoint = 1 }); //TagManger.AddTag(new Tag("PTC出水温度", "PTC出水温度[℃]", "PTCExpTemp", "程序", "VW15058", 100, 0, 10, "℃", new ShortTagValue(), false) { DecimalPoint = 1 }); - //TagManger.AddTag(new Tag("通讯Cmp母线电流", "通讯Cmp母线电流[A]", "ComCapBusCur", "程序", "VW15060", 100, 0, 1, "A", new ShortTagValue(), false) { DecimalPoint = 1 }); - //TagManger.AddTag(new Tag("通讯Cmp母线电压", "通讯Cmp母线电压[V]", "ComCapBusVol", "程序", "VW15062", 100, 0, 10, "V", new ShortTagValue(), false) { DecimalPoint = 1 }); - //TagManger.AddTag(new Tag("通讯Cmp逆变器温度", "通讯Cmp逆变器温度[℃]", "ComCapInvTemp", "程序", "VW15064", 100, 0, 10, "℃", new ShortTagValue(), false) { DecimalPoint = 1 }); - //TagManger.AddTag(new Tag("通讯Cmp相电流", "通讯Cmp相电流[A]", "ComCapPhCur", "程序", "VW15066", 100, 0, 1, "A", new ShortTagValue(), false) { DecimalPoint = 1 }); + + ////TagManger.AddTag(new Tag("AT04_01", "AT04_01[℃]", "AT04_01Temp", "程序", "VW70", 100, 0, 10, "℃", new ShortTagValue(), false) { DecimalPoint = 1 }); + ////TagManger.AddTag(new Tag("AT04_02", "AT04_02[℃]", "AT04_02Temp", "程序", "VW72", 100, 0, 10, "℃", new ShortTagValue(), false) { DecimalPoint = 1 }); + + //TagManger.AddTag(new Tag("通讯Cmp母线电流", "通讯Cmp母线电流[A]", "ComCapBusCur", "程序", "VW15060", 100, 0, 100, "A", new ShortTagValue(), false) { DecimalPoint = 2 }); + //TagManger.AddTag(new Tag("通讯Cmp母线电压", "通讯Cmp母线电压[V]", "ComCapBusVol", "程序", "VW15062", 100, 0, 1, "V", new ShortTagValue(), false) { DecimalPoint = 0 }); + //TagManger.AddTag(new Tag("通讯Cmp逆变器温度", "通讯Cmp逆变器温度[℃]", "ComCapInvTemp", "程序", "VW15064", 100, 0, 1, "℃", new ShortTagValue(), false) { DecimalPoint = 0 }); + //TagManger.AddTag(new Tag("通讯Cmp相电流", "通讯Cmp相电流[A]", "ComCapPhCur", "程序", "VW15066", 100, 0, 100, "A", new ShortTagValue(), false) { DecimalPoint = 2 }); //TagManger.AddTag(new Tag("通讯Cmp功率", "通讯Cmp功率[W]", "ComCapPw", "程序", "VW15068", 100, 0, 1, "W", new ShortTagValue(), false) { DecimalPoint = 1 }); - //TagManger.AddTag(new Tag("通讯Cmp芯片温度", "通讯Cmp芯片温度[℃]", "ComCapChipTemp", "程序", "VW15070", 100, 0, 10, "℃", new ShortTagValue(), false) { DecimalPoint = 1 }); + //TagManger.AddTag(new Tag("通讯Cmp芯片温度", "通讯Cmp芯片温度[℃]", "ComCapChipTemp", "程序", "VW15070", 100, 0, 1, "℃", new ShortTagValue(), false) { DecimalPoint = 0 }); + //TagManger.AddTag(new Tag("通讯PTC入水温度", "通讯PTC入水温度[℃]", "ComPTCEntTemp", "程序", "VW15072", 100, 0, 10, "℃", new ShortTagValue(), false) { DecimalPoint = 1 }); //TagManger.AddTag(new Tag("通讯PTC出水温度", "通讯PTC出水温度[℃]", "ComPTCExpTemp", "程序", "VW15074", 100, 0, 10, "℃", new ShortTagValue(), false) { DecimalPoint = 1 }); //TagManger.AddTag(new Tag("通讯PTC峰值电流", "通讯PTC峰值电流[A]", "ComPTCPeakCur", "程序", "VW15076", 100, 0, 1, "A", new ShortTagValue(), false) { DecimalPoint = 1 }); - //TagManger.AddTag(new Tag("通讯PTC母线电流", "通讯PTC母线电流[A]", "ComPTCBusCur", "程序", "VW15078", 100, 0, 1, "A", new ShortTagValue(), false) { DecimalPoint = 1 }); - //TagManger.AddTag(new Tag("通讯PTC膜温", "通讯PTC膜温[℃]", "ComPTCFlmTemp", "程序", "VW15080", 100, 0, 10, "℃", new ShortTagValue(), false) { DecimalPoint = 1 }); - //TagManger.AddTag(new Tag("通讯PTC模块温度", "通讯PTC模块温度[℃]", "ComPTCMdTemp", "程序", "VW15082", 100, 0, 10, "℃", new ShortTagValue(), false) { DecimalPoint = 1 }); + //TagManger.AddTag(new Tag("通讯PTC母线电流", "通讯PTC母线电流[A]", "ComPTCBusCur", "程序", "VW15078", 100, 0, 100, "A", new ShortTagValue(), false) { DecimalPoint = 2 }); + //TagManger.AddTag(new Tag("通讯PTC膜温", "通讯PTC膜温[℃]", "ComPTCFlmTemp", "程序", "VW15080", 100, 0, 1, "℃", new ShortTagValue(), false) { DecimalPoint = 0 }); + //TagManger.AddTag(new Tag("通讯PTC模块温度", "通讯PTC模块温度[℃]", "ComPTCMdTemp", "程序", "VW15082", 100, 0, 1, "℃", new ShortTagValue(), false) { DecimalPoint = 0 }); + + //TagManger.AddTag(new Tag("液冷媒流量", "液冷媒流量[L/min]", "LiqRefFlow", "程序", "VW15084", 100, 0, 10, "L/min", new ShortTagValue(), false) { DecimalPoint = 1 }); + //TagManger.AddTag(new Tag("干度流量", "干度流量[L/min]", "DryFlow", "程序", "VW15086", 100, 0, 10, "L/min", new ShortTagValue(), false) { DecimalPoint = 1 }); + //TagManger.AddTag(new Tag("H5吸气混合器温度", "H5吸气混合器温度[℃]", "H5InhMixTemp", "程序", "VW15088", 100, 0, 10, "℃", new ShortTagValue(), false) { DecimalPoint = 1 }); + //TagManger.AddTag(new Tag("COND循环水温", "COND循环水温[℃]", "CONDCirWaterTemp", "程序", "VW15090", 100, 0, 10, "℃", new ShortTagValue(), false) { DecimalPoint = 1 }); + //TagManger.AddTag(new Tag("SUBCOOL出口温度", "SUBCOOL出口温度[℃]", "SubcoolOutTemp", "程序", "VW15092", 100, 0, 10, "℃", new ShortTagValue(), false) { DecimalPoint = 1 }); + //TagManger.AddTag(new Tag("吸气混合器出口温度", "吸气混合器出口温度[℃]", "InhMixOutTemp", "程序", "VW15094", 100, 0, 10, "℃", new ShortTagValue(), false) { DecimalPoint = 1 }); + //TagManger.AddTag(new Tag("H1出口温度", "H1出口温度[℃]", "H1OutTemp", "程序", "VW15096", 100, 0, 10, "℃", new ShortTagValue(), false) { DecimalPoint = 1 }); + //TagManger.AddTag(new Tag("S.C循环水温", "S.C循环水温[℃]", "SCCirWaterTemp", "程序", "VW15098", 100, 0, 10, "℃", new ShortTagValue(), false) { DecimalPoint = 1 }); + //TagManger.AddTag(new Tag("EVAP循环水温", "EVAP循环水温[℃]", "EvapCirWaterTemp", "程序", "VW15100", 100, 0, 10, "℃", new ShortTagValue(), false) { DecimalPoint = 1 }); + //TagManger.AddTag(new Tag("吸气混合器出口压力", "吸气混合器出口压力[BarA]", "InhMixOutPress", "程序", "VW15102", 100, 0, 10, "BarA", new ShortTagValue(), false) { DecimalPoint = 1 }); + + #region 标签管理 + // 从配置文件加载标签 + string tagConfigPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "TagConfig", "SysTags.json"); + try + { + TagManger.LoadTagsFromConfig(tagConfigPath); + Debug.WriteLine("已成功从配置文件加载标签"); + } + catch (Exception ex) + { + // 处理异常,如记录日志 + Debug.WriteLine($"加载标签配置文件失败: {ex.Message}"); + // 可以在这里添加备用的手动添加标签的代码 + } + #endregion + + //TagManger.LoadTagsFromConfig("E:\\MyTest\\VS2022\\CapMachine\\CapMachine\\CapMachine.Wpf\\TagConfig\\ShortTags.json"); + + //TagManger.AddTag(new ShortValueTag() + //{ + // Id = 10, + // Name = "转速[rpm]", + // NameNoUnit = "转速", + // EnName = "Speed", + // Group = "采集", + // MinValue = 0, + // MaxValue = 10000, + // IsMeter = false, + // DecimalPoint = 0, + // Precision = 1, + // Unit = "rpm", + // DataType = TagDataType.Short, + // RWInfo = RWInfo.PLCRead, + // PVModel = new MeterValueAttrCell() { Address = "VW15000", EngValue = 0, EngValueStr = "", Block = "PV", BlockIndex = 0 }, + //}); + //TagManger.AddTag(new ShortValueTag() + //{ + // Id = 20, + // Name = "排气压力[BarA]", + // NameNoUnit = "排气压力", + // EnName = "ExPress", + // Group = "采集", + // MinValue = 0, + // MaxValue = 10000, + // IsMeter = false, + // DecimalPoint = 0, + // Precision = 100, + // Unit = "BarA", + // DataType = TagDataType.Short, + // RWInfo = RWInfo.PLCRead, + // PVModel = new MeterValueAttrCell() { Address = "VW15002", EngValue = 0, EngValueStr = "", Block = "PV", BlockIndex = 2 }, + //}); + + //TagManger.AddTag(new ShortValueTag() + //{ + // Id = 30, + // Name = "吸气压力[BarA]", + // NameNoUnit = "吸气压力", + // EnName = "InhPress", + // Group = "采集", + // MinValue = 0, + // MaxValue = 10000, + // IsMeter = false, + // DecimalPoint = 0, + // Precision = 100, + // Unit = "BarA", + // DataType = TagDataType.Short, + // RWInfo = RWInfo.PLCRead, + // PVModel = new MeterValueAttrCell() { Address = "VW15004", EngValue = 0, EngValueStr = "", Block = "PV", BlockIndex = 4 }, + //}); + + //TagManger.AddTag(new ShortValueTag() + //{ + // Id = 40, + // Name = "吸气温度[℃]", + // NameNoUnit = "吸气温度", + // EnName = "InhTemp", + // Group = "采集", + // MinValue = 0, + // MaxValue = 10000, + // IsMeter = false, + // DecimalPoint = 0, + // Precision = 10, + // Unit = "℃", + // DataType = TagDataType.Short, + // RWInfo = RWInfo.PLCRead, + // PVModel = new MeterValueAttrCell() { Address = "VW15006", EngValue = 0, EngValueStr = "", Block = "PV", BlockIndex = 6 }, + //}); + + //TagManger.AddTag(new ShortValueTag() + //{ + // Id = 50, + // Name = "COND1温度[℃]", + // NameNoUnit = "COND1温度", + // EnName = "Cond1Temp", + // Group = "采集", + // MinValue = 0, + // MaxValue = 10000, + // IsMeter = false, + // DecimalPoint = 0, + // Precision = 10, + // Unit = "℃", + // DataType = TagDataType.Short, + // RWInfo = RWInfo.PLCRead, + // PVModel = new MeterValueAttrCell() { Address = "VW15008", EngValue = 0, EngValueStr = "", Block = "PV", BlockIndex = 8 }, + //}); + + //TagManger.AddTag(new ShortValueTag() + //{ + // Id = 60, + // Name = "润滑油压力[BarA]", + // NameNoUnit = "润滑油压力", + // EnName = "LubePress", + // Group = "采集", + // MinValue = 0, + // MaxValue = 10000, + // IsMeter = false, + // DecimalPoint = 0, + // Precision = 100, + // Unit = "BarA", + // DataType = TagDataType.Short, + // RWInfo = RWInfo.PLCRead, + // PVModel = new MeterValueAttrCell() { Address = "VW15010", EngValue = 0, EngValueStr = "", Block = "PV", BlockIndex = 10 }, + //}); + + //TagManger.AddTag(new ShortValueTag() + //{ + // Id = 70, + // Name = "COND2压力[BarA]", + // NameNoUnit = "COND2压力", + // EnName = "Cond2Press", + // Group = "采集", + // MinValue = 0, + // MaxValue = 10000, + // IsMeter = false, + // DecimalPoint = 0, + // Precision = 100, + // Unit = "BarA", + // DataType = TagDataType.Short, + // RWInfo = RWInfo.PLCRead, + // PVModel = new MeterValueAttrCell() { Address = "VW15012", EngValue = 0, EngValueStr = "", Block = "PV", BlockIndex = 12 }, + //}); + + + //TagManger.AddTag(new ShortValueTag() + //{ + // Id = 80, + // Name = "OCR[%]", + // NameNoUnit = "OCR", + // EnName = "OCR", + // Group = "采集", + // MinValue = 0, + // MaxValue = 10000, + // IsMeter = false, + // DecimalPoint = 0, + // Precision = 10, + // Unit = "%", + // DataType = TagDataType.Short, + // RWInfo = RWInfo.PLCRead, + // PVModel = new MeterValueAttrCell() { Address = "VW15014", EngValue = 0, EngValueStr = "", Block = "PV", BlockIndex = 14 }, + //}); + + //TagManger.AddTag(new ShortValueTag() + //{ + // Id = 90, + // Name = "HV[V]", + // NameNoUnit = "HV[V]", + // EnName = "HV", + // Group = "采集", + // MinValue = 0, + // MaxValue = 10000, + // IsMeter = false, + // DecimalPoint = 0, + // Precision = 10, + // Unit = "V", + // DataType = TagDataType.Short, + // RWInfo = RWInfo.PLCRead, + // PVModel = new MeterValueAttrCell() { Address = "VW15016", EngValue = 0, EngValueStr = "", Block = "PV", BlockIndex = 16 }, + //}); + + //TagManger.AddTag(new ShortValueTag() + //{ + // Id = 100, + // Name = "HV[A]", + // NameNoUnit = "HV[A]", + // EnName = "HVCur", + // Group = "采集", + // MinValue = 0, + // MaxValue = 10000, + // IsMeter = false, + // DecimalPoint = 0, + // Precision = 100, + // Unit = "A", + // DataType = TagDataType.Short, + // RWInfo = RWInfo.PLCRead, + // PVModel = new MeterValueAttrCell() { Address = "VW15018", EngValue = 0, EngValueStr = "", Block = "PV", BlockIndex = 18 }, + //}); + + //TagManger.AddTag(new ShortValueTag() + //{ + // Id = 110, + // Name = "HV[W]", + // NameNoUnit = "HV[W]", + // EnName = "HVPw", + // Group = "采集", + // MinValue = 0, + // MaxValue = 10000, + // IsMeter = false, + // DecimalPoint = 0, + // Precision = 1, + // Unit = "W", + // DataType = TagDataType.Short, + // RWInfo = RWInfo.PLCRead, + // PVModel = new MeterValueAttrCell() { Address = "VW15020", EngValue = 0, EngValueStr = "", Block = "PV", BlockIndex = 20 }, + //}); + + //TagManger.AddTag(new ShortValueTag() + //{ + // Id = 120, + // Name = "LV[V]", + // NameNoUnit = "LV[V]", + // EnName = "LV", + // Group = "采集", + // MinValue = 0, + // MaxValue = 10000, + // IsMeter = false, + // DecimalPoint = 0, + // Precision = 10, + // Unit = "V", + // DataType = TagDataType.Short, + // RWInfo = RWInfo.PLCRead, + // PVModel = new MeterValueAttrCell() { Address = "VW15022", EngValue = 0, EngValueStr = "", Block = "PV", BlockIndex = 22 }, + //}); + + //TagManger.AddTag(new ShortValueTag() + //{ + // Id = 130, + // Name = "LV[A]", + // NameNoUnit = "LV[A]", + // EnName = "LVCur", + // Group = "采集", + // MinValue = 0, + // MaxValue = 10000, + // IsMeter = false, + // DecimalPoint = 0, + // Precision = 100, + // Unit = "A", + // DataType = TagDataType.Short, + // RWInfo = RWInfo.PLCRead, + // PVModel = new MeterValueAttrCell() { Address = "VW15024", EngValue = 0, EngValueStr = "", Block = "PV", BlockIndex = 24 }, + //}); + + //TagManger.AddTag(new ShortValueTag() + //{ + // Id = 140, + // Name = "环境温度[℃]", + // NameNoUnit = "环境温度", + // EnName = "EnvTemp", + // Group = "采集", + // MinValue = 0, + // MaxValue = 10000, + // IsMeter = false, + // DecimalPoint = 0, + // Precision = 10, + // Unit = "℃", + // DataType = TagDataType.Short, + // RWInfo = RWInfo.PLCRead, + // PVModel = new MeterValueAttrCell() { Address = "VW15026", EngValue = 0, EngValueStr = "", Block = "PV", BlockIndex = 26 }, + //}); + + //TagManger.AddTag(new ShortValueTag() + //{ + // Id = 150, + // Name = "环境湿度[%]", + // NameNoUnit = "环境湿度", + // EnName = "EnvRH", + // Group = "采集", + // MinValue = 0, + // MaxValue = 10000, + // IsMeter = false, + // DecimalPoint = 0, + // Precision = 10, + // Unit = "%", + // DataType = TagDataType.Short, + // RWInfo = RWInfo.PLCRead, + // PVModel = new MeterValueAttrCell() { Address = "VW15028", EngValue = 0, EngValueStr = "", Block = "PV", BlockIndex = 28 }, + //}); + + //TagManger.AddTag(new ShortValueTag() + //{ + // Id = 160, + // Name = "OS1温度[℃]", + // NameNoUnit = "OS1温度", + // EnName = "OS1Temp", + // Group = "采集", + // MinValue = 0, + // MaxValue = 10000, + // IsMeter = false, + // DecimalPoint = 0, + // Precision = 10, + // Unit = "℃", + // DataType = TagDataType.Short, + // RWInfo = RWInfo.PLCRead, + // PVModel = new MeterValueAttrCell() { Address = "VW15030", EngValue = 0, EngValueStr = "", Block = "PV", BlockIndex = 30 }, + //}); + + //TagManger.AddTag(new ShortValueTag() + //{ + // Id = 170, + // Name = "OS2温度[℃]", + // NameNoUnit = "OS2温度", + // EnName = "OS2Temp", + // Group = "采集", + // MinValue = 0, + // MaxValue = 10000, + // IsMeter = false, + // DecimalPoint = 0, + // Precision = 10, + // Unit = "℃", + // DataType = TagDataType.Short, + // RWInfo = RWInfo.PLCRead, + // PVModel = new MeterValueAttrCell() { Address = "VW15032", EngValue = 0, EngValueStr = "", Block = "PV", BlockIndex = 32 }, + //}); + + //TagManger.AddTag(new ShortValueTag() + //{ + // Id = 180, + // Name = "COND2温度[℃]", + // NameNoUnit = "COND2温度", + // EnName = "Cond2Temp", + // Group = "采集", + // MinValue = 0, + // MaxValue = 10000, + // IsMeter = false, + // DecimalPoint = 0, + // Precision = 10, + // Unit = "℃", + // DataType = TagDataType.Short, + // RWInfo = RWInfo.PLCRead, + // PVModel = new MeterValueAttrCell() { Address = "VW15034", EngValue = 0, EngValueStr = "", Block = "PV", BlockIndex = 34 }, + //}); + + //TagManger.AddTag(new ShortValueTag() + //{ + // Id = 190, + // Name = "EVAP出口温度[℃]", + // NameNoUnit = "EVAP出口温度", + // EnName = "EVAPExpTemp", + // Group = "采集", + // MinValue = 0, + // MaxValue = 10000, + // IsMeter = false, + // DecimalPoint = 0, + // Precision = 10, + // Unit = "℃", + // DataType = TagDataType.Short, + // RWInfo = RWInfo.PLCRead, + // PVModel = new MeterValueAttrCell() { Address = "VW15036", EngValue = 0, EngValueStr = "", Block = "PV", BlockIndex = 36 }, + //}); + + //TagManger.AddTag(new ShortValueTag() + //{ + // Id = 200, + // Name = "冷媒流量[L/min]", + // NameNoUnit = "冷媒流量", + // EnName = "VRV", + // Group = "采集", + // MinValue = 0, + // MaxValue = 10000, + // IsMeter = false, + // DecimalPoint = 0, + // Precision = 10, + // Unit = "L/min", + // DataType = TagDataType.Short, + // RWInfo = RWInfo.PLCRead, + // PVModel = new MeterValueAttrCell() { Address = "VW15038", EngValue = 0, EngValueStr = "", Block = "PV", BlockIndex = 38 }, + //}); + + + //TagManger.AddTag(new ShortValueTag() + //{ + // Id = 210, + // Name = "润滑油流量[L/min]", + // NameNoUnit = "润滑油流量", + // EnName = "LubeFlow", + // Group = "采集", + // MinValue = 0, + // MaxValue = 10000, + // IsMeter = false, + // DecimalPoint = 0, + // Precision = 10, + // Unit = "L/min", + // DataType = TagDataType.Short, + // RWInfo = RWInfo.PLCRead, + // PVModel = new MeterValueAttrCell() { Address = "VW15040", EngValue = 0, EngValueStr = "", Block = "PV", BlockIndex = 40 }, + //}); + + //TagManger.AddTag(new ShortValueTag() + //{ + // Id = 220, + // Name = "排气温度[℃]", + // NameNoUnit = "排气温度", + // EnName = "ExTemp", + // Group = "采集", + // MinValue = 0, + // MaxValue = 10000, + // IsMeter = false, + // DecimalPoint = 0, + // Precision = 10, + // Unit = "℃", + // DataType = TagDataType.Short, + // RWInfo = RWInfo.PLCRead, + // PVModel = new MeterValueAttrCell() { Address = "VW15042", EngValue = 0, EngValueStr = "", Block = "PV", BlockIndex = 42 }, + //}); + + //TagManger.AddTag(new ShortValueTag() + //{ + // Id = 230, + // Name = "膨胀阀前压力[BarA]", + // NameNoUnit = "膨胀阀前压力", + // EnName = "TxvFrPress", + // Group = "采集", + // MinValue = 0, + // MaxValue = 10000, + // IsMeter = false, + // DecimalPoint = 0, + // Precision = 100, + // Unit = "BarA", + // DataType = TagDataType.Short, + // RWInfo = RWInfo.PLCRead, + // PVModel = new MeterValueAttrCell() { Address = "VW15044", EngValue = 0, EngValueStr = "", Block = "PV", BlockIndex = 44 }, + //}); + + //TagManger.AddTag(new ShortValueTag() + //{ + // Id = 240, + // Name = "膨胀阀前温度[℃]", + // NameNoUnit = "膨胀阀前温度", + // EnName = "TxvFrTemp", + // Group = "采集", + // MinValue = 0, + // MaxValue = 10000, + // IsMeter = false, + // DecimalPoint = 0, + // Precision = 10, + // Unit = "℃", + // DataType = TagDataType.Short, + // RWInfo = RWInfo.PLCRead, + // PVModel = new MeterValueAttrCell() { Address = "VW15046", EngValue = 0, EngValueStr = "", Block = "PV", BlockIndex = 46 }, + //}); + + //TagManger.AddTag(new ShortValueTag() + //{ + // Id = 250, + // Name = "EVAP出口压力[BarA]", + // NameNoUnit = "EVAP出口压力", + // EnName = "EVAPExpPress", + // Group = "采集", + // MinValue = 0, + // MaxValue = 10000, + // IsMeter = false, + // DecimalPoint = 0, + // Precision = 100, + // Unit = "BarA", + // DataType = TagDataType.Short, + // RWInfo = RWInfo.PLCRead, + // PVModel = new MeterValueAttrCell() { Address = "VW15048", EngValue = 0, EngValueStr = "", Block = "PV", BlockIndex = 48 }, + //}); + + //TagManger.AddTag(new ShortValueTag() + //{ + // Id = 260, + // Name = "腔内压力[BarA]", + // NameNoUnit = "腔内压力", + // EnName = "IntrplPress", + // Group = "采集", + // MinValue = 0, + // MaxValue = 10000, + // IsMeter = false, + // DecimalPoint = 0, + // Precision = 100, + // Unit = "BarA", + // DataType = TagDataType.Short, + // RWInfo = RWInfo.PLCRead, + // PVModel = new MeterValueAttrCell() { Address = "VW15050", EngValue = 0, EngValueStr = "", Block = "PV", BlockIndex = 50 }, + //}); + + //TagManger.AddTag(new ShortValueTag() + //{ + // Id = 270, + // Name = "压缩机表面温度[℃]", + // NameNoUnit = "压缩机表面温度", + // EnName = "CapSurfTemp", + // Group = "采集", + // MinValue = 0, + // MaxValue = 10000, + // IsMeter = false, + // DecimalPoint = 0, + // Precision = 10, + // Unit = "℃", + // DataType = TagDataType.Short, + // RWInfo = RWInfo.PLCRead, + // PVModel = new MeterValueAttrCell() { Address = "VW15052", EngValue = 0, EngValueStr = "", Block = "PV", BlockIndex = 52 }, + //}); + + //TagManger.AddTag(new ShortValueTag() + //{ + // Id = 280, + // Name = "PTC流量[L/min]", + // NameNoUnit = "PTC流量", + // EnName = "PTCFlow", + // Group = "采集", + // MinValue = 0, + // MaxValue = 10000, + // IsMeter = false, + // DecimalPoint = 0, + // Precision = 10, + // Unit = "L/min", + // DataType = TagDataType.Short, + // RWInfo = RWInfo.PLCRead, + // PVModel = new MeterValueAttrCell() { Address = "VW15054", EngValue = 0, EngValueStr = "", Block = "PV", BlockIndex = 54 }, + //}); + + //TagManger.AddTag(new ShortValueTag() + //{ + // Id = 290, + // Name = "PTC入水温度[℃]", + // NameNoUnit = "PTC入水温度", + // EnName = "PTCEntTemp", + // Group = "采集", + // MinValue = 0, + // MaxValue = 10000, + // IsMeter = false, + // DecimalPoint = 0, + // Precision = 10, + // Unit = "℃", + // DataType = TagDataType.Short, + // RWInfo = RWInfo.PLCRead, + // PVModel = new MeterValueAttrCell() { Address = "VW15056", EngValue = 0, EngValueStr = "", Block = "PV", BlockIndex = 56 }, + //}); + + //TagManger.AddTag(new ShortValueTag() + //{ + // Id = 300, + // Name = "PTC出水温度[℃]", + // NameNoUnit = "PTC出水温度", + // EnName = "PTCExpTemp", + // Group = "采集", + // MinValue = 0, + // MaxValue = 10000, + // IsMeter = false, + // DecimalPoint = 0, + // Precision = 10, + // Unit = "℃", + // DataType = TagDataType.Short, + // RWInfo = RWInfo.PLCRead, + // PVModel = new MeterValueAttrCell() { Address = "VW15058", EngValue = 0, EngValueStr = "", Block = "PV", BlockIndex = 58 }, + //}); + + + + //TagManger.AddTag(new ShortValueTag() + //{ + // Id = 310, + // Name = "通讯Cmp母线电流[A]", + // NameNoUnit = "通讯Cmp母线电流", + // EnName = "ComCapBusCur", + // Group = "采集", + // MinValue = 0, + // MaxValue = 10000, + // IsMeter = false, + // DecimalPoint = 0, + // Precision = 100, + // Unit = "A", + // DataType = TagDataType.Short, + // RWInfo = RWInfo.PLCRead, + // PVModel = new MeterValueAttrCell() { Address = "VW15060", EngValue = 0, EngValueStr = "", Block = "PV", BlockIndex = 60 }, + //}); + + //TagManger.AddTag(new ShortValueTag() + //{ + // Id = 320, + // Name = "通讯Cmp母线电压[V]", + // NameNoUnit = "通讯Cmp母线电压", + // EnName = "ComCapBusVol", + // Group = "采集", + // MinValue = 0, + // MaxValue = 10000, + // IsMeter = false, + // DecimalPoint = 0, + // Precision = 1, + // Unit = "V", + // DataType = TagDataType.Short, + // RWInfo = RWInfo.PLCRead, + // PVModel = new MeterValueAttrCell() { Address = "VW15062", EngValue = 0, EngValueStr = "", Block = "PV", BlockIndex = 62 }, + //}); + + //TagManger.AddTag(new ShortValueTag() + //{ + // Id = 330, + // Name = "通讯Cmp逆变器温度[℃]", + // NameNoUnit = "通讯Cmp逆变器温度", + // EnName = "ComCapInvTemp", + // Group = "采集", + // MinValue = 0, + // MaxValue = 10000, + // IsMeter = false, + // DecimalPoint = 0, + // Precision = 1, + // Unit = "℃", + // DataType = TagDataType.Short, + // RWInfo = RWInfo.PLCRead, + // PVModel = new MeterValueAttrCell() { Address = "VW15064", EngValue = 0, EngValueStr = "", Block = "PV", BlockIndex = 64 }, + //}); + + //TagManger.AddTag(new ShortValueTag() + //{ + // Id = 340, + // Name = "通讯Cmp相电流[A]", + // NameNoUnit = "通讯Cmp相电流", + // EnName = "ComCapPhCur", + // Group = "采集", + // MinValue = 0, + // MaxValue = 10000, + // IsMeter = false, + // DecimalPoint = 0, + // Precision = 100, + // Unit = "A", + // DataType = TagDataType.Short, + // RWInfo = RWInfo.PLCRead, + // PVModel = new MeterValueAttrCell() { Address = "VW15066", EngValue = 0, EngValueStr = "", Block = "PV", BlockIndex = 66 }, + //}); + + //TagManger.AddTag(new ShortValueTag() + //{ + // Id = 350, + // Name = "通讯Cmp功率[W]", + // NameNoUnit = "通讯Cmp功率", + // EnName = "ComCapPw", + // Group = "采集", + // MinValue = 0, + // MaxValue = 10000, + // IsMeter = false, + // DecimalPoint = 0, + // Precision = 1, + // Unit = "W", + // DataType = TagDataType.Short, + // RWInfo = RWInfo.PLCRead, + // PVModel = new MeterValueAttrCell() { Address = "VW15068", EngValue = 0, EngValueStr = "", Block = "PV", BlockIndex = 68 }, + //}); + + //TagManger.AddTag(new ShortValueTag() + //{ + // Id = 360, + // Name = "通讯Cmp芯片温度[℃]", + // NameNoUnit = "通讯Cmp芯片温度", + // EnName = "ComCapChipTemp", + // Group = "采集", + // MinValue = 0, + // MaxValue = 10000, + // IsMeter = false, + // DecimalPoint = 0, + // Precision = 1, + // Unit = "℃", + // DataType = TagDataType.Short, + // RWInfo = RWInfo.PLCRead, + // PVModel = new MeterValueAttrCell() { Address = "VW15070", EngValue = 0, EngValueStr = "", Block = "PV", BlockIndex = 70 }, + //}); + + //TagManger.AddTag(new ShortValueTag() + //{ + // Id = 370, + // Name = "通讯PTC入水温度[℃]", + // NameNoUnit = "通讯PTC入水温度", + // EnName = "ComPTCEntTemp", + // Group = "采集", + // MinValue = 0, + // MaxValue = 10000, + // IsMeter = false, + // DecimalPoint = 0, + // Precision = 10, + // Unit = "℃", + // DataType = TagDataType.Short, + // RWInfo = RWInfo.PLCRead, + // PVModel = new MeterValueAttrCell() { Address = "VW15072", EngValue = 0, EngValueStr = "", Block = "PV", BlockIndex = 72 }, + //}); + + //TagManger.AddTag(new ShortValueTag() + //{ + // Id = 380, + // Name = "通讯PTC出水温度[℃]", + // NameNoUnit = "通讯PTC出水温度", + // EnName = "ComPTCExpTemp", + // Group = "采集", + // MinValue = 0, + // MaxValue = 10000, + // IsMeter = false, + // DecimalPoint = 0, + // Precision = 10, + // Unit = "℃", + // DataType = TagDataType.Short, + // RWInfo = RWInfo.PLCRead, + // PVModel = new MeterValueAttrCell() { Address = "VW15074", EngValue = 0, EngValueStr = "", Block = "PV", BlockIndex = 74 }, + //}); + + //TagManger.AddTag(new ShortValueTag() + //{ + // Id = 390, + // Name = "通讯PTC峰值电流[A]", + // NameNoUnit = "通讯PTC峰值电流", + // EnName = "ComPTCPeakCur", + // Group = "采集", + // MinValue = 0, + // MaxValue = 10000, + // IsMeter = false, + // DecimalPoint = 0, + // Precision = 1, + // Unit = "A", + // DataType = TagDataType.Short, + // RWInfo = RWInfo.PLCRead, + // PVModel = new MeterValueAttrCell() { Address = "VW15076", EngValue = 0, EngValueStr = "", Block = "PV", BlockIndex = 76 }, + //}); + + //TagManger.AddTag(new ShortValueTag() + //{ + // Id = 400, + // Name = "通讯PTC母线电流[A]", + // NameNoUnit = "通讯PTC母线电流", + // EnName = "ComPTCBusCur", + // Group = "采集", + // MinValue = 0, + // MaxValue = 10000, + // IsMeter = false, + // DecimalPoint = 0, + // Precision = 100, + // Unit = "A", + // DataType = TagDataType.Short, + // RWInfo = RWInfo.PLCRead, + // PVModel = new MeterValueAttrCell() { Address = "VW15078", EngValue = 0, EngValueStr = "", Block = "PV", BlockIndex = 78 }, + //}); + + //TagManger.AddTag(new ShortValueTag() + //{ + // Id = 410, + // Name = "通讯PTC膜温[℃]", + // NameNoUnit = "通讯PTC膜温", + // EnName = "ComPTCFlmTemp", + // Group = "采集", + // MinValue = 0, + // MaxValue = 10000, + // IsMeter = false, + // DecimalPoint = 0, + // Precision = 1, + // Unit = "℃", + // DataType = TagDataType.Short, + // RWInfo = RWInfo.PLCRead, + // PVModel = new MeterValueAttrCell() { Address = "VW15080", EngValue = 0, EngValueStr = "", Block = "PV", BlockIndex = 80 }, + //}); + + //TagManger.AddTag(new ShortValueTag() + //{ + // Id = 420, + // Name = "通讯PTC模块温度[℃]", + // NameNoUnit = "通讯PTC模块温度", + // EnName = "ComPTCMdTemp", + // Group = "采集", + // MinValue = 0, + // MaxValue = 10000, + // IsMeter = false, + // DecimalPoint = 0, + // Precision = 1, + // Unit = "℃", + // DataType = TagDataType.Short, + // RWInfo = RWInfo.PLCRead, + // PVModel = new MeterValueAttrCell() { Address = "VW15082", EngValue = 0, EngValueStr = "", Block = "PV", BlockIndex = 82 }, + //}); + + + + //TagManger.AddTag(new ShortValueTag() + //{ + // Id = 430, + // Name = "液冷媒流量[kg/h]", + // NameNoUnit = "液冷媒流量", + // EnName = "LiqRefFlow", + // Group = "采集", + // MinValue = 0, + // MaxValue = 10000, + // IsMeter = false, + // DecimalPoint = 0, + // Precision = 1, + // Unit = "kg/h", + // DataType = TagDataType.Short, + // RWInfo = RWInfo.PLCRead, + // PVModel = new MeterValueAttrCell() { Address = "VW15084", EngValue = 0, EngValueStr = "", Block = "PV", BlockIndex = 84 }, + //}); + + //TagManger.AddTag(new ShortValueTag() + //{ + // Id = 440, + // Name = "干度流量[kg/h]", + // NameNoUnit = "干度流量", + // EnName = "DryFlow", + // Group = "采集", + // MinValue = 0, + // MaxValue = 10000, + // IsMeter = false, + // DecimalPoint = 0, + // Precision = 1, + // Unit = "kg/h", + // DataType = TagDataType.Short, + // RWInfo = RWInfo.PLCRead, + // PVModel = new MeterValueAttrCell() { Address = "VW15086", EngValue = 0, EngValueStr = "", Block = "PV", BlockIndex = 86 }, + //}); + + //TagManger.AddTag(new ShortValueTag() + //{ + // Id = 450, + // Name = "H5吸气混合器温度[℃]", + // NameNoUnit = "H5吸气混合器温度", + // EnName = "H5InhMixTemp", + // Group = "采集", + // MinValue = 0, + // MaxValue = 10000, + // IsMeter = false, + // DecimalPoint = 0, + // Precision = 1, + // Unit = "℃", + // DataType = TagDataType.Short, + // RWInfo = RWInfo.PLCRead, + // PVModel = new MeterValueAttrCell() { Address = "VW15088", EngValue = 0, EngValueStr = "", Block = "PV", BlockIndex = 88 }, + //}); + + //TagManger.AddTag(new ShortValueTag() + //{ + // Id = 460, + // Name = "COND循环水温[℃]", + // NameNoUnit = "COND循环水温", + // EnName = "CONDCirWaterTemp", + // Group = "采集", + // MinValue = 0, + // MaxValue = 10000, + // IsMeter = false, + // DecimalPoint = 0, + // Precision = 1, + // Unit = "℃", + // DataType = TagDataType.Short, + // RWInfo = RWInfo.PLCRead, + // PVModel = new MeterValueAttrCell() { Address = "VW15090", EngValue = 0, EngValueStr = "", Block = "PV", BlockIndex = 90 }, + //}); + + //TagManger.AddTag(new ShortValueTag() + //{ + // Id = 470, + // Name = "SUBCOOL出口温度[℃]", + // NameNoUnit = "SUBCOOL出口温度", + // EnName = "SubcoolOutTemp", + // Group = "采集", + // MinValue = 0, + // MaxValue = 10000, + // IsMeter = false, + // DecimalPoint = 0, + // Precision = 1, + // Unit = "℃", + // DataType = TagDataType.Short, + // RWInfo = RWInfo.PLCRead, + // PVModel = new MeterValueAttrCell() { Address = "VW15092", EngValue = 0, EngValueStr = "", Block = "PV", BlockIndex = 92 }, + //}); + + //TagManger.AddTag(new ShortValueTag() + //{ + // Id = 480, + // Name = "吸气混合器出口温度[℃]", + // NameNoUnit = "吸气混合器出口温度", + // EnName = "InhMixOutTemp", + // Group = "采集", + // MinValue = 0, + // MaxValue = 10000, + // IsMeter = false, + // DecimalPoint = 0, + // Precision = 1, + // Unit = "℃", + // DataType = TagDataType.Short, + // RWInfo = RWInfo.PLCRead, + // PVModel = new MeterValueAttrCell() { Address = "VW15094", EngValue = 0, EngValueStr = "", Block = "PV", BlockIndex = 94 }, + //}); + + //TagManger.AddTag(new ShortValueTag() + //{ + // Id = 490, + // Name = "H1出口温度[℃]", + // NameNoUnit = "H1出口温度", + // EnName = "H1OutTemp", + // Group = "采集", + // MinValue = 0, + // MaxValue = 10000, + // IsMeter = false, + // DecimalPoint = 0, + // Precision = 1, + // Unit = "℃", + // DataType = TagDataType.Short, + // RWInfo = RWInfo.PLCRead, + // PVModel = new MeterValueAttrCell() { Address = "VW15096", EngValue = 0, EngValueStr = "", Block = "PV", BlockIndex = 96 }, + //}); + + //TagManger.AddTag(new ShortValueTag() + //{ + // Id = 500, + // Name = "S.C循环水温[℃]", + // NameNoUnit = "S.C循环水温", + // EnName = "SCCirWaterTemp", + // Group = "采集", + // MinValue = 0, + // MaxValue = 10000, + // IsMeter = false, + // DecimalPoint = 0, + // Precision = 1, + // Unit = "℃", + // DataType = TagDataType.Short, + // RWInfo = RWInfo.PLCRead, + // PVModel = new MeterValueAttrCell() { Address = "VW15098", EngValue = 0, EngValueStr = "", Block = "PV", BlockIndex = 98 }, + //}); + + //TagManger.AddTag(new ShortValueTag() + //{ + // Id = 510, + // Name = "EVAP循环水温[℃]", + // NameNoUnit = "EVAP循环水温", + // EnName = "EvapCirWaterTemp", + // Group = "采集", + // MinValue = 0, + // MaxValue = 10000, + // IsMeter = false, + // DecimalPoint = 0, + // Precision = 1, + // Unit = "℃", + // DataType = TagDataType.Short, + // RWInfo = RWInfo.PLCRead, + // PVModel = new MeterValueAttrCell() { Address = "VW15100", EngValue = 0, EngValueStr = "", Block = "PV", BlockIndex = 100 }, + //}); + + //TagManger.AddTag(new ShortValueTag() + //{ + // Id = 520, + // Name = "吸气混合器出口压力[BarA]", + // NameNoUnit = "吸气混合器出口压力", + // EnName = "InhMixOutPress", + // Group = "采集", + // MinValue = 0, + // MaxValue = 10000, + // IsMeter = false, + // DecimalPoint = 0, + // Precision = 1, + // Unit = "BarA", + // DataType = TagDataType.Short, + // RWInfo = RWInfo.PLCRead, + // PVModel = new MeterValueAttrCell() { Address = "VW15102", EngValue = 0, EngValueStr = "", Block = "PV", BlockIndex = 102 }, + //}); #endregion @@ -1029,14 +1362,6 @@ namespace CapMachine.Wpf.Services //IsValueShow = !IsValueShow; } - private Tag _TagInfo; - - public Tag TagInfo - { - get { return _TagInfo; } - set { _TagInfo = value; RaisePropertyChanged(); } - } - /// /// 初始化PLC通信 @@ -1132,6 +1457,12 @@ namespace CapMachine.Wpf.Services /// private Stopwatch DiagnosticsTime { get; set; } = new Stopwatch(); + + /// + /// PV整块读取数据 + /// + private OperateResult OperateResultBlockPVRead { get; set; } + /// /// PLC扫描线程 /// @@ -1143,399 +1474,105 @@ namespace CapMachine.Wpf.Services while (ThreadEnable) { - //await Task.Delay(5); - await Task.CompletedTask; + await Task.Delay(20); + //await Task.CompletedTask; DiagnosticsTime.Reset(); DiagnosticsTime.Start(); + try { - //TagInfo.RtValue.Value++; - - //var data = TagManger.DicTags["转速"].ValueType.Name; - - ////第一次计时 //stopwatch.Start(); //启动Stopwatch - //IsShowCount++; - //IsValueShow = false; - - foreach (var itemTag in TagManger.DicTags) + //CANLIN数据读取到TagManger.DicTags数据中心中,上面的操作是itemWrite反写到PLC中 + foreach (var itemCanLinGroup in TagManger.DicTags) { - //TagManger.GetTagInfoValueByName(itemTag.Value.Name)!.Value = (short)random.Next(0, 100); - - //if (itemTag.Key== "转速[rpm]") - //{ - // var DS= SiemensDrive.ReadInt16(itemTag.Value.Address); - // if (DS.IsSuccess) - // { - // var dd= DS.Content; - // } - //} - - switch (itemTag.Value.ValueType.Name) + //转速特殊处理,因为在数据集合中叫做【转速】,在CANLIN中叫做【通讯Cmp转速】 + if (itemCanLinGroup.Value.NameNoUnit == "转速") { - //case ConstShortType: - // //TagManger.GetTagInfoValueByName(itemTag.Value.Name)!.Value = SiemensDrive.ReadInt16(itemTag.Value.Address).Content; - // TagManger.GetTagByName(itemTag.Value.Name).EngPvValue = TagManger.GetTagInfoValueByName(itemTag.Value.Name)!.Value * 1.0 / TagManger.GetTagByName(itemTag.Value.Name)!.Precision; - // break; - case ConstShortType: - - TagManger.GetTagInfoValueByName(itemTag.Value.Name)!.IsShow = IsValueShow; - - ////仿真数据 - //TagManger.GetTagInfoValueByName(itemTag.Value.Name)!.Value = (short)Random.Next(1, 100); - //TagManger.GetTagByName(itemTag.Value.Name).EngPvValue = (short)Random.Next(1, 100) * 1.0 / TagManger.GetTagByName(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 取消XXX + if (TagManger.TryGetPVModel(itemCanLinGroup.Key, out MeterValueAttrCell? CanpVModel)) { - switch (ConfigService.CanLinRunStateModel.CurSysSelectedCanLin) - { - case CanLinEnum.Can: - //通信转速 Dbc中间配置名称的转速数据读取出来 给PLC - SiemensDrive.Write(itemTag.Value.PVAddress, (short)CanDriveService.GetDbcSpeedValueBySpeedName("通讯Cmp转速")); - //itemTag.Value.EngPvValue = 0; - break; - case CanLinEnum.Lin: - //通信转速 Dbc中间配置名称的转速数据读取出来 给PLC - SiemensDrive.Write(itemTag.Value.PVAddress, (short)LinDriveService.GetLdfSpeedValueBySpeedName("通讯Cmp转速")); - //itemTag.Value.EngPvValue = 0; - break; - default: - break; - } - + CanpVModel!.EngValue = CanDriveService.GetDbcSpeedValueBySpeedName("通讯Cmp转速"); + SiemensDrive.Write(CanpVModel!.Address!.Replace("W", ""), (short)CanDriveService.GetDbcSpeedValueBySpeedName("通讯Cmp转速")); + //pVModel.EngSrcValue = 0; } - else if (itemTag.Value.NameNoUnit == "通讯Cmp母线电压") + break; + case CanLinEnum.Lin: + //通信转速 Dbc中间配置名称的转速数据读取出来 给PLC 取消XXX + if (TagManger.TryGetPVModel(itemCanLinGroup.Key, out MeterValueAttrCell? LinpVModel)) { - switch (ConfigService.CanLinRunStateModel.CurSysSelectedCanLin) - { - case CanLinEnum.Can: - //通信转速 Dbc中间配置名称的转速数据读取出来 给PLC - SiemensDrive.Write(itemTag.Value.PVAddress, (short)(CanDriveService.GetDbcValueByName("通讯Cmp母线电压") * itemTag.Value.Precision)); - //itemTag.Value.EngPvValue = 0; - break; - case CanLinEnum.Lin: - //通信转速 Dbc中间配置名称的转速数据读取出来 给PLC - SiemensDrive.Write(itemTag.Value.PVAddress, (short)(LinDriveService.GetLdfValueByName("通讯Cmp母线电压") * itemTag.Value.Precision)); - //itemTag.Value.EngPvValue = 0; - break; - default: - break; - } + LinpVModel!.EngValue = LinDriveService.GetLdfSpeedValueBySpeedName("通讯Cmp转速"); + SiemensDrive.Write(LinpVModel!.Address!.Replace("W", ""), (short)LinDriveService.GetLdfSpeedValueBySpeedName("通讯Cmp转速")); } - else if (itemTag.Value.NameNoUnit == "通讯Cmp母线电流") - { - switch (ConfigService.CanLinRunStateModel.CurSysSelectedCanLin) - { - case CanLinEnum.Can: - //通信转速 Dbc中间配置名称的转速数据读取出来 给PLC - SiemensDrive.Write(itemTag.Value.PVAddress, (short)(CanDriveService.GetDbcValueByName("通讯Cmp母线电流") * itemTag.Value.Precision)); - //itemTag.Value.EngPvValue = 0; - break; - case CanLinEnum.Lin: - //通信转速 Dbc中间配置名称的转速数据读取出来 给PLC - SiemensDrive.Write(itemTag.Value.PVAddress, (short)(LinDriveService.GetLdfValueByName("通讯Cmp母线电流") * itemTag.Value.Precision)); - //itemTag.Value.EngPvValue = 0; - break; - default: - break; - } - } - else if (itemTag.Value.NameNoUnit == "通讯Cmp相电流") - { - switch (ConfigService.CanLinRunStateModel.CurSysSelectedCanLin) - { - case CanLinEnum.Can: - //通信转速 Dbc中间配置名称的转速数据读取出来 给PLC - SiemensDrive.Write(itemTag.Value.PVAddress, (short)(CanDriveService.GetDbcValueByName("通讯Cmp相电流") * itemTag.Value.Precision)); - //itemTag.Value.EngPvValue = 0; - break; - case CanLinEnum.Lin: - //通信转速 Dbc中间配置名称的转速数据读取出来 给PLC - SiemensDrive.Write(itemTag.Value.PVAddress, (short)(LinDriveService.GetLdfValueByName("通讯Cmp相电流") * itemTag.Value.Precision)); - //itemTag.Value.EngPvValue = 0; - break; - default: - break; - } - } - else if (itemTag.Value.NameNoUnit == "通讯Cmp功率") - { - switch (ConfigService.CanLinRunStateModel.CurSysSelectedCanLin) - { - case CanLinEnum.Can: - //通信转速 Dbc中间配置名称的转速数据读取出来 给PLC - SiemensDrive.Write(itemTag.Value.PVAddress, (short)(CanDriveService.GetDbcValueByName("通讯Cmp功率") * itemTag.Value.Precision)); - //itemTag.Value.EngPvValue = 0; - break; - case CanLinEnum.Lin: - //通信转速 Dbc中间配置名称的转速数据读取出来 给PLC - SiemensDrive.Write(itemTag.Value.PVAddress, (short)(LinDriveService.GetLdfValueByName("通讯Cmp功率") * itemTag.Value.Precision)); - //itemTag.Value.EngPvValue = 0; - break; - default: - break; - } - } - else if (itemTag.Value.NameNoUnit == "通讯Cmp芯片温度") - { - switch (ConfigService.CanLinRunStateModel.CurSysSelectedCanLin) - { - case CanLinEnum.Can: - //通信转速 Dbc中间配置名称的转速数据读取出来 给PLC - SiemensDrive.Write(itemTag.Value.PVAddress, (short)(CanDriveService.GetDbcValueByName("通讯Cmp芯片温度") * itemTag.Value.Precision)); - //itemTag.Value.EngPvValue = 0; - break; - case CanLinEnum.Lin: - //通信转速 Dbc中间配置名称的转速数据读取出来 给PLC - SiemensDrive.Write(itemTag.Value.PVAddress, (short)(LinDriveService.GetLdfValueByName("通讯Cmp芯片温度") * itemTag.Value.Precision)); - //itemTag.Value.EngPvValue = 0; - break; - default: - break; - } - } - else if (itemTag.Value.NameNoUnit == "通讯Cmp逆变器温度") - { - switch (ConfigService.CanLinRunStateModel.CurSysSelectedCanLin) - { - case CanLinEnum.Can: - //通信转速 Dbc中间配置名称的转速数据读取出来 给PLC - SiemensDrive.Write(itemTag.Value.PVAddress, (short)(CanDriveService.GetDbcValueByName("通讯Cmp逆变器温度") * itemTag.Value.Precision)); - //itemTag.Value.EngPvValue = 0; - break; - case CanLinEnum.Lin: - //通信转速 Dbc中间配置名称的转速数据读取出来 给PLC - SiemensDrive.Write(itemTag.Value.PVAddress, (short)(LinDriveService.GetLdfValueByName("通讯Cmp逆变器温度") * itemTag.Value.Precision)); - //itemTag.Value.EngPvValue = 0; - break; - default: - break; - } - } - else if (itemTag.Value.NameNoUnit == "通讯PTC入水温度") - { - switch (ConfigService.CanLinRunStateModel.CurSysSelectedCanLin) - { - case CanLinEnum.Can: - //通信转速 Dbc中间配置名称的转速数据读取出来 给PLC - SiemensDrive.Write(itemTag.Value.PVAddress, (short)(CanDriveService.GetDbcValueByName("通讯PTC入水温度") * itemTag.Value.Precision)); - //itemTag.Value.EngPvValue = 0; - break; - case CanLinEnum.Lin: - //通信转速 Dbc中间配置名称的转速数据读取出来 给PLC - SiemensDrive.Write(itemTag.Value.PVAddress, (short)(LinDriveService.GetLdfValueByName("通讯PTC入水温度") * itemTag.Value.Precision)); - //itemTag.Value.EngPvValue = 0; - break; - default: - break; - } - } - else if (itemTag.Value.NameNoUnit == "通讯PTC出水温度") - { - switch (ConfigService.CanLinRunStateModel.CurSysSelectedCanLin) - { - case CanLinEnum.Can: - //通信转速 Dbc中间配置名称的转速数据读取出来 给PLC - SiemensDrive.Write(itemTag.Value.PVAddress, (short)(CanDriveService.GetDbcValueByName("通讯PTC出水温度") * itemTag.Value.Precision)); - //itemTag.Value.EngPvValue = 0; - break; - case CanLinEnum.Lin: - //通信转速 Dbc中间配置名称的转速数据读取出来 给PLC - SiemensDrive.Write(itemTag.Value.PVAddress, (short)(LinDriveService.GetLdfValueByName("通讯PTC出水温度") * itemTag.Value.Precision)); - //itemTag.Value.EngPvValue = 0; - break; - default: - break; - } - } - else if (itemTag.Value.NameNoUnit == "通讯PTC峰值电流") - { - switch (ConfigService.CanLinRunStateModel.CurSysSelectedCanLin) - { - case CanLinEnum.Can: - //通信转速 Dbc中间配置名称的转速数据读取出来 给PLC - SiemensDrive.Write(itemTag.Value.PVAddress, (short)(CanDriveService.GetDbcValueByName("通讯PTC峰值电流") * itemTag.Value.Precision)); - //itemTag.Value.EngPvValue = 0; - break; - case CanLinEnum.Lin: - //通信转速 Dbc中间配置名称的转速数据读取出来 给PLC - SiemensDrive.Write(itemTag.Value.PVAddress, (short)(LinDriveService.GetLdfValueByName("通讯PTC峰值电流") * itemTag.Value.Precision)); - //itemTag.Value.EngPvValue = 0; - break; - default: - break; - } - } - else if (itemTag.Value.NameNoUnit == "通讯PTC母线电流") - { - switch (ConfigService.CanLinRunStateModel.CurSysSelectedCanLin) - { - case CanLinEnum.Can: - //通信转速 Dbc中间配置名称的转速数据读取出来 给PLC - SiemensDrive.Write(itemTag.Value.PVAddress, (short)(CanDriveService.GetDbcValueByName("通讯PTC母线电流") * itemTag.Value.Precision)); - //itemTag.Value.EngPvValue = 0; - break; - case CanLinEnum.Lin: - //通信转速 Dbc中间配置名称的转速数据读取出来 给PLC - SiemensDrive.Write(itemTag.Value.PVAddress, (short)(LinDriveService.GetLdfValueByName("通讯PTC母线电流") * itemTag.Value.Precision)); - //itemTag.Value.EngPvValue = 0; - break; - default: - break; - } - } - else if (itemTag.Value.NameNoUnit == "通讯PTC膜温") - { - switch (ConfigService.CanLinRunStateModel.CurSysSelectedCanLin) - { - case CanLinEnum.Can: - //通信转速 Dbc中间配置名称的转速数据读取出来 给PLC - SiemensDrive.Write(itemTag.Value.PVAddress, (short)(CanDriveService.GetDbcValueByName("通讯PTC膜温") * itemTag.Value.Precision)); - //itemTag.Value.EngPvValue = 0; - break; - case CanLinEnum.Lin: - //通信转速 Dbc中间配置名称的转速数据读取出来 给PLC - SiemensDrive.Write(itemTag.Value.PVAddress, (short)(LinDriveService.GetLdfValueByName("通讯PTC膜温") * itemTag.Value.Precision)); - //itemTag.Value.EngPvValue = 0; - break; - default: - break; - } - } - else if (itemTag.Value.NameNoUnit == "通讯PTC模块温度") - { - switch (ConfigService.CanLinRunStateModel.CurSysSelectedCanLin) - { - case CanLinEnum.Can: - //通信转速 Dbc中间配置名称的转速数据读取出来 给PLC - SiemensDrive.Write(itemTag.Value.PVAddress, (short)(CanDriveService.GetDbcValueByName("通讯PTC模块温度") * itemTag.Value.Precision)); - //itemTag.Value.EngPvValue = 0; - break; - case CanLinEnum.Lin: - //通信转速 Dbc中间配置名称的转速数据读取出来 给PLC - SiemensDrive.Write(itemTag.Value.PVAddress, (short)(LinDriveService.GetLdfValueByName("通讯PTC模块温度") * itemTag.Value.Precision)); - //itemTag.Value.EngPvValue = 0; - break; - default: - break; - } - } - - OperateResultShort = SiemensDrive.ReadInt16(itemTag.Value.PVAddress); - if (OperateResultShort.IsSuccess) - { - TagManger.GetTagInfoValueByName(itemTag.Value.Name)!.Value = SiemensDrive.ReadInt16(itemTag.Value.PVAddress).Content; - TagManger.GetTagByName(itemTag.Value.Name)!.EngPvValue = TagManger.GetTagInfoValueByName(itemTag.Value.Name)!.Value * 1.0 / TagManger.GetTagByName(itemTag.Value.Name)!.Precision; - LinkState = true; - } - else - { - LinkState = false; - } - - //根据CANLIN的选择,读取对应的解析实时数据更新到数据中心,这些数据相当于都是PV的实时数据 - switch (ConfigService.CanLinRunStateModel.CurSysSelectedCanLin) - { - 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驱动不读取数据 - { - - } - - //SV值的写入 转速和PTC的写入 - if (!string.IsNullOrEmpty(itemTag.Value.SVAddress)) - { - OperateResultSVShort = SiemensDrive.ReadInt16(itemTag.Value.SVAddress); - if (OperateResultSVShort.IsSuccess) - { - //TagManger.GetTagInfoValueByName(itemTag.Value.Name)!.Value = OperateResultSVShort.Content; - TagManger.GetTagByName(itemTag.Value.Name)!.EngSvValue = OperateResultSVShort.Content * 1.0 / TagManger.GetTagByName(itemTag.Value.Name)!.Precision; - LinkState = true; - - //在运行时,更新速度的SV的值 - if (itemTag.Value.Name == "转速[rpm]")//&& SysRunService.MachineRunState1.RunStateMsg == "运行" - { - 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(itemTag.Value.Name)!.EngSvValue); - } - } - else - { - LinkState = false; - } - } - - if (!string.IsNullOrEmpty(itemTag.Value.MVAddress)) - { - OperateResultMVShort = SiemensDrive.ReadInt16(itemTag.Value.MVAddress); - if (OperateResultMVShort.IsSuccess) - { - //TagManger.GetTagInfoValueByName(itemTag.Value.Name)!.Value = OperateResultMVShort.Content; - TagManger.GetTagByName(itemTag.Value.Name)!.EngMvValue = OperateResultMVShort.Content * 1.0 / 10; - LinkState = true; - } - else - { - LinkState = false; - } - } - - ////手自动切换按钮条件 取消XXX - //AutoHandSwtichConditionState.AlarmStateResult = SiemensDrive.ReadBool(AutoHandSwtichConditionState.AlarmAddress); - //AutoHandSwtichConditionState.HandStateResult = SiemensDrive.ReadBool(AutoHandSwtichConditionState.HandStateAddress); - //AutoHandSwtichConditionState.SumResult(); - - break; - default: - break; + break; + default: + break; + } + //找到后继续下一个 + continue; } + + //只处理CANLIN的数据 + if (itemCanLinGroup.Value.Group == "压缩机") + { + //尝试获取模型信息 + if (TagManger.TryGetCapPVModel(itemCanLinGroup.Key, out QuickAttrCell? pVModel)) + { + switch (ConfigService.CanLinRunStateModel.CurSysSelectedCanLin) + { + case CanLinEnum.Can: + //取得压缩机的CANLIN数据到数据集合中 + pVModel!.EngValue = CanDriveService.GetDbcValueByName(itemCanLinGroup.Value.NameNoUnit); + //写入到PLC中 + SiemensDrive.Write(pVModel!.Address!.Replace("W", ""), (short)(CanDriveService.GetDbcValueByName(itemCanLinGroup.Value.NameNoUnit) * itemCanLinGroup.Value.Precision)); + break; + case CanLinEnum.Lin: + //取得压缩机的CANLIN数据 + pVModel!.EngValue = LinDriveService.GetLdfValueByName(itemCanLinGroup.Value.NameNoUnit); + //写入到PLC中 + SiemensDrive.Write(pVModel!.Address!.Replace("W", ""), (short)(LinDriveService.GetLdfValueByName(itemCanLinGroup.Value.NameNoUnit) * itemCanLinGroup.Value.Precision)); + break; + case CanLinEnum.No: + break; + default: + break; + } + } + } + } - //stopwatch.Stop(); //停止Stopwatch - //Console.WriteLine("Add Elapsed output runTime:{0}", stopwatch.Elapsed.TotalSeconds.ToString()); - //stopwatch.Reset(); + //PV批量读取 + OperateResultBlockPVRead = SiemensDrive.Read("VW15000", 200); + if (OperateResultBlockPVRead.IsSuccess) + { + foreach (var itemBlockReadTag in TagManger.DicTags) + { + if (itemBlockReadTag.Key.Contains("转速")) + { + //转速不需要PLC读取 + continue; + } + //需要从PLC读取的标签才算 + if ((itemBlockReadTag.Value.RWInfo == RWInfo.PLCRead || itemBlockReadTag.Value.RWInfo == RWInfo.Control) && TagManger.TryGetPVModel(itemBlockReadTag.Key, out MeterValueAttrCell pVModel)) + { + //地址为空的话则下一个 + if (string.IsNullOrEmpty(pVModel!.Address)) continue; + //给PvModel的原始属性赋值 + pVModel!.EngSrcValue = SiemensDrive.ByteTransform.TransInt16(OperateResultBlockPVRead.Content, pVModel.BlockIndex); + } + } + //通信状态 + LinkState = true; + } + else + { + //通信状态 + LinkState = false; + } ////读取报警信息 取消报警XXX //OperateResultAlarm = SiemensDrive.ReadBool("V0.0", 15); @@ -1567,20 +1604,35 @@ namespace CapMachine.Wpf.Services break; } - ////压缩机压缩机功率限制实时赋值 - //switch (ConfigService.CanLinRunStateModel.CurSysSelectedCanLin) - //{ - // case CanLinEnum.Can: - // //获取PLC的功率限制,更新到CAN的功率限制 - // CanDriveService.UpdateCapPwLimitCmdData(OperateResultValue.Content[0]); - // break; - // case CanLinEnum.Lin: - // //获取PLC的功率限制,更新到LIN的功率限制 - // LinDriveService.UpdateCapPwLimitCmdData(OperateResultValue.Content[0]); - // break; - // default: - // break; - //} + //压缩机速度实时赋值 + switch (ConfigService.CanLinRunStateModel.CurSysSelectedCanLin) + { + case CanLinEnum.Can: + //获取PLC的使能状态,更新到CAN的使能状态 + CanDriveService.UpdateSpeedCmdData(OperateResultValue.Content[1]); + break; + case CanLinEnum.Lin: + //获取PLC的使能状态,更新到LIN的使能状态 + LinDriveService.UpdateSpeedCmdData(OperateResultValue.Content[1]); + break; + default: + break; + } + + //压缩机压缩机功率限制实时赋值 + switch (ConfigService.CanLinRunStateModel.CurSysSelectedCanLin) + { + case CanLinEnum.Can: + //获取PLC的功率限制,更新到CAN的功率限制 + CanDriveService.UpdateCapPwLimitCmdData(OperateResultValue.Content[2]); + break; + case CanLinEnum.Lin: + //获取PLC的功率限制,更新到LIN的功率限制 + LinDriveService.UpdateCapPwLimitCmdData(OperateResultValue.Content[2]); + break; + default: + break; + } //压缩机 PTC使能 实时赋值 @@ -1588,11 +1640,11 @@ namespace CapMachine.Wpf.Services { case CanLinEnum.Can: //获取PLC的 PTC使能,更新到CAN的 PTC使能 - CanDriveService.UpdateCapPTCEnableCmdData(OperateResultValue.Content[20] == 0 ? false : true); + CanDriveService.UpdateCapPTCEnableCmdData(OperateResultValue.Content[10] == 0 ? false : true); break; case CanLinEnum.Lin: //获取PLC的 PTC使能,更新到LIN的 PTC使能 - LinDriveService.UpdateCapPTCEnableCmdData(OperateResultValue.Content[20] == 0 ? false : true); + LinDriveService.UpdateCapPTCEnableCmdData(OperateResultValue.Content[10] == 0 ? false : true); break; default: break; @@ -1603,11 +1655,11 @@ namespace CapMachine.Wpf.Services { case CanLinEnum.Can: //获取PLC的 PTC功率,更新到CAN的 PTC功率 - CanDriveService.UpdateCapPTCPwCmdData(OperateResultValue.Content[22]); + CanDriveService.UpdateCapPTCPwCmdData(OperateResultValue.Content[11]); break; case CanLinEnum.Lin: //获取PLC的 PTC功率,更新到LIN的 PTC功率 - LinDriveService.UpdateCapPTCPwCmdData(OperateResultValue.Content[22]); + LinDriveService.UpdateCapPTCPwCmdData(OperateResultValue.Content[11]); break; default: break; @@ -1618,11 +1670,11 @@ namespace CapMachine.Wpf.Services { case CanLinEnum.Can: //获取PLC的 PTC水流量信号,更新到CAN的 PTC水流量信号 - CanDriveService.UpdateCapPTCFlowCmdData(OperateResultValue.Content[24]); + CanDriveService.UpdateCapPTCFlowCmdData(OperateResultValue.Content[12]*1.0/100); break; case CanLinEnum.Lin: //获取PLC的 PTC水流量信号,更新到LIN的 PTC水流量信号 - LinDriveService.UpdateCapPTCFlowCmdData(OperateResultValue.Content[24]); + LinDriveService.UpdateCapPTCFlowCmdData(OperateResultValue.Content[12] * 1.0 / 100); break; default: break; @@ -1633,11 +1685,11 @@ namespace CapMachine.Wpf.Services { case CanLinEnum.Can: //获取PLC的 PTC水温,更新到CAN的 PTC水温 - CanDriveService.UpdateCapPTCWaterTempCmdData(OperateResultValue.Content[26]); + CanDriveService.UpdateCapPTCWaterTempCmdData(OperateResultValue.Content[13]); break; case CanLinEnum.Lin: //获取PLC的 PTC水温,更新到LIN的 PTC水温 - LinDriveService.UpdateCapPTCWaterTempCmdData(OperateResultValue.Content[26]); + LinDriveService.UpdateCapPTCWaterTempCmdData(OperateResultValue.Content[13]); break; default: break; @@ -1695,7 +1747,7 @@ namespace CapMachine.Wpf.Services } DiagnosticsTime.Stop(); - ConfigService.PlcCycleTime = (int)DiagnosticsTime.Elapsed.TotalMilliseconds - 300; + ConfigService.PlcCycleTime = (int)DiagnosticsTime.Elapsed.TotalMilliseconds; //Console.WriteLine($"扫描时间:{DiagnosticsTime.Elapsed.TotalMilliseconds.ToString()}"); } }); diff --git a/CapMachine.Wpf/Services/PPCService.cs b/CapMachine.Wpf/Services/PPCService.cs index 4ebc71d..7dcddbb 100644 --- a/CapMachine.Wpf/Services/PPCService.cs +++ b/CapMachine.Wpf/Services/PPCService.cs @@ -56,21 +56,48 @@ namespace CapMachine.Wpf.Services //SpeedTag = TagManager.DicTags.GetValueOrDefault("转速[rpm]"); //ExPressTag = TagManager.DicTags.GetValueOrDefault("排气压力[BarA]"); //ExTempTag = TagManager.DicTags.GetValueOrDefault("排气温度[℃]"); - InhPressTag = TagManager.DicTags.GetValueOrDefault("吸气压力[BarA]")!; - InhTempTag = TagManager.DicTags.GetValueOrDefault("吸气温度[℃]")!; + if (TagManager.TryGetShortControlTagByName("吸气压力[BarA]", out ShortControlTag? InhPressShortControlTag)) + { + InhPressTag = InhPressShortControlTag!; + } + if (TagManager.TryGetShortControlTagByName("吸气温度[℃]", out ShortControlTag? InhTempShortControlTag)) + { + InhTempTag = InhTempShortControlTag!; + } + + //InhTempTag = TagManager.DicTags.GetValueOrDefault("吸气温度[℃]")!; //ComCapBusVolTag = TagManager.DicTags.GetValueOrDefault("通讯母线电压[V]"); //ComCapBusCurTag = TagManager.DicTags.GetValueOrDefault("通讯母线电流[A]"); //ComCapPwTag = TagManager.DicTags.GetValueOrDefault("通讯功率[W]"); //OS2TempTag = TagManager.DicTags.GetValueOrDefault("吸气混合器温度[℃]"); - TxvFrTempTag = TagManager.DicTags.GetValueOrDefault("膨胀阀前温度[℃]")!; - TxvFrPressTag = TagManager.DicTags.GetValueOrDefault("膨胀阀前压力[BarA]")!; + + //TxvFrTempTag = TagManager.DicTags.GetValueOrDefault("膨胀阀前温度[℃]")!; + //TxvFrPressTag = TagManager.DicTags.GetValueOrDefault("膨胀阀前压力[BarA]")!; + + if (TagManager.TryGetShortTagByName("膨胀阀前温度[℃]", out ShortValueTag? TxvFrTempShortTag)) + { + TxvFrTempTag = TxvFrTempShortTag!; + } + if (TagManager.TryGetShortTagByName("膨胀阀前压力[BarA]", out ShortValueTag? TxvFrPressShortTag)) + { + TxvFrPressTag = TxvFrPressShortTag!; + } + //Cond1TempTag = TagManager.DicTags.GetValueOrDefault("冷凝器出口水温[℃]"); //CondInTempTag = TagManager.DicTags.GetValueOrDefault("冷凝器进口温度[℃]"); - Superheat = TagManager.DicTags.GetValueOrDefault("过热度[K]"); - Subcool = TagManager.DicTags.GetValueOrDefault("过冷度[K]"); + //Superheat = TagManager.DicTags.GetValueOrDefault("过热度[K]"); + //Subcool = TagManager.DicTags.GetValueOrDefault("过冷度[K]"); + + if (TagManager.TryGetShortTagByName("过热度[K]", out ShortValueTag? SuperheatShortTag)) + { + Superheat = SuperheatShortTag!; + } + if (TagManager.TryGetShortTagByName("过冷度[K]", out ShortValueTag? SubcoolShortTag)) + { + Subcool = SubcoolShortTag!; + } - SuperHeatCoolConfig.FluidsPath = ConfigHelper.GetValue("FluidsPath"); SuperHeatCoolConfig.Cryogen = ConfigHelper.GetValue("Cryogen"); @@ -95,34 +122,34 @@ namespace CapMachine.Wpf.Services /// /// 吸气压力 /// - public ITag InhPressTag { get; set; } + public ShortControlTag InhPressTag { get; set; } /// /// 吸气温度 /// - public ITag InhTempTag { get; set; } + public ShortControlTag InhTempTag { get; set; } /// /// 膨胀阀前温度 /// - public ITag TxvFrTempTag { get; set; } + public ShortValueTag TxvFrTempTag { get; set; } /// /// 膨胀阀前压力 /// - public ITag TxvFrPressTag { get; set; } + public ShortValueTag TxvFrPressTag { get; set; } /// /// 过热度 /// - public ITag Superheat { get; set; } + public ShortValueTag Superheat { get; set; } /// /// 过冷度 /// - public ITag Subcool { get; set; } + public ShortValueTag Subcool { get; set; } + - ///// ///// 过热度 ///// @@ -229,25 +256,25 @@ namespace CapMachine.Wpf.Services IRefProp64.WMOLdll(x, ref wm); //p = Convert.ToDouble(textBox2.Text) * 1000.0;//textBox2 Comp.吸气压力(Mpa) - p = (InhPressTag.EngPvValue) * 1000.0;//textBox2 Comp.吸气压力(Mpa) + p = (InhPressTag.PVModel.EngValue) * 1000.0;//textBox2 Comp.吸气压力(Mpa) kph = 1; - p1 = (TxvFrPressTag.EngPvValue) * 1000.0;//textBox3 Evap.膨胀阀前压力(Mpa) - //p1 = Convert.ToDouble(textBox3.Text) * 1000.0;//textBox3 Evap.膨胀阀前压力(Mpa) + p1 = (TxvFrPressTag.PVModel.EngValue) * 1000.0;//textBox3 Evap.膨胀阀前压力(Mpa) + //p1 = Convert.ToDouble(textBox3.Text) * 1000.0;//textBox3 Evap.膨胀阀前压力(Mpa) IRefProp64.SATPdll(ref p, x, ref kph, ref te, ref Dl, ref Dv, xliq, xvap, ref iErr, ref herr, ref herrLen); if (iErr == 0) - Superheat.EngPvValue = InhTempTag.EngPvValue - (te - 273.15); + Superheat.PVModel.EngValue = InhTempTag.PVModel.EngValue - (te - 273.15); //textBox5.Text = String.Format("{0:n4}", Convert.ToDouble(textBox1.Text) - (te - 273.15));//textBox1 Comp.吸气温度(℃) else - Superheat.EngPvValue = 0; + Superheat.PVModel.EngValue = 0; IRefProp64.SATPdll(ref p1, x, ref kph, ref te1, ref Dl, ref Dv, xliq, xvap, ref iErr, ref herr, ref herrLen); if (iErr == 0) - Subcool.EngPvValue = TxvFrTempTag.EngPvValue - (te1 - 273.15);//textBox4 Evap.膨胀阀前温度(℃) + Subcool.PVModel.EngValue = TxvFrTempTag.PVModel.EngValue - (te1 - 273.15);//textBox4 Evap.膨胀阀前温度(℃) //GuoLengDu = (te1 - 273.15) - ListKRLogCellValue.Find(a => a.Name == "膨胀阀前温度").Value;//textBox4 Evap.膨胀阀前温度(℃) //textBox6.Text = String.Format("{0:n4}", Convert.ToDouble(textBox4.Text) - (te1 - 273.15));//textBox4 Evap.膨胀阀前温度(℃) else - Subcool.EngPvValue = 0; + Subcool.PVModel.EngValue = 0; } catch (Exception ex) { @@ -328,12 +355,12 @@ namespace CapMachine.Wpf.Services //p = Convert.ToDouble(textBox2.Text) * 1000.0;//textBox2 Comp.吸气压力(Mpa) //p = (ListRtKPMeter.Find(a => a.MeterName == "吸入压力").RtPV) * 1000.0;//textBox2 Comp.吸气压力(Mpa) - p = (InhPressTag.EngPvValue) * 1000.0;//textBox2 Comp.吸气压力(Mpa) + p = (InhPressTag.PVModel.EngValue) * 1000.0;//textBox2 Comp.吸气压力(Mpa) kph = 1; //p1 = (ListKRLogCellValue.Find(a => a.Name == "膨胀阀前压力").Value) * 1000.0;//textBox3 Evap.膨胀阀前压力(Mpa) - p1 = (TxvFrPressTag.EngPvValue) * 1000.0;//textBox3 Evap.膨胀阀前压力(Mpa) - //p1 = Convert.ToDouble(textBox3.Text) * 1000.0;//textBox3 Evap.膨胀阀前压力(Mpa) + p1 = (TxvFrPressTag.PVModel.EngValue) * 1000.0;//textBox3 Evap.膨胀阀前压力(Mpa) + //p1 = Convert.ToDouble(textBox3.Text) * 1000.0;//textBox3 Evap.膨胀阀前压力(Mpa) IRefProp64.SATPdll(ref p, x, ref kph, ref te, ref Dl, ref Dv, xliq, xvap, ref iErr, ref herr, ref herrLen); @@ -341,20 +368,20 @@ namespace CapMachine.Wpf.Services if (iErr == 0) //GuoReDu = ListRtKPMeter.Find(a => a.MeterName == "吸入温度").RtPV - (te - 273.15); - Superheat.EngPvValue = InhTempTag.EngPvValue - (te - 273.15); + Superheat.PVModel.EngValue = InhTempTag.PVModel.EngValue - (te - 273.15); //textBox5.Text = String.Format("{0:n4}", Convert.ToDouble(textBox1.Text) - (te - 273.15));//textBox1 Comp.吸气温度(℃) else - Superheat.EngPvValue = 0; + Superheat.PVModel.EngValue = 0; IRefProp64.SATPdll(ref p1, x, ref kph, ref te1, ref Dl, ref Dv, xliq, xvap, ref iErr, ref herr, ref herrLen); if (iErr == 0) //GuoLengDu = ListKRLogCellValue.Find(a => a.Name == "膨胀阀前温度").Value - (te1 - 273.15);//textBox4 Evap.膨胀阀前温度(℃) - Subcool.EngPvValue = TxvFrTempTag.EngPvValue - (te1 - 273.15);//textBox4 Evap.膨胀阀前温度(℃) + Subcool.PVModel.EngValue = TxvFrTempTag.PVModel.EngValue - (te1 - 273.15);//textBox4 Evap.膨胀阀前温度(℃) //textBox6.Text = String.Format("{0:n4}", Convert.ToDouble(textBox4.Text) - (te1 - 273.15));//textBox4 Evap.膨胀阀前温度(℃) else - Subcool.EngPvValue = 0; + Subcool.PVModel.EngValue = 0; } catch (Exception ex) diff --git a/CapMachine.Wpf/TagConfig/SysTags.json b/CapMachine.Wpf/TagConfig/SysTags.json new file mode 100644 index 0000000..f546c14 --- /dev/null +++ b/CapMachine.Wpf/TagConfig/SysTags.json @@ -0,0 +1,1103 @@ +[ + { + "Id": 10, + "Name": "转速[rpm]", + "NameNoUnit": "转速", + "EnName": "Speed", + "Group": "采集", + "MinValue": 0, + "MaxValue": 10000, + "IsMeter": false, + "DecimalPoint": 0, + "Precision": 1, + "Unit": "rpm", + "DataType": "Short", + "RWInfo": "PLCRead", + "PVModel": { + "Address": "VW15000", + "EngValue": 0, + "EngValueStr": "", + "Block": "PV", + "BlockIndex": 0 + } + }, + { + "Id": 20, + "Name": "排气压力[BarA]", + "NameNoUnit": "排气压力", + "EnName": "ExPress", + "Group": "采集", + "MinValue": 0, + "MaxValue": 10000, + "IsMeter": false, + "DecimalPoint": 0, + "Precision": 100, + "Unit": "BarA", + "DataType": "Short", + "RWInfo": "PLCRead", + "PVModel": { + "Address": "VW15002", + "EngValue": 0, + "EngValueStr": "", + "Block": "PV", + "BlockIndex": 2 + } + }, + { + "Id": 30, + "Name": "吸气压力[BarA]", + "NameNoUnit": "吸气压力", + "EnName": "InhPress", + "Group": "采集", + "MinValue": 0, + "MaxValue": 10000, + "IsMeter": false, + "DecimalPoint": 0, + "Precision": 100, + "Unit": "BarA", + "DataType": "Short", + "RWInfo": "PLCRead", + "PVModel": { + "Address": "VW15004", + "EngValue": 0, + "EngValueStr": "", + "Block": "PV", + "BlockIndex": 4 + } + }, + { + "Id": 40, + "Name": "吸气温度[℃]", + "NameNoUnit": "吸气温度", + "EnName": "InhTemp", + "Group": "采集", + "MinValue": 0, + "MaxValue": 10000, + "IsMeter": false, + "DecimalPoint": 0, + "Precision": 10, + "Unit": "℃", + "DataType": "Short", + "RWInfo": "PLCRead", + "PVModel": { + "Address": "VW15006", + "EngValue": 0, + "EngValueStr": "", + "Block": "PV", + "BlockIndex": 6 + } + }, + { + "Id": 50, + "Name": "COND1温度[℃]", + "NameNoUnit": "COND1温度", + "EnName": "Cond1Temp", + "Group": "采集", + "MinValue": 0, + "MaxValue": 10000, + "IsMeter": false, + "DecimalPoint": 0, + "Precision": 10, + "Unit": "℃", + "DataType": "Short", + "RWInfo": "PLCRead", + "PVModel": { + "Address": "VW15008", + "EngValue": 0, + "EngValueStr": "", + "Block": "PV", + "BlockIndex": 8 + } + }, + { + "Id": 60, + "Name": "润滑油压力[BarA]", + "NameNoUnit": "润滑油压力", + "EnName": "LubePress", + "Group": "采集", + "MinValue": 0, + "MaxValue": 10000, + "IsMeter": false, + "DecimalPoint": 0, + "Precision": 100, + "Unit": "BarA", + "DataType": "Short", + "RWInfo": "PLCRead", + "PVModel": { + "Address": "VW15010", + "EngValue": 0, + "EngValueStr": "", + "Block": "PV", + "BlockIndex": 10 + } + }, + { + "Id": 70, + "Name": "COND2压力[BarA]", + "NameNoUnit": "COND2压力", + "EnName": "Cond2Press", + "Group": "采集", + "MinValue": 0, + "MaxValue": 10000, + "IsMeter": false, + "DecimalPoint": 0, + "Precision": 100, + "Unit": "BarA", + "DataType": "Short", + "RWInfo": "PLCRead", + "PVModel": { + "Address": "VW15012", + "EngValue": 0, + "EngValueStr": "", + "Block": "PV", + "BlockIndex": 12 + } + }, + { + "Id": 80, + "Name": "OCR[%]", + "NameNoUnit": "OCR", + "EnName": "OCR", + "Group": "采集", + "MinValue": 0, + "MaxValue": 10000, + "IsMeter": false, + "DecimalPoint": 0, + "Precision": 10, + "Unit": "%", + "DataType": "Short", + "RWInfo": "PLCRead", + "PVModel": { + "Address": "VW15014", + "EngValue": 0, + "EngValueStr": "", + "Block": "PV", + "BlockIndex": 14 + } + }, + { + "Id": 90, + "Name": "HV[V]", + "NameNoUnit": "HV[V]", + "EnName": "HV", + "Group": "采集", + "MinValue": 0, + "MaxValue": 10000, + "IsMeter": false, + "DecimalPoint": 0, + "Precision": 10, + "Unit": "V", + "DataType": "Short", + "RWInfo": "PLCRead", + "PVModel": { + "Address": "VW15016", + "EngValue": 0, + "EngValueStr": "", + "Block": "PV", + "BlockIndex": 16 + } + }, + { + "Id": 100, + "Name": "HV[A]", + "NameNoUnit": "HV[A]", + "EnName": "HVCur", + "Group": "采集", + "MinValue": 0, + "MaxValue": 10000, + "IsMeter": false, + "DecimalPoint": 0, + "Precision": 100, + "Unit": "A", + "DataType": "Short", + "RWInfo": "PLCRead", + "PVModel": { + "Address": "VW15018", + "EngValue": 0, + "EngValueStr": "", + "Block": "PV", + "BlockIndex": 18 + } + }, + { + "Id": 110, + "Name": "HV[W]", + "NameNoUnit": "HV[W]", + "EnName": "HVPw", + "Group": "采集", + "MinValue": 0, + "MaxValue": 10000, + "IsMeter": false, + "DecimalPoint": 0, + "Precision": 1, + "Unit": "W", + "DataType": "Short", + "RWInfo": "PLCRead", + "PVModel": { + "Address": "VW15020", + "EngValue": 0, + "EngValueStr": "", + "Block": "PV", + "BlockIndex": 20 + } + }, + { + "Id": 120, + "Name": "LV[V]", + "NameNoUnit": "LV[V]", + "EnName": "LV", + "Group": "采集", + "MinValue": 0, + "MaxValue": 10000, + "IsMeter": false, + "DecimalPoint": 0, + "Precision": 10, + "Unit": "V", + "DataType": "Short", + "RWInfo": "PLCRead", + "PVModel": { + "Address": "VW15022", + "EngValue": 0, + "EngValueStr": "", + "Block": "PV", + "BlockIndex": 22 + } + }, + { + "Id": 130, + "Name": "LV[A]", + "NameNoUnit": "LV[A]", + "EnName": "LVCur", + "Group": "采集", + "MinValue": 0, + "MaxValue": 10000, + "IsMeter": false, + "DecimalPoint": 0, + "Precision": 100, + "Unit": "A", + "DataType": "Short", + "RWInfo": "PLCRead", + "PVModel": { + "Address": "VW15024", + "EngValue": 0, + "EngValueStr": "", + "Block": "PV", + "BlockIndex": 24 + } + }, + { + "Id": 140, + "Name": "环境温度[℃]", + "NameNoUnit": "环境温度", + "EnName": "EnvTemp", + "Group": "采集", + "MinValue": 0, + "MaxValue": 10000, + "IsMeter": false, + "DecimalPoint": 0, + "Precision": 10, + "Unit": "℃", + "DataType": "Short", + "RWInfo": "PLCRead", + "PVModel": { + "Address": "VW15026", + "EngValue": 0, + "EngValueStr": "", + "Block": "PV", + "BlockIndex": 26 + } + }, + { + "Id": 150, + "Name": "环境湿度[%]", + "NameNoUnit": "环境湿度", + "EnName": "EnvRH", + "Group": "采集", + "MinValue": 0, + "MaxValue": 10000, + "IsMeter": false, + "DecimalPoint": 0, + "Precision": 10, + "Unit": "%", + "DataType": "Short", + "RWInfo": "PLCRead", + "PVModel": { + "Address": "VW15028", + "EngValue": 0, + "EngValueStr": "", + "Block": "PV", + "BlockIndex": 28 + } + }, + { + "Id": 160, + "Name": "OS1温度[℃]", + "NameNoUnit": "OS1温度", + "EnName": "OS1Temp", + "Group": "采集", + "MinValue": 0, + "MaxValue": 10000, + "IsMeter": false, + "DecimalPoint": 0, + "Precision": 10, + "Unit": "℃", + "DataType": "Short", + "RWInfo": "PLCRead", + "PVModel": { + "Address": "VW15030", + "EngValue": 0, + "EngValueStr": "", + "Block": "PV", + "BlockIndex": 30 + } + }, + { + "Id": 170, + "Name": "OS2温度[℃]", + "NameNoUnit": "OS2温度", + "EnName": "OS2Temp", + "Group": "采集", + "MinValue": 0, + "MaxValue": 10000, + "IsMeter": false, + "DecimalPoint": 0, + "Precision": 10, + "Unit": "℃", + "DataType": "Short", + "RWInfo": "PLCRead", + "PVModel": { + "Address": "VW15032", + "EngValue": 0, + "EngValueStr": "", + "Block": "PV", + "BlockIndex": 32 + } + }, + { + "Id": 180, + "Name": "COND2温度[℃]", + "NameNoUnit": "COND2温度", + "EnName": "Cond2Temp", + "Group": "采集", + "MinValue": 0, + "MaxValue": 10000, + "IsMeter": false, + "DecimalPoint": 0, + "Precision": 10, + "Unit": "℃", + "DataType": "Short", + "RWInfo": "PLCRead", + "PVModel": { + "Address": "VW15034", + "EngValue": 0, + "EngValueStr": "", + "Block": "PV", + "BlockIndex": 34 + } + }, + { + "Id": 190, + "Name": "EVAP出口温度[℃]", + "NameNoUnit": "EVAP出口温度", + "EnName": "EVAPExpTemp", + "Group": "采集", + "MinValue": 0, + "MaxValue": 10000, + "IsMeter": false, + "DecimalPoint": 0, + "Precision": 10, + "Unit": "℃", + "DataType": "Short", + "RWInfo": "PLCRead", + "PVModel": { + "Address": "VW15036", + "EngValue": 0, + "EngValueStr": "", + "Block": "PV", + "BlockIndex": 36 + } + }, + { + "Id": 200, + "Name": "冷媒流量[L/min]", + "NameNoUnit": "冷媒流量", + "EnName": "VRV", + "Group": "采集", + "MinValue": 0, + "MaxValue": 10000, + "IsMeter": false, + "DecimalPoint": 0, + "Precision": 10, + "Unit": "L/min", + "DataType": "Short", + "RWInfo": "PLCRead", + "PVModel": { + "Address": "VW15038", + "EngValue": 0, + "EngValueStr": "", + "Block": "PV", + "BlockIndex": 38 + } + }, + { + "Id": 210, + "Name": "润滑油流量[L/min]", + "NameNoUnit": "润滑油流量", + "EnName": "LubeFlow", + "Group": "采集", + "MinValue": 0, + "MaxValue": 10000, + "IsMeter": false, + "DecimalPoint": 0, + "Precision": 10, + "Unit": "L/min", + "DataType": "Short", + "RWInfo": "PLCRead", + "PVModel": { + "Address": "VW15040", + "EngValue": 0, + "EngValueStr": "", + "Block": "PV", + "BlockIndex": 40 + } + }, + { + "Id": 220, + "Name": "排气温度[℃]", + "NameNoUnit": "排气温度", + "EnName": "ExTemp", + "Group": "采集", + "MinValue": 0, + "MaxValue": 10000, + "IsMeter": false, + "DecimalPoint": 0, + "Precision": 10, + "Unit": "℃", + "DataType": "Short", + "RWInfo": "PLCRead", + "PVModel": { + "Address": "VW15042", + "EngValue": 0, + "EngValueStr": "", + "Block": "PV", + "BlockIndex": 42 + } + }, + { + "Id": 230, + "Name": "膨胀阀前压力[BarA]", + "NameNoUnit": "膨胀阀前压力", + "EnName": "TxvFrPress", + "Group": "采集", + "MinValue": 0, + "MaxValue": 10000, + "IsMeter": false, + "DecimalPoint": 0, + "Precision": 100, + "Unit": "BarA", + "DataType": "Short", + "RWInfo": "PLCRead", + "PVModel": { + "Address": "VW15044", + "EngValue": 0, + "EngValueStr": "", + "Block": "PV", + "BlockIndex": 44 + } + }, + { + "Id": 240, + "Name": "膨胀阀前温度[℃]", + "NameNoUnit": "膨胀阀前温度", + "EnName": "TxvFrTemp", + "Group": "采集", + "MinValue": 0, + "MaxValue": 10000, + "IsMeter": false, + "DecimalPoint": 0, + "Precision": 10, + "Unit": "℃", + "DataType": "Short", + "RWInfo": "PLCRead", + "PVModel": { + "Address": "VW15046", + "EngValue": 0, + "EngValueStr": "", + "Block": "PV", + "BlockIndex": 46 + } + }, + { + "Id": 250, + "Name": "EVAP出口压力[BarA]", + "NameNoUnit": "EVAP出口压力", + "EnName": "EVAPExpPress", + "Group": "采集", + "MinValue": 0, + "MaxValue": 10000, + "IsMeter": false, + "DecimalPoint": 0, + "Precision": 100, + "Unit": "BarA", + "DataType": "Short", + "RWInfo": "PLCRead", + "PVModel": { + "Address": "VW15048", + "EngValue": 0, + "EngValueStr": "", + "Block": "PV", + "BlockIndex": 48 + } + }, + { + "Id": 260, + "Name": "腔内压力[BarA]", + "NameNoUnit": "腔内压力", + "EnName": "IntrplPress", + "Group": "采集", + "MinValue": 0, + "MaxValue": 10000, + "IsMeter": false, + "DecimalPoint": 0, + "Precision": 100, + "Unit": "BarA", + "DataType": "Short", + "RWInfo": "PLCRead", + "PVModel": { + "Address": "VW15050", + "EngValue": 0, + "EngValueStr": "", + "Block": "PV", + "BlockIndex": 50 + } + }, + { + "Id": 270, + "Name": "压缩机表面温度[℃]", + "NameNoUnit": "压缩机表面温度", + "EnName": "CapSurfTemp", + "Group": "采集", + "MinValue": 0, + "MaxValue": 10000, + "IsMeter": false, + "DecimalPoint": 0, + "Precision": 10, + "Unit": "℃", + "DataType": "Short", + "RWInfo": "PLCRead", + "PVModel": { + "Address": "VW15052", + "EngValue": 0, + "EngValueStr": "", + "Block": "PV", + "BlockIndex": 52 + } + }, + { + "Id": 280, + "Name": "PTC流量[L/min]", + "NameNoUnit": "PTC流量", + "EnName": "PTCFlow", + "Group": "采集", + "MinValue": 0, + "MaxValue": 10000, + "IsMeter": false, + "DecimalPoint": 0, + "Precision": 10, + "Unit": "L/min", + "DataType": "Short", + "RWInfo": "PLCRead", + "PVModel": { + "Address": "VW15054", + "EngValue": 0, + "EngValueStr": "", + "Block": "PV", + "BlockIndex": 54 + } + }, + { + "Id": 290, + "Name": "PTC入水温度[℃]", + "NameNoUnit": "PTC入水温度", + "EnName": "PTCEntTemp", + "Group": "采集", + "MinValue": 0, + "MaxValue": 10000, + "IsMeter": false, + "DecimalPoint": 0, + "Precision": 10, + "Unit": "℃", + "DataType": "Short", + "RWInfo": "PLCRead", + "PVModel": { + "Address": "VW15056", + "EngValue": 0, + "EngValueStr": "", + "Block": "PV", + "BlockIndex": 56 + } + }, + { + "Id": 300, + "Name": "PTC出水温度[℃]", + "NameNoUnit": "PTC出水温度", + "EnName": "PTCExpTemp", + "Group": "采集", + "MinValue": 0, + "MaxValue": 10000, + "IsMeter": false, + "DecimalPoint": 0, + "Precision": 10, + "Unit": "℃", + "DataType": "Short", + "RWInfo": "PLCRead", + "PVModel": { + "Address": "VW15058", + "EngValue": 0, + "EngValueStr": "", + "Block": "PV", + "BlockIndex": 58 + } + }, + { + "Id": 310, + "Name": "通讯Cmp母线电流[A]", + "NameNoUnit": "通讯Cmp母线电流", + "EnName": "ComCapBusCur", + "Group": "压缩机", + "MinValue": 0, + "MaxValue": 10000, + "IsMeter": false, + "DecimalPoint": 0, + "Precision": 100, + "Unit": "A", + "DataType": "Short", + "RWInfo": "PLCRead", + "PVModel": { + "Address": "VW15060", + "EngValue": 0, + "EngValueStr": "", + "Block": "PV", + "BlockIndex": 60 + } + }, + { + "Id": 340, + "Name": "通讯Cmp相电流[A]", + "NameNoUnit": "通讯Cmp相电流", + "EnName": "ComCapPhCur", + "Group": "压缩机", + "MinValue": 0, + "MaxValue": 10000, + "IsMeter": false, + "DecimalPoint": 0, + "Precision": 100, + "Unit": "A", + "DataType": "Short", + "RWInfo": "PLCRead", + "PVModel": { + "Address": "VW15066", + "EngValue": 0, + "EngValueStr": "", + "Block": "PV", + "BlockIndex": 66 + } + }, + { + "Id": 350, + "Name": "通讯Cmp功率[W]", + "NameNoUnit": "通讯Cmp功率", + "EnName": "ComCapPw", + "Group": "压缩机", + "MinValue": 0, + "MaxValue": 10000, + "IsMeter": false, + "DecimalPoint": 0, + "Precision": 1, + "Unit": "W", + "DataType": "Short", + "RWInfo": "PLCRead", + "PVModel": { + "Address": "VW15068", + "EngValue": 0, + "EngValueStr": "", + "Block": "PV", + "BlockIndex": 68 + } + }, + { + "Id": 360, + "Name": "通讯Cmp芯片温度[℃]", + "NameNoUnit": "通讯Cmp芯片温度", + "EnName": "ComCapChipTemp", + "Group": "压缩机", + "MinValue": 0, + "MaxValue": 10000, + "IsMeter": false, + "DecimalPoint": 0, + "Precision": 1, + "Unit": "℃", + "DataType": "Short", + "RWInfo": "PLCRead", + "PVModel": { + "Address": "VW15070", + "EngValue": 0, + "EngValueStr": "", + "Block": "PV", + "BlockIndex": 70 + } + }, + { + "Id": 370, + "Name": "通讯PTC入水温度[℃]", + "NameNoUnit": "通讯PTC入水温度", + "EnName": "ComPTCEntTemp", + "Group": "压缩机", + "MinValue": 0, + "MaxValue": 10000, + "IsMeter": false, + "DecimalPoint": 0, + "Precision": 10, + "Unit": "℃", + "DataType": "Short", + "RWInfo": "PLCRead", + "PVModel": { + "Address": "VW15072", + "EngValue": 0, + "EngValueStr": "", + "Block": "PV", + "BlockIndex": 72 + } + }, + { + "Id": 380, + "Name": "通讯PTC出水温度[℃]", + "NameNoUnit": "通讯PTC出水温度", + "EnName": "ComPTCExpTemp", + "Group": "压缩机", + "MinValue": 0, + "MaxValue": 10000, + "IsMeter": false, + "DecimalPoint": 0, + "Precision": 10, + "Unit": "℃", + "DataType": "Short", + "RWInfo": "PLCRead", + "PVModel": { + "Address": "VW15074", + "EngValue": 0, + "EngValueStr": "", + "Block": "PV", + "BlockIndex": 74 + } + }, + { + "Id": 390, + "Name": "通讯PTC峰值电流[A]", + "NameNoUnit": "通讯PTC峰值电流", + "EnName": "ComPTCPeakCur", + "Group": "压缩机", + "MinValue": 0, + "MaxValue": 10000, + "IsMeter": false, + "DecimalPoint": 0, + "Precision": 1, + "Unit": "A", + "DataType": "Short", + "RWInfo": "PLCRead", + "PVModel": { + "Address": "VW15076", + "EngValue": 0, + "EngValueStr": "", + "Block": "PV", + "BlockIndex": 76 + } + }, + { + "Id": 400, + "Name": "通讯PTC母线电流[A]", + "NameNoUnit": "通讯PTC母线电流", + "EnName": "ComPTCBusCur", + "Group": "压缩机", + "MinValue": 0, + "MaxValue": 10000, + "IsMeter": false, + "DecimalPoint": 0, + "Precision": 100, + "Unit": "A", + "DataType": "Short", + "RWInfo": "PLCRead", + "PVModel": { + "Address": "VW15078", + "EngValue": 0, + "EngValueStr": "", + "Block": "PV", + "BlockIndex": 78 + } + }, + { + "Id": 410, + "Name": "通讯PTC膜温[℃]", + "NameNoUnit": "通讯PTC膜温", + "EnName": "ComPTCFlmTemp", + "Group": "压缩机", + "MinValue": 0, + "MaxValue": 10000, + "IsMeter": false, + "DecimalPoint": 0, + "Precision": 1, + "Unit": "℃", + "DataType": "Short", + "RWInfo": "PLCRead", + "PVModel": { + "Address": "VW15080", + "EngValue": 0, + "EngValueStr": "", + "Block": "PV", + "BlockIndex": 80 + } + }, + { + "Id": 420, + "Name": "通讯PTC模块温度[℃]", + "NameNoUnit": "通讯PTC模块温度", + "EnName": "ComPTCMdTemp", + "Group": "压缩机", + "MinValue": 0, + "MaxValue": 10000, + "IsMeter": false, + "DecimalPoint": 0, + "Precision": 1, + "Unit": "℃", + "DataType": "Short", + "RWInfo": "PLCRead", + "PVModel": { + "Address": "VW15082", + "EngValue": 0, + "EngValueStr": "", + "Block": "PV", + "BlockIndex": 82 + } + }, + { + "Id": 430, + "Name": "液冷媒流量[kg/h]", + "NameNoUnit": "液冷媒流量", + "EnName": "LiqRefFlow", + "Group": "采集", + "MinValue": 0, + "MaxValue": 10000, + "IsMeter": false, + "DecimalPoint": 0, + "Precision": 1, + "Unit": "kg/h", + "DataType": "Short", + "RWInfo": "PLCRead", + "PVModel": { + "Address": "VW15084", + "EngValue": 0, + "EngValueStr": "", + "Block": "PV", + "BlockIndex": 84 + } + }, + { + "Id": 440, + "Name": "干度流量[kg/h]", + "NameNoUnit": "干度流量", + "EnName": "DryFlow", + "Group": "采集", + "MinValue": 0, + "MaxValue": 10000, + "IsMeter": false, + "DecimalPoint": 0, + "Precision": 1, + "Unit": "kg/h", + "DataType": "Short", + "RWInfo": "PLCRead", + "PVModel": { + "Address": "VW15086", + "EngValue": 0, + "EngValueStr": "", + "Block": "PV", + "BlockIndex": 86 + } + }, + { + "Id": 450, + "Name": "H5吸气混合器温度[℃]", + "NameNoUnit": "H5吸气混合器温度", + "EnName": "H5InhMixTemp", + "Group": "采集", + "MinValue": 0, + "MaxValue": 10000, + "IsMeter": false, + "DecimalPoint": 0, + "Precision": 1, + "Unit": "℃", + "DataType": "Short", + "RWInfo": "PLCRead", + "PVModel": { + "Address": "VW15088", + "EngValue": 0, + "EngValueStr": "", + "Block": "PV", + "BlockIndex": 88 + } + }, + { + "Id": 460, + "Name": "COND循环水温[℃]", + "NameNoUnit": "COND循环水温", + "EnName": "CONDCirWaterTemp", + "Group": "采集", + "MinValue": 0, + "MaxValue": 10000, + "IsMeter": false, + "DecimalPoint": 0, + "Precision": 1, + "Unit": "℃", + "DataType": "Short", + "RWInfo": "PLCRead", + "PVModel": { + "Address": "VW15090", + "EngValue": 0, + "EngValueStr": "", + "Block": "PV", + "BlockIndex": 90 + } + }, + { + "Id": 470, + "Name": "SUBCOOL出口温度[℃]", + "NameNoUnit": "SUBCOOL出口温度", + "EnName": "SubcoolOutTemp", + "Group": "采集", + "MinValue": 0, + "MaxValue": 10000, + "IsMeter": false, + "DecimalPoint": 0, + "Precision": 1, + "Unit": "℃", + "DataType": "Short", + "RWInfo": "PLCRead", + "PVModel": { + "Address": "VW15092", + "EngValue": 0, + "EngValueStr": "", + "Block": "PV", + "BlockIndex": 92 + } + }, + { + "Id": 480, + "Name": "吸气混合器出口温度[℃]", + "NameNoUnit": "吸气混合器出口温度", + "EnName": "InhMixOutTemp", + "Group": "采集", + "MinValue": 0, + "MaxValue": 10000, + "IsMeter": false, + "DecimalPoint": 0, + "Precision": 1, + "Unit": "℃", + "DataType": "Short", + "RWInfo": "PLCRead", + "PVModel": { + "Address": "VW15094", + "EngValue": 0, + "EngValueStr": "", + "Block": "PV", + "BlockIndex": 94 + } + }, + { + "Id": 490, + "Name": "H1出口温度[℃]", + "NameNoUnit": "H1出口温度", + "EnName": "H1OutTemp", + "Group": "采集", + "MinValue": 0, + "MaxValue": 10000, + "IsMeter": false, + "DecimalPoint": 0, + "Precision": 1, + "Unit": "℃", + "DataType": "Short", + "RWInfo": "PLCRead", + "PVModel": { + "Address": "VW15096", + "EngValue": 0, + "EngValueStr": "", + "Block": "PV", + "BlockIndex": 96 + } + }, + { + "Id": 500, + "Name": "S.C循环水温[℃]", + "NameNoUnit": "S.C循环水温", + "EnName": "SCCirWaterTemp", + "Group": "采集", + "MinValue": 0, + "MaxValue": 10000, + "IsMeter": false, + "DecimalPoint": 0, + "Precision": 1, + "Unit": "℃", + "DataType": "Short", + "RWInfo": "PLCRead", + "PVModel": { + "Address": "VW15098", + "EngValue": 0, + "EngValueStr": "", + "Block": "PV", + "BlockIndex": 98 + } + }, + { + "Id": 510, + "Name": "EVAP循环水温[℃]", + "NameNoUnit": "EVAP循环水温", + "EnName": "EvapCirWaterTemp", + "Group": "采集", + "MinValue": 0, + "MaxValue": 10000, + "IsMeter": false, + "DecimalPoint": 0, + "Precision": 1, + "Unit": "℃", + "DataType": "Short", + "RWInfo": "PLCRead", + "PVModel": { + "Address": "VW15100", + "EngValue": 0, + "EngValueStr": "", + "Block": "PV", + "BlockIndex": 100 + } + }, + { + "Id": 520, + "Name": "吸气混合器出口压力[BarA]", + "NameNoUnit": "吸气混合器出口压力", + "EnName": "InhMixOutPress", + "Group": "采集", + "MinValue": 0, + "MaxValue": 10000, + "IsMeter": false, + "DecimalPoint": 0, + "Precision": 1, + "Unit": "BarA", + "DataType": "Short", + "RWInfo": "PLCRead", + "PVModel": { + "Address": "VW15102", + "EngValue": 0, + "EngValueStr": "", + "Block": "PV", + "BlockIndex": 102 + } + } +] + \ No newline at end of file diff --git a/CapMachine.Wpf/ViewModels/DialogChartRtConfigViewModel.cs b/CapMachine.Wpf/ViewModels/DialogChartRtConfigViewModel.cs index 461e769..66f676a 100644 --- a/CapMachine.Wpf/ViewModels/DialogChartRtConfigViewModel.cs +++ b/CapMachine.Wpf/ViewModels/DialogChartRtConfigViewModel.cs @@ -84,7 +84,7 @@ namespace CapMachine.Wpf.ViewModels /// private void LoadChartSourceData() { - foreach (var item in MachineRtDataService.TagManger.DicTags) + foreach (var item in MachineRtDataService.TagManger.DicTags.OrderBy(a => a.Value.Id)) { ChartSrcDataListViewItems.Add(new ChartSrcData() { diff --git a/CapMachine.Wpf/ViewModels/DialogHistoryChartRtConfigViewModel.cs b/CapMachine.Wpf/ViewModels/DialogHistoryChartRtConfigViewModel.cs index 1202fe7..7ff8cfe 100644 --- a/CapMachine.Wpf/ViewModels/DialogHistoryChartRtConfigViewModel.cs +++ b/CapMachine.Wpf/ViewModels/DialogHistoryChartRtConfigViewModel.cs @@ -82,7 +82,7 @@ namespace CapMachine.Wpf.ViewModels /// private void LoadChartSourceData() { - foreach (var item in MachineRtDataService.TagManger.DicTags) + foreach (var item in MachineRtDataService.TagManger.DicTags.OrderBy(a => a.Value.Id)) { ChartSrcDataListViewItems.Add(new ChartSrcData() { diff --git a/CapMachine.Wpf/ViewModels/MonitorViewModel.cs b/CapMachine.Wpf/ViewModels/MonitorViewModel.cs index b141a71..be9b249 100644 --- a/CapMachine.Wpf/ViewModels/MonitorViewModel.cs +++ b/CapMachine.Wpf/ViewModels/MonitorViewModel.cs @@ -47,8 +47,8 @@ namespace CapMachine.Wpf.ViewModels //赋值实例化 ListHandSwitchData = MachineRtDataService.ListHandSwitchData; - ListTag = new ObservableCollection(TagManager.DicTags.Values.ToList()); - ListMeterTag = TagManager.DicTags.Values.Where(a => a.IsMeter == true).ToList(); + ListTag = new ObservableCollection(TagManager.DicTags.Values.OrderBy(a => a.Id).ToList()); + ListMeterTag = TagManager.DicTags.Values.OrderBy(a=>a.Id).Take(11).ToList(); SpeedTag = TagManager.DicTags.GetValueOrDefault("转速[rpm]"); ExPressTag = TagManager.DicTags.GetValueOrDefault("排气压力[BarA]"); diff --git a/CapMachine.Wpf/Views/FooterView.xaml b/CapMachine.Wpf/Views/FooterView.xaml index c00708f..8d4fb6e 100644 --- a/CapMachine.Wpf/Views/FooterView.xaml +++ b/CapMachine.Wpf/Views/FooterView.xaml @@ -133,7 +133,7 @@ - + - + + + + + + + + + + + + - - - - - + + diff --git a/CapMachine.Wpf/Views/MonitorView.xaml b/CapMachine.Wpf/Views/MonitorView.xaml index 1faec5f..33b593b 100644 --- a/CapMachine.Wpf/Views/MonitorView.xaml +++ b/CapMachine.Wpf/Views/MonitorView.xaml @@ -172,7 +172,7 @@ HandValueSVParameter="{Binding EngSvValue}" IsEnabled="False" MeterName="{Binding NameNoUnit}" - PVValue="{Binding EngPvValue}" + PVValue="{Binding PVModel.EngValueStr}" SVValue="{Binding EngSvValue}" Unit="{Binding Unit}" /> @@ -945,7 +945,7 @@ VerticalAlignment="Top" CellTitle="转速" CellUnit="{Binding SpeedTag.Unit}" - CellValue="{Binding SpeedTag.EngPvValueStr}" /> + CellValue="{Binding SpeedTag.PVModel.EngValueStr}" /> + CellValue="{Binding ComCapBusVolTag.PVModel.EngValueStr}" /> + CellValue="{Binding ComCapBusCurTag.PVModel.EngValueStr}" /> + CellValue="{Binding ComCapPwTag.PVModel.EngValueStr}" /> + CellValue="{Binding ExPressTag.PVModel.EngValueStr}" /> + CellValue="{Binding ExTempTag.PVModel.EngValueStr}" /> + CellValue="{Binding InhPressTag.PVModel.EngValueStr}" /> + CellValue="{Binding InhTempTag.PVModel.EngValueStr}" /> - + +