Commit e0e17dc7 LN

1.大料盘出库时,在料仓门口等待,等到拦截到托盘上后,再去流水线上方。

2.气缸动作代码调整.
1 个父辈 b42d2d18
......@@ -127,7 +127,7 @@ namespace OnlineStore.AssemblyLine
FormStatus(false);
}
}
lblMoveInfo.Text = equipBean.GetMoveStr();
lblMoveInfo.Text = equipBean.GetMoveStr()+"\r\n料仓类型:"+(equipBean.Config.IsBigTray.Equals(1)?"大料盘":"小料盘");
string canOut = LineManager.Line.CanOutStore(equipBean.DeviceID) ? "可出库" : "不可出库";
lblStoreStatus.Text = KTK_Store.GetRunStr(equipBean.lineStatus, equipBean.runStatus) + "(" + canOut + ")";
lblThisSta.Text = equipBean.WarnMsg;
......
......@@ -165,6 +165,21 @@ AIO的dll更新,增加重连功能。
20200228修改,横移机构可以同时存在两个托盘
20200229
1.大料盘出库时,在料仓门口等待,等到拦截到托盘上后,再去流水线上方。
2.气缸动作代码调整.
Config_MoveEquip_03.csv
Config_MoveEquip_04.csv
Config_MoveEquip_05.csv
Config_MoveEquip_06.csv
Config_MoveEquip_07.csv
Config_MoveEquip_10.csv
以上配置文件增加一行配置:
PRO,0,是否存放的大料盘,IsBigTray,1,,,,,
......
类型,分类编号,说明,名称,属性值,设备名称,默认值,描述,电器定义,代码定义
PRO,0,设备是否处于调试状态(1=调试,0=正常),IsDebug,0,,,,,
PRO,0,是否存放的大料盘,IsBigTray,1,,,,,
,,,,,,,,,
PRO,0,移栽上下运动是否使用伺服,UpDownUseAxis,1,,,,,
AXIS,0,移栽上下轴,UpDown_Axis,11,COM6,0,,,
......
类型,分类编号,说明,名称,属性值,设备名称,默认值,描述,电器定义,代码定义
PRO,0,设备是否处于调试状态(1=调试,0=正常),IsDebug,0,,,,,
PRO,0,是否存放的大料盘,IsBigTray,1,,,,,
,,,,,,,,,
PRO,0,移栽上下运动是否使用伺服,UpDownUseAxis,1,,,,,
AXIS,0,移栽上下轴,UpDown_Axis,12,COM6,0,,,
......
类型,分类编号,说明,名称,属性值,设备名称,默认值,描述,电器定义,代码定义
PRO,0,设备是否处于调试状态(1=调试,0=正常),IsDebug,0,,,,,
PRO,0,是否存放的大料盘,IsBigTray,1,,,,,
,,,,,,,,,
PRO,0,移栽上下运动是否使用伺服,UpDownUseAxis,1,,,,,
AXIS,0,移栽上下轴,UpDown_Axis,13,COM6,0,,,
......
类型,分类编号,说明,名称,属性值,设备名称,默认值,描述,电器定义,代码定义
PRO,0,设备是否处于调试状态(1=调试,0=正常),IsDebug,0,,,,,
PRO,0,是否存放的大料盘,IsBigTray,1,,,,,
,,,,,,,,,
PRO,0,移栽上下运动是否使用伺服,UpDownUseAxis,1,,,,,
AXIS,0,移栽上下轴,UpDown_Axis,14,COM6,0,,,
......
类型,分类编号,说明,名称,属性值,设备名称,默认值,描述,电器定义,代码定义
PRO,0,设备是否处于调试状态(1=调试,0=正常),IsDebug,0,,,,,
PRO,0,是否存放的大料盘,IsBigTray,1,,,,,
,,,,,,,,,
PRO,0,移栽上下运动是否使用伺服,UpDownUseAxis,1,,,,,
AXIS,0,移栽上下轴,UpDown_Axis,17,COM6,0,,,
......
类型,分类编号,说明,名称,属性值,设备名称,默认值,描述,电器定义,代码定义
PRO,0,设备是否处于调试状态(1=调试,0=正常),IsDebug,0,,,,,
PRO,0,是否存放的大料盘,IsBigTray,1,,,,,
,,,,,,,,,
PRO,0,移栽上下运动是否使用伺服,UpDownUseAxis,1,,,,,
AXIS,0,移栽上下轴,UpDown_Axis,18,COM6,0,,,
......
......@@ -1018,7 +1018,7 @@ namespace OnlineStore.DeviceLibrary
else if (move.MoveInfo.MoveStep.Equals(LineMoveStep.MO_56_CylinderAfter) && move.MoveInfo.IsInWait.Equals(false))
{
return true;
}
}
}
}
return false;
......
......@@ -57,13 +57,13 @@ namespace OnlineStore.DeviceLibrary
#region 移载装置 移栽物品操作
if (MoveInfo.MoveStep.Equals(LineMoveStep.MO_50_StartOutProcess))
{
MoveInfo.NextMoveStep(LineMoveStep.MO_51_CylinderBefore);
OutLog("出库 "+MoveInfo.MoveStep+": 前后气缸前进");
MoveInfo.NextMoveStep(LineMoveStep.MO_51_CylinderBefore);
OutLog("出库 " + MoveInfo.MoveStep + ": 前后气缸前进");
CylinderMove(MoveInfo, IO_Type.BeforeAfterCylinder_After, IO_Type.BeforeAfterCylinder_Before);
}
else if (MoveInfo.MoveStep.Equals(LineMoveStep.MO_51_CylinderBefore))
{
MoveInfo.NextMoveStep(LineMoveStep.MO_52_CylinderDown);
MoveInfo.NextMoveStep(LineMoveStep.MO_52_CylinderDown);
OutLog("出库 " + MoveInfo.SLog + ": 上下气缸下降 ");
UpdownDownP3Move(MoveInfo.MoveParam.PlateH);
// CylinderMove(MoveInfo, IO_Type.UpDownCylinder_Up, IO_Type.UpDownCylinder_Down);
......@@ -71,13 +71,13 @@ namespace OnlineStore.DeviceLibrary
else if (MoveInfo.MoveStep.Equals(LineMoveStep.MO_52_CylinderDown))
{
MoveInfo.NextMoveStep(LineMoveStep.MO_53_DownWait);
OutLog("出库 " + MoveInfo.SLog + ": 等待300ms后夹紧");
MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(300));
OutLog("出库 " + MoveInfo.SLog + ": 等待600ms后夹紧");
MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(600));
}
else if (MoveInfo.MoveStep.Equals(LineMoveStep.MO_53_DownWait))
{
MoveInfo.NextMoveStep(LineMoveStep.MO_54_CylinderOpen);
OutLog("出库 " + MoveInfo.SLog + ": 夹料气缸夹紧,更新料盘位置【"+MoveInfo.MoveParam.WareCode+"】【MOVING】【"+DeviceID+"】");
MoveInfo.NextMoveStep(LineMoveStep.MO_54_CylinderOpen);
OutLog("出库 " + MoveInfo.SLog + ": 夹料气缸夹紧,更新料盘位置【" + MoveInfo.MoveParam.WareCode + "】【MOVING】【" + DeviceID + "】");
CylinderMove(MoveInfo, IO_Type.ClampCylinder_Tighten, IO_Type.ClampCylinder_Slack);
//更新料盘位置
......@@ -94,18 +94,34 @@ namespace OnlineStore.DeviceLibrary
}
else if (MoveInfo.MoveStep.Equals(LineMoveStep.MO_55_CylinderUp))
{
MoveInfo.NextMoveStep(LineMoveStep.MO_56_CylinderAfter);
OutLog("出库 " + MoveInfo.SLog + ": 前后气缸后退");
CylinderMove(MoveInfo, IO_Type.BeforeAfterCylinder_Before, IO_Type.BeforeAfterCylinder_After);
if (IsBigStore())
{
if (TrayIsOk())
{
MoveInfo.NextMoveStep(LineMoveStep.MO_56_CylinderAfter);
MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(500));
OutLog("出库 " + MoveInfo.SLog + ": 前后气缸后退");
CylinderMove(MoveInfo, IO_Type.BeforeAfterCylinder_Before, IO_Type.BeforeAfterCylinder_After);
}
}
else
{
MoveInfo.NextMoveStep(LineMoveStep.MO_56_CylinderAfter);
MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(500));
OutLog("出库 " + MoveInfo.SLog + ": 前后气缸后退");
CylinderMove(MoveInfo, IO_Type.BeforeAfterCylinder_Before, IO_Type.BeforeAfterCylinder_After);
}
}
#endregion
#region 移载装置,放物品到流水线操作
else if ( MoveInfo.MoveStep.Equals(LineMoveStep.MO_56_CylinderAfter) )
else if (MoveInfo.MoveStep.Equals(LineMoveStep.MO_56_CylinderAfter))
{
if (SecondMoveInfo.MoveStep.Equals(LineMoveStep.MO_11_CodeRember) && !SecondMoveInfo.IsInWait)
{
//if (SecondMoveInfo.MoveStep.Equals(LineMoveStep.MO_11_CodeRember) && !SecondMoveInfo.IsInWait)
//{
if (TrayIsOk())
{
int trayNum = SecondMoveInfo.MoveParam.TrayNumber;
//去掉直接丢盘处理
MoveInfo.NextMoveStep(LineMoveStep.MO_58_CylinderDown);
......@@ -120,19 +136,20 @@ namespace OnlineStore.DeviceLibrary
}
//更新料盘位置
SServerManager.UpdateTrayLoc(Name, MoveInfo.MoveParam.WareCode, LocStatus.INLINE, "E"+trayNum.ToString().PadLeft(2,'0'));
SServerManager.UpdateTrayLoc(Name, MoveInfo.MoveParam.WareCode, LocStatus.INLINE, "E" + trayNum.ToString().PadLeft(2, '0'));
UpdownDownP2Move(MoveInfo.MoveParam.PlateH);
}
else if (MoveInfo.IsTimeOut(180))
{
WarnMsg = MoveInfo.Name + "[" + MoveInfo.MoveType + "][" + MoveInfo.SLog + "]等待空托盘到达超时[" + Math.Round(MoveInfo.StepSpan().TotalSeconds, 1) + "]秒";
LogUtil.error(WarnMsg, DeviceID + 12);
Alarm(LineAlarmType.IoSingleTimeOut);
}
//}
//else if (MoveInfo.IsTimeOut(180))
//{
// WarnMsg = MoveInfo.Name + "[" + MoveInfo.MoveType + "][" + MoveInfo.SLog + "]等待空托盘到达超时[" + Math.Round(MoveInfo.StepSpan().TotalSeconds, 1) + "]秒";
// LogUtil.error(WarnMsg, DeviceID + 12);
// Alarm(LineAlarmType.IoSingleTimeOut);
//}
}
else if (MoveInfo.MoveStep.Equals(LineMoveStep.MO_58_CylinderDown))
{
OutLog("出库 " + MoveInfo.SLog + ": 夹料气缸放松,更新托盘【" + MoveInfo.MoveParam.TrayNumber + "】,有料盘,OutStore,【" +MoveInfo.MoveParam.ToStr() + "】");
{
OutLog("出库 " + MoveInfo.SLog + ": 夹料气缸放松,更新托盘【" + MoveInfo.MoveParam.TrayNumber + "】,有料盘,OutStore,【" + MoveInfo.MoveParam.ToStr() + "】");
TrayManager.UpdateTrayInfo(MoveInfo.MoveParam.TrayNumber, true, ReelType.OutStore, MoveInfo.MoveParam);
//出库全部完成
......@@ -149,7 +166,7 @@ namespace OnlineStore.DeviceLibrary
else if (MoveInfo.MoveStep.Equals(LineMoveStep.MO_60_CylinderUp))
{
// 减去需要的盘数
// TrayManager.DelNeedEmptyTrayNum();
// TrayManager.DelNeedEmptyTrayNum();
SOutLog("出库 :移栽完成,放行托盘");
SecondMoveInfo.NewMove(LineMoveType.CheckFixture);
SecondMoveInfo.NextMoveStep(LineMoveStep.MO_14_TopDown);
......@@ -161,8 +178,25 @@ namespace OnlineStore.DeviceLibrary
#endregion
}
private bool TrayIsOk()
{
if (SecondMoveInfo.MoveStep.Equals(LineMoveStep.MO_11_CodeRember) && !SecondMoveInfo.IsInWait)
{
return true;
}
else if (MoveInfo.IsTimeOut(180))
{
WarnMsg = MoveInfo.Name + "[" + MoveInfo.MoveType + "][" + MoveInfo.SLog + "]等待空托盘到达超时[" + Math.Round(MoveInfo.StepSpan().TotalSeconds, 1) + "]秒";
LogUtil.error(WarnMsg, DeviceID + 12);
Alarm(LineAlarmType.IoSingleTimeOut);
return false;
}
return false;
}
private bool IsBigStore()
{
return Config.IsBigTray.Equals(1);
}
#endregion
#region 入库
......@@ -178,10 +212,14 @@ namespace OnlineStore.DeviceLibrary
lineStatus = LineStatus.InStoreExecute;
MoveInfo.MoveParam = param;
MoveInfo.NewMove(LineMoveType.InStore);
LogInfo("入库【" + posId + "】处理(移栽):(MI_07_CylinderDown,上下气缸下降)");
MoveInfo.NextMoveStep(LineMoveStep.MI_06_CylinderDown);
LogInfo("入库【" + posId + "】处理(移栽):MI_05_ToLineUp, 前后气缸后退)");
//MoveInfo.NextMoveStep(LineMoveStep.MI_06_CylinderDown);
//MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(1000));
//UpdownDownP2Move(MoveInfo.MoveParam.PlateH);
MoveInfo.NextMoveStep(LineMoveStep.MI_05_ToLineUp);
MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(1000));
UpdownDownP2Move(MoveInfo.MoveParam.PlateH);
CylinderMove(MoveInfo, IO_Type.BeforeAfterCylinder_Before, IO_Type.BeforeAfterCylinder_After);
return true;
}
else
......@@ -205,11 +243,18 @@ namespace OnlineStore.DeviceLibrary
return;
}
string posId = MoveInfo.MoveParam != null ? MoveInfo.MoveParam.PosId : "";
if (MoveInfo.MoveStep.Equals(LineMoveStep.MI_06_CylinderDown))
if (MoveInfo.MoveStep.Equals(LineMoveStep.MI_05_ToLineUp))
{
MoveInfo.NextMoveStep(LineMoveStep.MI_06_CylinderDown);
InLog("入库 " + MoveInfo.SLog + ": 升降下降");
MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(1000));
UpdownDownP2Move(MoveInfo.MoveParam.PlateH);
}
else if (MoveInfo.MoveStep.Equals(LineMoveStep.MI_06_CylinderDown))
{
MoveInfo.NextMoveStep(LineMoveStep.MI_07_DownWait);
InLog("入库 " + MoveInfo.SLog + ": 等待300ms后夹紧");
MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(300));
InLog("入库 " + MoveInfo.SLog + ": 等待600ms后夹紧");
MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(600));
}
//只有当BOX可以进行出入库时,移栽物品,防止卡住
else if (MoveInfo.MoveStep.Equals(LineMoveStep.MI_07_DownWait))
......@@ -230,7 +275,7 @@ namespace OnlineStore.DeviceLibrary
MoveInfo.NextMoveStep(LineMoveStep.MI_10_WaitBox);
LogInfo("入库【" + posId + "】 " + MoveInfo.SLog + ": 等待box可入库,更新托盘【" + num + "】为空盘");
MoveInfo.WaitList.Add(WaitResultInfo.WaitBoxCanReviceTray());
TrayManager.UpdateTrayInfo(num );
TrayManager.UpdateTrayInfo(num);
//阻挡气缸移动
SecondMoveInfo.NewMove(LineMoveType.CheckFixture);
......@@ -269,9 +314,9 @@ namespace OnlineStore.DeviceLibrary
CylinderMove(MoveInfo, IO_Type.BeforeAfterCylinder_Before, IO_Type.BeforeAfterCylinder_After);
MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(1000));
//此时box就可以入库操作了 //触发事件,BOX入库
// LineServer.StartInStore(DeviceID, MoveInfo.MoveParam);
// LineServer.StartInStore(DeviceID, MoveInfo.MoveParam);
}
else if (MoveInfo.MoveStep.Equals(LineMoveStep.MI_14_CylinderAfter))
{
MoveInfo.NextMoveStep(LineMoveStep.MI_15_SendPosToStore);
......@@ -348,9 +393,13 @@ namespace OnlineStore.DeviceLibrary
private bool CheckIsNeedOutStore()
{
bool isFull = TrayManager.TrayIsFull(currTrayNum);
if (MoveInfo.MoveType.Equals(LineMoveType.OutStore) && (MoveInfo.MoveStep >= LineMoveStep.MO_56_CylinderAfter)
bool moveOk = (IsBigStore() && MoveInfo.MoveStep >= LineMoveStep.MO_55_CylinderUp) || MoveInfo.MoveStep >= LineMoveStep.MO_56_CylinderAfter;
if (MoveInfo.MoveType.Equals(LineMoveType.OutStore) && moveOk
&& (!MoveInfo.MoveStep.Equals(LineMoveStep.MO_60_CylinderUp)))
{
if (isFull.Equals(false))
{
LogInfo(" 出库中,拦截空托盘【 " + currTrayNum + "】~");
......
......@@ -373,9 +373,10 @@ namespace OnlineStore.DeviceLibrary
}
public void CylinderMove(LineMoveInfo moveInfo, string IoLowType, string IoHighType, bool isCheckMove = false)
{
{
try
{
if (baseConfig.DType.Equals(DeviceType.FeedingEquip))
{
if (!baseConfig.DOList.ContainsKey(IoLowType))
......@@ -387,6 +388,18 @@ namespace OnlineStore.DeviceLibrary
return;
}
}
if (moveInfo != null)
{
moveInfo.WaitList.Add(WaitResultInfo.WaitIO(IoLowType, IO_VALUE.LOW));
moveInfo.WaitList.Add(WaitResultInfo.WaitIO(IoHighType, IO_VALUE.HIGH));
if (IoHighType.Equals(IO_Type.ClampCylinder_Slack) || IoHighType.Equals(IO_Type.ClampCylinder_Tighten) ||
IoHighType.Equals(IO_Type.UpDownCylinder_Down) || IoHighType.Equals(IO_Type.UpDownCylinder_Up) ||
IoHighType.Equals(IO_Type.BeforeAfterCylinder_After) || IoHighType.Equals(IO_Type.BeforeAfterCylinder_Before)
)
{
moveInfo.WaitList.Add(WaitResultInfo.WaitTime(300));
}
}
if (isCheckMove)
{
CheckAndMove(IoLowType, IO_VALUE.LOW);
......@@ -401,11 +414,7 @@ namespace OnlineStore.DeviceLibrary
{
LogUtil.error(Name + "CylinderMove ["+moveInfo.Name+"] ["+IoLowType+"] ["+IoHighType+"] ["+isCheckMove+"] 出错:"+ex.ToString());
}
if (moveInfo != null)
{
moveInfo.WaitList.Add(WaitResultInfo.WaitIO(IoLowType, IO_VALUE.LOW));
moveInfo.WaitList.Add(WaitResultInfo.WaitIO(IoHighType, IO_VALUE.HIGH));
}
}
public void CheckAndMove(string IoType, IO_VALUE value)
{
......
......@@ -193,9 +193,9 @@ namespace OnlineStore.DeviceLibrary
#region 移载装置入库处理 3000-3050
/// <summary>
///移载装置入库处理,检测 夹具编码
///移载装置入库处理,横移气缸到流水线上方
/// </summary>
MI_05_CodeCheck = 3005,
MI_05_ToLineUp = 3005,
/// <summary>
///移载装置入库处理,编码与仓位一致,上下气缸1下降
......
......@@ -20,7 +20,11 @@ namespace OnlineStore.LoadCSVLibrary
{
}
/// <summary>
/// PRO,0,是否存放的大料盘,IsBigTray,1,,,,,
/// </summary>
[ConfigProAttribute("IsBigTray",false)]
public int IsBigTray { get; set; }
/// <summary>
/// 设备是否处于调试状态(1=调试,0=正常)
/// </summary>
......
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!