private void SendOutMission(AgvOutMissonModel mission) { SendLogEvent?.Invoke(new StationClientState { State = StationClientStateEnum.INFO, Message = "出库请求:" + mission.Type.EnumToString() }.ToString()); SendSingnalrEvent?.Invoke(AgvSendActionEnum.SendOutMission.EnumToString(), mission); }
public bool CanRequest() { warehouse_outmission = missionContext.undo_outmissions.Where(x => x.CarryProcess == CarryMissonProcessEnum.NEW).FirstOrDefault(); warehouse_outmission_last = missionContext.undo_outmissions.Where(x => x.CarryProcess > CarryMissonProcessEnum.NEW && x.Process < AgvMissonProcessEnum.AGVPICKEDANDLEAVE).FirstOrDefault(); //TODO:增加料道信号检查 return(warehouse_outmission != null && warehouse_outmission_last == null); }
public void OnAgvOutMissonEvent(AgvOutMissonModel mission) { //毛坯输入 if (mission.Id.Equals(Station_Id + "_RAWIN")) { if ((mission.Process == AgvMissonProcessEnum.FINISHED || mission.Process == AgvMissonProcessEnum.CLOSE) && mission.Process != AgvMissonProcessEnum.CANCEL && mission.Process != AgvMissonProcessEnum.CANCELED) { bool raw_in = false; var ret_raw_in = StationDevice.GetRawInRequireState(ref raw_in); if (ret_raw_in == true && raw_in == true) { Console.WriteLine("RAWIN_" + DateTime.Now); StationDevice.SetRawInFin(true); bool raw_in_confirm = true; while (raw_in_confirm) { ret_raw_in = StationDevice.GetRawInRequireState(ref raw_in_confirm); if (ret_raw_in == true && raw_in_confirm == false) { StationDevice.SetRawInFin(false); } Thread.Sleep(1000); } } } } //成品空箱输入 if (mission.Id.Equals(Station_Id + "_EMPTYIN")) { if ((mission.Process == AgvMissonProcessEnum.FINISHED || mission.Process == AgvMissonProcessEnum.CLOSE) && mission.Process != AgvMissonProcessEnum.CANCEL && mission.Process != AgvMissonProcessEnum.CANCELED) { bool empty_in = false; var ret_empty_in = StationDevice.GetEmptyInState(ref empty_in); if (ret_empty_in == true && empty_in == true) { StationDevice.SetEmptyInFin(true); bool empty_in_confirm = true; while (empty_in_confirm) { ret_empty_in = StationDevice.GetEmptyInState(ref empty_in_confirm); if (ret_empty_in == true && empty_in_confirm == false) { StationDevice.SetEmptyInFin(false); } Thread.Sleep(1000); } } } } }
public void PushOutMission(AgvOutMissonModel mission) { var count = missionContext.MissionOutNodes.Where(x => x.Id == mission.Id && (x.Process != AgvMissonProcessEnum.CLOSE || x.CarryProcess != CarryMissonProcessEnum.CLOSE)).Count(); if (count == 0) { mission.AgvProcessChangeEvent += (obj, state) => AgvMissonChangeEvent?.Invoke(obj, state); AgvMissonChangeEvent?.Invoke(mission, true); missionContext.MissionOutNodes.Add(mission); SendAgvMissonEvent?.Invoke(mission); } }
public bool CanRequest() { if ((missionContext.undo_inmissions.Count() + missionContext.undo_outmissions.Count()) < 2) { new_outmission = missionContext.MissionOutNodes.Where(x => x.Process == AgvMissonProcessEnum.NEW && x.CarryProcess == CarryMissonProcessEnum.NEW).FirstOrDefault(); if (new_outmission != null) { //检索出库任务之前是否有前置的入库任务 var brother_mission_type = missionContext.brotherMissionType[new_outmission.Type]; var brother_inmission = missionContext.MissionOutNodes .Where(x => x.ClientId == new_outmission.ClientId && x.Type == brother_mission_type && x.Process == AgvMissonProcessEnum.NEW && x.CarryProcess == CarryMissonProcessEnum.NEW) .FirstOrDefault(); return(brother_inmission == null); } } return(false); }
//料库执行出库 private bool WareHouseOutMission(AgvOutMissonModel mission) { if (missionContext.carryDevice as RightCarryService.TestControlDevice != null) { mission.CarryProcess = CarryMissonProcessEnum.FINISHED; return(true); } TestRightCarryService <IControlDevice> carry = new TestRightCarryService <IControlDevice>(missionContext.carryDevice); int quantity = 0; var ret = carry.CarryOut(mission.ProductId, mission.MaterialId, ref quantity); if (ret == false) { mission.Process = AgvMissonProcessEnum.CANCEL; mission.CarryProcess = CarryMissonProcessEnum.CANCEL; carry.ReleaseLock(); return(false); } mission.CarryProcess = CarryMissonProcessEnum.FINISHED; carry.ReleaseLock(); return(true); }
public bool CanRequest() { carrycancel_outmission = missionContext.MissionOutNodes.Where(x => x.CarryProcess == CarryMissonProcessEnum.CANCEL).FirstOrDefault(); return(carrycancel_outmission != null); }
public bool CanRequest() { agvcancel_outmission = missionContext.MissionOutNodes.Where(x => x.Process == AgvMissonProcessEnum.CANCEL).FirstOrDefault(); return(agvcancel_outmission != null); }
public SendOutMission(AgvOutMissonModel model) { Model = model; }
public receiveOutMissionFinMessage(AgvOutMissonModel model) { Model = model; }
public SendMissonOutOrder(AgvOutMissonModel model) { Model = model; }
public SendOutMissionFinMessage(AgvOutMissonModel model) { Model = model; }
public bool CanRequest() { agv_outmission = missionContext.undo_outmissions.Where(x => x.Process == AgvMissonProcessEnum.START).FirstOrDefault(); return(agv_outmission != null); }
public void SendOutMissionFinMessage(AgvOutMissonModel message) { Clients.All.receiveOutMissionFinMessage(message); }
public bool CanRequest() { agv_outmissions_atprepick = missionContext.undo_outmissions.Where(x => x.Process == AgvMissonProcessEnum.AGVATPREPICK && x.CarryProcess == CarryMissonProcessEnum.FINISHED).FirstOrDefault(); return(agv_outmissions_atprepick != null); }
public bool CanRequest() { currentMisson = missionContext.MissionOutNodes.FirstOrDefault(x => x.CarryProcess == CarryMissonProcessEnum.FINISHED && x.Process > AgvMissonProcessEnum.AGVPICKEDANDLEAVE); return(currentMisson != null); }
public bool CanRequest() { agvfinished_outmission = missionContext.MissionOutNodes.Where(x => x.Process == AgvMissonProcessEnum.FINISHED).FirstOrDefault(); return(agvfinished_outmission != null); }