using System;
using System.ComponentModel.DataAnnotations;

namespace MWS.Model
{
    [Serializable]
    public partial class T_DeviceTag
    {
        /// <summary>
        /// 变量Id
        /// </summary>
        [Key]
        public int Id { get; set; }

        /// <summary>
        /// 设备Id
        /// </summary>
        public short DeviceId { get; set; }

        /// <summary>
        /// 设备采集装置Id
        /// </summary>
        public int ComponentId { get; set; }

        /// <summary>
        /// 变量编码
        /// </summary>
        public string Code { get; set; }

        /// <summary>
        /// 变量名称
        /// </summary>
        public string Name { get; set; }

        /// <summary>
        /// 变量地址
        /// </summary>
        public string Address { get; set; }

        /// <summary>
        /// 报警条件 EQUAL/NOTEQUAL/GREATER/GREATERTHAN/LESS/LESSTHAN
        /// </summary>
        public string AlertConditions { get; set; }

        /// <summary>
        /// 报警消息 报警消息内容
        /// </summary>
        public string AlertMessage { get; set; }

        /// <summary>
        /// 报警值 报警阈值 配合报警条件来判断是否达到报警条件
        /// </summary>
        public string AlertValue { get; set; }

        /// <summary>
        /// 数据类型 1 bool 2 ushort 3 short 4 uint 5 int 6 float 7 string
        /// </summary>
        public short DataType { get; set; } = 1;

        /// <summary>
        /// PLC数据类型  PLC数据类型 1 BOOL 布尔 2 BYTE 字节 3 WORD 字(无符号整数) 4 INT 整数(带符号的整数) 5 DWORD 双字(无符号双整数) 6 DINT 双整数(带符号的双整数) 7 REAL 实数(32位浮点数)
        /// </summary>
        public short SourceDataType { get; set; } = 1;

        /// <summary>
        /// 是否需要标定
        /// </summary>
        public bool IsCalibration { get; set; } = false;

        /// <summary>
        /// 是否报警
        /// </summary>
        public bool IsAlert { get; set; } = false;

        /// <summary>
        /// 是否取反向值 变量为开关量时是否取反显示,true为常开，false为常闭
        /// </summary>
        public bool IsReverse { get; set; } = false;

        /// <summary>
        /// 所属机构 1 大车 2 小车 3 起升  4 配电
        /// </summary>
        public short MecType { get; set; }

        /// <summary>
        /// 开关量类型 1 指示 True 绿灯 False 灰灯 2 警告 True 黄灯 False 绿灯 3 报警 True 红灯 False 绿灯
        /// </summary>
        public short SwitchType { get; set; } = 1;

        /// <summary>
        /// 单位 单位 id 0 正常 1 档位 2 重量 3 行程高度 4 载荷  5 电流 6 电压 7 速度 8 振幅 9 温度 10 力矩  11 频率 12 虚拟档位
        /// </summary>
        public short Unit { get; set; }

        /// <summary>
        /// 折算率 折算率 如重量0.01 即 实际重量为重量乘以0.01
        /// </summary>
        public float Translate { get; set; } = 1;

        /// <summary>
        /// 变量类型  0 正常 1 档位 2 重量 3 行程高度 4 载荷  5 电流 6 电压 7 速度 8 振幅 9 温度 10 力矩  11 频率 12 虚拟档位
        /// </summary>
        public short TagType { get; set; } = 1;

        /// <summary>
        /// 是否关联总接触器
        /// </summary>
        public bool IsLinkedContactor { get; set; } = true;

        /// <summary>
        /// 变量机构内分组 1 挡位，2 电机，3 主控信息，4 限位，5 保护，6 制动器，7 其他，8 门限位，9 联动台，10 集中润滑，11 电压电流，12 风机
        /// </summary>
        public short Group { get; set; }

        /// <summary>
        /// Plc位置
        /// </summary>
        public int PlcNetworkLocation { get; set; }
        /// <summary>
        /// 排序 升序
        /// </summary>
        public short Sort { get; set; }

        /// <summary>
        /// 是否需要存储
        /// </summary>
        public bool IsSave { get; set; } = true;

        /// <summary>
        /// 创建时间
        /// </summary>
        public DateTime CreationTime { get; set; }
        /// <summary>
        /// 值
        /// </summary>
        public string Value { get; set; }
    }
}