Skip to content
切换导航条
切换导航条
当前项目
正在载入...
登录
张东亮
/
AGV_3D_Line
转到一个项目
切换导航栏
切换导航栏固定状态
项目
群组
代码片段
帮助
项目
活动
版本库
流水线
图表
问题
0
合并请求
0
维基
网络
创建新的问题
作业
提交
问题看板
文件
提交
网络
比较
分支
标签
Commit 0b847111
由
张东亮
编写于
2023-04-06 13:37:03 +0800
浏览文件
选项
浏览文件
标签
下载
电子邮件补丁
差异文件
1
1 个父辈
429e0b20
隐藏空白字符变更
内嵌
并排
正在显示
11 个修改的文件
包含
338 行增加
和
479 行删除
Common/SettingString.cs
DeviceLibrary/Config/AgvMission.csv
DeviceLibrary/Control.cs
DeviceLibrary/bean/job/EmptyAGVBackJob.cs
DeviceLibrary/bean/job/EmptyShelfBackJob.cs
DeviceLibrary/bean/job/GoEmptyShelfLineJob.cs
DeviceLibrary/bean/job/GoFullShelfStationJob.cs
DeviceLibrary/bean/job/SendFullShelfToLineJob.cs
DeviceLibrary/bean/job/jobType/JobForRoomD.cs
DeviceLibrary/manager/AGVManager.cs
DeviceLibrary/manager/HttpManager.cs
Common/SettingString.cs
查看文件 @
0b84711
...
...
@@ -55,7 +55,7 @@ namespace Common
public
const
string
A5
=
"A5"
;
public
const
string
Line_Name_Prefix
=
"S"
;
public
const
string
Room
D
_Name_Prefix
=
"S"
;
public
const
string
Room
S
_Name_Prefix
=
"S"
;
public
const
string
RoomC_Name_Prefix
=
"C"
;
public
const
string
BigShelf_Prefix
=
"C"
;
public
const
string
SmallShelf_Prefix
=
"D"
;
...
...
@@ -64,7 +64,7 @@ namespace Common
public
const
string
IP_3D_Light
=
"IP_3D_Light"
;
public
const
string
IP_3C_Light
=
"IP_3C_Light"
;
public
static
List
<
string
>
Lines_In_Air_Door
=
new
List
<
string
>()
{
"
C100
"
};
public
static
List
<
string
>
Lines_In_Air_Door
=
new
List
<
string
>()
{
"
S1"
,
"S2
"
};
public
static
List
<
string
>
RoomC_AGV_IPs
=
new
List
<
string
>()
{
"10.85.199.666"
};
public
static
List
<
string
>
FixedCharge_AGV_IPs
=
new
List
<
string
>()
{
"10.85.199.666"
};
#
region
配置名
...
...
DeviceLibrary/Config/AgvMission.csv
查看文件 @
0b84711
...
...
@@ -21,4 +21,12 @@ D21,备料区入口,060d5e35-75b0-11eb-8565-0001297a1dca
D22,备料区出口,fe89c587-75bf-11eb-a7fe-0001297a1dca
CheckShelf,检查负载情况,cc5f1d78-75a2-11eb-8565-0001297a1dca
Leave,出料,28a2ab7b-75ac-11eb-8565-0001297a1dca
Enter,进料,4bf5d4c5-75a4-11eb-8565-0001297a1dca
\ No newline at end of file
Enter,进料,4bf5d4c5-75a4-11eb-8565-0001297a1dca
S1,S1线,4bf5d4c5-75a4-11eb-8565-0001297a1dca
S2,S2线,4bf5d4c5-75a4-11eb-8565-0001297a1dca
DoorAirIn-1,进风淋门-停留点,4bf5d4c5-75a4-11eb-8565-0001297a1dca
DoorAirIn-2,进风淋门-进入,4bf5d4c5-75a4-11eb-8565-0001297a1dca
DoorAirIn-3,进风淋门-出去,4bf5d4c5-75a4-11eb-8565-0001297a1dca
DoorAirOut-1,出风淋门-停留点,4bf5d4c5-75a4-11eb-8565-0001297a1dca
DoorAirOut-2,出风淋门-进入,4bf5d4c5-75a4-11eb-8565-0001297a1dca
DoorAirOut-3,出风淋门-出去,4bf5d4c5-75a4-11eb-8565-0001297a1dca
\ No newline at end of file
DeviceLibrary/Control.cs
查看文件 @
0b84711
...
...
@@ -93,7 +93,7 @@ namespace DeviceLibrary
{
msglist
.
Add
(
new
AlarmMsg
(
AGVManager
.
nodeInfo
[
j
].
AliceName
,
"lineAgv."
+
AGVManager
.
nodeInfo
[
j
].
Name
+
".OffLine"
,
"离线"
));
}
if
(
AGVManager
.
nodeInfo
[
j
].
Name
.
StartsWith
(
SettingString
.
Room
D
_Name_Prefix
)
||
AGVManager
.
nodeInfo
[
j
].
Name
.
StartsWith
(
SettingString
.
RoomC_Name_Prefix
))
if
(
AGVManager
.
nodeInfo
[
j
].
Name
.
StartsWith
(
SettingString
.
Room
S
_Name_Prefix
)
||
AGVManager
.
nodeInfo
[
j
].
Name
.
StartsWith
(
SettingString
.
RoomC_Name_Prefix
))
{
if
(!
AGVManager
.
nodeInfo
[
j
].
Name
.
Equals
(
SettingString
.
RoomCFeederIn
)
&&
!
AGVManager
.
nodeInfo
[
j
].
Name
.
Equals
(
SettingString
.
RoomCFeederOut
)
&&
!
AGVManager
.
nodeInfo
[
j
].
Name
.
Equals
(
SettingString
.
RoomDFeederIn
)
&&
!
AGVManager
.
nodeInfo
[
j
].
Name
.
Equals
(
SettingString
.
RoomDFeederOut
))
...
...
DeviceLibrary/bean/job/EmptyAGVBackJob.cs
查看文件 @
0b84711
...
...
@@ -37,7 +37,7 @@ namespace DeviceLibrary
/// </summary>
public
override
string
RunInfo
{
get
{
return
string
.
Format
(
"返回任务[{0}]:{1}"
,
CurTaskID
,
runInfo
);
}
get
{
return
string
.
Format
(
"返回任务[{0}]:{1}"
,
CurTaskID
,
runInfo
);
}
}
...
...
@@ -55,7 +55,7 @@ namespace DeviceLibrary
CurTaskState
=
MissionSys
.
GetTakJobState
(
agv
);
if
(
curJobStep
.
IsStep
(
EMPTY_AGV_BACK_STEP
.
NONE
))
{
if
(
AGVManager
.
FindEmptyShelfNode
(
agv
,
out
string
nodeName
,
true
))
if
(
AGVManager
.
FindEmptyShelfNode
(
agv
,
out
string
nodeName
))
{
int
i
=
AGVManager
.
agvInfo
.
FindIndex
(
s
=>
s
.
CurJob
is
GoEmptyShelfLineJob
&&
((
GoEmptyShelfLineJob
)
s
.
CurJob
).
EmptyShelfPlace
.
Equals
(
nodeName
));
if
(
i
==
-
1
)
...
...
@@ -64,7 +64,7 @@ namespace DeviceLibrary
if
(
AGVManager
.
CheckStationState
(
clientNode
,
out
string
rfid
))
{
runInfo
=
"小车在产线 "
+
agvPlace
+
" 准备返回时检测到 "
+
nodeName
+
" 有空料架"
;
msg
+=
string
.
Format
(
"[{0}] {1}"
,
curJobStep
.
CurStep
(),
runInfo
);
msg
+=
string
.
Format
(
"[{0}] {1}"
,
curJobStep
.
CurStep
(),
runInfo
);
curJobStep
.
Msg
=
msg
;
RecordRunLog
(
agv
,
curJobStep
.
CurStep
(),
runInfo
,
agv
.
Place
);
return
new
GoEmptyShelfLineJob
(
agvPlace
,
nodeName
,
rfid
);
...
...
@@ -73,30 +73,21 @@ namespace DeviceLibrary
{
if
(
AGVManager
.
CheckIsInAirDoor
(
agvPlace
))
{
curJobStep
.
ToNextStep
(
EMPTY_AGV_BACK_STEP
.
WAIT_AGV_REACH_RoomC_AIR_DOOR
);
runInfo
=
string
.
Format
(
"从产线{0}回待机位,先
过{1}风淋门"
,
agvPlace
,
SettingString
.
RoomC
_Name
);
msg
+=
string
.
Format
(
"[{0}] {1}"
,
curJobStep
.
CurStep
(),
runInfo
);
curJobStep
.
ToNextStep
(
EMPTY_AGV_BACK_STEP
.
OUT_AIR_DOOR_1
);
runInfo
=
string
.
Format
(
"从产线{0}回待机位,先
到{1}风淋门停留点"
,
agvPlace
,
SettingString
.
RoomD
_Name
);
msg
+=
string
.
Format
(
"[{0}] {1}"
,
curJobStep
.
CurStep
(),
runInfo
);
curJobStep
.
Msg
=
msg
;
MissionSys
.
AssignMission
(
agv
,
SettingString
.
DoorAirOut
);
UpdateJobTaskInfo
(
agv
);
}
else
if
(
agvPlace
.
StartsWith
(
SettingString
.
RoomC_Name_Prefix
))
{
curJobStep
.
ToNextStep
(
EMPTY_AGV_BACK_STEP
.
WAIT_AGV_REACH_RoomD_DOOR
);
runInfo
=
string
.
Format
(
"从产线{0}回待机位,先过{1}门"
,
agvPlace
,
SettingString
.
RoomC_Name
);
msg
+=
string
.
Format
(
"[{0}] {1}"
,
curJobStep
.
CurStep
(),
runInfo
);
curJobStep
.
Msg
=
msg
;
MissionSys
.
AssignMission
(
agv
,
SettingString
.
DoorCToD
);
UpdateJobTaskInfo
(
agv
);
MissionSys
.
AssignMission
(
agv
,
$
"{SettingString.DoorAirOut}-1"
);
UpdateJobTaskInfo
(
agv
);
}
else
{
curJobStep
.
ToNextStep
(
EMPTY_AGV_BACK_STEP
.
WAIT_REACH_STANDBY
);
runInfo
=
"从产线"
+
agvPlace
+
"回待机位"
;
msg
+=
string
.
Format
(
"[{0}] {1}"
,
curJobStep
.
CurStep
(),
runInfo
);
msg
+=
string
.
Format
(
"[{0}] {1}"
,
curJobStep
.
CurStep
(),
runInfo
);
curJobStep
.
Msg
=
msg
;
MissionSys
.
AssignMission
(
agv
,
SettingString
.
Standby
);
UpdateJobTaskInfo
(
agv
);
UpdateJobTaskInfo
(
agv
);
}
}
}
...
...
@@ -104,30 +95,21 @@ namespace DeviceLibrary
{
if
(
AGVManager
.
CheckIsInAirDoor
(
agvPlace
))
{
curJobStep
.
ToNextStep
(
EMPTY_AGV_BACK_STEP
.
WAIT_AGV_REACH_RoomC_AIR_DOOR
);
runInfo
=
string
.
Format
(
"从产线{0}回待机位,先
过{1}风淋门"
,
agvPlace
,
SettingString
.
RoomC
_Name
);
msg
+=
string
.
Format
(
"[{0}] {1}"
,
curJobStep
.
CurStep
(),
runInfo
);
curJobStep
.
ToNextStep
(
EMPTY_AGV_BACK_STEP
.
OUT_AIR_DOOR_1
);
runInfo
=
string
.
Format
(
"从产线{0}回待机位,先
到{1}风淋门停留点"
,
agvPlace
,
SettingString
.
RoomD
_Name
);
msg
+=
string
.
Format
(
"[{0}] {1}"
,
curJobStep
.
CurStep
(),
runInfo
);
curJobStep
.
Msg
=
msg
;
MissionSys
.
AssignMission
(
agv
,
SettingString
.
DoorAirOut
);
UpdateJobTaskInfo
(
agv
);
}
else
if
(
agvPlace
.
StartsWith
(
SettingString
.
RoomC_Name_Prefix
))
{
curJobStep
.
ToNextStep
(
EMPTY_AGV_BACK_STEP
.
WAIT_AGV_REACH_RoomD_DOOR
);
runInfo
=
string
.
Format
(
"从产线{0}回待机位,先过{1}门"
,
agvPlace
,
SettingString
.
RoomC_Name
);
msg
+=
string
.
Format
(
"[{0}] {1}"
,
curJobStep
.
CurStep
(),
runInfo
);
curJobStep
.
Msg
=
msg
;
MissionSys
.
AssignMission
(
agv
,
SettingString
.
DoorCToD
);
UpdateJobTaskInfo
(
agv
);
MissionSys
.
AssignMission
(
agv
,
$
"{SettingString.DoorAirOut}-1"
);
UpdateJobTaskInfo
(
agv
);
}
else
{
curJobStep
.
ToNextStep
(
EMPTY_AGV_BACK_STEP
.
WAIT_REACH_STANDBY
);
runInfo
=
"从产线"
+
agvPlace
+
"回待机位"
;
msg
+=
string
.
Format
(
"[{0}] {1}"
,
curJobStep
.
CurStep
(),
runInfo
);
msg
+=
string
.
Format
(
"[{0}] {1}"
,
curJobStep
.
CurStep
(),
runInfo
);
curJobStep
.
Msg
=
msg
;
MissionSys
.
AssignMission
(
agv
,
SettingString
.
Standby
);
UpdateJobTaskInfo
(
agv
);
UpdateJobTaskInfo
(
agv
);
}
}
...
...
@@ -136,33 +118,66 @@ namespace DeviceLibrary
{
if
(
AGVManager
.
CheckIsInAirDoor
(
agvPlace
))
{
curJobStep
.
ToNextStep
(
EMPTY_AGV_BACK_STEP
.
WAIT_AGV_REACH_RoomC_AIR_DOOR
);
runInfo
=
string
.
Format
(
"从产线{0}回待机位,先
过{1}风淋门"
,
agvPlace
,
SettingString
.
RoomC_Name
);
msg
+=
string
.
Format
(
"[{0}] {1}"
,
curJobStep
.
CurStep
(),
runInfo
);
curJobStep
.
ToNextStep
(
EMPTY_AGV_BACK_STEP
.
OUT_AIR_DOOR_1
);
runInfo
=
string
.
Format
(
"从产线{0}回待机位,先
到{1}风淋门停留点"
,
agvPlace
,
SettingString
.
RoomD_Name
);
msg
+=
string
.
Format
(
"[{0}] {1}"
,
curJobStep
.
CurStep
(),
runInfo
);
curJobStep
.
Msg
=
msg
;
MissionSys
.
AssignMission
(
agv
,
SettingString
.
DoorAirOut
);
UpdateJobTaskInfo
(
agv
);
}
else
if
(
agvPlace
.
StartsWith
(
SettingString
.
RoomC_Name_Prefix
))
{
curJobStep
.
ToNextStep
(
EMPTY_AGV_BACK_STEP
.
WAIT_AGV_REACH_RoomD_DOOR
);
runInfo
=
string
.
Format
(
"从产线{0}回待机位,先过{1}门"
,
agvPlace
,
SettingString
.
RoomC_Name
);
msg
+=
string
.
Format
(
"[{0}] {1}"
,
curJobStep
.
CurStep
(),
runInfo
);
curJobStep
.
Msg
=
msg
;
MissionSys
.
AssignMission
(
agv
,
SettingString
.
DoorCToD
);
UpdateJobTaskInfo
(
agv
);
MissionSys
.
AssignMission
(
agv
,
$
"{SettingString.DoorAirOut}-1"
);
UpdateJobTaskInfo
(
agv
);
}
else
{
curJobStep
.
ToNextStep
(
EMPTY_AGV_BACK_STEP
.
WAIT_REACH_STANDBY
);
runInfo
=
"从产线"
+
agvPlace
+
"回待机位"
;
msg
+=
string
.
Format
(
"[{0}] {1}"
,
curJobStep
.
CurStep
(),
runInfo
);
msg
+=
string
.
Format
(
"[{0}] {1}"
,
curJobStep
.
CurStep
(),
runInfo
);
curJobStep
.
Msg
=
msg
;
MissionSys
.
AssignMission
(
agv
,
SettingString
.
Standby
);
UpdateJobTaskInfo
(
agv
);
UpdateJobTaskInfo
(
agv
);
}
}
}
else
if
(
curJobStep
.
IsStep
(
EMPTY_AGV_BACK_STEP
.
OUT_AIR_DOOR_1
))
{
CurTaskState
=
MissionSys
.
GetTakJobState
(
agv
);
if
(
MissionSys
.
CheckTaskFinished
(
agv
,
$
"{SettingString.DoorAirOut}-1"
,
CurTaskState
))
{
RecordRunLog
(
agv
,
curJobStep
.
CurStep
(),
runInfo
,
agv
.
Place
);
curJobStep
.
ToNextStep
(
EMPTY_AGV_BACK_STEP
.
OUT_AIR_DOOR_2
);
runInfo
=
string
.
Format
(
"{0}到达风淋门停留点,进入{1}风淋门"
,
agvPlace
,
SettingString
.
RoomD_Name
);
msg
+=
string
.
Format
(
"[{0}] {1}"
,
curJobStep
.
CurStep
(),
runInfo
);
curJobStep
.
Msg
=
msg
;
MissionSys
.
AssignMission
(
agv
,
$
"{SettingString.DoorAirOut}-2"
);
UpdateJobTaskInfo
(
agv
);
}
}
else
if
(
curJobStep
.
IsStep
(
EMPTY_AGV_BACK_STEP
.
OUT_AIR_DOOR_2
))
{
CurTaskState
=
MissionSys
.
GetTakJobState
(
agv
);
if
(
MissionSys
.
CheckTaskFinished
(
agv
,
$
"{SettingString.DoorAirOut}-2"
,
CurTaskState
))
{
RecordRunLog
(
agv
,
curJobStep
.
CurStep
(),
runInfo
,
agv
.
Place
);
curJobStep
.
ToNextStep
(
EMPTY_AGV_BACK_STEP
.
OUT_AIR_DOOR_3
);
runInfo
=
string
.
Format
(
"{0}进入风淋门,准备出{1}风淋门"
,
agvPlace
,
SettingString
.
RoomD_Name
);
msg
+=
string
.
Format
(
"[{0}] {1}"
,
curJobStep
.
CurStep
(),
runInfo
);
curJobStep
.
Msg
=
msg
;
MissionSys
.
AssignMission
(
agv
,
$
"{SettingString.DoorAirOut}-3"
);
UpdateJobTaskInfo
(
agv
);
}
}
else
if
(
curJobStep
.
IsStep
(
EMPTY_AGV_BACK_STEP
.
OUT_AIR_DOOR_3
))
{
CurTaskState
=
MissionSys
.
GetTakJobState
(
agv
);
if
(
MissionSys
.
CheckTaskFinished
(
agv
,
$
"{SettingString.DoorAirOut}-3"
,
CurTaskState
))
{
RecordRunLog
(
agv
,
curJobStep
.
CurStep
(),
runInfo
,
agv
.
Place
);
curJobStep
.
ToNextStep
(
EMPTY_AGV_BACK_STEP
.
WAIT_REACH_STANDBY
);
runInfo
=
string
.
Format
(
"{0}出风淋门,去待机点"
,
agvPlace
,
SettingString
.
RoomD_Name
);
msg
+=
string
.
Format
(
"[{0}] {1}"
,
curJobStep
.
CurStep
(),
runInfo
);
curJobStep
.
Msg
=
msg
;
MissionSys
.
AssignMission
(
agv
,
$
"{SettingString.Standby}"
);
UpdateJobTaskInfo
(
agv
);
}
}
else
if
(
curJobStep
.
IsStep
(
EMPTY_AGV_BACK_STEP
.
WAIT_REACH_STANDBY
))
{
CurTaskState
=
MissionSys
.
GetTakJobState
(
agv
);
...
...
@@ -172,7 +187,7 @@ namespace DeviceLibrary
if
(
job
==
null
&&
agv
.
Battery
<
AGVManager
.
Charge
.
BatteryMax
)
{
runInfo
=
"到达待机位,电量"
+
agv
.
Battery
+
"小于最大电量"
+
AGVManager
.
Charge
.
BatteryMax
+
",暂无任务,去充电"
;
msg
+=
string
.
Format
(
"[{0}] {1}"
,
curJobStep
.
CurStep
(),
runInfo
);
msg
+=
string
.
Format
(
"[{0}] {1}"
,
curJobStep
.
CurStep
(),
runInfo
);
curJobStep
.
Msg
=
msg
;
RecordRunLog
(
agv
,
curJobStep
.
CurStep
(),
runInfo
,
agv
.
Place
);
return
new
ChargeJob
(
SettingString
.
Standby
);
...
...
@@ -180,7 +195,7 @@ namespace DeviceLibrary
else
{
runInfo
=
"到达待机位,检测到新任务,执行任务"
;
msg
+=
string
.
Format
(
"[{0}] {1}"
,
curJobStep
.
CurStep
(),
runInfo
);
msg
+=
string
.
Format
(
"[{0}] {1}"
,
curJobStep
.
CurStep
(),
runInfo
);
curJobStep
.
Msg
=
msg
;
RecordRunLog
(
agv
,
curJobStep
.
CurStep
(),
runInfo
,
agv
.
Place
);
return
job
;
...
...
@@ -192,7 +207,7 @@ namespace DeviceLibrary
if
(
AGVManager
.
FindFullShelfTask
(
agv
))
{
runInfo
=
"从产线"
+
agvPlace
+
"回待机位过程中,检测到A6出满料,去A6"
;
msg
+=
string
.
Format
(
"[{0}] {1}"
,
curJobStep
.
CurStep
(),
runInfo
);
msg
+=
string
.
Format
(
"[{0}] {1}"
,
curJobStep
.
CurStep
(),
runInfo
);
curJobStep
.
Msg
=
msg
;
RecordRunLog
(
agv
,
curJobStep
.
CurStep
(),
runInfo
,
agv
.
Place
);
return
new
GoFullShelfStationJob
(
SettingString
.
Standby
);
...
...
@@ -200,47 +215,10 @@ namespace DeviceLibrary
}
}
else
if
(
curJobStep
.
IsStep
(
EMPTY_AGV_BACK_STEP
.
WAIT_AGV_REACH_RoomC_AIR_DOOR
))
{
CurTaskState
=
MissionSys
.
GetTakJobState
(
agv
);
if
(
MissionSys
.
CheckTaskFinished
(
agv
,
SettingString
.
DoorAirOut
,
CurTaskState
))
{
RecordRunLog
(
agv
,
curJobStep
.
CurStep
(),
runInfo
,
agv
.
Place
);
curJobStep
.
ToNextStep
(
EMPTY_AGV_BACK_STEP
.
WAIT_AGV_REACH_RoomD_DOOR
);
runInfo
=
string
.
Format
(
"从产线{0}回待机位,先过{1}门"
,
agvPlace
,
SettingString
.
RoomC_Name
);
msg
+=
string
.
Format
(
"[{0}] {1}"
,
curJobStep
.
CurStep
(),
runInfo
);
curJobStep
.
Msg
=
msg
;
MissionSys
.
AssignMission
(
agv
,
SettingString
.
DoorCToD
);
UpdateJobTaskInfo
(
agv
);
}
}
else
if
(
curJobStep
.
IsStep
(
EMPTY_AGV_BACK_STEP
.
WAIT_AGV_REACH_RoomD_DOOR
))
{
CurTaskState
=
MissionSys
.
GetTakJobState
(
agv
);
if
(
MissionSys
.
CheckTaskFinished
(
agv
,
SettingString
.
DoorCToD
,
CurTaskState
))
{
if
(
AGVManager
.
FindFullShelfTask
(
agv
))
{
runInfo
=
string
.
Format
(
"从产线{0}到达{1}门,检测到A6出满料,去A6"
,
agvPlace
,
SettingString
.
RoomD_Name
);
msg
+=
string
.
Format
(
"[{0}] {1}"
,
curJobStep
.
CurStep
(),
runInfo
);
curJobStep
.
Msg
=
msg
;
RecordRunLog
(
agv
,
curJobStep
.
CurStep
(),
runInfo
,
agv
.
Place
);
return
new
GoFullShelfStationJob
(
SettingString
.
DoorCToD
);
}
else
{
runInfo
=
string
.
Format
(
"从产线{0}到达{1}门,暂无任务,去充电位"
,
agvPlace
,
SettingString
.
RoomD_Name
);
msg
+=
string
.
Format
(
"[{0}] {1}"
,
curJobStep
.
CurStep
(),
runInfo
);
curJobStep
.
Msg
=
msg
;
RecordRunLog
(
agv
,
curJobStep
.
CurStep
(),
runInfo
,
agv
.
Place
);
return
new
ChargeJob
(
SettingString
.
DoorCToD
);
}
}
}
return
this
;
}
/// <summary>
///
AGV回收空料架
流程
///
空AGV返回
流程
/// </summary>
private
enum
EMPTY_AGV_BACK_STEP
{
...
...
@@ -249,17 +227,17 @@ namespace DeviceLibrary
/// </summary>
NONE
,
/// <summary>
///
等待到达C风淋门
///
去出3D风淋门等待位
/// </summary>
WAIT_AGV_REACH_RoomC_AIR_DOOR
,
OUT_AIR_DOOR_1
,
/// <summary>
///
等待到达D
门
///
进风淋
门
/// </summary>
WAIT_AGV_REACH_RoomD_DOOR
,
OUT_AIR_DOOR_2
,
/// <summary>
///
等待恒邑反馈
///
出风淋门
/// </summary>
WAIT_HY_RESPONSE
,
OUT_AIR_DOOR_3
,
/// <summary>
/// 等待AGV到达待机位
/// </summary>
...
...
DeviceLibrary/bean/job/EmptyShelfBackJob.cs
查看文件 @
0b84711
...
...
@@ -61,22 +61,13 @@ namespace DeviceLibrary
StartJobTime
=
curJobStep
.
startTime
;
if
(
curJobStep
.
IsStep
(
EMPTY_SHELF_BACK_STEP
.
NONE
))
{
if
(
AGVManager
.
CheckIsInAirDoor
(
EmptyShelfPlace
))
//
C
车间风淋门
if
(
AGVManager
.
CheckIsInAirDoor
(
EmptyShelfPlace
))
//车间风淋门
{
curJobStep
.
ToNextStep
(
EMPTY_SHELF_BACK_STEP
.
WAIT_AGV_REACH_AIR_DOOR
);
runInfo
=
string
.
Format
(
"从产线{0}过{1}风淋门"
,
EmptyShelfPlace
,
SettingString
.
RoomC_Name
)
;
curJobStep
.
ToNextStep
(
EMPTY_SHELF_BACK_STEP
.
OUT_AIR_DOOR_1
);
runInfo
=
$
"从产线{EmptyShelfPlace}去{SettingString.RoomD_Name}风淋门停留点"
;
msg
+=
string
.
Format
(
"[{0}] {1}"
,
curJobStep
.
CurStep
(),
runInfo
);
curJobStep
.
Msg
=
msg
;
MissionSys
.
AssignMission
(
agv
,
SettingString
.
DoorAirOut
);
UpdateJobTaskInfo
(
agv
);
}
else
if
(
EmptyShelfPlace
.
StartsWith
(
SettingString
.
RoomC_Name_Prefix
))
//C车间
{
curJobStep
.
ToNextStep
(
EMPTY_SHELF_BACK_STEP
.
WAIT_AGV_REACH_DOOR
);
runInfo
=
string
.
Format
(
"从产线{0}前往{1}门"
,
EmptyShelfPlace
,
SettingString
.
RoomD_Name
);
msg
+=
string
.
Format
(
"[{0}] {1}"
,
curJobStep
.
CurStep
(),
runInfo
);
curJobStep
.
Msg
=
msg
;
MissionSys
.
AssignMission
(
agv
,
SettingString
.
DoorCToD
);
MissionSys
.
AssignMission
(
agv
,
$
"{SettingString.DoorAirOut}-1"
);
UpdateJobTaskInfo
(
agv
);
}
else
...
...
@@ -106,45 +97,59 @@ namespace DeviceLibrary
}
}
}
else
if
(
curJobStep
.
IsStep
(
EMPTY_SHELF_BACK_STEP
.
WAIT_AGV_REACH_AIR_DOOR
))
else
if
(
curJobStep
.
IsStep
(
EMPTY_SHELF_BACK_STEP
.
OUT_AIR_DOOR_1
))
{
CurTaskState
=
MissionSys
.
GetTakJobState
(
agv
);
if
(
MissionSys
.
CheckTaskFinished
(
agv
,
SettingString
.
DoorAirOut
,
CurTaskState
))
if
(
MissionSys
.
CheckTaskFinished
(
agv
,
$
"{SettingString.DoorAirOut}-1"
,
CurTaskState
))
{
RecordRunLog
(
agv
,
curJobStep
.
CurStep
(),
runInfo
,
agv
.
Place
);
curJobStep
.
ToNextStep
(
EMPTY_SHELF_BACK_STEP
.
WAIT_AGV_REACH_DOOR
);
runInfo
=
string
.
Format
(
"
出风淋门,前往{0}门"
,
SettingString
.
RoomD_Name
);
msg
+=
string
.
Format
(
"[{0}] {1}"
,
curJobStep
.
CurStep
(),
runInfo
);
curJobStep
.
ToNextStep
(
EMPTY_SHELF_BACK_STEP
.
OUT_AIR_DOOR_2
);
runInfo
=
string
.
Format
(
"
{0}到达风淋门停留点,进入{1}风淋门"
,
agv
.
Place
,
SettingString
.
RoomD_Name
);
msg
+=
string
.
Format
(
"[{0}] {1}"
,
curJobStep
.
CurStep
(),
runInfo
);
curJobStep
.
Msg
=
msg
;
MissionSys
.
AssignMission
(
agv
,
SettingString
.
DoorCToD
);
UpdateJobTaskInfo
(
agv
);
MissionSys
.
AssignMission
(
agv
,
$
"{SettingString.DoorAirOut}-2"
);
UpdateJobTaskInfo
(
agv
);
}
}
else
if
(
curJobStep
.
IsStep
(
EMPTY_SHELF_BACK_STEP
.
OUT_AIR_DOOR_2
))
{
CurTaskState
=
MissionSys
.
GetTakJobState
(
agv
);
if
(
MissionSys
.
CheckTaskFinished
(
agv
,
$
"{SettingString.DoorAirOut}-2"
,
CurTaskState
))
{
RecordRunLog
(
agv
,
curJobStep
.
CurStep
(),
runInfo
,
agv
.
Place
);
curJobStep
.
ToNextStep
(
EMPTY_SHELF_BACK_STEP
.
OUT_AIR_DOOR_3
);
runInfo
=
string
.
Format
(
"{0}进入风淋门,准备出{1}风淋门"
,
agv
.
Place
,
SettingString
.
RoomD_Name
);
msg
+=
string
.
Format
(
"[{0}] {1}"
,
curJobStep
.
CurStep
(),
runInfo
);
curJobStep
.
Msg
=
msg
;
MissionSys
.
AssignMission
(
agv
,
$
"{SettingString.DoorAirOut}-3"
);
UpdateJobTaskInfo
(
agv
);
}
}
else
if
(
curJobStep
.
IsStep
(
EMPTY_SHELF_BACK_STEP
.
WAIT_AGV_REACH_DOOR
))
else
if
(
curJobStep
.
IsStep
(
EMPTY_SHELF_BACK_STEP
.
OUT_AIR_DOOR_3
))
{
CurTaskState
=
MissionSys
.
GetTakJobState
(
agv
);
if
(
MissionSys
.
CheckTaskFinished
(
agv
,
SettingString
.
DoorCToD
,
CurTaskState
))
if
(
MissionSys
.
CheckTaskFinished
(
agv
,
$
"{SettingString.DoorAirOut}-3"
,
CurTaskState
))
{
RecordRunLog
(
agv
,
curJobStep
.
CurStep
(),
runInfo
,
agv
.
Place
);
if
(
AGVManager
.
CheckA5A6State
(
agv
,
shelfType
,
out
string
nodeName
))
{
EmptyShelfTargetPlace
=
nodeName
;
curJobStep
.
ToNextStep
(
EMPTY_SHELF_BACK_STEP
.
WAIT_AGV_REACH_A5A6
);
runInfo
=
string
.
Format
(
"
进{0}门,送往双层线{1}"
,
SettingString
.
RoomD_Name
,
EmptyShelfTargetPlace
);
msg
+=
string
.
Format
(
"[{0}] {1}"
,
curJobStep
.
CurStep
(),
runInfo
);
runInfo
=
string
.
Format
(
"
送往双层线{1}"
,
SettingString
.
RoomD_Name
,
EmptyShelfTargetPlace
);
msg
+=
string
.
Format
(
"[{0}] {1}"
,
curJobStep
.
CurStep
(),
runInfo
);
curJobStep
.
Msg
=
msg
;
MissionSys
.
AssignMission
(
agv
,
EmptyShelfTargetPlace
);
UpdateJobTaskInfo
(
agv
);
UpdateJobTaskInfo
(
agv
);
}
else
{
curJobStep
.
ToNextStep
(
EMPTY_SHELF_BACK_STEP
.
WAIT_AGV_REACH_STANDBY
);
runInfo
=
string
.
Format
(
"
进{0}门,
双层线暂不需要空料架,到待机位"
,
SettingString
.
RoomD_Name
);
runInfo
=
"
进4D门,
双层线暂不需要空料架,到待机位"
;
msg
+=
string
.
Format
(
"[{0}] {1}"
,
curJobStep
.
CurStep
(),
runInfo
);
runInfo
=
string
.
Format
(
"双层线暂不需要空料架,到待机位"
,
SettingString
.
RoomD_Name
);
runInfo
=
"双层线暂不需要空料架,到待机位"
;
msg
+=
string
.
Format
(
"[{0}] {1}"
,
curJobStep
.
CurStep
(),
runInfo
);
curJobStep
.
Msg
=
msg
;
MissionSys
.
AssignMission
(
agv
,
SettingString
.
Standby
);
UpdateJobTaskInfo
(
agv
);
UpdateJobTaskInfo
(
agv
);
}
}
}
...
...
@@ -260,13 +265,17 @@ namespace DeviceLibrary
/// </summary>
NONE
,
/// <summary>
/// 等待到达4C风淋门
/// 去出3D风淋门等待位
/// </summary>
OUT_AIR_DOOR_1
,
/// <summary>
/// 进风淋门
/// </summary>
WAIT_AGV_REACH_AIR_DOOR
,
OUT_AIR_DOOR_2
,
/// <summary>
///
等待AGV到达
门
///
出风淋
门
/// </summary>
WAIT_AGV_REACH_DOOR
,
OUT_AIR_DOOR_3
,
/// <summary>
/// 等待小车到达A5,A6
/// </summary>
...
...
DeviceLibrary/bean/job/GoEmptyShelfLineJob.cs
查看文件 @
0b84711
...
...
@@ -57,219 +57,127 @@ namespace DeviceLibrary
int
nodeIdx
=
AGVManager
.
FindNode
(
EmptyShelfPlace
);
if
(
curJobStep
.
IsStep
(
TAKE_EMPTY_STEP
.
NONE
))
{
if
(
agvPlae
.
StartsWith
(
SettingString
.
RoomC_Name_Prefix
)
&&
AGVManager
.
CheckIsInAirDoor
(
agvPlae
)
&&
!
AGVManager
.
CheckIsInAirDoor
(
EmptyShelfPlace
))
//4C
风淋门内->风淋门外
if
(
AGVManager
.
CheckIsInAirDoor
(
agvPlae
)
&&
!
AGVManager
.
CheckIsInAirDoor
(
EmptyShelfPlace
))
//
风淋门内->风淋门外
{
curJobStep
.
ToNextStep
(
TAKE_EMPTY_STEP
.
WAIT_AGV_REACH_AIR_OUT_DOOR
);
runInfo
=
"去产线"
+
EmptyShelfPlace
+
",先
过风淋门
["
+
agvPlae
+
"->"
+
EmptyShelfPlace
+
"]"
+
"[RFID="
+
RFID
+
"]"
;
curJobStep
.
ToNextStep
(
TAKE_EMPTY_STEP
.
OUT_AIR_DOOR_1
);
runInfo
=
"去产线"
+
EmptyShelfPlace
+
",先
去风淋门停留点
["
+
agvPlae
+
"->"
+
EmptyShelfPlace
+
"]"
+
"[RFID="
+
RFID
+
"]"
;
msg
+=
string
.
Format
(
"[{0}] {1}"
,
curJobStep
.
CurStep
(),
runInfo
);
curJobStep
.
Msg
=
msg
;
MissionSys
.
AssignMission
(
agv
,
SettingString
.
DoorAirOut
);
MissionSys
.
AssignMission
(
agv
,
$
"{SettingString.DoorAirOut}-1"
);
UpdateJobTaskInfo
(
agv
);
}
else
if
(!
AGVManager
.
CheckIsInAirDoor
(
agvPlae
)
&&
AGVManager
.
CheckIsInAirDoor
(
EmptyShelfPlace
))
//
4C
风淋门外->风淋门内
else
if
(!
AGVManager
.
CheckIsInAirDoor
(
agvPlae
)
&&
AGVManager
.
CheckIsInAirDoor
(
EmptyShelfPlace
))
//风淋门外->风淋门内
{
if
(
agvPlae
.
StartsWith
(
SettingString
.
RoomC_Name_Prefix
)
&&
EmptyShelfPlace
.
StartsWith
(
SettingString
.
RoomC_Name_Prefix
))
//4C->4C
{
if
(
AGVManager
.
CheckRoomCTarget
(
agv
,
EmptyShelfPlace
))
//被占用
{
curJobStep
.
ToNextStep
(
TAKE_EMPTY_STEP
.
WAIT_REACH_TEMP_PLACE
);
runInfo
=
"目的地"
+
EmptyShelfPlace
+
"有小车占用,先到临时待机位"
+
"[RFID="
+
RFID
+
"]"
;
msg
+=
string
.
Format
(
"[{0}] {1}"
,
curJobStep
.
CurStep
(),
runInfo
);
curJobStep
.
Msg
=
msg
;
AGVManager
.
MoveToRoomCStandy
(
agv
);
UpdateJobTaskInfo
(
agv
);
}
else
{
curJobStep
.
ToNextStep
(
TAKE_EMPTY_STEP
.
WAIT_AGV_REACH_AIR_IN_DOOR
);
runInfo
=
"去产线"
+
EmptyShelfPlace
+
",先过风淋门["
+
agvPlae
+
"->"
+
EmptyShelfPlace
+
"]"
+
"[RFID="
+
RFID
+
"]"
;
msg
+=
string
.
Format
(
"[{0}] {1}"
,
curJobStep
.
CurStep
(),
runInfo
);
curJobStep
.
Msg
=
msg
;
MissionSys
.
AssignMission
(
agv
,
SettingString
.
DoorAirIn
);
UpdateJobTaskInfo
(
agv
);
}
}
else
if
((
agvPlae
.
StartsWith
(
SettingString
.
RoomD_Name_Prefix
)
||
agvPlae
.
StartsWith
(
SettingString
.
DoubleLine_Name_Prefix
)
||
agvPlae
.
Equals
(
SettingString
.
Standby
)
||
agvPlae
.
Equals
(
SettingString
.
AutoCharge
))
&&
EmptyShelfPlace
.
StartsWith
(
SettingString
.
RoomC_Name_Prefix
))
//4D->4C
{
curJobStep
.
ToNextStep
(
TAKE_EMPTY_STEP
.
WAIT_AGV_REACH_4C_DOOR
);
runInfo
=
"去产线"
+
EmptyShelfPlace
+
",先过4C门["
+
agvPlae
+
"->"
+
EmptyShelfPlace
+
"]"
+
"[RFID="
+
RFID
+
"]"
;
msg
+=
string
.
Format
(
"[{0}] {1}"
,
curJobStep
.
CurStep
(),
runInfo
);
curJobStep
.
Msg
=
msg
;
MissionSys
.
AssignMission
(
agv
,
SettingString
.
DoorDToC
);
UpdateJobTaskInfo
(
agv
);
}
curJobStep
.
ToNextStep
(
TAKE_EMPTY_STEP
.
IN_AIR_DOOR_1
);
runInfo
=
"去产线"
+
EmptyShelfPlace
+
",先去风淋门停留点["
+
agvPlae
+
"->"
+
EmptyShelfPlace
+
"]"
+
"[RFID="
+
RFID
+
"]"
;
msg
+=
string
.
Format
(
"[{0}] {1}"
,
curJobStep
.
CurStep
(),
runInfo
);
curJobStep
.
Msg
=
msg
;
MissionSys
.
AssignMission
(
agv
,
$
"{SettingString.DoorAirIn}-1"
);
UpdateJobTaskInfo
(
agv
);
}
else
//起始与目的地在风淋门同一侧
{
if
(
agvPlae
.
StartsWith
(
SettingString
.
RoomC_Name_Prefix
)
&&
AGVManager
.
CheckIsInAirDoor
(
agvPlae
)
&&
AGVManager
.
CheckIsInAirDoor
(
EmptyShelfPlace
))
//都在风淋门内
if
(
AGVManager
.
CheckIsInAirDoor
(
agvPlae
)
&&
AGVManager
.
CheckIsInAirDoor
(
EmptyShelfPlace
))
//都在风淋门内
{
if
(
AGVManager
.
CheckRoomCTarget
(
agv
,
EmptyShelfPlace
))
//被占用
{
curJobStep
.
ToNextStep
(
TAKE_EMPTY_STEP
.
WAIT_AGV_REACH_AIR_OUT_DOOR
);
runInfo
=
"目的地"
+
EmptyShelfPlace
+
"有小车占用,先过风淋门,再到临时待机位"
+
"[RFID="
+
RFID
+
"]"
;
msg
+=
string
.
Format
(
"[{0}] {1}"
,
curJobStep
.
CurStep
(),
runInfo
);
curJobStep
.
Msg
=
msg
;
MissionSys
.
AssignMission
(
agv
,
SettingString
.
DoorAirOut
);
UpdateJobTaskInfo
(
agv
);
}
else
{
curJobStep
.
ToNextStep
(
TAKE_EMPTY_STEP
.
ASSIGN_AGV_TASK
);
runInfo
=
"开始任务["
+
agvPlae
+
"->"
+
EmptyShelfPlace
+
"]"
+
"[RFID="
+
RFID
+
"]"
;
msg
+=
string
.
Format
(
"[{0}] {1}"
,
curJobStep
.
CurStep
(),
runInfo
);
curJobStep
.
Msg
=
msg
;
}
curJobStep
.
ToNextStep
(
TAKE_EMPTY_STEP
.
ASSIGN_AGV_TASK
);
runInfo
=
"开始任务["
+
agvPlae
+
"->"
+
EmptyShelfPlace
+
"]"
+
"[RFID="
+
RFID
+
"]"
;
msg
+=
string
.
Format
(
"[{0}] {1}"
,
curJobStep
.
CurStep
(),
runInfo
);
curJobStep
.
Msg
=
msg
;
}
else
if
(
agvPlae
.
Equals
(
""
)
||
(!
AGVManager
.
CheckIsInAirDoor
(
agvPlae
))
&&
!
AGVManager
.
CheckIsInAirDoor
(
EmptyShelfPlace
))
//都在风淋门外
{
if
(
agvPlae
.
StartsWith
(
SettingString
.
RoomC_Name_Prefix
)
&&
EmptyShelfPlace
.
StartsWith
(
SettingString
.
RoomC_Name_Prefix
))
//4C->4C
{
if
(
AGVManager
.
CheckRoomCTarget
(
agv
,
EmptyShelfPlace
))
//被占用
{
curJobStep
.
ToNextStep
(
TAKE_EMPTY_STEP
.
WAIT_REACH_TEMP_PLACE
);
runInfo
=
"目的地"
+
EmptyShelfPlace
+
"有小车占用,先到临时待机位"
+
"[RFID="
+
RFID
+
"]"
;
msg
+=
string
.
Format
(
"[{0}] {1}"
,
curJobStep
.
CurStep
(),
runInfo
);
curJobStep
.
Msg
=
msg
;
AGVManager
.
MoveToRoomCStandy
(
agv
);
UpdateJobTaskInfo
(
agv
);
}
else
{
curJobStep
.
ToNextStep
(
TAKE_EMPTY_STEP
.
ASSIGN_AGV_TASK
);
runInfo
=
"开始任务["
+
agvPlae
+
"->"
+
EmptyShelfPlace
+
"]"
+
"[RFID="
+
RFID
+
"]"
;
msg
+=
string
.
Format
(
"[{0}] {1}"
,
curJobStep
.
CurStep
(),
runInfo
);
curJobStep
.
Msg
=
msg
;
}
}
else
if
(
agvPlae
.
StartsWith
(
SettingString
.
RoomC_Name_Prefix
)
&&
EmptyShelfPlace
.
StartsWith
(
SettingString
.
RoomD_Name_Prefix
))
//4C->4D
{
curJobStep
.
ToNextStep
(
TAKE_EMPTY_STEP
.
WAIT_AGV_REACH_4D_DOOR
);
runInfo
=
"去产线"
+
EmptyShelfPlace
+
",先过4D门["
+
agvPlae
+
"->"
+
EmptyShelfPlace
+
"]"
+
"[RFID="
+
RFID
+
"]"
;
msg
+=
string
.
Format
(
"[{0}] {1}"
,
curJobStep
.
CurStep
(),
runInfo
);
curJobStep
.
Msg
=
msg
;
MissionSys
.
AssignMission
(
agv
,
SettingString
.
DoorCToD
);
UpdateJobTaskInfo
(
agv
);
}
else
if
((
agvPlae
.
StartsWith
(
SettingString
.
RoomD_Name_Prefix
)
||
agvPlae
.
StartsWith
(
SettingString
.
DoubleLine_Name_Prefix
)
||
agvPlae
.
Equals
(
SettingString
.
Standby
)
||
agvPlae
.
Equals
(
SettingString
.
AutoCharge
))
&&
EmptyShelfPlace
.
StartsWith
(
SettingString
.
RoomC_Name_Prefix
))
//4D->4C
{
curJobStep
.
ToNextStep
(
TAKE_EMPTY_STEP
.
WAIT_AGV_REACH_4C_DOOR
);
runInfo
=
"去产线"
+
EmptyShelfPlace
+
",先过4C门["
+
agvPlae
+
"->"
+
EmptyShelfPlace
+
"]"
+
"[RFID="
+
RFID
+
"]"
;
msg
+=
string
.
Format
(
"[{0}] {1}"
,
curJobStep
.
CurStep
(),
runInfo
);
curJobStep
.
Msg
=
msg
;
MissionSys
.
AssignMission
(
agv
,
SettingString
.
DoorDToC
);
UpdateJobTaskInfo
(
agv
);
}
curJobStep
.
ToNextStep
(
TAKE_EMPTY_STEP
.
ASSIGN_AGV_TASK
);
runInfo
=
"开始任务["
+
agvPlae
+
"->"
+
EmptyShelfPlace
+
"]"
+
"[RFID="
+
RFID
+
"]"
;
msg
+=
string
.
Format
(
"[{0}] {1}"
,
curJobStep
.
CurStep
(),
runInfo
);
curJobStep
.
Msg
=
msg
;
else
//4D->4D
{
curJobStep
.
ToNextStep
(
TAKE_EMPTY_STEP
.
ASSIGN_AGV_TASK
);
runInfo
=
"开始任务["
+
agvPlae
+
"->"
+
EmptyShelfPlace
+
"]"
+
"[RFID="
+
RFID
+
"]"
;
msg
+=
string
.
Format
(
"[{0}] {1}"
,
curJobStep
.
CurStep
(),
runInfo
);
curJobStep
.
Msg
=
msg
;
}
}
}
}
else
if
(
curJobStep
.
IsStep
(
TAKE_EMPTY_STEP
.
WAIT_AGV_REACH_AIR_OUT_DOOR
))
else
if
(
curJobStep
.
IsStep
(
TAKE_EMPTY_STEP
.
OUT_AIR_DOOR_1
))
{
CurTaskState
=
MissionSys
.
GetTakJobState
(
agv
);
if
(
MissionSys
.
CheckTaskFinished
(
agv
,
SettingString
.
DoorAirOut
,
CurTaskState
))
if
(
MissionSys
.
CheckTaskFinished
(
agv
,
$
"{SettingString.DoorAirOut}-1"
,
CurTaskState
))
{
//4C风淋门内->风淋门外,到达风淋门外
if
(
agvPlae
.
StartsWith
(
SettingString
.
RoomC_Name_Prefix
)
&&
EmptyShelfPlace
.
StartsWith
(
SettingString
.
RoomC_Name_Prefix
))
//4C->4C
{
if
(
AGVManager
.
CheckRoomCTarget
(
agv
,
EmptyShelfPlace
))
//被占用
{
curJobStep
.
ToNextStep
(
TAKE_EMPTY_STEP
.
WAIT_REACH_TEMP_PLACE
);
runInfo
=
"到风淋门外,目的地"
+
EmptyShelfPlace
+
"有小车占用,先到临时待机位"
+
"[RFID="
+
RFID
+
"]"
;
msg
+=
string
.
Format
(
"[{0}] {1}"
,
curJobStep
.
CurStep
(),
runInfo
);
curJobStep
.
Msg
=
msg
;
AGVManager
.
MoveToRoomCStandy
(
agv
);
UpdateJobTaskInfo
(
agv
);
}
else
{
curJobStep
.
ToNextStep
(
TAKE_EMPTY_STEP
.
ASSIGN_AGV_TASK
);
runInfo
=
"到风淋门外,开始任务["
+
agvPlae
+
"->"
+
EmptyShelfPlace
+
"]"
+
"[RFID="
+
RFID
+
"]"
;
msg
+=
string
.
Format
(
"[{0}] {1}"
,
curJobStep
.
CurStep
(),
runInfo
);
curJobStep
.
Msg
=
msg
;
}
}
else
if
(
agvPlae
.
StartsWith
(
SettingString
.
RoomC_Name_Prefix
)
&&
EmptyShelfPlace
.
StartsWith
(
SettingString
.
RoomD_Name_Prefix
))
//4C->4D
{
curJobStep
.
ToNextStep
(
TAKE_EMPTY_STEP
.
WAIT_AGV_REACH_4D_DOOR
);
runInfo
=
"到风淋门外,去产线"
+
EmptyShelfPlace
+
",先过4D门["
+
agvPlae
+
"->"
+
EmptyShelfPlace
+
"]"
+
"[RFID="
+
RFID
+
"]"
;
msg
+=
string
.
Format
(
"[{0}] {1}"
,
curJobStep
.
CurStep
(),
runInfo
);
curJobStep
.
Msg
=
msg
;
MissionSys
.
AssignMission
(
agv
,
SettingString
.
DoorCToD
);
UpdateJobTaskInfo
(
agv
);
}
//都在风淋门内,到达风淋门外
else
{
curJobStep
.
ToNextStep
(
TAKE_EMPTY_STEP
.
WAIT_REACH_TEMP_PLACE
);
runInfo
=
"到风淋门外,目的地"
+
EmptyShelfPlace
+
"有小车占用,先到临时待机位"
+
"[RFID="
+
RFID
+
"]"
;
msg
+=
string
.
Format
(
"[{0}] {1}"
,
curJobStep
.
CurStep
(),
runInfo
);
curJobStep
.
Msg
=
msg
;
AGVManager
.
MoveToRoomCStandy
(
agv
);
UpdateJobTaskInfo
(
agv
);
}
RecordRunLog
(
agv
,
curJobStep
.
CurStep
(),
runInfo
,
agv
.
Place
);
curJobStep
.
ToNextStep
(
TAKE_EMPTY_STEP
.
OUT_AIR_DOOR_2
);
runInfo
=
string
.
Format
(
"{0}到达风淋门停留点,进入{1}风淋门"
,
agv
.
Place
,
SettingString
.
RoomD_Name
);
msg
+=
string
.
Format
(
"[{0}] {1}"
,
curJobStep
.
CurStep
(),
runInfo
);
curJobStep
.
Msg
=
msg
;
MissionSys
.
AssignMission
(
agv
,
$
"{SettingString.DoorAirOut}-2"
);
UpdateJobTaskInfo
(
agv
);
}
}
else
if
(
curJobStep
.
IsStep
(
TAKE_EMPTY_STEP
.
WAIT_AGV_REACH_AIR_IN_DOOR
))
else
if
(
curJobStep
.
IsStep
(
TAKE_EMPTY_STEP
.
OUT_AIR_DOOR_2
))
{
CurTaskState
=
MissionSys
.
GetTakJobState
(
agv
);
if
(
MissionSys
.
CheckTaskFinished
(
agv
,
SettingString
.
DoorAirIn
,
CurTaskState
))
if
(
MissionSys
.
CheckTaskFinished
(
agv
,
$
"{SettingString.DoorAirOut}-2"
,
CurTaskState
))
{
RecordRunLog
(
agv
,
curJobStep
.
CurStep
(),
runInfo
,
agv
.
Place
);
curJobStep
.
ToNextStep
(
TAKE_EMPTY_STEP
.
OUT_AIR_DOOR_3
);
runInfo
=
string
.
Format
(
"{0}进入风淋门,准备出{1}风淋门"
,
agv
.
Place
,
SettingString
.
RoomD_Name
);
msg
+=
string
.
Format
(
"[{0}] {1}"
,
curJobStep
.
CurStep
(),
runInfo
);
curJobStep
.
Msg
=
msg
;
MissionSys
.
AssignMission
(
agv
,
$
"{SettingString.DoorAirOut}-3"
);
UpdateJobTaskInfo
(
agv
);
}
}
else
if
(
curJobStep
.
IsStep
(
TAKE_EMPTY_STEP
.
OUT_AIR_DOOR_3
))
{
CurTaskState
=
MissionSys
.
GetTakJobState
(
agv
);
if
(
MissionSys
.
CheckTaskFinished
(
agv
,
$
"{SettingString.DoorAirOut}-3"
,
CurTaskState
))
{
//4C风淋门外->风淋门内
curJobStep
.
ToNextStep
(
TAKE_EMPTY_STEP
.
ASSIGN_AGV_TASK
);
runInfo
=
"到
达风淋门内
,开始任务["
+
agvPlae
+
"->"
+
EmptyShelfPlace
+
"]"
+
"[RFID="
+
RFID
+
"]"
;
runInfo
=
"到
风淋门外
,开始任务["
+
agvPlae
+
"->"
+
EmptyShelfPlace
+
"]"
+
"[RFID="
+
RFID
+
"]"
;
msg
+=
string
.
Format
(
"[{0}] {1}"
,
curJobStep
.
CurStep
(),
runInfo
);
curJobStep
.
Msg
=
msg
;
}
}
else
if
(
curJobStep
.
IsStep
(
TAKE_EMPTY_STEP
.
WAIT_AGV_REACH_4C_DOOR
))
else
if
(
curJobStep
.
IsStep
(
TAKE_EMPTY_STEP
.
IN_AIR_DOOR_1
))
{
CurTaskState
=
MissionSys
.
GetTakJobState
(
agv
);
if
(
MissionSys
.
CheckTaskFinished
(
agv
,
SettingString
.
DoorDToC
,
CurTaskState
))
if
(
MissionSys
.
CheckTaskFinished
(
agv
,
$
"{SettingString.DoorAirIn}-1"
,
CurTaskState
))
{
RecordRunLog
(
agv
,
curJobStep
.
CurStep
(),
runInfo
,
agv
.
Place
);
if
(
AGVManager
.
CheckRoomCTarget
(
agv
,
EmptyShelfPlace
))
//被占用
{
curJobStep
.
ToNextStep
(
TAKE_EMPTY_STEP
.
WAIT_REACH_TEMP_PLACE
);
runInfo
=
"目的地"
+
EmptyShelfPlace
+
"有小车占用,先到临时待机位"
+
"[RFID="
+
RFID
+
"]"
;
msg
+=
string
.
Format
(
"[{0}] {1}"
,
curJobStep
.
CurStep
(),
runInfo
);
curJobStep
.
Msg
=
msg
;
AGVManager
.
MoveToRoomCStandy
(
agv
);
UpdateJobTaskInfo
(
agv
);
}
else
{
if
(
AGVManager
.
CheckIsInAirDoor
(
EmptyShelfPlace
))
{
curJobStep
.
ToNextStep
(
TAKE_EMPTY_STEP
.
WAIT_AGV_REACH_AIR_IN_DOOR
);
runInfo
=
"去产线"
+
EmptyShelfPlace
+
",先过风淋门["
+
agvPlae
+
"->"
+
EmptyShelfPlace
+
"]"
+
"[RFID="
+
RFID
+
"]"
;
msg
+=
string
.
Format
(
"[{0}] {1}"
,
curJobStep
.
CurStep
(),
runInfo
);
curJobStep
.
Msg
=
msg
;
MissionSys
.
AssignMission
(
agv
,
SettingString
.
DoorAirIn
);
UpdateJobTaskInfo
(
agv
);
}
else
{
curJobStep
.
ToNextStep
(
TAKE_EMPTY_STEP
.
ASSIGN_AGV_TASK
);
runInfo
=
"开始任务["
+
agvPlae
+
"->"
+
EmptyShelfPlace
+
"]"
+
"[RFID="
+
RFID
+
"]"
;
msg
+=
string
.
Format
(
"[{0}] {1}"
,
curJobStep
.
CurStep
(),
runInfo
);
curJobStep
.
Msg
=
msg
;
}
}
curJobStep
.
ToNextStep
(
TAKE_EMPTY_STEP
.
IN_AIR_DOOR_2
);
runInfo
=
string
.
Format
(
"{0}到达风淋门停留点,进入{1}风淋门"
,
agv
.
Place
,
SettingString
.
RoomD_Name
);
msg
+=
string
.
Format
(
"[{0}] {1}"
,
curJobStep
.
CurStep
(),
runInfo
);
curJobStep
.
Msg
=
msg
;
MissionSys
.
AssignMission
(
agv
,
$
"{SettingString.DoorAirIn}-2"
);
UpdateJobTaskInfo
(
agv
);
}
}
else
if
(
curJobStep
.
IsStep
(
TAKE_EMPTY_STEP
.
IN_AIR_DOOR_2
))
{
CurTaskState
=
MissionSys
.
GetTakJobState
(
agv
);
if
(
MissionSys
.
CheckTaskFinished
(
agv
,
$
"{SettingString.DoorAirIn}-2"
,
CurTaskState
))
{
RecordRunLog
(
agv
,
curJobStep
.
CurStep
(),
runInfo
,
agv
.
Place
);
curJobStep
.
ToNextStep
(
TAKE_EMPTY_STEP
.
IN_AIR_DOOR_3
);
runInfo
=
string
.
Format
(
"{0}进入风淋门,准备出{1}风淋门"
,
agv
.
Place
,
SettingString
.
RoomD_Name
);
msg
+=
string
.
Format
(
"[{0}] {1}"
,
curJobStep
.
CurStep
(),
runInfo
);
curJobStep
.
Msg
=
msg
;
MissionSys
.
AssignMission
(
agv
,
$
"{SettingString.DoorAirIn}-3"
);
UpdateJobTaskInfo
(
agv
);
}
}
else
if
(
curJobStep
.
IsStep
(
TAKE_EMPTY_STEP
.
IN_AIR_DOOR_3
))
{
CurTaskState
=
MissionSys
.
GetTakJobState
(
agv
);
if
(
MissionSys
.
CheckTaskFinished
(
agv
,
$
"{SettingString.DoorAirIn}-3"
,
CurTaskState
))
{
curJobStep
.
ToNextStep
(
TAKE_EMPTY_STEP
.
ASSIGN_AGV_TASK
);
runInfo
=
"到风淋门外,开始任务["
+
agvPlae
+
"->"
+
EmptyShelfPlace
+
"]"
+
"[RFID="
+
RFID
+
"]"
;
msg
+=
string
.
Format
(
"[{0}] {1}"
,
curJobStep
.
CurStep
(),
runInfo
);
curJobStep
.
Msg
=
msg
;
}
}
else
if
(
curJobStep
.
IsStep
(
TAKE_EMPTY_STEP
.
WAIT_REACH_TEMP_PLACE
))
{
CurTaskState
=
MissionSys
.
GetTakJobState
(
agv
);
...
...
@@ -286,18 +194,6 @@ namespace DeviceLibrary
}
}
}
else
if
(
curJobStep
.
IsStep
(
TAKE_EMPTY_STEP
.
WAIT_AGV_REACH_4D_DOOR
))
{
CurTaskState
=
MissionSys
.
GetTakJobState
(
agv
);
if
(
MissionSys
.
CheckTaskFinished
(
agv
,
SettingString
.
DoorCToD
,
CurTaskState
))
{
RecordRunLog
(
agv
,
curJobStep
.
CurStep
(),
runInfo
,
agv
.
Place
);
curJobStep
.
ToNextStep
(
TAKE_EMPTY_STEP
.
ASSIGN_AGV_TASK
);
runInfo
=
"开始执行回收空料架任务["
+
agvPlae
+
"->"
+
EmptyShelfPlace
+
"]"
+
"[RFID="
+
RFID
+
"]"
;
msg
+=
string
.
Format
(
"[{0}] {1}"
,
curJobStep
.
CurStep
(),
runInfo
);
curJobStep
.
Msg
=
msg
;
}
}
else
if
(
curJobStep
.
IsStep
(
TAKE_EMPTY_STEP
.
ASSIGN_AGV_TASK
))
{
...
...
@@ -447,21 +343,29 @@ namespace DeviceLibrary
/// </summary>
NONE
,
/// <summary>
/// 等待到达4C风淋门内
/// 去出3D风淋门等待位
/// </summary>
OUT_AIR_DOOR_1
,
/// <summary>
/// 进风淋门
/// </summary>
OUT_AIR_DOOR_2
,
/// <summary>
/// 出风淋门
/// </summary>
WAIT_AGV_REACH_AIR_IN_DOOR
,
OUT_AIR_DOOR_3
,
/// <summary>
///
等待到达4C风淋门外
///
去进3D风淋门等待位
/// </summary>
WAIT_AGV_REACH_AIR_OUT_DOOR
,
IN_AIR_DOOR_1
,
/// <summary>
///
等待到达4C
门
///
进风淋
门
/// </summary>
WAIT_AGV_REACH_4C_DOOR
,
IN_AIR_DOOR_2
,
/// <summary>
///
等待到达4D
门
///
出风淋
门
/// </summary>
WAIT_AGV_REACH_4D_DOOR
,
IN_AIR_DOOR_3
,
/// <summary>
/// 给AGV分配任务
/// </summary>
...
...
DeviceLibrary/bean/job/GoFullShelfStationJob.cs
查看文件 @
0b84711
...
...
@@ -88,21 +88,12 @@ namespace DeviceLibrary
}
else
if
(
AGVManager
.
CheckIsInAirDoor
(
agvPlace
))
{
curJobStep
.
ToNextStep
(
GO_FULL_SHELF_STATION_STEP
.
WAIT_AGV_REACH_AIR_DOOR
);
runInfo
=
"
在风淋门内,先过风淋门
"
;
curJobStep
.
ToNextStep
(
GO_FULL_SHELF_STATION_STEP
.
OUT_AIR_DOOR_1
);
runInfo
=
"
去风淋门停留点
"
;
msg
+=
string
.
Format
(
"[{0}] {1}"
,
curJobStep
.
CurStep
(),
runInfo
);
curJobStep
.
Msg
=
msg
;
MissionSys
.
AssignMission
(
agv
,
SettingString
.
DoorAirOut
);
UpdateJobTaskInfo
(
agv
);
}
else
if
(
agvPlace
.
StartsWith
(
SettingString
.
RoomC_Name_Prefix
))
//4C车间
{
curJobStep
.
ToNextStep
(
GO_FULL_SHELF_STATION_STEP
.
WAIT_AGV_REACH_DOOR
);
runInfo
=
string
.
Format
(
"在{0}车间,向{1}门运行,再到双层线入料口"
,
SettingString
.
RoomC_Name
,
SettingString
.
RoomD_Name
);
msg
+=
string
.
Format
(
"[{0}] {1}"
,
curJobStep
.
CurStep
(),
runInfo
);
curJobStep
.
Msg
=
msg
;
MissionSys
.
AssignMission
(
agv
,
SettingString
.
DoorCToD
);
UpdateJobTaskInfo
(
agv
);
MissionSys
.
AssignMission
(
agv
,
$
"{SettingString.DoorAirOut}-1"
);
UpdateJobTaskInfo
(
agv
);
}
else
{
...
...
@@ -118,25 +109,24 @@ namespace DeviceLibrary
}
}
else
if
(
curJobStep
.
IsStep
(
GO_FULL_SHELF_STATION_STEP
.
WAIT_AGV_REACH_AIR_DOOR
))
else
if
(
curJobStep
.
IsStep
(
GO_FULL_SHELF_STATION_STEP
.
OUT_AIR_DOOR_2
))
{
CurTaskState
=
MissionSys
.
GetTakJobState
(
agv
);
if
(
MissionSys
.
CheckTaskFinished
(
agv
,
SettingString
.
DoorAirOut
,
CurTaskState
))
if
(
MissionSys
.
CheckTaskFinished
(
agv
,
$
"{SettingString.DoorAirOut}-2"
,
CurTaskState
))
{
RecordRunLog
(
agv
,
curJobStep
.
CurStep
(),
runInfo
,
agv
.
Place
);
curJobStep
.
ToNextStep
(
GO_FULL_SHELF_STATION_STEP
.
WAIT_AGV_REACH_DOOR
);
runInfo
=
string
.
Format
(
"
过风淋门,向{0}门运行,再到双层线入料口{1}"
,
SettingString
.
RoomD_Name
,
FullShelfStationPlac
e
);
curJobStep
.
ToNextStep
(
GO_FULL_SHELF_STATION_STEP
.
OUT_AIR_DOOR_3
);
runInfo
=
string
.
Format
(
"
{0}进入风淋门,准备出{1}风淋门"
,
agv
.
Place
,
SettingString
.
RoomD_Nam
e
);
msg
+=
string
.
Format
(
"[{0}] {1}"
,
curJobStep
.
CurStep
(),
runInfo
);
curJobStep
.
Msg
=
msg
;
MissionSys
.
AssignMission
(
agv
,
SettingString
.
DoorCToD
);
UpdateJobTaskInfo
(
agv
);
MissionSys
.
AssignMission
(
agv
,
$
"{SettingString.DoorAirOut}-3"
);
UpdateJobTaskInfo
(
agv
);
}
}
else
if
(
curJobStep
.
IsStep
(
GO_FULL_SHELF_STATION_STEP
.
WAIT_AGV_REACH_DOOR
))
else
if
(
curJobStep
.
IsStep
(
GO_FULL_SHELF_STATION_STEP
.
OUT_AIR_DOOR_3
))
{
CurTaskState
=
MissionSys
.
GetTakJobState
(
agv
);
if
(
MissionSys
.
CheckTaskFinished
(
agv
,
SettingString
.
DoorCToD
,
CurTaskState
))
if
(
MissionSys
.
CheckTaskFinished
(
agv
,
$
"{SettingString.DoorAirOut}-3"
,
CurTaskState
))
{
RecordRunLog
(
agv
,
curJobStep
.
CurStep
(),
runInfo
,
agv
.
Place
);
curJobStep
.
ToNextStep
(
GO_FULL_SHELF_STATION_STEP
.
WAIT_AGV_REACH_A6
);
...
...
@@ -144,9 +134,8 @@ namespace DeviceLibrary
msg
+=
string
.
Format
(
"[{0}] {1}"
,
curJobStep
.
CurStep
(),
runInfo
);
curJobStep
.
Msg
=
msg
;
MissionSys
.
AssignMission
(
agv
,
FullShelfStationPlace
);
UpdateJobTaskInfo
(
agv
);
UpdateJobTaskInfo
(
agv
);
}
}
else
if
(
curJobStep
.
IsStep
(
GO_FULL_SHELF_STATION_STEP
.
WAIT_AGV_REACH_A6
))
{
...
...
@@ -286,13 +275,17 @@ namespace DeviceLibrary
/// </summary>
WAIT_CHECK_RESULT
,
/// <summary>
/// 等待到达4C风淋门
/// 去出3D风淋门等待位
/// </summary>
OUT_AIR_DOOR_1
,
/// <summary>
/// 进风淋门
/// </summary>
WAIT_AGV_REACH_AIR_DOOR
,
OUT_AIR_DOOR_2
,
/// <summary>
///
等待AGV到达
门
///
出风淋
门
/// </summary>
WAIT_AGV_REACH_DOOR
,
OUT_AIR_DOOR_3
,
/// <summary>
/// 等待到达A6
/// </summary>
...
...
DeviceLibrary/bean/job/SendFullShelfToLineJob.cs
查看文件 @
0b84711
...
...
@@ -43,7 +43,7 @@ namespace DeviceLibrary
/// </summary>
public
override
string
RunInfo
{
get
{
return
string
.
Format
(
"送满料任务[RFID={0}][{1}]:{2}"
,
RFID
,
CurTaskID
,
runInfo
);
}
get
{
return
string
.
Format
(
"送满料任务[RFID={0}][{1}]:{2}"
,
RFID
,
CurTaskID
,
runInfo
);
}
}
...
...
@@ -51,113 +51,74 @@ namespace DeviceLibrary
public
override
Job
Execute
(
Agv_Info
agv
)
{
string
msg
=
string
.
Format
(
"{0} 送满料任务[RFID={1}]: "
,
agv
.
Name
,
RFID
);
string
msg
=
string
.
Format
(
"{0} 送满料任务[RFID={1}]: "
,
agv
.
Name
,
RFID
);
//bool rtn = false;
agv
.
RFID
=
RFID
;
StartJobTime
=
curJobStep
.
startTime
;
if
(
curJobStep
.
IsStep
(
SEND_FULL_SHELF_STEP
.
NONE
))
{
HttpManager
.
AgvRemoveRfid
(
RFID
);
if
(
FullShelfPlace
.
StartsWith
(
SettingString
.
RoomC_Name_Prefix
))
if
(
AGVManager
.
CheckIsInAirDoor
(
FullShelfPlace
))
{
curJobStep
.
ToNextStep
(
SEND_FULL_SHELF_STEP
.
WAIT_AGV_REACH_DOOR
);
runInfo
=
string
.
Format
(
"前往{0}门,从双层线A6送往{1}"
,
SettingString
.
RoomD_Name
,
FullShelfPlace
)
;
msg
+=
string
.
Format
(
"[{0}] {1}"
,
curJobStep
.
CurStep
(),
runInfo
);
curJobStep
.
ToNextStep
(
SEND_FULL_SHELF_STEP
.
IN_AIR_DOOR_1
);
runInfo
=
"送满料,去风淋门停留点["
+
FullShelfPlace
+
"]"
;
msg
+=
string
.
Format
(
"[{0}] {1}"
,
curJobStep
.
CurStep
(),
runInfo
);
curJobStep
.
Msg
=
msg
;
MissionSys
.
AssignMission
(
agv
,
SettingString
.
DoorDToC
);
UpdateJobTaskInfo
(
agv
);
MissionSys
.
AssignMission
(
agv
,
$
"{SettingString.DoorAirIn}-1"
);
UpdateJobTaskInfo
(
agv
);
}
else
{
curJobStep
.
ToNextStep
(
SEND_FULL_SHELF_STEP
.
WAIT_AGV_REACH_LINE
);
runInfo
=
"从双层线A6送往["
+
FullShelfPlace
+
"]"
;
msg
+=
string
.
Format
(
"[{0}] {1}"
,
curJobStep
.
CurStep
(),
runInfo
);
msg
+=
string
.
Format
(
"[{0}] {1}"
,
curJobStep
.
CurStep
(),
runInfo
);
curJobStep
.
Msg
=
msg
;
MissionSys
.
AssignMission
(
agv
,
FullShelfPlace
);
UpdateJobTaskInfo
(
agv
);
UpdateJobTaskInfo
(
agv
);
}
}
else
if
(
curJobStep
.
IsStep
(
SEND_FULL_SHELF_STEP
.
WAIT_AGV_REACH_DOOR
))
else
if
(
curJobStep
.
IsStep
(
SEND_FULL_SHELF_STEP
.
IN_AIR_DOOR_1
))
{
CurTaskState
=
MissionSys
.
GetTakJobState
(
agv
);
if
(
MissionSys
.
CheckTaskFinished
(
agv
,
SettingString
.
DoorDToC
,
CurTaskState
))
if
(
MissionSys
.
CheckTaskFinished
(
agv
,
$
"{SettingString.DoorAirIn}-1"
,
CurTaskState
))
{
RecordRunLog
(
agv
,
curJobStep
.
CurStep
(),
runInfo
,
agv
.
Place
);
if
(
AGVManager
.
CheckRoomCTarget
(
agv
,
FullShelfPlace
))
//被占用
{
curJobStep
.
ToNextStep
(
SEND_FULL_SHELF_STEP
.
WAIT_REACH_TEMP_PLACE
);
runInfo
=
"目的地"
+
FullShelfPlace
+
"有小车占用,先到临时待机位"
;
msg
+=
string
.
Format
(
"[{0}] {1}"
,
curJobStep
.
CurStep
(),
runInfo
);
curJobStep
.
Msg
=
msg
;
AGVManager
.
MoveToRoomCStandy
(
agv
);
UpdateJobTaskInfo
(
agv
);
}
else
{
if
(
AGVManager
.
CheckIsInAirDoor
(
FullShelfPlace
))
{
curJobStep
.
ToNextStep
(
SEND_FULL_SHELF_STEP
.
WAIT_AGV_REACH_AIR_DOOR
);
runInfo
=
"到达"
+
SettingString
.
RoomC_Name
+
"门,过风淋门["
+
FullShelfPlace
+
"]"
;
msg
+=
string
.
Format
(
"[{0}] {1}"
,
curJobStep
.
CurStep
(),
runInfo
);
curJobStep
.
Msg
=
msg
;
MissionSys
.
AssignMission
(
agv
,
SettingString
.
DoorAirIn
);
UpdateJobTaskInfo
(
agv
);
}
else
{
curJobStep
.
ToNextStep
(
SEND_FULL_SHELF_STEP
.
WAIT_AGV_REACH_LINE
);
runInfo
=
"从双层线A6送往["
+
FullShelfPlace
+
"]"
;
msg
+=
string
.
Format
(
"[{0}] {1}"
,
curJobStep
.
CurStep
(),
runInfo
);
curJobStep
.
Msg
=
msg
;
MissionSys
.
AssignMission
(
agv
,
FullShelfPlace
);
UpdateJobTaskInfo
(
agv
);
}
}
curJobStep
.
ToNextStep
(
SEND_FULL_SHELF_STEP
.
IN_AIR_DOOR_2
);
runInfo
=
string
.
Format
(
"{0}到达风淋门停留点,进入{1}风淋门"
,
agv
.
Place
,
SettingString
.
RoomD_Name
);
msg
+=
string
.
Format
(
"[{0}] {1}"
,
curJobStep
.
CurStep
(),
runInfo
);
curJobStep
.
Msg
=
msg
;
MissionSys
.
AssignMission
(
agv
,
$
"{SettingString.DoorAirIn}-2"
);
UpdateJobTaskInfo
(
agv
);
}
}
else
if
(
curJobStep
.
IsStep
(
SEND_FULL_SHELF_STEP
.
WAIT_AGV_REACH_AIR_DOOR
))
else
if
(
curJobStep
.
IsStep
(
SEND_FULL_SHELF_STEP
.
IN_AIR_DOOR_2
))
{
CurTaskState
=
MissionSys
.
GetTakJobState
(
agv
);
if
(
MissionSys
.
CheckTaskFinished
(
agv
,
SettingString
.
DoorAirIn
,
CurTaskState
))
if
(
MissionSys
.
CheckTaskFinished
(
agv
,
$
"{SettingString.DoorAirIn}-2"
,
CurTaskState
))
{
RecordRunLog
(
agv
,
curJobStep
.
CurStep
(),
runInfo
,
agv
.
Place
);
curJobStep
.
ToNextStep
(
SEND_FULL_SHELF_STEP
.
WAIT_AGV_REACH_LINE
);
runInfo
=
"送往["
+
FullShelfPlace
+
"]"
;
msg
+=
string
.
Format
(
"[{0}] {1}"
,
curJobStep
.
CurStep
(),
runInfo
);
curJobStep
.
Msg
=
msg
;
MissionSys
.
AssignMission
(
agv
,
FullShelfPlace
);
UpdateJobTaskInfo
(
agv
);
curJobStep
.
ToNextStep
(
SEND_FULL_SHELF_STEP
.
IN_AIR_DOOR_3
);
runInfo
=
string
.
Format
(
"{0}进入风淋门,准备出{1}风淋门"
,
agv
.
Place
,
SettingString
.
RoomD_Name
)
;
msg
+=
string
.
Format
(
"[{0}] {1}"
,
curJobStep
.
CurStep
(),
runInfo
);
curJobStep
.
Msg
=
msg
;
MissionSys
.
AssignMission
(
agv
,
$
"{SettingString.DoorAirIn}-3"
);
UpdateJobTaskInfo
(
agv
);
}
}
else
if
(
curJobStep
.
IsStep
(
SEND_FULL_SHELF_STEP
.
WAIT_REACH_TEMP_PLACE
))
else
if
(
curJobStep
.
IsStep
(
SEND_FULL_SHELF_STEP
.
IN_AIR_DOOR_3
))
{
CurTaskState
=
MissionSys
.
GetTakJobState
(
agv
);
if
(
MissionSys
.
CheckTaskFinished
(
agv
,
SettingString
.
C4_STANDBY1
,
CurTaskState
)
||
MissionSys
.
CheckTaskFinished
(
agv
,
SettingString
.
C4_STANDBY2
,
CurTaskState
))
if
(
MissionSys
.
CheckTaskFinished
(
agv
,
$
"{SettingString.DoorAirIn}-3"
,
CurTaskState
))
{
RecordRunLog
(
agv
,
curJobStep
.
CurStep
(),
runInfo
,
agv
.
Place
);
if
(!
AGVManager
.
CheckRoomCTarget
(
agv
,
FullShelfPlace
))
//未占用
{
if
(
AGVManager
.
CheckIsInAirDoor
(
FullShelfPlace
))
{
curJobStep
.
ToNextStep
(
SEND_FULL_SHELF_STEP
.
WAIT_AGV_REACH_AIR_DOOR
);
runInfo
=
"到临时待机位,去产线先过风淋门["
+
FullShelfPlace
+
"]"
;
msg
+=
string
.
Format
(
"[{0}] {1}"
,
curJobStep
.
CurStep
(),
runInfo
);
curJobStep
.
Msg
=
msg
;
MissionSys
.
AssignMission
(
agv
,
SettingString
.
DoorAirIn
);
UpdateJobTaskInfo
(
agv
);
}
else
{
curJobStep
.
ToNextStep
(
SEND_FULL_SHELF_STEP
.
WAIT_AGV_REACH_LINE
);
runInfo
=
"从临时待机位送往["
+
FullShelfPlace
+
"]"
;
msg
+=
string
.
Format
(
"[{0}] {1}"
,
curJobStep
.
CurStep
(),
runInfo
);
curJobStep
.
Msg
=
msg
;
MissionSys
.
AssignMission
(
agv
,
FullShelfPlace
);
UpdateJobTaskInfo
(
agv
);
}
}
curJobStep
.
ToNextStep
(
SEND_FULL_SHELF_STEP
.
WAIT_AGV_REACH_LINE
);
runInfo
=
"送往["
+
FullShelfPlace
+
"]"
;
msg
+=
string
.
Format
(
"[{0}] {1}"
,
curJobStep
.
CurStep
(),
runInfo
);
curJobStep
.
Msg
=
msg
;
MissionSys
.
AssignMission
(
agv
,
FullShelfPlace
);
UpdateJobTaskInfo
(
agv
);
}
}
else
if
(
curJobStep
.
IsStep
(
SEND_FULL_SHELF_STEP
.
WAIT_AGV_REACH_LINE
))
...
...
@@ -177,24 +138,33 @@ namespace DeviceLibrary
{
curJobStep
.
ToNextStep
(
SEND_FULL_SHELF_STEP
.
WAIT_LINE_RESPONSE
);
runInfo
=
"AGV到达 "
+
FullShelfPlace
+
",并发送入料架请求[ReadyEnter]"
;
msg
+=
string
.
Format
(
"[{0}] {1}"
,
curJobStep
.
CurStep
(),
runInfo
);
msg
+=
string
.
Format
(
"[{0}] {1}"
,
curJobStep
.
CurStep
(),
runInfo
);
curJobStep
.
Msg
=
msg
;
AGVManager
.
server
.
ReadyEnter
(
FullShelfPlace
);
}
else
{
if
(
RFID
.
StartsWith
(
SettingString
.
BigShelf_Prefix
)
&&
!
FullShelfPlace
.
Equals
(
SettingString
.
RoomDFeederIn
)
&&
!
FullShelfPlace
.
Equals
(
SettingString
.
RoomCFeederIn
))
if
(
FullShelfPlace
.
Equals
(
"D0"
))
{
curJobStep
.
ToNextStep
(
SEND_FULL_SHELF_STEP
.
WAIT_BIG_SHELF_UNLOCK
);
runInfo
=
"AGV到达 "
+
FullShelfPlace
+
",并等待4楼工单料架移库操作"
;
msg
+=
string
.
Format
(
"[{0}] {1}"
,
curJobStep
.
CurStep
(),
runInfo
);
curJobStep
.
Msg
=
msg
;
MissionSys
.
AssignMission
(
agv
,
"Play"
);
}
else
if
(
RFID
.
StartsWith
(
SettingString
.
BigShelf_Prefix
)
&&
!
FullShelfPlace
.
Equals
(
SettingString
.
RoomDFeederIn
)
&&
!
FullShelfPlace
.
Equals
(
SettingString
.
RoomCFeederIn
))
{
curJobStep
.
ToNextStep
(
SEND_FULL_SHELF_STEP
.
WAIT_BIG_SHELF_UNLOCK
);
runInfo
=
"AGV到达 "
+
FullShelfPlace
+
",并等待大料架移库操作"
;
msg
+=
string
.
Format
(
"[{0}] {1}"
,
curJobStep
.
CurStep
(),
runInfo
);
msg
+=
string
.
Format
(
"[{0}] {1}"
,
curJobStep
.
CurStep
(),
runInfo
);
curJobStep
.
Msg
=
msg
;
MissionSys
.
AssignMission
(
agv
,
"Play"
);
}
else
{
curJobStep
.
ToNextStep
(
SEND_FULL_SHELF_STEP
.
WAIT_LINE_RESPONSE
);
runInfo
=
"AGV到达 "
+
FullShelfPlace
+
",并发送入料架请求[ReadyEnter]"
;
msg
+=
string
.
Format
(
"[{0}] {1}"
,
curJobStep
.
CurStep
(),
runInfo
);
msg
+=
string
.
Format
(
"[{0}] {1}"
,
curJobStep
.
CurStep
(),
runInfo
);
curJobStep
.
Msg
=
msg
;
AGVManager
.
server
.
ReadyEnter
(
FullShelfPlace
);
}
...
...
@@ -208,13 +178,21 @@ namespace DeviceLibrary
System
.
Threading
.
Thread
.
Sleep
(
50
);
if
(
HttpManager
.
GetRackBy
(
RFID
,
out
string
lineName
)
||
(
input
!=
null
&&
input
[
0
]))
{
MissionSys
.
AssignMission
(
agv
,
"Stop"
);
runInfo
=
"大料架在"
+
FullShelfPlace
+
"移库完成["
+
agv
.
BoxDestInfo
+
"]"
;
agv
.
BoxDestInfo
=
""
;
msg
+=
string
.
Format
(
"[{0}] {1}"
,
curJobStep
.
CurStep
(),
runInfo
);
msg
+=
string
.
Format
(
"[{0}] {1}"
,
curJobStep
.
CurStep
(),
runInfo
);
curJobStep
.
Msg
=
msg
;
RecordRunLog
(
agv
,
curJobStep
.
CurStep
(),
runInfo
,
agv
.
Place
);
return
new
EmptyShelfBackJob
(
FullShelfPlace
,
eShelfType
.
BigShelf
);
if
(
RFID
.
StartsWith
(
"D"
))
{
return
new
EmptyShelfBackJob
(
FullShelfPlace
,
eShelfType
.
SmallShelf
);
}
else
{
return
new
EmptyShelfBackJob
(
FullShelfPlace
,
eShelfType
.
BigShelf
);
}
}
}
else
if
(
curJobStep
.
IsStep
(
SEND_FULL_SHELF_STEP
.
WAIT_LINE_RESPONSE
))
...
...
@@ -230,10 +208,10 @@ namespace DeviceLibrary
RecordRunLog
(
agv
,
curJobStep
.
CurStep
(),
runInfo
,
agv
.
Place
);
curJobStep
.
ToNextStep
(
SEND_FULL_SHELF_STEP
.
WAIT__SHELF_IN_LINE
);
runInfo
=
"收到产线入料架请求[ReadyEnter]的响应 "
+
FullShelfPlace
+
"入料架,小车链条运行"
;
msg
+=
string
.
Format
(
"[{0}] {1}"
,
curJobStep
.
CurStep
(),
runInfo
);
msg
+=
string
.
Format
(
"[{0}] {1}"
,
curJobStep
.
CurStep
(),
runInfo
);
curJobStep
.
Msg
=
msg
;
MissionSys
.
AssignMission
(
agv
,
SettingString
.
Leave
);
UpdateJobTaskInfo
(
agv
);
MissionSys
.
AssignMission
(
agv
,
SettingString
.
Leave
);
UpdateJobTaskInfo
(
agv
);
}
}
...
...
@@ -241,7 +219,7 @@ namespace DeviceLibrary
{
agv
.
HasError
=
false
;
runInfo
=
"手动操作:满料架进入"
+
FullShelfPlace
+
"完成["
+
agv
.
BoxDestInfo
+
"]"
;
msg
+=
string
.
Format
(
"[{0}] {1}"
,
curJobStep
.
CurStep
(),
runInfo
);
msg
+=
string
.
Format
(
"[{0}] {1}"
,
curJobStep
.
CurStep
(),
runInfo
);
curJobStep
.
Msg
=
msg
;
agv
.
RFID
=
""
;
agv
.
BoxDestInfo
=
""
;
...
...
@@ -253,7 +231,7 @@ namespace DeviceLibrary
{
curJobStep
.
ToNextStep
(
SEND_FULL_SHELF_STEP
.
WAIT_AGV_REACH_LINE
);
runInfo
=
"AGV到达 "
+
FullShelfPlace
+
",15秒后重新向产线发送入料架请求[ReadyEnter]"
;
msg
+=
string
.
Format
(
"[{0}] {1}"
,
curJobStep
.
CurStep
(),
runInfo
);
msg
+=
string
.
Format
(
"[{0}] {1}"
,
curJobStep
.
CurStep
(),
runInfo
);
curJobStep
.
Msg
=
msg
;
agv
.
HasError
=
true
;
agv
.
SetErrorMsg
(
"AGV到达 "
+
FullShelfPlace
+
",向产线发送入料架请求[ReadyEnter]异常"
,
timeOutValue
.
TotalMinutes
.
ToString
(
"f2"
));
...
...
@@ -262,11 +240,11 @@ namespace DeviceLibrary
else
if
(
curJobStep
.
IsStep
(
SEND_FULL_SHELF_STEP
.
WAIT__SHELF_IN_LINE
))
{
CurTaskState
=
MissionSys
.
GetTakJobState
(
agv
);
if
(
MissionSys
.
CheckTaskFinished
(
agv
,
SettingString
.
Leave
,
CurTaskState
))
if
(
MissionSys
.
CheckTaskFinished
(
agv
,
SettingString
.
Leave
,
CurTaskState
))
{
agv
.
HasError
=
false
;
runInfo
=
"满料进入"
+
FullShelfPlace
+
"完成["
+
agv
.
BoxDestInfo
+
"]"
;
msg
+=
string
.
Format
(
"[{0}] {1}"
,
curJobStep
.
CurStep
(),
runInfo
);
msg
+=
string
.
Format
(
"[{0}] {1}"
,
curJobStep
.
CurStep
(),
runInfo
);
curJobStep
.
Msg
=
msg
;
agv
.
RFID
=
""
;
agv
.
BoxDestInfo
=
""
;
...
...
@@ -303,17 +281,17 @@ namespace DeviceLibrary
/// </summary>
NONE
,
/// <summary>
///
等待AGV到达门
///
去进3D风淋门等待位
/// </summary>
WAIT_AGV_REACH_DOOR
,
IN_AIR_DOOR_1
,
/// <summary>
///
等待agv到达4C临时待机位
///
进风淋门
/// </summary>
WAIT_REACH_TEMP_PLACE
,
IN_AIR_DOOR_2
,
/// <summary>
///
等待到达4C
风淋门
///
出
风淋门
/// </summary>
WAIT_AGV_REACH_AIR_DOOR
,
IN_AIR_DOOR_3
,
/// <summary>
/// 等待小车到达目的地
/// </summary>
...
...
DeviceLibrary/bean/job/jobType/JobForRoomD.cs
查看文件 @
0b84711
...
...
@@ -41,7 +41,7 @@ namespace DeviceLibrary
//出工单料的目的地是否有空料架
if
(
AGVManager
.
FindEmptyShelfBeforeSendFullShelf
(
out
string
nodeName
))
{
if
(
nodeName
.
StartsWith
(
SettingString
.
Room
D
_Name_Prefix
)
&&
!
SettingString
.
RoomC_AGV_IPs
.
Contains
(
currentAgv
.
IP
))
if
(
nodeName
.
StartsWith
(
SettingString
.
Room
S
_Name_Prefix
)
&&
!
SettingString
.
RoomC_AGV_IPs
.
Contains
(
currentAgv
.
IP
))
{
ClientNode
clientNode
=
AGVManager
.
nodeInfo
.
Find
(
s
=>
s
.
Name
.
Equals
(
nodeName
));
int
cnt
=
0
;
...
...
DeviceLibrary/manager/AGVManager.cs
查看文件 @
0b84711
...
...
@@ -403,7 +403,7 @@ namespace DeviceLibrary
log
.
Debug
(
"A6出满料架的产线有空料架,优先处理 "
+
FullShelfDestInfo
.
ShowInfo
(
line
));
return
true
;
}
else
if
(
FullShelfDestInfo
.
location
.
StartsWith
(
SettingString
.
Room
D
_Name_Prefix
)
&&
!
SettingString
.
RoomC_AGV_IPs
.
Contains
(
agv
.
IP
))
else
if
(
FullShelfDestInfo
.
location
.
StartsWith
(
SettingString
.
Room
S
_Name_Prefix
)
&&
!
SettingString
.
RoomC_AGV_IPs
.
Contains
(
agv
.
IP
))
{
nodeName
=
FullShelfDestInfo
.
location
;
GetLineNameByNodeName
(
nodeName
,
out
string
line
);
...
...
@@ -441,7 +441,7 @@ namespace DeviceLibrary
//Common.LogInfo("双层线正在出的工单目标产线有空料架,优先处4C-" + loc);
return
true
;
}
else
if
(
loc
.
StartsWith
(
SettingString
.
Room
D
_Name_Prefix
)
&&
!
SettingString
.
RoomC_AGV_IPs
.
Contains
(
agv
.
IP
))
else
if
(
loc
.
StartsWith
(
SettingString
.
Room
S
_Name_Prefix
)
&&
!
SettingString
.
RoomC_AGV_IPs
.
Contains
(
agv
.
IP
))
{
nodeName
=
loc
;
log
.
Debug
(
"双层线正在出的工单目标产线有空料架,优先处理4D-"
+
loc
);
...
...
@@ -475,7 +475,7 @@ namespace DeviceLibrary
//4D车间寻找
if
(!
SettingString
.
RoomC_AGV_IPs
.
Contains
(
agv
.
IP
))
{
string
nearNodeName
=
CalculateNearNode
(
agv
,
SettingString
.
Room
D
_Name_Prefix
);
string
nearNodeName
=
CalculateNearNode
(
agv
,
SettingString
.
Room
S
_Name_Prefix
);
if
(
nearNodeName
.
Equals
(
""
))
{
return
false
;
...
...
@@ -532,7 +532,7 @@ namespace DeviceLibrary
//4D车间寻找
if
(!
SettingString
.
RoomC_AGV_IPs
.
Contains
(
agv
.
IP
))
{
string
nearNodeName
=
CalculateNearNode
(
agv
,
SettingString
.
Room
D
_Name_Prefix
);
string
nearNodeName
=
CalculateNearNode
(
agv
,
SettingString
.
Room
S
_Name_Prefix
);
if
(!
nearNodeName
.
Equals
(
""
))
{
nodeName
=
nearNodeName
;
...
...
@@ -569,28 +569,12 @@ namespace DeviceLibrary
}
}
if
(
CheckA6State
(
agv
,
eShelfType
.
BigShelf
))
if
(
CheckA6State
(
agv
,
eShelfType
.
BigShelf
)
||
CheckA6State
(
agv
,
eShelfType
.
SmallShelf
)
)
{
//4C车间备料区寻找
if
(
SettingString
.
RoomC_AGV_IPs
.
Contains
(
agv
.
IP
))
{
idx
=
nodeInfo
.
FindIndex
(
s
=>
s
.
EmptyShelfCnt
>
0
&&
s
.
Name
.
Equals
(
SettingString
.
RoomCFeederOut
)
&&
!
s
.
RFID
.
StartsWith
(
"0"
)
&&
s
.
IsUse
);
if
(
idx
>
-
1
)
{
int
idx1
=
agvInfo
.
FindIndex
(
s
=>
s
.
CurJob
is
EnterLeaveShelfJob
&&
((
EnterLeaveShelfJob
)
s
.
CurJob
).
LineName
.
Equals
(
SettingString
.
RoomCFeederOut
));
if
(
idx1
==
-
1
)
{
nodeName
=
nodeInfo
[
idx
].
Name
;
log
.
Debug
(
agv
.
Name
+
" 双层线右侧需要料架,准备去4C-"
+
nodeName
);
return
true
;
}
}
}
//4D车间备料区寻找
//D车间备料区寻找
if
(!
SettingString
.
RoomC_AGV_IPs
.
Contains
(
agv
.
IP
))
{
idx
=
nodeInfo
.
FindIndex
(
s
=>
s
.
EmptyShelfCnt
>
0
&&
s
.
Name
.
Equals
(
SettingString
.
RoomDFeederOut
)
&&
s
.
RFID
.
StartsWith
(
"D
"
)
&&
s
.
IsUse
);
idx
=
nodeInfo
.
FindIndex
(
s
=>
s
.
EmptyShelfCnt
>
0
&&
s
.
Name
.
Equals
(
SettingString
.
RoomDFeederOut
)
&&
!
s
.
RFID
.
StartsWith
(
"0
"
)
&&
s
.
IsUse
);
if
(
idx
>
-
1
)
{
nodeName
=
nodeInfo
[
idx
].
Name
;
...
...
@@ -626,7 +610,8 @@ namespace DeviceLibrary
return
true
;
}
else
if
(
FullShelfDestInfo
.
location
.
StartsWith
(
SettingString
.
RoomD_Name_Prefix
)
&&
!
SettingString
.
RoomC_AGV_IPs
.
Contains
(
agv
.
IP
))
else
if
((
FullShelfDestInfo
.
location
.
StartsWith
(
SettingString
.
RoomS_Name_Prefix
)||
FullShelfDestInfo
.
location
.
StartsWith
(
SettingString
.
SmallShelf_Prefix
))
&&
!
SettingString
.
RoomC_AGV_IPs
.
Contains
(
agv
.
IP
))
{
int
i
=
agvInfo
.
FindIndex
(
s
=>
s
.
CurJob
is
SendFullShelfToLineJob
&&
!
s
.
IP
.
Equals
(
agv
.
IP
)
&&
((
SendFullShelfToLineJob
)
s
.
CurJob
).
FullShelfPlace
.
Equals
(
FullShelfDestInfo
.
location
));
...
...
DeviceLibrary/manager/HttpManager.cs
查看文件 @
0b84711
...
...
@@ -134,7 +134,11 @@ namespace DeviceLibrary
{
tempLocation
=
"3CFeederIn"
;
}
else
if
(
res
[
0
].
location
.
StartsWith
(
"D"
)||
res
[
0
].
location
.
StartsWith
(
"C"
)
||
res
[
0
].
location
.
Equals
(
"Feeder"
)
||
res
[
0
].
location
.
Equals
(
"4DFeeder"
)
||
res
[
0
].
location
.
Equals
(
"4CFeeder"
))
{
tempLocation
=
"D0"
;
}
if
(
AGVManager
.
GetNodeNameByLineName
(
tempLocation
,
out
string
loc
))
{
int
i
=
AGVManager
.
FindNode
(
loc
);
...
...
@@ -525,7 +529,7 @@ namespace DeviceLibrary
{
string
addr
=
""
;
string
lineName
=
""
;
if
(
nodeName
.
StartsWith
(
SettingString
.
Room
D
_Name_Prefix
)
&&
AGVManager
.
GetLineNameByNodeName
(
nodeName
,
out
lineName
))
if
(
nodeName
.
StartsWith
(
SettingString
.
Room
S
_Name_Prefix
)
&&
AGVManager
.
GetLineNameByNodeName
(
nodeName
,
out
lineName
))
{
addr
=
string
.
Format
(
"http://{0}/LineClearRFID?line={1}&rfid={2}"
,
AppConfigHelper
.
GetValue
(
SettingString
.
IP_3D_Light
),
lineName
,
rfid
);
...
...
编写
预览
支持
Markdown
格式
附加文件
你添加了
0
人
到此讨论。请谨慎行事。
Finish editing this message first!
Cancel
请
注册
或
登录
后发表评论