1、料盘回收到料仓时判断料仓处是否有料盘,有料盘则报警。

2、检测料盘有没有到位采用10次检测有8次OK,才OK的逻辑。
develop
lhiven 2 months ago
parent ea0c69e82f
commit 83515f0d2b

@ -438,6 +438,11 @@ namespace Rs.MotionPlat.Flow
/// </summary>
public const int = 1099;
/// <summary>
/// 皮带上有料盘报警
/// </summary>
public const int = 1100;

@ -675,27 +675,37 @@ namespace Rs.AutoDischarge.V3.Flow
}
break;
case EStockTrayUnloadFlowStep.:
if(m_stockType== ETrayType.Ok || m_stockType== ETrayType.Ng|| m_stockType== ETrayType.Multi)
//determine whether there is a tray at the silo,and alarm if there is a tray
if (Ops.IsOn($"{(int)m_stockType}号料仓上料位光电检测"))
{
if(!GlobalVar.DisableStockTrayKnock && GlobalVar.EnableTrayPreUnloadKnock)
{
TrayShake.Shake(m_stockType);
}
}
errCode = StockFlow.MoveOffset(SysConfigParam.GetValue<double>("HighSpeedDistance"), GlobalVar.StockBeltSpeed);
Thread.Sleep(30);
if (errCode == ErrorCode.Ok || GlobalVar.VirtualAxis)
{
logInfo = GetClassName() + $"{GetTrayName()} 料仓到下料降速位";
MessageQueue.Instance.Insert(logInfo);
unloadStep = EStockTrayUnloadFlowStep.;
alarmEntity = AlarmCollection.Get(AlarmConstID.).Transform((int)m_stockType);
AlarmMessageBox.ShowDialog(alarmEntity, ETipButton.Ok, null);
}
else
{
//PromptMessageBox.ShowAxisAlarmDialog(StockFlow, errCode);
alarmEntity = AlarmCollection.Get($"{StockFlow.Config.AxisName}运动异常").Transform(errCode.ToString());
AlarmMessageBox.ShowDialog(alarmEntity, ETipButton.Ok, null);
if (m_stockType == ETrayType.Ok || m_stockType == ETrayType.Ng || m_stockType == ETrayType.Multi)
{
if (!GlobalVar.DisableStockTrayKnock && GlobalVar.EnableTrayPreUnloadKnock)
{
TrayShake.Shake(m_stockType);
}
}
errCode = StockFlow.MoveOffset(SysConfigParam.GetValue<double>("HighSpeedDistance"), GlobalVar.StockBeltSpeed);
Thread.Sleep(30);
if (errCode == ErrorCode.Ok || GlobalVar.VirtualAxis)
{
logInfo = GetClassName() + $"{GetTrayName()} 料仓到下料降速位";
MessageQueue.Instance.Insert(logInfo);
unloadStep = EStockTrayUnloadFlowStep.;
}
else
{
//PromptMessageBox.ShowAxisAlarmDialog(StockFlow, errCode);
alarmEntity = AlarmCollection.Get($"{StockFlow.Config.AxisName}运动异常").Transform(errCode.ToString());
AlarmMessageBox.ShowDialog(alarmEntity, ETipButton.Ok, null);
}
}
break;
case EStockTrayUnloadFlowStep.:
if (Ops.IsStop(StockFlow) || GlobalVar.VirtualAxis)
@ -707,7 +717,7 @@ namespace Rs.AutoDischarge.V3.Flow
}
break;
case EStockTrayUnloadFlowStep.:
targetFlow = 1000;
targetFlow = 100000;
errCode = StockFlow.MoveOffset(targetFlow, GlobalVar.StockBeltSpeed / 4);
Thread.Sleep(30);
if (errCode == ErrorCode.Ok || GlobalVar.VirtualAxis)
@ -730,11 +740,90 @@ namespace Rs.AutoDischarge.V3.Flow
{
logInfo = GetClassName() + $"{GetTrayName()}料仓{(int)m_stockType}号料仓上料位光电检测 OK";
MessageQueue.Instance.Insert(logInfo);
Thread.Sleep(500);
StockFlow.Stop();
Thread.Sleep(200);
int checkCount = 1;
int hasSing = 0;
Stopwatch sw= Stopwatch.StartNew();
bool exit = false;
while (!exit)
{
if(sw.ElapsedMilliseconds < 1000 * GlobalVar.StockFlowSlowSpeedTime)
{
while (checkCount <= 10)
{
Thread.Sleep(100);
if (Ops.IsOn($"{(int)m_stockType}号料仓上料位光电检测") || GlobalVar.VirtualAxis)
{
LogHelper.Debug($"{checkCount} 次检测{(int)m_stockType}号料仓上料位光电检测 OK{hasSing}");
hasSing++;
}
else
{
LogHelper.Debug($"{checkCount} 次检测{(int)m_stockType}号料仓上料位光电检测 NG");
}
checkCount++;
}
if (hasSing > 8)
{
StockFlow.Stop();
Thread.Sleep(200);
unloadStep = EStockTrayUnloadFlowStep.;
sw.Stop();
exit = true;
}
else
{
checkCount = 0;
hasSing = 0;
}
}
else
{
LogHelper.Debug("10秒内未检测到料盘");
sw.Stop();
StockFlow.Stop();
Ops.On($"{(int)m_stockType}号料仓斜推气缸");
Thread.Sleep(500);
Ops.Off($"{(int)m_stockType}号料仓斜推气缸");
Thread.Sleep(500);
unloadStep = EStockTrayUnloadFlowStep.;
switch (m_stockType)
{
case ETrayType.Empty1:
alarmEntity = AlarmCollection.Get(AlarmConstID.1).Transform(m_stockType.ToString());
break;
case ETrayType.Input:
alarmEntity = AlarmCollection.Get(AlarmConstID.2).Transform(m_stockType.ToString());
break;
case ETrayType.Ok:
alarmEntity = AlarmCollection.Get(AlarmConstID.3).Transform(m_stockType.ToString());
break;
case ETrayType.Ng:
alarmEntity = AlarmCollection.Get(AlarmConstID.4).Transform(m_stockType.ToString());
break;
case ETrayType.Multi:
alarmEntity = AlarmCollection.Get(AlarmConstID.5).Transform(m_stockType.ToString());
break;
case ETrayType.Empty2:
alarmEntity = AlarmCollection.Get(AlarmConstID.6).Transform(m_stockType.ToString());
break;
default:
break;
}
if (alarmEntity != null)
{
MessageQueue.Instance.Warn(GetClassName() + alarmEntity.CN);
AlarmMessageBox.ShowDialog(alarmEntity, ETipButton.Retry, null);
timer.Restart();
exit = true;
unloadStep = EStockTrayUnloadFlowStep.;
}
else
{
Msg.ShowError($"翻译文件中未找到料仓上料位光电检测{(int)m_stockType}号报警");
}
}
}
}
}
else

@ -31,6 +31,6 @@ using System.Runtime.InteropServices;
//
//可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值
//通过使用 "*",如下所示:
[assembly: AssemblyVersion("20.25.07.01")]
[assembly: AssemblyVersion("20.25.08.04")]
//[assembly: AssemblyVersion("1.0.0.0")]
//[assembly: AssemblyFileVersion("1.0.0.0")]

Loading…
Cancel
Save