最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

使用C#開發(fā)OPC?Server服務器源碼解析

 更新時間:2022年06月28日 10:36:44   作者:訊蜂  
OPC?Server服務器服務器的開發(fā)比較繁瑣,本示例采用C#提供了一種簡單快速實現(xiàn)OPCServer的方法,已經(jīng)在工程項目中應用,本文對C#開發(fā)OPC?Server服務器相關(guān)知識給大家介紹的非常詳細,需要的朋友參考下吧

OPC Server服務器服務器的開發(fā)比較繁瑣,本示例采用C#提供了一種簡單快速實現(xiàn)OPCServer的方法,已經(jīng)在工程項目中應用,希望對大家有用。

1、需要的DLL

首選將需要dll放置您的開發(fā)目錄下,本示例放在工程目錄下的bin\x86\debug目錄下

需要的dll如下圖:

2、添加引用

在VS的項目中添加對FKOPCSrvApi的引用

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

3、OPC Server 接口開發(fā)

(1)注冊O(shè)PC服務器

OPCSvrHelper.RegisterOPCSrv(string path,string UUID,

string OPCServerName)

此函數(shù)為靜態(tài)函數(shù),只注冊一次即可,不用每次啟動軟件都注冊。

參數(shù)含義如下:

l path – 為本exe的路徑

l UUID – OPC服務器的唯一識別碼,可自行設(shè)定

l OPCServerName – OPC服務器的名稱

(2)啟動OPC服務器

InitOPCServer(string UUID)

(3)創(chuàng)建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)

本函數(shù)可以實現(xiàn)對指定組名和Tag的值進行更新

l groupName – OPC組名

l tagName – OPC Tag名

l val – 更新的值

注意:若指定的groupName和tagName不存在,則會觸發(fā)異常

(5)注銷OPC服務器

OPCSvrHelper.UnRegisterOPCSrv(UUID, string OPCServerName)

靜態(tài)函數(shù)

l UUID – OPC服務器的唯一識別碼,可自行設(shè)定

l OPCServerName – OPC服務器的名稱

(6)讀取OPC Tag值

object ReadTag(string groupName,string tagName)

l groupName – OPC組名

l tagName – OPC Tag名

返回:object類型的值

注意:若指定的groupName和tagName不存在,則會觸發(fā)異常

(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 – 信號質(zhì)量

4、注意事項

(1)用VS新建的項目必須為x86,否則在64位計算機會出現(xiàn)異常

(2)在測試時,若您的計算機沒有安裝組態(tài)軟件,可能需要首先安裝OPC國際組態(tài)提供的“OPC Core Components Redistributable”,本安裝包在源碼文件中附帶。

5、測試

可以用組態(tài)軟件直接測試,組態(tài)軟件新建OPC客戶端,搜索OPC服務器。若沒有組態(tài)軟件,可以用我們免費提供的OPC客戶端測試軟件,測試您新建的OPC服務器是否正確。

下圖為OPC客戶端軟件截圖:

OPC客戶端測試軟件使用方法:

(1)在“服務器”列表中找到您的新建的OPC服務器名,這里名稱為“MyOPCServer”;

(2)然后點擊“連接”按鈕;

(3)若成功的后,會在右側(cè)出現(xiàn)OPC組及OPCTag,雙擊Opc Tag,會將Tag添加到右側(cè)的監(jiān)測窗口內(nèi),并且數(shù)據(jù)會實時變化。

(4)可以在此軟件的左下側(cè)寫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);//注冊O(shè)PC服務器
_myOPCSvrHelper = new OPCSvrHelper();
_myOPCSvrHelper.InitOPCServer(UUID); //初始化啟動OPC服務器
//注冊O(shè)PC Tag值更新事件(由客戶端寫入)
_myOPCSvrHelper.TagWritedByClientEvt += new TagWritedByClientDelegate(_myOPCSvrHelper_TagWritedByClientEvt);
//添加OPC Tag
for (int i = 0;i<10;i++)
{
string tagName = string.Format("MyTag{0}",i+1);
_myOPCSvrHelper.CreateTag(opcgroupname, tagName, "", true); //創(chuàng)建OPC Tag
}
opcStart = true;
}
/// <summary>
/// 客戶端寫OPC Tag值更新事件
/// </summary>
/// <param name="TagName">OPC組名.OPCTag名</param>
/// <param name="Value">更新的值</param>
/// <param name="ResultCode">信號質(zhì)量</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);
}
}
}
}

