Skip to content
切换导航条
切换导航条
当前项目
正在载入...
登录
李娜
/
SO664-AssemblyLine
转到一个项目
切换导航栏
切换导航栏固定状态
项目
群组
代码片段
帮助
项目
活动
版本库
流水线
图表
问题
0
合并请求
0
维基
网络
创建新的问题
作业
提交
问题看板
文件
提交
网络
比较
分支
标签
Commit 6083c6ac
由
LN
编写于
2022-11-24 13:33:02 +0800
浏览文件
选项
浏览文件
标签
下载
电子邮件补丁
差异文件
未抓起料盘问题优化
1 个父辈
f5560e6b
隐藏空白字符变更
内嵌
并排
正在显示
4 个修改的文件
包含
163 行增加
和
32 行删除
source/AssemblyLineClient/记录.txt
source/DeviceLibrary/assemblyLine/HY/HY_Coveryor_Partial.cs
source/DeviceLibrary/assemblyLine/MoveEquip_Partial.cs
source/DeviceLibrary/model/StoreStep.cs
source/AssemblyLineClient/记录.txt
查看文件 @
6083c6a
...
...
@@ -268,6 +268,10 @@ T5上料时,T4的托盘没有等待。
20221118:
出库仓门口抓料,夹爪未检测到料盘信号时不报警,只打印日志,正常走流程。
入库托盘抓料,夹爪未检测到料盘信号时,直接放料盘到托盘,并标记托盘NG,取消入库任务,到NG位取消入库任务
接驳台托盘上料未抓起来时,记录NG,继续放一遍。上升后接驳台若有料,发到达,清空托盘,若无料,标记托盘NG
source/DeviceLibrary/assemblyLine/HY/HY_Coveryor_Partial.cs
查看文件 @
6083c6a
...
...
@@ -377,9 +377,17 @@ namespace OnlineStore.DeviceLibrary
if
(
SecondMoveInfo
.
IsStep
(
LineMoveStep
.
JHY_09_WaitProcessReel
))
{
SecondMoveInfo
.
NextMoveStep
(
LineMoveStep
.
JHY_10_ReelProEnd
);
OutLog
(
Name
+
" 料盘已移走,更新托盘["
+
currTrayNum
+
"]为空"
);
CheckLog
(
" 接驳台托盘"
+
SecondMoveInfo
.
SLog
+
":料盘已移走,更新托盘["
+
currTrayNum
+
"]为空"
);
TrayManager
.
UpdateTrayInfo
(
currTrayNum
);
if
(
IsNgPro
())
{
OutLog
(
Name
+
" 料盘已移走,更新托盘["
+
currTrayNum
+
"]为空"
);
CheckLog
(
" 接驳台托盘"
+
SecondMoveInfo
.
SLog
+
":料盘已移走,更新托盘["
+
currTrayNum
+
"]为空"
);
TrayManager
.
UpdateTrayInfo
(
currTrayNum
);
}
else
{
OutLog
(
Name
+
" 料盘已移走,暂不更新托盘["
+
currTrayNum
+
"],先放托盘离开"
);
CheckLog
(
" 接驳台托盘"
+
SecondMoveInfo
.
SLog
+
":料盘已移走,暂不更新托盘["
+
currTrayNum
+
"],先放托盘离开"
);
}
}
else
{
...
...
@@ -522,6 +530,10 @@ namespace OnlineStore.DeviceLibrary
/// 紧急料,afterPut是否发送完成
/// </summary>
private
bool
afterPutCutOK
=
false
;
/// <summary>
/// 从托盘上抓料是否正常抓起来
/// </summary>
private
bool
getTrayReelOk
=
true
;
protected
override
void
OutStoreProcess
()
{
...
...
@@ -572,17 +584,33 @@ namespace OnlineStore.DeviceLibrary
else
if
(
MoveInfo
.
IsStep
(
LineMoveStep
.
JM_05_ClampWork
))
{
MoveInfo
.
NextMoveStep
(
LineMoveStep
.
JM_06_UpdownToP1
);
OutLog
(
logName
+
MoveInfo
.
SLog
+
":升降轴到P1 ["
+
Config
.
UpDownAxisP1
+
"]"
);
OutLog
(
logName
+
MoveInfo
.
SLog
+
":升降轴到P1 ["
+
Config
.
UpDownAxisP1
+
"]
,更新 getTrayReelOk=true
"
);
UpdownAxis
.
AbsMove
(
MoveInfo
,
Config
.
UpDownAxisP1
,
Config
.
UpdownAxis_P1Speed
);
getTrayReelOk
=
true
;
}
else
if
(
MoveInfo
.
IsStep
(
LineMoveStep
.
JM_06_UpdownToP1
))
{
MoveInfo
.
NextMoveStep
(
LineMoveStep
.
JM_07_ClampCheck
);
OutLog
(
logName
+
MoveInfo
.
SLog
+
":夹爪料盘检测有料 "
);
MoveInfo
.
WaitList
.
Add
(
WaitResultInfo
.
WaitIO
(
IO_Type
.
HY_ClampCylinder_Check
,
IO_VALUE
.
HIGH
));
if
(
IsNgPro
())
{
OutLog
(
logName
+
MoveInfo
.
SLog
+
":夹爪料盘检测有料 "
);
}
else
{
OutLog
(
logName
+
MoveInfo
.
SLog
+
":夹爪料盘检测有料,超时时间1000 "
);
MoveInfo
.
WaitList
.
Add
(
WaitResultInfo
.
WaitTime
(
1000
));
MoveInfo
.
OneWaitCanEndStep
=
true
;
}
}
else
if
(
MoveInfo
.
IsStep
(
LineMoveStep
.
JM_07_ClampCheck
))
{
//判断是否正常抓取料
if
(
IOValue
(
IO_Type
.
HY_ClampCylinder_Check
).
Equals
(
IO_VALUE
.
LOW
))
{
getTrayReelOk
=
false
;
LogInfo
(
"从托盘["
+
currTrayNum
+
"]上抓取无料失败,夹爪气缸料盘检测信号=LOW"
);
}
TrayCanGo
();
if
(
IsNgPro
())
{
...
...
@@ -621,19 +649,64 @@ namespace OnlineStore.DeviceLibrary
}
else
if
(
MoveInfo
.
IsStep
(
LineMoveStep
.
JM_13_ClampRelax
))
{
afterPutCutOK
=
false
;
MoveInfo
.
NextMoveStep
(
LineMoveStep
.
JM_14_UpdownToP1
);
OutLog
(
logName
+
MoveInfo
.
SLog
+
":升降轴上升到P1 ["
+
Config
.
UpDownAxisP1
+
"] "
);
UpdownAxis
.
AbsMove
(
MoveInfo
,
Config
.
UpDownAxisP1
,
Config
.
UpdownAxis_P1Speed
);
}
else
if
(
MoveInfo
.
IsStep
(
LineMoveStep
.
JM_14_UpdownToP1
))
{
MoveInfo
.
NextMoveStep
(
LineMoveStep
.
JM_15_ClampCheck
);
OutLog
(
logName
+
MoveInfo
.
SLog
+
":夹爪料盘检测无料,接驳台有料 "
);
MoveInfo
.
WaitList
.
Add
(
WaitResultInfo
.
WaitIO
(
IO_Type
.
HY_ClampCylinder_Check
,
IO_VALUE
.
LOW
));
if
(!
IsNgPro
())
if
(
IsNgPro
())
{
MoveInfo
.
WaitList
.
Add
(
WaitResultInfo
.
WaitIO
(
IO_Type
.
HY_TrayCheck1
,
IO_VALUE
.
HIGH
));
MoveInfo
.
NextMoveStep
(
LineMoveStep
.
JM_15_ClampCheck
);
OutLog
(
logName
+
MoveInfo
.
SLog
+
":夹爪料盘检测无料,接驳台有料 "
);
MoveInfo
.
WaitList
.
Add
(
WaitResultInfo
.
WaitIO
(
IO_Type
.
HY_ClampCylinder_Check
,
IO_VALUE
.
LOW
));
}
else
{
string
code
=
MoveInfo
.
MoveParam
.
WareCode
;
if
(
IOValue
(
IO_Type
.
HY_TrayCheck1
).
Equals
(
IO_VALUE
.
HIGH
)
&&(!
getTrayReelOk
))
{
//接驳台有料,直接发arrive
int
robotIndex
=
GetRobotIndex
();
string
msg
=
SServerManager
.
arrive3fRobotLocation
(
Name
,
robotIndex
,
code
);
OutLog
(
logName
+
MoveInfo
.
SLog
+
",工单料到达接驳台,更新托盘["
+
currTrayNum
+
"]为空 ,发送 arrive3fRobotLocation = "
+
msg
);
afterPutCutOK
=
true
;
//清空托盘
TrayManager
.
UpdateTrayInfo
(
currTrayNum
);
}
else
{
//无料发取消任务
int
robotIndex
=
GetRobotIndex
();
string
msg
=
SServerManager
.
clearOutTask
(
Name
,
code
);
afterPutCutOK
=
true
;
if
(
getTrayReelOk
)
{
OutLog
(
logName
+
MoveInfo
.
SLog
+
",工单料到达接驳台失败 ,更新托盘["
+
currTrayNum
+
"]为NG ,发送 clearOutTask="
+
msg
);
//更新托盘为NG
TrayManager
.
UpdateInStoreNG
(
currTrayNum
,
true
,
"工单料放料到接驳台失败"
);
}
else
{
OutLog
(
logName
+
MoveInfo
.
SLog
+
",工单料到达接驳台失败 (未抓起料盘),更新托盘["
+
currTrayNum
+
"]为NG ,发送 clearOutTask="
+
msg
);
//更新托盘为NG
TrayManager
.
UpdateInStoreNG
(
currTrayNum
,
true
,
"工单料放料到接驳台失败(未抓起料盘)"
);
}
}
MoveInfo
.
NextMoveStep
(
LineMoveStep
.
JM_15_ClampCheck
);
OutLog
(
logName
+
MoveInfo
.
SLog
+
":夹爪料盘检测无料 "
);
MoveInfo
.
WaitList
.
Add
(
WaitResultInfo
.
WaitIO
(
IO_Type
.
HY_ClampCylinder_Check
,
IO_VALUE
.
LOW
));
}
//MoveInfo.NextMoveStep(LineMoveStep.JM_15_ClampCheck);
//OutLog(logName + MoveInfo.SLog + ":夹爪料盘检测无料,接驳台有料 ");
//MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.HY_ClampCylinder_Check, IO_VALUE.LOW));
//if (!IsNgPro())
//{
// MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.HY_TrayCheck1, IO_VALUE.HIGH));
//}
}
else
if
(
MoveInfo
.
IsStep
(
LineMoveStep
.
JM_15_ClampCheck
))
{
...
...
@@ -641,7 +714,6 @@ namespace OnlineStore.DeviceLibrary
MoveInfo
.
WaitList
.
Add
(
WaitResultInfo
.
WaitTime
(
1000
));
CylinderMove
(
null
,
IO_Type
.
HY_MoveCylinder_Give
,
IO_Type
.
HY_MoveCylinder_Take
);
afterPutCutOK
=
false
;
string
code
=
MoveInfo
.
MoveParam
.
WareCode
;
if
(
MoveInfo
.
MoveParam
.
urgentReel
)
{
...
...
@@ -650,17 +722,17 @@ namespace OnlineStore.DeviceLibrary
string
msg
=
SServerManager
.
afterPutCut
(
Name
,
"BN"
,
code
,
""
,
1
,
out
taskData
);
afterPutCutOK
=
true
;
}
else
if
(!
MoveInfo
.
MoveParam
.
IsNG
)
{
int
robotIndex
=
GetRobotIndex
();
OutLog
(
logName
+
MoveInfo
.
SLog
+
",工单料到达接驳台,发送 arrive3fRobotLocation "
);
string
msg
=
SServerManager
.
arrive3fRobotLocation
(
Name
,
robotIndex
,
code
);
afterPutCutOK
=
true
;
}
else
{
afterPutCutOK
=
true
;
}
//
else if (!MoveInfo.MoveParam.IsNG)
//
{
//
int robotIndex = GetRobotIndex();
//
OutLog(logName + MoveInfo.SLog + ",工单料到达接驳台,发送 arrive3fRobotLocation ");
//
string msg = SServerManager.arrive3fRobotLocation(Name, robotIndex, code);
//
afterPutCutOK = true;
//
}
//
else
//
{
//
afterPutCutOK = true;
//
}
//TrayCanGo();
}
else
if
(
MoveInfo
.
IsStep
(
LineMoveStep
.
JM_16_ReelArrive
))
...
...
source/DeviceLibrary/assemblyLine/MoveEquip_Partial.cs
查看文件 @
6083c6a
...
...
@@ -138,7 +138,8 @@ namespace OnlineStore.DeviceLibrary
else
{
MoveInfo
.
WaitList
.
Add
(
WaitResultInfo
.
WaitTime
(
200
));
OutLog
(
"出库 "
+
MoveInfo
.
SLog
+
": 检测夹爪料盘检测=HIGH"
);
OutLog
(
"出库 "
+
MoveInfo
.
SLog
+
": 检测夹爪料盘检测=HIGH ,超时200ms"
);
MoveInfo
.
OneWaitCanEndStep
=
true
;
MoveInfo
.
WaitList
.
Add
(
WaitResultInfo
.
WaitIO
(
IO_Type
.
ClampCylinder_Check
,
IO_VALUE
.
HIGH
));
}
}
...
...
@@ -146,6 +147,13 @@ namespace OnlineStore.DeviceLibrary
{
if
(
UpdownIsUp
())
{
//判断夹爪是否有料,无料打印日志
if
(
IOValue
(
IO_Type
.
ClampCylinder_Check
).
Equals
(
IO_VALUE
.
LOW
))
{
OutLog
(
"出库 "
+
MoveInfo
.
SLog
+
": 夹爪料盘检测信号=LOW"
);
}
if
(
IOValue
(
IO_Type
.
ClampCylinder_Check
).
Equals
(
IO_VALUE
.
HIGH
))
{
if
(
IsBigStore
())
...
...
@@ -387,20 +395,50 @@ namespace OnlineStore.DeviceLibrary
}
else
{
int
num
=
MoveInfo
.
MoveParam
.
TrayNumber
;
InLog
(
"入库 "
+
MoveInfo
.
SLog
+
":抓取料盘失败,取消入库任务,清空托盘["
+
num
+
"]信息。报警:未抓起料盘,请取走料盘后复位。"
);
//未抓起料盘,直接报警
MoveInfo
.
NextMoveStep
(
LineMoveStep
.
MI_07_ClampCheck
);
MoveInfo
.
WaitList
.
Add
(
WaitResultInfo
.
WaitNoTrayAlarm
());
SetWarnMsg
(
"未抓起料盘,请取走料盘后复位"
,
MoveInfo
.
GetStepDes
()
+
"_"
+
"未抓起料"
,
MoveInfo
);
Alarm
(
LineAlarmType
.
IoSingleTimeOut
);
//
int num = MoveInfo.MoveParam.TrayNumber;
//
InLog("入库 " + MoveInfo.SLog + ":抓取料盘失败,取消入库任务,清空托盘[" + num + "]信息。报警:未抓起料盘,请取走料盘后复位。");
//
//
未抓起料盘,直接报警
//
MoveInfo.NextMoveStep(LineMoveStep.MI_07_ClampCheck);
//
MoveInfo.WaitList.Add(WaitResultInfo.WaitNoTrayAlarm());
//
SetWarnMsg("未抓起料盘,请取走料盘后复位", MoveInfo.GetStepDes() + "_" + "未抓起料", MoveInfo);
//
Alarm(LineAlarmType.IoSingleTimeOut);
//TrayInfo tray = TrayManager.GetTrayInfo(num);
//LogUtil.error(Name + " 抓料失败自动清空入库任务 :" + tray.InoutPar.ToStr());
//TrayManager.ClearInstore(tray, "抓料失败自动清空入库任务");
//TrayManager.UpdateTrayInfo(num);
MoveInfo
.
NextMoveStep
(
LineMoveStep
.
MI_21_CylinderDown
);
int
num
=
MoveInfo
.
MoveParam
.
TrayNumber
;
InLog
(
"入库 "
+
MoveInfo
.
SLog
+
":抓取料盘失败,取消入库任务,更新托盘["
+
num
+
"]为NG ,将料再放到托盘上"
);
MoveInfo
.
WaitList
.
Add
(
WaitResultInfo
.
WaitTime
(
200
));
UpdownDownP2Move
(
MoveInfo
.
MoveParam
.
PlateH
,
MoveInfo
.
MoveParam
.
PlateW
);
TrayInfo
tray
=
TrayManager
.
GetTrayInfo
(
num
);
LogUtil
.
error
(
Name
+
" 抓料失败自动清空入库任务 :"
+
tray
.
InoutPar
.
ToStr
());
TrayManager
.
ClearInstore
(
tray
,
"抓料失败自动清空入库任务"
);
TrayManager
.
UpdateTrayInfo
(
num
);
TrayManager
.
UpdateInStoreNG
(
num
,
true
,
"入库抓料失败"
);
InLog
(
"入库: "
+
MoveInfo
.
SLog
+
" 抓料失败,升降气缸下降"
);
}
}
else
if
(
MoveInfo
.
IsStep
(
LineMoveStep
.
MI_21_CylinderDown
))
{
MoveInfo
.
NextMoveStep
(
LineMoveStep
.
MI_22_CylinderRelax
);
InLog
(
"入库: "
+
MoveInfo
.
SLog
+
" 抓料失败,夹爪放松"
);
CylinderMove
(
MoveInfo
,
IO_Type
.
ClampCylinder_Work
,
IO_Type
.
ClampCylinder_Relax
);
}
else
if
(
MoveInfo
.
IsStep
(
LineMoveStep
.
MI_22_CylinderRelax
))
{
MoveInfo
.
NextMoveStep
(
LineMoveStep
.
MI_23_UpdownUp
);
InLog
(
"入库: "
+
MoveInfo
.
SLog
+
" 抓料失败,升降上升"
);
UpdownUpMove
();
}
else
if
(
MoveInfo
.
IsStep
(
LineMoveStep
.
MI_23_UpdownUp
))
{
LogInfo
(
"入库【"
+
posId
+
"】抓料失败,已放料回托盘,放托盘离开"
);
InLog
(
"放托盘(放开阻挡): "
+
MoveInfo
.
SLog
+
" 物品已移走,顶升气缸1下降"
);
SecondMoveInfo
.
NextMoveStep
(
LineMoveStep
.
MO_14_TopDown
);
CylinderMove
(
SecondMoveInfo
,
IO_Type
.
TopCylinder_Up
,
IO_Type
.
TopCylinder_Down
);
MoveEndS
();
}
else
if
(
MoveInfo
.
IsStep
(
LineMoveStep
.
MI_10_WaitBox
))
{
if
(
UpdownIsUp
())
...
...
source/DeviceLibrary/model/StoreStep.cs
查看文件 @
6083c6a
...
...
@@ -255,6 +255,23 @@ namespace OnlineStore.DeviceLibrary
///// </summary>
//MI_23_StopCylinderReset,
/// <summary>
///抓料失败:放料到托盘,升降气缸下降
/// </summary>
[
Description
(
"入库_抓料失败_升降气缸下降"
)]
MI_21_CylinderDown
=
1121
,
/// <summary>
///抓料失败:放料到托盘 夹爪放松
/// </summary>
[
Description
(
"入库_放料_夹料气缸放松"
)]
MI_22_CylinderRelax
,
/// <summary>
///抓料失败:放料到托盘 升级气缸上升
/// </summary>
[
Description
(
"入库_放料完成_升降气缸上升"
)]
MI_23_UpdownUp
,
#
endregion
#
region
移栽装置出入库共同模块
1180
-
1200
...
...
编写
预览
支持
Markdown
格式
附加文件
你添加了
0
人
到此讨论。请谨慎行事。
Finish editing this message first!
Cancel
请
注册
或
登录
后发表评论