微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 基于DDE协议的Modbus Plus与Ethernet数据交换

基于DDE协议的Modbus Plus与Ethernet数据交换

时间:08-14 来源:互联网 点击:

1 引言

  modbus plus(以下简称mb+)是一种针对工业控制应用的本地局域网系统。以太网是当今现有局域网采用的最通用的通信协议标准。其具有低成本、高可靠性、高速率、开放性好等特点,在工控领域得到了广泛的应用。  

  动态数据交换(dde)是windows操作系统一直保持兼容的一种应用程序间的数据通信方式。对于很多直接和硬件打交道的应用程序,尤其是plc编程软件,是一种较为可靠的通信方式。

  本文通过某钢厂单机架平整机板型改造过程中的实际应用,介绍使用vc2005在windows下实现pc与mb+网的dde通信并通过以太网实现与板型仪plc的数据交换。

2 系统简要说明

  本系统如图1所示,包括生产控制plc组,mb+网,pc服务器,100m以太网,板型控制系统。通过pc服务器实现互联。

图1 单机架平整机板型控制系统

  生产控制plc组由mb+网来连接,pc机上使用一块sa-85的pci卡来连接到mb+,用于访问各节点上的plc。pc机上另外使用一块pci接口的以太网卡连接到以太网。板型仪提供了以太网接口,与pc机接入同一个局域网。

  pc机上安装mb+网的dde服务程序,以及本文介绍的自编程序。dde服务程序通过mb+网获取plc上的数据,自编程序使用dde技术获得数据,打包后使用tcp协议发送给板型仪。板型仪通过tcp协议将各种测量数据和状态信号发给pc服务器,相关数据再通过dde协议送dde服务程序,最后通过mb+网送到相应的plc。

3 系统的具体实现

  3.1 dde server软硬件安装方法

  dde基于用户/服务器原则,通过建立应用程序间的对话连接,根据不同的主题和项目进行数据通信。为了从服务器获取数据,用户使用一种固定的3级特殊访问方式,这3级访问分别为:服务(service)、主题(topic)和数据项(item)。   不同的硬件平台所使用的dde数据通信硬件设备也不同,本文介绍的数据通信方法是针对mb+网而言的。pc平台上使用sa-85的pci卡来连接mb+网。使用前需要配置好sa-85的网络连接。

  软件上,使用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,之后的操作都要使用这个标识。

  (2) 通过dde协议的服务名,主题名和项目名来访问具体某个项目的数据

  先定义dde的服务名和主题名

tchar szapp[] = text("mbplus"); //服务名
tchar sztopic4[]=text("plc4"); //主题名
tchar szwidth[]=text("400401"); //项目名
tchar vlwidth[16]; //储存从dde服务器返回的数据
hsz hszwidth; //项目的dde标识

  //项目名的命名规则具体可以查看mbplus程序的说明,这里400401表示的是项目在plc中的地址,这是一个//16位的整形数

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top