StandyJob.cs
4.0 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
using Common;
using DeviceLibrary.bean;
namespace DeviceLibrary
{
/// <summary>
/// 待机任务
/// </summary>
public class StandyJob : Job
{
/// <summary>
/// 待机任务
/// </summary>
/// <param name="agvPlae">小车当前位置,空表示在待机位</param>
public StandyJob(JobParam jobParam) : base(jobParam)
{
JobName = "待机任务";
}
int BatteryMax = ChargePileManager.GetChargePiles().BatteryMax;
int BatteryMin = ChargePileManager.GetChargePiles().BatteryMin;
int BatteryMid = ChargePileManager.GetChargePiles().BatteryMiddle;
/// <summary>
/// 待机任务
/// </summary>
/// <param name="agv"></param>
public override Job Run(Agv_Info agv)
{
if (JobRunStep.IsStep(RunStep.NONE))
{
{
if (JobParam.SrcNode.Area.Equals(Area.Air_C))
{
JobRunStep.ToNextStep(RunStep.WAIT_OUT_AIR_DOOR);
runInfo = string.Format("从{2}回到待机位,先过风淋门", agv.Battery, BatteryMax, JobParam.SrcNode.Name);
JobRunStep.Msg = runInfo;
AllocateTask(agv, SettingString.DoorAirOut);
}
else if (JobParam.SrcNode.Area.Equals(Area.C))
{
JobRunStep.ToNextStep(RunStep.WAIT_IN_ROOM_D);
runInfo = string.Format("从{2}回到待机位,先过门", agv.Battery, BatteryMax, JobParam.SrcNode.Name);
JobRunStep.Msg = runInfo;
AllocateTask(agv, SettingString.DoorCToD);
}
else
{
JobRunStep.ToNextStep(RunStep.STANDBY_WAIT_REACH_STANDBY);
runInfo = "从" + JobParam.SrcNode + "回到待机位";
JobRunStep.Msg = runInfo;
AllocateTask(agv, SettingString.Standby);
}
}
}
else if (JobRunStep.IsStep(RunStep.WAIT_OUT_AIR_DOOR))
{
if (agv.TaskRunState.CheckTaskFinished(agv.Name))
{
JobRunStep.ToNextStep(RunStep.WAIT_IN_ROOM_D);
runInfo = string.Format("从{1}回到待机位,先过门", agv.Battery, JobParam.SrcNode.Name);
JobRunStep.Msg = runInfo;
AllocateTask(agv, SettingString.DoorCToD);
}
}
else if (JobRunStep.IsStep(RunStep.WAIT_IN_ROOM_D))
{
if (agv.TaskRunState.CheckTaskFinished(agv.Name))
{
JobRunStep.ToNextStep(RunStep.STANDBY_WAIT_REACH_STANDBY);
runInfo = "从" + JobParam.SrcNode + "回到待机位";
JobRunStep.Msg = runInfo;
AllocateTask(agv, SettingString.Standby);
}
}
else if (JobRunStep.IsStep(RunStep.STANDBY_WAIT_REACH_STANDBY))
{
//if (agv.TaskRunState.CheckTaskFinished(agv.Name))
{
JobRunStep.ToNextStep(RunStep.END);
// runInfo = "到达待机位";
//JobRunStep.Msg = runInfo;
}
}
else if (JobRunStep.IsStep(RunStep.END))
{
Job job = AGVManager.control.GetJob(agv);
if (job != null && !(job is StandyJob))
{
if (job is ChargeJob && agv.Battery > BatteryMid)
return null;
runInfo = "在待机位检测到任务,执行任务";
JobRunStep.Msg = runInfo;
JobRunStep.EndJob();
return job;
}
}
return this;
}
}
}