private void TransportFinished(CommunicationPoint commPoint, IATCCaseLoadType caseLoad) { if (AlwaysArrival || caseLoad.Location == caseLoad.Destination) { caseLoad.Location = commPoint.Name; casePLC.SendTransportFinishedTelegram(caseLoad); if (LoadWait) { caseLoad.LoadWaitingForWCS = true; caseLoad.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(CommunicationPoint commPoint, IATCCaseLoadType caseLoad) { if (AlwaysArrival || caseLoad.Location == caseLoad.Destination || string.IsNullOrEmpty(caseLoad.Destination)) { caseLoad.Location = commPoint.Name; //caseLoad.MTS = commPoint.ControllerName; casePLC.SendTransportRequestTelegram(caseLoad); 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) caseLoad.LoadWaitingForWCS = true; caseLoad.Stop(); } } }
bool divertArrival(Load load) { IATCCaseLoadType atcLoad = load as IATCCaseLoadType; if (LoadDestination && mergeDivertConveyor.Name == atcLoad.Destination && !atcLoad.LoadWaitingForWCS) { atcLoad.Stop(); atcLoad.LoadWaitingForWCS = true; atcLoad.Location = mergeDivertConveyor.Name; casePLC.SendTransportFinishedTelegram(atcLoad); return(true); //Send a message to WMS and wait for the routing } List <Direction> validRoutes = new List <Direction>(); Case_Load caseload = load as Case_Load; if (atcLoad.Destination != null && mergeDivertConveyor.LeftMode == Modes.Divert && LeftRoutes != null && LeftRoutes.Contains(atcLoad.Destination)) { validRoutes.Add(Direction.Left); } if (atcLoad.Destination != null && mergeDivertConveyor.RightMode == Modes.Divert && RightRoutes != null && RightRoutes.Contains(atcLoad.Destination)) { validRoutes.Add(Direction.Right); } if (atcLoad.Destination != null && mergeDivertConveyor.StraightMode == Modes.Divert && StraightRoutes != null && StraightRoutes.Contains(atcLoad.Destination)) { validRoutes.Add(Direction.Straight); } //Check if the load has the priority bit set bool priority = false; if (atcLoad.Destination != null && PriorityRoutes != null && PriorityRoutes.Contains(atcLoad.Destination)) { priority = true; } mergeDivertConveyor.RouteLoad(load, validRoutes, priority); return(true); //returns true if handled by this controller }
private void TransportRequestOrFinished(CommunicationPoint commPoint, IATCCaseLoadType caseLoad) { if (caseLoad.Location == caseLoad.Destination) { //Send TransportFinishedTelegram caseLoad.Location = commPoint.Name; casePLC.SendTransportFinishedTelegram(caseLoad); } else { //Send TransportRequestTelegram caseLoad.Location = commPoint.Name; casePLC.SendTransportRequestTelegram(caseLoad); } if (LoadWait) { caseLoad.LoadWaitingForWCS = true; caseLoad.Stop(); } }