图4.17 报表向导三
4.在向导的第四步中设置时间格式、基准行列、基准时间等,如图4.18。其中基准行列用于设定表页中从第几行第几列开始生成报表,如果选择了自适应选象那么产生的报表中将去掉多余的行列,而基准时间用于设定报表的起始时间,此时间可以是变量类型。若图片无法显示请联系QQ752018766
图4.18 报表向导四
5.在向导的最后一步中选择需要在报表中显示的变量,如图4.19。可用右边的按钮对添加的变量进行排序。
图 4.19 报表向导五
6 .经过以上几步以后一张完整的报表已经产生,如图4.20。
图4.20 完整的报表
使用力控报警控件可以在系统运行过程中,及时将控制过程和系统的运行情况通知操作人员。
1.在树型菜单中的系统配置里,双击报警设置,弹出“报警设置”对话框,如下图4.21:
图4.21 报警设置
根据设计的需要,选择记录和标准报警声音两个选项就好。
在力控的在工具箱上的“常用组件”中选择如下图所示:
图4.22 报警组件外观
对多功能报警的外观和记录格式的设置画面,首先选中多功能报警,然后双击出现如下图:
图4.23 报警系统设置
按照相应的操作提示就完成了报警页面的设置。
通过上述的几个步骤就完成了啤酒监控系统的所有监控画面,并可以投入运行,在上述的制作过程中,要特别的注意脚本动作的书写和一些液位、温度的初值和它们的温度范围,及一些属性的设置要根据工业的实际要求进行设置。第5章 力控6.0与MATLAB 之间的DDE数据通信
本章主要介绍利用动态数据交换(DDE)技术,建立MATLAB与力控之间的通信,这样,就可以利用组态软件生成友好的交互式人机界面,而用MATLAB完成复杂的控制算法,弥补组态软件算法能力不强的弱点,发挥MATLAB的计算功能。
动态数据交换(DDE)是建立在Windows内部消息系统、全局原子和共项全局内存基础上的一种协议,可用来协调Windows应用程序之间的数据交换和命令调用。DDE协议通过对使用消息参数wParam和lParam来传递全局原子和全局共享内存句柄的方式的精确定义,使其能在进程间传递更多的信息,增强进程间共享数据和处理数据的能力。通常DDE主要用来传递那些不需要用户经常干涉的数据流。在建立原始链路后,有关的应用程序即将其接管过去,而无需用户进一步的介入。DDE所提供的是一种更加集成的工作环境[10]。
DDE的实现需要有两个应用程序参与一个“对话”以便交换信息。提供数据和执行命令的一方被指定为服务器,获取数据的一方称为客户。服务器和客户机是程序在一次具体会话中的角色,其区别在于所能启动的“事务”类型的不同。对于每一个DDE对话,会话双方要指定或专门建立文护会话的不可见DDE窗口以负责对DDE消息的处理。一个DDE对话是由参与会话的窗口句柄来标识的。正因如此,任何一个窗口都不应当参与与其他窗口只的多于一个的DDE对话。如果在一个客户和服务器之间存在多个对话过程,必须为每一个新的对话过程在一对一的基础上提供一个附加窗口。
图5.1 DDE会话事务流程
在任何通信中,通信双方都必须统一所交换数据的标识和格式。DDE协议采用的是由服务、主题和项目组成的一个三级层次命名来对DDE所传数据单元进行标识。一个特定的DDE会话唯一地由其服务名和主题名进行定义。在初始化一个DDE对话时,由DDE客户询问此特定DDE服务器的应用程序名和主题名。通常是将使用服务器应用程序的可执行文件名作为服务名。DDE的主题分类是一个包含多个数据项的普通数据类型。有效的主题及项目的选择由DDE服务器任意设置。由于客户和服务器窗口一起来识别一个DDE对话,因此在对话过程中不能改变应用程序或主题。但却可以在需要的时候对项目名称进行更改。
DDE的事务 DDE对话是在两个进程之间进行的一种逻辑连接,通过这种连接可以进行数据交换。在客户和服务器之间进行的每一次会话都是由一系列事务所构成的。对于每个事务可以包含一个数据请求/数据服务和一个对应的响应。DDE服务器和客户所能启动的事务是不同的。
服务器只能启动两种事务:向客户发送一个项目和终止一次对话;而DDE客户则可以启动如下八种服务:枚举DDE服务及主题、与服务器建立一次对话、向服务器请求一个项目、与服务器建立一个数据连接、终止数据连接、请求服务器执行一个或多个命令、向服务器发送一个数据项和终止一次会话。
由于DDE对话是由客户程序启动的,因此在客户程序启动对话前要确保DDE服务器程序已投入运行。客户首先启动会话,服务器程序响应客户的请求并向客户发送数据,客户方则可以主动向服务器发送数据,并要求与服务器建立热/温数据链路。此后客户可以向服务器发送命令并要求服务器执行。客户和服务器中的任何一方均有权利要求对方结束此次对话。在进行这些事务处理时,必须严格按照消息接收顺序去进行处理。当应用程序在等待DDE响应而无法处理另一个请求时,会发出一条表示忙的WM_DDE_ACK消息。
在用户将MATLAB作为服务器进行访问时,必须提供服务器的名字、主题、项,这是非常必须的。在前面我们已经对MATLAB提供的主题进行了一定的讲解,下面我们将对MATLAB所提的全部DDE服务器功能进行说明,下图为其结构图。
图5.2 MATLAB所提的全部DDE服务器功能
由上图可以看出,MATLAB一共支持两种类型的主题,分别为System和Engine:
MATLAB作为客户端时支持七个DDE函数[5]
(1) ddeadv 设置咨询咨询链接
语法:
rc=ddeadv(channel,’item’,’callback’)
rc=ddeadv(channel,’item’,’callback’,’upmtx’)
rc=ddeadv(channel,’item’,’callback’,’upmtx’,format)
rc=ddeadv(channel,’item’,’callback’,’upmtx’,format,timeout)
函数描述:
ddeadv 在MATLAB和一个应用服务器之间建立一个咨询链接。当item指定的变量发生改变时,callback变量定义的字符串被传递到eval函数并进行计算。如果该咨询链接是一个热链接,DDE将修改更新upmtx,以反映item中的数据。
如果用户忽略不在变量列表最后的可选变量,则必须使用空矩阵替换被矩阵忽略的变量。
如果成功,ddeadv返回1到变量rc中。否则返回0。
(2)ddeexec 发送执行字符串。
语法:
rc = ddeexec(channel,'command')
rc = ddeexec(channel,'command','item')
rc = ddeexec(channel,'command','item',timeout)
函数描述:
ddeexec通过已经建立的DDE会话发送一个执行字符串到另一个应用程序中,将字符串作为命令变量来定义。如果用户忽略不在变量列表最后的可选变量,必须使用空矩阵替代忽略的变量。
如果成功,ddeexec返回1到变量rc中。否则返回0。
(3) ddeinit 开始一个DDE对话。
channel = ddeinit(‘service’,’topic’)
函数描述:
返回用执行对话的通道的句柄,该句柄可以被其它的MATLAB的DDE函数使用。‘service’是为对话指定服务或者应用程序名称的字符串,‘topic’是一个指定对话的主题的字符串。
(4) ddepoke 发送数据到应用程序。
语法:
rc = ddepoke(channel,'item',data)
rc = ddepoke(channel,'item',data,format)
rc = ddepoke(channel,'item',data,format,timeout)
函数描述:
ddepoke通过已经建立的DDE对话向应用程序传送数据。ddepoke在传递数据到服务器之前将数据格式化为如下形式:
字符串矩阵将元素逐个转换为字符,并传递得到的字符串缓冲器。
数值矩阵将被作为由Tab键分隔的列和使用回车键、线分隔行的数据来传递。非稀疏矩阵则只传递实数部分。
如果用户忽略不在变量列表最后的可选变量,必须使用空矩阵代过替被忽略的变量。
如果成功,ddepoke返回1到变量rc中。否则返回0。
(5) ddereq 从应用程序中获得数据
语法:
data = ddereq(channel,'item')
data = ddereq(channel,'item',format)
data = ddereq(channel,'item',format,timeout)
函数描述:
ddereq通过已经建立的DDE对话从应用服务器中获取数据。ddereq返回一个矩阵,矩阵中包含要求的数据。如果函数执行出错则返回空矩阵。
如果用户忽略不在变量列表最后的可选变量,必须使用空矩阵代替被忽略的变量。
如果成功,ddereq返回需要的数据到矩阵中。否则返回空矩阵。
(6) ddeterm:终止DDE对话。
语法:
rc=ddeterm(channel)
函数描述
rc=ddeterm(channel)
接受一个此前通过ddeinit创建的DDE对话创建的通道句柄。ddeterm结束该对话,rc是一个返回代码,其中0表示失败,1表示成功。
(7) ddeunadv:释放咨询链接。
语法:
rc = ddeunadv(channel,'item')
rc = ddeunadv(channel,'item',format)
rc = ddeunadv(channel,'item',format,timeout)
函数描述:
ddeunadv释放MATLAB和应用服务器之间此前通过调用ddeadv函数产生的咨询链接。变量channel,itemt和format必须与调用ddeadv开始咨询链接时完全一致。如果用户包含timeout变量但接受默认格式,必须指定format为空矩阵。
如果成功,ddeunadv返回1到变量rc中,否则返回变量0。
力控®的实时数据库是数据处理的核心平台,它支持DDE标准,可以和其他支持DDE标准的应用程序(如:EXCEL)进行数据交换。一方面,力控®`数据库可以作为DDE服务器,其他DDE客户程序可以从力控®数据库中访问数据。另一方面,力控®`数据库也可以作为DDE客户程序,从其他DDE服务程序中访问数据。
力控®数据库作为DDE服务器设置如下:
服务(SERVICE)名称:为“DB”;
话题(TOPIC)名称:为“DB”;
DDE项目(ITEM)名称:为数据库中的点参数名,如“TAG1.PV”和“TAG1.DESC”。
当力控○R 数据库作为客户端访问DDE服务器程序时,是将DDE服务器程序当作一个I/O设备,数据库中的点参数通过I/O数据连接与DDE服务器程序进行数据交换,连接项的名称要参考相关DDE服务器程序的说明。
在介绍了上面的力控6.0和MATLAB的DDE的通信原理后,现在就应用在啤酒监控系统中来:
由于该通信是从力控中给定一个数据传送到MATLAB中,并在MATLAB中通过数字PID控制算法进行运算,并把运算结果送到力控中并用曲线表示出来。
在工程中新建一个画面“DDE”,并选定与MATLAB通信的数据“糊化锅温度”,在数据库变量中定义三个变量:“weidu.PV” 、“wendu1.PV” 、“u.PV”。三个变量分别为 “力控中给定温度” 、“MATLAB经运算后的输出温度” 、“控制器输出” 。
根据上述的方法创建力控中的DDE通信画面,如下图5.3:
若图片无法显示请联系QQ752018766
图5.3 力控中的DDE通信画面
这样就基本完成了力控中的DDE通信画面了。
在MATLAB中新建一个“m 文件” ,按上述通信原理写“m 文件”,代码如下:
上一页 [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] ... 下一页 >>