EMS(energy managment system)从0到1

ops/2024/12/25 10:03:47/

EMS从0到1

    • 写在前面
    • 准备
    • 目录&导航
    • 设计
      • 是什么?
      • 做什么?
      • 怎么做?
      • 我准备怎么做
    • 写在结尾

写在前面

最近几年因为新能源产业的迅速升温,不仅导致我国能源结构的重新分配,也导致新能源相关产业蓬勃发展。我能接触到的就是EMS( energy managment system)能量管理系统,这篇文章以及后续几篇文章,我会向大家讲解作为一个C#开发工程师从0到1开发EMS的全过程,请注意听讲。

准备

  1. 开发环境:作为一个C#开发工程师,我选择使用VS作为我的开发工具。如果你使用的是VS code,rider,MomoDevelop(mac)也不影响你阅读后续内容。
  2. 技术栈:面向对象的设计思路,C#基础知识,WebAPI基础知识,核心通讯协议(Modbus,Mqtt),存储介质(mysql,sqlite,mongoDB)。ps:你应该都会吧~
  3. 管理工具:github。ps:在讲解项目的过程中,我也会穿插的讲解一些github的使用技巧和管理模式

目录&导航

这里会放我后续文章的的导航,敬请期待!
入门篇: 万事开头难
实战篇1: 采集服务

设计

是什么?

EMS(Energy Management System,能源管理系统)是一种用于监控、控制和优化建筑物或工业设施中能源使用的软件系统。它通过集成各种硬件设备和传感器来收集数据,并利用这些数据进行分析,以帮助用户理解能源使用模式,识别节能机会,最终实现降低能耗和成本的目标。

做什么?

  1. 实时监控与数据采集
    能耗监测:实时跟踪电力、水、天然气等资源的消耗情况。
    环境参数监测:监控温度、湿度、光照强度等环境因素,确保舒适度的同时优化能源使用。
    多源数据整合:能够从不同类型的传感器、仪表和其他控制系统获取数据。
  2. 数据分析与可视化
    历史数据分析:对过去的数据进行深度分析,找出趋势和异常。
    可视化报表:提供直观的图表和报告,使管理者可以轻松理解复杂的能源使用信息。
    预测性分析:基于历史数据预测未来的能源需求,提前做好规划。
  3. 自动化控制与优化
    自动调节:根据预设规则或算法自动调整设备运行状态,如空调温度、照明亮度等。
    负载管理:智能分配电力负荷,避免高峰时段过载,减少电费开支。
    故障检测与诊断:及时发现设备异常并预警,防止因设备问题导致的能源浪费。
  4. 安全性和可靠性
    数据保护:确保所有传输的数据都经过加密处理,保障信息安全。
    高可用性架构:构建冗余和容错机制,保证系统的持续稳定运行。
    硬件兼容性:确保现有设备可以与新系统无缝对接,或者确定需要更新哪些硬件。

怎么做?

  1. 项目:考虑到我的技术栈和硬件兼容性,决定使用WebAPI作为启动项,如果你对跨平台的需求不高也可以使用WPF,特别是现在资源过剩的情况下,使用windows系统来作为EMS的运行环境,不管在成本上还是在性能上都是可行的。
  2. 架构:这里因为我们准备使用WebAPI作为启动项,所以使用的是MVC软件架构,在此基础上我们会借鉴一些微服务的设计思路,用一个或多个线程来作为服务,使用资源的推送和回调来作为服务之间的桥梁,以API作为对外的窗口,这样服务之前就能做到最大化的解耦。同时
  3. 服务:根据“EMS做什么?”中的功能,我大致将EMS分为如下几个服务:数据采集服务,数据清洗服务,数据计算服务,数据存储服务,策略服务。

我准备怎么做

我做项目风格比较偏敏捷开发,我会先完成项目的主要部分,同时我也不会考虑太多安全性,可维护性,可拓展性,所以一般第一版项目完成后,会比较粗糙,但是我会在项目期限内完成对项目的多次迭代和优化,来不断靠近我的目标。所以这个系列的文章可能不适合所有人,如果你也认同我的观念或者你在开发中也是这样做的,我想这会是一次不错的阅读体验。

ps:上述的内容只是阐述了我对EMS的大概理解和设计,不同人对同一个事物会有自己的理解,所以针对EMS你如果有跟我不一样的理解和设计欢迎讨论

写在结尾

作为EMS系列的第一篇文章,我希望能跟读者达成一些共识,比如开发习惯和设计思路,这样就不会浪费大家的时间了,同时也希望这个系列的文章不会烂尾,天道酬勤,与君共勉!


http://www.ppmy.cn/ops/144825.html

相关文章

【产品更新】汇匠源零工市场小程序v1.0.18

零工市场 v1.0.18 修复 1.修复若干BUG,提升系统稳定性 我们致力于为用户提供更加高效、便捷的服务。v1.0.18版本的发布,是我们根据用户反馈和市场变化,对产品功能进行的又一次优化和升级。我们将继续努力,不断改进产品&#xff…

高并发处理 --- Caffeine内存缓存库

目录 一.什么是Caffeine? 使用场景: 二.如何使用Caffeine? 1.导入依赖: 2.在java项目中使用: 三.对缓存项的驱逐: 1.容量驱逐(Maximum Size): 2.过期驱逐&#xff…

开发场景中Java 集合的最佳选择

在 Java 开发中,集合类是处理数据的核心工具。合理选择集合,不仅可以提高代码效率,还能让代码更简洁。本篇文章将重点探讨 List、Set 和 Map 的适用场景及优缺点,帮助你在实际开发中找到最佳解决方案。 一、List:有序存…

OpenAI 普及 ChatGPT,开通热线电话,近屿智能深耕AI培训

12月19日,在OpenAI直播活动的第10天,宣布允许用户通过电话或WhatsApp与ChatGPT进行交互。并在美国推出 ChatGPT 热线电话,用户拨打后可与 ChatGPT 进行语音对话。 这项服务的一个亮点在于它兼容各种类型的通信设备——不论是现代智能手机如iP…

List反转的方法

1.list循环 List<String> strsnew ArrayList<>();for (int i 0; i <100 ; i) {strs.add("a"i);}List<String> fzstrsnew ArrayList<>();for (int i strs.size()-1; i >0 ; i--) {fzstrs.add(strs.get(i));}System.out.println(fzstr…

分享一个把表格类型的数据转换成字符串,以表格样式输出,方便控制台和日志记录时更直观

调用实例&#xff1a; Console.WriteLine("Hello, World!");List<string[]> tabLog new List<string[]>(); tabLog.Add(new string[] { "编号", "姓名", "性别", "年龄","备注" }); tabLog.Add(new…

Kubernetes使用Ceph存储

1.搭建Ceph集群 1&#xff09;准备工作 机器编号 主机名 IP 1 ceph1 192.168.1.121 2 ceph2 192.168.1.123 3 ceph3 192.168.1.125 关闭selinux、firewalld&#xff0c;配置hostname以及/etc/hosts 为每一台机器都准备至少一块单独的磁盘 所有机器安装时间同步服…

【国产NI替代】基于FPGA的4通道电压 250M采样终端边缘计算采集板卡,主控支持龙芯/飞腾

4通道电压 250M采样终端边缘计算采集板卡 采用Arria10 SOC型号的FPGA&#xff0c;最高采样率能到 250M&#xff0c;主要为高速计算提供硬件平台。