首页后端开发其他后端知识C#开发OPC Server服务器的方法及过程是什么

C#开发OPC Server服务器的方法及过程是什么

时间2024-03-24 06:04:03发布访客分类其他后端知识浏览1006
导读:这篇文章给大家介绍了“C#开发OPC Server服务器的方法及过程是什么”的相关知识,讲解详细,步骤过程清晰,对大家进一步学习和理解“C#开发OPC Server服务器的方法及过程是什么”有一定的帮助,希望大家阅读完这篇文章能有所收获。下...
这篇文章给大家介绍了“C#开发OPC Server服务器的方法及过程是什么”的相关知识,讲解详细,步骤过程清晰,对大家进一步学习和理解“C#开发OPC Server服务器的方法及过程是什么”有一定的帮助,希望大家阅读完这篇文章能有所收获。下面就请大家跟着小编的思路一起来学习一下吧。

       

 
OPC Server服务器服务器的开发比较繁琐,本示例采用C#提供了一种简单快速实现OPCServer的方法,已经在工程项目中应用,希望对大家有用。

1、需要的DLL

首选将需要dll放置您的开发目录下,本示例放在工程目录下的bin\x86\debug目录下

需要的dll如下图:

2、添加引用

在VS的项目中添加对FKOPCSrvApi的引用

然后在源码文件中添加 using FKOPCSrvApi;

3、OPC Server 接口开发

(1)注册OPC服务器

OPCSvrHelper.RegisterOPCSrv(string path,string UUID,

string OPCServerName)

此函数为静态函数,只注册一次即可,不用每次启动软件都注册。

参数含义如下:

l path – 为本exe的路径

l UUID – OPC服务器的唯一识别码,可自行设定

l OPCServerName – OPC服务器的名称

(2)启动OPC服务器

InitOPCServer(string UUID)

(3)创建OPC 组及OPC Tag

CreateTag(string groupName,string tagName,object defaultVal,bool isWriteable)

l groupName – OPC组名

l tagName – OPC Tag名

l defaultVal – OPC Tag的默认值

l isWriteable – 是否可写

(4)更新OPC Tag的值

UpDateTagVal(string groupName,string tagName,object val)

本函数可以实现对指定组名和Tag的值进行更新

l groupName – OPC组名

l tagName – OPC Tag名

l val – 更新的值

注意:若指定的groupName和tagName不存在,则会触发异常

(5)注销OPC服务器

OPCSvrHelper.UnRegisterOPCSrv(UUID, string OPCServerName)

静态函数

l UUID – OPC服务器的唯一识别码,可自行设定

l OPCServerName – OPC服务器的名称

(6)读取OPC Tag值

object ReadTag(string groupName,string tagName)

l groupName – OPC组名

l tagName – OPC Tag名

返回:object类型的值

注意:若指定的groupName和tagName不存在,则会触发异常

(7)删除OPC Tag

RemvoeTag(string groupName,string tagName)

l groupName – OPC组名

l tagName – OPC Tag名

(8)客户端写Tag值更新事件

事件名:TagWritedByClientEvt

事件原型:

delegate void TagWritedByClientDelegate(string TagName, Object Value, UInt32 ResultCode)

TagName -- OPC组名.OPCTag名

Value – 更新的值

ResultCode – 信号质量

4、注意事项

(1)用VS新建的项目必须为x86,否则在64位计算机会出现异常

(2)在测试时,若您的计算机没有安装组态软件,可能需要首先安装OPC国际组态提供的“OPC Core Components Redistributable”,本安装包在源码文件中附带。

5、测试

可以用组态软件直接测试,组态软件新建OPC客户端,搜索OPC服务器。若没有组态软件,可以用我们免费提供的OPC客户端测试软件,测试您新建的OPC服务器是否正确。

下图为OPC客户端软件截图:

OPC客户端测试软件使用方法:

(1)在“服务器”列表中找到您的新建的OPC服务器名,这里名称为“MyOPCServer”;

(2)然后点击“连接”按钮;

(3)若成功的后,会在右侧出现OPC组及OPCTag,双击Opc Tag,会将Tag添加到右侧的监测窗口内,并且数据会实时变化。

(4)可以在此软件的左下侧写OPCTag的值进行测试

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 FKOPCSrvApi;


