using DMS.Core.Enums; using System.Collections.Generic; using System.ComponentModel.DataAnnotations.Schema; namespace DMS.Core.Models; /// /// 核心数据点,代表从设备读取的单个值。 /// public class Variable { /// /// 唯一标识符。 /// public int Id { get; set; } /// /// 变量名。 /// public string Name { get; set; } /// /// 变量的描述信息。 /// public string Description { get; set; } /// /// 在设备中的地址 (例如: DB1.DBD0, M100.0)。 /// public string S7Address { get; set; } /// /// 变量的信号类型,例如启动信号、停止信号。 /// public SignalType SignalType { get; set; } /// /// 变量的轮询级别,决定了其读取频率。 /// public PollLevelType PollLevel { get; set; } /// /// 指示此变量是否处于激活状态。 /// public bool IsActive { get; set; } /// /// 所属变量表的ID。 /// public int VariableTableId { get; set; } /// /// 所属变量表的导航属性。 /// public VariableTable VariableTable { get; set; } /// /// 此变量的所有MQTT发布别名关联。一个变量可以关联多个MQTT服务器,每个关联可以有独立的别名。 /// public List MqttAliases { get; set; } = new(); /// /// OPC UA NodeId (仅当 Protocol 为 OpcUa 时有效)。 /// public string OpcUaNodeId { get; set; } /// /// 是否启用历史数据保存。 /// public bool IsHistoryEnabled { get; set; } /// /// 历史数据保存的死区值。当变量值变化超过此死区时才保存。 /// public double HistoryDeadband { get; set; } /// /// 是否启用报警。 /// public bool IsAlarmEnabled { get; set; } /// /// 报警最小值。 /// public double AlarmMinValue { get; set; } /// /// 报警最大值。 /// public double AlarmMaxValue { get; set; } /// /// 报警死区。当变量值变化超过此死区时才触发报警。 /// public double AlarmDeadband { get; set; } /// /// 存储从设备读取到的最新值。此属性不应持久化到数据库,仅用于运行时。 /// public string DataValue { get; set; } /// /// 变量的通讯协议。 /// public ProtocolType Protocol { get; set; } /// /// 变量的数据类型。 /// public CSharpDataType CSharpDataType { get; set; } /// /// 数值转换公式,例如 "+3*5"。 /// public string ConversionFormula { get; set; } /// /// 经过转换公式计算后的显示值。此属性不应持久化到数据库,仅用于运行时。 /// public string DisplayValue { get; set; } /// /// 变量的创建时间。 /// public DateTime CreatedAt { get; set; } /// /// 变量的最后更新时间。 /// public DateTime UpdatedAt { get; set; } /// /// 最后更新变量的用户。 /// public string UpdatedBy { get; set; } /// /// 指示变量是否被修改。 /// public bool IsModified { get; set; } public OpcUaUpdateType OpcUaUpdateType { get; set; } }