1793 lines
80 KiB
C#
1793 lines
80 KiB
C#
using AutoMapper.Internal;
|
||
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;
|
||
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;
|
||
using System.Timers;
|
||
using System.Windows;
|
||
using static CapMachine.Wpf.Models.ComEnum;
|
||
|
||
namespace CapMachine.Wpf.Services
|
||
{
|
||
/// <summary>
|
||
/// 机器实时数据服务
|
||
/// </summary>
|
||
public class MachineRtDataService : BindableBase
|
||
{
|
||
/// <summary>
|
||
/// 事件聚合器
|
||
/// </summary>
|
||
private IEventAggregator _EventAggregator { get; set; }
|
||
public AlarmService AlarmService { get; }
|
||
public ConfigService ConfigService { get; }
|
||
public CanDriveService CanDriveService { get; }
|
||
public LinDriveService LinDriveService { get; }
|
||
public SysRunService SysRunService { get; }
|
||
|
||
/// <summary>
|
||
/// PLCScanTask扫描Task
|
||
/// </summary>
|
||
private static Task PLCScanTask { get; set; }
|
||
|
||
/// <summary>
|
||
/// ScanTask扫描Task
|
||
/// </summary>
|
||
private static Task ScanTask { get; set; }
|
||
|
||
/// <summary>
|
||
/// 西门子连接驱动程序
|
||
/// </summary>
|
||
public SiemensS7Net SiemensDrive { get; set; }
|
||
|
||
/// <summary>
|
||
/// 三菱连接驱动程序
|
||
/// </summary>
|
||
public MelsecMcNet MelsecMcNetDrive { get; set; }
|
||
|
||
private bool _LinkState;
|
||
/// <summary>
|
||
/// PLC连接状态
|
||
/// </summary>
|
||
public bool LinkState
|
||
{
|
||
get { return _LinkState; }
|
||
set { _LinkState = value; RaisePropertyChanged(); }
|
||
}
|
||
|
||
/// <summary>
|
||
/// 周期定时器
|
||
/// </summary>
|
||
private System.Timers.Timer CycleTimer { get; set; }
|
||
|
||
/// <summary>
|
||
/// 界面更新数据
|
||
/// </summary>
|
||
private bool IsValueShow { get; set; } = true;
|
||
|
||
/// <summary>
|
||
/// 系统拓展数据
|
||
/// </summary>
|
||
public SysExdInfo CurSysExdInfo { get; set; }
|
||
|
||
/// <summary>
|
||
/// 布尔拓展信息
|
||
/// </summary>
|
||
public SysExdBoolInfo SysExdBoolInfos { get; set; }
|
||
|
||
///// <summary>
|
||
///// Tag数据集合
|
||
///// </summary>
|
||
//public List<TagInfo> ListRtDataModel { get; set; }
|
||
|
||
/// <summary>
|
||
/// 标签管理中心
|
||
/// </summary>
|
||
public TagManager TagManger { get; set; } = new TagManager();
|
||
|
||
/// <summary>
|
||
/// 扫描线程使能
|
||
/// </summary>
|
||
public bool ThreadEnable { get; set; } = true;
|
||
|
||
/// <summary>
|
||
/// 历史数据
|
||
/// </summary>
|
||
public List<RecordInfo> HistoryData { get; set; } = new List<RecordInfo>();
|
||
|
||
/// <summary>
|
||
/// 手自动切换的条件
|
||
/// </summary>
|
||
public AutoHandSwtichCondition AutoHandSwtichConditionState { get; set; } = new AutoHandSwtichCondition();
|
||
|
||
/// <summary>
|
||
/// 实例化函数
|
||
/// </summary>
|
||
/// <param name="eventAggregator"></param>
|
||
public MachineRtDataService(IEventAggregator eventAggregator, AlarmService alarmService, ConfigService configService,
|
||
CanDriveService canDriveService, LinDriveService linDriveService, SysRunService sysRunService)//, AlarmService alarmService
|
||
{
|
||
//ConcurrentDictionary<DateTime, RecordInfo> keyValuePairs = new ConcurrentDictionary<DateTime, RecordInfo>();
|
||
|
||
//Stopwatch stopwatch = new Stopwatch();
|
||
////第一次计时
|
||
//stopwatch.Start(); //启动Stopwatch
|
||
|
||
//stopwatch.Stop(); //停止Stopwatch
|
||
//Console.WriteLine("Add Elapsed output runTime:{0}", stopwatch.Elapsed.ToString());
|
||
|
||
//MelsecMcNetDrive.
|
||
|
||
//事件服务
|
||
_EventAggregator = eventAggregator;
|
||
AlarmService = alarmService;
|
||
ConfigService = configService;
|
||
CanDriveService = canDriveService;
|
||
LinDriveService = linDriveService;
|
||
SysRunService = sysRunService;
|
||
|
||
//秒触发一次
|
||
CycleTimer = new System.Timers.Timer(500);
|
||
CycleTimer.Elapsed += RecoredCycleAction;
|
||
CycleTimer.AutoReset = true;
|
||
CycleTimer.Enabled = true;
|
||
|
||
#region 标签管理
|
||
|
||
//////三电 Sample
|
||
//TagManger.AddTag(new Tag<short>("转速", "转速[rpm]", "Speed", "程序", "VW15000", 100, 0, 1, "rpm", new ShortTagValue(), true) { DecimalPoint = 0, SVAddress = "VW14002" });
|
||
//TagManger.AddTag(new Tag<short>("排气压力", "排气压力[BarA]", "ExPress", "程序", "VW15002", 100, 0, 100, "BarA", new ShortTagValue(), true) { DecimalPoint = 2 });
|
||
//TagManger.AddTag(new Tag<short>("吸气压力", "吸气压力[BarA]", "InhPress", "程序", "VW15004", 100, 0, 100, "BarA", new ShortTagValue(), true) { DecimalPoint = 2 });
|
||
//TagManger.AddTag(new Tag<short>("吸气温度", "吸气温度[℃]", "InhTemp", "程序", "VW15006", 100, 0, 10, "℃", new ShortTagValue(), true) { DecimalPoint = 1 });
|
||
//TagManger.AddTag(new Tag<short>("COND1温度", "COND1温度[℃]", "Cond1Temp", "程序", "VW15008", 100, 0, 10, "℃", new ShortTagValue(), true) { DecimalPoint = 1 });
|
||
//TagManger.AddTag(new Tag<short>("润滑油压力", "润滑油压力[BarA]", "LubePress", "程序", "VW15010", 100, 0, 100, "BarA", new ShortTagValue(), true) { DecimalPoint = 2 });
|
||
//TagManger.AddTag(new Tag<short>("COND2压力", "COND2压力[BarA]", "Cond2Press", "程序", "VW15012", 100, 0, 100, "BarA", new ShortTagValue(), false) { DecimalPoint = 2 });
|
||
//TagManger.AddTag(new Tag<short>("OCR", "OCR[%]", "OCR", "程序", "VW15014", 100, 0, 10, "%", new ShortTagValue(), true) { DecimalPoint = 1 });
|
||
//TagManger.AddTag(new Tag<short>("HV[V]", "HV[V]", "HV", "程序", "VW15016", 100, 0, 10, "V", new ShortTagValue(), true) { DecimalPoint = 1 });
|
||
//TagManger.AddTag(new Tag<short>("HV[A]", "HV[A]", "HVCur", "程序", "VW15018", 100, 0, 100, "A", new ShortTagValue(), false) { DecimalPoint = 2 });
|
||
//TagManger.AddTag(new Tag<short>("HV[W]", "HV[W]", "HVPw", "程序", "VW15020", 100, 0, 1, "W", new ShortTagValue(), false) { DecimalPoint = 1 });
|
||
//TagManger.AddTag(new Tag<short>("LV[V]", "LV[V]", "LV", "程序", "VW15022", 100, 0, 10, "V", new ShortTagValue(), true) { DecimalPoint = 2 });
|
||
////TagManger.AddTag(new Tag<short>("LV[A]", "LV[A]", "LVCur", "程序", "VW15024", 100, 0, 1, "A", new ShortTagValue(), false) { DecimalPoint = 1 });
|
||
//TagManger.AddTag(new Tag<short>("LV[A]", "LV[A]", "LVCur", "程序", "VW15024", 100, 0, 100, "A", new ShortTagValue(), false) { DecimalPoint = 3 });
|
||
//TagManger.AddTag(new Tag<short>("环境温度", "环境温度[℃]", "EnvTemp", "程序", "VW15026", 100, 0, 10, "℃", new ShortTagValue(), true) { DecimalPoint = 1 });
|
||
////TagManger.AddTag(new Tag<short>("环境湿度", "环境湿度[%]", "EnvRH", "程序", "VW15028", 100, 0, 10, "%", new ShortTagValue(), true) { DecimalPoint = 1 });
|
||
//TagManger.AddTag(new Tag<short>("环境湿度", "环境湿度[%]", "EnvRH", "程序", "VW15028", 100, 0, 10, "%", new ShortTagValue(), true) { DecimalPoint = 1 });
|
||
//TagManger.AddTag(new Tag<short>("OS1温度", "OS1温度[℃]", "OS1Temp", "程序", "VW15030", 100, 0, 10, "℃", new ShortTagValue(), false) { DecimalPoint = 1 });
|
||
//TagManger.AddTag(new Tag<short>("OS2温度", "OS2温度[℃]", "OS2Temp", "程序", "VW15032", 100, 0, 10, "℃", new ShortTagValue(), false) { DecimalPoint = 1 });
|
||
//TagManger.AddTag(new Tag<short>("COND2温度", "COND2温度[℃]", "Cond2Temp", "程序", "VW15034", 100, 0, 10, "℃", new ShortTagValue(), false) { DecimalPoint = 1 });
|
||
//TagManger.AddTag(new Tag<short>("EVAP出口温度", "EVAP出口温度[℃]", "EVAPExpTemp", "程序", "VW15036", 100, 0, 10, "℃", new ShortTagValue(), false) { DecimalPoint = 1 });
|
||
////TagManger.AddTag(new Tag<short>("冷媒流量", "冷媒流量[L/min]", "VRV", "程序", "VW15038", 100, 0, 1, "L/min", new ShortTagValue(), false) { DecimalPoint = 1 });
|
||
//TagManger.AddTag(new Tag<short>("冷媒流量", "冷媒流量[L/min]", "VRV", "程序", "VW15038", 100, 0, 10, "L/min", new ShortTagValue(), false) { DecimalPoint = 1 });
|
||
//TagManger.AddTag(new Tag<short>("润滑油流量", "润滑油流量[L/min]", "LubeFlow", "程序", "VW15040", 100, 0, 10, "L/min", new ShortTagValue(), false) { DecimalPoint = 1 });
|
||
//TagManger.AddTag(new Tag<short>("排气温度", "排气温度[℃]", "ExTemp", "程序", "VW15042", 100, 0, 10, "℃", new ShortTagValue(), true) { DecimalPoint = 1 });
|
||
//TagManger.AddTag(new Tag<short>("膨胀阀前压力", "膨胀阀前压力[BarA]", "TxvFrPress", "程序", "VW15044", 100, 0, 100, "BarA", new ShortTagValue(), false) { DecimalPoint = 2 });
|
||
//TagManger.AddTag(new Tag<short>("膨胀阀前温度", "膨胀阀前温度[℃]", "TxvFrTemp", "程序", "VW15046", 100, 0, 10, "℃", new ShortTagValue(), false) { DecimalPoint = 1 });
|
||
//TagManger.AddTag(new Tag<short>("EVAP出口压力", "EVAP出口压力[BarA]", "EVAPExpPress", "程序", "VW15048", 100, 0, 100, "BarA", new ShortTagValue(), false) { DecimalPoint = 2 });
|
||
//TagManger.AddTag(new Tag<short>("腔内压力", "腔内压力[BarA]", "IntrplPress", "程序", "VW15050", 100, 0, 100, "BarA", new ShortTagValue(), false) { DecimalPoint = 2 });
|
||
//TagManger.AddTag(new Tag<short>("压缩机表面温度", "压缩机表面温度[℃]", "CapSurfTemp", "程序", "VW15052", 100, 0, 10, "℃", new ShortTagValue(), false) { DecimalPoint = 1 });
|
||
//TagManger.AddTag(new Tag<short>("PTC流量", "PTC流量[L/min]", "PTCFlow", "程序", "VW15054", 100, 0, 10, "L/min", new ShortTagValue(), false) { DecimalPoint = 1 });
|
||
//TagManger.AddTag(new Tag<short>("PTC入水温度", "PTC入水温度[℃]", "PTCEntTemp", "程序", "VW15056", 100, 0, 10, "℃", new ShortTagValue(), false) { DecimalPoint = 1 });
|
||
//TagManger.AddTag(new Tag<short>("PTC出水温度", "PTC出水温度[℃]", "PTCExpTemp", "程序", "VW15058", 100, 0, 10, "℃", new ShortTagValue(), false) { DecimalPoint = 1 });
|
||
|
||
////TagManger.AddTag(new Tag<short>("AT04_01", "AT04_01[℃]", "AT04_01Temp", "程序", "VW70", 100, 0, 10, "℃", new ShortTagValue(), false) { DecimalPoint = 1 });
|
||
////TagManger.AddTag(new Tag<short>("AT04_02", "AT04_02[℃]", "AT04_02Temp", "程序", "VW72", 100, 0, 10, "℃", new ShortTagValue(), false) { DecimalPoint = 1 });
|
||
|
||
//TagManger.AddTag(new Tag<short>("通讯Cmp母线电流", "通讯Cmp母线电流[A]", "ComCapBusCur", "程序", "VW15060", 100, 0, 100, "A", new ShortTagValue(), false) { DecimalPoint = 2 });
|
||
//TagManger.AddTag(new Tag<short>("通讯Cmp母线电压", "通讯Cmp母线电压[V]", "ComCapBusVol", "程序", "VW15062", 100, 0, 1, "V", new ShortTagValue(), false) { DecimalPoint = 0 });
|
||
//TagManger.AddTag(new Tag<short>("通讯Cmp逆变器温度", "通讯Cmp逆变器温度[℃]", "ComCapInvTemp", "程序", "VW15064", 100, 0, 1, "℃", new ShortTagValue(), false) { DecimalPoint = 0 });
|
||
//TagManger.AddTag(new Tag<short>("通讯Cmp相电流", "通讯Cmp相电流[A]", "ComCapPhCur", "程序", "VW15066", 100, 0, 100, "A", new ShortTagValue(), false) { DecimalPoint = 2 });
|
||
//TagManger.AddTag(new Tag<short>("通讯Cmp功率", "通讯Cmp功率[W]", "ComCapPw", "程序", "VW15068", 100, 0, 1, "W", new ShortTagValue(), false) { DecimalPoint = 1 });
|
||
//TagManger.AddTag(new Tag<short>("通讯Cmp芯片温度", "通讯Cmp芯片温度[℃]", "ComCapChipTemp", "程序", "VW15070", 100, 0, 1, "℃", new ShortTagValue(), false) { DecimalPoint = 0 });
|
||
|
||
//TagManger.AddTag(new Tag<short>("通讯PTC入水温度", "通讯PTC入水温度[℃]", "ComPTCEntTemp", "程序", "VW15072", 100, 0, 10, "℃", new ShortTagValue(), false) { DecimalPoint = 1 });
|
||
//TagManger.AddTag(new Tag<short>("通讯PTC出水温度", "通讯PTC出水温度[℃]", "ComPTCExpTemp", "程序", "VW15074", 100, 0, 10, "℃", new ShortTagValue(), false) { DecimalPoint = 1 });
|
||
//TagManger.AddTag(new Tag<short>("通讯PTC峰值电流", "通讯PTC峰值电流[A]", "ComPTCPeakCur", "程序", "VW15076", 100, 0, 1, "A", new ShortTagValue(), false) { DecimalPoint = 1 });
|
||
//TagManger.AddTag(new Tag<short>("通讯PTC母线电流", "通讯PTC母线电流[A]", "ComPTCBusCur", "程序", "VW15078", 100, 0, 100, "A", new ShortTagValue(), false) { DecimalPoint = 2 });
|
||
//TagManger.AddTag(new Tag<short>("通讯PTC膜温", "通讯PTC膜温[℃]", "ComPTCFlmTemp", "程序", "VW15080", 100, 0, 1, "℃", new ShortTagValue(), false) { DecimalPoint = 0 });
|
||
//TagManger.AddTag(new Tag<short>("通讯PTC模块温度", "通讯PTC模块温度[℃]", "ComPTCMdTemp", "程序", "VW15082", 100, 0, 1, "℃", new ShortTagValue(), false) { DecimalPoint = 0 });
|
||
|
||
//TagManger.AddTag(new Tag<short>("液冷媒流量", "液冷媒流量[L/min]", "LiqRefFlow", "程序", "VW15084", 100, 0, 10, "L/min", new ShortTagValue(), false) { DecimalPoint = 1 });
|
||
//TagManger.AddTag(new Tag<short>("干度流量", "干度流量[L/min]", "DryFlow", "程序", "VW15086", 100, 0, 10, "L/min", new ShortTagValue(), false) { DecimalPoint = 1 });
|
||
//TagManger.AddTag(new Tag<short>("H5吸气混合器温度", "H5吸气混合器温度[℃]", "H5InhMixTemp", "程序", "VW15088", 100, 0, 10, "℃", new ShortTagValue(), false) { DecimalPoint = 1 });
|
||
//TagManger.AddTag(new Tag<short>("COND循环水温", "COND循环水温[℃]", "CONDCirWaterTemp", "程序", "VW15090", 100, 0, 10, "℃", new ShortTagValue(), false) { DecimalPoint = 1 });
|
||
//TagManger.AddTag(new Tag<short>("SUBCOOL出口温度", "SUBCOOL出口温度[℃]", "SubcoolOutTemp", "程序", "VW15092", 100, 0, 10, "℃", new ShortTagValue(), false) { DecimalPoint = 1 });
|
||
//TagManger.AddTag(new Tag<short>("吸气混合器出口温度", "吸气混合器出口温度[℃]", "InhMixOutTemp", "程序", "VW15094", 100, 0, 10, "℃", new ShortTagValue(), false) { DecimalPoint = 1 });
|
||
//TagManger.AddTag(new Tag<short>("H1出口温度", "H1出口温度[℃]", "H1OutTemp", "程序", "VW15096", 100, 0, 10, "℃", new ShortTagValue(), false) { DecimalPoint = 1 });
|
||
//TagManger.AddTag(new Tag<short>("S.C循环水温", "S.C循环水温[℃]", "SCCirWaterTemp", "程序", "VW15098", 100, 0, 10, "℃", new ShortTagValue(), false) { DecimalPoint = 1 });
|
||
//TagManger.AddTag(new Tag<short>("EVAP循环水温", "EVAP循环水温[℃]", "EvapCirWaterTemp", "程序", "VW15100", 100, 0, 10, "℃", new ShortTagValue(), false) { DecimalPoint = 1 });
|
||
//TagManger.AddTag(new Tag<short>("吸气混合器出口压力", "吸气混合器出口压力[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
|
||
|
||
ListHandSwitchData = new List<HandSwitchData>()
|
||
{
|
||
new HandSwitchData(){Name="自动",ActionAddress="M0.0",StateAddress="M0.0" },
|
||
new HandSwitchData(){Name="抽真空",ActionAddress="M0.1",StateAddress="V15.2" },
|
||
//new HandSwitchData(){Name="复位",ActionAddress="M0.2",StateAddress="M0.2" },放到上侧的按钮区域了
|
||
//new HandSwitchData(){Name="消音",ActionAddress="M0.3",StateAddress="M0.3" },放到上侧的按钮区域了
|
||
new HandSwitchData(){Name="HV电源",ActionAddress="M1.1",StateAddress="Q0.1" },
|
||
new HandSwitchData(){Name="HV启动",ActionAddress="M1.2",StateAddress="Q0.6" },
|
||
new HandSwitchData(){Name="LV电源",ActionAddress="M1.3",StateAddress="Q0.2" },
|
||
new HandSwitchData(){Name="水泵",ActionAddress="M1.4",StateAddress="Q0.3" },
|
||
new HandSwitchData(){Name="冷凝器电加热",ActionAddress="M1.5",StateAddress="Q0.4" },
|
||
new HandSwitchData(){Name="吸气混合器电加热",ActionAddress="M1.6",StateAddress="Q0.5" },
|
||
new HandSwitchData(){Name="吸排气球阀",ActionAddress="M1.7",StateAddress="Q0.7" },
|
||
new HandSwitchData(){Name="试验箱",ActionAddress="M2.0",StateAddress="V15.0" },
|
||
new HandSwitchData(){Name="水SEV1",ActionAddress="M2.1",StateAddress="Q1.0" },
|
||
new HandSwitchData(){Name="水SEV2",ActionAddress="M2.2",StateAddress="Q1.1" },
|
||
new HandSwitchData(){Name="HCV1",ActionAddress="M2.3",StateAddress="Q1.2" },
|
||
new HandSwitchData(){Name="HCV2",ActionAddress="M2.4",StateAddress="Q1.3" },
|
||
new HandSwitchData(){Name="ECV1",ActionAddress="M2.5",StateAddress="Q1.4" },
|
||
new HandSwitchData(){Name="ECV2",ActionAddress="M2.6",StateAddress="Q1.5" },
|
||
new HandSwitchData(){Name="使能",ActionAddress="M2.7",StateAddress="V15.1" },
|
||
};
|
||
|
||
InitialPLCCom();
|
||
|
||
//拓展的参数信息
|
||
CurSysExdInfo = new SysExdInfo(SiemensDrive);
|
||
SysExdBoolInfos = new SysExdBoolInfo(SiemensDrive);
|
||
//PubRtDataStart();
|
||
}
|
||
|
||
|
||
#region 手自动的操作
|
||
|
||
//// <summary>
|
||
///// 手自动切换集合数据
|
||
///// </summary>
|
||
public List<HandSwitchData> ListHandSwitchData { get; set; }
|
||
|
||
/// <summary>
|
||
/// 程序复位
|
||
/// </summary>
|
||
/// <returns></returns>
|
||
public bool SysReset()
|
||
{
|
||
return true;
|
||
|
||
//取消XXX
|
||
var FindData = ListHandSwitchData.Where(a => a.Name == "复位");
|
||
if (FindData.Count() > 0)
|
||
{
|
||
var Result = SiemensDrive.Write(FindData.First().ActionAddress, true);
|
||
if (Result.IsSuccess)
|
||
{
|
||
return true;
|
||
}
|
||
else
|
||
{
|
||
return false;
|
||
}
|
||
}
|
||
return false;
|
||
}
|
||
|
||
/// <summary>
|
||
/// 程序消音
|
||
/// </summary>
|
||
/// <returns></returns>
|
||
public bool SysMute()
|
||
{
|
||
return true;
|
||
|
||
//取消XXX
|
||
var FindData = ListHandSwitchData.Where(a => a.Name == "消音");
|
||
if (FindData.Count() > 0)
|
||
{
|
||
var Result = SiemensDrive.Write(FindData.First().ActionAddress, true);
|
||
if (Result.IsSuccess)
|
||
{
|
||
return true;
|
||
}
|
||
else
|
||
{
|
||
return false;
|
||
}
|
||
}
|
||
return false;
|
||
}
|
||
|
||
|
||
/// <summary>
|
||
/// 程序Start
|
||
/// </summary>
|
||
/// <returns></returns>
|
||
public bool SysStart()
|
||
{
|
||
return true;
|
||
|
||
//取消XXX
|
||
//var Result = SiemensDrive.Write("M0.4", true);
|
||
//if (Result.IsSuccess)
|
||
//{
|
||
// return true;
|
||
//}
|
||
//else
|
||
//{
|
||
// return false;
|
||
//}
|
||
}
|
||
|
||
|
||
/// <summary>
|
||
/// 程序结束
|
||
/// </summary>
|
||
/// <returns></returns>
|
||
public bool SysEnd()
|
||
{
|
||
return true;
|
||
|
||
//取消XXX
|
||
var Result = SiemensDrive.Write("M0.7", true);
|
||
if (Result.IsSuccess)
|
||
{
|
||
return true;
|
||
}
|
||
else
|
||
{
|
||
return false;
|
||
}
|
||
}
|
||
|
||
|
||
/// <summary>
|
||
/// 程序暂停
|
||
/// 取反
|
||
/// </summary>
|
||
/// <returns></returns>
|
||
public bool SysPause()
|
||
{
|
||
return true;
|
||
|
||
//取消XXX
|
||
var StateResult = SiemensDrive.ReadBool("M0.6");
|
||
if (StateResult.IsSuccess)
|
||
{
|
||
if (StateResult.Content == true)
|
||
{
|
||
var Result = SiemensDrive.Write("M0.6", false);
|
||
if (Result.IsSuccess)
|
||
{
|
||
return true;
|
||
}
|
||
else
|
||
{
|
||
return false;
|
||
}
|
||
}
|
||
else
|
||
{
|
||
var Result = SiemensDrive.Write("M0.6", true);
|
||
if (Result.IsSuccess)
|
||
{
|
||
return true;
|
||
}
|
||
else
|
||
{
|
||
return false;
|
||
}
|
||
}
|
||
}
|
||
|
||
return false;
|
||
}
|
||
|
||
#endregion
|
||
|
||
|
||
/// <summary>
|
||
/// UI更新
|
||
/// </summary>
|
||
/// <param name="sender"></param>
|
||
/// <param name="e"></param>
|
||
/// <exception cref="NotImplementedException"></exception>
|
||
private void RecoredCycleAction(object? sender, ElapsedEventArgs e)
|
||
{
|
||
//IsValueShow = !IsValueShow;
|
||
}
|
||
|
||
|
||
/// <summary>
|
||
/// 初始化PLC通信
|
||
/// </summary>
|
||
private void InitialPLCCom()
|
||
{
|
||
var IPInfo = ConfigHelper.GetValue("PLCIP");
|
||
|
||
|
||
SiemensDrive = new SiemensS7Net(SiemensPLCS.S200Smart, IPInfo);
|
||
// 连接对象
|
||
OperateResult connect = SiemensDrive.ConnectServer();
|
||
if (!connect.IsSuccess)//连接失败
|
||
{
|
||
LinkState = false;
|
||
Console.WriteLine("connect failed:" + connect.Message);
|
||
MessageBox.Show($"PLC连接失败:{IPInfo}");
|
||
//return;
|
||
}
|
||
else//连接成功
|
||
{
|
||
LinkState = true;
|
||
}
|
||
|
||
//扫描线程成功
|
||
RtScanDeviceStart();
|
||
|
||
}
|
||
|
||
public const string ConstShortType = "Int16";
|
||
public const string ConstUShortType = "UInt16";
|
||
|
||
public const string ConstIntType = "Int32";
|
||
public const string ConstUIntType = "UInt32";
|
||
|
||
public const string ConstLongType = "Int64";
|
||
public const string ConstULongType = "UInt64";
|
||
|
||
public const string ConstByteType = "Byte";
|
||
|
||
public const string ConstCharType = "Char";
|
||
|
||
public const string ConstFloatType = "Single";
|
||
|
||
public const string ConstDoubleType = "Double";
|
||
|
||
public const string ConstDecimalType = "Decimal";
|
||
|
||
public const string ConstBoolType = "Boolean";
|
||
|
||
//private Random random = new Random();
|
||
|
||
private int IsShowCount = 0;
|
||
|
||
private OperateResult<short> OperateResultShort { get; set; }
|
||
|
||
/// <summary>
|
||
/// SV数据
|
||
/// </summary>
|
||
private OperateResult<short> OperateResultSVShort { get; set; }
|
||
|
||
/// <summary>
|
||
/// MV数据
|
||
/// </summary>
|
||
private OperateResult<short> OperateResultMVShort { get; set; }
|
||
|
||
private Random Random { get; set; } = new Random();
|
||
|
||
/// <summary>
|
||
/// 报警结果集合
|
||
/// </summary>
|
||
private OperateResult<bool[]> OperateResultAlarm { get; set; }
|
||
|
||
/// <summary>
|
||
/// 压缩机使能信号
|
||
/// 压缩机使能信号
|
||
/// 压缩机速度控制
|
||
/// 压缩机功率限制
|
||
/// 加热器使能信号
|
||
///加热器功率给定
|
||
///水流量信号给定
|
||
///加热器目标水温
|
||
/// </summary>
|
||
private OperateResult<short[]> OperateResultValue { get; set; }
|
||
|
||
/// <summary>
|
||
/// CAP的使能状态
|
||
/// </summary>
|
||
private OperateResult<bool> OperateResultCapEnable { get; set; }
|
||
|
||
/// <summary>
|
||
/// 时间诊断
|
||
/// </summary>
|
||
private Stopwatch DiagnosticsTime { get; set; } = new Stopwatch();
|
||
|
||
|
||
/// <summary>
|
||
/// PV整块读取数据
|
||
/// </summary>
|
||
private OperateResult<byte[]> OperateResultBlockPVRead { get; set; }
|
||
|
||
/// <summary>
|
||
/// PLC扫描线程
|
||
/// </summary>
|
||
private void RtScanDeviceStart()
|
||
{
|
||
PLCScanTask = Task.Run(async () =>
|
||
{
|
||
Stopwatch stopwatch = new Stopwatch();
|
||
|
||
while (ThreadEnable)
|
||
{
|
||
await Task.Delay(20);
|
||
//await Task.CompletedTask;
|
||
|
||
DiagnosticsTime.Reset();
|
||
DiagnosticsTime.Start();
|
||
|
||
try
|
||
{
|
||
//stopwatch.Start(); //启动Stopwatch
|
||
//CANLIN数据读取到TagManger.DicTags数据中心中,上面的操作是itemWrite反写到PLC中
|
||
foreach (var itemCanLinGroup in TagManger.DicTags)
|
||
{
|
||
//转速特殊处理,因为在数据集合中叫做【转速】,在CANLIN中叫做【通讯Cmp转速】
|
||
if (itemCanLinGroup.Value.NameNoUnit == "转速")
|
||
{
|
||
switch (ConfigService.CanLinRunStateModel.CurSysSelectedCanLin)
|
||
{
|
||
case CanLinEnum.Can:
|
||
//通信转速 Dbc中间配置名称的转速数据读取出来 给PLC 取消XXX
|
||
if (TagManger.TryGetPVModel(itemCanLinGroup.Key, out MeterValueAttrCell? CanpVModel))
|
||
{
|
||
CanpVModel!.EngValue = CanDriveService.GetDbcSpeedValueBySpeedName("通讯Cmp转速");
|
||
SiemensDrive.Write(CanpVModel!.Address!.Replace("W", ""), (short)CanDriveService.GetDbcSpeedValueBySpeedName("通讯Cmp转速"));
|
||
//pVModel.EngSrcValue = 0;
|
||
}
|
||
break;
|
||
case CanLinEnum.Lin:
|
||
//通信转速 Dbc中间配置名称的转速数据读取出来 给PLC 取消XXX
|
||
if (TagManger.TryGetPVModel(itemCanLinGroup.Key, out MeterValueAttrCell? LinpVModel))
|
||
{
|
||
LinpVModel!.EngValue = LinDriveService.GetLdfSpeedValueBySpeedName("通讯Cmp转速");
|
||
SiemensDrive.Write(LinpVModel!.Address!.Replace("W", ""), (short)LinDriveService.GetLdfSpeedValueBySpeedName("通讯Cmp转速"));
|
||
}
|
||
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;
|
||
}
|
||
}
|
||
}
|
||
|
||
}
|
||
|
||
//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);
|
||
//if (OperateResultAlarm.IsSuccess)
|
||
//{
|
||
// foreach (var item in AlarmService.ListAlarmRunCell)
|
||
// {
|
||
// item.UpdateBoolValue(OperateResultAlarm.Content[item.Index]);
|
||
// }
|
||
//}
|
||
|
||
|
||
//压缩机使能信号实时赋值
|
||
OperateResultValue = SiemensDrive.ReadInt16("VW14000", 30);
|
||
if (OperateResultValue.IsSuccess)
|
||
{
|
||
//压缩机使能信号实时赋值
|
||
switch (ConfigService.CanLinRunStateModel.CurSysSelectedCanLin)
|
||
{
|
||
case CanLinEnum.Can:
|
||
//获取PLC的使能状态,更新到CAN的使能状态
|
||
CanDriveService.UpdateCapEnableCmdData(OperateResultValue.Content[0] == 0 ? false : true);
|
||
break;
|
||
case CanLinEnum.Lin:
|
||
//获取PLC的使能状态,更新到LIN的使能状态
|
||
LinDriveService.UpdateCapEnableCmdData(OperateResultValue.Content[0] == 0 ? false : true);
|
||
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使能 实时赋值
|
||
switch (ConfigService.CanLinRunStateModel.CurSysSelectedCanLin)
|
||
{
|
||
case CanLinEnum.Can:
|
||
//获取PLC的 PTC使能,更新到CAN的 PTC使能
|
||
CanDriveService.UpdateCapPTCEnableCmdData(OperateResultValue.Content[10] == 0 ? false : true);
|
||
break;
|
||
case CanLinEnum.Lin:
|
||
//获取PLC的 PTC使能,更新到LIN的 PTC使能
|
||
LinDriveService.UpdateCapPTCEnableCmdData(OperateResultValue.Content[10] == 0 ? false : true);
|
||
break;
|
||
default:
|
||
break;
|
||
}
|
||
|
||
//压缩机 PTC功率 实时赋值
|
||
switch (ConfigService.CanLinRunStateModel.CurSysSelectedCanLin)
|
||
{
|
||
case CanLinEnum.Can:
|
||
//获取PLC的 PTC功率,更新到CAN的 PTC功率
|
||
CanDriveService.UpdateCapPTCPwCmdData(OperateResultValue.Content[11]);
|
||
break;
|
||
case CanLinEnum.Lin:
|
||
//获取PLC的 PTC功率,更新到LIN的 PTC功率
|
||
LinDriveService.UpdateCapPTCPwCmdData(OperateResultValue.Content[11]);
|
||
break;
|
||
default:
|
||
break;
|
||
}
|
||
|
||
//压缩机 PTC水流量信号 实时赋值
|
||
switch (ConfigService.CanLinRunStateModel.CurSysSelectedCanLin)
|
||
{
|
||
case CanLinEnum.Can:
|
||
//获取PLC的 PTC水流量信号,更新到CAN的 PTC水流量信号
|
||
CanDriveService.UpdateCapPTCFlowCmdData(OperateResultValue.Content[12]*1.0/100);
|
||
break;
|
||
case CanLinEnum.Lin:
|
||
//获取PLC的 PTC水流量信号,更新到LIN的 PTC水流量信号
|
||
LinDriveService.UpdateCapPTCFlowCmdData(OperateResultValue.Content[12] * 1.0 / 100);
|
||
break;
|
||
default:
|
||
break;
|
||
}
|
||
|
||
//压缩机 PTC水温 实时赋值
|
||
switch (ConfigService.CanLinRunStateModel.CurSysSelectedCanLin)
|
||
{
|
||
case CanLinEnum.Can:
|
||
//获取PLC的 PTC水温,更新到CAN的 PTC水温
|
||
CanDriveService.UpdateCapPTCWaterTempCmdData(OperateResultValue.Content[13]);
|
||
break;
|
||
case CanLinEnum.Lin:
|
||
//获取PLC的 PTC水温,更新到LIN的 PTC水温
|
||
LinDriveService.UpdateCapPTCWaterTempCmdData(OperateResultValue.Content[13]);
|
||
break;
|
||
default:
|
||
break;
|
||
}
|
||
}
|
||
|
||
//循环读取手自动切换
|
||
//foreach (var item in ListHandSwitchData)
|
||
//{
|
||
// item.StateOperateResult = SiemensDrive.ReadBool(item.StateAddress);
|
||
// if (item.StateOperateResult.IsSuccess)
|
||
// {
|
||
// item.State = item.StateOperateResult.Content;
|
||
// //根据PLC得到执行的步骤数据,更新到CAN和LIN的数据
|
||
// if (item.Name!.Equals("使能"))
|
||
// {
|
||
// switch (ConfigService.CanLinRunStateModel.CurSysSelectedCanLin)
|
||
// {
|
||
// case CanLinEnum.Can:
|
||
// //获取PLC的使能状态,更新到CAN的使能状态
|
||
// CanDriveService.UpdateCapEnableCmdData(item.State);
|
||
// break;
|
||
// case CanLinEnum.Lin:
|
||
// //获取PLC的使能状态,更新到LIN的使能状态
|
||
// LinDriveService.UpdateCapEnableCmdData(item.State);
|
||
// break;
|
||
// default:
|
||
// break;
|
||
// }
|
||
// }
|
||
// }
|
||
//}
|
||
|
||
|
||
////拓展信息的展示 取消XXX
|
||
//foreach (var itemQuickTag in CurSysExdInfo.QuickTags)
|
||
//{
|
||
// itemQuickTag.OperateResultSource = SiemensDrive.Read(itemQuickTag.ValueAddress, itemQuickTag.ByteLength);
|
||
//}
|
||
|
||
|
||
//CurSysExdInfo.SumRunTime();
|
||
|
||
////布尔拓展信息的展示 取消XXX
|
||
//foreach (var itemQuickTag in SysExdBoolInfos.QuickTags)
|
||
//{
|
||
// itemQuickTag.OperateResultSource = SiemensDrive.Read(itemQuickTag.ValueAddress, itemQuickTag.ByteLength);
|
||
//}
|
||
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
//LogService.Info($"时间:{DateTime.Now.ToString()}-【Meter】-{ex.Message}");
|
||
|
||
}
|
||
|
||
DiagnosticsTime.Stop();
|
||
ConfigService.PlcCycleTime = (int)DiagnosticsTime.Elapsed.TotalMilliseconds;
|
||
//Console.WriteLine($"扫描时间:{DiagnosticsTime.Elapsed.TotalMilliseconds.ToString()}");
|
||
}
|
||
});
|
||
}
|
||
|
||
private Random random = new Random();
|
||
|
||
/// <summary>
|
||
///发布实时数据
|
||
/// </summary>
|
||
private void PubRtDataStart()
|
||
{
|
||
ScanTask = Task.Run(async () =>
|
||
{
|
||
while (ThreadEnable)
|
||
{
|
||
try
|
||
{
|
||
await Task.Delay(1000);
|
||
//_EventAggregator.GetEvent<ChartRtEvent>().Publish(new List<Models.ChartRtValue>()
|
||
//{
|
||
// new Models.ChartRtValue(){Name="EVA风量",Value=random.NextDouble()*100,Unit="℃"},
|
||
// new Models.ChartRtValue(){Name="中间轴转速",Value=random.NextDouble()*100,Unit="℃"},
|
||
// new Models.ChartRtValue(){Name="加热电力",Value=random.NextDouble()*100,Unit="℃"},
|
||
// new Models.ChartRtValue(){Name="加湿电力",Value=random.NextDouble()*100,Unit="℃"},
|
||
// new Models.ChartRtValue(){Name="EMPCV电流",Value=random.NextDouble()*100,Unit="℃"},
|
||
// new Models.ChartRtValue(){Name="INJ压力",Value=random.NextDouble()*100,Unit="℃"},
|
||
// new Models.ChartRtValue(){Name="冷媒流量",Value=random.NextDouble()*100,Unit="℃"},
|
||
//});
|
||
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
|
||
}
|
||
|
||
}
|
||
|
||
});
|
||
}
|
||
}
|
||
}
|