bool divertArrival(Load load) { IATCPalletLoadType atcLoad = load as IATCPalletLoadType; if (LoadDestination && liftTableConveyor.Name == atcLoad.Destination && !atcLoad.LoadWaitingForWCS) { atcLoad.Stop(); atcLoad.LoadWaitingForWCS = true; atcLoad.Location = liftTableConveyor.Name; palletPLC.SendTransportFinishedTelegram(atcLoad); return(true); //Send a message to WMS and wait for the routing } List <Direction> validRoutes = new List <Direction>(); Experior.Dematic.Base.EuroPallet caseload = load as Experior.Dematic.Base.EuroPallet; if (atcLoad.Destination != null && liftTableConveyor.LeftMode == Modes.Divert && LeftRoutes != null && LeftRoutes.Contains(atcLoad.Destination)) { validRoutes.Add(Direction.Left); } if (atcLoad.Destination != null && liftTableConveyor.RightMode == Modes.Divert && RightRoutes != null && RightRoutes.Contains(atcLoad.Destination)) { validRoutes.Add(Direction.Right); } if (atcLoad.Destination != null && liftTableConveyor.StraightMode == Modes.Divert && StraightRoutes != null && StraightRoutes.Contains(atcLoad.Destination)) { validRoutes.Add(Direction.Straight); } if (validRoutes.Count == 0 && liftTableConveyor.DefaultRouting == Direction.None) { if (liftTableConveyor.StraightMode == Modes.Divert) { validRoutes.Add(Direction.Straight); } if (liftTableConveyor.RightMode == Modes.Divert) { validRoutes.Add(Direction.Right); } if (liftTableConveyor.LeftMode == Modes.Divert) { validRoutes.Add(Direction.Left); } } //Check if the load has the priority bit set bool priority = false; if (atcLoad.Destination != null && PriorityRoutes != null && PriorityRoutes.Contains(atcLoad.Destination)) { priority = true; } liftTableConveyor.RouteLoad(load, validRoutes, priority); return(true); //returns true if handled by this controller }
private void TransportFinished(PalletCommunicationPoint commPoint, IATCPalletLoadType palletLoad) { if (AlwaysArrival || palletLoad.Location == palletLoad.Destination) { palletLoad.Location = commPoint.Name; casePLC.SendTransportFinishedTelegram(palletLoad); if (LoadWait) { palletLoad.LoadWaitingForWCS = true; palletLoad.Stop(); } } }
//TODO: For the loads that are stopping on the case conveyor at these communication points it //has to be placed in the correct position otherwise its can be an issue (I have found that placing //them in exactly the correct place compaired to a accumulation sensor is a good position as all atction point are triggered private void TransportRequest(PalletCommunicationPoint commPoint, IATCPalletLoadType palletLoad) { if (AlwaysArrival || palletLoad.Location == palletLoad.Destination || string.IsNullOrEmpty(palletLoad.Destination)) { palletLoad.Location = commPoint.Name; //palletLoad.MTS = commPoint.ControllerName; casePLC.SendTransportRequestTelegram(palletLoad); if (LoadWait) { //[BG] Not happy with this, if this is used then it needs to be understood what the issues are with it //(Like stopping on a belt is bad and you need to put the Comm Point in the right place on accumulation conveyor) palletLoad.LoadWaitingForWCS = true; palletLoad.Stop(); } } }
private void TransportRequestOrFinished(PalletCommunicationPoint commPoint, IATCPalletLoadType palletLoad) { if (palletLoad.Location == palletLoad.Destination) { //Send TransportFinishedTelegram palletLoad.Location = commPoint.Name; casePLC.SendTransportFinishedTelegram(palletLoad); } else { //Send TransportRequestTelegram palletLoad.Location = commPoint.Name; casePLC.SendTransportRequestTelegram(palletLoad); } if (LoadWait) { palletLoad.LoadWaitingForWCS = true; palletLoad.Stop(); } }