DDE与OPC技术在工业自动化系统中的应用

        随着工业生产的不断发展以及自动化系统集成度的不断提高,工业自动化系统软件取得了长足的发展与进步。然而,工业系统中设备数量的不断增加和现场信息交互共享能力要求的不断提高,传统的智能设备之间及智能设备与控制系统之间采用专门驱动程序实现信息共享的通讯方式已不能满足工业控制系统的发展需要。因此,为了能够解决工业系统硬件设备的升级改变为软件系统带来的不便,更好的实现不同设备厂家硬件产品的集成互连,增强系统的稳定性与可靠性,工业自动化软件接口的标准化、统一化成为工业控制领域必须面临的一个问题为了能够使得自动化软件的开发具有统一的接口标准,DDE(动态数据交换:dynamic data exchan-ge)、OPC(基于过程控制的链接与嵌入:ole for process control)技术的出现和应用为不同的自动化程序系统之间能够实现简单交互、无缝互连做出了巨大的贡献。 
2、DDE与OPC技术的工作机制
  2.1 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共享来建立网络上不同工作站之间的连接,从而实现站站之间的动态信息共享。
 2.2 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客户程序的开发,OPC标准采用dcom技术实现服务器和客户程序的通讯。OPC的数据访问主要有同步数据访问和异步数据访问两种方式。同步数据访问时,OPC服务器在将按照OPC应用程序要求的数据返回之前,OPC应用程序一直处于等待状态,也就是说,同步方式的数据访问在要求的动作没有完成前不能执行任何OPC应用程序侧的处理。与之相比,异步方式的数据访问在对OPC服务器提出数据访问要求后,立即返回到OPC应用程序侧的主处理程序中,OPC服务器完成数据访问时通知OPC应用程序,OPC应用程序从而得到数据访问结果。当OPC应用程序采用自动化接口访问OPC服务器时,同步和异步数据操作分别由syncread、syncwrite和asyncread、asyncwrite四个OPC组对象的方法函数来实现。
3、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等软件产品也可以很方便的实现互连。其它scada软件与相关DDE、OPC服务器软件通讯的实现方法与此类似,不再赘述。此外,由于DDE、OPC都是标准规范,所以也可以根据需要来实现DDE、OPC之间的接口转换来满足实际需求,例如wonderware公司的OPClink便是实现OPC、DDE接口转换的专用软件。
 4、利用vb开发DDE与OPC客户端
        如上所述,目前许多scada软件都采用了DDE、OPC技术规范作为其软件接口,而scada监控软件在实际工程应用中则扮演了DDE、OPC客户端的角色。另外,wonderware公司的wwclient,siemens公司的simatic net OPC scout和rockwell-ab公司的OPC test Client等测试软件也都是DDE、OPC客户端软件的实例。
        DDE、OPC客户端软件可采用visual c++、visual basic、delphi等编程软件实现,这里主要对如何用visual basic 6.0编写DDE、OPC 客户端实现和DDE、OPC 服务器通讯的方法分别予以介绍。 
5、结束语
        DDE、OPC技术的出现与发展已经在包括工业自动控制在内的诸多领域得到了广泛的应用。DDE作为一种较成熟的数据交换方式已拥有最全面的支持,而OPC技术也越来越受众多自动化软硬件企业的支持与青睐,所以,在将来很长的一段时间里,DDE与OPC将继续在各自的应用领域发挥重要作用,DDE、OPC技术的出现和发展为我们提供了一个方便的数据访问接口,从而使控制系统进一步走向开放,用户系统因此受益。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
