工控网首页
>

应用设计

>

iFix软件EDA HDA编程接口的开发应用

iFix软件EDA HDA编程接口的开发应用

2008/11/10 11:45:00

摘要: GE公司的SCADA类软件iFix具有开放的体系结构,其灵活开放的实时数据和历史数据编程接口EDA和HDA在项目开发中具有广泛的应用,本文结合实际工作,具体介绍了EDA和HDA在VB,VC,Delphi编程语言环境中的应用。
关键词:iFix;实时数据库访问接口EDA;历史数据访问接口HAD

The Development and Application of EDA and HDA Programming Interface for iFix
ABSTRACT: The SCADA software iFix from GE has an open software framework. The flexible and open real-time and historical database programming interface EDA and HDA are widely used in project development. This paper introduces the application of EDA and HDA in VB, VC, Delphi programming environment in detail.
Key Words: iFix, Easy data access interface EDA, Historical data access interface HDA

前言
       GE公司的iFix作为工业控制领域内稳定可靠优秀的SCADA软件,具有可靠性高,稳定性好,功能强大的特点,尤其是其iFix数据访问开发工具包(iFix DataBase Access Toolkit)允许应用程序编程人员访问iFix的实时和历史数据,该工具包主要包括了实时数据访问接口(East DataBase Access-EDA),历史数据访问接口(Historical Data Access-HDA)以及创建应用程序所需用到的其他函数(Helper Function)部分的功能。开发工具包中所提供的编程接口函数说明是针对于Visual Basic和标准的C,C++语言,而且并不提供搭建应用程序的具体细节。本文根据实际应用开发经验,给出了如何在Visual Basic, Visual C++和Delphi编程环境下编写应用程序的具体步骤。

1.Visual Basic编程环境下的应用
        在创建的VB应用程序项目中应该首先添加2个模块(Module),这2个模块都是由iFix数据访问开发工具包提供的,其中一个模块是用于EDA编程接口使用的vdba.bas,另外一个模块是用于HDA编程接口使用的fixtools.bas,在vdba.bas模块中主要是基于VB格式的EDA接口函数,数据结构,常数的声明,而在fixtools.bas模块中主要是实现对fixtools.dll动态链接库的声明,基于VB格式的HDA接口函数,数据结构,常数的声明,此外还提供了其他函数声明,如iFix软件的安装路径,iFix是否正在运行,即上面提到的Helper Function声明。编程人员也可以根据自己的需要按照这两个模块的声明建立符合自己需要的VB模块。在添加了编程接口的声明模块后,就可以在VB应用程序中调用这些函数了,如下面就是一个在VB中读取iFix实时数据的程序段:
Private Sub EDAReadData()
…….
G1 = eda_define_group(1, 0)
      '根据读取的iFix标签名(TagName)数组,定义需要读取的一组标签的实时值“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
 '将读取到的每个标签的实时数据读出赋值给变量
    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实时数据库中的标签名的实时数据将被读出,当然,EDA编程接口也支持向iFix的实时数据库写入值。

2.在Visual C++编程环境下的应用
        iFix的应用编程开发包中提供的是标准的C语言的函数调用范例,为了让EDA,HDA编程接口可以在Visual C++集成开发环境中正常使用,也需要在Visual C++中进行一定的设置才可以使得整个应用程序编译通过。其设置步骤如下:
(1)在Visual C++集成开发界面的ToolsOption点击Directories选项卡在“Include Files”列表项中添加一行iFixtools提供的include文件路径,如:C:\iFixtools\include,然后再在“Library Files”列表项中添加一行iFixtools提供的library文件路径,如:C:\iFixtools\lib。
(2)在编程界面的ProjectSettings….的Link选项卡中的Object\Library modules下面的文本框中填上:dmacsdba.lib fixtools.lib这2个库文件。
(3)在include文件目录下的“DataType.h”文件中添加一行:#define OS_WNT
(4)在相应调用iFix EDA函数的C++程序文件中,添加如下的语句声明使用标准的C语言的函数调用:
extern "C" {
#include "fixeda.h"
}
    经过上述4个步骤就可以在Visual C++集成开发环境中调用EDA,HDA函数读写数据了,下面的代码就是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;i<2;i++)
 {
    err=eda_get_float(eh,ei[i],&fvalue);
    data[i]=fvalue;
    if(err==1)
     {
   MessageBox("Read iFix Data Error");
      }
     else
      {
   m_sData.Format("%5.3f",data[i]);
   UpdateData(FALSE);
      }
  }
eda_delete_group(eh);

3.在Delphi编程环境下的应用
        由于iFix的应用编程接口主要是面向微软公司的编程平台下的语言而开发的,因此在Borland公司的Delphi编程软件下要使用EDA,HDA编程接口,需要自己编写相关的接口函数声明等,为了实现这个目的,我们可以根据intellution公司提供的VB下的VDBA.bas和FixTools.bas这2个模块,对他们进行Delphi编程语言语法的改写,形成相应的2个单元(unit)文件VDBA.pas和FixTools.pas,在应用程序部分将这2个单元文件包含(include)进来,因此在Delphi下的开发应用是如何正确地将VDBA.bas和FixTools.bas这2个VB模块翻译成Delphi语言中的单元文件。 这里需要注意的是:在iFix提供的VB模块中,接口函数调用参数的传递是使用指针传递的,因此在Delphi的单元文件中应注意将函数参数的传递也使用指针进行传递的。完成了接口函数调用的单元文件后,在Delphi语言中的调用方法和步骤与VB或VC中的是一样。下图1就是在Delphi编程环境中的iFix EDA编程接口函数的声明部分。
 


图1:Delphi编程环境中的应用

4.结论
        掌握并灵活应用iFix 软件的EDA,HDA编程接口,我们就可以用自己熟悉的编程语言开发出符合用户不同需求的应用程序,iFix软件体系的开放性和灵活性得到了充分的体现。利用该编程接口使得iFix软件应用在DCS系统的人机界面成为可能,华能新锐控制技术有限公司的DCS控制系统PineControl的操作员站部分PineHMI就是基于iFix上进行了大量的系统二次开发而完成的,这其中就必须大量运用到EDA,HDA编程接口来满足DCS系统人机界面部分的一些特殊功能。此外利用该接口还可以拓展iFix软件的应用范围,如华能国际电力股份公司的发电厂实时监管的厂站侧系统以此为主搭建起来的。编程人员还可以将这些编程接口封装成ActiveX动态链接库,ActiveX控件等方式进行互联网应用的扩展等方面的应用。

参考文献:
[1].GE.Intelution公司. iFix Electronic Book
[2].GE.Intelution公司.iFix Database Access Toolkit Help

投诉建议

提交

查看更多评论
其他资讯

查看更多

iFix环境下Dynamos图符组件的开发

iFix软件在发电厂实时监管系统中的应用