C#上位机案例:西门子S7协议通信+实时曲线显示(WinForm+ZedGraph) - 教程

做工控上位机开发这些年,最常遇到的需求之一就是:“读取西门子PLC的实时数据,还要在界面上画曲线显示变化趋势”。记得第一次接这个需求时,我先是用WinForm的PictureBox手动画曲线,结果不仅代码繁琐,曲线还卡顿、锯齿严重;后来又试过一些简易图表控件,要么不支持实时刷新,要么适配性差。直到用上ZedGraph,才算彻底解决了问题——这款开源的图表控件几乎是工控上位机实时曲线显示的“标配”,配合西门子S7协议的通信库S7NetPlus,能完美建立PLC资料采集与实时曲线展示的需求。

现在带新人时,我都会用这个案例作为实战项目,因为它既涵盖了工控上位机的核心(S7协议通信),又包含了实际场景中的高频需求(实时曲线可视化),还能踩遍新手常犯的坑。今天就把这个完整案例分享出来,从PLC配置到代码实现,从曲线绘制到避坑优化,一步一步讲清楚,新手也能直接上手。

一、案例背景与核心需求(工控现场真实场景)

本次案例以西门子1200 PLC为硬件核心,模拟产线的温度和压力材料采集:

  1. 通信需求:通过S7协议读取PLC的DB块数据(温度:0100℃,压力:01.6MPa),采集频率100ms/次。
  2. 可视化需求:在WinForm界面用ZedGraph绘制两条实时曲线(温度曲线、压力曲线),显示最近100个材料点,曲线随时间自动滚动。
  3. 辅助需求:显现当前采集的数值和PLC通信状态,支持手动启动/停止采集,支持清空曲线。
<
posted @ 2026-01-20 19:50  clnchanpin  阅读(37)  评论(0)    收藏  举报