using Bro.Common.Helper; using Bro.Common.Interface; using Newtonsoft.Json; using System; using System.ComponentModel; using static Bro.Common.Helper.EnumHelper; namespace Bro.Common.Model { /// /// PLC警报配置 /// public class PLCWarningSet : IComplexDisplay, IWarningSet { [Category("索引设置")] [Description("PLC警报索引——字索引")] [DisplayName("警报字索引")] public int WarningIndex_Word { get; set; } [Category("索引设置")] [Description("PLC警报索引——位索引")] [DisplayName("警报位索引")] public int WarningIndex_Bit { get; set; } [Category("触发设置")] [Description("true:高电平触发报警 false:低电平触发报警")] [DisplayName("警报值")] public bool TriggerValue { get; set; } = true; [Category("警报内容")] [Description("警报代码")] [DisplayName("警报代码")] public string WarningCode { get; set; } [Category("警报内容")] [Description("警报描述")] [DisplayName("警报描述")] public string WarningDescription { get; set; } [Category("级别设置")] [Description("警报级别")] [DisplayName("警报级别")] public int WarningLvl { get; set; } = 0; /// /// 表示报警状态,是报警地址值和警报触发值比较后的结果 /// true 正在报警 false 取消报警 /// [Browsable(false)] [JsonIgnore] public bool CurrentStatus { get; set; } = false; [Browsable(false)] [JsonIgnore] public string Source { get; set; } = ""; [Browsable(false)] [JsonIgnore] public DateTime TriggerTime { get; set; } = DateTime.Now; [Browsable(false)] public string Id { get; set; } = Guid.NewGuid().ToString(); [Category("个性化设置")] [Description("警报")] [DisplayName("警报名称")] public string Name { get; set; } = ""; [Browsable(false)] public string DisplayText => GetDisplayText(); public string GetDisplayText() { return $"{Name}-{WarningIndex_Word}:{WarningIndex_Bit}-{WarningCode}-{WarningDescription}"; } } /// /// 运动板卡警报配置对象 /// public class MotionCardWarningSet : IComplexDisplay, IWarningSet { [Browsable(false)] public string Id { get; set; } = Guid.NewGuid().ToString(); [Category("个性化设置")] [Description("警报")] [DisplayName("警报名称")] public string Name { get; set; } = ""; [Category("触发设置")] [Description("当该触发索引的值与设置的TriggerValue相同时,警报触发")] [DisplayName("触发索引")] public int TriggerIndex { get; set; } /// /// 警报类型 /// [Category("警报设置")] [DisplayName("警报类型")] [Description("警报设置:运动板卡 IO 类型(IN OUT)")] public IOType WarningIOModel { get; set; } [Category("触发设置")] [Description("true:高电平触发报警 false:低电平触发报警")] [DisplayName("触发值")] public bool TriggerValue { get; set; } = true; [Category("警报内容")] [Description("警报代码")] [DisplayName("警报代码")] public string WarningCode { get; set; } [Category("警报内容")] [Description("警报描述")] [DisplayName("警报描述")] public string WarningDescription { get; set; } [Category("级别设置")] [Description("警报级别")] [DisplayName("警报级别")] public int WarningLvl { get; set; } = 0; /// /// 表示报警状态,是报警地址值和警报触发值比较后的结果 /// true 正在报警 false 取消报警 /// [Browsable(false)] [JsonIgnore] public bool CurrentStatus { get; set; } = false; [Browsable(false)] [JsonIgnore] public string Source { get; set; } = ""; [Browsable(false)] [JsonIgnore] public DateTime TriggerTime { get; set; } = DateTime.Now; [Browsable(false)] public string DisplayText => GetDisplayText(); public string GetDisplayText() { return $"{Name}-{WarningIOModel.GetEnumDescription()}:{WarningCode}-{WarningDescription}"; } } }