Citect组态软件的动态数据交换技术研究
Citect组态软件的动态数据交换技术研究 第2l卷第1期
2005年1月
昆明冶金高等专科学校
JournalofKunmingMetallurgyCollege
V01.21No.1
Jan.2005
Citect组态软件的动态数据交换技术研究
师帅,张寿明,黄莉萍
(昆明理工大学信息工程与自动化学院,云南昆明650051)
摘要:Citet可以监控生产现场的各种数据,应用程序可以获得这些实时数据,并对
其进行处理以实现更复杂
的监控.介绍用DDE实现Citect与应用程序之间的数据交换.重点
Citect下
DDE的具体实现,包括与其它应
用程序(如:Exce1)之间交换数据以及网络DDE,最后给出了利用DDE实现Citect与Excel之间动态交换现场数
据的模拟实验结果.
关键词:Citect;DDE;Excel;函数
中图分类号:TP311.132文献标识码:A文章编号:1009—0479一(2005J01—0019一
o4
ASurveyoftheDynamicDadaExchangeTechnologyofCitect SHIShuai,ZHANGShou—ming,HUANGLi—ping
(TheFacultyofInformationEngineeringandAutomation,KunmingUniversity
ofScienceandTechnology,Kunming650051,China) Abstract:Citectcanbeusedtomonitorandcontrolvariouskindsofdataoftheworksite.Theap
plicationpro—
gramcangetthedataanddisposethemtoachievemorecomplexmonitoringpurpose.Inthepa
per,dataex—
changebetweenCitectandtheapplicationprogramswithDDEisintroduced.Thespecificim
plementingmethod
ofDDEunderCitectcondition,includingtheexchangeofdatawithotherapplicationprogram
s,suchasExcel,
andnetDDE,isemphaticallyanalyzed.Theresultofasimulatedexperimentofexchangingdy
namicallythe
testingdatabetweenCitectandExcelwithDDEisshown.
Keywords:Citect;DDE;Excel;fuInction O引言
Citect是一套基于32位结构,事件驱动,多任务,多线程技术基础上的工业过程控制应用软件,由
于它具有良好的开发环境,强大的PLC接口通信
支持,实时的网络数据以及高效完整的Cicode监
控语言和函数集,使其在数据采集,实时监测和过程控制等系统中得到了广泛的应用.当应用程序与
Citect之问需要进行实时数据交换以实现更高级的监控,在对性能要求不是非常苛刻时(比如,传输变
量不是很多,对速度要求也不是很高),动态数据交换DDE(dynamicdataexchange)技术是一种较好的
选择,它既简便又实用.
1Citect
Citect是由澳大利亚CiT公司开发的功能十分强大的工控组态软件,可用在工业控制的各个领域,
是建立监督控制系统的有利工具.它是真正的客户/服务器体系,为用户提供了许多便利,对于相似的
不同规模应用,用户有选择自己系统
的灵活性,并可保证自己的系统是快速,高效和可扩展的.当
需要改变系统的规模时,也不会浪费任何初期投资.目前,Citect组态软件已被公认
为是世界上最先进
的监控与数据采集(SCADA)开发软件工具之一.
收稿日期:2004—10—14
作者简介:师帅(1980一),男,内蒙人,在读硕士研究生,主要研究方向为过程控制, 信息处理.
20昆明冶金高等专科学校2005年1月
使用Citect可以完成的功能包括:
1)在计算机屏幕上为操作者提供集中或分散的清晰,精确与可变规模的图形界面. 2)在页面上增加执行各种任务的图形按钮.
3)设计复杂的卡通画面,显示系统的操作状态和性能.
4)用文本信息或图形显示过程状态或报警状态.
5)用一种语言开发工程,用另一种语言显示工程.
6)指定通用或局部可用的键盘命令.
7)以各种形式监督,控制,记录和显示所有报警.
8)以图形格式提供毫秒级的历史和实时趋势.
9)通过利用趋势和数据记录功能监督系统的性能和效率.
10)以RTF格式提供定期的或与事件相关的报
.
l1)开发具有多层访问权限功能的系统,使每个访问者都在自己的权限范围内操作系统.
12)与其它应用交换现场数据.
2DDE技术
DDE是微软公司开发的一个基于Windows平台的完整通信协议,它能使两个或多个应用程序之间以
客户/服务器的形式相互传送数据.当一个应用程序发出数据请求时,该应用程序就是客户,而另一个
响应请求的应用程序为服务器.DDE通信是双向的,即一个应用程序既可以作为客户机又可以作为服
务器,但就某一确定的u,-t~0它只能扮演一个角色,客户机或服务器.DDE通信在客
户程序和服务程序
之间建立"热链路",只有当被请求的数据发生变化时,服务程序才将新的数据值发送给客户程序,并
且这种链接一直保持到客户程序或服务程序终止链路,因此,它是应用程序之间进行动态数据交换强有
力的方法.
DDE也充分体现了Windows的多任务优点,它使得Windows应用程序之间可以交换数据甚至执行命
令,因此DDE在Windows中被广泛应用.这里所谓的"动态",就是指两个应用程序之间可以连续地发
送数据或命令.DDE是计算机中的一个重大突破,它打破了传统意义下程序与程序之间的分隔.例如,
在DDE技术之前,由于各个程序都有其独特的信息保存格式,这使得一个程序保存的信息在另一个程
序中变得不可渎.而在DDE技术的帮助下,这些障碍不再成为障碍. 3Citect中的动态数据交换(DDE)技术
3.1Citect下应用DDE
Citect通过DDE与应用程序问的数据交换过程,如图l
所示:
每个应用都同时允许多个DDE会话,在某些会话中这个
应用可能是客户(请求数据或服务),而在其他会话中可能
是服务器(数据或服务提供者).DDE会话中的每一个请求
或响应都指定了将要进行的操作,即发送数据/服务,或接图1Citect与应用程序间的数据交换过程
受数据/服务.可用下面的3级递阶形式唯一地表示一个DDE会话: <servicename>I<topicname>!<itemname>
式中,<servicename>代表服务应用,当客户试图与服务器建立会话时发送<servicename>.通常
服务的名字就是应用的名字,例如对Citect而言服务的名字就是"CITECT",绝大多
数服务器只响应一
个名字.<topicname>代表会话的内容,当服务器是在对文件进行操作时,该名字就是文件名;对于
其它方式工作的服务器,该名字是与应用相关的特定字符串;对于Citect而言,该名字是"DATA"(如
果使用CicodeDDE函数)或"VARIABLE"(如果使用Citect作为DDE服务器).<itemname>是在会话
第1期师帅,张寿明,黄莉萍:Citect组态软件的动态数据交换技术研究21 过程中代表服务器传送到客户的数据单元的字符串,在Citect中该名字就是变量标签.
在Citct中,通过DDE交换数据的方式有:
1)Citect作为DDE服务器,为其它应用提供Citect数据,Citect可以允许其它应用对其所有数据进行
访问.
2)有选择地提供对部分变量的访问,任意Windows应用都可以对这部分数据进行访问.
3)仅在收到请求时提供访问,Citect直接将数据写到其它应用. 4)Citect作为DDE客户从其它应用请求数据.
对于上述方式1数据交换,可在系统启动时将Citect变量标签数据库装载到内存,Citect自动更新所
有变量.另外,这也是Excel从Citect得到变量值的最简单方式,即只连接Excel的单元到Citect变量.
为了在编译时装载变量标签数据库,需要设定[Genera1]TagDB参数,否则的话DDE将不能访问数
据库.
将变量标签数据库装载到内存并使其处于更新状态将占用较大的内存空间并可能使系统的性能降
低.事实上,用户可能仅需要部分变量,这时可通过函数DDEPost()将这些变量送到
内存,供其它应
用访问.
下面的例子显示了如何将变量PV传送到内存:
FUNCTIONPostVariablePV()
DDEPost("PV",PV);
END
如果从Excel的一个单元访问该变量,其会话形式为:
=CitectIData!PV
将一个变量值写到一客户请求的应用,这时需要使用函数DDEWrite(),例如: FUNCTIONWriVariablePV()
DDEWrite("Excel","Sheetl","R1C1",PV); END
该Cicode函数将Citect变量PV写到名为Sheetl的Excel电子数据表格的第一行第一列.
可将Citect作为一客户从服务器应用读取变量值,这时应该使用函数DDERead(),例如:
FUNCTIONReadVariablePV()
PV=DDERead("Excel","Sheetl","R1C1"); END
该例中,Excel必须处于运行状态,并且电子数据表格Sheetl存在,这样其第一行第一列的数据才
能被读取并保存在PV中.
除了使用DDERead()函数外,还可以使用DDE句柄函数DDEhRequest(),该函数应用起来比较
复杂,但是它提供了更强的DDE控制功能.
在某些情况下需要使用网络DDE功能,这时必须在每台PC上运行一称为NDDE$的系统服务程
序,NDDE$通过SYSTEM.INI的[DDEShare]段维持共享数据库,该数据库拥有共享DDE名字的具体
信息,以及关于这些名字的sApplication,sDoeument,sItem(可选)和安全属性.对于每一台计算机而
言,共享名字是唯一的并且允许其它计算机对DDE访问进行控制,例如: 『DDEShares]
Access$=MSAccess,MyDatabase;TABLEMyTable,,15,,0,,0,0,0
式中,Access$是DDE共享名(前缀$可省略).
每一个DDE调用都被送到远程计算机的NDDE$应用,并通过sApplicati.n传递计算机名字,而
DDE共享名作为sDocument传送.远程计算机通过其SYSTEM.INI的[DDEShare]段的信息与pplicati.n/
22昆明冶金高等专科学校2005年1月
Topic建立DDE通道.
下面是访问网络DDE变量的例子:
sApplication|MyComputertNDDE$ sDocumentAccess$
sltemFirstROW
对于远程计算机sApplicati.n和sDocument的每个组合都必须使用一个不同的DDE共享名.
3.2实验结果
Citct下模拟显示的生产现场实时数据监控画面,如图2所示:
通过编写Cicode程序调用Citect下的DDE函数,并在Citect工程的事件中触发这些函数,可以实现
citt下的监控数据与应用程序(如:Exce1)间的数据交换,如图3所示,Citect下监控的动态数据可以
在Excel里动态显示.'
图2模拟现场实时数据监控画面
H一,'一'…一一…0,,??.....一…
图3Citect监控数据在Excel里动态显示
4结语
在实际应用当中,因Citect可监控工业生产现场的各种数据量,应用程序通过DDE可以与Citect进
行数据交换,得到了这些现场数据后,可以对其再进行更高级的信息处理,以实现更复杂的监控与控
制,这将是我们下一步所要做的工作.
参考文献:
[1]CiTechnologies.Citect5UsersGuide.Australia:CiTechnologiesPty.Limited.1998.
[2]CiTechnologies.Citect5CicodeReference.Australia:CiTechnologiesPty.Limited.199
8.
[3]戴学丰,曲伟建,陆仲达.控制系统集成[M].哈尔滨:哈尔滨工业大学出版社,2002. [4]刘丽,杨兴国.Citect工控组态软件
功能的改进及其应用[J].工业控制计算机,2001,14(4):43—46.
[5]许松顺,苏中义.块DDE在均热炉监控组态系统中的应用[J].工业控制计算机,2003,16(1):25—27.
[6]王海波,李康强.DDE通讯在黄金矿山调度监控系统中的应用[J].黄金科学技术,2003,ll(5):33—36.
[责任编辑:邓永胜]