到此這篇關(guān)于使用C#開發(fā)OPC Server服務器源碼示例的文章就介紹到這了,更多相關(guān)C#開發(fā)OPC Server服務器內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C#生成DLL文件的方法小結(jié)

    C#生成DLL文件的方法小結(jié)

    這篇文章主要介紹了C#生成DLL文件的方法小結(jié),需要的朋友可以參考下
    2015-07-07
  • C#實現(xiàn)截取驗證碼圖片

    C#實現(xiàn)截取驗證碼圖片

    這篇文章主要為大家詳細介紹了C#實現(xiàn)截取驗證碼圖片,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-12-12
  • C#中使用?record?的好處和最佳場景

    C#中使用?record?的好處和最佳場景

    這篇文章主要介紹了C#中使用?record?的好處,使用?record?類型的主要好處包括簡潔的語法、自動生成的成員、基于值的相等性、非破壞性復制、解構(gòu)支持、繼承支持和與模式匹配的良好集成,需要的朋友可以參考下
    2024-07-07
  • 二叉樹的遍歷算法(詳細示例分析)

    二叉樹的遍歷算法(詳細示例分析)

    以下代碼是對二叉樹的遍歷算法進行了分析介紹,需要的朋友可以參考下
    2013-05-05
  • C#實現(xiàn)文件壓縮與解壓的方法示例【ZIP格式】

    C#實現(xiàn)文件壓縮與解壓的方法示例【ZIP格式】

    這篇文章主要介紹了C#實現(xiàn)文件壓縮與解壓的方法,結(jié)合具體實例形式分析了C#針對文件進行zip格式壓縮與解壓縮的相關(guān)操作技巧,需要的朋友可以參考下
    2017-06-06
  • C# 7.0 使用下劃線忽略使用的變量的原因分析

    C# 7.0 使用下劃線忽略使用的變量的原因分析

    這篇文章主要介紹了C# 7.0 使用下劃線忽略使用的變量的原因淺析,本文通過實例代碼給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2018-10-10
  • C# DataTable中Compute方法用法集錦(數(shù)值/字符串/運算符/表等操作)

    C# DataTable中Compute方法用法集錦(數(shù)值/字符串/運算符/表等操作)

    這篇文章主要介紹了C# DataTable中Compute方法用法,總結(jié)分析了DataTable中Compute方法常見的數(shù)值運算操作、字符串操作、運算符操作、表運算等相關(guān)技巧,需要的朋友可以參考下
    2016-06-06
  • Unity屏幕雪花另類實現(xiàn)方式示例

    Unity屏幕雪花另類實現(xiàn)方式示例

    這篇文章主要介紹了Unity屏幕雪花另類實現(xiàn)方式示例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-10-10
  • c# 委托詳解

    c# 委托詳解

    本文將通過實例解析對c# 委托進行詳細介紹,具有很好的參考價值,下面跟著小編一起來看下吧
    2017-02-02
  • C#如何給新建的winform程序添加資源文件夾Resources

    C#如何給新建的winform程序添加資源文件夾Resources

    這篇文章主要介紹了C#如何給新建的winform程序添加資源文件夾Resources,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-09-09

最新評論

塔河县| 乌鲁木齐县| 泾阳县| 天祝| 青河县| 耒阳市| 万全县| 务川| 绥芬河市| 稻城县| 松原市| 定结县| 句容市| 德格县| 宁明县| 益阳市| 徐闻县| 雅江县| 阿坝县| 柳江县| 洞头县| 崇阳县| 丰原市| 普兰县| 武汉市| 霸州市| 基隆市| 台前县| 农安县| 息烽县| 缙云县| 通化县| 县级市| 报价| 武夷山市| 万年县| 盖州市| 柘城县| 永年县| 嘉善县| 广汉市|