You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

617 lines
48 KiB
C#

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

using Amqp;
using CFX;
using CFX.ResourcePerformance;
using CFX.Structures;
using HslCommunication;
using Sln.Iot.Business.Entity;
using Sln.Iot.CFX.CFXConnect;
using Sln.Iot.CFX.Event;
using Sln.Iot.Config;
using Sln.Iot.PLC;
using Sln.Iot.Repository.dao;
using Sln.Iot.Repository.service;
using Sln.Iot.Serilog;
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using TouchSocket.Core;
namespace Sln.Iot.Business
{
public class ErrorAnalyseBusiness
{
private Timer _timer;
private readonly PLCConnect _plc = PLCConnect.Instance;
private readonly SerilogHelper _log = SerilogHelper.Instance;
private readonly AppConfig _appConfig = AppConfigSetting.Load();
private readonly ErrorService errorService = ErrorService.Instance;
private readonly TrayBindingService trayBindingService = TrayBindingService.Instance;
private FaultOccurredEvent faultOccurredEvent = new FaultOccurredEvent();
private FaultClearedEvent faultClearedEvent = new FaultClearedEvent();
private CFXConnectOven CFXOven = CFXConnectOven.Instance;
private CFXConnectVacuum CFXVacuum = CFXConnectVacuum.Instance;
public ErrorAnalyseBusiness()
{
_timer = new Timer(TimerCallback, null, 0, 3000);
}
/// <summary>
/// 报警点位刷新
/// </summary>
/// <param name="state"></param>
public void TimerCallback(object? state)
{
try
{
// 烤箱报警 D1001个字— PLC20192.168.1.20
var result20 = _plc.ReadBytes(_plc.PLC20, "D100", 1);
// 真空灌胶机报警 D100-D1056个字— PLC21192.168.1.21
var result21 = _plc.ReadBytes(_plc.PLC21, "D100", 6);
if (result20.IsSuccess && result20.Content != null)
{
BitArray bits20 = new BitArray(ToolBusiness.SwapAdjacentBytes(result20.Content));
bool[] bools20 = new bool[bits20.Count];
bits20.CopyTo(bools20, 0);
OvenAlarmAnalyse(bools20);
}
if (result21.IsSuccess && result21.Content != null)
{
BitArray bits21 = new BitArray(ToolBusiness.SwapAdjacentBytes(result21.Content));
bool[] bools21 = new bool[bits21.Count];
bits21.CopyTo(bools21, 0);
VacuumAlarmAnalyse(bools21);
}
}
catch (Exception ex)
{
_log.Error("报警信息处理发生错误", ex);
}
}
/// <summary>
/// 真空灌胶机报警分析
/// </summary>
/// <param name="bools"></param>
public void VacuumAlarmAnalyse(bool[] bools)
{
//现存的错误数据
List<Vacuum1Error>? errorList = errorService.GetV1List();
foreach (var errorMessage in VacuumAlarms)
{
if (errorMessage.ErrorIndex < bools.Length && bools[errorMessage.ErrorIndex])
{
//如果原来没有 现在有 添加错误
if (errorList.Count(x => x.ErrorName == errorMessage.ENAlarmMessage) == 0)
{
Guid.TryParse(trayBindingService.TidGet(), out Guid transID);
Guid logGuid = Guid.NewGuid();
errorService.InsertVacuum1Error(logGuid.ToString(), errorMessage.ENAlarmMessage, errorMessage.CNAlarmMessage, errorMessage.ErrorCode);
CFXVacuum.PublishEvent(new CFXEnvelope(faultOccurredEvent.Handle(errorMessage.ErrorCode, LevelTrans(errorMessage.AlarmDegarde), logGuid, errorMessage.ENAlarmMessage, transID)));
if (_appConfig.IsAlarmLog)
_log.Info($"真空灌胶机报警发生 内容:{errorMessage.CNAlarmMessage} 级别:{errorMessage.AlarmDegarde.GetDescription()}");
}
}
else
{
//如果原来有 现在没有 则删除
if (errorList.Count(x => x.ErrorName == errorMessage.ENAlarmMessage) != 0)
{
//删除错误
string delGuid = errorService.DeleteVacuum1Error(errorMessage.ENAlarmMessage);
Guid.TryParse(delGuid, out Guid guidRes);
CFXVacuum.PublishEvent(new CFXEnvelope(faultClearedEvent.Handle(guidRes)));
if (_appConfig.IsAlarmLog)
_log.Info($"真空灌胶机报警消除 内容:{errorMessage.CNAlarmMessage} 级别:{errorMessage.AlarmDegarde.GetDescription()}");
}
}
}
}
/// <summary>
/// 烤箱报警分析
/// </summary>
/// <param name="bools"></param>
public void OvenAlarmAnalyse(bool[] bools)
{
//现存的错误数据
List<OvenError>? errorList = errorService.GetOvenList();
foreach (var errorMessage in OvenAlarms)
{
if (bools[errorMessage.ErrorIndex])
{
//如果原来没有 现在有 添加错误
if (errorList.Count(x => x.ErrorName == errorMessage.ENAlarmMessage) == 0)
{
Guid.TryParse(trayBindingService.TidGet(), out Guid transID);
Guid logGuid = Guid.NewGuid();
errorService.InsertOvenError(logGuid.ToString(), errorMessage.ENAlarmMessage, errorMessage.CNAlarmMessage, errorMessage.ErrorCode);
CFXOven.PublishEvent(new CFXEnvelope(faultOccurredEvent.Handle(errorMessage.ErrorCode, LevelTrans(errorMessage.AlarmDegarde), logGuid, errorMessage.ENAlarmMessage, transID)));
if (_appConfig.IsAlarmLog)
_log.Info($"烤箱报警发生 内容:{errorMessage.CNAlarmMessage} 级别:{errorMessage.AlarmDegarde.GetDescription()}");
}
}
else
{
//如果原来有 现在没有 则删除
if (errorList.Count(x => x.ErrorName == errorMessage.ENAlarmMessage) != 0)
{
//删除错误
string delGuid = errorService.DeleteOvenError(errorMessage.ENAlarmMessage);
Guid.TryParse(delGuid, out Guid guidRes);
CFXOven.PublishEvent(new CFXEnvelope(faultClearedEvent.Handle(guidRes)));
if (_appConfig.IsAlarmLog)
_log.Info($"烤箱报警消除 内容:{errorMessage.CNAlarmMessage} 级别:{errorMessage.AlarmDegarde.GetDescription()}");
}
}
}
}
/// <summary>
/// 报警等级转换
/// </summary>
/// <returns></returns>
private FaultSeverity LevelTrans(AlarmDegardeEnum alarmDegardeEnum)
{
switch (alarmDegardeEnum)
{
case AlarmDegardeEnum.Warning:
return FaultSeverity.Information;
case AlarmDegardeEnum.Error:
return FaultSeverity.Warning;
case AlarmDegardeEnum.Fault:
return FaultSeverity.Error;
default:
return FaultSeverity.Information;
}
}
/// <summary>
/// 真空灌胶机报警定义PLC21 D100-D1056字=96位
/// </summary>
public static readonly List<AlarmMessageEntity> VacuumAlarms = new()
{
// ===== D100位偏移 0-15=====
new() { ErrorIndex = 0, ENAlarmMessage = "AntiCuring time up!", CNAlarmMessage = "防固时间到!", AlarmDegarde = AlarmDegardeEnum.Warning, ErrorCode = "100" },
new() { ErrorIndex = 1, ENAlarmMessage = "Tank A Upper limit!", CNAlarmMessage = "A桶上限报警", AlarmDegarde = AlarmDegardeEnum.Warning, ErrorCode = "101" },
new() { ErrorIndex = 2, ENAlarmMessage = "Tank A Lower limit!", CNAlarmMessage = "A桶下限报警", AlarmDegarde = AlarmDegardeEnum.Warning, ErrorCode = "102" },
new() { ErrorIndex = 3, ENAlarmMessage = "Tank B Upper limit!", CNAlarmMessage = "B桶上限报警", AlarmDegarde = AlarmDegardeEnum.Warning, ErrorCode = "103" },
new() { ErrorIndex = 4, ENAlarmMessage = "Tank B Lower limit!", CNAlarmMessage = "B桶下限报警", AlarmDegarde = AlarmDegardeEnum.Warning, ErrorCode = "104" },
// ===== D102位偏移 32-47=====
new() { ErrorIndex = 32 + 0, ENAlarmMessage = "Glue tank Vacuum Motor Error!", CNAlarmMessage = "料桶真空泵报警!", AlarmDegarde = AlarmDegardeEnum.Error, ErrorCode = "105" },
new() { ErrorIndex = 32 + 1, ENAlarmMessage = "Pump A Backward Limit Reached!", CNAlarmMessage = "泵A负限位报警", AlarmDegarde = AlarmDegardeEnum.Error, ErrorCode = "106" },
new() { ErrorIndex = 32 + 2, ENAlarmMessage = "Pump A Forward Limit Reached!", CNAlarmMessage = "泵A正限位报警", AlarmDegarde = AlarmDegardeEnum.Error, ErrorCode = "107" },
new() { ErrorIndex = 32 + 3, ENAlarmMessage = "Pump B Backward Limit Reached!", CNAlarmMessage = "泵B负限报警", AlarmDegarde = AlarmDegardeEnum.Error, ErrorCode = "108" },
new() { ErrorIndex = 32 + 4, ENAlarmMessage = "Pump B Forward Limit Reached!", CNAlarmMessage = "泵B正限禁止", AlarmDegarde = AlarmDegardeEnum.Error, ErrorCode = "109" },
new() { ErrorIndex = 32 + 5, ENAlarmMessage = "Servo A Error!", CNAlarmMessage = "泵A伺服报警", AlarmDegarde = AlarmDegardeEnum.Error, ErrorCode = "110" },
new() { ErrorIndex = 32 + 6, ENAlarmMessage = "Servo B Error!", CNAlarmMessage = "泵B伺服报警", AlarmDegarde = AlarmDegardeEnum.Error, ErrorCode = "111" },
// ===== D104位偏移 64-79=====
new() { ErrorIndex = 64 + 0, ENAlarmMessage = "Mixing Valve Open Error!", CNAlarmMessage = "混合阀打开异常", AlarmDegarde = AlarmDegardeEnum.Error, ErrorCode = "200" },
new() { ErrorIndex = 64 + 1, ENAlarmMessage = "Inlet Valve of Pump A Close Error!", CNAlarmMessage = "A泵进胶阀关异常", AlarmDegarde = AlarmDegardeEnum.Error, ErrorCode = "201" },
new() { ErrorIndex = 64 + 2, ENAlarmMessage = "Outlet Valve of Pump A Close Error!", CNAlarmMessage = "A泵出胶阀关异常", AlarmDegarde = AlarmDegardeEnum.Error, ErrorCode = "202" },
new() { ErrorIndex = 64 + 3, ENAlarmMessage = "Inlet Valve of Pump A Open Error!", CNAlarmMessage = "A泵进胶阀打开异常", AlarmDegarde = AlarmDegardeEnum.Error, ErrorCode = "203" },
new() { ErrorIndex = 64 + 4, ENAlarmMessage = "Outlet Valve of Pump A Open Error!", CNAlarmMessage = "A泵出胶阀打开异常", AlarmDegarde = AlarmDegardeEnum.Error, ErrorCode = "204" },
new() { ErrorIndex = 64 + 5, ENAlarmMessage = "Inlet Valve of Pump B Close Error!", CNAlarmMessage = "B泵进胶阀关异常", AlarmDegarde = AlarmDegardeEnum.Error, ErrorCode = "205" },
new() { ErrorIndex = 64 + 6, ENAlarmMessage = "Outlet Valve of Pump B Close Error!", CNAlarmMessage = "B泵出胶阀关异常", AlarmDegarde = AlarmDegardeEnum.Error, ErrorCode = "206" },
new() { ErrorIndex = 64 + 7, ENAlarmMessage = "Inlet Valve of Pump B Open Error!", CNAlarmMessage = "B进胶阀打开异常", AlarmDegarde = AlarmDegardeEnum.Error, ErrorCode = "207" },
new() { ErrorIndex = 64 + 8, ENAlarmMessage = "Outlet Valve of Pump B Open Error!", CNAlarmMessage = "B出胶阀打开异常", AlarmDegarde = AlarmDegardeEnum.Error, ErrorCode = "208" },
new() { ErrorIndex = 64 + 9, ENAlarmMessage = "Globe Valve of Tank A Open Error!", CNAlarmMessage = "A桶球阀打开异常", AlarmDegarde = AlarmDegardeEnum.Error, ErrorCode = "209" },
new() { ErrorIndex = 64 + 10, ENAlarmMessage = "Globe Valve of Tank B Open Error!", CNAlarmMessage = "B桶球阀打开异常", AlarmDegarde = AlarmDegardeEnum.Error, ErrorCode = "210" },
new() { ErrorIndex = 64 + 11, ENAlarmMessage = "Pump A Pressure Over UpperLimit", CNAlarmMessage = "A泵压力上限报警", AlarmDegarde = AlarmDegardeEnum.Error, ErrorCode = "211" },
new() { ErrorIndex = 64 + 12, ENAlarmMessage = "Pump B Pressure Over UpperLimit", CNAlarmMessage = "B泵压力上限报警", AlarmDegarde = AlarmDegardeEnum.Error, ErrorCode = "212" },
new() { ErrorIndex = 64 + 13, ENAlarmMessage = "Air Pressure Alarm", CNAlarmMessage = "系统气压报警", AlarmDegarde = AlarmDegardeEnum.Error, ErrorCode = "213" },
// ===== D105位偏移 80-95=====
new() { ErrorIndex = 80 + 0, ENAlarmMessage = "Axis X Servo error", CNAlarmMessage = "X轴伺服报警", AlarmDegarde = AlarmDegardeEnum.Error, ErrorCode = "112" },
new() { ErrorIndex = 80 + 1, ENAlarmMessage = "Axis Y Servo error", CNAlarmMessage = "Y轴伺服报警", AlarmDegarde = AlarmDegardeEnum.Error, ErrorCode = "113" },
new() { ErrorIndex = 80 + 2, ENAlarmMessage = "Axis Z Servo error", CNAlarmMessage = "Z轴伺服报警", AlarmDegarde = AlarmDegardeEnum.Error, ErrorCode = "114" },
new() { ErrorIndex = 80 + 3, ENAlarmMessage = "Vacuum Tank Vacuum Pump Error", CNAlarmMessage = "真空箱真空泵异常", AlarmDegarde = AlarmDegardeEnum.Error, ErrorCode = "115" },
new() { ErrorIndex = 80 + 4, ENAlarmMessage = "VacuumChamber Vacuum Valve Error", CNAlarmMessage = "真空箱真空阀打开异常", AlarmDegarde = AlarmDegardeEnum.Error, ErrorCode = "214" },
new() { ErrorIndex = 80 + 5, ENAlarmMessage = "Vacuum Vent Valve Close Error", CNAlarmMessage = "真空箱放气阀关闭异常", AlarmDegarde = AlarmDegardeEnum.Error, ErrorCode = "215" },
new() { ErrorIndex = 80 + 6, ENAlarmMessage = "Vacuum Chamber Lifter error", CNAlarmMessage = "灌胶定位缸异常", AlarmDegarde = AlarmDegardeEnum.Error, ErrorCode = "216" },
new() { ErrorIndex = 80 + 7, ENAlarmMessage = "Vacuum Chamber Inlet Door Open error", CNAlarmMessage = "1号真空箱入口门打开异常", AlarmDegarde = AlarmDegardeEnum.Error, ErrorCode = "216" },
new() { ErrorIndex = 80 + 8, ENAlarmMessage = "Vacuum Chamber Inlet Door Close error", CNAlarmMessage = "1号真空箱入口门关闭异常", AlarmDegarde = AlarmDegardeEnum.Error, ErrorCode = "216" },
new() { ErrorIndex = 80 + 9, ENAlarmMessage = "Vacuum Chamber Outlet Door Open error", CNAlarmMessage = "1号真空箱出口门打开异常", AlarmDegarde = AlarmDegardeEnum.Error, ErrorCode = "216" },
new() { ErrorIndex = 80 + 10, ENAlarmMessage = "Vacuum Chamber Outlet Door Close error", CNAlarmMessage = "1号真空箱出口门关闭异常", AlarmDegarde = AlarmDegardeEnum.Error, ErrorCode = "216" },
new() { ErrorIndex = 80 + 11, ENAlarmMessage = "RFID1 Read Error", CNAlarmMessage = "RFID1读失败", AlarmDegarde = AlarmDegardeEnum.Error, ErrorCode = "116" },
new() { ErrorIndex = 80 + 13, ENAlarmMessage = "Front Door Not closed.", CNAlarmMessage = "箱前门没有关闭。", AlarmDegarde = AlarmDegardeEnum.Error, ErrorCode = "117" },
new() { ErrorIndex = 80 + 14, ENAlarmMessage = "Inlet Door LightCurtain Warning", CNAlarmMessage = "入口光栅触发", AlarmDegarde = AlarmDegardeEnum.Warning, ErrorCode = "118" },
new() { ErrorIndex = 80 + 15, ENAlarmMessage = "Outlet Door LightCurtain Warning", CNAlarmMessage = "出口光栅触发", AlarmDegarde = AlarmDegardeEnum.Warning, ErrorCode = "119" },
};
/// <summary>
/// 烤箱报警定义PLC20 D1001字=16位
/// </summary>
public static readonly List<AlarmMessageEntity> OvenAlarms = new()
{
new() { ErrorIndex = 0, ENAlarmMessage = "Line E.Stop ON!", CNAlarmMessage = "线急停按下!", AlarmDegarde = AlarmDegardeEnum.Warning, ErrorCode = "11" },
new() { ErrorIndex = 1, ENAlarmMessage = "Curing Zone I heating error!", CNAlarmMessage = "固化1区加热异常", AlarmDegarde = AlarmDegardeEnum.Error, ErrorCode = "12" },
new() { ErrorIndex = 2, ENAlarmMessage = "Curing Zone II heating error!", CNAlarmMessage = "固化2区加热异常", AlarmDegarde = AlarmDegardeEnum.Error, ErrorCode = "18" },
new() { ErrorIndex = 3, ENAlarmMessage = "RFID2 Read Error", CNAlarmMessage = "RFID2读码错误", AlarmDegarde = AlarmDegardeEnum.Error, ErrorCode = "20" },
new() { ErrorIndex = 4, ENAlarmMessage = "RFID3 Read Error", CNAlarmMessage = "RFID3读码错误", AlarmDegarde = AlarmDegardeEnum.Error, ErrorCode = "22" },
};
///// <summary>
///// 真空箱报警定义(旧)
///// </summary>
//public static readonly List<AlarmMessageEntity> VacuumAlarms_Old = new()
//{
// new() { ErrorIndex = 16 * 0 + 0, ENAlarmMessage = "1# Pump A Backward Limit Reached!", CNAlarmMessage = "泵A负限超程", AlarmDegarde = AlarmDegardeEnum.Fault },
// new() { ErrorIndex = 16 * 0 + 1, ENAlarmMessage = "1# Pump A Forward Limit Reached!", CNAlarmMessage = "泵A正限超程", AlarmDegarde = AlarmDegardeEnum.Fault },
// new() { ErrorIndex = 16 * 0 + 2, ENAlarmMessage = "1# Pump B Backward Limit Reached!", CNAlarmMessage = "泵B负限超程", AlarmDegarde = AlarmDegardeEnum.Fault },
// new() { ErrorIndex = 16 * 0 + 3, ENAlarmMessage = "1# Pump B Forward Limit Reached!", CNAlarmMessage = "泵B正限超程", AlarmDegarde = AlarmDegardeEnum.Fault },
// new() { ErrorIndex = 16 * 0 + 4, ENAlarmMessage = "1# Servo A Error!", CNAlarmMessage = "泵A伺服报警", AlarmDegarde = AlarmDegardeEnum.Fault },
// new() { ErrorIndex = 16 * 0 + 5, ENAlarmMessage = "1# Servo B Error!", CNAlarmMessage = "泵B伺服报警", AlarmDegarde = AlarmDegardeEnum.Fault },
// new() { ErrorIndex = 16 * 0 + 6, ENAlarmMessage = "Mixed Servo Error!", CNAlarmMessage = "混合伺服报警!", AlarmDegarde = AlarmDegardeEnum.Fault },
// new() { ErrorIndex = 16 * 0 + 7, ENAlarmMessage = "Mixed Motor Rotating Error!", CNAlarmMessage = "混合电机旋转异常!", AlarmDegarde = AlarmDegardeEnum.Fault },
// new() { ErrorIndex = 16 * 0 + 12, ENAlarmMessage = "A1 Heating Error", CNAlarmMessage = "A1加热异常", AlarmDegarde = AlarmDegardeEnum.Error },
// new() { ErrorIndex = 16 * 0 + 13, ENAlarmMessage = "B1 Heating Error", CNAlarmMessage = "B1加热异常", AlarmDegarde = AlarmDegardeEnum.Error },
// new() { ErrorIndex = 16 * 0 + 14, ENAlarmMessage = "A2 Heating Error", CNAlarmMessage = "A2加热异常", AlarmDegarde = AlarmDegardeEnum.Error },
// new() { ErrorIndex = 16 * 0 + 15, ENAlarmMessage = "B2 Heating Error", CNAlarmMessage = "B2加热异常", AlarmDegarde = AlarmDegardeEnum.Error },
// new() { ErrorIndex = 16 * 1 + 0, ENAlarmMessage = "A Potting Valve Open Error", CNAlarmMessage = "A吐出阀打开异常", AlarmDegarde = AlarmDegardeEnum.Fault },
// new() { ErrorIndex = 16 * 1 + 1, ENAlarmMessage = "B Potting Valve Open Error", CNAlarmMessage = "B吐出阀打开异常", AlarmDegarde = AlarmDegardeEnum.Fault },
// new() { ErrorIndex = 16 * 2 + 0, ENAlarmMessage = "1# Tank A Globe Valve Error!", CNAlarmMessage = "A1桶球阀打开异常", AlarmDegarde = AlarmDegardeEnum.Fault },
// new() { ErrorIndex = 16 * 2 + 1, ENAlarmMessage = "1# Tank B Globe Valve Error!", CNAlarmMessage = "B1桶球阀打开异常", AlarmDegarde = AlarmDegardeEnum.Fault },
// new() { ErrorIndex = 16 * 2 + 2, ENAlarmMessage = "Vacuum Chamber Inlet Door Open Error", CNAlarmMessage = "真空箱入口门打开异常", AlarmDegarde = AlarmDegardeEnum.Error },
// new() { ErrorIndex = 16 * 2 + 3, ENAlarmMessage = "Vacuum Chamber Inlet Door Close Error", CNAlarmMessage = "真空箱入口门关闭异常", AlarmDegarde = AlarmDegardeEnum.Error },
// new() { ErrorIndex = 16 * 2 + 4, ENAlarmMessage = "Vacuum Chamber Outlet Door Open Error", CNAlarmMessage = "真空箱出口门打开异常", AlarmDegarde = AlarmDegardeEnum.Error },
// new() { ErrorIndex = 16 * 2 + 5, ENAlarmMessage = "Vacuum Chamber Outlet Door Close Error", CNAlarmMessage = "真空箱出口门关闭异常", AlarmDegarde = AlarmDegardeEnum.Error },
// new() { ErrorIndex = 16 * 2 + 8, ENAlarmMessage = "Axis X Servo Error", CNAlarmMessage = "X轴伺服报警", AlarmDegarde = AlarmDegardeEnum.Fault },
// new() { ErrorIndex = 16 * 2 + 9, ENAlarmMessage = "Axis Y Servo Error", CNAlarmMessage = "Y轴伺服报警", AlarmDegarde = AlarmDegardeEnum.Fault },
// new() { ErrorIndex = 16 * 2 + 10, ENAlarmMessage = "Axis Z Servo Error", CNAlarmMessage = "Z轴伺服报警", AlarmDegarde = AlarmDegardeEnum.Fault },
// new() { ErrorIndex = 16 * 2 + 11, ENAlarmMessage = "Vacuum Tank Vacuum Pump Error", CNAlarmMessage = "真空箱真空泵异常", AlarmDegarde = AlarmDegardeEnum.Error },
// new() { ErrorIndex = 16 * 2 + 12, ENAlarmMessage = "Vacuum Chamber Lifter Error", CNAlarmMessage = "灌胶定位缸异常", AlarmDegarde = AlarmDegardeEnum.Error },
// new() { ErrorIndex = 16 * 2 + 13, ENAlarmMessage = "Vacuum Chamber Vacuum Valve Error", CNAlarmMessage = "真空阀打开异常", AlarmDegarde = AlarmDegardeEnum.Error },
// new() { ErrorIndex = 16 * 2 + 14, ENAlarmMessage = "Vacuum Vent Valve Close Error", CNAlarmMessage = "放气阀关闭异常", AlarmDegarde = AlarmDegardeEnum.Error },
// new() { ErrorIndex = 16 * 3 + 0, ENAlarmMessage = "Air Pressure Alarm", CNAlarmMessage = "系统气压报警", AlarmDegarde = AlarmDegardeEnum.Error },
// new() { ErrorIndex = 16 * 3 + 2, ENAlarmMessage = "Glue Tank Vacuum Pump Error!", CNAlarmMessage = "料桶真空泵报警!", AlarmDegarde = AlarmDegardeEnum.Error },
// new() { ErrorIndex = 16 * 4 + 0, ENAlarmMessage = "Pump A Pressure Over Upper Limit", CNAlarmMessage = "A泵压力上限报警", AlarmDegarde = AlarmDegardeEnum.Fault },
// new() { ErrorIndex = 16 * 4 + 1, ENAlarmMessage = "Pump A Pressure Below Lower Limit", CNAlarmMessage = "A泵压力下限报警", AlarmDegarde = AlarmDegardeEnum.Fault },
// new() { ErrorIndex = 16 * 4 + 2, ENAlarmMessage = "Pump B Pressure Over Upper Limit", CNAlarmMessage = "B泵压力上限报警", AlarmDegarde = AlarmDegardeEnum.Fault },
// new() { ErrorIndex = 16 * 4 + 3, ENAlarmMessage = "Pump B Pressure Below Lower Limit", CNAlarmMessage = "B泵压力下限报警", AlarmDegarde = AlarmDegardeEnum.Fault },
// new() { ErrorIndex = 16 * 10 + 0, ENAlarmMessage = "1# Tank A Upper Limit!", CNAlarmMessage = "A1桶上限报警", AlarmDegarde = AlarmDegardeEnum.Warning },
// new() { ErrorIndex = 16 * 10 + 1, ENAlarmMessage = "1# Tank A Lower Limit!", CNAlarmMessage = "A1桶下限报警", AlarmDegarde = AlarmDegardeEnum.Warning },
// new() { ErrorIndex = 16 * 10 + 2, ENAlarmMessage = "1# Tank B Upper Limit!", CNAlarmMessage = "B1桶上限报警", AlarmDegarde = AlarmDegardeEnum.Warning },
// new() { ErrorIndex = 16 * 10 + 3, ENAlarmMessage = "1# Tank B Lower Limit!", CNAlarmMessage = "B1桶下限报警", AlarmDegarde = AlarmDegardeEnum.Warning },
// new() { ErrorIndex = 16 * 10 + 4, ENAlarmMessage = "2# Tank A Upper Limit!", CNAlarmMessage = "A2桶上限报警", AlarmDegarde = AlarmDegardeEnum.Warning },
// new() { ErrorIndex = 16 * 10 + 5, ENAlarmMessage = "2# Tank A Lower Limit!", CNAlarmMessage = "A2桶下限报警", AlarmDegarde = AlarmDegardeEnum.Warning },
// new() { ErrorIndex = 16 * 10 + 6, ENAlarmMessage = "2# Tank B Upper Limit!", CNAlarmMessage = "B2桶上限报警", AlarmDegarde = AlarmDegardeEnum.Warning },
// new() { ErrorIndex = 16 * 10 + 7, ENAlarmMessage = "2# Tank B Lower Limit!", CNAlarmMessage = "B2桶下限报警", AlarmDegarde = AlarmDegardeEnum.Warning },
// new() { ErrorIndex = 16 * 10 + 8, ENAlarmMessage = "1# Antisolid Time Up!", CNAlarmMessage = "防固时间到!", AlarmDegarde = AlarmDegardeEnum.Warning },
// new() { ErrorIndex = 16 * 10 + 9, ENAlarmMessage = "Globe Valve Not Opened!", CNAlarmMessage = "球阀未打开!", AlarmDegarde = AlarmDegardeEnum.Error },
//};
///// <summary>
///// 加热线报警定义(旧)
///// </summary>
//public static readonly List<AlarmMessageEntity> OvenAlarms_Old = new()
//{
// new() { ErrorIndex = 16 * 0 + 0, ENAlarmMessage = "Line E.Stop ON!", CNAlarmMessage = "线急停按下", AlarmDegarde = AlarmDegardeEnum.Fault },
// new() { ErrorIndex = 16 * 0 + 1, ENAlarmMessage = "Preheating Zone Heating Error!", CNAlarmMessage = "预热区加热异常", AlarmDegarde = AlarmDegardeEnum.Error },
// new() { ErrorIndex = 16 * 0 + 2, ENAlarmMessage = "Precuring Zone I Heating Error!", CNAlarmMessage = "预固1区加热异常", AlarmDegarde = AlarmDegardeEnum.Error },
// new() { ErrorIndex = 16 * 0 + 3, ENAlarmMessage = "Precuring Zone II Heating Error!", CNAlarmMessage = "预固2区加热异常", AlarmDegarde = AlarmDegardeEnum.Error },
// new() { ErrorIndex = 16 * 0 + 4, ENAlarmMessage = "Precuring Zone III Heating Error!", CNAlarmMessage = "预固3区加热异常", AlarmDegarde = AlarmDegardeEnum.Error },
// new() { ErrorIndex = 16 * 0 + 5, ENAlarmMessage = "Precuring Zone IV Heating Error!", CNAlarmMessage = "预固4区加热异常", AlarmDegarde = AlarmDegardeEnum.Error },
// new() { ErrorIndex = 16 * 0 + 6, ENAlarmMessage = "Curing Zone I Heating Error!", CNAlarmMessage = "固化1区加热异常", AlarmDegarde = AlarmDegardeEnum.Error },
// new() { ErrorIndex = 16 * 0 + 7, ENAlarmMessage = "Curing Zone II Heating Error!", CNAlarmMessage = "固化2区加热异常", AlarmDegarde = AlarmDegardeEnum.Error },
// new() { ErrorIndex = 16 * 0 + 8, ENAlarmMessage = "Curing Zone III Heating Error!", CNAlarmMessage = "固化3区加热异常", AlarmDegarde = AlarmDegardeEnum.Error },
// new() { ErrorIndex = 16 * 0 + 9, ENAlarmMessage = "Curing Zone IV Heating Error!", CNAlarmMessage = "固化4区加热异常", AlarmDegarde = AlarmDegardeEnum.Error },
//};
///// <summary>
///// 提升机报警定义
///// </summary>
//public static readonly List<AlarmMessageEntity> LiftAlarms = new()
//{
// new() { ErrorIndex = 16 * 0 + 0, ENAlarmMessage = "Loading Lifter Down Error", CNAlarmMessage = "上料提升机下降异常", AlarmDegarde = AlarmDegardeEnum.Fault },
// new() { ErrorIndex = 16 * 0 + 1, ENAlarmMessage = "Loading Lifter Up Error", CNAlarmMessage = "上料提升机上升异常", AlarmDegarde = AlarmDegardeEnum.Fault },
// new() { ErrorIndex = 16 * 0 + 2, ENAlarmMessage = "Loading Lifter E.Stop Pressed", CNAlarmMessage = "上料提升机急停按下", AlarmDegarde = AlarmDegardeEnum.Fault },
// new() { ErrorIndex = 16 * 0 + 3, ENAlarmMessage = "Unloading Lifter Down Error", CNAlarmMessage = "下料提升机下降异常", AlarmDegarde = AlarmDegardeEnum.Fault },
// new() { ErrorIndex = 16 * 0 + 4, ENAlarmMessage = "Unloading Lifter Up Error", CNAlarmMessage = "下料提升机上升异常", AlarmDegarde = AlarmDegardeEnum.Fault },
// new() { ErrorIndex = 16 * 0 + 5, ENAlarmMessage = "Unloading Lifter E.Stop Pressed", CNAlarmMessage = "下料提升机急停按下", AlarmDegarde = AlarmDegardeEnum.Fault },
//};
///// <summary>
///// 真空注胶机1解析
///// </summary>
///// <param name="boolIndex"></param>
///// <returns></returns>
//public static AlarmMessageEntity? GetVacuum1AlarmMessage(int boolIndex)
//{
// switch (boolIndex)
// {
// // ===== D80 =====
// case 16 * 0 + 0: return new AlarmMessageEntity { ErrorIndex = 16 * 0 + 0, ENAlarmMessage = "1# Pump A Backward Limit Reached!", AlarmDegarde = AlarmDegardeEnum.Fault };
// case 16 * 0 + 1: return new AlarmMessageEntity { ErrorIndex = 16 * 0 + 1, ENAlarmMessage = "1# Pump A Forward Limit Reached!", AlarmDegarde = AlarmDegardeEnum.Fault };
// case 16 * 0 + 2: return new AlarmMessageEntity { ErrorIndex = 16 * 0 + 2, ENAlarmMessage = "1# Pump B Backward Limit Reached!", AlarmDegarde = AlarmDegardeEnum.Fault };
// case 16 * 0 + 3: return new AlarmMessageEntity { ErrorIndex = 16 * 0 + 3, ENAlarmMessage = "1# Pump B Forward Limit Reached!", AlarmDegarde = AlarmDegardeEnum.Fault };
// case 16 * 0 + 4: return new AlarmMessageEntity { ErrorIndex = 16 * 0 + 4, ENAlarmMessage = "1# Servo A Error!", AlarmDegarde = AlarmDegardeEnum.Fault };
// case 16 * 0 + 5: return new AlarmMessageEntity { ErrorIndex = 16 * 0 + 5, ENAlarmMessage = "1# Servo B Error!", AlarmDegarde = AlarmDegardeEnum.Fault };
// case 16 * 0 + 6: return new AlarmMessageEntity { ErrorIndex = 16 * 0 + 6, ENAlarmMessage = "Mixed Servo Error!", AlarmDegarde = AlarmDegardeEnum.Fault };
// case 16 * 0 + 7: return new AlarmMessageEntity { ErrorIndex = 16 * 0 + 7, ENAlarmMessage = "Mixed Motor Rotating Error!", AlarmDegarde = AlarmDegardeEnum.Fault };
// case 16 * 0 + 12: return new AlarmMessageEntity { ErrorIndex = 16 * 0 + 12, ENAlarmMessage = "A1 Heating Error", AlarmDegarde = AlarmDegardeEnum.Error };
// case 16 * 0 + 13: return new AlarmMessageEntity { ErrorIndex = 16 * 0 + 13, ENAlarmMessage = "B1 Heating Error", AlarmDegarde = AlarmDegardeEnum.Error };
// case 16 * 0 + 14: return new AlarmMessageEntity { ErrorIndex = 16 * 0 + 14, ENAlarmMessage = "A2 Heating Error", AlarmDegarde = AlarmDegardeEnum.Error };
// case 16 * 0 + 15: return new AlarmMessageEntity { ErrorIndex = 16 * 0 + 15, ENAlarmMessage = "B2 Heating Error", AlarmDegarde = AlarmDegardeEnum.Error };
// // ===== D81 =====
// case 16 * 1 + 0: return new AlarmMessageEntity { ErrorIndex = 16 * 1 + 0, ENAlarmMessage = "A Potting Valve Open Error", AlarmDegarde = AlarmDegardeEnum.Fault };
// case 16 * 1 + 1: return new AlarmMessageEntity { ErrorIndex = 16 * 1 + 1, ENAlarmMessage = "B Potting Valve Open Error", AlarmDegarde = AlarmDegardeEnum.Fault };
// // ===== D82 =====
// case 16 * 2 + 0: return new AlarmMessageEntity { ErrorIndex = 16 * 2 + 0, ENAlarmMessage = "1# Tank A Globe Valve Error!", AlarmDegarde = AlarmDegardeEnum.Fault };
// case 16 * 2 + 1: return new AlarmMessageEntity { ErrorIndex = 16 * 2 + 1, ENAlarmMessage = "1# Tank B Globe Valve Error!", AlarmDegarde = AlarmDegardeEnum.Fault };
// case 16 * 2 + 2: return new AlarmMessageEntity { ErrorIndex = 16 * 2 + 2, ENAlarmMessage = "1# Vacuum Chamber Inlet Door Open Error", AlarmDegarde = AlarmDegardeEnum.Error };
// case 16 * 2 + 3: return new AlarmMessageEntity { ErrorIndex = 16 * 2 + 3, ENAlarmMessage = "1# Vacuum Chamber Inlet Door Close Error", AlarmDegarde = AlarmDegardeEnum.Error };
// case 16 * 2 + 4: return new AlarmMessageEntity { ErrorIndex = 16 * 2 + 4, ENAlarmMessage = "1# Vacuum Chamber Outlet Door Open Error", AlarmDegarde = AlarmDegardeEnum.Error };
// case 16 * 2 + 5: return new AlarmMessageEntity { ErrorIndex = 16 * 2 + 5, ENAlarmMessage = "1# Vacuum Chamber Outlet Door Close Error", AlarmDegarde = AlarmDegardeEnum.Error };
// case 16 * 2 + 8: return new AlarmMessageEntity { ErrorIndex = 16 * 2 + 8, ENAlarmMessage = "Axis X Servo Error", AlarmDegarde = AlarmDegardeEnum.Fault };
// case 16 * 2 + 9: return new AlarmMessageEntity { ErrorIndex = 16 * 2 + 9, ENAlarmMessage = "Axis Y Servo Error", AlarmDegarde = AlarmDegardeEnum.Fault };
// case 16 * 2 + 10: return new AlarmMessageEntity { ErrorIndex = 16 * 2 + 10, ENAlarmMessage = "Axis Z Servo Error", AlarmDegarde = AlarmDegardeEnum.Fault };
// case 16 * 2 + 11: return new AlarmMessageEntity { ErrorIndex = 16 * 2 + 11, ENAlarmMessage = "Vacuum Tank Vacuum Pump Error", AlarmDegarde = AlarmDegardeEnum.Error };
// case 16 * 2 + 12: return new AlarmMessageEntity { ErrorIndex = 16 * 2 + 12, ENAlarmMessage = "Vacuum Chamber Lifter Error", AlarmDegarde = AlarmDegardeEnum.Error };
// case 16 * 2 + 13: return new AlarmMessageEntity { ErrorIndex = 16 * 2 + 13, ENAlarmMessage = "Vacuum Chamber Vacuum Valve Error", AlarmDegarde = AlarmDegardeEnum.Error };
// case 16 * 2 + 14: return new AlarmMessageEntity { ErrorIndex = 16 * 2 + 14, ENAlarmMessage = "Vacuum Vent Valve Close Error", AlarmDegarde = AlarmDegardeEnum.Error };
// // ===== D83 =====
// case 16 * 3 + 0: return new AlarmMessageEntity { ErrorIndex = 16 * 3 + 0, ENAlarmMessage = "Air Pressure Alarm", AlarmDegarde = AlarmDegardeEnum.Error };
// case 16 * 3 + 2: return new AlarmMessageEntity { ErrorIndex = 16 * 3 + 2, ENAlarmMessage = "Glue Tank Vacuum Pump Error!", AlarmDegarde = AlarmDegardeEnum.Error };
// // ===== D84 =====
// case 16 * 4 + 0: return new AlarmMessageEntity { ErrorIndex = 16 * 4 + 0, ENAlarmMessage = "Pump A Pressure Over Upper Limit", AlarmDegarde = AlarmDegardeEnum.Fault };
// case 16 * 4 + 1: return new AlarmMessageEntity { ErrorIndex = 16 * 4 + 1, ENAlarmMessage = "Pump A Pressure Below Lower Limit", AlarmDegarde = AlarmDegardeEnum.Fault };
// case 16 * 4 + 2: return new AlarmMessageEntity { ErrorIndex = 16 * 4 + 2, ENAlarmMessage = "Pump B Pressure Over Upper Limit", AlarmDegarde = AlarmDegardeEnum.Fault };
// case 16 * 4 + 3: return new AlarmMessageEntity { ErrorIndex = 16 * 4 + 3, ENAlarmMessage = "Pump B Pressure Below Lower Limit", AlarmDegarde = AlarmDegardeEnum.Fault };
// // ===== D90 =====
// case 16 * 10 + 0: return new AlarmMessageEntity { ErrorIndex = 16 * 10 + 0, ENAlarmMessage = "1# Tank A Upper Limit!", AlarmDegarde = AlarmDegardeEnum.Warning };
// case 16 * 10 + 1: return new AlarmMessageEntity { ErrorIndex = 16 * 10 + 1, ENAlarmMessage = "1# Tank A Lower Limit!", AlarmDegarde = AlarmDegardeEnum.Warning };
// case 16 * 10 + 2: return new AlarmMessageEntity { ErrorIndex = 16 * 10 + 2, ENAlarmMessage = "1# Tank B Upper Limit!", AlarmDegarde = AlarmDegardeEnum.Warning };
// case 16 * 10 + 3: return new AlarmMessageEntity { ErrorIndex = 16 * 10 + 3, ENAlarmMessage = "1# Tank B Lower Limit!", AlarmDegarde = AlarmDegardeEnum.Warning };
// case 16 * 10 + 4: return new AlarmMessageEntity { ErrorIndex = 16 * 10 + 4, ENAlarmMessage = "2# Tank A Upper Limit!", AlarmDegarde = AlarmDegardeEnum.Warning };
// case 16 * 10 + 5: return new AlarmMessageEntity { ErrorIndex = 16 * 10 + 5, ENAlarmMessage = "2# Tank A Lower Limit!", AlarmDegarde = AlarmDegardeEnum.Warning };
// case 16 * 10 + 6: return new AlarmMessageEntity { ErrorIndex = 16 * 10 + 6, ENAlarmMessage = "2# Tank B Upper Limit!", AlarmDegarde = AlarmDegardeEnum.Warning };
// case 16 * 10 + 7: return new AlarmMessageEntity { ErrorIndex = 16 * 10 + 7, ENAlarmMessage = "2# Tank B Lower Limit!", AlarmDegarde = AlarmDegardeEnum.Warning };
// case 16 * 10 + 8: return new AlarmMessageEntity { ErrorIndex = 16 * 10 + 8, ENAlarmMessage = "1# Antisolid Time Up!", AlarmDegarde = AlarmDegardeEnum.Warning };
// case 16 * 10 + 9: return new AlarmMessageEntity { ErrorIndex = 16 * 10 + 9, ENAlarmMessage = "Globe Valve Not Opened!", AlarmDegarde = AlarmDegardeEnum.Error };
// default:
// return null;
// }
//}
///// <summary>
///// 加热线警报
///// </summary>
///// <param name="boolIndex"></param>
///// <returns></returns>
//public static AlarmMessageEntity? GetHeatingLineAlarm(int boolIndex)
//{
// switch (boolIndex)
// {
// // ===== D100 =====
// case 16 * 0 + 0: return new AlarmMessageEntity { ErrorIndex = 16 * 0 + 0, ENAlarmMessage = "Line E.Stop ON!", AlarmDegarde = AlarmDegardeEnum.Error };
// case 16 * 0 + 1: return new AlarmMessageEntity { ErrorIndex = 16 * 0 + 1, ENAlarmMessage = "Preheating Zone Heating Error!", AlarmDegarde = AlarmDegardeEnum.Error };
// case 16 * 0 + 2: return new AlarmMessageEntity { ErrorIndex = 16 * 0 + 2, ENAlarmMessage = "Precuring Zone I Heating Error!", AlarmDegarde = AlarmDegardeEnum.Error };
// case 16 * 0 + 3: return new AlarmMessageEntity { ErrorIndex = 16 * 0 + 3, ENAlarmMessage = "Precuring Zone II Heating Error!", AlarmDegarde = AlarmDegardeEnum.Error };
// case 16 * 0 + 4: return new AlarmMessageEntity { ErrorIndex = 16 * 0 + 4, ENAlarmMessage = "Precuring Zone III Heating Error!", AlarmDegarde = AlarmDegardeEnum.Error };
// case 16 * 0 + 5: return new AlarmMessageEntity { ErrorIndex = 16 * 0 + 5, ENAlarmMessage = "Precuring Zone IV Heating Error!", AlarmDegarde = AlarmDegardeEnum.Error };
// case 16 * 0 + 6: return new AlarmMessageEntity { ErrorIndex = 16 * 0 + 6, ENAlarmMessage = "Curing Zone I Heating Error!", AlarmDegarde = AlarmDegardeEnum.Error };
// case 16 * 0 + 7: return new AlarmMessageEntity { ErrorIndex = 16 * 0 + 7, ENAlarmMessage = "Curing Zone II Heating Error!", AlarmDegarde = AlarmDegardeEnum.Error };
// case 16 * 0 + 8: return new AlarmMessageEntity { ErrorIndex = 16 * 0 + 8, ENAlarmMessage = "Curing Zone III Heating Error!", AlarmDegarde = AlarmDegardeEnum.Error };
// case 16 * 0 + 9: return new AlarmMessageEntity { ErrorIndex = 16 * 0 + 9, ENAlarmMessage = "Curing Zone IV Heating Error!", AlarmDegarde = AlarmDegardeEnum.Error };
// default:
// return null;
// }
//}
///// <summary>
///// 提升机警报
///// </summary>
///// <param name="boolIndex"></param>
///// <returns></returns>
//public static AlarmMessageEntity? GetLifterAlarm(int boolIndex)
//{
// switch (boolIndex)
// {
// // ===== D100 =====
// case 16 * 0 + 0: return new AlarmMessageEntity { ErrorIndex = 16 * 0 + 0, ENAlarmMessage = "Loading Lifter Down Error", AlarmDegarde = AlarmDegardeEnum.Fault };
// case 16 * 0 + 1: return new AlarmMessageEntity { ErrorIndex = 16 * 0 + 1, ENAlarmMessage = "Loading Lifter Up Error", AlarmDegarde = AlarmDegardeEnum.Fault };
// case 16 * 0 + 2: return new AlarmMessageEntity { ErrorIndex = 16 * 0 + 2, ENAlarmMessage = "Loading Lifter E.Stop Pressed", AlarmDegarde = AlarmDegardeEnum.Error };
// case 16 * 0 + 3: return new AlarmMessageEntity { ErrorIndex = 16 * 0 + 3, ENAlarmMessage = "Unloading Lifter Down Error", AlarmDegarde = AlarmDegardeEnum.Fault };
// case 16 * 0 + 4: return new AlarmMessageEntity { ErrorIndex = 16 * 0 + 4, ENAlarmMessage = "Unloading Lifter Up Error", AlarmDegarde = AlarmDegardeEnum.Fault };
// case 16 * 0 + 5: return new AlarmMessageEntity { ErrorIndex = 16 * 0 + 5, ENAlarmMessage = "Unloading Lifter E.Stop Pressed", AlarmDegarde = AlarmDegardeEnum.Error };
// default:
// return null;
// }
//}
///// <summary>
///// 真空箱1报警分析
///// </summary>
//public void VacuumAlarm1Analyse(bool[] bools)
//{
// List<Vacuum1Error>? errorList = errorService.GetV1List();
// foreach (var errorMessage in VacuumAlarms_Old)
// {
// if (bools[errorMessage.ErrorIndex])
// {
// if (errorList.Where(x => x.ErrorName == errorMessage.ENAlarmMessage).Count() == 0)
// {
// Guid.TryParse(trayBindingService.TidGet(), out Guid transID);
// Guid logGuid = Guid.NewGuid();
// errorService.InsertVacuum1Error(logGuid.ToString(), errorMessage.ENAlarmMessage, errorMessage.CNAlarmMessage, errorMessage.ErrorCode);
// connect1.PublishEvent(new CFXEnvelope(faultOccurredEvent.Handle(errorMessage.ErrorCode, LevelTrans(errorMessage.AlarmDegarde), logGuid, errorMessage.ENAlarmMessage + "-Vacuum1", transID)));
// if (_appConfig.IsAlarmLog)
// _log.Info($"真空箱1报警发生 内容:{errorMessage.CNAlarmMessage} 级别:{errorMessage.AlarmDegarde.GetDescription()}");
// }
// }
// else
// {
// if (errorList.Where(x => x.ErrorName == errorMessage.ENAlarmMessage).Count() != 0)
// {
// string delGuid = errorService.DeleteVacuum1Error(errorMessage.ENAlarmMessage);
// Guid.TryParse(delGuid, out Guid guidRes);
// connect1.PublishEvent(new CFXEnvelope(faultClearedEvent.Handle(guidRes)));
// if (_appConfig.IsAlarmLog)
// _log.Info($"真空箱1报警消除 内容:{errorMessage.CNAlarmMessage} 级别:{errorMessage.AlarmDegarde.GetDescription()}");
// }
// }
// }
//}
///// <summary>
///// 真空箱2报警分析
///// </summary>
//public void VacuumAlarm2Analyse(bool[] bools)
//{
// List<Vacuum2Error>? errorList = errorService.GetV2List();
// foreach (var errorMessage in VacuumAlarms_Old)
// {
// if (bools[errorMessage.ErrorIndex])
// {
// if (errorList.Where(x => x.ErrorName == errorMessage.ENAlarmMessage).Count() == 0)
// {
// Guid.TryParse(trayBindingService.TidGet(), out Guid transID);
// Guid logGuid = Guid.NewGuid();
// errorService.InsertVacuum2Error(logGuid.ToString(), errorMessage.ENAlarmMessage, errorMessage.CNAlarmMessage, errorMessage.ErrorCode);
// connect1.PublishEvent(new CFXEnvelope(faultOccurredEvent.Handle(errorMessage.ErrorCode, LevelTrans(errorMessage.AlarmDegarde), logGuid, errorMessage.ENAlarmMessage + "-Vacuum2", transID)));
// if (_appConfig.IsAlarmLog)
// _log.Info($"真空箱2报警发生 内容:{errorMessage.CNAlarmMessage} 级别:{errorMessage.AlarmDegarde.GetDescription()}");
// }
// }
// else
// {
// if (errorList.Where(x => x.ErrorName == errorMessage.ENAlarmMessage).Count() != 0)
// {
// string delGuid = errorService.DeleteVacuum2Error(errorMessage.ENAlarmMessage);
// Guid.TryParse(delGuid, out Guid guidRes);
// connect1.PublishEvent(new CFXEnvelope(faultClearedEvent.Handle(guidRes)));
// if (_appConfig.IsAlarmLog)
// _log.Info($"真空箱2报警消除 内容:{errorMessage.CNAlarmMessage} 级别:{errorMessage.AlarmDegarde.GetDescription()}");
// }
// }
// }
//}
///// <summary>
///// 提升机报警分析
///// </summary>
///// <param name="bools"></param>
//public void LiftAlarmAnalyse(bool[] bools)
//{
// //现存的错误数据
// List<LiftError>? errorList = errorService.GetLiftList();
// foreach (var errorMessage in LiftAlarms)
// {
// if (bools[errorMessage.ErrorIndex])
// {
// //如果原来没有 现在有 添加错误
// if (errorList.Where(x => x.ErrorName == errorMessage.ENAlarmMessage).Count() == 0)
// {
// Guid.TryParse(trayBindingService.TidGet(), out Guid transID);
// Guid logGuid = Guid.NewGuid();
// errorService.InsertLiftError(logGuid.ToString(), errorMessage.ENAlarmMessage, errorMessage.CNAlarmMessage, errorMessage.ErrorCode);
// CFXOven.PublishEvent(new CFXEnvelope(faultOccurredEvent.Handle(errorMessage.ErrorCode, LevelTrans(errorMessage.AlarmDegarde), logGuid, errorMessage.ENAlarmMessage, transID)));
// if (_appConfig.IsAlarmLog)
// _log.Info($"提升机报警发生 内容:{errorMessage.CNAlarmMessage} 级别:{errorMessage.AlarmDegarde.GetDescription()}");
// }
// }
// else
// {
// //如果原来有 现在没有 则删除
// if (errorList.Where(x => x.ErrorName == errorMessage.ENAlarmMessage).Count() != 0)
// {
// //删除错误
// string delGuid = errorService.DeleteliftError(errorMessage.ENAlarmMessage);
// Guid.TryParse(delGuid, out Guid guidRes);
// CFXOven.PublishEvent(new CFXEnvelope(faultClearedEvent.Handle(guidRes)));
// if (_appConfig.IsAlarmLog)
// _log.Info($"提升机报警消除 内容:{errorMessage.CNAlarmMessage} 级别:{errorMessage.AlarmDegarde.GetDescription()}");
// }
// }
// }
//}
///// <summary>
///// 报警点位刷新(旧)
///// </summary>
//public void TimerCallback_Old(object? state)
//{
// try
// {
// byte[] errorBytes1 = new byte[1];
// //隧道烤箱报警
// var result20 = _plc.ReadBytes(_plc.DeltaInstance0, "D100", 1);
// //真空箱1报警
// var result21 = _plc.ReadBytes(_plc.DeltaInstance1, "D80", 11);
// //真空箱2报警
// var result22 = _plc.ReadBytes(_plc.DeltaInstance2, "D80", 11);
// //提升机报警
// var result23 = _plc.ReadBytes(_plc.DeltaInstance3, "D100", 1);
// if (result20.IsSuccess && result20.Content != null)
// {
// BitArray bits20 = new BitArray(ToolBusiness.SwapAdjacentBytes(result20.Content));
// bool[] bools20 = new bool[bits20.Count];
// bits20.CopyTo(bools20, 0);
// OvenAlarmAnalyse(bools20);
// }
// if (result21.IsSuccess && result21.Content != null)
// {
// BitArray bits21 = new BitArray(ToolBusiness.SwapAdjacentBytes(result21.Content));
// bool[] bools21 = new bool[bits21.Count];
// bits21.CopyTo(bools21, 0);
// VacuumAlarm1Analyse(bools21);
// }
// if (result22.IsSuccess && result22.Content != null)
// {
// BitArray bits22 = new BitArray(ToolBusiness.SwapAdjacentBytes(result22.Content));
// bool[] bools22 = new bool[bits22.Count];
// bits22.CopyTo(bools22, 0);
// VacuumAlarm2Analyse(bools22);
// }
// if (result23.IsSuccess && result23.Content != null)
// {
// BitArray bits23 = new BitArray(ToolBusiness.SwapAdjacentBytes(result23.Content));
// bool[] bools23 = new bool[bits23.Count];
// bits23.CopyTo(bools23, 0);
// LiftAlarmAnalyse(bools23);
// }
// }
// catch (Exception ex)
// {
// _log.Error("报警信息处理发生错误", ex);
// }
//}
}
}