public override void Reset() { foreach (var c in craneLoads) { c.UserDeletable = true; c.Deletable = true; c.Dispose(); c.Route?.Remove(c); } craneLoads.Clear(); compartmentempty = false; compartmentoccupied = false; base.Reset(); Core.Environment.Invoke(() => { Core.Environment.Invoke(() => { foreach (var pickConveyor in pickConveyors) { pickConveyor.RouteAvailable = RouteStatuses.Blocked; pickConveyor.ThisRouteStatus.Available = RouteStatuses.Blocked; } }); }); CurrentHalfCycle = null; PalletCraneReset(new EventArgs()); }
private void DropDropStation(PalletCraneHalfCycle halfCycle) { if (halfCycle.TuIdent != null) { Control.DropLoad(0, false, "DropDS", HBWMiniLoadJob.LHDs.LHD1); control.JobQueue.Last().UserData = halfCycle; } Control.StartCrane(); }
public bool StartPalletCraneHalfCycle(PalletCraneHalfCycle halfCycle) { if (CurrentHalfCycle != null) //reject if the crane is running, there is a CurrentHalfCycle { return(false); } CurrentHalfCycle = halfCycle; if (halfCycle.Cycle == PalletCraneCycle.PickPS) //This will pick whatever is at the pick station { Control.Goto(halfCycle.Height, halfCycle.Length, "GotoPS"); Control.JobQueue[0].UserData = halfCycle; Control.StartCrane(); return(true); } if (halfCycle.Cycle == PalletCraneCycle.DropDS) { Control.Goto(halfCycle.Height, halfCycle.Length, "GotoDS"); Control.JobQueue[0].UserData = halfCycle; Control.StartCrane(); return(true); } if (halfCycle.Cycle == PalletCraneCycle.DropRack) { Control.Goto(halfCycle.Height, halfCycle.Length, "GotoRack"); Control.JobQueue[0].UserData = halfCycle; Control.DropLoad(DepthTime(halfCycle.Depth), true, "DropRack", halfCycle.Lhd == 1 ? HBWMiniLoadJob.LHDs.LHD1 : HBWMiniLoadJob.LHDs.LHD2); Control.JobQueue[1].UserData = halfCycle; Control.StartCrane(); return(true); } if (halfCycle.Cycle == PalletCraneCycle.PickRack) { float depth = (AisleWidth / 2) + ((RackWidth / (DepthsInRack + 1)) * halfCycle.Depth); holdingConveyor.LocalPosition = new Vector3(halfCycle.Length + (LHDWidth / 2), halfCycle.Height, halfCycle.RackSide == Side.Left ? depth : -depth); Control.Goto(halfCycle.Height, halfCycle.Length, "GotoRack"); Control.JobQueue[0].UserData = halfCycle; var load = CreateLoad(halfCycle.PalletData); Control.PickLoad(DepthTime(halfCycle.Depth), new List <Load>() { load }, true, "PickRack", halfCycle.Lhd == 1 ? HBWMiniLoadJob.LHDs.LHD1 : HBWMiniLoadJob.LHDs.LHD2); Control.JobQueue[1].UserData = halfCycle; Control.StartCrane(); return(true); } return(false); }
private void PalletCraneTaskComplete(PalletCraneTaskCompleteEventArgs eventArgs) { CurrentHalfCycle = null; OnPalletCraneTaskComplete?.Invoke(this, eventArgs); }
public PalletCraneTaskCompleteEventArgs(PalletCraneHalfCycle task) { PalletCraneTask = task; }