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}" />
-
+
+