解压后,150M随书源代码 第1章 利用单片机开发板实现自动化控制  第1节 设计说明  第2节 模拟量输入程序设计   例1 利用keil c5l实现单片机模拟电压输入   例2 利用汇编语言实现单片机模拟电压输入   例3 利用c++builder实现pc与单片机模拟电压输入   例4 利用visual c++实现pc与单片机模拟电压输入   例5 利用labwindows/cvi实现pc与单片机模拟电压输入  第3节 模拟量输出程序设计   例6 利用keil c51实现单片机模拟电压输出   例7 利用汇编语言实现单片机模拟电压输出   例8 利用c++builder实现pc与单片机模拟电压输出   例9 利用visual c++实现pc与单片机模拟电压输出   例10 利用labwindows/cvi实现pc与单片机模拟电压输出  第4节 数字量输入程序设计   例11 利用keil c51实现单片机数字量输入   例12 利用汇编语言实现单片机数字量输入   例13 利用c++builder实现pc与单片机数字量输入   例14 利用visual c++实现pc与单片机数字量输入 .  例15 利用labwindows/cvi实现pc与单片机数字量输入  第5节 数字量输出程序设计   例16 利用keil c51实现单片机数字量输出   例17 利用汇编语言实现单片机数字量输出   例18 利用c++builder实现pc与单片机数字量输出   例19 利用visual c++实现pc与单片机数字量输出   例20 利用labwindows/cvi实现pc与单片机数字量输出 第2章 利用plc实现自动化控制  第1节 设计说明  第2节 模拟量输入程序设计   例21 三菱fx2n plc模拟电压输入程序   例22 利用c++builder实现pc与fx2n plc模拟电压输入   例23 利用visual c++实现pc与fx2n plc模拟电压输入   例24 利用labwindows/cvi实现pc与fx2n plc模拟电压输入  第3节 模拟量输出程序设计   例25 三菱fx2n plc模拟电压输出程序   例26 利用c++builder实现pc与fx2n plc模拟电压输出   例27 利用visual c++实现pc与fx2n plc模拟电压输出   例28 利用labwindows/cvi实现pc与fx2n plc模拟电压输出  第4节 数字量输入程序设计   例29 利用c++builder实现pc与fx2n plc数字量输入   例30 利用visual c++实现pc与fx2n plc数字量输入   例31 利用labwindows/cvi实现pc与fx2n plc数字量输入  第5节 数字量输出程序设计   例32 利用c++builder实现pc与fx2n plc数字量输出   例33 利用visual c++实现pc与fx2n plc数字量输出   例34 利用labwindows/cvi实现pc与fx2n plc数字量输出  第6节 数字量输入与输出程序设计   例35 西门子s7-200 plc数字量输入与输出程序   例36 利用c++builder实现pc与s7-200 plc数字量输入与输出   例37 利用visual c++实现pc与s7-200 plc数字量输入与输出   例38 利用labwindows/cvi实现pc与s7-200 plc数字量输入与输出 第3章 利用数据采集卡实现自动化控制  第1节 设计说明  第2节 模拟量输入程序设计   例39 利用c++builder实现pc与pci数据采集卡模拟电压输入   例40 利用visual c++实现pc与pci数据采集卡模拟电压输入   例41 利用labwindows/cvi实现pc与pci数据采集卡模拟电压输入  第3节 模拟量输出程序设计   例42 利用c++builder实现pc与pci数据采集卡模拟电压输出   例43 利用visual c++实现pc与pci数据采集卡模拟电压输出   例44 利用labwindows/cvi实现pc与pci数据采集卡模拟电压输出  第4节 数字量输入程序设计   例45 利用c++builder实现pc与pci数据采集卡数字量输入   例46 利用visual c++实现pc与pci数据采集卡数字量输入   例47 利用labwindows/cvi实现pc与pci数据采集卡数字量输入  第5节 数字量输出程序设计   例48 利用c++builder实现pc与pci数据采集卡数字量输出   例49 利用visual c++实现pc与pci数据采集卡数字量输出   例50 利用labwindows/cvi实现pc与pci数据采集卡数字量输出 第4章 利用usb数据采集板实现自动化控制  第1节 设计说明  第2节 模拟量输入程序设计   例51 利用c++builder实现pc与usb数据采集板模拟电压输入   例52 利用visual c++实现pc与ljsb数据采集板模拟电压输入   例53 利用labwindows/cvi实现pc与usb数据采集板模拟电压输入  第3节 模拟量输出程序设计   例54 利用c++builder实现pc与usb数据采集板模拟电压输出   例55 利用visual c++实现pc与usb数据采集板模拟电压输出   例56 利用labwindows/cvi实现pc与usb数据采集板模拟电压输出  第4节 数字量输入程序设计   例57 利用c++builder实现pc与usb数据采集板数字量输入   例58 利用visual c++实现pc与usb数据采集板数字量输入   例59 利用labwindows/cvi实现pc与usb数据采集板数字量输入  第5节 数字量输出程序设计   例60 利用c++builder实现pc与usb数据采集板数字量输出   例61 利用visual c++实现pc与usb数据采集板数字量输出   例62 利用labwindows/cvi实现pc与usb数据采集板数字量输出 第5章 利用can数据采集模块实现数据采集与控制  第1节 设计说明  第2节 模拟量输入程序设计   例63 利用c++builder实现pc与can数据采集模块模拟电压输入   例64 利用visual c++实现pc与can数据采集模块模拟电压输入   例65 利用labwindows/cvi实现pc与can数据采集模块模拟电压输入  第3节 模拟量输出程序设计   例66 利用c++builder实现pc与can数据采集模块模拟电压输出   例67 利用visual c++实现pc与can数据采集模块模拟电压输出   例68 利用labwindows/cvi实现pc与can数据采集模块模拟电压输出  第4节 数字量输入程序设计   例69 利用c++builder实现pc与can数据采集模块数字量输入   例70 利用visual c++实现pc与can数据采集模块数字量输入   例71 利用labwindows/cvi实现pc与can数据采集模块数字量输入  第5节 数字量输出程序设计   例72 利用c++builder实现pc与can数据采集模块数字量输出   例73 利用visual c++实现pc与can数据采集模块数字量输出   例74 利用labwindows/cvi实现pc与can数据采集模块数字量输出 第6章 利用远程i/o模块实现自动化控制  第1节 设计说明  第2节 模拟电压输入程序设计   例75 利用c++builder实现pc与远程i/o模块模拟电压输入   例76 利用visual c++实现pc与远程i/o模块模拟电压输入   例77 利用labwindows/cvi实现pc与远程i/o模块模拟电压输入  第3节 模拟电压输出程序设计   例78 利用c++builder实现pc与远程i/o模块模拟电压输出   例79 利用visual c++实现pc与远程i/o模块模拟电压输出   例80 利用labwindows/cvi实现pc与远程i/o模块模拟电压输出  第4节 数字量输入程序设计   例81 利用c++builder实现pc与远程i/o模块数字量输入   例82 利用visual c++实现pc与远程i/o模块数字量输入   例83 利用labwindows/cvi实现pc与远程i/o模块数字量输入  第5节 数字量输出程序设计   例84 利用c++builder实现pc与远程i/o模块数字量输出   例85 利用visual c++实现pc与远程i/o模块数字量输出   例86 利用labwindows/cvi实现pc与远程i/o模块数字量输出
基于C#的波形显示控件的实现源码 计算机技术的飞速发展使得其在自动化系统应用日益增强。大量监控、图像数据显示软件活跃在自动化工业自动化教学领域。同时,软件系统的日益复杂化使得模块化开发变得尤为重要。本课题所设计的基于C#的波形显示控件就可在微软.NET平台下进行代码功能重用,达到模块化开发和快速开发的目的,使得程序员能够集精力设计软件的具体业务流程,而不必担心波形呈现的问题。 本文先介绍了.NET平台下用户控件开发的基本方法,以及用C#描述的GDI+图形开发技术,然后提出一种基于C#的波形显示控件的设计思路,并对波形坐标值转换、坐标标尺、工具栏、局部放大等具体的设计细节进行详细解析。 本课题设计的波形显示控件实现了同时显示多条数据曲线、局部放大查看、波形显示自动调整最佳坐标范围、动态显示波形等功能。创新之处在于设计了一种方法,使得波形显示控件的坐标轴的起点值和终点值能够以浮点数显示,并自动根据当前波形显示控件的大小,描绘出符合用户视觉的坐标标尺。 波形显示控件实现的功能 (1) 多条波形数据的显示。 该波形显示控件能够同时显示多条波形数据,用户能够控制每条波形数据的显示颜色、线宽、线帽、以及线转折的样式。并且提供了三种波形数据显示的方式:连续数据线、离散点、条形图。 (2) 友好坐标标尺的显示。 该波形显示控件能够根据当前显示数据的坐标范围,友好地显示坐标标尺。例如X轴坐标起始值为34.2,结束坐标值为100.7,则控件不是简单得将坐标10等分并显示并不友好的坐标值,而是通过计算当前波形显示控件的大小,显示40、50……这样的友好的坐标值,并判断是否需要继续在40到50的坐标值之间显示更小分度的坐标值。 (3) 波形显示区域网格的显示。 该波形显示控件可以显示同坐标标尺的坐标线相对应的网格,使得用户能够更直观地观察波形数据。 (4) 波形的局部放大。 该波形显示控件提供了波形局部放大的功能。并根据实际使用和测试,控制了波形放大的精度,以免产生数据溢出的问题。 (5) 坐标自动调整。 该波形显示控件能够根据当前要显示的波形数据的值,自动选择最佳的坐标范围,来直观地在控件的波形显示区域显示完整的波形曲线。 (6) 外观颜色方案的修改。 该波形显示控件能够修改外观样式,诸如背景色、网格颜色、坐标线颜色、坐标值颜色等都可以进行调整,以使控件外观能够符合软件整体风格。 (7) 其他细节。 该波形显示控件还设计了一个工具栏,可以方面地使用网格显示、局部放大、坐标自动调整、恢复默认坐标功能。另外还设计右键菜单,能够显示当前鼠标位置的具体坐标值,以及工具栏按钮的快捷按钮。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值