SlideShare a Scribd company logo
1 of 4
Download to read offline
第 l5卷 第 2期 
2005年 6月 
湖 南 工 程 学 院 学 报 
Journal of Hunan Institute of Engineering 
Vl01.15.No.2 
June.2005 
基 于 M odbus协 议 的 oPC 服 务 器 的 YF发 与 研 究  
蒋 近 ,毛六平 ,戴瑜兴 
(湖南大学 电气与信息工程学院,湖南 长沙 410082) 
摘  要 :简要介 绍 了 Modbus协 议 和 OPC技 术 ,分析 了 OPC服 务 器的 总体 结构 ,重点讨论 了 Modbus 
协议 的实现 以及 OPC服务 器整体 结构设 计 的 实现 ,最后 总结 了 OPC服务 器 的优 点 ,指 出 了 OPC技 术 
在 .x-,_Ik控 制领域将发挥 重大的作 用. 
关键 词 :Modbus协议 ;OPC技 术 ;OPC服 务 器 
中图分类号 :TP273 .5  文献标识 码 :A  文章编号 :1671—119X(2005)02—0011—04 
O 前 言 
随着计 算机 技术 的进一 步发展 ,计算 机在 自动 
控制 中 日益发挥着 不可 替代 的作 用 .工 业控 制 中的 
各种 仪器 、仪表 和单 片机 系统 等都提 供 了与计算 机 
的通 讯协议 ,从而 为计 算机 控 制 系统 的设计 提供 了 
极大的方便 .但 是 在 OPC出现 以前 ,工业 控 制 领域 
用到大量的现场设 备 ,都存 在着 上 层软 件 和下层 硬 
件的不一致性 ,对 于 不 同的设 备都 要开 发 不 同的驱 
具钉软件包 A的 Pcll具有专用软件的 PLCll具有专用软件的 
堡鱼  I I  竺里  l I  堡鱼竺 
图 (a)  OPC标准 出现 以前 
百  丽  雨而 雨 
OPC标准 
接 u ‘ 
设备 A  ll  设备 B  ll  设备C 
幽 (b)  OPC标准出现之后 
图 l 现场 设备 和上 层 软件 的 连接 
动程序 .这样就造 成 了硬件 生产 商 和软 件开 发商 之 
间产 品的兼容性 .并 且 用户 对于 硬件 设备 和 软件 的 
选用都受 到了很大 的限制 ,只能 局 限于专 用 的硬 件 
设备 商和软件厂商 .为 了满足工作 的实 际需要 ,硬件 
生产商 和软 件开发 商急切 需要 一 种具有 高 效 性 、可 
靠性 、开放性 和可 互操 作性 的 即插 即用 的设 备驱 动 
程序 .在这种情况下 ,OPC标 准应运 而 生 .如 图 1所 
示的 OPC标准 出 现前后 的 现场 设备 和 上层 软件 的 
互连 的 比较 . 
1  Modbus协议介绍 
Modbus协议 主要 应用 于 电力 自动 化和过程 控 
制 中.通过此协议 ,控制 器相 互 之 间、控制器 经 由网 
络 (例如 以太 网)和其它 设备 之 间可 以通 信 .它 已经 
成为一通 用工业标准 .有 了它 ,不 同厂商生产的控制 
设备 可以连成工业 网络 ,进行 集 中监控 .此协议 定义 
了一个控 制器能认 识使 用 的消 息结 构 ,而 不管它 们 
是经过何种 网络进 行通 信 的 .它描 述 了一控 制器 请 
求访 问其它 设备 的过程 ,如果 回应 来 自其它 设备 的 
请求 ,以及 怎样 侦测错误并记 录 .它 制定 了消息域格 
局和 内 容 的 公 共 格 式 .它 一 般 采 用 RS232或 者 
RS485通 信 接 口.Modbus通 信 有 两 种模 式 :  CII 
和 RTU 模式 .一个 Modbus通 信系统 中只能选 择一 
种模 式 ,不允许 两种模式混合 使用 .此协议支持 的从 
设备地址是 0--247(十进 制),单个 设 备的地址 范 围 
是 1--247. 
2 OPC技术介绍 
OPC(OLE for Process Contro1),即把 OLE应用 
于工业控制 领 域 .OLE 原 意是 对象 链 接 和嵌 入 ,随 
着 OLE 2的 发行 ,其 范 围 已远远 超 出 了这 个 概念 . 
现在 的 OLE包 含 了许 多 新 的特 征 ,如 统一 数 据 传 
收稿 日期 :2oo5一O2—26 
作者简介 :蒋 近(1979一),男,硕士研究生,研究方向:现代网络与通信技术. 
维普资讯 http://www.cqvip.com
12  湖南 工程学院学报  2o05年 
输 、结构化存储 和 自动化 ,已经成为独立 于计算机语 
言、操作 系统甚至硬件 平台 的一种 规范 ,是面 向对象 
程序设计概 念的进 一 步推广 .OPC是 过程控 制业 中 
的一种新 的工 业标 准 ,是 与厂 商无 关 的软件数 据交 
换标准接 口和规程 .主 要解 决 过程 控制 系统与 其数 
据 源的数据交换 问题 ,可 在各应 用 之 间提供一 种透 
明的数据 访问 .它 的出现 为基 于 Windows的应 用程 
序 和现场过 程控 制应 用 建 立 了桥 梁 .OPC以 OLE/ 
C0M 彻 M 机制作 为应 用 程序 级 的通 信标 准 ,采 
用客户/月艮务器模式 ,把 开发访问接 口的任务放在 硬 
件生产厂 家或第 三方厂家 ,以 OPC服务器 的形式提 
供 给用 户 ,解决 了软 、硬 件厂 商 的矛盾 ,完成 了系统 
的集成 ,提高 了系统 的开放性和可 互操作性 . 
OPC是 以 COM 技 术 为基 础 的 ,COM (组 件 对 
象模 型)是 由 Microsoft提 出 的组件 标准 ,它不 仅定 
义了组件程序 之间进 行 交互 的标 准 ,并 且也提 供 了 
组件程序运行所 需 的环 境 .它建 立 了一个 软件模 块 
同另一个 软件模块之 间的连接 ,然后 将其 描述出来 . 
D(  M(分布式公共 对象 模式 )是 COM 在 网络 上 的 
一
种扩展 ,这是一个 高度优化 的新协 议 ,它通过把分 
布式对 象间的通 讯变成一 个实体来实现通讯 . 
3 OPC服务器 的总体结构 
0PC客户/月艮务 器 是 “多 对 多 ”的关 系 ,一个 客 
户程序 可以连接多个 OPC服务 器.只要服务器完全 
符合 OPC规范 ,客 户程 序就 可 以连 接 .至 于客 户程 
序 的开发 ,其本质并不 复杂 ,尤其 是采 用 VB等通过 
自动化 接 口访问的工具时 ,开发更 简单 ,只要 了解一 
些 COM 方 面的开发技 术 即可 .其 中一个 OPC客 户 
机可 以连 接 一个 或 多 个 OPC服 务器 ,而 多个 OPC 
客户机也 可 以同时连接 到一个 OPC服务器上 . 
0PC服务器 由服务 器对 象 、组 对象和项 对象组 
成 .服务器对象维 护有关服务器 的信息 ,并且作为组 
对象 的包 容器 .组 对 象维 护 自身 信息 ,并 提供包 容 、 
管理项对 象的机制 ,给客户端提供组 织数据 的方法. 
在一 个 服 务 器 中 ,可 以 有 若 干 组 ,组 可 以 是 全 局 
(public)或局域 (1oca1)的 .这两 种类 型的组 对象服务 
范围不 同 :公有 的组对 象可 以被 多个 客户端共享 ;私 
有 的组对象 只能被建 立 它 的这 一个 客户使 用 .在每 
个组对 象中 ,客户端 可 以定义 一个或多个项 对象 .在 
服务器 中 ,项对象代 表与数据 源的连接.从 自定义接 
口的角度 ,客户端 并 不把 项作 为对 象操 作 ,因此 ,没 
有给项对象定义外部 接 口.组 对象包容项对象 (可 简 
单 理解成项 在组 里面定 义),所有对项对 象的操作都 
是通 过组 对 象 进行 的.每个项 对象 有值 (value)、品 
质 (quality)和时 间标 签 (time stamp).值 是 VARI— 
ANT类型 ,其 品 质 与现 场 总线 的规定 类似 .项 对 象 
并不 是数据 源 ,只是与 数据源的连接 .硬件驱 动程序 
是 由各个厂 商根 据 自身设备 的数据采集方式 和现场 
通信 网络 的通信 协 议不 同而 编写 的,在 本文 中采 用 
的是 Modbus协 议 . 
整个 基 于 Modbus协 议 的 OPC服 务 器 主 要 由 
两 部分组 成 :一个 OPC服务 器 和一 个 硬 件 驱 动 程 
序 .OPC服 务 器 主要 用 来对 数据 进行 管 理 和组 织 , 
和客户端进行通 信 ,硬 件驱 动程序 主要 用来 从现 场 
读取 数 据 ,并 且 将 数 据 传 送 给 OPC 服 务 器 .整 个 
OPC服 务器就相 当于提 供 了一个 标准 的接 口,它 的 
一
个重 要特点就 是 实现 即插 即用 ,即采 用标 准方 式 
配置硬 件和软件 接 口.系统 中 的信 息也 可 以很方便 
地 分散到众 多支持 OPC的软 件应 用 当中 ,如维 护 、 
监 督 、操作 显示 和文档 管理等应用 .这样 的话众 多的 
厂商 之间 的设备 就可 以通用 了. 
OPC服务 器的总体结构如 图 2所示 : 
M 服 务器对 象 
(} 
组 对象  组 对象 
I项对象I  I项对象I  硬 件 
foPc客户}  ●●● 驱 动 ● ● 
I项对象l  l项对象l  程 
(1nproc、Local,Remote) 
图 2 基 于 Modbus协议 的 OPC服务器 的 总体 结构 
3.1  Modbus协议 的实现 
标准 的 Modbus口是使用 一 I  一232C兼容 串 
行 接 口,因 此 是 通 过 串 口和 断路 器 进 行 通 信 的, 
Modbus协议 的实 现关 键 是 需 要 建 立 符 合 Modbus 
协 议的数据 帧.在本程 序 中,采用 的是 常熟 开关 厂的 
可通 信 断路 器 CM1系列组 成 的 Modbus网络.因此 
采用 的是使 用 Modbus RTU 模式 ,无奇偶校验 ,2个 
停止位 .举 例如下 ,假如 需要 读取 断路器 的数据 ,可 
以采 用 Modbus协 议 的 03H 功能 码 即可 .它请 求 包 
文 的数据帧 的格 式为 : 
从站地址 I功能码 I  数据起始地址 
1字节 1  03H 
数据量(单位 :字)  I  冗余校验 
MSB  J  LSB  i  沿  f  MlSB 
维普资讯 http://www.cqvip.com
第 2期  蒋 近等 :基 于 Modbus协议 的 OPC服务器 的开发与研究  13 
整个具体 的流程图如图 3所示 : 
找开串口 
二 二  
设置串口参数 
二=][二  
建立事件 
二]== 
建立 Modbus 
数据帧 
二[  
建立监听串 
口的线程 
三豆二  
发送 数据 
广———1 否 
●是 
l 判断和解析  l 
l 收到的数据  l —
—1 ==_- 
<霹 。 
i至  . 
1关闭线程,关闭 I 
l事件,关闭端 口 l 
图 3 串 12I操 作流 程 图 
具体实现方法 :首先 打开 串口,采用 串 口的重叠 
操作 ,然后设置 串 口的参 数 ,包括 设置 缓 冲 区、设 置 
超 时 、设置波特率等等 ,然后 在内存 中建立一 发送缓 
冲区 ,依次将从站地址 、功 能码 、数据起 始地址 、数据 
量、冗 余 校 验 填 人 缓 冲 区 中,这 样 即 建 立 了 一 帧 
Modbus数据 ,后 开一个 新 的接 收线 程来 监 视 串 口, 
在新开的线程 中设 置好通 信 事件 ,当 串 口收 到数 据 
时 ,就会 马上通知 程序 ,在主线 程 中发送 Modbus数 
据帧给断路器 即可 .如果断路器有应 答 ,它将会发 回 
应答 包文 ,判断通 信是 否 超时 ,是 否 继续 使用 串 口, 
通过 串 口接收到数据后 ,判断并解 析是否符合 Mod— 
bus协议 ,如果 符 合 ,在 内存 中建 立 一 接 收缓 冲 区 , 
存放收到的 Modbus数据 ,通 信完 成后 ,关 闭 串 口释 
放系统资源 . 
3.2 OPC服务器整体结构 的实现 
oPC定义 中只有 服务 器对 象 和 组 对 象是 标 准 
的组件对象 ,而项 对象 是 自己定义 的用 来 和下 层现 
场设备进行通信 的.在 oPC中对项对 象的操 作都是 
通过组对象进行 的 ,项不能独立 于组而存在 ,必须隶 
属于某一个组 ,而组必须 由服务 器对象来产生 的 ,即 
对 0PC 服 务 器 的 数 据 访 问就 是 通 过 Server一> 
Group一>Itern 的方式 . 
服务器 和组对 象的接 口定义 如图 4所示 . 
整个 0PC服 务 器采 用 了 coM 中的 tear—off 
技术 ,tear一0ff接 口是按需 暴露的接 口 ,但是 主类并 
不真 的从 它继 承 .相 反 ,有 一 个 辅 助 类 从 tear—off 
接 口派生 ,每 当客户查询该 接 口时 ,再创建这个辅 助 
类 的实例 .整个 程序 中首先 定 义从 IUnknown接 口 
派生的三个 主类 XXXServer、XXXGroup、XXXItem, 
然后再 分 别定 义 服 务 器对 象 和 组 对 象 的 tear—off 
接 口的派生类 .这里 仅列 举 服务 器对 象 的部分 定义 
代码 
class XXXServer:public IUnkown  //定  骰 
务器对象 
{ 
public: 
XXXServer( LPUNKN0WN, void (  pfn) 
(void)); 
XXXServer(void); 
//IUnknonw接 口成 员 函数 
friend  class  IX  SWServer; //使 
IXXXSvrServer能访 问服 务器对象 中的成员 
private: 
IXXXSvrServer  *m.pISvrServer;  //定 
tear~off接 口指 针 
}; 
cla ̄s IXXXSvrServer:public IOPCServer  瓷 
义 10PCServer的 tear—off接 口 
{ 
public: 
IXXXSvrServer(LPUNKN0、 N); 
IXXXSvrServer(void); 
//IUnkown接 口成员 函数 
//10PCServer接 口成员 函数 
private: 
XXXServer  *m—Parent;  //访 问服务器对 象 
中的成员 
}; 
整个 oPC 服 务 器 的 具 体 实 现 为 :首 先 调 用 
Colnitialize初始 化 CoM 库 ,然后 创建类 厂对 象 ,再 
调用 CoRegisterClassObject注册 类 厂 对 象 ,再 调用 
类厂对象 的 Createlnstance函数 创 建 X'XXServer组 
件对 象 ,由于采 用 tear—off技 术 ,创 建 一个对 象 时 
只实例化 IUnknowrl接 口和经 常 使用 的接 口,其 它 
不常用 的接 口在客 户程 序需 要 使用 时才 创建 .为 实 
现这种技 术 ,需要修 改接 口查 询函数 ,当客户程序查 
询某 一接 口时实例化接 口类 ,并 返 回接 口指针变量 . 
客户程序 再根据该接 口指 针进一步调用 接 口类的成 
员函数 .类 似 的再 创 建 XXXGroup组 件 对 象 ,然 后 
根据 客户端 的需要 再创 建相 应 的组 对 象 的接 口.再 
创建 XXXItem 对 象 ,用 来 和 下 层 现 场 设 备交 换 数 
据 ,这个服务器用 完 之后 ,引用 计 数减到 零 ,准备关 
闭服务器 ,最后 调用 CoRevokeClassObject函数取 消 
维普资讯 http://www.cqvip.com
14  湖南工程学 院学报  2005年 
注册 的类 厂以及 调用 CoUninitialize函数 释放 COM 
库资 源.采用 tear—off技 术开发 的 OPC服务器能够 
10PCCommon 
IO PCCerver 
IConnectionPointContainer 
IO PCltem Properties 
IOPC Bm wseServerAddressSpace 
IOPCServerPublicGroups 
lPersistFile 
4 结束语 
提高性 能 ,使得 服务 器对 象和组 对 象 的接 口只有 在 
需要使 用时才创建 ,节约 了系统 资源. 
IO PCGroupStateM gt 
IOPCPublicGroupStateMGT ̄\gt 
IOPCSynclO 
IOPCAsynclO2 
IOPC ltem M gt 
IConnectionPointContainer 
IOPCAsynlO 
IDataObject 
IEnumO PCItemAttributes 
图 4  OPC服 务器 的服 务器 对 象和 组对 象 的接 口定 义 
本文开发 的 OPC服 务器 在 由常熟 开关 厂 的可 
通信断路器 CMl型 组 成 的 Modbus网络 中和其 它 
厂商开发 的 OPC客户机 已实现互相通信 ,这 样开发 
的 OPC服务器有许 多优 点 :① 硬件厂商 只需 编写一 
套符合 OPC规范 的接 口程序 就 可以满 足 不 同用户 
的要求 ;②软件开发人 员只需 编写一 个符合 OPC规 
范 的接 口程 序就可 以连接 不 同 的硬件设 备 ;③ 最终 
用户 可以根据实 际情 况选 择合 适 的设 备 ,具有 更 大 
的选择性 .OPC基金 会 自 1996年成立 以来 ,成员从 
最初 的 5家发起人 发展 到 现在 的 200多 家 ,其标 准 
为广 大的硬件 厂商 所采 纳 .现在 几 乎所 有 的 国外 知 
名品牌硬件均支持 OPC的连 接方式 ,出现 了一大批 
OPC Server和 应 用 方 案 的 提 供 者 ,如 ABB、In— 
Touch、Wintech、FactorySoft等 .并且 在 2001年底 也 
成立 了 OPC中国基 金会 .总之 ,OPC技术 正处 在不 
断发展 的阶段 ,它 为构 建开 放 的 自动 化 系统提 供 了 
有效 的解决 方案和 工具 ,促 进 了工控 系统 朝着 开放 
的方 向发展 。它将 在工业控制领域 发挥着重 大作用 . 
参 考 文 献 
[1] OPC Foundation.OPC DA 2.05a Specification.http:// 
v,、Ⅳw.opcfoundation.org.2002. 
[2] 潘洪跃 .基于 Modbus协议通信的设计与实现[J].计量 
技 术 ,2002,(4):35—36 
[3] 梁 元 .基于 ^噍 BIE/,I℃P协议的仪表驱动程序开发[J]. 
低 压电器 ,2003,(4):40—43. 
[4] 殷卫兵,等.OPC数 据服务器分析及程序开发.化工 自 
动化及仪表[J].2003,30(5):41—45. 
[5] 张国忠 ,等.电力监控模 块 OPC驱 动程序 的实现[J]. 
武汉 大 学学 报 ,2o02,35(2):54—58. 
[6] 潘爱 民.ODM 原 理与应用 [M].北 京:清 华大学 出版 
社 .2o03. 
Expioiture and Research 0f oPC Server Based on M odbus Protocol 
JIANG Jin,MAO Liu—ping,DAI Yu—xin 
(Institute of Elect.and Information Eng.,Hunan University,Changsha 410082,China) 
Abstract: This paper briefly introduces Mod bus protocol and OPC technology,and the general structure af OPC 
server.The realization of M od bus protocol an d the whole structure of 0PC server are discussed.and the excel— 
lence of OPC server is summarized.Finally ,the role of OPC technelogy in industry contrat field is pointed out. 
Key words:  Mod bus protocol;OPC technolog y;OPC server 
维普资讯 http://www.cqvip.com

More Related Content

Similar to asdfdfasdf

对无线局域网应用前景的探讨
对无线局域网应用前景的探讨对无线局域网应用前景的探讨
对无线局域网应用前景的探讨
beiyingmei11
 
Ce07ncs002006000056
Ce07ncs002006000056Ce07ncs002006000056
Ce07ncs002006000056
jbcinvest
 
云计算 系统实例与研究现状
云计算 系统实例与研究现状云计算 系统实例与研究现状
云计算 系统实例与研究现状
Danny AJ Lin
 
[圣思园][Java SE]Network
[圣思园][Java SE]Network[圣思园][Java SE]Network
[圣思园][Java SE]Network
ArBing Xie
 
Windows Mobile 多媒體應用程式開發
Windows Mobile 多媒體應用程式開發Windows Mobile 多媒體應用程式開發
Windows Mobile 多媒體應用程式開發
Chui-Wen Chiu
 
分布式多媒体系统
分布式多媒体系统分布式多媒体系统
分布式多媒体系统
yingyingda1987
 

Similar to asdfdfasdf (20)

项目1-认识嵌入式系统.pdf
项目1-认识嵌入式系统.pdf项目1-认识嵌入式系统.pdf
项目1-认识嵌入式系统.pdf
 
对无线局域网应用前景的探讨
对无线局域网应用前景的探讨对无线局域网应用前景的探讨
对无线局域网应用前景的探讨
 
Ce07ncs002006000056
Ce07ncs002006000056Ce07ncs002006000056
Ce07ncs002006000056
 
组网实践
组网实践组网实践
组网实践
 
云计算 系统实例与研究现状
云计算 系统实例与研究现状云计算 系统实例与研究现状
云计算 系统实例与研究现状
 
Catv h fc
Catv h fcCatv h fc
Catv h fc
 
Plc3
Plc3Plc3
Plc3
 
教學投影片01_Vb2005
教學投影片01_Vb2005教學投影片01_Vb2005
教學投影片01_Vb2005
 
Tcpip
TcpipTcpip
Tcpip
 
基于Erlang的
基于Erlang的基于Erlang的
基于Erlang的
 
计算机网络:复习
计算机网络:复习计算机网络:复习
计算机网络:复习
 
云计算可信评估方法研究
云计算可信评估方法研究云计算可信评估方法研究
云计算可信评估方法研究
 
System verilog简介
System verilog简介System verilog简介
System verilog简介
 
[圣思园][Java SE]Network
[圣思园][Java SE]Network[圣思园][Java SE]Network
[圣思园][Java SE]Network
 
微机原理与接口技术(第1章)
微机原理与接口技术(第1章)微机原理与接口技术(第1章)
微机原理与接口技术(第1章)
 
系統程式 -- 第 11 章
系統程式 -- 第 11 章系統程式 -- 第 11 章
系統程式 -- 第 11 章
 
Windows Mobile 多媒體應用程式開發
Windows Mobile 多媒體應用程式開發Windows Mobile 多媒體應用程式開發
Windows Mobile 多媒體應用程式開發
 
分布式多媒体系统
分布式多媒体系统分布式多媒体系统
分布式多媒体系统
 
组网与网络管理技术(第四章)
组网与网络管理技术(第四章)组网与网络管理技术(第四章)
组网与网络管理技术(第四章)
 
200808自動檢測與自動化設備聯結之應用技術-宏瀨
200808自動檢測與自動化設備聯結之應用技術-宏瀨200808自動檢測與自動化設備聯結之應用技術-宏瀨
200808自動檢測與自動化設備聯結之應用技術-宏瀨
 

asdfdfasdf

  • 1. 第 l5卷 第 2期  2005年 6月  湖 南 工 程 学 院 学 报  Journal of Hunan Institute of Engineering  Vl01.15.No.2  June.2005  基 于 M odbus协 议 的 oPC 服 务 器 的 YF发 与 研 究   蒋 近 ,毛六平 ,戴瑜兴  (湖南大学 电气与信息工程学院,湖南 长沙 410082)  摘  要 :简要介 绍 了 Modbus协 议 和 OPC技 术 ,分析 了 OPC服 务 器的 总体 结构 ,重点讨论 了 Modbus  协议 的实现 以及 OPC服务 器整体 结构设 计 的 实现 ,最后 总结 了 OPC服务 器 的优 点 ,指 出 了 OPC技 术  在 .x-,_Ik控 制领域将发挥 重大的作 用.  关键 词 :Modbus协议 ;OPC技 术 ;OPC服 务 器  中图分类号 :TP273 .5  文献标识 码 :A  文章编号 :1671—119X(2005)02—0011—04  O 前 言  随着计 算机 技术 的进一 步发展 ,计算 机在 自动  控制 中 日益发挥着 不可 替代 的作 用 .工 业控 制 中的  各种 仪器 、仪表 和单 片机 系统 等都提 供 了与计算 机  的通 讯协议 ,从而 为计 算机 控 制 系统 的设计 提供 了  极大的方便 .但 是 在 OPC出现 以前 ,工业 控 制 领域  用到大量的现场设 备 ,都存 在着 上 层软 件 和下层 硬  件的不一致性 ,对 于 不 同的设 备都 要开 发 不 同的驱  具钉软件包 A的 Pcll具有专用软件的 PLCll具有专用软件的  堡鱼  I I  竺里  l I  堡鱼竺  图 (a)  OPC标准 出现 以前  百  丽  雨而 雨  OPC标准  接 u ‘  设备 A  ll  设备 B  ll  设备C  幽 (b)  OPC标准出现之后  图 l 现场 设备 和上 层 软件 的 连接  动程序 .这样就造 成 了硬件 生产 商 和软 件开 发商 之  间产 品的兼容性 .并 且 用户 对于 硬件 设备 和 软件 的  选用都受 到了很大 的限制 ,只能 局 限于专 用 的硬 件  设备 商和软件厂商 .为 了满足工作 的实 际需要 ,硬件  生产商 和软 件开发 商急切 需要 一 种具有 高 效 性 、可  靠性 、开放性 和可 互操 作性 的 即插 即用 的设 备驱 动  程序 .在这种情况下 ,OPC标 准应运 而 生 .如 图 1所  示的 OPC标准 出 现前后 的 现场 设备 和 上层 软件 的  互连 的 比较 .  1  Modbus协议介绍  Modbus协议 主要 应用 于 电力 自动 化和过程 控  制 中.通过此协议 ,控制 器相 互 之 间、控制器 经 由网  络 (例如 以太 网)和其它 设备 之 间可 以通 信 .它 已经  成为一通 用工业标准 .有 了它 ,不 同厂商生产的控制  设备 可以连成工业 网络 ,进行 集 中监控 .此协议 定义  了一个控 制器能认 识使 用 的消 息结 构 ,而 不管它 们  是经过何种 网络进 行通 信 的 .它描 述 了一控 制器 请  求访 问其它 设备 的过程 ,如果 回应 来 自其它 设备 的  请求 ,以及 怎样 侦测错误并记 录 .它 制定 了消息域格  局和 内 容 的 公 共 格 式 .它 一 般 采 用 RS232或 者  RS485通 信 接 口.Modbus通 信 有 两 种模 式 :  CII  和 RTU 模式 .一个 Modbus通 信系统 中只能选 择一  种模 式 ,不允许 两种模式混合 使用 .此协议支持 的从  设备地址是 0--247(十进 制),单个 设 备的地址 范 围  是 1--247.  2 OPC技术介绍  OPC(OLE for Process Contro1),即把 OLE应用  于工业控制 领 域 .OLE 原 意是 对象 链 接 和嵌 入 ,随  着 OLE 2的 发行 ,其 范 围 已远远 超 出 了这 个 概念 .  现在 的 OLE包 含 了许 多 新 的特 征 ,如 统一 数 据 传  收稿 日期 :2oo5一O2—26  作者简介 :蒋 近(1979一),男,硕士研究生,研究方向:现代网络与通信技术.  维普资讯 http://www.cqvip.com
  • 2. 12  湖南 工程学院学报  2o05年  输 、结构化存储 和 自动化 ,已经成为独立 于计算机语  言、操作 系统甚至硬件 平台 的一种 规范 ,是面 向对象  程序设计概 念的进 一 步推广 .OPC是 过程控 制业 中  的一种新 的工 业标 准 ,是 与厂 商无 关 的软件数 据交  换标准接 口和规程 .主 要解 决 过程 控制 系统与 其数  据 源的数据交换 问题 ,可 在各应 用 之 间提供一 种透  明的数据 访问 .它 的出现 为基 于 Windows的应 用程  序 和现场过 程控 制应 用 建 立 了桥 梁 .OPC以 OLE/  C0M 彻 M 机制作 为应 用 程序 级 的通 信标 准 ,采  用客户/月艮务器模式 ,把 开发访问接 口的任务放在 硬  件生产厂 家或第 三方厂家 ,以 OPC服务器 的形式提  供 给用 户 ,解决 了软 、硬 件厂 商 的矛盾 ,完成 了系统  的集成 ,提高 了系统 的开放性和可 互操作性 .  OPC是 以 COM 技 术 为基 础 的 ,COM (组 件 对  象模 型)是 由 Microsoft提 出 的组件 标准 ,它不 仅定  义了组件程序 之间进 行 交互 的标 准 ,并 且也提 供 了  组件程序运行所 需 的环 境 .它建 立 了一个 软件模 块  同另一个 软件模块之 间的连接 ,然后 将其 描述出来 .  D(  M(分布式公共 对象 模式 )是 COM 在 网络 上 的  一 种扩展 ,这是一个 高度优化 的新协 议 ,它通过把分  布式对 象间的通 讯变成一 个实体来实现通讯 .  3 OPC服务器 的总体结构  0PC客户/月艮务 器 是 “多 对 多 ”的关 系 ,一个 客  户程序 可以连接多个 OPC服务 器.只要服务器完全  符合 OPC规范 ,客 户程 序就 可 以连 接 .至 于客 户程  序 的开发 ,其本质并不 复杂 ,尤其 是采 用 VB等通过  自动化 接 口访问的工具时 ,开发更 简单 ,只要 了解一  些 COM 方 面的开发技 术 即可 .其 中一个 OPC客 户  机可 以连 接 一个 或 多 个 OPC服 务器 ,而 多个 OPC  客户机也 可 以同时连接 到一个 OPC服务器上 .  0PC服务器 由服务 器对 象 、组 对象和项 对象组  成 .服务器对象维 护有关服务器 的信息 ,并且作为组  对象 的包 容器 .组 对 象维 护 自身 信息 ,并 提供包 容 、  管理项对 象的机制 ,给客户端提供组 织数据 的方法.  在一 个 服 务 器 中 ,可 以 有 若 干 组 ,组 可 以 是 全 局  (public)或局域 (1oca1)的 .这两 种类 型的组 对象服务  范围不 同 :公有 的组对 象可 以被 多个 客户端共享 ;私  有 的组对象 只能被建 立 它 的这 一个 客户使 用 .在每  个组对 象中 ,客户端 可 以定义 一个或多个项 对象 .在  服务器 中 ,项对象代 表与数据 源的连接.从 自定义接  口的角度 ,客户端 并 不把 项作 为对 象操 作 ,因此 ,没  有给项对象定义外部 接 口.组 对象包容项对象 (可 简  单 理解成项 在组 里面定 义),所有对项对 象的操作都  是通 过组 对 象 进行 的.每个项 对象 有值 (value)、品  质 (quality)和时 间标 签 (time stamp).值 是 VARI—  ANT类型 ,其 品 质 与现 场 总线 的规定 类似 .项 对 象  并不 是数据 源 ,只是与 数据源的连接 .硬件驱 动程序  是 由各个厂 商根 据 自身设备 的数据采集方式 和现场  通信 网络 的通信 协 议不 同而 编写 的,在 本文 中采 用  的是 Modbus协 议 .  整个 基 于 Modbus协 议 的 OPC服 务 器 主 要 由  两 部分组 成 :一个 OPC服务 器 和一 个 硬 件 驱 动 程  序 .OPC服 务 器 主要 用 来对 数据 进行 管 理 和组 织 ,  和客户端进行通 信 ,硬 件驱 动程序 主要 用来 从现 场  读取 数 据 ,并 且 将 数 据 传 送 给 OPC 服 务 器 .整 个  OPC服 务器就相 当于提 供 了一个 标准 的接 口,它 的  一 个重 要特点就 是 实现 即插 即用 ,即采 用标 准方 式  配置硬 件和软件 接 口.系统 中 的信 息也 可 以很方便  地 分散到众 多支持 OPC的软 件应 用 当中 ,如维 护 、  监 督 、操作 显示 和文档 管理等应用 .这样 的话众 多的  厂商 之间 的设备 就可 以通用 了.  OPC服务 器的总体结构如 图 2所示 :  M 服 务器对 象  (}  组 对象  组 对象  I项对象I  I项对象I  硬 件  foPc客户}  ●●● 驱 动 ● ●  I项对象l  l项对象l  程  (1nproc、Local,Remote)  图 2 基 于 Modbus协议 的 OPC服务器 的 总体 结构  3.1  Modbus协议 的实现  标准 的 Modbus口是使用 一 I  一232C兼容 串  行 接 口,因 此 是 通 过 串 口和 断路 器 进 行 通 信 的,  Modbus协议 的实 现关 键 是 需 要 建 立 符 合 Modbus  协 议的数据 帧.在本程 序 中,采用 的是 常熟 开关 厂的  可通 信 断路 器 CM1系列组 成 的 Modbus网络.因此  采用 的是使 用 Modbus RTU 模式 ,无奇偶校验 ,2个  停止位 .举 例如下 ,假如 需要 读取 断路器 的数据 ,可  以采 用 Modbus协 议 的 03H 功能 码 即可 .它请 求 包  文 的数据帧 的格 式为 :  从站地址 I功能码 I  数据起始地址  1字节 1  03H  数据量(单位 :字)  I  冗余校验  MSB  J  LSB  i  沿  f  MlSB  维普资讯 http://www.cqvip.com
  • 3. 第 2期  蒋 近等 :基 于 Modbus协议 的 OPC服务器 的开发与研究  13  整个具体 的流程图如图 3所示 :  找开串口  二 二   设置串口参数  二=][二   建立事件  二]==  建立 Modbus  数据帧  二[   建立监听串  口的线程  三豆二   发送 数据  广———1 否  ●是  l 判断和解析  l  l 收到的数据  l — —1 ==_-  <霹 。  i至  .  1关闭线程,关闭 I  l事件,关闭端 口 l  图 3 串 12I操 作流 程 图  具体实现方法 :首先 打开 串口,采用 串 口的重叠  操作 ,然后设置 串 口的参 数 ,包括 设置 缓 冲 区、设 置  超 时 、设置波特率等等 ,然后 在内存 中建立一 发送缓  冲区 ,依次将从站地址 、功 能码 、数据起 始地址 、数据  量、冗 余 校 验 填 人 缓 冲 区 中,这 样 即 建 立 了 一 帧  Modbus数据 ,后 开一个 新 的接 收线 程来 监 视 串 口,  在新开的线程 中设 置好通 信 事件 ,当 串 口收 到数 据  时 ,就会 马上通知 程序 ,在主线 程 中发送 Modbus数  据帧给断路器 即可 .如果断路器有应 答 ,它将会发 回  应答 包文 ,判断通 信是 否 超时 ,是 否 继续 使用 串 口,  通过 串 口接收到数据后 ,判断并解 析是否符合 Mod—  bus协议 ,如果 符 合 ,在 内存 中建 立 一 接 收缓 冲 区 ,  存放收到的 Modbus数据 ,通 信完 成后 ,关 闭 串 口释  放系统资源 .  3.2 OPC服务器整体结构 的实现  oPC定义 中只有 服务 器对 象 和 组 对 象是 标 准  的组件对象 ,而项 对象 是 自己定义 的用 来 和下 层现  场设备进行通信 的.在 oPC中对项对 象的操 作都是  通过组对象进行 的 ,项不能独立 于组而存在 ,必须隶  属于某一个组 ,而组必须 由服务 器对象来产生 的 ,即  对 0PC 服 务 器 的 数 据 访 问就 是 通 过 Server一>  Group一>Itern 的方式 .  服务器 和组对 象的接 口定义 如图 4所示 .  整个 0PC服 务 器采 用 了 coM 中的 tear—off  技术 ,tear一0ff接 口是按需 暴露的接 口 ,但是 主类并  不真 的从 它继 承 .相 反 ,有 一 个 辅 助 类 从 tear—off  接 口派生 ,每 当客户查询该 接 口时 ,再创建这个辅 助  类 的实例 .整个 程序 中首先 定 义从 IUnknown接 口  派生的三个 主类 XXXServer、XXXGroup、XXXItem,  然后再 分 别定 义 服 务 器对 象 和 组 对 象 的 tear—off  接 口的派生类 .这里 仅列 举 服务 器对 象 的部分 定义  代码  class XXXServer:public IUnkown  //定  骰  务器对象  {  public:  XXXServer( LPUNKN0WN, void (  pfn)  (void));  XXXServer(void);  //IUnknonw接 口成 员 函数  friend  class  IX  SWServer; //使  IXXXSvrServer能访 问服 务器对象 中的成员  private:  IXXXSvrServer  *m.pISvrServer;  //定  tear~off接 口指 针  };  cla ̄s IXXXSvrServer:public IOPCServer  瓷  义 10PCServer的 tear—off接 口  {  public:  IXXXSvrServer(LPUNKN0、 N);  IXXXSvrServer(void);  //IUnkown接 口成员 函数  //10PCServer接 口成员 函数  private:  XXXServer  *m—Parent;  //访 问服务器对 象  中的成员  };  整个 oPC 服 务 器 的 具 体 实 现 为 :首 先 调 用  Colnitialize初始 化 CoM 库 ,然后 创建类 厂对 象 ,再  调用 CoRegisterClassObject注册 类 厂 对 象 ,再 调用  类厂对象 的 Createlnstance函数 创 建 X'XXServer组  件对 象 ,由于采 用 tear—off技 术 ,创 建 一个对 象 时  只实例化 IUnknowrl接 口和经 常 使用 的接 口,其 它  不常用 的接 口在客 户程 序需 要 使用 时才 创建 .为 实  现这种技 术 ,需要修 改接 口查 询函数 ,当客户程序查  询某 一接 口时实例化接 口类 ,并 返 回接 口指针变量 .  客户程序 再根据该接 口指 针进一步调用 接 口类的成  员函数 .类 似 的再 创 建 XXXGroup组 件 对 象 ,然 后  根据 客户端 的需要 再创 建相 应 的组 对 象 的接 口.再  创建 XXXItem 对 象 ,用 来 和 下 层 现 场 设 备交 换 数  据 ,这个服务器用 完 之后 ,引用 计 数减到 零 ,准备关  闭服务器 ,最后 调用 CoRevokeClassObject函数取 消  维普资讯 http://www.cqvip.com
  • 4. 14  湖南工程学 院学报  2005年  注册 的类 厂以及 调用 CoUninitialize函数 释放 COM  库资 源.采用 tear—off技 术开发 的 OPC服务器能够  10PCCommon  IO PCCerver  IConnectionPointContainer  IO PCltem Properties  IOPC Bm wseServerAddressSpace  IOPCServerPublicGroups  lPersistFile  4 结束语  提高性 能 ,使得 服务 器对 象和组 对 象 的接 口只有 在  需要使 用时才创建 ,节约 了系统 资源.  IO PCGroupStateM gt  IOPCPublicGroupStateMGT ̄\gt  IOPCSynclO  IOPCAsynclO2  IOPC ltem M gt  IConnectionPointContainer  IOPCAsynlO  IDataObject  IEnumO PCItemAttributes  图 4  OPC服 务器 的服 务器 对 象和 组对 象 的接 口定 义  本文开发 的 OPC服 务器 在 由常熟 开关 厂 的可  通信断路器 CMl型 组 成 的 Modbus网络 中和其 它  厂商开发 的 OPC客户机 已实现互相通信 ,这 样开发  的 OPC服务器有许 多优 点 :① 硬件厂商 只需 编写一  套符合 OPC规范 的接 口程序 就 可以满 足 不 同用户  的要求 ;②软件开发人 员只需 编写一 个符合 OPC规  范 的接 口程 序就可 以连接 不 同 的硬件设 备 ;③ 最终  用户 可以根据实 际情 况选 择合 适 的设 备 ,具有 更 大  的选择性 .OPC基金 会 自 1996年成立 以来 ,成员从  最初 的 5家发起人 发展 到 现在 的 200多 家 ,其标 准  为广 大的硬件 厂商 所采 纳 .现在 几 乎所 有 的 国外 知  名品牌硬件均支持 OPC的连 接方式 ,出现 了一大批  OPC Server和 应 用 方 案 的 提 供 者 ,如 ABB、In—  Touch、Wintech、FactorySoft等 .并且 在 2001年底 也  成立 了 OPC中国基 金会 .总之 ,OPC技术 正处 在不  断发展 的阶段 ,它 为构 建开 放 的 自动 化 系统提 供 了  有效 的解决 方案和 工具 ,促 进 了工控 系统 朝着 开放  的方 向发展 。它将 在工业控制领域 发挥着重 大作用 .  参 考 文 献  [1] OPC Foundation.OPC DA 2.05a Specification.http://  v,、Ⅳw.opcfoundation.org.2002.  [2] 潘洪跃 .基于 Modbus协议通信的设计与实现[J].计量  技 术 ,2002,(4):35—36  [3] 梁 元 .基于 ^噍 BIE/,I℃P协议的仪表驱动程序开发[J].  低 压电器 ,2003,(4):40—43.  [4] 殷卫兵,等.OPC数 据服务器分析及程序开发.化工 自  动化及仪表[J].2003,30(5):41—45.  [5] 张国忠 ,等.电力监控模 块 OPC驱 动程序 的实现[J].  武汉 大 学学 报 ,2o02,35(2):54—58.  [6] 潘爱 民.ODM 原 理与应用 [M].北 京:清 华大学 出版  社 .2o03.  Expioiture and Research 0f oPC Server Based on M odbus Protocol  JIANG Jin,MAO Liu—ping,DAI Yu—xin  (Institute of Elect.and Information Eng.,Hunan University,Changsha 410082,China)  Abstract: This paper briefly introduces Mod bus protocol and OPC technology,and the general structure af OPC  server.The realization of M od bus protocol an d the whole structure of 0PC server are discussed.and the excel—  lence of OPC server is summarized.Finally ,the role of OPC technelogy in industry contrat field is pointed out.  Key words:  Mod bus protocol;OPC technolog y;OPC server  维普资讯 http://www.cqvip.com