Skip to content
切换导航条
切换导航条
当前项目
正在载入...
登录
顾剑亮
/
Camera
转到一个项目
切换导航栏
切换导航栏固定状态
项目
群组
代码片段
帮助
项目
活动
版本库
图表
网络
创建新的问题
提交
问题看板
文件
提交
网络
比较
分支
标签
Commit ca463496
由
张东亮
编写于
2020-08-13 17:42:22 +0800
浏览文件
选项
浏览文件
标签
下载
电子邮件补丁
差异文件
1
1 个父辈
a4651d4c
隐藏空白字符变更
内嵌
并排
正在显示
9 个修改的文件
包含
99 行增加
和
8 行删除
.vs/AGVControl/v16/.suo
AGVControl/BLL/Control.cs
AGVControl/FrmMain.cs
AGVControl/bin/Debug/AGVControl.exe
AGVControl/bin/Debug/AGVControl.pdb
AGVControl/obj/Debug/AGVControl.csproj.GenerateResource.cache
AGVControl/obj/Debug/AGVControl.exe
AGVControl/obj/Debug/AGVControl.pdb
AGVControl/obj/Debug/Interop.IWshRuntimeLibrary.dll
.vs/AGVControl/v16/.suo
查看文件 @
ca46349
此文件类型无法预览
AGVControl/BLL/Control.cs
查看文件 @
ca46349
...
@@ -2782,20 +2782,51 @@ namespace BLL
...
@@ -2782,20 +2782,51 @@ namespace BLL
if
(!
BAreaLeaveCheck
)
if
(!
BAreaLeaveCheck
)
{
{
//在A4出料架后,B区域暂时找不到出库料仓,先回待机位,如果mark消失,则将料架送回
nodeIdx
=
Common
.
nodeInfo
.
FindIndex
(
s
=>
s
.
Mark
==
agv
.
Mark
);
nodeIdx
=
Common
.
nodeInfo
.
FindIndex
(
s
=>
s
.
Mark
==
agv
.
Mark
&&
s
.
AgvName
==
""
&&
s
.
IsUse
);
if
(
nodeIdx
==
-
1
)
if
(
nodeIdx
==
-
1
)
{
{
nodeIdx
=
Common
.
nodeInfo
.
FindIndex
(
s
=>
s
.
Mark
==
agv
.
Mark
);
nodeIdx
=
Common
.
nodeInfo
.
FindIndex
(
s
=>
s
.
Name
==
"A3"
&&
s
.
Action
==
ClientAction
.
NeedEnter
&&
s
.
AgvName
==
""
&&
s
.
IsUse
);
if
(
nodeIdx
==
-
1
)
//当前mark任务已结束
if
(
nodeIdx
==
-
1
)
{
{
ClearMarkByNodeMark
();
string
log
=
agv
.
Name
+
" A4 FindNeedEnterWithMark 节点mark没有找到[Mark="
+
agv
.
Mark
+
"],去A3"
;
Common
.
log
.
OutInfo
(
log
);
return
MoveNode
(
agv
,
nodeIdx
);
}
else
{
if
(!
agv
.
StandbyTemp
)
{
agv
.
StandbyTemp
=
true
;
foreach
(
var
item
in
Common
.
nodeInfo
)
{
if
(
item
.
AgvName
.
Equals
(
agv
.
Name
))
item
.
AgvName
=
""
;
}
string
log
=
agv
.
Name
+
" A4 FindNeedEnterWithMark 节点mark没有找到[Mark="
+
agv
.
Mark
+
"],移动到MoveStandbyTemp"
;
Common
.
log
.
OutInfo
(
log
);
Common
.
mir
.
Add_Mission_Fleet
(
agv
,
Common
.
agvMission
[
"MoveStandbyTemp"
]);
}
return
true
;
}
}
}
}
string
log
=
agv
.
Name
+
" A4 FindBNeedEnterWithMark [Mark="
+
agv
.
Mark
+
"]"
;
else
{
string
log
=
agv
.
Name
+
" A4 FindNeedEnterWithMark [Mark="
+
agv
.
Mark
+
"]"
;
Common
.
log
.
OutInfo
(
log
);
return
true
;
}
}
if
(!
agv
.
Mark
.
Split
(
','
)[
1
].
Equals
(
"pack"
))
{
ClearMarkByNodeMark
();
string
log
=
agv
.
Name
+
" [Mark="
+
agv
.
Mark
+
"] 出库任务完成"
;
Common
.
log
.
OutInfo
(
log
);
Common
.
log
.
OutInfo
(
log
);
return
true
;
Common
.
log
.
OutTextBox
(
log
);
return
false
;
}
}
bool
rtn
=
AGVManager
.
LeaveCheck
(
agv
,
out
int
taskCount
);
bool
rtn
=
AGVManager
.
LeaveCheck
(
agv
,
out
int
taskCount
);
Thread
.
Sleep
(
3000
);
Thread
.
Sleep
(
3000
);
if
(!
rtn
)
//出库任务还未完成
if
(!
rtn
)
//出库任务还未完成
...
@@ -2817,15 +2848,49 @@ namespace BLL
...
@@ -2817,15 +2848,49 @@ namespace BLL
}
}
else
else
{
{
ClearMarkByNodeMark
();
string
log
=
agv
.
Name
+
" [Mark="
+
agv
.
Mark
+
"] [taskCount = "
+
taskCount
.
ToString
()
+
"] 出库任务完成"
;
string
log
=
agv
.
Name
+
" [Mark="
+
agv
.
Mark
+
"] [taskCount = "
+
taskCount
.
ToString
()
+
"] 出库任务完成"
;
Common
.
log
.
OutInfo
(
log
);
Common
.
log
.
OutInfo
(
log
);
//
Common.log.OutTextBox(log);
Common
.
log
.
OutTextBox
(
log
);
return
false
;
return
false
;
}
}
//MoveStandby
//MoveStandby
}
}
}
}
private
readonly
object
clearMarkObj
=
new
object
();
/// <summary>
/// 清除节点上无mark,但任务里还有mark的情况
/// </summary>
private
void
ClearMarkByNodeMark
()
{
lock
(
clearMarkObj
)
{
//清除mark
List
<
string
>
markLst
=
new
List
<
string
>();
foreach
(
var
mark
in
Common
.
control
.
Marks
)
{
int
count
=
0
;
foreach
(
var
node
in
Common
.
nodeInfo
)
{
if
(
mark
.
Equals
(
node
.
Mark
))
count
++;
}
if
(
count
==
0
)
//mark存在标记,但节点任务没有,删除该mark
{
markLst
.
Add
(
mark
);
}
}
if
(
markLst
.
Count
!=
0
)
{
for
(
int
i
=
0
;
i
<
markLst
.
Count
;
i
++)
{
Common
.
control
.
Marks
.
Remove
(
markLst
[
i
]);
}
}
}
}
/// <summary>
/// <summary>
/// 寻找需要送出料架/料串的节点,并给小车发任务
/// 寻找需要送出料架/料串的节点,并给小车发任务
/// </summary>
/// </summary>
...
...
AGVControl/FrmMain.cs
查看文件 @
ca46349
...
@@ -64,6 +64,16 @@ namespace AGVControl
...
@@ -64,6 +64,16 @@ namespace AGVControl
{
{
DgvNode
.
Rows
[
nodeIndex
].
SetValues
(
Common
.
nodeInfo
[
nodeIndex
].
ToRow
());
DgvNode
.
Rows
[
nodeIndex
].
SetValues
(
Common
.
nodeInfo
[
nodeIndex
].
ToRow
());
}));
}));
string
task
=
""
;
Invoke
(
new
Action
(()
=>
{
label4
.
Text
=
""
;
foreach
(
var
item
in
Common
.
agvInfo
)
{
task
+=
string
.
Format
(
"{0}: [Mark={1}] [RFID={2}] [剩余任务={3}]\r\n"
,
item
.
Name
,
item
.
Mark
,
item
.
RFID
,
item
.
LeftTaskCnt
);
}
label4
.
Text
=
task
;
}));
}
}
private
void
Server_NodeOnline
(
int
nodeIndex
)
private
void
Server_NodeOnline
(
int
nodeIndex
)
...
@@ -163,6 +173,7 @@ namespace AGVControl
...
@@ -163,6 +173,7 @@ namespace AGVControl
return
;
return
;
}
}
}
}
Common
.
agvInfo
[
e
.
RowIndex
].
IsUse
=
false
;
//清除小车缓存
//清除小车缓存
Common
.
log
.
OutInfo
(
string
.
Format
(
"手动清除缓存:{0}[CurTaskName={1}]"
,
Common
.
agvInfo
[
e
.
RowIndex
].
ToRow
(),
Common
.
agvInfo
[
e
.
RowIndex
].
CurTaskName
));
Common
.
log
.
OutInfo
(
string
.
Format
(
"手动清除缓存:{0}[CurTaskName={1}]"
,
Common
.
agvInfo
[
e
.
RowIndex
].
ToRow
(),
Common
.
agvInfo
[
e
.
RowIndex
].
CurTaskName
));
string
place
=
Common
.
agvInfo
[
e
.
RowIndex
].
Place
;
string
place
=
Common
.
agvInfo
[
e
.
RowIndex
].
Place
;
...
@@ -170,6 +181,8 @@ namespace AGVControl
...
@@ -170,6 +181,8 @@ namespace AGVControl
Common
.
agvInfo
[
e
.
RowIndex
].
Place
=
""
;
Common
.
agvInfo
[
e
.
RowIndex
].
Place
=
""
;
Common
.
agvInfo
[
e
.
RowIndex
].
RFID
=
""
;
Common
.
agvInfo
[
e
.
RowIndex
].
RFID
=
""
;
Common
.
agvInfo
[
e
.
RowIndex
].
NextMission
=
""
;
Common
.
agvInfo
[
e
.
RowIndex
].
NextMission
=
""
;
Common
.
agvInfo
[
e
.
RowIndex
].
LeftTaskCnt
=
0
;
Common
.
agvInfo
[
e
.
RowIndex
].
CurTaskName
=
""
;
Common
.
agvInfo
[
e
.
RowIndex
].
IsClearRunInfo
=
true
;
Common
.
agvInfo
[
e
.
RowIndex
].
IsClearRunInfo
=
true
;
//清除节点缓存
//清除节点缓存
...
@@ -185,10 +198,23 @@ namespace AGVControl
...
@@ -185,10 +198,23 @@ namespace AGVControl
Common
.
nodeInfo
[
idx
].
AgvName
=
""
;
Common
.
nodeInfo
[
idx
].
AgvName
=
""
;
DgvNode
.
Rows
[
idx
].
Cells
[
5
].
Value
=
""
;
DgvNode
.
Rows
[
idx
].
Cells
[
5
].
Value
=
""
;
}
}
string
task
=
""
;
Invoke
(
new
Action
(()
=>
{
label4
.
Text
=
""
;
foreach
(
var
item
in
Common
.
agvInfo
)
{
task
+=
string
.
Format
(
"{0}: [Mark={1}] [RFID={2}] [剩余任务={3}]\r\n"
,
item
.
Name
,
item
.
Mark
,
item
.
RFID
,
item
.
LeftTaskCnt
);
}
label4
.
Text
=
task
;
}));
//添加Init任务
//添加Init任务
Common
.
mir
.
Add_Mission_Fleet
(
Common
.
agvInfo
[
e
.
RowIndex
],
Common
.
agvMission
[
"Init"
]);
Common
.
mir
.
Add_Mission_Fleet
(
Common
.
agvInfo
[
e
.
RowIndex
],
Common
.
agvMission
[
"Init"
]);
Common
.
mir
.
State_Ready
(
Common
.
agvInfo
[
e
.
RowIndex
]);
Common
.
mir
.
State_Ready
(
Common
.
agvInfo
[
e
.
RowIndex
]);
DgvAgv
.
Rows
[
e
.
RowIndex
].
SetValues
(
Common
.
agvInfo
[
e
.
RowIndex
].
ToRow
());
DgvAgv
.
Rows
[
e
.
RowIndex
].
SetValues
(
Common
.
agvInfo
[
e
.
RowIndex
].
ToRow
());
Common
.
agvInfo
[
e
.
RowIndex
].
IsUse
=
true
;
}
}
}
}
...
...
AGVControl/bin/Debug/AGVControl.exe
查看文件 @
ca46349
此文件类型无法预览
AGVControl/bin/Debug/AGVControl.pdb
查看文件 @
ca46349
此文件类型无法预览
AGVControl/obj/Debug/AGVControl.csproj.GenerateResource.cache
查看文件 @
ca46349
此文件类型无法预览
AGVControl/obj/Debug/AGVControl.exe
查看文件 @
ca46349
此文件类型无法预览
AGVControl/obj/Debug/AGVControl.pdb
查看文件 @
ca46349
此文件类型无法预览
AGVControl/obj/Debug/Interop.IWshRuntimeLibrary.dll
查看文件 @
ca46349
此文件类型无法预览
编写
预览
支持
Markdown
格式
附加文件
你添加了
0
人
到此讨论。请谨慎行事。
Finish editing this message first!
Cancel
请
注册
或
登录
后发表评论