基于DDE机理的WinCC和Matlab网络通讯研究--控制网



基于DDE机理的WinCC和Matlab网络通讯研究
企业:控制网 日期:2006-02-10
领域:PLC&PAC 点击数:2699



1  引言

    在工业控制领域,传统的PID控制策略已经无法满足日益提高的工艺精度要求和质量要求。同时,各主要DCS控制系统提供商都没有及时推出经济有效的、有着复杂控制算法的新产品。这一矛盾促使各生产厂家和控制系统设计人员积极探求折中的设计方案。本文就是在这样的背景下,结合实际控制项目,设计了基于DDE机理的WinCC和Matlab的网络通讯。

    WinCC是视窗控制中心(Windows Control Center)的简称,是西门子公司在过程自动化领域中的先进技术和微软公司强大软件功能相结合的产物。其重要特性之一是全面开放的体系结构,各系统集成商可用WinCC作为其系统扩展的基础,通过开放接口开发自己的应用软件。同时WinCC还提供多种PLC的驱动软件,使不同厂家的PLC与上位机的连接变得简单方便。正因如此,WinCC一直是工业控制领域最常用的组态软件之一。

    Matlab是MathWorks公司于1984年推出的一套高性能的数值计算软件,它集数值分析、矩阵运算、信号处理和图形显示于一体,构成了一个方便、界面友好的用户环境[1]。同时,自由开放的ToolBox(工具箱)结构,极大地方便了不同学科的使用者开发出求解特定学科问题的新算法、新工具,从而使Matlab本身得到了丰富和补充。由于Matlab具有如此多的优点,它已经成为线性代数、自动控制理论、数理统计、数字信号处理、时间序列分析、动态系统仿真等领域的重要工具。

    WinCC在工业控制领域的通用性和Matlab在数值计算、
控制策略上的优越性的统一,无疑会给复杂高级控制算法在工业控制中的实际应用提供一条新的有效途径。同时,在提高控制精度,满足用户工艺要求的基础上,大大降低了生产成本。

2  WinCC、Matlab通讯功能

(1)  WinCC通讯功能

    WinCC作为工业控制组态软件提供了多种控制网络的通讯方式,主要包括:MPI、PROFIBUS、工业以太网、OPC等[6]。各种通讯方式因硬件支持程度、通讯速率和连接站点多少的不同而有不同的优缺点和适用范围。

    WinCC作为运行在Windows平台上的软件,同样支持着多种软件间的通讯方式,其中以OPC和DDE最为普遍。

    OPC(用于过程控制的OLE)由OPC基金会定义,主要适用于不同制造商的通讯产品和应用程序之间的通讯,它描述了一个统一的、独立于制造商以及基于Windows OLE(对象链接和嵌入)、COM(组件对象模块)和DCOM(分布式组件对象模块)技术的软件界面。WinCC全面支持OPC通讯,它可以作为OPC服务器或OPC客户机与其他应用程序进行数据交换。WinCC的OPC通讯脱离了网络协议的限制,通讯质量可靠。

    DDE是一种Windows平台下的通讯方式。由于多数软件都支持DDE通讯,所以DDE通讯已经成为WinCC和其他软件最主要的通讯方式。

(2)  Matlab通讯功能

    Matlab作为Windows平台下最主要的数值计算软件之一[3],它支持几乎所有的Windows应用程序间数据共享方式,例如剪贴板数据共享、DDE、OLE和DLLs(动态数据链接库)等。同时,Matlab还支持多种计算机间的通讯协议,如TCP/IP、RS-232等等。除此以外,Matlab对C语言的全方位支持,也为用户使用C语言开发符合实际需要的数据共享、通讯方式提供了方便。

    就硬件支持而言,Matlab只支持部分板卡,而且与多数PLC无法进行直接通讯,这些不足限制了Matlab在工业控制领域中的应用。

3  DDE通讯机理

3.1  DDE简介

    Windows的动态数据交换(Dynamic Data Exchange,简称为DDE)技术,是随着Windows操作系统的广泛应用而发展起来的一门新技术[4]。Windows允许用户进行多窗口、多任务、多进程并行工作,这就产生了在各个应用程序之间动态地交换数据信息的DDE技术。在Windows环境下,DDE是进程间通讯(InterProcess Communication, 简称为IPC)的有效方法,进程间通讯包括进程之间和同步事件之间的数据传递,DDE使用共享内存来实现进程之间的数据交换以及使用DDE协议获得传递数据的同步[5]。

3.2  DDE通讯机理

    Windows的DDE机制是基于Windows的消息机制[2]。两个Windows应用程序通过相互之间传递DDE消息进行DDE会话(Conversation),从而完成数据的请求、应答、传输。这两个应用程序分别称为服务器(Server)和客户(Client)。服务器是数据的提供者,客户是数据的请求和接受者,当然,服务器和客户之间数据的传输并不是单向的,而是以应答的方式实现双向流动的。

    DDE会话由客户程序启动。客户程序把一条消息(WM_DDE_INITIATE)传播给当前运行的所有Windows程序。这条消息指明了客户程序所需要的一般数据,主要包括:应用程序名(Application)、主题名(Topic)和项目名(Item)。拥有这些数据的DDE服务器可以响应这条被传播的消息。此时,DDE会话就开始了。
 
    由于在每个主题中,DDE服务器可以支持一个或多个数据项,所以在客户请求数据时应同时指明应用程序名、主题名和项目名。应用程序、主题、项目是DDE中三个最基本的概念。

    DDE有三种会话方式,别为冷链接(Cold Link)、热链接(Hot Link)和温链接(Warm Link)[4]。

(1)  冷链接

    由客户程序传播一条启动触发消息来开始冷链接,则服务器程序向客户程序提供一次数据。当客户还需要服务器提供更多次的数据时,客户程序必须重新传播启动触发消息。

