opc服务器消息通知代码,OPC 服务器 操作示例源码

【实例简介】TestOPC

【实例截图】

8e2c07ce98023e18ab4f594d35810ec9.png

【核心代码】

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using HaiGrang.Package.OpcNetApiChs.DaNet;

using HaiGrang.Package.OpcNetApiChs.Opc;

using HaiGrang.Package.OpcNetApiChs.Da;

namespace TestOPC

{

public class OPC_Interface

{

/// OPC服务器打开状态

bool openStatus = false;

/// OPC服务器地址

string serverIp = "";

/// OPC服务器名称

string serverName = "";

/// OPC连接服务对象

OpcServer _OpcServer;

/// 读取组对象

SyncIOGroup syncIoGroup;

///

/// 构造函数

///

/// OPC服务器地址

/// OPC服务器名称

public OPC_Interface(string _serverIp, string _serverName)

{

serverIp = _serverIp;

serverName = _serverName;

}

///

/// 打开OPC服务器

///

public void OpenServer()

{

int rtc = -1;

try

{

_OpcServer = new OpcServer();

var opcServerType = Type.GetTypeFromProgID(serverName, serverIp);

//rtc = _OpcServer.Logon("Administrator", "1");

//Guid _guid = new Guid("b6eacb30-42d5-11d0-9517-0020afaa4b3c");

rtc = _OpcServer.Connect(serverIp, opcServerType.GUID);

if (HRESULTS.Succeeded(rtc))

{

openStatus = true;

syncIoGroup = new SyncIOGroup(_OpcServer);

}

else

{

openStatus = false;

_OpcServer = null;

}

}

catch(Exception exp)

{

openStatus = false;

_OpcServer = null;

throw exp;

//CommonClass.WriteLog("连接OPC服务器异常:" exp.StackTrace, LogType.Error);

//记录日志

}

}

///

/// 断开与OPC服务器的连接

///

public void Close()

{

try

{

syncIoGroup.Dispose();

_OpcServer.Disconnect();

}

catch (Exception exp)

{

// CommonClass.WriteLog("断开OPC服务器连接异常:" exp.StackTrace, LogType.Error);

//记录日志

}

}

/// 获取OPC服务器打开状态

public bool GetOpenStatus()

{

return openStatus;

}

///

/// 读取OPC服务器内指定item的值

///

/// item全名称

///

public object Read(string ItemName)

{

object retVal = null;

try

{

if (syncIoGroup.Item(ItemName) == null)

{

syncIoGroup.Add(ItemName);

}

ItemDef _OpcItem = syncIoGroup.Item(ItemName);

OPCDATASOURCE theSrc = OPCDATASOURCE.OPC_DS_DEVICE;

OPCItemState theVal = new OPCItemState();

int rtc = syncIoGroup.Read(theSrc, _OpcItem, out theVal);

if (HRESULTS.Succeeded(rtc))

{

if (theVal.DataValue != null)

retVal = theVal.DataValue;

}

}

catch (Exception exp)

{

//记录日志

// CommonClass.WriteLog(string.Format("从OPC服务器读取Item({0})异常:", ItemName) exp.StackTrace, LogType.Error);

}

return retVal;

}

///

/// 向OPC服务器写值

///

/// item全名称

/// 要写入的值

///

public bool Write(string ItemName, object theVal)

{

bool result = false;

try

{

if (syncIoGroup.Item(ItemName) == null)

{

syncIoGroup.Add(ItemName);

}

ItemDef _OpcItem = syncIoGroup.Item(ItemName);

int rtc = syncIoGroup.Write(_OpcItem, theVal);

if (HRESULTS.Succeeded(rtc))

{

result = true;

}

}

catch (Exception exp)

{

//CommonClass.WriteLog(string.Format("从OPC服务器写Item({0})数据异常:", ItemName) exp.StackTrace, LogType.Error);

//记录日志

}

return result;

}

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值