You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
139 lines
5.3 KiB
139 lines
5.3 KiB
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using Module.DB.Model;
|
|
using Module.Common;
|
|
using Module.DB.SQLServerDAL;
|
|
using StackExchange.Redis;
|
|
using Module.Hsms.Model;
|
|
|
|
namespace Module.Plc.Profinet.Tool
|
|
{
|
|
|
|
/// <summary>
|
|
/// 通道1公共报警信息采集应用类
|
|
/// </summary>
|
|
public class PlcPublicT1AlarmUtils
|
|
{
|
|
/// <summary>
|
|
/// 通道1报警事件
|
|
/// </summary>
|
|
public static event EventHandler<RecvedAlarmEventArgs> AlarmChanged;
|
|
/// <summary>
|
|
/// 设置连接状态字符串
|
|
/// </summary>
|
|
/// <param name="status">连接状态字符串。比如:“连接成功”</param>
|
|
private static void SetConnectStatusEvent(HsmsEapAlarmRpt eapAlmRpt)
|
|
{
|
|
EventHandler<RecvedAlarmEventArgs> AlarmHandler;
|
|
AlarmHandler = AlarmChanged;
|
|
if (AlarmHandler != null)
|
|
{
|
|
AlarmHandler.Invoke(null, new RecvedAlarmEventArgs() { EapAlarmRpt = eapAlmRpt });
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 通道1报警值改变事件
|
|
/// </summary>
|
|
public static event EventHandler<EqmAlarmEventArgs> AlarmValChanged;
|
|
/// <summary>
|
|
/// 通道1报警值改变事件方法
|
|
/// </summary>
|
|
/// <param name="valMsg">报警状态值改变消息</param>
|
|
private static void SetEqmAlarmValChangedEvent(MAlarmValMsg valMsg)
|
|
{
|
|
EventHandler<EqmAlarmEventArgs> AlarmHandler;
|
|
AlarmHandler = AlarmValChanged;
|
|
if (AlarmHandler != null)
|
|
{
|
|
AlarmHandler.Invoke(null, new EqmAlarmEventArgs() { AlarmValMsg = valMsg });
|
|
}
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
/// 读取通道1报警数据
|
|
/// </summary>
|
|
public static void ReadT1AlarmData()
|
|
{
|
|
try
|
|
{
|
|
var service = new AlarmInfo();
|
|
|
|
for (var i = 0; i < PublicParams.t1AlarmList.Length; i++)
|
|
{
|
|
var item = PublicParams.t1AlarmList[i];
|
|
var readerTemp = PlcCommon.DeltaTcpNetClient01.ReadBool(item.address, 10);
|
|
if (readerTemp.IsSuccess)
|
|
{
|
|
// 获取当前状态
|
|
var state = readerTemp.Content[0];
|
|
|
|
if (state != item.currentErrorState)
|
|
{
|
|
item.currentErrorState = state;
|
|
|
|
// 由正常变成异常状态,则添加日志
|
|
if (state)
|
|
{
|
|
service.AddAlarmInfo(
|
|
new AlarmRecord()
|
|
{
|
|
f_type = i + 1,
|
|
f_content = item.title,
|
|
// todo 需要根据具体轨道修改
|
|
f_track = 1,
|
|
f_create_time = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"),
|
|
});
|
|
if (PublicParams.Track01Alarm.ContainsKey(i + 1))
|
|
{
|
|
PublicParams.Track01Alarm[i + 1] = item.title;
|
|
}
|
|
else
|
|
{
|
|
PublicParams.Track01Alarm.Add(i + 1, item.title);
|
|
}
|
|
//将报警状态值发送给TCP中的事件
|
|
MAlarmValMsg valMsg=new MAlarmValMsg() { F_AlarmName="T1"+item.address.Replace(".","_"),F_AlarmValue=state};
|
|
SetEqmAlarmValChangedEvent(valMsg);
|
|
|
|
//将状态报警发送给EAP
|
|
string plcAddr = item.address;
|
|
if(EapPubParams._HSMS_EAP_T1ALARM_RPT!=null)
|
|
{
|
|
if(EapPubParams._HSMS_EAP_T1ALARM_RPT.ContainsKey(plcAddr))
|
|
{
|
|
HsmsEapAlarmRpt alarmResult = EapPubParams._HSMS_EAP_T1ALARM_RPT[plcAddr];
|
|
SetConnectStatusEvent(alarmResult);
|
|
}
|
|
}
|
|
|
|
}
|
|
else
|
|
{
|
|
// 由异常变为正常状态,则更新日志解除报警时间
|
|
service.UpdateAlarmInfo(i + 1, 1);
|
|
PublicParams.Track01Alarm.Remove(i + 1);
|
|
|
|
//将报警状态值发送给TCP中的事件
|
|
MAlarmValMsg valMsg = new MAlarmValMsg() { F_AlarmName = "T1" + item.address.Replace(".", "_"), F_AlarmValue = state };
|
|
SetEqmAlarmValChangedEvent(valMsg);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
ex.ToString();
|
|
}
|
|
}
|
|
|
|
|
|
|
|
}
|
|
}
|