Commit dbedd0e8 刘韬

优化节拍

1 个父辈 7bb711d0
......@@ -48,7 +48,7 @@ namespace OnlineStore.AutoCountClient
MessageBox.Show("数据未初始化完成,请稍后!");
return;
}
//RobotManager.robot.sQLite.Insert("", 0, 0, 0, "123");
DateTime startTime = dtpStartTime.Value;
DateTime endTime = dtpEndTime.Value;
......
......@@ -53,8 +53,10 @@ namespace OnlineStore.AutoCountClient
/// </summary>
[STAThread]
static void Main(string[] Args)
{
{
//string code = " (X: 380,Y: 148) L00000000000WG9D19055;E20191230 0180;B7H.10618.5B1008082019123004000;R0080820191230E9600";
//string r = CodeManager.ReplaceCode(code);
Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException);
......
......@@ -95,11 +95,11 @@ namespace OnlineStore.DeviceLibrary
//UpdateAction(id, ClientAction.Ready);
LogUtil.info("收到 AgvClient_Ready [" + id + "] [" + rfid + "] "+ GetAction(id).ToString());
if (GetAction(id) == ClientAction.NeedEnter)
if (GetAction(id) == ClientAction.NeedEnter || id=="D1")
{
SetStatus(id, "", ClientAction.MayEnter);
}
else if (GetAction(id) == ClientAction.NeedLeave)
else if (GetAction(id) == ClientAction.NeedLeave || id=="D2")
{
SetStatus(id, "", ClientAction.MayLeave);
}
......
......@@ -411,7 +411,7 @@ namespace OnlineStore.DeviceLibrary
if (!first)
{
//如果不是第一次取盘,则每次最多上升16mm
targetP3 = StartMovePosition+Robot.Config.Height_ChangeValue*80;
targetP3 = StartMovePosition+Robot.Config.Height_ChangeValue*60;
if (targetP3 > BatchAxisP3)
targetP3 = BatchAxisP3;
}
......
......@@ -469,7 +469,7 @@ namespace OnlineStore.DeviceLibrary
#region 日志打印
internal int WorkLogLevel = 1;
private int SecWorkLogLevel = 1;
protected void WorkLog(string msg,int level=-1)
protected void WorkLog(string msg,int level=1)
{
if (level < 0)
{
......@@ -515,15 +515,22 @@ namespace OnlineStore.DeviceLibrary
else
{
LogUtil.debug(SecMoveInfo.Name + "[" + code + "]" + "[" + SecMoveInfo.MoveStep + "] " + msg);
}
}
}
protected void TickLog(string stepname,bool steptime=false)
{
TimeSpan span = DateTime.Now - MoveInfo.MoveStartTime;
if (steptime)
span = DateTime.Now - MoveInfo.LastSetpTime; ;
span = DateTime.Now - MoveInfo.LastSetpTime;
LogUtil.ticklog(MoveInfo.Name, MoveInfo.MoveParam.WareCode, span.TotalSeconds, stepname);
}
protected void SecTickLog(string stepname,bool steptime=false)
{
TimeSpan span = DateTime.Now - SecMoveInfo.MoveStartTime;
if (steptime)
span = DateTime.Now - SecMoveInfo.LastSetpTime;
LogUtil.ticklog(SecMoveInfo.Name, SecMoveInfo.MoveParam.WareCode, span.TotalSeconds, stepname);
}
public virtual string GetMoveStr()
{
string msg = "";
......
......@@ -84,9 +84,13 @@ namespace OnlineStore.DeviceLibrary
}
private void IW04_InoutToP2()
{
MoveInfo.NextMoveStep(StepEnum.IW04_InoutToP2);
//MoveInfo.NextMoveStep(StepEnum.IW04_InoutToP2);
WorkLog("取料: 进出轴前进到P2",0);
InOutAxis.AbsMove(MoveInfo, MoveInfo.MoveParam.Get_Inout_P2(Config), Config.InoutAxis_P2Speed);
MoveInfo.NextMoveStep(StepEnum.IW05_UpdownToP2);
WorkLog("取料: 升降轴下降到P2", 1);
UpdownAxis.AbsMove(MoveInfo, MoveInfo.MoveParam.Get_Updown_P2(Config), Config.UpdownAxis_P2Speed);
}
private Task GetTargetPTask = null;
protected override void WorkingProcess()
......@@ -115,9 +119,9 @@ namespace OnlineStore.DeviceLibrary
}
else if (MoveInfo.IsStep(StepEnum.IW04_InoutToP2))
{
MoveInfo.NextMoveStep(StepEnum.IW05_UpdownToP2);
WorkLog("取料: 升降轴下降到P2",1);
UpdownAxis.AbsMove(MoveInfo, MoveInfo.MoveParam.Get_Updown_P2(Config), Config.UpdownAxis_P2Speed);
//MoveInfo.NextMoveStep(StepEnum.IW05_UpdownToP2);
//WorkLog("取料: 升降轴下降到P2",1);
//UpdownAxis.AbsMove(MoveInfo, MoveInfo.MoveParam.Get_Updown_P2(Config), Config.UpdownAxis_P2Speed);
}
else if (MoveInfo.IsStep(StepEnum.IW05_UpdownToP2))
{
......@@ -133,6 +137,8 @@ namespace OnlineStore.DeviceLibrary
MoveInfo.NextMoveStep(StepEnum.IW07_UpdownToP1);
WorkLog("取料: 升降轴到待机点P1",0);
UpdownAxis.AbsMove(MoveInfo, Config.UpdownAxis_P1, Config.UpdownAxis_P1Speed);
WorkLog("取料: 进出轴返回P1", 1);
InOutAxis.AbsMove(MoveInfo, Config.InoutAxis_P1, Config.InoutAxis_P1Speed);
}
else
{
......@@ -157,8 +163,10 @@ namespace OnlineStore.DeviceLibrary
}
else if (MoveInfo.IsStep(StepEnum.IW08_WaitAxisCheck))
{
MoveInfo.NextMoveStep(StepEnum.IW09_InoutToP1);
WorkLog("取料: 进出轴返回P1",1);
//MoveInfo.NextMoveStep(StepEnum.IW09_InoutToP1);
MoveInfo.NextMoveStep(StepEnum.IW10_SaveSize);
if (MoveInfo.MoveParam.InPosType.Equals(1))
{
LeftBatchMove.GetTrayOK();
......@@ -167,10 +175,10 @@ namespace OnlineStore.DeviceLibrary
{
RightBatchMove.GetTrayOK();
}
InOutAxis.AbsMove(MoveInfo, Config.InoutAxis_P1, Config.InoutAxis_P1Speed);
}
else if (MoveInfo.IsStep(StepEnum.IW09_InoutToP1))
{
{/*
bool isOk = MoveInfo.MoveParam.PlateH > 0 && MoveInfo.MoveParam.PlateW > 0;
BatchMoveBean moveBean = MoveInfo.MoveParam.InPosType.Equals(1) ? LeftBatchMove : RightBatchMove;
if (moveBean.LastHeight > 0 || isOk)
......@@ -188,25 +196,27 @@ namespace OnlineStore.DeviceLibrary
LogUtil.error(WarnMsg, MoveInfo.ErrorLogType,MoveInfo.logSeconds());
Alarm(AlarmType.IoSingleTimeOut);
}
*/
}
else if (MoveInfo.IsStep(StepEnum.IW10_SaveSize))
{
GetTargetPTask = null;
MoveInfo.NextMoveStep(StepEnum.IW11_GetTargetPosition);
MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(1000));
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 (MoveInfo.MoveParam.InPosType.Equals(2))
//{
// MoveInfo.MoveParam.TargetPosType = 1;
// WorkLog(" 右侧入口入料,直接放到XRay:" + MoveInfo.MoveParam.ToStr());
//}
else if (SServerManager.CanConnect())
{
GetTargetPTask = Task.Factory.StartNew(delegate
......@@ -226,6 +236,9 @@ namespace OnlineStore.DeviceLibrary
MoveInfo.MoveParam.TargetPosType = 1;
MoveInfo.MoveParam.IsNgReel = true;
MoveInfo.MoveParam.NgMsg = msg;
string outF = msg;
RobotManager.robot.sQLite.Insert(MoveInfo.MoveParam.WareCode, MoveInfo.MoveParam.PlateW, MoveInfo.MoveParam.PlateH, 0, outF);
}
});
}
......@@ -273,13 +286,15 @@ namespace OnlineStore.DeviceLibrary
MoveInfo.NextMoveStep(StepEnum.IW21_MiddleToP3);
WorkLog(" 开始放料到XRay入口,旋转轴到P3", 1);
MiddleAxis.AbsMove(MoveInfo, Config.MiddleAxis_P3, Config.MiddleAxis_P3Speed);
}
else
{
ClearTimeoutAlarm("验证是否测值");
MoveInfo.NextMoveStep(StepEnum.IW31_MIddleToP4);
WorkLog(" 开始放料到测值工位,旋转轴到P4", 1);
string outF = MoveInfo.MoveParam.TargetPosType.Equals(2)?"电容":"电阻";
outF += "需测值";
RobotManager.robot.sQLite.Insert(MoveInfo.MoveParam.WareCode, MoveInfo.MoveParam.PlateW, MoveInfo.MoveParam.PlateH, 0, outF);
MiddleAxis.AbsMove(MoveInfo, Config.MiddleAxis_P4, Config.MiddleAxis_P4Speed);
}
}else if (MoveInfo.IsTimeOut(120))
......@@ -294,8 +309,8 @@ namespace OnlineStore.DeviceLibrary
{
if (IOValue(IO_Type.TakeAxis_Location_1).Equals(IO_VALUE.HIGH))
{
//MoveInfo.NextMoveStep(StepEnum.IW22_UpdownToP3);
MoveInfo.NextMoveStep(StepEnum.IW23_InoutToP3);
MoveInfo.NextMoveStep(StepEnum.IW22_UpdownToP3);
//MoveInfo.NextMoveStep(StepEnum.IW23_InoutToP3);
WorkLog("->XRay: 升降轴到P3", 1);
UpdownAxis.AbsMove(MoveInfo, Config.UpdownAxis_P3, Config.UpdownAxis_P3Speed);
WorkLog("->XRay:进出轴到P3", 1);
......@@ -313,7 +328,27 @@ namespace OnlineStore.DeviceLibrary
{
//向上合并
MoveInfo.NextMoveStep(StepEnum.IW23_InoutToP3);
bool isOk = MoveInfo.MoveParam.PlateH > 0 && MoveInfo.MoveParam.PlateW > 0;
BatchMoveBean moveBean = MoveInfo.MoveParam.InPosType.Equals(1) ? LeftBatchMove : RightBatchMove;
if (moveBean.LastHeight > 0 || isOk)
{
ClearTimeoutAlarm("测高结束超时");
//MoveInfo.NextMoveStep(StepEnum.IW10_SaveSize);
MoveInfo.NextMoveStep(StepEnum.IW23_InoutToP3);
MoveInfo.MoveParam.PlateH = moveBean.LastHeight;
MoveInfo.MoveParam.PlateW = GetWidth();
WorkLog("测高结束, 记录尺寸【" + MoveInfo.MoveParam.PlateW + "X" + MoveInfo.MoveParam.PlateH + "】,开始下一盘预扫码", 1);
}
else if (MoveInfo.IsTimeOut(60))
{
WarnMsg = Name + "等待" + moveBean.Name + "测高结束超时[" + MoveInfo.TimeOutSeconds + "]秒";
LogUtil.error(WarnMsg, MoveInfo.ErrorLogType, MoveInfo.logSeconds());
Alarm(AlarmType.IoSingleTimeOut);
}
}
else if (MoveInfo.IsStep(StepEnum.IW23_InoutToP3))
{
......@@ -321,7 +356,7 @@ namespace OnlineStore.DeviceLibrary
WorkLog("->XRay:等待XRay可放料",1);
MoveInfo.TimeOutSeconds = 120;
//TODO
MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(1000));
//MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(1000));
MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.X_InLine_Check, IO_VALUE.LOW));
MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.X_InLine_Run, IO_VALUE.LOW));
}
......@@ -365,7 +400,7 @@ namespace OnlineStore.DeviceLibrary
else if (MoveInfo.IsStep(StepEnum.IW42_InoutToP1))
{
//可上合并
MoveInfo.NextMoveStep(StepEnum.IW43_UpdownToP1);
//MoveInfo.NextMoveStep(StepEnum.IW43_UpdownToP1);
}
else if (MoveInfo.IsStep(StepEnum.IW43_UpdownToP1))
......@@ -378,7 +413,7 @@ namespace OnlineStore.DeviceLibrary
else if (MoveInfo.IsStep(StepEnum.IW44_MiddleToP2))
{
TimeSpan span = DateTime.Now - MoveInfo.MoveStartTime;
TickLog("放料完成", true);
TickLog("放料完成", false);
WorkLog("放料完成,耗时(" + FormUtil.GetSpanStr(span) + ")");
MoveInfo.EndMove();
......
......@@ -577,7 +577,7 @@ namespace OnlineStore.DeviceLibrary
AgvClient.NeedEnter(Config.AgvInName, "", Asa.ClientLevel.High);
}
}
else if (AgvClient.GetAction(Config.AgvInName) != Asa.ClientAction.MayEnter)
else if (AgvClient.GetAction(Config.AgvInName) != Asa.ClientAction.MayEnter && AgvClient.GetAction(Config.AgvInName) != Asa.ClientAction.None)
{
needEnterWatch.Stop();
AgvClient.SetToNone(Config.AgvInName);
......@@ -592,7 +592,7 @@ namespace OnlineStore.DeviceLibrary
AgvClient.NeedLeave(Config.AgvOutName, "", Asa.ClientLevel.High);
}
}
else if (AgvClient.GetAction(Config.AgvOutName) != Asa.ClientAction.MayLeave)
else if (AgvClient.GetAction(Config.AgvOutName) != Asa.ClientAction.MayLeave && AgvClient.GetAction(Config.AgvOutName) != Asa.ClientAction.None)
{
needLeaveWatch.Stop();
AgvClient.SetToNone(Config.AgvOutName);
......
......@@ -99,22 +99,31 @@ namespace OnlineStore.DeviceLibrary
WorkLog("料盘处理:左侧门打开,挡停下降", 0);
CylinderMove(MoveInfo, IO_Type.X_InDoor_Up, IO_Type.X_InDoor_Down);
CylinderMove(MoveInfo, IO_Type.X_StopCylinder_Up, IO_Type.X_StopCylinder_Down);
}
else if (MoveInfo.IsStep(StepEnum.XW02_InDoorOpen))
{
MoveInfo.NextMoveStep(StepEnum.XW04_InLineRun);
WorkLog("料盘处理:入口和中间皮带线转动", 0);
IOMove(IO_Type.X_InLine_Run, IO_VALUE.HIGH);
IOMove(IO_Type.X_MLine_Run, IO_VALUE.HIGH);
}
else if (MoveInfo.IsStep(StepEnum.XW04_InLineRun))
{
MoveInfo.NextMoveStep(StepEnum.XW05_WaitMCheck);
WorkLog("料盘处理:等待扫描区域信号检测", 0);
IOMove(IO_Type.X_InLine_Run, IO_VALUE.HIGH);
IOMove(IO_Type.X_MLine_Run, IO_VALUE.HIGH);
//IOMove(IO_Type.X_InLine_Run, IO_VALUE.HIGH);
//IOMove(IO_Type.X_MLine_Run, IO_VALUE.HIGH);
MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(1000));
MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.X_ReelCheck, IO_VALUE.HIGH));
}
else if (MoveInfo.IsStep(StepEnum.XW02_InDoorOpen))
{
}
else if (MoveInfo.IsStep(StepEnum.XW04_InLineRun))
{
//MoveInfo.NextMoveStep(StepEnum.XW05_WaitMCheck);
//WorkLog("料盘处理:等待扫描区域信号检测", 0);
//IOMove(IO_Type.X_InLine_Run, IO_VALUE.HIGH);
//IOMove(IO_Type.X_MLine_Run, IO_VALUE.HIGH);
//MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.X_ReelCheck, IO_VALUE.HIGH));
}
else if (MoveInfo.IsStep(StepEnum.XW05_WaitMCheck))
{
MoveInfo.NextMoveStep(StepEnum.XW06_WaitTime);
......@@ -125,7 +134,7 @@ namespace OnlineStore.DeviceLibrary
IOMove(IO_Type.X_InLine_Run, IO_VALUE.LOW);
IOMove(IO_Type.X_MLine_Run, IO_VALUE.HIGH);
MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(4000));
MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(1000));
MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.X_ReelCheck, IO_VALUE.HIGH));
}
else if (MoveInfo.IsStep(StepEnum.XW06_WaitTime))
......@@ -189,7 +198,7 @@ namespace OnlineStore.DeviceLibrary
MoveInfo.NextMoveStep(StepEnum.XW11_StartCount);
WorkLog("点料:启用X射线点料,等待X射线可以启动");
MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(500));
//MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(500));
CylinderMove(MoveInfo, IO_Type.X_InDoor_Down, IO_Type.X_InDoor_Up);
CylinderMove(MoveInfo, IO_Type.X_OutDoor_Down, IO_Type.X_OutDoor_Up);
MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.X_Lock_On, IO_VALUE.HIGH));
......@@ -225,8 +234,9 @@ namespace OnlineStore.DeviceLibrary
}
else if (MoveInfo.IsStep(StepEnum.XW12_XRayStart))
{
TickLog("打开xray",true);
MoveInfo.NextMoveStep(StepEnum.XW13_GetXRayImage);
MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(8000));
//MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(8000));
WorkLog("点料:清理" + path1_tif + "内容,开始获取X射线图形 ");
CapImage();
......@@ -292,7 +302,7 @@ namespace OnlineStore.DeviceLibrary
else
{
MoveInfo.NextMoveStep(StepEnum.XW23_OutLineRun);
WorkLog("料盘处理:中间皮带线,出口皮带线转动", 0);
WorkLog("料盘处理:中间皮带线,出口皮带线转动", 1);
IOMove(IO_Type.X_MLine_Run, IO_VALUE.HIGH);
IOMove(IO_Type.X_OLine_Run, IO_VALUE.HIGH);
//MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.X_ReelCheck, IO_VALUE.LOW));
......@@ -301,7 +311,7 @@ namespace OnlineStore.DeviceLibrary
else if (MoveInfo.IsStep(StepEnum.XW23_OutLineRun))
{
MoveInfo.NextMoveStep(StepEnum.XW24_WaitOutCheck);
WorkLog("料盘处理:继续转动3秒后,等待出口皮带线检测到料盘", 0);
WorkLog("料盘处理:继续转动3秒后,等待出口皮带线检测到料盘", 1);
IOMove(IO_Type.X_MLine_Run, IO_VALUE.HIGH);
IOMove(IO_Type.X_OLine_Run, IO_VALUE.HIGH);
MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(3000));
......@@ -316,7 +326,7 @@ namespace OnlineStore.DeviceLibrary
IOMove(IO_Type.X_MLine_Run, IO_VALUE.LOW);
IOMove(IO_Type.X_OLine_Run, IO_VALUE.HIGH);
MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(3000));
MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(1000));
MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.Out_TrayCheck, IO_VALUE.HIGH));
//CylinderMove(null, IO_Type.X_OutDoor_Down, IO_Type.X_OutDoor_Up);
CylinderMove(null, IO_Type.X_StopCylinder_Up, IO_Type.X_StopCylinder_Down);
......@@ -366,7 +376,7 @@ namespace OnlineStore.DeviceLibrary
private void XW12_XRayStart()
{
MoveInfo.NextMoveStep(StepEnum.XW12_XRayStart);
MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(1000));
//MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(1000));
InXWork = true;
bool result = xRay.Start();
WorkLog("料盘处理:启动X射线[" + result + "],等待1秒");
......@@ -386,7 +396,7 @@ namespace OnlineStore.DeviceLibrary
}
MoveInfo.NextMoveStep(StepEnum.XW15_GetResult);
//MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(300000));
MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(200));
//MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(200));
GetResultTask = Task.Factory.StartNew(delegate {
try
......
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!