yanjinhui
14 小时以前 8ff069bc70aaf3338052b5eb5d3f0f188c66e56b
优化海康跨楼层任务,以及处理提升机异常信号问题
已修改3个文件
155 ■■■■■ 文件已修改
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/HKTaskMethods.cs 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskMethods.cs 124 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/Task/HKTaskExtend.cs 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/HKTaskMethods.cs
@@ -254,10 +254,18 @@
            try
            {
                var tasktype = (TaskTypeEnum)Enum.GetValues(typeof(TaskTypeEnum)).GetValue(task.TaskType - 1);
                hIKROBOTTaskSubmit.initPriority = task.Grade;
                if (task.PalletCode== "MR-Q3-600LE-D(M)")
                {
                    hIKROBOTTaskSubmit.robotType = "19"; //海康 è½¬è¿è½¦
                }
                else if (task.PalletCode == "MR-Q3-600LE-D(M)(YWGP)")
                {
                    hIKROBOTTaskSubmit.robotType = "20"; //海康 ç©ºæ‰˜ç›˜è½¦ï¼Œä¸€æ¥¼åˆ°å…­æ¥¼ï¼Œ6楼到一楼
                }
                hIKROBOTTaskSubmit.taskType = tasktype.ToString();
                ExtraDto extraDto = new ExtraDto();
                hIKROBOTTaskSubmit.robotTaskCode = task.WMSTaskNum;
                hIKROBOTTaskSubmit.taskType = tasktype.ToString(); ExtraDto extraDto = new ExtraDto();
                if (task.TaskType != (int)TaskTypeEnum.MOVE && task.TaskType != (int)TaskTypeEnum.Q3RK && task.TaskType != (int)TaskTypeEnum.Q3CK && task.TaskType != (int)TaskTypeEnum.F01)
                {
                    CarrierInfoDto carrierInfoDto = new CarrierInfoDto()
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskMethods.cs
@@ -3,6 +3,7 @@
using NetTaste;
using OfficeOpenXml.FormulaParsing.Excel.Functions.Text;
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Net.NetworkInformation;
@@ -141,21 +142,30 @@
                                    else
                                    {
                                        bool Work = false;
                                        if (device.IsConnected)
                                        try
                                        {
                                            int i = 0;
                                            while (!Work && i <= 3)
                                            if (device.IsConnected)
                                            {
                                                i++;
                                                Work = device.SetValue(HoistEnum.Outboundboxon, 1, task.SourceAddress);//出库完成
                                                Thread.Sleep(500);
                                                int i = 0;
                                                while (!Work && i <= 3)
                                                {
                                                    i++;
                                                    Work = device.SetValue(HoistEnum.Outboundboxon, 1, task.SourceAddress);//出库完成
                                                    Thread.Sleep(500);
                                                }
                                            }
                                            if (!Work)
                                            {
                                                task.ExceptionMessage = $"【{task.SourceAddress}】写入3楼出库箱放到位失败";
                                                task.Remark = $"{device.DeviceCode}_Outboundboxon_{1}_{task.SourceAddress}";
                                            }
                                        }
                                        if (!Work)
                                        catch (Exception ex)
                                        {
                                            task.ExceptionMessage = $"【{task.SourceAddress}】写入3楼出库箱放到位失败";
                                            task.Remark = $"{device.DeviceCode}_Outboundboxon_{1}_{task.SourceAddress}";
                                            task.Remark = $"{device.DeviceCode}_Outboundboxon_{1}_{task.SourceAddress}"; throw;
                                        }
                                    }
                                    BaseDal.UpdateData(task);
                                }
@@ -167,21 +177,31 @@
                                    else
                                    {
                                        bool Work = false;
                                        if (device.IsConnected)
                                        try
                                        {
                                            int i = 0;
                                            while (!Work && i <= 3)
                                            if (device.IsConnected)
                                            {
                                                i++;
                                                Work = device.SetValue(HoistEnum.Emptyboxplacedinposition, 1, task.TargetAddress);
                                                Thread.Sleep(500);
                                                int i = 0;
                                                while (!Work && i <= 3)
                                                {
                                                    i++;
                                                    Work = device.SetValue(HoistEnum.Emptyboxplacedinposition, 1, task.TargetAddress);
                                                    Thread.Sleep(500);
                                                }
                                            }
                                            if (!Work)
                                            {
                                                task.ExceptionMessage = $"【{task.TargetAddress}】写入4楼空箱放到位失败";
                                                task.Remark = $"{device.DeviceCode}_Emptyboxplacedinposition_{1}_{task.TargetAddress}";
                                            }
                                        }
                                        if (!Work)
                                        catch (Exception ex)
                                        {
                                            task.ExceptionMessage = $"【{task.TargetAddress}】写入4楼空箱放到位失败";
                                            task.Remark = $"{device.DeviceCode}_Emptyboxplacedinposition_{1}_{task.TargetAddress}";
                                        }
                                    }
                                    BaseDal.UpdateData(task);
                                }
