ChargePiles.cs
3.6 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
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DeviceLibrary.bean
{
public class ChargePiles
{
List<ChargePile> chargePiles;
/// <summary>
/// 充电最大电量
/// </summary>
public int BatteryMax { get; set; } = 90;
/// <summary>
/// 充电最小电量,小于该值直接去充电
/// </summary>
public int BatteryMin { get; set; } = 20;
/// <summary>
/// 空闲车辆充电点量
/// </summary>
public int BatteryMiddle { get; set; } = 50;
public ChargePiles()
{
chargePiles = new List<ChargePile>();
}
public List<ChargePile> GetChargePiles()
{
return chargePiles;
}
public void AddPile(ChargePile pile)
{
chargePiles.Add(pile);
}
public ChargePile GetChargePileByName(string name)
{
return chargePiles.Find(s=>s.Name.Equals(name));
}
public ChargePile GetChargePileById(int id)
{
return chargePiles.Find(s => s.Id.Equals(id));
}
public List<ChargePile> GetChargePilesByAgv(AgvInfo agv)
{
return chargePiles.FindAll(s => s.Agvs.Contains(agv.IP));
}
public ChargePile GetChargePileByAgv(AgvInfo agv)
{
return chargePiles.Find(s => s.Agvs.Contains(agv.IP));
}
}
public class ChargePile
{
/// <summary>
/// 充电桩ID
/// </summary>
public int Id { get; set; } = -1;
/// <summary>
/// 充电桩名称
/// </summary>
public string Name { get; set; } = "";
/// <summary>
/// 充电桩别名
/// </summary>
public string AliceName { get; set; } = "";
public string Guid { get; set; } = "";
/// <summary>
/// 是否是固定充电桩
/// </summary>
public bool Fixed { get; set; } = false;
/// <summary>
/// 是否占用
/// </summary>
public bool Occupied { get; set; } = false;
/// <summary>
/// 占用充电桩的AGV
/// </summary>
public AgvInfo OccupiedAgv { get; set; }
/// <summary>
/// 可以在该处充电的agv列表
/// </summary>
public List<string> Agvs { get; set; }
public ChargePile()
{
Agvs = new List<string>();
}
/// <summary>
/// 是否有空位
/// </summary>
/// <returns></returns>
public bool HasEmpty(AgvInfo agv)
{
if (Fixed)
{
if (agv.IP.Equals(Agvs[0]))
return true;
else
return false;
}
else //多个agv共享充电桩
{
if (Agvs.Contains(agv.IP))
return !Occupied;
else
return false;
}
}
/// <summary>
/// 占用充电桩
/// </summary>
/// <param name="agv"></param>
public ChargePile Occupy(AgvInfo agv)
{
Occupied = true;
OccupiedAgv = agv;
return this;
}
/// <summary>
/// 清除充电桩的占用
/// </summary>
public void DelOccupy(AgvInfo agv)
{
if(agv.Equals(OccupiedAgv))
{
Occupied = false;
OccupiedAgv = null;
}
}
}
}