dde与opc技术的工作机制
dde技术的工作机制
dde是为在同一台计算机或不同计算机上运行的程序提供动态数据交换,最早由microsoft 公司提出的。动态数据交换(dde)技术由于其具有实时性好、网络通信连接实现方便等特点,在控制软件与信息网络集成中得到了广泛应用。
动态数据交换基于windows消息机制,各应用程序间通过传递消息进行对话交换信息。windows dde消息传递采用client/server模式,客户(client)是数据的请求和接受者,而服务器(server)是数据的提供者,两者之间通过请求、应答、传输三个步骤来完成数据的传送。dde协议使用服务(service)、主题(topic)和数据项(item)三级命名来标识dde所传递的数据单元。一般情况下,服务(service)就是应用程序的文件名,主题是对服务器有意义的信息单元。每次dde客户与服务程序之间的对话都是先由客户启动的,所以在每次客户启动之前,dde服务器应当首先投入运行。
当客户程序需要向服务器程序请求数据时,客户程序发送一条wm-dde-iniTIate消息给当前运行的所有windows应用程序,这条消息不但包含了它所需要的服务器名(service)和主题名(topic),而且指明了它所希望的数据类型,收到wm-dde-iniTIate消息的应用程序通过判别服务器名和会话主题决定是否应答,一旦dde服务器响应了这条被传播的消息,dde会话就开始了。
dde的工作方式有冷连接(cool link)、温连接(warm link)和热连接(hot link)等3种。在冷连接方式下,当server中的数据发生变化后不主动通知client,但client可以随时从server读写数据;在温连接方式下,当server中的数据发生变化后马上通知client,client得到通知后将数据取回;在热连接方式下,当server中的数据发生变化后马上通知client,同时将变化的数据直接送给client。
dde的网络形式称为netdde,它包含了dde的全部特征,是动态数据交换(dde)的扩充,可以在跨越网络的计算机之间使用。采用netdde后,两个或更多网络上的应用能够通过dde共享来建立网络上不同工作站之间的连接,从而实现站站之间的动态信息共享。
opc技术的工作机制
在opc技术出现以前,dde技术是绝大多数控制系统都支持和采用的数据交换方式。但是,由于dde是基于windows信息传递而建立的技术,因此,当通信量较大时,就会出现数据刷新速度慢、安全性管理机制差、可靠性能低等现象,从而就有可能致使dde客户程序在较长时间内得不到回应。和dde 技术相比,基于com和dcom技术的opc技术具有数据传送性能高、 安全性管理性能好、开发成本低等特点。
最初阶段的opc规范是由opc基金会的先驱fisher-rosemount、rockwell、opto 22、intelluTIon、intuiTIve technology公司于1996年8月发布的,目前opc基金会成员在全球已超过300多个,其中包括世界上几乎所有主要的控制系统、仪器仪表、过程控制系统生产厂家。
opc以ole/com/dcom技术为基础,是ole(object linking and embedding)for process control的缩写,是微软公司的对象链接和嵌入技术在过程控制方面的应用。与dde一样,opc也采用client/server模式。opc服务器是数据源的提供者,数据源可以是plc、dcs、条形码读取器等控制设备,随控制系统的构成不同,作为数据源的opc服务器既可以是和opc应用程序在同一台计算机上运行的本地opc服务器,也可以是在另外计算机上运行的远程opc服务器。opc客户是数据的使用者,它按照opc接口规范从opc服务器获取所需要的数据。
opc服务器主要包括三部分:服务器(server)、组(group)和数据项(item)。服务器对象保存服务器和服务器作为opc组对象容器的所有信息。opc组对象包括公共组和局部组(私有组)两种,公共组由多个客户共享,局部组只隶属于一个opc客户。一个组可能代表一个特殊设备的数据项,opc 客户可以通过组对象来读写数据,并可以设定opc服务器应该提供给opc client数据的更新速率。opc 数据项是读写数据的最小逻辑单位(在实际应用中,可能是物理设备的寄存器或寄存器的某一位),其数据值以variant形式表示,每个数据项包括值(value)、品质(quality)和时间戳(time stamp)3个变量。在一个组对象中,opc 客户可以加入多个opc数据项。
opc客户与opc服务器的接口有自定义接口(custom interface)和自动化接口(automation interface)两种形式。自定义接口是一组com接口,主要用于采用c++语言的应用程序开发;自动化接口是自动化的ole接口,主要用于采用vb,delphi等基于脚本编程语言的应用程序开发。对于客户端应用程序的开发,采用自定义接口的方式运行效率高,但开发难度较大;采用自动化接口的方式运行效率低,但开发简单。这两种接口与opc服务器的通信方式可用1图所示。
图1 自定义接口和自动化接口与opc服务器通信方式示意图
对于分布式计算机上的opc客户程序的开发,opc标准采用dcom技术实现服务器和客户程序的通讯。
opc的数据访问主要有同步数据访问和异步数据访问两种方式。同步数据访问时,opc服务器在将按照opc应用程序要求的数据返回之前,opc应用程序一直处于等待状态,也就是说,同步方式的数据访问在要求的动作没有完成前不能执行任何opc应用程序侧的处理。与之相比,异步方式的数据访问在对opc服务器提出数据访问要求后,立即返回到opc应用程序侧的主处理程序中,opc服务器完成数据访问时通知opc应用程序,opc应用程序从而得到数据访问结果。当opc应用程序采用自动化接口访问opc服务器时,同步和异步数据操作分别由syncread、syncwrite和asyncread、asyncwrite四个opc组对象的方法函数来实现。
dde与opc技术应用
当前,dde、opc技术在许多世界著名的自动化厂家的i/o通讯服务器、scada等自动化软件中都得到了体现。例如wonderware 公司的daserver和intouch、siemens公司的simatic net和wincc、 rockwell-ab公司的rslinx和rsview32等。其中daserver和rslinx既可作为opc server,又可作为dde server;wincc和rsview32则既可以作为opc client,又可作为dde client。同时,由于各家的软件接口都合乎dde、opc接口规范标准,所以,不同厂家的i/o通讯、scada等软件产品也可以很方便的实现互连。
下面分别以wonderware 公司的intouch与daserver(dassidirect)、intouch与rockwell-ab公司的rslinx进行dde通讯,siemens 公司的wincc 与simatic net 、wincc 与rslinx进行opc通讯的方法为例说明dde、opc技术在工业自动化软件的应用情况。
dassidirect是wonderware 公司开发用于对siemens s7 200/300/400系列plc进行以太网数据访问的服务器软件,支持dde、opc、suitlink、fastdde等通讯方式。当客户程序通讯接口与dassidirect的连接采用dde方式时,dassidirect 的数据访问采用了节点名(node name)、应用程序名(application name,此处为dassidirect)、主题名(topic name)和项目名(item name)的层次结构。而当通讯接口以opc方式与dassidirect连接时,dassidirect 的数据访问则采用了节点名(node name)、服务器名(program name,此处为archestra.dassidirect.1)、组名(group name)、设备组名(device group)、连接名(link name)和项目名(item name)的层次结构。各层次项可在dassidirect软件界面中配置实现。
工程应用时,需要在dassidirect管理界面smc archestra.dassidirect.1目录下根据需要依次添加接口类型(tcp/ip)、接口处理器类型(s7 plc),并进行必要的参数设置,然后还要为device groups添加不同的topic以方便对不同变量的归类管理。intouch标签变量对dassidirect的访问是通过“访问名”的设置来实现的,所以intouch中“访问名”的设置必须和dassidirect软件中的设置一一对应,例如,“访问名”中“应用程序名”应设置为dassidirect,“访问名”中“主题名”的设置应和dassidirect中所添加的topic名称完全一致。此外,intouch标签变量“项目名”的填写也必须遵从dassidirect中item name的定义形式,例如对s7 plc数据块地址word的访问形如db11.w80,对数据块地址dword的访问形如db11.d80,对输入/输出位的访问形式分别为i5.2/q7.5等。