一,安装KEPware.Enhanced.OPC.DDE.KEPServer。(PLC数据传送给KEPServer,开发的程序用OPCServer读KEPServer)

设置ip地址后面是指的plc站号,此处必须和plc上站号对应。否则无法接收数据。

打开quick client 查看传值情况

二.C#程序代码

引用opcdaauto.dll

在win7 64位下KepServer = new OPCServer()会出错的问题,

检索COM 类工厂中 CLSID 为 <28e68f9a-8d75-11d1-8dc3-3c302a000000> 的组件时失败,原因是出现以下错误: 80040154

1.一定要到C:\Windows\SysWOW64路径下打开cmd.exe运行命令文件(而不是在运行打开),注册“OPCDAAuto.dll” 输入命令: REGSVR32 OPCDAAuto.dll;即可

2.编译工具目标要选择x86

KepServer.Connect("KEPware.KEPServerEx.V4", "127.0.0.1");  此处ip地址是安装KEPware.Enhanced.OPC.DDE.KEPServer电脑的ip地址.

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;
using System.Threading; namespace SPCTest
{
public partial class Form2 : Form
{ private OPCServer KepServer;
private OPCGroups KepGroups;
private OPCGroup KepGroup; private OPCItems KepItems;
//轴承净重,注脂量,防尘盖压入深度,防尘盖平整度 压入OK/NG
private OPCItem item1, item2, item3; public Form2()
{
InitializeComponent();
} #region OPC Server
private void KepServerLoad()
{
try
{
KepServer = new OPCServer();
KepServer.Connect("KEPware.KEPServerEx.V4", "127.0.0.1");
if (KepServer.ServerState == (int)OPCServerState.OPCRunning)
{
// statusLabelConnectInfo.Text = "OPC Server连接成功";
}
else
{
// statusLabelConnectInfo.Text = "OPC Server连接失败";
return;
}
}
catch (Exception ex)
{ // statusLabelConnectInfo.Text = "OPC Server连接失败," + ex.Message;
return;
} KepGroups = KepServer.OPCGroups;
Thread t1; // 开1个线程用于读取数据
t1 = new Thread(new ThreadStart(KepProcess));
t1.Start(); } public void KepProcess()
{
//KepGroup = KepGroups.Add("Channel.Device.Group");
KepGroup = KepGroups.Add("Channel1.Device1.Group");
KepGroup.UpdateRate = ;
KepGroup.IsActive = true;
KepGroup.IsSubscribed = true;
//当KepGroup中数据发生改变的触发事件
KepGroup.DataChange += new DIOPCGroupEvent_DataChangeEventHandler(KepGroup_DataChange);
KepItems = KepGroup.OPCItems;
item1 = KepItems.AddItem("Channel1.Device1.A01", );
item2 = KepItems.AddItem("Channel1.Device1.A02", );
item3 = KepItems.AddItem("Channel1.Device1.A03", ); } //当数据改变时触发的事件
public delegate void DelegateShowMessage(string str); public void KepGroup_DataChange(int TransactionID, int NumItems, ref Array ClientHandles, ref Array ItemValues, ref Array Qualities, ref Array TimeStamps)
{
string str = "";
DelegateShowMessage show1 = new DelegateShowMessage(ShowMessage);
for (int i = ; i <= NumItems; i++)
{
if (ClientHandles.GetValue(i).Equals())
{
str = "A01:" + ItemValues.GetValue(i).ToString();
} if (ClientHandles.GetValue(i).Equals())
{
str = "A02:" + ItemValues.GetValue(i).ToString();
} if (ClientHandles.GetValue(i).Equals())
{
str = "A03:" + ItemValues.GetValue(i).ToString(); } BeginInvoke(show1, new string[] { str });
} } public void ShowMessage(string str)
{ richTextBox1.AppendText(str+","); } #endregion private void Form2_Load(object sender, EventArgs e)
{
KepServerLoad();
} private void Form2_FormClosing(object sender, FormClosingEventArgs e)
{
KepServer.Disconnect();
} }
}

