基于DDE协议的Modbus Plus与Ethernet数据交换
软件上,使用wonderware公司提供的io server组件中的modicon modbus
plus(以下简称mbplus)来连接mb+并提供dde的方式来访问数据的接口。此工具运行后如图2所示。
图2 mbplus连接
图3 topic配置
要使用此工具,还需要对它进行一些配置。从configure菜单中选择adapter card setting,设置需要连接的适配器,因为我们只安装了一个mb+的适配器,所以使用默认配置。之后就可以开始配置dde服务了。我们需要给每一个需要访问的mb+网上的设备按照dde协议定义一个topic。选择configure菜单下的topic definition,进行topic的配置,如图3。
这里的topic name 就是之后访问dde服务的topic需要使用的名称,每个topic需要定义不同的名称,本系统共连接5个mb+网上的plc,分别定义为plc1、plc2、plc3、plc4、plc5。slave path 处定义的是不同设备的节点地址。配置好以后就可以使用dde协议来访问mb+网上的数据了。
3.2 编程实现
在完成了mb+的dde数据通信安装与设置后,就要在用户程序中进行编程,建立dde对话,控制数据通信流程。本文介绍vc2005的dde通信方式。事实上,vc2005并不直接与dde server进行dde对话,它是通过windows操作系统提供的ddeml(dde通信管理库)来管理dde通信具体工作的。该管理库的使用方法如下:
(1) ddeml的初始化工作
加载头文件,.#include “ddeml.h” //在工程中引用ddeml库然后按照dde server提供的3级访问方式建立vc与ddeserver的对话。此时service为mbplus,topic为plc4。通过选择不同的item及相应dde函数可以完成接收过程数据、发送控制命令、获取系统状态等工作。
使用ddeml后,实际上客户和服务器之间的多数会话并不是直达对方的,而是经由ddeml中转,即用回调函数处理dde交易(transaction)。在调用其他ddeml函数前,必须调用ddeinitialize()函数,以获取实例标识符,注册dde 回调函数。通过回调函数来处理dde的事务。
本例中使用如下方法来初始化dde连接,dword idinst = 0; //定义dde实例标识的变量ddeinitialize(idinst,(pfncallback)ddecallback,appclass_standard | appcmd_clientonly,0);这里将ddecallback函数指定为dde的回调函数。实例初始化后得到实例的标识idinst,之后的操作都要使用这个标识。
评论