利用DDE技术实现FIX与VB应用程序的数据通讯

   2019-01-15 译轩工业品商城178
核心提示:一、引言  美国 Intellution 公司推出的工控组态软件FIX(Fully-Integrated Control System)是一个功能强大的工业自动化软件产

一、引言

  美国 Intellution 公司推出的工控组态软件FIX(Fully-Integrated Control System)是一个功能强大的工业自动化软件产品。组态软件FIX不仅包含大量图形工具,使用户能够快速简单地开发系统,而且它提供了工业界最为强大的功能,包括实时过程的监视和监督控制、报警和报警管理、历史趋势,统计过程控制,基于用户的安全系统,方便的系统扩展,网络功能等等。VB(Visual Basic)是美国微软公司推出的一个流行且强大的快速开发工具,它以易学易用、编程简洁、程序集成化程度高等优点著称。在开发实际系统时,利用DDE技术把两种工具有效的结合起来,更大发挥它们各自的优势,可以获取令人满意的结果。 

二、DDE技术

  DDE(Dynamic Data Exchange,动态数据交换)是进程间通讯(InterProcess Communication,IPC)的方法。进程间通讯(IPC)包括进程之间和同步事件之间的数据传递。DDE使用共享内存来实现进程之间的数据交换以及使用DDE协议获得传递数据的同步。DDE协议是一组所有的DDE应用程序都必须遵循的规则集。DDE协议可以应用于两类DDE应用程序:第一类是基于消息的DDE,第二类是动态数据交换管理库(DDEML)应用程序(使用动态连接库(DLL),该库随Windows系统一起发行)。

  DDE应用程序可以分为四种类型:客户、服务器、客户/服务器和监视器。DDE会话发生在客户应用程序和服务器应用程序之间。客户应用程序从服务器应用程序请求数据或服务,服务器应用程序响应客户应用程序的数据或服务请求。客户/服务器应用程序既是客户应用程序又是服务器应用程序,它既可发出请求又可提供信息。监视器应用程序用于调试目的。DDE应用程序可拥有多重迸发会话。DDE协议规定会话中的消息必须同步控制,但应用程序可以在不同的会话之间异步切换。

  DDE应用程序采用三层识别系统:应用程序名(Application)、主题名(Topic)和项目名(Item)。应用程序名位于层次结构的顶层,用于指出特定的DDE服务器应用程序名。主题名更深刻地定义了服务器应用程序会话的主题内容,服务器应用程序可支持一个或多个主题名。项目名更进一步确定了会话的详细内容,每个主题名可拥有一个或多个项目名。

  DDE会话的初始化是由客户应用程序发送WM_DDE_INITIATE消息开始,它传递窗口句柄并为会话指定应用程序名和主题名,当然需要有服务器应用程序来响应该消息。一旦没有服务器响应或同时有多个服务器响应,则客户应用程序不得不发送WM_DDE_TERMINATE消息来终止所有不需要的会话。

  建立DDE会话后,客户应用程序和服务器应用程序可通过三种链接方式进行数据交换。三种链接方式为:冷链接(Cold link)、温链接(Warm link)和热链接(Hot link)。冷链接(Cold link):客户应用程序申请数据,服务器应用程序立刻给客户应用程序发送数据,服务器应用程序处于主动地位;温链接(Warm link):服务器应用程序通知客户应用程序数据项发生了变化,但并没有将已变化的值发送给用户应用程序;热链接(Hot link):当数据项发生变化时,服务器应用程序立即把变化后的值发送给客户应用程序,服务器应用程序处于主动地位。

三、 FIX软件的DDE支持

  FIX软件提供了强有力的DDE客户和服务器支持。DDE客户支持允许把来自其他应用程序的信息传递到FIX软件中,用于数据库和画面;服务器支持允许把FIX软件的过程信息传送到其他应用程序中去处理。

a) DDE客户支持

  FIX软件DDE客户支持允许读写DDE地址,利用DDE I/O驱动器和块配置的DDE地址,可以在过程数据库中插入来自其他应用程序、DDE设备驱动程序或另一个SCADA节点的数据信息。

   数据库中的这些数据可以按照以下方式使用:在链中传送数据、对DDE数据进行报警和用DDE数据制作趋势曲线。

   DDE客户支持允许在FIX画面中直接使用DDE,而不使用数据库中的点。即DDE可以直接应用于数据链接、动态特性(前景颜色、边界颜色、X和Y坐标、水平或垂直填充、可见性等)设置、X/Y绘图、棒状图和命令语言。 

  Fix作为客户的DDE地址语法为:= Appliaction|Topic!Item.

例如: 点A1的I/O地址 = VBSrvApp|Form1!Text1, 其中VBSrvApp为VB开发的应用程序名、Form1为主题名和 Text1为项目名。

