C# 实现组态王OPC数据读取的简易方法

版权申诉
5星 · 超过95%的资源 3 下载量 122 浏览量 更新于2024-11-11 2 收藏 888KB RAR 举报
资源摘要信息:"本节内容主要讲解如何在C#环境中读取亚控组态王(KingView)的OPC(OLE for Process Control)数据。OPC是一种工业自动化领域中广泛使用的协议,用于从各种工业设备和控制系统中读取数据。本节将提供一个直接运行的exe文件,通过这个文件,开发者可以快速实现与组态王系统的数据交互。" 知识点详细说明: 1. C# 编程语言 C#(读作“看”)是微软公司开发的一种面向对象的、运行在.NET框架上的高级编程语言。它广泛用于开发Windows平台应用程序、Web服务、Web应用、游戏开发等。C#具备类型安全、垃圾回收、版本控制等现代编程语言的特性。 2. 组态王(KingView)软件 组态王是亚控科技推出的一款监控组态软件,它集成了实时数据库、历史数据库和报警系统,广泛应用于工业自动化领域,用于构建人机界面(HMI)、监控和控制系统。组态王支持与现场设备和控制器的通信,能够读取和显示现场数据,并提供数据记录和报警处理功能。 3. OPC技术 OPC全称为OLE for Process Control,是一系列接口、服务和协议的总称,用于实现过程控制软件和工业硬件之间的通信。OPC规范提供了一种标准的数据访问方式,使得不同厂商的硬件设备和控制系统能够通过统一的接口与软件进行通信。OPC分为OPC DA(数据访问)、OPC HDA(历史数据访问)、OPC UA(统一架构)等多种类型。 4. OPC数据访问 OPC数据访问(OPC DA)是OPC规范中最早实现的一个部分,用于实时读写过程控制设备的数据。在本节资源中,将介绍如何利用C#读取组态王提供的OPC DA服务器中的数据,实现数据的实时监控和记录。 5. exe文件运行 exe文件是Windows操作系统下可执行文件的扩展名,通常由编译器或打包工具生成。运行exe文件即可执行相应的应用程序。在本节内容中,提供的exe文件将包含一个完整的示例程序,用于演示如何在C#环境下与组态王的OPC服务器进行交互。 6. OPC客户端实现 OPC客户端是指实现OPC规范接口的软件组件,它负责向OPC服务器发送数据读写请求,并处理返回的数据。在C#中实现OPC客户端需要使用支持OPC通信的库或API,比如OPC Foundation提供的*** API等。通过这些API,开发者能够连接到OPC服务器,订阅、读取和写入数据。 总结来说,本节资源旨在教授开发者如何在C#环境下读取组态王软件的OPC数据。通过使用专门的exe文件,可以轻松地实现与组态王OPC服务器的交互,进而开发出各种工业自动化应用。了解和掌握这些知识点,对于进行工业自动化软件开发的程序员来说是非常重要的。
1471 浏览量
下面这段代码是网上抄来的,相信有人也找到过这段,实际上真正运行的时候就会发现其实是有问题的,我把它修改了下,能正常读写了。 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.Runtime.InteropServices; namespace kingview { public partial class Form1 : Form { /// /// 与组态王建立连接 /// 每次应用程序启动时,必须用该函数与组态王建立连接 /// /// node为节点(IP),如果是本机,其值为空 /// 返回错误码,见附录。 [DllImport("kingvewcliend.dll")] public static extern int StartCliend(string node); /// /// 得到组态王SDK中列出的项目(包括变量及其域)总数 /// [DllImport("kingvewcliend.dll")] public static extern int ReadItemNo(); /// /// 得到某个项目的名称 /// 将返回组态王的项目的名称 /// 为用户写入的其要取的变量的索引号,其为ReadItemNo返回的范围内的某个数 /// 返回错误码,见附录 /// [DllImport("kingvewcliend.dll")] //[SecurityPermission(SecurityAction.Assert, Unrestricted = true)] public static extern int GetItemNames(StringBuilder sName, int wItemId); /// /// 将某个项目添加到采集列中 /// 是要加入采集的项目名 /// TagId项目采集的标识号 /// 项目的数据类型 /// 返回错误码,见附录 /// [DllImport("kingvewcliend.dll")] public static extern int AddTag(string sRegName, ref int TagId, ref int TagDataType); /// /// 向某个项目中有应用程序向组态王方向写数据 /// /// 为要采集项目的标识号 /// bVal、lVal、fVal、sVal为设定的数值,用户将根据变量的类型设定数值 /// bVal、lVal、fVal、sVal为设定的数值,用户将根据变量的类型设定数值 /// b