组态软件,译自英文SCADA( Supervisory Control and Data Acquisition),即数据采集与监视控制,它是伴随着DCS(Distributed Control System),即集散型控制系统的出现而开始被广大自动化技术人员所熟知的。目前,组态软件已经成为工业控制系统中实现分散控制和集中管理的核心。[2]在现阶段,组态软件中变量库的实现主要有以下几种方法:67255
(1)利用动态链接库技术构建实时数据库系统
采用面向对象编程( object-oriented programming,OOP) 技术,将实时数据库定义为类的形式,各功能模块通过对实时数据库的接口函数调用,实现与实时数据库的关联。
系统运行时按用户组态好的数据文件生成不同类型的实时数据类对象。这些类建立的对象分别对应于现场的每个实时量。由于实时量很多,为了能够方便地管理这些对象,完成对数据的各种操作管理,将管理程序的所有功能封装成一个专用的类Mdataunit,用Mdataunit 类将这些实时数据库的各个对象聚集起来,以便管理。具体的聚集方法是:首先根据不同的数据类建立起不同的List链表,通过链表将这些不同的结构连接起来,然后把这些建立起来的链表作为Mdataunit 的数据成员进行理。以这种方式建立的实时数据库系统具有较强的开放性与实时性。[3]
(2)利用COM技术设计通用数据库存取组件
通过分析COM技术及数据库技术的特点,给出了基于COM技术的通用数据库存取组件的设计和实现方法。
采用当前先进的ADO技术进行各种数据库的连接和数据库存取的基本操作;以ATL技术作为COM的开发工具,设计和开发一进程内服务器组件——通用数据库存取组件,以VC++ MFC开发客户端应用程序,并测试和应用该组件;采用ACCESS、SQL SERVER等各种类型数据库作为后台数据库,通过ODBC接口访问数据库或者直接通过各种专门数据库引擎访问相应的数据库文件,实现了对数据库中数据进行查询、添加和删除等基本操作,也实现了对数据库中表的基本信息进行查询的功能。[4] 论文网
(3)利用.NET构件实现实时数据库构件
基于.NET构件设计并实现了组态软件的核心部分实时数据库构件。从组态软件中的数据分析入手,利用XML文件、内存缓冲区和关系数据库多种存储介质相结合来构造实时数据库,实现过程中利用。NET程序集和反射机制将实时数据库的功能构件化,从而使实时数据库具有更强的扩展性和实时性,提高了组态软件的性能。[5]
(4)利用商用数据库实现组态软件的实时数据库系统
商用数据库的目标就是对大量数据进行有效的管理,成熟的关系型数据库在关系存储,数据查询和恢复,数据备份及复杂事务处理并控制完整性、一致性等方面都已经相当完善,因此,将商业数据库作为组态软件的后台数据库管理数据是十分可行的。具体实现时采用物理内存作为实时数据的主存储器,在内存中完成对数据的存储、管理和实时操作,使用SQL server2000数据库管理历史数据,整个系统采用多线程面向对象的编程方法,在查找上采用直接定位指针的搜索方式。这种方法虽然有一定的局限性,但是确实可行。[6]