优化8头的料仓搬运料盘动作

Eight
lhiven 9 months ago
parent fd0f5d1b33
commit dbbc7ac7a2

@ -24,6 +24,7 @@ namespace Rs.MotionPlat.Entitys
public static void Load()
{
alarmDic.Clear();
names2id2.Clear();
XSSFWorkbook book;
FileStream fs = File.Open("报警文本.xlsx", FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
book = new XSSFWorkbook(fs);
@ -144,6 +145,25 @@ namespace Rs.MotionPlat.Entitys
Msg.ShowError("Alarm file cann't find 系统异常报警 item");
}
}
public static void ShowMsg(int alarmID,Action act)
{
while (true)
{
AlarmEntity alarmEntity = AlarmCollection.Get(alarmID);
if (alarmEntity != null)
{
Msgbox.ShowDialog(alarmEntity, EButtonType.Retry, true);
act.Invoke();
break;
}
else
{
Msg.ShowError($"The alarmID = {alarmID} was not found in the translation file.");
AlarmCollection.Load();
}
}
}
}
public class AlarmEntity
{

@ -234,7 +234,7 @@ namespace Rs.MotionPlat.Flow.NormalFlow
else if (stopwatch.ElapsedMilliseconds > 10000)
{
AlarmEntity alarmEntity = AlarmCollection.Get(AlarmConstID.).Transform(StockIndex);
Msgbox.ShowDialog(alarmEntity, EButtonType.Recheck);
Msgbox.ShowDialog(alarmEntity, EButtonType.Recheck, true);
inStockStep = EInStockFlowStep.;
}
@ -285,9 +285,9 @@ namespace Rs.MotionPlat.Flow.NormalFlow
public void Up()
{
if(CurrentLayer==1)
if (CurrentLayer == 0)
{
logInfo = $"{GetClassName()} 料仓{StockIndex}已处于第层,不能再上升";
logInfo = $"{GetClassName()} 料仓{StockIndex}已处于第{CurrentLayer}层,不能再上升";
MessageQueue.Instance.Warn(logInfo);
return;
}
@ -311,11 +311,11 @@ namespace Rs.MotionPlat.Flow.NormalFlow
Thread.Sleep(500);
logInfo = $"{GetClassName()} 料仓{StockIndex}已运动到{CurrentLayer}层cz:{Ops.GetCurPosition($"StockZ{StockIndex}")}";
MessageQueue.Instance.Insert(logInfo);
if (HasTray())
{
ClampTray();
Thread.Sleep(GlobalVar.StepMotorMoveDelayTime);
}
//if (HasTray())
//{
// ClampTray();
// Thread.Sleep(GlobalVar.StepMotorMoveDelayTime);
//}
break;
}
else if (stopwatch.ElapsedMilliseconds > 5000)
@ -376,7 +376,7 @@ namespace Rs.MotionPlat.Flow.NormalFlow
AlarmEntity alarmEntity = AlarmCollection.Get($"料仓{StockIndex}夹磁气缸原位异常");
if (alarmEntity != null)
{
Msgbox.ShowDialog(alarmEntity, EButtonType.Retry);
Msgbox.ShowDialog(alarmEntity, EButtonType.Retry, true);
StockModule.ClampTrayCylinder(EIoOperate.Open, StockIndex, GetClassName());
stopwatch.Restart();
}
@ -410,7 +410,7 @@ namespace Rs.MotionPlat.Flow.NormalFlow
AlarmEntity alarmEntity = AlarmCollection.Get($"料仓{StockIndex}夹磁气缸动位异常");
if (alarmEntity != null)
{
Msgbox.ShowDialog(alarmEntity, EButtonType.Retry);
Msgbox.ShowDialog(alarmEntity, EButtonType.Retry, true);
StockModule.ClampTrayCylinder(EIoOperate.Close, StockIndex, GetClassName());
stopwatch.Restart();
}

@ -25,6 +25,7 @@ namespace Rs.MotionPlat.Flow
,
,
,
,
,
//等待夹磁气缸松开,
,
@ -144,6 +145,8 @@ namespace Rs.MotionPlat.Flow
switch (step)
{
case ETakeTrayFlowStep.:
try
{
if (fromTray == ETrayType.Empty)
{
targetPosition.TakeTrayX = GlobalVar.EmptyStockGrabPos + GlobalVar.ClampCenter2CameraCenterDist;
@ -166,8 +169,16 @@ namespace Rs.MotionPlat.Flow
AxisPosPrint.PrintTakeTrayXTargetPos($"准备运动到料仓{m_fromTray}取料盘位上方", targetPosition, GetClassName());
step = ETakeTrayFlowStep.;
}
}
catch (Exception ex)
{
AlarmCollection.SystemExceptionAlarm(ex);
}
break;
case ETakeTrayFlowStep.:
try
{
if (Ops.IsStop("TakeTrayX") || GlobalVar.VirtualAxis)
{
if (fromTray == ETrayType.Empty)
@ -175,25 +186,65 @@ namespace Rs.MotionPlat.Flow
StockManager.CloseTray(fromStockIndex);
}
AxisPosPrint.PrintTakeTrayXCurrentPos($"已运动到料仓{m_fromTray}取料盘位上方", GetClassName());
//松开夹爪
StockManager.OpenTray(fromStockIndex);
step = ETakeTrayFlowStep.;
}
}
catch (Exception ex)
{
AlarmCollection.SystemExceptionAlarm(ex);
}
break;
case ETakeTrayFlowStep.:
try
{
if (Ops.IsOn($"满料{fromStockIndex}对射光电"))
{
logInfo = GetClassName() + $"料仓{m_fromTray}料盘准备就绪";
MessageQueue.Instance.Insert(logInfo);
TakeTrayModule.CylinderGoDown(GetClassName());
stopwatch.Restart();
step = ETakeTrayFlowStep.;
step = ETakeTrayFlowStep.;
//step = ETakeTrayFlowStep.等待运动到取料位下方;
}
else
{
alarmEntity = AlarmCollection.Get(AlarmConstID.).Transform(fromTray);
Msgbox.ShowDialog(alarmEntity, EButtonType.Retry);
Msgbox.ShowDialog(alarmEntity, EButtonType.Retry, true);
}
}
catch (Exception ex)
{
AlarmCollection.SystemExceptionAlarm(ex);
}
break;
case ETakeTrayFlowStep.:
try
{
StockManager.Up(fromStockIndex);
logInfo = GetClassName() + $"料仓{fromTray}上升一层";
MessageQueue.Instance.Insert(logInfo);
step = ETakeTrayFlowStep.;
}
catch (Exception ex)
{
AlarmCollection.SystemExceptionAlarm(ex);
}
break;
case ETakeTrayFlowStep.:
{
TakeTrayModule.CylinderGoDown(GetClassName());
stopwatch.Restart();
step = ETakeTrayFlowStep.;
}
break;
case ETakeTrayFlowStep.:
try
{
if (Ops.IsOn("料盘搬运气缸动位"))
{
logInfo = GetClassName() + $"料盘搬运气缸动位 OK";
@ -201,54 +252,49 @@ namespace Rs.MotionPlat.Flow
stopwatch.Stop();
//打开真空
TakeTrayModule.VacOperation(EIoOperate.Open, GetClassName());
//松开夹爪
//StockModule.ClampTrayCylinder(EIoOperate.Open, fromStockIndex,GetClassName());
StockManager.OpenTray(fromStockIndex);
stopwatch.Restart();
StockManager.CloseTray(fromStockIndex);
//stopwatch.Restart();
step = ETakeTrayFlowStep.;
}
else if (stopwatch.ElapsedMilliseconds > 5000)
{
alarmEntity = AlarmCollection.Get(AlarmConstID.);
if (alarmEntity != null)
{
Msgbox.ShowDialog (alarmEntity, EButtonType.Retry);
step = ETakeTrayFlowStep.;
}
else
{
Msg.ShowError("翻译文件中未找到料盘搬运气缸动位异常");
}
stopwatch.Restart();
}
break;
//case ETakeTrayFlowStep.等待夹磁气缸松开:
// if(Ops.IsOn($"料仓夹磁气缸{fromStockIndex}原位"))
// {
// step = ETakeTrayFlowStep.取料盘完成抬起;
// }
// else if(stopwatch.ElapsedMilliseconds>5000)
// {
// alarmEntity = AlarmCollection.Get($"料仓{fromStockIndex}夹磁气缸原位异常");
AlarmCollection.ShowMsg(AlarmConstID., () => { step = ETakeTrayFlowStep.; });
//alarmEntity = AlarmCollection.Get(AlarmConstID.料盘搬运气缸动位异常);
//if (alarmEntity != null)
//{
// Msgbox.ShowDialog(alarmEntity, EButtonType.Retry);
// step = ETakeTrayFlowStep.等待夹磁气缸松开;
// Msgbox.ShowDialog(alarmEntity, EButtonType.Retry, true);
// step = ETakeTrayFlowStep.等待运动到取料位下方;
//}
//else
//{
// Msg.ShowError($"料仓{fromStockIndex}夹磁气缸原位异常");
// Msg.ShowError("翻译文件中未找到料盘搬运气缸动位异常");
//}
//stopwatch.Restart();
// }
// break;
}
}
catch (Exception ex)
{
AlarmCollection.SystemExceptionAlarm(ex);
}
break;
case ETakeTrayFlowStep.:
{
try
{
TakeTrayModule.CylinderGoUp(GetClassName());
stopwatch.Restart();
step = ETakeTrayFlowStep.;
}
catch (Exception ex)
{
AlarmCollection.SystemExceptionAlarm(ex);
}
}
break;
case ETakeTrayFlowStep.:
try
{
if ((Ops.IsOn("料盘搬运气缸原位")))
{
logInfo = GetClassName() + $"检测到上下气缸原位 OK";
@ -262,7 +308,7 @@ namespace Rs.MotionPlat.Flow
if (alarmEntity != null)
{
MessageQueue.Instance.Warn(GetClassName() + alarmEntity.CN);
Msgbox.ShowDialog(alarmEntity, EButtonType.Retry);
Msgbox.ShowDialog(alarmEntity, EButtonType.Retry, true);
}
else
{
@ -270,59 +316,79 @@ namespace Rs.MotionPlat.Flow
}
stopwatch.Restart();
}
}
catch (Exception ex)
{
AlarmCollection.SystemExceptionAlarm(ex);
}
break;
case ETakeTrayFlowStep.:
try
{
if (TakeTrayModule.HasTray())
{
logInfo = GetClassName() + $"料盘已被抓起 OK";
MessageQueue.Instance.Insert(logInfo);
if ( StockManager.GetCurrentLayer(fromStockIndex) == 1)
if (fromTray == ETrayType.Input)
{
step = ETakeTrayFlowStep.;
step = ETakeTrayFlowStep.;
}
else
{
step = ETakeTrayFlowStep.;
if (placeTrayGrab && GlobalVar.EnableBeforePlaceTrayToOkGrab)
{
step = ETakeTrayFlowStep.;
}
else
{
step = ETakeTrayFlowStep.;
}
}
//if (StockManager.GetCurrentLayer(fromStockIndex) == 1)
//{
// step = ETakeTrayFlowStep.到放料盘上方;
//}
//else
//{
// step = ETakeTrayFlowStep.上升一层;
//}
}
else
{
alarmEntity = AlarmCollection.Get(AlarmConstID.).Transform(fromTray.ToString());
if (alarmEntity != null)
{
Msgbox.ShowDialog(alarmEntity, EButtonType.Retry);
step = ETakeTrayFlowStep.;
Msgbox.ShowDialog(alarmEntity, EButtonType.Retry, true);
step = ETakeTrayFlowStep.;
}
else
{
Msg.ShowError("翻译文件中未找到抓料盘未抓起");
}
}
break;
case ETakeTrayFlowStep.:
StockManager.Up(fromStockIndex);
logInfo = GetClassName() + $"料仓{fromTray}上升一层";
MessageQueue.Instance.Insert(logInfo);
step = ETakeTrayFlowStep.;
break;
case ETakeTrayFlowStep.:
if(fromTray== ETrayType.Input)
{
step = ETakeTrayFlowStep.;
}
else
catch (Exception ex)
{
if (placeTrayGrab && GlobalVar.EnableBeforePlaceTrayToOkGrab)
{
step = ETakeTrayFlowStep.;
}
else
{
step = ETakeTrayFlowStep.;
}
AlarmCollection.SystemExceptionAlarm(ex);
}
break;
//case ETakeTrayFlowStep.等待上升一层完成:
// try
// {
// }
// catch (Exception ex)
// {
// AlarmCollection.SystemExceptionAlarm(ex);
// }
// break;
case ETakeTrayFlowStep.:
try
{
StockGrabFlow.Instance.Grab(fromTray);
if (placeTrayGrab)
{
@ -332,13 +398,27 @@ namespace Rs.MotionPlat.Flow
{
step = ETakeTrayFlowStep.;
}
}
catch (Exception ex)
{
AlarmCollection.SystemExceptionAlarm(ex);
}
break;
case ETakeTrayFlowStep.:
try
{
StockGrabFlow.Instance.Grab(toTray);
step = ETakeTrayFlowStep.;
}
catch (Exception ex)
{
AlarmCollection.SystemExceptionAlarm(ex);
}
break;
case ETakeTrayFlowStep.:
//if (DischargeFlow.Instance.XYCanGoLocalArea())
try
{
if (fromTray != ETrayType.Input && toTray == ETrayType.Ok && GlobalVar.EnableOkTrayCheckFull)
{
@ -368,13 +448,14 @@ namespace Rs.MotionPlat.Flow
step = ETakeTrayFlowStep.;
}
}
//else
//{
// //alarmEntity = AlarmCollection.Get(AlarmConstID.运动不安全).Transform("LoadY", "TurnvoerY");
// //AlarmMessageBox.ShowDialog(alarmEntity, ETipButton.Ok, null);
//}
catch (Exception ex)
{
AlarmCollection.SystemExceptionAlarm(ex);
}
break;
case ETakeTrayFlowStep.:
try
{
if (Ops.IsStop("TakeTrayX") || GlobalVar.VirtualAxis)
{
//if(toTray== ETrayType.Empty)
@ -390,17 +471,30 @@ namespace Rs.MotionPlat.Flow
//arrivedDumpPosEvent?.Invoke();
step = ETakeTrayFlowStep.;
}
}
catch (Exception ex)
{
AlarmCollection.SystemExceptionAlarm(ex);
}
break;
case ETakeTrayFlowStep.:
//if ((StockManager.Instance.GetStock(m_toTray).Status == EStockTrayStatus.Unloaded || StockManager.Instance.GetStock(m_toTray).Status == EStockTrayStatus.Empty) || GlobalVar.VirtualAxis)
try
{
StockManager.OpenTray(toStockIndex);
TakeTrayModule.CylinderGoDown(GetClassName());
step = ETakeTrayFlowStep.;
stopwatch.Restart();
}
catch (Exception ex)
{
AlarmCollection.SystemExceptionAlarm(ex);
}
break;
case ETakeTrayFlowStep.:
try
{
if (Ops.IsOn("料盘搬运气缸动位"))
{
logInfo = GetClassName() + "检测到料盘搬运气缸动位 OK";
@ -420,13 +514,14 @@ namespace Rs.MotionPlat.Flow
//logInfo = GetClassName() + $"料盘真空关 on";
//MessageQueue.Instance.Insert(logInfo);
//Thread.Sleep(100);
//关闭真空吸
TakeTrayModule.VacOperation(EIoOperate.Close, GetClassName());
if (isNeedGoDown)
{
StockManager.Down(toStockIndex);
}
StockManager.CloseTray(toStockIndex);
//关闭真空吸
TakeTrayModule.VacOperation(EIoOperate.Close,GetClassName());
step = ETakeTrayFlowStep.;
}
else if (stopwatch.ElapsedMilliseconds > 5000)
@ -445,13 +540,29 @@ namespace Rs.MotionPlat.Flow
stopwatch.Stop();
stopwatch.Restart();
}
}
catch (Exception ex)
{
AlarmCollection.SystemExceptionAlarm(ex);
}
break;
case ETakeTrayFlowStep.:
try
{
TakeTrayModule.CylinderGoUp(GetClassName());
step = ETakeTrayFlowStep.;
stopwatch.Restart();
}
catch (Exception ex)
{
AlarmCollection.SystemExceptionAlarm(ex);
}
break;
case ETakeTrayFlowStep.:
try
{
if (Ops.IsOn("料盘搬运气缸原位"))
{
logInfo = GetClassName() + "料盘搬运气缸原位 OK";
@ -474,8 +585,16 @@ namespace Rs.MotionPlat.Flow
stopwatch.Stop();
stopwatch.Restart();
}
}
catch (Exception ex)
{
AlarmCollection.SystemExceptionAlarm(ex);
}
break;
case ETakeTrayFlowStep.:
try
{
if (!TakeTrayModule.HasTray())
{
logInfo = GetClassName() + $"放料盘完成";
@ -501,16 +620,32 @@ namespace Rs.MotionPlat.Flow
//TestCenterMessageBox.WaitResult(AlarmConstID.UpDownCylinderExceptionAlarm);
//step = ETakeTrayFlowStep.到放料盘上方;
}
}
catch (Exception ex)
{
AlarmCollection.SystemExceptionAlarm(ex);
}
break;
case ETakeTrayFlowStep.:
try
{
if (GroupAxisMove.TakeXMove(GetClassName(), GlobalVar.TakeTrayXWaitPos, GlobalVar.WholeSpeed))
{
logInfo = GetClassName() + $"到待机位";
MessageQueue.Instance.Insert(logInfo);
step = ETakeTrayFlowStep.;
}
}
catch (Exception ex)
{
AlarmCollection.SystemExceptionAlarm(ex);
}
break;
case ETakeTrayFlowStep.:
try
{
if (Ops.IsStop("TakeTrayX"))
{
logInfo = GetClassName() + $"从{fromTray}搬运到{toTray}完成";
@ -519,6 +654,11 @@ namespace Rs.MotionPlat.Flow
//dumpTrayFinishedEvent?.Invoke();
finisehd = true;
}
}
catch (Exception ex)
{
AlarmCollection.SystemExceptionAlarm(ex);
}
break;
}
Thread.Sleep(10);

Loading…
Cancel
Save