diff --git a/CapMachine.Model/PLCParsModel/PlcMeterStepCellQuick.cs b/CapMachine.Model/PLCParsModel/PlcMeterStepCellQuick.cs
new file mode 100644
index 0000000..ecd9c69
--- /dev/null
+++ b/CapMachine.Model/PLCParsModel/PlcMeterStepCellQuick.cs
@@ -0,0 +1,31 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace CapMachine.Model
+{
+ ///
+ /// 步骤的PLC数据单元
+ ///
+ public class PlcMeterStepCellQuick
+ {
+ ///
+ /// 步骤序号
+ /// 从1开始
+ ///
+ public int Step { get; set; }
+
+ ///
+ /// 值
+ ///
+ public double? Value { get; set; }
+
+ ///
+ /// 地址
+ ///
+ public string? Address { get; set; }
+
+ }
+}
diff --git a/CapMachine.Model/PLCParsModel/PlcParsDataQuick.cs b/CapMachine.Model/PLCParsModel/PlcParsDataQuick.cs
new file mode 100644
index 0000000..62d76c8
--- /dev/null
+++ b/CapMachine.Model/PLCParsModel/PlcParsDataQuick.cs
@@ -0,0 +1,53 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace CapMachine.Model.PLCParsModel
+{
+ public class PlcParsDataQuick
+ {
+ public PlcParsDataQuick()
+ {
+ Steps = new List();
+ Unit = "";
+ }
+
+ ///
+ /// 名称
+ ///
+ public string? Name { get; set; }
+
+ ///
+ /// Model 名称/英文名称
+ ///
+ public string? EnName { get; set; }
+
+ ///
+ /// 单位
+ ///
+ public string? Unit { get; set; }
+
+ ///
+ /// 分辨率
+ ///
+ public int? Ratio { get; set; }
+
+ ///
+ /// 步骤集合信息
+ ///
+ public List Steps { get; set; }
+
+ ///
+ /// 值首地址
+ ///
+ public int ValueStartAddress { get; set; }
+
+ ///
+ /// 步长
+ ///
+ public int Step { get; set; } = 100;
+
+ }
+}
diff --git a/CapMachine.Model/QuickMeterConfig/QuickMeterStep.cs b/CapMachine.Model/QuickMeterConfig/QuickMeterStep.cs
index 9833bd1..4ab9cf2 100644
--- a/CapMachine.Model/QuickMeterConfig/QuickMeterStep.cs
+++ b/CapMachine.Model/QuickMeterConfig/QuickMeterStep.cs
@@ -157,5 +157,48 @@ namespace CapMachine.Model.QuickMeterConfig
/////
//[Column(Name = "xxxx")]
//public double xxxx { get; set; }
+
+
+ ///
+ /// 输出锁定(0/1)
+ /// 跟随速度步骤的常值数据
+ ///
+ [Column(Name = "OutLock")]
+ public bool OutLock { get; set; }
+
+ ///
+ ///参数编号(1~16)
+ /// 跟随速度步骤的常值数据
+ ///
+ [Column(Name = "ParNo")]
+ public int ParNo { get; set; }
+
+ ///
+ ///EV(1~4)
+ /// 跟随速度步骤的常值数据
+ ///
+ [Column(Name = "Ev")]
+ public int Ev { get; set; }
+
+ //
+ /// 压缩机使能(0/1)
+ /// 跟随速度步骤的常值数据
+ ///
+ [Column(Name = "CapEnable")]
+ public bool CapEnable { get; set; }
+
+ //
+ /// 吸排气阀(0/1)
+ /// 跟随速度步骤的常值数据
+ ///
+ [Column(Name = "InhExhValve")]
+ public bool InhExhValve { get; set; }
+
+ //
+ /// 加热器使能(0/1)
+ /// 跟随速度步骤的常值数据
+ ///
+ [Column(Name = "HeatEnable")]
+ public bool HeatEnable { get; set; }
}
}
diff --git a/CapMachine.Wpf/App.xaml.cs b/CapMachine.Wpf/App.xaml.cs
index ca44b9b..5a70089 100644
--- a/CapMachine.Wpf/App.xaml.cs
+++ b/CapMachine.Wpf/App.xaml.cs
@@ -66,8 +66,8 @@ namespace CapMachine.Wpf
containerRegistry.RegisterSingleton();
containerRegistry.Register(typeof(IMapper), GetMapper);
- string strsqllite = System.AppDomain.CurrentDomain.BaseDirectory+ @"Db\CapMachine.db";
- string strslocaldb = System.AppDomain.CurrentDomain.BaseDirectory+ @"Db\CapMachineDb";
+ string strsqllite = System.AppDomain.CurrentDomain.BaseDirectory + @"Db\CapMachine.db";
+ string strslocaldb = System.AppDomain.CurrentDomain.BaseDirectory + @"Db\CapMachineDb";
//string assemblyPath = Assembly.GetExecutingAssembly().Location;
var Con = ConfigHelper.GetValue("connecting5").Replace("@Address@", strsqllite);
var LocalDb = @"Data Source=(localdb)\MSSQLLocalDB;AttachDbFilename=@Address@.mdf;Integrated Security=True;Connect Timeout=30;";
@@ -96,7 +96,8 @@ namespace CapMachine.Wpf
containerRegistry.RegisterForNavigation();
containerRegistry.RegisterForNavigation();
containerRegistry.RegisterForNavigation();
-
+ containerRegistry.RegisterForNavigation();
+
//注册Dialog视图时绑定VM
containerRegistry.RegisterDialog();
containerRegistry.RegisterDialog();
@@ -145,7 +146,7 @@ namespace CapMachine.Wpf
//给MainView的MainViewFooterContentRegion区域设置FooterView具体的信息
regionManager.RequestNavigate("MainViewFooterContentRegion", nameof(FooterView));
-
+
//调用首页的INavigationAware 接口做一个初始化操作
if (view.DataContext is INavigationAware navigationAware)
@@ -166,7 +167,7 @@ namespace CapMachine.Wpf
base.OnInitialized();
-
+
}
}
diff --git a/CapMachine.Wpf/CapMachine.Wpf.csproj b/CapMachine.Wpf/CapMachine.Wpf.csproj
index 02a961d..35f5cc9 100644
--- a/CapMachine.Wpf/CapMachine.Wpf.csproj
+++ b/CapMachine.Wpf/CapMachine.Wpf.csproj
@@ -21,6 +21,7 @@
+
diff --git a/CapMachine.Wpf/Dtos/QuickMeterStepDto.cs b/CapMachine.Wpf/Dtos/QuickMeterStepDto.cs
index e68658a..7ac8683 100644
--- a/CapMachine.Wpf/Dtos/QuickMeterStepDto.cs
+++ b/CapMachine.Wpf/Dtos/QuickMeterStepDto.cs
@@ -1,4 +1,5 @@
-using Prism.Mvvm;
+using Ganss.Excel;
+using Prism.Mvvm;
using System;
using System.Collections.Generic;
using System.Linq;
@@ -14,6 +15,7 @@ namespace CapMachine.Wpf.Dtos
///
/// 步骤序号
///
+ [Column("步骤序号")]
public int StepNo
{
get { return _StepNo; }
@@ -24,6 +26,7 @@ namespace CapMachine.Wpf.Dtos
///
/// 时间-分钟
///
+ [Column("时间(min)")]
public int TimeMin
{
get { return _TimeMin; }
@@ -34,6 +37,7 @@ namespace CapMachine.Wpf.Dtos
///
/// 时间-秒
///
+ [Column("时间(sec)")]
public int TimeSec
{
get { return _TimeSec; }
@@ -42,8 +46,9 @@ namespace CapMachine.Wpf.Dtos
private int _Cycle;
///
- /// 循环
+ /// 循环次数
///
+ [Column("次数")]
public int Cycle
{
get { return _Cycle; }
@@ -54,16 +59,51 @@ namespace CapMachine.Wpf.Dtos
///
/// 速度 信息
///
+ [Column("速度(r/min)")]
public double Speed
{
get { return _Speed; }
set { _Speed = value; RaisePropertyChanged(); }
}
+ private double _InhPress;
+ ///
+ /// 吸气压力 信息
+ ///
+ [Column("吸气压力(MPa)")]
+ public double InhPress
+ {
+ get { return _InhPress; }
+ set { _InhPress = value; RaisePropertyChanged(); }
+ }
+
+ private double _ExPress;
+ ///
+ /// 排气压力 信息
+ ///
+ [Column("排气压力(MPa)")]
+ public double ExPress
+ {
+ get { return _ExPress; }
+ set { _ExPress = value; RaisePropertyChanged(); }
+ }
+
+ private double _InhTemp;
+ ///
+ /// 吸气温度 信息
+ ///
+ [Column("吸气温度(℃)")]
+ public double InhTemp
+ {
+ get { return _InhTemp; }
+ set { _InhTemp = value; RaisePropertyChanged(); }
+ }
+
private double _Cond1Temp;
///
/// COND1温度 信息
///
+ [Column("COND1温度(℃)")]
public double Cond1Temp
{
get { return _Cond1Temp; }
@@ -74,6 +114,7 @@ namespace CapMachine.Wpf.Dtos
///
/// COND2温度 信息
///
+ [Column("COND2温度(℃)")]
public double Cond2Temp
{
get { return _Cond2Temp; }
@@ -84,6 +125,7 @@ namespace CapMachine.Wpf.Dtos
///
/// COND2压力 信息
///
+ [Column("COND2压力(MPa)")]
public double Cond2Press
{
get { return _Cond2Press; }
@@ -94,56 +136,29 @@ namespace CapMachine.Wpf.Dtos
///
/// EVAP出口温度 信息
///
+ [Column("EVAP出口温度(℃)")]
public double EVAPExpTemp
{
get { return _EVAPExpTemp; }
set { _EVAPExpTemp = value; RaisePropertyChanged(); }
}
- private double _ExPress;
- ///
- /// 排气压力 信息
- ///
- public double ExPress
- {
- get { return _ExPress; }
- set { _ExPress = value; RaisePropertyChanged(); }
- }
-
private double _HVVol;
///
/// HV电压 信息
///
+ [Column("HV电压(V)")]
public double HVVol
{
get { return _HVVol; }
set { _HVVol = value; RaisePropertyChanged(); }
}
- private double _InhPress;
- ///
- /// 吸气压力 信息
- ///
- public double InhPress
- {
- get { return _InhPress; }
- set { _InhPress = value; RaisePropertyChanged(); }
- }
-
- private double _InhTemp;
- ///
- /// 吸气温度 信息
- ///
- public double InhTemp
- {
- get { return _InhTemp; }
- set { _InhTemp = value; RaisePropertyChanged(); }
- }
-
private double _LubePress;
///
/// 润滑油压力 信息
///
+ [Column("润滑油压力(MPa)")]
public double LubePress
{
get { return _LubePress; }
@@ -154,6 +169,7 @@ namespace CapMachine.Wpf.Dtos
///
/// LV电压 信息
///
+ [Column("LV电压(V)")]
public double LVVol
{
get { return _LVVol; }
@@ -164,6 +180,7 @@ namespace CapMachine.Wpf.Dtos
///
/// OCR 信息
///
+ [Column("OCR(%)")]
public double OCR
{
get { return _OCR; }
@@ -174,6 +191,7 @@ namespace CapMachine.Wpf.Dtos
///
/// OS1温度 信息
///
+ [Column("OS1温度(℃)")]
public double OS1Temp
{
get { return _OS1Temp; }
@@ -184,6 +202,7 @@ namespace CapMachine.Wpf.Dtos
///
/// OS2温度 信息
///
+ [Column("OS2温度(℃)")]
public double OS2Temp
{
get { return _OS2Temp; }
@@ -194,6 +213,7 @@ namespace CapMachine.Wpf.Dtos
///
/// PTC入口温度 信息
///
+ [Column("PTC入口温度(℃)")]
public double PTCEntTemp
{
get { return _PTCEntTemp; }
@@ -204,6 +224,7 @@ namespace CapMachine.Wpf.Dtos
///
/// PTC流量 信息
///
+ [Column("PTC流量(L/min)")]
public double PTCFlow
{
get { return _PTCFlow; }
@@ -214,6 +235,7 @@ namespace CapMachine.Wpf.Dtos
///
/// PTC功率 信息
///
+ [Column("PTC功率(W)")]
public double PTCPw
{
get { return _PTCPw; }
@@ -224,6 +246,7 @@ namespace CapMachine.Wpf.Dtos
///
/// 压缩机环境湿度 信息
///
+ [Column("压缩机环境湿度(%)")]
public double EnvRH
{
get { return _EnvRH; }
@@ -234,11 +257,81 @@ namespace CapMachine.Wpf.Dtos
///
/// 压缩机环境温度 信息
///
+ [Column("压缩机环境温度(℃)")]
public double EnvTemp
{
get { return _EnvTemp; }
set { _EnvTemp = value; RaisePropertyChanged(); }
}
+
+
+
+
+ private bool _OutLock;
+ ///
+ /// 输出锁定
+ ///
+ [Column("输出锁定")]
+ public bool OutLock
+ {
+ get { return _OutLock; }
+ set { _OutLock = value; RaisePropertyChanged(); }
+ }
+
+ private int _ParNo;
+ ///
+ /// 参数编号
+ ///
+ [Column("参数编号")]
+ public int ParNo
+ {
+ get { return _ParNo; }
+ set { _ParNo = value; RaisePropertyChanged(); }
+ }
+
+ private int _EV;
+ ///
+ /// Ev
+ ///
+ [Column("Ev")]
+ public int EV
+ {
+ get { return _EV; }
+ set { _EV = value; RaisePropertyChanged(); }
+ }
+
+ private bool _InhExhValve;
+ ///
+ /// 吸排气阀
+ ///
+ [Column("InhExhValve")]
+ public bool InhExhValve
+ {
+ get { return _InhExhValve; }
+ set { _InhExhValve = value; RaisePropertyChanged(); }
+ }
+
+ private bool _CapEnable;
+ ///
+ /// 使能
+ ///
+ [Column("使能")]
+ public bool CapEnable
+ {
+ get { return _CapEnable; }
+ set { _CapEnable = value; RaisePropertyChanged(); }
+ }
+
+ private bool _HeatEnable;
+ ///
+ /// 加热器使能
+ ///
+ [Column("加热器使能")]
+ public bool HeatEnable
+ {
+ get { return _HeatEnable; }
+ set { _HeatEnable = value; RaisePropertyChanged(); }
+ }
}
}
diff --git a/CapMachine.Wpf/Models/Tag/IRegisterValue.cs b/CapMachine.Wpf/Models/Tag/IRegisterValue.cs
index 0e4b1e6..8bb1e1c 100644
--- a/CapMachine.Wpf/Models/Tag/IRegisterValue.cs
+++ b/CapMachine.Wpf/Models/Tag/IRegisterValue.cs
@@ -1,15 +1,22 @@
using HslCommunication;
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
+using System.ComponentModel;
namespace CapMachine.Wpf.Models.Tag
{
- public interface IRegisterValue
+ ///
+ /// 寄存器类型
+ ///
+ ///
+ public interface IRegisterValue : INotifyPropertyChanged
{
+ ///
+ /// 值
+ ///
T Value { get; set; }
+
+ ///
+ /// 值原始数据
+ ///
OperateResult OperateResultSource { get; set; }
}
}
diff --git a/CapMachine.Wpf/Models/Tag/ITag.cs b/CapMachine.Wpf/Models/Tag/ITag.cs
index 00545ae..41ecb29 100644
--- a/CapMachine.Wpf/Models/Tag/ITag.cs
+++ b/CapMachine.Wpf/Models/Tag/ITag.cs
@@ -1,5 +1,4 @@
-using NPOI.SS.Formula.Functions;
-using Prism.Mvvm;
+using Prism.Mvvm;
using System;
using System.Collections.Generic;
using System.Linq;
@@ -8,10 +7,19 @@ using System.Threading.Tasks;
namespace CapMachine.Wpf.Models.Tag
{
+ ///
+ /// 标签的接口
+ ///
public interface ITag
{
+ ///
+ /// 中文名称
+ ///
string Name { get; set; }
- T RtValue { get; set; }
+ ///
+ /// 英文名称
+ ///
+ string EnName { get; set; }
}
}
diff --git a/CapMachine.Wpf/Models/Tag/RegisterValue.cs b/CapMachine.Wpf/Models/Tag/RegisterValue.cs
deleted file mode 100644
index 7859dbc..0000000
--- a/CapMachine.Wpf/Models/Tag/RegisterValue.cs
+++ /dev/null
@@ -1,15 +0,0 @@
-using HslCommunication;
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-
-namespace CapMachine.Wpf.Models.Tag
-{
- public class RegisterValue : IRegisterValue
- {
- public byte Value { get; set; }
- public OperateResult? OperateResultSource { get; set; }
- }
-}
diff --git a/CapMachine.Wpf/Models/Tag/ShortRegisterValue.cs b/CapMachine.Wpf/Models/Tag/ShortRegisterValue.cs
new file mode 100644
index 0000000..896033b
--- /dev/null
+++ b/CapMachine.Wpf/Models/Tag/ShortRegisterValue.cs
@@ -0,0 +1,31 @@
+using HslCommunication;
+using Prism.Mvvm;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace CapMachine.Wpf.Models.Tag
+{
+ ///
+ /// Short类型的寄存器数据
+ ///
+ public class ShortRegisterValue :BindableBase, IRegisterValue
+ {
+ private short _Value;
+ ///
+ /// 值
+ ///
+ public short Value
+ {
+ get { return _Value; }
+ set { _Value = value;RaisePropertyChanged(); }
+ }
+
+ ///
+ /// 寄存器原始数据
+ ///
+ public OperateResult? OperateResultSource { get; set; }
+ }
+}
diff --git a/CapMachine.Wpf/Models/Tag/ShortTag.cs b/CapMachine.Wpf/Models/Tag/ShortTag.cs
index c59f52d..d0af53b 100644
--- a/CapMachine.Wpf/Models/Tag/ShortTag.cs
+++ b/CapMachine.Wpf/Models/Tag/ShortTag.cs
@@ -7,39 +7,39 @@ namespace CapMachine.Wpf.Models.Tag
/////
///// 字变量模型
/////
- //public class ShortTag: BaseTag
+ //public class ShortTag : BaseTag
//{
// public ShortTag(string name, string enName, string unit, ComEnum.TagType tagType) : base(name, enName, unit, tagType)
// {
// }
- // private short _RtValue;
+ // private TestType _RtValue;
// ///
// /// 实时值
// ///
- // public override short RtValue
+ // public override TestType RtValue
// {
// get { return _RtValue; }
// set { _RtValue = value; RaisePropertyChanged(); }
// }
- // private OperateResult _OperateResultSource;
- // ///
- // /// 原始值
- // ///
- // public override OperateResult OperateResultSource
- // {
- // get { return _OperateResultSource; }
- // set
- // {
- // if (value != _OperateResultSource)
- // {
- // RtValue= value.Content;
- // }
- // _OperateResultSource = value;
- // }
- // }
+ // //private OperateResult _OperateResultSource;
+ // /////
+ // ///// 原始值
+ // /////
+ // //public override OperateResult OperateResultSource
+ // //{
+ // // get { return _OperateResultSource; }
+ // // set
+ // // {
+ // // if (value != _OperateResultSource)
+ // // {
+ // // RtValue = value.Content;
+ // // }
+ // // _OperateResultSource = value;
+ // // }
+ // //}
// private DataType _DataTypeInfo;
// ///
diff --git a/CapMachine.Wpf/Models/Tag/BaseTag.cs b/CapMachine.Wpf/Models/Tag/Tag.cs
similarity index 66%
rename from CapMachine.Wpf/Models/Tag/BaseTag.cs
rename to CapMachine.Wpf/Models/Tag/Tag.cs
index 6dfc29e..f3d7197 100644
--- a/CapMachine.Wpf/Models/Tag/BaseTag.cs
+++ b/CapMachine.Wpf/Models/Tag/Tag.cs
@@ -1,12 +1,5 @@
using HslCommunication;
-using ImTools;
-using NPOI.SS.Formula.Functions;
using Prism.Mvvm;
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
using static CapMachine.Wpf.Models.ComEnum;
namespace CapMachine.Wpf.Models.Tag
@@ -14,7 +7,7 @@ namespace CapMachine.Wpf.Models.Tag
///
/// 基础模型
///
- public abstract class BaseTag : BindableBase
+ public class Tag : BindableBase, ITag
{
///
/// 实例化函数
@@ -22,13 +15,16 @@ namespace CapMachine.Wpf.Models.Tag
///
///
///
- public BaseTag(string name, string enName, string unit, TagType tagType)
+ public Tag(string name, string enName, string unit, TagType tagType, IRegisterValue registerValue)
{
TagTypeInfo = tagType;
Name = name;
Unit = unit;
EnName = enName;
+ //实例化
+ RtValue = registerValue;
+
}
///
@@ -41,16 +37,25 @@ namespace CapMachine.Wpf.Models.Tag
///
public string EnName { get; set; }
-
/////
///// 实时值
/////
- public abstract IRegisterValue RtValue { get; set; }
+ //public abstract IRegisterValue RtValue { get; set; }
- ///////
- /////// 原始值实时值
- ///////
- //public abstract OperateResult OperateResultSource { get; set; } //
+ private IRegisterValue _RtValue;
+ ///
+ /// 寄存器
+ ///
+ public IRegisterValue RtValue
+ {
+ get { return _RtValue; }
+ set { _RtValue = value; RaisePropertyChanged(); }
+ }
+
+ ///
+ /// 原始值实时值
+ ///
+ public OperateResult OperateResultSource { get; set; } //
///
/// 标签类型信息
@@ -60,7 +65,7 @@ namespace CapMachine.Wpf.Models.Tag
///
/// 数据类型信息
///
- public abstract DataType DataTypeInfo { get; set; }
+ public DataType DataTypeInfo { get; set; }
///
/// 地址信息
@@ -98,4 +103,12 @@ namespace CapMachine.Wpf.Models.Tag
///
public int SamplingPeriod { get; set; }
}
+
+ public struct TestType
+ {
+ public short shortValue { get; set; }
+ public byte byteValue { get; set; }
+ public double doubleValue { get; set; }
+ }
+
}
diff --git a/CapMachine.Wpf/Models/Tag/TagManager.cs b/CapMachine.Wpf/Models/Tag/TagManager.cs
index 354a69b..aafd6bc 100644
--- a/CapMachine.Wpf/Models/Tag/TagManager.cs
+++ b/CapMachine.Wpf/Models/Tag/TagManager.cs
@@ -1,4 +1,5 @@
-using System;
+using NPOI.SS.Formula.PTG;
+using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
@@ -9,35 +10,68 @@ namespace CapMachine.Wpf.Models.Tag
{
///
/// 标签管理中心
+ /// 对标签的操作在这里进行
///
public class TagManager
{
+ ///
+ /// 实例化函数
+ ///
public TagManager()
{
-
+
}
///
/// 标签集合数据
///
- public List ListTag = new List();
+ public Dictionary DicTags = new Dictionary();
- /////
- ///// 增加标签
- /////
- //public void AddTag(BaseTag baseTag)
- //{
- // ListTag.Add(baseTag);
- //}
+ ///
+ /// 增加标签
+ ///
+ public void AddTag(Tag baseTag)
+ {
+ DicTags[baseTag.Name] = baseTag;
+ }
- /////
- ///// 增加集合标签
- /////
- /////
- //public void AddRange(List> baseTags)
- //{
- // ListTag.AddRange(baseTags);
- //}
+ ///
+ /// 获取标签信息
+ ///
+ ///
+ ///
+ ///
+ public Tag? GetTagByName(string name)
+ {
+ //return ListTag.OfType>()
+ // .FirstOrDefault(t => t.Name.Equals(name, StringComparison.OrdinalIgnoreCase));
+
+ // 尝试从字典中获取标签,并使用 as 关键字避免类型转换失败抛出异常
+ if (DicTags.TryGetValue(name, out var FindTag))
+ {
+ return FindTag as Tag;// 成功转换返回具体类型的标签,失败返回 null
+ }
+ return null;
+ }
+
+ ///
+ /// 获取标签的值
+ ///
+ ///
+ ///
+ ///
+ public T? GetTagValueByName(string name)
+ {
+ var FindTag = GetTagByName(name);
+
+ // 如果找到标签,则返回其值,否则返回默认值
+ if (FindTag != null)
+ {
+ return FindTag!.RtValue.Value;
+ }
+
+ return default;
+ }
}
}
diff --git a/CapMachine.Wpf/ProPars/ProParsHelperQuick.cs b/CapMachine.Wpf/ProPars/ProParsHelperQuick.cs
new file mode 100644
index 0000000..92a00f8
--- /dev/null
+++ b/CapMachine.Wpf/ProPars/ProParsHelperQuick.cs
@@ -0,0 +1,856 @@
+using CapMachine.Model;
+using CapMachine.Model.MeterConfig;
+using CapMachine.Model.PLCParsModel;
+using CapMachine.Wpf.Dtos;
+using HslCommunication.Profinet.Siemens;
+using System.Windows.Controls;
+
+namespace CapMachine.Wpf.ProPars
+{
+ ///
+ /// 程序解析方法 Quick
+ ///
+ public class ProParsHelperQuick
+ {
+ ///
+ /// 获取PLC步骤信息
+ ///
+ ///
+ ///
+ public static void GetPlcParsData(List proSteps, SiemensS7Net siemensS7NetStance)
+ {
+ //取得的PLC步骤数据,提前预设好
+ List ListPlcParsDataQuick = new List()
+ {
+ new PlcParsDataQuick(){ Name="速度",EnName="Speed",Step=100,Steps=new List(),Ratio=1,Unit="",ValueStartAddress=1006, },
+ new PlcParsDataQuick(){ Name="COND1温度 ",EnName="Cond1Temp",Step=100,Steps=new List(),Ratio=1,Unit="",ValueStartAddress=1014, },
+ new PlcParsDataQuick(){ Name="COND2温度",EnName="Cond2Temp",Step=100,Steps=new List(),Ratio=1,Unit="" ,ValueStartAddress=1034, },
+ new PlcParsDataQuick(){ Name="COND2压力",EnName="Cond2Press",Step=100,Steps=new List(),Ratio=1,Unit="" ,ValueStartAddress=1018, },
+ new PlcParsDataQuick(){ Name="EVAP出口温度",EnName="EVAPExpTemp",Step=100,Steps=new List(),Ratio=1,Unit="" ,ValueStartAddress=1036, },
+ new PlcParsDataQuick(){ Name="排气压力",EnName="ExPress",Step=100,Steps=new List(),Ratio=1,Unit="" ,ValueStartAddress=1008, },
+
+ new PlcParsDataQuick(){ Name="HV电压",EnName="HVVol",Step=100,Steps=new List(),Ratio=1,Unit="" ,ValueStartAddress=1022, },
+
+ new PlcParsDataQuick(){ Name="吸气压力",EnName="InhPress",Step=100,Steps=new List(),Ratio=1,Unit="" ,ValueStartAddress=1010,},
+
+ new PlcParsDataQuick(){ Name="吸气温度",EnName="InhTemp",Step=100,Steps=new List(),Ratio=1,Unit="" ,ValueStartAddress=1012, },
+
+ new PlcParsDataQuick(){ Name="润滑油压力",EnName="LubePress",Step=100,Steps=new List(),Ratio=1,Unit="" ,ValueStartAddress=1016, },
+
+ new PlcParsDataQuick(){ Name="LV电压",EnName="LVVol",Step=100,Steps=new List(),Ratio=1,Unit="" ,ValueStartAddress=1024, },
+
+ new PlcParsDataQuick(){ Name="OCR",EnName="OCR",Step=100,Steps=new List(),Ratio=1,Unit="" ,ValueStartAddress=1020, },
+
+ new PlcParsDataQuick(){ Name="OS1温度",EnName="OS1Temp",Step=100,Steps=new List(),Ratio=1,Unit="" ,ValueStartAddress=1030, },
+ new PlcParsDataQuick(){ Name="OS2温度",EnName="OS2Temp",Step=100,Steps=new List(),Ratio=1,Unit="" ,ValueStartAddress=1032, },
+
+ new PlcParsDataQuick(){ Name="PTC入口温度",EnName="PTCEntTemp",Step=100,Steps=new List(),Ratio=1,Unit="" ,ValueStartAddress=1054, },
+ new PlcParsDataQuick(){ Name="PTC流量",EnName="PTCFlow",Step=100,Steps=new List(),Ratio=1,Unit="" ,ValueStartAddress=1052, },
+ new PlcParsDataQuick(){ Name="PTC功率",EnName="PTCPw",Step=100,Steps=new List(),Ratio=1,Unit="" ,ValueStartAddress=1050, },
+
+ new PlcParsDataQuick(){ Name="压缩机环境湿度",EnName="EnvRH",Step=100,Steps=new List(),Ratio=1,Unit="" ,ValueStartAddress=1028, },
+ new PlcParsDataQuick(){ Name="压缩机环境温度",EnName="EnvTemp",Step=100,Steps=new List(),Ratio=1,Unit="" ,ValueStartAddress=1026, },
+
+ new PlcParsDataQuick(){ Name="输出锁定",EnName="OutLock",Step=100,Steps=new List(),Ratio=1,Unit="" ,ValueStartAddress=1038, },
+ new PlcParsDataQuick(){ Name="参数编号",EnName="ParNo",Step=100,Steps=new List(),Ratio=1,Unit="" ,ValueStartAddress=1040, },
+ new PlcParsDataQuick(){ Name="EV",EnName="EV",Step=100,Steps=new List(),Ratio=1,Unit="" ,ValueStartAddress=1042, },
+ new PlcParsDataQuick(){ Name="压缩机使能",EnName="CapEnable",Step=100,Steps=new List(),Ratio=1,Unit="" ,ValueStartAddress=1044, },
+ new PlcParsDataQuick(){ Name="吸排气阀",EnName="InhExhValve",Step=100,Steps=new List(),Ratio=1,Unit="" ,ValueStartAddress=1046, },
+ new PlcParsDataQuick(){ Name="加热器使能",EnName="HeatEnable",Step=100,Steps=new List(),Ratio=1,Unit="" ,ValueStartAddress=1048, },
+
+ new PlcParsDataQuick(){ Name="时间分钟",EnName="TimeMin",Step=100,Steps=new List(),Ratio=1,Unit="" ,ValueStartAddress=1000, },
+ new PlcParsDataQuick(){ Name="时间秒",EnName="TimeSec",Step=100,Steps=new List(),Ratio=1,Unit="" ,ValueStartAddress=1002, },
+ new PlcParsDataQuick(){ Name="次数",EnName="Cycle",Step=100,Steps=new List(),Ratio=1,Unit="" ,ValueStartAddress=1004, },
+
+ //new PlcParsData(){ Name="加热器功率",EnName="HeatPw",Steps=new List(),Ratio=1,Unit="" },
+ //new PlcParsData(){ Name="加热器流量",EnName="HeatFlow",Steps=new List(),Ratio=1,Unit="" },
+ //new PlcParsData(){ Name="加热器入口水温",EnName="HeatInWatTemp",Steps=new List(),Ratio=1,Unit="" },
+ };
+
+ var CurStep = 1;
+ foreach (QuickMeterStepDto proStep in proSteps)//小循环
+ {
+ //每个步骤里面包含多个参数的设置
+ ListPlcParsDataQuick = LoadPlcParsData(proStep, ListPlcParsDataQuick, CurStep);//内部循环
+
+ CurStep++;
+ }
+
+ LoadDataToPLC(siemensS7NetStance, ListPlcParsDataQuick);
+ //装载地址 VW1000
+
+ //var datga = LoadPlcBlockAddress(ListPlcParsData, 1000);
+
+ //return ListPlcParsData;
+ }
+
+
+ ///
+ /// 加载数据到PLC
+ ///
+ public static void LoadDataToPLC(SiemensS7Net siemensS7NetStance, List plcParsDatas)
+ {
+ foreach (var item in plcParsDatas)
+ {
+ foreach (var itemStep in item.Steps)
+ {
+ if (!string.IsNullOrEmpty(itemStep.Address))
+ {
+ var Result = siemensS7NetStance.Write(itemStep.Address, (short)itemStep.Value);
+ if (!Result.IsSuccess)
+ {
+ var data1 = 1;
+ }
+ }
+ }
+ }
+
+ var data = 1;
+ //siemensS7NetStance.Write();
+ }
+
+ ///
+ /// 单步骤程序解析
+ /// 单步骤里面包括多个仪表参数的配置信息
+ ///
+ ///
+ ///
+ ///
+ private static List LoadPlcParsData(QuickMeterStepDto proStep, List plcParsDatas,int CurStep)
+ {
+ if (proStep != null)
+ {
+ foreach (var item in plcParsDatas)
+ {
+ switch (item.EnName)
+ {
+ case "Speed":
+ item.Steps.Add(new PlcMeterStepCellQuick() { Step = CurStep, Value = proStep.Speed, Address = GetAddress(item.ValueStartAddress, CurStep, item.Step) });
+ break;
+ case "Cond1Temp":
+ item.Steps.Add(new PlcMeterStepCellQuick() { Step = CurStep, Value = proStep.Cond1Temp, Address = GetAddress(item.ValueStartAddress, CurStep, item.Step) });
+ break;
+ case "Cond2Temp":
+ item.Steps.Add(new PlcMeterStepCellQuick() { Step = CurStep, Value = proStep.Cond2Temp, Address = GetAddress(item.ValueStartAddress, CurStep, item.Step) });
+ break;
+ case "Cond2Press":
+ item.Steps.Add(new PlcMeterStepCellQuick() { Step = CurStep, Value = proStep.Cond2Press, Address = GetAddress(item.ValueStartAddress, CurStep, item.Step) });
+ break;
+ case "EVAPExpTemp":
+ item.Steps.Add(new PlcMeterStepCellQuick() { Step = CurStep, Value = proStep.EVAPExpTemp, Address = GetAddress(item.ValueStartAddress, CurStep, item.Step) });
+ break;
+ case "ExPress":
+ item.Steps.Add(new PlcMeterStepCellQuick() { Step = CurStep, Value = proStep.ExPress, Address = GetAddress(item.ValueStartAddress, CurStep, item.Step) });
+ break;
+ case "HVVol":
+ item.Steps.Add(new PlcMeterStepCellQuick() { Step = CurStep, Value = proStep.HVVol, Address = GetAddress(item.ValueStartAddress, CurStep, item.Step) });
+ break;
+ case "InhPress":
+ item.Steps.Add(new PlcMeterStepCellQuick() { Step = CurStep, Value = proStep.InhPress, Address = GetAddress(item.ValueStartAddress, CurStep, item.Step) });
+ break;
+ case "InhTemp":
+ item.Steps.Add(new PlcMeterStepCellQuick() { Step = CurStep, Value = proStep.InhTemp, Address = GetAddress(item.ValueStartAddress, CurStep, item.Step) });
+ break;
+ case "LubePress":
+ item.Steps.Add(new PlcMeterStepCellQuick() { Step = CurStep, Value = proStep.LubePress, Address = GetAddress(item.ValueStartAddress, CurStep, item.Step) });
+ break;
+ case "LVVol":
+ item.Steps.Add(new PlcMeterStepCellQuick() { Step = CurStep, Value = proStep.LVVol, Address = GetAddress(item.ValueStartAddress, CurStep, item.Step) });
+ break;
+ case "OCR":
+ item.Steps.Add(new PlcMeterStepCellQuick() { Step = CurStep, Value = proStep.OCR, Address = GetAddress(item.ValueStartAddress, CurStep, item.Step) });
+ break;
+ case "OS1Temp":
+ item.Steps.Add(new PlcMeterStepCellQuick() { Step = CurStep, Value = proStep.OS1Temp, Address = GetAddress(item.ValueStartAddress, CurStep, item.Step) });
+ break;
+ case "OS2Temp":
+ item.Steps.Add(new PlcMeterStepCellQuick() { Step = CurStep, Value = proStep.OS2Temp, Address = GetAddress(item.ValueStartAddress, CurStep, item.Step) });
+ break;
+ case "PTCEntTemp":
+ item.Steps.Add(new PlcMeterStepCellQuick() { Step = CurStep, Value = proStep.PTCEntTemp, Address = GetAddress(item.ValueStartAddress, CurStep, item.Step) });
+ break;
+ case "PTCFlow":
+ item.Steps.Add(new PlcMeterStepCellQuick() { Step = CurStep, Value = proStep.PTCFlow, Address = GetAddress(item.ValueStartAddress, CurStep, item.Step) });
+ break;
+ case "PTCPw":
+ item.Steps.Add(new PlcMeterStepCellQuick() { Step = CurStep, Value = proStep.PTCPw, Address = GetAddress(item.ValueStartAddress, CurStep, item.Step) });
+ break;
+ case "EnvRH":
+ item.Steps.Add(new PlcMeterStepCellQuick() { Step = CurStep, Value = proStep.EnvRH, Address = GetAddress(item.ValueStartAddress, CurStep, item.Step) });
+ break;
+ case "EnvTemp":
+ item.Steps.Add(new PlcMeterStepCellQuick() { Step = CurStep, Value = proStep.EnvTemp, Address = GetAddress(item.ValueStartAddress, CurStep, item.Step) });
+ break;
+ case "OutLock":
+ item.Steps.Add(new PlcMeterStepCellQuick() { Step = CurStep, Value = proStep.OutLock == true ? 1 : 0, Address = GetAddress(item.ValueStartAddress, CurStep, item.Step) });
+ break;
+ case "ParNo":
+ item.Steps.Add(new PlcMeterStepCellQuick() { Step = CurStep, Value = proStep.ParNo, Address = GetAddress(item.ValueStartAddress, CurStep, item.Step) });
+ break;
+ case "EV":
+ item.Steps.Add(new PlcMeterStepCellQuick() { Step = CurStep, Value = proStep.EV, Address = GetAddress(item.ValueStartAddress, CurStep, item.Step) });
+ break;
+ case "CapEnable":
+ item.Steps.Add(new PlcMeterStepCellQuick() { Step = CurStep, Value = proStep.CapEnable == true ? 1 : 0, Address = GetAddress(item.ValueStartAddress, CurStep, item.Step) });
+ break;
+ case "InhExhValve":
+ item.Steps.Add(new PlcMeterStepCellQuick() { Step = CurStep, Value = proStep.InhExhValve == true ? 1 : 0, Address = GetAddress(item.ValueStartAddress, CurStep, item.Step) });
+ break;
+ case "HeatEnable":
+ item.Steps.Add(new PlcMeterStepCellQuick() { Step = CurStep, Value = proStep.HeatEnable == true ? 1 : 0 });
+ break;
+
+
+ case "TimeMin":
+ item.Steps.Add(new PlcMeterStepCellQuick() { Step = CurStep, Value = proStep.TimeMin, Address = GetAddress(item.ValueStartAddress, CurStep, item.Step) });
+ break;
+ case "TimeSec":
+ item.Steps.Add(new PlcMeterStepCellQuick() { Step = CurStep, Value = proStep.TimeSec, Address = GetAddress(item.ValueStartAddress, CurStep, item.Step) });
+ break;
+ case "Cycle":
+ item.Steps.Add(new PlcMeterStepCellQuick() { Step = CurStep, Value = proStep.Cycle, Address = GetAddress(item.ValueStartAddress, CurStep, item.Step) });
+ break;
+ default:
+ break;
+ }
+ }
+
+ return plcParsDatas;
+ }
+ return plcParsDatas;
+ }
+
+ private static string GetAddress(int startAddress, int StepNo, int Step)
+ {
+ var CurStepValue = startAddress + (StepNo - 1) * Step;
+
+ return "V" + CurStepValue.ToString();
+ }
+
+
+ ///
+ /// 获取KeepTime分钟信息
+ ///
+ ///
+ private static int GetKeepTimeMin(int keeptime)
+ {
+ return keeptime / 60;
+ }
+
+ ///
+ /// 获取KeepTime 秒信息
+ ///
+ ///
+ private static int GetKeepTimeSec(int keeptime)
+ {
+ return keeptime % 60;
+ }
+
+
+ ///
+ /// 获取步骤信息
+ ///
+ ///
+ ///
+ ///
+ private static int GetStep(PlcParsData plcParsData)
+ {
+ if (plcParsData.Steps != null && plcParsData.Steps.Any())
+ {
+ return plcParsData.Steps.Count + 1;
+ }
+ else
+ {
+ return 1;
+ }
+ }
+
+
+
+ ///
+ /// 获取Cycle信息
+ ///
+ ///
+ private static int GetCycleCount(int Cycle, int Index, int ListCount)
+ {
+ if (ListCount > 1)
+ {
+ //步骤ProStep内部有循环
+ if (Index == 0)
+ {
+ //循环开始
+ return -1;
+ }
+ if (ListCount == Index + 1)
+ {
+ //循环结束
+ return Cycle;
+ }
+ //循环中间
+ return 0;
+ }
+ else
+ {
+ //步骤ProStep内部就一个步序,没有循环,则直接返回步骤的Cycle
+ //单步骤,没有循环
+ return 0;
+ }
+ }
+
+ ///
+ /// 加载PLC的地址
+ /// 单元分割
+ ///
+ ///
+ private static List LoadPlcCellAddress(List plcParsDatas)
+ {
+ //单步长度
+ int StepLengh = 100;
+
+ foreach (var itemMeter in plcParsDatas)
+ {
+ //var Stepaddress = StartAddress + Index * StepLengh;
+
+ //循环Index
+ int Index = 0;
+
+ //循环内部的步骤信息
+ foreach (var itemStep in itemMeter.Steps.OrderBy(a => a.Step))
+ {
+ if (itemMeter.ValueStartAddress != 0)
+ {
+ var StepValueAddress = itemMeter.ValueStartAddress + Index * StepLengh;
+ itemStep.ValueAddress = "V" + StepValueAddress;
+ }
+ if (itemMeter.MinStartAddress != 0)
+ {
+ var StepMinAddress = itemMeter.MinStartAddress + Index * StepLengh;
+ itemStep.MinAddress = "V" + StepMinAddress;
+ }
+ if (itemMeter.SecStartAddress != 0)
+ {
+ var StepSecAddress = itemMeter.SecStartAddress + Index * StepLengh;
+ itemStep.SecAddress = "V" + StepSecAddress;
+ }
+ if (itemMeter.CycleStartAddress != 0)
+ {
+ var StepCycleAddress = itemMeter.CycleStartAddress + Index * StepLengh;
+ itemStep.CycleAddress = "V" + StepCycleAddress;
+ }
+
+ Index++;
+ }
+
+ }
+
+ return plcParsDatas;
+ }
+
+ ///
+ /// 加载PLC块地址信息
+ ///
+ ///
+ ///
+ ///
+ private static List LoadPlcBlockAddress(List plcParsDatas, int start)
+ {
+ //开始地址
+ int StartAddress = start;
+ //单步长度
+ int StepLengh = 100;
+ //循环Index
+ int Index = 0;
+ //数据集合
+ List BlockDatas = new List();
+
+ foreach (var item in plcParsDatas)
+ {
+ var StepAddress = StartAddress + Index * StepLengh;
+
+ //每个步骤封装成一个PlcBlockData
+ short[] shorts = new short[19];//看有多少个字段
+ //shorts[item.Speed!.Index - 1] = (short)item.Speed!.Value!;
+ //shorts[item.Cond1Temp!.Index - 1] = (short)item.Cond1Temp!.Value!;
+ //shorts[item.Cond2Temp!.Index - 1] = (short)item.Cond2Temp!.Value!;
+ //shorts[item.CondPress!.Index - 1] = (short)item.CondPress!.Value!;
+ //shorts[item.EVAPExpTemp!.Index - 1] = (short)item.EVAPExpTemp!.Value!;
+ //shorts[item.ExPress!.Index - 1] = (short)item.ExPress!.Value!;
+ //shorts[item.HVVol!.Index - 1] = (short)item.HVVol!.Value!;
+ //shorts[item.InhPress!.Index - 1] = (short)item.InhPress!.Value!;
+ //shorts[item.InhTemp!.Index - 1] = (short)item.InhTemp!.Value!;
+ //shorts[item.LoPress!.Index - 1] = (short)item.LoPress!.Value!;
+ //shorts[item.LVVol!.Index - 1] = (short)item.LVVol!.Value!;
+ //shorts[item.OCR!.Index - 1] = (short)item.OCR!.Value!;
+ //shorts[item.OS1Temp!.Index - 1] = (short)item.OS1Temp!.Value!;
+ //shorts[item.OS2Temp!.Index - 1] = (short)item.OS2Temp!.Value!;
+ //shorts[item.PTCEntTemp!.Index - 1] = (short)item.PTCEntTemp!.Value!;
+ //shorts[item.PTCFlow!.Index - 1] = (short)item.PTCFlow!.Value!;
+ //shorts[item.PTCPw!.Index - 1] = (short)item.PTCPw!.Value!;
+ //shorts[item.TestBoxRH!.Index - 1] = (short)item.TestBoxRH!.Value!;
+ //shorts[item.TestBoxTemp!.Index - 1] = (short)item.TestBoxTemp!.Value!;
+
+ BlockDatas.Add(new PlcBlockData()
+ {
+ StartAddress = "VW" + StepAddress.ToString(),
+ ArrValue = shorts
+ });
+
+ Index++;
+ }
+
+ return BlockDatas;
+ }
+
+ ///
+ /// 根据名称获取Index信息
+ ///
+ ///
+ public static int GetIndexByName(DataGridColumn dataGridColumn)
+ {
+ var headerText = (dataGridColumn.Header as TextBlock).Text;
+ if (headerText.Contains("COND1温度 "))
+ {
+ return 0;
+ }
+ else if (headerText.Contains("COND2温度"))
+ {
+ return 1;
+ }
+ else if (headerText.Contains("COND2压力"))
+ {
+ return 2;
+ }
+ else if (headerText.Contains("EVAP出口温度"))
+ {
+ return 3;
+ }
+ else if (headerText.Contains("排气压力"))
+ {
+ return 4;
+ }
+ else if (headerText.Contains("HV电压"))
+ {
+ return 5;
+ }
+ else if (headerText.Contains("吸气压力"))
+ {
+ return 6;
+ }
+ else if (headerText.Contains("吸气温度"))
+ {
+ return 7;
+ }
+ else if (headerText.Contains("润滑油压力"))
+ {
+ return 8;
+ }
+ else if (headerText.Contains("LV电压"))
+ {
+ return 9;
+ }
+ else if (headerText.Contains("OCR"))
+ {
+ return 10;
+ }
+ else if (headerText.Contains("OS1温度"))
+ {
+ return 11;
+ }
+ else if (headerText.Contains("OS2温度"))
+ {
+ return 12;
+ }
+ else if (headerText.Contains("PTC入口温度"))
+ {
+ return 13;
+ }
+ else if (headerText.Contains("PTC流量"))
+ {
+ return 14;
+ }
+ else if (headerText.Contains("PTC功率"))
+ {
+ return 15;
+ }
+ else if (headerText.Contains("试验箱湿度"))
+ {
+ return 16;
+ }
+ else if (headerText.Contains("试验箱温度"))
+ {
+ return 17;
+ }
+ else
+ {
+ return 0;
+ }
+ }
+
+
+ #region 获取数据
+
+ ///
+ /// 获取 MeterCellByMeterCond1Temps
+ ///
+ ///
+ private static double GetMeterCellByMeterCond1Temps(ICollection meterCond1Temps, int Index)
+ {
+ try
+ {
+ if (meterCond1Temps.Count() >= (Index + 1))
+ {
+ return meterCond1Temps.ToList()[Index].EndValue;
+ }
+ //找不到的话,则返回第一个值
+ return meterCond1Temps.FirstOrDefault()!.EndValue;
+ }
+ catch (Exception ex)
+ {
+ return 0.0;
+ }
+ }
+ ///
+ /// 获取 MeterCellByMeterCond2Temps
+ ///
+ ///
+ private static double GetMeterCellByMeterCond2Temps(ICollection meterCond2Temps, int Index)
+ {
+ try
+ {
+ if (meterCond2Temps.Count() >= (Index + 1))
+ {
+ return meterCond2Temps.ToList()[Index].EndValue;
+ }
+ //找不到的话,则返回第一个值
+ return meterCond2Temps.FirstOrDefault()!.EndValue;
+ }
+ catch (Exception ex)
+ {
+ return 0.0;
+ }
+ }
+ ///
+ /// 获取 MeterCellByMeterCondPresss
+ ///
+ ///
+ private static double GetMeterCellByMeterCondPresss(ICollection meterCondPresss, int Index)
+ {
+ try
+ {
+ if (meterCondPresss.Count() >= (Index + 1))
+ {
+ return meterCondPresss.ToList()[Index].EndValue;
+ }
+ //找不到的话,则返回第一个值
+ return meterCondPresss.FirstOrDefault()!.EndValue;
+ }
+ catch (Exception ex)
+ {
+ return 0.0;
+ }
+ }
+ ///
+ /// 获取 MeterCellByMeterEVAPExpTemps
+ ///
+ ///
+ private static double GetMeterCellByMeterEVAPExpTemps(ICollection meterEVAPExpTemps, int Index)
+ {
+ try
+ {
+ if (meterEVAPExpTemps.Count() >= (Index + 1))
+ {
+ return meterEVAPExpTemps.ToList()[Index].EndValue;
+ }
+ //找不到的话,则返回第一个值
+ return meterEVAPExpTemps.FirstOrDefault()!.EndValue;
+ }
+ catch (Exception ex)
+ {
+ return 0.0;
+ }
+ }
+ ///
+ /// 获取 MeterCellByMeterExPresss
+ ///
+ ///
+ private static double GetMeterCellByMeterExPresss(ICollection meterExPresss, int Index)
+ {
+ try
+ {
+ if (meterExPresss.Count() >= (Index + 1))
+ {
+ return meterExPresss.ToList()[Index].EndValue;
+ }
+ //找不到的话,则返回第一个值
+ return meterExPresss.FirstOrDefault()!.EndValue;
+ }
+ catch (Exception ex)
+ {
+ return 0.0;
+ }
+ }
+ ///
+ /// 获取 MeterCellByMeterHVVols
+ ///
+ ///
+ private static double GetMeterCellByMeterHVVols(ICollection meterHVVols, int Index)
+ {
+ try
+ {
+ if (meterHVVols.Count() >= (Index + 1))
+ {
+ return meterHVVols.ToList()[Index].EndValue;
+ }
+ //找不到的话,则返回第一个值
+ return meterHVVols.FirstOrDefault()!.EndValue;
+ }
+ catch (Exception ex)
+ {
+ return 0.0;
+ }
+ }
+ ///
+ /// 获取 MeterCellByMeterInhPresss
+ ///
+ ///
+ private static double GetMeterCellByMeterInhPresss(ICollection meterInhPresss, int Index)
+ {
+ try
+ {
+ if (meterInhPresss.Count() >= (Index + 1))
+ {
+ return meterInhPresss.ToList()[Index].EndValue;
+ }
+ //找不到的话,则返回第一个值
+ return meterInhPresss.FirstOrDefault()!.EndValue;
+ }
+ catch (Exception ex)
+ {
+ return 0.0;
+ }
+ }
+ ///
+ /// 获取 MeterCellByMeterInhTemps
+ ///
+ ///
+ private static double GetMeterCellByMeterInhTemps(ICollection meterInhTemps, int Index)
+ {
+ try
+ {
+ if (meterInhTemps.Count() >= (Index + 1))
+ {
+ return meterInhTemps.ToList()[Index].EndValue;
+ }
+ //找不到的话,则返回第一个值
+ return meterInhTemps.FirstOrDefault()!.EndValue;
+ }
+ catch (Exception ex)
+ {
+ return 0.0;
+ }
+ }
+ ///
+ /// 获取 MeterCellByMeterLoPresss
+ ///
+ ///
+ private static double GetMeterCellByMeterLoPresss(ICollection meterLoPresss, int Index)
+ {
+ try
+ {
+ if (meterLoPresss.Count() >= (Index + 1))
+ {
+ return meterLoPresss.ToList()[Index].EndValue;
+ }
+ //找不到的话,则返回第一个值
+ return meterLoPresss.FirstOrDefault()!.EndValue;
+ }
+ catch (Exception ex)
+ {
+ return 0.0;
+ }
+ }
+ ///
+ /// 获取 MeterCellByMeterLVVols
+ ///
+ ///
+ private static double GetMeterCellByMeterLVVols(ICollection meterLVVols, int Index)
+ {
+ try
+ {
+ if (meterLVVols.Count() >= (Index + 1))
+ {
+ return meterLVVols.ToList()[Index].EndValue;
+ }
+ //找不到的话,则返回第一个值
+ return meterLVVols.FirstOrDefault()!.EndValue;
+ }
+ catch (Exception ex)
+ {
+ return 0.0;
+ }
+ }
+ ///
+ /// 获取 MeterCellByMeterOCRs
+ ///
+ ///
+ private static double GetMeterCellByMeterOCRs(ICollection meterOCRs, int Index)
+ {
+ try
+ {
+ if (meterOCRs.Count() >= (Index + 1))
+ {
+ return meterOCRs.ToList()[Index].EndValue;
+ }
+ //找不到的话,则返回第一个值
+ return meterOCRs.FirstOrDefault()!.EndValue;
+ }
+ catch (Exception ex)
+ {
+ return 0.0;
+ }
+ }
+ ///
+ /// 获取 MeterCellByMeterOS1Temps
+ ///
+ ///
+ private static double GetMeterCellByMeterOS1Temps(ICollection meterOS1Temps, int Index)
+ {
+ try
+ {
+ if (meterOS1Temps.Count() >= (Index + 1))
+ {
+ return meterOS1Temps.ToList()[Index].EndValue;
+ }
+ //找不到的话,则返回第一个值
+ return meterOS1Temps.FirstOrDefault()!.EndValue;
+ }
+ catch (Exception ex)
+ {
+ return 0.0;
+ }
+ }
+ ///
+ /// 获取 MeterCellByMeterOS2Temps
+ ///
+ ///
+ private static double GetMeterCellByMeterOS2Temps(ICollection meterOS2Temps, int Index)
+ {
+ try
+ {
+ if (meterOS2Temps.Count() >= (Index + 1))
+ {
+ return meterOS2Temps.ToList()[Index].EndValue;
+ }
+ //找不到的话,则返回第一个值
+ return meterOS2Temps.FirstOrDefault()!.EndValue;
+ }
+ catch (Exception ex)
+ {
+ return 0.0;
+ }
+ }
+ ///
+ /// 获取 MeterCellByMeterPTCEntTemps
+ ///
+ ///
+ private static double GetMeterCellByMeterPTCEntTemps(ICollection meterPTCEntTemps, int Index)
+ {
+ try
+ {
+ if (meterPTCEntTemps.Count() >= (Index + 1))
+ {
+ return meterPTCEntTemps.ToList()[Index].EndValue;
+ }
+ //找不到的话,则返回第一个值
+ return meterPTCEntTemps.FirstOrDefault()!.EndValue;
+ }
+ catch (Exception ex)
+ {
+ return 0.0;
+ }
+ }
+ ///
+ /// 获取 MeterCellByMeterPTCFlows
+ ///
+ ///
+ private static double GetMeterCellByMeterPTCFlows(ICollection meterPTCFlows, int Index)
+ {
+ try
+ {
+ if (meterPTCFlows.Count() >= (Index + 1))
+ {
+ return meterPTCFlows.ToList()[Index].EndValue;
+ }
+ //找不到的话,则返回第一个值
+ return meterPTCFlows.FirstOrDefault()!.EndValue;
+ }
+ catch (Exception ex)
+ {
+ return 0.0;
+ }
+ }
+ ///
+ /// 获取 MeterCellByMeterPTCPws
+ ///
+ ///
+ private static double GetMeterCellByMeterPTCPws(ICollection meterPTCPws, int Index)
+ {
+ try
+ {
+ if (meterPTCPws.Count() >= (Index + 1))
+ {
+ return meterPTCPws.ToList()[Index].EndValue;
+ }
+ //找不到的话,则返回第一个值
+ return meterPTCPws.FirstOrDefault()!.EndValue;
+ }
+ catch (Exception ex)
+ {
+ return 0.0;
+ }
+ }
+ ///
+ /// 获取 MeterCellByMeterTestBoxRHs
+ ///
+ ///
+ private static double GetMeterCellByMeterTestBoxRHs(ICollection meterTestBoxRHs, int Index)
+ {
+ try
+ {
+ if (meterTestBoxRHs.Count() >= (Index + 1))
+ {
+ return meterTestBoxRHs.ToList()[Index].EndValue;
+ }
+ //找不到的话,则返回第一个值
+ return meterTestBoxRHs.FirstOrDefault()!.EndValue;
+ }
+ catch (Exception ex)
+ {
+ return 0.0;
+ }
+ }
+ ///
+ /// 获取 MeterCellByMeterTestBoxTemps
+ ///
+ ///
+ private static double GetMeterCellByMeterTestBoxTemps(ICollection meterTestBoxTemps, int Index)
+ {
+ try
+ {
+ if (meterTestBoxTemps.Count() >= (Index + 1))
+ {
+ return meterTestBoxTemps.ToList()[Index].EndValue;
+ }
+ //找不到的话,则返回第一个值
+ return meterTestBoxTemps.FirstOrDefault()!.EndValue;
+ }
+ catch (Exception ex)
+ {
+ return 0.0;
+ }
+ }
+
+ #endregion
+
+ }
+}
diff --git a/CapMachine.Wpf/Services/MachineRtDataService.cs b/CapMachine.Wpf/Services/MachineRtDataService.cs
index af05c1a..a844068 100644
--- a/CapMachine.Wpf/Services/MachineRtDataService.cs
+++ b/CapMachine.Wpf/Services/MachineRtDataService.cs
@@ -109,8 +109,5912 @@ namespace CapMachine.Wpf.Services
//事件服务
_EventAggregator = eventAggregator;
+ //new BaseTag("转速", "Speed", "rpm", TagType.Tag)
- //TagManger.AddTag(new ByteTag("转速", "Speed", "rpm", ComEnum.TagType.Tag));
+
+ TagManger.AddTag(new Tag("转速", "Speed", "rpm", TagType.Tag, new ShortRegisterValue()));
+ TagManger.AddTag(new Tag("转速1", "Speed", "rpm", TagType.Tag, new ShortRegisterValue()));
+ TagManger.AddTag(new Tag("转速2", "Speed", "rpm", TagType.Tag, new ShortRegisterValue()));
+ TagManger.AddTag(new Tag("转速3", "Speed", "rpm", TagType.Tag, new ShortRegisterValue()));
+ TagManger.AddTag(new Tag("转速4", "Speed", "rpm", TagType.Tag, new ShortRegisterValue()));
+ TagManger.AddTag(new Tag("转速5", "Speed", "rpm", TagType.Tag, new ShortRegisterValue()));
+ TagManger.AddTag(new Tag("转速6", "Speed", "rpm", TagType.Tag, new ShortRegisterValue()));
+ TagManger.AddTag(new Tag("转速7", "Speed", "rpm", TagType.Tag, new ShortRegisterValue()));
+ TagManger.AddTag(new Tag("转速8", "Speed", "rpm", TagType.Tag, new ShortRegisterValue()));
+ TagManger.AddTag(new Tag("转速9", "Speed", "rpm", TagType.Tag, new ShortRegisterValue()));
+ TagManger.AddTag(new Tag("转速10", "Speed", "rpm", TagType.Tag, new ShortRegisterValue()));
+ TagManger.AddTag(new Tag("转速11", "Speed", "rpm", TagType.Tag, new ShortRegisterValue()));
+ TagManger.AddTag(new Tag("转速12", "Speed", "rpm", TagType.Tag, new ShortRegisterValue()));
+ TagManger.AddTag(new Tag("转速13", "Speed", "rpm", TagType.Tag, new ShortRegisterValue()));
+ TagManger.AddTag(new Tag("转速14", "Speed", "rpm", TagType.Tag, new ShortRegisterValue()));
+ TagManger.AddTag(new Tag("转速15", "Speed", "rpm", TagType.Tag, new ShortRegisterValue()));
+ TagManger.AddTag(new Tag("转速16", "Speed", "rpm", TagType.Tag, new ShortRegisterValue()));
+ TagManger.AddTag(new Tag("转速17", "Speed", "rpm", TagType.Tag, new ShortRegisterValue()));
+ TagManger.AddTag(new Tag("转速18", "Speed", "rpm", TagType.Tag, new ShortRegisterValue()));
+ TagManger.AddTag(new Tag("转速19", "Speed", "rpm", TagType.Tag, new ShortRegisterValue()));
+ TagManger.AddTag(new Tag("转速20", "Speed", "rpm", TagType.Tag, new ShortRegisterValue()));
+ TagManger.AddTag(new Tag("转速21", "Speed", "rpm", TagType.Tag, new ShortRegisterValue()));
+ TagManger.AddTag(new Tag("转速22", "Speed", "rpm", TagType.Tag, new ShortRegisterValue()));
+ TagManger.AddTag(new Tag("转速23", "Speed", "rpm", TagType.Tag, new ShortRegisterValue()));
+ TagManger.AddTag(new Tag("转速24", "Speed", "rpm", TagType.Tag, new ShortRegisterValue()));
+ TagManger.AddTag(new Tag("转速25", "Speed", "rpm", TagType.Tag, new ShortRegisterValue()));
+ TagManger.AddTag(new Tag("转速26", "Speed", "rpm", TagType.Tag, new ShortRegisterValue()));
+ TagManger.AddTag(new Tag("转速27", "Speed", "rpm", TagType.Tag, new ShortRegisterValue()));
+ TagManger.AddTag(new Tag("转速28", "Speed", "rpm", TagType.Tag, new ShortRegisterValue()));
+ TagManger.AddTag(new Tag("转速29", "Speed", "rpm", TagType.Tag, new ShortRegisterValue()));
+ TagManger.AddTag(new Tag("转速30", "Speed", "rpm", TagType.Tag, new ShortRegisterValue()));
+ TagManger.AddTag(new Tag("转速31", "Speed", "rpm", TagType.Tag, new ShortRegisterValue()));
+ TagManger.AddTag(new Tag("转速32", "Speed", "rpm", TagType.Tag, new ShortRegisterValue()));
+ TagManger.AddTag(new Tag("转速33", "Speed", "rpm", TagType.Tag, new ShortRegisterValue()));
+ TagManger.AddTag(new Tag("转速34", "Speed", "rpm", TagType.Tag, new ShortRegisterValue()));
+ TagManger.AddTag(new Tag("转速35", "Speed", "rpm", TagType.Tag, new ShortRegisterValue()));
+ TagManger.AddTag(new Tag("转速36", "Speed", "rpm", TagType.Tag, new ShortRegisterValue()));
+ TagManger.AddTag(new Tag("转速37", "Speed", "rpm", TagType.Tag, new ShortRegisterValue()));
+ TagManger.AddTag(new Tag("转速38", "Speed", "rpm", TagType.Tag, new ShortRegisterValue()));
+ TagManger.AddTag(new Tag("转速39", "Speed", "rpm", TagType.Tag, new ShortRegisterValue()));
+ TagManger.AddTag(new Tag("转速40", "Speed", "rpm", TagType.Tag, new ShortRegisterValue()));
+ TagManger.AddTag(new Tag("转速41", "Speed", "rpm", TagType.Tag, new ShortRegisterValue()));
+ TagManger.AddTag(new Tag("转速42", "Speed", "rpm", TagType.Tag, new ShortRegisterValue()));
+ TagManger.AddTag(new Tag("转速43", "Speed", "rpm", TagType.Tag, new ShortRegisterValue()));
+ TagManger.AddTag(new Tag("转速44", "Speed", "rpm", TagType.Tag, new ShortRegisterValue()));
+ TagManger.AddTag(new Tag("转速45", "Speed", "rpm", TagType.Tag, new ShortRegisterValue()));
+ TagManger.AddTag(new Tag("转速46", "Speed", "rpm", TagType.Tag, new ShortRegisterValue()));
+ TagManger.AddTag(new Tag("转速47", "Speed", "rpm", TagType.Tag, new ShortRegisterValue()));
+ TagManger.AddTag(new Tag("转速48", "Speed", "rpm", TagType.Tag, new ShortRegisterValue()));
+ TagManger.AddTag(new Tag("转速49", "Speed", "rpm", TagType.Tag, new ShortRegisterValue()));
+ TagManger.AddTag(new Tag("转速50", "Speed", "rpm", TagType.Tag, new ShortRegisterValue()));
+ TagManger.AddTag(new Tag("转速51", "Speed", "rpm", TagType.Tag, new ShortRegisterValue()));
+ TagManger.AddTag(new Tag("转速52", "Speed", "rpm", TagType.Tag, new ShortRegisterValue()));
+ TagManger.AddTag(new Tag("转速53", "Speed", "rpm", TagType.Tag, new ShortRegisterValue()));
+ TagManger.AddTag(new Tag("转速54", "Speed", "rpm", TagType.Tag, new ShortRegisterValue()));
+ TagManger.AddTag(new Tag("转速55", "Speed", "rpm", TagType.Tag, new ShortRegisterValue()));
+ TagManger.AddTag(new Tag("转速56", "Speed", "rpm", TagType.Tag, new ShortRegisterValue()));
+ TagManger.AddTag(new Tag("转速57", "Speed", "rpm", TagType.Tag, new ShortRegisterValue()));
+ TagManger.AddTag(new Tag("转速58", "Speed", "rpm", TagType.Tag, new ShortRegisterValue()));
+ TagManger.AddTag(new Tag("转速59", "Speed", "rpm", TagType.Tag, new ShortRegisterValue()));
+ TagManger.AddTag(new Tag("转速60", "Speed", "rpm", TagType.Tag, new ShortRegisterValue()));
+ TagManger.AddTag(new Tag("转速61", "Speed", "rpm", TagType.Tag, new ShortRegisterValue()));
+ TagManger.AddTag(new Tag("转速62", "Speed", "rpm", TagType.Tag, new ShortRegisterValue()));
+ TagManger.AddTag(new Tag("转速63", "Speed", "rpm", TagType.Tag, new ShortRegisterValue()));
+ TagManger.AddTag(new Tag("转速64", "Speed", "rpm", TagType.Tag, new ShortRegisterValue()));
+ TagManger.AddTag(new Tag("转速65", "Speed", "rpm", TagType.Tag, new ShortRegisterValue()));
+ TagManger.AddTag(new Tag("转速66", "Speed", "rpm", TagType.Tag, new ShortRegisterValue()));
+ TagManger.AddTag(new Tag("转速67", "Speed", "rpm", TagType.Tag, new ShortRegisterValue()));
+ TagManger.AddTag(new Tag("转速68", "Speed", "rpm", TagType.Tag, new ShortRegisterValue()));
+ TagManger.AddTag(new Tag("转速69", "Speed", "rpm", TagType.Tag, new ShortRegisterValue()));
+ TagManger.AddTag(new Tag("转速70", "Speed", "rpm", TagType.Tag, new ShortRegisterValue()));
+ TagManger.AddTag(new Tag("转速71", "Speed", "rpm", TagType.Tag, new ShortRegisterValue()));
+ TagManger.AddTag(new Tag("转速72", "Speed", "rpm", TagType.Tag, new ShortRegisterValue()));
+ TagManger.AddTag(new Tag("转速73", "Speed", "rpm", TagType.Tag, new ShortRegisterValue()));
+ TagManger.AddTag(new Tag("转速74", "Speed", "rpm", TagType.Tag, new ShortRegisterValue()));
+ TagManger.AddTag(new Tag("转速75", "Speed", "rpm", TagType.Tag, new ShortRegisterValue()));
+ TagManger.AddTag(new Tag("转速76", "Speed", "rpm", TagType.Tag, new ShortRegisterValue()));
+ TagManger.AddTag(new Tag("转速77", "Speed", "rpm", TagType.Tag, new ShortRegisterValue()));
+ TagManger.AddTag(new Tag("转速78", "Speed", "rpm", TagType.Tag, new ShortRegisterValue()));
+ TagManger.AddTag(new Tag("转速79", "Speed", "rpm", TagType.Tag, new ShortRegisterValue()));
+ TagManger.AddTag(new Tag("转速80", "Speed", "rpm", TagType.Tag, new ShortRegisterValue()));
+ TagManger.AddTag(new Tag("转速81", "Speed", "rpm", TagType.Tag, new ShortRegisterValue()));
+ TagManger.AddTag(new Tag("转速82", "Speed", "rpm", TagType.Tag, new ShortRegisterValue()));
+ TagManger.AddTag(new Tag("转速83", "Speed", "rpm", TagType.Tag, new ShortRegisterValue()));
+ TagManger.AddTag(new Tag("转速84", "Speed", "rpm", TagType.Tag, new ShortRegisterValue()));
+ TagManger.AddTag(new Tag("转速85", "Speed", "rpm", TagType.Tag, new ShortRegisterValue()));
+ TagManger.AddTag(new Tag("转速86", "Speed", "rpm", TagType.Tag, new ShortRegisterValue()));
+ TagManger.AddTag(new Tag("转速87", "Speed", "rpm", TagType.Tag, new ShortRegisterValue()));
+ TagManger.AddTag(new Tag("转速88", "Speed", "rpm", TagType.Tag, new ShortRegisterValue()));
+ TagManger.AddTag(new Tag("转速89", "Speed", "rpm", TagType.Tag, new ShortRegisterValue()));
+ TagManger.AddTag(new Tag("转速90", "Speed", "rpm", TagType.Tag, new ShortRegisterValue()));
+ TagManger.AddTag(new Tag("转速91", "Speed", "rpm", TagType.Tag, new ShortRegisterValue()));
+ TagManger.AddTag(new Tag("转速92", "Speed", "rpm", TagType.Tag, new ShortRegisterValue()));
+ TagManger.AddTag(new Tag("转速93", "Speed", "rpm", TagType.Tag, new ShortRegisterValue()));
+ TagManger.AddTag(new Tag("转速94", "Speed", "rpm", TagType.Tag, new ShortRegisterValue()));
+ TagManger.AddTag(new Tag("转速95", "Speed", "rpm", TagType.Tag, new ShortRegisterValue()));
+ TagManger.AddTag(new Tag("转速96", "Speed", "rpm", TagType.Tag, new ShortRegisterValue()));
+ TagManger.AddTag(new Tag("转速97", "Speed", "rpm", TagType.Tag, new ShortRegisterValue()));
+ TagManger.AddTag(new Tag("转速98", "Speed", "rpm", TagType.Tag, new ShortRegisterValue()));
+ TagManger.AddTag(new Tag("转速99", "Speed", "rpm", TagType.Tag, new ShortRegisterValue()));
+ TagManger.AddTag(new Tag("转速100", "Speed", "rpm", TagType.Tag, new ShortRegisterValue()));
+ TagManger.AddTag(new Tag("转速101", "Speed", "rpm", TagType.Tag, new ShortRegisterValue()));
+ TagManger.AddTag(new Tag("转速102", "Speed", "rpm", TagType.Tag, new ShortRegisterValue()));
+ TagManger.AddTag(new Tag("转速103", "Speed", "rpm", TagType.Tag, new ShortRegisterValue()));
+ TagManger.AddTag(new Tag("转速104", "Speed", "rpm", TagType.Tag, new ShortRegisterValue()));
+ TagManger.AddTag(new Tag("转速105", "Speed", "rpm", TagType.Tag, new ShortRegisterValue()));
+ TagManger.AddTag(new Tag("转速106", "Speed", "rpm", TagType.Tag, new ShortRegisterValue()));
+ TagManger.AddTag(new Tag("转速107", "Speed", "rpm", TagType.Tag, new ShortRegisterValue()));
+ TagManger.AddTag(new Tag("转速108", "Speed", "rpm", TagType.Tag, new ShortRegisterValue()));
+ TagManger.AddTag(new Tag("转速109", "Speed", "rpm", TagType.Tag, new ShortRegisterValue()));
+ TagManger.AddTag(new Tag("转速110", "Speed", "rpm", TagType.Tag, new ShortRegisterValue()));
+ TagManger.AddTag(new Tag("转速111", "Speed", "rpm", TagType.Tag, new ShortRegisterValue()));
+ TagManger.AddTag(new Tag("转速112", "Speed", "rpm", TagType.Tag, new ShortRegisterValue()));
+ TagManger.AddTag(new Tag("转速113", "Speed", "rpm", TagType.Tag, new ShortRegisterValue()));
+ TagManger.AddTag(new Tag("转速114", "Speed", "rpm", TagType.Tag, new ShortRegisterValue()));
+ TagManger.AddTag(new Tag("转速115", "Speed", "rpm", TagType.Tag, new ShortRegisterValue()));
+ TagManger.AddTag(new Tag("转速116", "Speed", "rpm", TagType.Tag, new ShortRegisterValue()));
+ TagManger.AddTag(new Tag("转速117", "Speed", "rpm", TagType.Tag, new ShortRegisterValue()));
+ TagManger.AddTag(new Tag("转速118", "Speed", "rpm", TagType.Tag, new ShortRegisterValue()));
+ TagManger.AddTag(new Tag("转速119", "Speed", "rpm", TagType.Tag, new ShortRegisterValue()));
+ TagManger.AddTag(new Tag("转速120", "Speed", "rpm", TagType.Tag, new ShortRegisterValue()));
+ TagManger.AddTag(new Tag("转速121", "Speed", "rpm", TagType.Tag, new ShortRegisterValue()));
+ TagManger.AddTag(new Tag("转速122", "Speed", "rpm", TagType.Tag, new ShortRegisterValue()));
+ TagManger.AddTag(new Tag("转速123", "Speed", "rpm", TagType.Tag, new ShortRegisterValue()));
+ TagManger.AddTag(new Tag("转速124", "Speed", "rpm", TagType.Tag, new ShortRegisterValue()));
+ TagManger.AddTag(new Tag("转速125", "Speed", "rpm", TagType.Tag, new ShortRegisterValue()));
+ TagManger.AddTag(new Tag("转速126", "Speed", "rpm", TagType.Tag, new ShortRegisterValue()));
+ TagManger.AddTag(new Tag("转速127", "Speed", "rpm", TagType.Tag, new ShortRegisterValue()));
+ TagManger.AddTag(new Tag("转速128", "Speed", "rpm", TagType.Tag, new ShortRegisterValue()));
+ TagManger.AddTag(new Tag("转速129", "Speed", "rpm", TagType.Tag, new ShortRegisterValue()));
+ TagManger.AddTag(new Tag("转速130", "Speed", "rpm", TagType.Tag, new ShortRegisterValue()));
+ TagManger.AddTag(new Tag("转速131", "Speed", "rpm", TagType.Tag, new ShortRegisterValue()));
+ TagManger.AddTag(new Tag("转速132", "Speed", "rpm", TagType.Tag, new ShortRegisterValue()));
+ TagManger.AddTag(new Tag("转速133", "Speed", "rpm", TagType.Tag, new ShortRegisterValue()));
+ TagManger.AddTag(new Tag("转速134", "Speed", "rpm", TagType.Tag, new ShortRegisterValue()));
+ TagManger.AddTag(new Tag("转速135", "Speed", "rpm", TagType.Tag, new ShortRegisterValue()));
+ TagManger.AddTag(new Tag("转速136", "Speed", "rpm", TagType.Tag, new ShortRegisterValue()));
+ TagManger.AddTag(new Tag("转速137", "Speed", "rpm", TagType.Tag, new ShortRegisterValue()));
+ TagManger.AddTag(new Tag("转速138", "Speed", "rpm", TagType.Tag, new ShortRegisterValue()));
+ TagManger.AddTag(new Tag("转速139", "Speed", "rpm", TagType.Tag, new ShortRegisterValue()));
+ TagManger.AddTag(new Tag("转速140", "Speed", "rpm", TagType.Tag, new ShortRegisterValue()));
+ TagManger.AddTag(new Tag("转速141", "Speed", "rpm", TagType.Tag, new ShortRegisterValue()));
+ TagManger.AddTag(new Tag("转速142", "Speed", "rpm", TagType.Tag, new ShortRegisterValue()));
+ TagManger.AddTag(new Tag("转速143", "Speed", "rpm", TagType.Tag, new ShortRegisterValue()));
+ TagManger.AddTag(new Tag("转速144", "Speed", "rpm", TagType.Tag, new ShortRegisterValue()));
+ TagManger.AddTag(new Tag("转速145", "Speed", "rpm", TagType.Tag, new ShortRegisterValue()));
+ TagManger.AddTag(new Tag("转速146", "Speed", "rpm", TagType.Tag, new ShortRegisterValue()));
+ TagManger.AddTag(new Tag