林豪 左 3 éve
szülő
commit
ffa95f0842

+ 46 - 0
Projects/永冠/WCS.Entity.Protocol/DRGV/DRGVFault.cs

@@ -0,0 +1,46 @@
+using System;
+
+namespace WCS.Entity.Protocol
+{
+    [Flags]
+    public enum DRGVFault : ushort
+    {
+        RGV前后防撞条故障 = 1 << 0,
+        RGV载货极限光电故障 = 1 << 1,
+        RGV输送线变频器故障 = 1 << 2,
+        RGV行走变频器故障 = 1 << 3,
+        RGV扫码器故障 = 1 << 4,
+        RGV位置值故障 = 1 << 5,
+        RGV定位失败 = 1 << 6,
+        RGV取放货时位置偏差过大 = 1 << 7,
+        RGV急停按下 = 1 << 8,
+        主柜急停按下 = 1 << 9,
+        站台货物超出 = 1 << 10,
+        RGV输送线超时 = 1 << 11,
+        RGV输送线光电异常 = 1 << 12,
+        RGV任务号与站台任务号不匹配 = 1 << 13,
+        RGV不支持此任务类型 = 1 << 14,
+        RGV目标站台与交互站台号不一致 = 1 << 15,
+    }
+
+    [Flags]
+    public enum DRGVPlatformFault : ushort
+    {
+        RGV站台号错误 = 1 << 0,
+        RGV任务类型错误 = 1 << 1,
+        RGV任务号错误 = 1 << 2,
+        RGV货物超出故障 = 1 << 3,
+        RGV输送线变频器故障2 = 1 << 4,
+        RGV输送线传感器异常 = 1 << 5,
+        RGV输送线运行超时 = 1 << 6,
+        RGV输送线总故障 = 1 << 7,
+        RGV硬极限故障 = 1 << 8,
+        RGV软极限故障 = 1 << 9,
+        RGV货物超出故障2 = 1 << 10,
+        RGV行走测距信号丢失 = 1 << 11,
+        RGV行走变频器故障 = 1 << 12,
+        RGV = 1 << 13,
+        RGV2 = 1 << 14,
+        RGV急停按下 = 1 << 15,
+    }
+}

+ 50 - 0
Projects/永冠/WCS.Entity.Protocol/DRGV/DRGVStatus.cs

@@ -0,0 +1,50 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WCS.Entity.Protocol
+{
+    [Flags]
+    public enum DRGVStatus : ushort
+    {
+        RGV与站台交互完成 = 1 << 0,
+        RGV前方有障暂停运行 = 1 << 1,
+        RGV = 1 << 2,
+        RGV2 = 1 << 3,
+        RGV3 = 1 << 4,
+        RGV4 = 1 << 5,
+        RGV5 = 1 << 6,
+        RGV6 = 1 << 7,
+        RGV运行 = 1 << 8,
+        RGV移动中 = 1 << 9,
+        RGV取货中 = 1 << 10,
+        RGV放货中 = 1 << 11,
+        RGV变址运行 = 1 << 12,
+        RGV定位完成 = 1 << 13,
+        RGV有货光电 = 1 << 14,
+        RGV与站台交互中 = 1 << 15,
+    }
+
+    [Flags]
+    public enum DRGVPlatformStatus : ushort
+    {
+        RGV任务挂起 = 1 << 0,
+        RGV移动中 = 1 << 1,
+        RGV取货中 = 1 << 2,
+        RGV放货中 = 1 << 3,
+        RGV定位完全 = 1 << 4,
+        RGV有货光电 = 1 << 5,
+        RGV与站台交互中 = 1 << 6,
+        RGV与站台交互完 = 1 << 7,
+        RGV = 1 << 8,
+        RGV2 = 1 << 9,
+        RGV3 = 1 << 10,
+        RGV4 = 1 << 11,
+        RGV5 = 1 << 12,
+        RGV6 = 1 << 13,
+        RGV7 = 1 << 14,
+        RGV8 = 1 << 15,
+    }
+}

+ 96 - 0
Projects/永冠/WCS.Entity.Protocol/DRGV/IDRGV520.cs

