当前位置: 首页 > news >正文

EMS(energy managment system)从0到1

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: 采集服务
实战篇2: 清洗服务

设计

是什么?

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.mrgr.cn/news/81350.html

相关文章:

  • git仓库多人协作新建分支 合并到主分支流程详解
  • 继承详细总结
  • MDS-NPV/NPIV
  • leetcode 2295.替换数组中的元素
  • Python 练习
  • 网络中冗余备份
  • React里使用lodash工具库
  • 机器学习基础
  • Redis缓存数据库
  • [搜广推]王树森推荐系统笔记——矩阵补充最近邻查找
  • 自动驾驶---Parking端到端架构
  • 深度学习中的残差网络、加权残差连接(WRC)与跨阶段部分连接(CSP)详解
  • 结合实例从HCI层分析经典蓝牙连接和配对过程
  • 重温设计模式--1、设计模式七大原则
  • Shell脚本
  • 在【Arduino IDE】中在线下载和离线下载【ESP系列开发板的SDK】
  • idea配置
  • SpringBoot选择CGLIB作为默认动态代理
  • C语言结构体详细讲解
  • gateway网关
  • C语言项目 天天酷跑(上篇)
  • Pytorch分布式训练
  • Unity模型观察脚本
  • Android开发环境搭建和编译系统
  • 知识图谱嵌入大总结:难点、方法、工具、和图嵌入的区别
  • 【innodb 阅读笔记】之 数据页结构介绍