Files
StandardSence/StandardScene.Core/Charge/README_ChargeStationManagement.md
T
2026-06-14 11:19:15 +08:00

7.4 KiB
Raw Blame History

充电桩管理系统使用说明

📋 概述

充电桩管理系统是一个基于 WinForms 的可视化管理工具,用于管理 AGV 系统中的充电桩设备。

🚀 快速开始

打开管理窗口

// 在代码中打开充电桩管理窗口
var form = new StandardScene.Charge.ChargeStationManagementForm();
form.ShowDialog();

// 或者在按钮点击事件中
private void btnOpenChargeManagement_Click(object sender, EventArgs e)
{
    var form = new StandardScene.Charge.ChargeStationManagementForm();
    form.Show();
}

添加菜单项(推荐)

在主窗口的菜单栏中添加:

// 在主窗口的初始化代码中
var menuItem = new ToolStripMenuItem("充电桩管理");
menuItem.Click += (s, e) => {
    var form = new StandardScene.Charge.ChargeStationManagementForm();
    form.Show();
};
// 将 menuItem 添加到主菜单

📖 功能说明

1. 充电桩列表(左侧面板)

功能特性

  • 实时显示:显示所有充电桩的详细信息
  • 颜色标识
    • 🟢 绿色:充电中
    • 🔴 红色:故障
    • 灰色:离线
    • 白色:空闲/其他状态
  • 搜索功能:支持按编号、名称、IP地址搜索
  • 双击编辑:双击列表项可快速编辑

列表字段

字段 说明 示例
编号 充电桩唯一标识 CS20240115123456
名称 充电桩名称 1号充电桩
IP地址 设备IP 192.168.1.100
端口 通信端口 502
电压(V) 额定电压 220.0
电流(A) 额定电流 32.0
功率(W) 计算功率 7040.0
状态 当前状态 空闲/充电中/故障
启用 是否启用 是/否
站点ID 关联站点 1001
备注 备注信息 南区1号充电桩

2. 充电桩编辑(右侧面板)

