private void MakeExecuteAction() { int currentIndex = 0; var seq = ExecuteAction; seq.Steps.Add("Start", new StepInfo()); seq.Steps.Add("SetActionCode", new StepInfo()); seq.Steps.Add("Retry", new StepInfo()); seq.OnStart += delegate { ReceiveData.Clear(); }; seq.OnStop += delegate { UseFailReturn = false; SubActionList = null; }; seq.OnTerminate += delegate { UseFailReturn = false; SubActionList = null; SendData.Clear(); }; seq.Steps["Start"].StepIndex = seq.AddItem(ActionRequest.Off.Execute); seq.AddItem( delegate(FASequence actor, TimeSpan time) { if (RobotStatusActionFail.IsOn || RobotStatusActionSuccess.IsOn) actor.NextStep(); else actor.NextStep("SetActionCode"); }); seq.AddItem( (object obj) => { ActionTerminatedConfirm.PulseTime.Type = FATimeType.millisecond; ActionTerminatedConfirm.PulseTime.TypeValue = 300; }); seq.AddItem(ActionTerminatedConfirm.PulseOnAction.Sequence); seq.Steps["SetActionCode"].StepIndex = seq.AddItem( delegate(FASequence actor, TimeSpan time) { int alarm; if (IsReady(out alarm) == false) { RaiseAlarm(actor, alarm); } else if (RobotStatusReady.IsOn && RobotStatusActionSuccess.IsOff && RobotStatusActionFail.IsOff) { OutputCommandParameter.OutputData = 1;//SendData.Parameter; OutputCommandAction.OutputData = SendData.ActionCode; actor.NextStep(); } else if (TimeStatusCheckTimeout.Time < time) { RaiseAlarm(actor, AlarmRobotIsUnknownStatus, RobotStatusReady.GetInputIOStatus(), RobotStatusActionSuccess.GetInputIOStatus(), RobotStatusActionFail.GetInputIOStatus()); actor.NextStep("Start"); } }); seq.AddItem( (object obj) => { ActionRequest.PulseTime.Type = FATimeType.millisecond; ActionRequest.PulseTime.TypeValue = 300; }); seq.AddItem(ActionRequest.PulseOnAction.Sequence); seq.AddItem((object obj) => currentIndex = 0); seq.AddItem( delegate(FASequence actor, TimeSpan time) { if (SubActionList == null) { actor.NextStep(); } else if (RobotStatusActionFail.IsOn) { ReceiveData.ActionFail = true; actor.NextStep(); } else if (TimeSubActionTimeout.Time < time) { actor.NextStep(); } else { var action = SubActionList[currentIndex]; if (action() == true) { currentIndex++; if (currentIndex >= SubActionList.Count) actor.NextStep(); } } }); seq.AddItem( delegate(FASequence actor, TimeSpan time) { if (RobotStatusEmergency.IsOn) { RaiseAlarm(actor, AlarmRobotEmergency); actor.NextStep("Retry"); } //if (RobotStatusReady.IsOff) //{ // RaiseAlarm(actor, AlarmRobotAlarm); // actor.NextStep("Retry"); //} else if (IsActionSuccess() == true) { actor.NextStep(); } else if (IsActionFail() == true) { RaiseAlarm(actor, AlarmRobotActionFail, "KUKA ROBOT ACTION ERROR NO: " + InputAlarmCode.OutputData.ToString()); actor.NextStep("Retry"); } else if (TimeRobotActionTimeout.Time < time) { if (UseFailReturn) actor.NextStep(); else if (IsActionTerminated() == false) { RaiseAlarm(actor, AlarmRobotActionTimeOut); actor.NextStep("Retry"); } else if (IsActionFail() == true) { RaiseAlarm(actor, AlarmRobotActionFail, "KUKA ROBOT ACTION ERROR NO: " + InputAlarmCode.OutputData.ToString()); actor.NextStep("Retry"); } } }); seq.AddItem( (object obj) => { ActionTerminatedConfirm.PulseTime.Type = FATimeType.millisecond; ActionTerminatedConfirm.PulseTime.TypeValue = 300; }); seq.AddItem(ActionTerminatedConfirm.PulseOnAction.Sequence); seq.AddItem( delegate(object obj) { SubActionList = null; }); seq.AddTerminate(); QuestionMessageBoxWindow questionWindow = null; seq.Steps["Retry"].StepIndex = seq.AddItem( delegate(object obj) { App.Current.Dispatcher.Invoke( new Action( delegate { questionWindow = new QuestionMessageBoxWindow(); questionWindow.Message = Utility.UtilityClass.GetStringResource(this, "KUKA.AreYouSureYouWantToRetryRobotAction", "Are you sure you want to retry robot action?"); questionWindow.Show(); }), null); }); seq.AddItem( delegate(FASequence actor, TimeSpan time) { if (questionWindow.Result == QuestionMessageBoxWindow.QuestionResult.Yes) actor.NextStep(); else if (questionWindow.Result == QuestionMessageBoxWindow.QuestionResult.No) actor.NextTerminate(); }); seq.AddItem("Start"); }
private void MakeTransferNormalLabel() { int scanAlarmNo = 0; string scanAlarmMsg = string.Empty; var seq = TransferNormalLabel; seq.OnStart += delegate { RetryInfoLabelScan.ClearCount(); }; seq.Steps.Add("Start", new StepInfo()); seq.Steps.Add("TransferLabelToTrashBin", new StepInfo()); seq.Steps.Add("Retry", new StepInfo()); seq.AddItem(SetCurrentLabelPrinterModule); seq.Steps["Start"].StepIndex = seq.AddItem(ScanNormalLabel); seq.AddItem( delegate(FASequence actor, TimeSpan time) { CurrentNormalLabelPrinterModule.LabelScanCompleted = true; CurrentNormalLabelPrinterModule.LabelScanSuccess = false; if (SkipLabelScan) { CurrentNormalLabelPrinterModule.LabelScanSuccess = true; //SkipLabelScan = false; WriteTraceLog(string.Format("Skip Label Scan Result. LOT_ID={0}, L_BOX_INDEX={1}", CurrentLotID, CurrentLargeBoxIndex)); actor.NextStep(); } else if (LabelScanResult) { var dmSerials = RobotUnit.CognexVisionReceiver.VisionResult.BarcodeScanResult.DMSerialsItem; var serials = RobotUnit.CognexVisionReceiver.VisionResult.BarcodeScanResult.SerialsItems; var largeBoxID = RobotUnit.CognexVisionReceiver.VisionResult.BarcodeScanResult.LargeBoxID; if (IsEqualBarcodes(serials, dmSerials) == false) { scanAlarmNo = AlarmLabelSerialsDifferent; scanAlarmMsg = string.Format("NORMAL LABEL SERIALS DIFFERENT. 1D BARCODE=[{0}], DATA_MATRIX=[{1}]", string.Join(",", serials), string.Join(",", dmSerials)); WriteTraceLog(scanAlarmMsg); actor.NextStep("TransferLabelToTrashBin"); } else if (serials.Count != TurnkeyBoxCount) { scanAlarmNo = AlarmLabelSerialsCountDifferant; scanAlarmMsg = string.Format("NORMAL LABEL T/K BOX COUNT DIFFERENT. CURRENT COUNT={0}, LABEL COUNT={1}", TurnkeyBoxCount, serials.Count); WriteTraceLog(scanAlarmMsg); actor.NextStep("TransferLabelToTrashBin"); } else if (string.IsNullOrEmpty(largeBoxID) == true) { scanAlarmNo = AlarmLabelLargeBoxIDCanNotFound; scanAlarmMsg = "NORMAL LABEL LOT_ID EMPTY"; WriteTraceLog(scanAlarmMsg); actor.NextStep("TransferLabelToTrashBin"); } else if (CurrentLargeBoxID.Trim() != largeBoxID.Trim()) { scanAlarmNo = AlarmLabelLargeBoxIDDifferent; scanAlarmMsg = string.Format("NORMAL LABEL L_BOX_ID DIFFERENT. CURRENT L_BOX_ID={0}, LABEL L_BOX_ID={1}", CurrentLotID, largeBoxID); WriteTraceLog(scanAlarmMsg); actor.NextStep("TransferLabelToTrashBin"); } else { CurrentNormalLabelPrinterModule.LabelScanSuccess = true; actor.NextStep(); } } else { WriteTraceLog("NORMAL LABEL SCAN FAIL. LABEL SCANNER NOT RESPONSE"); actor.NextStep("TransferLabelToTrashBin"); } }); seq.AddItem( delegate(FASequence actor, TimeSpan time) { if (CurrentNormalLabelPrinterModule.UnloadingStandby) { if (CurrentNormalLabelPrinterModule.CurrentWork.BoxIndex != (CurrentLargeBoxIndex + 1)) { var msg = string.Format("BoxIndex Of Printer={0}, BoxIndex Of Robot={1}", CurrentNormalLabelPrinterModule.CurrentWork.BoxIndex, CurrentLargeBoxIndex + 1); RaiseAlarm(actor, AlarmBarcodeIndexMatchFail, msg); actor.NextStep("TransferLabelToTrashBin"); } else if (CurrentNormalLabelPrinterModule.CurrentWork.LotID != CurrentWork.ProductInfo.ECInfo.PackingMasterInfo.LOT_ID) { var msg = string.Format("LotID Of Printer={0}, LotID Of Robot={1}", CurrentNormalLabelPrinterModule.CurrentWork.LotID, CurrentWork.ProductInfo.ECInfo.PackingMasterInfo.LOT_ID); RaiseAlarm(actor, AlarmLotIDMatchFail, msg); actor.NextStep("TransferLabelToTrashBin"); } else { actor.NextStep(); } } }); seq.AddItem(SetTransferNormalLabelAction); seq.AddItem((object obj) => RobotModule.UseFailReturn = true); seq.AddItem(new FASequenceAtomicInfo(RobotModule.ExecuteAction, true)); seq.AddItem( delegate(FASequence actor, TimeSpan time) { if (RobotModule.ReceiveData.ActionSuccess) actor.NextStep(); else actor.NextStep("Retry"); }); seq.AddItem( delegate(object obj) { CurrentNormalLabelPrinterModule.UnloadingSuccess = true; CurrentNormalLabelPrinterModule.UnloadingCompleted = true; }); seq.AddTerminate(); seq.Steps["TransferLabelToTrashBin"].StepIndex = seq.AddItem(TransferNormalLabelToTrashBin); seq.AddItem( delegate(FASequence actor, TimeSpan time) { if (RetryInfoLabelScan.IncreaseCount() == false) { RaiseAlarm(actor, scanAlarmNo, scanAlarmMsg); } actor.NextStep(); }); seq.AddItem("Start"); QuestionMessageBoxWindow questionWindow = null; seq.Steps["Retry"].StepIndex = seq.AddItem( delegate(object obj) { App.Current.Dispatcher.Invoke( new Action( delegate { questionWindow = new QuestionMessageBoxWindow(); questionWindow.Message = Utility.UtilityClass.GetStringResource(this, "KUKA.AreYouSureYouWantToRetryTransferGlueLabel", "Are you sure you want to retry transfer glue label?"); questionWindow.Show(); }), null); }); seq.AddItem( delegate(FASequence actor, TimeSpan time) { if (questionWindow.Result == QuestionMessageBoxWindow.QuestionResult.Yes) { CurrentNormalLabelPrinterModule.UnloadingSuccess = false; CurrentNormalLabelPrinterModule.UnloadingCompleted = true; actor.NextStep("Start"); } else if (questionWindow.Result == QuestionMessageBoxWindow.QuestionResult.No) { CurrentNormalLabelPrinterModule.UnloadingSuccess = true; CurrentNormalLabelPrinterModule.UnloadingCompleted = true; actor.NextTerminate(); } }); seq.AddItem("Start"); }
private void MakePickEmptyTray() { var seq = PickEmptyTray; seq.Steps.Add("Retry", new StepInfo()); seq.Steps.Add("Start", new StepInfo()); seq.Steps.Add("EmptyTrayPickCheck", new StepInfo()); seq.Steps["Start"].StepIndex = seq.AddItem(SetTargetStacker); seq.AddItem(MoveXYPosition); seq.AddItem(TransferServoZ.MoveStandbyPos.Sequence); seq.AddItem( delegate(FASequence actor, TimeSpan time) { if (TraySideDetectSensor.IsOn) RaiseAlarm(actor, AlarmTrayDetectedBeforeTrayPicking, TraySideDetectSensor.GetInputIOStatus()); else actor.NextStep(); }); seq.AddItem(CountEmptyTrayStacker); seq.AddItem( delegate(FASequence actor, TimeSpan time) { if (PickingTrayCount <= 0) actor.NextTerminate(); else actor.NextStep(); }); seq.AddItem(TrayGripper.Release.Sequence); seq.AddItem(MovePreTrayGripPosition); seq.AddItem(TrayGripper.Grip.Sequence); seq.AddItem(MoveTraySeperatePosition); seq.AddItem(TraySeperator.Down.Sequence); seq.AddItem(TraySeperator.Up.Sequence); seq.AddItem(TraySeperator.Down.Sequence); seq.AddItem(TraySeperator.Up.Sequence); seq.AddItem(TransferServoZ.MoveStandbyPos.Sequence); seq.Steps["EmptyTrayPickCheck"].StepIndex = seq.AddItem( delegate(FASequence actor, TimeSpan time) { if (TraySideDetectSensor.IsOn) actor.NextStep(); else { RaiseAlarm(actor, AlarmEmptyTrayFail, TraySideDetectSensor.GetInputIOStatus()); actor.NextStep("Retry"); } }); seq.AddItem((object obj) => CurrentTrayCount -= PickingTrayCount); seq.AddTerminate(); QuestionMessageBoxWindow questionWindow = null; seq.Steps["Retry"].StepIndex = seq.AddItem( delegate(object obj) { App.Current.Dispatcher.Invoke( new Action( delegate { questionWindow = new QuestionMessageBoxWindow(); questionWindow.Message = Utility.UtilityClass.GetStringResource(this, "EmptyTray Pick Fail", "Are you sure you want to retry EmptyTray Pick action?"); questionWindow.Owner = Equipment.Window; questionWindow.Show(); }), null); }); seq.AddItem( delegate(FASequence actor, TimeSpan time) { if (questionWindow.Result == QuestionMessageBoxWindow.QuestionResult.Yes) actor.NextStep(); else if (questionWindow.Result == QuestionMessageBoxWindow.QuestionResult.No) actor.NextTerminate(); }); seq.AddItem("Start"); }
private void MakeSupplyEmptyTray() { var seq = SupplyEmptyTray; seq.OnStart += delegate { RetryInfoTrayMarkingMatch.ClearCount(); SuppliedTrayCount = 0; EmptyTraySupplyConveyor.TrayCount = 0; }; seq.Steps.Add("SelectTargetStacker", new StepInfo()); seq.Steps.Add("RemoveEmptyTray", new StepInfo()); seq.Steps.Add("Retry", new StepInfo()); seq.Steps.Add("ScanTrayCode", new StepInfo()); seq.Steps.Add("ConfirmTrayCount", new StepInfo()); seq.Steps["SelectTargetStacker"].StepIndex = seq.AddItem(SelectTargetStacker); seq.AddItem(SetTargetStacker); seq.AddItem(MoveXYPosition); seq.AddItem(PickEmptyTray); seq.AddItem((object obj) => SelectedLoadingStacker.IsAvailable = true); seq.AddItem( delegate(FASequence actor, TimeSpan time) { if (PickingTrayCount <= 0) actor.NextStep("SelectTargetStacker"); else actor.NextStep(); }); seq.AddItem(PlaceEmptyTrayToSupplyConveyor); seq.AddItem( delegate(object obj) { EmptyTraySupplyConveyor.TrayCount += PickingTrayCount; SuppliedTrayCount += PickingTrayCount; }); seq.Steps["ScanTrayCode"].StepIndex = seq.AddItem(ScanTrayCode); seq.AddItem( delegate(FASequence actor, TimeSpan time) { if (TrayScanResult == EScanResult.Success) actor.NextStep(); else { if (RetryInfoTrayMarkingMatch.IncreaseCount() == false) { RaiseAlarm(actor, AlarmTrayMarkingMatchFail); actor.NextStep("ScanTrayCode"); } else { SuppliedTrayCount = 0; actor.NextStep("RemoveEmptyTray"); } } }); seq.AddItem(TransferServoY.MoveStandbyPos.Sequence); seq.AddItem( delegate(FASequence actor, TimeSpan time) { if (PickTrayReady == false) { RaiseAlarm(actor, AlarmEmptyTrayFail); actor.NextStep("Retry"); } else actor.NextStep(); }); seq.Steps["ConfirmTrayCount"].StepIndex = seq.AddItem(ConfirmRemainTrayCount); seq.AddTerminate(); QuestionMessageBoxWindow questionWindow = null; seq.Steps["Retry"].StepIndex = seq.AddItem( delegate(object obj) { App.Current.Dispatcher.Invoke( new Action( delegate { questionWindow = new QuestionMessageBoxWindow(); questionWindow.Message = Utility.UtilityClass.GetStringResource(this, "EmptyTray Pick Fail", "Are you sure you want to retry EmptyTray Pick action?"); questionWindow.Owner = Equipment.Window; questionWindow.Show(); }), null); }); seq.AddItem( delegate(FASequence actor, TimeSpan time) { if (questionWindow.Result == QuestionMessageBoxWindow.QuestionResult.Yes) { EmptyTraySupplyConveyor.TrayCount -= PickingTrayCount; SuppliedTrayCount -= PickingTrayCount; actor.NextStep(); } else if (questionWindow.Result == QuestionMessageBoxWindow.QuestionResult.No) actor.NextStep("ConfirmTrayCount"); }); seq.AddItem("SelectTargetStacker"); seq.Steps["RemoveEmptyTray"].StepIndex = seq.AddItem(PickTrayOnSupplyConveyor); seq.AddItem(PlaceEmptyTrayUnloadingConveyor); seq.AddItem( delegate(object obj) { EmptyTraySupplyConveyor.TrayCount = 0; SuppliedTrayCount = 0; }); seq.AddItem((object obj) => WriteTraceLog("Tray Mark Not Correct. Remove Tray")); seq.AddItem("SelectTargetStacker"); }
protected virtual void MakePreInitialize() { var seq = PreInitialize; AddDebugLogToSequence(seq); QuestionMessageBoxWindow questionWindow = null; seq.AddItem( delegate(object obj) { App.Current.Dispatcher.Invoke( new Action( delegate { questionWindow = new QuestionMessageBoxWindow(); questionWindow.Message = Utility.UtilityClass.GetStringResource(this, "AreYouSureYouWantToInitializing", "Are you sure you want to initializing?"); questionWindow.EquipmentInstance = Equipment; questionWindow.Show(); }), null); }); seq.AddItem( delegate(FASequence actor, TimeSpan time) { if (questionWindow.Result == QuestionMessageBoxWindow.QuestionResult.Yes) { actor.NextStep(); } else if (questionWindow.Result == QuestionMessageBoxWindow.QuestionResult.No) { Equipment.RequestStop(); actor.NextTerminate(); } }); seq.AddItem(ConfirmDoorClosed); seq.AddItem(LockDoor); seq.AddItem(new FATime(FATimeType.millisecond, 1000)); seq.AddItem(ConfirmDoorLockOk); seq.AddItem(DoInitialize); }
private void MakeLoading() { var seq = Loading; seq.Steps.Add("Start", new StepInfo()); seq.Steps.Add("Retry", new StepInfo()); seq.Steps.Add("ConfirmLoadingFail", new StepInfo()); seq.Steps.Add("Ready", new StepInfo()); seq.Steps.Add("EmptyBoxRetry", new StepInfo()); seq.Steps["Start"].StepIndex = seq.AddItem( delegate(FASequence actor, TimeSpan time) { if (DummyBoxLoadingUnit.StackerBoxSensor.IsOn) { Manager.MessageWindowManager.Instance.CloseWindow("DummyBoxCharging"); actor.NextStep(); } else { var alarm = Utility.AlarmUtility.GetAlarm(AlarmDummyBoxShortage, "Dummy Box Shortage"); Manager.MessageWindowManager.Instance.Show(Equipment, "DummyBoxCharging", alarm.AlarmName); } }); seq.AddItem( delegate(FASequence actor, TimeSpan time) { if (DummyBoxLoadingUnit.InsideBoxOutSensor.IsOn && DummyBoxLoadingUnit.InsideBoxInSensor.IsOn) actor.NextStep("Ready"); else actor.NextStep(); }); seq.AddItem(LoadingBox); seq.Steps["Ready"].StepIndex = seq.AddItem( delegate(FASequence actor, TimeSpan time) { if (DummyBoxLoadingUnit.InsideBoxOutSensor.IsOn) { actor.NextStep(); } else { actor.NextStep("EmptyBoxRetry"); } }); seq.AddTerminate(); seq.Steps["EmptyBoxRetry"].StepIndex = seq.AddItem(LoadingBox); seq.AddItem( delegate(FASequence actor, TimeSpan time) { if (DummyBoxLoadingUnit.InsideBoxOutSensor.IsOn && DummyBoxLoadingUnit.InsideBoxInSensor.IsOn) { actor.NextStep(); } else { RaiseAlarm(actor, AlarmDummyBoxCheck,DummyBoxLoadingUnit.InsideBoxInSensor.GetInputIOStatus(),DummyBoxLoadingUnit.InsideBoxOutSensor.GetInputIOStatus()); } }); seq.AddTerminate(); QuestionMessageBoxWindow questionWindow = null; seq.Steps["Retry"].StepIndex = seq.AddItem( delegate(FASequence actor, TimeSpan time) { var alarm = Utility.AlarmUtility.GetAlarm(AlarmDummyBoxDidNotDetectionAfterLoading, "Dummy Box Shortage"); questionWindow = new QuestionMessageBoxWindow(); questionWindow.Message = alarm.AlarmName; questionWindow.Show(); }); seq.AddItem( delegate(FASequence actor, TimeSpan time) { if (questionWindow.Result == QuestionMessageBoxWindow.QuestionResult.Yes) actor.NextStep(); else if (questionWindow.Result == QuestionMessageBoxWindow.QuestionResult.No) actor.NextTerminate(); }); seq.AddItem("Start"); }
private void MakeTransferTraysToPlacePos2() { var seq = TransferTraysToPlacePos2; seq.Steps.Add("Start", new StepInfo()); seq.Steps.Add("Retry", new StepInfo()); seq.Steps["Start"].StepIndex = seq.AddItem( delegate(FASequence actor, TimeSpan time) { if (BoxPuttingModule.TrayPuttingUnit.InsertingPositionSensor.IsOn) actor.NextStep(); else RaiseAlarm(actor, AlarmPuttingUnitLargeBoxNotExist, BoxPuttingModule.TrayPuttingUnit.InsertingPositionSensor.GetInputIOStatus()); }); seq.AddItem( delegate(FASequence actor, TimeSpan time) { if (TrayInletModule.UnloadingStandby && BoxPuttingModule.TrayLoadingStandby) actor.NextStep(); }); seq.AddItem(ScanTrayOnInletCV); seq.AddItem( delegate(FASequence actor, TimeSpan time) { if (TrayInletModule.TrayExist()) { if (JobInfo.FoamPadJobInfo.BottomFoamPadType == VT5081.JobInfo.EBottomFoamPadType.High) { RobotUnit.Tray07Floor.DoTurnOn(actor); RobotUnit.Tray11Floor.DoTurnOff(actor); } else { RobotUnit.Tray07Floor.DoTurnOff(actor); RobotUnit.Tray11Floor.DoTurnOn(actor); } RobotModule.SendData.Parameter = ROBOT_PARAM_NONE; RobotModule.SendData.ActionCode = (byte)FAKukaRobotCommandList.TrayActionList.EAction.TransferTrayToPlacePosition2; actor.NextStep(); } else RaiseAlarm(actor, AlarmTrayNotExistOnTrayInletUnit, TrayInletModule.TrayInletUnit.StopSensor.GetInputIOStatus()); }); seq.AddItem(new FASequenceAtomicInfo(RobotModule.ExecuteAction, true)); seq.AddItem( delegate(FASequence actor, TimeSpan time) { if (TrayInletModule.TrayInletUnit.StopSensor.IsOff) { TrayInletModule.UnloadingCompleted = true; actor.NextTerminate(); } else { RaiseAlarm(actor, AlarmTrayNotExistOnTrayInletUnit, TrayInletModule.TrayInletUnit.StopSensor.GetInputIOStatus()); actor.NextStep("Retry"); } }); QuestionMessageBoxWindow questionWindow = null; seq.Steps["Retry"].StepIndex = seq.AddItem( delegate(object obj) { App.Current.Dispatcher.Invoke( new Action( delegate { questionWindow = new QuestionMessageBoxWindow(); questionWindow.Message = Utility.UtilityClass.GetStringResource(this, "KUKA.AreYouSureYouWantToRetryRobotAction", "Are you sure you want to retry robot action?"); questionWindow.Show(); }), null); }); seq.AddItem( delegate(FASequence actor, TimeSpan time) { if (questionWindow.Result == QuestionMessageBoxWindow.QuestionResult.Yes) actor.NextStep("Start"); else if (questionWindow.Result == QuestionMessageBoxWindow.QuestionResult.No) actor.NextStep(); }); seq.AddItem((object obj) => TrayInletModule.UnloadingCompleted = true); seq.AddTerminate(); }
private void MakeTransferLargeBox() { var seq = TransferLargeBox; seq.Steps.Add("Start", new StepInfo()); seq.Steps.Add("Retry", new StepInfo()); seq.Steps["Start"].StepIndex = seq.AddItem(ScanLargeBoxOnPickingPosition); seq.AddItem( delegate(FASequence actor, TimeSpan time) { if (BoxFormingBufferModule.UnloadingStandby && BoxPuttingModule.LargeBoxLoadingStandby) { if (BoxPuttingModule.TrayPuttingUnit.InsertingPositionSensor.IsOff) actor.NextStep(); else RaiseAlarm(actor, AlarmPuttingUnitLargeBoxExist); } }); seq.AddItem( (object obj) => { RobotModule.SendData.Parameter = ROBOT_PARAM_NONE; RobotModule.SendData.ActionCode = (byte)FAKukaRobotCommandList.LargeBoxActionList.EAction.TransferBox; }); seq.AddItem(new FASequenceAtomicInfo(RobotModule.ExecuteAction, true)); seq.AddItem( delegate(FASequence actor, TimeSpan time) { if (BoxPuttingModule.TrayPuttingUnit.InSensor.IsOn) { BoxFormingBufferModule.UnloadingCompleted = true; BoxPuttingModule.LargeBoxLoadingCompleted = true; actor.NextTerminate(); } else { RaiseAlarm(actor, AlarmPuttingUnitLargeBoxNotExist, BoxPuttingModule.TrayPuttingUnit.InSensor.GetInputIOStatus()); BoxFormingBufferModule.UnloadingCompleted = true; actor.NextStep("Retry"); } }); QuestionMessageBoxWindow questionWindow = null; seq.Steps["Retry"].StepIndex = seq.AddItem( delegate(object obj) { App.Current.Dispatcher.Invoke( new Action( delegate { questionWindow = new QuestionMessageBoxWindow(); questionWindow.Message = Utility.UtilityClass.GetStringResource(this, "KUKA.AreYouSureYouWantToRetryRobotAction", "Are you sure you want to retry robot action?"); questionWindow.Show(); }), null); }); seq.AddItem( delegate(FASequence actor, TimeSpan time) { if (questionWindow.Result == QuestionMessageBoxWindow.QuestionResult.Yes) actor.NextStep("Start"); else if (questionWindow.Result == QuestionMessageBoxWindow.QuestionResult.No) actor.NextStep(); }); seq.AddItem((object obj) => BoxFormingBufferModule.UnloadingCompleted = true); seq.AddItem((object obj) => BoxPuttingModule.LargeBoxLoadingCompleted = true); seq.AddTerminate(); }
private void MakeTransferDummyBox() { var seq = TransferDummyBox; seq.Steps.Add("Start", new StepInfo()); seq.Steps.Add("Retry", new StepInfo()); seq.Steps["Start"].StepIndex = seq.AddItem( delegate(FASequence actor, TimeSpan time) { if (DummyBoxLoadingModule.UnloadingStandby) actor.NextStep(); }); seq.AddItem( (object obj) => { RobotModule.SendData.Parameter = ROBOT_PARAM_NONE; RobotModule.SendData.ActionCode = (byte)FAKukaRobotCommandList.DummyBoxActionList.EAction.TransferBoxToPlacePos; RobotModule.UseFailReturn = true; }); seq.AddItem(new FASequenceAtomicInfo(RobotModule.ExecuteAction, true)); seq.AddItem( delegate(FASequence actor, TimeSpan time) { DummyBoxLoadingModule.UnloadingCompleted = true; if (RobotModule.ReceiveData.ActionSuccess) actor.NextStep(); else actor.NextStep("Retry"); }); seq.AddTerminate(); seq.Steps["Retry"].StepIndex = seq.AddItem( delegate(FASequence actor, TimeSpan time) { if (RetryInfoDummyBoxTransfer.IncreaseCount() == false) { RaiseAlarm(actor, AlarmDummyBoxTransferError); actor.NextStep(); } else { actor.NextStep("Start"); } }); QuestionMessageBoxWindow questionWindow = null; seq.AddItem( delegate(object obj) { App.Current.Dispatcher.Invoke( new Action( delegate { questionWindow = new QuestionMessageBoxWindow(); questionWindow.Message = Utility.UtilityClass.GetStringResource(this, "KUKA.AreYouSureYouWantToRetryRobotAction", "Are you sure you want to retry robot action?"); questionWindow.Show(); }), null); }); seq.AddItem( delegate(FASequence actor, TimeSpan time) { if (questionWindow.Result == QuestionMessageBoxWindow.QuestionResult.Yes) actor.NextStep(); else if (questionWindow.Result == QuestionMessageBoxWindow.QuestionResult.No) actor.NextTerminate(); }); seq.AddItem("Start"); }