工控网首页
>

应用设计

>

DAQBench 在人机界面编程中的应用

DAQBench 在人机界面编程中的应用

[摘要]简要介绍了ActiveX控件的原理和使用DAQBench编程的方法,对人机界面的开发做了进一步的阐述。 [关键词]人机界面;DAQBench;数据采集;C++   人机界面是测控程序开发的一个重要部分。DAQBench是凌华科技股份有限公司研发的一套测量或自动化应用的32位ActiveX控件,包括用户界面、数据分析、信息整合、SCADA/HMI等各种控件及工具。使用DAQBench,您可以很容易地开发出复杂的用户界面(user Interface)来显示信号数据、分析所采集到的数据、快速地与Excel、数据库或web做信息整合。运用DAQBench的SCADA/HMI功能,您也可以很快地开发分布式(distributed)人机界面(HMI)应用系统。可以在任何支持ActiveX标准的软件开发平台使用,包括Visual Basic、Visual C++、C++ Builder、Delphi等。 1 原理   ActiveX控件的妙处在于,控件与应用程序总是能融洽地交互。ActiveX控件提供了三种与应用程序交互的基本机制:属性(Property)、方法(Method)和事件(Event)。用户藉由此三部分来控制控件并开发程序。属性 是描述控件的当前状态,并影响控件的显示和行为。属性值存储在控件的变量中。方法 为定义在控件内的函数(function)。方法的使用与控件所提供的功能有关,通常会影响控件本身或其行为。大多数方法的作用也会受到控件当时属性的影响。事件 是在某些特定情况时,控件所产生的通知事件。事件被传递给控件应用程序以执行程序中与此事件连接的函数(event handler)。
  以下举例说明,如何运用DAQBench控件建立人机界面,以及使用ADLINK的数据采集设备的ActiveX控件进行模拟信号的运作。 我们假设把一个程序分成两部分:可视部分(前台显示操作的界面)和不可视部分(后台工作的线程)。本文程序的显示界面非常简单,仅有一个作图控件及一个退出按钮,后台工作是使用一个虚拟的PCI-9112多功能数据采集卡(不需要安装真正的板卡)产生采样数据。程序流程是这样的(见图1),在程序的开始,调用PCI-9112控件的方法StartContAI来激活连续的AI,当采样完成时,会自动激活PCI-9112控件的事件AiHalfReady(),在事件响应函数中,通过调用作图控件的方法PlotChart(),把采集到的数据传送给作图控件。这样,我们就能不断地在屏幕上看到采样数据,直到程序退出。整个程序只有两条语句需要键盘输入,其余工作都是通过鼠标点击来完成的。从这个程序您可以感受到用DAQBench的ActiveX控件来做数据采集程序是多么的简单容易。 2 编程 以下将以step by step的方式,说明如何在微软的Visual C++6.0下,运用DAQBench的ActiveX控件来完成数据采集的应用。 一 使用Visual C++的MFC AppWizard来建立一个基于对话框的程序框架 1 通过File >> New菜单命令,来建立一个新的项目,其会打开New的对话框。在Projects页面中,选择「MFC AppWizard(exe)」项目类型,在Project name中输入项目名称:MZR 点OK 2 在Step 1对话框选择「Dialog based」选项,点Finish >>点OK 这样,应用程序向导会构建一个新的项目和程序的框架,并自动在对话框编辑器中打开程序对话框。 二 在项目中加载所需的DAQBench控件   把需要的ActiveX控件添加到控件工具栏(Control Toolbar)的步骤如下: 1 选择Project >> Add To Project >> Components And Controls…项目,然后,在接着出现的对话框中,使用鼠标双击Registered ActiveX Controls目录条目。这样就会打开一列计算机上已经安装和注册的ActiveX控件清单。选择并插入需要的ActiveX控件到您的项目和控件工具栏中。 2 选择绘图ActiveX控件(文件名)DAQBench DChart Control - (ADLINK),单击Insert按钮 ,在随后的对话框中使用鼠标点选OK,接受缺省的类名和文件名。 3 选择数据采集ActiveX控件(文件名)NuDAQ PCI-9112 Control - (ADLINK),单击Insert按钮 ,单击确定按钮,单击OK按钮,接受缺省的类名和文件名。 4 添加完毕,返回Components And Controls Gallery对话框,单击Close按钮。 这样,就在对话框编辑器的控件工具栏中,加进了绘图控件DAQBench DChart Control和数据采集控件NuDAQ PCI-9112 Control,可以方便地将控件加入到对话框中。 三 设计程序   将控件添加到控件工具栏之后,就可以在设计应用程序的用户界面时使用控件了。开发者可以使用对话框编辑器将控件放置在对话框上。 1 删除窗体上带TODO消息的静态文本控件,并删除确定按钮。 2 单击Controls工具条底部的DChart按钮,并通过鼠标点击把它放在对话框中,ActiveX控件可以象标准Windows控件一样插入对话框,并可调整位置与大小。 3 选择Controls工具条底部的PCI-9112按钮,把它放在对话框中适当的位置,右键点击对话框中的PCI-9112控件,在打开的菜单中选择属性(Properties),就会出现一个带有各种不同属性字段的属性页对话框。通过属性页对话框,你可以对这个特定的控件进行设置,具体数值见表1。
  在您使用控件编写程序之前,要先为该控件设定一个变量名称。下面为作图控件和采样控件设定相应变量:通过快捷键Ctrl+W, 打开MFC Class Wizard对话框,在Member Variables标签中将Class name设置为CMZRDlg,通过Add Variables…按钮给其中的控件标识号添加变量,变量的定义见表2。
  定义PCI-9112控件的事件处理函数,通过快捷键Ctrl+W, 在MFC Class Wizard窗口中,按下Message Maps标签并在Object Ids字段中选IDC_PCI9112CTRL1控件,在Messages字段中选AiHalfReady,单击Add Function按钮,添加数据采集控件的AiHalfReady消息响应函数,接受缺省的函数名,单击Edit Code按钮以定位到该函数,在其中加入下列代码: void CMZRDlg::OnAiHalfReadyPci9112ctrl1(VARIANT FAR* ScaledData, VARIANT FAR* BinaryCodes) { // TODO: Add your control notification handler code here m_Chart.PlotChart(ScaledData);//将 ScaledData 中的采样数据传递给作图控件。 } 在初始化函数中启动数据采集函数: 定位到对话框初始化函数void CMZRDlg::OnInitDialog(),在其结尾return TRUE;语句之前加入下列语句 BOOL CMZRDlg::OnInitDialog() { CDialog::OnInitDialog(); // TODO: Add extra initialization here VARIANT Filename; m_Pci9112.StartContAI(Filename); //激活连续AI return TRUE; // return TRUE unless you set the focus to a control } 四 测试程序   通过按Ctrl_F5键直接在Developer Studio中运行程序,运行结果如图2所示。
  开发环境:本文假设您已经安装了Visual C++6.0和DAQBench和PCIS-OCX。使用的计算机为DELL公司的DIMENSION-8300。 DAQBench和PCIS-OCX这两个软件可从凌华公司的网站(http://www.adlinktech.com/download_area/software.htm)下载。 3 结束语   如果使用传统的API或DLL编程来完成上述功能,至少需要几百行代码。对于所有用户,DAQBench都能使人机界面的开发变得更轻松也更有效率。通过直观的图形界面,使用户很容易用他们自己的HMI来完成更多的工作。非编程人员或只拥有很少编程背景的人员,都能用很少的工作来创建相当有效的系统。使您可以专注于解决测量和控制问题,而无需受困于编程过程。   为您的操作构建一种有效的人机界面(HMI)纯粹是一种个人行为,因为每一种安装都不一样,都具有不同的要求、目标及需求。因此为您的操作创建一种合适的人机界面,意味着需先彻底了解您的过程及其周边系统…然后再从能对它们进行监控及调整的角度来创建对这些过程的反应。选择何种方式来创建或加强您的HMI,在很大程度上取决于您个人的偏好及能力,永远都不会有“唯一”的方式。HMI最终将向零编程方向发展。 参考资料: [1] DAQBench用户手册 [2] PCIS_OCX程序员手册 [3] 美 Michael J.Young著 Visual C++ 6 从入门到精通 电子工业出版社。 作者简介:孟昭荣,女,1971年11月21日,工程师。1994年毕业于河北机电学院工业电气自动化专业,现在中船重工集团公司七一八研究所,从事高能激光器测控系统相关工作。
投诉建议

提交

查看更多评论
其他资讯

查看更多

基于Modbus的智能工业控制器监控系统的设计

不要忽略PC总线技术的发展

基于PLC的电梯高精度位置控制的实现

蓝牙工业现场总线应用模型

一种基于PID神经网络的解耦控制方法的研究 /