<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > iFix軟件EDA HDA在VB,VC,Delphi編程語(yǔ)言環(huán)境中的應用

iFix軟件EDA HDA在VB,VC,Delphi編程語(yǔ)言環(huán)境中的應用

作者: 時(shí)間:2012-09-27 來(lái)源:網(wǎng)絡(luò ) 收藏

0.前言

本文引用地址:http://dyxdggzs.com/article/148376.htm

  iFIX是全球最領(lǐng)先的HMI/SCADA自動(dòng)化監控組態(tài),已有超過(guò)300,000套以上的在全球運行。世界上許多最成功的制造商都依靠 GE Fanuc的iFIX來(lái)全面監控和分布管理全廠(chǎng)范圍的生產(chǎn)數據。在包括冶金、電力、石油化工、制藥、生物技術(shù)、包裝、食品飲料、石油天然氣等各種工業(yè)當中,iFIX 獨樹(shù)一幟地集強大功能、安全性、通用性和易用性于一身,使之成為任何生產(chǎn)下全面的HMI/SCADA解決方案。 利用iFIX各種領(lǐng)先的專(zhuān)利技術(shù),可以幫助企業(yè)制定出更快、更有效的商業(yè)及生產(chǎn)決策,以使企業(yè)具有更強的競爭力。

  GE Fanuc 的iFIX是世界領(lǐng)先的工業(yè)自動(dòng)化軟件解決方案,提供了生產(chǎn)操作的過(guò)程可視化、數據采集和數據監控。iFIX可以幫助您精確地監視、控制生產(chǎn)過(guò)程,并優(yōu)化生產(chǎn)設備和企業(yè)資源管理。它能夠對生產(chǎn)事件快速反映,減少原材料消耗,提高生產(chǎn)率,從而加快產(chǎn)品對市場(chǎng)的反應速度,提高用戶(hù)收益。

  GE公司的作為工業(yè)控制領(lǐng)域內穩定可靠?jì)?yōu)秀的SCADA軟件,具有可靠性高,穩定性好,功能強大的特點(diǎn),尤其是其數據訪(fǎng)問(wèn)開(kāi)發(fā)工具包( DataBase Access Toolkit)允許程序編程人員訪(fǎng)問(wèn)iFix的實(shí)時(shí)和歷史數據。開(kāi)發(fā)工具包中所提供的編程接口函數說(shuō)明是針對于Visual Basic和標準的C,C++語(yǔ)言,而且并不提供搭建程序的具體細節。本文根據實(shí)際應用開(kāi)發(fā)經(jīng)驗,給出了如何在Visual Basic, Visual C++和編程下編寫(xiě)應用程序的具體步驟。