@@ -0,0 +1,96 @@
+namespace WCS.Entity.Protocol
+{
+    /// <summary>
+    /// WCS写
+    /// </summary>
+    public interface IDRGV520 : IProtocol
+    {
+        #region 工位一
+
+        /// <summary>
+        /// 任务号
+        /// </summary>
+        int TaskID_1 { get; set; }
+
+        /// <summary>
+        /// 任务类型
+        /// </summary>
+        short TaskType_1 { get; set; }
+
+        /// <summary>
+        /// 起始地址
+        /// </summary>
+        short StartPosition_1 { get; set; }
+
+        /// <summary>
+        /// 目标地址
+        /// </summary>
+        short DestPosition_1 { get; set; }
+
+        /// <summary>
+        /// 优先级
+        /// </summary>
+        short PRIORITY_1 { get; set; }
+
+        /// <summary>
+        /// 备用
+        /// </summary>
+        short RES1_1 { get; set; }
+
+        /// <summary>
+        /// 完成确认信号
+        /// </summary>
+        short res2_1 { get; set; }
+
+        /// <summary>
+        /// 确认信号
+        /// </summary>
+        short Trigger_1 { get; set; }
+
+        #endregion 工位一
+
+        #region 工位二
+
+        /// <summary>
+        /// 任务号
+        /// </summary>
+        int TaskID_2 { get; set; }
+
+        /// <summary>
+        /// 任务类型
+        /// </summary>
+        short TaskType_2 { get; set; }
+
+        /// <summary>
+        /// 起始地址
+        /// </summary>
+        short StartPosition_2 { get; set; }
+
+        /// <summary>
+        /// 目标地址
+        /// </summary>
+        short DestPosition_2 { get; set; }
+
+        /// <summary>
+        /// 优先级
+        /// </summary>
+        short PRIORITY_2 { get; set; }
+
+        /// <summary>
+        /// 备用
+        /// </summary>
+        short RES1_2 { get; set; }
+
+        /// <summary>
+        /// 完成确认信号
+        /// </summary>
+        short res2_2 { get; set; }
+
+        /// <summary>
+        /// 确认信号
+        /// </summary>
+        short Trigger_2 { get; set; }
+
+        #endregion 工位二
+    }
+}

+ 175 - 0
Projects/永冠/WCS.Entity.Protocol/DRGV/IDRGV521.cs

@@ -0,0 +1,175 @@
+namespace WCS.Entity.Protocol
+{
+    /// <summary>
+    /// 54
+    /// </summary>
+    public interface IDRGV521 : IProtocol
+    {
+        #region 工位一
+
+        /// <summary>
+        /// 任务号
+        /// </summary>
+        int TaskID_1 { get; set; }
+
+        /// <summary>
+        /// 任务类型
+        /// </summary>
+        RGVTaskType TaskType_1 { get; set; }
+
+        /// <summary>
+        /// 起始地址
+        /// </summary>
+        short StartPosition_1 { get; set; }
+
+        /// <summary>
+        /// 目标地址
+        /// </summary>
+        short DestPosition_1 { get; set; }
+
+        /// <summary>
+        /// 优先级
+        /// </summary>
+        short PRIORITY_1 { get; set; }
+
+        /// <summary>
+        /// 实际速度
+        /// </summary>
+        [IgnoreChanging]
+        short ACT_V_1 { get; set; }
+
+        /// <summary>
+        /// 备用
+        /// </summary>
+        short RES2_1 { get; set; }
+
+        /// <summary>
+        /// 光电
+        /// </summary>
+        bool PH_Status_1 { get; set; }
+
+        /// <summary>
+        /// 是否到位
+        /// </summary>
+        bool ToSition_1 { get; set; }
+
+        /// <summary>
+        /// 是否完成任务
+        /// </summary>
+        bool Finish_1 { get; set; }
+
+        #endregion 工位一
+
+        #region 工位二
+
+        /// <summary>
+        /// 任务号
+        /// </summary>
+        int TaskID_2 { get; set; }
+
+        /// <summary>
+        /// 任务类型
+        /// </summary>
+        RGVTaskType TaskType_2 { get; set; }
+
+        /// <summary>
+        /// 起始地址
+        /// </summary>
+        short StartPosition_2 { get; set; }
+
+        /// <summary>
+        /// 目标地址
+        /// </summary>
+        short DestPosition_2 { get; set; }
+
+        /// <summary>
+        /// 优先级
+        /// </summary>
+        short PRIORITY_2 { get; set; }
+
+        /// <summary>
+        /// 实际速度
+        /// </summary>
+        [IgnoreChanging]
+        short ACT_V_2 { get; set; }
+
+        /// <summary>
+        /// 备用
+        /// </summary>
+        short RES2_2 { get; set; }
+
+        /// <summary>
+        /// 光电
+        /// </summary>
+        bool PH_Status_2 { get; set; }
+
+        /// <summary>
+        /// 是否到位
+        /// </summary>
+        bool ToSition_2 { get; set; }
+
+        /// <summary>
+        /// 是否完成任务
+        /// </summary>
+        bool Finish_2 { get; set; }
+
+        #endregion 工位二
+
+        /// <summary>
+        /// 系统状态
+        /// </summary>
+        RGVRunStatus SystemStatus { get; set; }
+
+        /// <summary>
+        /// 工作模式
+        /// </summary>
+
+        RGVMode WorkMode { get; set; }
+
+        /// <summary>
+        /// 备用
+        /// </summary>
+        short RES { get; set; }
+
+        /// <summary>
+        /// 位置
+        /// </summary>
+        [IgnoreChanging]
+        float Position { get; set; }
+
+        /// <summary>
+        /// 里程
+        /// </summary>
+        [IgnoreChanging]
+        float Mileage { get; set; }
+
+        /// <summary>
+        /// 运行时间
+        /// </summary>
+        [IgnoreChanging]
+        float Runtime { get; set; }
+    }
+
+    public enum DRGVRunStatus : short
+    {
+        空闲 = 1,
+        取货移动 = 2,
+        取货 = 3,
+        放货移动 = 4,
+        放货 = 5
+    }
+
+    public enum DRGVMode : short
+    {
+        自动 = 1,
+        半自动 = 2,
+        手动 = 3,
+        维护 = 4
+    }
+
+    public enum DRGVTaskType : short
+    {
+        搬运 = 1,
+        移动 = 3
+    }
+}