OPCServer Modbus使用和配置的更多相关文章

  1. IhyerDB modBus采集器配置.

    近期查了一下ihyerDB-modbus采集器的相关配置,由于没有相关的modbus设备,于是今天上午根据网上的线索下载了Modbus Slave(modbus从站仿真器).笔记本也没有串口,于是下载 ...

  2. Java OPC 代码

    这是我项目的代码,还是容易理解的,记录备份一下 1.任务详情 Java实现OPC通信的代码实现 最终实现对西门子的S7-300的PLC变量的值读写 2.实现情况 使用utgard实现通信:Java实现 ...

  3. C# OPC UA服务器 OPC UA网关 三菱 西门子 欧姆龙 Modbus转OPC UA 服务器 可配置的OPC UA服务器网关 HslSharp软件文档

    前言 本文将使用一个基于开源项目HslCommunication创建的OPC UA网关,方便通过配置创建一个OPC UA的网关中心.具体的操作及支持的设备信息项目参照下面: 开源项目HslCommun ...

  4. Modbus转Profinet网关案例 | 三菱FR-A700系列变频器配置方法

    本案例是利用小疆智控Modbus转Profinet网关GW-PN5001把三菱FR-A700变频器接入到西门子1200PLC.实现Profinet转Modbus的通讯协议的互转. 用到设备有:三菱FR ...

  5. 0-20ma 0-5V,0-10V ,0-15V ,0-20V,0-30V模拟量(范围可以定制)多功能采集模块,支持1路继电器输出,2路Di输入,8路Ai输入,可电脑控制,支持485 modbus rtu协议。端口参数可以配置保存,支持定制修改。

    多功能模拟量采集模块MRD-5017具有8 通道模拟量采集(支持0-20mA,0-5V,0-10V混合测量),2路DI,1路继电器输出,1路485接口(支持MODBUS RTU),能实现8路AI(12 ...

  6. 基于STM32和W5500的Modbus TCP通讯

    在最近的一个项目中需要实现Modbus TCP通讯,而选用的硬件平台则是STM32F103和W5500,软件平台则选用IAR EWAR6.4来实现. 1.移植千的准备工作 为了实现Modbus TCP ...

  7. Modbus RTU程序开发解读

    Modbus是很好的串口通信协议,其中RTU协议最为常用,通过Modbus RTU,我们可以轻松读写串口信息. 从官网下载libModbus,观察modbus.h可知关键的结构体为: typedef ...

  8. ANYBUS AB9005-B配置

    连接 使用232时,要将anybus的2.3脚短路,还有就是Rx和Tx脚分别为7.8,要参照我们需要通讯设备的针脚重新制作232电缆. 正常连接时连接灯(COM\LA1\LA2)为绿色闪烁. TCOM ...

  9. linux下编译qt5.6.0静态库——configure配置

    linux下编译qt5.6.0静态库 linux下编译qt5.6.0静态库 configure生成makefile 安装选项 Configure选项 第三方库: 附加选项: QNX/Blackberr ...

随机推荐

  1. aop测试jdk代理机制

    //测试jdk代理机制 @Test public void testProxy(){ final UsbDisk usbDisk = new UsbDisk(); //类加载器,接口,匿名内部类 // ...

  2. Hello World(本博客启程篇)

    Hello World 作为本博客第一篇日志,作为程序员,无论走到哪里,做什么事,必须先输出这句话. 一个想法 从今天3月份到现在一直在学技术,过程中坑的解决.知识的总结以及想法等都写到了" ...

  3. web.config中customErrors与httpErrors的区别

    打开IIS,我们发现会有两个处理错误页的地方,见下图: 进行不同的设置之后,我们发现设定结果会反应在web.config: .NET Error Pages设定被写入system.web/custom ...

  4. iOS 生命周期

       应用生命周期 App启动:当App启动时,首先由not running状态切换到inactive状态,此时调用application:didFinishLaunchingWithOptions: ...

  5. SQL Server2008 with(lock)用法

    参考资料: WITH (NOLOCK) 在sqlserver 中with(nolock)详解

  6. 发布自己的包到Nuget上

    1.首先下载Nuget.exe https://dist.nuget.org/index.html 2.设置环境变量  设置apikey nuget setApiKey <my_api_key& ...

  7. Linux服务器管理: 系统的定时任务crond

    cornd 是定时任务的守护进程  这个服务系统是默认启动的 [root@localhost/]#/etc/init.d/crond strat|restart|stop [root@localhos ...

  8. Junit初级编码(一)第一个Junit测试程序

    序,Junit测试是单元测试的一个框架,提供了很多方法,供我们快速开展单元测试.目前最新版本JAR包为4.12,官网地址为http://junit.org/ 一.第一个Junit测试程序 1 去官网下 ...

  9. 使一个div始终显示在页面中间

    使一个div始终显示在页面中间 假设我们有一个div层:<div id=”myDiv”></div> 首先,我们用css来控制它在水平上始终居中,那么我们的css代码应该是这样 ...

  10. _beginThreadex创建多线程解读【转】

    _beginThreadex创建多线程解读 一.需要的头文件支持 #include <process.h>         // for _beginthread() 需要的设置:Proj ...