Commit d9847538 LN

上料机构修改

1 个父辈 f8dca7a7
......@@ -241,12 +241,16 @@ namespace OnlineStore.DeviceLibrary
int p = AxisManager.instance.GetActualtPosition(Config.DeviceName,Config.GetAxisValue());
return p;
}
public bool IsInPosition(int targetP)
public bool IsInPosition(int targetP,int canErrorMax=0)
{
if (canErrorMax <= 0)
{
canErrorMax = Config.CanErrorCountMax;
}
int currp = GetAclPosition();
int chaz = targetP - currp;
if (Math.Abs(chaz) < Config.CanErrorCountMax)
if (Math.Abs(chaz) < canErrorMax)
{
return true;
}
......
......@@ -149,6 +149,16 @@ namespace OnlineStore.DeviceLibrary
}
return configIo;
}
internal static ConfigIO GetIO(string ioType, int subType)
{
ConfigIO configIo = GetDI(ioType,subType);
if (configIo == null)
{
configIo = GetDO(ioType, subType);
}
return configIo;
}
private static ConfigIO GetDO(string ioType, int subType)
{
ConfigIO configIo = null;
......
......@@ -816,9 +816,14 @@ namespace OnlineStore.DeviceLibrary
IB02_BatchAxisToP1,
/// <summary>
/// 料串入料:链条开始转动
/// 料串入料:入口有料架,转动到料架到位
/// </summary>
IB04_LineStart,
IB03_LineStart,
/// <summary>
/// 料串入料:料架已到位,在转动3秒
/// </summary>
IB04_LineWait,
/// <summary>
/// 料串入料:阻挡气缸上升
......
......@@ -283,7 +283,7 @@ namespace OnlineStore.DeviceLibrary
}
else if (wait.WaitType.Equals(WaitEnum.W002_IOValue))
{
NotOkMsg = " [" + IOManager.GetDI(wait.IoType, DeviceID).DisplayStr + "=" + wait.IoValue + "]";
NotOkMsg = " [" + IOManager.GetIO(wait.IoType, DeviceID).DisplayStr + "=" + wait.IoValue + "]";
wait.IsEnd = IOValue(wait.IoType).Equals(wait.IoValue);
if (!wait.IsEnd)
......
......@@ -398,7 +398,7 @@ namespace OnlineStore.DeviceLibrary
NotOkMsg = " [" + wait.ToStr() + "] ";
if (wait.WaitType.Equals(WaitEnum.W002_IOValue))
{
NotOkMsg = " [" + IOManager.GetDI(wait.IoType, DeviceID).DisplayStr + "=" + wait.IoValue + "] ";
NotOkMsg = " [" + IOManager.GetIO(wait.IoType, DeviceID).DisplayStr + "=" + wait.IoValue + "] ";
wait.IsEnd = IOValue(wait.IoType).Equals(wait.IoValue);
if (!wait.IsEnd)
......
......@@ -57,7 +57,7 @@ namespace OnlineStore.DeviceLibrary
MoveInfo = new DeviceMoveInfo(Name);
}
internal void TimerProcess()
public void TimerProcess()
{
if (MoveInfo.MoveType.Equals(MoveType.None))
{
......@@ -70,6 +70,10 @@ namespace OnlineStore.DeviceLibrary
{
StartInstore(new InOutParam());
}
else if (Robot.AutoInput && Robot.IOValue(Config.IO_LineEnd_Check).Equals(IO_VALUE.HIGH))
{
StartInstore(new InOutParam());
}
}
}
else if (MoveInfo.MoveType.Equals(MoveType.Reset))
......@@ -106,7 +110,7 @@ namespace OnlineStore.DeviceLibrary
}
private Stopwatch shelfWatch = new Stopwatch();
public bool Reset(bool needStop = false)
{
{
if (Robot.CanStartRun())
{
if (Robot.runStatus >= RunStatus.HomeMoving)
......@@ -115,13 +119,23 @@ namespace OnlineStore.DeviceLibrary
{
StopMove();
}
string msg = "";
if (!BatchAxis.Open(true, out msg))
{
BatchAxis.SuddenStop();
BatchAxis.ServoOff();
WarnMsg = Name + "复位失败:批量轴打开失败:"+msg;
return false;
}
WarnMsg = "";
alarmType = AlarmType.None;
MoveInfo.NewMove(MoveType.Reset);
MoveInfo.NextMoveStep(StepEnum.IBR01_StopDown);
MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(100));
WorkLog("开始复位,定位气缸下降");
WorkLog("开始复位,定位气缸下降");
StopDown(MoveInfo);
return true;
}
else
{
......@@ -149,20 +163,20 @@ namespace OnlineStore.DeviceLibrary
if (MoveInfo.IsStep(StepEnum.IBR01_StopDown))
{
if (Robot.IOValue(Config.IO_LineIn_Check).Equals(Robot.IOValue(Config.IO_LineEnd_Check)))
{
LineStop();
MoveInfo.NextMoveStep(StepEnum.IBR04_BatchHome);
WorkLog("复位:批量轴开始回原点");
BatchAxis.HomeMove(MoveInfo);
}
else
{
//if (Robot.IOValue(Config.IO_LineIn_Check).Equals(Robot.IOValue(Config.IO_LineEnd_Check)))
//{
// LineStop();
// MoveInfo.NextMoveStep(StepEnum.IBR04_BatchHome);
// WorkLog("复位:批量轴开始回原点");
// BatchAxis.HomeMove(MoveInfo);
//}
//else
//{
MoveInfo.NextMoveStep(StepEnum.IBR02_LineRun);
WorkLog("复位:链条正转3秒");
LineRun(MoveInfo);
MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(3000));
}
//}
}
else if (MoveInfo.IsStep(StepEnum.IBR02_LineRun))
{
......@@ -196,7 +210,7 @@ namespace OnlineStore.DeviceLibrary
BatchAxis.AxisStopCheckMove();
BatchAxis.SuddenStop();
}
public DateTime LastAlarmTime = DateTime.Now;
public AlarmType alarmType = AlarmType.None;
internal void Alarm(AlarmType alarmType)
......@@ -327,6 +341,10 @@ namespace OnlineStore.DeviceLibrary
//当等待超过一分钟时,需要打印提示
TimeSpan span = DateTime.Now - moveInfo.LastSetpTime;
if (span.TotalMilliseconds < 300)
{
return;
}
string NotOkMsg = "";
bool isOk = !moveInfo.OneWaitCanEndStep;
foreach (WaitResultInfo wait in list)
......@@ -363,7 +381,7 @@ namespace OnlineStore.DeviceLibrary
}
else if (wait.WaitType.Equals(WaitEnum.W002_IOValue))
{
NotOkMsg = " [" + IOManager.GetDI(wait.IoType, Robot.DeviceID).DisplayStr + "=" + wait.IoValue + "]";
NotOkMsg = " [" + IOManager.GetIO(wait.IoType, Robot.DeviceID).DisplayStr + "=" + wait.IoValue + "]";
wait.IsEnd = Robot.IOValue(wait.IoType).Equals(wait.IoValue);
if (!wait.IsEnd && (!moveInfo.IsStep(StepEnum.IB23_ShelfOut)))
......
......@@ -40,19 +40,23 @@ namespace OnlineStore.DeviceLibrary
LogUtil.info(Name + "StartInstore 失败,料串" + CurrShelf.ToStr() + "需要离开,NeedLeave:" + Config.AgvName + "," + CurrShelf.ShelfRfid + ",agvcallresult:" + agvcallresult.ToString());
return false;
}
if (Robot.IOValue(Config.IO_LineEnd_Check).Equals(IO_VALUE.HIGH) && Robot.IOValue(Config.IO_LineIn_Check).Equals(IO_VALUE.HIGH))
//if (Robot.IOValue(Config.IO_LineEnd_Check).Equals(IO_VALUE.HIGH) && Robot.IOValue(Config.IO_LineIn_Check).Equals(IO_VALUE.HIGH))
//{
// MoveInfo.NewMove(MoveType.InStore);
// MoveInfo.MoveParam = new InOutParam();
// //判断是哪个工位有料串
// IB05_StopUp();
//}
else if (Robot.IOValue(Config.IO_LineIn_Check).Equals(IO_VALUE.HIGH) )
{
MoveInfo.NewMove(MoveType.InStore);
MoveInfo.MoveParam = new InOutParam();
//判断是哪个工位有料串
IB05_StopUp();
IB03_LineStart();
}
else if (Robot.IOValue(Config.IO_LineIn_Check).Equals(IO_VALUE.HIGH))
else if(Robot.IOValue(Config.IO_LineIn_Check).Equals(IO_VALUE.HIGH))
{
MoveInfo.NewMove(MoveType.InStore);
MoveInfo.NextMoveStep(StepEnum.IB04_LineStart);
IB02_BatchAxisToP1();
IB04_LineWait();
}
else
{
......@@ -90,6 +94,22 @@ namespace OnlineStore.DeviceLibrary
BatchAxis.AbsMove(MoveInfo, Config.BatchAxisP1, Robot.Config.BatchAxis_P1Speed);
StopDown();
}
private void IB03_LineStart()
{
WorkLog("料串入料 :入口有料串,转动料串到位");
MoveInfo.NextMoveStep(StepEnum.IB03_LineStart);
LineRun(MoveInfo);
MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(Config.IO_LineIn_Check, IO_VALUE.LOW));
MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(Config.IO_LineEnd_Check, IO_VALUE.HIGH));
}
private void IB04_LineWait()
{
WorkLog("料串入料 :料串已到位,在转动3秒");
MoveInfo.NextMoveStep(StepEnum.IB04_LineWait);
LineRun(MoveInfo);
MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(3000));
MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(Config.IO_LineEnd_Check, IO_VALUE.HIGH));
}
private void IB07_AxisUpMove()
{
MoveInfo.ShelfNoTray = false;
......@@ -119,24 +139,31 @@ namespace OnlineStore.DeviceLibrary
}
if (MoveInfo.IsStep(StepEnum.IB02_BatchAxisToP1))
{
MoveInfo.NextMoveStep(StepEnum.IB04_LineStart);
WorkLog("料串入料 :开始转动链条");
LineRun(MoveInfo);
//等待指定时间
MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(3000));
}
else if (MoveInfo.IsStep(StepEnum.IB04_LineStart))
{
if (Robot.IOValue(Config.IO_LineIn_Check).Equals(IO_VALUE.HIGH) && Robot.IOValue(Config.IO_LineEnd_Check).Equals(IO_VALUE.HIGH))
//MoveInfo.NextMoveStep(StepEnum.IB03_LineStart);
//WorkLog("料串入料 :开始转动链条");
//LineRun(MoveInfo);
////等待指定时间
//MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(3000));
IB03_LineStart();
}
else if (MoveInfo.IsStep(StepEnum.IB03_LineStart))
{
//if (Robot.IOValue(Config.IO_LineIn_Check).Equals(IO_VALUE.HIGH) && Robot.IOValue(Config.IO_LineEnd_Check).Equals(IO_VALUE.HIGH))
//{
// IB05_StopUp();
//}
//else
if (Robot.IOValue(Config.IO_LineIn_Check).Equals(IO_VALUE.HIGH))
{
IB05_StopUp();
//MoveInfo.NextMoveStep(StepEnum.IB03_LineStart);
//WorkLog(" 入口检测到料串,流水线转动 6000,等待料串完全进入轨道");
//LineRun(MoveInfo);
//MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(6000));
IB03_LineStart();
}
else if (Robot.IOValue(Config.IO_LineIn_Check).Equals(IO_VALUE.HIGH))
{
MoveInfo.NextMoveStep(StepEnum.IB04_LineStart);
WorkLog(" 入口检测到料串,流水线转动 6000,等待料串完全进入轨道");
LineRun(MoveInfo);
MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(6000));
IB04_LineWait();
}
else
{
......@@ -144,6 +171,9 @@ namespace OnlineStore.DeviceLibrary
MoveInfo.EndMove();
LogUtil.info(" 未检测到料串,入料结束");
}
}else if (MoveInfo.IsStep(StepEnum.IB04_LineWait))
{
IB05_StopUp();
}
else if (MoveInfo.IsStep(StepEnum.IB06_WaitTime))
{
......
......@@ -49,8 +49,8 @@ namespace OnlineStore.XLRStore
}
else
{
btnReset.Enabled = false;
}
btnReset.Enabled = true;
}
}
catch (Exception ex)
{
......@@ -97,7 +97,7 @@ namespace OnlineStore.XLRStore
private void btnStart_Click(object sender, EventArgs e)
{
moveBean.Reset();
moveBean.Reset(true);
LogUtil.info(moveBean.Name + "点击:" + btnReset.Text);
}
......
......@@ -5,4 +5,13 @@ AA:第3和第4位存储机构A面或B面,AA或者BB
03:第5和第6位表示抽屉在第几行
04:第7和第8位表示抽屉在第几列
01:第9和第10位表示在抽屉中的第几行
02:第11和第12位表示在抽屉中的第几列
\ No newline at end of file
02:第11和第12位表示在抽屉中的第几列
批量轴回原点
如果旋转轴在暂存区,且在下暂存区,升降轴先到高位
旋转轴回待机点P1
升降轴回P1
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!