c#通过opcautomation获取opc服务器数据

这篇具有很好参考价值的文章主要介绍了c#通过opcautomation获取opc服务器数据。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

本代码是一个基于OPCAutomation的OPC连接程序,通过此程序可以连接OPC服务器并读取OPCItem的值。程序的主要功能包括:

  1. 连接到指定的OPC服务器
  2. 断开连接
  3. 读取指定OPCItem的值
  4. 定时读取OPCItem的值
  5. 暂停/继续读取OPCItem的值

程序使用了OPCAutomation库,在程序中实例化了OPCServer和OPCBrowser,通过OPCServer.Connect方法连接到指定的OPC服务器,并创建一个新的OPCGroup和OPCItem对象。OPCItem.Read方法可以获取到指定OPCItem的值。程序使用了Timer控件来定时读取OPCItem的值。

此程序仅提供基本的OPC连接和读取功能,如需扩展可以根据需要添加相应的代码。

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using OPCAutomation;

namespace OPC连接
{
    public partial class Form1 : Form
    {
     
        private OPCGroup opcGroup;
        private OPCItem opcItem;

        public Form1()
        {
            InitializeComponent();
        }
        private OPCServer opcServer = new OPCServer();
        private OPCBrowser opcBrowser = null;
        private void ConnectOPCServer()
        {
            string ip = textBox1.Text.Trim();
            string serverName = comboBox1.Text.Trim();
            try
            {
                if ((OPCServerState)opcServer.ServerState == OPCServerState.OPCDisconnected)
                {
                    opcServer.Connect(serverName, ip);
                    if ((OPCServerState)opcServer.ServerState == OPCServerState.OPCRunning)
                    {
                        opcBrowser = opcServer.CreateBrowser();
                        
                        MessageBox.Show("连接成功!");
                    }
                }
            }
            catch (Exception ex)
            {
               
                MessageBox.Show(ex.Message);
            }
        }
        private void DisconnectOPCServer()
        {
            try
            {
                if ((OPCServerState)opcServer.ServerState == OPCServerState.OPCRunning)
                {
                    opcServer.Disconnect();
                    opcGroup = null;
                    opcItem = null;
                    opcBrowser = null;
                    MessageBox.Show("断开成功!");
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }

        private void button1_Click(object sender, EventArgs e)
        {
            ConnectOPCServer();
        }
        private void button2_Click(object sender, EventArgs e)
        {
            DisconnectOPCServer();
        }

        private bool _stopReading = false;
        private bool _pauseReading = false;
        private void button3_Click(object sender, EventArgs e)
        {
            try
            {
                string opcItemName = textBox4.Text.Trim(); // 获取要读取的 OpcItem 名称
                opcGroup = opcServer.OPCGroups.Add("NewGroup"); // 创建一个新的 OPCGroup
                opcGroup.IsActive = true; // 激活该组
                opcItem = opcGroup.OPCItems.AddItem(opcItemName, 1); // 添加一个 OPCItem

                object value; // 声明一个用于储存 OPCItem 值的变量
                object quality;
                object timestamp;
                opcItem.Read(1, out value, out quality, out timestamp); // 读取 OPCItem 值
                textBox2.Text = value.ToString();
                timer1.Interval = 500;
                timer1.Enabled = true;
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }

      

        private void timer1_Tick(object sender, EventArgs e)
        {

            if (_stopReading) // 如果标志位为 true,则停止获取数据
            {
                timer1.Enabled = false;
                return;
            }
            if (_pauseReading) // 如果标志位为 true,则暂停获取数据
            {
                return;
            }

            object value; // 声明一个用于储存 OPCItem 值的变量
            object quality;
            object timestamp;
            opcItem.Read(1, out value, out quality, out timestamp); // 读取 OPCItem 值
            textBox2.Text = value.ToString(); 
        }

        private void button4_Click(object sender, EventArgs e)
        {
            _pauseReading = !_pauseReading;
            if (_pauseReading)
            {
                button4.Text = "继续获取数据";
            }
            else
            {
                button4.Text = "暂停获取数据";
            }
        }
            
       


       
    }
}

 实现效果,以连接组态王为例:

c# 读取opc数据,c#,服务器,开发语言

 文章来源地址https://www.toymoban.com/news/detail-811550.html

到了这里,关于c#通过opcautomation获取opc服务器数据的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • OPC通信从入门到精通_2_OPC通信详解和C#客户端编程(OPC基础概念;OPC通信仿真(KepServer作为OPC服务器;使用Modbus Slave和另外软件仿真2个PLC设备);C#程序)

    OPC诞生缘由:OPC诞生之前,软件工程师是不了解硬件和协议的 OPC解决的是软件和硬件之间的问题,让软件工程师无需了解协议及底层硬件,例如串口协议等 OPC起到了桥梁的作用:软件工程师对接OPC,OPC对接硬件 OPC是一种通讯方式,落到实处就是一个软件,就需要开发相应的

    2024年02月05日
    浏览(75)
  • 【SCADA】测试用KingIOServer采集杰控OPC DA服务器数据

    Hello,大家好,我是雷工! 现场做数据采集时经常会遇到需要通过OPC采集数据的情况,本篇测试KingIOServer采集北京杰控组态软件的OPCDA服务器数据。 以下为测试记录过程。 KingIOServer可以作为OPC DA客户端采集OPC Server的数据,支持OPC DA 3.0接口,可以连接并枚举其他OPC DA服务器的

    2024年02月09日
    浏览(145)
  • C语言通过IXMLHTTPRequest以get或post方式发送http请求获取服务器文本或xml数据

    做过网页设计的人应该都知道ajax。 Ajax即Asynchronous Javascript And XML(异步的JavaScript和XML)。使用Ajax的最大优点,就是能在不更新整个页面的前提下维护数据。这使得Web应用程序更为迅捷地回应用户动作,并避免了在网络上发送那些没有改变的信息。 在IE浏览器中,Ajax技术就是

    2024年01月25日
    浏览(62)
  • C# 获取Http请求服务器响应的cookie

    一、C#服务器端响应存储cookie   二、C#发送Http请求,获取响应cookie 使用: CookieContainer  打印结果:   更多:

    2024年02月02日
    浏览(49)
  • 【通过URL获取目标服务器IP和端口号】

    1.1 域名解析 URL中的域名需要先经过域名解析,将其转换为对应的IP地址。域名解析通过DNS(域名系统)进行,将域名映射到IP地址。DNS使用层次化的命名体系,包括根域、顶级域、二级域等。域名解析的过程涉及到递归查询、迭代查询和缓存等机制。 1.2 DNS查询 在进行域名解

    2024年02月16日
    浏览(41)
  • 【Python】OPC UA模拟服务器实现

     在工业自动化和物联网(IoT)领域,OPC UA(开放平台通信统一架构)已经成为一种广泛采用的数据交换标准。它提供了一种安全、可靠且独立于平台的方式来访问实时数据。在本文中,我们将探讨如何使用Python和OPC UA库来创建一个高效的数据服务器,该服务器能够从CSV文件

    2024年04月29日
    浏览(68)
  • OPC UA 服务器的Web访问

         基于Web 的应用非常普及,例如基于web 的SCADA ,物联网 Dashboard 等等,那么基于Web 的应用如何访问OPC UA 服务器呢?本博文讨论这方面的问题。         Web 是我们通常讲的网站,它由浏览器,HTTP 服务器和网页组成的。HTTP服务器通常称为后端,HTTP 网页在浏览器中解析

    2024年04月17日
    浏览(44)
  • 小程序通过ip+port+路径获取服务器中的图片

    首先需要配置IIS。 安装好后,按“win”键,搜索IIS 选择一个ip地址,或手动填写,端口号按需更改 填写别名和物理路径,别名就是后续通过url访问物理路径时ip:port/后面的路径。 例如:http://ip:port/别名/xxx.jpg,别名=文件夹物理路径(D:新建文件夹),对应服务器中的文件路

    2024年02月15日
    浏览(48)
  • Java实现 OPC Ua Server服务器创建

    我们除了使用KEPServerEX6 创建OPC Ua Server 服务器以外,还可以使用 开源项目org.eclipse.milo 创建一个java项目OPC Ua Server的服务。相对于KEPServerEX6 属于收费的商用版本来说,后者更为简单轻便。下面附加代码和文字说明,教你如何创建一个OPC Ua Server的java服务。 可以不是web项目的,

    2024年01月24日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包