Commit ef59ea1a 刘韬

1

1 个父辈 f2afb3e6
using CodeLibrary;
using OnlineStore.Common;
using OnlineStore.LoadCSVLibrary;
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms.VisualStyles;
namespace OnlineStore.DeviceLibrary
{
partial class BoxEquip
{
#region 入库,两侧都有料
private void BothComAxis_To_P2(bool isdebugSpeed = false)
{
if (isdebugSpeed)
{
ComAxis_A.AbsMove(MoveInfo, MoveInfo.MoveParam.MoveP.ComAxis_AB_P2, Config.ComAxis_FindPosSpeed);
ComAxis_B.AbsMove(MoveInfo, MoveInfo.MoveParam.MoveP.ComAxis_AB_P2, Config.ComAxis_FindPosSpeed);
}
else
{
ComAxis_A.AbsMove(MoveInfo, MoveInfo.MoveParam.MoveP.ComAxis_AB_P2, Config.ComAxis_A_P2_Speed);
ComAxis_B.AbsMove(MoveInfo, MoveInfo.MoveParam.MoveP.ComAxis_AB_P2, Config.ComAxis_B_P2_Speed);
}
}
private void BothMiddleAxis_To_P2(bool isdebugSpeed = false)
{
MiddleAxis_A.AbsMove(MoveInfo, Config.MiddleAxis_A_P2, Config.MiddleAxis_A_P2_Speed);
MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.AHorizontal_Check, IO_VALUE.HIGH));
MiddleAxis_B.AbsMove(MoveInfo, Config.MiddleAxis_B_P2, Config.MiddleAxis_B_P2_Speed);
MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.BHorizontal_Check, IO_VALUE.HIGH));
}
private void BothXAxis_To_P1(bool isdebugSpeed = false)
{
if (!XAxis_A.IsInPosition(Config.XAxis_A_P1))
{
if (isdebugSpeed)
XAxis_A.AbsMove(MoveInfo, Config.XAxis_A_P1, Config.XAxis_FindPosSpeed);
else
XAxis_A.AbsMove(MoveInfo, Config.XAxis_A_P1, Config.XAxis_A_P1_Speed);
}
if (!XAxis_B.IsInPosition(Config.XAxis_B_P1))
{
if (isdebugSpeed)
XAxis_B.AbsMove(MoveInfo, Config.XAxis_B_P1, Config.XAxis_FindPosSpeed);
else
XAxis_B.AbsMove(MoveInfo, Config.XAxis_B_P1, Config.XAxis_B_P1_Speed);
}
}
private bool InDoorBothCheck(InOutParam param)
{
if (param.PosInfo == null)
return false;
if (param.PosInfoBack == null)
return false;
if (param.PosInfo != null)
{
if (param.PosInfoBack != null)
{
return true;
}
}
return false;
}
private void BothXAxis_To_P2(bool isdebugSpeed = false)
{
if (isdebugSpeed)
XAxis_B.AbsMove(MoveInfo, Config.XAxis_B_P2, Config.XAxis_FindPosSpeed);
else
XAxis_B.AbsMove(MoveInfo, Config.XAxis_B_P2, Config.XAxis_B_P2_Speed);
if (isdebugSpeed)
XAxis_A.AbsMove(MoveInfo, Config.XAxis_A_P2, Config.XAxis_FindPosSpeed);
else
XAxis_A.AbsMove(MoveInfo, Config.XAxis_A_P2, Config.XAxis_A_P2_Speed);
}
private void AddBothReelCheck(bool hasReel)
{
//if (CheckASide())
//{
// MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.ForkA_Tray_Check, hasReel ? IO_VALUE.HIGH : IO_VALUE.LOW));
//}
//else
//{
// MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.ForkB_Tray_Check, hasReel ? IO_VALUE.HIGH : IO_VALUE.LOW));
//}
}
int comAxis_offset = ConfigAppSettings.GetIntValue("Coeff_ComAxis");
private void BothComAxis_To_P3(bool isdebugSpeed = false)
{
int diff = 0;
BoxPosition position = CSVPositionReader<BoxPosition>.GetPositon(MoveInfo.MoveParam.PosInfo.PosId);
if (position != null)
{
diff = position.BagHigh - MoveInfo.MoveParam.PosInfo.PlateH;
if (diff < 0) diff = 0;
LogInfo($"{MoveInfo.MoveParam.PosInfo.PosId}库位高度:{position.BagHigh},料盘高度:{MoveInfo.MoveParam.PosInfo.PlateH},差值:{diff},系数:{comAxis_offset}," +
$"实际值:{MoveInfo.MoveParam.MoveP.ComAxis_AB_P3 + diff * comAxis_offset}={MoveInfo.MoveParam.MoveP.ComAxis_AB_P3}加{diff * comAxis_offset}");
}
int target = MoveInfo.MoveParam.MoveP.ComAxis_AB_P3 + diff * comAxis_offset;
if (isdebugSpeed)
ComAxis_A.AbsMove(MoveInfo, target, Config.ComAxis_FindPosSpeed);
else
ComAxis_A.AbsMove(MoveInfo, target, Config.ComAxis_A_P3_Speed);
diff = 0;
LineMoveP movep = new LineMoveP(Config, MoveInfo.MoveParam.PosInfoBack.PosId);
BoxPosition position1 = CSVPositionReader<BoxPosition>.GetPositon(MoveInfo.MoveParam.PosInfoBack.PosId);
if (position1 != null)
{
diff = position1.BagHigh - MoveInfo.MoveParam.PosInfoBack.PlateH;
if (diff < 0) diff = 0;
LogInfo($"{MoveInfo.MoveParam.PosInfoBack.PosId}库位高度:{position1.BagHigh},料盘高度:{MoveInfo.MoveParam.PosInfoBack.PlateH},差值:{diff}," +
$"实际值:{movep.ComAxis_AB_P3 + diff * comAxis_offset}={movep.ComAxis_AB_P3}加{diff * comAxis_offset}");
}
target = movep.ComAxis_AB_P3 + diff * comAxis_offset;
if (isdebugSpeed)
ComAxis_B.AbsMove(MoveInfo, target, Config.ComAxis_FindPosSpeed);
else
ComAxis_B.AbsMove(MoveInfo, target, Config.ComAxis_B_P3_Speed);
}
private void BothXAxis_To_P3(bool isdebugSpeed = false)
{
if (isdebugSpeed)
XAxis_A.AbsMove(MoveInfo, MoveInfo.MoveParam.MoveP.XAxis_AB_P3, Config.XAxis_FindPosSpeed);
else
XAxis_A.AbsMove(MoveInfo, MoveInfo.MoveParam.MoveP.XAxis_AB_P3, Config.XAxis_A_P3_Speed);
if (isdebugSpeed)
XAxis_B.AbsMove(MoveInfo, MoveInfo.MoveParam.MoveP.XAxis_AB_P3, Config.XAxis_FindPosSpeed);
else
XAxis_B.AbsMove(MoveInfo, MoveInfo.MoveParam.MoveP.XAxis_AB_P3, Config.XAxis_B_P3_Speed);
}
private void ClearInDoorBothBuffer()
{
BufferDataManager.AInStoreInfo = null;
BufferDataManager.BInStoreInfo = null;
LogInfo($"入库 {MoveInfo.SLog}:取料完成,清除该暂存区的料盘信息[barcode={MoveInfo.MoveParam.PosInfo.barcode}][barcode={MoveInfo.MoveParam.PosInfoBack.barcode}]");
}
private void InstoreBothSideExecute()
{
switch (MoveInfo.MoveStep)
{
case StepEnum.SIB_00_StartInstore:
PullAxisToP1("入库");
break;
case StepEnum.SIB_01_PullAxis_Ready:
SetBoxStatus(DeviceStatus.InStoreExecute, RunStatus.Busy, MoveInfo.MoveParam.PosInfo.PosId, MoveInfo.MoveParam.PosInfo.barcode);
MoveInfo.NextMoveStep(StepEnum.SIB_01_Pull_Updown_ToPosition);
if (!IsMoveAxisInSafePos())
{
MoveAxisToSafePos();
LogInfo($"入库 {MoveInfo.SLog}:行走机构不在安全位置,先到安全位置={Config.MoveAxis_SafePos}。当前位置{MoveAxis.GetAclPosition()}");
}
break;
case StepEnum.SIB_01_Pull_Updown_ToPosition:
MoveInfo.NextMoveStep(StepEnum.SIB_01_MoveAxis_Ready);
LogInfo($"入库 {MoveInfo.SLog}:到暂存区入料口," +
$"行走机构到待机点P1,料斗升降轴到P1点,移栽升降轴到上暂存区入库取料低点P3/P9,移栽压紧轴到压紧前点P2,移栽旋转轴到取放料水平点P2,移栽X轴到P1,料斗升降轴到P1点[{MoveInfo.MoveParam.PosInfo.GetPosSide()}面]");
MoveAxisToP1();
PullAxis_UpdownToP1();
UpdownAxisTo_P3_P9();
BothComAxis_To_P2();
BothMiddleAxis_To_P2();
BothXAxis_To_P1();
//BuffAreaInstoreDoor(true);
break;
case StepEnum.SIB_01_MoveAxis_Ready:
MoveInfo.NextMoveStep(StepEnum.SIB_02_ToBufferArea);
startTime = DateTime.Now;
break;
case StepEnum.SIB_02_ToBufferArea:
if (!InDoorBothCheck(MoveInfo.MoveParam))
{
SetWarnMsg($"入库 {MoveInfo.SLog}:AB入口料盘无入库信息, 任务取消");
LogInfo($"入库 {MoveInfo.SLog}:AB入口料盘因无入库信息,结束入库");
SetBoxStatus(DeviceStatus.StoreOnline, RunStatus.Runing);
MoveInfo.EndMove();
}
else
{
MoveInfo.NextMoveStep(StepEnum.SIB_03_VerifyBufferState);
LogInfo($"入库 {MoveInfo.SLog}:AB入料口入库信息确认,[barcode={MoveInfo.MoveParam.PosInfo.barcode},posId={MoveInfo.MoveParam.PosInfo.PosId}][barcode={MoveInfo.MoveParam.PosInfoBack.barcode},posId={MoveInfo.MoveParam.PosInfoBack.PosId}],开始取料");
}
break;
case StepEnum.SIB_03_VerifyBufferState:
if (!CheckInputMiddleAxisInBuff())
{
MoveInfo.NextMoveStep(StepEnum.SIB_04_InOutToBuff);
LogInfo($"入库 {MoveInfo.SLog}:移栽X轴到暂存区取放点P2,行走机构到取放点P2");
BothXAxis_To_P2();
MoveAxisToP2();
}
else if (MoveInfo.IsTimeOut())
{
SetWarnMsg($"等待上料机构旋转轴离开暂存区超时");
}
break;
case StepEnum.SIB_04_InOutToBuff:
MoveInfo.NextMoveStep(StepEnum.SIB_05_GetReel);
LogInfo($"入库 {MoveInfo.SLog}:取料盘,移栽升降轴到上暂存区入库取料高点P2/P8,移栽压紧轴到压紧点P3");
AddBothReelCheck(true);
UpdownAxisTo_P2_P8();
BothComAxis_To_P3();
break;
case StepEnum.SIB_05_GetReel:
MoveInfo.NextMoveStep(StepEnum.SIB_06_InOutBackToP1FromBuff);
LogInfo($"入库 {MoveInfo.SLog}:移栽X轴到库位取放点P3,行走机构到待机点P1");
// XAxis_To_P1();
BothXAxis_To_P3();
MoveAxisToP1();
break;
case StepEnum.SIB_06_InOutBackToP1FromBuff:
MoveInfo.NextMoveStep(StepEnum.SIB_06_ClearBuffInfo);
//LogInfo($"入库 {MoveInfo.SLog}:移栽X轴到料屉库位取放料点P3[{MoveInfo.MoveParam.PosInfo.GetPosSide()}面]");
//清空暂存区料盘信息
ClearInDoorBothBuffer();
break;
case StepEnum.SIB_06_ClearBuffInfo:
{
MoveInfo.NextMoveStep(StepEnum.SI_07_MiddleToP3);
LogInfo($"入库 {MoveInfo.SLog}:对两侧料盘进行入库");//移栽旋转轴到料屉库位垂直取放料点P3
}
break;
}
}
#endregion
private void MoveAxisToSafePos(bool isdebugSpeed = false)
{
if (!MoveAxis.IsInPosition(Config.MoveAxis_SafePos))
{
if (isdebugSpeed)
MoveAxis.AbsMove(MoveInfo, Config.MoveAxis_SafePos, Config.MoveAxis_FindPosSpeed);
else
MoveAxis.AbsMove(MoveInfo, Config.MoveAxis_SafePos, Config.MoveAxis_P1_Speed);
}
}
}
}
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!