+ 44 - 0
Projects/永冠/WCS.Entity.Protocol/DRGV/IDRGV523.cs

@@ -0,0 +1,44 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WCS.Entity.Protocol
+{
+    /// <summary>
+    /// 12
+    /// </summary>
+    public interface IDRGV523 : IProtocol
+    {
+        /// <summary>
+        /// 环穿故障
+        /// </summary>
+        RGVFault Fault { get; set; }
+
+        /// <summary>
+        /// 工位1故障
+        /// </summary>
+        RGVPlatformFault Fault1 { get; set; }
+
+        /// <summary>
+        /// 工位2故障
+        /// </summary>
+        RGVPlatformFault Fault2 { get; set; }
+
+        /// <summary>
+        /// 环穿状态
+        /// </summary>
+        RGVStatus Status { get; set; }
+
+        /// <summary>
+        /// 工位1状态
+        /// </summary>
+        RGVPlatformStatus Status1 { get; set; }
+
+        /// <summary>
+        /// 工位2状态
+        /// </summary>
+        RGVPlatformStatus Status2 { get; set; }
+    }
+}

+ 56 - 0
Projects/永冠/WCS.Entity.Protocol/DRGV/WCS_DRGV520.cs

@@ -0,0 +1,56 @@
+using System.Runtime.Serialization;
+
+namespace WCS.Entity.Protocol
+{
+    [DataContract]
+    public class WCS_DRGV520 : WCS_PROTOCOLDATA, IDRGV520
+    {
+        [DataMember(Order = 0)]
+        public int TaskID_1 { get; set; }
+
+        [DataMember(Order = 1)]
+        public short TaskType_1 { get; set; }
+
+        [DataMember(Order = 2)]
+        public short StartPosition_1 { get; set; }
+
+        [DataMember(Order = 3)]
+        public short DestPosition_1 { get; set; }
+
+        [DataMember(Order = 4)]
+        public short PRIORITY_1 { get; set; }
+
+        [DataMember(Order = 5)]
+        public short RES1_1 { get; set; }
+
+        [DataMember(Order = 6)]
+        public short res2_1 { get; set; }
+
+        [DataMember(Order = 7)]
+        public short Trigger_1 { get; set; }
+
+        [DataMember(Order = 8)]
+        public int TaskID_2 { get; set; }
+
+        [DataMember(Order = 9)]
+        public short TaskType_2 { get; set; }
+
+        [DataMember(Order = 10)]
+        public short StartPosition_2 { get; set; }
+
+        [DataMember(Order = 11)]
+        public short DestPosition_2 { get; set; }
+
+        [DataMember(Order = 12)]
+        public short PRIORITY_2 { get; set; }
+
+        [DataMember(Order = 13)]
+        public short RES1_2 { get; set; }
+
+        [DataMember(Order = 14)]
+        public short res2_2 { get; set; }
+
+        [DataMember(Order = 15)]
+        public short Trigger_2 { get; set; }
+    }
+}

+ 86 - 0
Projects/永冠/WCS.Entity.Protocol/DRGV/WCS_DRGV521.cs

