OPC客户程序设计

简介: OPC客户程序设计

OPC客户程序设计

这里的客户程序设计主要是指客户程序中OPC接口部分的设计。客户程序本身可以完成很多复杂的数据处理、显示和控制等功能,但需要通过OPC接口部分访问OPC服务器,对现场数据进行存取。

在开发OPC客户程序前,要选择合适的开发环境,并对开发环境进行配置,如在Windows XP操作系统下用Visual C++开发客户程序前,要将OPC基金会提供的SDK包中的几个重要文件加载到应用程序中,包括“opccomn.h”(OPC公共接口定义头文件)、“opccomn_i.c”(OPC公共接口定义)、“opcda.h”(OPCDA规范2.0头文件)、“opcda_i.c”(OPC数据存取接口GUID),“opcda_cats.c”(OPC数据存取组件分类文件),这些主要给出了接口的定义等。“opcaaum”和“OPCEnum.exe”也是COM组件,用于枚举本地机,以及远程机上所有的OPC服务器。

OPC客户程序开发中首先要实现浏览OPC服务器的功能。客户程序需要创建OPC基金会提供的OPC服务器浏览器对象(OPCServerList),再通过该对象的IOPCServerList接口获得OPC服务器名称的列表。在此基础上,再创建OPC组对象、OPC项对象,确定数据访问接口方式并进行编程。

另外在客户程序中OPC接口部分如何与其他功能模块进行数据交换也是需要根据实际情况仔细考虑的。ServerList客户程序可以通过枚举注册表中包含OPC子键的程序名来浏览符合OPC数据存取规范1.0/2.0的服务器,但效率较低。OPC客户程序需要实现与OPC服务器进行交换的功能包括创建服务器对象、组对象,读/写数据等。设计时需要注意COM对象的引用计数问题、内存管理问题和处理错误返回代码问题。

由于一个OPC客户程序可能与多个OPC服务器相连,因此设计时也最好采用多线程,同时与多个OPC服务器程序进行交换以保证较高的通信效率。另外,客户程序中的OPC接口部分如何与其他功能模块进行数据交换也是需要根据实际情况仔细考虑的。


OPC软件工具包

由于开发OPC程序需要熟悉OPC规范和COM技术,而且符合同一OPC规范的服务器程序只是硬件接口部分不同,其余部分类似,因此,许多公司研制开发了OPC服务器的工具包软件。这些工具包将OPC对象和接口的实现封装起来,用户只需要开发与硬件相关的部分,并对界面进行简单设计。这些工具包还往往提供了与常用硬件连接的驱动程序,如与RS-232设备或以太网卡连接的I/O DLL。工具包的使用能提高OPC服务器程序的开发速度和质量。设计者不需过多了解OPC对象的实现细节,但是也必须对工具包本身比较熟悉。另外,由于工具包中某些实现部分是通过DLL的形式封装起来的,因而当用户需要增加某些特定功能时会受到一些限制。


互操作性测试

最初制定OPC规范的目的就是实现工控软件之间的无缝连接,提高控制系统的互操作性和适应性,因此OPC服务器和客户程序都需要进行互操作性测试。目前OPC基金会尚未制定权威的测试程序,也没有提供OPC软件产品的互操作性认证工作。但OPC基金会每年都在美国和欧洲举办两次互操作性测试研讨会,对来自OPC成员公司的服务器和客户程序进行测试。一些自动化厂商提供了测试OPC互操作性的工具。可以在相关网站上下载这些工具,并用它们对自己设计的OPC程序进行测试。另外,在OPC基金会的网站上也有关于互操作性的网页,对加入OPC基金会互操作研讨会的OPC产品,用户可以查找到能够与之连接的OPC服务器或客户程序。

相关文章
|
存储 安全 对象存储
OSS对接-STS认证模式接入参考文档
背景之前项目中用到文件上传的场景中,都是由服务端做转发到OSS,存在着性能损耗。我们在 高德文件直传能力建设 项目中需要探索使用客户端直连OSS的方式来做,了解到OSS提供了STS认证的方式,通过子账号生成的临时AK作为客户端短期访问OSS的凭证,也不同担心AK安全的问题。具体方案见官方文档:STS临时授权访问OSSOSS可以通过阿里云STS(Security Token Service)进行临时
2887 0
OSS对接-STS认证模式接入参考文档
|
存储 开发工具 git
Pycharm git-创建本地仓库\创建分支\合并分支\回溯版本\加入git后文件颜色代表的含义
Pycharm git-创建本地仓库\创建分支\合并分支\回溯版本\加入git后文件颜色代表的含义
919 0
|
10月前
|
人工智能 安全 API
OpenHands:能自主检索外部知识的 AI 编程工具,自动执行命令、网页浏览和生成代码等操作
OpenHands 是一款基于 AI 的编程工具,支持多智能体协作,能够自动生成代码、执行命令、浏览网页等,显著提升开发效率。
1091 26
OpenHands:能自主检索外部知识的 AI 编程工具,自动执行命令、网页浏览和生成代码等操作
|
负载均衡 算法 Linux
在Linux中,如何配置负载均衡器以分配网络流量?
在Linux中,如何配置负载均衡器以分配网络流量?
|
存储 NoSQL MongoDB
使用mongodb数据库实例
【5月更文挑战第9天】MongoDB中的集合类似关系数据库的表,但不强制模式,允许嵌入式文档以实现更灵活的数据布局。安装MongoDB在Ubuntu上涉及添加源列表和更新,CentOS则需创建配置文件。MongoDB支持备份和恢复,以及全文搜索。其灵活模式和动态模式减少了开发中的复杂性,但并非无模式,大部分数据仍具结构化特点。
287 2
|
JavaScript Java 测试技术
基于SpringBoot+Vue的电子印章管理系统的详细设计和实现(源码+lw+部署文档+讲解等)
基于SpringBoot+Vue的电子印章管理系统的详细设计和实现(源码+lw+部署文档+讲解等)
219 0
|
前端开发 JavaScript
响应式UI框架
响应式UI框架
276 0
响应式UI框架
|
Java Linux
java实现两台linux服务器间下载上传传输文件
java实现两台linux服务器间下载上传传输文件
352 0
|
小程序 前端开发 JavaScript
微信小程序实现抽奖大转盘
微信小程序实现抽奖大转盘
1087 0
|
存储 缓存 负载均衡
1w5字详细介绍分布式系统的那些技术方案
天天说分布式分布式,那么我们是否知道什么是分布式,分布式会遇到什么问题,有哪些理论支撑,有哪些经典的应对方案,业界是如何设计并保证分布式系统的高可用呢?