Skip to content
切换导航条
切换导航条
当前项目
正在载入...
登录
张东亮
/
Qisda-SO1037-AGVDispatch
转到一个项目
切换导航栏
切换导航栏固定状态
项目
群组
代码片段
帮助
项目
活动
版本库
流水线
图表
问题
0
合并请求
0
维基
网络
创建新的问题
作业
提交
问题看板
文件
提交
网络
比较
分支
标签
Commit 8b6e4812
由
张东亮
编写于
2022-12-12 09:16:31 +0800
浏览文件
选项
浏览文件
标签
下载
电子邮件补丁
差异文件
二期基本ok,剩余跨风淋门功能测试
1 个父辈
4ee65acf
全部展开
显示空白字符变更
内嵌
并排
正在显示
24 个修改的文件
包含
620 行增加
和
155 行删除
Common/SettingString.cs
DeviceLibrary/Control.cs
DeviceLibrary/bean/JobParam.cs
DeviceLibrary/bean/RunStep.cs
DeviceLibrary/bean/job/ChargeJob.cs
DeviceLibrary/bean/job/CrossDoorJob.cs
DeviceLibrary/bean/job/F1LiftC1ToLiftD2Job.cs
DeviceLibrary/bean/job/F1LiftD2ToLiftC1Job.cs
DeviceLibrary/bean/job/Job.cs
DeviceLibrary/bean/job/LiftToLinesJob.cs
DeviceLibrary/bean/job/LineToLiftJob.cs
DeviceLibrary/bean/job/ShelfBackLiftToStoreJob.cs
DeviceLibrary/bean/job/StandyJob.cs
DeviceLibrary/bean/job/SwitchShelfJob.cs
DeviceLibrary/bean/jobType/BackLiftToLineJobType.cs
DeviceLibrary/bean/jobType/F1LiftC1ToLiftD2JobType.cs
DeviceLibrary/bean/jobType/F1LiftD2ToLiftC1JobType.cs
DeviceLibrary/bean/jobType/JobType.cs
DeviceLibrary/bean/jobType/LiftToLinesJobType.cs
DeviceLibrary/bean/jobType/LineToLiftJobType.cs
DeviceLibrary/bean/jobType/ShelfBuffToLiftJobType.cs
DeviceLibrary/manager/MissionManager.cs
DeviceLibrary/manager/NodeManager.cs
DeviceLibrary/service/Service.cs
Common/SettingString.cs
查看文件 @
8b6e481
...
@@ -31,6 +31,18 @@ namespace Common
...
@@ -31,6 +31,18 @@ namespace Common
public
const
string
LIFT_D2
=
"LIFT_D2"
;
public
const
string
LIFT_D2
=
"LIFT_D2"
;
public
const
string
LIFT_C1
=
"LIFT_C1"
;
public
const
string
LIFT_C1
=
"LIFT_C1"
;
public
const
string
storage
=
"storage"
;
public
const
string
storage
=
"storage"
;
public
const
string
CrossDoor
=
"CrossDoor"
;
public
const
string
CrossAirDoor
=
"CrossAirDoor"
;
public
const
string
In
=
"In"
;
public
const
string
Out
=
"Out"
;
public
const
string
ToDoor
=
"ToDoor"
;
public
const
string
OpenDoor
=
"OpenDoor"
;
public
const
string
EnterDoor
=
"EnterDoor"
;
public
const
string
CloseDoor
=
"CloseDoor"
;
public
const
string
OpenOtherDoor
=
"OpenOtherDoor"
;
public
const
string
LeaveDoor
=
"LeaveDoor"
;
public
const
string
CloseOtherDoor
=
"CloseOtherDoor"
;
//任务状态
//任务状态
public
const
string
Wait
=
"Wait"
;
public
const
string
Wait
=
"Wait"
;
public
const
string
Done
=
"Done"
;
public
const
string
Done
=
"Done"
;
...
...
DeviceLibrary/Control.cs
查看文件 @
8b6e481
...
@@ -30,7 +30,7 @@ namespace DeviceLibrary
...
@@ -30,7 +30,7 @@ namespace DeviceLibrary
{
{
AgvCallTimer
=
new
System
.
Timers
.
Timer
AgvCallTimer
=
new
System
.
Timers
.
Timer
{
{
Interval
=
3
00
,
Interval
=
5
00
,
AutoReset
=
true
,
AutoReset
=
true
,
Enabled
=
false
Enabled
=
false
};
};
...
@@ -38,7 +38,7 @@ namespace DeviceLibrary
...
@@ -38,7 +38,7 @@ namespace DeviceLibrary
AgvStateTimer
=
new
System
.
Timers
.
Timer
AgvStateTimer
=
new
System
.
Timers
.
Timer
{
{
Interval
=
5
000
,
Interval
=
3
000
,
AutoReset
=
true
,
AutoReset
=
true
,
Enabled
=
false
Enabled
=
false
};
};
...
@@ -181,7 +181,6 @@ namespace DeviceLibrary
...
@@ -181,7 +181,6 @@ namespace DeviceLibrary
return
null
;
return
null
;
if
(
job
!=
null
)
if
(
job
!=
null
)
{
{
//log.Debug(agv_Info.Name + " GetJob OK " + job.ToString());
return
job
;
return
job
;
}
}
}
}
...
@@ -214,7 +213,6 @@ namespace DeviceLibrary
...
@@ -214,7 +213,6 @@ namespace DeviceLibrary
if
(!
AGVManager
.
agvInfo
[
i
].
StateID
.
Equals
(
eAGVState
.
Ready
)
if
(!
AGVManager
.
agvInfo
[
i
].
StateID
.
Equals
(
eAGVState
.
Ready
)
&&
!
AGVManager
.
agvInfo
[
i
].
StateID
.
Equals
(
eAGVState
.
Executing
)
&&
!
AGVManager
.
agvInfo
[
i
].
StateID
.
Equals
(
eAGVState
.
None
))
&&
!
AGVManager
.
agvInfo
[
i
].
StateID
.
Equals
(
eAGVState
.
Executing
)
&&
!
AGVManager
.
agvInfo
[
i
].
StateID
.
Equals
(
eAGVState
.
None
))
{
{
//log.Warn(string.Format("{0}不能调用 StateID={1}", AGVManager.agvInfo[i].Name, AGVManager.agvInfo[i].StateID.ToString()));
continue
;
continue
;
}
}
if
(
agv
.
TaskRunState
.
DeWaitTaskQueue
(
out
AgvTask
task
))
if
(
agv
.
TaskRunState
.
DeWaitTaskQueue
(
out
AgvTask
task
))
...
...
DeviceLibrary/bean/JobParam.cs
查看文件 @
8b6e481
...
@@ -18,7 +18,10 @@ namespace DeviceLibrary.bean
...
@@ -18,7 +18,10 @@ namespace DeviceLibrary.bean
/// 初始地点
/// 初始地点
/// </summary>
/// </summary>
public
Node
SrcNode
{
get
;
set
;
}
public
Node
SrcNode
{
get
;
set
;
}
/// <summary>
/// 过门信息
/// </summary>
public
CrossDoor
CrossDoor
{
get
;
set
;
}
=
new
CrossDoor
();
private
service
.
model
.
MissionInfo
missionInfo
;
private
service
.
model
.
MissionInfo
missionInfo
;
/// <summary>
/// <summary>
...
@@ -67,6 +70,7 @@ namespace DeviceLibrary.bean
...
@@ -67,6 +70,7 @@ namespace DeviceLibrary.bean
Shelf
=
shelf
;
Shelf
=
shelf
;
this
.
missionInfo
=
MissionInfo
;
this
.
missionInfo
=
MissionInfo
;
TargetNodes
=
new
List
<
Node
>();
TargetNodes
=
new
List
<
Node
>();
CrossDoor
=
new
CrossDoor
();
}
}
}
}
/// <summary>
/// <summary>
...
@@ -102,4 +106,24 @@ namespace DeviceLibrary.bean
...
@@ -102,4 +106,24 @@ namespace DeviceLibrary.bean
this
.
RunStep
=
step
;
this
.
RunStep
=
step
;
}
}
}
}
public
class
CrossDoor
{
/// <summary>
/// 当前位置
/// </summary>
public
Node
CurNode
{
get
;
set
;
}
/// <summary>
/// 下一位置
/// </summary>
public
Node
NextNode
{
get
;
set
;
}
/// <summary>
/// 是否是进入方向
/// </summary>
public
bool
IsIn
{
get
;
set
;
}
=
true
;
/// <summary>
/// 是否是风淋门
/// </summary>
public
bool
IsAir
{
get
;
set
;
}
=
false
;
}
}
}
DeviceLibrary/bean/RunStep.cs
查看文件 @
8b6e481
...
@@ -59,6 +59,7 @@ namespace DeviceLibrary.bean
...
@@ -59,6 +59,7 @@ namespace DeviceLibrary.bean
/// 关闭电梯门
/// 关闭电梯门
/// </summary>
/// </summary>
ShelfBack_LiftToStore_05_CloseLiftDoor
,
ShelfBack_LiftToStore_05_CloseLiftDoor
,
ShelfBack_LiftToStore_06_CrossDoor
,
/// <summary>
/// <summary>
/// 去库房
/// 去库房
/// </summary>
/// </summary>
...
@@ -67,11 +68,14 @@ namespace DeviceLibrary.bean
...
@@ -67,11 +68,14 @@ namespace DeviceLibrary.bean
/// 放下料车
/// 放下料车
/// </summary>
/// </summary>
ShelfBack_LiftToStore_07_TakeShelfOff
,
ShelfBack_LiftToStore_07_TakeShelfOff
,
ShelfBack_LiftToStore_07_CrossDoor
,
#
endregion
#
endregion
#
region
线体到电梯
#
region
线体到电梯
LineToLift_00_CrossDoor
,
LineToLift_01_ToLine
,
LineToLift_01_ToLine
,
LineToLift_02_PutShelfOn
,
LineToLift_02_PutShelfOn
,
LineToLift_02_CrossDoor
,
LineToLift_ToSteelSrc
,
LineToLift_ToSteelSrc
,
LineToLift_PlaySound
,
LineToLift_PlaySound
,
LineToLift_WaitConfirm
,
LineToLift_WaitConfirm
,
...
@@ -146,6 +150,8 @@ namespace DeviceLibrary.bean
...
@@ -146,6 +150,8 @@ namespace DeviceLibrary.bean
/// 去线体
/// 去线体
/// </summary>
/// </summary>
SD_LiftToLine_07_ToLine
,
SD_LiftToLine_07_ToLine
,
SD_LiftToLine_07_CrossDoor
,
SD_LiftToLine_07_CrossTwoDoor
,
/// <summary>
/// <summary>
/// 到达线体,上报位置
/// 到达线体,上报位置
/// </summary>
/// </summary>
...
@@ -163,6 +169,8 @@ namespace DeviceLibrary.bean
...
@@ -163,6 +169,8 @@ namespace DeviceLibrary.bean
/// </summary>
/// </summary>
SD_LiftToLine_11_BackToLift
,
SD_LiftToLine_11_BackToLift
,
SD_LiftToLine_11_ToStandby
,
SD_LiftToLine_11_ToStandby
,
SD_LiftToLine_11_CrossTwoDoor
,
SD_LiftToLine_11_CrossTDoor
,
/// <summary>
/// <summary>
/// 等待电梯门开启
/// 等待电梯门开启
/// </summary>
/// </summary>
...
@@ -198,6 +206,8 @@ namespace DeviceLibrary.bean
...
@@ -198,6 +206,8 @@ namespace DeviceLibrary.bean
/// 料车无需返回,直接结束
/// 料车无需返回,直接结束
/// </summary>
/// </summary>
SD_LiftToLine_16_TakeShelfOff
,
SD_LiftToLine_16_TakeShelfOff
,
SD_LiftToLine_16_CrossTwoDoor
,
SD_LiftToLine_16_CrossTDoor
,
SD_LiftToLine_17_Dock
,
SD_LiftToLine_17_Dock
,
SD_LiftToLine_18_CheckState
,
SD_LiftToLine_18_CheckState
,
SD_LiftToLine_19_TakeOff
,
SD_LiftToLine_19_TakeOff
,
...
@@ -441,6 +451,9 @@ namespace DeviceLibrary.bean
...
@@ -441,6 +451,9 @@ namespace DeviceLibrary.bean
#
endregion
#
endregion
#
region
1F
成品入库从
C1
到
D2
#
region
1F
成品入库从
C1
到
D2
S1F_LiftC1ToLiftD2_Buff
,
S1F_LiftC1ToLiftD2_ToLine
,
S1F_LiftC1ToLiftD2_PutShelf
,
S1F_LiftC1ToLiftD2_00_ToStandby
,
S1F_LiftC1ToLiftD2_00_ToStandby
,
/// <summary>
/// <summary>
/// 去电梯口
/// 去电梯口
...
...
DeviceLibrary/bean/job/ChargeJob.cs
查看文件 @
8b6e481
...
@@ -24,14 +24,14 @@ namespace DeviceLibrary
...
@@ -24,14 +24,14 @@ namespace DeviceLibrary
/// <param name="agv"></param>
/// <param name="agv"></param>
public
override
Job
Run
(
AgvInfo
agv
)
public
override
Job
Run
(
AgvInfo
agv
)
{
{
agv
.
SetJobContext
(
new
bean
.
agv
.
JobContext
()
//
agv.SetJobContext(new bean.agv.JobContext()
{
//
{
AgvTask
=
agv
.
TaskRunState
.
Task
,
//
AgvTask = agv.TaskRunState.Task,
JobFullName
=
this
.
ToString
(),
//
JobFullName = this.ToString(),
JobStep
=
JobRunStep
.
PreStep
(),
//
JobStep = JobRunStep.PreStep(),
Name
=
agv
.
Name
,
//
Name = agv.Name,
JobParam
=
JobParam
//
JobParam = JobParam
})
;
//
}) ;
if
(
JobRunStep
.
IsStep
(
RunStep
.
NONE
))
if
(
JobRunStep
.
IsStep
(
RunStep
.
NONE
))
{
{
ClearLiftNodeOccupied
(
agv
);
ClearLiftNodeOccupied
(
agv
);
...
...
DeviceLibrary/bean/job/CrossDoorJob.cs
查看文件 @
8b6e481
using
Common
;
using
Common
;
using
DeviceLibrary.bean
;
using
DeviceLibrary.bean
;
using
DeviceLibrary.manager
;
using
System.Text
;
namespace
DeviceLibrary
namespace
DeviceLibrary
{
{
...
@@ -16,7 +18,7 @@ namespace DeviceLibrary
...
@@ -16,7 +18,7 @@ namespace DeviceLibrary
{
{
JobName
=
"过门任务"
;
JobName
=
"过门任务"
;
}
}
public
CrossDoorJob
()
:
base
()
public
CrossDoorJob
()
:
base
()
{
{
JobName
=
"过门任务"
;
JobName
=
"过门任务"
;
}
}
...
@@ -26,51 +28,175 @@ namespace DeviceLibrary
...
@@ -26,51 +28,175 @@ namespace DeviceLibrary
/// <param name="agv"></param>
/// <param name="agv"></param>
public
override
Job
Run
(
AgvInfo
agv
)
public
override
Job
Run
(
AgvInfo
agv
)
{
{
Job
job
=
this
;
agv
.
SetJobContext
(
new
bean
.
agv
.
JobContext
()
agv
.
SetJobContext
(
new
bean
.
agv
.
JobContext
()
{
{
AgvTask
=
agv
.
TaskRunState
.
Task
,
AgvTask
=
agv
.
TaskRunState
.
Task
,
JobFullName
=
this
.
ToString
(),
JobFullName
=
this
.
ToString
(),
JobStep
=
JobRunStep
.
PreStep
(),
JobStep
=
JobRunStep
.
PreStep
(),
Name
=
agv
.
Name
,
Name
=
agv
.
Name
,
JobParam
=
JobParam
JobParam
=
JobParam
});
});
if
(
JobRunStep
.
IsStep
(
RunStep
.
NONE
))
if
(
JobRunStep
.
IsStep
(
RunStep
.
NONE
))
{
{
JobRunStep
.
ToNextStep
(
RunStep
.
CrossDoor_01_ToCurDoor
);
runInfo
=
$
"去{JobParam.CrossDoor.CurNode.AliceName}侧门前"
;
JobRunStep
.
Msg
=
runInfo
;
tocurDoor
(
agv
);
}
else
if
(
JobRunStep
.
IsStep
(
RunStep
.
CrossDoor_01_ToCurDoor
))
{
{
if
(
agv
.
TaskRunState
.
CheckTaskFinished
(
agv
.
Name
))
{
{
JobRunStep
.
ToNextStep
(
RunStep
.
STANDBY_WAIT_REACH_STANDBY
);
JobRunStep
.
ToNextStep
(
RunStep
.
CrossDoor_02_OpenCurDoor
);
runInfo
=
"从"
+
JobParam
.
SrcNode
+
"回到待机位
"
;
runInfo
=
$
"到达{JobParam.CrossDoor.CurNode.AliceName}侧门前,开门
"
;
JobRunStep
.
Msg
=
runInfo
;
JobRunStep
.
Msg
=
runInfo
;
ToStandby
(
agv
);
openCurDoor
(
agv
);
}
}
}
}
else
if
(
JobRunStep
.
IsStep
(
RunStep
.
CrossDoor_02_OpenCurDoor
))
{
if
(
agv
.
TaskRunState
.
CheckTaskFinished
(
agv
.
Name
))
{
JobRunStep
.
ToNextStep
(
RunStep
.
CrossDoor_03_Enter
);
runInfo
=
$
"从{JobParam.CrossDoor.CurNode.AliceName}侧进门"
;
JobRunStep
.
Msg
=
runInfo
;
enterDoor
(
agv
);
}
}
else
if
(
JobRunStep
.
IsStep
(
RunStep
.
CrossDoor_03_Enter
))
{
if
(
agv
.
TaskRunState
.
CheckTaskFinished
(
agv
.
Name
))
{
JobRunStep
.
ToNextStep
(
RunStep
.
CrossDoor_04_CloseCurDoor
);
runInfo
=
$
"关闭{JobParam.CrossDoor.CurNode.AliceName}侧的门"
;
JobRunStep
.
Msg
=
runInfo
;
closeCurDoor
(
agv
);
}
}
else
if
(
JobRunStep
.
IsStep
(
RunStep
.
CrossDoor_04_CloseCurDoor
))
{
if
(
agv
.
TaskRunState
.
CheckTaskFinished
(
agv
.
Name
))
{
JobRunStep
.
ToNextStep
(
RunStep
.
CrossDoor_05_OpenAntherDoor
);
runInfo
=
$
"打开{JobParam.CrossDoor.NextNode.AliceName}侧门"
;
JobRunStep
.
Msg
=
runInfo
;
openNextDoor
(
agv
);
}
}
else
if
(
JobRunStep
.
IsStep
(
RunStep
.
CrossDoor_05_OpenAntherDoor
))
{
if
(
agv
.
TaskRunState
.
CheckTaskFinished
(
agv
.
Name
))
{
JobRunStep
.
ToNextStep
(
RunStep
.
CrossDoor_06_LeaveDoor
);
runInfo
=
$
"离开门,进入{JobParam.CrossDoor.NextNode.AliceName}侧"
;
JobRunStep
.
Msg
=
runInfo
;
leaveDoor
(
agv
);
}
}
else
if
(
JobRunStep
.
IsStep
(
RunStep
.
STANDBY_WAIT_REACH_STANDBY
))
}
else
if
(
JobRunStep
.
IsStep
(
RunStep
.
CrossDoor_06_LeaveDoor
))
{
{
if
(
agv
.
TaskRunState
.
CheckTaskFinished
(
agv
.
Name
))
if
(
agv
.
TaskRunState
.
CheckTaskFinished
(
agv
.
Name
))
{
{
JobRunStep
.
ToNextStep
(
RunStep
.
END
);
JobRunStep
.
ToNextStep
(
RunStep
.
CrossDoor_07_CloseAntherDoor
);
// runInfo = "到达待机位";
runInfo
=
$
"关闭{JobParam.CrossDoor.NextNode.AliceName}侧门"
;
//JobRunStep.Msg = runInfo;
JobRunStep
.
Msg
=
runInfo
;
closeNextDoor
(
agv
);
}
}
}
}
else
if
(
JobRunStep
.
IsStep
(
RunStep
.
END
))
else
if
(
JobRunStep
.
IsStep
(
RunStep
.
CrossDoor_07_CloseAntherDoor
))
{
{
//Job job = AGVManager.control.GetJob(agv);
if
(
agv
.
TaskRunState
.
CheckTaskFinished
(
agv
.
Name
))
//if (job != null && !(job is StandyJob))
{
//{
JobRunStep
.
ToNextStep
(
RunStep
.
CrossDoor_08_Finish
);
// if (job is ChargeJob && agv.Battery > BatteryMid)
runInfo
=
$
"到达{JobParam.CrossDoor.NextNode.AliceName}的车间"
;
// return this;
JobRunStep
.
Msg
=
runInfo
;
// runInfo = "在待机位检测到任务,执行任务";
}
// JobRunStep.Msg = runInfo;
}
// JobRunStep.EndJob();
else
if
(
JobRunStep
.
IsStep
(
RunStep
.
CrossDoor_08_Finish
))
// return job;
{
//}
job
=
GetCallBackJob
();
job
.
JobRunStep
.
ToNextStep
(
GetCallBackStep
());
JobRunStep
.
Msg
=
$
"从{JobParam.CrossDoor.CurNode.AliceName}-》{JobParam.CrossDoor.NextNode.AliceName}完成"
;
}
}
return
this
;
return
job
;
}
//默认 4D->4C
//4C外-》4C风淋门内
//3D风淋门外-》3D风淋门内
/// <summary>
/// 获取任务名
/// </summary>
/// <returns></returns>
string
getTaskName
(
string
name
)
{
StringBuilder
sb
=
new
StringBuilder
();
if
(
JobParam
.
CrossDoor
?.
IsAir
??
false
)
sb
.
Append
(
SettingString
.
CrossAirDoor
);
else
{
sb
.
Append
(
SettingString
.
CrossDoor
);
}
sb
.
Append
(
"_"
);
if
(
JobParam
.
CrossDoor
?.
IsIn
??
true
)
sb
.
Append
(
SettingString
.
In
);
else
sb
.
Append
(
SettingString
.
Out
);
sb
.
Append
(
"_"
);
sb
.
Append
(
name
);
return
sb
.
ToString
();
}
/// <summary>
/// 去当前车间门前
/// </summary>
void
tocurDoor
(
AgvInfo
agv
)
{
AllocateTask
(
agv
,
getTaskName
(
SettingString
.
ToDoor
));
}
/// <summary>
/// 开当前门
/// </summary>
void
openCurDoor
(
AgvInfo
agv
)
{
AllocateTask
(
agv
,
getTaskName
(
SettingString
.
OpenDoor
));
}
/// <summary>
/// 进入门里
/// </summary>
void
enterDoor
(
AgvInfo
agv
)
{
AllocateTask
(
agv
,
getTaskName
(
SettingString
.
EnterDoor
));
}
/// <summary>
/// 关闭当前门
/// </summary>
void
closeCurDoor
(
AgvInfo
agv
)
{
AllocateTask
(
agv
,
getTaskName
(
SettingString
.
CloseDoor
));
}
/// <summary>
/// 开另一个门
/// </summary>
void
openNextDoor
(
AgvInfo
agv
)
{
AllocateTask
(
agv
,
getTaskName
(
SettingString
.
OpenOtherDoor
));
}
/// <summary>
/// 离开门
/// </summary>
void
leaveDoor
(
AgvInfo
agv
)
{
AllocateTask
(
agv
,
getTaskName
(
SettingString
.
LeaveDoor
));
}
/// <summary>
/// 关闭另一个门
/// </summary>
void
closeNextDoor
(
AgvInfo
agv
)
{
AllocateTask
(
agv
,
getTaskName
(
SettingString
.
CloseOtherDoor
));
}
}
}
}
...
...
DeviceLibrary/bean/job/F1LiftC1ToLiftD2Job.cs
查看文件 @
8b6e481
...
@@ -42,7 +42,7 @@ namespace DeviceLibrary.bean.job
...
@@ -42,7 +42,7 @@ namespace DeviceLibrary.bean.job
JobRunStep
.
ToNextStep
(
RunStep
.
S1F_LiftC1ToLiftD2_00_ToStandby
);
JobRunStep
.
ToNextStep
(
RunStep
.
S1F_LiftC1ToLiftD2_00_ToStandby
);
runInfo
=
$
"已有小车在{JobParam.SrcNode.AliceName},先去待机点"
;
runInfo
=
$
"已有小车在{JobParam.SrcNode.AliceName},先去待机点"
;
JobRunStep
.
Msg
=
runInfo
;
JobRunStep
.
Msg
=
runInfo
;
MoveToNode
(
agv
,
SettingString
.
Standby
);
ToStandby
(
agv
);
}
}
else
else
{
{
...
@@ -53,6 +53,47 @@ namespace DeviceLibrary.bean.job
...
@@ -53,6 +53,47 @@ namespace DeviceLibrary.bean.job
}
}
}
}
else
if
(
JobRunStep
.
IsStep
(
RunStep
.
S1F_LiftC1ToLiftD2_Buff
))
{
JobRunStep
.
ToNextStep
(
RunStep
.
S1F_LiftC1ToLiftD2_ToLine
);
runInfo
=
$
"去{JobParam.SrcNode.AliceName}的取料点"
;
ToPutShelfOn
(
agv
,
$
"{JobParam.SrcNode.Name}"
);
JobRunStep
.
Msg
=
runInfo
;
}
else
if
(
JobRunStep
.
IsStep
(
RunStep
.
S1F_LiftC1ToLiftD2_ToLine
))
{
if
(
agv
.
TaskRunState
.
CheckTaskFinished
(
agv
.
Name
))
{
JobRunStep
.
ToNextStep
(
RunStep
.
S1F_LiftC1ToLiftD2_PutShelf
);
runInfo
=
$
"到达{JobParam.SrcNode.AliceName}的取料点,开始拾取料车"
;
JobRunStep
.
Msg
=
runInfo
;
PutShelfOn
(
agv
);
}
}
else
if
(
JobRunStep
.
IsStep
(
RunStep
.
S1F_LiftC1ToLiftD2_PutShelf
))
{
if
(
agv
.
TaskRunState
.
CheckTaskFinished
(
agv
.
Name
))
{
if
(
TargetIsOccupied
(
agv
,
JobParam
.
CurTargetNode
.
Name
))
{
JobRunStep
.
ToNextStep
(
RunStep
.
S1F_LiftC1ToLiftD2_ToStandby
);
runInfo
=
$
"已有小车在{JobParam.CurTargetNode.AliceName},先去待机点"
;
JobRunStep
.
Msg
=
runInfo
;
ToStandby
(
agv
);
}
else
{
JobRunStep
.
ToNextStep
(
RunStep
.
S1F_LiftC1ToLiftD2_07_ToLiftD2
);
runInfo
=
$
"在料架缓存点取料完成,去{JobParam.CurTargetNode.AliceName}"
;
//任务状态变更
MissionManager
.
SetMissionState
(
JobParam
.
GetMissionInfo
().
missionId
,
service
.
model
.
MissionState
.
送料
,
out
string
msg
);
//AllocateTask(agv, $"{JobParam.CurTargetNode.Name}");
ToLift
(
agv
,
JobParam
.
CurTargetNode
.
Name
);
JobRunStep
.
Msg
=
runInfo
;
}
}
}
else
if
(
JobRunStep
.
IsStep
(
RunStep
.
S1F_LiftC1ToLiftD2_00_ToStandby
))
else
if
(
JobRunStep
.
IsStep
(
RunStep
.
S1F_LiftC1ToLiftD2_00_ToStandby
))
{
{
if
(
TargetIsOccupied
(
agv
,
JobParam
.
SrcNode
.
Name
))
if
(
TargetIsOccupied
(
agv
,
JobParam
.
SrcNode
.
Name
))
...
@@ -88,7 +129,7 @@ namespace DeviceLibrary.bean.job
...
@@ -88,7 +129,7 @@ namespace DeviceLibrary.bean.job
runInfo
=
$
"{JobParam.SrcNode.AliceName}门已开启,去取料点"
;
runInfo
=
$
"{JobParam.SrcNode.AliceName}门已开启,去取料点"
;
//任务状态变更
//任务状态变更
SetLiftOccupied
(
JobParam
.
SrcNode
.
Name
,
agv
);
SetLiftOccupied
(
JobParam
.
SrcNode
.
Name
,
agv
);
AllocateTask
(
agv
,
$
"{JobParam.SrcNode.Name}_{SettingString.PutShelfOn
}"
);
ToPutShelfOn
(
agv
,
$
"{JobParam.SrcNode.Name
}"
);
JobRunStep
.
Msg
=
runInfo
;
JobRunStep
.
Msg
=
runInfo
;
}
}
else
if
(
JobRunStep
.
IsTimeOut
(
20
)
&&
!
LiftContext
.
CheckIfRequestOk
(
JobParam
.
SrcNode
.
Name
,
JobParam
.
GetMissionInfo
()))
else
if
(
JobRunStep
.
IsTimeOut
(
20
)
&&
!
LiftContext
.
CheckIfRequestOk
(
JobParam
.
SrcNode
.
Name
,
JobParam
.
GetMissionInfo
()))
...
@@ -215,8 +256,8 @@ namespace DeviceLibrary.bean.job
...
@@ -215,8 +256,8 @@ namespace DeviceLibrary.bean.job
{
{
if
(
LiftContext
.
HasShelfNeedLeaveFinished
(
JobParam
.
CurTargetNode
.
Name
,
agv
.
Client
,
out
JobParam
.
LiftStatus
))
if
(
LiftContext
.
HasShelfNeedLeaveFinished
(
JobParam
.
CurTargetNode
.
Name
,
agv
.
Client
,
out
JobParam
.
LiftStatus
))
{
{
MissionManager
.
SetMissionOccupied
(
JobParam
.
GetMissionInfo
().
missionId
,
agv
);
job
=
new
SwitchShelfJob
(
JobParam
);
job
=
new
SwitchShelfJob
(
JobParam
);
}
}
else
//if (!TargetIsOccupied(agv, JobParam.CurTargetNode.Name))
else
//if (!TargetIsOccupied(agv, JobParam.CurTargetNode.Name))
{
{
...
@@ -224,7 +265,7 @@ namespace DeviceLibrary.bean.job
...
@@ -224,7 +265,7 @@ namespace DeviceLibrary.bean.job
SetLiftOccupied
(
JobParam
.
CurTargetNode
.
Name
,
agv
);
SetLiftOccupied
(
JobParam
.
CurTargetNode
.
Name
,
agv
);
runInfo
=
$
"{JobParam.CurTargetNode.AliceName}已开门,到放料点"
;
runInfo
=
$
"{JobParam.CurTargetNode.AliceName}已开门,到放料点"
;
JobRunStep
.
Msg
=
runInfo
;
JobRunStep
.
Msg
=
runInfo
;
AllocateTask
(
agv
,
$
"{JobParam.CurTargetNode.Name}_{SettingString.TakeShelfOff
}"
);
ToTakeShelfOff
(
agv
,
$
"{JobParam.CurTargetNode.Name
}"
);
}
}
}
}
else
if
(
JobRunStep
.
IsTimeOut
(
20
)
&&
!
LiftContext
.
CheckIfRequestOk
(
JobParam
.
CurTargetNode
.
Name
,
JobParam
.
GetMissionInfo
()))
else
if
(
JobRunStep
.
IsTimeOut
(
20
)
&&
!
LiftContext
.
CheckIfRequestOk
(
JobParam
.
CurTargetNode
.
Name
,
JobParam
.
GetMissionInfo
()))
...
@@ -349,7 +390,7 @@ namespace DeviceLibrary.bean.job
...
@@ -349,7 +390,7 @@ namespace DeviceLibrary.bean.job
MissionManager
.
SetMissionState
(
missionInfo
.
missionId
,
service
.
model
.
MissionState
.
返回起始地
,
out
string
msg
);
MissionManager
.
SetMissionState
(
missionInfo
.
missionId
,
service
.
model
.
MissionState
.
返回起始地
,
out
string
msg
);
}
}
JobRunStep
.
Msg
=
runInfo
;
JobRunStep
.
Msg
=
runInfo
;
AllocateTask
(
agv
,
$
"{JobParam.LiftStatus.destinationPoint}_{SettingString.TakeShelfOff
}"
);
ToTakeShelfOff
(
agv
,
$
"{JobParam.LiftStatus.destinationPoint
}"
);
}
}
else
if
(
JobRunStep
.
IsTimeOut
(
0.5
,
out
double
val
))
else
if
(
JobRunStep
.
IsTimeOut
(
0.5
,
out
double
val
))
{
{
...
@@ -369,7 +410,7 @@ namespace DeviceLibrary.bean.job
...
@@ -369,7 +410,7 @@ namespace DeviceLibrary.bean.job
JobRunStep
.
ToNextStep
(
RunStep
.
S1F_LiftC1ToLiftD2_19_02_TakeShelfOff
);
JobRunStep
.
ToNextStep
(
RunStep
.
S1F_LiftC1ToLiftD2_19_02_TakeShelfOff
);
runInfo
=
$
"到达{JobParam.LiftStatus.destinationPoint}的放料点,准备卸下"
;
runInfo
=
$
"到达{JobParam.LiftStatus.destinationPoint}的放料点,准备卸下"
;
JobRunStep
.
Msg
=
runInfo
;
JobRunStep
.
Msg
=
runInfo
;
AllocateTask
(
agv
,
$
"{SettingString.TakeShelfOff}"
);
TakeShelfOff
(
agv
);
}
}
}
}
else
if
(
JobRunStep
.
IsStep
(
RunStep
.
S1F_LiftC1ToLiftD2_19_02_TakeShelfOff
))
else
if
(
JobRunStep
.
IsStep
(
RunStep
.
S1F_LiftC1ToLiftD2_19_02_TakeShelfOff
))
...
@@ -385,7 +426,7 @@ namespace DeviceLibrary.bean.job
...
@@ -385,7 +426,7 @@ namespace DeviceLibrary.bean.job
MissionManager
.
SetMissionState
(
missionInfo
.
missionId
,
service
.
model
.
MissionState
.
完成
,
out
string
msg
);
MissionManager
.
SetMissionState
(
missionInfo
.
missionId
,
service
.
model
.
MissionState
.
完成
,
out
string
msg
);
}
}
JobRunStep
.
Msg
=
runInfo
;
JobRunStep
.
Msg
=
runInfo
;
AllocateTask
(
agv
,
$
"{JobParam.CurTargetNode.Name}_{SettingString.Temp1}_{SettingString.PutShelfOn
}"
);
ToTmp1PutOn
(
agv
,
$
"{JobParam.CurTargetNode.Name
}"
);
}
}
}
}
...
@@ -435,7 +476,7 @@ namespace DeviceLibrary.bean.job
...
@@ -435,7 +476,7 @@ namespace DeviceLibrary.bean.job
JobRunStep
.
ToNextStep
(
RunStep
.
S1F_LiftC1ToLiftD2_20_02_TakeShelfOff
);
JobRunStep
.
ToNextStep
(
RunStep
.
S1F_LiftC1ToLiftD2_20_02_TakeShelfOff
);
runInfo
=
$
"到达{JobParam.CurTargetNode.AliceName}临时点2的放料点,准备放下料车"
;
runInfo
=
$
"到达{JobParam.CurTargetNode.AliceName}临时点2的放料点,准备放下料车"
;
JobRunStep
.
Msg
=
runInfo
;
JobRunStep
.
Msg
=
runInfo
;
AllocateTask
(
agv
,
$
"{SettingString.TakeShelfOff}"
);
TakeShelfOff
(
agv
);
}
}
}
}
...
@@ -446,7 +487,7 @@ namespace DeviceLibrary.bean.job
...
@@ -446,7 +487,7 @@ namespace DeviceLibrary.bean.job
JobRunStep
.
ToNextStep
(
RunStep
.
S1F_LiftC1ToLiftD2_20_03_ToTemp1
);
JobRunStep
.
ToNextStep
(
RunStep
.
S1F_LiftC1ToLiftD2_20_03_ToTemp1
);
runInfo
=
$
"在{JobParam.CurTargetNode.AliceName}临时点2放下料车完成,去临时点1的取料点"
;
runInfo
=
$
"在{JobParam.CurTargetNode.AliceName}临时点2放下料车完成,去临时点1的取料点"
;
JobRunStep
.
Msg
=
runInfo
;
JobRunStep
.
Msg
=
runInfo
;
AllocateTask
(
agv
,
$
"{JobParam.CurTargetNode.Name}_{SettingString.Temp1}_{SettingString.PutShelfOn
}"
);
ToTmp1PutOn
(
agv
,
$
"{JobParam.CurTargetNode.Name
}"
);
}
}
}
}
...
@@ -469,7 +510,7 @@ namespace DeviceLibrary.bean.job
...
@@ -469,7 +510,7 @@ namespace DeviceLibrary.bean.job
JobRunStep
.
ToNextStep
(
RunStep
.
S1F_LiftC1ToLiftD2_20_05_ToLiftC1
);
JobRunStep
.
ToNextStep
(
RunStep
.
S1F_LiftC1ToLiftD2_20_05_ToLiftC1
);
runInfo
=
$
"在{JobParam.CurTargetNode.AliceName}临时点1取料完成,去电梯"
;
runInfo
=
$
"在{JobParam.CurTargetNode.AliceName}临时点1取料完成,去电梯"
;
JobRunStep
.
Msg
=
runInfo
;
JobRunStep
.
Msg
=
runInfo
;
AllocateTask
(
agv
,
$
"{JobParam.CurTargetNode.Name}"
);
ToLift
(
agv
,
$
"{JobParam.CurTargetNode.Name}"
);
}
}
}
}
...
@@ -480,7 +521,7 @@ namespace DeviceLibrary.bean.job
...
@@ -480,7 +521,7 @@ namespace DeviceLibrary.bean.job
JobRunStep
.
ToNextStep
(
RunStep
.
S1F_LiftC1ToLiftD2_20_06_EnterLiftC1
);
JobRunStep
.
ToNextStep
(
RunStep
.
S1F_LiftC1ToLiftD2_20_06_EnterLiftC1
);
runInfo
=
$
"进入{JobParam.CurTargetNode.AliceName}的放料点"
;
runInfo
=
$
"进入{JobParam.CurTargetNode.AliceName}的放料点"
;
JobRunStep
.
Msg
=
runInfo
;
JobRunStep
.
Msg
=
runInfo
;
AllocateTask
(
agv
,
$
"{JobParam.CurTargetNode.Name}_{SettingString.TakeShelfOff
}"
);
ToTakeShelfOff
(
agv
,
$
"{JobParam.CurTargetNode.Name
}"
);
}
}
}
}
...
@@ -524,6 +565,7 @@ namespace DeviceLibrary.bean.job
...
@@ -524,6 +565,7 @@ namespace DeviceLibrary.bean.job
MissionManager
.
SetMissionState
(
JobParam
.
GetMissionInfo
().
missionId
,
service
.
model
.
MissionState
.
等待成品回收
,
out
string
msg
);
MissionManager
.
SetMissionState
(
JobParam
.
GetMissionInfo
().
missionId
,
service
.
model
.
MissionState
.
等待成品回收
,
out
string
msg
);
JobRunStep
.
Msg
=
runInfo
;
JobRunStep
.
Msg
=
runInfo
;
ResetMissionOccupiedAgv
(
JobParam
.
GetMissionInfo
());
ResetMissionOccupiedAgv
(
JobParam
.
GetMissionInfo
());
ClearLiftNodeOccupied
(
agv
);
}
}
}
}
...
@@ -534,16 +576,16 @@ namespace DeviceLibrary.bean.job
...
@@ -534,16 +576,16 @@ namespace DeviceLibrary.bean.job
JobRunStep
.
ToNextStep
(
RunStep
.
S1F_LiftC1ToLiftD2_20_10_ToTemp2
);
JobRunStep
.
ToNextStep
(
RunStep
.
S1F_LiftC1ToLiftD2_20_10_ToTemp2
);
runInfo
=
$
"去{JobParam.CurTargetNode.AliceName}临时点2的取料点"
;
runInfo
=
$
"去{JobParam.CurTargetNode.AliceName}临时点2的取料点"
;
JobRunStep
.
Msg
=
runInfo
;
JobRunStep
.
Msg
=
runInfo
;
AllocateTask
(
agv
,
$
"{JobParam.CurTargetNode.Name}_{SettingString.Temp2}_{SettingString.PutShelfOn}"
);
ToTmp2PutOn
(
agv
,
$
"{JobParam.CurTargetNode.Name}"
);
}
else
if
(
JobRunStep
.
IsTimeOut
(
0.5
,
out
double
val
))
{
//AGV离开
LiftContext
.
AGVLeave
(
JobParam
.
CurTargetNode
.
Name
,
agv
,
false
);
runInfo
=
$
"{JobParam.CurTargetNode.AliceName}离开信号超时重发"
;
JobRunStep
.
Msg
=
runInfo
;
Thread
.
Sleep
(
3000
);
}
}
//else if (JobRunStep.IsTimeOut(0.5, out double val))
//{
// //AGV离开
// LiftContext.AGVLeave(JobParam.CurTargetNode.Name, agv, false);
// runInfo = $"{JobParam.CurTargetNode.AliceName}离开信号超时重发";
// JobRunStep.Msg = runInfo;
// Thread.Sleep(3000);
//}
}
}
else
if
(
JobRunStep
.
IsStep
(
RunStep
.
S1F_LiftC1ToLiftD2_20_10_ToTemp2
))
else
if
(
JobRunStep
.
IsStep
(
RunStep
.
S1F_LiftC1ToLiftD2_20_10_ToTemp2
))
{
{
...
...
DeviceLibrary/bean/job/F1LiftD2ToLiftC1Job.cs
查看文件 @
8b6e481
...
@@ -38,14 +38,14 @@ namespace DeviceLibrary.bean.job
...
@@ -38,14 +38,14 @@ namespace DeviceLibrary.bean.job
JobRunStep
.
ToNextStep
(
RunStep
.
S1F_LiftD2ToLiftC1_00_ToStandby
);
JobRunStep
.
ToNextStep
(
RunStep
.
S1F_LiftD2ToLiftC1_00_ToStandby
);
runInfo
=
$
"在{JobParam.SrcNode.AliceName}小车,先去待机点"
;
runInfo
=
$
"在{JobParam.SrcNode.AliceName}小车,先去待机点"
;
JobRunStep
.
Msg
=
runInfo
;
JobRunStep
.
Msg
=
runInfo
;
MoveToNode
(
agv
,
SettingString
.
Standby
);
ToStandby
(
agv
);
}
}
else
else
{
{
JobRunStep
.
ToNextStep
(
RunStep
.
S1F_LiftD2ToLiftC1_01_ToLiftD2
);
JobRunStep
.
ToNextStep
(
RunStep
.
S1F_LiftD2ToLiftC1_01_ToLiftD2
);
runInfo
=
$
"任务开始:去{JobParam.SrcNode.AliceName}"
;
runInfo
=
$
"任务开始:去{JobParam.SrcNode.AliceName}"
;
JobRunStep
.
Msg
=
runInfo
;
JobRunStep
.
Msg
=
runInfo
;
AllocateTask
(
agv
,
$
"{JobParam.SrcNode.Name}"
);
ToLift
(
agv
,
$
"{JobParam.SrcNode.Name}"
);
}
}
}
}
...
@@ -138,7 +138,7 @@ namespace DeviceLibrary.bean.job
...
@@ -138,7 +138,7 @@ namespace DeviceLibrary.bean.job
{
{
JobRunStep
.
ToNextStep
(
RunStep
.
S1F_LiftD2ToLiftC1_07_ToStandby
);
JobRunStep
.
ToNextStep
(
RunStep
.
S1F_LiftD2ToLiftC1_07_ToStandby
);
runInfo
=
$
"在{JobParam.CurTargetNode.AliceName}有小车,去待机点"
;
runInfo
=
$
"在{JobParam.CurTargetNode.AliceName}有小车,去待机点"
;
MoveToNode
(
agv
,
$
"{SettingString.Standby}"
);
ToStandby
(
agv
);
JobRunStep
.
Msg
=
runInfo
;
JobRunStep
.
Msg
=
runInfo
;
}
}
else
else
...
@@ -202,6 +202,7 @@ namespace DeviceLibrary.bean.job
...
@@ -202,6 +202,7 @@ namespace DeviceLibrary.bean.job
}
}
else
if
(
lift
.
LiftContext
.
HasShelfNeedLeave
(
JobParam
.
CurTargetNode
.
Name
,
agv
.
Client
,
out
JobParam
.
LiftStatus
))
else
if
(
lift
.
LiftContext
.
HasShelfNeedLeave
(
JobParam
.
CurTargetNode
.
Name
,
agv
.
Client
,
out
JobParam
.
LiftStatus
))
{
{
MissionManager
.
SetMissionOccupied
(
JobParam
.
GetMissionInfo
().
missionId
,
agv
);
job
=
new
SwitchShelfJob
(
JobParam
);
job
=
new
SwitchShelfJob
(
JobParam
);
//service.model.MissionInfo missionInfo = manager.MissionManager.GetMission(liftStatus.missionId);
//service.model.MissionInfo missionInfo = manager.MissionManager.GetMission(liftStatus.missionId);
//if (IsBackShelf(missionInfo))
//if (IsBackShelf(missionInfo))
...
@@ -607,6 +608,7 @@ namespace DeviceLibrary.bean.job
...
@@ -607,6 +608,7 @@ namespace DeviceLibrary.bean.job
//任务状态变更
//任务状态变更
MissionManager
.
SetMissionState
(
JobParam
.
GetMissionInfo
().
missionId
,
service
.
model
.
MissionState
.
返回电梯运行
,
out
string
msg
);
MissionManager
.
SetMissionState
(
JobParam
.
GetMissionInfo
().
missionId
,
service
.
model
.
MissionState
.
返回电梯运行
,
out
string
msg
);
JobRunStep
.
Msg
=
runInfo
;
JobRunStep
.
Msg
=
runInfo
;
ResetMissionOccupiedAgv
(
JobParam
.
GetMissionInfo
());
ClearLiftNodeOccupied
(
agv
);
ClearLiftNodeOccupied
(
agv
);
}
}
...
...
DeviceLibrary/bean/job/Job.cs
查看文件 @
8b6e481
...
@@ -603,32 +603,32 @@ namespace DeviceLibrary
...
@@ -603,32 +603,32 @@ namespace DeviceLibrary
/// <returns></returns>
/// <returns></returns>
protected
bool
TargetIsOccupied
(
AgvInfo
agv
,
string
targetName
)
protected
bool
TargetIsOccupied
(
AgvInfo
agv
,
string
targetName
)
{
{
return
LiftContext
.
OtherAGVIsInLift
(
agv
,
targetName
);
if
(
LiftContext
.
OtherAGVIsInLift
(
agv
,
targetName
))
//try
return
true
;
//{
else
// if (agv.Scope.Equals("1F"))
{
// {
try
// AgvInfo agvInfo = AGVManager.agvInfo.Find(s => s.Auto && !s.IP.Equals(agv.IP)
{
// && agv.Scope.Workshop.Equals(s.Scope.Workshop) && s.Scope.Equals("1F"));
AgvInfo
agvInfo
=
AGVManager
.
agvInfo
.
Find
(
s
=>
s
.
Auto
&&
!
s
.
IP
.
Equals
(
agv
.
IP
)
// if (agvInfo != null)
&&
agv
.
Scope
.
Workshop
.
Equals
(
s
.
Scope
.
Workshop
));
// {
if
(
agvInfo
!=
null
)
// //if (agvInfo?.Place.Name.Contains(targetName) ?? false)
{
// // return true;
if
(
agvInfo
?.
TaskRunState
?.
Task
?.
Name
.
Contains
(
targetName
)
??
false
)
// if (agvInfo?.TaskRunState?.Task?.Name.Equals(targetName) ?? false)
{
// {
return
true
;
}
//else if (agvInfo?.Place?.Name.Contains(targetName) ?? false)
// return true;
// return true;
// }
}
// }
return
false
;
// }
}
// else
catch
(
Exception
ex
)
// return false;
{
// return false;
LogUtil
.
error
(
$
"TargetIsOccupied:{agv.Name},{JsonHelper.SerializeObject(AGVManager.agvInfo)}"
,
ex
);
//}
return
false
;
//catch (Exception ex)
}
//{
}
// LogUtil.error($"TargetIsOccupied:{agv.Name},{JsonHelper.SerializeObject(AGVManager.agvInfo)}", ex);
// return false;
//}
}
}
/// <summary>
/// <summary>
/// 获取任务下一个状态
/// 获取任务下一个状态
...
@@ -682,7 +682,7 @@ namespace DeviceLibrary
...
@@ -682,7 +682,7 @@ namespace DeviceLibrary
/// <returns></returns>
/// <returns></returns>
protected
bool
setMissionState
(
MissionInfo
missionInfo
)
protected
bool
setMissionState
(
MissionInfo
missionInfo
)
{
{
service
.
model
.
MissionInfo
mission
=
manager
.
MissionManager
.
GetMission
(
missionInfo
?.
missionId
??
""
);
service
.
model
.
MissionInfo
mission
=
manager
.
MissionManager
.
GetMission
(
missionInfo
?.
missionId
??
""
);
if
(
mission
!=
null
)
if
(
mission
!=
null
)
{
{
MissionState
missionState
=
getNextState
(
mission
.
state
);
MissionState
missionState
=
getNextState
(
mission
.
state
);
...
...
DeviceLibrary/bean/job/LiftToLinesJob.cs
查看文件 @
8b6e481
此文件的差异被折叠,
点击展开。
DeviceLibrary/bean/job/LineToLiftJob.cs
查看文件 @
8b6e481
...
@@ -38,11 +38,28 @@ namespace DeviceLibrary
...
@@ -38,11 +38,28 @@ namespace DeviceLibrary
});
});
if
(
JobRunStep
.
IsStep
(
RunStep
.
NONE
))
if
(
JobRunStep
.
IsStep
(
RunStep
.
NONE
))
{
{
JobParam
.
CrossDoor
.
CurNode
=
agv
.
Place
;
JobParam
.
CrossDoor
.
NextNode
=
JobParam
.
SrcNode
;
if
(
NodeManager
.
NeedCrossDoor
(
agv
,
JobParam
.
CrossDoor
.
CurNode
,
JobParam
.
CrossDoor
.
NextNode
,
out
bool
isin
,
out
bool
isair
))
{
JobParam
.
CrossDoor
.
IsIn
=
isin
;
JobParam
.
CrossDoor
.
IsAir
=
isair
;
GenJobCallBack
(
this
.
GetType
(),
RunStep
.
LineToLift_00_CrossDoor
,
JobParam
);
job
=
new
CrossDoorJob
(
JobParam
);
}
else
{
JobRunStep
.
ToNextStep
(
RunStep
.
LineToLift_00_CrossDoor
);
}
}
else
if
(
JobRunStep
.
IsStep
(
RunStep
.
LineToLift_00_CrossDoor
))
{
JobRunStep
.
ToNextStep
(
RunStep
.
LineToLift_01_ToLine
);
JobRunStep
.
ToNextStep
(
RunStep
.
LineToLift_01_ToLine
);
runInfo
=
$
"去{JobParam.SrcNode.AliceName}的取料点"
;
runInfo
=
$
"去{JobParam.SrcNode.AliceName}的取料点"
;
ToPutShelfOn
(
agv
,
$
"{JobParam.SrcNode.Name}"
);
ToPutShelfOn
(
agv
,
$
"{JobParam.SrcNode.Name}"
);
JobRunStep
.
Msg
=
runInfo
;
JobRunStep
.
Msg
=
runInfo
;
}
}
else
if
(
JobRunStep
.
IsStep
(
RunStep
.
LineToLift_01_ToLine
))
else
if
(
JobRunStep
.
IsStep
(
RunStep
.
LineToLift_01_ToLine
))
{
{
...
@@ -69,11 +86,34 @@ namespace DeviceLibrary
...
@@ -69,11 +86,34 @@ namespace DeviceLibrary
manager
.
UploadManager
.
UploadTransportStatus
(
new
service
.
model
.
TransportStatus
(
agv
.
CurJob
.
JobParam
.
GetMissionInfo
().
missionId
,
manager
.
UploadManager
.
UploadTransportStatus
(
new
service
.
model
.
TransportStatus
(
agv
.
CurJob
.
JobParam
.
GetMissionInfo
().
missionId
,
service
.
model
.
TransportStatus
.
TypeStr
.
status
,
agv
.
Name
,
agv
.
Place
.
Name
,
service
.
model
.
TransportStatus
.
ModeStr
.
auto
,
service
.
model
.
TransportStatus
.
TypeStr
.
status
,
agv
.
Name
,
agv
.
Place
.
Name
,
service
.
model
.
TransportStatus
.
ModeStr
.
auto
,
$
"取车"
));
$
"取车"
));
JobParam
.
CrossDoor
.
CurNode
=
JobParam
.
SrcNode
;
JobParam
.
CrossDoor
.
NextNode
=
JobParam
.
CurTargetNode
;
if
(
NodeManager
.
NeedCrossDoor
(
agv
,
JobParam
.
CrossDoor
.
CurNode
,
JobParam
.
CrossDoor
.
NextNode
,
out
bool
isin
,
out
bool
isair
))
{
JobParam
.
CrossDoor
.
IsIn
=
isin
;
JobParam
.
CrossDoor
.
IsAir
=
isair
;
GenJobCallBack
(
this
.
GetType
(),
RunStep
.
LineToLift_02_CrossDoor
,
JobParam
);
job
=
new
CrossDoorJob
(
JobParam
);
}
else
{
JobRunStep
.
ToNextStep
(
RunStep
.
LineToLift_02_CrossDoor
);
}
}
}
else
if
(
JobRunStep
.
IsStep
(
RunStep
.
LineToLift_02_CrossDoor
))
{
if
(
TargetIsOccupied
(
agv
,
JobParam
.
CurTargetNode
.
Name
))
if
(
TargetIsOccupied
(
agv
,
JobParam
.
CurTargetNode
.
Name
))
{
{
JobRunStep
.
ToNextStep
(
RunStep
.
LineToLift_ToStandby
);
JobRunStep
.
ToNextStep
(
RunStep
.
LineToLift_ToStandby
);
if
(
agv
.
Scope
.
Workshop
.
Equals
(
"1F"
))
{
ToStandby
(
agv
);
ToStandby
(
agv
);
runInfo
=
$
"{JobParam.CurTargetNode.AliceName}有小车,先去待机点"
;
runInfo
=
$
"{JobParam.CurTargetNode.AliceName}有小车,先去待机点"
;
}
else
runInfo
=
$
"{JobParam.CurTargetNode.AliceName}有小车,等待空闲"
;
JobRunStep
.
Msg
=
runInfo
;
JobRunStep
.
Msg
=
runInfo
;
}
}
else
else
...
@@ -85,7 +125,7 @@ namespace DeviceLibrary
...
@@ -85,7 +125,7 @@ namespace DeviceLibrary
ToLift
(
agv
,
JobParam
.
CurTargetNode
.
Name
);
ToLift
(
agv
,
JobParam
.
CurTargetNode
.
Name
);
JobRunStep
.
Msg
=
runInfo
;
JobRunStep
.
Msg
=
runInfo
;
}
}
}
}
}
else
if
(
JobRunStep
.
IsStep
(
RunStep
.
LineToLift_ToStandby
))
else
if
(
JobRunStep
.
IsStep
(
RunStep
.
LineToLift_ToStandby
))
{
{
...
@@ -122,8 +162,8 @@ namespace DeviceLibrary
...
@@ -122,8 +162,8 @@ namespace DeviceLibrary
{
{
if
(
LiftContext
.
CheckHasEmptyFinished
(
agv
,
JobParam
.
CurTargetNode
.
Name
,
out
JobParam
.
LiftStatus
))
if
(
LiftContext
.
CheckHasEmptyFinished
(
agv
,
JobParam
.
CurTargetNode
.
Name
,
out
JobParam
.
LiftStatus
))
{
{
MissionInfo
missionInfo
=
MissionManager
.
GetMission
(
JobParam
.
LiftStatus
?.
missionId
??
""
);
MissionInfo
missionInfo
=
MissionManager
.
GetMission
(
JobParam
.
LiftStatus
?.
missionId
??
""
);
if
(
missionInfo
!=
null
)
if
(
missionInfo
!=
null
)
{
{
JobRunStep
.
ToNextStep
(
RunStep
.
LineToLift_05_13_ToShelfPlace
);
JobRunStep
.
ToNextStep
(
RunStep
.
LineToLift_05_13_ToShelfPlace
);
runInfo
=
$
"{JobParam.CurTargetNode.AliceName}已开门,内有成品空料车{missionInfo.missionId},去料架缓存点"
;
//
runInfo
=
$
"{JobParam.CurTargetNode.AliceName}已开门,内有成品空料车{missionInfo.missionId},去料架缓存点"
;
//
...
@@ -145,8 +185,9 @@ namespace DeviceLibrary
...
@@ -145,8 +185,9 @@ namespace DeviceLibrary
if
(
lift
.
LiftContext
.
HasShelfNeedLeave
(
JobParam
.
CurTargetNode
.
Name
,
agv
.
Client
,
out
JobParam
.
LiftStatus
))
if
(
lift
.
LiftContext
.
HasShelfNeedLeave
(
JobParam
.
CurTargetNode
.
Name
,
agv
.
Client
,
out
JobParam
.
LiftStatus
))
{
{
MissionInfo
missionInfo
=
MissionManager
.
GetMission
(
JobParam
.
LiftStatus
?.
missionId
??
""
);
MissionInfo
missionInfo
=
MissionManager
.
GetMission
(
JobParam
.
LiftStatus
?.
missionId
??
""
);
if
(
missionInfo
!=
null
)
if
(
missionInfo
!=
null
)
{
{
MissionManager
.
SetMissionOccupied
(
missionInfo
,
agv
);
job
=
new
SwitchShelfJob
(
JobParam
);
job
=
new
SwitchShelfJob
(
JobParam
);
}
}
else
else
...
@@ -166,7 +207,7 @@ namespace DeviceLibrary
...
@@ -166,7 +207,7 @@ namespace DeviceLibrary
SetLiftOccupied
(
JobParam
.
CurTargetNode
.
Name
,
agv
);
SetLiftOccupied
(
JobParam
.
CurTargetNode
.
Name
,
agv
);
runInfo
=
$
"{JobParam.CurTargetNode.AliceName}已开门,到放料点"
;
runInfo
=
$
"{JobParam.CurTargetNode.AliceName}已开门,到放料点"
;
JobRunStep
.
Msg
=
runInfo
;
JobRunStep
.
Msg
=
runInfo
;
ToTakeShelfOff
(
agv
,
JobParam
.
CurTargetNode
.
Name
);
ToTakeShelfOff
(
agv
,
JobParam
.
CurTargetNode
.
Name
);
}
}
}
}
else
if
(
JobRunStep
.
IsTimeOut
(
20
)
&&
!
lift
.
LiftContext
.
CheckIfRequestOk
(
JobParam
.
CurTargetNode
.
Name
,
JobParam
.
GetMissionInfo
()))
else
if
(
JobRunStep
.
IsTimeOut
(
20
)
&&
!
lift
.
LiftContext
.
CheckIfRequestOk
(
JobParam
.
CurTargetNode
.
Name
,
JobParam
.
GetMissionInfo
()))
...
...
DeviceLibrary/bean/job/ShelfBackLiftToStoreJob.cs
查看文件 @
8b6e481
using
Common
;
using
Common
;
using
DeviceLibrary.manager
;
using
DeviceLibrary.manager
;
using
System.Data.Entity.Infrastructure
;
namespace
DeviceLibrary.bean.job
namespace
DeviceLibrary.bean.job
{
{
...
@@ -20,6 +21,7 @@ namespace DeviceLibrary.bean.job
...
@@ -20,6 +21,7 @@ namespace DeviceLibrary.bean.job
}
}
public
override
Job
Run
(
AgvInfo
agv
)
public
override
Job
Run
(
AgvInfo
agv
)
{
{
Job
job
=
this
;
agv
.
SetJobContext
(
new
bean
.
agv
.
JobContext
()
agv
.
SetJobContext
(
new
bean
.
agv
.
JobContext
()
{
{
MissionId
=
JobParam
.
GetMissionInfo
().
missionId
,
MissionId
=
JobParam
.
GetMissionInfo
().
missionId
,
...
@@ -31,12 +33,12 @@ namespace DeviceLibrary.bean.job
...
@@ -31,12 +33,12 @@ namespace DeviceLibrary.bean.job
});
});
if
(
JobRunStep
.
IsStep
(
RunStep
.
NONE
))
if
(
JobRunStep
.
IsStep
(
RunStep
.
NONE
))
{
{
if
(
TargetIsOccupied
(
agv
,
JobParam
.
SrcNode
.
Name
))
if
(
TargetIsOccupied
(
agv
,
JobParam
.
SrcNode
.
Name
))
{
{
JobRunStep
.
ToNextStep
(
RunStep
.
ShelfBack_LiftToStore_01_ToStandby
);
JobRunStep
.
ToNextStep
(
RunStep
.
ShelfBack_LiftToStore_01_ToStandby
);
runInfo
=
$
"{JobParam.SrcNode.AliceName}有小车,去待机点"
;
runInfo
=
$
"{JobParam.SrcNode.AliceName}有小车,去待机点"
;
JobRunStep
.
Msg
=
runInfo
;
JobRunStep
.
Msg
=
runInfo
;
MoveToNode
(
agv
,
$
"{SettingString.Standby}"
);
ToStandby
(
agv
);
}
}
else
else
{
{
...
@@ -45,8 +47,8 @@ namespace DeviceLibrary.bean.job
...
@@ -45,8 +47,8 @@ namespace DeviceLibrary.bean.job
JobRunStep
.
Msg
=
runInfo
;
JobRunStep
.
Msg
=
runInfo
;
ToLift
(
agv
,
$
"{JobParam.SrcNode.Name}"
);
ToLift
(
agv
,
$
"{JobParam.SrcNode.Name}"
);
}
}
}
}
else
if
(
JobRunStep
.
IsStep
(
RunStep
.
ShelfBack_LiftToStore_01_ToStandby
))
else
if
(
JobRunStep
.
IsStep
(
RunStep
.
ShelfBack_LiftToStore_01_ToStandby
))
{
{
if
(
TargetIsOccupied
(
agv
,
JobParam
.
SrcNode
.
Name
))
if
(
TargetIsOccupied
(
agv
,
JobParam
.
SrcNode
.
Name
))
...
@@ -58,7 +60,7 @@ namespace DeviceLibrary.bean.job
...
@@ -58,7 +60,7 @@ namespace DeviceLibrary.bean.job
JobRunStep
.
ToNextStep
(
RunStep
.
ShelfBack_LiftToStore_01_ToLift
);
JobRunStep
.
ToNextStep
(
RunStep
.
ShelfBack_LiftToStore_01_ToLift
);
runInfo
=
$
"任务开始:去{JobParam.SrcNode.AliceName}"
;
runInfo
=
$
"任务开始:去{JobParam.SrcNode.AliceName}"
;
JobRunStep
.
Msg
=
runInfo
;
JobRunStep
.
Msg
=
runInfo
;
AllocateTask
(
agv
,
$
"{JobParam.SrcNode.Name}"
);
ToLift
(
agv
,
$
"{JobParam.SrcNode.Name}"
);
}
}
}
}
else
if
(
JobRunStep
.
IsStep
(
RunStep
.
ShelfBack_LiftToStore_01_ToLift
))
else
if
(
JobRunStep
.
IsStep
(
RunStep
.
ShelfBack_LiftToStore_01_ToLift
))
...
@@ -83,7 +85,7 @@ namespace DeviceLibrary.bean.job
...
@@ -83,7 +85,7 @@ namespace DeviceLibrary.bean.job
//任务状态变更
//任务状态变更
lift
.
LiftContext
.
SetLiftOccupiedAgv
(
JobParam
.
SrcNode
.
Name
,
agv
.
IP
);
lift
.
LiftContext
.
SetLiftOccupiedAgv
(
JobParam
.
SrcNode
.
Name
,
agv
.
IP
);
MissionManager
.
SetMissionState
(
JobParam
.
GetMissionInfo
().
missionId
,
service
.
model
.
MissionState
.
返回电梯到达
,
out
string
msg
);
MissionManager
.
SetMissionState
(
JobParam
.
GetMissionInfo
().
missionId
,
service
.
model
.
MissionState
.
返回电梯到达
,
out
string
msg
);
AllocateTask
(
agv
,
$
"{JobParam.SrcNode.Name}_{SettingString.PutShelfOn
}"
);
ToPutShelfOn
(
agv
,
$
"{JobParam.SrcNode.Name
}"
);
JobRunStep
.
Msg
=
runInfo
;
JobRunStep
.
Msg
=
runInfo
;
}
}
}
}
...
@@ -124,15 +126,33 @@ namespace DeviceLibrary.bean.job
...
@@ -124,15 +126,33 @@ namespace DeviceLibrary.bean.job
//任务状态变更
//任务状态变更
MissionManager
.
SetMissionState
(
JobParam
.
GetMissionInfo
().
missionId
,
service
.
model
.
MissionState
.
返回离开电梯
,
out
string
msg
);
MissionManager
.
SetMissionState
(
JobParam
.
GetMissionInfo
().
missionId
,
service
.
model
.
MissionState
.
返回离开电梯
,
out
string
msg
);
JobRunStep
.
Msg
=
runInfo
;
JobRunStep
.
Msg
=
runInfo
;
ClearLiftNodeOccupied
(
agv
);
}
}
}
}
else
if
(
JobRunStep
.
IsStep
(
RunStep
.
ShelfBack_LiftToStore_05_CloseLiftDoor
))
else
if
(
JobRunStep
.
IsStep
(
RunStep
.
ShelfBack_LiftToStore_05_CloseLiftDoor
))
{
{
if
(
NodeManager
.
NeedCrossDoor
(
agv
,
JobParam
.
SrcNode
,
JobParam
.
CurTargetNode
,
out
bool
isin
,
out
bool
isair
))
{
JobParam
.
CrossDoor
.
CurNode
=
JobParam
.
SrcNode
;
JobParam
.
CrossDoor
.
NextNode
=
JobParam
.
CurTargetNode
;
JobParam
.
CrossDoor
.
IsIn
=
isin
;
JobParam
.
CrossDoor
.
IsAir
=
isair
;
GenJobCallBack
(
this
.
GetType
(),
RunStep
.
ShelfBack_LiftToStore_06_CrossDoor
,
JobParam
);
job
=
new
CrossDoorJob
(
JobParam
);
}
else
{
JobRunStep
.
ToNextStep
(
RunStep
.
ShelfBack_LiftToStore_06_CrossDoor
);
}
}
else
if
(
JobRunStep
.
IsStep
(
RunStep
.
ShelfBack_LiftToStore_06_CrossDoor
))
{
JobRunStep
.
ToNextStep
(
RunStep
.
ShelfBack_LiftToStore_06_ToStore
);
JobRunStep
.
ToNextStep
(
RunStep
.
ShelfBack_LiftToStore_06_ToStore
);
runInfo
=
$
"
关闭{JobParam.SrcNode.AliceName}门完成,
去{JobParam.CurTargetNode.AliceName}放料点"
;
runInfo
=
$
"去{JobParam.CurTargetNode.AliceName}放料点"
;
//任务状态变更
//任务状态变更
MissionManager
.
SetMissionState
(
JobParam
.
GetMissionInfo
().
missionId
,
service
.
model
.
MissionState
.
返回起始地
,
out
string
msg
);
MissionManager
.
SetMissionState
(
JobParam
.
GetMissionInfo
().
missionId
,
service
.
model
.
MissionState
.
返回起始地
,
out
string
msg
);
AllocateTask
(
agv
,
$
"{JobParam.CurTargetNode.Name}_{SettingString.TakeShelfOff
}"
);
ToTakeShelfOff
(
agv
,
$
"{JobParam.CurTargetNode.Name
}"
);
JobRunStep
.
Msg
=
runInfo
;
JobRunStep
.
Msg
=
runInfo
;
}
}
else
if
(
JobRunStep
.
IsStep
(
RunStep
.
ShelfBack_LiftToStore_06_ToStore
))
else
if
(
JobRunStep
.
IsStep
(
RunStep
.
ShelfBack_LiftToStore_06_ToStore
))
...
@@ -153,23 +173,45 @@ namespace DeviceLibrary.bean.job
...
@@ -153,23 +173,45 @@ namespace DeviceLibrary.bean.job
{
{
if
(
agv
.
TaskRunState
.
CheckTaskFinished
(
agv
.
Name
))
if
(
agv
.
TaskRunState
.
CheckTaskFinished
(
agv
.
Name
))
{
{
JobRunStep
.
ToNextStep
(
RunStep
.
END
);
runInfo
=
$
"在{JobParam.CurTargetNode.AliceName}卸下料车完成"
;
runInfo
=
$
"任务结束:在{JobParam.CurTargetNode.AliceName}卸下料车完成"
;
//任务状态变更
//任务状态变更
MissionManager
.
SetMissionState
(
JobParam
.
GetMissionInfo
().
missionId
,
service
.
model
.
MissionState
.
完成
,
out
string
msg
);
MissionManager
.
SetMissionState
(
JobParam
.
GetMissionInfo
().
missionId
,
service
.
model
.
MissionState
.
完成
,
out
string
msg
);
JobRunStep
.
Msg
=
runInfo
;
JobRunStep
.
Msg
=
runInfo
;
if
(
IsProjectType
(
service
.
model
.
ProjectType
.
移远成品入库
))
{
manager
.
UploadManager
.
UploadTransportStatus
(
new
service
.
model
.
TransportStatus
(
agv
.
CurJob
.
JobParam
.
GetMissionInfo
().
missionId
,
service
.
model
.
TransportStatus
.
TypeStr
.
status
,
agv
.
Name
,
agv
.
Place
.
Name
,
service
.
model
.
TransportStatus
.
ModeStr
.
auto
,
$
"卸货{JobParam.CurTargetNode.Name}"
));
}
else
//上报状态
//上报状态
manager
.
UploadManager
.
UploadTransportStatus
(
new
service
.
model
.
TransportStatus
(
agv
.
CurJob
.
JobParam
.
GetMissionInfo
().
missionId
,
manager
.
UploadManager
.
UploadTransportStatus
(
new
service
.
model
.
TransportStatus
(
agv
.
CurJob
.
JobParam
.
GetMissionInfo
().
missionId
,
service
.
model
.
TransportStatus
.
TypeStr
.
status
,
agv
.
Name
,
agv
.
Place
.
Name
,
service
.
model
.
TransportStatus
.
ModeStr
.
auto
,
service
.
model
.
TransportStatus
.
TypeStr
.
status
,
agv
.
Name
,
agv
.
Place
.
Name
,
service
.
model
.
TransportStatus
.
ModeStr
.
auto
,
$
"还车"
));
$
"还车"
));
if
(
NodeManager
.
NeedCrossDoor
(
agv
,
JobParam
.
CurTargetNode
,
JobParam
.
SrcNode
,
out
bool
isin
,
out
bool
isair
))
{
JobParam
.
CrossDoor
.
CurNode
=
JobParam
.
CurTargetNode
;
JobParam
.
CrossDoor
.
NextNode
=
JobParam
.
SrcNode
;
JobParam
.
CrossDoor
.
IsIn
=
isin
;
JobParam
.
CrossDoor
.
IsAir
=
isair
;
GenJobCallBack
(
this
.
GetType
(),
RunStep
.
ShelfBack_LiftToStore_07_CrossDoor
,
JobParam
);
job
=
new
CrossDoorJob
(
JobParam
);
}
}
else
{
JobRunStep
.
ToNextStep
(
RunStep
.
ShelfBack_LiftToStore_07_CrossDoor
);
}
}
}
else
if
(
JobRunStep
.
IsStep
(
RunStep
.
ShelfBack_LiftToStore_07_CrossDoor
))
{
JobRunStep
.
ToNextStep
(
RunStep
.
END
);
}
}
else
if
(
JobRunStep
.
IsStep
(
RunStep
.
END
))
else
if
(
JobRunStep
.
IsStep
(
RunStep
.
END
))
{
{
JobRunStep
.
EndJob
();
job
=
null
;
return
null
;
}
}
return
this
;
return
job
;
}
}
}
}
}
}
DeviceLibrary/bean/job/StandyJob.cs
查看文件 @
8b6e481
...
@@ -27,14 +27,14 @@ namespace DeviceLibrary
...
@@ -27,14 +27,14 @@ namespace DeviceLibrary
/// <param name="agv"></param>
/// <param name="agv"></param>
public
override
Job
Run
(
AgvInfo
agv
)
public
override
Job
Run
(
AgvInfo
agv
)
{
{
agv
.
SetJobContext
(
new
bean
.
agv
.
JobContext
()
//
agv.SetJobContext(new bean.agv.JobContext()
{
//
{
AgvTask
=
agv
.
TaskRunState
.
Task
,
//
AgvTask = agv.TaskRunState.Task,
JobFullName
=
this
.
ToString
(),
//
JobFullName = this.ToString(),
JobStep
=
JobRunStep
.
PreStep
(),
//
JobStep = JobRunStep.PreStep(),
Name
=
agv
.
Name
,
//
Name = agv.Name,
JobParam
=
JobParam
//
JobParam=JobParam
});
//
});
if
(
JobRunStep
.
IsStep
(
RunStep
.
NONE
))
if
(
JobRunStep
.
IsStep
(
RunStep
.
NONE
))
{
{
{
{
...
...
DeviceLibrary/bean/job/SwitchShelfJob.cs
查看文件 @
8b6e481
...
@@ -102,7 +102,6 @@ namespace DeviceLibrary
...
@@ -102,7 +102,6 @@ namespace DeviceLibrary
JobRunStep
.
ToNextStep
(
RunStep
.
Switch_04_EnterLift
);
JobRunStep
.
ToNextStep
(
RunStep
.
Switch_04_EnterLift
);
if
(
setMissionState
(
liftMission
))
if
(
setMissionState
(
liftMission
))
{
{
MissionManager
.
SetMissionOccupied
(
liftMission
,
agv
);
runInfo
=
$
"到{JobParam.CurTargetNode.AliceName}的取料点,并设置任务状态,,{missionInfo()}"
;
runInfo
=
$
"到{JobParam.CurTargetNode.AliceName}的取料点,并设置任务状态,,{missionInfo()}"
;
}
}
else
else
...
...
DeviceLibrary/bean/jobType/BackLiftToLineJobType.cs
查看文件 @
8b6e481
using
Common
;
using
Common
;
using
DeviceLibrary.bean.job
;
using
DeviceLibrary.bean.job
;
using
DeviceLibrary.lift
;
using
DeviceLibrary.manager
;
using
DeviceLibrary.manager
;
using
System
;
using
System
;
...
@@ -27,7 +28,7 @@ namespace DeviceLibrary.bean.jobType
...
@@ -27,7 +28,7 @@ namespace DeviceLibrary.bean.jobType
{
{
return
null
;
return
null
;
}
}
if
(
TargetIsOccupied
(
agv
,
liftname
))
if
(
AgvAtPlace
(
agv
,
liftname
))
return
null
;
return
null
;
//if (service.model.MissionInfo.IsFinishedProdcut(missionInfo))
//if (service.model.MissionInfo.IsFinishedProdcut(missionInfo))
// return null;
// return null;
...
@@ -35,6 +36,7 @@ namespace DeviceLibrary.bean.jobType
...
@@ -35,6 +36,7 @@ namespace DeviceLibrary.bean.jobType
string
[]
dests
=
lift
.
destinationPoint
.
Split
(
','
);
string
[]
dests
=
lift
.
destinationPoint
.
Split
(
','
);
Node
dest
=
manager
.
NodeManager
.
GetNode
(
dests
.
Length
>
1
?
dests
[
0
]
:
lift
.
destinationPoint
,
NodeType
.
Node
);
Node
dest
=
manager
.
NodeManager
.
GetNode
(
dests
.
Length
>
1
?
dests
[
0
]
:
lift
.
destinationPoint
,
NodeType
.
Node
);
JobParam
jobParam
=
new
JobParam
(
src
,
dest
,
null
,
missionInfo
);
JobParam
jobParam
=
new
JobParam
(
src
,
dest
,
null
,
missionInfo
);
LiftContext
.
SetLiftNodeOccupied
(
agv
,
liftname
);
MissionManager
.
SetMissionOccupied
(
missionInfo
,
agv
);
MissionManager
.
SetMissionOccupied
(
missionInfo
,
agv
);
return
new
ShelfBackLiftToStoreJob
(
jobParam
);
return
new
ShelfBackLiftToStoreJob
(
jobParam
);
}
}
...
@@ -44,6 +46,7 @@ namespace DeviceLibrary.bean.jobType
...
@@ -44,6 +46,7 @@ namespace DeviceLibrary.bean.jobType
}
}
bool
CheckHasSameJob
(
AgvInfo
agv
,
string
liftname
)
bool
CheckHasSameJob
(
AgvInfo
agv
,
string
liftname
)
{
{
return
false
;
try
try
{
{
AgvInfo
agvInfo
=
AGVManager
.
agvInfo
.
Find
(
s
=>
s
.
Auto
&&
s
.
Scope
.
Workshop
.
Equals
(
agv
.
Scope
.
Workshop
)
AgvInfo
agvInfo
=
AGVManager
.
agvInfo
.
Find
(
s
=>
s
.
Auto
&&
s
.
Scope
.
Workshop
.
Equals
(
agv
.
Scope
.
Workshop
)
...
...
DeviceLibrary/bean/jobType/F1LiftC1ToLiftD2JobType.cs
查看文件 @
8b6e481
...
@@ -24,7 +24,7 @@ namespace DeviceLibrary.bean.jobType
...
@@ -24,7 +24,7 @@ namespace DeviceLibrary.bean.jobType
service
.
model
.
MissionInfo
missionInfo
=
manager
.
MissionManager
.
GetF1SendFullFinishedC1ToD2Mission
(
agv
);
service
.
model
.
MissionInfo
missionInfo
=
manager
.
MissionManager
.
GetF1SendFullFinishedC1ToD2Mission
(
agv
);
if
(
missionInfo
!=
null
)
if
(
missionInfo
!=
null
)
{
{
if
(
TargetIsOccupied
(
agv
,
SettingString
.
LIFT_
D2
)
||
TargetIsOccupied
(
agv
,
SettingString
.
LIFT_C1
))
if
(
TargetIsOccupied
(
agv
,
SettingString
.
LIFT_
C1
))
//TargetIsOccupied(agv, SettingString.LIFT_D2) ||
{
{
return
null
;
return
null
;
}
}
...
@@ -43,10 +43,11 @@ namespace DeviceLibrary.bean.jobType
...
@@ -43,10 +43,11 @@ namespace DeviceLibrary.bean.jobType
}
}
bool
CheckHasSameJob
(
AgvInfo
agv
)
bool
CheckHasSameJob
(
AgvInfo
agv
)
{
{
return
false
;
try
try
{
{
AgvInfo
agvInfo
=
AGVManager
.
agvInfo
.
Find
(
s
=>
s
.
Auto
&&
s
.
Scope
.
Workshop
.
Equals
(
agv
.
Scope
.
Workshop
)
AgvInfo
agvInfo
=
AGVManager
.
agvInfo
.
Find
(
s
=>
s
.
Auto
&&
s
.
Scope
.
Workshop
.
Equals
(
agv
.
Scope
.
Workshop
)
&&
s
.
CurJob
!=
null
&&
(
s
.
CurJob
is
F1LiftC1ToLiftD2Job
||
s
.
CurJob
is
F1LiftD2ToLiftC1Job
||
s
.
CurJob
is
LineToLiftJob
));
&&
!
s
.
IP
.
Equals
(
agv
.
IP
)
&&
s
.
CurJob
!=
null
&&
(
s
.
CurJob
is
F1LiftC1ToLiftD2Job
||
s
.
CurJob
is
F1LiftD2ToLiftC1Job
));
//|| (s.CurJob is LineToLiftJob && SettingString.LIFT_C1.Equals(s.CurJob?.JobParam?.GetMissionInfo()?.liftName??"")
if
(
agvInfo
!=
null
)
if
(
agvInfo
!=
null
)
return
true
;
return
true
;
}
}
...
...
DeviceLibrary/bean/jobType/F1LiftD2ToLiftC1JobType.cs
查看文件 @
8b6e481
...
@@ -38,10 +38,11 @@ namespace DeviceLibrary.bean.jobType
...
@@ -38,10 +38,11 @@ namespace DeviceLibrary.bean.jobType
}
}
bool
CheckHasSameJob
(
AgvInfo
agv
)
bool
CheckHasSameJob
(
AgvInfo
agv
)
{
{
return
false
;
try
try
{
{
AgvInfo
agvInfo
=
AGVManager
.
agvInfo
.
Find
(
s
=>
s
.
Auto
&&
s
.
Scope
.
Workshop
.
Equals
(
agv
.
Scope
.
Workshop
)
AgvInfo
agvInfo
=
AGVManager
.
agvInfo
.
Find
(
s
=>
s
.
Auto
&&
s
.
Scope
.
Workshop
.
Equals
(
agv
.
Scope
.
Workshop
)
&&
s
.
CurJob
!=
null
&&
(
s
.
CurJob
is
F1LiftD2ToLiftC1Job
||
s
.
CurJob
is
F1LiftC1ToLiftD2Job
||
s
.
CurJob
is
LineToLiftJob
));
&&
!
s
.
IP
.
Equals
(
agv
.
IP
)
&&
s
.
CurJob
!=
null
&&
(
s
.
CurJob
is
F1LiftD2ToLiftC1Job
||
s
.
CurJob
is
F1LiftC1ToLiftD2Job
||
s
.
CurJob
is
LineToLiftJob
));
if
(
agvInfo
!=
null
)
if
(
agvInfo
!=
null
)
return
true
;
return
true
;
}
}
...
...
DeviceLibrary/bean/jobType/JobType.cs
查看文件 @
8b6e481
...
@@ -18,10 +18,6 @@ namespace DeviceLibrary
...
@@ -18,10 +18,6 @@ namespace DeviceLibrary
{
{
return
null
;
return
null
;
}
}
//public bool HasRobotExecuteLiftTask(AgvInfo agvInfo,string liftName)
//{
// AGVManager.agvInfo.Find(s=>s.Auto&& !s.IP.Equals(agvInfo.IP)&&(agvInfo?.CurJob?.JobParam?.))
//}
/// <summary>
/// <summary>
/// 目标点是否有小车
/// 目标点是否有小车
/// </summary>
/// </summary>
...
@@ -40,5 +36,39 @@ namespace DeviceLibrary
...
@@ -40,5 +36,39 @@ namespace DeviceLibrary
return
false
;
return
false
;
}
}
}
}
/// <summary>
/// 只有去电梯取料料架使用
/// </summary>
/// <param name="agv"></param>
/// <param name="targetName"></param>
/// <returns></returns>
protected
bool
AgvAtPlace
(
AgvInfo
agv
,
string
targetName
)
{
try
{
if
(
LiftContext
.
OtherAGVIsInLift
(
agv
,
targetName
))
{
return
true
;
}
else
{
AgvInfo
agvInfo
=
AGVManager
.
agvInfo
.
Find
(
s
=>
s
.
Auto
&&
!
s
.
IP
.
Equals
(
agv
.
IP
)
&&
agv
.
Scope
.
Workshop
.
Equals
(
s
.
Scope
.
Workshop
));
if
(
agvInfo
!=
null
)
{
if
(
agvInfo
?.
TaskRunState
?.
Task
?.
Name
.
Contains
(
targetName
)
??
false
)
{
return
true
;
}
}
return
false
;
}
}
catch
(
Exception
ex
)
{
LogUtil
.
error
(
$
"AgvAtPlace:{agv.Name},{JsonHelper.SerializeObject(AGVManager.agvInfo)}"
,
ex
);
return
false
;
}
}
}
}
}
}
DeviceLibrary/bean/jobType/LiftToLinesJobType.cs
查看文件 @
8b6e481
...
@@ -6,6 +6,7 @@ using DeviceLibrary.manager;
...
@@ -6,6 +6,7 @@ using DeviceLibrary.manager;
using
DeviceLibrary.bean
;
using
DeviceLibrary.bean
;
using
DeviceLibrary.bean.job
;
using
DeviceLibrary.bean.job
;
using
System
;
using
System
;
using
DeviceLibrary.lift
;
namespace
DeviceLibrary
namespace
DeviceLibrary
{
{
...
@@ -37,7 +38,7 @@ namespace DeviceLibrary
...
@@ -37,7 +38,7 @@ namespace DeviceLibrary
{
{
if
(!
liftname
.
Equals
(
missionInfo
?.
liftName
))
if
(!
liftname
.
Equals
(
missionInfo
?.
liftName
))
return
null
;
return
null
;
if
(
TargetIsOccupied
(
agv
,
liftname
))
if
(
AgvAtPlace
(
agv
,
liftname
))
return
null
;
return
null
;
if
(
service
.
model
.
MissionInfo
.
IsFinishedProdcut
(
missionInfo
))
if
(
service
.
model
.
MissionInfo
.
IsFinishedProdcut
(
missionInfo
))
return
null
;
return
null
;
...
@@ -61,6 +62,7 @@ namespace DeviceLibrary
...
@@ -61,6 +62,7 @@ namespace DeviceLibrary
}
}
}
}
LiftContext
.
SetLiftNodeOccupied
(
agv
,
liftname
);
MissionManager
.
SetMissionOccupied
(
missionInfo
,
agv
);
MissionManager
.
SetMissionOccupied
(
missionInfo
,
agv
);
MissionManager
.
Log
.
Info
(
$
"执行任务[{agv.Name}][目的地] {JsonHelper.SerializeObject(missionInfo)}"
);
MissionManager
.
Log
.
Info
(
$
"执行任务[{agv.Name}][目的地] {JsonHelper.SerializeObject(missionInfo)}"
);
return
new
LiftToLinesJob
(
jobParam
);
return
new
LiftToLinesJob
(
jobParam
);
...
@@ -72,20 +74,20 @@ namespace DeviceLibrary
...
@@ -72,20 +74,20 @@ namespace DeviceLibrary
bool
CheckHasSameJob
(
AgvInfo
agv
)
bool
CheckHasSameJob
(
AgvInfo
agv
)
{
{
return
false
;
try
try
{
{
AgvInfo
agvInfo
=
AGVManager
.
agvInfo
.
Find
(
s
=>
s
.
Auto
&&
s
.
Scope
.
Workshop
.
Equals
(
agv
.
Scope
.
Workshop
)
if
(
agv
.
Scope
.
Workshop
.
Equals
(
"1F"
))
{
AgvInfo
agvInfo
=
AGVManager
.
agvInfo
.
Find
(
s
=>
s
.
Auto
&&
!
s
.
IP
.
Equals
(
agv
.
IP
)
&&
s
.
Scope
.
Workshop
.
Equals
(
agv
.
Scope
.
Workshop
)
&&
s
.
CurJob
!=
null
&&
(
s
.
CurJob
is
LiftToLinesJob
));
&&
s
.
CurJob
!=
null
&&
(
s
.
CurJob
is
LiftToLinesJob
));
if
(
agvInfo
!=
null
)
if
(
agvInfo
!=
null
)
return
true
;
return
true
;
//if (agv.Scope.Workshop.Equals("1F"))
}
//{
else
{
//}
return
false
;
//else
}
//{
// return false;
//}
}
}
catch
catch
{
{
...
@@ -95,11 +97,12 @@ namespace DeviceLibrary
...
@@ -95,11 +97,12 @@ namespace DeviceLibrary
}
}
bool
CheckHasSendJob
(
AgvInfo
agv
)
bool
CheckHasSendJob
(
AgvInfo
agv
)
{
{
return
false
;
try
try
{
{
if
(
agv
.
Scope
.
Workshop
.
Equals
(
"1F"
))
if
(
agv
.
Scope
.
Workshop
.
Equals
(
"1F"
))
{
{
AgvInfo
agvInfo
=
AGVManager
.
agvInfo
.
Find
(
s
=>
s
.
Auto
&&
s
.
Scope
.
Workshop
.
Equals
(
agv
.
Scope
.
Workshop
)
AgvInfo
agvInfo
=
AGVManager
.
agvInfo
.
Find
(
s
=>
s
.
Auto
&&
!
s
.
IP
.
Equals
(
agv
.
IP
)&&
s
.
Scope
.
Workshop
.
Equals
(
agv
.
Scope
.
Workshop
)
&&
s
.
CurJob
!=
null
&&
s
.
Scope
.
Workshop
.
Equals
(
"1F"
)
&&
(
s
.
CurJob
is
LineToLiftJob
||
s
.
CurJob
is
F1LiftC1ToLiftD2Job
&&
s
.
CurJob
!=
null
&&
s
.
Scope
.
Workshop
.
Equals
(
"1F"
)
&&
(
s
.
CurJob
is
LineToLiftJob
||
s
.
CurJob
is
F1LiftC1ToLiftD2Job
||
s
.
CurJob
is
F1LiftD2ToLiftC1Job
));
||
s
.
CurJob
is
F1LiftD2ToLiftC1Job
));
if
(
agvInfo
!=
null
)
if
(
agvInfo
!=
null
)
...
@@ -107,7 +110,10 @@ namespace DeviceLibrary
...
@@ -107,7 +110,10 @@ namespace DeviceLibrary
}
}
else
else
{
{
return
false
;
AgvInfo
agvInfo
=
AGVManager
.
agvInfo
.
Find
(
s
=>
s
.
Auto
&&
!
s
.
IP
.
Equals
(
agv
.
IP
)
&&
s
.
Scope
.
Workshop
.
Equals
(
agv
.
Scope
.
Workshop
)
&&
s
.
CurJob
!=
null
&&
(
s
.
CurJob
is
LineToLiftJob
));
if
(
agvInfo
!=
null
)
return
true
;
}
}
}
}
catch
catch
...
...
DeviceLibrary/bean/jobType/LineToLiftJobType.cs
查看文件 @
8b6e481
...
@@ -38,10 +38,10 @@ namespace DeviceLibrary.bean.jobType
...
@@ -38,10 +38,10 @@ namespace DeviceLibrary.bean.jobType
Common
.
LogUtil
.
error
(
$
"无法生成任务,电梯不存在:{liftname}"
);
Common
.
LogUtil
.
error
(
$
"无法生成任务,电梯不存在:{liftname}"
);
return
null
;
return
null
;
}
}
if
(
TargetIsOccupied
(
agv
,
liftname
))
//
if (TargetIsOccupied(agv, liftname))
{
//
{
return
null
;
//
return null;
}
//
}
JobParam
jobParam
=
new
JobParam
(
src
,
dest
,
null
,
missionInfo
);
JobParam
jobParam
=
new
JobParam
(
src
,
dest
,
null
,
missionInfo
);
MissionManager
.
SetMissionOccupied
(
missionInfo
,
agv
);
MissionManager
.
SetMissionOccupied
(
missionInfo
,
agv
);
MissionManager
.
Log
.
Info
(
$
"执行任务[{agv.Name}][LineToLiftJobType]{JsonHelper.SerializeObject(missionInfo)}"
);
MissionManager
.
Log
.
Info
(
$
"执行任务[{agv.Name}][LineToLiftJobType]{JsonHelper.SerializeObject(missionInfo)}"
);
...
@@ -54,13 +54,14 @@ namespace DeviceLibrary.bean.jobType
...
@@ -54,13 +54,14 @@ namespace DeviceLibrary.bean.jobType
bool
CheckHasSameJob
(
AgvInfo
agv
,
string
liftname
)
bool
CheckHasSameJob
(
AgvInfo
agv
,
string
liftname
)
{
{
return
false
;
try
try
{
{
if
(
agv
.
Scope
.
Workshop
.
Equals
(
"1F"
))
if
(
agv
.
Scope
.
Workshop
.
Equals
(
"1F"
))
{
{
AgvInfo
agvInfo
=
AGVManager
.
agvInfo
.
Find
(
s
=>
s
.
Auto
&&
s
.
Scope
.
Workshop
.
Equals
(
agv
.
Scope
.
Workshop
)
&&
AgvInfo
agvInfo
=
AGVManager
.
agvInfo
.
Find
(
s
=>
s
.
Auto
&&
s
.
Scope
.
Workshop
.
Equals
(
agv
.
Scope
.
Workshop
)
&&
s
.
CurJob
!=
null
&&
(
s
.
CurJob
is
LineToLiftJob
||
s
.
CurJob
is
F1LiftC1ToLiftD2Job
!
s
.
IP
.
Equals
(
agv
.
IP
)&&
s
.
CurJob
!=
null
&&
(
s
.
CurJob
is
F1LiftC1ToLiftD2Job
||
s
.
CurJob
is
F1LiftD2ToLiftC1Job
));
||
s
.
CurJob
is
F1LiftD2ToLiftC1Job
));
//s.CurJob is LineToLiftJob ||
if
(
agvInfo
!=
null
)
if
(
agvInfo
!=
null
)
{
{
if
(
agvInfo
?.
CurJob
?.
JobParam
?.
GetMissionInfo
()?.
liftName
?.
Equals
(
liftname
)
??
true
)
if
(
agvInfo
?.
CurJob
?.
JobParam
?.
GetMissionInfo
()?.
liftName
?.
Equals
(
liftname
)
??
true
)
...
@@ -75,7 +76,7 @@ namespace DeviceLibrary.bean.jobType
...
@@ -75,7 +76,7 @@ namespace DeviceLibrary.bean.jobType
else
else
{
{
AgvInfo
agvInfo
=
AGVManager
.
agvInfo
.
Find
(
s
=>
s
.
Auto
&&
s
.
Scope
.
Workshop
.
Equals
(
agv
.
Scope
.
Workshop
)
&&
AgvInfo
agvInfo
=
AGVManager
.
agvInfo
.
Find
(
s
=>
s
.
Auto
&&
s
.
Scope
.
Workshop
.
Equals
(
agv
.
Scope
.
Workshop
)
&&
s
.
CurJob
!=
null
&&
(
s
.
CurJob
is
LineToLiftJob
));
!
s
.
IP
.
Equals
(
agv
.
IP
)
&&
s
.
CurJob
!=
null
&&
(
s
.
CurJob
is
LineToLiftJob
));
if
(
agvInfo
!=
null
)
if
(
agvInfo
!=
null
)
{
{
return
true
;
return
true
;
...
...
DeviceLibrary/bean/jobType/ShelfBuffToLiftJobType.cs
查看文件 @
8b6e481
...
@@ -2,6 +2,7 @@
...
@@ -2,6 +2,7 @@
using
DeviceLibrary.bean.job
;
using
DeviceLibrary.bean.job
;
using
DeviceLibrary.lift
;
using
DeviceLibrary.lift
;
using
DeviceLibrary.manager
;
using
DeviceLibrary.manager
;
using
DeviceLibrary.service.model
;
using
System
;
using
System
;
using
System.Collections.Generic
;
using
System.Collections.Generic
;
using
System.Linq
;
using
System.Linq
;
...
@@ -38,15 +39,21 @@ namespace DeviceLibrary.bean.jobType
...
@@ -38,15 +39,21 @@ namespace DeviceLibrary.bean.jobType
Common
.
LogUtil
.
error
(
$
"无法生成任务,电梯不存在:{missionInfo.liftName}"
);
Common
.
LogUtil
.
error
(
$
"无法生成任务,电梯不存在:{missionInfo.liftName}"
);
return
null
;
return
null
;
}
}
if
(
TargetIsOccupied
(
agv
,
missionInfo
.
liftName
))
//
if (TargetIsOccupied(agv, missionInfo.liftName))
{
//
{
return
null
;
//
return null;
}
//
}
JobParam
jobParam
=
new
JobParam
(
src
,
dest
,
null
,
missionInfo
);
JobParam
jobParam
=
new
JobParam
(
src
,
dest
,
null
,
missionInfo
);
MissionManager
.
SetMissionOccupied
(
missionInfo
,
agv
);
MissionManager
.
SetMissionOccupied
(
missionInfo
,
agv
);
MissionManager
.
Log
.
Info
(
$
"执行任务[{agv.Name}][ShelfBuffToLiftJobType]{JsonHelper.SerializeObject(missionInfo)}"
);
MissionManager
.
Log
.
Info
(
$
"执行任务[{agv.Name}][ShelfBuffToLiftJobType]{JsonHelper.SerializeObject(missionInfo)}"
);
//任务状态变更
if
(
missionInfo
.
projectType
.
Equals
(
ProjectType
.
移远成品入库
))
//MissionManager.SetMissionState(missionInfo.missionId, service.model.MissionState.已分配, out string msg);
{
jobParam
.
CurTargetNode
=
manager
.
NodeManager
.
GetNode
(
SettingString
.
LIFT_D2
,
NodeType
.
Lift
);
F1LiftC1ToLiftD2Job
job
=
new
F1LiftC1ToLiftD2Job
(
jobParam
);
job
.
JobRunStep
.
ToNextStep
(
RunStep
.
S1F_LiftC1ToLiftD2_Buff
);
return
job
;
}
else
return
new
LineToLiftJob
(
jobParam
);
return
new
LineToLiftJob
(
jobParam
);
}
}
return
null
;
return
null
;
...
@@ -54,6 +61,7 @@ namespace DeviceLibrary.bean.jobType
...
@@ -54,6 +61,7 @@ namespace DeviceLibrary.bean.jobType
bool
CheckHasSameJob
(
AgvInfo
agv
,
string
liftname
)
bool
CheckHasSameJob
(
AgvInfo
agv
,
string
liftname
)
{
{
return
false
;
try
try
{
{
if
(
agv
.
Scope
.
Workshop
.
Equals
(
"1F"
))
if
(
agv
.
Scope
.
Workshop
.
Equals
(
"1F"
))
...
...
DeviceLibrary/manager/MissionManager.cs
查看文件 @
8b6e481
...
@@ -265,12 +265,13 @@ namespace DeviceLibrary.manager
...
@@ -265,12 +265,13 @@ namespace DeviceLibrary.manager
MissionInfo
missionInfo
=
null
;
MissionInfo
missionInfo
=
null
;
try
try
{
{
if
(!
agv
.
Scope
.
Workshop
.
Equals
(
"1F"
))
return
null
;
var
missions
=
GetMissionInfos
().
Where
(
w
=>
w
.
state
!=
MissionState
.
中止
var
missions
=
GetMissionInfos
().
Where
(
w
=>
w
.
state
!=
MissionState
.
中止
&&
w
.
state
!=
MissionState
.
取消
&&
w
.
state
!=
MissionState
.
完成
).
ToList
();
&&
w
.
state
!=
MissionState
.
取消
&&
w
.
state
!=
MissionState
.
完成
).
ToList
();
missionInfo
=
missions
.
Find
(
s
=>
s
.
sourceWorkshop
.
Equals
(
agv
.
Scope
.
Workshop
)
&&
!
s
.
sourceWorkshop
.
Equals
(
s
.
destinationWorkshop
)
&&
missionInfo
=
missions
.
Find
(
s
=>
(
s
.
state
.
Equals
(
MissionState
.
料架缓存
)
&&
s
.
state
.
Equals
(
MissionState
.
料架缓存
)
&&
agv
.
Scope
.
Tasks
.
Contains
(
s
.
projectType
.
ToString
())
agv
.
Scope
.
Tasks
.
Contains
(
s
.
projectType
.
ToString
()
));
));
if
(
missionInfo
!=
null
&&
AgvCanGetMission
(
missionInfo
))
if
(
missionInfo
!=
null
&&
AgvCanGetMission
(
missionInfo
))
return
missionInfo
;
return
missionInfo
;
...
@@ -506,6 +507,11 @@ namespace DeviceLibrary.manager
...
@@ -506,6 +507,11 @@ namespace DeviceLibrary.manager
SetMissionOccupiedAgv
(
missionInfo
.
missionId
,
agv
.
Name
);
SetMissionOccupiedAgv
(
missionInfo
.
missionId
,
agv
.
Name
);
MissionChangedEvent
?.
Invoke
();
MissionChangedEvent
?.
Invoke
();
}
}
public
static
void
SetMissionOccupied
(
string
missionId
,
AgvInfo
agv
)
{
SetMissionOccupiedAgv
(
missionId
,
agv
.
Name
);
MissionChangedEvent
?.
Invoke
();
}
/// <summary>
/// <summary>
/// 设置任务状态
/// 设置任务状态
/// </summary>
/// </summary>
...
...
DeviceLibrary/manager/NodeManager.cs
查看文件 @
8b6e481
...
@@ -8,6 +8,9 @@ using DeviceLibrary.manager;
...
@@ -8,6 +8,9 @@ using DeviceLibrary.manager;
using
System.Windows.Forms
;
using
System.Windows.Forms
;
using
System.Drawing
;
using
System.Drawing
;
using
static
DeviceLibrary
.
Node
;
using
static
DeviceLibrary
.
Node
;
using
System.Runtime.CompilerServices
;
using
static
System
.
Net
.
Mime
.
MediaTypeNames
;
using
System.Runtime.ConstrainedExecution
;
namespace
DeviceLibrary.manager
namespace
DeviceLibrary.manager
{
{
...
@@ -20,6 +23,7 @@ namespace DeviceLibrary.manager
...
@@ -20,6 +23,7 @@ namespace DeviceLibrary.manager
public
static
void
InitNodesInfos
()
public
static
void
InitNodesInfos
()
{
{
InitLinesInAirShower
();
nodeInfo
=
new
List
<
Node
>();
nodeInfo
=
new
List
<
Node
>();
XmlConfigOperation
.
LoadNodeInfos
(
nodeInfo
);
XmlConfigOperation
.
LoadNodeInfos
(
nodeInfo
);
WriteAllNodeInfos
();
WriteAllNodeInfos
();
...
@@ -32,7 +36,7 @@ namespace DeviceLibrary.manager
...
@@ -32,7 +36,7 @@ namespace DeviceLibrary.manager
XmlConfigOperation
.
LoadNodeInfos
(
nodes
);
XmlConfigOperation
.
LoadNodeInfos
(
nodes
);
nodeInfo
=
nodes
;
nodeInfo
=
nodes
;
}
}
catch
(
Exception
ex
)
catch
(
Exception
ex
)
{
{
MessageBox
.
Show
(
"重载节点失败:"
+
ex
.
StackTrace
,
"提示"
);
MessageBox
.
Show
(
"重载节点失败:"
+
ex
.
StackTrace
,
"提示"
);
}
}
...
@@ -49,7 +53,8 @@ namespace DeviceLibrary.manager
...
@@ -49,7 +53,8 @@ namespace DeviceLibrary.manager
DgvNode
.
AutoGenerateColumns
=
false
;
DgvNode
.
AutoGenerateColumns
=
false
;
DgvNode
.
AutoSize
=
true
;
DgvNode
.
AutoSize
=
true
;
DgvNode
.
DataSource
=
bindingSource
;
DgvNode
.
DataSource
=
bindingSource
;
DgvNode
.
RowPostPaint
+=
delegate
{
DgvNode
.
RowPostPaint
+=
delegate
{
DgvNode
.
RowsDefaultCellStyle
.
BackColor
=
Color
.
White
;
DgvNode
.
RowsDefaultCellStyle
.
BackColor
=
Color
.
White
;
DgvNode
.
AlternatingRowsDefaultCellStyle
.
BackColor
=
Color
.
LightBlue
;
DgvNode
.
AlternatingRowsDefaultCellStyle
.
BackColor
=
Color
.
LightBlue
;
};
};
...
@@ -88,7 +93,7 @@ namespace DeviceLibrary.manager
...
@@ -88,7 +93,7 @@ namespace DeviceLibrary.manager
//}
//}
}
}
public
static
void
UpdateDataSource
(
DataGridView
dataGridView
,
int
curRow
=
0
,
int
curColum
=
0
)
public
static
void
UpdateDataSource
(
DataGridView
dataGridView
,
int
curRow
=
0
,
int
curColum
=
0
)
{
{
BindingSource
bindingSource
=
new
BindingSource
();
BindingSource
bindingSource
=
new
BindingSource
();
foreach
(
Node
node
in
NodeManager
.
nodeInfo
)
foreach
(
Node
node
in
NodeManager
.
nodeInfo
)
...
@@ -98,8 +103,8 @@ namespace DeviceLibrary.manager
...
@@ -98,8 +103,8 @@ namespace DeviceLibrary.manager
bindingSource
.
Add
(
node
);
bindingSource
.
Add
(
node
);
}
}
dataGridView
.
DataSource
=
bindingSource
;
dataGridView
.
DataSource
=
bindingSource
;
if
(
dataGridView
.
Rows
.
Count
>=
curRow
if
(
dataGridView
.
Rows
.
Count
>=
curRow
&&
dataGridView
.
Columns
.
Count
>=
curColum
)
&&
dataGridView
.
Columns
.
Count
>=
curColum
)
{
{
dataGridView
.
CurrentCell
=
dataGridView
.
Rows
[
curRow
].
Cells
[
curColum
];
;
dataGridView
.
CurrentCell
=
dataGridView
.
Rows
[
curRow
].
Cells
[
curColum
];
;
}
}
...
@@ -129,7 +134,7 @@ namespace DeviceLibrary.manager
...
@@ -129,7 +134,7 @@ namespace DeviceLibrary.manager
else
else
return
true
;
return
true
;
}
}
public
static
bool
CheckNodes
(
string
nodenames
,
out
string
names
)
public
static
bool
CheckNodes
(
string
nodenames
,
out
string
names
)
{
{
string
[]
nodes
=
nodenames
.
Split
(
','
);
string
[]
nodes
=
nodenames
.
Split
(
','
);
names
=
""
;
names
=
""
;
...
@@ -193,5 +198,110 @@ namespace DeviceLibrary.manager
...
@@ -193,5 +198,110 @@ namespace DeviceLibrary.manager
// LogUtil.info(item.ToString());
// LogUtil.info(item.ToString());
//}
//}
}
}
#
region
跨门
跨风淋门
/// <summary>
/// 风淋门内的线体
/// key:车间名
/// val:线体名
/// </summary>
static
Dictionary
<
string
,
List
<
string
>>
linesInAirShower
=
new
Dictionary
<
string
,
List
<
string
>>();
static
void
InitLinesInAirShower
()
{
//添加3D的
linesInAirShower
.
Add
(
"3D"
,
new
List
<
string
>()
{
"S1Tail"
});
//添加4C的
linesInAirShower
.
Add
(
"4C"
,
new
List
<
string
>()
{
"C14Tail"
,
"C15Tail"
});
}
/// <summary>
/// 检查是否需要跨门
/// </summary>
/// <param name="cur"></param>
/// <param name="next"></param>
/// <returns></returns>
public
static
bool
NeedCrossDoor
(
AgvInfo
agv
,
Node
cur
,
Node
next
,
out
bool
isIn
,
out
bool
isAirDoor
)
{
isIn
=
true
;
isAirDoor
=
false
;
if
(
agv
.
Scope
.
Workshop
.
Equals
(
"1F"
))
return
false
;
return
false
;
try
{
if
(
cur
==
null
)
cur
=
agv
.
Place
;
if
(
next
==
null
)
next
=
agv
.
Place
;
if
(!
cur
.
Workshop
.
Equals
(
next
.
Workshop
))
{
if
(
cur
.
Equals
(
"4D"
)
&&
next
.
Workshop
.
Equals
(
"4C"
))
{
return
true
;
}
else
if
(
cur
.
Workshop
.
Equals
(
"4C"
)
&&
next
.
Workshop
.
Equals
(
"4D"
))
{
isIn
=
false
;
return
true
;
}
}
else
//在相同车间
{
if
(
linesInAirShower
.
ContainsKey
(
cur
.
Workshop
))
//当前点在风淋门内
{
if
(
linesInAirShower
.
ContainsKey
(
next
.
Workshop
))
//目标点在风淋门内
{
return
false
;
}
else
//目标点在风淋门外
{
isAirDoor
=
true
;
isIn
=
false
;
return
true
;
}
}
else
//当前点在风淋门外
{
if
(
linesInAirShower
.
ContainsKey
(
next
.
Workshop
))
//目标点在风淋门内
{
isAirDoor
=
true
;
return
true
;
}
else
//目标点在风淋门外
{
return
false
;
}
}
}
}
catch
(
Exception
ex
)
{
LogUtil
.
error
(
"NeedCrossDoor"
,
ex
);
}
return
false
;
}
/// <summary>
/// 是否需要跨两个门
/// </summary>
/// <param name="agv"></param>
/// <param name="node"></param>
/// <returns></returns>
public
static
bool
NeedCrossTwoDoor
(
AgvInfo
agv
,
Node
src
,
Node
dst
)
{
if
(
agv
.
Scope
.
Workshop
.
Equals
(
"1F"
))
return
false
;
return
false
;
try
{
if
(
src
==
null
)
src
=
agv
.
Place
;
if
(
dst
==
null
)
dst
=
agv
.
Place
;
if
(!
src
.
Workshop
.
Equals
(
dst
.
Workshop
)
&&
linesInAirShower
.
ContainsKey
(
dst
.
Workshop
))
{
return
true
;
}
}
catch
(
Exception
ex
)
{
LogUtil
.
error
(
"NeedCrossDoor"
,
ex
);
}
return
false
;
}
#
endregion
}
}
}
}
DeviceLibrary/service/Service.cs
查看文件 @
8b6e481
...
@@ -40,7 +40,7 @@ namespace DeviceLibrary
...
@@ -40,7 +40,7 @@ namespace DeviceLibrary
if
(
projectType
>
16
)
if
(
projectType
>
16
)
{
{
result
.
code
=
-
1
;
result
.
code
=
-
1
;
result
.
msg
=
$
"
不存在的任务类型:{createMissionInfo.sourcePoint
}"
;
result
.
msg
=
$
"
创建任务失败,不存在的任务类型,请确认编号规则:{createMissionInfo.missionId
}"
;
Log
.
Error
(
result
.
msg
);
Log
.
Error
(
result
.
msg
);
}
}
if
(!
NodeManager
.
CheckNode
(
createMissionInfo
.
sourcePoint
))
if
(!
NodeManager
.
CheckNode
(
createMissionInfo
.
sourcePoint
))
...
...
编写
预览
支持
Markdown
格式
附加文件
你添加了
0
人
到此讨论。请谨慎行事。
Finish editing this message first!
Cancel
请
注册
或
登录
后发表评论