当前位置:首页 > 嵌入式 > 嵌入式教程
[导读]iFix软件EDA HDA在VB,VC,Delphi编程语言环境中的应用

0.前言

  iFIX是全球最领先的HMI/SCADA自动化监控组态软件,已有超过300,000套以上的软件在全球运行。世界上许多最成功的制造商都依靠 GE Fanuc的iFIX软件来全面监控和分布管理全厂范围的生产数据。在包括冶金、电力、石油化工、制药、生物技术、包装、食品饮料、石油天然气等各种工业应用当中,iFIX 独树一帜地集强大功能、安全性、通用性和易用性于一身,使之成为任何生产环境下全面的HMI/SCADA解决方案。 利用iFIX各种领先的专利技术,可以帮助企业制定出更快、更有效的商业及生产决策,以使企业具有更强的竞争力。

  GE Fanuc 的iFIX是世界领先的工业自动化软件解决方案,提供了生产操作的过程可视化、数据采集和数据监控。iFIX可以帮助您精确地监视、控制生产过程,并优化生产设备和企业资源管理。它能够对生产事件快速反映,减少原材料消耗,提高生产率,从而加快产品对市场的反应速度,提高用户收益。

  GE公司的iFix作为工业控制领域内稳定可靠优秀的SCADA软件,具有可靠性高,稳定性好,功能强大的特点,尤其是其iFix数据访问开发工具包(iFix DataBase Access Toolkit)允许应用程序编程人员访问iFix的实时和历史数据。开发工具包中所提供的编程接口函数说明是针对于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接口函数,数据结构,常数的声明,此外还提供了其他函数声明,如下面就是一个在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:iFixtoolsinclude,然后再在“Library Files”列表项中添加一行iFixtools提供的library文件路径,如:C:iFixtoolslib。

  (2)在编程界面的Project?Settings…的Link选项卡中的ObjectLibrary 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的应用编程接口主要是面向微软公司的编程平台下的语言而开发的。 这里需要注意的是:在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控件等方式进行互联网应用的扩展等方面的应用。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: 驱动电源

在工业自动化蓬勃发展的当下,工业电机作为核心动力设备,其驱动电源的性能直接关系到整个系统的稳定性和可靠性。其中,反电动势抑制与过流保护是驱动电源设计中至关重要的两个环节,集成化方案的设计成为提升电机驱动性能的关键。

关键字: 工业电机 驱动电源

LED 驱动电源作为 LED 照明系统的 “心脏”,其稳定性直接决定了整个照明设备的使用寿命。然而,在实际应用中,LED 驱动电源易损坏的问题却十分常见,不仅增加了维护成本,还影响了用户体验。要解决这一问题,需从设计、生...

关键字: 驱动电源 照明系统 散热

根据LED驱动电源的公式,电感内电流波动大小和电感值成反比,输出纹波和输出电容值成反比。所以加大电感值和输出电容值可以减小纹波。

关键字: LED 设计 驱动电源

电动汽车(EV)作为新能源汽车的重要代表,正逐渐成为全球汽车产业的重要发展方向。电动汽车的核心技术之一是电机驱动控制系统,而绝缘栅双极型晶体管(IGBT)作为电机驱动系统中的关键元件,其性能直接影响到电动汽车的动力性能和...

关键字: 电动汽车 新能源 驱动电源

在现代城市建设中,街道及停车场照明作为基础设施的重要组成部分,其质量和效率直接关系到城市的公共安全、居民生活质量和能源利用效率。随着科技的进步,高亮度白光发光二极管(LED)因其独特的优势逐渐取代传统光源,成为大功率区域...

关键字: 发光二极管 驱动电源 LED

LED通用照明设计工程师会遇到许多挑战,如功率密度、功率因数校正(PFC)、空间受限和可靠性等。

关键字: LED 驱动电源 功率因数校正

在LED照明技术日益普及的今天,LED驱动电源的电磁干扰(EMI)问题成为了一个不可忽视的挑战。电磁干扰不仅会影响LED灯具的正常工作,还可能对周围电子设备造成不利影响,甚至引发系统故障。因此,采取有效的硬件措施来解决L...

关键字: LED照明技术 电磁干扰 驱动电源

开关电源具有效率高的特性,而且开关电源的变压器体积比串联稳压型电源的要小得多,电源电路比较整洁,整机重量也有所下降,所以,现在的LED驱动电源

关键字: LED 驱动电源 开关电源

LED驱动电源是把电源供应转换为特定的电压电流以驱动LED发光的电压转换器,通常情况下:LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: LED 隧道灯 驱动电源
关闭