添加项目文件。
This commit is contained in:
119
OrpaonEMS.App/Models/AlarmCell.cs
Normal file
119
OrpaonEMS.App/Models/AlarmCell.cs
Normal file
@@ -0,0 +1,119 @@
|
||||
using OrpaonEMS.Core.ChannelModel;
|
||||
using OrpaonEMS.Core.EventHandMsg;
|
||||
using OrpaonEMS.Core.Model;
|
||||
using System;
|
||||
using System.Threading.Channels;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace OrpaonEMS.App.Models
|
||||
{
|
||||
/// <summary>
|
||||
/// 报警单元
|
||||
/// </summary>
|
||||
public class AlarmCell
|
||||
{
|
||||
public AlarmCell(Channel<AlarmChannelData> channel, string content, string address, int level, ushort bitindex)
|
||||
{
|
||||
CurTimeInfo = new AlarmTimeInfo();
|
||||
|
||||
Content = content;
|
||||
Address = address;
|
||||
Level = level;
|
||||
BitIndex = bitindex;
|
||||
AlarmChannel = channel;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 报警通道数据
|
||||
/// </summary>
|
||||
public Channel<AlarmChannelData> AlarmChannel { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 发布报警信息
|
||||
/// </summary>
|
||||
public event EventHandler<BmsAlarmCellEventHandMsg> PubBmsAlarmEventHandler;
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 报警状态
|
||||
/// </summary>
|
||||
public bool State { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 更新值 返回当前的报警状态 这个状态用于返回给PLC 用于屏蔽后面的报警数据
|
||||
/// </summary>
|
||||
/// <param name="value"></param>
|
||||
public void UpdateValue(bool value)
|
||||
{
|
||||
if (State == false && value == true)//初次触发报警为On时机
|
||||
{
|
||||
CurTimeInfo.StartTime = DateTime.Now;
|
||||
State = true;//报警开始
|
||||
// 需要异步执行吗???
|
||||
PubBmsAlarmEventHandler(this, new BmsAlarmCellEventHandMsg()
|
||||
{
|
||||
AlarmLevel = Level,
|
||||
AlarmContent = Content,
|
||||
AlarmTime = DateTime.Now,
|
||||
AlarmState = true
|
||||
});
|
||||
//return false;
|
||||
}
|
||||
else if (State == true && value == false)//报警结束 报警为OFF时机
|
||||
{
|
||||
CurTimeInfo.EndTime = DateTime.Now;
|
||||
State = false;
|
||||
|
||||
PubBmsAlarmEventHandler(this, new BmsAlarmCellEventHandMsg()
|
||||
{
|
||||
AlarmLevel = Level,
|
||||
AlarmContent = Content,
|
||||
AlarmTime = CurTimeInfo.StartTime,
|
||||
AlarmState = false
|
||||
});
|
||||
|
||||
//报警结束,可以采集数据
|
||||
AlarmChannel.Writer.WriteAsync(new AlarmChannelData()
|
||||
{
|
||||
MsgTime = DateTime.Now,
|
||||
alarmChannel = new AlarmChannel()
|
||||
{
|
||||
Content = Content,
|
||||
StartTime = CurTimeInfo.StartTime,
|
||||
EndTime = CurTimeInfo.EndTime,
|
||||
AlarmDur = (decimal)CurTimeInfo.AlarmDur,
|
||||
Level = Level,
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 报警时间信息
|
||||
/// </summary>
|
||||
public AlarmTimeInfo CurTimeInfo { get; set; }
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 报警内容
|
||||
/// </summary>
|
||||
public string Content { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 地址
|
||||
/// </summary>
|
||||
public string Address { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 报警等级
|
||||
/// </summary>
|
||||
public int Level { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 索引位置 队列位位置
|
||||
/// </summary>
|
||||
public ushort BitIndex { get; set; }
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user