前言
在工业自动化场景中,设备运行状态的实时可视化不仅是生产管理的基础需求,更是保障安全与效率的关键环节。过去,这类系统往往依赖昂贵的组态软件或定制化开发,成本高、周期长。
本文推荐一个功能完整基于 WPF 和 LiveCharts 的轻量级工业监控项目,它虽为模拟系统,却完整体现了真实场景下的数据流、UI 架构与交互逻辑。
项目介绍
项目是一个典型的WPF 桌面应用,采用MVVM(Model-View-ViewModel)架构,模拟工业现场对关键设备参数的实时监控。系统通过定时生成模拟数据,驱动界面动态更新,展示包括主轴转速、液压温度、生产计数和压力曲线在内的核心指标。整个项目结构清晰,代码解耦良好,非常适合作为学习 WPF 数据绑定、图表集成与工业 UI 设计的入门范例。
项目功能
1、实时数据显示:每秒自动刷新主轴转速(1200–1300 RPM)、液压温度(80–90°C)、生产计数(递增)和运行效率(92%)。
2、动态压力曲线:使用 LiveCharts 绘制连续的压力变化趋势图,支持平滑滚动更新。
3、KPI 状态卡片:以卡片形式展示四项关键指标,并根据数值自动标记状态(如温度超限显示"警告")。
4、现代化界面:深色工业风格主题,布局简洁,信息层级分明。
5、基础系统操作:包含顶部导航栏(报警记录、系统设置、退出)和左侧功能菜单(监控、报表、维护),具备实际系统的雏形。
项目特点
项目最突出的特点是高度响应式与数据驱动。
所有 UI 元素均通过数据绑定与 ViewModel 关联,无需手动操作控件属性。当模拟数据更新时,界面自动刷新,真正实现了"数据变,视图变"。
另外,项目采用ObservableCollection和ChartValues等集合类型,确保图表和列表能高效响应新增或变更的数据点。
项目技术
技术栈
技术 | 说明 |
|---|---|
.NET 8.0 | 跨平台开发框架,提供高性能运行时和现代化语言特性 |
WPF | 用于开发 Windows 桌面客户端应用 |
LiveCharts.Wpf 0.9.7 | 开源动态图表库,支持实时数据可视化与平滑动画 |
MVVM 模式 | Model-View-ViewModel 架构,实现 UI 与业务逻辑分离,支持数据绑定 |
XAML | 声明式 UI 设计语言,用于定义 WPF 界面布局与控件 |
项目结构
├── WpfApp1.sln # Visual Studio 解决方案文件 ├── WpfApp1/ # 主项目目录 │ ├── App.xaml # 应用程序启动与全局资源定义 │ ├── App.xaml.cs # 应用程序启动逻辑 │ ├── AssemblyInfo.cs # 程序集元信息(版本、作者等) │ ├── MainWindow.xaml # 主窗口界面布局(XAML) │ ├── MainWindow.xaml.cs # 主窗口后台代码 │ ├── MainViewModel.cs # 主视图模型,包含核心数据与逻辑 │ ├── KpiCard.xaml # KPI 卡片自定义控件界面 │ ├── KpiCard.xaml.cs # KPI 卡片控件逻辑 │ ├── WpfApp1.csproj # 项目配置文件(依赖、目标框架等) │ └── Resources/系统要求
操作系统:Windows 10 或 Windows 11
开发环境:Visual Studio 2022 或更高版本
运行时:已安装 .NET 8.0 SDK
内存:建议 4GB RAM 或更高
项目代码
private void InitializeChart() { PressureSeries = new SeriesCollection { new LineSeries { Title = "压力", Values = new ChartValues<ObservableValue>(), PointGeometry = null, StrokeThickness = 2, Fill = System.Windows.Media.Brushes.Transparent, Stroke = new System.Windows.Media.SolidColorBrush(System.Windows.Media.Color.FromRgb(0, 188, 212)) } }; // 初始化一些示例数据 var random = new Random(); for (int i = 0; i < 20; i++) { varvalue = new ObservableValue(random.Next(50, 100)); ((ChartValues<ObservableValue>)PressureSeries[0].Values).Add(value); } DateTimeFormatter = value => DateTime.Now.AddSeconds(value - 20).ToString("HH:mm:ss"); } private void StartDataSimulation() { var timer = new DispatcherTimer { Interval = TimeSpan.FromSeconds(1) }; timer.Tick += (sender, e) => { // 更新最后更新时间 LastUpdated = DateTime.Now; var random = new Random(); // 模拟压力数据更新 if (PressureSeries != null && PressureSeries.Count > 0) { var newValue = new ObservableValue(random.Next(50, 100)); ((ChartValues<ObservableValue>)PressureSeries[0].Values).Add(newValue); // 保持最多50个数据点 if (PressureSeries[0].Values.Count > 50) { ((ChartValues<ObservableValue>)PressureSeries[0].Values).RemoveAt(0); } } // 模拟其他数据更新 var rpmRandom = random.Next(1200, 1300); RpmValue = rpmRandom.ToString(); var tempRandom = random.Next(80, 90); Temperature = tempRandom.ToString(); var countRandom = int.Parse(Count) + random.Next(1, 5); Count = countRandom.ToString(); }; timer.Start(); }项目效果
一个深色背景的工业监控主界面。整个界面响应迅速,即使在低配机器上也能保持流畅。这种"所见即所得"的体验,让大家能快速验证数据流与 UI 逻辑的正确性。
项目源码
1、确保已安装 .NET 8.0 SDK 和 Visual Studio 2022;
2、打开WpfApp1.sln解决方案文件;
3、Visual Studio 会自动还原 NuGet 包(含 LiveCharts);
4、按 F5 即可启动应用,无需额外配置。
代码注释清晰,特别适合 WPF 初学理解 MVVM 与实时图表的集成方式。
总结
这个 WPF 工业监控项目,其架构设计、技术选型和用户体验都贴近实际工程需求。证明了利用 .NET 开源生态,个人开发者或小团队也能快速开发专业级的工业可视化应用。
对于正在学习 WPF、MVVM 或工业软件开发的朋友来说,这是一个不错的参考模板。未来可在此基础上扩展 PLC 实际通信、历史数据存储、报警推送等功能,逐步演进为真正的生产系统。