EMS(energy managment system)从0到1
EMS从0到1
- 写在前面
- 准备
- 目录&导航
- 设计
- 是什么?
- 做什么?
- 怎么做?
- 我准备怎么做
- 写在结尾
写在前面
最近几年因为新能源产业的迅速升温,不仅导致我国能源结构的重新分配,也导致新能源相关产业蓬勃发展。我能接触到的就是EMS( energy managment system)能量管理系统,这篇文章以及后续几篇文章,我会向大家讲解作为一个C#开发工程师从0到1开发EMS的全过程,请注意听讲。
准备
- 开发环境:作为一个C#开发工程师,我选择使用VS作为我的开发工具。如果你使用的是VS code,rider,MomoDevelop(mac)也不影响你阅读后续内容。
- 技术栈:面向对象的设计思路,C#基础知识,WebAPI基础知识,核心通讯协议(Modbus,Mqtt),存储介质(mysql,sqlite,mongoDB)。ps:你应该都会吧~
- 管理工具:github。ps:在讲解项目的过程中,我也会穿插的讲解一些github的使用技巧和管理模式
目录&导航
这里会放我后续文章的的导航,敬请期待!
入门篇: 万事开头难
实战篇1: 采集服务
实战篇2: 清洗服务
实战篇3: 存储服务
设计
是什么?
EMS(Energy Management System,能源管理系统)是一种用于监控、控制和优化建筑物或工业设施中能源使用的软件系统。它通过集成各种硬件设备和传感器来收集数据,并利用这些数据进行分析,以帮助用户理解能源使用模式,识别节能机会,最终实现降低能耗和成本的目标。
做什么?
- 实时监控与数据采集
能耗监测:实时跟踪电力、水、天然气等资源的消耗情况。
环境参数监测:监控温度、湿度、光照强度等环境因素,确保舒适度的同时优化能源使用。
多源数据整合:能够从不同类型的传感器、仪表和其他控制系统获取数据。 - 数据分析与可视化
历史数据分析:对过去的数据进行深度分析,找出趋势和异常。
可视化报表:提供直观的图表和报告,使管理者可以轻松理解复杂的能源使用信息。
预测性分析:基于历史数据预测未来的能源需求,提前做好规划。 - 自动化控制与优化
自动调节:根据预设规则或算法自动调整设备运行状态,如空调温度、照明亮度等。
负载管理:智能分配电力负荷,避免高峰时段过载,减少电费开支。
故障检测与诊断:及时发现设备异常并预警,防止因设备问题导致的能源浪费。 - 安全性和可靠性
数据保护:确保所有传输的数据都经过加密处理,保障信息安全。
高可用性架构:构建冗余和容错机制,保证系统的持续稳定运行。
硬件兼容性:确保现有设备可以与新系统无缝对接,或者确定需要更新哪些硬件。
怎么做?
- 项目:考虑到我的技术栈和硬件兼容性,决定使用WebAPI作为启动项,如果你对跨平台的需求不高也可以使用WPF,特别是现在资源过剩的情况下,使用windows系统来作为EMS的运行环境,不管在成本上还是在性能上都是可行的。
- 架构:这里因为我们准备使用WebAPI作为启动项,所以使用的是MVC软件架构,在此基础上我们会借鉴一些微服务的设计思路,用一个或多个线程来作为服务,使用资源的推送和回调来作为服务之间的桥梁,以API作为对外的窗口,这样服务之前就能做到最大化的解耦。同时
- 服务:根据“EMS做什么?”中的功能,我大致将EMS分为如下几个服务:数据采集服务,数据清洗服务,数据存储服务,策略服务。
我准备怎么做
我做项目风格比较偏敏捷开发,我会先完成项目的主要部分,同时我也不会考虑太多安全性,可维护性,可拓展性,所以一般第一版项目完成后,会比较粗糙,但是我会在项目期限内完成对项目的多次迭代和优化,来不断靠近我的目标。所以这个系列的文章可能不适合所有人,如果你也认同我的观念或者你在开发中也是这样做的,我想这会是一次不错的阅读体验。
ps:上述的内容只是阐述了我对EMS的大概理解和设计,不同人对同一个事物会有自己的理解,所以针对EMS你如果有跟我不一样的理解和设计欢迎讨论
写在结尾
作为EMS系列的第一篇文章,我希望能跟读者达成一些共识,比如开发习惯和设计思路,这样就不会浪费大家的时间了,同时也希望这个系列的文章不会烂尾,天道酬勤,与君共勉!