iFix軟件EDA HDA在VB,VC,Delphi編程語言環(huán)境中的應(yīng)用
0.前言
iFIX是全球最領(lǐng)先的HMI/SCADA自動化監(jiān)控組態(tài)軟件,已有超過300,000套以上的軟件在全球運(yùn)行。世界上許多最成功的制造商都依靠 GE Fanuc的iFIX軟件來全面監(jiān)控和分布管理全廠范圍的生產(chǎn)數(shù)據(jù)。在包括冶金、電力、石油化工、制藥、生物技術(shù)、包裝、食品飲料、石油天然氣等各種工業(yè)應(yīng)用當(dāng)中,iFIX 獨樹一幟地集強(qiáng)大功能、安全性、通用性和易用性于一身,使之成為任何生產(chǎn)環(huán)境下全面的HMI/SCADA解決方案。 利用iFIX各種領(lǐng)先的專利技術(shù),可以幫助企業(yè)制定出更快、更有效的商業(yè)及生產(chǎn)決策,以使企業(yè)具有更強(qiáng)的競爭力。
GE Fanuc 的iFIX是世界領(lǐng)先的工業(yè)自動化軟件解決方案,提供了生產(chǎn)操作的過程可視化、數(shù)據(jù)采集和數(shù)據(jù)監(jiān)控。iFIX可以幫助您精確地監(jiān)視、控制生產(chǎn)過程,并優(yōu)化生產(chǎn)設(shè)備和企業(yè)資源管理。它能夠?qū)ιa(chǎn)事件快速反映,減少原材料消耗,提高生產(chǎn)率,從而加快產(chǎn)品對市場的反應(yīng)速度,提高用戶收益。
GE公司的iFix作為工業(yè)控制領(lǐng)域內(nèi)穩(wěn)定可靠優(yōu)秀的SCADA軟件,具有可靠性高,穩(wěn)定性好,功能強(qiáng)大的特點,尤其是其iFix數(shù)據(jù)訪問開發(fā)工具包(iFix DataBase Access Toolkit)允許應(yīng)用程序編程人員訪問iFix的實時和歷史數(shù)據(jù)。開發(fā)工具包中所提供的編程接口函數(shù)說明是針對于Visual Basic和標(biāo)準(zhǔn)的C,C++語言,而且并不提供搭建應(yīng)用程序的具體細(xì)節(jié)。本文根據(jù)實際應(yīng)用開發(fā)經(jīng)驗,給出了如何在Visual Basic, Visual C++和Delphi編程環(huán)境下編寫應(yīng)用程序的具體步驟。
1.Visual Basic編程環(huán)境下的應(yīng)用
在創(chuàng)建的VB應(yīng)用程序項目中應(yīng)該首先添加2個模塊(Module),這2個模塊都是由iFix數(shù)據(jù)訪問開發(fā)工具包提供的,其中一個模塊是用于EDA編程接口使用的vdba.bas,另外一個模塊是用于HDA編程接口使用的fixtools.bas,在vdba.bas模塊中主要是基于VB格式的EDA接口函數(shù),數(shù)據(jù)結(jié)構(gòu),常數(shù)的聲明,而在fixtools.bas模塊中主要是實現(xiàn)對fixtools.dll動態(tài)鏈接庫的聲明,基于VB格式的HDA接口函數(shù),數(shù)據(jù)結(jié)構(gòu),常數(shù)的聲明,此外還提供了其他函數(shù)聲明,如下面就是一個在VB中讀取iFix實時數(shù)據(jù)的程序段:
Private Sub EDAReadData()
……
G1 = eda_define_group(1, 0)
‘根據(jù)讀取的iFix標(biāo)簽名(TagName)數(shù)組,定義需要讀取的一組標(biāo)簽的實時值“F_CV”
For i = 0 To Tagnum
TagNtf(i) = eda_define_ntf(G1, Nodename, TagName(i), “F_CV”, 0)
Next i
Call eda_lookup(G1)
Call eda_wait(G1)
Call eda_read(G1)
Call eda_wait(G1)
For i = 0 To Tagnum
’將讀取到的每個標(biāo)簽的實時數(shù)據(jù)讀出賦值給變量
eda_err = eda_get_float(G1, TagNtf(i), fvalue)
DataValue(i) = Format(fvalue, “###0.0#”)
Next i
eda_delete_group(G1)
……
End sub
執(zhí)行上述的子程序后,定義在TagName數(shù)組中的iFix實時數(shù)據(jù)庫中的標(biāo)簽名的實時數(shù)據(jù)將被讀出,當(dāng)然,EDA編程接口也支持向iFix的實時數(shù)據(jù)庫寫入值。
2.在Visual C++編程環(huán)境下的應(yīng)用
iFix的應(yīng)用編程開發(fā)包中提供的是標(biāo)準(zhǔn)的C語言的函數(shù)調(diào)用范例,為了讓EDA,HDA編程接口可以在Visual C++集成開發(fā)環(huán)境中正常使用,也需要在Visual C++中進(jìn)行一定的設(shè)置才可以使得整個應(yīng)用程序編譯通過。其設(shè)置步驟如下:
?。?)在Visual C++集成開發(fā)界面的Tools?OptiON?點擊Directories選項卡在“Include Files”列表項中添加一行iFixtools提供的include文件路徑,如:C:iFixtoolsinclude,然后再在“Library Files”列表項中添加一行iFixtools提供的library文件路徑,如:C:iFixtoolslib。
(2)在編程界面的Project?Settings…的Link選項卡中的ObjectLibrary modules下面的文本框中填上:dmacsdba.lib fixtools.lib這2個庫文件。
?。?)在include文件目錄下的“DataType.h”文件中添加一行:#define OS_WNT
(4)在相應(yīng)調(diào)用iFix EDA函數(shù)的C++程序文件中,添加如下的語句聲明使用標(biāo)準(zhǔn)的C語言的函數(shù)調(diào)用:
extern “C” {
#include “fixeda.h”
}
經(jīng)過上述4個步驟就可以在Visual C++集成開發(fā)環(huán)境中調(diào)用EDA,HDA函數(shù)讀寫數(shù)據(jù)了,下面的代碼就是Visual C++中調(diào)用iFix EDA函數(shù)的例子。
// 定義iFix EDA組
eh = eda_define_group(1,0);
if(!eh) exit(1);
//定義NTF
ei[0] = eda_define_ntf(eh, “fix”, “FZ03-30MKA01CE903-XQ01”, “F_CV”, 0);
ei[1] = eda_define_ntf(eh, “fix”, “FZ03-30MKA01CE005-XQ01”, “F_CV”, 0);
eda_lookup(eh);
eda_wait(eh);
eda_read(eh);
eda_wait(eh);
for(i=0;i<2;i++)
{
err=eda_get_float(eh,ei[i],&fvalue);
data[i]=fvalue;
if(err==1)
?。?/p>
MessageBox(“Read iFix Data Error”);
?。?/p>
else
{
m_sData.Format(“%5.3f”,data[i]);
UpdateData(FALSE);
?。?/p>
?。?/p>
eda_delete_group(eh);
3.在Delphi編程環(huán)境下的應(yīng)用
由于iFix的應(yīng)用編程接口主要是面向微軟公司的編程平臺下的語言而開發(fā)的。 這里需要注意的是:在iFix提供的VB模塊中,接口函數(shù)調(diào)用參數(shù)的傳遞是使用指針傳遞的,因此在Delphi的單元文件中應(yīng)注意將函數(shù)參數(shù)的傳遞也使用指針進(jìn)行傳遞的。完成了接口函數(shù)調(diào)用的單元文件后,在Delphi語言中的調(diào)用方法和步驟與VB或VC中的是一樣。下圖1就是在Delphi編程環(huán)境中的iFix EDA編程接口函數(shù)的聲明部分。
圖1:Delphi編程環(huán)境中的應(yīng)用
4.結(jié)論
掌握并靈活應(yīng)用iFix 軟件的EDA,HDA編程接口,我們就可以用自己熟悉的編程語言開發(fā)出符合用戶不同需求的應(yīng)用程序,iFix軟件體系的開放性和靈活性得到了充分的體現(xiàn)。利用該編程接口使得iFix軟件應(yīng)用在DCS系統(tǒng)的人機(jī)界面成為可能,華能新銳控制技術(shù)有限公司的DCS控制系統(tǒng)PineControl的操作員站部分PineHMI就是基于iFix上進(jìn)行了大量的系統(tǒng)二次開發(fā)而完成的,這其中就必須大量運(yùn)用到EDA,HDA編程接口來滿足DCS系統(tǒng)人機(jī)界面部分的一些特殊功能。此外利用該接口還可以拓展iFix軟件的應(yīng)用范圍,如華能國際電力股份公司的發(fā)電廠實時監(jiān)管的廠站側(cè)系統(tǒng)以此為主搭建起來的。編程人員還可以將這些編程接口封裝成ActiveX動態(tài)鏈接庫,ActiveX控件等方式進(jìn)行互聯(lián)網(wǎng)應(yīng)用的擴(kuò)展等方面的應(yīng)用。