1
huanghongfeng
2024-12-02 e2a5657e3a0b8615bcd78a3149e5ba9ce5579bb8
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/StackerCraneJob/CommonStackerCraneJob.cs
@@ -146,17 +146,31 @@
                    task = OutTaskMovelibrary(task);
                    if (task != null)
                    {
                        return task;
                        if (OutTaskStationIsOccupied(task) != null)
                        {
                            return task;
                        }
                    }
                }
                if (OutTaskStationIsOccupied(task) != null)
                else
                {
                    if (OutTaskStationIsOccupied(task) != null)
                    {
                        return task;
                    }
                    task = _taskService.QueryStackerCraneInTask(commonStackerCrane.DeviceCode);
                }
                /*if (OutTaskStationIsOccupied(task) != null)
                {
                    return task;
                }
                else
                {
                    List<string> otherOutStaionCodes = _routerService.QueryNextRoutes(commonStackerCrane.DeviceCode, task.NextAddress).Select(x => x.ChildPosi).ToList();
                    List<Dt_Task> tasks = _taskService.QueryStackerCraneOutTasks(commonStackerCrane.DeviceCode, otherOutStaionCodes);
                    List<Dt_Task> tasks = _taskService.QueryStackerCraneOutTasks(commonStackerCrane.DeviceCode);
                    foreach (var item in tasks)
                    {
                        if (OutTaskStationIsOccupied(task) != null)
@@ -165,9 +179,8 @@
                        }
                    }
                    //task = _taskService.QueryStackerCraneInTask(commonStackerCrane.DeviceCode);
                }
                }*/
            }
            return task;
        }
@@ -223,7 +236,7 @@
                Dt_Task? tasks = _taskService.QueryStationIsOccupiedOutTasks(task.Roadway, SourceAddress).FirstOrDefault();
                if (tasks != null)
                {
                    return task;
                    return tasks;
                }
                else
                {
@@ -296,7 +309,20 @@
                        if (device != null)
                        {
                            CommonConveyorLine conveyorLine = (CommonConveyorLine)device;
                            if (PLCSignal(conveyorLine, task.TargetAddress, 1)) //写入输送线 å †åž›æœºæ”¾è´§ ä¿¡å·
                            if (task.TargetAddress == "R02-002-027-011-01" || task.TargetAddress == "R01-002-041-011-01")   //写入输送线去向
                            {
                                byte PLCtost = (byte)task.PLCTo;
                                if (PLCSignal2(conveyorLine, task.TargetAddress, "W_Destination", PLCtost))
                                {
                                    WriteLog.GetLog("输送线").Write($"站台编号:{task.TargetAddress},任务号:{task.TaskNum},信息:写入去向成功,去向为:{PLCtost}", $"出料口去向");
                                }
                                else
                                {
                                    WriteLog.GetLog("输送线").Write($"站台编号:{task.TargetAddress},任务号:{task.TaskNum},信息:写入去向失败,去向为:{PLCtost}", $"出料口去向");
                                }
                            }
                            if (PLCSignal(conveyorLine, task.TargetAddress, (byte)1)) //写入输送线 å †åž›æœºæ”¾è´§ ä¿¡å·
                            {
                                //读取输送线反馈  å †åž›æœºæ”¾ä¸‹ä¿¡å·
                                DeviceProDTO? deviceProDTO2 = GetDeviceProDTO(conveyorLine, task.TargetAddress, "R_StackerCraneLowered");    //输送线协议找读取信号
@@ -307,64 +333,75 @@
                                    if (B_TAKE == 1)
                                    {
                                        //堆垛机写完成
                                        if (Releasespermitted4(commonStackerCrane, task.TargetAddress, true))
                                        if (task.TargetAddress == "R02-002-027-011-01" || task.TargetAddress == "R01-002-041-011-01")
                                        {
                                            WriteLog.GetLog("堆垛机信号").Write($"站台编号:{task.TargetAddress},任务号:{task.TaskNum},信息:写入堆垛机放下信号成功:true", $"(放货)写入{task.TargetAddress}");
                                        }
                                        else
                                        {
                                            WriteLog.GetLog("堆垛机信号").Write($"站台编号:{task.TargetAddress},任务号:{task.TaskNum},信息:写入堆垛机放下信号失败:true", $"(放货)写入{task.TargetAddress}");
                                        }
                                        if (task.TargetAddress == "R02-002-027-011-01" || task.TargetAddress == "R01-002-041-011-01")   //写入输送线去向
                                        {
                                            byte PLCtost = (byte)task.PLCTo;
                                            while (true)
                                            DeviceProDTO? deviceProDTO3 = GetDeviceProDTO(conveyorLine, task.TargetAddress, "R_Destination");
                                            if (deviceProDTO3 != null)
                                            {
                                                if (PLCSignal2(conveyorLine, task.TargetAddress, "W_Destination", PLCtost))
                                                int PLCwcstost = GetLine(conveyorLine, deviceProDTO3.DeviceProDataBlock);
                                                if (PLCwcstost == task.PLCTo)
                                                {
                                                    WriteLog.GetLog("输送线").Write($"站台编号:{task.TargetAddress},任务号:{task.TaskNum},信息:写入去向成功,去向为:{PLCtost}", $"出料口去向");
                                                    DeviceProDTO? deviceProDTO3 = GetDeviceProDTO(conveyorLine, task.TargetAddress, "R_Destination");
                                                    if (deviceProDTO3 != null)
                                                    byte PLCtost2 = 0;
                                                    if (PLCSignal2(conveyorLine, task.TargetAddress, "W_Destination", PLCtost2))
                                                    {
                                                        int PLCwcstost = GetLine(conveyorLine, deviceProDTO3.DeviceProDataBlock);
                                                        if (PLCwcstost == PLCtost)
                                                        {
                                                            if (PLCSignal2(conveyorLine, task.TargetAddress, "W_Destination", 0))
                                                            {
                                                                WriteLog.GetLog("输送线").Write($"站台编号:{task.TargetAddress},任务号:{task.TaskNum},信息:清除去向成功", $"(放货)写入{task.TargetAddress}");
                                                                break;
                                                            }
                                                            else
                                                            {
                                                                WriteLog.GetLog("输送线").Write($"站台编号:{task.TargetAddress},任务号:{task.TaskNum},信息:清除去向失败", $"(放货)写入{task.TargetAddress}");
                                                            }
                                                        }
                                                        else
                                                        {
                                                            WriteLog.GetLog("输送线").Write($"站台编号:{task.TargetAddress},任务号:{task.TaskNum},信息:去向比对不一致,输送线去向为:{PLCwcstost},wcs写入去向为:{PLCtost}", $"(放货)写入{task.TargetAddress}");
                                                        }
                                                        WriteLog.GetLog("输送线").Write($"站台编号:{task.TargetAddress},任务号:{task.TaskNum},信息:清除去向成功", $"出料口去向");
                                                    }
                                                    else
                                                    {
                                                        WriteLog.GetLog("输送线").Write($"站台编号:{task.TargetAddress},任务号:{task.TaskNum},信息:清除去向失败", $"出料口去向");
                                                    }
                                                    // æ¸…除输送线
                                                    if (PLCSignal(conveyorLine, task.TargetAddress, (byte)0))
                                                    {
                                                        WriteLog.GetLog("输送线").Write($"站台编号:{task.TargetAddress},任务号:{task.TaskNum},信息:写入输送线清除-堆垛机放下信号成功", $"出料口去向");
                                                    }
                                                    else
                                                    {
                                                        WriteLog.GetLog("输送线").Write($"站台编号:{task.TargetAddress},任务号:{task.TaskNum},信息:写入输送线清除-堆垛机放下信号失败", $"出料口去向");
                                                    }
                                                    //堆垛机写完成
                                                    if (Releasespermitted4(commonStackerCrane, task.TargetAddress, true))
                                                    {
                                                        WriteLog.GetLog("堆垛机信号").Write($"站台编号:{task.TargetAddress},任务号:{task.TaskNum},信息:写入堆垛机放下信号成功:true", $"出料口去向");
                                                    }
                                                    else
                                                    {
                                                        WriteLog.GetLog("堆垛机信号").Write($"站台编号:{task.TargetAddress},任务号:{task.TaskNum},信息:写入堆垛机放下信号失败:true", $"出料口去向");
                                                    }
                                                }
                                                else
                                                {
                                                    WriteLog.GetLog("输送线").Write($"站台编号:{task.TargetAddress},任务号:{task.TaskNum},信息:写入去向失败,去向为:{PLCtost}", $"出料口去向");
                                                    WriteLog.GetLog("输送线").Write($"站台编号:{task.TargetAddress},任务号:{task.TaskNum},信息:去向比对不一致,输送线去向为:{PLCwcstost},wcs写入去向为:{task.PLCTo}", $"出料口去向");
                                                }
                                            }
                                        }
                                        // æ¸…除输送线
                                        if (PLCSignal(conveyorLine, task.TargetAddress, 0))
                                        if (task.TargetAddress != "R02-002-027-011-01" && task.TargetAddress != "R01-002-041-011-01")
                                        {
                                            WriteLog.GetLog("输送线").Write($"站台编号:{task.TargetAddress},任务号:{task.TaskNum},信息:写入输送线清除-堆垛机放下信号成功", $"(放货)读取{task.TargetAddress}");
                                            // æ¸…除输送线
                                            if (PLCSignal(conveyorLine, task.TargetAddress, 0))
                                            {
                                                WriteLog.GetLog("输送线").Write($"站台编号:{task.TargetAddress},任务号:{task.TaskNum},信息:写入输送线清除-堆垛机放下信号成功", $"(放货)读取{task.TargetAddress}");
                                            }
                                            else
                                            {
                                                WriteLog.GetLog("输送线").Write($"站台编号:{task.TargetAddress},任务号:{task.TaskNum},信息:写入输送线清除-堆垛机放下信号失败", $"(放货)读取{task.TargetAddress}");
                                            }
                                            //堆垛机写完成
                                            if (Releasespermitted4(commonStackerCrane, task.TargetAddress, true))
                                            {
                                                WriteLog.GetLog("堆垛机信号").Write($"站台编号:{task.TargetAddress},任务号:{task.TaskNum},信息:写入堆垛机放下信号成功:true", $"(放货)写入{task.TargetAddress}");
                                            }
                                            else
                                            {
                                                WriteLog.GetLog("堆垛机信号").Write($"站台编号:{task.TargetAddress},任务号:{task.TaskNum},信息:写入堆垛机放下信号失败:true", $"(放货)写入{task.TargetAddress}");
                                            }
                                        }
                                        else
                                        {
                                            WriteLog.GetLog("输送线").Write($"站台编号:{task.TargetAddress},任务号:{task.TaskNum},信息:写入输送线清除-堆垛机放下信号失败", $"(放货)读取{task.TargetAddress}");
                                        }
                                    }
                                    else
                                    {
@@ -565,7 +602,14 @@
                    {
                        return true;
                    }
                }
                DeviceProDTO? deviceProDTO6 = GetDeviceProDTO2(commonStackerCrane, commonStackerCrane.DeviceCode, "DeliveryRequest_A2in");  //空托出入库
                if (deviceProDTO6 != null)
                {
                    if (GetStacker(commonStackerCrane, deviceProDTO6.DeviceProAddress).Status)
                    {
                        return true;
                    }
                }
            }
            return false;
@@ -615,6 +659,15 @@
                if (deviceProDTO != null)
                {
                   if(SetStacker(commonStackerCrane, deviceProDTO.DeviceProAddress, SCcrane).Status) { return true; }
                }
            }
            if (Destinationaddress == "R01-002-043-001-01")
            {
                DeviceProDTO? deviceProDTO = GetDeviceProDTO2(commonStackerCrane, commonStackerCrane.DeviceCode, "DeliveryPermission_A2in");
                if (deviceProDTO != null)
                {
                    if (SetStacker(commonStackerCrane, deviceProDTO.DeviceProAddress, SCcrane).Status) { return true; }
                }
            }
@@ -682,7 +735,17 @@
                    }
                }
            }
            if (Destinationaddress == "R01-002-043-001-01")
            {
                DeviceProDTO? deviceProDTO = GetDeviceProDTO2(commonStackerCrane, commonStackerCrane.DeviceCode, "DeliveryCompleted_A2in");
                if (deviceProDTO != null)
                {
                    if (GetStacker(commonStackerCrane, deviceProDTO.DeviceProAddress).Status)
                    {
                        return true;
                    }
                }
            }
            return false;
        }
@@ -731,7 +794,14 @@
                    if (SetStacker(commonStackerCrane, deviceProDTO.DeviceProAddress, SCcrane).Status) { return true; }
                }
            }
            if (Destinationaddress == "R01-002-043-001-01")
            {
                DeviceProDTO? deviceProDTO = GetDeviceProDTO2(commonStackerCrane, commonStackerCrane.DeviceCode, "DeliveryCompletion_A2in");
                if (deviceProDTO != null)
                {
                    if (SetStacker(commonStackerCrane, deviceProDTO.DeviceProAddress, SCcrane).Status) { return true; }
                }
            }
            return false;
        }
@@ -1031,7 +1101,7 @@
        {
            StackerCraneTaskCommand stackerCraneTaskCommand = new StackerCraneTaskCommand();
            stackerCraneTaskCommand.Barcode = task.PalletCode;
            stackerCraneTaskCommand.Barcode = ""; /*task.PalletCode;*/
            stackerCraneTaskCommand.TaskNum = task.TaskNum;
            stackerCraneTaskCommand.WorkType = 1;
            stackerCraneTaskCommand.TrayType = 0;