SCADA

DAQBench在人機(jī)界面編程中的應(yīng)用

ainet.cn   2008年07月08日

人機(jī)界面是測(cè)控應(yīng)用系統(tǒng)開發(fā)的一個(gè)重要部分。DAOBench是凌華科技股份有限公司研發(fā)的一套測(cè)量和自動(dòng)化應(yīng)用的32位ActiveX控件,包括用戶界面、數(shù)據(jù)分析、信息整合、SCADA/HMI等各種控件及工具。使用DAQBench,用戶可以很容易地開發(fā)出復(fù)雜的用戶應(yīng)用系統(tǒng)來顯示信號(hào)數(shù)據(jù)、分析所采集到的數(shù)據(jù)、快速地與Excel、數(shù)據(jù)庫或Web做信息整合。運(yùn)用DAQBench的SCADA/HMI功能,您也可以很快地開發(fā)分布式(distributed)人機(jī)界面(HMI)應(yīng)用系統(tǒng)??梢栽谌魏沃С諥ctiveX標(biāo)準(zhǔn)的軟件開發(fā)平臺(tái)使用,包括Visual Basic、Visual C++、C++Builder、Delphi等。
   
    1、原理
   
    ActiveX控件的妙處在于,控件與應(yīng)用程序總是能融洽地交互。ActiveX控件提供了三種與應(yīng)用程序交互的基本機(jī)制:屬性(Property)、方法(Method)和事件(Event)。用戶由此三部分來控制控件并開發(fā)程序。屬性是描述控件的當(dāng)前狀態(tài),并影響控件的顯示和行為,屬性值存儲(chǔ)在控件的變量中。方法為定義在控件內(nèi)的函數(shù)(Function),方法的使用與控件所提供的功能有關(guān),通常會(huì)影響控件本身或其行為,大多數(shù)方法的作用也會(huì)受到控件當(dāng)時(shí)屬性的影響。事件是在某些特定情況時(shí),控件所產(chǎn)生的通知事件,事件被傳遞給控件應(yīng)用程序以執(zhí)行程序中與此事件連接的函數(shù)(Event handler)。
   
    以下舉例說明,如何運(yùn)用DAQBench控件建立人機(jī)界面,以及使用ADLINK的數(shù)據(jù)采集設(shè)備的ActiveX控件進(jìn)行模擬信號(hào)的處理。
   
    我們假設(shè)把一個(gè)程序分成兩部分:可視部分(前臺(tái)顯示操作的界面)和不可視部分(后臺(tái)工作的線程)。本文程序的顯示界面非常簡(jiǎn)單,僅有一個(gè)作圖控件及一個(gè)退出按鈕,后臺(tái)工作是使用一個(gè)虛擬的PCI—9112多功能數(shù)據(jù)采集卡(不需要安裝真正的板卡)產(chǎn)生采樣數(shù)據(jù)。程序流程見圖1,在程序的開始,調(diào)用PCI—9112控件的方法StartContAI來激活連續(xù)的AI, 當(dāng)采樣完成時(shí),會(huì)自動(dòng)激活PCI—9112控件的事件AiHalfReady 0,在事件響應(yīng)函數(shù)中,通過調(diào)用作圖控件的方法PlotChart 0,把采集到的數(shù)據(jù)傳送給作圖控件。這樣,我們就能不斷地在屏幕上看到采樣數(shù)據(jù),直到程序退出。整個(gè)程序只有兩條語句需要鍵盤輸入,其余工作都是通過鼠標(biāo)點(diǎn)擊來完成的。從這個(gè)程序您可以感受到用DAQBench的ActiveX控件來做數(shù)據(jù)采集程序是多么的簡(jiǎn)單容易。

                                                                                           圖1 程序原理圖

    2、編程
   
    以下將以逐步推進(jìn)(step by step)的方式,說明如何在微軟的Visual c++6.0下,運(yùn)用DAQBench的ActiveX控件來完成數(shù)據(jù)采集的應(yīng)用。
   
    2.1 程序框架的建立
   
    使用Visual C++的MFC AppWizard來建立一個(gè)基于對(duì)話框的程序框架。
   
    通過File>>New菜單命令建立一個(gè)新的項(xiàng)目,其會(huì)打開New的對(duì)話框。在Projects頁面中,選擇[MFC AppWizard(exe)]項(xiàng)目類型,在Project name中輸入項(xiàng)目名稱:MZR 點(diǎn)0K。
   
    在Step 1對(duì)話框選擇[Dialog based]選項(xiàng), 點(diǎn)Finish>>點(diǎn)0K。
   
    這樣,應(yīng)用程序向?qū)?huì)構(gòu)建一個(gè)新的項(xiàng)目和程序的框架,并自動(dòng)在對(duì)話框編輯器中打開程序?qū)υ捒颉?BR>   
    2.2 加載DAQBench控件
   
    把需要的ActiveX控件添加到控件工具欄(Control Toolbar)的步驟如下:
   
    (1) 選擇Project>> Add To Project >>Components And Controls?項(xiàng)目,然后,在接著出現(xiàn)的對(duì)話框中,使用鼠標(biāo)雙擊Registered ActiveX Controls目錄條目。這樣就會(huì)打開一系列計(jì)算機(jī)上已經(jīng)安裝和注冊(cè)的ActiveX控件清單。選擇并插入需要的ActiveX控件到您的項(xiàng)目和控件工具欄中。
   
    (2) 選擇繪圖ActiveX控件(文件名)DAQBench DChart Control—(ADLINK),單擊Insert按鈕,在隨后的對(duì)話框中使用鼠標(biāo)點(diǎn)選OK,接受缺省的類名和文件名。
   
    (3) 選擇數(shù)據(jù)采集ActiveX控件(文件名)NuDAQ PCI—9112 Control—(ADLINK),單擊Insert按鈕,單擊確定按鈕,單擊OK按鈕,接受缺省的類名和文件名。
   
    (4) 添加完畢,返回Components And Controls Gallery對(duì)話框,單擊Close按鈕。
   
    這樣,就在對(duì)話框編輯器的控件工具欄中,加進(jìn)了繪圖控件DAQBench DChart Control和數(shù)據(jù)采集控件NuDAQ PCI—9112 Control,可以方便地將控件加入到對(duì)話框中。
   
    2.3 程序設(shè)計(jì)
   
    將控件添加到控件工具欄之后,就可以在設(shè)計(jì)應(yīng)用程序的用戶界面時(shí)使用控件了。開發(fā)者可以使用對(duì)話框編輯器將控件放置在對(duì)話框上。具體操作步驟如下:
   
    刪除窗體上帶TODO消息的靜態(tài)文本控件,并刪除確定按鈕。
   
    單擊Controls工具條底部的DChart按鈕,并通過鼠標(biāo)點(diǎn)擊把它放在對(duì)話框中,ActiveX控件可以象標(biāo)準(zhǔn)Windows控件一樣插入對(duì)話框,并可調(diào)整位置與大小。
   
    選擇Controls工具條底部的PCI—9112按鈕,把它放在對(duì)話框中適當(dāng)?shù)奈恢茫益I點(diǎn)擊對(duì)話框中的PCI—9112控件,在打開的菜單中選擇屬性(Properties),就會(huì)出現(xiàn)一個(gè)帶有各種不同屬性字段的屬性頁對(duì)話框。通過屬性頁對(duì)話框,你可以對(duì)這個(gè)特定的控件進(jìn)行設(shè)置,具體數(shù)值見表1。

                                                               表1 控件NuDAQ PCI-9112 Control屬性設(shè)置

  在用戶使用控件編寫程序之前,要先為該控件設(shè)定一個(gè)變量名稱。下面為作圖控件和采樣控件設(shè)定相應(yīng)變量:通過快捷鍵Ctrl+W,打開MFC Class Wizard對(duì)話框,在Member Variables標(biāo)簽中將Class name設(shè)置為CMZRDlg,通過Add Variables?按鈕給其中的控件標(biāo)識(shí)號(hào)添加變量,變量的定義見表2。

                                                                         表2 對(duì)話框中相應(yīng)控件變量的

  定義PCI—9112控件的事件處理函數(shù),通過快捷鍵Ctrl+W,在MFC Class Wizard窗口中,按下Message Maps 標(biāo)簽并在Object Ids字段中選IDC_PCI9112CTRLI控件,在Messages字段中選AiHalfReady,單擊Add Function按鈕,添加數(shù)據(jù)采集控件的AiHalfReady消息響應(yīng)函數(shù),接受缺省的函數(shù)名,單擊Edit Code按鈕以定位到該函數(shù),在其中加入下列代碼:
   
    void
    CMZRDlg::OnAiHalfReadyPci9112ctrl1(VARIANT FAR*ScaledData,VARIANT FAR*BinaryCodes)
    {
    //TODO:Add your control notification handler code here
    art(ScaledData);// 將ScaledData中的采樣數(shù)據(jù)傳遞給作圖控件。
    }

    在初始化函數(shù)中啟動(dòng)數(shù)據(jù)采集函數(shù):

    定位到對(duì)話框初始化函數(shù)void CMzRDlg::OnInitDialog(),在其結(jié)尾return TRUE;語句之前加入下列語句
    BOOL CMZRDlg::OnInitDialog()
    {
    CDialog::OnInitDialog();
    /TODO :Add extra initialization here VARIANT Filename;
    ontAI(Filename);//激活連續(xù)
    return TRUE; //return TRUE unless you set the focus to a control
    }
   
    2.4 程序測(cè)試
   
    通過按Ctrl_F5鍵直接在Developer Studio中運(yùn)行程序,運(yùn)行結(jié)果如圖2所示。

                                                                                     圖2 運(yùn)行結(jié)果

    開發(fā)環(huán)境:本文假設(shè)您已經(jīng)安裝了Visual C++6.0和DAQBench和PCIS—OCX。
   
    DAQBench和PCIS—OCX這兩個(gè)軟件可從凌華公司的網(wǎng)站(http://www.a(chǎn)dlinktech.com/download area/software.htm)下載。
   
    3、結(jié)束語
   
    DAQBench提供了6O余種ActiveX控件,可以幫助您快速地完成量測(cè)及自動(dòng)化控制的應(yīng)用系統(tǒng)。說的更簡(jiǎn)單一點(diǎn),您可以把DAQBench想像成一套積木,里面的每一塊積木都有特定的形狀。您只要選擇適當(dāng)?shù)姆e木, 便可以拼出各式各樣您想要的東西。用DAQBench來開發(fā)程序也是這樣,您只要選擇適當(dāng)?shù)目刂圃?,將它們拼湊在一起,便可以完成您的?yīng)用系統(tǒng)開發(fā)。由于ActiveX控件技術(shù)具有代碼的可移植性和復(fù)用性,具有開發(fā)成本低,執(zhí)行效率佳,程序彈性大,開放性架構(gòu)易于擴(kuò)充等優(yōu)點(diǎn),DAQBench擁有越來越多的用戶群。
   
    如果使用傳統(tǒng)的API或DLL編程來完成上述功能,至少需要幾百行代碼。對(duì)于所有用戶,DAOBench都能使人機(jī)界面的開發(fā)變得更輕松也更有效率。通過直觀的圖形界面,使用戶很容易用他們自己的HMI來完成更多的工作。非編程人員或只擁有很少編程背景的人員,都能用很少的工作來創(chuàng)建相當(dāng)有效的系統(tǒng)。使用戶可以專注于解決測(cè)量和控制問題,而無需受困于編程過程。
   
    為用戶的操作構(gòu)建一種有效的人機(jī)界面(HMI)純粹是一種個(gè)人行為,因?yàn)槊恳环N安裝都不一樣,都具有不同的要求、目標(biāo)及需求。因此為您的操作創(chuàng)建一種合適的人機(jī)界面,意味著需先徹底了解您的過程及其周邊系統(tǒng)……然后再從能對(duì)它們進(jìn)行監(jiān)控及調(diào)整的角度來創(chuàng)建對(duì)這些過程的反應(yīng)。選擇何種方式來創(chuàng)建或加強(qiáng)您的HMI,在很大程度上取決于您個(gè)人的偏好及能力,永遠(yuǎn)都不會(huì)有“唯一”的方式。HMI最終將向零編程方向發(fā)展。

(轉(zhuǎn)載)

標(biāo)簽:DAQBench 人機(jī)界面 編程 應(yīng)用 我要反饋 
泰科電子ECK、ECP系列高壓直流接觸器白皮書下載
ABB協(xié)作機(jī)器人,自動(dòng)化從未如此簡(jiǎn)單
優(yōu)傲機(jī)器人下載中心
億萬克
專題報(bào)道