namespace OPCSrvTest
{

public partial class Form1 : Form
{
    
OPCSvrHelper _myOPCSvrHelper = null;
    
Timer timer = new Timer();
    
bool opcStart = false;
    
string opcgroupname = "MyOPCSrvGroup";
     //OPC组名
string opcServerName = "MyOPCServer2";
     //OPC服务器名称
string UUID = "F61323FD-77CE-4AB6-930F-E3E6DFF8BBED";
 //OPC服务器的唯一ID
public Form1()
{
    
InitializeComponent();
    
timer.Interval = 2000;
    
timer.Tick += new EventHandler(timer_Tick);
    
timer.Start();

}
    

/// summary>
    
/// 注册并启动OPC服务器,然后添加OPC组及OPC项
/// /summary>
    
/// param name="sender">
    /param>
    
/// param name="e">
    /param>

private void button_StartOPCSrv_Click(object sender, EventArgs e)
{
    
string path=System.Windows.Forms.Application.ExecutablePath;
     //exe的路径
OPCSvrHelper.RegisterOPCSrv(path, UUID, opcServerName);
    //注册OPC服务器
_myOPCSvrHelper = new OPCSvrHelper();
    
_myOPCSvrHelper.InitOPCServer(UUID);
     //初始化启动OPC服务器
//注册OPC Tag值更新事件(由客户端写入)
_myOPCSvrHelper.TagWritedByClientEvt += new TagWritedByClientDelegate(_myOPCSvrHelper_TagWritedByClientEvt);
    
//添加OPC Tag
for (int i = 0;
    i10;
i++)
{

string tagName = string.Format("MyTag{
0}
    ",i+1);
    
_myOPCSvrHelper.CreateTag(opcgroupname, tagName, "", true);
 //创建OPC Tag
}
    
opcStart = true;

}
    
/// summary>
    
/// 客户端写OPC Tag值更新事件
/// /summary>
    
/// param name="TagName">
    OPC组名.OPCTag名/param>
    
/// param name="Value">
    更新的值/param>
    
/// param name="ResultCode">
    信号质量/param>

void _myOPCSvrHelper_TagWritedByClientEvt(string TagName, object Value, uint ResultCode)
{
    
//throw new NotImplementedException();

this.Invoke((EventHandler)(delegate
{

label_Info.Text = string.Format("{
0}
值更新为{
1}
 {
2}
    ", TagName, Value,DateTime.Now);

}
    ));

}
    

/// summary>
    
/// 定时更新Tag
/// /summary>
    
/// param name="sender">
    /param>
    
/// param name="e">
    /param>

void timer_Tick(object sender, EventArgs e)
{
    
//throw new NotImplementedException();
    
if (opcStart &
    &
 _myOPCSvrHelper != null)
{
    
for (int i = 0;
     i  10;
 i++)
{

string tagName = string.Format("MyTag{
0}
    ", i + 1);
    
Random rd = new Random();
    
object val = rd.Next(100);
    
_myOPCSvrHelper.UpDateTagVal(opcgroupname, tagName, val);
 //更新OPC Tag
}

}

}
    
/// summary>
    
/// 注销OPC服务器
/// /summary>
    
/// param name="sender">
    /param>
    
/// param name="e">
    /param>

private void button_RemoveOPCSrv_Click(object sender, EventArgs e)
{

if(_myOPCSvrHelper != null)
{
    
OPCSvrHelper.UnRegisterOPCSrv(UUID, opcServerName);

}

}
    
/// summary>
    
/// 读取Tag的值
/// /summary>
    
/// param name="sender">
    /param>
    
/// param name="e">
    /param>

private void button_Read_Click(object sender, EventArgs e)
{

try
{

if(_myOPCSvrHelper != null)
{
    
object val = _myOPCSvrHelper.ReadTag(textBox_OPCGroupName.Text,textBox_TagName.Text);
    
MessageBox.Show(val.ToString());

}

}

catch (System.Exception err)
{
    
MessageBox.Show(err.Message);

}

}

}

}
    



感谢各位的阅读,以上就是“C#开发OPC Server服务器的方法及过程是什么”的内容了,通过以上内容的阐述,相信大家对C#开发OPC Server服务器的方法及过程是什么已经有了进一步的了解,如果想要了解更多相关的内容,欢迎关注网络,网络将为大家推送更多相关知识点的文章。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: C#开发OPC Server服务器的方法及过程是什么
本文地址: https://pptw.com/jishu/651867.html
php的time()返回时间戳怎么用,值如何转为年月日 PHP可以执行系统命令吗,这些函数可以实现

游客 回复需填写必要信息