More Related Content
Similar to asdfdfasdf (20)
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