Commit 14cf1502 刘韬

1.入料失败只重试3次

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