(2)  热链接

    服务器程序已经被访问的数据可能会随着时间的推移而发生变化,在冷链接中,如果客户不传播启动触发消息,则变化了的数据不会传给客户;在热链接中,服务器会自动将变化了的数据传送给客户。

(3)  温链接

    温链接综合了热链接和冷链接的特点,客户只希望被通知数据是否发生了变化而不一定要立刻得到新的数据,只有当客户知道数据发生了变化并需要获得它时,再启动与冷链接相同的会话。

4  WinCC与Matlab的DDE网络通讯设置及应用实例

(1)  WinCC下网络DDE服务器的设置

    首先,启动WinCC的DDE服务器。DDE服务器(Ddeserv.exe)一般位于WinCC的安装路径上。在启动程序中添加应用程序“\Siemens\WinCC\bin\Ddeserv.exe”,启动参数为“/v /nohold /noconfirm”。然后激活该项目,在激活过程中,会自动弹出DDE服务器的对话框,从该对话框中的变量列表(Tag list)选择想要共享的变量即可。

(2)  网络DDE(NetDDE)服务的设置

    在DDE网络数据通讯中,服务器和客户机都必须启动其NetDDE服务。具体做法是:在控制面板中启动“服务”,找到“Network DDE”项,双击打开。如果WinCC安装的是多用户系统,则设置启动类型为“手动”,在激活项目时会自动启动该服务;如果安装的是单用户系统,则设置启动类型为“自动”,在每次开机时都会自动启动。

(3)  DDE共享的建立

    操作系统的默认DDE共享一般只有Chat、CLPBK和Hearts,有必要给WinCC新建一个DDE共享服务。在“运行”对话框中输入“DDEShare.exe”,打开DDE共享窗口,选择进入“DDE共享”子窗口,添加共享。设定共享名(例如“WinCCPro”),应用程序名静态栏设为“WinCC”,设定主题名(例如“Project”)。退回到主窗口后把新建的WinCCPro共享设为“信任共享”。这样,一个新的WinCC的网络DDE共享就建立好了。
完成以上三步之后,WinCC作为DDE网络服务器就可以正常进行数据提供了。

(4)  Matlab对DDE的支持

    Matlab支持DDE的热链接和温链接。作为客户端,Matlab提供了有关DDE的一些基本函数:
ddeadv():与服务器应用程序之间建立温链接(在Matlab下名为advisory link);
ddeexec():发出执行命令给服务器应用程序;
ddeinit():初始化Matlab与服务器应用程序之间的DDE会话;
ddepoke():Matlab发送数据给DDE服务器应用程序;
ddereq():从服务器应用程序请求数据;
ddeterm():在Matlab与服务器应用程序之间终止DDE会话;
ddeunadv():在Matlab与服务器应用程序之间释放温链接。

    应用上面的基本函数,编写M文件,再在Command Window下运行该M文件,就可以和WinCC的DDE服务器端实现数据交换。

(5)  使用实例

    在某造纸厂流送部DCS中,下层模块采用的是西门子的S7-300系列PLC,上层组态软件采用西门子的WinCC 5.0。PLC负责现场数据的采集、滤波、标度变换和PID运算,WinCC主要实现各控制回路的PID参数的设置、以及各过程量的趋势显示、打印、报表等等。为了优化工艺、提高控制精度,要求各PID回路能够实现协作,即在PID控制的基础上实现高级过程控制算法。从节约成本和系统运行稳定性综合考虑,放弃了WinCC和Matlab运行在同一台计算机上的方案,采用单机运行Matlab离散设定WinCC下的各PID参数的方案。系统结构如图1所示。



图1  系统结构图




按照本文上述的步骤设定好WinCC的DDE服务器,在Matlab下编写M文件:
channel = ddeinit('\\server\ndde$', 'WinCCPro');
%和局域网内名为server的计算机下的WinCCPro网络DDE服务器进行通讯初始化;
tag = 'LT-010';
%指定要访问的目标为变量LT-010;
ddereq(channel, tag, h);
%从服务器上获得变量LT-010的当前值,并把该值赋给Matlab下的变量h;
ddeadv(channel, tag, ‘disp(h)’, 'h');
%把服务器上的LT-010和变量h之间建立advisory link,并显示当前h的值;
……

    把这个M文件在Command Window下运行,即可得到变量LT-010的值,并显示出来。当变量LT-010的值发生变化时,Matlab会自动读取新值给变量h,同时也显示出来。照这个步骤,就可以把WinCC的DDE服务器上所需要的过程值和Matlab下的变量建立链接。这样就可以利用Matlab自带的强大的数据分析和控制策略来实现各种高级过程控制,从而优化各PID的协同工作。通过高级算法得到的下层PID参数用以下语句就可以回传到WinCC里:
……

ddepoke(channel, ‘Gain’, pset,);
%把Matlab下的变量pset赋给WinCC下的变量Gain;
……

要结束WinCC和Matlab的DDE通讯,只需再执行以下语句即可:
ddeunadv(channel, tag);
%释放已建立的advisory link;
ddeterm(channel);
%结束本次DDE会话。

5  结论

(1)  在总结WinCC和Matlab通讯功能的基础上,分析了DDE通讯机制的特点,提出了两者数据共享的新方法。

(2)  WinCC和Matlab数据共享功能的实现,突破了硬件支持不力对Matlab实际应用的限制。

(3)  通过在造纸厂控制系统的应用,验证了本通讯方法的有效性。同时Matlab下的高级算法通过WinCC在工业生产中的应用,极大地提高了控制精度和工艺质量,为后续研究奠定了基础。

  • 在线反馈
1.我有以下需求:



2.详细的需求:
姓名:
单位:
电话:
邮件: