Commit 27663f30 LN

皮带线优化。上料逻辑优化。

1 个父辈 c8629e31
......@@ -50,9 +50,14 @@
是否连接
</summary>
</member>
<member name="P:Asa.IOModule.AIOBOX.ErrInfo">
<member name="P:Asa.IOModule.AIOBOX.MonitorDI">
<summary>
错误信息
监控DI输入,索引数组
</summary>
</member>
<member name="P:Asa.IOModule.AIOBOX.MonitorDO">
<summary>
监控DO输出,索引数组
</summary>
</member>
<member name="M:Asa.IOModule.AIOBOX.Connect">
......
......@@ -36,9 +36,6 @@
<Prefer32Bit>false</Prefer32Bit>
</PropertyGroup>
<ItemGroup>
<Reference Include="Asa.IOModule.AIOBOX">
<HintPath>..\..\dll\Asa.IOModule.AIOBOX.dll</HintPath>
</Reference>
<Reference Include="Client, Version=1.0.0.1, Culture=neutral, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\dll\Client.dll</HintPath>
......@@ -84,6 +81,7 @@
<Compile Include="baan\AxisBean.cs" />
<Compile Include="baan\WaitUtil.cs" />
<Compile Include="deviceLibrary\halcon\CodeManager.cs" />
<Compile Include="deviceLibrary\IO\AIOBOX\AIOBOX.cs" />
<Compile Include="deviceLibrary\IO\AIOBOX\AIOBOXManager.cs" />
<Compile Include="deviceLibrary\IO\IOManager.cs" />
<Compile Include="assemblyLine\LineBean.cs" />
......
......@@ -94,6 +94,42 @@ namespace OnlineStore.DeviceLibrary
}
return false;
}
private void DON_03_GetTraySize()
{
MoveInfo.NextMoveStep(LineMoveStep.DON_03_GetTraySize);
MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(3000));
LastWidth = 0;
int robotIndex = GetRobotIndex();
string result = SServerManager.GetTraySize(Name, robotIndex, StationInfo_Move.CodeStr, out LastWidth);
LogUtil.info(hengyiName + MoveInfo.SLog + "送料: [" + StationInfo_Move.CodeStr + "] 获取尺寸【" + LastWidth + "】【" + result + "】");
if (MoveInfo.MoveStep.Equals(LineMoveStep.DON_03_GetTraySize))
{
DON_04_SUpDownMove();
}
}
private void DON_04_SUpDownMove()
{
MoveInfo.NextMoveStep(LineMoveStep.DON_04_SUpDownMove);
if (LastWidth.Equals(7))
{
SeparateLineRun();
LogUtil.info(hengyiName + MoveInfo.SLog + "送料:【" + LastWidth + "】寸,上升分盘定位气缸");
CylinderMove(MoveInfo, IO_Type.SeparateDevice_Down, IO_Type.SeparateDevice_Up);
}
else if (LastWidth > 0)
{
SeparateLineRun();
LogUtil.info(hengyiName + MoveInfo.SLog + "送料: 【" + LastWidth + "】寸,下降分盘定位气缸");
CylinderMove(MoveInfo, IO_Type.SeparateDevice_Up, IO_Type.SeparateDevice_Down);
}
else
{
MoveInfo.NextMoveStep(LineMoveStep.DON_12_NGCylinderForward);
LogUtil.info(hengyiName + MoveInfo.SLog + "NG料:NG气缸前进");
ScanNgForward(MoveInfo);
MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(3000));
}
}
protected override void OutStoreProcess()
{
if (MoveInfo.IsInWait)
......@@ -108,207 +144,15 @@ namespace OnlineStore.DeviceLibrary
{
return;
}
#region 原有方式的横移料盘处理
//if (MoveInfo.MoveStep.Equals(LineMoveStep.DO_01_WaitTime))
//{
// ScanCode();
//}
//if (MoveInfo.MoveStep.Equals(LineMoveStep.DO_02_ScanCode))
//{
// MoveInfo.NextMoveStep(LineMoveStep.DO_03_GetTraySize);
// MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(3000));
// LastWidth = 0;
// int robotIndex = GetRobotIndex();
// string result = SServerManager.GetTraySize(Name, robotIndex, StationInfo_Move.CodeStr, out LastWidth);
// LogUtil.info(hengyiName + "出口有料,二维码[" + StationInfo_Move.CodeStr + "] 获取料盘尺寸【" + LastWidth + "】【" + result + "】");
//}
//else if (MoveInfo.MoveStep.Equals(LineMoveStep.DO_03_GetTraySize))
//{
// MoveInfo.NextMoveStep(LineMoveStep.DO_04_SUpDownMove);
// if (LastWidth.Equals(7))
// {
// LogUtil.info(hengyiName + "出口有料,料盘尺寸【" + LastWidth + "】上升分盘定位气缸");
// CylinderMove(MoveInfo, IO_Type.SeparateDevice_Down, IO_Type.SeparateDevice_Up);
// }
// else if (LastWidth > 0)
// {
// LogUtil.info(hengyiName + "出口有料,料盘尺寸【" + LastWidth + "】下降分盘定位气缸");
// CylinderMove(MoveInfo, IO_Type.SeparateDevice_Up, IO_Type.SeparateDevice_Down);
// }
// else
// {
// MoveInfo.NextMoveStep(LineMoveStep.DO_10_StopSeparateLine);
// LogUtil.info(hengyiName + "扫码NG料, 先转动NG料到扫码后一个工位,需要停止接驳台皮带线");
// SeparateStopRun(MoveInfo);
// }
//}
//else if (MoveInfo.MoveStep.Equals(LineMoveStep.DO_10_StopSeparateLine))
//{
// if (TrayProcessCanStartLine())
// {
// MoveInfo.NextMoveStep(LineMoveStep.DO_11_NGToNextStation);
// LogUtil.info(hengyiName + "扫码NG料, 先转动NG料到扫码后一个工位");
// Line3Turn.StartLineRun(IO_Type.DLine_Run3, IO_Type.Location_Check3, Line3EndProcess);
// MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(3000));
// MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.Location_Check3, IO_VALUE.HIGH));
// Task.Factory.StartNew(delegate
// {
// Thread.Sleep(1000);
// SeparateBackRun(null);
// });
// }
//}
//else if (MoveInfo.MoveStep.Equals(LineMoveStep.DO_04_SUpDownMove))
//{
// if (TrayProcessCanStartLine())
// {
// MoveInfo.NextMoveStep(LineMoveStep.DO_05_LineRun1);
// LogUtil.info(hengyiName + "出口有料,转动皮带线到扫码后一个工位,同时转动分盘装置");
// IOMove(IO_Type.SeparateDevice_Run, IO_VALUE.HIGH);
// Line3Turn.StartLineRun(IO_Type.DLine_Run3, IO_Type.Location_Check3, Line3EndProcess);
// MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(3000));
// MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.Location_Check3, IO_VALUE.HIGH));
// }
//}
//else if (MoveInfo.MoveStep.Equals(LineMoveStep.DO_05_LineRun1))
//{
// MoveInfo.NextMoveStep(LineMoveStep.DO_07_SeparateCheck);
// // Line3LastTrayP++;
// LogUtil.info(hengyiName + "出口有料,等待料盘到达分盘装置位置,最多等待60000");
// MoveInfo.TimeOutSeconds = 40;
// MoveInfo.OneWaitCanEndStep = true;
// MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(60000));
// MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.SeparateDevice_Check, IO_VALUE.HIGH));
//}
//else if (MoveInfo.MoveStep.Equals(LineMoveStep.DO_07_SeparateCheck))
//{
// MoveInfo.NextMoveStep(LineMoveStep.DO_08_CRun);
// if (IOValue(IO_Type.SeparateDevice_Check).Equals(IO_VALUE.HIGH))
// {
// int robotIndex = GetRobotIndex();
// LogUtil.info(hengyiName + "出口有料,转动接驳台皮带线2000 , 收到SeparateDevice_Check信号,调用arriveRobotLocation=" + robotIndex);
// SServerManager.arriveRobotLocation(Name, robotIndex, StationInfo_Move.CodeStr);
// }
// else
// {
// LogUtil.info(hengyiName + "出口有料,转动接驳台皮带线2000 ,未收到SeparateDevice_Check信号");
// }
// IOMove(IO_Type.SeparateDevice_Run, IO_VALUE.HIGH);
// MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(2000));
//}
//else if (MoveInfo.MoveStep.Equals(LineMoveStep.DO_08_CRun))
//{
// MoveEndS();
// // IOMove(IO_Type.SeparateDevice_Run, IO_VALUE.LOW);
// LogUtil.info(hengyiName + "出口有料,送料结束 ");
//}
#endregion
#region NG料处理
//else if (MoveInfo.MoveStep.Equals(LineMoveStep.DO_11_NGToNextStation))
//{
// //如果是301,接驳台皮带倒转
// if (DeviceID.Equals(301))
// {
// MoveInfo.NextMoveStep(LineMoveStep.DO_15_SeparateBackRun);
// LogUtil.info(hengyiName + "扫码NG料,接驳台开始倒转");
// SeparateBackRun(MoveInfo);
// }
// //如果是302,NG气缸前进
// else
// {
// MoveInfo.NextMoveStep(LineMoveStep.DO_12_NGCylinderForward);
// LogUtil.info(hengyiName + "扫码NG料,NG气缸前进");
// ScanNgForward(MoveInfo);
// MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(3000));
// }
//}
//else if (MoveInfo.MoveStep.Equals(LineMoveStep.DO_12_NGCylinderForward))
//{
// MoveInfo.NextMoveStep(LineMoveStep.DO_13_NGCylinderWait);
// LogUtil.info(hengyiName + "扫码NG料,NG气缸等待1500后后退");
// MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(1500));
//}
//else if (MoveInfo.MoveStep.Equals(LineMoveStep.DO_13_NGCylinderWait))
//{
// MoveInfo.NextMoveStep(LineMoveStep.DO_14_NGCylinderBack);
// LogUtil.info(hengyiName + "扫码NG料,NG气缸后退");
// ScanNgBack(MoveInfo);
//}
//else if (MoveInfo.MoveStep.Equals(LineMoveStep.DO_14_NGCylinderBack))
//{
// MoveEndS();
// LogUtil.info(hengyiName + "扫码NG料结束,NG气缸已后退 ");
//}
//else if (MoveInfo.MoveStep.Equals(LineMoveStep.DO_15_SeparateBackRun))
//{
// MoveInfo.NextMoveStep(LineMoveStep.DO_16_SeparateBackRunWait);
// LogUtil.info(hengyiName + "扫码NG料,接驳台反转等待3000");
// MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(3000));
//}
//else if (MoveInfo.MoveStep.Equals(LineMoveStep.DO_16_SeparateBackRunWait))
//{
// MoveInfo.NextMoveStep(LineMoveStep.DO_17_SeparateStopRun);
// LogUtil.info(hengyiName + "扫码NG料,接驳台停止反转");
// SeparateStopRun(MoveInfo);
// MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(2000));
//}
//else if (MoveInfo.MoveStep.Equals(LineMoveStep.DO_17_SeparateStopRun))
//{
// MoveInfo.NextMoveStep(LineMoveStep.DO_18_SeparateRun);
// LogUtil.info(hengyiName + "扫码NG料,接驳台恢复正转");
// SeparateLineRun(MoveInfo);
//}
//else if (MoveInfo.MoveStep.Equals(LineMoveStep.DO_18_SeparateRun))
//{
// MoveEndS();
// LogUtil.info(hengyiName + "扫码NG料结束,皮带线已正转 ");
//}
#endregion
#region 新方式的横移料盘处理,扫码工位与NG工位分开处理
else if (MoveInfo.MoveStep.Equals(LineMoveStep.DON_01_WaitTime))
{
MoveInfo.NextMoveStep(LineMoveStep.DON_03_GetTraySize);
MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(3000));
LastWidth = 0;
int robotIndex = GetRobotIndex();
string result = SServerManager.GetTraySize(Name, robotIndex, StationInfo_Move.CodeStr, out LastWidth);
LogUtil.info(hengyiName + MoveInfo.SLog + "送料: [" + StationInfo_Move.CodeStr + "] 获取尺寸【" + LastWidth + "】【" + result + "】");
if (MoveInfo.MoveStep.Equals(LineMoveStep.DON_03_GetTraySize))
{
MoveInfo.EndStepWait();
}
DON_03_GetTraySize();
}
else if (MoveInfo.MoveStep.Equals(LineMoveStep.DON_03_GetTraySize))
{
MoveInfo.NextMoveStep(LineMoveStep.DON_04_SUpDownMove);
if (LastWidth.Equals(7))
{
SeparateLineRun();
LogUtil.info(hengyiName + MoveInfo.SLog + "送料:【" + LastWidth + "】寸,上升分盘定位气缸");
CylinderMove(MoveInfo, IO_Type.SeparateDevice_Down, IO_Type.SeparateDevice_Up);
}
else if (LastWidth > 0)
{
SeparateLineRun();
LogUtil.info(hengyiName + MoveInfo.SLog + "送料: 【" + LastWidth + "】寸,下降分盘定位气缸");
CylinderMove(MoveInfo, IO_Type.SeparateDevice_Up, IO_Type.SeparateDevice_Down);
}
else
{
MoveInfo.NextMoveStep(LineMoveStep.DON_12_NGCylinderForward);
LogUtil.info(hengyiName + MoveInfo.SLog + "NG料:NG气缸前进");
ScanNgForward(MoveInfo);
MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(3000));
}
DON_04_SUpDownMove();
}
else if (MoveInfo.MoveStep.Equals(LineMoveStep.DON_04_SUpDownMove))
......@@ -401,12 +245,17 @@ namespace OnlineStore.DeviceLibrary
MoveInfo.NewMove(LineMoveType.OutStore);
LogUtil.info(hengyiName + "NG工位有料,NG气缸后退,等待100后获取尺寸,清理NG工位");
StationInfo_NG = new StationTrayInfo();
LastWidth = 0;
MoveInfo.NextMoveStep(LineMoveStep.DON_01_WaitTime);
MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(1000));
ScanNgBack(MoveInfo);
// LastCodeList = new List<string>();
LastWidth = 0;
// scanCodeCount = 0;
MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(100));
if (ScanNgIsBack())
{
DON_03_GetTraySize();
}
else
{
ScanNgBack(MoveInfo);
}
return true;
}
else
......
......@@ -725,14 +725,14 @@ namespace OnlineStore.DeviceLibrary
LastCodeList = new List<string>();
NextCodeList = new List<string>();
TrayLCylinderBefore(null);
MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(2000));
MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(2000));
}
else if (MoveInfo.MoveStep.Equals(LineMoveStep.FI_07_TrayLocation_Before))
{
MoveInfo.NextMoveStep(LineMoveStep.FI_08_TrayLocation_Back);
InLog("料架入库" + MoveInfo.SLog + ":升降盘定位气缸后退,等待再次前进");
TrayLCylinderAfter(MoveInfo);
InLog("料架入库" + MoveInfo.SLog + ":升降盘定位气缸后退,等待再次前进");
TrayLCylinderAfter(MoveInfo);
}
else if (MoveInfo.MoveStep.Equals(LineMoveStep.FI_08_TrayLocation_Back))
{
......@@ -815,7 +815,7 @@ namespace OnlineStore.DeviceLibrary
MoveInfo.NextMoveStep(LineMoveStep.FI_20_SaveSize);
if (MoveCylineIsUp())
{
MoveInfo.NextMoveStep(LineMoveStep.FI_22_CylinderGive);
MoveInfo.NextMoveStep(LineMoveStep.FI_21_CylinderGive);
InLog("料盘移栽" + MoveInfo.SLog + ":上料横移气缸放料SOL");
CylinderMove(MoveInfo, IO_Type.SL_MoveCylinder_Take, IO_Type.SL_MoveCylinder_Give);
}
......@@ -858,20 +858,22 @@ namespace OnlineStore.DeviceLibrary
}
else
{
InLog("料盘移栽" + MoveInfo.SLog + ":记录 高度【" + LastHeight + "】宽度【" + LastWidth + "】,此时未检测到料盘,上料轴位置【" + currP + "】不在P3:" + Config.BatchAxisP3 + "");
InLog("料盘移栽" + MoveInfo.SLog + ":记录 高度【" + LastHeight + "】宽度【" + LastWidth + "】,此时未检测到料盘,上料轴位置【" + currP + "】不在P3:" + Config.BatchAxisP3 + ",预扫码");
YuScanCode();
}
}
else
{
InLog("料盘移栽" + MoveInfo.SLog + ":记录 高度【" + LastHeight + "】宽度【" + LastWidth + "】");
InLog("料盘移栽" + MoveInfo.SLog + ":记录 高度【" + LastHeight + "】宽度【" + LastWidth + "】,预扫码");
YuScanCode();
}
}
else if (MoveInfo.MoveStep.Equals(LineMoveStep.FI_20_SaveSize))
{
{
if (MoveCylineIsUp())
{
MoveInfo.NextMoveStep(LineMoveStep.FI_22_CylinderGive);
MoveInfo.NextMoveStep(LineMoveStep.FI_21_CylinderGive);
InLog("料盘移栽" + MoveInfo.SLog + ":上料横移气缸放料SOL");
CylinderMove(MoveInfo, IO_Type.SL_MoveCylinder_Take, IO_Type.SL_MoveCylinder_Give);
}
......@@ -882,17 +884,25 @@ namespace OnlineStore.DeviceLibrary
CylinderMove(MoveInfo, IO_Type.SL_MoveCylinder_Down, IO_Type.SL_MoveCylinder_Up);
}
}
else if (MoveInfo.MoveStep.Equals(LineMoveStep.FI_22_CylinderGive))
else if (MoveInfo.MoveStep.Equals(LineMoveStep.FI_21_CylinderGive))
{
MoveInfo.NextMoveStep(LineMoveStep.FI_22_BatchAxisDown);
if (!MoveInfo.ShelfNoTray)
{
FI_BatchAxisDown();
}
}
else if (MoveInfo.MoveStep.Equals(LineMoveStep.FI_22_BatchAxisDown))
{
MoveInfo.NextMoveStep(LineMoveStep.FI_23_WaitTray);
int targetPositon = Config.GetUpdownP2Detial(LastHeight, LastWidth);
string log = ":移栽伺服下降到P2:" + targetPositon;
InLog("料盘移栽" + MoveInfo.SLog + ":等待空托盘到达 " + log + "");
UpdownAxis.AbsMove(MoveInfo, targetPositon, Config.UpdownAxis_P2Speed);
if (!MoveInfo.ShelfNoTray)
{
YuScanCode();
}
//if (!MoveInfo.ShelfNoTray)
//{
// YuScanCode();
//}
}
else if (MoveInfo.MoveStep.Equals(LineMoveStep.FI_23_WaitTray))//TODO
{
......@@ -900,23 +910,23 @@ namespace OnlineStore.DeviceLibrary
{
MoveInfo.NextMoveStep(LineMoveStep.FI_24_CylinderDown);
CylinderMove(MoveInfo, IO_Type.SL_MoveCylinder_Up, IO_Type.SL_MoveCylinder_Down);
if (!MoveInfo.ShelfNoTray)
{
InLog("料盘移栽" + MoveInfo.SLog + ":上料机构下降, 托盘号【" + currTrayNum + "】,更新托盘为有料,获取库位号 , 提升轴下降指定位置");
FI_21_BatchAxisDown();
}
else
{
InLog("料盘移栽" + MoveInfo.SLog + ":上料机构下降, 托盘号【" + currTrayNum + "】,更新托盘为有料,获取库位号 ,");
}
//if (!MoveInfo.ShelfNoTray)
//{
// InLog("料盘移栽" + MoveInfo.SLog + ":上料机构下降, 托盘号【" + currTrayNum + "】,更新托盘为有料,获取库位号 , 提升轴下降指定位置");
// FI_21_BatchAxisDown();
//}
//else
//{
InLog("料盘移栽" + MoveInfo.SLog + ":上料机构下降, 托盘号【" + currTrayNum + "】,更新托盘为有料,获取库位号 ,");
//}
string code = CodeManager.ProcessCode(LastCodeList);
lastcode = code;
TrayManager.UpdateTrayInfo(currTrayNum, true, ReelType.InStore, new InOutParam(currTrayNum, code, "", LastHeight, LastWidth, false), "");
TrayManager.UpdateTrayInfo(currTrayNum, true, ReelType.InStore, new InOutParam(currTrayNum, code, "", LastHeight, LastWidth, false), "");
getPosTask = Task.Factory.StartNew(delegate
{
{
//更新托盘条码信息
try
{
{
if (code.Equals(""))
{
InOutParam param = new InOutParam(currTrayNum, code, "", LastHeight, LastWidth, true);
......@@ -935,7 +945,7 @@ namespace OnlineStore.DeviceLibrary
}
catch (Exception ex)
{
LogUtil.error(Name + "托盘【" + currTrayNum + "】【"+code+"】获取库位号报错:" + ex.ToString());
LogUtil.error(Name + "托盘【" + currTrayNum + "】【" + code + "】获取库位号报错:" + ex.ToString());
}
});
......@@ -997,7 +1007,7 @@ namespace OnlineStore.DeviceLibrary
}
else
{
LogUtil.error(Name + "["+MoveInfo.MoveType+"][" + MoveInfo.SLog + "] 获取库位号还未完成,状态:" + getPosTask.Status);
LogUtil.error(Name + "[" + MoveInfo.MoveType + "][" + MoveInfo.SLog + "] 获取库位号还未完成,状态:" + getPosTask.Status);
}
}
#endregion
......@@ -1119,7 +1129,7 @@ namespace OnlineStore.DeviceLibrary
CylinderMove(null, IO_Type.FL_TopCylinder_Up, IO_Type.FL_TopCylinder_Down);
}
}
private void FI_21_BatchAxisDown()
private void FI_BatchAxisDown()
{
// MoveInfo.NextMoveStep(LineMoveStep.FI_21_BatchAxisDown);
MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(200));
......
......@@ -656,15 +656,15 @@ namespace OnlineStore.DeviceLibrary
/// 料盘移栽:记录高度尺寸
/// </summary>
FI_20_SaveSize ,
///// <summary>
///// 提升轴下降到料盘不溢出的位置
///// </summary>
//FI_21_BatchAxisDown,
/// <summary>
/// 料盘移栽: 上料横移气缸放料SOL
/// </summary>
FI_22_CylinderGive ,
FI_21_CylinderGive,
/// <summary>
/// 提升轴下降到料盘不溢出的位置
/// </summary>
FI_22_BatchAxisDown,
/// <summary>
/// 料盘移栽:等待空托盘到达,移栽伺服下降到P2,并预扫码
/// </summary>
......
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!