必填字段

  • 编号:自动生成(格式:CS+时间戳+随机数)
  • 名称:充电桩名称,便于识别
  • IP地址:设备IP,必须为有效IP格式
  • 端口:通信端口(1-65535
  • 电压:额定电压(0-1000V
  • 电流:额定电流(0-500A

选填字段

  • 📌 状态:空闲/充电中/故障/离线/维护中/预约中
  • 📌 启用:是否启用该充电桩
  • 📌 站点ID:关联的站点编号(与地图站点关联)
  • 📌 备注:额外说明信息

自动计算

  • 功率:自动计算(电压 × 电流)

3. 操作按钮

右侧编辑区

  • 🆕 新增:清空表单,准备添加新充电桩
  • 💾 保存:保存当前充电桩信息(新增或更新)
  • 🗑️ 删除:删除当前选中的充电桩
  • 取消:清空表单

左侧列表区

  • 🔄 刷新:重新加载数据
  • 📤 导出:导出充电桩数据为 JSON 或 CSV 文件

🔒 数据验证规则

IP地址验证

✅ 有效:192.168.1.100, 10.0.0.1, 172.16.0.1
❌ 无效:192.168.1, 256.1.1.1, abc.def.ghi.jkl

端口验证

✅ 有效:502, 8080, 1234
❌ 无效:0, 70000, -1

电压验证

✅ 有效:220V, 380V, 110V
❌ 无效:-10V, 1500V, 0V

电流验证

✅ 有效:32A, 16A, 63A
❌ 无效:-5A, 600A, 0A

唯一性验证

  • 编号不能重复
  • IP地址+端口组合不能重复

💾 数据存储

存储位置

项目根目录/Data/ChargeStations.json

数据格式

[
  {
    "StationId": "CS20240115123456",
    "Name": "1号充电桩",
    "IpAddress": "192.168.1.100",
    "Port": 502,
    "Voltage": 220.0,
    "Current": 32.0,
    "Status": 0,
    "Enabled": true,
    "SiteId": 1001,
    "Remarks": "南区1号充电桩",
    "CreatedTime": "2024-01-15T12:34:56",
    "ModifiedTime": "2024-01-15T14:20:30"
  }
]

📊 代码集成

获取充电桩数据

using StandardScene.Charge;

// 获取数据服务实例
var dataService = ChargeStationDataService.Instance;

// 获取所有充电桩
var allStations = dataService.GetAllStations();

// 获取空闲充电桩
var idleStations = dataService.GetIdleStations();

// 根据编号获取充电桩
var station = dataService.GetStationById("CS20240115123456");

// 获取充电中的充电桩数量
int chargingCount = dataService.GetChargingCount();

添加/更新充电桩

// 创建新充电桩
var newStation = new ChargeStation
{
    Name = "2号充电桩",
    IpAddress = "192.168.1.101",
    Port = 502,
    Voltage = 220.0,
    Current = 32.0
};

// 添加
if (dataService.AddStation(newStation, out string errorMsg))
{
    Console.WriteLine("添加成功");
}
else
{
    Console.WriteLine($"添加失败: {errorMsg}");
}

// 更新状态
dataService.UpdateStationStatus("CS20240115123456", ChargeStationStatus.Charging);

删除充电桩

// 删除充电桩
if (dataService.DeleteStation("CS20240115123456", out string errorMsg))
{
    Console.WriteLine("删除成功");
}
else
{
    Console.WriteLine($"删除失败: {errorMsg}");
}

⚠️ 注意事项

  1. 数据持久化:所有数据自动保存到 JSON 文件,重启后数据不会丢失
  2. 线程安全:数据服务使用单例模式和锁机制,支持多线程访问
  3. 状态管理:充电中的充电桩无法删除,需先停止充电
  4. IP冲突检测:系统会自动检测IP和端口的冲突
  5. 数据备份:建议定期备份 Data/ChargeStations.json 文件

🔧 扩展功能建议

与充电任务集成

AbstractChargeMission.cs 中集成充电桩数据:

// 在充电任务中获取充电桩信息
private void SelectChargeStation(Car car)
{
    var dataService = ChargeStationDataService.Instance;
    var idleStations = dataService.GetIdleStations();
    
    if (idleStations.Count > 0)
    {
        var nearestStation = FindNearestStation(car, idleStations);
        
        // 更新充电桩状态
        dataService.UpdateStationStatus(
            nearestStation.StationId, 
            ChargeStationStatus.Reserved
        );
        
        // 分配车辆到充电桩
        AssignCarToStation(car, nearestStation);
    }
}

// 充电完成后
private void OnChargeComplete(Car car, ChargeStation station)
{
    var dataService = ChargeStationDataService.Instance;
    dataService.UpdateStationStatus(
        station.StationId, 
        ChargeStationStatus.Idle
    );
}

监控充电桩状态

// 定期检查充电桩在线状态
private void MonitorChargeStations()
{
    var dataService = ChargeStationDataService.Instance;
    var stations = dataService.GetAllStations();
    
    foreach (var station in stations)
    {
        if (station.Enabled)
        {
            bool isOnline = PingStation(station.IpAddress, station.Port);
            
            var newStatus = isOnline 
                ? ChargeStationStatus.Idle 
                : ChargeStationStatus.Offline;
            
            if (station.Status != newStatus)
            {
                dataService.UpdateStationStatus(station.StationId, newStatus);
                Diagnosis.Log($"充电桩 {station.Name} 状态变更: {newStatus}", 
                    "ChargeStation", true);
            }
        }
    }
}

📞 技术支持

如有问题,请检查:

  1. Data 文件夹是否有写入权限
  2. JSON 文件格式是否正确
  3. 日志中的错误信息(标签:ChargeStation

版本: 1.0.0
最后更新: 2024-01-15
作者: MDCS System