| | |
| | | WriteError(item.StationName, $"æªæ¾å°è·¯ç±é
置信æ¯,设å¤ç¼å·:{item.StationCode},ä»»å¡å·:{task.TaskNum}"); |
| | | continue; |
| | | } |
| | | _taskService.UpdateTask(task, TaskStatusEnum.Line_Executing, nextAddress: router.NextPosi, targetAddress: router.NextPosi); |
| | | device.SetValue(W_ConveyorLineCPDB.StartPos, task.CurrentAddress, item.StationCode); |
| | | //string? locationCode = _taskService.RequestAssignLocation(task.TaskNum, "AGV_CP"); |
| | | //if (string.IsNullOrEmpty(locationCode) && task.TaskType != TaskTypeEnum.EmptyProductBack.ObjToInt()) |
| | | //{ |
| | | // WriteError(item.StationName, $"请æ±åé
è´§ä½è¿åä¿¡æ¯é误,设å¤ç¼å·:{item.StationCode},ä»»å¡å·:{task.TaskNum}"); |
| | | // continue; |
| | | //} |
| | | device.SetValue(W_ConveyorLineCPDB.StartPos, router.StartPosi, item.StationCode); |
| | | device.SetValue(W_ConveyorLineCPDB.EndPos, router.NextPosi, item.StationCode); |
| | | device.SetValue(W_ConveyorLineCPDB.Barcode, task.PalletCode, item.StationCode); |
| | | device.SetValue(W_ConveyorLineCPDB.TaskNum, task.TaskNum, item.StationCode); |
| | |
| | | device.SetValue(W_ConveyorLineCPDB.CheckPos, 1, item.StationCode); |
| | | //å¯å¨æä»¤ |
| | | device.SetValue(W_ConveyorLineCPDB.ConveyArrival, 1, item.StationCode); |
| | | _taskService.UpdateTask(task, TaskStatusEnum.Line_Executing, nextAddress: router.NextPosi, targetAddress: router.NextPosi); |
| | | if (task.TaskType==TaskTypeEnum.EmptyProductBack.ObjToInt()) |
| | | { |
| | | _taskService.TaskCompleted(task.TaskNum); |
| | |
| | | else if (item.StationType == StationTypeEnum.StationType_InStartAndOutEnd.ObjToInt() && deviceProRead != null) |
| | | { |
| | | R_ConveyorLineCPInfo conveyorLineInfoRead = device.Communicator.ReadCustomer<R_ConveyorLineCPInfo>(deviceProRead.DeviceProAddress); |
| | | if (conveyorLineInfoRead != null && conveyorLineInfoRead.EndPos.ToString()==item.StationCode) |
| | | if (conveyorLineInfoRead != null && conveyorLineInfoRead.EndPos.ToString() == item.StationCode) |
| | | { |
| | | short isCanTake = device.GetValue<GroundStationDBName, short>(GroundStationDBName.R_IsCanTake, item.StationCode); |
| | | if (conveyorLineInfoRead.ConveyArrivaled==1 && isCanTake==1) |
| | | if (conveyorLineInfoRead.ConveyArrivaled == 1 && isCanTake == 1) |
| | | { |
| | | //è·åä»»å¡ |
| | | Dt_Task task = _taskRepository.QueryFirst(x => x.NextAddress == item.StationCode && _taskService.TaskInboundTypes.Contains(x.TaskType) && (x.TaskState == TaskStatusEnum.Line_Executing.ObjToInt()) && x.DeviceCode == device.DeviceCode && x.TaskNum == conveyorLineInfoRead.TaskNum.ObjToInt()); |
| | | //è·åç«å° |
| | | if (task!=null) |
| | | if (task != null) |
| | | { |
| | | Dt_StationManger? stationManger = stationMangers.FirstOrDefault(x => x.StationCode == item.StationCode); |
| | | if (stationManger == null) |
| | |
| | | WriteError(item.StationName, $"请æ±åé
è´§ä½è¿åä¿¡æ¯é误,设å¤ç¼å·:{item.StationCode},ä»»å¡å·:{task.TaskNum}"); |
| | | continue; |
| | | } |
| | | _taskService.UpdateTask(task, TaskStatusEnum.AGV_Execute,deviceCode: router.ChildPosiDeviceCode, nextAddress: locationCode, targetAddress: locationCode, currentAddress: router.StartPosi); |
| | | _taskService.UpdateTask(task, TaskStatusEnum.AGV_Execute, deviceCode: router.ChildPosiDeviceCode, currentAddress: router.StartPosi, nextAddress: locationCode, targetAddress: locationCode); |
| | | } |
| | | } |
| | | |
| | | } |
| | | |
| | | |
| | | } |
| | | } |
| | | Dt_StationManger? dt_StationManger = stationMangers.FirstOrDefault(x => x.StationType == StationTypeEnum.StationType_ProductBackTake.ObjToInt()); |
| | | if (dt_StationManger != null) |
| | | { |
| | | DeviceProDTO? deviceProWrite = device.DeviceProDTOs.Where(x => x.DeviceChildCode == dt_StationManger.StationCode && x.DeviceProParamType == nameof(W_ConveyorLineCPDB)).OrderBy(x => x.DeviceProOffset).FirstOrDefault(); |
| | | List<Dt_StationManger> ProductBackStations = stationMangers.Where(x => x.StationType == StationTypeEnum.StationType_ProductBack.ObjToInt()).ToList(); |
| | | for (int i = 0; i < ProductBackStations.Count(); i++) |
| | | { |
| | | short isCanTake = device.GetValue<GroundStationDBName, short>(GroundStationDBName.R_IsCanTake, dt_StationManger.StationCode); |
| | | Dt_StationManger stationManger = ProductBackStations[i]; |
| | | string startDb = "DB29."; |
| | | short stationCurrentStatus = device.Communicator.Read<short>(startDb + stationManger.Remark.ToString()); |
| | | short stationEndStatus = device.Communicator.Read<short>(startDb + (stationManger.Remark.ObjToInt() + 2).ToString()); |
| | | bool endStatus = true; |
| | | if ((i != 2 && i != 5 && i != 8)) |
| | | { |
| | | endStatus = (stationEndStatus == 1); |
| | | } |
| | | //读åçº¿ä½æ®µç¶æ |
| | | if (isCanTake == 1 && stationCurrentStatus == 1 && stationManger.IsOccupied==0 && endStatus) |
| | | { |
| | | device.SetValue(W_ConveyorLineCPDB.StartPos, dt_StationManger.StationCode, dt_StationManger.StationCode); |
| | | device.SetValue(W_ConveyorLineCPDB.EndPos, stationManger.AGVStationCode, dt_StationManger.StationCode); |
| | | device.SetValue(W_ConveyorLineCPDB.Barcode, "C00001", dt_StationManger.StationCode); |
| | | device.SetValue(W_ConveyorLineCPDB.TaskNum, DateTime.Now.ToString("yyMMddHHmmss"), dt_StationManger.StationCode); |
| | | device.SetValue(W_ConveyorLineCPDB.WorkType, 1, dt_StationManger.StationCode); |
| | | device.SetValue(W_ConveyorLineCPDB.WorkMode, 1, dt_StationManger.StationCode); |
| | | device.SetValue(W_ConveyorLineCPDB.CheckPos, 1, dt_StationManger.StationCode); |
| | | //å¯å¨æä»¤ |
| | | device.SetValue(W_ConveyorLineCPDB.ConveyArrival, 1, dt_StationManger.StationCode); |
| | | stationManger.IsOccupied = 1; |
| | | _stationMangerRepository.UpdateData(stationManger); |
| | | Thread.Sleep(2000); |
| | | return Task.CompletedTask; |
| | | } |
| | | else if(stationManger.IsOccupied == 1 && (stationCurrentStatus == 3)) |
| | | { |
| | | stationManger.IsOccupied = 0; |
| | | _stationMangerRepository.UpdateData(stationManger); |
| | | } |
| | | } |
| | | } |
| | | //Dt_StationManger? dt_StationManger = stationMangers.FirstOrDefault(x => x.StationType == StationTypeEnum.StationType_ProductBackTake.ObjToInt()); |
| | | //if (dt_StationManger != null) |
| | | //{ |
| | | // DeviceProDTO? deviceProWrite = device.DeviceProDTOs.Where(x => x.DeviceChildCode == dt_StationManger.StationCode && x.DeviceProParamType == nameof(W_ConveyorLineCPDB)).OrderBy(x => x.DeviceProOffset).FirstOrDefault(); |
| | | // List<Dt_StationManger> ProductBackStations = stationMangers.Where(x => x.StationType == StationTypeEnum.StationType_ProductBack.ObjToInt()).ToList(); |
| | | // for (int i = 0; i < ProductBackStations.Count(); i++) |
| | | // { |
| | | // short isCanTake = device.GetValue<GroundStationDBName, short>(GroundStationDBName.R_IsCanTake, dt_StationManger.StationCode); |
| | | // Dt_StationManger stationManger = ProductBackStations[i]; |
| | | // string startDb = "DB29."; |
| | | // short stationCurrentStatus = device.Communicator.Read<short>(startDb + stationManger.Remark.ToString()); |
| | | // short stationEndStatus = device.Communicator.Read<short>(startDb + (stationManger.Remark.ObjToInt() + 2).ToString()); |
| | | // bool endStatus = true; |
| | | // if ((i != 2 && i != 5 && i != 8)) |
| | | // { |
| | | // endStatus = (stationEndStatus == 1); |
| | | // } |
| | | // //读åçº¿ä½æ®µç¶æ |
| | | // if (isCanTake == 1 && stationCurrentStatus == 1 && stationManger.IsOccupied==0 && endStatus) |
| | | // { |
| | | // device.SetValue(W_ConveyorLineCPDB.StartPos, dt_StationManger.StationCode, dt_StationManger.StationCode); |
| | | // device.SetValue(W_ConveyorLineCPDB.EndPos, stationManger.AGVStationCode, dt_StationManger.StationCode); |
| | | // device.SetValue(W_ConveyorLineCPDB.Barcode, "C00001", dt_StationManger.StationCode); |
| | | // device.SetValue(W_ConveyorLineCPDB.TaskNum, DateTime.Now.ToString("yyMMddHHmmss"), dt_StationManger.StationCode); |
| | | // device.SetValue(W_ConveyorLineCPDB.WorkType, 1, dt_StationManger.StationCode); |
| | | // device.SetValue(W_ConveyorLineCPDB.WorkMode, 1, dt_StationManger.StationCode); |
| | | // device.SetValue(W_ConveyorLineCPDB.CheckPos, 1, dt_StationManger.StationCode); |
| | | // //å¯å¨æä»¤ |
| | | // device.SetValue(W_ConveyorLineCPDB.ConveyArrival, 1, dt_StationManger.StationCode); |
| | | // stationManger.IsOccupied = 1; |
| | | // _stationMangerRepository.UpdateData(stationManger); |
| | | // Thread.Sleep(2000); |
| | | // return Task.CompletedTask; |
| | | // } |
| | | // else if(stationManger.IsOccupied == 1 && (stationCurrentStatus == 3)) |
| | | // { |
| | | // stationManger.IsOccupied = 0; |
| | | // _stationMangerRepository.UpdateData(stationManger); |
| | | // } |
| | | // } |
| | | //} |
| | | |
| | | } |
| | | return Task.CompletedTask; |