开发KEP需要用到OPCDAAuto.dll文件并且需要在C盘内注册此文件才能在VS中进行引用

点此下载

1、在C:\Windows\SysWOW64\下新建目录egs29oa,复制所有的dll到这个目录下

2、右键开始,CMD以管理员模式运行(Windows PowerShell (管理员) )

3、键入cd \windows\syswow64

4、在cmd里键入regsvr32 egs29oa/OPCDAAuto.dll,回车,然后提示注册成功

5、在VS中引用

using OPCAutomation;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace KepReadServer
{class Program{OPCServer KepServer;OPCGroups KepGroups;OPCGroup KepGroup;OPCItems KepItems;//列出所有OPC的名称List<string> OpcNames = new List<string>();static void Main(string[] args){new Program().Start();Console.ReadLine();}/// <summary>/// OPC服务器/// 开始抓取OPC数据/// </summary>public void Start(){try{KepServer = new OPCServer();KepServer.Connect("Kepware.KEPServerEX.V6", "192.168.3.122");//判断连接状态if (KepServer.ServerState == (int)OPCServerState.OPCRunning){SendMsg("已连接到-" + KepServer.ServerName);RecurBrowse();}else{SendMsg("状态:" + KepServer.ServerState.ToString());return;}KepGroups = KepServer.OPCGroups;Task.Factory.StartNew(CreateGroup);//this.GatherData = true;}catch (Exception e){throw e;}Console.WriteLine();}/// <summary>/// 列出OPC服务器中所有节点/// </summary>/ <param name="oPCBrowser"></param>public void RecurBrowse(){//展开分支Console.WriteLine("列出OPC服务器中所有节点");var oPCBrowser = KepServer.CreateBrowser();oPCBrowser.ShowBranches();//展开叶子oPCBrowser.ShowLeafs(true);Console.WriteLine("列出OPC服务器中所有节点" + oPCBrowser.Count + "个");foreach (object turn in oPCBrowser){OpcNames.Add(turn.ToString()); //Console.WriteLine(turn.ToString());}}/// <summary>/// 日志/// </summary>/// <param name="m"></param>private void SendMsg(string m){Console.WriteLine(m);//LogHelper.WriteLog(m);}/// <summary>/// 创建组/// </summary>private void CreateGroup(){try{KepGroups = KepServer.OPCGroups;//KepGroup = KepGroups.Add("OpcGroup");KepGroup = KepGroups.Add("ST010");SetGroupProperty();KepGroup.DataChange += new DIOPCGroupEvent_DataChangeEventHandler(KepGroup_DataChange);KepItems = KepGroup.OPCItems;AddOpcItem();}catch (Exception err){SendMsg("枚举本地OPC创建组出现错误:" + err.Message);}}/// <summary>/// 设置组属性/// </summary>private void SetGroupProperty(){KepServer.OPCGroups.DefaultGroupIsActive = true;KepServer.OPCGroups.DefaultGroupDeadband = 0;KepGroup.UpdateRate = 3000;KepGroup.IsActive = true;KepGroup.IsSubscribed = true;}/// <summary>/// 添加需要监听的节点/// </summary>private void AddOpcItem(){//for (int i = 0; i < OpcNames.Count; i++)//{//    if (OpcNames[i].Contains("_Slot"))//    {//        KepItems.AddItem(OpcNames[i], i);//    }//}KepItems.AddItem("Channel1.ST010._Slot", 0);}/// <summary>/// 每当项数据有变化时执行的事件/// </summary>/// <param name="TransactionID">处理ID</param>/// <param name="NumItems">项个数</param>/// <param name="ClientHandles">项客户端句柄</param>/// <param name="ItemValues">TAG值</param>/// <param name="Qualities">品质</param>/// <param name="TimeStamps">时间戳</param>private void KepGroup_DataChange(int TransactionID, int NumItems, ref Array ClientHandles, ref Array ItemValues, ref Array Qualities, ref Array TimeStamps){try{for (int i = 1; i <= NumItems; i++){//string temp = string.Concat(OpcNames[Convert.ToInt32(ClientHandles.GetValue(i))] + "值改变:TAG" + ItemValues.GetValue(i) + "品质" + Qualities.GetValue(i));string temp = string.Concat( "值改变:" + ClientHandles.GetValue(i), "-", ItemValues.GetValue(i), "-", Qualities.GetValue(i), "-", TimeStamps.GetValue(i));SendMsg(temp);}}catch (Exception e){SendMsg("KepGroup_DataChange" + e.Message);}} }
}

参考:

KEPServerEX 6使用_yuell102的博客-CSDN博客_kepserverex6使用手册

客户端C#读取opc数据_凋零的老树的博客-CSDN博客_c#读取opc数据

通过kepserver实现OPC数据读写的C#实例程序_dalong10的博客-CSDN博客_kepserver读取opc

C# 连接KepService进行PLC访问,读写。_biu~zhang~go的博客-CSDN博客

C# 链接Kep进行读取数据相关推荐

  1. python3.5链接SQL2017,读取数据库中的数据

    之前写了一个小程序,使用的数据是从数据库中下载出来的,但是现在想要让它直接链接上数据库中,可以直接从数据库中读取数据,所以研究了一下python和sql之间的链接.具体如下: 使用的库为pyodbc ...

  2. sqlserver 微信 读取_Sql Server使用链接服务器远程取数据_sqlserver

    由于最近开发的一个查询系统,基本是在其它服务器的,所以在本地服务器设计了中间,用来存从远程服务器取数据! 一种方法是通过,OPENDATASOURCE来远程读取数据! SELECT   * FROM  ...

  3. 如何用蓝牙网关跟蓝牙设备建立服务链接并读取数据

    如何用蓝牙网关跟蓝牙设备建立服务链接并读取数据 蓝牙标准服务类型(16bit) 厂商服务类型(128bit) 首先我们先需要知道,蓝牙服务分为两个类型16bit和128bit,16bit服务其实就是蓝 ...

  4. python链接mysql 判断是否成功_python连接mysql数据库并读取数据的实现

    1.安装pymysql包 pip install pymysql 注: MySQLdb只支持python2,pymysql支持python3 2.连接数据 import pymysql import ...

  5. Sql Server使用链接服务器远程取数据!

    由于最近开发的一个查询系统,基本是在其它服务器的,所以在本地服务器设计了中间,用来存从远程服务器取数据!     一种方法是通过,OPENDATASOURCE来远程读取数据! SELECT   * F ...

  6. c 语言如何处理表格文件中的数据库,C#程序从Excel表格中读取数据并进行处理

    今天做了一个Excel表格数据处理的事情,因为数据量表较大(接近7000条)所以处理起来有点麻烦,于是写了一个程序, 先将程序记下以便将来查找. using System; using System. ...

  7. 从网页中读取数据 python_数据分析硬核技能:用 Python 爬取网页

    我作为数据科学家的第一个任务,就是做网页爬取.那时候,我对使用代码从网站上获取数据这项技术完全一无所知,它偏偏又是最有逻辑性并且最容易获得的数据来源.在几次尝试之后,网页爬取对我来说就几乎是种本能行为 ...

  8. Opencv——写入或读取数据到XML或YAML文件

    什么是XML.YAML文件 XML(eXtensible Markup Language)是一种元标记语言.所谓"原标记",就是开发者可以根据自身需要定义的标记,任何满足XML命名 ...

  9. java实现k-means算法(用的鸢尾花iris的数据集,从mysq数据库中读取数据)

    k-means算法又称k-均值算法,是机器学习聚类算法中的一种,是一种基于形心的划分方法,其中每个簇的中心都用簇中所有对象的均值来表示.其思想如下: 输入: k:簇的数目: D:包含n个对象的数据集. ...

最新文章

  1. 【DIY】手把手教你 DIY 最便宜的 arduino 温湿度计,详细图文视频教程
  2. android 退出app代码_uniapp退出APP应用(IOS+安卓)
  3. good food to buy when at the train station
  4. 一文贯通python文件读取
  5. Firefox鼠标手势插件在哪安装 火狐浏览器鼠标手势怎么用
  6. 关于PS插件Nik Collection不兼容cc2021闪退的解决方法
  7. 从 A/Looper: Could not create epoll instance. errno=24 错误浅谈解决各种 bug 的思路
  8. mysql5.7.11-win64无法登录问题解决方案
  9. jquery统计字数的小功能
  10. FusionChartsFree的JSP标签开发
  11. 罗马建立在水渠上:为什么需要优先建设绿色光网?
  12. 笔记本电脑搜不到wifi怎么办?
  13. OD CE找数据总结(上)
  14. 2021年,从事数据分析行业前景如何?还能转行数据分析师吗?(下)
  15. 消失的两个数字(1~N缺两个数)
  16. 大厂Redis day2 自用笔记
  17. 网络基础:套接字编程,UDP和TCP通信程序
  18. 手把手教你搭建明星脸相似度分析系统
  19. Linux安装arm交叉编译器
  20. 项目篇 | 基于STM32单片机NBIOT定位实战项目

热门文章

  1. 工业级小体积路由器_双网口工业4G路由器
  2. win10夜间模式无效替代解决方案
  3. 字节跳动面试题后台_字节跳动后台实习面经
  4. Eclipse背景颜色设置(设置成豆沙绿色保护眼睛,码农保护色)
  5. 论文笔记《Spatially Sparse Precoding in Millimeter Wave MIMO Systems》
  6. 怎么将视频画面左右互换翻转
  7. 多交互智能手套Miiglove
  8. 从真实空间到傅立叶空间
  9. 聊聊CentOS系统调用
  10. vivado 和 modesim 联合仿真快速修改重仿