Beispiel #1
0
        bool WaitForP2ATransition(ref PassiveToActivePinBits trackBits, PassiveToActivePinBits waitForBits, PassiveToActivePinBits deltaPinsMask)
        {
            IValueAccessor p2aPinsStateIVA = SelectedPassiveToActivePinsStateIVA;

            PassiveToActivePinBits fixedPinsMask = PassiveToActivePinBits.PinsBitMask & ~deltaPinsMask;

            for (; ;)
            {
                IPassiveToActivePinsState p2aPinsState = new PassiveToActivePinsState(p2aPinsStateIVA.Update().VC);

                PassiveToActivePinBits packedWord = p2aPinsState.PackedWord;

                if (packedWord == waitForBits)
                {
                    trackBits = packedWord;
                    return(true);
                }

                if ((packedWord & fixedPinsMask) != (trackBits & fixedPinsMask))
                {
                    SetCurrentActivity(ActivitySelect.WaitForPinsReady, Utils.Fcns.CheckedFormat("{0}[{1}] failed: unexpected P2A pins transition to {2}", currentActivity, privateState.TransferProgressStr, p2aPinsState));
                    return(false);
                }

                if (!Spin())
                {
                    return(false);
                }
            }
        }
Beispiel #2
0
        private void E084_PtoA_CheckBox_Clicked(object sender, RoutedEventArgs e)
        {
            PassiveToActivePinsState p2aPinsState    = new PassiveToActivePinsState(PinsState);
            PassiveToActivePinBits   entryPackedWord = p2aPinsState.PackedWord;

            p2aPinsState.L_REQ     = E84_L_REQ_CB.IsChecked.GetValueOrDefault();
            p2aPinsState.U_REQ     = E84_U_REQ_CB.IsChecked.GetValueOrDefault();
            p2aPinsState.READY     = E84_READY_CB.IsChecked.GetValueOrDefault();
            p2aPinsState.HO_AVBL   = E84_HO_AVBL_CB.IsChecked.GetValueOrDefault();
            p2aPinsState.ES        = E84_ES_CB.IsChecked.GetValueOrDefault();
            p2aPinsState.IFaceName = "From:E084_PtoA_CheckBox_Clicked";

            UpdateLabelContents(p2aPinsState);

            if (entryPackedWord != p2aPinsState.PackedWord)
            {
                PinsState = p2aPinsState as IPassiveToActivePinsState;
            }
        }
        bool WaitForP2ATransition(ref PassiveToActivePinBits trackBits, PassiveToActivePinBits waitForBits, PassiveToActivePinBits deltaPinsMask)
        {
            PassiveToActivePinBits fixedPinsMask = PassiveToActivePinBits.PinsBitMask & ~deltaPinsMask;
            for (; ; )
            {
                LPMSim.State lpmState = lpmSimPart.PublicState;

                IPassiveToActivePinsState p2aPinsState = lpmState.OutputsState.GetE84OutputBits(pioSelect);

                PassiveToActivePinBits packedWord = p2aPinsState.PackedWord;

                if (packedWord == waitForBits)
                {
                    trackBits = packedWord;
                    return true;
                }

                if ((packedWord & fixedPinsMask) != (trackBits & fixedPinsMask))
                {
                    SetCurrentActivity(ActivitySelect.WaitForPinsReady, Utils.Fcns.CheckedFormat("{0}[{1}] failed: unexpected P2A pins transition to {2}", currentActivity, privateState.TransferProgressStr, p2aPinsState));
                    return false;
                }

                if (!Spin())
                    return false;
            }
        }
Beispiel #4
0
        void ServicePerformUnloadActivity()
        {
            PassiveToActivePinBits p2aPinBits     = PassiveToActivePinBits.ES_pin8 | PassiveToActivePinBits.HO_AVBL_pin7;
            PassiveToActivePinBits nextP2APinBits = p2aPinBits;

            privateState.TransferCount++;
            privateState.TransferProgressStr = "Unloading:Select for U_REQ";
            PublishPrivateState();
            SetA2PPins(new ActiveToPassivePinsState(idleA2PPins)
            {
                VALID = true, CS_0 = true
            });

            nextP2APinBits = p2aPinBits | PassiveToActivePinBits.U_REQ_pin2;
            if (!WaitForP2ATransition(ref p2aPinBits, nextP2APinBits, PassiveToActivePinBits.U_REQ_pin2))
            {
                return;
            }

            privateState.TransferProgressStr = "Unloading:Start T_REQ";
            PublishPrivateState();

            SetA2PPins(new ActiveToPassivePinsState(lastSetA2PPins)
            {
                TR_REQ = true
            });

            nextP2APinBits = p2aPinBits | PassiveToActivePinBits.READY_pin4;
            if (!WaitForP2ATransition(ref p2aPinBits, nextP2APinBits, PassiveToActivePinBits.READY_pin4))
            {
                return;
            }

            privateState.TransferProgressStr = "Unloading:Go BUSY";
            PublishPrivateState();

            SetA2PPins(new ActiveToPassivePinsState(lastSetA2PPins)
            {
                BUSY = true
            });

            privateState.TransferProgressStr = "Unloading:Sim Lowering";
            PublishPrivateState();

            if (!Spin(configValues.LoweringTime))
            {
                return;
            }

            privateState.TransferProgressStr = "Unloading:Removing Foup";
            PublishPrivateState();

            LPMPresentPlacedInput = PresentPlaced.Present;

            if (!Spin(configValues.UnloadPlacementTransitionTime))
            {
                return;
            }

            LPMPresentPlacedInput = PresentPlaced.None;

            privateState.TransferProgressStr = "Unloading:Wait U_REQ clear";
            PublishPrivateState();

            nextP2APinBits = p2aPinBits & ~PassiveToActivePinBits.U_REQ_pin2;
            if (!WaitForP2ATransition(ref p2aPinBits, nextP2APinBits, PassiveToActivePinBits.U_REQ_pin2))
            {
                return;
            }

            privateState.TransferProgressStr = "Unloading:Sim Raising";
            PublishPrivateState();

            if (!Spin(configValues.RaisingTime))
            {
                return;
            }

            privateState.TransferProgressStr = "Unloading:Go COMPT";
            PublishPrivateState();

            SetA2PPins(new ActiveToPassivePinsState(lastSetA2PPins)
            {
                TR_REQ = false, BUSY = false, COMPT = true
            });

            privateState.TransferProgressStr = "Unloading:Wait READY clear";
            PublishPrivateState();

            nextP2APinBits = p2aPinBits & ~PassiveToActivePinBits.READY_pin4;
            if (!WaitForP2ATransition(ref p2aPinBits, nextP2APinBits, PassiveToActivePinBits.READY_pin4))
            {
                return;
            }

            privateState.TransferProgressStr = "Unloading:Deselecting";
            PublishPrivateState();

            if (!Spin(configValues.UnloadDeselectDelay))
            {
                return;
            }

            SetA2PPins(new ActiveToPassivePinsState(idleA2PPins));

            privateState.TransferProgressStr = String.Empty;
            PublishPrivateState();

            if (currentActivity == ActivitySelect.PerformUnload)
            {
                SetCurrentActivity(ActivitySelect.Ready, "Unload complete");
            }
        }