最近研究OPC相关的知识,在这之前以WtOPCSvr.dll为基础,用C#封装了一个公司内部使用的组件(ScaleOPC.dll),ScaleOPC.dll具休信息请参见博客。为了能够更深的理解OPC服务的相关知识,最近用OPCDAAuto.dll开发了自己的组件(用C#),目的就是,如果有OPC的相关开发工作,能够减少同事的工作量,并且快速、便捷的开发自己的OPC服务商和客户端。
OPC底层技术有很多是关于COM(Component Object Model,组件对象模型)的。在后续的文章中会专门介绍一下COM的相关知识。对于不太了解COM的朋友也不必担心,我们完全可以利用第三方开发包来开发自己的OPC服务端和客户端。但是,对于服务器端的开发,大多第三方开发包是收费的。如果是本着学习的目的,在网上也可以下载的。
下面,我就介绍一下,以OPCDAAuto.dll为基础,用C#封装的OPC客户端开发包(ScaleOPClient.dll):
一、ScaleOPClient.dll介绍
ScaleOPClient.dll是在OPCDAAuto.dll基础上开发,集成了OPCDAAuto.dll绝大部分功能。
1、组件内部集成了对服务器、组别和标签的管理,其中包括参数的管理。但是利用ScaleOPClient.dll开发自己的程序,有些属性和函数是不对外的,以免对核心东西的操作造成程序混乱。
2、对服务器、组别和标签的管理,以及参数的管理,完全是通过窗体进行配制就可以了。减少编程人员编写代码的工作量。
3、对于环境需要的组件(OpcEnum.exe,OpcRcw.Comn.dll,OpcRcw.Da.dll等),ScaleOPClient.dll会自动释放资源,并且进行注册,不需要再配制环境了。但是对于DCOM,还是需要自己手动配制。
4、当开发人员利用ScaleOPClient.dll的窗体配制好客户端之后,可以利用AutomationHandler 和ParameterHandler事件,进行接数据更新操作。
总之,利用ScaleOPClient.dll开发客户端,我们只需要做两件事,第一:调用主空体配制OPC客户端相关信息。第二:利用事件通知开发人员进行数据更新,并传递更新的数据信息。
二、ScaleOPClient.dll的使用
ScaleOPClient.dll提供一个对外的类(ScaleOPClient.Interface),这个类提供了用户需要操作的几个函数,一切以这个类为中心进行功能操作就可以了。
1、我们需要创建一个对外的接口类
ScaleOPClient.Interface _opclient=new ScaleOPClient.Interface ();
2、我们需要调配制函数
_opclient.ConfigClient();
任何OPC客户端的的配制都是通过这个函数,这个函数会调用一个主窗体,开发人员或手动配制就可以了。
3、配制好客户端信息之后,我们需要加载两个接收数据更新的事件。
_opclient.AutomationHandler +=new ScaleOPClient.OPCAutomationHandler(Automation);
_opclient.ParameterHandler +=new ScaleOPClient.OPCParameterInfoHandler (Parameter);
在事件里进行操作
private void Automation(object sender,OPCAutomationArgs e)
{ //-------你的代码-----------// }
private void Parameter(object sender,OPCParameterInfoArgs e)
{ //-------你的代码-----------// }
4、选择事件类型,默认值为:OPCEventType.Automation
_opclient.EventType
这个属性有两种类型,
1)、OPCEventType.Automation :当EventType为该类型的时候,程序会调用AutomationHandler 事件,做为OPC数据更新默认事件,这个事件是采用OPC订阅方式读取服务器的数据信息。
2)、OPCEventType.ParamaterInfo:当EventType为该类型的时候,程序会调用ParameterHandler事件,做为OPC数据更新默认事件,这个事件采用OPC的同步方式读取服务器的数据信息,循环组别依次读取数据,并传递服务器名称、组别名称等信息。
EventType属性的目的是,在数据更新的时候不能同时响应两个事件,如果客户端比较多的时候,这样会阻塞信道。
5、OPC客户端的结构信息
_inter.Servers 属性
用户可以调用这个属性,轮询服务器、组和标签,并且获得相关信息,这个属性可以配合AutomationHandler 事件使用,每个有数据更新了会响应这个事件,在这个事件里去轮询,获得标签值。
三、图片说明
配制信息的主窗体
获得服务器列表
服务器属性
增加组信息
增加标签
配制好之后的主窗体
多服务器
其他功能(右键)菜单
以上的就是关于ScaleOPClient.dll组件的相关内容,基本功能都实现了,主要目的就是快速便捷的开发OPC客户端,但是,还有不完善的地方,希望广大朋友能够和我多多交流,接受批评、指教。
下面是并于OPC的其他资料,有需要的朋友可以下载。
C#扩展OPC客户端OPCDAAuto.dll组件(ScaleOPClient.dll)
http://download.csdn.net/source/1047266
OPC C#封装包 access和SQL数据源配制 V1.0.0.8 资源 下载:
http://download.csdn.net/source/1000802
c#扩展WtOPCSvr.dll组件OPC SERVER服务,ScaleOPC.DLL 博客 文章:
http://blog.csdn.net/lsjwq/archive/2009/02/08/3868536.aspx
关于OPC自动化接口编程(OPCDAAuto.dll)几点注意问题 博客 文章:
http://blog.csdn.net/lsjwq/archive/2009/02/12/3881345.aspx
网名:唯笑志在
QQ:504547114
DotNet 改善程序代码 群:54256083