Commit 14cf1502 刘韬

1.入料失败只重试3次

2.出料抓料失败后直接手动扔ng把, 打出来的标签会抛弃掉
3.限制了出料顶升每次升幅的最大值,防止一升过头
1 个父辈 fa81c6e7
......@@ -110,16 +110,16 @@ namespace OnlineStore.AutoCountClient
try
{
if (equipBase.runStatus.Equals(RobotRunStatus.Wait))
{
bool result = equipBase.StartRun();
if (result)
{
FormStatus(true);
bool result = equipBase.StartRun();
if (result)
{
FormStatus(true);
}
}
}
else
{
equipBase.Reset();
else
{
equipBase.Reset();
}
}
catch (Exception ex)
......
......@@ -24,6 +24,9 @@ namespace OnlineStore.AutoCountClient
{
private bool IsLoad = false;
private OutputEquip equipBean;
public event resetButtonClickdelegate resetButtonClick;
public delegate void resetButtonClickdelegate();
internal FrmOutputEquip(OutputEquip moveEquip)
{
equipBase = moveEquip;
......@@ -326,6 +329,7 @@ namespace OnlineStore.AutoCountClient
private void btnStart_Click(object sender, EventArgs e)
{
StartDebug(btnStart);
resetButtonClick?.Invoke();
}
private void btnStop_Click(object sender, EventArgs e)
{
......@@ -829,6 +833,7 @@ namespace OnlineStore.AutoCountClient
if (equipBase.runStatus > (RobotRunStatus.Wait))
{
equipBean.MoveReset();
resetButtonClick?.Invoke();
}
}
......
......@@ -56,10 +56,18 @@ namespace OnlineStore.AutoCountClient
FrmOutputEquip frm2 = new FrmOutputEquip(robot.outputEquip);
AddForm(" " + robot.outputEquip.Name + " ", frm2);
frm2.resetButtonClick += Frm2_resetButtonClick;
robot.XrayBean.GetImageEvent += EquipBean_GetImageEvent;
}
private void Frm2_resetButtonClick()
{
robot.XrayBean.MoveStop = true;
robot.inputEquip.MoveStop = true;
}
private void AddForm(string text, Form form)
{
text = text.PadLeft(10, ' ');
......@@ -495,6 +503,10 @@ namespace OnlineStore.AutoCountClient
robot.XrayBean.MoveStop = true;
lblXrayWork.Text = "图像平板失效,请及时处理。";
lblXrayWork.Visible = true;
robot.XrayBean.Alarm(AlarmType.SuddenStop);
}
else {
lblXrayWork.Text = "警告:点料过程中,请勿开门";
}
......
......@@ -26,6 +26,8 @@ PRO,0,取料升降轴取料点P2_右侧,UpdownAxis_P2_R,204000,,,,,
PRO,0,取料升降轴XRay入库放料点P3,UpdownAxis_P3,324990,,,,,
PRO,0,取料升降轴工位放料点P4_高,UpdownAxis_P4_H,187900,,,,,
PRO,0,取料升降轴工位放料点P4_低,UpdownAxis_P4_L,512090,,,,,
PRO,0,取料升降轴回放点P5_左侧,UpdownAxis_P5_L,199740,,,,,
PRO,0,取料升降轴回放点P5_右侧,UpdownAxis_P5_R,199740,,,,,
,,,,,,,,,
PRO,0,取料升降轴P1速度,UpdownAxis_P1Speed,1550,,,,,
PRO,0,取料升降轴P2速度,UpdownAxis_P2Speed,1550,,,,,
......
......@@ -20,8 +20,8 @@ namespace OnlineStore.DeviceLibrary
private string CameraName = "";
private string AgvName = "";
private string RfidIP = "";
private int BatchAxisP1 = 0;
private int BatchAxisP3 = 0;
public int BatchAxisP1 = 0;
public int BatchAxisP3 = 0;
private InputEquip Robot
{
get { return RobotManager.robot.inputEquip; }
......
......@@ -443,7 +443,7 @@ namespace OnlineStore.DeviceLibrary
// 需要增加定时器,获取验证信号并停止伺服
StartMovePosition = BatchAxis.GetAclPosition();
if (!first)
{
{
//如果不是第一次取盘,则每次最多上升16mm
targetP3 = StartMovePosition+Robot.Config.Height_ChangeValue*60;
if (targetP3 > BatchAxisP3)
......
......@@ -85,14 +85,13 @@ namespace OnlineStore.DeviceLibrary
private void IW04_InoutToP2()
{
//MoveInfo.NextMoveStep(StepEnum.IW04_InoutToP2);
WorkLog("取料: 进出轴前进到P2",0);
InOutAxis.AbsMove(MoveInfo, MoveInfo.MoveParam.Get_Inout_P2(Config), Config.InoutAxis_P2Speed);
WorkLog("取料: 进出轴前进到P2 ,升降轴下降到P2");
MoveInfo.NextMoveStep(StepEnum.IW05_UpdownToP2);
WorkLog("取料: 升降轴下降到P2", 1);
InOutAxis.AbsMove(MoveInfo, MoveInfo.MoveParam.Get_Inout_P2(Config), Config.InoutAxis_P2Speed);
UpdownAxis.AbsMove(MoveInfo, MoveInfo.MoveParam.Get_Updown_P2(Config), Config.UpdownAxis_P2Speed);
}
private Task GetTargetPTask = null;
//private Task GetTargetPTask = null;
int getretry = 0;
protected override void WorkingProcess()
{
if (MoveInfo.IsInWait)
......@@ -116,12 +115,13 @@ namespace OnlineStore.DeviceLibrary
else if (MoveInfo.IsStep(StepEnum.IW03_MiddleToP2))
{
IW04_InoutToP2();
}
else if (MoveInfo.IsStep(StepEnum.IW04_InoutToP2))
else if (MoveInfo.IsStep(StepEnum.IW04_ReTry))
{
//MoveInfo.NextMoveStep(StepEnum.IW05_UpdownToP2);
//WorkLog("取料: 升降轴下降到P2",1);
//UpdownAxis.AbsMove(MoveInfo, MoveInfo.MoveParam.Get_Updown_P2(Config), Config.UpdownAxis_P2Speed);
//CylinderMove(MoveInfo,IO_Type.Clamping_Work, IO_Type.Clamping_Relax);
//MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(1000));
}
else if (MoveInfo.IsStep(StepEnum.IW05_UpdownToP2))
{
......@@ -150,24 +150,37 @@ namespace OnlineStore.DeviceLibrary
}
else if (MoveInfo.IsStep(StepEnum.IW07_UpdownToP1))
{
MoveInfo.NextMoveStep(StepEnum.IW08_WaitAxisCheck);
WorkLog("取料: 等待伺服检测信号消失");
//MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.TrayCheck_7, IO_VALUE.HIGH));
string it = IO_Type.R_AxisTrayCheck;
if (MoveInfo.MoveParam.InPosType.Equals(1))
it = IO_Type.L_AxisTrayCheck;
if (IOValue(it).Equals(IO_VALUE.LOW))
{
MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.L_AxisTrayCheck, IO_VALUE.LOW));
//
getretry = 0;
MoveInfo.NextMoveStep(StepEnum.IW08_WaitAxisCheck);
}
else
else if (getretry>3){
WorkLog("取料: 重试失败");
MoveInfo.NextMoveStep(StepEnum.IW08_WaitAxisCheck);
MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(it, IO_VALUE.LOW));
}
else if (MoveInfo.IsTimeOut(4))
{
MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.R_AxisTrayCheck, IO_VALUE.LOW));
getretry++;
MoveInfo.NextMoveStep(StepEnum.IW50_InOutToP2);
WorkLog("取料: 开始复位 第"+ getretry+"次");
var b = LeftBatchMove;
if (MoveInfo.MoveParam.InPosType.Equals(2))
b = RightBatchMove;
int xpos = b.BatchAxis.GetAclPosition() - Config.Height_ChangeValue * 50;
if (xpos < b.BatchAxisP1)
xpos = b.BatchAxisP1;
b.BatchAxis.AbsMove(MoveInfo, xpos, Config.BatchAxis_P3Speed);
}
}
else if (MoveInfo.IsStep(StepEnum.IW08_WaitAxisCheck))
{
//MoveInfo.NextMoveStep(StepEnum.IW09_InoutToP1);
//MoveInfo.NextMoveStep(StepEnum.IW10_SaveSize);
MoveInfo.NextMoveStep(StepEnum.IW11_GetTargetPosition);
if (MoveInfo.MoveParam.InPosType.Equals(1))
......@@ -203,63 +216,14 @@ namespace OnlineStore.DeviceLibrary
}
else if (MoveInfo.IsStep(StepEnum.IW10_SaveSize))
{
//GetTargetPTask = null;
WorkLog(" IW10_SaveSize");
MoveInfo.NextMoveStep(StepEnum.IW11_GetTargetPosition);
return;
MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(100));
if (String.IsNullOrEmpty(MoveInfo.MoveParam.WareCode))
{
MoveInfo.MoveParam.IsNgReel = true;
MoveInfo.MoveParam.NgMsg = "无有效条码";
MoveInfo.MoveParam.TargetPosType = 1;
WorkLog(" 无有效条码,从XRay放到NG箱:" + MoveInfo.MoveParam.ToStr(), 1);
string outF = "无有效条码NG.";
RobotManager.robot.sQLite.Insert(MoveInfo.MoveParam.WareCode, MoveInfo.MoveParam.PlateW, MoveInfo.MoveParam.PlateH, 0, outF);
}
else if (SServerManager.CanConnect())
{
GetTargetPTask = Task.Factory.StartNew(delegate
{
int needPosition = 0;
string msg = SServerManager.Get_VMICheckRLC(Name, MoveInfo.MoveParam.WareCode, out needPosition);
if (needPosition >= 1 && needPosition <= 3)
{
MoveInfo.MoveParam.TargetPosType = needPosition;
WorkLog(" 【" + MoveInfo.MoveParam.WareCode + "】通过接口获取目标位置:" + needPosition, 1);
//if (needPosition>1)
// RobotManager.robot.sQLite.Insert(MoveInfo.MoveParam.WareCode, MoveInfo.MoveParam.PlateW, MoveInfo.MoveParam.PlateH, 0, msg);
}
// else if (!msg.Equals("") || needPosition.Equals(0))
else
{
WorkLog(" 【" + MoveInfo.MoveParam.WareCode + "】获取是否测值失败:" + msg, 1);
MoveInfo.MoveParam.TargetPosType = 1;
MoveInfo.MoveParam.IsNgReel = true;
MoveInfo.MoveParam.NgMsg = msg;
RobotManager.robot.sQLite.Insert(MoveInfo.MoveParam.WareCode, MoveInfo.MoveParam.PlateW, MoveInfo.MoveParam.PlateH, 0, msg);
}
});
}
else
{
if (MoveInfo.MoveParam.TargetPosType.Equals(0))
{
if (DefautTargetP > 0)
{
MoveInfo.MoveParam.TargetPosType = DefautTargetP;
}
}
WorkLog(" 根据条码获取目标位置:" + MoveInfo.MoveParam.ToStr(), 1);
}
}
#endregion
else if (MoveInfo.IsStep(StepEnum.IW11_GetTargetPosition))
{
WorkLog(" IW11_GetTargetPosition");
WorkLog(" IW11_GetTargetPosition, TrayCheck_7=" + IOValue(IO_Type.TrayCheck_7));
if (MoveInfo.MoveParam.TargetPosType.Equals(0))
{
WorkLog(" TargetPosType:0");
......@@ -399,9 +363,8 @@ namespace OnlineStore.DeviceLibrary
//可下合并
//MoveInfo.NextMoveStep(StepEnum.IW42_InoutToP1);
MoveInfo.NextMoveStep(StepEnum.IW43_UpdownToP1);
WorkLog("放料完成:进出轴返回P1");
WorkLog("放料完成:进出轴返回P1,升降轴返回P1");
InOutAxis.AbsMove(MoveInfo, Config.InoutAxis_P1, Config.InoutAxis_P1Speed);
WorkLog("放料完成:升降轴返回P1");
UpdownAxis.AbsMove(MoveInfo, Config.UpdownAxis_P1, Config.UpdownAxis_P1Speed);
}
else if (MoveInfo.IsStep(StepEnum.IW42_InoutToP1))
......@@ -425,6 +388,42 @@ namespace OnlineStore.DeviceLibrary
MoveInfo.EndMove();
}
else if (MoveInfo.IsStep(StepEnum.IW50_InOutToP2))
{
MoveInfo.NextMoveStep(StepEnum.IW51_Clamping_Relax);
WorkLog("取料: 复位 进出轴上下轴到P2");
InOutAxis.AbsMove(MoveInfo, MoveInfo.MoveParam.Get_Inout_P2(Config), Config.InoutAxis_P2Speed);
UpdownAxis.AbsMove(MoveInfo, MoveInfo.MoveParam.Get_Updown_P5(Config), Config.UpdownAxis_P2Speed);
MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(3000));
}
else if (MoveInfo.IsStep(StepEnum.IW51_Clamping_Relax))
{
MoveInfo.NextMoveStep(StepEnum.IW52_InOutToP1);
WorkLog("取料: 复位 气缸放松,UpdownAxisPos=" + UpdownAxis.GetAclPosition());
CylinderMove(MoveInfo, IO_Type.Clamping_Work, IO_Type.Clamping_Relax);
MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(2000));
}
else if (MoveInfo.IsStep(StepEnum.IW52_InOutToP1))
{
WorkLog("取料: 复位 升降轴到待机点P1,进出轴返回P1");
MoveInfo.NextMoveStep(StepEnum.IW53_ResetFinish);
UpdownAxis.AbsMove(MoveInfo, Config.UpdownAxis_P1, Config.UpdownAxis_P1Speed);
InOutAxis.AbsMove(MoveInfo, Config.InoutAxis_P1, Config.InoutAxis_P1Speed);
MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(1000));
if (MoveInfo.MoveParam.InPosType.Equals(1))
{
LeftBatchMove.MoveInfo.NextMoveStep(StepEnum.IB07_AxisUpMove);
}
else
{
RightBatchMove.MoveInfo.NextMoveStep(StepEnum.IB07_AxisUpMove);
}
}
else if (MoveInfo.IsStep(StepEnum.IW53_ResetFinish))
{
WorkLog("放料复位完成");
MoveInfo.EndMove();
}
}
public int GetWidth()
......
......@@ -152,6 +152,8 @@ namespace OnlineStore.DeviceLibrary
{
MoveInfo.NextMoveStep(StepEnum.OMR01_MoveZHome);
MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(1000));
WorkLog("取料夹爪气缸释放");
CylinderMove(MoveInfo, IO_Type.TakeT_Clamping_Work, IO_Type.TakeT_Clamping_Relax);
WorkLog("取料Z轴原点返回");
MoveZAxis.HomeMove(MoveInfo);
}
......
......@@ -104,7 +104,7 @@ namespace OnlineStore.DeviceLibrary
}
if (MoveInfo.MoveParam.PlateW <= 0 ||
MoveInfo.MoveParam.PlateH <= 0 ||
String.IsNullOrEmpty(MoveInfo.MoveParam.WareCode))
string.IsNullOrEmpty(MoveInfo.MoveParam.WareCode))
{
MoveInfo.MoveParam.IsNgReel = true;
}
......@@ -185,6 +185,7 @@ namespace OnlineStore.DeviceLibrary
MoveXAxis.AbsMove(MoveInfo, position, Config.MoveX_P2Speed);
}
}
bool saveone = false;
private void OT05_GetImage()
{
if (MoveInfo.MoveParam.IsNgReel)
......@@ -205,7 +206,8 @@ namespace OnlineStore.DeviceLibrary
return;
var cc = new List<CodeInfo>();
//var filename = "need";
CodeManager.CameraScan(Name, out cc,true, Config.CameraName);
CodeManager.CameraScan(Name, out cc, saveone, Config.CameraName);
saveone = true;
if (cc.Count > 0)
{
try
......@@ -255,6 +257,7 @@ namespace OnlineStore.DeviceLibrary
//CheckStartLabel();
}
}
int TakeReelRetay = 0;
protected override void WorkingProcess()
{
if (MoveInfo.IsInWait)
......@@ -269,6 +272,8 @@ namespace OnlineStore.DeviceLibrary
if (MoveInfo.IsStep(StepEnum.OT01_WaitCheck))
{
OT02_MoveZToP1();
if (TakeReelRetay > 0)
IOMove(IO_Type.X_OLine_Run, IO_VALUE.LOW);
}
else if (MoveInfo.IsStep(StepEnum.OT02_MoveZToP1))
{
......@@ -276,21 +281,31 @@ namespace OnlineStore.DeviceLibrary
}
else if (MoveInfo.IsStep(StepEnum.OT03_MoveXToP2))
{
OT05_GetImage();
if (TakeReelRetay > 0)
{
MoveInfo.NextMoveStep(StepEnum.OT05_GetImage);
}
else
{
OT05_GetImage();
}
}
else if (MoveInfo.IsStep(StepEnum.OT05_GetImage))
{
{
MoveInfo.NextMoveStep(StepEnum.OT07_MoveZToP2);
WorkLog("取料:取料Z轴到P2 ", 0);
MoveZAxis.AbsMove(MoveInfo, Config.GetMoveZP2(MoveInfo.MoveParam.PlateH), Config.MoveZ_P2Speed);
CheckStartLabel();
WorkLog("取料:取料Z轴到P2 1 "+ (TakeReelRetay > 0 ? TakeReelRetay - 1 : 0));
//MoveInfo.CanWhileCount = -1;
//+Config.Height_ChangeValue / 2 * (TakeReelRetay > 0 ? TakeReelRetay - 1 : 0)
MoveZAxis.AbsMove(MoveInfo, Config.GetMoveZP2(MoveInfo.MoveParam.PlateH) , Config.MoveZ_P2Speed);
CheckStartLabel();
}
else if (MoveInfo.IsStep(StepEnum.OT06_MoveXToP2))
{
MoveInfo.NextMoveStep(StepEnum.OT07_MoveZToP2);
WorkLog("取料:取料Z轴到P2 ", 0);
MoveZAxis.AbsMove(MoveInfo, Config.GetMoveZP2(MoveInfo.MoveParam.PlateH), Config.MoveZ_P2Speed);
CheckStartLabel();
//MoveInfo.NextMoveStep(StepEnum.OT07_MoveZToP2);
//WorkLog("取料:取料Z轴到P2 2 "+ (TakeReelRetay > 0 ? TakeReelRetay - 1 : 0));
//MoveZAxis.AbsMove(MoveInfo, Config.GetMoveZP2(MoveInfo.MoveParam.PlateH), Config.MoveZ_P2Speed);
//CheckStartLabel();
}
else if (MoveInfo.IsStep(StepEnum.OT07_MoveZToP2))
{
......@@ -301,44 +316,83 @@ namespace OnlineStore.DeviceLibrary
}
else if (MoveInfo.IsStep(StepEnum.OT08_Clamping_Work))
{
MoveInfo.NextMoveStep(StepEnum.OT09_MoveZToP1);
WorkLog("取料:取料Z轴返回P1 ,验证Out_TrayCheck消失", 0);
MoveInfo.NextMoveStep(StepEnum.OT08_2_Wait_Out_TrayCheck);
WorkLog("取料:取料Z轴返回P1 ,验证Out_TrayCheck消失 Out_TrayCheck=" + IOValue(IO_Type.Out_TrayCheck).ToString());
MoveZAxis.AbsMove(MoveInfo, Config.MoveZ_P1, Config.MoveZ_P1Speed);
MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.Out_TrayCheck, IO_VALUE.LOW));
if (MoveInfo.MoveParam.IsNgReel)
{
MoveInfo.NextMoveStep(StepEnum.OT21_NG_MoveXToP1);
WorkLog("NG料:取料X轴到P1 ", 0);
//MoveInfo.NextMoveStep(StepEnum.OT21_NG_MoveXToP1);
MoveXAxis.AbsMove(MoveInfo, Config.MoveX_P1, Config.MoveX_P1Speed);
}
//MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(100));
//MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.Out_TrayCheck, IO_VALUE.LOW));
CheckStartLabel();
}
else if (MoveInfo.IsStep(StepEnum.OT09_MoveZToP1))
else if (MoveInfo.IsStep(StepEnum.OT08_2_Wait_Out_TrayCheck))
{
if (MoveInfo.MoveParam.IsNgReel)
if (IOValue(IO_Type.Out_TrayCheck).Equals(IO_VALUE.LOW))
{
MoveInfo.NextMoveStep(StepEnum.OT21_NG_MoveXToP1);
WorkLog("NG料:取料X轴到P1 ", 0);
MoveXAxis.AbsMove(MoveInfo, Config.MoveX_P1, Config.MoveX_P1Speed);
TakeReelRetay = 0;
ClearTimeoutAlarm("取料失败");
if (MoveInfo.MoveParam.IsNgReel)
{
WorkLog("NG料:取料X轴到P1 1");
MoveInfo.NextMoveStep(StepEnum.OT21_NG_MoveXToP1);
}
else
{
WorkLog("取料:取到料盘");
MoveInfo.NextMoveStep(StepEnum.OT09_MoveZToP1);
}
}
else
else if (MoveInfo.IsTimeOut(4))
{
MoveInfo.NextMoveStep(StepEnum.OT11_WaitShelfOk);
WorkLog("取料完成,等待料串可放料 ");
CheckStartLabel();
if (TakeReelRetay < 3)
{
TakeReelRetay++;
WorkLog("取料:取料失败,开始第" + TakeReelRetay + "次重试");
MoveInfo.NextMoveStep(StepEnum.OT01_WaitCheck);
IOMove(IO_Type.X_OLine_Run, IO_VALUE.HIGH);
CylinderMove(MoveInfo, IO_Type.TakeT_Clamping_Work, IO_Type.TakeT_Clamping_Relax);
MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(2000));
}
else
{
WarnMsg = MoveInfo.Name + "[取料:取料失败,已重试3次,请手动取走料盘]";
WorkLog(WarnMsg);
Alarm(AlarmType.IoSingleTimeOut);
MoveInfo.NextMoveStep(StepEnum.OT25_NG_NGBack);
MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.Out_TrayCheck, IO_VALUE.LOW));
}
}
}
else if (MoveInfo.IsStep(StepEnum.OT09_MoveZToP1))
{
MoveInfo.NextMoveStep(StepEnum.OT11_WaitShelfOk);
WorkLog("取料完成,等待料串可放料 ");
CheckStartLabel();
}
else if (MoveInfo.IsStep(StepEnum.OT11_WaitShelfOk))
{
bool shelfOk = ShelfMoveInfo.MoveType.Equals(RobotMoveType.ShelfPro) && ShelfMoveInfo.IsStep(StepEnum.OS_20_ShelfReady);
bool debugOk = ShelfMoveInfo.MoveType.Equals(RobotMoveType.None) && MoveInfo.MoveParam.IsTest;
if (shelfOk || debugOk)
{
if (IOValue(IO_Type.O_WLine_TrayCheck_OverHead).Equals(IO_VALUE.HIGH))
{
WorkLog("放料: 批量提升过头不可放料");
ShelfMoveInfo.NextMoveStep(StepEnum.OS_19_BatchAxisToP3);
//BatchAxis.SuddenStop();
//BatchAxisToP1(ShelfMoveInfo);
return;
}
MoveInfo.NextMoveStep(StepEnum.OT12_MoveXToP3);
WorkLog("放料:料串可放料,取料X轴移动到P3 ["+ Config.MoveX_P3 + "]");
WorkLog("放料:料串可放料,取料X轴移动到P3 [" + Config.MoveX_P3 + "]");
MoveXAxis.AbsMove(MoveInfo, Config.MoveX_P3, Config.MoveX_P3Speed);
ClearTimeoutAlarm("等待出料料串准备完成");
if (shelfOk)
{
......@@ -353,6 +407,7 @@ namespace OnlineStore.DeviceLibrary
}
ShelfWorkLog("放料: 提升轴下降指定高度 : 盘高【" + trayHeight + "】实时位置【" + currP + "】目标位置【" + targetP + "】");
ShelfMoveInfo.WaitList.Add(WaitResultInfo.WaitTime(1000));
BatchAxis.SuddenStop();
BatchAxis.AbsMove(ShelfMoveInfo, targetP, Config.BatchAxis_P2Speed);
}
}
......@@ -366,7 +421,8 @@ namespace OnlineStore.DeviceLibrary
}
else if (MoveInfo.IsStep(StepEnum.OT12_MoveXToP3))
{
if (IOValue(IO_Type.O_WLine_TrayCheck).Equals(IO_VALUE.HIGH)) {
if (IOValue(IO_Type.O_WLine_TrayCheck).Equals(IO_VALUE.HIGH))
{
ShelfMoveInfo.NextMoveStep(StepEnum.OS_20_ShelfReady);
MoveInfo.NextMoveStep(StepEnum.OT11_WaitShelfOk);
WorkLog("放料:料串下降不到位,重新下降 ", 1);
......@@ -440,7 +496,7 @@ namespace OnlineStore.DeviceLibrary
WorkLog("放料完成,耗时(" + FormUtil.GetSpanStr(span) + ")");
TickLog("出口料串,放料完成");
MoveInfo.EndMove();
}
}
}
......@@ -448,13 +504,13 @@ namespace OnlineStore.DeviceLibrary
else if (MoveInfo.IsStep(StepEnum.OT21_NG_MoveXToP1))
{
int busyStatus = ACServerManager.GetBusyStatus(MoveZAxis.Config.DeviceName, MoveZAxis.Config.GetAxisValue());
if (busyStatus>0 || !MoveZAxis.IsInPosition(Config.MoveZ_P1) )
if (busyStatus > 0 || !MoveZAxis.IsInPosition(Config.MoveZ_P1))
{
WorkLog("取料Z轴不在P1位置,不允许NG气缸前进 "+ busyStatus.ToString());
WorkLog("取料Z轴不在P1位置,不允许NG气缸前进 " + busyStatus.ToString());
return;
}
MoveInfo.NextMoveStep(StepEnum.OT22_NG_NGForward);
WorkLog("NG料,NG气缸前进 ");
WorkLog("NG料,NG气缸前进 Out_TrayCheck=" + IOValue(IO_Type.Out_TrayCheck).ToString());
CylinderMove(MoveInfo, IO_Type.NGCylinder_Back, IO_Type.NGCylinder_Forward);
}
else if (MoveInfo.IsStep(StepEnum.OT22_NG_NGForward))
......@@ -477,10 +533,11 @@ namespace OnlineStore.DeviceLibrary
}
else if (MoveInfo.IsStep(StepEnum.OT25_NG_NGBack))
{
TakeReelRetay = 0;
TimeSpan span = DateTime.Now - MoveInfo.MoveStartTime;
TickLog("出口NG,放料完成");
WorkLog("放料完成,耗时(" + FormUtil.GetSpanStr(span) + ")");
MoveInfo.EndMove();
MoveInfo.EndMove();
}
#endregion
}
......@@ -590,7 +647,7 @@ namespace OnlineStore.DeviceLibrary
{
SecMoveInfo.NextMoveStep(StepEnum.OL07_Nozzle_Work);
SecWorkLog("贴标: 标签吸盘取码,等待吸盘信号到位 1.5s");
//SecMoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.Nozzle_Work, IO_VALUE.HIGH));
//SecMoveInfo.WaitList.Add(WaitResultInfo.WaitTime(100));
//SecMoveInfo.OneWaitCanEndStep = true;
......@@ -598,7 +655,7 @@ namespace OnlineStore.DeviceLibrary
else if (SecMoveInfo.IsStep(StepEnum.OL07_Nozzle_Work))
{
SecMoveInfo.NextMoveStep(StepEnum.OL08_ZToP1);
SecWorkLog("贴标: Z轴到P1点",0);
SecWorkLog("贴标: Z轴到P1点", 0);
LabelZAxis.AbsMove(SecMoveInfo, Config.LabelZ_P1, Config.LabelZ_P1Speed);
}
else if (SecMoveInfo.IsStep(StepEnum.OL08_ZToP1))
......@@ -629,7 +686,17 @@ namespace OnlineStore.DeviceLibrary
if (canLabel && ShelfMoveInfo.IsStep(StepEnum.OS_25_WaitLabel))
{
if (IOValue(IO_Type.O_WLine_TrayCheck_OverHead).Equals(IO_VALUE.HIGH))
{
SecWorkLog("贴标: 批量提升过头不可贴标");
ShelfMoveInfo.NextMoveStep(StepEnum.OS_24_BatchToP3);
//BatchAxis.SuddenStop();
//BatchAxisToP1(ShelfMoveInfo);
return;
}
ClearTimeoutAlarm("料盘可贴标");
ClearTimeoutAlarm("贴标结束");
SecMoveInfo.NextMoveStep(StepEnum.OL13_RToP3);
SecWorkLog("贴标: XY轴移动到P3点", 0);
......@@ -639,26 +706,35 @@ namespace OnlineStore.DeviceLibrary
{
//rick切换贴标象限
//圆心位置x2230,y2115
var posL = SecMoveInfo.MoveParam.codePointer.Y < 2115;
var posL = false;
//if (SecMoveInfo.MoveParam.codePointer.X> 2230 && SecMoveInfo.MoveParam.codePointer.Y < 1225+80)
if (SecMoveInfo.MoveParam.codePointer.Y < 1225)
{
posL = true;
}
if (SecMoveInfo.MoveParam.codePointer.Y == 0)
{ posL = false; }
if (posL)
{
LabelYAxis.AbsMove(SecMoveInfo, Config.LabelY_P4, Config.LabelY_P3Speed);
}
else {
else
{
LabelYAxis.AbsMove(SecMoveInfo, Config.LabelY_P3, Config.LabelY_P3Speed);
}
SecWorkLog("贴标: R轴到P3点,leftpos:" + posL.ToString(), 1);
SecWorkLog("贴标: R轴到P3点 X;" + SecMoveInfo.MoveParam.codePointer.X.ToString() + ",Y:" + SecMoveInfo.MoveParam.codePointer.Y.ToString() + ",leftpos:" + posL.ToString(), 1);
}
else {
else
{
LabelYAxis.AbsMove(SecMoveInfo, Config.LabelY_P3, Config.LabelY_P3Speed);
}
/*
* R=Y_P3
* L=Y_P4
X
X0
___|___
------\ / T \
XRAY出料口 -----| L * R |-----Y 圆心位置x2230,y2115
XRAY出料口 -----| L * R |-----Y0 圆心位置x2230,y1225
------/ \ B /
~~~|~~~
|
......@@ -667,7 +743,7 @@ namespace OnlineStore.DeviceLibrary
else if (SecMoveInfo.IsTimeOut(120))
{
WarnMsg = SecMoveInfo.Name + "[" + SecMoveInfo.MoveStep + "]" + "等待 料盘可贴标(OS_25_WaitLabel) 超时[" + FormUtil.GetSpanStr(SecMoveInfo.StepSpan()) + "]";
LogUtil.error(WarnMsg, SecMoveInfo.ErrorLogType,SecMoveInfo.logSeconds());
LogUtil.error(WarnMsg, SecMoveInfo.ErrorLogType, SecMoveInfo.logSeconds());
Alarm(AlarmType.IoSingleTimeOut);
}
}
......@@ -708,20 +784,19 @@ namespace OnlineStore.DeviceLibrary
{
//SecMoveInfo.NextMoveStep(StepEnum.OL17_ZToP1);
//SecWorkLog("贴标: 放标签到料盘,等待 "+LabelWaitMS);
//SecMoveInfo.WaitList.Add(WaitResultInfo.WaitTime(LabelWaitMS));
}
else if (SecMoveInfo.IsStep(StepEnum.OL16_Nozzle_Stop))
{
//SecMoveInfo.NextMoveStep(StepEnum.OL17_ZToP1);
}
else if (SecMoveInfo.IsStep(StepEnum.OL17_ZToP1))
{
SecWorkLog("贴标: Z轴返回P1", 1);
LabelZAxis.AbsMove(SecMoveInfo, Config.LabelZ_P1, Config.LabelZ_P1Speed);
SecMoveInfo.NextMoveStep(StepEnum.OL18_LableBack);
SecWorkLog("贴标: 贴标气缸后退,X轴R轴返回待机点P2,Y轴返回待机点P1, ", 0);
SecWorkLog("贴标: 贴标气缸后退,X轴R轴返回待机点P2,Y轴返回待机点P1, ");
LabelZAxis.AbsMove(SecMoveInfo, Config.LabelZ_P1, Config.LabelZ_P1Speed);
CylinderMove(SecMoveInfo, IO_Type.LablePaste_Forward, IO_Type.PasteCode_Back);
LabelXAxis.AbsMove(SecMoveInfo, Config.LabelX_P2, Config.LabelX_P2Speed);
......@@ -737,21 +812,38 @@ namespace OnlineStore.DeviceLibrary
}
else if (SecMoveInfo.IsStep(StepEnum.OL18_LableBack))
{
// SecMoveInfo.NextMoveStep(StepEnum.OL19_XYRBackToP2);
// SecWorkLog("贴标: X轴R轴返回待机点P2,Y轴返回待机点P1, ");
// LabelXAxis.AbsMove(SecMoveInfo, Config.LabelX_P2, Config.LabelX_P2Speed);
// LabelYAxis.AbsMove(SecMoveInfo, Config.LabelY_P1, Config.LabelY_P1Speed);
// LabelRAxis.AbsMove(SecMoveInfo, Config.LabelR_P2, Config.LabelR_P2Speed);
// //CylinderMove(SecMoveInfo, IO_Type.TakeCode_Back, IO_Type.TakeCode_Forward);
//}
//else if (SecMoveInfo.IsStep(StepEnum.OL19_XYRBackToP2))
//{
// SecMoveInfo.NextMoveStep(StepEnum.OL19_XYRBackToP2);
// SecWorkLog("贴标: X轴R轴返回待机点P2,Y轴返回待机点P1, ");
// LabelXAxis.AbsMove(SecMoveInfo, Config.LabelX_P2, Config.LabelX_P2Speed);
// LabelYAxis.AbsMove(SecMoveInfo, Config.LabelY_P1, Config.LabelY_P1Speed);
// LabelRAxis.AbsMove(SecMoveInfo, Config.LabelR_P2, Config.LabelR_P2Speed);
// //CylinderMove(SecMoveInfo, IO_Type.TakeCode_Back, IO_Type.TakeCode_Forward);
//}
//else if (SecMoveInfo.IsStep(StepEnum.OL19_XYRBackToP2))
//{
TimeSpan span = DateTime.Now - SecMoveInfo.MoveStartTime;
SecTickLog("贴标完成2");
LogUtil.info(SecMoveInfo.Name + " 贴标结束, 耗时(" + FormUtil.GetSpanStr(span) + ")");
SecMoveInfo.EndMove();
}
else if (SecMoveInfo.IsStep(StepEnum.OL20_LableCancel))
{
ShelfMoveInfo.NextMoveStep(StepEnum.OL21_LableCancel2);
IOMove(IO_Type.Nozzle_Work, IO_VALUE.LOW);
LabelZAxis.AbsMove(SecMoveInfo, Config.LabelZ_P1, Config.LabelZ_P1Speed);
CylinderMove(SecMoveInfo, IO_Type.LablePaste_Forward, IO_Type.PasteCode_Back);
LabelXAxis.AbsMove(SecMoveInfo, Config.LabelX_P2, Config.LabelX_P2Speed);
LabelYAxis.AbsMove(SecMoveInfo, Config.LabelY_P1, Config.LabelY_P1Speed);
LabelRAxis.AbsMove(SecMoveInfo, Config.LabelR_P2, Config.LabelR_P2Speed);
SecTickLog("贴标撤销");
}
else if (SecMoveInfo.IsStep(StepEnum.OL21_LableCancel2))
{
IsStartLabel = false;
SecMoveInfo.EndMove();
}
}
public void StartPrintLabel(string wareCode, string wareCount)
......
......@@ -212,13 +212,19 @@ namespace OnlineStore.DeviceLibrary
{
ShelfMoveInfo.NextMoveStep(StepEnum.OS_19_BatchAxisToP3);
ShelfWorkLog("批量轴匀速到P3点,清空出料信息=0");
BatchAxisToP3(ShelfMoveInfo);
BatchAxisToP3(ShelfMoveInfo,true);
OutReelHeight = 0;
OutReelCount = 0;
}
else if (ShelfMoveInfo.IsStep(StepEnum.OS_19_BatchAxisToP3))
{
ShelfMoveInfo.NextMoveStep(StepEnum.OS_20_ShelfReady);
if (IOValue(IO_Type.O_WLine_TrayCheck_OverHead).Equals(IO_VALUE.HIGH))
{
ShelfWorkLog("批量提升过头重新下降");
BatchAxis.SuddenStop();
BatchAxisToP1(ShelfMoveInfo);
}
ShelfMoveInfo.WaitList.Add(WaitResultInfo.WaitTime(3000));
ShelfWorkLog("料串准备完成");
}
......@@ -250,12 +256,36 @@ namespace OnlineStore.DeviceLibrary
}
else if (ShelfMoveInfo.IsStep(StepEnum.OS_23_TrayOK))
{
ShelfMoveInfo.NextMoveStep(StepEnum.OS_24_BatchToP3);
ShelfWorkLog("批量轴匀速到P3或信号亮,O_WLine_TrayCheck=" + IOValue(IO_Type.O_WLine_TrayCheck).ToString()); ;
BatchAxisToP3(ShelfMoveInfo);
if (IOValue(IO_Type.O_WLine_TrayCheck_OverHead).Equals(IO_VALUE.HIGH))
{
ShelfWorkLog("批量提升过头重新下降");
ShelfMoveInfo.NextMoveStep(StepEnum.OS_24_BatchToP3);
BatchAxisToP1(ShelfMoveInfo);
}
else
{
ShelfMoveInfo.NextMoveStep(StepEnum.OS_24_BatchToP3);
ShelfWorkLog("批量轴匀速到P3或信号亮,O_WLine_TrayCheck=" + IOValue(IO_Type.O_WLine_TrayCheck).ToString()); ;
BatchAxisToP3(ShelfMoveInfo);
}
if (!SecMoveInfo.MoveType.Equals(RobotMoveType.None)
&& SecMoveInfo.MoveParam != null
&& MoveInfo.MoveParam != null
&& SecMoveInfo.MoveParam.WareCode != MoveInfo.MoveParam.WareCode)
{
ShelfWorkLog("标签错位,放弃当前标签");
SecMoveInfo.NextMoveStep(StepEnum.OL20_LableCancel);
}
}
else if (ShelfMoveInfo.IsStep(StepEnum.OS_24_BatchToP3))
{
if (IOValue(IO_Type.O_WLine_TrayCheck_OverHead).Equals(IO_VALUE.HIGH))
{
BatchAxis.SuddenStop();
ShelfMoveInfo.NextMoveStep(StepEnum.OS_23_TrayOK);
ShelfWorkLog("批量提升运动过度");
return;
}
if (RobotManager.UseLabel)
{
ShelfMoveInfo.NextMoveStep(StepEnum.OS_25_WaitLabel);
......@@ -395,20 +425,45 @@ namespace OnlineStore.DeviceLibrary
}
private int StartMovePosition = 0;
private void BatchAxisToP3(RobotMoveInfo moveInfo)
private void BatchAxisToP3(RobotMoveInfo moveInfo,bool isFirst=false)
{
int targetP3 = Config.BatchAxisP3;
int targetSpeed = Config.BatchAxis_P3Speed;
moveInfo.TimeOutSeconds = 200;
moveInfo.CanWhileCount = 0;
// 需要增加定时器,获取验证信号并停止伺服
StartMovePosition = BatchAxis.GetAclPosition();
if (!isFirst)
{
targetP3 = StartMovePosition+Config.Height_ChangeValue * 40;
if (targetP3 > Config.BatchAxisP3) {
targetP3 = Config.BatchAxisP3;
}
}
moveInfo.WaitList.Add(WaitResultInfo.WaitBatchAxis(BatchAxis.Config, targetP3, targetSpeed));
BatchAxis.Config.TargetPosition = targetP3;
BatchAxis.AbsMove(null, targetP3, targetSpeed);
//开始检测信号
BatchAxis.BatchAxisStartCheck(IO_Type.O_WLine_TrayCheck,IO_VALUE.HIGH);
}
private void BatchAxisToP1(RobotMoveInfo moveInfo)
{
int targetP3 = Config.BatchAxisP2;
int targetSpeed = Config.BatchAxis_P2Speed;
moveInfo.TimeOutSeconds = 200;
moveInfo.CanWhileCount = 0;
// 需要增加定时器,获取验证信号并停止伺服
StartMovePosition = BatchAxis.GetAclPosition();
moveInfo.WaitList.Add(WaitResultInfo.WaitBatchAxis(BatchAxis.Config, targetP3, targetSpeed));
BatchAxis.Config.TargetPosition = targetP3;
BatchAxis.AbsMove(null, targetP3, targetSpeed);
//开始检测信号
BatchAxis.BatchAxisStartCheck(IO_Type.O_WLine_TrayCheck_OverHead, IO_VALUE.LOW);
}
#endregion
#region AGV
......
......@@ -60,7 +60,9 @@ namespace OnlineStore.DeviceLibrary
}
/// <summary>
/// 图像平板报错
/// </summary>
public bool carerayImageError = false;
private void XRayLoad()
{
......@@ -170,6 +172,7 @@ namespace OnlineStore.DeviceLibrary
{
//TimerMaxSeconds = 10;
SetWarnMsg("");
carerayImageError = false;
alarmType = AlarmType.None;
isInSuddenDown = false;
isNoAirCheck = false;
......
......@@ -494,30 +494,38 @@ namespace OnlineStore.DeviceLibrary
}
return false;
}
int Get48bImageErrorCount = 0;
public string CapImage()
{
try
{
string lastData = DateTime.Now.ToString("yyyy-MM-dd");
ConfigAppSettings.SaveValue(Setting_Init.XRay_Data, lastData);
if (ConfigAppSettings.GetValue(Setting_Init.XRay_Data)!= lastData)
{
ConfigAppSettings.SaveValue(Setting_Init.XRay_Data, lastData);
}
ClearFilePath();
//取图失败关掉重开。
bool imgResult = carerayImage.GetImage();
bool imgResult = carerayImage.GetImage(5,3000);
if (!imgResult)
{
bool closeR = carerayImage.Close();
if (closeR)
if (!closeR)
LogUtil.error(Name + "carerayImage.GetImage 获取图片失败 = " + imgResult + ", carerayImage.Close 失败");
Thread.Sleep(500);
bool openR = carerayImage.Open();
Thread.Sleep(500);
if (openR)
{
bool openR = carerayImage.Open();
LogUtil.error(Name + "carerayImage.GetImage 获取图片失败 = " + imgResult + ", carerayImage.Close 成功 ,重新打开并获取图片");
imgResult = carerayImage.GetImage();
imgResult = carerayImage.GetImage(5, 3000);
LogUtil.error(Name + "carerayImage.GetImage 第2次获取图片 = " + imgResult + "");
}
else
{
LogUtil.error(Name + "carerayImage.GetImage 获取图片失败 = " + imgResult + ", carerayImage.Close 失败");
else {
LogUtil.error(Name + "carerayImage.Open 第2次open = " + openR + "");
}
}
carerayImageError = !imgResult;
......@@ -528,7 +536,7 @@ namespace OnlineStore.DeviceLibrary
Bitmap bmp = carerayImage.Get48bImage();
if (bmp != null)
{
Get48bImageErrorCount = 0;
lastFileName = Work_ReelInfo.GetImgName();
string fileP = path1_tif + @"\" + lastFileName;
bmp.Save(fileP, System.Drawing.Imaging.ImageFormat.Png);
......@@ -552,6 +560,9 @@ namespace OnlineStore.DeviceLibrary
WorkLog("点料:获取X射线图形,获取图片失败,carerayImage.Get48bImage()=null");
LogUtil.error(Name + " 获取图片失败,carerayImage.Get48bImage()=null");
lastFileName = "";
Get48bImageErrorCount++;
if (Get48bImageErrorCount>3)
carerayImageError = true;
}
}
else
......@@ -570,7 +581,6 @@ namespace OnlineStore.DeviceLibrary
{
LogUtil.error(" xRay.Stop()失败:" + result);
}
}
}
catch (Exception ex)
......@@ -580,7 +590,6 @@ namespace OnlineStore.DeviceLibrary
return lastFileName;
}
private void ClearFilePath()
{
try
......
......@@ -169,7 +169,7 @@ namespace OnlineStore.DeviceLibrary
}
}
}
if (!findRightCode && !nosave)
if (!findRightCode || !nosave)
{
SaveImageToFile(deviceName, cameraName, ho_Image);
}
......
......@@ -100,7 +100,7 @@ namespace OnlineStore.DeviceLibrary
Config.TargetPosition = 0;
LogUtil.info(AxisName + "speed[" + Config.TargetSpeed + "]开始原点返回");
MoveInfo.WaitList.Add(WaitResultInfo.WaitAxis(Config, true));
ACServerManager.HomeMove(Config.DeviceName, (short)Config.GetAxisValue(), Config.HomeHighSpeed);
ACServerManager.HomeMove(Config.DeviceName, Config.GetAxisValue(), Config.HomeHighSpeed);
}
public void AbsMove(RobotMoveInfo MoveInfo, int targetPosition, int targetSpeed)
......@@ -141,6 +141,12 @@ namespace OnlineStore.DeviceLibrary
ACServerManager.AbsMove(axis.DeviceName, axis.GetAxisValue(), targetPosition, targetSpeed);
MoveInfo.CanWhileCount--;
}
else if (MoveInfo.CanWhileCount == -1) {
msg = " " + MoveInfo.MoveStep + MoveInfo.Name + axis.DisplayStr + ",目标位置[" + targetPosition + "]当前位置[" + outCount
+ "],误差过大,配置为忽略";
LogUtil.error(msg, MoveInfo.ErrorLogType);
return true;
}
else
{
msg = " " + MoveInfo.MoveStep + MoveInfo.Name + axis.DisplayStr + ",目标位置[" + targetPosition + "]当前位置[" + outCount
......@@ -214,16 +220,20 @@ namespace OnlineStore.DeviceLibrary
ACServerManager.AbsMove(Config.DeviceName, Config.GetAxisValue(), targetPos, (int)targetSpeed);
}
public void SuddenStop(bool needCheck = false )
public void SuddenStop(bool needCheck = false)
{
if (needCheck)
{
if(ACServerManager.GetBusyStatus(Config.DeviceName, Config.GetAxisValue()).Equals(0))
if (ACServerManager.GetBusyStatus(Config.DeviceName, Config.GetAxisValue()).Equals(0))
{
return;
}
}
ACServerManager.SuddenStop(Config.DeviceName, Config.GetAxisValue());
if (ACServerManager.GetBusyStatus(Config.DeviceName, Config.GetAxisValue()).Equals(1))
{
LogUtil.info(Config.DisplayStr + " 停止失败");
}
}
......
......@@ -109,9 +109,9 @@ namespace OnlineStore.DeviceLibrary
IW03_MiddleToP2,
/// <summary>
/// 入料模块取放料:进出轴前进到P2
/// 入料模块取放料:重试
/// </summary>
IW04_InoutToP2,
IW04_ReTry,
/// <summary>
/// 入料模块取放料:升降轴下降到P2
/// </summary>
......@@ -195,6 +195,13 @@ namespace OnlineStore.DeviceLibrary
/// </summary>
IW44_MiddleToP2,
/// <summary>
/// 放料完成:旋转轴直接返回P2
/// </summary>
IW50_InOutToP2,
IW51_Clamping_Relax,
IW52_InOutToP1,
IW53_ResetFinish,
#endregion
#region 入料模块批量轴开始复位 1500 开始
......@@ -576,6 +583,7 @@ namespace OnlineStore.DeviceLibrary
/// 取料: 取料气缸夹紧
/// </summary>
OT08_Clamping_Work,
OT08_2_Wait_Out_TrayCheck,
/// <summary>
/// 取料: 取料Z轴返回P1
/// </summary>
......@@ -745,6 +753,8 @@ namespace OnlineStore.DeviceLibrary
/// 贴标: XYR返回待机点P1
/// </summary>
OL19_XYRBackToP2,
OL20_LableCancel,
OL21_LableCancel2,
#endregion
#region 出料模块料串处理 3701 开始
......
......@@ -62,6 +62,8 @@ namespace OnlineStore.DeviceLibrary
/// <summary>
/// 可以循环运动的次数(轴卡运动才需要)
/// 0 = 不循环
/// -1 = 不检查运动是否到位
/// </summary>
internal int CanWhileCount = 0;
......
......@@ -116,6 +116,17 @@ namespace OnlineStore.DeviceLibrary
return config.UpdownAxis_P2_R;
}
}
public int Get_Updown_P5(InputEquip_Config config)
{
if (InPosType.Equals(1))
{
return config.UpdownAxis_P5_L;
}
else
{
return config.UpdownAxis_P5_R;
}
}
public int Get_Updown_PutP(InputEquip_Config config)
{
if (TargetPosType.Equals(1))
......
......@@ -269,9 +269,9 @@ namespace OnlineStore.LoadCSVLibrary
/// </summary>
public static string NGCylinder_Back = "NGCylinder_Back";
/// <summary>
/// DI,3,NG料料盘检测,NG_TrayCheck,9,PRO_AOI_IP_4,X60,,,,,,,,,,
/// DI,3,提升机构高度过头,NG_TrayCheck,9,PRO_AOI_IP_4,X60,,,,,,,,,,
/// </summary>
public static string NG_TrayCheck = "NG_TrayCheck";
public static string O_WLine_TrayCheck_OverHead = "O_WLine_TrayCheck_OverHead";
/// <summary>
/// DI,3,贴标气缸前进端,PasteCode_Forward,10,PRO_AOI_IP_4,X61,,,,,,,,,,
/// </summary>
......
......@@ -132,6 +132,16 @@ namespace OnlineStore.LoadCSVLibrary
[ConfigProAttribute("UpdownAxis_P2_R")]
public int UpdownAxis_P2_R { get; set; }
/// <summary>
/// PRO,0,取料升降轴取料点P2_左侧,UpdownAxis_P2_L,281000,,,,,
/// </summary>
[ConfigProAttribute("UpdownAxis_P5_L")]
public int UpdownAxis_P5_L { get; set; }
/// <summary>
/// PRO,0,取料升降轴取料点P2_右侧,UpdownAxis_P2_R,281000,,,,,
/// </summary>
[ConfigProAttribute("UpdownAxis_P5_R")]
public int UpdownAxis_P5_R { get; set; }
/// <summary>
/// PRO,0,取料升降轴料串上方P3取料/放料位置,UpdownAxis_P3,20000,,,,,
/// </summary>
[ConfigProAttribute("UpdownAxis_P3", true)]
......
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!