@@ -193,21 +213,31 @@
                                    else
                                    {
                                        bool Work = false;
                                        if (device.IsConnected)
                                        try
                                        {
                                            int i = 0;
                                            while (!Work && i <= 3)
                                            if (device.IsConnected)
                                            {
                                                i++;
                                                Work = device.SetValue(HoistEnum.Outboundboxretrievalcompleted, 1, task.SourceAddress);
                                                Thread.Sleep(500);
                                                int i = 0;
                                                while (!Work && i <= 3)
                                                {
                                                    i++;
                                                    Work = device.SetValue(HoistEnum.Outboundboxretrievalcompleted, 1, task.SourceAddress);
                                                    Thread.Sleep(500);
                                                }
                                            }
                                            if (!Work)
                                            {
                                                task.ExceptionMessage = $"【{task.SourceAddress}】写入4楼出库取箱完成失败";
                                                task.Remark = $"{device.DeviceCode}_Outboundboxretrievalcompleted_{1}_{task.SourceAddress}";
                                            }
                                        }
                                        if (!Work)
                                        catch (Exception ex)
                                        {
                                            task.ExceptionMessage = $"【{task.SourceAddress}】写入4楼出库取箱完成失败";
                                            task.Remark = $"{device.DeviceCode}_Outboundboxretrievalcompleted_{1}_{task.SourceAddress}";
                                        }
                                    }
                                    BaseDal.UpdateData(task);
                                }
@@ -220,21 +250,31 @@
                                    {
                                        bool Wok = false;
                                        var Address = task.TaskType == TaskTypeEnum.Q3RK.ObjToInt() ? task.TargetAddress : task.SourceAddress;
                                        if (device.IsConnected)
                                        try
                                        {
                                            int i = 0;
                                            while (!Wok && i <= 3)
                                            if (device.IsConnected)
                                            {
                                                i++;
                                                Wok = device.SetValue(QualityInspectionCommandEnum.RequestToEnter, false, Address);
                                                Thread.Sleep(500);
                                                int i = 0;
                                                while (!Wok && i <= 3)
                                                {
                                                    i++;
                                                    Wok = device.SetValue(QualityInspectionCommandEnum.RequestToEnter, false, Address);
                                                    Thread.Sleep(500);
                                                }
                                            }
                                            if (!Wok)
                                            {
                                                task.ExceptionMessage = $"【{Address}】关闭请求进入失败!";
                                                task.Remark = $"{device.DeviceCode}_RequestToEnter_{false}_{Address}";
                                            }
                                        }
                                        if (!Wok)
                                        catch (Exception ex)
                                        {
                                            task.ExceptionMessage = $"【{Address}】关闭请求进入失败!";
                                            task.Remark = $"{device.DeviceCode}_RequestToEnter_{false}_{Address}";
                                        }
                                    }
                                    BaseDal.UpdateData(task);
                                }
