Skip to content
切换导航条
切换导航条
当前项目
正在载入...
登录
张东亮
/
AGV_3D_Line
转到一个项目
切换导航栏
切换导航栏固定状态
项目
群组
代码片段
帮助
项目
活动
版本库
流水线
图表
问题
0
合并请求
0
维基
网络
创建新的问题
作业
提交
问题看板
文件
提交
网络
比较
分支
标签
Commit 94444c72
由
张东亮
编写于
2021-12-16 11:15:06 +0800
浏览文件
选项
浏览文件
标签
下载
电子邮件补丁
差异文件
大料架只放到左侧下层
1 个父辈
b8cdb476
隐藏空白字符变更
内嵌
并排
正在显示
4 个修改的文件
包含
35 行增加
和
36 行删除
AGV_3D_Line/Manual.cs
DeviceLibrary/bean/JobStep.cs
DeviceLibrary/bean/job/GoEmptyShelfLineJob.cs
DeviceLibrary/manager/AGVManager.cs
AGV_3D_Line/Manual.cs
查看文件 @
94444c7
...
...
@@ -53,7 +53,7 @@ namespace AGVControl
MissionSys
.
AssignMission
(
Agv
,
SettingString
.
Init
);
}
//AGVManager.Standby.DelOccupyInfo(Agv);
LogUtil
.
info
(
$
"{Agv.Name} 切换为手动模式"
);
}
else
{
...
...
@@ -77,6 +77,7 @@ namespace AGVControl
Agv
.
Resend
();
}
LogUtil
.
info
(
$
"{Agv.Name} 切换为自动模式"
);
}
Agv
.
IsUse
=
chkBxAuto
.
Checked
;
}));
...
...
DeviceLibrary/bean/JobStep.cs
查看文件 @
94444c7
...
...
@@ -22,7 +22,7 @@ namespace DeviceLibrary
//不为空,且与上一个消息不一样才打印
if
(!
value
.
Equals
(
msg
))
{
//
LogUtil.info(value);
LogUtil
.
info
(
value
);
}
}
msg
=
value
;
...
...
DeviceLibrary/bean/job/GoEmptyShelfLineJob.cs
查看文件 @
94444c7
...
...
@@ -38,7 +38,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
);
}
}
...
...
@@ -53,6 +53,7 @@ namespace DeviceLibrary
string
msg
=
string
.
Format
(
"{0} 回收空料架[RFID={1}]: "
,
agv
.
Name
,
RFID
);
//bool rtn = false;
StartJobTime
=
curJobStep
.
startTime
;
agv
.
RFID
=
RFID
;
int
nodeIdx
=
AGVManager
.
FindNode
(
EmptyShelfPlace
);
if
(
curJobStep
.
IsStep
(
TAKE_EMPTY_STEP
.
NONE
))
{
...
...
@@ -63,7 +64,7 @@ namespace DeviceLibrary
msg
+=
string
.
Format
(
"[{0}] {1}"
,
curJobStep
.
CurStep
(),
runInfo
);
curJobStep
.
Msg
=
msg
;
MissionSys
.
AssignMission
(
agv
,
SettingString
.
DoorAirOut
);
UpdateJobTaskInfo
(
agv
);
UpdateJobTaskInfo
(
agv
);
}
else
if
(!
AGVManager
.
CheckIsInAirDoor
(
agvPlae
)
&&
AGVManager
.
CheckIsInAirDoor
(
EmptyShelfPlace
))
//4C风淋门外->风淋门内
{
...
...
@@ -76,7 +77,7 @@ namespace DeviceLibrary
msg
+=
string
.
Format
(
"[{0}] {1}"
,
curJobStep
.
CurStep
(),
runInfo
);
curJobStep
.
Msg
=
msg
;
AGVManager
.
MoveToRoomCStandy
(
agv
);
UpdateJobTaskInfo
(
agv
);
UpdateJobTaskInfo
(
agv
);
}
else
{
...
...
@@ -85,7 +86,7 @@ namespace DeviceLibrary
msg
+=
string
.
Format
(
"[{0}] {1}"
,
curJobStep
.
CurStep
(),
runInfo
);
curJobStep
.
Msg
=
msg
;
MissionSys
.
AssignMission
(
agv
,
SettingString
.
DoorAirIn
);
UpdateJobTaskInfo
(
agv
);
UpdateJobTaskInfo
(
agv
);
}
}
else
if
((
agvPlae
.
StartsWith
(
SettingString
.
RoomD_Name_Prefix
)
||
agvPlae
.
StartsWith
(
SettingString
.
DoubleLine_Name_Prefix
)
||
agvPlae
.
Equals
(
SettingString
.
Standby
)
||
...
...
@@ -97,7 +98,7 @@ namespace DeviceLibrary
msg
+=
string
.
Format
(
"[{0}] {1}"
,
curJobStep
.
CurStep
(),
runInfo
);
curJobStep
.
Msg
=
msg
;
MissionSys
.
AssignMission
(
agv
,
SettingString
.
DoorDToC
);
UpdateJobTaskInfo
(
agv
);
UpdateJobTaskInfo
(
agv
);
}
}
else
//起始与目的地在风淋门同一侧
...
...
@@ -111,7 +112,7 @@ namespace DeviceLibrary
msg
+=
string
.
Format
(
"[{0}] {1}"
,
curJobStep
.
CurStep
(),
runInfo
);
curJobStep
.
Msg
=
msg
;
MissionSys
.
AssignMission
(
agv
,
SettingString
.
DoorAirOut
);
UpdateJobTaskInfo
(
agv
);
UpdateJobTaskInfo
(
agv
);
}
else
{
...
...
@@ -132,7 +133,7 @@ namespace DeviceLibrary
msg
+=
string
.
Format
(
"[{0}] {1}"
,
curJobStep
.
CurStep
(),
runInfo
);
curJobStep
.
Msg
=
msg
;
AGVManager
.
MoveToRoomCStandy
(
agv
);
UpdateJobTaskInfo
(
agv
);
UpdateJobTaskInfo
(
agv
);
}
else
{
...
...
@@ -149,7 +150,7 @@ namespace DeviceLibrary
msg
+=
string
.
Format
(
"[{0}] {1}"
,
curJobStep
.
CurStep
(),
runInfo
);
curJobStep
.
Msg
=
msg
;
MissionSys
.
AssignMission
(
agv
,
SettingString
.
DoorCToD
);
UpdateJobTaskInfo
(
agv
);
UpdateJobTaskInfo
(
agv
);
}
else
if
((
agvPlae
.
StartsWith
(
SettingString
.
RoomD_Name_Prefix
)
||
agvPlae
.
StartsWith
(
SettingString
.
DoubleLine_Name_Prefix
)
||
agvPlae
.
Equals
(
SettingString
.
Standby
)
||
agvPlae
.
Equals
(
SettingString
.
AutoCharge
))
...
...
@@ -160,7 +161,7 @@ namespace DeviceLibrary
msg
+=
string
.
Format
(
"[{0}] {1}"
,
curJobStep
.
CurStep
(),
runInfo
);
curJobStep
.
Msg
=
msg
;
MissionSys
.
AssignMission
(
agv
,
SettingString
.
DoorDToC
);
UpdateJobTaskInfo
(
agv
);
UpdateJobTaskInfo
(
agv
);
}
else
//4D->4D
...
...
@@ -190,7 +191,7 @@ namespace DeviceLibrary
msg
+=
string
.
Format
(
"[{0}] {1}"
,
curJobStep
.
CurStep
(),
runInfo
);
curJobStep
.
Msg
=
msg
;
AGVManager
.
MoveToRoomCStandy
(
agv
);
UpdateJobTaskInfo
(
agv
);
UpdateJobTaskInfo
(
agv
);
}
else
{
...
...
@@ -207,7 +208,7 @@ namespace DeviceLibrary
msg
+=
string
.
Format
(
"[{0}] {1}"
,
curJobStep
.
CurStep
(),
runInfo
);
curJobStep
.
Msg
=
msg
;
MissionSys
.
AssignMission
(
agv
,
SettingString
.
DoorCToD
);
UpdateJobTaskInfo
(
agv
);
UpdateJobTaskInfo
(
agv
);
}
//都在风淋门内,到达风淋门外
else
...
...
@@ -217,7 +218,7 @@ namespace DeviceLibrary
msg
+=
string
.
Format
(
"[{0}] {1}"
,
curJobStep
.
CurStep
(),
runInfo
);
curJobStep
.
Msg
=
msg
;
AGVManager
.
MoveToRoomCStandy
(
agv
);
UpdateJobTaskInfo
(
agv
);
UpdateJobTaskInfo
(
agv
);
}
}
}
...
...
@@ -246,7 +247,7 @@ namespace DeviceLibrary
msg
+=
string
.
Format
(
"[{0}] {1}"
,
curJobStep
.
CurStep
(),
runInfo
);
curJobStep
.
Msg
=
msg
;
AGVManager
.
MoveToRoomCStandy
(
agv
);
UpdateJobTaskInfo
(
agv
);
UpdateJobTaskInfo
(
agv
);
}
else
{
...
...
@@ -257,7 +258,7 @@ namespace DeviceLibrary
msg
+=
string
.
Format
(
"[{0}] {1}"
,
curJobStep
.
CurStep
(),
runInfo
);
curJobStep
.
Msg
=
msg
;
MissionSys
.
AssignMission
(
agv
,
SettingString
.
DoorAirIn
);
UpdateJobTaskInfo
(
agv
);
UpdateJobTaskInfo
(
agv
);
}
else
{
...
...
@@ -308,7 +309,7 @@ namespace DeviceLibrary
msg
+=
string
.
Format
(
"[{0}] {1}"
,
curJobStep
.
CurStep
(),
runInfo
);
curJobStep
.
Msg
=
msg
;
MissionSys
.
AssignMission
(
agv
,
EmptyShelfPlace
);
UpdateJobTaskInfo
(
agv
);
UpdateJobTaskInfo
(
agv
);
}
else
{
...
...
@@ -356,7 +357,6 @@ namespace DeviceLibrary
return
this
;
}
ClientNode
node
=
AGVManager
.
nodeInfo
[
nodeIdx
];
agv
.
RFID
=
node
.
RFID
;
AGVManager
.
server
.
ReadyLeave
(
EmptyShelfPlace
);
}
...
...
@@ -372,7 +372,6 @@ namespace DeviceLibrary
return
this
;
}
ClientNode
node
=
AGVManager
.
nodeInfo
[
nodeIdx
];
agv
.
RFID
=
node
.
RFID
;
if
(
node
.
StateEquals
(
eNodeStatus
.
MayLeave
))
{
agv
.
HasError
=
false
;
...
...
@@ -385,7 +384,7 @@ namespace DeviceLibrary
curJobStep
.
Msg
=
msg
;
//agv.RFID = node.RFID;
MissionSys
.
AssignMission
(
agv
,
SettingString
.
Enter
);
UpdateJobTaskInfo
(
agv
);
UpdateJobTaskInfo
(
agv
);
}
}
...
...
@@ -410,14 +409,11 @@ namespace DeviceLibrary
runInfo
=
"空料架在["
+
EmptyShelfPlace
+
"]进入小车完成"
+
"[RFID="
+
RFID
+
"]"
;
msg
+=
string
.
Format
(
"[{0}] {1}"
,
curJobStep
.
CurStep
(),
runInfo
);
curJobStep
.
Msg
=
msg
;
//4DfeederOut默认大料架
// if (agv.Place.Equals(SettingString.RoomDFeederOut))
// return new EmptyShelfBackJob(EmptyShelfPlace, eShelfType.BigShelf);
RecordRunLog
(
agv
,
curJobStep
.
CurStep
(),
runInfo
,
agv
.
Place
);
if
(
agv
.
RFID
.
StartsWith
(
"D"
))
if
(
RFID
.
StartsWith
(
"D"
))
return
new
EmptyShelfBackJob
(
EmptyShelfPlace
,
eShelfType
.
SmallShelf
);
else
if
(
agv
.
RFID
.
StartsWith
(
"C"
))
else
if
(
RFID
.
StartsWith
(
"C"
))
{
return
new
EmptyShelfBackJob
(
EmptyShelfPlace
,
eShelfType
.
BigShelf
);
}
...
...
DeviceLibrary/manager/AGVManager.cs
查看文件 @
94444c7
...
...
@@ -238,9 +238,9 @@ namespace DeviceLibrary
&&
(
s
.
StateEquals
(
eNodeStatus
.
NeedD
)
||
s
.
StateEquals
(
eNodeStatus
.
NeedEnter
))
&&
s
.
IsUse
);
if
(
tarIdx
>
-
1
)
{
tarIdx
=
agvInfo
.
FindIndex
(
s
=>
!
s
.
IP
.
Equals
(
agv
.
IP
)
&&
s
.
CurJob
!=
null
&&
s
.
CurJob
is
EmptyShelfBackJob
&&
((((
EmptyShelfBackJob
)
s
.
CurJob
).
EmptyShelfTargetPlace
)
!=
null
)
&&
((
EmptyShelfBackJob
)
s
.
CurJob
).
EmptyShelfTargetPlace
.
Equals
(
SettingString
.
A5
));
if
(
tarIdx
==
-
1
)
//
tarIdx = agvInfo.FindIndex(s => !s.IP.Equals(agv.IP) && s.CurJob != null && s.CurJob is EmptyShelfBackJob
//
&& ((((EmptyShelfBackJob)s.CurJob).EmptyShelfTargetPlace) != null) && ((EmptyShelfBackJob)s.CurJob).EmptyShelfTargetPlace.Equals(SettingString.A5));
//
if (tarIdx == -1)
{
nodeName
=
SettingString
.
A5
;
log
.
Debug
(
string
.
Format
(
"{0} {1}需要小料架"
,
agv
.
Name
,
SettingString
.
A5
));
...
...
@@ -270,9 +270,9 @@ namespace DeviceLibrary
&&
(
s
.
StateEquals
(
eNodeStatus
.
NeedC
)
||
s
.
StateEquals
(
eNodeStatus
.
NeedEnter
))
&&
s
.
IsUse
);
if
(
tarIdx
>
-
1
)
{
tarIdx
=
agvInfo
.
FindIndex
(
s
=>
!
s
.
IP
.
Equals
(
agv
.
IP
)
&&
s
.
CurJob
!=
null
&&
s
.
CurJob
is
EmptyShelfBackJob
&&
((((
EmptyShelfBackJob
)
s
.
CurJob
).
EmptyShelfTargetPlace
)
!=
null
)
&&
((
EmptyShelfBackJob
)
s
.
CurJob
).
EmptyShelfTargetPlace
.
Equals
(
SettingString
.
A5
));
if
(
tarIdx
==
-
1
)
//
tarIdx = agvInfo.FindIndex(s => !s.IP.Equals(agv.IP) && s.CurJob != null && s.CurJob is EmptyShelfBackJob
//
&& ((((EmptyShelfBackJob)s.CurJob).EmptyShelfTargetPlace) != null) && ((EmptyShelfBackJob)s.CurJob).EmptyShelfTargetPlace.Equals(SettingString.A5));
//
if (tarIdx == -1)
{
nodeName
=
SettingString
.
A5
;
log
.
Debug
(
string
.
Format
(
"{0} {1}需要大料架"
,
agv
.
Name
,
SettingString
.
A5
));
...
...
@@ -551,18 +551,18 @@ namespace DeviceLibrary
if
(
idx
>
-
1
)
{
nodeName
=
nodeInfo
[
idx
].
Name
;
log
.
Debug
(
agv
.
Name
+
" 双层线
右侧需要
料架,准备去4C-"
+
nodeName
);
log
.
Debug
(
agv
.
Name
+
" 双层线
左侧需要大
料架,准备去4C-"
+
nodeName
);
return
true
;
}
}
//4D车间备料区寻找
if
(!
SettingString
.
RoomC_AGV_IPs
.
Contains
(
agv
.
IP
))
{
idx
=
nodeInfo
.
FindIndex
(
s
=>
s
.
EmptyShelfCnt
>
0
&&
s
.
Name
.
Equals
(
SettingString
.
RoomDFeederOut
)
&&
!
s
.
RFID
.
StartsWith
(
"C"
)
&&
s
.
IsUse
);
idx
=
nodeInfo
.
FindIndex
(
s
=>
s
.
EmptyShelfCnt
>
0
&&
s
.
Name
.
Equals
(
SettingString
.
RoomDFeederOut
)
&&
s
.
RFID
.
StartsWith
(
"C"
)
&&
s
.
IsUse
);
if
(
idx
>
-
1
)
{
nodeName
=
nodeInfo
[
idx
].
Name
;
log
.
Debug
(
agv
.
Name
+
" 双层线右侧需要
料架,准备去4D-"
+
nodeName
);
log
.
Info
(
agv
.
Name
+
" 双层线左侧需要大
料架,准备去4D-"
+
nodeName
);
return
true
;
}
...
...
@@ -590,11 +590,11 @@ namespace DeviceLibrary
//4D车间备料区寻找
if
(!
SettingString
.
RoomC_AGV_IPs
.
Contains
(
agv
.
IP
))
{
idx
=
nodeInfo
.
FindIndex
(
s
=>
s
.
EmptyShelfCnt
>
0
&&
s
.
Name
.
Equals
(
SettingString
.
RoomDFeederOut
)
&&
!
s
.
RFID
.
StartsWith
(
"0
"
)
&&
s
.
IsUse
);
idx
=
nodeInfo
.
FindIndex
(
s
=>
s
.
EmptyShelfCnt
>
0
&&
s
.
Name
.
Equals
(
SettingString
.
RoomDFeederOut
)
&&
s
.
RFID
.
StartsWith
(
"D
"
)
&&
s
.
IsUse
);
if
(
idx
>
-
1
)
{
nodeName
=
nodeInfo
[
idx
].
Name
;
log
.
Debug
(
agv
.
Name
+
" 双层线右侧需要料架,准备去4D-"
+
nodeName
);
log
.
Info
(
agv
.
Name
+
" 双层线右侧需要料架,准备去4D-"
+
nodeName
);
return
true
;
}
...
...
@@ -866,6 +866,7 @@ namespace DeviceLibrary
/// AGV编号
/// </summary>
public
string
AGVNum
{
get
;
set
;
}
=
""
;
public
string
DeviceName
{
get
;
set
;
}
=
""
;
/// <summary>
/// 任务名称
/// </summary>
...
...
@@ -942,6 +943,7 @@ namespace DeviceLibrary
agvname
=
value
.
PadLeft
(
4
,
'0'
);
}
}
public
string
DeviceName
{
get
;
set
;
}
=
""
;
private
string
agvname
=
""
;
/// <summary>
/// 开始时间
...
...
编写
预览
支持
Markdown
格式
附加文件
你添加了
0
人
到此讨论。请谨慎行事。
Finish editing this message first!
Cancel
请
注册
或
登录
后发表评论