1 修改SC配置中压力单位
2 Load腔中添加机械手取托盘Tray防呆 3 修改创建和删除tray Wafer对应的逻辑问题修改
This commit is contained in:
parent
429b402a35
commit
08753d5bae
|
@ -16,6 +16,7 @@ using MECF.Framework.RT.EquipmentLibrary.HardwareUnits.PMs;
|
|||
using MECF.Framework.RT.EquipmentLibrary.HardwareUnits.Robots;
|
||||
using MECF.Framework.RT.EquipmentLibrary.HardwareUnits.Robots.RobotBase;
|
||||
using MECF.Framework.RT.EquipmentLibrary.HardwareUnits.TMs;
|
||||
using SicModules.Devices;
|
||||
using IoInterLock = SicModules.Devices.IoInterLock;
|
||||
|
||||
namespace SicModules.TMs.Routines.Base
|
||||
|
@ -44,6 +45,8 @@ namespace SicModules.TMs.Routines.Base
|
|||
get { return _trayClaw; }
|
||||
}
|
||||
|
||||
protected bool IsTrayLoad => _ioLoadRotation.IsMoveDone;
|
||||
|
||||
protected IoLift4 UnLoadLift
|
||||
{
|
||||
get { return _unLoadLift; }
|
||||
|
@ -67,6 +70,7 @@ namespace SicModules.TMs.Routines.Base
|
|||
private IoLift4 _loadLift;
|
||||
private IoLift4 _unLoadLift;
|
||||
private IoClaw _trayClaw;
|
||||
private IoLoadRotation _ioLoadRotation;
|
||||
|
||||
protected SicMultipleServo _sicServo;
|
||||
|
||||
|
@ -87,6 +91,8 @@ namespace SicModules.TMs.Routines.Base
|
|||
_unLoadLift = DEVICE.GetDevice<IoLift4>($"{ModuleName.UnLoad}.UnLoadLift");
|
||||
|
||||
_trayClaw = DEVICE.GetDevice<IoClaw>("LoadLock.LLTrayClaw");
|
||||
_ioLoadRotation = DEVICE.GetDevice<IoLoadRotation>("Load.Rotation");
|
||||
|
||||
_reactorSuspectorCheckPM1 = DEVICE.GetDevice<IoSensor>($"PM1.SensorReactorSuspectorCheck");
|
||||
_reactorSuspectorCheckPM2 = DEVICE.GetDevice<IoSensor>($"PM2.SensorReactorSuspectorCheck");
|
||||
}
|
||||
|
|
|
@ -205,6 +205,12 @@ namespace SicModules.TMs.Routines
|
|||
EV.PostWarningLog(Module, $"Can not place, Load is clamp!");
|
||||
return Result.FAIL;
|
||||
}
|
||||
|
||||
if (!IsTrayLoad)
|
||||
{
|
||||
EV.PostWarningLog(Module, $"Can not place, tray is not at load angle !");
|
||||
return Result.FAIL;
|
||||
}
|
||||
}
|
||||
else if (_target == ModuleName.UnLoad)
|
||||
{
|
||||
|
@ -302,11 +308,11 @@ namespace SicModules.TMs.Routines
|
|||
WaitSicServoLoadAngleRun((int)RoutineStep.SicServoLoadAngleRun, _sicServoLoadAngle, 90);
|
||||
|
||||
RobotMoveSingleStepAndWait((int)RoutineStep.RobotGotoPmLowAndWait, RobotDevice, _target, _targetSlot, _blade, RobotAction.Picking, false,true,60);//先进去,停在高位
|
||||
TimeDelay((int)RoutineStep.TimeDelay3, 3);
|
||||
TimeDelay((int)RoutineStep.TimeDelay3, 10);
|
||||
|
||||
//等磁流体开始旋转,释放Tray盘
|
||||
WaitSicServoUnloadAngleRun((int)RoutineStep.SicServoUnloadAngleRun, _sicServoUnloadAngle, 90);//开始旋转,释放Tray盘
|
||||
TimeDelay((int)RoutineStep.TimeDelay4, 10);
|
||||
TimeDelay((int)RoutineStep.TimeDelay4, 3);
|
||||
RobotMoveSingleStepAndWait((int)RoutineStep.RobotGotoPmHighAndWait, RobotDevice, _target, _targetSlot, _blade, RobotAction.Picking, true,false,60);//从高位退出去
|
||||
|
||||
|
||||
|
|
|
@ -195,7 +195,7 @@ namespace SicModules.TMs.Routines
|
|||
//Place之前先,根据Sensor检测是否有盘
|
||||
if (!SC.GetValue<bool>("System.IsSimulatorMode"))
|
||||
{
|
||||
if (_target ==ModuleName.LoadLock&& SensorLLTrayPresence.Value)
|
||||
if ((_target ==ModuleName.LoadLock || _target == ModuleName.Load) && SensorLLTrayPresence.Value)
|
||||
{
|
||||
EV.PostWarningLog(Module, $"Can not place, LLTrayPresence sensor has tray");
|
||||
return Result.FAIL;
|
||||
|
@ -284,7 +284,7 @@ namespace SicModules.TMs.Routines
|
|||
|
||||
|
||||
RobotMoveSingleStepAndWait((int)RoutineStep.RobotGotoPmLowAndWait, RobotDevice, _target, _targetSlot, _blade, RobotAction.Placing,false, true,60);//先进去,停在高位
|
||||
TimeDelay((int)RoutineStep.TimeDelay4, 0);
|
||||
TimeDelay((int)RoutineStep.TimeDelay4, 20);
|
||||
|
||||
WaitSicServoLoadAngleRun((int)RoutineStep.WaitSicServoLoadAngleRun, _sicServoLoadAngleRun, 90);//机械手到高位,磁流体旋转锁紧Tray盘
|
||||
TimeDelay((int)RoutineStep.TimeDelay5, 3);
|
||||
|
|
|
@ -543,7 +543,7 @@
|
|||
<config default="" name="LastRecipeName" description="last recipe name" max="" min="" paramter="" tag="" visible="false" unit="" type="String" />
|
||||
<config default="127.0.0.1:102" name="SiemensIP" description="Siemens IP Address,Default IP:192.168.1.105:102" max="" min="" paramter="" tag="" unit="" type="String" />
|
||||
<config default="S1500" name="SiemensType" visible="false" description="Siemens Type" max="" min="" paramter="" tag="" unit="" type="String" />
|
||||
<config default="30" name="PT1PT2PressureDifferenceUpperLimit" description="PT1和PT2最大压差上限" max="1100" min="0" paramter="" tag="" unit="s" type="Double" />
|
||||
<config default="30" name="PT1PT2PressureDifferenceUpperLimit" description="PT1和PT2最大压差上限" max="1100" min="0" paramter="" tag="" unit="mbar" type="Double" />
|
||||
<config default="Warning" name="PT1PT2PressureDifferenceMaxAlarmLevel" description="工艺过程中PT1和PT2最大压差超限时产生报警的等级" max="" min="" paramter="Alarm;Warning" tag="ReadOnlySelection" unit="" type="String" />
|
||||
<config default="5" name="ThrottlePressureMaxDiff" description="蝶阀调节值与实际压力的差值小于此数值则表示到位" max="1000" min="0" paramter="" tag="" unit="mbar" type="Double" />
|
||||
<config default="120" name="ThrottlePressureTimeout" description="蝶阀调节值超时时间" max="2000" min="0" paramter="" tag="" unit="s" type="Integer" />
|
||||
|
@ -1144,7 +1144,7 @@
|
|||
<config default="" name="LastRecipeName" description="last recipe name" max="" min="" paramter="" tag="" visible="false" unit="" type="String" />
|
||||
<config default="127.0.0.1:102" name="SiemensIP" description="Siemens IP Address,Default IP:192.168.1.205:102" max="" min="" paramter="" tag="" unit="" type="String" />
|
||||
<config default="S1500" name="SiemensType" visible="false" description="Siemens Type" max="" min="" paramter="" tag="" unit="" type="String" />
|
||||
<config default="30" name="PT1PT2PressureDifferenceUpperLimit" description="PT1和PT2最大压差上限" max="1100" min="0" paramter="" tag="" unit="s" type="Double" />
|
||||
<config default="30" name="PT1PT2PressureDifferenceUpperLimit" description="PT1和PT2最大压差上限" max="1100" min="0" paramter="" tag="" unit="mbar" type="Double" />
|
||||
<config default="Warning" name="PT1PT2PressureDifferenceMaxAlarmLevel" description="工艺过程中PT1和PT2最大压差超限时产生报警的等级" max="" min="" paramter="Alarm;Warning" tag="ReadOnlySelection" unit="" type="String" />
|
||||
<config default="5" name="ThrottlePressureMaxDiff" description="蝶阀调节值与实际压力的差值小于此数值则表示到位" max="1000" min="0" paramter="" tag="" unit="mbar" type="Double" />
|
||||
<config default="120" name="ThrottlePressureTimeout" description="蝶阀调节值超时时间" max="2000" min="0" paramter="" tag="" unit="s" type="Integer" />
|
||||
|
|
|
@ -1183,6 +1183,10 @@ namespace SicRT.Equipments.Systems
|
|||
|
||||
if (WaferManager.Instance.IsWaferSlotLocationValid(chamber, slot))
|
||||
{
|
||||
if (!WaferManager.Instance.CheckHasTray(chamber, slot))
|
||||
{
|
||||
WaferManager.Instance.CreateTray(chamber, slot);
|
||||
}
|
||||
if (WaferManager.Instance.CheckHasWafer(chamber, slot))
|
||||
{
|
||||
EV.PostInfoLog("System", string.Format("{0} slot {1} already has wafer.create wafer is not valid", chamber, slot));
|
||||
|
@ -1266,6 +1270,11 @@ namespace SicRT.Equipments.Systems
|
|||
}
|
||||
else
|
||||
{
|
||||
if (WaferManager.Instance.CheckHasWafer(chamber, slot))
|
||||
{
|
||||
WaferManager.Instance.DeleteWafer(chamber, slot);
|
||||
EV.PostMessage(ModuleName.System.ToString(), EventEnum.WaferDelete, chamber.ToString(), slot);
|
||||
}
|
||||
WaferManager.Instance.DeleteTray(chamber, slot);
|
||||
//EV.PostMessage(ModuleName.System.ToString(), EventEnum.WaferDelete, chamber.ToString(), slot);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue