Commit 6811af88 LN

逻辑优化。

1 个父辈 5cda5bea
......@@ -194,7 +194,7 @@ namespace OnlineStore.DeviceLibrary
if (!LeftBatchMove.MoveInfo.MoveType.Equals(RobotMoveType.None) && (!LeftBatchMove.MoveInfo.MoveType.Equals(RobotMoveType.Working)))
{
WarnMsg = Name + "等待" + LeftBatchMove.Name + "复位完成超时[" + MoveInfo.TimeOutSeconds + "]秒";
LogUtil.error(WarnMsg, MoveInfo.ErrorLogType);
LogUtil.error(WarnMsg, MoveInfo.ErrorLogType,MoveInfo.logSeconds());
Alarm(AlarmType.IoSingleTimeOut);
}
else
......
......@@ -183,7 +183,7 @@ namespace OnlineStore.DeviceLibrary
else if (MoveInfo.IsTimeOut(60))
{
WarnMsg = Name + "等待" + moveBean.Name + "测高结束超时[" + MoveInfo.TimeOutSeconds + "]秒";
LogUtil.error(WarnMsg, MoveInfo.ErrorLogType);
LogUtil.error(WarnMsg, MoveInfo.ErrorLogType,MoveInfo.logSeconds());
Alarm(AlarmType.IoSingleTimeOut);
}
}
......@@ -249,7 +249,7 @@ namespace OnlineStore.DeviceLibrary
if (MoveInfo.IsTimeOut(120))
{
WarnMsg = Name + "等待" + MoveInfo.MoveParam.WareCode + "验证是否测值 超时[" + MoveInfo.TimeOutSeconds + "]秒";
LogUtil.error(WarnMsg, MoveInfo.ErrorLogType);
LogUtil.error(WarnMsg, MoveInfo.ErrorLogType,MoveInfo.logSeconds());
Alarm(AlarmType.IoSingleTimeOut);
}
}
......@@ -344,8 +344,9 @@ namespace OnlineStore.DeviceLibrary
}
else if (MoveInfo.IsStep(StepEnum.IW44_MiddleToP2))
{
TimeSpan span = DateTime.Now - MoveInfo.MoveStartTime;
MoveInfo.EndMove();
WorkLog("放料完成");
WorkLog("放料完成,耗时(" + FormUtil.GetSpanStr(span) + ")");
}
}
......
......@@ -205,7 +205,8 @@ namespace OnlineStore.DeviceLibrary
}
else if (MoveInfo.IsStep(StepEnum.OMR05_TakeT_Clamping_Relax))
{
WorkLog(" 取料模块复位完成");
TimeSpan span = DateTime.Now - MoveInfo.MoveStartTime;
WorkLog(" 取料模块复位完成,耗时(" + FormUtil.GetSpanStr(span) + ")");
MoveInfo.EndMove();
ResetStatusPro();
}
......@@ -268,7 +269,8 @@ namespace OnlineStore.DeviceLibrary
}
else if (SecMoveInfo.IsStep(StepEnum.OLR08_LabelRToP1))
{
SecWorkLog(" 贴标模块复位完成");
TimeSpan span = DateTime.Now - SecMoveInfo.MoveStartTime;
SecWorkLog(" 贴标模块复位完成, 耗时(" + FormUtil.GetSpanStr(span) + ")");
SecMoveInfo.EndMove();
ResetStatusPro();
}
......@@ -360,15 +362,17 @@ namespace OnlineStore.DeviceLibrary
}
else
{
TimeSpan span = DateTime.Now - ShelfMoveInfo.MoveStartTime;
ShelfMoveInfo.EndMove();
ShelfWorkLog("批量轴模块复位完成");
ShelfWorkLog("批量轴模块复位完成,耗时(" + FormUtil.GetSpanStr(span) + ")");
ResetStatusPro();
}
}
else if (ShelfMoveInfo.IsStep(StepEnum.OBR08_BatchAxisToP1))
{
TimeSpan span = DateTime.Now - ShelfMoveInfo.MoveStartTime;
ShelfMoveInfo.EndMove();
ShelfWorkLog("批量轴模块复位完成");
ShelfWorkLog("批量轴模块复位完成,耗时(" + FormUtil.GetSpanStr(span) + ")");
ResetStatusPro();
}
}
......
......@@ -48,6 +48,7 @@ namespace OnlineStore.DeviceLibrary
#region 取料
private bool IsStartLabel = false;//当前取的料盘是否开始打印标签
public override bool StartWorking(WorkParam param)
{
if (MoveInfo.MoveType.Equals(RobotMoveType.None).Equals(false))
......@@ -70,11 +71,12 @@ namespace OnlineStore.DeviceLibrary
if (IOValue(IO_Type.Out_TrayCheck).Equals(IO_VALUE.HIGH) && IOValue(IO_Type.X_OLine_Run).Equals(IO_VALUE.LOW))
{
IsStartLabel = false;
MoveInfo.NewMove(RobotMoveType.Working, StepEnum.OT01_WaitCheck);
if (param.PlateW > 0 && param.PlateH > 0)
{
MoveInfo.MoveParam = param;
WorkLog(" 检测到XRay出口料盘[" + param.OutStr() + "],准备开始取料");
WorkLog(" 检测到XRay出口料盘[" + param.OutStr() + "],准备开始取料,重置 IsStartLabel = false");
}
else
{
......@@ -86,7 +88,7 @@ namespace OnlineStore.DeviceLibrary
MoveInfo.MoveParam.SetReelInfo(reelInfo);
WorkLog(" 检测到XRay出口料盘[" + reelInfo.ToStr() + "],准备开始取料");
WorkLog(" 检测到XRay出口料盘[" + reelInfo.ToStr() + "],准备开始取料,重置 IsStartLabel = false");
}
if (MoveInfo.MoveParam.PlateW <= 0 ||
MoveInfo.MoveParam.PlateH <= 0 ||
......@@ -101,6 +103,38 @@ namespace OnlineStore.DeviceLibrary
}
return false;
}
private bool CheckStartLabel(bool needAlarm=false)
{
if (MoveInfo.MoveParam.IsNgReel)
{
return false;
}
if (IsStartLabel)
{
return true;
}
//TODO 记录信息,判断贴标模块当前空闲,此时可以打印标签(取码气缸前进,打印标签,取码气缸后退)
if (SecMoveInfo.MoveType.Equals(RobotMoveType.None))
{
WorkLog("取料: 贴标模块开始打印标签");
//TODO
bool result = StartLabelling(MoveInfo.MoveParam);
if (result)
{
IsStartLabel = true;
return true;
}
}
else if (needAlarm && MoveInfo.IsTimeOut(120))
{
WarnMsg = MoveInfo.Name + "[" + MoveInfo.MoveStep + "]" + "等待贴标模块空闲 超时[" + FormUtil.GetSpanStr(MoveInfo.StepSpan()) + "]";
LogUtil.error(WarnMsg, MoveInfo.ErrorLogType, MoveInfo.logSeconds());
Alarm(AlarmType.IoSingleTimeOut);
}
return false;
}
protected override void WorkingProcess()
{
if (MoveInfo.IsInWait)
......@@ -115,13 +149,13 @@ namespace OnlineStore.DeviceLibrary
if (MoveInfo.IsStep(StepEnum.OT01_WaitCheck))
{
MoveInfo.NextMoveStep(StepEnum.OT02_MoveZToP1);
WorkLog("取料:取料Z轴到P1 ",0);
WorkLog("取料:取料Z轴到P1 ", 0);
MoveZAxis.AbsMove(MoveInfo, Config.MoveZ_P1, Config.MoveZ_P1Speed);
}
else if (MoveInfo.IsStep(StepEnum.OT02_MoveZToP1))
{
MoveInfo.NextMoveStep(StepEnum.OT03_MoveXToP2);
WorkLog("取料:取料X轴到P2 ",0);
WorkLog("取料:取料X轴到P2 ", 0);
MoveXAxis.AbsMove(MoveInfo, Config.GetMoveXP2(MoveInfo.MoveParam.PlateW), Config.MoveX_P2Speed);
}
else if (MoveInfo.IsStep(StepEnum.OT03_MoveXToP2))
......@@ -131,14 +165,14 @@ namespace OnlineStore.DeviceLibrary
if (MoveInfo.MoveParam.IsNgReel)
{
MoveInfo.NextMoveStep(StepEnum.OT07_MoveZToP2);
WorkLog("取料:取料Z轴到P2 ",0);
WorkLog("取料:取料Z轴到P2 ", 0);
MoveZAxis.AbsMove(MoveInfo, Config.GetMoveZP2(MoveInfo.MoveParam.PlateH), Config.MoveZ_P2Speed);
}
else
{
MoveInfo.NextMoveStep(StepEnum.OT05_GetImage);
WorkLog("取料:[" + Config.CameraName + "]拍照并开始识别 ,等待1000ms");
MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(1000));
WorkLog("取料:[" + Config.CameraName + "]拍照并开始识别 ,等待100ms");
MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(100));
}
}
//else if (MoveInfo.IsStep(StepEnum.OT04_CheckNeedImage))
......@@ -147,33 +181,40 @@ namespace OnlineStore.DeviceLibrary
//}
else if (MoveInfo.IsStep(StepEnum.OT05_GetImage))
{
//TODO 记录信息,判断贴标模块当前空闲,此时可以打印标签(取码气缸前进,打印标签,取码气缸后退)
if (SecMoveInfo.MoveType.Equals(RobotMoveType.None))
{
MoveInfo.NextMoveStep(StepEnum.OT06_MoveXToP2);
WorkLog("取料:取料X轴运动到P2 , 贴标模块开始打印标签");
WorkLog("取料:取料X轴运动到P2 ");
MoveXAxis.AbsMove(MoveInfo, Config.GetMoveXP2(MoveInfo.MoveParam.PlateW), Config.MoveX_P2Speed);
//TODO
StartLabelling(MoveInfo.MoveParam);
}
else if (MoveInfo.IsTimeOut(120))
{
WarnMsg = MoveInfo.Name + "[" + MoveInfo.MoveStep + "]" + "等待贴标模块空闲 超时[" + FormUtil.GetSpanStr(MoveInfo.StepSpan()) + "]";
LogUtil.error(WarnMsg, MoveInfo.ErrorLogType);
Alarm(AlarmType.IoSingleTimeOut);
}
CheckStartLabel();
////TODO 记录信息,判断贴标模块当前空闲,此时可以打印标签(取码气缸前进,打印标签,取码气缸后退)
//if (SecMoveInfo.MoveType.Equals(RobotMoveType.None))
//{
// IsStartLabel = true;
// WorkLog("取料:取料X轴运动到P2 , 贴标模块开始打印标签");
// //TODO
// StartLabelling(MoveInfo.MoveParam);
//}
//else if (MoveInfo.IsTimeOut(120))
//{
// WarnMsg = MoveInfo.Name + "[" + MoveInfo.MoveStep + "]" + "等待贴标模块空闲 超时[" + FormUtil.GetSpanStr(MoveInfo.StepSpan()) + "]";
// LogUtil.error(WarnMsg, MoveInfo.ErrorLogType);
// Alarm(AlarmType.IoSingleTimeOut);
//}
}
else if (MoveInfo.IsStep(StepEnum.OT06_MoveXToP2))
{
MoveInfo.NextMoveStep(StepEnum.OT07_MoveZToP2);
WorkLog("取料:取料Z轴到P2 ",0);
WorkLog("取料:取料Z轴到P2 ", 0);
MoveZAxis.AbsMove(MoveInfo, Config.GetMoveZP2(MoveInfo.MoveParam.PlateH), Config.MoveZ_P2Speed);
CheckStartLabel();
}
else if (MoveInfo.IsStep(StepEnum.OT07_MoveZToP2))
{
MoveInfo.NextMoveStep(StepEnum.OT08_Clamping_Work);
WorkLog("取料:取料气缸夹紧 ",0);
WorkLog("取料:取料气缸夹紧 ", 0);
CylinderMove(MoveInfo, IO_Type.TakeT_Clamping_Relax, IO_Type.TakeT_Clamping_Work);
CheckStartLabel();
}
else if (MoveInfo.IsStep(StepEnum.OT08_Clamping_Work))
{
......@@ -181,20 +222,21 @@ namespace OnlineStore.DeviceLibrary
WorkLog("取料:取料Z轴返回P1 ,验证Out_TrayCheck消失", 0);
MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.Out_TrayCheck, IO_VALUE.LOW));
MoveZAxis.AbsMove(MoveInfo, Config.MoveZ_P1, Config.MoveZ_P1Speed);
CheckStartLabel();
}
else if (MoveInfo.IsStep(StepEnum.OT09_MoveZToP1))
{
if (MoveInfo.MoveParam.IsNgReel)
{
MoveInfo.NextMoveStep(StepEnum.OT21_NG_MoveXToP1);
WorkLog("NG料:取料X轴到P1 ",0);
WorkLog("NG料:取料X轴到P1 ", 0);
MoveXAxis.AbsMove(MoveInfo, Config.MoveX_P1, Config.MoveX_P1Speed);
}
else
{
MoveInfo.NextMoveStep(StepEnum.OT11_WaitShelfOk);
WorkLog("取料完成,等待料串可放料 ");
CheckStartLabel();
}
}
else if (MoveInfo.IsStep(StepEnum.OT11_WaitShelfOk))
......@@ -224,9 +266,10 @@ namespace OnlineStore.DeviceLibrary
else if (MoveInfo.IsTimeOut(120))
{
WarnMsg = MoveInfo.Name + "[" + MoveInfo.MoveStep + "]" + "等待出料料串准备完成(OS_18_ShelfReady)超时[" + FormUtil.GetSpanStr(MoveInfo.StepSpan()) + "]";
LogUtil.error(WarnMsg, MoveInfo.ErrorLogType);
LogUtil.error(WarnMsg, MoveInfo.ErrorLogType, MoveInfo.logSeconds());
Alarm(AlarmType.IoSingleTimeOut);
}
CheckStartLabel();
}
else if (MoveInfo.IsStep(StepEnum.OT12_MoveXToP3))
{
......@@ -241,21 +284,23 @@ namespace OnlineStore.DeviceLibrary
else if (MoveInfo.IsTimeOut(60))
{
WarnMsg = MoveInfo.Name + "[" + MoveInfo.MoveStep + "]" + "等待出料料串可放料(OS_22_WaitTray)超时[" + FormUtil.GetSpanStr(MoveInfo.StepSpan()) + "]";
LogUtil.error(WarnMsg, MoveInfo.ErrorLogType);
LogUtil.error(WarnMsg, MoveInfo.ErrorLogType,MoveInfo.logSeconds());
Alarm(AlarmType.IoSingleTimeOut);
}
CheckStartLabel();
}
else if (MoveInfo.IsStep(StepEnum.OT13_MoveZToP3))
{
MoveInfo.NextMoveStep(StepEnum.OT14_Clamping_Relax);
WorkLog("放料:取料气缸放松 ",0);
WorkLog("放料:取料气缸放松 ", 0);
CylinderMove(MoveInfo, IO_Type.TakeT_Clamping_Work, IO_Type.TakeT_Clamping_Relax);
CheckStartLabel();
}
else if (MoveInfo.IsStep(StepEnum.OT14_Clamping_Relax))
{
bool shelfOk = ShelfMoveInfo.MoveType.Equals(RobotMoveType.ShelfPro) && ShelfMoveInfo.IsStep(StepEnum.OS_22_WaitTray);
MoveInfo.NextMoveStep(StepEnum.OT15_MoveZToP1);
WorkLog("放料:取料Z轴回到P1 ",0);
WorkLog("放料:取料Z轴回到P1 ", 0);
MoveZAxis.AbsMove(MoveInfo, Config.MoveZ_P1, Config.MoveZ_P1Speed);
if (shelfOk)
{
......@@ -264,17 +309,28 @@ namespace OnlineStore.DeviceLibrary
ShelfMoveInfo.NextMoveStep(StepEnum.OS_23_TrayOK);
ShelfWorkLog("料盘已放入料串,累积出料 【" + OutReelHeight + "】盘共 " + OutReelHeight + " mm");
}
CheckStartLabel();
}
else if (MoveInfo.IsStep(StepEnum.OT15_MoveZToP1))
{
MoveInfo.NextMoveStep(StepEnum.OT16_MoveXToP2);
WorkLog("放料:取料X轴回到P2 ",0);
WorkLog("放料:取料X轴回到P2 ", 0);
MoveXAxis.AbsMove(MoveInfo, Config.GetMoveXP2(MoveInfo.MoveParam.PlateW), Config.MoveX_P2Speed);
}
else if (MoveInfo.IsStep(StepEnum.OT16_MoveXToP2))
{
TimeSpan span = DateTime.Now - MoveInfo.MoveStartTime;
if (IsStartLabel)
{
MoveInfo.EndMove();
WorkLog("放料完成");
WorkLog("放料完成,耗时(" + FormUtil.GetSpanStr(span) + ")");
}
bool startOk = CheckStartLabel(true);
if (startOk)
{
MoveInfo.EndMove();
WorkLog("放料完成,耗时(" + FormUtil.GetSpanStr(span) + ")");
}
}
......@@ -306,8 +362,9 @@ namespace OnlineStore.DeviceLibrary
}
else if (MoveInfo.IsStep(StepEnum.OT25_NG_NGBack))
{
TimeSpan span = DateTime.Now - MoveInfo.MoveStartTime;
MoveInfo.EndMove();
WorkLog("放料完成");
WorkLog("放料完成,耗时(" + FormUtil.GetSpanStr(span) + ")");
}
#endregion
......@@ -391,7 +448,7 @@ namespace OnlineStore.DeviceLibrary
else if (MoveInfo.IsTimeOut(120))
{
WarnMsg = SecMoveInfo.Name + "[" + SecMoveInfo.MoveStep + "]" + "等待 打印标签完成(OL03_PrintLabel) 超时[" + FormUtil.GetSpanStr(SecMoveInfo.StepSpan()) + "]";
LogUtil.error(WarnMsg, SecMoveInfo.ErrorLogType);
LogUtil.error(WarnMsg, SecMoveInfo.ErrorLogType, SecMoveInfo.logSeconds());
Alarm(AlarmType.IoSingleTimeOut);
}
......@@ -415,13 +472,13 @@ namespace OnlineStore.DeviceLibrary
else if (SecMoveInfo.IsStep(StepEnum.OL07_Nozzle_Work))
{
SecMoveInfo.NextMoveStep(StepEnum.OL08_ZToP1);
SecWorkLog("贴标: Z轴到P1点");
SecWorkLog("贴标: Z轴到P1点",0);
LabelZAxis.AbsMove(SecMoveInfo, Config.LabelZ_P1, Config.LabelZ_P1Speed);
}
else if (SecMoveInfo.IsStep(StepEnum.OL08_ZToP1))
{
SecMoveInfo.NextMoveStep(StepEnum.OL09_YToP1);
SecWorkLog("贴标: Y轴到P1点");
SecWorkLog("贴标: Y轴到P1点",0);
LabelYAxis.AbsMove(SecMoveInfo, Config.LabelY_P1, Config.LabelY_P1Speed);
}
else if (SecMoveInfo.IsStep(StepEnum.OL09_YToP1))
......@@ -448,7 +505,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);
LogUtil.error(WarnMsg, SecMoveInfo.ErrorLogType,SecMoveInfo.logSeconds());
Alarm(AlarmType.IoSingleTimeOut);
}
}
......@@ -509,7 +566,7 @@ namespace OnlineStore.DeviceLibrary
if (canLabel)
{
ShelfMoveInfo.NextMoveStep(StepEnum.OS_26_LabelOk);
LogUtil.info(SecMoveInfo.Name + " 贴标结束");
ShelfWorkLog("贴标完成");
}
}
else if (SecMoveInfo.IsStep(StepEnum.OL18_LableBack))
......@@ -523,7 +580,8 @@ namespace OnlineStore.DeviceLibrary
}
else if (SecMoveInfo.IsStep(StepEnum.OL19_XYRBackToP2))
{
LogUtil.info(SecMoveInfo.Name + " 贴标结束");
TimeSpan span = DateTime.Now - SecMoveInfo.MoveStartTime;
LogUtil.info(SecMoveInfo.Name + " 贴标结束, 耗时(" + FormUtil.GetSpanStr(span) + ")");
SecMoveInfo.EndMove();
}
......
......@@ -258,7 +258,7 @@ namespace OnlineStore.DeviceLibrary
else if (SecMoveInfo.IsTimeOut(120))
{
WarnMsg = SecMoveInfo.Name + "[" + SecMoveInfo.MoveStep + "]" + "等待 贴标结束 超时[" + FormUtil.GetSpanStr(SecMoveInfo.StepSpan()) + "]";
LogUtil.error(WarnMsg, SecMoveInfo.ErrorLogType);
LogUtil.error(WarnMsg, SecMoveInfo.ErrorLogType, SecMoveInfo.logSeconds());
Alarm(AlarmType.IoSingleTimeOut);
}
}
......@@ -325,10 +325,11 @@ namespace OnlineStore.DeviceLibrary
}
else if (ShelfMoveInfo.IsStep(StepEnum.OS_38_LineRun))
{
TimeSpan span = DateTime.Now - ShelfMoveInfo.MoveStartTime;
ShelfMoveInfo.EndMove();
IOMove(IO_Type.O_WLine_Run, IO_VALUE.LOW);
IOMove(IO_Type.O_WLine_WorkStop, IO_VALUE.LOW);
ShelfWorkLog("送出料串完成,链条停止转动,阻挡上升 ");
ShelfWorkLog("送出料串完成,链条停止转动,阻挡上升, 耗时(" + FormUtil.GetSpanStr(span) + ") ");
}
#endregion
......
......@@ -241,7 +241,8 @@ namespace OnlineStore.DeviceLibrary
}
else if (MoveInfo.IsStep(StepEnum.XR05_DoorClose))
{
WorkLog(" XRay复位 :完成!");
TimeSpan span = DateTime.Now - MoveInfo.MoveStartTime;
WorkLog(" XRay复位 :完成,耗时(" + FormUtil.GetSpanStr(span) + ")");
MoveInfo.EndMove();
runStatus = RobotRunStatus.Runing;
}
......
......@@ -96,21 +96,21 @@ namespace OnlineStore.DeviceLibrary
if (MoveInfo.IsStep(StepEnum.XW01_WaitInReel))
{
MoveInfo.NextMoveStep(StepEnum.XW02_InDoorOpen);
WorkLog("料盘处理:左侧门打开,挡停下降");
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("料盘处理:入口和中间皮带线转动,");
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("料盘处理:等待扫描区域信号检测");
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));
......@@ -147,7 +147,7 @@ namespace OnlineStore.DeviceLibrary
Work_ReelInfo.IsNgReel = true;
Work_ReelInfo.NgMsg = "无有效条码";
}
MoveInfo.MoveParam.SetReelInfo(In_ReelInfo);
//MoveInfo.MoveParam.SetReelInfo(In_ReelInfo);
//判断是否需要点料
if (Work_ReelInfo.IsNgReel)
{
......@@ -196,7 +196,7 @@ namespace OnlineStore.DeviceLibrary
else if (MoveInfo.IsTimeOut(120))
{
WarnMsg = MoveInfo.Name + "[" + MoveInfo.MoveStep + "]" + "等待 X互锁信号打开 超时[" + FormUtil.GetSpanStr(MoveInfo.StepSpan()) + "]";
LogUtil.error(WarnMsg, SecMoveInfo.ErrorLogType);
LogUtil.error(WarnMsg, SecMoveInfo.ErrorLogType,SecMoveInfo.logSeconds());
Alarm(AlarmType.IoSingleTimeOut);
}
}
......@@ -216,7 +216,7 @@ namespace OnlineStore.DeviceLibrary
{
WarnMsg = MoveInfo.Name + "[" + MoveInfo.MoveStep + "]" + "等待 X互锁信号打开 超时[" + FormUtil.GetSpanStr(MoveInfo.StepSpan()) + "]";
}
LogUtil.error(WarnMsg, SecMoveInfo.ErrorLogType);
LogUtil.error(WarnMsg, SecMoveInfo.ErrorLogType, SecMoveInfo.logSeconds());
Alarm(AlarmType.IoSingleTimeOut);
}
}
......@@ -246,27 +246,27 @@ namespace OnlineStore.DeviceLibrary
{
MoveInfo.NextMoveStep(StepEnum.XW21_WaitOutNoReel);
MoveInfo.TimeOutSeconds = 120;
WorkLog("料盘处理:等待出口无料盘");
WorkLog("料盘处理:等待出口无料盘",0);
MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.Out_TrayCheck, IO_VALUE.LOW));
}
else if (MoveInfo.IsStep(StepEnum.XW21_WaitOutNoReel))
{
MoveInfo.NextMoveStep(StepEnum.XW22_OutDoorOpen);
WorkLog("料盘处理:右侧门打开,挡停放行");
WorkLog("料盘处理:右侧门打开,挡停放行",0);
CylinderMove(MoveInfo, IO_Type.X_OutDoor_Up, IO_Type.X_OutDoor_Down);
CylinderMove(MoveInfo, IO_Type.X_StopCylinder_Down, IO_Type.X_StopCylinder_Up);
}
else if (MoveInfo.IsStep(StepEnum.XW22_OutDoorOpen))
{
MoveInfo.NextMoveStep(StepEnum.XW23_OutLineRun);
WorkLog("料盘处理:中间皮带线,出口皮带线转动");
WorkLog("料盘处理:中间皮带线,出口皮带线转动",0);
IOMove(IO_Type.X_MLine_Run, IO_VALUE.HIGH);
IOMove(IO_Type.X_OLine_Run, IO_VALUE.HIGH);
}
else if (MoveInfo.IsStep(StepEnum.XW23_OutLineRun))
{
MoveInfo.NextMoveStep(StepEnum.XW24_WaitOutCheck);
WorkLog("料盘处理:等待出口皮带线检测到料盘");
WorkLog("料盘处理:等待出口皮带线检测到料盘",0);
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.Out_TrayCheck, IO_VALUE.HIGH));
......@@ -300,17 +300,11 @@ namespace OnlineStore.DeviceLibrary
}
else if (MoveInfo.IsStep(StepEnum.XW27_OutDoorClose))
{
TimeSpan span = DateTime.Now - MoveInfo.MoveStartTime;
runStatus = RobotRunStatus.Runing;
MoveInfo.EndMove();
WorkLog("料盘处理:料盘处理结束");
// MoveInfo.NextMoveStep(StepEnum.XW28_EndPro);
}
else if (MoveInfo.IsStep(StepEnum.XW28_EndPro))
{
MoveInfo.EndMove();
runStatus = RobotRunStatus.Runing;
WorkLog("料盘处理:料盘处理结束,耗时(" + FormUtil.GetSpanStr(span) + ")");
}
}
private void XW12_XRayStart()
......
......@@ -11,14 +11,15 @@ namespace OnlineStore.DeviceLibrary
{
public class RobotMoveInfo
{
internal DateTime MoveStartTime = DateTime.Now;
private static int MaxMoveId=1;
/// <summary>
/// 超时时间
/// </summary>
public int TimeOutSeconds = 60;
public string Name = "";
public bool ShelfNoTray = false;
public int MoveID = 0;
internal int TimeOutSeconds = 60;
internal string Name = "";
internal bool ShelfNoTray = false;
internal int MoveID = 0;
public RobotMoveInfo(string name)
{
this.Name = name;
......@@ -40,7 +41,7 @@ namespace OnlineStore.DeviceLibrary
/// <summary>
/// =true表示满足一个等待条件,就可以完成此步骤的等待
/// </summary>
public bool OneWaitCanEndStep = false;
internal bool OneWaitCanEndStep = false;
private RobotMoveType moveType;
......@@ -55,25 +56,25 @@ namespace OnlineStore.DeviceLibrary
/// <summary>
/// 是否再当前步骤等待中
/// </summary>
public bool IsInWait { get; set; }
internal bool IsInWait { get; set; }
/// <summary>
/// 可以循环运动的次数(轴卡运动才需要)
/// </summary>
public int CanWhileCount = 0;
internal int CanWhileCount = 0;
private StepEnum moveStep;
public StepEnum MoveStep
internal StepEnum MoveStep
{
get { return moveStep; }
}
public bool IsStep(StepEnum step)
internal bool IsStep(StepEnum step)
{
return MoveStep.Equals(step);
}
public bool IsTimeOut(int timeOutSeconds = 60)
internal bool IsTimeOut(int timeOutSeconds = 60)
{
TimeSpan span = DateTime.Now - LastSetpTime;
if (span.TotalSeconds > timeOutSeconds)
......@@ -82,12 +83,27 @@ namespace OnlineStore.DeviceLibrary
}
return false;
}
public TimeSpan StepSpan()
internal int logSeconds()
{
TimeSpan span = DateTime.Now - LastSetpTime;
int second = 10;
second = (int)(TimeOutSeconds / span.TotalSeconds) * 10;
if (second > 120)
{
second = 120;
}
else if (second < 10)
{
second = 10;
}
return second;
}
internal TimeSpan StepSpan()
{
TimeSpan span = DateTime.Now - LastSetpTime;
return span;
}
public void NextMoveStep(StepEnum step)
internal void NextMoveStep(StepEnum step)
{
moveStep = step;
LastSetpTime = DateTime.Now;
......@@ -99,7 +115,7 @@ namespace OnlineStore.DeviceLibrary
/// <summary>
/// 当前步骤执行完成
/// </summary>
public void EndStepWait()
internal void EndStepWait()
{
IsInWait = false;
WaitList = new List<WaitResultInfo>();
......@@ -112,15 +128,8 @@ namespace OnlineStore.DeviceLibrary
LastSetpTime = DateTime.Now;
WaitList = new List<WaitResultInfo>();
MoveNum++;
MoveStartTime = DateTime.Now;
}
//public void NewMove(RobotMoveType type, WorkParam param, StepEnum step= StepEnum.Wait)
//{
// moveStep = step;
// this.moveType = type;
// this.MoveParam = param;
// LastSetpTime = DateTime.Now;
// WaitList = new List<WaitResultInfo>();
//}
public void EndMove()
{
this.moveType = RobotMoveType.None;
......
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!