@@ -0,0 +1,86 @@
+using System.Runtime.Serialization;
+
+namespace WCS.Entity.Protocol
+{
+    [DataContract]
+    public class WCS_DRGV521 : WCS_PROTOCOLDATA, IDRGV521
+    {
+        [DataMember(Order = 0)]
+        public int TaskID_1 { get; set; }
+
+        [DataMember(Order = 1)]
+        public RGVTaskType TaskType_1 { get; set; }
+
+        [DataMember(Order = 2)]
+        public short StartPosition_1 { get; set; }
+
+        [DataMember(Order = 3)]
+        public short DestPosition_1 { get; set; }
+
+        [DataMember(Order = 4)]
+        public short PRIORITY_1 { get; set; }
+
+        [DataMember(Order = 5)]
+        public short ACT_V_1 { get; set; }
+
+        [DataMember(Order = 6)]
+        public short RES2_1 { get; set; }
+
+        [DataMember(Order = 7)]
+        public bool PH_Status_1 { get; set; }
+
+        [DataMember(Order = 8)]
+        public bool ToSition_1 { get; set; }
+
+        [DataMember(Order = 9)]
+        public bool Finish_1 { get; set; }
+
+        [DataMember(Order = 10)]
+        public int TaskID_2 { get; set; }
+
+        [DataMember(Order = 11)]
+        public RGVTaskType TaskType_2 { get; set; }
+
+        [DataMember(Order = 12)]
+        public short StartPosition_2 { get; set; }
+
+        [DataMember(Order = 13)]
+        public short DestPosition_2 { get; set; }
+
+        [DataMember(Order = 14)]
+        public short PRIORITY_2 { get; set; }
+
+        [DataMember(Order = 15)]
+        public short ACT_V_2 { get; set; }
+
+        [DataMember(Order = 16)]
+        public short RES2_2 { get; set; }
+
+        [DataMember(Order = 17)]
+        public bool PH_Status_2 { get; set; }
+
+        [DataMember(Order = 18)]
+        public bool ToSition_2 { get; set; }
+
+        [DataMember(Order = 19)]
+        public bool Finish_2 { get; set; }
+
+        [DataMember(Order = 20)]
+        public RGVRunStatus SystemStatus { get; set; }
+
+        [DataMember(Order = 21)]
+        public RGVMode WorkMode { get; set; }
+
+        [DataMember(Order = 22)]
+        public short RES { get; set; }
+
+        [DataMember(Order = 23)]
+        public float Position { get; set; }
+
+        [DataMember(Order = 24)]
+        public float Mileage { get; set; }
+
+        [DataMember(Order = 25)]
+        public float Runtime { get; set; }
+    }
+}

+ 28 - 0
Projects/永冠/WCS.Entity.Protocol/DRGV/WCS_DRGV523.cs

@@ -0,0 +1,28 @@
+using System.Runtime.Serialization;
+
+namespace WCS.Entity.Protocol
+{
+    [DataContract]
+    public class WCS_DRGV523 : WCS_PROTOCOLDATA, IDRGV523
+    {
+        [DataMember(Order = 0)]
+        public RGVFault Fault { get; set; }
+
+        [DataMember(Order = 1)]
+        public RGVPlatformFault Fault1 { get; set; }
+
+        [DataMember(Order = 2)]
+        public RGVPlatformFault Fault2 { get; set; }
+
+        [DataMember(Order = 3)]
+        public RGVStatus Status { get; set; }
+
+        [DataMember(Order = 4)]
+        public RGVPlatformStatus Status1 { get; set; }
+
+        [DataMember(Order = 5)]
+        public RGVPlatformStatus Status2 { get; set; }
+
+        public string DEVICECODE { get; set; }
+    }
+}

+ 1 - 1
Projects/永冠/WCS.Entity.Protocol/WCS.Entity.Protocol.csproj

@@ -1,4 +1,4 @@
-<Project Sdk="Microsoft.NET.Sdk">
+<Project Sdk="Microsoft.NET.Sdk">
 
   <PropertyGroup>
     <TargetFramework>netstandard2.0</TargetFramework>

+ 3 - 4
Projects/永冠/WCS.Service/Works/RGV/RGVWork.cs

@@ -119,11 +119,10 @@ namespace WCS.Service.Works
     }
 
     [WorkTitle(typeof(ProductHandler), "双工位RGV", true)]
-    public class 双工位RGV : DeviceWork<Device<IRGV521, IRGV520, IRGV523>>
+    public class 双工位RGV : DeviceWork<Device<IDRGV521, IDRGV520, IDRGV523>>
     {
-        protected override void Do(Device<IRGV521, IRGV520, IRGV523> dev)
+        protected override void Do(Device<IDRGV521, IDRGV520, IDRGV523> dev)
         {
-            
             if (dev.Data3.Fault != 0)
             {
                 if (dev.Entity.WakeupOn(5000))
@@ -132,7 +131,7 @@ namespace WCS.Service.Works
                 }
             }
 
-            if (Ltc.Do(dev, v => v.Data2.Trigger != 0))
+            if (Ltc.Do(dev, v => v.Data2.Trigger_1 != 0 && v.Data2.Trigger_2 != 0))
                 return;
             if (Ltc.Do(dev, v => v.Data.WorkMode != RGVMode.自动))
                 return;