Beispiel #1
0
 void theMultishuttle_OnArrivedAtElevatorConvPosB(object sender, ArrivedOnElevatorEventArgs e)
 {
     if (e._elevator.CurrentTask.SourceLoadB.ConvType() == ConveyorTypes.Pick && e._elevator.CurrentTask.DestinationLoadB.ConvType() == ConveyorTypes.Drop)
     {
         //Deals with a sinlge or double load from PS to DS
         e._elevator.ElevatorConveyor.Route.Motor.Backward();
         e._elevator.CurrentTask.Flow           = TaskType.Outfeed;
         e._elevator.ElevatorConveyor.UnLoading = true;
     }
 }
Beispiel #2
0
        /// <summary>
        /// Used in theMultishuttle_OnArrivedAtElevatorConvPosB to create the arrival on the elevator message
        /// </summary>
        /// <param name="e"> The ArrivedOnElevatorEventArgs from the theMultishuttle_OnArrivedAtElevatorConvPosB event</param>
        private void SendElevatorArrivalMessage(ArrivedOnElevatorEventArgs e)
        {
            ((CaseData)((Case_Load)e._loadB).Case_Data).CurrentPosition = string.Format("E{0}{1}{2}001  ",
                                                                                        ((ElevatorTask)e._task).SourceLoadB.AisleNumber().ToString().PadLeft(2, '0'),
                                                                                        theMultishuttle.ElevatorGroup(e._locationName),
                                                                                        ((char)((ElevatorTask)e._task).SourceLoadB.Side()));

            string body = mheController_Multishuttle.CreateMissionDataSetBody((CaseData)(((Case_Load)e._loadB).Case_Data));

            mheController_Multishuttle.SendTelegram("02", body, 1);
        }
Beispiel #3
0
        void theMultishuttle_OnArrivedAtElevatorConvPosA(object sender, ArrivedOnElevatorEventArgs e)
        {
            if (e._loadB == null) //Only send the arrival for the load once when it arrves at position A - Do not send again if a double pick is detected (LoadB is populated)
            {
                Case_Load load = e._loadA;
                ((DCICaseData)load.Case_Data).Current = string.Format("MSAI{0}E{1}01LO00", e._elevator.AisleNumber.ToString().PadLeft(2, '0'), (char)e._elevator.Side);
                string sendMessage = controller.CreateTelegramFromLoad(TelegramTypes.TUNotification, load);
                controller.SendTelegram(sendMessage);

                if (((ElevatorTask)e._task).NumberOfLoadsInTask == 1 && ((ElevatorTask)e._task).Flow == TaskType.Outfeed)
                {
                    ((ElevatorTask)e._task).OptimiseTask(e._elevator);
                }
            }
        }
Beispiel #4
0
        void theMultishuttle_OnArrivedAtElevatorConvPosB(object sender, ArrivedOnElevatorEventArgs e)
        {
            if (e._elevator.CurrentTask.SourceLoadB.ConvType() == ConveyorTypes.Pick && e._elevator.CurrentTask.DestinationLoadB.ConvType() == ConveyorTypes.Drop)
            {
                //Deals with a sinlge or double load from PS to DS
                e._elevator.ElevatorConveyor.Route.Motor.Backward();
                e._elevator.CurrentTask.Flow           = TaskType.Outfeed;
                e._elevator.ElevatorConveyor.UnLoading = true;

                if (((ElevatorTask)e._task).NumberOfLoadsInTask == 1)
                {
                    SendElevatorArrivalMessage(e);
                }
            }
            else if (e._elevator.CurrentTask.LoadCycle == Cycle.Single && e._elevator.CurrentTask.NumberOfLoadsInTask == 1)
            {
                SendElevatorArrivalMessage(e);
            }
        }
Beispiel #5
0
        void theMultishuttle_OnArrivedAtElevatorConvPosA(object sender, ArrivedOnElevatorEventArgs e)
        {
            if (e._elevator.CurrentTask.LoadCycle == Cycle.Single && e._elevator.ElevatorConveyor.Route.Loads.Count == 2 && e._elevator.CurrentTask.Flow == TaskType.Outfeed)
            {
                ((CaseData)e._loadA.Case_Data).CurrentPosition = string.Format("E{0}{1}{2}001  ",
                                                                               e._locationName.AisleNumber().ToString().PadLeft(2, '0'),
                                                                               theMultishuttle.ElevatorGroup(e._locationName),
                                                                               (char)e._locationName.Side());

                string bodyA = mheController_Multishuttle.CreateMissionDataSetBody((CaseData)e._loadA.Case_Data);
                mheController_Multishuttle.SendTelegram("02", bodyA, 1);
            }
            //else if (e._loadA != null && e._loadB != null)
            //else if (e._elevator.CurrentTask.LoadCycle == Cycle.Double && e._elevator.ElevatorConveyor.Route.Loads.Count == 2)
            else if (e._elevator.ElevatorConveyor.LocationA.Active && e._elevator.ElevatorConveyor.LocationB.Active)
            {
                Case_Load loadA, loadB;
                loadA = e._loadA;
                loadB = Case_Load.GetCaseFromIdentification(e._elevator.CurrentTask.LoadB_ID);

                string posA = "001", posB = "002";
                if (e._elevator.CurrentTask.Flow == TaskType.Outfeed)
                {
                    posA = "002";
                    posB = "001";
                }
                ((CaseData)loadA.Case_Data).CurrentPosition = string.Format("E{0}{1}{2}{3}  ",
                                                                            e._locationName.AisleNumber().ToString().PadLeft(2, '0'),
                                                                            theMultishuttle.ElevatorGroup(e._locationName),
                                                                            (char)e._locationName.Side(),
                                                                            posA);

                ((CaseData)loadB.Case_Data).CurrentPosition = string.Format("E{0}{1}{2}{3}  ",
                                                                            e._locationName.AisleNumber().ToString().PadLeft(2, '0'),
                                                                            theMultishuttle.ElevatorGroup(e._locationName),
                                                                            (char)e._locationName.Side(),
                                                                            posB);

                string bodyA = mheController_Multishuttle.CreateMissionDataSetBody((CaseData)loadA.Case_Data);
                string bodyB = mheController_Multishuttle.CreateMissionDataSetBody((CaseData)loadB.Case_Data);
                mheController_Multishuttle.SendTelegram("02", bodyA + "," + bodyB, 2);
            }
        }