基于Linux的嵌入式实时数据库的设计
在现代化的工业生产现场,产生了大量的生产数据和控制数据,使得嵌入式环境下的数据管理成为工业控制系统中的重要部分,这就要求监控软件必须具备强大的数据处理能力,为人们提供实时、可靠的数据,以反映现场运行的状况,以便进行相应的控制操作。
嵌入式环境中数据的正确性不仅依赖于数据的逻辑结果,而且依赖于逻辑结果产生的时间。如何有效管理这些大量的、时效性强且有严格时序的数据,如何使之以高可靠性、高实时性和大吞吐量的方式进行处理是开发嵌入式系统必须解决的首要问题。
1 实时数据的处理过程
在监控系统中,需要对大量的实时数据进行处理,处理过程包括:现场数据的实时采集;对实时数据进行处理和存储;对结果进行分析、判断和报警;对历史数据的处理等,如图1。
将所有的实时数据集中进行处理,建立实时数据库,是嵌入式系统的一个中心环节。实时数据库中的很大一部分数据是从生产和测量现场实时采集到的数据,因此及时准确地采集数据是整个控制系统正常工作的基本前提。另外还有一些计算数据、控制数据和管理数据。
实时数据处理是在监控系统中对实时数据库中变量的值进行的操作。包括对数据的显示,存储,报警,管理,提供控制参数等,同时它还可以根据需要把有关信息以事件的方式发送给系统的其它部分,以便触发相关事件,进行实时处理。
历史数据处理是对定时存储到历史数据库中的数据进行处理,主要操作包括对原始数据的汇总、查询,可以以曲线、报表等形式将数据形象地显示出来。嵌入式设备存储容量有限,系统中的大量数据将通过通信接口定期送入远程关系数据库中保存。
在嵌入式系统中,实时数据库从本质上说不是一个真正意义上的数据库系统,只是一个由应用程序管理的内存缓冲区,有时又称为“内存数据库”,是一个供多个实时任务共同使用的共享数据区,是嵌入在监控软件中、与应用程序不可分割的部分,主要完成数据的存、取操作,不具有独立性。一个完整的嵌入式实时数据库系统除了内存数据库外,还应包括历史数据库、数据库管理等。因此在构建嵌入式实时数据库时,应考虑系统的实时性、开销大小、系统性能、可靠性,以及如何高效地利用嵌入式系统的有限资源、提高数据的存取速度、进行数据保护、数据交换、算法的优化、事务的优先级分派、事务调度等。
2 嵌入式组态软件中的实时数据库的开发
随着DCS的发展,利用组态软件来支持工业应用软件的开发,随着Linux在嵌入式技术领域应用的不断推广和深入,许多工控软件都基于Linux开发。从结构上看,基于Linux的嵌入式图形化组态软件(LEGCS:Linux-based Embedded Graphic Configuration Software)由系统开发环境和系统运行环境两部分组成。系统开发境是作为一个平台开发工具运行在PC机上,主要完成画面绘制、指定组态的具体对象和内容、完成设备属性设定、设定控制策略、I/O管理等操作来对控制现场进行全面的描述与设置,所有设定的结果保存到实时数据库中,供系统运行时使用。保存到实时数据库中的信息主要包括:现场数据、开关量、仪表值、实时时钟、设备属性等。运行环境实际就是工业控制应用软件,运行在嵌入式设备上,实时采集现场数据存入实时数据库,读取其中的数据并进行解析,在目标机上显示组态内容,实现设备的组态控制和仿真。维系组态环境与运行环境的纽带是实时数据库,如图 2。
数据库生成模块运行在开发环境,主要完成如全局变量、内存变量的数据定义,设置变量处理方式等,全局变量直接与工业现场设备状态(如反应容器压力、阀门开关状态等)相关,这些数据在运行环境中由I/O 驱动模块按组态要求实时采集;内存变量是组态软件中用到的中间变量。实时数据生成模块将组态信息存放到实时数据库中。在运行环境,由实时数据库运行模块执行数据采集,响应用户控制请求,维护图形界面与实时数据库、被控对象之间的数据流动。运行环境中的实时曲线显示和趋势模块定时从实时数据库中获取数据,数据存储模块将实时数据库中的数据存储在磁盘上作为历史数据。
3 LEGCS系统中实时数据库的的设计
3.1 实时数据库的结构设计
实时数据按其性质可分为模拟量、开关量、数字量、字符串等多种,根据现场数据类型和系统所用到的系统常量和中间变量,在LEGCS中定义了八种变量类型:内存离散型、I/O离散型、内存整数型、I/O整数型、内存实数型、I/O实数型、内存字符串型、I/O字符串型,其中内存变量类型用于创建系统常量和中间变量,I/O变量类型用于处理现场采集的数据。对各种类型的变量来说,均有其取值范围:离散型变量只能取0和1,整型变量与一般程序设计语言中的有符号长整型变量类似,用于表示带符号的整型数据。实型变量用于表示浮点数据。字符串变量用于记录一些特定含义的字符串。每类变量一一对应于一类实时数据,它以结构的形式来管理,变量的数据结构RTVariant定义如表1。
linux操作系统文章专题:linux操作系统详解(linux不再难懂)
评论