//using System;
//using System.Collections.Generic;
//using System.Linq;
//using System.Text;
//using System.Threading.Tasks;
//using HBLConsole.Interface;
//using System.Collections.Concurrent;
//using HBLConsole.Attributes;
//using HBLConsole.Model;

//namespace HBLConsole.GVL
//{
//    /// <summary>
//    /// MORKS 设备数据
//    /// </summary>
//    public class MORKS : IGvl
//    {
//        /// <summary>
//        /// 机器人取面
//        /// PLC -> M0.3
//        /// ModbusTcp -> 323
//        /// </summary>
//        public bool RobotTakeNoodle { get; set; }

//        /// <summary>
//        /// 机器人出餐
//        /// PLC -> M0.4
//        /// ModbusTcp -> 324
//        /// </summary>
//        public bool RobotOutMeal { get; set; }

//        /// <summary>
//        /// 移动转台
//        /// PLC -> M0.5
//        /// ModbusTcp -> 325
//        /// </summary>
//        public bool MoveTurntable { get; set; }


//        #region 临时变量
//        /// <summary>
//        /// 允许运行
//        /// </summary>
//        [Circuit(new string[] { "机器人取面", "取碗控制" }, "允许运行")]
//        public bool AllowRun { get; set; }

//        /// <summary>
//        /// //机器人任务互锁信号
//        /// </summary>
//        [Circuit(new string[] { "机器人取面", "出面控制" }, "机器人互锁", new bool[] { true, false })]
//        public bool RobotTaskInterlock { get; set; }

//        /// <summary>
//        /// 取碗互锁信号
//        /// </summary>
//        [Circuit("取碗控制", "取碗互锁", true)]
//        public bool TakeBowlInterlock { get; set; }

//        /// <summary>
//        /// 取面互锁信号
//        /// </summary>
//        [Circuit(new string[] { "机器人取面", "出面控制" }, "取面互锁信号", new bool[] { true, true })]
//        public bool TakeNoodleInterlock { get; set; }

//        /// <summary>
//        /// 出面中
//        /// </summary>
//        [Circuit("机器人取面", "出面中", true)]
//        public bool OutNoodleing { get; set; }

//        /// <summary>
//        /// 允许取面
//        /// </summary>
//        [Circuit(new string[] { "转台控制", "机器人取面" }, "允许取面", new bool[] { true, false })]
//        public bool AllowTakeNoodle { get; set; }

//        /// <summary>
//        /// 转台互锁信号
//        /// </summary>
//        public bool TurntableInterlock { get; set; }
//        #endregion


//        /// <summary>
//        /// 初始化完成
//        /// PLC -> M100.0
//        /// ModbusTcp -> 1120
//        /// </summary>
//        [Circuit(new string[] { "允许运行", "转台控制", "转台控制" }, "初始化完成")]
//        public bool InitComplete { get; set; }

//        /// <summary>
//        /// 取碗机构空闲，True:忙碌，false:空闲
//        /// PLC -> M100.1
//        /// ModbusTcp -> 1121
//        /// </summary>
//        [Circuit("取碗控制", "取碗机构空闲", true)]
//        public bool TakeBowlIdle { get; set; }

//        /// <summary>
//        /// 温度到达,True:表示到达，false：未到达
//        /// PLC -> M100.2
//        /// ModbusTcp -> 1122
//        /// </summary>
//        [Circuit("允许运行", "温度到达")]
//        public bool TemperatureReached { get; set; }

//        /// <summary>
//        /// 允许到面,配料完成
//        /// PLC -> M100.3
//        /// ModbusTcp -> 1123
//        /// </summary>
//        [Circuit("出面控制", "允许到面")]
//        public bool AllowFallNoodle { get; set; }

//        /// <summary>
//        /// 机器人取面完成
//        /// PLC -> M100.4
//        /// ModbusTcp -> 1124
//        /// </summary>
//        public bool RbTakeNoodleComplete { get; set; }

//        /// <summary>
//        /// 机器人倒面完成
//        /// PLC -> M100.5
//        /// ModbusTcp -> 1125
//        /// </summary>
//        public bool RbFallNoodleComplete { get; set; }

