碧波液压网 欢迎你,游客。 登录 注册

基于DDE的iFix与Matlab的数据通信

版权信息:站内文章仅供学习与参考,如触及到您的版权信息,请与本站联系。

  1 引言

  美国通用电气公司工业组态软件ifix运行稳定、高效,多年来广泛应用在工业自动化领域。与其它工业组态软件一样,作为人机界面软件,fix 虽然有得天独厚的优势,但是数学和计算功能有诸多不足。美国mathworks公司出品的数学软件matlab是一种基于c语言内核与矩阵运算的工程计算语言,具有强大的数值计算能力和丰富的控制算法。本文用vc++实现fix和matlab的双向数据通信,将matlab的运算功能和算法引入 ifixdde。

  dde(动态数据交换)是windows的一种进程通信机制,它基于windows消息机制,两个应用程序之间通过传递消息进行对话,这两个程序分别被称为服务器和客户,dde服务器维护着其它windows程序可能使用的数据,而dde客户则是从服务器获得这些数据的程序。

  同一个windows应用程序既可以是一个程序的客户,也可以同时是另一个程序的服务器,一个服务器可以将数据传给多个客户,一个客户也可以从多个服务器获取数据,这些都通过dde对话来定义。dde对话需要三个参数:服务名、话题名、项目名。服务名一般同做为服务器的应用程序同名,一个服务可提供多个话题,一个话题可提供多个项目,最后由项目名确定要交换的数据。

  2 用vc++实现ifix和matlab dde通信的基本思路

  ifix软件既实现了dde服务器也实现了dde客户,支持文本格式的剪贴板数据。matlab既实现了dde服务器也实现了dde客户,作为服务器时支持文本格式、元文件图(metafilepict)和xltable格式三种剪贴板格式,作为客户端支持文本格式。本文用vc++程序实现了 dde服务器,将fix软件和matlab都做为vc++程序客户。三者的关系如图1所示:

  

  图1 双向数据传送实现的基本结构

  3 基于 visual c++的dde服务器程序设计

  3.1 基本原理

  dde协议的核心是dde消息,进行通讯的程序之间通过传递消息进行对话。dde服务器程序的主要任务是维护其它windows程序可能使用的数据,实现dde服务器的消息循环,从而处理dde客户的各种请求。

  3.2 程序实现

  采用visual c++实现dde服务器的程序流程图如2所示。

  

  图2 dde服务器程序流程图

  (1)在程序初始化时,调用了ddeinitialize()初始化dde管理库,以参数形式提供回调函数ddecallback(),当程序以消息形式收到待处理事务时,就调用该回调函数,回调函数通常写成switch-case的形式。分支处理不同的事务;然后调用 ddecreatestringhandle() 返回服务名、话题名、项目名的 handle,返回的类型为hsz。

  (2)注册dde服务,以服务名handle为参数调用ddenameservice()。

你没有登陆,无法阅读全文内容

您需要 登录 才可以查看,没有帐号? 立即注册

标签: MATLAB
点赞   收藏

相关文章

发表评论

请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。

用户名: 验证码:

最新评论