From 8820f982eacc6092747a3dd18a72bdccb92373a4 Mon Sep 17 00:00:00 2001 From: lhiven Date: Fri, 15 Nov 2024 17:20:27 +0800 Subject: [PATCH] =?UTF-8?q?1=E3=80=81=E4=BC=98=E5=8C=96=E5=81=9C=E6=AD=A2?= =?UTF-8?q?=E5=91=BD=E4=BB=A4=E4=B8=BA=E6=9A=82=E5=81=9C=E3=80=82=202?= =?UTF-8?q?=E3=80=81=E5=A2=9E=E5=8A=A0=E6=B5=81=E7=A8=8B=E7=BB=93=E6=9D=9F?= =?UTF-8?q?=E5=91=BD=E4=BB=A4=E3=80=82=203=E3=80=81=E8=AE=BE=E5=A4=87?= =?UTF-8?q?=E7=8A=B6=E6=80=81=E5=8F=98=E5=8C=96=E4=B8=8A=E6=8A=A5=E7=BB=99?= =?UTF-8?q?=E4=B8=AD=E6=8E=A7=E3=80=82=204=20=E3=80=81=E7=89=88=E6=9C=AC?= =?UTF-8?q?=E5=8F=B7:=203.20.24.55?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Rs.SkyLine/Commom/Scheduling.cs | 4 + Rs.SkyLine/Flow/MachineManage.cs | 38 ++++++++- Rs.SkyLine/Flow/TestCenter.cs | 117 ++++++++++++++++++-------- Rs.SkyLine/Properties/AssemblyInfo.cs | 2 +- 4 files changed, 122 insertions(+), 39 deletions(-) diff --git a/Rs.SkyLine/Commom/Scheduling.cs b/Rs.SkyLine/Commom/Scheduling.cs index c8ee1ca..ea16560 100644 --- a/Rs.SkyLine/Commom/Scheduling.cs +++ b/Rs.SkyLine/Commom/Scheduling.cs @@ -1145,6 +1145,10 @@ namespace Rs.MotionPlat.Commom /// EndInput, /// + /// 流程结束, 发送 回复 + /// + EndFlow, + /// /// 取料失败, 排料机发送 回复, 里提供接下来该做的处理方式 /// TakingError, diff --git a/Rs.SkyLine/Flow/MachineManage.cs b/Rs.SkyLine/Flow/MachineManage.cs index 0faf72e..6c6621e 100644 --- a/Rs.SkyLine/Flow/MachineManage.cs +++ b/Rs.SkyLine/Flow/MachineManage.cs @@ -96,15 +96,41 @@ namespace Rs.MotionPlat.Flow /// private ERunStatus RunStatus { get; set; } = ERunStatus.Stopped; + private ERunMode _RunMode = ERunMode.Manual; /// /// 运行模式(Manual,Automatic) /// - public ERunMode RunMode { get; set; } = ERunMode.Manual; + public ERunMode RunMode + { + get + { + return _RunMode; + } + set + { + if (_RunMode != value) + { + _RunMode = value; + TestCenter.Instance.ReportStatusToCenter(SchedulingStatusInfo.InfoType.RunMode); + } + } + } + private EInitializeState _InitializeState = EInitializeState.Uninitialized; /// /// 初始化状态(Uninitialized,Initializing,Initialized) /// - public EInitializeState InitializeState { get; set; } = EInitializeState.Uninitialized; + public EInitializeState InitializeState + { + get { return _InitializeState; } + set { + if(_InitializeState != value) + { + _InitializeState = value; + TestCenter.Instance.ReportStatusToCenter(SchedulingStatusInfo.InfoType.InitializeState); + } + } + } /// /// 测试机状态 @@ -124,7 +150,13 @@ namespace Rs.MotionPlat.Flow /// public void SetCenterMachineStatus(ERunStatus status) { - RunStatus= status; + if(RunStatus!=status) + { + RunStatus = status; + //send to center + TestCenter.Instance.ReportStatusToCenter(SchedulingStatusInfo.InfoType.RunStatus); + } + } public void SetTesterState(TesterInfo _testerInfo) diff --git a/Rs.SkyLine/Flow/TestCenter.cs b/Rs.SkyLine/Flow/TestCenter.cs index ce58fe6..a8ecf94 100644 --- a/Rs.SkyLine/Flow/TestCenter.cs +++ b/Rs.SkyLine/Flow/TestCenter.cs @@ -26,7 +26,7 @@ namespace Rs.MotionPlat.Flow public class TestCenter { TcpClientHelper client = new TcpClientHelper("127.0.0.1",2048); - //TcpClientHelper client = new TcpClientHelper("192.168.31.120", 2048); + //TcpClientHelper client = new TcpClientHelper("192.168.110.162", 2048); SchedulingResult schedulResult = new SchedulingResult(); SchedulingMaterial sm; Dictionary alarmInfos = new Dictionary(); @@ -72,41 +72,13 @@ namespace Rs.MotionPlat.Flow } else if(ssi.Info== "Stopped") { - MessageQueue.Instance.Insert("收到中控停止命令,等待各个料盘就绪"); - Task.Run(() => { - while(true) - { - bool bInput = (StockManager.Instance.GetStock(ETrayType.Input).Status == EStockTrayStatus.Loaded - || StockManager.Instance.GetStock(ETrayType.Input).Status == EStockTrayStatus.Unloaded - || StockManager.Instance.GetStock(ETrayType.Input).Status == EStockTrayStatus.Empty); - - bool bOk = (StockManager.Instance.GetStock(ETrayType.Ok).Status == EStockTrayStatus.Loaded - || StockManager.Instance.GetStock(ETrayType.Ok).Status == EStockTrayStatus.Unloaded - || StockManager.Instance.GetStock(ETrayType.Ok).Status == EStockTrayStatus.Empty); - - bool bNg = (StockManager.Instance.GetStock(ETrayType.Ng).Status == EStockTrayStatus.Loaded - || StockManager.Instance.GetStock(ETrayType.Ng).Status == EStockTrayStatus.Unloaded - || StockManager.Instance.GetStock(ETrayType.Ng).Status == EStockTrayStatus.Empty); - - bool bMulti = (StockManager.Instance.GetStock(ETrayType.Multi).Status == EStockTrayStatus.Loaded - || StockManager.Instance.GetStock(ETrayType.Multi).Status == EStockTrayStatus.Unloaded - || StockManager.Instance.GetStock(ETrayType.Multi).Status == EStockTrayStatus.Empty); - - bool bEmpty2 = (StockManager.Instance.GetStock(ETrayType.Empty2).Status == EStockTrayStatus.Loaded - || StockManager.Instance.GetStock(ETrayType.Empty2).Status == EStockTrayStatus.Unloaded - || StockManager.Instance.GetStock(ETrayType.Empty2).Status == EStockTrayStatus.Empty); - - if (bInput && bOk && bNg && bMulti && bEmpty2) - { - DischargeFlow.Instance.ResetScanNum(); - Ops.Stop(); - MessageQueue.Instance.Insert("料仓已全部就绪,设备停止运行"); - break; - } - Thread.Sleep(100); - } - }); + MessageQueue.Instance.Insert($"收到中控停止命令:{ssi.Info}"); + Ops.Stop(); } + //else if(ssi.Info== "EndFlow")//Stopped + //{ + + //} //WorkEnvironment.Instance.Ready(); //Task.Run(() => { // if (WorkEnvironment.Instance.EnvReadyOkEvent.WaitOne()) @@ -156,6 +128,10 @@ namespace Rs.MotionPlat.Flow } switch (eInstructioneInstruction) { + case EInstruction.EndFlow: + MessageQueue.Instance.Insert("收到中控停止命令:EndFlow,等待各个料盘就绪"); + EndFlow(); + break; case EInstruction.CheckTray: MachineManage.Instance.SetLoadUnloadStatus(ERunState.Busying); ReportToTestCenter(schedule); @@ -702,6 +678,46 @@ namespace Rs.MotionPlat.Flow Send(content, Encoding.ASCII); } + + + public void EndFlow() + { + + Task.Run(() => { + while (true) + { + bool bInput = (StockManager.Instance.GetStock(ETrayType.Input).Status == EStockTrayStatus.Loaded + || StockManager.Instance.GetStock(ETrayType.Input).Status == EStockTrayStatus.Unloaded + || StockManager.Instance.GetStock(ETrayType.Input).Status == EStockTrayStatus.Empty); + + bool bOk = (StockManager.Instance.GetStock(ETrayType.Ok).Status == EStockTrayStatus.Loaded + || StockManager.Instance.GetStock(ETrayType.Ok).Status == EStockTrayStatus.Unloaded + || StockManager.Instance.GetStock(ETrayType.Ok).Status == EStockTrayStatus.Empty); + + bool bNg = (StockManager.Instance.GetStock(ETrayType.Ng).Status == EStockTrayStatus.Loaded + || StockManager.Instance.GetStock(ETrayType.Ng).Status == EStockTrayStatus.Unloaded + || StockManager.Instance.GetStock(ETrayType.Ng).Status == EStockTrayStatus.Empty); + + bool bMulti = (StockManager.Instance.GetStock(ETrayType.Multi).Status == EStockTrayStatus.Loaded + || StockManager.Instance.GetStock(ETrayType.Multi).Status == EStockTrayStatus.Unloaded + || StockManager.Instance.GetStock(ETrayType.Multi).Status == EStockTrayStatus.Empty); + + bool bEmpty2 = (StockManager.Instance.GetStock(ETrayType.Empty2).Status == EStockTrayStatus.Loaded + || StockManager.Instance.GetStock(ETrayType.Empty2).Status == EStockTrayStatus.Unloaded + || StockManager.Instance.GetStock(ETrayType.Empty2).Status == EStockTrayStatus.Empty); + + if (bInput && bOk && bNg && bMulti && bEmpty2) + { + DischargeFlow.Instance.ResetScanNum(); + Ops.Stop(); + MessageQueue.Instance.Insert("料仓已全部就绪,设备停止运行"); + break; + } + Thread.Sleep(100); + } + }); + } + public void ShowMsgBox(SchedulingMessageBox msgBox) { @@ -753,5 +769,36 @@ namespace Rs.MotionPlat.Flow } ReportToTestCenter(tray); } + + public void ReportStatusToCenter(SchedulingStatusInfo.InfoType intoType) + { + SchedulingStatusInfo statusInto = new SchedulingStatusInfo(); + statusInto.Type=intoType; + statusInto.Instruction = EInstruction.InquireStatus; + switch (intoType) + { + case SchedulingStatusInfo.InfoType.State: + statusInto.Info = MachineManage.Instance.GetLoadUnloadStatus().ToString();// ERunState.Waiting.ToString(); + break; + case SchedulingStatusInfo.InfoType.RunStatus: + statusInto.Info = MachineManage.Instance.GetCenterRunStatus().ToString();// ERunStatus.Started.ToString(); + break; + case SchedulingStatusInfo.InfoType.RunMode: + statusInto.Info = MachineManage.Instance.RunMode.ToString(); + break; + case SchedulingStatusInfo.InfoType.InitializeState: + statusInto.Info = MachineManage.Instance.InitializeState.ToString();// EInitializeState.Initialized.ToString(); + break; + case SchedulingStatusInfo.InfoType.AssignMode: + statusInto.Info = EAssignMode.Normal.ToString(); + break; + case SchedulingStatusInfo.InfoType.TesterState: + statusInto.Info = JsonConvert.SerializeObject(MachineManage.Instance.GetTesterInfo());//.ToString(); + break; + default: + break; + } + ReportToTestCenter(statusInto); + } } } diff --git a/Rs.SkyLine/Properties/AssemblyInfo.cs b/Rs.SkyLine/Properties/AssemblyInfo.cs index 68bbb8e..727abc8 100644 --- a/Rs.SkyLine/Properties/AssemblyInfo.cs +++ b/Rs.SkyLine/Properties/AssemblyInfo.cs @@ -31,6 +31,6 @@ using System.Runtime.InteropServices; // //可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值 //通过使用 "*",如下所示: - [assembly: AssemblyVersion("3.20.24.54")] + [assembly: AssemblyVersion("3.20.24.55")] //[assembly: AssemblyVersion("1.0.0.0")] //[assembly: AssemblyFileVersion("1.0.0.0")]