//        /// <summary>
//        /// 机器人出餐完成,上报取餐完成
//        /// PLC -> M100.6
//        /// ModbusTcp -> 1126
//        /// </summary>
//        public bool RbOutMealComplete { get; set; }

//        /// <summary>
//        /// 机器人空闲
//        /// PLC -> M100.7
//        /// ModbusTcp -> 1127
//        /// </summary>
//        [Circuit(new string[] { "机器人取面", "出面控制" }, "机器人空闲")]
//        public bool RobotIdle { get; set; }

//        /// <summary>
//        /// 取餐口检测
//        /// PLC -> M101.0
//        /// ModbusTcp -> 1128
//        /// </summary>
//        [Circuit("出面控制", "取餐口检测", true)]
//        public bool TakeMealDetect { get; set; }

//        /// <summary>
//        /// 缺碗信号，false:缺碗，true:有碗
//        /// PLC -> M101.1
//        /// ModbusTcp -> 1129
//        /// </summary>
//        public bool MissingBowl { get; set; }

//        /// <summary>
//        /// 设备初始化中，执行中等于1,2秒后复位
//        /// PLC -> M101.2
//        /// ModbusTcp -> 1130
//        /// </summary>
//        public bool DeviceIniting { get; set; }

//        /// <summary>
//        /// 转台下限检测
//        /// PLC -> M101.3
//        /// ModbusTcp -> 1131
//        /// </summary>
//        [Circuit("转台控制", "转台下限检测有物料")]
//        public bool TurntableLowerLimit { get; set; }

//        /// <summary>
//        /// 缺碗信号 2
//        /// PLC -> M101.4
//        /// ModbusTcp -> 1132
//        /// </summary>
//        public bool MissingBowlSignal2 { get; set; }

//        /// <summary>
//        /// 转台上限检测
//        /// PLC -> M101.5
//        /// ModbusTcp -> 1133
//        /// </summary>
//        public bool TurntableUpLimit { get; set; }

//        /// <summary>
//        /// 转台移动到位
//        /// PLC -> M101.7
//        /// ModbusTcp -> 1135
//        /// </summary>
//        [Circuit(new string[] { "转台控制", "机器人取面" }, "转台移动到位")]
//        public bool TurntableMoveInPlace { get; set; }

//        /// <summary>
//        /// 煮面炉状态,True:忙碌，false:空闲
//        /// M102.0 - M102.5
//        /// 1136   - 1141
//        /// </summary>
//        public bool[] NoodleCookerStatus { get; set; } = new bool[6] { false, false, false, false, false, false };

//        /// <summary>
//        /// 煮面完成,上升后给信号
//        /// M103.0 - M103.5
//        /// 1144   - 1149
//        /// </summary>
//        public bool[] CookNoodlesComplete { get; set; } = new bool[6] { false, false, false, false, false, false };

//        /// <summary>
//        /// 配方编号
//        /// PLC -> VW0
//        /// ModbusTcp -> 100
//        /// </summary>
//        public ushort RecipeNumber { get; set; }

//        /// <summary>
//        /// 转台位置
//        /// PLC -> VW2
//        /// ModbusTcp -> 101
//        /// </summary>
//        public ushort TurntableLoc { get; set; }

//        /// <summary>
//        /// 到面至煮面炉位置
//        /// PLC -> VW4
//        /// ModbusTcp -> 102
//        /// </summary>
//        public ushort FallNoodleLoc { get; set; }

//        /// <summary>
//        /// 取面位置
//        /// PLC -> VW6
//        /// ModbusTcp -> 103
//        /// </summary>
//        public ushort TakeNoodleLoc { get; set; }

//        /// <summary>
//        /// 机器人取面位置队列
//        /// </summary>
//        [Circuit(new string[] { "转台控制", "机器人取面" }, "有机器人取面队列")]
//        public ConcurrentQueue<OrderLocInfo> RBTakeNoodleTask { get; set; } = new ConcurrentQueue<OrderLocInfo>();

//        /// <summary>
//        /// 出碗队列
//        /// </summary>
//        [Circuit("取碗控制", "有取碗队列数量")]
//        public ConcurrentQueue<OrderLocInfo> TakeBowlTask { get; set; } = new ConcurrentQueue<OrderLocInfo>();

//    }
//}
