dengjunjie
2025-07-09 7ca9651f81d7b84f054194d3d46fdbd1d9c8b922
ÏîÄ¿´úÂë/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob/ConveyorLineExtend/AGVsignal.cs
@@ -61,7 +61,6 @@
                CommonConveyorLine? conveyorLine = Storage.Devices.FirstOrDefault(x => x.DeviceName == "输送线") as CommonConveyorLine;
                if (conveyorLine == null) throw new Exception("未找到输送线设备信息");
                if (!conveyorLine.IsConnected) throw new Exception($"输送线设备通讯异常");
                //conveyorLine.SetValue(ConveyorLine_AGV.WriteRGPutComplete, true, "1001");//人工放货完成
                switch (conveyor.Type)
                {
                    case 1:
@@ -79,31 +78,30 @@
                        }
                        break;
                    case 2:
                        break;
                    case 3:
                        {
                            if (conveyor.Station == "1001")
                            {
                                content.Status = conveyorLine.SetValue(ConveyorLine_AGV.WriteAGVPutComplete, true, conveyor.Station);
                                if (content.Status)
                                {
                                    Thread.Sleep(1000);
                                    conveyorLine.SetValue(ConveyorLine_AGV.WriteAGVRequestPut, false, conveyor.Station);
                                    conveyorLine.SetValue(ConveyorLine_AGV.WriteAGVPutComplete, false, conveyor.Station);
                                }
                                //if (content.Status)
                                //{
                                //    Thread.Sleep(1000);
                                //    conveyorLine.SetValue(ConveyorLine_AGV.WriteAGVRequestPut, false, conveyor.Station);
                                //    conveyorLine.SetValue(ConveyorLine_AGV.WriteAGVPutComplete, false, conveyor.Station);
                                //}
                            }
                            else
                            {
                                content.Status = conveyorLine.SetValue(ConveyorLine_AGV.WriteAGVTakeComplete, true, conveyor.Station);
                                if (content.Status)
                                {
                                    Thread.Sleep(1000);
                                    conveyorLine.SetValue(ConveyorLine_AGV.WriteAGVRequestTake, false, conveyor.Station);
                                    conveyorLine.SetValue(ConveyorLine_AGV.WriteAGVTakeComplete, false, conveyor.Station);
                                }
                                //if (content.Status)
                                //{
                                //    Thread.Sleep(1000);
                                //    conveyorLine.SetValue(ConveyorLine_AGV.WriteAGVRequestTake, false, conveyor.Station);
                                //    conveyorLine.SetValue(ConveyorLine_AGV.WriteAGVTakeComplete, false, conveyor.Station);
                                //}
                            }
                        }
                        break;
                    case 3:
                        break;
                    case 4:
@@ -125,9 +123,9 @@
        public static WebResponseContent AGVRequestinProductionLine(ConveyorLineDTO conveyor)
        {
            WebResponseContent content = new WebResponseContent();
            OtherDevice? ProductionLine = Storage.Devices.FirstOrDefault(x => x.DeviceCode == conveyor.Station) as OtherDevice;
            try
            {
                OtherDevice? ProductionLine = Storage.Devices.FirstOrDefault(x => x.DeviceCode == conveyor.Station) as OtherDevice;
                if (ProductionLine == null) throw new Exception("未找到产线设备信息");
                if (!ProductionLine.IsConnected) throw new Exception($"产线设备通讯异常");
                content.Status = ProductionLine.SetValue(ProductionLineDBName.WagvState, conveyor.Type);
@@ -137,14 +135,17 @@
                switch (conveyor.Type)
                {
                    case 1:
                        if (agvState != conveyor.Type) throw new Exception("产线不允许进入作业");
                        if (agvState != conveyor.Type) throw new Exception($"AGV申请进入,产线不允许进入作业,产线信号【{agvState}】");
                        ProductionLine?.Communicator.LogNet.WriteDebug($"AGV申请进入,产线允许进入作业,产线信号【{agvState}】");
                        content.OK();
                        break;
                    case 2:
                        if (agvState != conveyor.Type) throw new Exception("产线不允许离开");
                        //if (agvState != conveyor.Type) throw new Exception("产线不允许离开");
                        content.OK();
                        break;
                    case 3:
                        content.Status = ProductionLine.SetValue(ProductionLineDBName.Wrequest, 2);
                        if (content.Status) content.Status = ProductionLine.SetValue(ProductionLineDBName.WagvState, 0);
                        ProductionLine?.Communicator.LogNet.WriteDebug($"AGV已离开,任务完成");
                        break;
                }
                content = content.Status ? content.OK() : content.Error("写入失败");
@@ -152,8 +153,28 @@
            catch (Exception ex)
            {
                content.Error(ex.Message);
                ProductionLine?.Communicator.LogNet.WriteDebug(ex.Message);
            }
            return content;
        }
        /// <summary>
        /// å…¥åº“输送线人工放货完成
        /// </summary>
        /// <returns></returns>
        public static WebResponseContent ReleaseCompleted()
        {
            try
            {
                CommonConveyorLine? conveyorLine = Storage.Devices.FirstOrDefault(x => x.DeviceName == "输送线") as CommonConveyorLine;
                if (conveyorLine == null) throw new Exception("未找到输送线设备信息");
                if (!conveyorLine.IsConnected) throw new Exception($"输送线设备通讯异常");
                conveyorLine.SetValue(ConveyorLine_AGV.WriteRGPutComplete, true, "1001");//人工放货完成
                return WebResponseContent.Instance.OK();
            }
            catch (Exception ex)
            {
                return WebResponseContent.Instance.Error(ex.Message);
            }
        }
    }
}