//对位的光电状态 private void RfPosMsgSend(FerryPosSet set, DevFerry ferry) { if (!PubTask.Rf.SendFerryLightPos(set.MEID, ferry.UpSite, ferry.DownSite, ferry.UpLight, ferry.DownLight) && mTimer.IsOver(TimerTag.RfFerrySiteUpdateSendOffline, ferry.DeviceID, 60)) { StopRfPosSet(set.MEID); } }
/// <summary> /// 1.运输车任务状态 /// 2.满砖/空砖/正常取货卸货 /// </summary> /// <param name="task"></param> private void CheckDev(CarrierTask task) { task.CheckAlert(); if (task.OperateMode == DevOperateModeE.手动) { if (task.Task != DevCarrierTaskE.终止 && task.Task != DevCarrierTaskE.无) { DoTask(task.ID, DevCarrierTaskE.终止); } Track track = PubMaster.Track.GetTrack(task.TrackId); if (track.Type == TrackTypeE.摆渡车_入 || track.Type == TrackTypeE.摆渡车_出) { PubTask.Ferry.StopFerryByFerryTrackId(track.id); } } if (task.Status != DevCarrierStatusE.停止) { return; } if (task.OperateMode == DevOperateModeE.无) { task.DoModeUpdate(DevCarrierWorkModeE.生产); } if (task.DevReset == DevCarrierResetE.位 && task.DevStatus.ActionType == DevCarrierSignalE.位) { task.DevReset = DevCarrierResetE.无动作; } //if (task.OperateMode == DevOperateModeE.手动模式) return; //if (task.WorkMode != DevCarrierWorkModeE.生产模式) return; #region [检查任务] #region [倒库完成] //倒库完成后小车回到空轨道今天等待,倒库任务完成,同时有空轨道信息 //if (task.Task == DevCarrierTaskE.后退至轨道倒库 // && task.FinishTask == DevCarrierTaskE.后退至轨道倒库) //{ // if(task.Signal == DevCarrierSignalE.空轨道) // { // PubTask.Trans.ShiftTrans(task.ID, task.TrackId); // } //} //if() #endregion #region [空砖] if (task.Task == DevCarrierTaskE.后退取砖 && task.FinishTask == DevCarrierTaskE.后退取砖) { Track track = PubMaster.Track.GetTrack(task.TrackId); if (track.Type == TrackTypeE.储砖_出 || track.Type == TrackTypeE.储砖_出入) { switch (task.Signal) { case DevCarrierSignalE.空轨道: if (task.Load == DevCarrierLoadE.无货) { PubMaster.Track.UpdateStockStatus(track.id, TrackStockStatusE.空砖, "上砖取空"); PubMaster.Goods.ClearTrackEmtpy(track.id); PubMaster.Track.AddTrackLog((ushort)task.AreaId, task.ID, track.id, TrackLogE.空轨道, "无货"); } else { PubMaster.Track.AddTrackLog((ushort)task.AreaId, task.ID, track.id, TrackLogE.空轨道, "有货"); } break; } task.DevReset = DevCarrierResetE.位; } } if (task.Signal == DevCarrierSignalE.空轨道 && task.Task != DevCarrierTaskE.后退取砖) { task.DevReset = DevCarrierResetE.位; } #endregion #region [非空非满] if (task.Task == DevCarrierTaskE.前进放砖 && task.FinishTask == DevCarrierTaskE.前进放砖 && task.Signal == DevCarrierSignalE.非空非满) { task.DevReset = DevCarrierResetE.位; } #endregion #region [满砖] if (task.Signal == DevCarrierSignalE.满轨道 && task.Task == task.FinishTask) { Track givetrack = PubMaster.Track.GetTrackByCode(task.GiveTrackCode); if (givetrack != null && (givetrack.Type == TrackTypeE.储砖_入 || givetrack.Type == TrackTypeE.储砖_出入)) { ushort storecount = PubMaster.Track.AddTrackLog((ushort)task.AreaId, task.ID, givetrack.id, TrackLogE.满轨道, ""); //ushort areafullqty = PubMaster.Area.GetAreaFullQty(task.AreaId); ushort areafullqty = 8; // 金凯瑞直接8车算了 - -。 if (storecount >= areafullqty) { //PubMaster.Track.SetTrackEaryFull(givetrack.id, true, DateTime.Now); PubMaster.Track.UpdateStockStatus(givetrack.id, TrackStockStatusE.满砖, "下砖放满"); PubMaster.Track.UpdateRecentGood(givetrack.id, 0); PubMaster.Track.UpdateRecentTile(givetrack.id, 0); } } else if (givetrack != null) { PubMaster.Warn.AddDevWarn(WarningTypeE.CarrierFullSignalFullNotOnStoreTrack, (ushort)task.ID); PubMaster.Track.AddTrackLog((ushort)task.AreaId, task.ID, givetrack.id, TrackLogE.满轨道, "非储砖轨道"); } task.DevReset = DevCarrierResetE.位; } //if((task.Site > 300 && task.Site < 400) // || (task.Site > 700 && task.Site <800)) //{ // if(task.Signal == DevCarrierSignalE.满轨道) // { // task.DevReset = DevCarrierResetE.复位; // } //} #endregion #region [倒库] if (task.Task == DevCarrierTaskE.后退至轨道倒库 && task.Signal == DevCarrierSignalE.非空非满 && task.Status == DevCarrierStatusE.停止 && mTimer.IsOver(TimerTag.CarrierSortTakeGive, (ushort)task.ID, 5, 10)) { task.DevReset = DevCarrierResetE.位; } #endregion #region [逻辑警告] task.CheckLogicAlert(); #endregion }