Commit 3d8c9bd3 LN

紧急出库修改

1 个父辈 34140148
......@@ -411,7 +411,7 @@ namespace OnlineStore.AssemblyLine
int speed = equipBean.Config.UpdownAxis_P2Speed;
LogUtil.info("点击【移栽位置P2】,料盘高度【" + cmbSizeList.Text + "】 位置【" + position + "】速度【" + speed + "】");
equipBean.UpdownAxis.AbsMove(position, speed);
equipBean.UpdownAxis.AbsMove(null, position, speed);
}
......@@ -444,7 +444,7 @@ namespace OnlineStore.AssemblyLine
int position = FormUtil.GetIntValue(txtP1);
int speed = equipBean.Config.UpdownAxis_P1Speed;
LogUtil.info("点击【移栽升降轴待机位置P1:】, 位置【" + position + "】速度【" + speed + "】");
equipBean.UpdownAxis.AbsMove(position, speed);
equipBean.UpdownAxis.AbsMove(null, position, speed);
}
private void btnSave_Click(object sender, EventArgs e)
......@@ -490,19 +490,19 @@ namespace OnlineStore.AssemblyLine
private void btnBP1_Click(object sender, EventArgs e)
{
int position = FormUtil.GetIntValue(txtBp1);
equipBean.BatchAxis.AbsMove(position, equipBean.Config.BatchAxis_P1Speed);
equipBean.BatchAxis.AbsMove(null, position, equipBean.Config.BatchAxis_P1Speed);
}
private void btnBP2_Click(object sender, EventArgs e)
{
int position = FormUtil.GetIntValue(txtBP2);
equipBean.BatchAxis.AbsMove(position, equipBean.Config.BatchAxis_P2Speed);
equipBean.BatchAxis.AbsMove(null, position, equipBean.Config.BatchAxis_P2Speed);
}
private void btnBP3_Click(object sender, EventArgs e)
{
int position = FormUtil.GetIntValue(txtBP3);
equipBean.BatchAxis.AbsMove(position, equipBean.Config.BatchAxis_P3Speed);
equipBean.BatchAxis.AbsMove(null, position, equipBean.Config.BatchAxis_P3Speed);
}
private void btnBSave_Click(object sender, EventArgs e)
......@@ -539,7 +539,7 @@ namespace OnlineStore.AssemblyLine
int position = FormUtil.GetIntValue(txtUpdownP3);
int speed = equipBean.Config.UpdownAxis_P3Speed;
LogUtil.info("点击【移栽升降轴取料位置P3:】, 位置【" + position + "】速度【" + speed + "】");
equipBean.UpdownAxis.AbsMove(position, speed);
equipBean.UpdownAxis.AbsMove(null, position, speed);
}
private void chbMoveStop_CheckedChanged(object sender, EventArgs e)
......
......@@ -395,7 +395,7 @@ namespace OnlineStore.AssemblyLine
int position = FormUtil.GetIntValue(txtP2);
int speed = equipBean.Config.UpdownAxis_P2Speed;
LogUtil.info("点击【移栽位置】,料盘高度【" + cmbSizeList.Text + "】 位置【" + position + "】速度【" + speed + "】");
equipBean.UpdownAxis.AbsMove(position, speed);
equipBean.UpdownAxis.AbsMove(null, position, speed);
}
......@@ -435,7 +435,7 @@ namespace OnlineStore.AssemblyLine
int speed = equipBean.Config.UpdownAxis_P1Speed;
LogUtil.info("点击【P1点测试】, 位置【" + position + "】速度【" + speed + "】");
equipBean.UpdownAxis.AbsMove(position, speed);
equipBean.UpdownAxis.AbsMove(null, position, speed);
}
......@@ -460,7 +460,7 @@ namespace OnlineStore.AssemblyLine
int speed = equipBean.Config.UpdownAxis_P3Speed;
LogUtil.info("点击【料仓门口下降位置】,料盘高度【" + cmbSizeList.Text + "】 位置【" + position + "】速度【" + speed + "】");
equipBean.UpdownAxis.AbsMove(position, speed);
equipBean.UpdownAxis.AbsMove(null, position, speed);
}
......
......@@ -363,7 +363,7 @@ namespace OnlineStore.AssemblyLine
{
int speed = equipBean.Config.UpdownAxis_P3Speed;
LogUtil.info("点击【出料皮带线位置P3】,料盘高度【" + cmbSizeList.Text + "】 位置【" + position + "】速度【" + speed + "】");
equipBase.UpdownAxis.AbsMove(position, speed);
equipBase.UpdownAxis.AbsMove(null, position, speed);
}
}
private void btnMoveto_Click(object sender, EventArgs e)
......@@ -373,7 +373,7 @@ namespace OnlineStore.AssemblyLine
{
int speed = equipBean.Config.UpdownAxis_P2Speed;
LogUtil.info("点击【移栽位置】,料盘高度【" + cmbSizeList.Text + "】 位置【" + position + "】速度【" + speed + "】");
equipBase.UpdownAxis.AbsMove(position, speed);
equipBase.UpdownAxis.AbsMove(null, position, speed);
}
}
private void btnMoveToP1_Click(object sender, EventArgs e)
......@@ -383,7 +383,7 @@ namespace OnlineStore.AssemblyLine
{
int speed = equipBean.Config.UpdownAxis_P1Speed;
LogUtil.info("点击【P1点测试】, 位置【" + position + "】速度【" + speed + "】");
equipBase.UpdownAxis.AbsMove(position, speed);
equipBase.UpdownAxis.AbsMove(null, position, speed);
}
}
private void cmbSizeList_SelectedIndexChanged(object sender, EventArgs e)
......
......@@ -540,7 +540,7 @@ namespace OnlineStore.DeviceLibrary
msg += "runStatus:".PadRight(tLength, ' ') + runStatus + "\n";
msg += "lineStatus:".PadRight(tLength, ' ') + lineStatus + "\n";
msg += "MoveType:".PadRight(tLength, ' ') + MoveInfo.MoveType+"\n";
msg += "MoveStep:".PadRight(tLength, ' ') + MoveInfo.MoveStep + "\n";
msg += "MoveStep:".PadRight(tLength, ' ') + MoveInfo.SLog + "\n";
msg += "SMoveType:".PadRight(tLength, ' ') + SecondMoveInfo.MoveType + "\n";
msg += "SMoveStep:".PadRight(tLength, ' ') + SecondMoveInfo.MoveStep + "";
return msg;
......
......@@ -96,19 +96,25 @@ namespace OnlineStore.DeviceLibrary
}
private void StartReset()
{
{
if (OutStoreHeight > 0)
{
LogInfo("复位前,清理出库高度:" + OutStoreHeight);
}
OutStoreHeight = -1;
BatchAxisStopCheck();
ResetClearData();
lineStatus = LineStatus.ResetMove;
IOMove(IO_Type.SL_HddLed, IO_VALUE.HIGH);
MoveInfo.NextMoveStep(LineMoveStep.FR_00_LineRun);
LogInfo(MoveInfo.MoveType + ":" + MoveInfo.SLog + ":开始复位,放料顶升下降, 所有阻挡上升,链条先转动3秒钟");
LogInfo(MoveInfo.MoveType + ":" + MoveInfo.SLog + ":开始复位,放料顶升下降, 所有阻挡上升,链条先转动3秒钟或等待定位工位有料架");
MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(3000));
//CylinderMove(MoveInfo, IO_Type.SL_MoveCylinder_Down, IO_Type.SL_MoveCylinder_Up);
//CylinderMove(MoveInfo, IO_Type.SL_OutTopCylinder_Up, IO_Type.SL_OutTopCylinder_Down);
//阻挡上升
IOMove(IO_Type.SL_Entry_StopDown, IO_VALUE.LOW);
IOMove(IO_Type.SL_Buffer_StopDown, IO_VALUE.HIGH);
IOMove(IO_Type.SL_Buffer_StopDown, IO_VALUE.LOW);
IOMove(IO_Type.SL_Out_StopDown, IO_VALUE.LOW);
if (Config.SidesWayNum <= 0)
{
......@@ -126,7 +132,8 @@ namespace OnlineStore.DeviceLibrary
IOMove(IO_Type.SL_Line_Run, IO_VALUE.HIGH);
IOMove(IO_Type.SL_LocationSideWay_Run, IO_VALUE.HIGH);
IOMove(IO_Type.SL_OutSideWay_Run, IO_VALUE.HIGH);
MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.SL_Location_Check, IO_VALUE.HIGH));
MoveInfo.OneWaitCanEndStep = true;
isInPro = false;
}
//复位时,应该先提升伺服回原点,然后提升伺服下降到P2点,放开定位气缸,顶升气缸下降,提升伺服在上升到P1点。
......@@ -150,7 +157,9 @@ namespace OnlineStore.DeviceLibrary
IOMove(IO_Type.SL_Line_Run, IO_VALUE.LOW);
IOMove(IO_Type.SL_LocationSideWay_Run, IO_VALUE.LOW);
IOMove(IO_Type.SL_OutSideWay_Run, IO_VALUE.LOW);
MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.SL_Line_Run, IO_VALUE.LOW));
MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.SL_LocationSideWay_Run, IO_VALUE.LOW));
MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.SL_OutSideWay_Run, IO_VALUE.LOW));
CylinderMove(MoveInfo, IO_Type.SL_MoveCylinder_Down, IO_Type.SL_MoveCylinder_Up);
CylinderMove(MoveInfo, IO_Type.SL_OutTopCylinder_Up, IO_Type.SL_OutTopCylinder_Down);
if (Config.SidesWayNum <= 0)
......@@ -218,9 +227,18 @@ namespace OnlineStore.DeviceLibrary
case LineMoveStep.FR_08_MoveCylinder_Slack:
if (MoveCylineCanTakeOrGive())
{
MoveInfo.NextMoveStep(LineMoveStep.FR_09_MoveCylinder_Give);
LogInfo(MoveInfo.MoveType + ":" + MoveInfo.SLog + ": 上料横移气缸放料端SOL");
CylinderMove(MoveInfo, IO_Type.SL_MoveCylinder_Take, IO_Type.SL_MoveCylinder_Give);
if (Config.IsCanOut.Equals(1))
{
LogInfo(MoveInfo.MoveType + ":" + MoveInfo.SLog + ": 上料横移气缸取料端SOL");
CylinderMove(MoveInfo, IO_Type.SL_MoveCylinder_Give, IO_Type.SL_MoveCylinder_Take);
}
else
{
LogInfo(MoveInfo.MoveType + ":" + MoveInfo.SLog + ": 上料横移气缸放料端SOL");
CylinderMove(MoveInfo, IO_Type.SL_MoveCylinder_Take, IO_Type.SL_MoveCylinder_Give);
}
}
else
{
......@@ -271,12 +289,14 @@ namespace OnlineStore.DeviceLibrary
/// </summary>
public override void StopRun()
{
runStatus = LineRunStatus.Wait;
lineStatus = LineStatus.StoreOnline;
if (mainTimer != null)
{
mainTimer.Enabled = false;
}
StopMove();
runStatus = LineRunStatus.Wait;
}
......@@ -633,7 +653,7 @@ namespace OnlineStore.DeviceLibrary
ProcessShelfEnter = true;
//进料阻挡下降,缓冲阻挡上升
IOMove(IO_Type.SL_Entry_StopDown, IO_VALUE.HIGH);
IOMove(IO_Type.SL_Buffer_StopDown, IO_VALUE.LOW);
// IOMove(IO_Type.SL_Buffer_StopDown, IO_VALUE.LOW);
//转动线体
IOMove(IO_Type.SL_Line_Run, IO_VALUE.HIGH);
......
......@@ -10,7 +10,7 @@ namespace OnlineStore.DeviceLibrary
{
partial class FeedingEquip
{
protected override bool CheckWaitResult(LineMoveInfo moveInfo,WaitResultInfo wait)
protected override bool CheckWaitResult(LineMoveInfo moveInfo, WaitResultInfo wait)
{
if (wait.WaitType.Equals(WaitEnum.W101_BatchAxisMove))
{
......@@ -38,8 +38,9 @@ namespace OnlineStore.DeviceLibrary
}
return false;
}
#region 托盘检测
private InOutParam CheckParam = new InOutParam();
private void StartCheckFixture()
{
if (!LineManager.Line.CanProcessLine())
......@@ -51,12 +52,12 @@ namespace OnlineStore.DeviceLibrary
int num = TrayManager.GetTrayNum(DeviceID);
bool isTestNeed = (LineManager.Line.runStatus <= LineRunStatus.Wait);
bool isNeedTray = (num > 0) && (LineManager.Line.SwNoProcess(Config.SidesWayNum));
if (IOValue(IO_Type.SW_TrayCheck).Equals(IO_VALUE.HIGH) && (isTestNeed || isNeedTray))
{
if (IOValue(IO_Type.SW_TrayCheck).Equals(IO_VALUE.HIGH) && (isTestNeed || isNeedTray))
{
//判断是否是需要的托盘
if (NeedCurrTray())
if (CurrTrayIsNeed(true))
{
SecondMoveInfo.NewMove(LineMoveType.CheckFixture);
SecondMoveInfo.NewMove(LineMoveType.CheckFixture, CheckParam);
TrayManager.UpdateSWState(Config.SidesWayNum, 2);
CheckLog("检测到SW_TrayCheck:" + SecondMoveInfo.SLog + "横移顶升气缸上升 )");
SecondMoveInfo.NextMoveStep(LineMoveStep.MIO_06_TopCylinderUp);
......@@ -66,14 +67,14 @@ namespace OnlineStore.DeviceLibrary
{
preTrayNum = num;
TrayManager.UpdateSWState(Config.SidesWayNum, 1);
}
}
}
else if (Config.SidesWayNum .Equals(2)&& IOValue(IO_Type.SW_StopCheck).Equals(IO_VALUE.HIGH) && (isTestNeed || isNeedTray))
else if (Config.SidesWayNum.Equals(2) && IOValue(IO_Type.SW_StopCheck).Equals(IO_VALUE.HIGH) && (isTestNeed || isNeedTray))
{
//判断是否是需要的托盘
if (NeedCurrTray())
if (CurrTrayIsNeed(true))
{
SecondMoveInfo.NewMove(LineMoveType.CheckFixture);
SecondMoveInfo.NewMove(LineMoveType.CheckFixture, CheckParam);
TrayManager.UpdateSWState(Config.SidesWayNum, 2);
CheckLog("检测到SW_StopCheck:" + SecondMoveInfo.SLog + "阻挡气缸下降 ,最多等待1秒");
SecondMoveInfo.NextMoveStep(LineMoveStep.MIO_01_StopCylinder1Down);
......@@ -85,7 +86,7 @@ namespace OnlineStore.DeviceLibrary
{
preTrayNum = num;
TrayManager.UpdateSWState(Config.SidesWayNum, 1);
}
}
}
}
else
......@@ -167,33 +168,32 @@ namespace OnlineStore.DeviceLibrary
{
preTrayNum = currTrayNum;
currTrayNum = TrayManager.GetTrayNum(DeviceID);
if (Config.SidesWayNum <= 0)
//出料中,需要拦盘
if (CurrTrayIsNeed(true))
{
//出料中,需要拦盘
if (NeedCurrTray(true))
SecondMoveInfo.MoveParam = CheckParam;
SecondMoveInfo.NextMoveStep(LineMoveStep.MIO_06_TopCylinderUp);
if (Config.SidesWayNum <= 0)
{
SecondMoveInfo.NextMoveStep(LineMoveStep.MIO_05_WaitTime);
SecondMoveInfo.EndStepWait();
return;
CheckLog("托盘检测: " + SecondMoveInfo.SLog + " 顶升气缸上 升 )");
CylinderMove(SecondMoveInfo, IO_Type.FL_TopCylinder_Down, IO_Type.FL_TopCylinder_Up);
}
else
{
SecondMoveInfo.NextMoveStep(LineMoveStep.MO_15_WaitCanGo);
TrayInfo tray = TrayManager.GetTrayInfo(currTrayNum);
LogInfo(SecondMoveInfo.MoveNum + "***************上个托盘号【" + preTrayNum + "】,当前 【" + tray.ToStr() + "】没有出入料任务,放盘通过~");
CheckLog("托盘放行 " + SecondMoveInfo.SLog + " ,移栽2,需要判断是否可以放盘通过,最多等待10000)");
TrayManager.UpdateSWState(Config.SidesWayNum, 2);
CheckLog("托盘检测:" + SecondMoveInfo.SLog + " 需要此托盘,横移顶升气缸上 升 )");
CylinderMove(SecondMoveInfo, IO_Type.SW_TopCylinder_Down, IO_Type.SW_TopCylinder_Up);
}
}
else
{
//判断是否是需要的托盘
if (NeedCurrTray())
if (Config.SidesWayNum <= 0)
{
SecondMoveInfo.NewMove(LineMoveType.CheckFixture);
TrayManager.UpdateSWState(Config.SidesWayNum, 2);
CheckLog("托盘检测:" + SecondMoveInfo.SLog + " 需要此托盘,横移顶升气缸上 升 )");
SecondMoveInfo.NextMoveStep(LineMoveStep.MIO_06_TopCylinderUp);
CylinderMove(SecondMoveInfo, IO_Type.SW_TopCylinder_Down, IO_Type.SW_TopCylinder_Up);
SecondMoveInfo.NextMoveStep(LineMoveStep.MO_15_WaitCanGo);
TrayInfo tray = TrayManager.GetTrayInfo(currTrayNum);
LogInfo(SecondMoveInfo.MoveNum + "***************上个托盘号【" + preTrayNum + "】,当前 【" + tray.ToStr() + "】没有出入料任务,放盘通过~");
CheckLog("托盘放行 " + SecondMoveInfo.SLog + " ,移栽2,需要判断是否可以放盘通过,最多等待10000)");
}
else
{
......@@ -203,12 +203,7 @@ namespace OnlineStore.DeviceLibrary
}
}
}
else if (SecondMoveInfo.MoveStep.Equals(LineMoveStep.MIO_05_WaitTime))
{
SecondMoveInfo.NextMoveStep(LineMoveStep.MIO_06_TopCylinderUp);
CheckLog("托盘检测: " + SecondMoveInfo.SLog + " 顶升气缸上 升 )");
CylinderMove(SecondMoveInfo, IO_Type.FL_TopCylinder_Down, IO_Type.FL_TopCylinder_Up);
}
else if (SecondMoveInfo.MoveStep.Equals(LineMoveStep.MIO_06_TopCylinderUp))
{
SecondMoveInfo.NextMoveStep(LineMoveStep.MIO_07_LocationCylinderUp);
......@@ -229,13 +224,13 @@ namespace OnlineStore.DeviceLibrary
LogInfo(SecondMoveInfo.MoveNum + SecondMoveInfo.SLog + "*************** 托盘号【" + currTrayNum + "】 ,需要入料,移栽料盘");
SecondMoveInfo.EndStepWait();
}
else
else
{
SecondMoveInfo.NextMoveStep(LineMoveStep.MO_200_WaitInoutParam);
SecondMoveInfo.WaitList.Add(WaitResultInfo.WaitTime(300));
// SecondMoveInfo.WaitList.Add(WaitResultInfo.WaitFeedNoMove());
// SecondMoveInfo.WaitList.Add(WaitResultInfo.WaitFeedNoMove());
LogInfo(SecondMoveInfo.MoveNum + SecondMoveInfo.SLog + " ,托盘号【" + currTrayNum + "】需要出库,等待开始出库");
}
}
}
......@@ -275,6 +270,15 @@ namespace OnlineStore.DeviceLibrary
}
}
else if (SecondMoveInfo.MoveStep.Equals(LineMoveStep.MO_14_TopCylinder_Down))
{
SecondMoveInfo.NextMoveStep(LineMoveStep.MO_15_WaitCanGo);
if (Config.SidesWayNum > 0)
{
CheckLog("托盘放行 " + SecondMoveInfo.SLog + " ,等待托盘离开");
SecondMoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.SW_TrayCheck, IO_VALUE.LOW));
}
}
else if (SecondMoveInfo.MoveStep.Equals(LineMoveStep.MO_15_WaitCanGo))
{
if (Config.SidesWayNum > 0)
{
......@@ -286,16 +290,11 @@ namespace OnlineStore.DeviceLibrary
}
else
{
SecondMoveInfo.NextMoveStep(LineMoveStep.MO_15_WaitCanGo);
CheckLog("托盘放行 " + SecondMoveInfo.SLog + " ,移栽2,需要判断是否可以放盘通过,最多等待10000)");
SecondMoveInfo.NextMoveStep(LineMoveStep.MO_16_StopCylinder2_Down);
CheckLog("托盘放行 " + SecondMoveInfo.SLog + " ,阻挡气缸1-2下降)");
IOMove(IO_Type.FL_StopCylinder_Down2, IO_VALUE.HIGH);
SecondMoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.FL_StopCylinder_Down2, IO_VALUE.HIGH));
}
}
else if (SecondMoveInfo.MoveStep.Equals(LineMoveStep.MO_15_WaitCanGo))
{
SecondMoveInfo.NextMoveStep(LineMoveStep.MO_16_StopCylinder2_Down);
CheckLog("托盘放行 " + SecondMoveInfo.SLog + " ,阻挡气缸1-2下降)");
IOMove(IO_Type.FL_StopCylinder_Down2, IO_VALUE.HIGH);
SecondMoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.FL_StopCylinder_Down2, IO_VALUE.HIGH));
// SecondMoveInfo.EndStepWait();
}
else if (SecondMoveInfo.MoveStep.Equals(LineMoveStep.MO_16_StopCylinder2_Down))
......@@ -321,12 +320,13 @@ namespace OnlineStore.DeviceLibrary
}
#endregion
else if (SecondMoveInfo.MoveStep.Equals(LineMoveStep.MO_200_WaitInoutParam))
{
if (MoveInfo.MoveType.Equals(LineMoveType.None))
{
{
StartTrayOut(SecondMoveInfo.MoveParam);
SecondMoveInfo.NextMoveStep(LineMoveStep.MO_201_WaitOutEnd);
}
else
{
......@@ -414,19 +414,19 @@ namespace OnlineStore.DeviceLibrary
else if (IOValue(IO_Type.SL_Stop_Check).Equals(IO_VALUE.HIGH))
{
MoveInfo.NextMoveStep(LineMoveStep.FI_03_LineStart);
InLog("入料检测: " + MoveInfo.SLog + " 阻挡工位检测有料架,进料阻挡上升,缓冲阻挡下降,流水线转动 1000");
IOMove(IO_Type.SL_Entry_StopDown, IO_VALUE.HIGH);//进料阻挡上升
InLog("入料检测: " + MoveInfo.SLog + " 阻挡工位检测有料架,进料阻挡下降,缓冲阻挡下降,流水线转动 1000");
IOMove(IO_Type.SL_Entry_StopDown, IO_VALUE.HIGH);//进料阻挡下降
IOMove(IO_Type.SL_Buffer_StopDown, IO_VALUE.LOW);//缓冲阻挡下降
IOMove(IO_Type.SL_Line_Run, IO_VALUE.HIGH);
//等待指定时间
MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(1000));
MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.SL_Location_Check, IO_VALUE.HIGH));
}else if (IOValue(IO_Type.SL_Entry_Check).Equals(IO_VALUE.HIGH))
} else if (IOValue(IO_Type.SL_Entry_Check).Equals(IO_VALUE.HIGH))
{
MoveInfo.NextMoveStep(LineMoveStep.FI_03_LineStart);
InLog("入料检测: " + MoveInfo.SLog + " 进料口检测有料架,进料阻挡下降,缓冲阻挡上升,流水线转动 1000");
InLog("入料检测: " + MoveInfo.SLog + " 进料口检测有料架,进料阻挡上升,缓冲阻挡上升,流水线转动 1000");
IOMove(IO_Type.SL_Entry_StopDown, IO_VALUE.LOW);//进料阻挡上升
IOMove(IO_Type.SL_Buffer_StopDown, IO_VALUE.HIGH);//缓冲阻挡下降
IOMove(IO_Type.SL_Buffer_StopDown, IO_VALUE.HIGH);//缓冲阻挡上升
IOMove(IO_Type.SL_Line_Run, IO_VALUE.HIGH);
//等待指定时间
MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(1000));
......@@ -609,7 +609,7 @@ namespace OnlineStore.DeviceLibrary
{
InLog("料盘移栽" + MoveInfo.SLog + ":记录高度尺寸 高度【" + LastHeight + "】宽度【" + LastWidth + "】,已经没有料盘,提升轴开始回下降待机点P2");
MoveInfo.ShelfNoTray = true;
BatchAxis.AbsMove(Config.BatchAxisP2, Config.BatchAxis_P2Speed);
BatchAxis.AbsMove(MoveInfo, Config.BatchAxisP2, Config.BatchAxis_P2Speed);
}
else
{
......@@ -650,7 +650,7 @@ namespace OnlineStore.DeviceLibrary
TimeSpan span = DateTime.Now - MoveInfo.LastSetpTime;
if (span.TotalSeconds > 180)
{
WarnMsg = MoveInfo.Name + "[" + MoveInfo.MoveType + "][" + MoveInfo.MoveStep + "]等待空托盘到达超时[" + Math.Round(span.TotalSeconds, 1) + "]秒";
WarnMsg = MoveInfo.Name + "[" + MoveInfo.MoveType + "][" + MoveInfo.SLog + "]等待空托盘到达超时[" + Math.Round(span.TotalSeconds, 1) + "]秒";
LogUtil.error(WarnMsg, DeviceID + 12);
Alarm(LineAlarmType.IoSingleTimeOut);
}
......@@ -687,14 +687,14 @@ namespace OnlineStore.DeviceLibrary
TrayManager.UpdateTrayInfo(currTrayNum, true, 1, code, "", LastHeight, LastWidth);
if (code.Equals(""))
{
TrayManager.UpdateInStoreNG(currTrayNum, true,"扫码失败");
TrayManager.UpdateInStoreNG(currTrayNum, true, "扫码失败");
}
//从服务器获取库位号
string result = StoreServerManager.CodeReceived(Name, currTrayNum, LastCodeList, LastHeight, LastWidth);
if (!result.Equals(""))
{
TrayManager.UpdateInStoreNG(currTrayNum, true,result);
LogUtil.error(Name+"托盘【"+currTrayNum+"】"+ result);
TrayManager.UpdateInStoreNG(currTrayNum, true, result);
LogUtil.error(Name + "托盘【" + currTrayNum + "】" + result);
}
});
......@@ -819,7 +819,7 @@ namespace OnlineStore.DeviceLibrary
StartMovePosition = BatchAxis.GetAclPosition();
MoveInfo.WaitList.Add(WaitResultInfo.WaitBatchAxis(Config.Batch_Axis, Config.BatchAxisP3, Config.BatchAxis_P3Speed));
Config.Batch_Axis.TargetPosition = Config.BatchAxisP3;
BatchAxis.AbsMove( Config.BatchAxisP3, Config.BatchAxis_P3Speed);
BatchAxis.AbsMove( MoveInfo, Config.BatchAxisP3, Config.BatchAxis_P3Speed);
//开始检测信号
BatchAxisStartCheck();
}
......@@ -882,67 +882,75 @@ namespace OnlineStore.DeviceLibrary
/// 是否需要拦截当前托盘进行处理
/// </summary>
/// <returns></returns>
internal bool NeedCurrTray(bool checkAndMove = false)
internal bool CurrTrayIsNeed(bool NeedSaveParam )
{
if (IsDebug && runStatus <= LineRunStatus.Wait)
{
return false;
}
int trayNum = TrayManager.GetTrayNum(Config.Id);
TrayInfo info = TrayManager.GetTrayInfo(trayNum);
InOutParam param = new InOutParam(trayNum, info.WareCode, info.PosId, info.PlateH, info.PlateW);
//是出料的模块
if (Config.IsCanOut.Equals(1))
try
{
//此托盘是紧急出料盘,需要通过料架出库
bool debugNeed = IsDebug && runStatus >= LineRunStatus.Runing;
if (info.PosId.Equals(""))
if (IsDebug && runStatus <= LineRunStatus.Wait)
{
param = new InOutParam(trayNum, "紧急出料测试", "1#AC1_3_2", 12, 7);
return false;
}
bool isJinji = info.EmergencyOut && info.IsFull && runStatus >= LineRunStatus.Runing;
int trayNum = TrayManager.GetTrayNum(Config.Id);
if (debugNeed || isJinji )
{
if (checkAndMove)
{
SecondMoveInfo.MoveParam = param;
}
//判断是否有料架,是否可以出库
if (IOValue(IO_Type.SL_Location_Check).Equals(IO_VALUE.LOW))
{
LogUtil.error(Name+" 【" + info.ToStr() + "】需要出库,定位工位无料架,暂不处理",DeviceID+16);
}
else if (OutStoreHeight < 0)
TrayInfo info = TrayManager.GetTrayInfo(trayNum);
InOutParam param = new InOutParam(trayNum, info.WareCode, info.PosId, info.PlateH, info.PlateW);
//是出料的模块
if (Config.IsCanOut.Equals(1))
{
//此托盘是紧急出料盘,需要通过料架出库
bool debugNeed = IsDebug && runStatus >= LineRunStatus.Runing;
if (info.PosId.Equals(""))
{
LogUtil.error(Name + " 【" + info.ToStr() + "】需要出库,料架未准备好,暂不处理", DeviceID + 17);
param = new InOutParam(trayNum, "紧急出料测试", "1#AC1_3_2", 12, 7);
}
else
bool isJinji = info.EmergencyOut && info.IsFull && runStatus >= LineRunStatus.Runing;
if (debugNeed || isJinji)
{
return true;
//判断是否有料架,是否可以出库
if (IOValue(IO_Type.SL_Location_Check).Equals(IO_VALUE.LOW))
{
LogUtil.error(Name + " 【" + info.ToStr() + "】需要出库,定位工位无料架,暂不处理", DeviceID + 16);
}
else if (OutStoreHeight < 0)
{
LogUtil.error(Name + " 【" + info.ToStr() + "】需要出库,料架未准备好,暂不处理", DeviceID + 17);
}
else
{
if (NeedSaveParam)
{
LogInfo(" 【" + info.ToStr() + "】需要出库,参数信息:" + param.ToStr());
CheckParam = param;
}
return true;
}
}
}
}
else
{
bool trayCanUse = LineManager.Line.runStatus <= LineRunStatus.Wait || (!info.IsFull);
if (trayCanUse && runStatus.Equals(LineRunStatus.Busy) && MoveInfo.MoveType.Equals(LineMoveType.InStore))
}
else
{
//入料执行中, 且需要空托盘
if (MoveInfo.MoveStep >= LineMoveStep.FI_11_MoveCylinder_Up && MoveInfo.MoveStep <= LineMoveStep.FI_20_WaitTray)
bool trayCanUse = LineManager.Line.runStatus <= LineRunStatus.Wait || (!info.IsFull);
if (trayCanUse && runStatus.Equals(LineRunStatus.Busy) && MoveInfo.MoveType.Equals(LineMoveType.InStore))
{
if (checkAndMove)
//入料执行中, 且需要空托盘
if (MoveInfo.MoveStep >= LineMoveStep.FI_11_MoveCylinder_Up && MoveInfo.MoveStep <= LineMoveStep.FI_20_WaitTray)
{
SecondMoveInfo.MoveParam = param;
if (NeedSaveParam)
{
CheckParam = param;
LogUtil.info(Name + "拦截到空托盘【" + trayNum + "】,入料执行中,需要空托盘");
}
return true;
}
LogUtil.info(Name + "拦截到空托盘【" + trayNum + "】,入料执行中,需要空托盘");
return true;
}
}
}
catch (Exception ex)
{
LogUtil.error(Name + "CurrTrayIsNeed出错:" + ex.StackTrace);
}
return false;
}
......
......@@ -14,17 +14,28 @@ namespace OnlineStore.DeviceLibrary
private int OutStoreHeight = -1;
private void StartTrayOut(InOutParam outParam)
private bool StartTrayOut(InOutParam outParam)
{
if(outParam == null || outParam.PosId == null || outParam.PosId.Equals(""))
{
LogUtil.error(Name + "出库失败,参数不完整:" ) ;
LogUtil.error(outParam.ToStr());
return false ;
}
runStatus = LineRunStatus.Busy;
lineStatus = LineStatus.OutStoreExecute;
MoveInfo.NewMove(LineMoveType.OutStore,outParam);
//可以开始出库啦
MoveInfo.NextMoveStep(LineMoveStep.FO_211_AxisDownMove);
OutLog("出库移栽 " + MoveInfo.SLog + " :提升伺服下降指定的高度,升降轴回原点");
int targetPosition = Config.BatchAxisP3 + outParam.PlateH * Config.Height_ChangeValue;
BatchAxis.AbsMove(MoveInfo, targetPosition, Config.BatchAxis_TargetSpeed);
UpdownAxis.AbsMove(MoveInfo, Config.UpDownAxisP1, Config.UpdownAxis_P1Speed);
int targetPosition = BatchAxis.GetAclPosition() - outParam.PlateH * Config.Height_ChangeValue;
if (targetPosition < Config.BatchAxisP2)
{
targetPosition = Config.BatchAxisP2;
}
BatchAxis.AbsMove(MoveInfo, targetPosition, Config.BatchAxis_P2Speed);
return true;
//UpdownAxis.AbsMove(MoveInfo, Config.UpDownAxisP1, Config.UpdownAxis_P1Speed);
}
public void StartOutStoreP()
{
......@@ -61,9 +72,9 @@ namespace OnlineStore.DeviceLibrary
}
else
{
MoveInfo.NextMoveStep(LineMoveStep.FO_01_TrayLocation_After);
TrayLCylinderAfter(MoveInfo);
OutLog("准备出库料架, "+MoveInfo.SLog+" :升降盘定位气缸后退");
MoveInfo.NextMoveStep(LineMoveStep.FO_00_BatchAxisToP2);
BatchAxis.AbsMove(MoveInfo, Config.BatchAxisP2, Config.BatchAxis_P2Speed);
OutLog("准备出库料架, " + MoveInfo.SLog + " :提升伺服先回到P2");
}
return true;
}
......@@ -71,6 +82,7 @@ namespace OnlineStore.DeviceLibrary
{
//定位工位有料架,等待1秒后再次检测
MoveInfo.NextMoveStep(LineMoveStep.FO_04_WaitTime);
IOMove(IO_Type.SL_Buffer_StopDown, IO_VALUE.LOW);
OutLog("准备出库料架 " + MoveInfo.SLog + "定位工位检测到料架: 等待1秒再次检测");
MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(1000));
}
......@@ -87,9 +99,9 @@ namespace OnlineStore.DeviceLibrary
else if (IOValue(IO_Type.SL_Stop_Check).Equals(IO_VALUE.HIGH))
{
MoveInfo.NextMoveStep(LineMoveStep.FI_03_LineStart);
OutLog("准备出库料架: " + MoveInfo.SLog + " 阻挡工位检测有料架,进料阻挡下降,缓冲阻挡上升,流水线转动 1000");
IOMove(IO_Type.SL_Entry_StopDown, IO_VALUE.HIGH);//进料阻挡下降
IOMove(IO_Type.SL_Buffer_StopDown, IO_VALUE.LOW);//缓冲阻挡上升
OutLog("准备出库料架: " + MoveInfo.SLog + " 阻挡工位检测有料架,进料阻挡下降,缓冲阻挡下降,流水线转动 1000");
IOMove(IO_Type.SL_Entry_StopDown, IO_VALUE.HIGH);
IOMove(IO_Type.SL_Buffer_StopDown, IO_VALUE.LOW);
IOMove(IO_Type.SL_Line_Run, IO_VALUE.HIGH);
//等待指定时间
MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(1000));
......@@ -98,7 +110,7 @@ namespace OnlineStore.DeviceLibrary
else if (IOValue(IO_Type.SL_Entry_Check).Equals(IO_VALUE.HIGH))
{
MoveInfo.NextMoveStep(LineMoveStep.FI_03_LineStart);
OutLog("准备出库料架: " + MoveInfo.SLog + " 进料口检测有料架,进料阻挡上升,缓冲阻挡下降,流水线转动 1000");
OutLog("准备出库料架: " + MoveInfo.SLog + " 进料口检测有料架,进料阻挡上升,缓冲阻挡上升,流水线转动 1000");
IOMove(IO_Type.SL_Entry_StopDown, IO_VALUE.LOW);//进料阻挡上升
IOMove(IO_Type.SL_Buffer_StopDown, IO_VALUE.HIGH);//缓冲阻挡下降
IOMove(IO_Type.SL_Line_Run, IO_VALUE.HIGH);
......@@ -123,11 +135,11 @@ namespace OnlineStore.DeviceLibrary
{
return;
}
if (MoveInfo.MoveStep.Equals(LineMoveStep.Wait))
if (MoveInfo.MoveStep.Equals(LineMoveStep.FO_00_BatchAxisToP2))
{
MoveInfo.NextMoveStep(LineMoveStep.FO_01_TrayLocation_After);
TrayLCylinderAfter(MoveInfo);
OutLog("准备出库料架" + MoveInfo.SLog + ":升降盘定位气缸后退");
OutLog("准备出库料架, " + MoveInfo.SLog + " :升降盘定位气缸后退");
}
else if (MoveInfo.MoveStep.Equals(LineMoveStep.FO_01_TrayLocation_After))
{
......@@ -150,7 +162,7 @@ namespace OnlineStore.DeviceLibrary
{
//定位工位有料架,直接开始入料
MoveInfo.NextMoveStep(LineMoveStep.FO_05_LocationCylinder_Up);
OutLog("定位工位检测到料架: " + MoveInfo.SLog + " 缓冲阻挡上升, 定位气缸上升");
OutLog("定位工位检测到料架: " + MoveInfo.SLog + " 缓冲阻挡下降, 定位气缸上升");
IOMove(IO_Type.SL_Buffer_StopDown, IO_VALUE.LOW);//缓冲阻挡下降
CylinderMove(MoveInfo, IO_Type.SL_LocationCylinder_Down, IO_Type.SW4_LocationCylinder_Up);
}
......@@ -158,6 +170,7 @@ namespace OnlineStore.DeviceLibrary
{
MoveInfo.EndMove();
runStatus = LineRunStatus.Runing;
lineStatus = LineStatus.StoreOnline;
OutLog(" 未检测到料架,料架处理结束");
}
}
......@@ -180,7 +193,7 @@ namespace OnlineStore.DeviceLibrary
MoveInfo.NextMoveStep(LineMoveStep.FO_08_AxisUpMove);
OutLog("准备出库料架 " + MoveInfo.SLog + " :上料轴开始慢速上升到P3点,等待检测到料盘");
BatchAxisToP3();
}
}
else if (MoveInfo.MoveStep.Equals(LineMoveStep.FO_08_AxisUpMove))
{
......@@ -191,6 +204,7 @@ namespace OnlineStore.DeviceLibrary
//如果再出库中直接出库
MoveInfo.EndMove();
runStatus = LineRunStatus.Runing;
lineStatus = LineStatus.StoreOnline;
// MoveInfo.NextMoveStep(LineMoveStep.FO_39_OutLineRun);
OutLog("准备出库料架完成");
// FO_11_AxisDownMove();
......@@ -214,18 +228,15 @@ namespace OnlineStore.DeviceLibrary
MoveInfo.CanWhileCount = 0;
MoveInfo.WaitList.Add(WaitResultInfo.WaitBatchAxis(Config.Batch_Axis, tp, Config.BatchAxis_P3Speed));
Config.Batch_Axis.TargetPosition = tp;
BatchAxis.AbsMove(tp, Config.BatchAxis_P3Speed);
BatchAxis.AbsMove(MoveInfo, tp, Config.BatchAxis_P3Speed);
//开始检测信号
BatchAxisStartCheck(IO_Type.SL_AxisLocationCheck, IO_VALUE.LOW);
}
}
}
}
else if (MoveInfo.MoveStep >= LineMoveStep.FO_211_AxisDownMove && MoveInfo.MoveStep <= LineMoveStep.FO_33_BatchAxisToP1)
{
TrayOutProcess();
}
else if (MoveInfo.MoveStep.Equals(LineMoveStep.FO_31_BatchAxisToP2))
{
MoveInfo.NextMoveStep(LineMoveStep.FO_32_TrayLocationCylinder_After);
......@@ -245,7 +256,7 @@ namespace OnlineStore.DeviceLibrary
OutLog("出料完成 " + MoveInfo.SLog + ",出口顶升气缸上升,出料缓冲阻挡上升");
CylinderMove(MoveInfo, IO_Type.SL_OutTopCylinder_Down, IO_Type.SL_OutTopCylinder_Up);
IOMove(IO_Type.SL_Out_StopDown, IO_VALUE.LOW);
}
else if (MoveInfo.MoveStep.Equals(LineMoveStep.FO_34_OutTopCylinder_Up))
{
......@@ -259,10 +270,10 @@ namespace OnlineStore.DeviceLibrary
}
else if (MoveInfo.MoveStep.Equals(LineMoveStep.FO_35_SideWayLineRun))
{
MoveInfo.NextMoveStep(LineMoveStep.FO_36_WaitShelfGo);
MoveInfo.NextMoveStep(LineMoveStep.FO_36_WaitShelfGo);
OutLog("出料完成" + MoveInfo.SLog + ", 线体横移电机运转,等待料架到达出口");
IOMove(IO_Type.SL_LocationSideWay_Run, IO_VALUE.HIGH);
IOMove(IO_Type.SL_OutSideWay_Run, IO_VALUE.HIGH);
IOMove(IO_Type.SL_OutSideWay_Run, IO_VALUE.HIGH);
MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.SL_Out_Check, IO_VALUE.HIGH));
}
else if (MoveInfo.MoveStep.Equals(LineMoveStep.FO_36_WaitShelfGo))
......@@ -274,12 +285,12 @@ namespace OnlineStore.DeviceLibrary
IOMove(IO_Type.SL_OutSideWay_Run, IO_VALUE.LOW);
MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(300));
}
else if (MoveInfo.MoveStep.Equals(LineMoveStep.FO_37_LineStop))
{
MoveInfo.NextMoveStep(LineMoveStep.FO_38_TopCylinderDown);
OutLog("出料完成 " + MoveInfo.SLog + ", 料架到达出口,出口顶升下降 , ");
CylinderMove(MoveInfo, IO_Type.SL_OutTopCylinder_Up, IO_Type.SL_OutTopCylinder_Down);
CylinderMove(MoveInfo, IO_Type.SL_OutTopCylinder_Up, IO_Type.SL_OutTopCylinder_Down);
MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(300));
}
else if (MoveInfo.MoveStep.Equals(LineMoveStep.FO_38_TopCylinderDown))
......@@ -290,23 +301,14 @@ namespace OnlineStore.DeviceLibrary
OutLog("出料完成 " + MoveInfo.SLog + ", 出口线体运转,料架到达出口处, 通知AGV取空料架, 出料结束");
AgvClient.ReadyEmpty(Config.AgvOutName);
}
//else if (MoveInfo.MoveStep.Equals(LineMoveStep.FO_40_OutLineRun))
//{
// MoveInfo.NextMoveStep(LineMoveStep.FO_40_OutLineRun);
// OutLog("出料完成 " + MoveInfo.SLog + ", AGV到达,继续转动出口线体,送走出料料架, ");
//}
//else if (MoveInfo.MoveStep.Equals(LineMoveStep.FO_40_OutLineRun))
//{
// MoveInfo.NextMoveStep(LineMoveStep.FO_41_OutLineRun);
// OutLog("上料完成 " + MoveInfo.SLog + ", 料架送出, ");
//}
//else if (MoveInfo.MoveStep.Equals(LineMoveStep.FO_41_OutLineRun))
//{
// MoveInfo.EndMove();
// runStatus = LineRunStatus.Runing;
// lastOutParam = null;
// LogUtil.info("空料架已送出,出料结束");
//}
else if (MoveInfo.MoveStep >= LineMoveStep.FO_211_AxisDownMove && MoveInfo.MoveStep < LineMoveStep.FO_31_BatchAxisToP2)
{
TrayOutProcess();
}
else
{
LogUtil.error(Name + " " + MoveInfo.MoveType + MoveInfo.SLog + "未找到相关处理", 19);
}
}
private void TrayOutProcess()
......@@ -316,74 +318,72 @@ namespace OnlineStore.DeviceLibrary
if (MoveCylineCanTakeOrGive())
{
MoveInfo.NextMoveStep(LineMoveStep.FO_212_MoveCylinder_Take);
OutLog("紧急出料移栽" + MoveInfo.MoveStep + ":上料横移机构取料端");
OutLog("紧急出料移栽" + MoveInfo.SLog + ":上料横移机构取料端");
CylinderMove(MoveInfo, IO_Type.SL_MoveCylinder_Give, IO_Type.SL_MoveCylinder_Take);
}
else
{
MoveInfo.NextMoveStep(LineMoveStep.FO_211_AxisDownMove);
OutLog("紧急出料移栽" + MoveInfo.MoveStep + ":上料横移机构取料端 前先上升横移气缸");
OutLog("紧急出料移栽" + MoveInfo.SLog + ":上料横移机构取料端 前先上升横移气缸");
CylinderMove(MoveInfo, IO_Type.SL_MoveCylinder_Down, IO_Type.SL_MoveCylinder_Up);
}
}
else if (MoveInfo.MoveStep.Equals(LineMoveStep.FO_212_MoveCylinder_Take))
{
MoveInfo.NextMoveStep(LineMoveStep.FO_213_MoveCylinder_Down);
OutLog("紧急出料移栽" + MoveInfo.MoveStep + ":上料横移机构下降");
OutLog("紧急出料移栽" + MoveInfo.SLog + ":上料横移机构下降");
CylinderMove(MoveInfo, IO_Type.SL_MoveCylinder_Up, IO_Type.SL_MoveCylinder_Down);
}
else if (MoveInfo.MoveStep.Equals(LineMoveStep.FO_213_MoveCylinder_Down))
{
MoveInfo.NextMoveStep(LineMoveStep.FO_214_UpdownAxisToP2);
int targetP = Config.GetUpdownPositionP2(MoveInfo.MoveParam.PlateH);
OutLog("紧急出料移栽" + MoveInfo.MoveStep + ":升降伺服下降到指定位置" + targetP);
OutLog("紧急出料移栽" + MoveInfo.SLog + ":升降伺服下降到P2:" + targetP);
UpdownAxis.AbsMove(MoveInfo, targetP, Config.UpdownAxis_P2Speed);
}
else if (MoveInfo.MoveStep.Equals(LineMoveStep.FO_214_UpdownAxisToP2))
{
MoveInfo.NextMoveStep(LineMoveStep.FO_215_MoveCylinder_Tighten);
OutLog("紧急出料移栽" + MoveInfo.MoveStep + ":上料气缸夹紧");
OutLog("紧急出料移栽" + MoveInfo.SLog + ":上料气缸夹紧");
CylinderMove(MoveInfo, IO_Type.SL_MoveCylinder_Slack, IO_Type.SL_MoveCylinder_Tighten);
}
else if (MoveInfo.MoveStep.Equals(LineMoveStep.FO_215_MoveCylinder_Tighten))
{
MoveInfo.NextMoveStep(LineMoveStep.FO_216_UpdownAxisToP1);
OutLog("紧急出料移栽" + MoveInfo.MoveStep + ":升降伺服到P1");
OutLog("紧急出料移栽" + MoveInfo.SLog + ":升降伺服到P1");
UpdownAxis.AbsMove(MoveInfo, Config.UpDownAxisP1, Config.UpdownAxis_P1Speed);
}
else if (MoveInfo.MoveStep.Equals(LineMoveStep.FO_216_UpdownAxisToP1))
{
MoveInfo.NextMoveStep(LineMoveStep.FO_217_MoveCylinder_Up);
OutLog("紧急出料移栽" + MoveInfo.MoveStep + ":上料横移机构上升,更新【" + currTrayNum + "】为空托盘");
OutLog("紧急出料移栽" + MoveInfo.SLog + ":上料横移机构上升,更新【" + currTrayNum + "】为空托盘");
CylinderMove(MoveInfo, IO_Type.SL_MoveCylinder_Down, IO_Type.SL_MoveCylinder_Up);
//更新此托盘为空托盘
TrayManager.UpdateTrayInfo(currTrayNum, false);
SecondMoveInfo.NextMoveStep(LineMoveStep.MO_13_LoactionCylinder_Down);
SOutLog("紧急出料移栽" + SecondMoveInfo.MoveStep + " 托盘开始放行,定位气缸下降");
CylinderMove(MoveInfo, IO_Type.SW_LocationCylinder_Up, IO_Type.SW_LocationCylinder_Down);
SecondMoveInfo.NextMoveStep(LineMoveStep.MO_12_MoveOk);
}
else if (MoveInfo.MoveStep.Equals(LineMoveStep.FO_217_MoveCylinder_Up))
{
if (MoveCylineCanTakeOrGive())
{
MoveInfo.NextMoveStep(LineMoveStep.FO_218_MoveCylinder_Give);
OutLog("紧急出料移栽" + MoveInfo.MoveStep + ":上料横移机构到放料端");
OutLog("紧急出料移栽" + MoveInfo.SLog + ":上料横移机构到放料端");
CylinderMove(MoveInfo, IO_Type.SL_MoveCylinder_Take, IO_Type.SL_MoveCylinder_Give);
}
else
{
MoveInfo.NextMoveStep(LineMoveStep.FO_217_MoveCylinder_Up);
OutLog("紧急出料移栽" + MoveInfo.MoveStep + ":上料横移机构到放料端前先上升横移气缸");
OutLog("紧急出料移栽" + MoveInfo.SLog + ":上料横移机构到放料端前先上升横移气缸");
CylinderMove(MoveInfo, IO_Type.SL_MoveCylinder_Down, IO_Type.SL_MoveCylinder_Up);
}
}
else if (SecondMoveInfo.MoveStep.Equals(LineMoveStep.FO_218_MoveCylinder_Give))
else if (MoveInfo.MoveStep.Equals(LineMoveStep.FO_218_MoveCylinder_Give))
{
MoveInfo.NextMoveStep(LineMoveStep.FO_219_UpdownAxisToP3);
OutLog("紧急出料移栽 " + MoveInfo.SLog + ":移栽伺服到P3");
UpdownAxis.AbsMove(Config.UpDownAxisP3, Config.UpdownAxis_P3Speed);
UpdownAxis.AbsMove(MoveInfo, Config.UpDownAxisP3, Config.UpdownAxis_P3Speed);
}
else if (MoveInfo.MoveStep.Equals(LineMoveStep.FO_219_UpdownAxisToP3))
{
......@@ -395,7 +395,7 @@ namespace OnlineStore.DeviceLibrary
{
MoveInfo.NextMoveStep(LineMoveStep.FO_221_UpdownAxisToP1);
OutLog("紧急出料移栽 " + MoveInfo.SLog + ":移栽伺服上升到待机点P1");
UpdownAxis.AbsMove(Config.UpDownAxisP1, Config.UpdownAxis_P1Speed);
UpdownAxis.AbsMove(MoveInfo, Config.UpDownAxisP1, Config.UpdownAxis_P1Speed);
}
else if (MoveInfo.MoveStep.Equals(LineMoveStep.FO_221_UpdownAxisToP1))
{
......
......@@ -930,7 +930,7 @@ namespace OnlineStore.DeviceLibrary
msg += "runStatus: "+ runStatus + "\n";
msg += "lineStatus: "+ lineStatus + "\n";
msg += "MoveType: " + MoveInfo.MoveType + "\n";
msg += "MoveStep: " + MoveInfo.MoveStep + "\n";
msg += "MoveStep: " + MoveInfo.SLog + "\n";
msg += "SW41_Move: "+ SW41_MoveInfo.MoveType + " "+ SW41_MoveInfo.MoveStep + "\n";
msg += "SW23_Move: " + SW23_MoveInfo.MoveType + " " + SW23_MoveInfo.MoveStep + "\n";
return msg;
......
......@@ -110,7 +110,7 @@ namespace OnlineStore.DeviceLibrary
}
catch (Exception ex)
{
LogUtil.error("InOutTimerProcess出错:" + ex.ToString());
LogUtil.error("InOutTimerProcess出错:" + ex.StackTrace);
}
isInprocess = false;
......@@ -663,7 +663,7 @@ namespace OnlineStore.DeviceLibrary
FeedingEquip equip = FeedingEquipMap[deviceId];
if (equip.runStatus >= LineRunStatus.Runing)
{
if (equip.NeedCurrTray())
if (equip.CurrTrayIsNeed(false ))
{
return true;
}
......
......@@ -114,10 +114,17 @@ namespace OnlineStore.DeviceLibrary
/// 松下伺服电机运动
/// </summary>
public void AbsMove(LineMoveInfo MoveInfo, int targetPosition, int targetSpeed)
{
MoveInfo.WaitList.Add(WaitResultInfo.WaitAxis(Config, targetPosition, targetSpeed));
Config.TargetPosition = targetPosition;
ACServerManager.AbsMove(Config.DeviceName, Config.GetAxisValue(), targetPosition, targetSpeed);
{
if (MoveInfo == null)
{
AbsMove(targetPosition, targetSpeed);
}
else
{
MoveInfo.WaitList.Add(WaitResultInfo.WaitAxis(Config, targetPosition, targetSpeed));
Config.TargetPosition = targetPosition;
ACServerManager.AbsMove(Config.DeviceName, Config.GetAxisValue(), targetPosition, targetSpeed);
}
}
/// <summary>
......@@ -143,12 +150,13 @@ namespace OnlineStore.DeviceLibrary
{
LogUtil.error(axis.DisplayStr + "目标位置[" + targetPosition + "]当前位置[" + outCount +
"],误差过大,重新开始运动,剩余[" + MoveInfo.CanWhileCount + "]次");
ACServerManager.SuddenStop(axis.DeviceName, axis.GetAxisValue());
ACServerManager.AbsMove(axis.DeviceName, axis.GetAxisValue(), targetPosition, targetSpeed);
MoveInfo.CanWhileCount--;
}
else
{
msg = " storeMoveStep=" + MoveInfo.MoveStep + axis.DisplayStr + "目标位置[" + targetPosition + "]当前位置[" + outCount
msg = " storeMoveStep=" + MoveInfo.SLog + axis.DisplayStr + "目标位置[" + targetPosition + "]当前位置[" + outCount
+ "],误差过大,需要报警";
LogUtil.error(msg,1034);
}
......@@ -177,7 +185,7 @@ namespace OnlineStore.DeviceLibrary
}
else
{
msg = " storeMoveStep=" + MoveInfo.MoveStep + axis.DisplayStr + "收到原点完成信号,当前位置[" + outCount + "],误差过大,需要报警";
msg = " storeMoveStep=" + MoveInfo.SLog + axis.DisplayStr + "收到原点完成信号,当前位置[" + outCount + "],误差过大,需要报警";
LogUtil.error(msg);
}
}
......@@ -192,7 +200,7 @@ namespace OnlineStore.DeviceLibrary
/// <summary>
/// 绝对运动至点,不等待结果
/// </summary>
public void AbsMove(int targetPos, double targetSpeed)
private void AbsMove(int targetPos, double targetSpeed)
{
if (targetPos.Equals(-1))
{
......
......@@ -43,24 +43,24 @@ namespace OnlineStore.DeviceLibrary
/// <summary>
/// 物品二维码信息
/// </summary>
public string WareCode { get; set; }
public string WareCode = "";
/// <summary>
/// 位置坐标名(对应配置表的位置)
/// </summary>
public string PosId { get; set; }
public string PosId = "";
/// <summary>
/// 托盘号
/// </summary>
public int TrayNumber { get; set; }
public int TrayNumber = -1;
/// <summary>
/// 料盘高度
/// </summary>
public int PlateH { get; set; }
public int PlateH = 0;
/// <summary>
/// 料盘宽度
/// </summary>
public int PlateW { get; set; }
public int PlateW = 0;
public string ToStr()
{
......
......@@ -384,7 +384,10 @@ namespace OnlineStore.DeviceLibrary
/// 等待当前的出入库结束
/// </summary>
MO_200_WaitInoutParam=3200,
/// <summary>
/// 等待紧急出料结束
/// </summary>
MO_201_WaitOutEnd=3201,
#endregion
......@@ -706,8 +709,10 @@ namespace OnlineStore.DeviceLibrary
#endregion
#region 入料装置出料处理,12000开始
/// <summary>
/// 出库流程:提升伺服到P2
/// </summary>
FO_00_BatchAxisToP2=12000,
/// <summary>
/// 出料流程:升降盘定位气缸后退
/// </summary>
......
......@@ -49,32 +49,32 @@ namespace OnlineStore.DeviceLibrary
/// <summary>
/// 夹具编码值(1-32?)
/// </summary>
public int TrayCode { get; set; }
public int TrayCode = -1;
/// <summary>
/// 是否有料盘,true=有料盘
/// </summary>
public bool IsFull { get; set; }
public bool IsFull = false;
/// <summary>
/// 出库还是入库(有料盘时才有此操作)0=无操作,1=入库,2=出库
/// </summary>
public int InOrOutStore { get; set; }
public int InOrOutStore = 0;
/// <summary>
/// 物品二维码信息
/// </summary>
public string WareCode { get; set; }
public string WareCode = "";
/// <summary>
/// 位置名(对应配置表的位置)
/// </summary>
public string PosId { get; set; }
public string PosId = "";
/// <summary>
/// 料盘高度
/// </summary>
public int PlateH { get; set; }
public int PlateH = 0;
/// <summary>
/// 料盘宽度
/// </summary>
public int PlateW { get; set; }
public int PlateW = 0;
/// <summary>
/// 入库失败料盘,未扫到码或获取库位号失败
/// </summary>
......
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!