示例#1
0
        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));
            }
        }
示例#2
0
        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));
            }
        }
示例#3
0
        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
                //}
            }
        }
示例#4
0
        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();
                }
            }
        }
示例#5
0
 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();
         }
     }
 }
示例#6
0
        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);
        }
示例#7
0
        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();
                }
            }
        }