b) DDE服务器支持

  FIX软件作为服务器允许将它的实时数据或历史数据传送到其他DDE客户应用程序中。使用FIX DDE服务器功能,需要首先启动DDE服务器程序,即FIX软件的安装目录Fix32下的DMDDE.exe。Fix作为服务器提供的DDE编址语法如表1。

表1 DDE编址语法

类型 应用程序名 主题名 项目名 

实时数据 DMDDE DATA 节点:点.域(A_) 

历史数据 DMDDE HTR 笔组名.时间组名.显示节点(Y/N). 显示点(Y/N).显示日期(Y/N).

显示时间(Y/N).采样数 

例如:实时数据语法 =DDMDDE|DATA!NODE1:AI1.A_CV

   历史数据语法 =DDMDDE|HTR!Group1.time1.Y.Y.Y.Y.25


四、 VB的DDE支持

  VB作为Windows环境下非常流行的快速开发工具,与Windows操作系统同出于微软一家,它理所当然地支持Windows下的DDE技术。用VB可以方便快捷地开发出DDE客户或服务器。


a) VB的DDE属性、DDE事件和DDE方法

VB中支持DDE的对象有4类:Form(窗体)、Label(标签)、TextBox(文本框)和PictureBox(图片框)。其中,Form对象扮演(即数据的提供者)Label、TextBox和PictureBox等对象扮演接受端(即数据的接收者)。VB为支持DDE给发送端对象提供了2种DDE属性和4种DDE事件,给接受端对象提供了4种DDE属性、4种DDE事件和4种DDE方法  。

b) 利用VB开发DDE客户/服务器应用程序

  在利用VB开发DDE客户/服务器应用程序中,欲建立DDE链接,完全依赖对象的DDE属性设置。VB分别作为DDE客户和DDE服务器时,DDE属性的不同设置。

 VB作为服务器 VB作为客户 

linkMode链接方式  0 (VBlinkNone)-没有DDE会话,为默认值

1(VBlinkSource)-窗体为发送端  

0 (VBlinkNone)--不建立链接

1(VBlinkAutomatic)-热链接

2(VBlinkManual)-冷链接

3(VBlinkNotify)-温链接  

linkTopic链接主题 应用程序名|窗体名 服务器应用程序名|主题名 

linkItem链接项目 提供DDE控件名作为项目名 服务器提供的项目名 

五、 应用实例

  现以某油田的"油井注氮远程监测系统"开发为例,具体说明FIX与VB之间DDE的实现方法。在该系统开发中,根据参数的不同,FIX和VB分别需要在DDE客户与DDE服务器两种角色之间进行相应的变化。

a)VB作为DDE服务器,FIX作为DDE客户

  有些参数需要VB开发的应用程序VBSrvApp把从远程现场采集的实时数据传输到Fix实现显示或制作趋势图,如膜组的实测温度、膜组的进出口压力、四级过滤器压力、氮气的实测纯度、涡轮增压机的转速和三级实测温度、涡轮增压机的进出口压力等参数。

在VBSrvApp中,把采集到的实时数据赋给TextBox(文本框),并把Fix中个点的DDE地址的项目名设为对应TextBox(文本框)。如膜组的实测温度,在FIX中点名为AI_Membrane_Tem,其DDE地址=VBSrvApp|frmMain!txtMembraneTem(其中,VBSrvApp是应用程序名,frmMain是作为主题的窗体名称,txtMembraneTem是作为项目的文本框名称)。此时,Fix为客户,VB应用程序为服务器。

b) FIX作为DDE服务器, VB作为DDE客户

  有些参数需要从FIX传输到VB开发的应用程序VBSrvAp,再由VBSrvAp以命令的形式下达给远程现场的智能仪表或PLC等远程的现场设备,如膜组的设定温度、氮气的设定纯度、涡轮增压机的进口设定压力等参数。

  在VBSrvApp中,把各个设定参数相应的TextBox(文本框)的linkItem属性设置为对应FIX的点,然后把从FIX的点传输到对应TextBox(文本框)中的内容下达给远程现场设备。如膜组的设定温度,在FIX中点名为AO_Membrane_Tem_Set,在在VBSrvApp中相应的TextBox(文本框)名为txtMembraneTemSet,其linkTopic属性为DMDDE|Data, linkItem属性为FIX: AO_Membrane_Tem_Set.A_CV。此时,VB应用程序为客户,Fix为服务器。 


 
 
更多>同类新闻资讯
推荐图文
推荐新闻资讯
点击排行

新手指南
采购商服务
供应商服务
交易安全
关注我们
手机网站:
新浪微博:
微信关注:

周一至周五 9:00-18:00
(其他时间联系在线客服)

24小时在线客服