@@ -254,21 +294,31 @@
                                else
                                {
                                    bool Wok = false;
                                    if (device.IsConnected)
                                    try
                                    {
                                        int i = 0;
                                        while (!Wok && i <= 3)
                                        if (device.IsConnected)
                                        {
                                            i++;
                                            Wok = device.SetValue<HoistEnum, short>(HoistEnum.Codereadingtriggered, 1, "TSJR3F");
                                            Thread.Sleep(500);
                                            int i = 0;
                                            while (!Wok && i <= 3)
                                            {
                                                i++;
                                                Wok = device.SetValue<HoistEnum, short>(HoistEnum.Codereadingtriggered, 1, "TSJR3F");
                                                Thread.Sleep(500);
                                            }
                                        }
                                        if (!Wok)
                                        {
                                            task.ExceptionMessage = $"【TSJR3F】3楼读码触发失败!";
                                            task.Remark = $"{device.DeviceCode}_Codereadingtriggered_{1}_TSJR3F";
                                        }
                                    }
                                    if (!Wok)
                                    catch (Exception ex)
                                    {
                                        task.ExceptionMessage = $"【TSJR3F】3楼读码触发失败!";
                                        task.Remark = $"{device.DeviceCode}_Codereadingtriggered_{1}_TSJR3F";
                                    }
                                }
                                task.TaskState = (int)TaskStatusEnum.CheckPalletCodeing;
                                BaseDal.UpdateData(task);
@@ -634,7 +684,7 @@
                    {
                        if (locationStatusEnum == LocationStatusEnum.Free) //如果起点完成就给货位赋值托盘号
                        {
                            stationManger.Remark = "";
                            stationManger.Remark ="";
                            stationManger.IsOccupied = LocationStatusEnum.Free.ObjToInt();
                        }
                        else
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/Task/HKTaskExtend.cs
@@ -63,7 +63,6 @@
                            // Q3CK æ˜¯AA→FF的跨楼层任务,只能使用专用小车
                            var code = item.TaskType == (int)TaskTypeEnum.Q3CK ? "AA" : "FF";
                            var specialCarInAA = dataList.FirstOrDefault(d => d.mapCode == code);
                            if (specialCarInAA != null)
                            {
                                // æœ‰åœ¨1楼的小车,直接执行任务
@@ -107,7 +106,6 @@
                {
                    // F01任务处理:根据目标地址判断需要哪个楼层的小车
                    var result = _agvcartInfoService.CheckTheCar("MR-Q3-600LE-D(M)");
                    if (result != null && result.Status)
                    {
                        var dataList = result.Data as List<HIKROBOTQueryData>;
@@ -194,12 +192,17 @@
                var currentFloorInfo = FloorMapping.FloorMap[currentMapCode];
                var targetFloorInfo = FloorMapping.FloorMap[targetMapCode];
                // è®¾ç½®ä»»åŠ¡ä¿¡æ¯
                //task.SourceAddress = currentFloorInfo.PointCode;  // èµ·ç‚¹ï¼šå°è½¦å½“前位置的点位
                //task.CurrentAddress = currentFloorInfo.PointCode; // å½“前位置:小车当前位置的点位
                //task.TargetAddress = targetFloorInfo.PointCode;   // ç›®æ ‡ç‚¹ï¼šç›®æ ‡æ¥¼å±‚点位
                //task.NextAddress = targetFloorInfo.PointCode; // è®°å½•目标楼层代码
                // è®°å½•使用的AGV小车型号到任务中
                var carType= "";
                if (task.TaskType==(int)TaskTypeEnum.F01)
                {
                    carType = "MR-Q3-600LE-D(M)";
                }
                else//   1-6/6-1的任务
                {
                    carType = "MR-Q3-600LE-D(M)(YWGP)";
                }
                Dt_Task newTask = new Dt_Task
                {
                    WMSTaskNum = "HK_" + task.WMSTaskNum, // ç”Ÿæˆå”¯ä¸€çš„WMS任务号
@@ -210,7 +213,7 @@
                    NextAddress = targetFloorInfo.PointCode,
                    TaskType = (int)TaskTypeEnum.MOVE,
                    Grade = task.Grade,
                    PalletCode = "",
                    PalletCode = carType,
                    TaskState = (int)TaskStatusEnum.CallingHKtransportation,
                    // å¤åˆ¶å…¶ä»–必要字段
                    CreateDate = DateTime.Now,