# DoNetSCADA **Repository Path**: SSBC/do-net-scada ## Basic Information - **Project Name**: DoNetSCADA - **Description**: PLC 数据秒上屏!基于 .NET 的轻量级 SCADA 开源方案(支持能源/供热场景) - **Primary Language**: C# - **License**: Not specified - **Default Branch**: master - **Homepage**: https://mp.weixin.qq.com/s/VJ1eRaI59NU6JhB-8Al5mw - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2026-01-22 - **Last Updated**: 2026-01-22 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README [《PLC 数据秒上屏!基于 .NET 的轻量级 SCADA 开源方案(支持能源/供热场景)》](https://mp.weixin.qq.com/s/VJ1eRaI59NU6JhB-8Al5mw) > 声明:网络内容,仅供学习,尊重版权,侵权速删,歉意致谢! ## 前言 工业自动化领域,SCADA(数据采集与监控系统)是连接物理设备与数字世界的桥梁。尤其在清洁能源、供热、水处理等场景中,实时监控设备状态、远程控制阀门水泵、记录历史数据,已成为保障系统安全高效运行的关键。 本文将推荐一个基于 WinForms 开发的清洁能源 SCADA 系统,虽界面简洁,却功能完整,集成了 PLC 通信、实时数据显示、设备控制、用户管理与历史查询于一体,是一个典型的中小型工业监控应用示例。 ## 项目介绍 项目主要用于监控和控制一套供热或锅炉系统。它通过 S7.NET 库与西门子 PLC(如 S7-300/1200/1500)建立通信,读取压力、温度、液位等传感器数据,并允许操作员远程启停水泵、开关阀门。 系统采用 WinForms 开发桌面客户端,支持无边框自定义窗口、用户权限管理、参数配置、数据持久化到 SQL Server,并提供历史数据查询功能,适用于小型供热站、分布式能源站等场景。 ## 项目功能 1、PLC 连接管理:支持配置 IP 地址、CPU 类型、机架号、插槽号,一键启动/停止通信。 2、实时数据监控:动态显示进/出水压力与温度、锅炉压力/温度/液位、水罐液位等关键参数,并通过仪表盘、液位控件可视化呈现。 3、设备远程控制:可独立控制进水泵、加水泵、燃气泵、循环泵的启停,以及出水阀的开关。 4、用户权限管理:支持多用户登录,不同角色可分配不同操作权限(当前实现基础增删改查)。 5、历史数据查询:按时间范围查询并展示历史记录,便于故障回溯与能效分析。 6、系统配置持久化:PLC 连接参数保存在本地 ini 文件中,重启后自动加载。 ## 项目特点 **轻量实用**:不依赖大型框架,核心逻辑清晰,适合部署在工控机或现场操作站。 **强交互性**:所有设备状态实时刷新,控制操作即时反馈,界面元素(如阀门颜色、LED 指示灯)直观反映系统状态。 **安全防护**:关键操作(如关闭窗体、删除用户、开关阀门)均加入确认提示,防止误操作。 **可维护性强**:代码结构模块化,PLC 通信、数据库操作、UI 更新分离,便于后续扩展(如接入更多设备类型或报警功能)。 **本地化友好**:全中文界面,符合国内工业用户操作习惯。 ## 项目技术 1、后端逻辑基于 .NET Framework,使用 C# 编写; 2、UI 层采用 WinForms,配合自定义控件(如 LED 指示灯、仪表盘、液位波形图)提升可视化效果; 3、PLC 通信通过开源库 **S7.Net** 实现,支持西门子 S7 系列; 4、数据存储使用 **SQL Server**,通过 ADO.NET 封装数据访问层; 5、配置信息以 **INI 文件**形式本地存储,简单可靠。 6、整个技术栈成熟稳定,开发门槛低,适合中小型团队快速交付。 ## 项目代码 ```cs /// /// 打开PLC连接 /// public void OpenPLC() { if (this.s7netlib == null) { this.s7netlib = new Plc(CpuType, IPAddress, Rack, Slot); } if (!this.s7netlib.IsConnected) { this.s7netlib.ReadTimeout = 1000; this.s7netlib.WriteTimeout = 1000; this.s7netlib.Open(); } } /// /// 关闭PLC连接 /// public void ClosePLC() { if (this.s7netlib != null && this.s7netlib.IsConnected) { this.s7netlib.Close(); } } /// /// 写入单个数据 /// /// 地址 /// 数值 public void WriteDataToPLC(string varAddress,object varValuee) { OpenPLC(); lock (this) { this.s7netlib.Write(varAddress, varValuee); } } /// /// 从PLC中批量读取数据 /// /// 存储区类型 /// DB号 /// 开始字节地址 /// 读取的数量 /// 返回字节数组 public byte[] ReadDataFromPLC(DataType dataType, int db, int startByteAdr, int count) { OpenPLC(); lock (this) { byte[] result = this.s7netlib.ReadBytes(dataType, db, startByteAdr, count); return result; } } ``` ## 项目效果 主界面以蓝色科技风为主,顶部显示当前登录用户,左侧为设备控制区(带开关按钮),中部为实时数据仪表盘,右侧为状态指示灯和关键参数标签。 启动系统后,PLC 数据每秒刷新一次,仪表指针随之跳动,液位控件动态波动。点击"历史查询"可弹出新窗口,选择时间范围后以表格形式展示历史记录,并自动编号行号。 系统登录 ![](https://p0-xtjj-private.juejin.cn/tos-cn-i-73owjymdk6/3c749bf2336a4bea9f0980f60917ab12~tplv-73owjymdk6-jj-mark-v1:0:0:0:0:5o6Y6YeR5oqA5pyv56S-5Yy6IEAg5bCP56CB57yW5Yyg:q75.awebp?policy=eyJ2bSI6MywidWlkIjoiMTMwODg3NjE1NTM5NTczOSJ9&rk3s=f64ab15b&x-orig-authkey=f32326d3454f2ac7e96d3d06cdbb035152127018&x-orig-expires=1769581204&x-orig-sign=YNRxga%2ByQgTDpGqVE9Ptz%2F4mfr8%3D) 系统主页 ![](https://p0-xtjj-private.juejin.cn/tos-cn-i-73owjymdk6/aff8ca587af0463788002acef421234e~tplv-73owjymdk6-jj-mark-v1:0:0:0:0:5o6Y6YeR5oqA5pyv56S-5Yy6IEAg5bCP56CB57yW5Yyg:q75.awebp?policy=eyJ2bSI6MywidWlkIjoiMTMwODg3NjE1NTM5NTczOSJ9&rk3s=f64ab15b&x-orig-authkey=f32326d3454f2ac7e96d3d06cdbb035152127018&x-orig-expires=1769581204&x-orig-sign=5rtPaG06gXMOpXO70gvjngL8uHo%3D) ![](https://p0-xtjj-private.juejin.cn/tos-cn-i-73owjymdk6/baf5940547cf4dbbb45e34d813f11520~tplv-73owjymdk6-jj-mark-v1:0:0:0:0:5o6Y6YeR5oqA5pyv56S-5Yy6IEAg5bCP56CB57yW5Yyg:q75.awebp?policy=eyJ2bSI6MywidWlkIjoiMTMwODg3NjE1NTM5NTczOSJ9&rk3s=f64ab15b&x-orig-authkey=f32326d3454f2ac7e96d3d06cdbb035152127018&x-orig-expires=1769581204&x-orig-sign=JspCfrkjKAg%2F%2BvtfPciFOeMgcd8%3D) 历史查询 ![](https://p0-xtjj-private.juejin.cn/tos-cn-i-73owjymdk6/5acdf54d36e14b25a8998caa177b13b3~tplv-73owjymdk6-jj-mark-v1:0:0:0:0:5o6Y6YeR5oqA5pyv56S-5Yy6IEAg5bCP56CB57yW5Yyg:q75.awebp?policy=eyJ2bSI6MywidWlkIjoiMTMwODg3NjE1NTM5NTczOSJ9&rk3s=f64ab15b&x-orig-authkey=f32326d3454f2ac7e96d3d06cdbb035152127018&x-orig-expires=1769581204&x-orig-sign=NhD9Vm11elsRtKo6i3sWPx6DHZM%3D) 参数设置 ![](https://p0-xtjj-private.juejin.cn/tos-cn-i-73owjymdk6/c5b75a0e437f4d949c3957f3960679a3~tplv-73owjymdk6-jj-mark-v1:0:0:0:0:5o6Y6YeR5oqA5pyv56S-5Yy6IEAg5bCP56CB57yW5Yyg:q75.awebp?policy=eyJ2bSI6MywidWlkIjoiMTMwODg3NjE1NTM5NTczOSJ9&rk3s=f64ab15b&x-orig-authkey=f32326d3454f2ac7e96d3d06cdbb035152127018&x-orig-expires=1769581204&x-orig-sign=rYgLteVYwMq2TXW4TkovkjxaQDI%3D) 用户管理 ![](https://p0-xtjj-private.juejin.cn/tos-cn-i-73owjymdk6/ec83274a372c425dba55a8ea368f6275~tplv-73owjymdk6-jj-mark-v1:0:0:0:0:5o6Y6YeR5oqA5pyv56S-5Yy6IEAg5bCP56CB57yW5Yyg:q75.awebp?policy=eyJ2bSI6MywidWlkIjoiMTMwODg3NjE1NTM5NTczOSJ9&rk3s=f64ab15b&x-orig-authkey=f32326d3454f2ac7e96d3d06cdbb035152127018&x-orig-expires=1769581204&x-orig-sign=FPNfSHgCpgx9HG%2FhUec3OxS21WY%3D) ## 项目源码 项目源码结构清晰,主要包含以下模块: - `FrmMain`:主窗体,负责 PLC 连接、数据读取、UI 更新与设备控制。 - `FrmParamSet`:PLC 参数配置窗口,支持修改 IP、CPU 类型等并保存至 ini 文件。 - `FrmUserManage`:用户管理界面,实现增删改查功能。 - `FrmHistoryQuery`:历史数据查询窗口,支持时间范围筛选。 - 服务类:如 `PLCDataService`(封装 S7 通信)、`SqlDataService`(数据库操作)、`PlcInfoService`(配置读写)等。 代码已完整实现异常处理、事件解绑防抖、UI 线程安全更新等工业软件必备细节,具备良好的工程参考价值。 GitHub:https://github.com/ssfffzz/HeatingControlProject ## 总结 能源 SCADA 系统虽未使用前沿 Web 技术或云平台,却牢牢抓住了工业现场的核心需求:**稳定、可靠、易用**。它证明了在特定场景下,WinForms + S7.NET + SQL Server 的组合依然具有强大生命力。 对于学习工业通信、理解 SCADA 架构、或需要快速搭建本地监控系统的开发来说,这是一个极具参考价值的实战项目。 未来可在此基础上增加报警推送、能效分析、多站点聚合等功能,逐步演进为更完整的能源管理平台。 ## 关键词 SCADA、WinForms、S7.NET、PLC通信、实时监控、清洁能源、工业自动化、C#、SQL Server、数据可视化