1.Visual Basic編程下的應用

  在創(chuàng )建的應用程序項目中應該首先添加2個(gè)模塊(Module),這2個(gè)模塊都是由iFix數據訪(fǎng)問(wèn)開(kāi)發(fā)工具包提供的,其中一個(gè)模塊是用于編程接口使用的vdba.bas,另外一個(gè)模塊是用于編程接口使用的fixtools.bas,在vdba.bas模塊中主要是基于格式的接口函數,數據結構,常數的聲明,而在fixtools.bas模塊中主要是實(shí)現對fixtools.dll動(dòng)態(tài)鏈接庫的聲明,基于格式的接口函數,數據結構,常數的聲明,此外還提供了其他函數聲明,如下面就是一個(gè)在VB中讀取iFix實(shí)時(shí)數據的程序段:

  Private Sub ReadData()

  ……

  G1 = eda_define_group(1, 0)

  ‘根據讀取的iFix標簽名(TagName)數組,定義需要讀取的一組標簽的實(shí)時(shí)值“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

  ’將讀取到的每個(gè)標簽的實(shí)時(shí)數據讀出賦值給變量

  eda_err = eda_get_float(G1, TagNtf(i), fvalue)

  DataValue(i) = Format(fvalue, “###0.0#”)

  Next i

  eda_delete_group(G1)

  ……

  End sub

  執行上述的子程序后,定義在TagName數組中的iFix實(shí)時(shí)數據庫中的標簽名的實(shí)時(shí)數據將被讀出,當然,EDA編程接口也支持向iFix的實(shí)時(shí)數據庫寫(xiě)入值。

2.在Visual C++編程環(huán)境下的應用

  iFix的應用編程開(kāi)發(fā)包中提供的是標準的C語(yǔ)言的函數調用范例,為了讓EDA,編程接口可以在Visual C++集成開(kāi)發(fā)環(huán)境中正常使用,也需要在Visual C++中進(jìn)行一定的設置才可以使得整個(gè)應用程序編譯通過(guò)。其設置步驟如下:

 ?。?)在Visual C++集成開(kāi)發(fā)界面的Tools?OptiON?點(diǎn)擊Directories選項卡在“Include Files”列表項中添加一行iFixtools提供的include文件路徑,如:C:iFixtoolsinclude,然后再在“Library Files”列表項中添加一行iFixtools提供的library文件路徑,如:C:iFixtoolslib。

 ?。?)在編程界面的Project?Settings…的Link選項卡中的ObjectLibrary modules下面的文本框中填上:dmacsdba.lib fixtools.lib這2個(gè)庫文件。

 ?。?)在include文件目錄下的“DataType.h”文件中添加一行:#define OS_WNT

 ?。?)在相應調用iFix EDA函數的C++程序文件中,添加如下的語(yǔ)句聲明使用標準的C語(yǔ)言的函數調用:

  extern “C” {

  #include “fixeda.h”

 ?。?/p>

  經(jīng)過(guò)上述4個(gè)步驟就可以在Visual C++集成開(kāi)發(fā)環(huán)境中調用EDA,HDA函數讀寫(xiě)數據了,下面的代碼就是Visual C++中調用iFix EDA函數的例子。

  // 定義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;i2;i++)

 ?。?/p>

  err=eda_get_float(eh,ei[i],fvalue);

  data[i]=fvalue;

  if(err==1)

 ?。?/p>

  MessageBox(“Read iFix Data Error”);

 ?。?/p>

  else

 ?。?/p>

  m_sData.Format(“%5.3f”,data[i]);

  UpdateData(FALSE);

 ?。?/p>

 ?。?/p>

  eda_delete_group(eh);

3.在編程環(huán)境下的應用

  由于iFix的應用編程接口主要是面向微軟公司的編程平臺下的語(yǔ)言而開(kāi)發(fā)的。 這里需要注意的是:在iFix提供的VB模塊中,接口函數調用參數的傳遞是使用指針傳遞的,因此在的單元文件中應注意將函數參數的傳遞也使用指針進(jìn)行傳遞的。完成了接口函數調用的單元文件后,在Delphi語(yǔ)言中的調用方法和步驟與VB或中的是一樣。下圖1就是在Delphi編程環(huán)境中的iFix EDA編程接口函數的聲明部分。




圖1:Delphi編程環(huán)境中的應用


4.結論

  掌握并靈活應用iFix 軟件的EDA,HDA編程接口,我們就可以用自己熟悉的開(kāi)發(fā)出符合用戶(hù)不同需求的應用程序,iFix軟件體系的開(kāi)放性和靈活性得到了充分的體現。利用該編程接口使得iFix軟件應用在DCS系統的人機界面成為可能,華能新銳控制技術(shù)有限公司的DCS控制系統PineControl的操作員站部分PineHMI就是基于iFix上進(jìn)行了大量的系統二次開(kāi)發(fā)而完成的,這其中就必須大量運用到EDA,HDA編程接口來(lái)滿(mǎn)足DCS系統人機界面部分的一些特殊功能。此外利用該接口還可以拓展iFix軟件的應用范圍,如華能?chē)H電力股份公司的發(fā)電廠(chǎng)實(shí)時(shí)監管的廠(chǎng)站側系統以此為主搭建起來(lái)的。編程人員還可以將這些編程接口封裝成ActiveX動(dòng)態(tài)鏈接庫,ActiveX控件等方式進(jìn)行互聯(lián)網(wǎng)應用的擴展等方面的應用。

c語(yǔ)言相關(guān)文章:c語(yǔ)言教程


c++相關(guān)文章:c++教程




評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>