Skip to content
切换导航条
切换导航条
当前项目
正在载入...
登录
孙克
/
RC1250-ACPackingStore
转到一个项目
切换导航栏
切换导航栏固定状态
项目
群组
代码片段
帮助
项目
活动
版本库
流水线
图表
问题
0
合并请求
0
维基
网络
创建新的问题
作业
提交
问题看板
文件
提交
网络
比较
分支
标签
Commit 55fab928
由
LN
编写于
2020-02-17 17:15:57 +0800
浏览文件
选项
浏览文件
标签
下载
电子邮件补丁
差异文件
送出料架需要等待agvReady
1 个父辈
810fa969
隐藏空白字符变更
内嵌
并排
正在显示
3 个修改的文件
包含
65 行增加
和
57 行删除
source/DeviceLibrary/ACPackingStore/AC_BOX_Bean_Partial.cs
source/DeviceLibrary/ACPackingStore/AC_BOX_Bean_Shelf.cs
source/DeviceLibrary/store/StoreStep.cs
source/DeviceLibrary/ACPackingStore/AC_BOX_Bean_Partial.cs
查看文件 @
55fab92
...
...
@@ -62,6 +62,11 @@ namespace OnlineStore.DeviceLibrary
wait
.
IsEnd
=
IOValue
(
wait
.
IoType
).
Equals
(
wait
.
IoValue
);
int
timeOutMs
=
Config
.
IOSingle_TimerOut
;
if
(
MoveInfo
.
MoveStep
.
Equals
(
StoreMoveStep
.
BS_07_WaitInLineSingle
)||
MoveInfo
.
MoveStep
.
Equals
(
StoreMoveStep
.
BI_04_WaitTakeSingle
))
{
timeOutMs
=
30000
;
}
if
((!
wait
.
IsEnd
)
&&
span
.
TotalMilliseconds
>
timeOutMs
&&
NoAlarm
())
{
ConfigIO
io
=
Config
.
getWaitIO
(
wait
.
IoType
);
...
...
@@ -111,7 +116,7 @@ namespace OnlineStore.DeviceLibrary
if
(!
wait
.
IsEnd
&&
span
.
TotalSeconds
>
10
)
{
//如果是等待AGV到达,等待有料架信号也算结束
if
(
wait
.
AgvAction
.
Equals
((
int
)
ClientAction
.
Arrive
)
&&
MoveInfo
.
MoveStep
.
Equals
(
StoreMoveStep
.
BI_0
1
_ReadyShelf
))
if
(
wait
.
AgvAction
.
Equals
((
int
)
ClientAction
.
Arrive
)
&&
MoveInfo
.
MoveStep
.
Equals
(
StoreMoveStep
.
BI_0
0
_ReadyShelf
))
{
if
(
IOValue
(
IO_Type
.
LineTake_Check
).
Equals
(
IO_VALUE
.
HIGH
))
{
...
...
@@ -124,14 +129,14 @@ namespace OnlineStore.DeviceLibrary
wait
.
IsEnd
=
true
;
}
}
else
if
(
wait
.
AgvAction
.
Equals
((
int
)
ClientAction
.
FinishLeave
))
{
if
(
IOValue
(
IO_Type
.
LineTake_Check
).
Equals
(
IO_VALUE
.
LOW
)
&&
IOValue
(
IO_Type
.
LineIn_Check
).
Equals
(
IO_VALUE
.
LOW
))
{
LogInfo
(
"等待agv离开FinishOut,检测到 LineTake_Check和LineIn_Check都没有信号,结束等待"
);
wait
.
IsEnd
=
true
;
}
}
//
else if (wait.AgvAction.Equals((int)ClientAction.FinishLeave))
//
{
//
if (IOValue(IO_Type.LineTake_Check).Equals(IO_VALUE.LOW) && IOValue(IO_Type.LineIn_Check).Equals(IO_VALUE.LOW))
//
{
//
LogInfo("等待agv离开FinishOut,检测到 LineTake_Check和LineIn_Check都没有信号,结束等待");
//
wait.IsEnd = true;
//
}
//
}
}
}
if
(
wait
.
IsEnd
)
...
...
@@ -252,7 +257,7 @@ namespace OnlineStore.DeviceLibrary
MoveInfo
.
NewMove
(
StoreMoveType
.
InStore
,
new
InOutParam
());
MoveInfo
.
MoveParam
.
MoveP
=
new
LineMoveP
(
Config
);
MoveInfo
.
ShelfPositionList
=
new
List
<
string
>(
ShelfPosList
);
MoveInfo
.
NextMoveStep
(
StoreMoveStep
.
BI_0
2
_DoorOpen
);
MoveInfo
.
NextMoveStep
(
StoreMoveStep
.
BI_0
1
_DoorOpen
);
LogInfo
(
" 空闲中,检测到入料口有料架,启动料架入库 "
+
MoveInfo
.
SLog
+
""
);
// CylinderMove(MoveInfo, IO_Type.EntranceDoor_Close, IO_Type.EntranceDoor_Open);
// DoorBean.StartOpen(MoveInfo);
...
...
@@ -272,7 +277,7 @@ namespace OnlineStore.DeviceLibrary
MoveInfo
.
NewMove
(
StoreMoveType
.
InStore
,
new
InOutParam
());
MoveInfo
.
MoveParam
.
MoveP
=
new
LineMoveP
(
Config
);
MoveInfo
.
ShelfPositionList
=
new
List
<
string
>(
ShelfPosList
);
MoveInfo
.
NextMoveStep
(
StoreMoveStep
.
BI_0
2
_DoorOpen
);
MoveInfo
.
NextMoveStep
(
StoreMoveStep
.
BI_0
1
_DoorOpen
);
DoorBean
.
StartOpen
(
MoveInfo
);
}
...
...
@@ -735,7 +740,7 @@ namespace OnlineStore.DeviceLibrary
//当前无料架,或料架位置为空
if
((
IOValue
(
IO_Type
.
LineTake_Check
).
Equals
(
IO_VALUE
.
LOW
)
&&
MoveInfo
.
MoveParam
.
NeedEnterShelf
)
||
MoveInfo
.
MoveParam
.
ShelfPosID
.
Equals
(
""
))
{
MoveInfo
.
NextMoveStep
(
StoreMoveStep
.
BI_0
1
_ReadyShelf
);
MoveInfo
.
NextMoveStep
(
StoreMoveStep
.
BI_0
0
_ReadyShelf
);
InOutStoreLog
(
"出库 "
+
MoveInfo
.
SLog
+
": 通知agv调度准备带料架的agv,等待agv到达或检测到料架信号,进出轴到P1"
);
InOutBackToP1
(
MoveInfo
.
MoveParam
.
MoveP
.
InOut_P1
);
//需要先叫agv到达
...
...
source/DeviceLibrary/ACPackingStore/AC_BOX_Bean_Shelf.cs
查看文件 @
55fab92
...
...
@@ -17,7 +17,7 @@ namespace OnlineStore.DeviceLibrary
private
void
BI_04_WaitTakeSingle
(
string
moveName
)
{
MoveInfo
.
NextMoveStep
(
StoreMoveStep
.
BI_04_WaitTakeSingle
);
MoveInfo
.
NextMoveStep
(
StoreMoveStep
.
BI_04_WaitTakeSingle
);
InOutStoreLog
(
moveName
+
MoveInfo
.
SLog
+
" 线体正转,等待LineIn_Check=Low, 信号LineTake_Check=High"
);
LineRun
();
MoveInfo
.
WaitList
.
Add
(
WaitResultInfo
.
WaitIO
(
IO_Type
.
LineIn_Check
,
IO_VALUE
.
LOW
));
...
...
@@ -32,7 +32,7 @@ namespace OnlineStore.DeviceLibrary
instoreShelf
=
false
;
moveName
=
"空料架进入"
;
}
if
(
MoveInfo
.
MoveStep
.
Equals
(
StoreMoveStep
.
BI_0
1
_ReadyShelf
))
if
(
MoveInfo
.
MoveStep
.
Equals
(
StoreMoveStep
.
BI_0
0
_ReadyShelf
))
{
if
(
IOValue
(
IO_Type
.
LineIn_Check
).
Equals
(
IO_VALUE
.
HIGH
))
{
...
...
@@ -46,12 +46,16 @@ namespace OnlineStore.DeviceLibrary
{
// MoveInfo.ShelfPositionList = new List<string>(ShelfPosList);
InOutStoreLog
(
moveName
+
MoveInfo
.
SLog
+
" agv已到达,打开入料口移门"
);
MoveInfo
.
NextMoveStep
(
StoreMoveStep
.
BI_0
2
_DoorOpen
);
MoveInfo
.
NextMoveStep
(
StoreMoveStep
.
BI_0
1
_DoorOpen
);
DoorBean
.
StartOpen
(
MoveInfo
);
}
}
else
if
(
MoveInfo
.
MoveStep
.
Equals
(
StoreMoveStep
.
BI_0
2
_DoorOpen
))
else
if
(
MoveInfo
.
MoveStep
.
Equals
(
StoreMoveStep
.
BI_0
1
_DoorOpen
))
{
//}
//else if (MoveInfo.MoveStep.Equals(StoreMoveStep.BI_02_WaitReady))
//{
MoveInfo
.
NextMoveStep
(
StoreMoveStep
.
BI_03_LineRun
);
InOutStoreLog
(
moveName
+
MoveInfo
.
SLog
+
"调用AgvClient.MayEnter,线体正转,等待LineIn_Check信号"
);
AgvClient
.
SetStatus
(
Config
.
AgvNodeName
,
""
,
""
,
ClientAction
.
MayEnter
,
ClientLevel
.
High
);
...
...
@@ -108,9 +112,9 @@ namespace OnlineStore.DeviceLibrary
else
if
(
MoveInfo
.
MoveStep
.
Equals
(
StoreMoveStep
.
BI_06_DoorClose
))
{
MoveInfo
.
NextMoveStep
(
StoreMoveStep
.
BI_07_LineRun
);
MoveInfo
.
WaitList
.
Add
(
WaitResultInfo
.
WaitTime
(
7000
));
InOutStoreLog
(
moveName
+
MoveInfo
.
SLog
+
"继续转动 7000"
);
LineRun
();
MoveInfo
.
WaitList
.
Add
(
WaitResultInfo
.
WaitTime
(
7000
));
}
else
if
(
MoveInfo
.
MoveStep
.
Equals
(
StoreMoveStep
.
BI_07_LineRun
))
{
...
...
@@ -195,9 +199,10 @@ namespace OnlineStore.DeviceLibrary
else
if
(
MoveInfo
.
MoveStep
.
Equals
(
StoreMoveStep
.
BS_02_LocatinDown
))
{
MoveInfo
.
NextMoveStep
(
StoreMoveStep
.
BS_03_WaitArrive
);
MoveInfo
.
TimeOutSeconds
=
180
;
MoveInfo
.
OneWaitCanEndStep
=
true
;
MoveInfo
.
WaitList
.
Add
(
WaitResultInfo
.
WaitTime
(
180000
));
InOutStoreLog
(
moveName
+
MoveInfo
.
SLog
+
":再次调用 NeedLeave["
+
CurrShelfID
+
"],等待Agv到达
,最多等待180000"
);
InOutStoreLog
(
moveName
+
MoveInfo
.
SLog
+
":再次调用 NeedLeave["
+
CurrShelfID
+
"],等待Agv "
+
Config
.
AgvNodeName
+
" Arrive
,最多等待180000"
);
AgvClient
.
SetStatus
(
Config
.
AgvNodeName
,
""
,
CurrShelfID
,
ClientAction
.
NeedLeave
,
ClientLevel
.
Low
);
//等待agv到达
MoveInfo
.
WaitList
.
Add
(
WaitResultInfo
.
WaitAgvAction
((
int
)
ClientAction
.
Arrive
));
...
...
@@ -211,66 +216,69 @@ namespace OnlineStore.DeviceLibrary
MoveInfo
.
NextMoveStep
(
StoreMoveStep
.
BS_04_DoorOpen
);
InOutStoreLog
(
moveName
+
MoveInfo
.
SLog
+
":agv到达,打开入料口移门"
);
DoorBean
.
StartOpen
(
MoveInfo
);
//MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(500));
//InOutStoreLog(moveName + MoveInfo.SLog + ":agv到达,rfid【" + CurrShelfID + "】,调用AgvClient.MayOut,线体开始反转");
////TODO AGV到达,发送料架信息,是否需要重新读取?
//AgvClient.SetStatus(Config.AgvNodeName, "", CurrShelfID, ClientAction.MayLeave, ClientLevel.High);
//LineBackRun();
}
else
{
MoveInfo
.
NextMoveStep
(
StoreMoveStep
.
BS_0
5
_LineBackRun
);
MoveInfo
.
NextMoveStep
(
StoreMoveStep
.
BS_0
6
_LineBackRun
);
//如果agv未到达,直接结束
MoveEndToRuningStatus
();
EmprtShelfList
=
new
ConcurrentQueue
<
string
>();
InOutStoreLog
(
moveName
+
MoveInfo
.
SLog
+
":等待
agv
超时,直接结束"
);
InOutStoreLog
(
moveName
+
MoveInfo
.
SLog
+
":等待
Agv "
+
Config
.
AgvNodeName
+
" Arrive
超时,直接结束"
);
}
}
else
if
(
MoveInfo
.
MoveStep
.
Equals
(
StoreMoveStep
.
BS_04_DoorOpen
))
{
MoveInfo
.
NextMoveStep
(
StoreMoveStep
.
BS_05_LineBackRun
);
MoveInfo
.
NextMoveStep
(
StoreMoveStep
.
BS_05_WaitReady
);
MoveInfo
.
TimeOutSeconds
=
120
;
InOutStoreLog
(
moveName
+
MoveInfo
.
SLog
+
":等待agv "
+
Config
.
AgvNodeName
+
" Ready"
);
//等待agv到达
MoveInfo
.
WaitList
.
Add
(
WaitResultInfo
.
WaitAgvAction
((
int
)
ClientAction
.
Ready
));
}
else
if
(
MoveInfo
.
MoveStep
.
Equals
(
StoreMoveStep
.
BS_05_WaitReady
))
{
MoveInfo
.
NextMoveStep
(
StoreMoveStep
.
BS_06_LineBackRun
);
MoveInfo
.
WaitList
.
Add
(
WaitResultInfo
.
WaitTime
(
500
));
InOutStoreLog
(
moveName
+
MoveInfo
.
SLog
+
":
移门已打开
,调用MayLeave["
+
CurrShelfID
+
"] ,线体开始反转"
);
InOutStoreLog
(
moveName
+
MoveInfo
.
SLog
+
":
agv "
+
Config
.
AgvNodeName
+
" Ready
,调用MayLeave["
+
CurrShelfID
+
"] ,线体开始反转"
);
//TODO AGV到达,发送料架信息,是否需要重新读取?
AgvClient
.
SetStatus
(
Config
.
AgvNodeName
,
""
,
CurrShelfID
,
ClientAction
.
MayLeave
,
ClientLevel
.
High
);
LineBackRun
();
}
else
if
(
MoveInfo
.
MoveStep
.
Equals
(
StoreMoveStep
.
BS_0
5
_LineBackRun
))
else
if
(
MoveInfo
.
MoveStep
.
Equals
(
StoreMoveStep
.
BS_0
6
_LineBackRun
))
{
MoveInfo
.
NextMoveStep
(
StoreMoveStep
.
BS_0
6
_WaitInLineSingle
);
MoveInfo
.
NextMoveStep
(
StoreMoveStep
.
BS_0
7
_WaitInLineSingle
);
InOutStoreLog
(
moveName
+
MoveInfo
.
SLog
+
":等待取料工位无信号,入料口有信号"
);
MoveInfo
.
WaitList
.
Add
(
WaitResultInfo
.
WaitIO
(
IO_Type
.
LineTake_Check
,
IO_VALUE
.
LOW
));
MoveInfo
.
WaitList
.
Add
(
WaitResultInfo
.
WaitIO
(
IO_Type
.
LineIn_Check
,
IO_VALUE
.
HIGH
));
}
else
if
(
MoveInfo
.
MoveStep
.
Equals
(
StoreMoveStep
.
BS_0
6
_WaitInLineSingle
))
else
if
(
MoveInfo
.
MoveStep
.
Equals
(
StoreMoveStep
.
BS_0
7
_WaitInLineSingle
))
{
MoveInfo
.
NextMoveStep
(
StoreMoveStep
.
BS_0
7
_WaitTime
);
MoveInfo
.
NextMoveStep
(
StoreMoveStep
.
BS_0
8
_WaitTime
);
InOutStoreLog
(
moveName
+
MoveInfo
.
SLog
+
":再转动3000时间, 等待入料口无信号"
);
MoveInfo
.
WaitList
.
Add
(
WaitResultInfo
.
WaitTime
(
3000
));
MoveInfo
.
WaitList
.
Add
(
WaitResultInfo
.
WaitIO
(
IO_Type
.
LineIn_Check
,
IO_VALUE
.
LOW
));
//等到agv离开
//MoveInfo.WaitList.Add(WaitResultInfo.WaitAgvAction(AGVAction.FinishOut));
}
else
if
(
MoveInfo
.
MoveStep
.
Equals
(
StoreMoveStep
.
BS_0
7
_WaitTime
))
else
if
(
MoveInfo
.
MoveStep
.
Equals
(
StoreMoveStep
.
BS_0
8
_WaitTime
))
{
MoveInfo
.
NextMoveStep
(
StoreMoveStep
.
BS_0
8
_WaitAGVLeave
);
MoveInfo
.
NextMoveStep
(
StoreMoveStep
.
BS_0
9
_WaitAGVLeave
);
InOutStoreLog
(
moveName
+
MoveInfo
.
SLog
+
":同时等待 AGV离开,最多等待5000 "
);
MoveInfo
.
OneWaitCanEndStep
=
true
;
MoveInfo
.
WaitList
.
Add
(
WaitResultInfo
.
WaitTime
(
5000
));
//MoveInfo.WaitList.Add(WaitResultInfo.WaitAgvAction(action.FinishOut));
}
else
if
(
MoveInfo
.
MoveStep
.
Equals
(
StoreMoveStep
.
BS_0
8
_WaitAGVLeave
))
else
if
(
MoveInfo
.
MoveStep
.
Equals
(
StoreMoveStep
.
BS_0
9
_WaitAGVLeave
))
{
MoveInfo
.
NextMoveStep
(
StoreMoveStep
.
BS_
09
_CloseDoor
);
MoveInfo
.
NextMoveStep
(
StoreMoveStep
.
BS_
10
_CloseDoor
);
InOutStoreLog
(
moveName
+
MoveInfo
.
SLog
+
":停止线体转动,关闭仓门 ,发送FinishLeave ,等待最少5000"
);
AgvClient
.
SetStatus
(
Config
.
AgvNodeName
,
""
,
CurrShelfID
,
ClientAction
.
FinishLeave
,
ClientLevel
.
High
);
MoveInfo
.
WaitList
.
Add
(
WaitResultInfo
.
WaitTime
(
5000
));
LineStop
();
DoorBean
.
StartClose
(
MoveInfo
);
}
else
if
(
MoveInfo
.
MoveStep
.
Equals
(
StoreMoveStep
.
BS_
09
_CloseDoor
))
else
if
(
MoveInfo
.
MoveStep
.
Equals
(
StoreMoveStep
.
BS_
10
_CloseDoor
))
{
//结束
MoveEndToRuningStatus
();
...
...
source/DeviceLibrary/store/StoreStep.cs
查看文件 @
55fab92
...
...
@@ -166,12 +166,15 @@ namespace OnlineStore.DeviceLibrary
/// <summary>
/// 通知agv准备带料架agv
/// </summary>
BI_0
1_ReadyShelf
=
1001
,
BI_0
0_ReadyShelf
=
1000
,
/// <summary>
/// 料架入库:入料口移门打开
/// </summary>
BI_02_DoorOpen
=
1002
,
BI_01_DoorOpen
=
1001
,
/// <summary>
/// 料架入库:等待agvReady
/// </summary>
BI_02_WaitReady
=
1002
,
/// <summary>
/// 料架入库:线体正转,等待入料口检测到信号
/// </summary>
...
...
@@ -431,37 +434,29 @@ namespace OnlineStore.DeviceLibrary
/// </summary>
BS_04_DoorOpen
=
4004
,
/// <summary>
/// 送出空料架:等待agvReady
/// </summary>
BS_05_WaitReady
=
4005
,
/// <summary>
/// 送出空料架:线体反转
/// </summary>
BS_0
5_LineBackRun
=
4005
,
BS_0
6_LineBackRun
=
4006
,
/// <summary>
/// 送出空料架:等待取料工位无信号,入料口有信号
/// </summary>
BS_0
6_WaitInLineSingle
=
4006
,
BS_0
7_WaitInLineSingle
=
4007
,
/// <summary>
/// 送出空料架:再转动3000时间
/// </summary>
BS_0
7_WaitTime
=
4007
,
BS_0
8_WaitTime
=
4008
,
/// <summary>
/// 送出空料架:等待AGV离开后关闭仓门
/// </summary>
BS_0
8_WaitAGVLeave
=
4008
,
BS_0
9_WaitAGVLeave
=
4009
,
/// <summary>
/// 送出空料架:关闭仓门
/// </summary>
BS_09_CloseDoor
=
4009
,
///// <summary>
///// 送出空料架:停止转动
///// </summary>
//BS_07_LineStop= 4007,
///// <summary>
///// 送出空料架:通知调度系统拿走
///// </summary>
//BS_08_CallAGV = 4008,
///// <summary>
///// 送出空料架:关闭仓门
///// </summary>
//BS_09_CloseDoor= 4009,
BS_10_CloseDoor
=
4010
,
#
endregion
}
...
...
编写
预览
支持
Markdown
格式
附加文件
你添加了
0
人
到此讨论。请谨慎行事。
Finish editing this message first!
Cancel
请
注册
或
登录
后发表评论