OPCServer Modbus使用和配置
一,安装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使用和配置的更多相关文章
- IhyerDB modBus采集器配置.
近期查了一下ihyerDB-modbus采集器的相关配置,由于没有相关的modbus设备,于是今天上午根据网上的线索下载了Modbus Slave(modbus从站仿真器).笔记本也没有串口,于是下载 ...
- Java OPC 代码
这是我项目的代码,还是容易理解的,记录备份一下 1.任务详情 Java实现OPC通信的代码实现 最终实现对西门子的S7-300的PLC变量的值读写 2.实现情况 使用utgard实现通信:Java实现 ...
- C# OPC UA服务器 OPC UA网关 三菱 西门子 欧姆龙 Modbus转OPC UA 服务器 可配置的OPC UA服务器网关 HslSharp软件文档
前言 本文将使用一个基于开源项目HslCommunication创建的OPC UA网关,方便通过配置创建一个OPC UA的网关中心.具体的操作及支持的设备信息项目参照下面: 开源项目HslCommun ...
- Modbus转Profinet网关案例 | 三菱FR-A700系列变频器配置方法
本案例是利用小疆智控Modbus转Profinet网关GW-PN5001把三菱FR-A700变频器接入到西门子1200PLC.实现Profinet转Modbus的通讯协议的互转. 用到设备有:三菱FR ...
- 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 ...
- 基于STM32和W5500的Modbus TCP通讯
在最近的一个项目中需要实现Modbus TCP通讯,而选用的硬件平台则是STM32F103和W5500,软件平台则选用IAR EWAR6.4来实现. 1.移植千的准备工作 为了实现Modbus TCP ...
- Modbus RTU程序开发解读
Modbus是很好的串口通信协议,其中RTU协议最为常用,通过Modbus RTU,我们可以轻松读写串口信息. 从官网下载libModbus,观察modbus.h可知关键的结构体为: typedef ...
- ANYBUS AB9005-B配置
连接 使用232时,要将anybus的2.3脚短路,还有就是Rx和Tx脚分别为7.8,要参照我们需要通讯设备的针脚重新制作232电缆. 正常连接时连接灯(COM\LA1\LA2)为绿色闪烁. TCOM ...
- linux下编译qt5.6.0静态库——configure配置
linux下编译qt5.6.0静态库 linux下编译qt5.6.0静态库 configure生成makefile 安装选项 Configure选项 第三方库: 附加选项: QNX/Blackberr ...
随机推荐
- margin-bottom在IE6和IE7下失效的解决办法
IE6/7下margin-bottom无效一般出现在容器里某元素设置后在父容器内无效,这个时候只需要在父容器中加入以下两句css,基本上所有的浏览器都兼容了: overflow:hidden;zoom ...
- html中 table的结构 彻底搞清 caption th thead等
正因为有太多 随意 称呼的 教法, 所以 感到很困惑, 如, 很多人把th叫标题. 那人家 caption怎么想, th只是一个跟td一样的角色, 只是对他进行加粗 加黑了而已, 用于某些单元格的内容 ...
- hdu4920 Matrix multiplication 模3矩阵乘法
hdu4920 Matrix multiplication Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 131072/131072 ...
- Unity3D
一.安装配置 1.下载页面:http://unity3d.com/get-unity 分个人版本和专业版,个人版免费,但少了很多功能(主要是渲染相关,具体请看官方说明), 专业版是每月 75$ 或一次 ...
- Collection类相关总结
集合类的框架如下: Collection(接口) List(接口):允许重复. ArrayList Vector LinkedList Se ...
- jquery datagrid加载后仅选定第一行
function onLoadSuccess(data) { var rows = $("#DataGrid").datagrid("getRows"); if ...
- 隐藏NavigationBar时的一个坑
http://www.jianshu.com/p/efb960fed457 - (void)viewWillAppear:(BOOL)animated { [super viewWillAppear: ...
- Object.prototype.toString.call()进行类型判断
为什么类型判断用到Object.prototype.toString.call()进行类型判断,而不用typeof()呢? 然后翻了一下资料: Typeof 在使用 ]));/));));//[obj ...
- Linux学习:用yum安装php,httpd,mysql
见鸟哥的linux私房菜电子版832页.
- jQuery的常用函数扩展
(function ($) { /**************************获得URL的参数************************************/ //参数:URL中的参 ...