From 9ce3e5dbaf4e088614b79f4f177f256182b9bd3b Mon Sep 17 00:00:00 2001 From: lhiven <2366881222@qq.com> Date: Wed, 10 Jan 2024 09:38:05 +0800 Subject: [PATCH] =?UTF-8?q?1=20=E5=A2=9E=E5=8A=A0=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E5=BA=93=E8=AE=B0=E5=BD=95tray=E7=9A=84=E7=8A=B6=E6=80=81=202?= =?UTF-8?q?=20=E5=BD=93=E6=B5=8B=E9=AB=98=E4=BB=AA=E9=93=BE=E6=8E=A5?= =?UTF-8?q?=E4=B8=8D=E4=B8=8A=E6=97=B6=EF=BC=8C=E5=A2=9E=E5=8A=A0=E5=BC=B9?= =?UTF-8?q?=E6=A1=86=E6=8F=90=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../AuxiliaryEquipment/DeviceFactory.cs | 4 +- .../AuxiliaryEquipment/LaserEquipment.cs | 2 +- Rs.SkyLine/Commom/Ops.cs | 7 +- Rs.SkyLine/Entitys/Trays/TrayStatusManager.cs | 88 +++++++++++++++++++ Rs.SkyLine/Flow/MonitorSystemButton.cs | 2 +- Rs.SkyLine/Flow/NormalFlow/DischargeFlow.cs | 5 ++ Rs.SkyLine/Flow/NormalFlow/StockTrayFlow.cs | 6 ++ Rs.SkyLine/FormMain.cs | 17 +++- Rs.SkyLine/Recipe/StockTrayLocationRecipe.cs | 6 +- Rs.SkyLine/Rs.SkyLine.csproj | 1 + 10 files changed, 125 insertions(+), 13 deletions(-) create mode 100644 Rs.SkyLine/Entitys/Trays/TrayStatusManager.cs diff --git a/Rs.SkyLine/AuxiliaryEquipment/DeviceFactory.cs b/Rs.SkyLine/AuxiliaryEquipment/DeviceFactory.cs index 5d87a14..43f8373 100644 --- a/Rs.SkyLine/AuxiliaryEquipment/DeviceFactory.cs +++ b/Rs.SkyLine/AuxiliaryEquipment/DeviceFactory.cs @@ -14,10 +14,10 @@ namespace Rs.MotionPlat.AuxiliaryEquipment public static LaserEquipment checkHeightDev { get; set; } - public static void Init() + public static bool Init() { checkHeightDev = new LaserEquipment(); - checkHeightDev.Open(); + return checkHeightDev.Open(); } } } diff --git a/Rs.SkyLine/AuxiliaryEquipment/LaserEquipment.cs b/Rs.SkyLine/AuxiliaryEquipment/LaserEquipment.cs index 6d720e5..a19beca 100644 --- a/Rs.SkyLine/AuxiliaryEquipment/LaserEquipment.cs +++ b/Rs.SkyLine/AuxiliaryEquipment/LaserEquipment.cs @@ -49,7 +49,7 @@ namespace Rs.MotionPlat.AuxiliaryEquipment } catch (Exception ex) { - MessageQueue.Instance.Insert("测高仪链接失败"); + MessageQueue.Instance.Warn("测高仪链接失败"); IsConnected = false; return false; } diff --git a/Rs.SkyLine/Commom/Ops.cs b/Rs.SkyLine/Commom/Ops.cs index aadcf5b..0a50528 100644 --- a/Rs.SkyLine/Commom/Ops.cs +++ b/Rs.SkyLine/Commom/Ops.cs @@ -119,7 +119,7 @@ namespace Rs.MotionPlat.Commom } else { - MessageQueue.Instance.Insert("Init fail"); + MessageQueue.Instance.Warn("Init fail"); } Ops.On("上下气缸电磁阀原位"); Ops.Off("上下气缸电磁阀动位"); @@ -137,7 +137,10 @@ namespace Rs.MotionPlat.Commom TurnoverSlotOffset.Init(); MonitorSystemButton.Instance.Start(); TestCenter.Instance.Init(); - DeviceFactory.Init(); + if(!DeviceFactory.Init()) + { + Msg.ShowError("laser connect fail!"); + } QifuManager.Instance.Init(); QifuManager.Instance.Write(SysConfigParam.GetValue("QifuValue")); LightManger.Instance.SetStatus(ELightStatus.YellowBlink); diff --git a/Rs.SkyLine/Entitys/Trays/TrayStatusManager.cs b/Rs.SkyLine/Entitys/Trays/TrayStatusManager.cs new file mode 100644 index 0000000..f915b58 --- /dev/null +++ b/Rs.SkyLine/Entitys/Trays/TrayStatusManager.cs @@ -0,0 +1,88 @@ +using Rs.DataAccess; +using Rs.MotionPlat.Commom; +using System; +using System.Collections.Generic; +using System.Data; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Rs.MotionPlat.Entitys.Trays +{ + /// + /// 料盘的状态管理 + /// + public static class TrayStatusManager + { + static SqliteHelper db = new SqliteHelper(); + /// + /// 按traytype填充数据 + /// + /// + /// + public static void Fill(ETrayType trayType) + { + Task.Run(() => { + string updateSql = $"update traystatus set status=1 where trayname='{trayType.ToString()}'"; + db.ExecuteNonQuery(updateSql); + }); + } + + /// + /// 按traytype和slotindex填充数据 + /// + /// + /// + /// + public static int Fill(ETrayType trayType,int slotIndex) + { + string updateSql = $"update traystatus set status=1 where trayname='{trayType.ToString()}' and slotindex={slotIndex}"; + return db.ExecuteNonQuery(updateSql); + } + + /// + /// 按照traytype清空有料状态 + /// + /// + /// + public static int Clear(ETrayType trayType) + { + string updateSql = $"update traystatus set status=0 where trayname='{trayType.ToString()}'"; + return db.ExecuteNonQuery(updateSql); + } + + /// + /// 按照traytype 和 slotindex 清空有料状态 + /// + /// + /// + /// + public static int Clear(ETrayType trayType,int slotindex) + { + string updateSql = $"update traystatus set status=0 where trayname='{trayType.ToString()}' and slotindex={slotindex}"; + return db.ExecuteNonQuery(updateSql); + } + + public static void Init(ETrayType trayType) + { + GlobalTray.GetTray(trayType).ChangeStatus(Controls.ESlotStatus.NotHave); + string selectSql = $"select * from traystatus where trayname='{trayType.ToString()}'"; + DataTable dt=db.GetDataTable(selectSql); + if(dt!=null&&dt.Rows.Count>0) + { + foreach (DataRow row in dt.Rows) + { + if (row["status"].ToString()=="1") + { + GlobalTray.GetTray(trayType).ChangeStatus(int.Parse(row["slotindex"].ToString()), Controls.ESlotStatus.Have); + } + else + { + GlobalTray.GetTray(trayType).ChangeStatus(int.Parse(row["slotindex"].ToString()), Controls.ESlotStatus.NotHave); + } + } + } + } + + } +} diff --git a/Rs.SkyLine/Flow/MonitorSystemButton.cs b/Rs.SkyLine/Flow/MonitorSystemButton.cs index edaefe4..3e11029 100644 --- a/Rs.SkyLine/Flow/MonitorSystemButton.cs +++ b/Rs.SkyLine/Flow/MonitorSystemButton.cs @@ -195,7 +195,7 @@ namespace Rs.MotionPlat.Flow } else { - MessageQueue.Instance.Insert($"设备在{MachineManage.Instance.MachineStatus}状态,无法启动!"); + MessageQueue.Instance.Warn($"device {MachineManage.Instance.MachineStatus} status,cann't start!"); } step = EMonitorButtonStep.StartButtonUp; break; diff --git a/Rs.SkyLine/Flow/NormalFlow/DischargeFlow.cs b/Rs.SkyLine/Flow/NormalFlow/DischargeFlow.cs index c8031e8..317807f 100644 --- a/Rs.SkyLine/Flow/NormalFlow/DischargeFlow.cs +++ b/Rs.SkyLine/Flow/NormalFlow/DischargeFlow.cs @@ -1515,21 +1515,25 @@ namespace Rs.MotionPlat.Flow { curNozzle.ToFloor = StockManager.Instance.GetStock(ETrayType.Input).GetFloor(); GlobalTray.InputTray.ChangeStatus(curNozzle.ToIndex+1, ESlotStatus.Have); + TrayStatusManager.Fill(ETrayType.Input, curNozzle.ToIndex + 1); } else if (curNozzle.ToType == TurnoverType.Passed) { curNozzle.ToFloor = StockManager.Instance.GetStock(ETrayType.Ok).GetFloor(); GlobalTray.OkTary.ChangeStatus(curNozzle.ToIndex + 1, ESlotStatus.Have); + TrayStatusManager.Fill(ETrayType.Ok, curNozzle.ToIndex + 1); } else if (curNozzle.ToType == TurnoverType.Failed) { curNozzle.ToFloor = StockManager.Instance.GetStock(ETrayType.Ng).GetFloor(); GlobalTray.NgTray.ChangeStatus(curNozzle.ToIndex + 1, ESlotStatus.Have); + TrayStatusManager.Fill(ETrayType.Ng, curNozzle.ToIndex + 1); } else if (curNozzle.ToType == TurnoverType.Multifunction) { curNozzle.ToFloor = StockManager.Instance.GetStock(ETrayType.Multi).GetFloor(); GlobalTray.MultiTray.ChangeStatus(curNozzle.ToIndex + 1, ESlotStatus.Have); + TrayStatusManager.Fill(ETrayType.Multi, curNozzle.ToIndex + 1); } LoadAndUnloadTask.Instance.AddTurnoverResult(curNozzle); @@ -1849,6 +1853,7 @@ namespace Rs.MotionPlat.Flow nozzle.SN = ""; //nozzle.FromIndex = GlobalTray.InputTray.GetSlot(ESlotStatus.Have).Index - 1; GlobalTray.InputTray.ChangeStatus(nozzle.FromIndex+1, ESlotStatus.NotHave); + TrayStatusManager.Clear(ETrayType.Input, nozzle.FromIndex + 1); } nozzle.Update(); turnoverInfo.Dealed = true; diff --git a/Rs.SkyLine/Flow/NormalFlow/StockTrayFlow.cs b/Rs.SkyLine/Flow/NormalFlow/StockTrayFlow.cs index 02dd887..50592ac 100644 --- a/Rs.SkyLine/Flow/NormalFlow/StockTrayFlow.cs +++ b/Rs.SkyLine/Flow/NormalFlow/StockTrayFlow.cs @@ -3,6 +3,7 @@ using Rs.Framework; using Rs.Motion; using Rs.Motion.Base; using Rs.MotionPlat.Commom; +using Rs.MotionPlat.Entitys.Trays; using Rs.MotionPlat.Flow; using System; using System.ComponentModel.Design; @@ -699,10 +700,13 @@ namespace Rs.AutoDischarge.V3.Flow if (status == EStockTrayStatus.Loaded) { GlobalTray.GetTray(m_stockType).ChangeStatus(ESlotStatus.Have); + //如果是默认加载产品数据,则把数据库的数据填充 + TrayStatusManager.Fill(m_stockType); } else if (status == EStockTrayStatus.Unloaded || status == EStockTrayStatus.Empty) { GlobalTray.GetTray(m_stockType).ChangeStatus(ESlotStatus.Null); + TrayStatusManager.Clear(m_stockType); } } else @@ -710,10 +714,12 @@ namespace Rs.AutoDischarge.V3.Flow if (status == EStockTrayStatus.Loaded) { GlobalTray.GetTray(m_stockType).ChangeStatus(ESlotStatus.NotHave); + TrayStatusManager.Clear(m_stockType); } else if (status == EStockTrayStatus.Unloaded || status == EStockTrayStatus.Empty) { GlobalTray.GetTray(m_stockType).ChangeStatus(ESlotStatus.Null); + TrayStatusManager.Clear(m_stockType); } } diff --git a/Rs.SkyLine/FormMain.cs b/Rs.SkyLine/FormMain.cs index 7037f31..e5ccd6f 100644 --- a/Rs.SkyLine/FormMain.cs +++ b/Rs.SkyLine/FormMain.cs @@ -356,6 +356,10 @@ namespace Rs.MotionPlat //TakeDumpTest.Instance.Start(); } + else + { + MessageQueue.Instance.Warn($"device {MachineManage.Instance.MachineStatus} status,cann't start!"); + } } private void btnStop_BtnClick(object sender, EventArgs e) @@ -386,7 +390,9 @@ namespace Rs.MotionPlat } if (StockManager.Instance.HasTray(ETrayType.Input)) { - StockManager.Instance.GetStock(ETrayType.Input).ChangeStatus(EStockTrayStatus.Loaded); + StockManager.Instance.GetStock(ETrayType.Input).ChangeStatus(EStockTrayStatus.Loaded,false); + TrayStatusManager.Init(ETrayType.Input); + //GlobalTray.InputTray.ChangeStatus() } else { @@ -395,7 +401,8 @@ namespace Rs.MotionPlat if (StockManager.Instance.HasTray(ETrayType.Ok)) { - StockManager.Instance.GetStock(ETrayType.Ok).ChangeStatus(EStockTrayStatus.Loaded); + StockManager.Instance.GetStock(ETrayType.Ok).ChangeStatus(EStockTrayStatus.Loaded, false); + TrayStatusManager.Init(ETrayType.Ok); } else { @@ -404,7 +411,8 @@ namespace Rs.MotionPlat if (StockManager.Instance.HasTray(ETrayType.Ng)) { - StockManager.Instance.GetStock(ETrayType.Ng).ChangeStatus(EStockTrayStatus.Loaded); + StockManager.Instance.GetStock(ETrayType.Ng).ChangeStatus(EStockTrayStatus.Loaded, false); + TrayStatusManager.Init(ETrayType.Ng); } else { @@ -413,7 +421,8 @@ namespace Rs.MotionPlat if (StockManager.Instance.HasTray(ETrayType.Multi)) { - StockManager.Instance.GetStock(ETrayType.Multi).ChangeStatus(EStockTrayStatus.Loaded); + StockManager.Instance.GetStock(ETrayType.Multi).ChangeStatus(EStockTrayStatus.Loaded, false); + TrayStatusManager.Init(ETrayType.Multi); } else { diff --git a/Rs.SkyLine/Recipe/StockTrayLocationRecipe.cs b/Rs.SkyLine/Recipe/StockTrayLocationRecipe.cs index 7d09d5b..beee40c 100644 --- a/Rs.SkyLine/Recipe/StockTrayLocationRecipe.cs +++ b/Rs.SkyLine/Recipe/StockTrayLocationRecipe.cs @@ -306,11 +306,11 @@ namespace Rs.MotionPlat.Recipe string deleteSql = $"delete from traystatus where trayname='{m_trayName}'"; db.ExecuteNonQuery(deleteSql); string insertSql = "insert into traystatus(trayname,slotindex,status) values('{0}',{1},{2})"; - for (int i = 1; i <= rsTray1.RowNum; i++) + for (int row = 1; row <= rsTray1.RowNum; row++) { - for (int j = 1; j <= rsTray1.ColumnNum; j++) + for (int col = 1; col <= rsTray1.ColumnNum; col++) { - int index = j + (i - 1) * rsTray1.ColumnNum; + int index = col + (row - 1) * rsTray1.ColumnNum; string executeSql = string.Format(insertSql, m_trayName, index, 0); db.ExecuteNonQuery(executeSql); } diff --git a/Rs.SkyLine/Rs.SkyLine.csproj b/Rs.SkyLine/Rs.SkyLine.csproj index 52ee3d6..4382c3e 100644 --- a/Rs.SkyLine/Rs.SkyLine.csproj +++ b/Rs.SkyLine/Rs.SkyLine.csproj @@ -193,6 +193,7 @@ + Form