【VC++开源代码栏目提醒】:本文主要为网学会员提供“实时数据库 - 宣传企划”,希望对需要实时数据库 - 宣传企划网友有所帮助,学习一下!
1、构件的思想 构件是一种软件元素,具有合同定义的接口和显式的上下文依赖,按照组成标准无需修改即可独立进行部署和组合的软件单元。
基于构件的软件工程CBSE出现于 20 世纪 90 年代,是软件系统开发的基于复用的方法。
它的产生是由于设计者们在使用面向对象的开发过程中所受到的挫折,这种挫折来自于面向对象开发不像人们最初所期待的那样能完成广泛的复用。
CBSE 是定义、实现和集成或组合松散耦合的独立组件成系统的过程。
可复用的软件单元。
它通常具备以下特性: 1标准化。
构件需符合某种标准化的构件模型,此模型可以定义构件的接口、组成及部署。
2独立性。
构件应该是独立的,可以在无其它特殊构件的情况下进行组合和部署。
如果在某些情况下构件需要外部提供的服务,应该在构件的接口描述中显式的标明。
3可组合性。
对于可组合的构件,所有外部交互必须通过公开定义的接口进行。
另外,构件必须提供对自身信息的外部访问,例如它的方法和属性。
4可部署性。
构件需要是自包含、可部署的。
5移植性。
构件应能在不同的运行平台上工作。
1.1 构件模型 目前国际上比较流行的构件模型有 3 种,分别为:COBAR、COM/DCOM和 Java Beans。
1COBAR 公共对象请求代理体系结构commonobjectrequestbrokerarchitecture,COBAR是由 OMG 组织制订的一种标准的面向对象应用程序体系规范。
它为解决分布式处理环境DCE中,硬件和软件系统的互联提出的一种解决方案。
CORBA 定议了一系列 API、通信协议和物件/服务信息模型,用于使异质应用程序能够互相操作,这些应用程序用不同的程序语言编写,运行在不同的平台上。
2COM/DCOM 为 了 适 应 更 加 复 杂 应 用 的 需 要 , Microsoft 公 司 推 出 了 构 件 对 象 模 型component object model,COM,COM 支持同一台计算机上不同进程之间对象的调用。
COM 对象具有多个接口,通过每个接口可以访问一组成员函数。
成员函数的实现一般可以有两种方法:①用动态链接库DLL实现;②作为一个可执行模块 EXE 实现。
3Java Beans Java Beans 是于 1996 年提出的基于 Java 语言的分布对象模型,其构件叫Bean。
JavaBeans 是以对象作为基本构件。
类是对象的模板,而对象即 Bean是由类生成的一个实例。
类中可有多种构造对象的函数。
在 JavaBeans 中,一组对象相互联系,相互作用,有公共的接口,服务于某一应用目的,则这组对象组成一个容器。
1.2 基于 COM 的构件开发 基于 COM 的构件开发是指:在软件开发过程中把功能需求相似的部分按照COM 标准提取成独立的软件实体构件,然后把各个构件组装成系统的软件开发方法。
其中各个构件拥有相对独立的功能,可以在不同的系统中复用。
2、实时数据库设计 实时数据库是用数据库技术管理的所有数据对象的集合。
所谓数据对象是指除了变量的数值特征外,还将与数据相关的其它属性如数据状态、报警限值等以及对数据的操作方法如存盘处理、报警处理等封装在一起,作为一个整体,以对象的形式提供服务。
实时数据库提供管理、刷新和查询数据对象等操作。
,这些现成的数据库并 常见的商业非实时数据库有 O r a c a l、SqlServer 等,不是作为实时数据库而设计的,但可以作为基础开发属于自己的实时数据。
使用商业数据库或
开源数据库作为实时数据库基础有明显的优点,首先,这些数据库提供完善的管理工具,编程人员可以很方便的定义实时数据;其次,这些数据库一般都能使用 SQL 语言进行访问和存储,编程人员可以很容易实现对实时数据的修改和查询。
由于这些数据库并非专为实时数据库而设计,它们大部分功能都不是实时数据库所需要的,这就严重影响了数据的实时性,另外在这些数据库中写入生产逻辑部分的编程不能省。
所以以非实时数据库作为基础而开发的实时数据库多用于哪些对实时要求不高、逻辑简单的环境。
内存数据库是支持实时任务的最佳技术。
内存数据库以内存作为数据库的存储介质,因而存取速度快,和 CPU 之间数据交换快速,避免了数据库存储在外存的速度慢和执行时间不可预知等缺点。
内存数据库要求较大内存,但并不要求任何时刻数据和所有数据都放入内存。
具有暂短有效时间的数据必须保存在内存、存取频率高的数据保存在内存。
内存数据库要具有 I/O 接口,同存储在外部存储器的关系数据库交换数据。
选用内存数据库 MMDB来支持实时事务的实现,它将数据驻留在内存当中,消除了传统的磁盘数据库事物运行的 I/O 瓶颈.从而获得 CPU 直接访问数据库数据的极高存取速度,极大地提高了系统性能和吞吐量。
2.1 实时数据的集成 实时数据库的设计分为驻内和留外两个部分,驻内部分采用内存数据库,存储形式采用顺序结构加索引的方式,通过保持一定容量的内存,在内存中存放数据。
对于数据量大而工控软件无特殊要求的共享数据写到外存关系数据库中,这样可以利用关系数据库对数据进行存储和管理。
整个实时数据库系统方案的设计分为驻内和留外两个部分,驻内部分即为内存数据库,是实时数据库的主体,存储形式可采用顺序结构,B 树结构或多目录搜索哈希技术散列技术。
内存数据库定时进行事务处理,对超过一定时间的数据从内存中清除,写到外存数据库中。
外存数据库即磁盘数据库或历史数据库,用于历史记录分析,报表生成答应或相关决策等等。
本系统历史数据库采用的是Microsoft 公司的数据库产品 Access 数据库。
传统磁盘数据库由于磁盘存取、内外存的传递等使得数据库访问和处理速度大大降低,而利用内存操作数据库能消除 I/O 瓶颈,提高数据库访问速度。
因此,实时数据库系统的高性能要求以内存数据库做底层支持,内存缓冲区的管理也就 管理目标是高优先级事务的执行不应受 I/O 操作问题而受到阻碍,显的更为重要。
,即其所需数据均在内存来保证实时性。
这样事务执行时只存取 “内存数据库”整个实时数据库系统的设计分为内存数据库和关系数据库两个部分,内存数据库的存储方式采用顺序结构加索引的方式,通过保持一定容量的内存,在内存中存放数据,对于超过一定时间的数据从内存中更新或清除写到关系数据库中,这样可以利用关系数据库产品对历史数据进行存储和管理。
后端数据库系统是整个系统的核心作为 Server 端,它的主要职责是保存数据和提供一套方法来管理这些数据,并且应付来自 Client 的连接和数据访问。
系统后端数据库(采用 SQL Server 编程与前台
VC编程通过 ADO 技术进行连接。
、文件系统和内存数据库系统兼 因此,采取传统数据库系统(历史数据库)用,利用多种存储介质来构造系统的实时数据库系统。
采用的存储策略是:①对于需要长期保存的非共享数据如钢丝绳中的最大静拉力计算公式等采用文件管理系统直接存取。
②对于数据量大而工控软件无特殊要求的共享数据如塔式起重机的电动机 g、r 折算系数、与包角α有关的导向滑轮效率值等,将其存放在外存数据库中。
外存数据库采用 Access 数据库,由运行系统通过数据库操作语言DML进行存取。
③对于要更新的数据,例如起升载荷、起升速度的值以及各种经常变化的实时数据为保证最快的响应速度将这些值存放于内存数据库中。
在内存数据库中,具有相同模式的记录集构成数据库中的表,一个数据库中可以有多个不同模式的表。
利用面向对象的设计方法,把 C语言中类映射成数据库中的表。
这样类中的成员变量就可以对应于表中的字段,而类的实例集对应于表的记录集。
这样通过使用外存数据库Access 数据库、文件系统和内存数据库实时数 内存数据库 数据库模块 历史数据库 Access2003 文件系统 构造图库 模块化 参数化设计
VC交 设计过 Solidwork 自动建模 互平台 自动装配 程 运动仿真 图 4 软件构架据库,既保证了数据的共享性、独立性、安全性、完整性,又节约了内存,保证了系统的响应速度。
实时数据库就是其数据和事务都有显式定时限制的数据库。
系统的正确性不仅依赖于事务的逻辑结果,而且依赖于逻辑结果所产生的时间。
它并不是数据库技术和实时系统的简单结合,它在概念、理论、技术、方法和机制上都具备自身的特点,如:1数据库的结构和组织;2数据处理的优先级控制、调度和并发协议与算法;3数据和事务特性的语义及其一致性、正确性的关系;4数据查询/事务处理算法与优化;5I/O 调度、恢复、通信的协议与算法等。
这些问题都彼此相关。
2.2 历史数据的存储和压缩 实时数据库首先要提供高速的数据采集和处理能力。
能不间断地对大量生产数据进行采集、选择、过滤、存储并及时响应各种不同的数据服务请求,这就要求实时数据库不但具有良好的内存分配管理能力、多通道的内存缓冲区、独特的数据流控制结构,还要提供大量针对不同控制系统的标准接口。
在塔式起重机的机构计算过程中,产生的大量的数据需以一定的精度快速高效存储。
为提高磁盘的存储效率,必须对数据进行数据压缩。
系统不仅要有较高的压缩率,同时也要有很高的解压缩速度和快速的数据追加、插入能力。
压缩算法通常根据数据变化趋势进行精度可调的有损压缩,在历史数据查询时通常通过数据插值快速解压缩。
建立拓扑模型数据接口。
拓扑分析是系统的重要的功能模块,拓扑的实现需要系统的设备数据,因此需要建立设备数据的接口,提取数据库中的设备数据。
拓扑分析功能实现以后,数据需要返回给数据库,最终完成系统拓扑的生成。
2.3 SQL 语言 在
VC 中要想灵活地操作数据库,完成各种复杂操作,就需要掌握 SQL 语言。
SQL 是英文 Structure Query Language 的缩写,作为关系数据库管理系统通用的结构化查询语言,几乎所有的关系型数据库系统都支持它。
SQL 具有数据定义功能、数据更新功能、数据查询功能。
由于 SQL 具有功能丰富、使用方式灵活、语言简洁易学等突出特点。
SQL 语言的组成: SQL 语言由三部分组成,包含了数据库生成、维护和安全性问题的所有内容。
它们是: 数据定义语言 DDLData Definition Language 数据控制语言 DCLData Control Language 数据操纵语言 DMLData Manipulation Language DDL 提供完整定义数据库必需的所有内容,包括数据库生成后的结构修改、删除功能。
DDL 语言是 SOL 中用来生成、修改、删除数据库基本要素的部分。
DCL 用于数据访问权限的控制。
DML 是 SOL 中运算数据库的部分,它是对数据库中的数据输入、修改及提取的有力工具。
DML 语句读起来像普通的英语句子,非常容易理解。
但是它也可以是非常复杂的,可以包含有复合表达式、条件、判断、子查询等等。
SQL 为许多任务提供了命令,包括: ●查询数据。
在表中插入、修改和删除记录。
建立、修改和删除数据对象。
●控制对数据和数据对象的存取。
●保证数据库一致性和完整性。
●以前的数据库管理系统为上述各类操作提供单独的语言,而 SQL 将全部任务统一在一种语言中。
3是所有关系数据库的公共语言 由于所有主要的关系数据库管理系统都支持 SQL 语言,用户可将使用 SQL的技能从一个关系数据库转到另一个。
所有用 SQL 编写的程序都是可以移植的。
3、设计理念3.1 模块化设计 模块化设计是将机械产品中同一功能的单元,设计成具有不同用途或性能的、可以互换选用的模块,用以更好地满足用户需要的一种设计方法。
模块化设计的核心就是要设计一系列的模块。
所谓模块是“一组具有同一功能和结合要素指联接部位的形状、尺寸和联接件之间的配合或啮合参数等,而有不同用途或性能和不同结构且能互换的各个单元零件、组件、部件或系统,或是能增加机械产品功能的单元”。
本文主要围绕塔机的机构组成计算设计进行研究,将塔机计算机辅助设计系统主要划分为数据库模块、图形模块、起升机构设计模块、变幅机构设计模块、回转机构设计模块、运行机构设计模块。
根据塔机计算机辅助设计系统各个模块的相互联系,应用参数化设计方法,在统一的数据交换技术的基础上实现数据的合理流动,得到准确可靠的计算结果。
十一个模块都定义了只包含本模块功能的接口函数 各个模块只暴露出其接口供其他模块调用 各模块只对与本模块有关的数据进行操作 对于各模块共有的数据则通过调用系统管理模块的接口来操作 若一模块需要操作其他模块的数据 只能通过调用其他模块的接口来调用 这样把访问或操作某一数据的功能模块放在一起 而其他内容排除在外增强了模块的内聚性 当数据需要变更时 只需修改对应模块的
代码就行了。
通过降低依赖关系 仅传递数据的方式很好的弱化了模块之间的藕合性 增强了模块的独立性。
其实整个面向对象的系统设计的过程是一个不断细化的过程 同时也是一个组织分工的细化过程 由模块细化 层次细化 类细化和方法细化等过程形成明确的分工促进组织的工作效率。
图形模块的主要功能是实现参数化绘图和模拟显示。
经过设计产品的求解、分析,利用得到的数据,通过图形模块可以得到产品的二维工程图、三维造型图,以直观显示和指导生产。
在塔机计算机辅助设计平台中,图形的生成也是通过程序来实现的。
图形可以由软件提供的功能绘出,也可以经过 CAD 系统,用 IGES 文件、SAI 文件、Pro甩文件、UG 文件等与 PARA 参数导入,因此设计者可以利用现成的绘图软件或者自己编写程序
代码来完成图形的生成。
在塔机设计中,常常需要结合专业情况,将设计计算、数据处理和图形绘制等进行综合处理,仅靠绘图软件自身的功能,是难以做到的,这个问题的解决,有赖于对其进行二次开发。
目前,许多软件的绘图功能十分强大,比如 AutoCAD、巧 Solid Works、UG、Pro/E 等等,而且这些软件大都提供接口包,有利于设计者进行二次开发,本文就利用 Visual C对 Solid Works 进行二次开发,主要是编制接口程序,同时也可以在高级语言下编程实现参数化绘图,从而完成设计任务。
3.2 面向对象设计 随着计算机技术的进一步发展,特别是具有图形用户界面软件的广泛使用,使得面向对象程序设计成为工程软件开发的主流技术。
面向对象程序设计是一种程序设计范型,同时也是一种程序开发的方法论。
这一技术的使用为程序重用提供了有力的支持,大幅减少了冗余的
代码,降低了软件开发及维护的难度,从而降低了成本,提高了软件开发的效率及使用的可靠性。
面向对象程序设计Object Oriented Programming,简记为 OOP,是一种把面向对象的思想应用于软件开发过程中,指导程序设计的系统方法,是建立在“对象”概念基础上的程序设计方法学。
对象是由数据和允许的操作方法和属性组成的封装体,与客观实体有直接对应关系,一个对象类定义了具有相似性质的一组对象。
而继承性是对具有层次关系的类的属性和操作进行共享的一种方式。
所谓面向对象就是基于对象概念,以对象为中心,以类和继承为构造机制,来认识、理解、刻画客观世界和设计、构建相应的软件系统。
面向对象设计方法以对象为基础,利用特定的软件工具直接完成从对象客体的描述到软件结构之间的转换。
这是面向对象设计方法最主要的特点和成就。
面向对象设计方法的应用解决了传统结构化开发方法中客观世界描述工具与软件结构的不一致性问题,缩短了开发周期,解决了从分析和设计到软件模块结构之间多次转换映射的繁杂过程,是一种很有发展前途的系统开发方法。
4.SolidWorks 二次开发 应用
VC6.0 创建.exe 文件来调用 solidworks,那就不这么简单了,这需要OLE 技术,比如,我们要在
VC6.0 下创建了单文档的 EXE 应用程序: ,然后输入文件名Project name: solidworks 选择 MEC AppWizard(exe)选择目录:D:单击 OK选择 single document;点击 next默认选择。
然后再 。
点击 next;一直到最点击 next,在最下面,将 Automation 选上(一定要选)后,点击 Finish。
到此,我们生成了一个具有自动化功能的单文档应用程序。
接 下 来 , 我 们 要 加 载 soliworks 类 型 库 : 选 择VIEW--ClassWizard--Automation 选项卡--点击 Add Class 按钮,选择 From atype Library然后我们寻找 solidworks 安装目录找到 solidworks 文件夹,在该文件夹里找到 sldworks.tlb 文件,选则打开。
这时出现 Confirm Class(确定类)对话框,选择第一个:ISldWorks,然后,点击 ok,再点击 ok;这时,你会发现,在 SourceFiles 里多了 sldworks.cpp 文件,在 HeaderFiles 里多了sldworks.h 文件,这便是我们加载的类型库。
打开 sldworks.h,会看到里面封装了很多 slidworks 的应用函数,我们先不说。
加载完成之后,我们便开始编程了。
我们要使生成的应用程序中的文件--新建命令来打开 solidworks,所以选择 View--ClassWizard 选择 MEssage Maps 选项卡,在 Class Name 中选择CSolidworksView 类,在 Object IDs 选择 ID_FILE_NEW.在 message 中选择Command ,然后单击 Add Function 按钮,单击 ok ,在单击 Edit Code ;在CSolidworksView::OnFileNew 中键入以下程序: ISldWorks m_pSldWorks m_pSldWorks.CreateDispatchSldWorks.Application ASSERTm_pSldWorks.m_lpDispatch m_pSldWorks.SetVisibleTRUE 当然,我们还要包含 sldwoks.h,即include sldworks.h 然后编译程序。
单文档程序运行,选择文件--新建,接着,solidworks 程序便启动起来了。
m_pSldWorks.SetVisibleTRUE这句的用途是使 solidworks 显式启动,当然 m_pSldWorks.SetVisibleFALSE便是隐藏调用了。
以上仅仅是 COM 技术的一个小小的应用而已,以后还会经常接触的。
1张志檩.实时数据库原理及应用M.北京:中国石化出版社2001. 所谓参数化设计删是指零件和装配的物理形状由其特征属性值主要尺寸驱动,用户可以随时修改特征尺寸或其它属性。
塔式起重机设计主界面原始参数库 用户原始参数输入 机构选择计算 零部件选择 零部件参数 结果输出 数据库 机构设 机构设 计过程 计数据 文 档 文 档 结束
上一篇:
基于Spring框架的MVC控制器的优化与改进
下一篇:
首鼠两端