news 2026/2/17 9:05:17

工业数据读取与交互:C# 的奇妙之旅

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
工业数据读取与交互:C# 的奇妙之旅

C#读取组态王数据,DCS数据读取Wincc数据,读取数据库库数据,也可平台互相通讯交互,并支持读取其他PLC仪表数据给到SACADA系统。

在工业自动化领域,数据的读取与交互至关重要。今天咱们就聊聊如何用 C# 实现从组态王、DCS(通过 Wincc 读取)、数据库以及 PLC 仪表等多种数据源读取数据,并将其传递给 SACADA 系统。

一、C# 读取组态王数据

组态王是一款常见的工业自动化软件。要从组态王读取数据,首先得了解它提供的接口。通常可以通过 OPC(OLE for Process Control)协议来实现。

在 C# 中,我们可以借助一些第三方库,比如Kepware.KEPServerEX.V6来操作 OPC。假设我们已经安装并配置好了相关的 OPC 服务器与客户端环境,以下是一段简单的示例代码:

using System; using Kepware.KEPServerEX.V6; class ReadKingviewData { static void Main() { // 创建 OPC 服务器对象 OPCServer server = new OPCServer(); // 连接到 OPC 服务器 server.Connect("Kepware.KEPServerEX.V6"); // 获取 OPC 组对象 OPCGroups groups = server.OPCGroups; OPCGroup group = groups.Add("MyGroup"); // 设置更新速率等属性 group.UpdateRate = 1000; group.IsActive = true; // 获取 OPC 项对象 OPCItems items = group.OPCItems; OPCItem item = items.AddItem("KingviewTagName", 1); // 读取数据 object value; item.Read(out value); Console.WriteLine($"从组态王读取到的数据: {value}"); // 释放资源 item.Remove(); group.Remove(); server.Disconnect(); } }

代码分析:

  1. 首先引入Kepware.KEPServerEX.V6命名空间,这是与 OPC 服务器交互的关键。
  2. 创建OPCServer对象并连接到指定的 OPC 服务器,这里是"Kepware.KEPServerEX.V6",不同环境可能不同。
  3. 创建并配置OPCGroup,设置更新速率和激活状态,这决定了数据获取的频率和是否生效。
  4. 添加OPCItem,这里的"KingviewTagName"是组态王中定义的标签名,要根据实际情况修改。
  5. 调用Read方法读取数据,并输出到控制台。最后释放相关资源,确保程序优雅结束。

二、DCS 数据读取 Wincc 数据

Wincc 也是工业界常用的监控软件,很多 DCS 系统会与之集成。同样可以利用 OPC 来读取 Wincc 数据,C# 代码结构与读取组态王数据类似。

using System; using Kepware.KEPServerEX.V6; class ReadWinccDataFromDCS { static void Main() { OPCServer server = new OPCServer(); server.Connect("WinccOPCServer"); OPCGroups groups = server.OPCGroups; OPCGroup group = groups.Add("WinccGroup"); group.UpdateRate = 1000; group.IsActive = true; OPCItems items = group.OPCItems; OPCItem item = items.AddItem("WinccTagName", 1); object value; item.Read(out value); Console.WriteLine($"从 Wincc(DCS 相关)读取到的数据: {value}"); item.Remove(); group.Remove(); server.Disconnect(); } }

这里主要区别在于连接的 OPC 服务器名称"WinccOPCServer"以及标签名"WinccTagName",要依据实际的 Wincc 配置来。

三、读取数据库数据

读取数据库数据是编程中常见的操作,以 SQL Server 为例,在 C# 中可以使用System.Data.SqlClient命名空间。

using System; using System.Data.SqlClient; class ReadDatabaseData { static void Main() { string connectionString = "Data Source=YOUR_SERVER_NAME;Initial Catalog=YOUR_DATABASE_NAME;User ID=YOUR_USERNAME;Password=YOUR_PASSWORD"; using (SqlConnection connection = new SqlConnection(connectionString)) { string query = "SELECT ColumnName FROM YourTableName"; SqlCommand command = new SqlCommand(query, connection); connection.Open(); SqlDataReader reader = command.ExecuteReader(); while (reader.Read()) { Console.WriteLine(reader.GetString(0)); } reader.Close(); } } }

代码分析:

  1. 定义连接字符串,包含服务器名称、数据库名称、用户名和密码,需要根据实际数据库信息修改。
  2. 使用SqlConnection建立数据库连接,并在using块中确保连接使用完毕后正确释放。
  3. 定义 SQL 查询语句,这里简单查询表中的某一列。
  4. 创建SqlCommand对象执行查询,打开连接后通过ExecuteReader获取数据读取器。
  5. 使用SqlDataReader逐行读取数据并输出。

四、平台互相通讯交互及读取 PLC 仪表数据给到 SACADA 系统

要实现平台间的通讯交互以及将 PLC 仪表数据传递给 SACADA 系统,可以借助消息队列、Web 服务等技术。以 Web 服务为例,假设 SACADA 系统提供了接收数据的 Web API。

using System; using System.Net.Http; using System.Threading.Tasks; class SendPLCDataToSACADA { static async Task Main() { // 模拟从 PLC 仪表读取到的数据 string plcData = "SomePLCValue"; using (HttpClient client = new HttpClient()) { var content = new StringContent(plcData, System.Text.Encoding.UTF8, "application/json"); HttpResponseMessage response = await client.PostAsync("http://SACADA_System_API_Url", content); if (response.IsSuccessStatusCode) { Console.WriteLine("数据成功发送到 SACADA 系统"); } else { Console.WriteLine($"发送失败,状态码: {response.StatusCode}"); } } } }

代码分析:

  1. 这里先模拟从 PLC 仪表读取到的数据plcData,实际应用中需要通过相应的 PLC 通讯协议读取,比如 Modbus 等。
  2. 使用HttpClient来发送 HTTP 请求,创建StringContent将数据以 JSON 格式封装。
  3. 调用PostAsync方法向 SACADA 系统的 API 发送数据,并根据返回的状态码判断是否发送成功。

通过以上这些方法,我们就可以利用 C# 在工业自动化场景中实现多种数据源的数据读取以及与其他系统的交互通讯啦!希望这篇文章对你有所帮助。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/2/12 17:10:51

dpwsock.dll文件损坏丢失找不到 打不开程序软件问题 下载方法

在使用电脑系统时经常会出现丢失找不到某些文件的情况,由于很多常用软件都是采用 Microsoft Visual Studio 编写的,所以这类软件的运行需要依赖微软Visual C运行库,比如像 QQ、迅雷、Adobe 软件等等,如果没有安装VC运行库或者安装…

作者头像 李华
网站建设 2026/2/16 16:31:14

YOLO应用于野生动物监测:保护濒危物种的新方式

YOLO应用于野生动物监测:保护濒危物种的新方式 在云南高黎贡山的密林深处,一台布设于树冠层的红外相机正默默记录着夜间的动静。突然,画面中闪过一道斑驳的灰黄身影——那是一只雪豹,全球不足5000只的濒危猛兽。过去,这…

作者头像 李华
网站建设 2026/2/13 9:13:18

YOLO支持哪些主流框架?PyTorch/TensorFlow兼容性分析

YOLO支持哪些主流框架?PyTorch/TensorFlow兼容性分析 在智能视觉系统日益普及的今天,工业质检线上的一台相机每秒要处理上百帧图像,自动驾驶车辆需在毫秒级内识别出前方行人——这些场景背后,都离不开高效的目标检测模型。而提到实…

作者头像 李华
网站建设 2026/2/15 17:24:23

‌API测试必备:RESTful, JSON, XML基础‌

第一章 RESTful架构测试精要 1.1 核心原则验证 无状态性测试:模拟连续请求验证服务端会话独立性(如使用Postman顺序发送订单创建/查询请求) 资源定位验证:检查URI设计是否符合/资源名/ID规范(反例:/getUs…

作者头像 李华
网站建设 2026/2/14 12:21:33

YOLO在文物保护的应用:博物馆人流监控系统

YOLO在文物保护的应用:博物馆人流监控系统 当一件千年文物静静陈列在展柜中,它所面对的不仅是仰慕的目光,也可能是一次无意的触碰、一场突如其来的拥挤。如何在开放参观与安全保护之间找到平衡?这不仅是博物馆管理者日思夜虑的问题…

作者头像 李华
网站建设 2026/2/17 5:20:14

工业质检升级:YOLO助力智能制造转型

工业质检升级:YOLO助力智能制造转型 在现代电子制造工厂的SMT生产线上,每分钟有数百块PCB板高速流转。传统质检依赖工人肉眼在显微镜下逐个检查焊点质量——长时间重复作业带来的视觉疲劳不可避免地导致漏检率上升,而人工成本却逐年攀升。某…

作者头像 李华