1、立项背景和目标:
随着工业设备智能化程度的提高,传统人工巡检方式已无法满足实时监控和快速预警的需求。本系统旨在为工厂车间提供一套轻量级的设备监控管理工具,实现设备数据实时采集、异常自动预警、历史数据可追溯的目标,帮助管理人员第一时间发现设备异常,降低生产事故风险
2、软件功能、核心功能模块的介绍:
系统包含四个核心功能模块:一是设备监控模块,通过仪表盘实时展示设备温度、湿度、压力值,并显示历史最高/最低记录,连接设备后自动刷新数据;二是预警管理模块,支持按预警类型、预警来源、预警状态及时间范围多维度查询报警记录,并实现分页展示;三是用户登录与注册模块,支持账号密码验证;四是系统设置模块,提供设备状态查看和切换功能。系统采用C# WinForm结合SunnyUI界面库开发,数据库使用MySQL,采用分层架构(DAL/BLL/Models/Utils),保证代码可维护性
3、业务流程、功能路径描述:
用户通过登录页面验证身份进入主界面。主界面默认加载设备监控页,用户从下拉列表选择设备并点击"连接设备",系统立即从数据库拉取该设备最新采集数据并刷新仪表盘,同时自动加载最近20条实时数据到表格中,表格每隔1秒自动滚动一行以实现动态监控效果。用户点击"预警管理"按钮可进入预警查询页面,按条件筛选后查询结果以表格形式展示,并支持分页浏览。所有数据均来自MySQL数据库的datainfo(设备采集数据表)和alarmloginfos(报警记录表)
1、整体架构和设计思路,不同模块使用的技术栈:
系统采用经典三层架构(UI层-BLL层-DAL层),并辅以Models实体层和Utils工具层,实现业务逻辑与数据访问的分离,便于后期维护和功能扩展。
- UI层(DMWC_UI):使用.NET WinForm结合SunnyUI开源组件库开发,实现了登录窗体、主窗体、设备监控面板和预警管理面板,界面风格统一,交互流畅。
- BLL层(DMWC_BLL):封装业务逻辑,如用户登录注册验证、设备数据查询、预警统计等,调用DAL层完成数据操作。
- DAL层(DMWC_DAL):基于ADO.NET + MySQL驱动实现数据库访问,包含DBHelper数据库工具类,封装了增删改查、事务处理等通用方法。
- Models层(DMWC_Models):定义设备信息、采集数据、预警记录、用户等实体类,部分实体类通过属性扩展实现了枚举值的友好显示(如状态转中文)。
- Utils层(DMWC_Utils):包含DataTable与泛型List的转换工具,以及用户登录信息上下文管理类。
数据库使用MySQL 8.0,通过MySql.Data驱动连接
2、"我"的负责模块和结果:
本人独立完成全栈开发,包括需求分析、数据库设计、界面设计、前后端编码及测试。
- 数据库设计:设计并创建了设备信息表(diviceinfo)、采集数据表(datainfo)、报警记录表(alarmloginfos)、用户表(tb_user)等,建立了合理的表关联关系。
- 设备监控模块:实现了设备下拉选择、一键连接、实时数据仪表盘展示(温度/湿度/压力三表联动),自动显示历史最高/最低值,预警总数及分类统计。数据刷新响应时间控制在500ms内。
- 实时数据表格:实现了每1秒自动滚动一行的动态监控效果,无需手动刷新即可查看最新20条采集记录。
- 预警管理模块:支持按预警类型(9种)、预警来源(5种设备)、预警状态(3种)及时间范围四维度组合查询,查询结果支持分页展示,单次查询数据量上限1000条。
- 用户登录/注册模块:实现了密码非明文存储验证、登录状态保持功能
3、"我"遇到的难点、坑和解决方案:
难点一:仪表盘控件显示当前值时,需要将数据库存储的double类型数据与UI控件的Value属性进行精确映射。解决方案:在数据查询后使用Convert.ToSingle()进行类型转换,并对仪表盘的MaxValue、MinValue、ScaleDecimalPlaces等属性进行了合理配置,确保指针位置准确。
难点二:实时数据表格需要实现每隔1秒自动滚动显示最新数据,但不能影响用户手动查看。解决方案:使用Timer定时器,通过FirstDisplayedScrollingRowIndex属性控制表格滚动起始行,每次前进一行,滚动到末尾后继续循环。