@ -197,7 +197,14 @@ namespace Rs.MotionPlat.Flow
retakeNum = 0 ;
logInfo = GetClassName ( ) + $"接收到测试工位下料任务" ;
MessageQueue . Instance . Insert ( logInfo ) ;
Step = ETurnoverFlowStep . 测 试 完 成 抬 起 到 高 速 位 ;
if ( GlobalVar . CleanOut = = true & & GlobalVar . TurnoverNozzleHasProduct )
{
Step = ETurnoverFlowStep . 到 周 转 盘 放 料 位 上 方 ;
}
else
{
Step = ETurnoverFlowStep . 测 试 完 成 抬 起 到 高 速 位 ;
}
//Step = ETurnoverFlowStep.到测试取料位上方;
}
break ;
@ -471,6 +478,7 @@ namespace Rs.MotionPlat.Flow
{
if ( Ops . IsOn ( $"周转{task.ToIndex + 1}号吸嘴真空吸检测" ) | | GlobalVar . VirtualAxis | | GlobalVar . RunSpace )
{
GlobalTray . TurnoverNozzle . ChangeStatus ( task . ToIndex + 1 , ESlotStatus . Have ) ;
//如果真空检测OK, 带料产品已经吸上了
TransitNozzleManager . Instance . Nozzle ( task . ToIndex + 1 ) . AddProduct ( task ) ;
TurnoverTrayManager . Instance . Slot ( task . FromIndex + 1 ) . ClearProduct ( ) ;
@ -547,6 +555,7 @@ namespace Rs.MotionPlat.Flow
while ( true )
{
alarmInfo = $"测试穴位{testTrayHasProductList.ToJoinString()}中有产品,请取出后点击确定" ;
LogHelper . Debug ( alarmInfo ) ;
MsgBox . ShowDialog ( 1 , alarmInfo , ETipButton . Ok ) ;
//再次检测
TestTrayHasProduct ( ) ;
@ -753,6 +762,7 @@ namespace Rs.MotionPlat.Flow
{
//获取需要放料的吸嘴
hasProductNozzles = TransitNozzleManager . Instance . GetHasProductNozzles ( ) ;
//TrayStatusManager.UpdateMultiSlotAsync("TurnoverNozzle", hasProductNozzles.Select(n => n.NozzleIndex).ToArray(), 0);
logInfo = GetClassName ( ) + $"已运动到到测试放料位下方2 TurnoverZ at:{Ops.GetCurPosition(AxisAlias.TurnoverZ)}" ;
MessageQueue . Instance . Insert ( logInfo ) ;
/*打开测试穴位真空吸*/
@ -763,7 +773,8 @@ namespace Rs.MotionPlat.Flow
VacManager . TransitNozzleVacBreak ( EVacOperator . Open , true , hasProductNozzles . Select ( n = > n . NozzleIndex ) . ToArray ( ) ) ;
/*关闭周转吸头真空破*/
VacManager . TransitNozzleVacBreak ( EVacOperator . Close , true , hasProductNozzles . Select ( n = > n . NozzleIndex ) . ToArray ( ) ) ;
//在这里更新产品状态
//TransitNozzleManager.Instance.Transi
Step = ETurnoverFlowStep . 测 试 位 放 料 完 成 抬 起 1 ;
}
}
@ -914,7 +925,11 @@ namespace Rs.MotionPlat.Flow
if ( Ops . IsOff ( $"测试{nozzle.NozzleIndex}号穴位光纤检测" ) | | GlobalVar . RunSpace )
{
//如果出现光纤异常,先用压头压一下
FiberWarningPressFlow . Instance . Press ( ) ;
if ( ! GlobalVar . RunSpace )
{
FiberWarningPressFlow . Instance . Press ( ) ;
}
//压一下之后如果还出现异常,则报警
if ( Ops . IsOff ( $"测试{nozzle.NozzleIndex}号穴位光纤检测" ) )
{
@ -965,6 +980,7 @@ namespace Rs.MotionPlat.Flow
{
if ( Ops . IsOn ( $"测试{nozzle.NozzleIndex}号穴位真空吸检测" ) | | GlobalVar . RunSpace | | GlobalVar . DisableFixtureVacuumCheck )
{
GlobalTray . TurnoverNozzle . ChangeStatus ( nozzle . NozzleIndex , ESlotStatus . NotHave ) ;
GlobalTray . TestTray . ChangeStatus ( nozzle . NozzleIndex , ESlotStatus . Have ) ;
TestTrayManager . Instance . Slot ( nozzle . NozzleIndex ) . AddProduct ( nozzle ) ;
nozzle . Clear ( ) ;
@ -1120,7 +1136,8 @@ namespace Rs.MotionPlat.Flow
case ETurnoverFlowStep . 等 待 到 测 试 保 压 位 下 方 2 :
if ( Ops . IsStop ( AxisControl . PressZ ) | | GlobalVar . VirtualAxis )
{
if ( Ops . IsArrived ( AxisControl . PressZ ) | | GlobalVar . VirtualAxis )
Thread . Sleep ( 100 ) ;
//if(Ops.IsArrived(AxisControl.PressZ) || GlobalVar.VirtualAxis)
{
logInfo = GetClassName ( ) + $"已到测试保压位下方2 PressZ at:{Ops.GetCurPosition(AxisAlias.PressZ)}" ;
MessageQueue . Instance . Insert ( logInfo ) ;
@ -1543,6 +1560,7 @@ namespace Rs.MotionPlat.Flow
TestTraySlot testSlot = TestTrayManager . Instance . Slot ( task . FromIndex + 1 ) ;
if ( Ops . IsOn ( $"周转{task.FromIndex + 1}号吸嘴真空吸检测" ) | | GlobalVar . VirtualAxis | | GlobalVar . RunSpace )
{
GlobalTray . TurnoverNozzle . ChangeStatus ( task . FromIndex + 1 , ESlotStatus . Have ) ;
logInfo = $"周转{task.FromIndex + 1}号吸嘴真空吸检测OK" ;
MessageQueue . Instance . Insert ( logInfo ) ;
testSlot . ClearProduct ( ) ;
@ -1593,7 +1611,7 @@ namespace Rs.MotionPlat.Flow
}
break ;
case ETurnoverFlowStep . 等 待 排 料 离 开 周 转 盘 :
if ( bTakeFlag )
if ( bTakeFlag || GlobalVar . CleanOut )
{
Step = ETurnoverFlowStep . 到 周 转 盘 放 料 位 上 方 ;
}
@ -1781,9 +1799,14 @@ namespace Rs.MotionPlat.Flow
{
if ( Ops . IsArrived ( AxisControl . TurnoverZ ) | | GlobalVar . VirtualAxis )
{
foreach ( TransitNozzle nozzle in hasProductNozzles )
{
GlobalTray . TurnoverNozzle . ChangeStatus ( nozzle . NozzleIndex , ESlotStatus . NotHave ) ;
}
logInfo = GetClassName ( ) + $"已运动到周转盘放料位下方2" ;
MessageQueue . Instance . Insert ( logInfo ) ;
hasProductNozzles = TransitNozzleManager . Instance . GetHasProductNozzles ( ) ;
//TrayStatusManager.UpdateMultiSlotAsync("TurnoverNozzle", hasProductNozzles.Select(n => n.NozzleIndex).ToArray(), 0);
/*关闭周转吸头真空吸*/
VacManager . TransitNozzleVacSuction ( EVacOperator . Close , true , hasProductNozzles . Select ( n = > n . FromIndex + 1 ) . ToArray ( ) ) ;
/*打开周转吸头真空破*/
@ -2125,19 +2148,30 @@ namespace Rs.MotionPlat.Flow
}
break ;
case ETurnoverFlowStep . 上 报 中 控 任 务 完 成 :
if ( LoadAndUnloadTask . Instance . TestUnloadTaskArrived )
if ( GlobalVar . CleanOut )
{
hasUnloadFlag = false ;
LoadAndUnloadTask . Instance . TestUnloadTaskArrived = false ;
MachineManage . Instance . SetTesterState ( new TesterInfo ( ) { State = ETesterState . NotReady , ReadySites = null } ) ;
logInfo = GetClassName ( ) + "通知中控产品全部已从治具中取出, 状态变成NotReady" ;
MessageQueue . Instance . Insert ( logInfo ) ;
unloadOk = true ;
TestCenter. Instance . LoadTestUnLoadResult ( ) ;
MachineManage . Instance . SetTesterState ( new TesterInfo ( ) { State = ETesterState . NotReady , ReadySites = null } ) ;
LoadAndUnloadTask . Instance . Clear ( 1 ) ;
MachineManage . Instance . SetLoadUnloadStatus ( ERunState . Waiting ) ;
Step = ETurnoverFlowStep . 等 待 任 务 ;
}
else
{
if ( LoadAndUnloadTask . Instance . TestUnloadTaskArrived )
{
hasUnloadFlag = false ;
LoadAndUnloadTask . Instance . TestUnloadTaskArrived = false ;
MachineManage . Instance . SetTesterState ( new TesterInfo ( ) { State = ETesterState . NotReady , ReadySites = null } ) ;
logInfo = GetClassName ( ) + "通知中控产品全部已从治具中取出, 状态变成NotReady" ;
MessageQueue . Instance . Insert ( logInfo ) ;
unloadOk = true ;
TestCenter . Instance . LoadTestUnLoadResult ( ) ;
LoadAndUnloadTask . Instance . Clear ( 1 ) ;
MachineManage . Instance . SetLoadUnloadStatus ( ERunState . Waiting ) ;
Step = ETurnoverFlowStep . 等 待 任 务 ;
}
}
break ;
}
}