public void rackConvLocB_Enter(ActionPoint sender, Core.Loads.Load load) { if (LocationB.LocName.ConvType() == ConveyorTypes.InfeedRack) { load.Stop(); Cycle?unloadCycle = null; if (RelevantElevatorTask(LocationA, LocationB)) { unloadCycle = Elevator.CurrentTask.UnloadCycle; } TryClearElevatorTask(Elevator.CurrentTask); Elevator.ParentMultiShuttle.ArrivedAtInfeedRackConvPosB(new RackConveyorArrivalEventArgs(LocationB.LocName, (Case_Load)load, Elevator, this, unloadCycle)); } else if (LocationB.LocName.ConvType() == ConveyorTypes.OutfeedRack) //don't care what loc we use to find the conveyor { if (!RelevantElevatorTask(load) || (RelevantElevatorTask(load) && Elevator.CurrentTask.NumberOfLoadsInTask == 1 && Elevator.Lift.Route.Motor.Running)) { //If no task then stop, if a relevant task then must be a double load onto the elevator and this is the second load so don't stop //Or the task has been created when load was at A and therefore it is relevant load.Stop(); //When the load arrives at the front position also see if the elevator wants to select a new task as it will not select a sequenced task unless it is at the front position Elevator.SetNewElevatorTask(); } if (Elevator.ParentMultiShuttle.shuttlecars[Level].CurrentTask == null) { Elevator.ParentMultiShuttle.shuttlecars[Level].SetNewShuttleTask(); } Elevator.ParentMultiShuttle.ArrivedAtOutfeedRackConvPosB(new RackConveyorArrivalEventArgs(LocationB.LocName, (Case_Load)load, Elevator, this, null)); } }
public void rackConvLocB_Enter(ActionPoint sender, Core.Loads.Load load) { if (LocationB.LocName.ConvType() == ConveyorTypes.InfeedRack) { load.Stop(); Cycle?unloadCycle = null; if (RelevantElevatorTask(LocationA, LocationB)) { unloadCycle = Elevator.CurrentTask.UnloadCycle; } Elevator.ParentMultiShuttle.ArrivedAtInfeedRackConvPosB(new RackConveyorArrivalEventArgs(LocationB.LocName, (Case_Load)load, Elevator, this, unloadCycle)); TryClearElevatorTask(Elevator.CurrentTask); } else if (LocationB.LocName.ConvType() == ConveyorTypes.OutfeedRack) //don't care what loc we use to find the conveyor { if (!RelevantElevatorTask(load)) //If no task then stop, if a relevant task then must be a double load onto the elevator and this is the second load so don't stop //if (Elevator.CurrentTask == null || (Elevator.CurrentTask != null && !Elevator.CurrentTask.RelevantElevatorTask(load))) //If no task then stop, if a relevant task then must be a double load onto the elevator and this is the second load so don't stop { load.Stop(); } Elevator.ParentMultiShuttle.ArrivedAtOutfeedRackConvPosB(new RackConveyorArrivalEventArgs(LocationA.LocName, (Case_Load)load, Elevator, this, null)); } }
public void rackConvLocA_Enter(ActionPoint sender, Core.Loads.Load load) { if (LocationA.LocName.ConvType() == ConveyorTypes.OutfeedRack) { Elevator.ParentMultiShuttle.ArrivedAtOutfeedRackConvPosA(new RackConveyorArrivalEventArgs(LocationA.LocName, (Case_Load)load, Elevator, this, null)); Elevator.ParentMultiShuttle.shuttlecars[Level].CurrentTask = null; //If outfeed then shuttle must have finished its current task if (TransportSection.Route.Loads.Count == 2) { load.Stop(); } else { load.Release(); } } else if (LocationA.LocName.ConvType() == ConveyorTypes.InfeedRack) { Cycle?unloadCycle = null; //if (RelevantElevatorTask(Elevator.CurrentTask)) if (RelevantElevatorTask(LocationA, LocationB)) { unloadCycle = Elevator.CurrentTask.UnloadCycle; } Elevator.ParentMultiShuttle.ArrivedAtInfeedRackConvPosA(new RackConveyorArrivalEventArgs(LocationA.LocName, (Case_Load)load, Elevator, this, unloadCycle)); TryClearElevatorTask(Elevator.CurrentTask); if (TransportSection.Route.Loads.Count > 1) { load.Stop(); } if (Elevator.ElevatorConveyor.TransportSection.Route.Loads.Count > 0) //release the elevator load from A { Elevator.ElevatorConveyor.UnLoading = true; Elevator.ElevatorConveyor.LocationA.Release(); //Elevator.ReleaseLocationAFFS(Elevator.ElevatorConveyor.LocationA.ActiveLoad, "RackConveyor 309"); } //if ((Elevator.CurrentTask != null && Elevator.CurrentTask.UnloadCycle == Cycle.Single && (Elevator.CurrentTask.BarcodeLoadA == ((Case_Load)load).SSCCBarcode || Elevator.CurrentTask.BarcodeLoadB == ((Case_Load)load).SSCCBarcode)) && Elevator.ElevatorConveyor.Route.Loads.Count == 0 ) // { // Elevator.CurrentTask = null; // Elevator task is now complete //} } }
private void Lower2_OnEnter(ActionPoint sender, Core.Loads.Load load) { if ((string)load.UserData != "PICKED") { if (!upper2.Active) { load.Stop(); load.Translate(() => load.Switch(upper2, true), new Microsoft.DirectX.Vector3(0, 0.5f, 0), 1.5f); } else { Log.Write("There is a problem in the picking station, tell Barry he would love to fix it"); Pause(); } } else //load has been picked and either lowered or picked at the first station { if (lastUpper2 == load) { lowering2 = null; } if (NextRouteStatus.Available != Experior.Dematic.Base.RouteStatuses.Available) { load.Stop(); } else { releaseLower2(); } } //if the load has arrived from the if (lower1ToLower2 == load) { lower1ToLower2 = null; if (waitingToLower1 != null) { StartLower1(); } else { InfeedCheck(); } } }
private void CreateLoads() { foreach (var ap in Core.Routes.ActionPoint.Items.Values) { if (ap.Name == "AP1" || ap.Name == "AP2" || ap.Name == "AP3" || ap.Name == "AP4" || ap.Name == "AP5" || ap.Name == "AP6" || ap.Name == "AP7" || ap.Name == "AP8") { Core.Loads.Load load = Core.Loads.Load.CreateBox(0.6f, 0.4f, 0.6f, Color.OldLace); load.Switch(ap); load.Stop(); } } }
private void Drop(Core.Loads.Load load, Core.Routes.ActionPoint ap) { float y = vertMover.Position.Y - leftframe.Height + horzMover.Height / 2; loadMover.UnAttach(); load.Switch(ap); load.Stop(); yMoverTimer.Start(new Microsoft.DirectX.Vector3(0, -y, 0), Math.Abs(y) * 2); Core.Timer.Action(() => Completed(load), Math.Abs(y) * 2 + 1); }
public void rackConvLocA_Enter(ActionPoint sender, Core.Loads.Load load) { if (LocationA.LocName.ConvType() == ConveyorTypes.OutfeedRack) { Elevator.ParentMultiShuttle.ArrivedAtOutfeedRackConvPosA(new RackConveyorArrivalEventArgs(LocationA.LocName, (Case_Load)load, Elevator, this, null)); Elevator.ParentMultiShuttle.shuttlecars[Level].CurrentTask = null; //If outfeed then shuttle must have finished its current task if (TransportSection.Route.Loads.Count == 2) { load.Stop(); } else { load.Release(); } } else if (LocationA.LocName.ConvType() == ConveyorTypes.InfeedRack) { Cycle?unloadCycle = null; if (RelevantElevatorTask(LocationA, LocationB)) { unloadCycle = Elevator.CurrentTask.UnloadCycle; } TryClearElevatorTask(Elevator.CurrentTask); Elevator.ParentMultiShuttle.ArrivedAtInfeedRackConvPosA(new RackConveyorArrivalEventArgs(LocationA.LocName, (Case_Load)load, Elevator, this, unloadCycle)); if (TransportSection.Route.Loads.Count > 1) { load.Stop(); } if (Elevator.ElevatorConveyor.TransportSection.Route.Loads.Count > 0) //release the elevator load from A { Elevator.ElevatorConveyor.UnLoading = true; Elevator.ElevatorConveyor.LocationA.Release(); } } }