数据库组件

2024-05-13

数据库组件(精选9篇)

数据库组件 篇1

在电子装备中, 射频电缆组件用于实现各级产品间电气互联, 是其中的重要组成部分, 被大量使用。与其他组成部件相比, 射频电缆组件具有一定的特殊性, 这使其常常成为整个产品研发制造中的薄弱环节甚至瓶颈。随着3D技术的发展, 在电子装备行业中越来越多企事业和科研院所已采用3D软件进行产品研制, 主流软件如UG、CATIA、Pro/E等大多均提供有线缆设计模块, 为射频电缆组件设计制造能力的提升提供了可能性, 但这些线缆设计模块提供的大多为基础功能, 面对不同实际应用针对性不强。故要有效实现3D技术对射频电缆组件设计制造能力的提升, 除有实体模型外还需进一步结合实际情况所面临的问题进行分析研究, 并找到解决措施和方法。

1.射频组件分类及特点

根据使用的缆材类型射频电缆组件可分为柔性射频组件和半刚射频组件两大类:

(a) 柔性射频组件

由SFF等柔软类型线缆和SMA、N等类型射频电缆头组成, 互联形式通常为一对一, 近几年因产品集成化、小型化发展, 互联形式也出现一对多甚至多对多。其制造过程无需进行折弯成型, 只需将电缆与两端连接器进行装配即可, 故其外形指标重点关注总长。

(b) 半刚射频组件

由SFT等半刚类型线缆和SMA、N等类型射频电缆头组成, 互联形式均为一对一。其制造过程除需将电缆与两端连接器进行装配外, 还需进行折弯成型, 故其外形指标除需关注总长外还需重点关注成型形状。

2.问题现状

2.1射频电缆组件设计

在很长一段时期, 2D绘图软件是许多企业进行射频电缆组件设计的工具。一般射频电缆组件设计主要由电气设计人员利用Auto CAD和Excel完成二维图和明细表拟制, 如图1、表1所示, 两者包含不同信息, 相互配合实现对设计要求的表达。

(a) 二维图

内容包括物理外形 (通过长度标注结合表格) 、器材位置 (通过序号指引) 、电气指标 (通过文字说明) 、其他要求 (通过文字说明) 、互联关系 (通过表格) 、印字标识 (通过表格) 。

(b) 明细表

内容包括器材序号 (通过数字) 、器材类型 (通过器件代号结合名称型号) 、器件用量 (通过单位并结合数值) 。

上述信息众多看似完整表达了设计要求, 实则存在问题。首先, 在2D设计模式下准确长度较难在设计阶段及时获得, 故初期设计文件中的长度信息多为参考, 不具使用性, 即使其值经过经验预估, 往往误差大, 欠缺准确性。第二, 对半刚组件而言, 在2D设计模式下成型信息更难以及时地在设计阶段获得, 即使后期想获取此部分信息也存在着一定的难度。故长期以来, 半刚组件图示表达方式与柔性组件完全相同, 如图1和表1, 该方式无法准确反映组件外形信息, 表达不合理。第三, 设计输出的正确性和规范性主要依赖个人经验或习惯, 往往造成连接器及线缆与辅材热缩管间的合理性匹配性存在问题, 各器件图示表达不合理不统一, 这对电气设计人员而言非其所长, 若要做到往往费时费力。

2.2射频电缆组件制造

外形长度和分段成型对射频电缆组件而言是极其重要的设计信息, 其缺失给其制造带来了很大困难。

很长时期, 通常采取实物配做方式, 即在相关零部件均已加工组装到位后再由电装人员根据互联关系现场规划射频电缆组件的路径、确定长度。该制造模式在产品研发周期缩短、小型化要求提高、质量控制提升的趋势下, 越来越凸显诸多问题, 如质量不稳定、一致性较差、装配效率低、制造周期长、制造成本难控等。

为解决上述问题, 也曾尝试采用实物打样方式。即前期通过在产品实物上进行试做验证得到标准样件, 再按标准样件进行测绘, 随后对测绘数据进行计算整理, 最终形成有效的加工数据。该途径在一定程度上缓解了制造的困境和瓶颈, 但因过程往往反复迭代, 费时费力, 且准确性受样件自身精度和测量误差影响较大, 加之后期组件制造误差, 精度控制较难, 尤其对半刚组件而言难度更大。

3.需求分析

3.1总体需求

为解决上述射频电缆组件设计制造面临的困难, 提升设计手段是必然需求。目前借助3D软件已完全可以基于结构模型实现射频电缆组件虚拟设计与仿真, 如图2所示。通过对3D模型中相关参数的提取和必要处理形成各类有效输出, 使射频电缆组件虚拟设计与仿真能够实实在在发挥作用, 实现应用落地。此项工作总体需求归结为两点:适用性和高效性。

3.2详细需求

3.2.1适用性

针对不同应用场合对射频电缆组件信息需求是不同的, 故对3D模型进行数据提取、信息输出时需有针对性。如设计用文件侧重最终结果, 制造用文件侧重中间过程, 制造过程又由若干工序组成, 各工序面对的操作人员不同、工作内容也不同, 需根据不同使用对象、使用目的确定不同类型信息输出, 并确定其组成要素和格式表达。

(a) 设计文件

要求要素齐全, 包含3.1所述二维图和明细表及上述全部信息, 格式表达满足标准化要求。柔性组件和半刚组件外形表达采用不同方式, 其中前者沿用原有方式, 采用端到端直线示意图, 后者采用准确3D投影视图, 反映实际折弯成型状态。

(b) 制造文件

针对下料、打标、切剥、成型等不同工序分别创建下料表、标识汇总表、手动成型表、自动成型文件等, 同时为利于物料采购、成本核算等创建器材汇总表。其中下料表核心要素含线缆类型、单位、用量, 标识汇总表核心要素含标识类型、单位、用量、打标内容, 折弯成型表核心要素含分段长度、折弯角度、扭转角度、折弯半径、始末端信息, 器材汇总表核心要素含物料种类、单位、用量。

3.2.2高效性

根据上述适用性要求, 为满足射频电缆组件设计制造所需应产生若干文件输出, 各份文件信息要素众多且相互间应保持一致, 同时达到标准化、规范化要求, 在满足上述工作质量要求的同时需考虑降低人员工作难度, 提高工作效率。

(a) 所有输出均由软件自动从3D模型中提取相关参数并结合必要辅助信息自动创建产生, 其中大部分内容由程序自动填写, 人员仅需在此基础上做少量完善修改即可发布使用。

(b) 同级产品中所有射频电缆组件设计文件批量创建。

(c) 射频电缆组件中所用各类热缩管型号及用量由程序按规则自动匹配选择, 并自动填写在相应输出文件中。

4.技术途径

为满足上述需求, 技术途径如下:

(a) 根据柔性组件和半刚组件自身特点并结合3D软件功能, 柔性组件采用3D软件线束模块进行实体设计, 刚性组件采用3D软件管道模块进行实体设计, 如图3、图4所示。

(b) 根据不同应用场合定制不同模板供程序调用输出, 包括图框模板、图样模板、明晰表模板、下料表模板、标识汇总表模板、手动成型表模板、自动成型数据格式定义, 表2为手动成型表模板。

(c) 制定辅助文件格式及其内容, 用于必要时程序对调用3D模型参数的合理处理与判断, 包括余量添加表、器件类型匹配表、基准误差修正表、组件接线及分组表等。

(d) 制定上述各类模板及辅助文件命名规范及调用规则。

(e) 对3D软件进行二次开发, 根据需求梳理详细功能项及其实现方式, 如操作界面、控件方式、操作流程等。

5.实现成果

按上述技术途径开发出的功能控件如图5所示, 各功能控件完全集成嵌入于3D软件中, 与3D软件自带的线束或管道模块使用环境一致, 为一体化操作。图为半刚组件图纸创建操作界面, 主要用于实现半刚组件批量出图, 具有多项功能:如出图组件选择、图幅大小选择、组件投影方向选择、存放路径选择、输出精度控制等。图7为由上述功能控件自动创建生成的半刚组件图, 几乎所有工作均有软件自动完成, 人员仅需对各投影视图、表格、技术说明等的位置做适当调整或据情况对模板中已有常规技术说明进行补充完善。其他功能界面及数据输出情况相似。

上述工作实现了对原有设计文件的改进补充, 大大提升了对射频电缆组件装配制造的工艺指导性, 如折弯方式、组装顺序等, 不同工序操作人员按对应文件完成相应工作, 同时也为射频电缆组件制造流程的改善优化提供了技术支撑, 实现其装配制造可与其他组成零部件的加工装配过程并行开展, 缩短制造周期。目前该项工作已在一定范围进行了实际应用。

结语

上述工作是解决长期制约产品研发制造困境的一次实践, 以射频电缆组件产品为突破点, 基于较小投入实现了从3D模型到实际应用的转化, 对3D技术在其他类型产品或专业领域的应用有一定借鉴意义。

摘要:射频电缆组件是电子装备中的重要组成部分, 3D技术的运用为其设计制造能力的提升提供了可能性, 但也同时产生了新问题需解决。本文介绍了基于3D模型解决射频电缆组件设计制造各环节所需数据的适用性及高效输出。此项工作较大程度地促进了3D技术在射频电缆组件领域的应用落地。

关键词:3D技术,射频电缆组件,半刚组件,柔性组件

参考文献

[1]吴敏.3D应用程序开发的强大动力——数据接口组件Inter Op[J].CAD/CAM与制造业信息化, 2006 (6) :61-63.

数据库组件 篇2

准备工作

1.工作时必穿工作衣、鞋,戴工作帽。

2.做好工艺卫生,清洁整理台面,创造清洁有序的装框环境。

所需材料、工具和设备

1、层压好的电池组件

2、铝边框

3、硅胶

4、酒精

6、擦胶纸

7、接线盒

8、气动胶枪

9、橡胶锤

10、装框机

11、剪刀

12、镊子

13、抹布

14、小一字起

15、卷尺

16、角尺

17、工具台

18、预装台

操作程序

1.按照图纸选择相对应的材料,铝型材,并对其检验,筛选出不符合要求的铝型材,将其摆放到指定位置;

2.对层压完毕的电池组件进行表面清洗,同时对上道工序进行检查,不合格的返回上道工序返工; 3.用螺丝钉(素材将长型材和短型材作直角连接,拼缝小于0.5mm)将边型材和E型材作直角连结,并保证接缝处平整;

4.在铝合金外框的凹槽中均匀地注入适量的硅胶; 5.将组件嵌入已注入硅胶的铝边框内,并压实;

6.将组件移至装框机上(紧靠一边,关闭气动阀,将其固定);

7.用螺钉(素材)将铝边框其余两角固定,并调整玻璃与边框之间的距离以及边框对角线长度;

8.用补胶枪对正面缝隙处均匀地补胶; 9.除去组件表面溢出的硅胶,并进行清洗; 10.打开气动阀,翻转组件,然后将组件固定;

11.用适当的力按压TPT四角,使玻璃面紧贴铝合金边框内壁,按压过程中注意TPT表面

12.用补胶枪对组件背面缝隙处进行补胶(四周全补);

13.按图纸要求将接线盒用硅胶固定在组件背面,并检查二极管是否接反; 14.对装框完毕的组件进行自检(有无漏补、气泡或缝隙);

15.符合要求后在“工艺流程单”上做好纪录,将组件放置在指定区域,流入下道工序。

质量要求

1.铝合金框两条对角线小于1m的误差要求小于2mm,大于等于1m的误差小于3mm; 2.外框安装平整、挺直、无划伤; 3.组件内电池片与边框间距相等; 4.铝边框与硅胶结合出无可视缝隙;

5.接线盒内引线根部必须用硅胶密封、接线盒无破裂、隐裂、配件齐全、线盒底部硅胶厚度1~2毫米,接线盒位置准确,与四边平行; 6.组件铝合金边框背面接缝处高度落差小于0.5mm; 7.组件铝合金边框背面接缝处缝隙小于1mm;

8.铝合金边框四个安装孔孔间距的尺寸允许偏差±0.5mm。

注意事项

1.轻拿轻放抬未装框组件是注意不要碰到组件的四角。2.注意手要保持清洁

数据库组件 篇3

随着嵌入式系统在各个领域取得了飞速的发展,嵌入式系统被大量广泛应用于各种生产环境中,甚至被应用于非常重要的场合。由于QT具有跨平台、高性能等特性[1],很多嵌入式应用系统采用QT作为开发环境[2],QT环境下很多程序都有操作数据库的需求,目前的现状是几乎所有QT嵌入式程序操作数据库都要通过建立连接、业务操作、关闭连接等不断重复的步骤来完成一次次数据库交互,这样导致程序操作数据库的步骤非常繁琐、冗余并且性能低下,由于这些操作步骤基本是固化的,随着业务的增加,这样大量重复的代码就会充斥在业务代码中,而且频繁地打开和关闭连接会导致系统性能问题,对于追求高性能、高稳定的嵌入式系统来说,常规数据库操作方法是不能满足要求的。

本文主要提出一种在QT环境下通过构建新型连接池模型,在连接池模型的支撑下构建数据库模板技术进行通用数据库组件开发、整合事务等数据库特性,在保证高性能、高稳定的前提下,把它开发成高度通用组件,任何QT第三方嵌入式系统都可以方便集成组件进行业务开发,最后以嵌入式医疗查询系统为例,用通用数据库组件技术整体替换常规数据库操作遗留代码,提升了数据库操作性能且减少了大量冗余代码,并达到组件的高度重用。

1 关键技术研究

1. 1 构建QT新型连接池模型

1. 1. 1 嵌入式系统传统数据库连接的问题

在嵌入式应用开发中,对数据库常规的操作包含建立连接、进行操作、关闭连接,这样需要频繁新建和关闭连接,每次新建连接都会耗费嵌入式系统大量有限的资源,还必须完成用户验证、安全配置检查等步骤,是非常耗时的操作,对于实时性要求高的嵌入式系统,在高并发的请求下,需要频繁打开连接,这样会导致系统性能急剧下降甚至奔溃[3]。每次使用完连接后必须关闭,如果忘记关闭,嵌入式系统打开连接过多会导致很多问题,其中最典型会导致数据库拒绝服务。

1. 1. 2 QT连接池模块工作原理

在嵌入式程序启动的时候,预先读取配置文件生成若干数据库连接,把连接放入缓存列表中,缓存列表简称池,大量嵌入式业务逻辑模块需要连接时,从池中取出一个已经建立的连接进行操作,最后操作完毕后,需要释放连接到池中,并不是真正关闭连接,整个程序运行结束,QT程序负责关闭所有的数据库连接。连接池工作原理图如图1 所示。

1. 1. 3 自旋程序为特征的新型连接池模型

定义1 max Pool Size = 最大连接数,min Pool Size = 最小连接数,acquire Increment = 连接数分配数递增步长,threshold = 阈值,clear Per = 自动清理占比阈值。

常规建立连接池模型通常有以下2 种方法:

方法1

系统启动时即构建数量为max Pool Size的数据库闲置连接存入连接池缓存。

方法2

程序启动分配min Pool Size个数据库闲置连接构建连接池,当所有分配的连接被占用后,系统自动新建一个连接( 最大连接个数不能超过max Pool Size) ,同时把这个连接存入连接池缓存中。

方法1 最大的问题在于当max Pool Size过小时,大量并发请求无法获取连接,必须等待连接资源释放,这样会降低整体性能; 当max Pool Size过大时,大量闲置连接占用服务器资源,性能也会降低。

方法2 设置了min Pool Size,解决了方法1 初始化分配所有连接而导致连接过多的性能问题,但是连接在超出min Pool Size后,这时嵌入式程序要获取数据库连接,就和不用连接池获取连接的方法一样,性能低下。方法1 和方法2 都会出现一种特殊情况,瞬时大量请求使得连接数达到极限值max Pool Size,而程序运行大部分情况下,连接数远小于max Pool Size,这时就会有大量空闲连接占用服务器资源。

鉴于以上2 种方法都存在设计缺陷,这里设计以自旋程序为特征的新型连接池模型。

方法3

系统启动分配min Pool Size个闲置连接构建连接池,同时开启内部自旋程序。自旋程序设计为独立运行的死循环线程,由于自旋程序不断自动扫描连接的状态并监控连接池缓存内存的变化,一旦发现所有分配的数据库连接大于等于max Pool Size-threshold,自旋程序则自动新建acquire Increment个连接放入连接池缓存。总连接数不能超过max Pool Size所指定的数量,对超出min Pool Size的连接自旋程序定期检查连接状态,在系统闲置时动态调整连接状态,当连接超出设定的策略时可关闭部分闲置连接。

由于方法3 在方法2 的基础上进行了改进,使用了达到极限值后通过自旋程序自动新建连接进行缓存并定期扫描后关闭连接的技术,优化了连接池策略,本文QT连接池采用方法3 进行设计。

1. 1. 4 新型连接池模型流程图

流程框图如图2 所示。其中,自旋程序采用独立线程模式设计,采用死循环方式在后台运行,用于监控池中可用连接数量和连接状态。

1. 1. 5 QT连接池参数定义

定义2Pool Prop = { DBType,Host Name,DBName,Port,Auth User,Auth Pwd,min Pool Size,max Pool Size,acquire Increment}

DBType为数据库类型,可选择MYSQL、ORACLE或其他数据库,Host Name为数据库服务器所在主机名或IP地址,DBName为数据库名,Port为端口号,Auth User为连接用户,Auth Pwd为验证密码,其余参数如定义1 描述。Pool Prop描述了数据库连接的元数据信息。

定义3 Conn Prop = { Key,Name,Use State}

Conn Prop描述连接属性元数据,由连接键Key( 不重复) ,连接名称Name和连接使用状态Use State组成,连接键标识池中唯一连接,使用状态标识连接处于0( 空闲) 状态或是1 状态( 忙碌) 。连接池中分配的每个连接都有对应的连接属性值。

1. 2 构建规则库模型

定义4 Rule Lib = { Pool Prop,Trans Prop,Name Driver Prop}

Rule Lib为规则库定义,规则库由连接池属性规则,事务属性规则和命名驱动属性规则三部分构成,连接池属性规则如定义2 描述。本文中规则库定义通过规则库用户自定义XML配置文件实现。

1. 2. 1 事务属性规则

定义5 Trans Prop = { Trans Type,Trans ISOLevel}

Trans Prop事务属性规则包含事务类型和事务隔离级别,事务类型包括只读事务、写事务、内嵌事务、独立事务。事务隔离级别有未提交读、提交读、可重复读、序列化读,具体事务的隔离级别还要跟底层数据库支持度有关。

1. 2. 2 命名驱动属性规则

命名规则驱动是组件的核心模块之一。本文设计通过通配符和命名结合的形式进行定义,通配符定义匹配的一类操作执行相同的事务规则。比如通过配置文件结合定义5,可以定义add* 、update* 、deal* 、delete* 、find* 、search* 等命名驱动规则,如add* 表明所有add开头的函数自动开启写事务,find* 开头的函数开启只读事务。这样定义对上层嵌入式程序调用来说,就变得非常简单和透明,而且高效,上层程序只要给函数按命名规则即可定义是否开启事务和开启什么类型的事务。如上层嵌入式程序只要在定义函数时起名add Payment,底层组件即可明确要开启事务。在函数执行过程中如果出现异常,事务自动回滚; 整个函数执行完毕没有出现异常,则自动提交,这样的设计极大了简化了用户调用层编程。

1. 3 构建模板模型

1. 3. 1 常规调用的弊端

对于普通数据库调用,都是从连接池中获取连接,然后进行业务操作,最后归还连接到池中,这种的步骤是固化的,流程如图3 所示。

这样固化流程在业务大量调用中,会在QT嵌入式客户端产生大量冗余代码,使得维护和代码重构变得非常困难[4]。

1. 3. 2 模板模型

本文提出模板模型和平台无关数据类型的概念解决常规调用流程出现的问题。模板模型的设计参考设计模式中的模板模式[5]; 数据库平台无关的数据类型作为组件交互的通用类型。模板模型设计思路如图4 所示。

对于任何数据库任何表的任何操作,模板模型都可以简化为两类操作: 实质修改操作和查询操作。实质修改操作泛指对数据库进行修改的所有操作,如常见的增、删、改等操作; 查询操作泛指所有查询,也可用于包括分页、统计等常规操作,因此模板提供2 类接口给上层组件调用端,即上层嵌入式程序只要传输SQL和参数数组给模板即可,模板输出类型是与数据库平台无关的通用类型,这样极大简化了客户端调用数据库的操作。

2 设计思路

2. 1 整体体系结构设计

整个设计采用低耦合高聚合的松散型组件化思想设计,采用了分层设计的理念,体系结构如图5 所示。

核心组件由中央调度引擎模块、规则库解析模块、连接池缓存模块组成。中央调度引擎模块负责整个组件的调度任务,提供上层调用接口,启动向规则库解析模块发起数据加载解析请求,通过规则库解析模块从配置文件中加载规则库到中央调度中缓存,建立和高速连接池缓存通信,对所有上层接口所有传入SQL指令和参数列表交由模板处理,处理结果通过平台无关数据类型传输到上层应用,该模块是整个组件的中枢模块。

规则库解析模块通过读取配置文件把规则库读入内存,配置文件包含连接池配置规则,命名规则和事务规则,根据定义4的分类分别调用不同的规则解析器解析。

连接池缓存模块主要负责底层数据库交互以及向模板解析引擎提供连接接口,自旋程序自动监控连接状态以及大于minPool Size的连接是否应该关闭。

2. 2 分层设计

为了方便进行解耦操作,各个模块采用分层设计思想[6],规则库解析模块和中央调度引擎模块通过消息交互,模板接受到SQL请求后,通过向连接池缓存模块发出获取连接请求,获取请求后直接在模板中进行操作,屏蔽了底层数据库的差异,数据库的连接全部由连接池缓存模块管理。这种分层设计最大的好处是各司其职,模块高度重用,如需要更换连接池模块,可以用新的连接池缓存模块更替现有的模块,而对上层模块基本不需大的改动。

3 系统实现关键技术

3. 1 连接池实现

3. 1. 1 自旋程序实现算法

自旋程序位于2 个独立的线程运行,每个线程在一个循环中反复运行,主要完成2 类操作: 新建连接和自动清除连接。

新建连接的算法如下:

初始化计数值=0。

1) 遍历所有池中连接。

2) 获取当前连接的状态,若状态Use State = 1,则计数值累加1。

3) 判断计数值大于等于max Pool Size-threshold,则新建acquire Increment个连接,新建连接User State置为0。

4)遍历完毕后初始化计数值置零。

5)反复以上执行过程。

自动清除连接的算法如下:

初始化计数值=0。

1) 遍历所有池中连接。

2) 若获取Use State = 0,则计数值加1。

3) 遍历完毕后,a = 计数值除以max Pool Size,若a大于等于1 - clear Per。则计算b = max Pool Size乘以( a - ( 1 - clear Per) ) ,进入4) 步,反之重复步骤1) 。

4)循环关闭b个连接,注意只能释放Use State为0的连接。

5)反复以上执行过程。

3. 1. 2 连接池实现步骤

步骤1建立Connection Item类,描述连接条目,每个连接条目对象代表连接池中一个连接明细,use State成员变量表明这个连接是否被占用,初始化为未被占用,每个连接还有连接名称,conn Name是唯一的,不能重复,名称通过编号生成,生成规则如conn1,conn2,……以此类推,类图如图6( a) 所示。

步骤2 建立DBCP类[7],实现连接池功能,该类是组件核心类,设计如图6( b) 所示。

构造连接池时提供连接池名,最大最小线程数和递增步长等参数,构造函数调用完毕,连接池构建完毕,这里列举DBCP类的get Connection From Pool函数的实现,关键步骤如下:

算法输出: 连接池中闲置的连接。

1) 加入锁控,防止外界并发访问时获取同一连接,这一步骤非常重要。

2) 对connections进行遍历。

3) 判断use State是否为0,如果是则更改use State为1,同时准备返回当前连接,反之进入下一个循环。如果整个循环结束仍未返回,则获取连接失败。

4) 释放锁。

3. 2 模板引擎实现

模板引擎也是整个组件的核心模块,根据模板对上层应用的支撑分类来看,模板主要提供实质修改操作和查询操作两大类操作。实质修改操作涵盖对数据库进行修改的所有操作,如增、删、改等,这里仅列举实质修改操作实现,关键实现步骤如下:

算法输入:SQL语句和传递的参数列表。

算法输出:影响的行数。

1)调用DBCP类的get Connection From Pool函数获取连接。

2)获取QSql Query会话。

3) 预编译SQL。

4) 绑定参数并执行。

5)释放连接到连接池中。

6)返回影响的行数。

上述步骤中的要点是通过QVariant类型来接受数据库平台无关的任何数据类型,这样就可以通过模板对数据库任何表进行任何增、删、改操作,外界只需提供SQL和参数数组即可,不用在考虑连接获取和关闭等细节问题,极大简化了组件调用方的操作[8]。

4 应用及性能分析

测试环境为2 台北大众志MPRC芯片嵌入式小盒,分别预装了Linux和Win XP,测试数据库为Mysql 5. 1,Qt环境为4. 6,分别在两台机器上运行医疗查询系统、智能生产线系统,卫监系统和冷链系统。

表1 记录了4 个系统在遗漏代码和更换后组件代码之间节省代码量行数的比较。

从表1 可以看出,医疗查询系统遗留代码共调用数据库165 次,平均每次调用共需15 行固化代码,通过组件调用后,代码减少为1 行,使得整个系统节省2310 行代码,我们发现嵌入式软件涉及到数据库调用越多,系统节省的代码越多。

表2 记录了医疗查询系统获取病人的历史诊断病例,共查询数据库中2140 条记录,在不同的平台上查询性能比较如表2所示。

因为组件充分利用了连接池,所以性能有了很大提升。这里对医疗查询系统为例进行说明,共查询了2140 条数据,遗留代码在Win XP上查询所花的时间比Linux上所花的时间多,使用组件替换后在Linux上所需的运行时间为3 ms,时间主要减少在连接的获取上,使用组件后,连接直接从池中获取,而不是实时新建连接,减少了连接获取时间。

实验证明,业务系统庞大,所涉及的数据库操作越多,用组件替换以前的常规操作后,优势越明显,冗余代码会大量减少,代码体系结构会更简洁,并且由于运用了连接缓存,系统性能会得到很大提升。

5 结语

本文提出了在QT嵌入式开发环境下,对通用数据库组件技术研究后进行重新封装设计,把组件分解成连接池缓存模块,模板技术和规则库解析模块,三者通过分层设计思想进行模块化设计,通过消息传递进行相互协作通信。通过连接池缓存模块优化了底层数据库连接性能,通过模板技术减少了第三方调用方的冗余代码。该组件技术已经在很多真实的QT嵌入式项目中得到广泛应用,稳定性和可靠性得到了检验。组件也存在一些可以继续完善的地方,比如事务驱动规则的细化,这样用户可以通过配置文件进行更细化业务相关的事务设计。

参考文献

[1]Nokia.Qt Reference Documentation(Open Source Edition)[EB/OL].(2012-4-1).[2014-05-20].http://qt-project.org/doc/qt-5/qt5-intro.html.

[2]Dalheimer M K,Hansen S.Embedded development with Qt/embedded[J].Dr.Dobb’s Journal,2002,27(3):48-53.

[3]李建生.GTP连接池模块研究[D].中山:中山大学,2010.

[4]夏龄.Spring中Bean工厂模式的改进[J].计算机应用与软件,2012,29(11):165-167,238.

[5]Alan Shalloway,James R Trott.设计模式精解[M].北京:清华大学出版社,2005:50-61,165-173.

[6]肖文..NET平台开发中表现层的常用设计模式[J].计算机应用与软件,2012,29(5):231-233.

[7]刘云玉,段中兴,原晋鹏.JDBC数据库重连机制的研究与实现[J].计算机应用与软件,2011,28(7):38-40.

光伏组件常见质量问题 篇4

一、网状隐裂 原因

1.电池片在焊接或搬运过程中受外力造成.2.电池片在低温下没有经过预热在短时间内突然受到高 温后出现膨胀造成隐裂现象

组件影响:

1.网状隐裂会影响组件功率衰减.2.网状隐裂长时间出现碎片,出现热斑等直接影响组件性能

预防措施:

1.在生产过程中避免电池片过于受到外力碰撞.2.在焊接过程中电池片要提前保温(手焊)烙铁温度要 符合要求.3.EL测试要严格要求检验.网状隐裂

二、EVA脱层 原因

1.交联度不合格.(如层压机温度低,层压时间短等)造成 2.EVA、玻璃、背板等原材料表面有异物造成.3.EVA原材料成分(例如乙烯和醋酸乙烯)不均导致不能在正常温度下溶解造成脱层

4.助焊剂用量过多,在外界长时间遇到高温出现延主栅线脱层

组件影响:

1.脱层面积较小时影响组件大功率失效。当脱层面积较大时直接导致组件失效报废

预防措施:

1.严格控制层压机温度、时间等重要参数 并定期按照要求做交联度实验,并将交联度控制在85%±5%内。

2.加强原材料供应商的改善及原材检验.3.加强制程过程中成品外观检验

4.严格控制助焊剂用量,尽量不超过主栅线两侧0.3mm

三、硅胶不良导致分层&电池片交叉隐裂纹 原因

1.交联度不合格.(如层压机温度低,层压时间短等)造成 2.EVA、玻璃、背板等原材料表面有异物造成.3.边框打胶有缝隙,雨水进入缝隙内后组件长时间工作中发热导致组件边缘脱层 4.电池片或组件受外力造成隐裂

组件影响:

1.分层会导致组件内部进水使组件内部短路造成组件报废

2.交叉隐裂会造成纹碎片使电池失效,组件功率衰减直接影响组件性能

预防措施: 1.严格控制层压机温度、时间等重要参数 并定期按照要求做交联度实验。2.加强原材料供应商的改善及原材检验.3.加强制程过程中成品外观检验

4.总装打胶严格要求操作手法,硅胶需要完全密封 5.抬放组件时避免受外力碰撞

硅胶不 电池交

良分层 叉隐裂纹

四、组件烧坏 原因

1.汇流条与焊带接触面积较小或虚焊出现电阻加大发热造成组件烧毁

组件影响:

1.短时间内对组件无影响,组件在外界发电系统上长时间工作会被烧坏最终导致报废

预防措施:

1.在汇流条焊接和组件修复工序需要严格按照作业指导书要求进行焊接,避免在焊接过程中出现焊接面积过小.2.焊接完成后需要目视一下是否焊接ok.3.严格控制焊接烙铁问题在管控范围内(375±15)和焊接时间2-3s

组件内部烧坏

五、组件接线盒起火 原因

1.引线在卡槽内没有被卡紧出现打火起火.2.引线和接线盒焊点焊接面积过小出现电阻过大造成着火.3.引线过长接触接线盒塑胶件长时间受热会造成起火

组件影响:

1.起火直接造成组件报废,严重可能一起火灾.预防措施:

1.严格按照sop作业将引出线完全插入卡槽内 2.引出线和接线盒焊点焊接面积至少大于20平方毫米.3.严格控制引出线长度符合图纸要求,按照sop作业.避免引出线接触接线盒塑胶件.六、电池裂片 原因

1.焊接过程中操作不当造成裂片

2.人员抬放时手法不正确造成组件裂片 3.层压机故障出现组件类片

组件影响:

1.裂片部分失效影响组件功率衰减, 2.单片电池片功率衰减或完全失效影响组件功率衰减

预防措施:

1.汇流条焊接和返工区域严格按照sop手法进行操作 2.人员抬放组件时严格按照工艺要求手法进行抬放组件.3.确保层压机定期的保养.每做过设备的配件更换都要严格做好首件确认ok后在生产.4.EL测试严格把关检验,禁止不良漏失.七、电池助焊剂用量过多 原因

1.焊接机调整助焊剂喷射量过大造成 2.人员在返修时涂抹助焊剂过多导致

组件影响:

1.影响组件主栅线位置EVA脱层, 2.组件在发电系统上长时间后出现闪电纹黑斑,影响组件功率衰减使组件寿命减少或造成报废

预防措施: 1.调整焊接机助焊剂喷射量.定时检查.2.返修区域在更换电池片时请使用指定的助焊笔,禁止用大头毛刷涂抹助焊剂

八、虚焊、过焊 原因

1.焊接温度过多或助焊剂涂抹过少或速度过快会导致虚焊 2.焊接温度过高或焊接时间过长会导致过焊现象.组件影响:

1.虚焊在短时间出现焊带与电池片脱层,影响组件功率衰减或失效, 2.过焊导致电池片内部电极被损坏,直接影响组件功率衰减降低组件寿命或造成报废

预防措施:

1.确保焊接机温度、助焊剂喷射量和焊接时间的参数设定.并要定期检查, 2.返修区域要确保烙铁的温度、焊接时间和使用正确的助焊笔涂抹助焊剂.3.加强EL检验力度,避免不良漏失下一工序.九、焊带偏移或焊接后翘曲破片 原因

1.焊接机定位出现异常会造成焊带偏移现象

2.电池片原材主栅线偏移会造成焊接后焊带与主栅线偏移 3.温度过高焊带弯曲硬度过大导致焊接完后电池片弯曲

组件影响:

1.偏移会导致焊带与电池面积接触减少,出现脱层或影响功率衰减 2.过焊导致电池片内部电极被损坏,直接影响组件功率衰减降低组件寿命或造成报废

3.焊接后弯曲造成电池片碎片

预防措施:

1.定期检查焊接机的定位系统.2.加强电池片和焊带原材料的来料检验,十、组件钢化玻璃爆和接线盒导线断裂 原因

1.组件在搬运过程中受到严重外力碰撞造成玻璃爆破 2.玻璃原材有杂质出现原材自爆.3.导线没有按照规定位置放置导致导线背压坏.组件影响:

1.玻璃爆破组件直接报废,2.导线损坏导致组件功率失效或出现漏电连电危险事故

预防措施:

1.组件在抬放过程中要轻拿轻放.避免受外力碰撞.2.加强玻璃原材检验测试, 3.导线一定要严格按照要求盘放.避免零散在组件上

十一、气泡 产生原因

1.层压机抽真空温度时间过短,温度设定过低或过高会出现气泡 2.内部不干净有异物会出现气泡.3.上手绝缘小条尺寸过大或过小会导致气泡.组件影响:

1.组件气泡会影响脱层.严重会导致报废

预防措施:

1.层压机抽真空时间温度参数设定要严格按照工艺要求设定.2.焊接和层叠工序要注意工序5s清洁, 3.绝缘小条裁切尺寸严格要求进行裁切和检查.十二、热斑和脱层 原因

1.组件修复时有异物在表面会造成热斑 2.焊接附着力不够会造成热斑点.3.脱层层压温度、时间等参数不符合标准造成

组件影响:

1.热斑导致组件功率衰减失效或者直接导致组件烧毁报废.2.脱层导致组件功率衰减或失效影响组件寿命使组件报废.预防措施:

1.严格按照返修SOP要求操作,并注意返修后检查注意5s.2.焊接处烙铁温度焊焊机时间的控制要符合标准, 3.定时检查层压机参数是否符合工艺要求.同时要按时做交联度实验确保交联度符合要求85%±5%.电池热 脱层

斑烧毁

十三、EVA脱层 原因

1.交联度不合格.(如层压机温度低,层压时间短等)造成 2.EVA、玻璃、背板等原材料表面有异物造成.3.EVA原材料成分(例如乙烯和醋酸乙烯)不均导致不能在正常温度下溶解造成脱层

组件影响:

1.脱层会导致组件内部进水使组件内部短路造成组件失效至报废

预防措施:

1.严格控制层压机温度、时间等重要参数 并定期按照要求做交联度实验。确保交联度符合要求85%±5%.2.加强原材料供应商的改善及原材检验.3.加强制程过程中成品外观检验

层压不合格脱层

十四、低效 原因

1.低档次电池片混放到高档次组件内,(原材混料/ 或制程中混料)

组件影响:

1.影响组件整体功率变低,组件功率在短时间内衰减幅度较大 2.低效片区域会产生热班会烧毁组件

预防措施:

1.产线在投放电池片时不同档次电池片做好区分,避免混用,返修区域的电池片档次也要做好标识,避免误用.2.EL测试人员要严格检验,避免低效片漏失.低效片、混档

十五、硅胶气泡和缝隙 原因

1.硅胶气泡和缝隙主要是硅胶原材内有气泡或气枪气压不稳造成, 2.缝隙主要原因是员工手法打胶不标准造成

组件影响:

1.有缝隙的地方会有雨水进入,雨水进入后组件工作时发热会造成分层现象.预防措施:

1.请原材料厂商改善,IQC检验加强检验.2.人员打胶手法要规范, 3.打完胶后人员做自己动作.清洗人员严格检验.十六、漏打胶 原因:

1.人员作业不认真,造成漏打胶, 2.产线组件放置不规范,人员拉错产品流入下一工序.组件影响:

1.未打胶会进入雨水或湿气造成连电组件起火现象.预防措施:

1.加强人员技能培训,增强自检意识.2.产线严格按照产品三定原则摆放,避免误用.3.清洗组件和包装处严格检验,避免不良漏失。

十七、引线虚焊 原因:

1.人员作业手法不规范或不认真,造成漏焊, 2.烙铁温度过低、过高或焊接时间过短造成虚焊,.组件影响:

1.组件功率过低.2.连接不良出现电阻加大,打火造成组件烧毁.预防措施:

1.严格要求操作人员执行SOP操作,规范作用手法.2.按时点检烙铁温度,规范焊接时间.接线盒引线虚焊

十八、接线盒硅胶不固化 原因:

1.硅胶配比不符合工艺要求造成硅胶不固化, 2.出胶孔A或B胶孔堵住未出胶造成不固化.组件影响:

1.硅胶不固化胶会从线盒缝隙边缘流出,盒内引线会暴露在空气中遇雨水或湿气会造成连电使组件起火现象.预防措施:

1.严格按照规定每小时确认硅胶表干动作.2.定时确认硅胶配比是否符合工艺要求。3.清洗工序要严格把关确保硅胶100%固化ok

接线盒硅胶不固化

十九、EVA小条变黄 原因:

1.EVA小条长时间暴露在空气中,变异造成, 2.EVA受助焊剂、酒精等污染造成变异.3.与不同厂商EVA搭配使用发生化学反应

组件影响:

1.外观不良客户不接受.2.可能会造成脱层现象

预防措施:

1.EVA开封后严格按照工艺要求在12h内用完,避免长时间暴露在空气中.2.注意料件放置区域的5s清洁,避免在加工过程中受污染.3.避免与非同厂家家的EVA搭配使用

EVA小条变黄

二十、异物和玻璃表面红笔印 原因:

1.层叠和玻璃上料处5S不清洁造成异物被压在组件内, 2.人员发现不良做好标记评审完后未及时清理直接包装.组件影响:

1.影响组件整体外观.造成投诉预防措施:

1.对层叠和玻璃上料工序做好5S清洁,避免异物出现.2.发现不良后禁止在组件上做标记,直接在流程卡上记录不良位置.3.产线产品摆放严格执行“三定”原则标识摆放

组件内有异物和玻璃表面有红笔印

二十一、组件色差

原因:

1.组件色差为原材料加工时镀膜不均匀造成, 2.焊接机在投放电池片未按照颜色区分投放造成 3.返修区域未做颜色区分确认造成混片色差

组件影响:

1.影响组件整体外观.造成投诉

预防措施:

数据库组件 篇5

Delphi提出的MIDAS (Multi-Tier distributed Application Services Suite多层分布式应用服务器组) , 是把原来Two-Tier数据连接放到了服务器端的Socket组件上, 客户端只剩下了执行文件和Socket组件, 前台和服务器上的Socket组件, 通过Socket机制互相沟通。

这个多的一层称为应用程序服务器 (Application Server) , 或者称为中间件。

这种多层分布式工作机制主要基于这样几点考虑:

(1) 减少客户机的维护量, 因为前台程序比较简单。把企业逻辑封装在通用的中间件应用服务器中, 不同的客户都可以共享同一个中间层 (包括Web) , 而不必每个客户都单独实现企业规则, 避免了重复开发和维护的麻烦。由于客户程序相当瘦 (这就是当下流行的瘦客户机概念) , 无论是开发还是发布, 都变得简单了。

(2) 便于升级, 当中间件升级的时候, 客户程序可能不需要变化。

(3) 实现了分布式数据处理, 把一个应用程序分布在几台机器上运行, 可以提高应用程序的性能, 也可以把敏感部分封装在中间件, 为不同的用户设置不同的访问权限, 增强了安全性。

(4) 减少直接连接数据库的用户数目, 减少费用。

下面通过一个实例来说明多层数据库的设计问题。

主要想解决这样几个问题:如何建立一个简单的分布式系统, 如何使用SQL, 如何传递附加信息和向客户提供服务器方法, 有了这些方法, 就可以建立属于自己的性能更加高效的数据库系统来。

2 SQL服务器端程序

首先用上面相同的方法建立一个服务器端COM工程。工程名取为Project1, 服务器名为App Server, 在其Remote Data Module页面放入一个Query (BDE页面) 和一个Data SetProvider控件 (Datasnap页) 。如图1所示。

Data Set Provider的属性Options下的po Allow Command Text=true, 这实际上已经建立了一个基于SQL查询的服务器端程序。

3 客户端查询服务器端的别名集

在SQL查询以前, 用户往往需要指定查询哪个数据库, 所以需要把服务器上BDE数据库别名 (Alias) 设置数据调出到前台程序来。

具体做法我们先回到服务器端:

在上述服务器端再建立一个TSession和一个Tdata Base (BDE页) 。

Session1属性:

Data Base1属性:

如果不希望输入密码:

Login Prompt:false

这里, Query1的连接属性要变一下, 因为它要通过Data Base来联接数据库 (以后在前台可以直接通过改变Data Base的属性来改变联接) 。

Data Base Name=Data Base1的Data Base Name:自定义的名 (这里比如为aaa) 。

SQL属性输入一个基本的SQL语言:select*from course.db (打开课程表)

Active=true表示这样也可以连接上了, 结果如图2右部分。

TQurey增加个属性

Session Name:Session1_5

这样就可以用Session对象来管理数据源的信息了。

再利用两个Label, 显示当前在线人数, 以及进行SQL查询的次数。如图2所示。

为了传给客户端值, 并能够由客户端来对服务器端进行某些控制, 需要在COM中加入3个方法:

View->Type Library显示接口窗口。

右键ISQLSverver1 (具体根据设置名不同而不同) ->New->, 如图3、图4所示, 建立3个方法 (Method) :GetDatabase Names, Get Table Names和Set Database Name。

刷新 (Refresh Implementation) 以后, 就产生两个函数和一个过程:

在Get Database Names部分, 用以传输别名数据, 其接口信息为:

以下为3个方法的程序代码:

上面的函数的关键除了取得BDE数据库别名以外, 还声明了一个变量数组来存放数据库别名数据, 所以用Var ArrayCreate函数建立一个变量数组, 其中参数1:指定数组范围。

参数2:数组数据类型, 由于别名要通过S传给前台, 数据类型必须设成var Ole Str才有效。

同时还要说明Var Array Create函数是在Variants单元中建立的, 所以, 在implementation下还需要声明:

uses Variants;

否则会编译出错, 必要时还要加上Unit1。

第二个过程是客户机提供上来的联机数据。

现在可以写此函数的程序了:

4 服务器端进行客户计数程序

除了上面的功能外, 这个程序还加上了一个在线用户以及查询用户统计的功能。由于这个应用程序执行模式是Multiple Instance执行模式, 所以当某个前台第一次连上线后, 应用程序服务器会激活Remote Data Module的事件程序, 而断线后又会执行On Destroy事件程序, 因此就可以用这两个事件计算连上服务器的用户个数。至于Query个数的计算, 则由TQuery的On After Open事件函数判断。Form1部分, 主要用于显示:

首先在form上安放5个Tlabel控件, 其中4个放在一个容器Panel1里, 两个计数的label分别取名为Client Count和Query Count, 属性Capyion=0。如图5所示。

注意, 下面的程序在Form1所在的单元Unit1中编写。

在private下声明两个变量:

FQuery Count:Integer;

FClient Count:Integer;

在public下声明两个过程:

procedure Update Client Count (Incr:Integer) ;

procedure Inc Query Count;

在实现期写入过程:

在SQLServer1窗口的两个事件On Create和On Desticy, 建立事件驱动程序:

在Tqurey的事件After Open建立事件驱动程序:

5 SQL客户端程序

(1) 建立一个普通的工程:Project2.apr。

(2) 在Form上放置一个TSocket Connection控件 (在Datasnap页) , 属性:

在本机注册时, 可直接设置以下属性:

这时可以看到服务器端的服务器应用程序被激活了。

如果在网络上调试, 需要给出服务器IP地址Address的值和Server GUID的GUID值 (自动给出) 。

(3) 放置一个TClient Data Set控件 (在Data Access页) , 属性:

(4) 放置TData Source, 属性:

Dataset:指向Client Data Set1

安放合适的数据库绑定控件。放置Demo控件作为SQL语句输入用。

希望用户直接调用服务器端的别名, 可以加入一个Combo Box控件:

Form1的Create事件可以写成:

运行以后可以看到服务器端的所有的别名, 如图6所示。

现在, 可以给Combo Box1加入一个双击事件:

以后就可以利用服务器端的别名列表选择数据库了。

双击该列表框实际上已经实现了联接, 但是, 窗口除关闭掉数据库显示以外, 并没有其他的反应, 这就是说, 这个程序使用上还有若干不方便的地方, 最重要的就是当连接上数据库以后, 无法知道表的名字。这样, 也无法方便地构造查询数据集的SQL语言。

所以在客户端现在给它再加一个Combo Box, 以显示当前打开的数据库的表名。如图6所示。

在.Form Create事件过程中, 再声明一个变量:

DBTables:Ole Variant;

在.Form Create程序的最后加上:

为了在改变数据库后也能正确显示相应的表名, Combo Box1的双击事件也要加上相应的一段。

给Combo Bpx2加一个双击事件, 可以把表的名字加入SQL语句:

效果就完全不同了, 可以方便地选择数据库和表, 运行过程如图6所示。

然后组合适当的SQL语言, 最终打开一个合适的表。

进一步考虑, 组合新的SQL语言的时候最好要有字段名的数据, 这不需要从服务器得到, 因为在多层情况下, ClientData Set实际上起着Ttable或者Tquery相似的作用, 对数据库的控制上, 有几乎相同的语言, 例如记录指针的移动, 字段数据的取得和写入等, 这样一来, 也可以直接使用这些方法来操纵数据库。

Client Data Set是个功能强大非常重要的控件, 在Delphi的很多高级场合, 都要使用到它。

当然, 利用Client Data Set, 被打开数据库的字段名表也很容易得到。

首先再加一个Combbox控件Combbox3。

把SQL查询的Button事件作如下修改:

事实上, Form Create事件程序也要加入相应的程序, 使一打开程序就有字段名表显示。

需要时, 也可以写入Combo Box3的双击事件:

现在可以看看利用Delphi的Socket Cnnection组件调用服务器端的数据显示效果, 如图6所示。

这些数据取得以后, 就可以把这个客户程序做得更加方便通用, 那就要看想象力和程序设计的水平了, 这里事例主要是想提供客户端使用Socket提供的方法思想和规则, 通过这样的设计过程, 是不是对Socket和分布式数据库的问题有了更深的理解了呢?从我设计教学选课系统等的经验来看, 这是简便的多层数据库设计方法。

但需要提醒两点, (1) 利用Socket Connection组件开发多层数据库应用程序, 服务器端还必须运行一个现成的Socket中介程序Sckt Srvr.exe, 该程序在安装的Delphi的bin目录下; (2) 程序调式是Socket Connection组件的Address属性不能缺, 本地设为127.0.0.1, 网络设为实际的服务器IP地址。

摘要:介绍了Delphi下的MIDAS (Multi-Tier distributed Application Services Suite多层分布式应用服务器组) , 并通过实例讲解使用SocketCnnection组件开发分布式多层数据库的实现。

短距离图像数据无线收发组件设计 篇6

关键词:接收机,检波,AGC,PIFA天线

引言

近年来无线短距离、微功率通讯成为一个发展热点, 由于其具有灵活的接入性能, 因而在各行业都引起了广泛关注, 如蓝牙技术和未来交通的智能化、信息化都用到了大量的DSRC (专用短距离通信) 技术。所设计收发组件用于某监视系统图像数据的无线传输, 收发间的距离小于20米, 工作频率在700~900MHz, 外界无线电波在该频段相对较少, 因此该系统设计的相对简单, 采用类似电视信号的传输方式进行低功率传输, 先对数据流 (9.6kbps) 进行FSK调制, 调制频率为6.6MHz和6.7MHz, 即电视伴音所在频带, 然后将FSK信号同图像信号频分复用之后在射频上进行双边带调幅, 经过放大发射;接收组件完成信号的接收解调, 恢复图像和数据信息。

1 系统分析

本系统所设计的收发组件采用双边带调幅和包络检波, 大大降低系统的复杂度, 各部分功能电路相对简单成熟, 现就收发组件设计的几个关键问题进行一些分析。

1.1 系统链路预算

收发天线增益:GT=GR=0dB

自由空间衰减:LS=92.44+201gf (GHz) +201g[d (km) ]≈50dB

其中, f=0.7GHz, d=0.01km。

热噪声电平:PN=-114+101g (NF) +101gB (MHz) =-92dBm

其中, Nf=10dB, B=14MHz。

解调器输入最低信噪比: (C/N) min=42dB

系统要求解调输出视频信噪比大于40dB (该信噪比满足FSK信号的解调所需信噪比) , 对于双边带包络检波理想状态输出信噪比等于输入信噪比, 但实际解调器会使输入信噪比恶化一些, 根据经验取解调器输入最低信噪比为42dB。

接收机灵敏度:Smin=PN+ (C+N) min=-47dBm

发射电平:PT=Smin-GT-GR+LS+Fm=5dBm

考虑实际传输过程中会有电平衰落起伏, 留有一定的裕量Fm=5dBm来保证通信的可靠性。

自动增益控制范围:考虑收发距离在0~10m变化, 根据自由空间衰减公式, 取20dB的变化范围应该可以满足系统正常工作。

1.2 收发天线的设计。

本系统应用于便携式个人终端, 要求体积小, 平面化, 实现电路和天线的一体化和平面化, 如果采用传统的微带贴片天线, 在该频段显得尺寸过大, 近年来随着个人无线终端的广泛应用和蓝牙技术的迅速发展, 极大地推动了微带天线小型化, 本系统所采用电容加载PI-FA (倒F型) 微带天线, 大量应用在手机等无线小型化终端, 便于和电路集成, 通过电容加载等手段可以将尺寸减小到λ/8以下, 同时具有很好的辐射特性, 易于匹配, 本系统所采用的天线结构如下, 通过ANSOFT建模仿真和优化, 试验结果可以满足设计要求。

另外, 对于批量较大可以专门订制陶瓷天线, 该类天线具有更小的体积和优良的辐射特性, 可以进一步减小系统体积。

2 具体设计

2.1 发射组件设计。

。发射组件的原理框图如图2所示, 主要有FSK调制器、锁频源、双边带调制器、功放和天线组成。

2.1.1 FSK调制器的设计。

由6.7MHz和6.8MHz石英晶体分别和与非门组成两个多谐振荡器, 用输入的数据控制数据选择器, 完成FSK调制。

2.1.2 锁频源的设计。

为了满足图像传输所要求的稳定度, 选用锁频源, 另外由于系统小型化、低功耗和今后的多信道应用, 选用SYNERGY公司的集成频率合成器, 外围用一个贴片晶振提供参考信号, 选用ATMEL的8引脚的微型单片机通过SPI口对频率合成器进行初始化控制, 即可完成频率的设置。

2.1.3 双边带调幅器。

选用双平衡混频器实现双边带调幅, 它和用作调幅的乘法器有相似的地方, 使用中应注意其对载波抑制过大, 通常包络检波要求载波信号应比边带信号功率大7dB, 否则会使包络检波变的困难, 甚至不可行。本方案采用降低视频信号输入功率的方法来提高载波相对信号边带的幅度差。此外, 还可以通过将载波信号同调幅输出信号相加来提高载波幅度。

2.2 接收组件设计。

接收组件的原理框图如图3所示, 主要有FSK调制器、锁频源、双边带调制器、功放和天线组成。

2.2.1 检波器的设计。

对视频检波器的性能要求有:检波效率高、波形失真小、输入阻抗大、滤波性能好、通带足够宽等要求, 该检波器有两个作用, 一是检出视频全电视信号;二是检出FSK信号, 两个信号通过滤波器进行分离, 分别进行放大输出和解调输出;另外, 本系统工作频率较高, 普通电视的检波管不能使用, 为此选用微波检波管, 通过对输入端进行匹配, 合理地设计检波电路RC参数, 实际检波效率和检波灵敏度相对较高, 可以满足系统设计要求。

2.2.2 AGC电路的设计。

由于通信距离变化等因素引起高频接收信号强弱变化, 为了保证信号相对恒定, 选用峰值型AGC电路, 通过设定检波电路充放电时间常数来检出射频信号的同步头的幅度, 用它作为信号强弱变化的指示, 将该信号经过放大加到前级的可变增益放大器的增益控制端构成AGC电路, 可变增益放大器选用Agilent公司的IVA-05208, 另外, IVA-05208的1dB压缩点较低, 为了不使其饱和而影响系统工作, 将该放大器放到了第一级。

2.2.3 FSK解调器的设计。

本组件的FSK解调器利用NE564集成锁相环实现的, 用PLL对FSK信号中的一个频率锁定, 而对另一个频率则是失锁的, 这样, 在解调FSK信号时, 锁定指示器的指示即为解调输出。

3 结论

实践证明, 通过以上方法设计的电路基本达到设计需求, 采用调幅体制进行短距离通讯有可行性, 传输、接收可靠, 接收图像效果清晰。

参考文献

[1]曹志刚, 钱亚生.现代通信原理[M].北京:清华大学出版社.

[2]陈如明.信号、系统与高速无线数字传输[M].北京:科学出版社.

[3]曹华民, 王兴亮.现代电视接收技术[M].西安:西安电子科技大学出版社.

[4]Corbett R.Rowell“, A Capacitively Loaded PIFAfor Compact Mobile Telephone Handsets”[J].IEEETransactions On Antennas And Propagation, 1997, 45 (5) .

数据库组件 篇7

在信息管理系统中,需要频繁地进行数据的输入、输出及修改等操作,因此需要一个组件来实现该功能,通常使用表格显示、分析以及处理数据。在信息管理系统中,可以使用JTable组件来实 现这个功 能。 本文将介 绍JTable组件用于数据输入、输出及修改的方法。

关于JTable,首先要了 解一下Swing软件包,javax.swing是为Java应用程序图形用户界面的开发而提供的一组“轻量级”组件。Swing组件包含8个子包,总共有20余个界面及75个类,提供更加强大且具有弹性的用户界面[1]。除了大家所熟悉 的按钮、标签外,Swing还提供了诸如表 格 (JTable)、树状图 (JTree)等功能组 件。 作为Swing用于显示表格的API,JTable本身不存储任何显示数据,只是从表格模型那里获取数据[2]。设计使用JTable的应用程序时,务必要注意用来表示表数据的数据结构。DefaultTableModel模型使用一 个Vector来存储所 有单元格的值,该Vector由多个Vector组成。

1JTable介绍

下面将介绍JTable对象的创建、TableModel类的常用方法以及Java前台程序与SQLServer数据库进行连接等。

1.1JTable类的主要构造方法

JTable():构造一个默认的JTable,使用默认的数据模型、默认的列模型和默认的选择模型对其进行初始化。

JTable(int numRows,int numColumns):使用DefaultTableModel数据模型构造具有numRows行和numColumns列个空单元格的JTable。

JTable(Object[][]rowData,Object[]columnNames):构造一个JTable来显示二维数组rowData中的值,其列名称为columnNames。

1.2TableModel类的常见方法

public int getColumnCount():返回此数 据表中的 列数。

public int getRowCount():返回此数据表中的行数。

public String getColumnName(int columnIndex):返回columnIndex位置的列名称,是用于初始化该表的列头名。此名称不必是惟一的,表中的两列可以具有相同的名称。

public Object getValueAt(int row,int column):返回row行column列处单元格的属性值。

1.3Java前台程序与数据库连接

Java前台程序 与数据库 连接常使 用Java中提供的JDBC驱动程序,但是在jdk8中,由于删除了JDBC-ODBC桥,因此本文中使用微软提供的SQLServer数据库驱动程序sqljdb4(官方下载地址为“http://www.microsoft.com/zh-cn/download/details.aspx?id=21599”)来连接SQLServer数据库。

在使用数据库中的数据前,需要对数据库驱动注册,通常有两种实现方 法:1将驱动程 序添加到java.1ang.System的属性jdbc.drivers中;2在程序中 利用Class.forName()方法加载指 定的驱动 程序。本文使用 后者连接SQLServer数据库,以学生信息管理系统为例,具体实现方法如下:

首先加载驱动程序:Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver" );然后通过DriverManager类的getConnection方法连接数据库:

DriverManager.getConnection("jdbc:sqlserver://localhost:1433;DatabaseName= 学生信息 管理" ," sa" ",XZ20702521" );当中的3个参数分别为数据库路径url、用户名username以及密码password。这里需要特别说明的是:使用该方法连接数据库必须开启数据库服务端口(默认端口为1433),使用SQLServer数据库的 混合启动 模式。

在编写代码时需要抛出异常,并且处理异常事件。尤其需要注意的是,要把sqljdbc4包导入到该工程中,否则会提示找不到驱动程序:java.lang.ClassNotFoundException:com.microsoft.sqlserver.jdbc.SQLServerDriver。

2JTable用于输入、输出界面方法

2.1数据结果集查询

在信息管理系统开发中,常常需要根据条件来查询表格中的数据,具体操作如下:

resultSetType为结果集类型,它是ResultSet.TYPE_FORWARD_ONLY、ResultSet.TYPE_SCROLL_INSENSITIVE或ResultSet.TYPE_SCROLL_SENSITIVE之一。其中ResultSet.TYPE_FORWARD_ONLY是默认值,表示结果集只能向前滚动;ResultSet.TYPE_SCROLL_INSENSITIVE表示数据修 改后不反 映在结果 集中,除非重开statement;ResultSet.TYPE_SCROLL_SENSITIVE表示数据修改后马上反映在结果集中。

resultSetConcurrency为并发类 型,它是ResultSet.CONCUR_READ_ONLY或ResultSet.CONCUR_UPDATABLE之一。其中ResultSet.CONCUR_READ_ONLY为默认类型,表示系统 无法修改 结果集;ResultSet.CONCUR_UPDATABLE表示系统可以修改结果集。

TableName表示需要显示的数据表表名。

2.2用JTable输出数据

在大多数信息管理 系统中,需要对数 据进行直 观显示,表格通常是开发人员的首选方法。下面介绍如何使用JTable显示数据库中的数据。

(1)将结果集用一个二维向量存储,具体方法如下:

(2)创建TableModel和JTable,具体方法如下:

具体显示如图1所示。

图1中,虽然数据能够正常显示,但是单元格的宽度无法自动调整到最佳,因此可以写一个计算表格单元格最佳宽度的方法,具体代码如下:

调整后的效果如图2所示。

2.3用JTable修改数据

除了数据的输出,数据的修改及输入添加操作在信息管理系统中也是十分常见的。如果这两种操作可以直接用表格来实现,无疑十分方便。

下面具体介绍怎样使用JTable进行数据的修改和添加。

无论是在JTable中进行数据添加或是修改,都需要对JTable单元格中内容的改变进行事件处理,因此需要在table中添加一个事件监听器,具体代码如下:

在进行修改操作时,可以直接通过修改单元格内容实现对数据的修改,具体代码如下:

上述几行代码的主要功能是:当JTable单元格的 内容发生改变时,取得当前单元格的行和列,然后将修改后的内容传回到数据库中,实现修改操作,效果如图3所示。

2.4用JTable输入数据

在输入数据时,首先是添加操作,即先由用户输入要添加的学生学号,例如“2015004”,然后生成一行只有学号的表格,并将其添加到数据库中,代码如下:

说明:这里的"2015004" 是由用户输入的主键内容,在具体的信息管理系统中可以通过多种方式获得,这里就不作过多赘述。运行结果如图4所示。

完成上述操作后,只需修改空白单元格里的内容即可实现添加数据操作,效果如图5所示。

3结语

数据库组件 篇8

1 数据采集与组态软件

1.1 数据采集概况

数据的采集是数字化、点子扫描系统记录的过程以及内容和属性的编码过程, 其主要的是从相应的传感器和其他等待测量的设备等模拟和数字被测的单元当中, 自动的采非电量或者是电量的信号, 将其送到上位机上进行分析和处理的过程。数据采集系统主要的是结合基于计算机或者是其他的专用测试的平台的测量软件和硬件产品, 以此来灵活的实现用户自定义的系统。数据采集技术已经被广泛的引用到各个领域当中, 其随着科学技术的发挥在那也得到快速的发展, 数据采集主要的目的是为了测量电流、电压以及温度等多种物理现象, 数据采集系统整合了传感器、信号、信号调理以及数据采集设备和应用软件等。

1.2 组态软件概况

组态软件又被称之为组态监控软件系统软件, 其主要的是指一些数据采集和过程控制当中专用的软件。其是处在自动控制系统监控层一级的软件的平台以及开发环境, 使用相对灵活的组态的方式, 为相应的用户提供快速构建工业自动化控制监控系统功能的, 并且具有通用层次的一种软件工具。组态软件当前应用的范围非常的广泛, 其可以应用到电力系统、石油以及化工等领域的数据采集以及监视控制以及过程控制等诸多的领域。组态软件是具有专业性的, 一种组态软件只能够适用于某种领域, 组态软件大多数都支持各种主流的工控设备以及标准的通讯协议, 并且一般情况下还会提供分布式数据管理以及网络功能。

1.3 数据采集和组态软件的关系

数据采集是组态系统运行的前提, 数据采集的对象是组态系统加工和处理的对象, 数据采集是组态系统的核心的组成部分。数据采集系统能够准、及时的采集到相关的数据, 能否良好的进行功能上的扩展, 以及能否灵活的进行运用, 是关系到组态系统正常运行的关键性的因素, 其已经成为在设计中的一个重要的问题。

2 C#与组件设计

C#是微软公司发布的一种面向对象的, 运行于.NET Framework上面的高级程序设计语言, 其主要的包含了单一继承、接口以及与Java几乎相同的语法以及编译成中间代码再进行运行的过程。C#是一种安全的、简单的、稳定的以及优雅的, 是由C和C++语言所衍生出来的面对对象的高级编程语言。C#语言在继承了C和C++语言强大的功能的同时, 还去除了它们本身的一些复杂的特性, C#综合了VB相对简单的可视化的操作以及C++语言高效运行的特点, 是一款操作能力强大、语法风格优雅、语言特征创新以及便捷的面向组件编程的支持成为.NET开发的首选的编程语言, 其能够为在分布式环境中的开发提供适用的组件开发和应用。

组件简单的来说就是对象, 组件主要的是对数据和方法的简单封装, 一个组件是代表一个系统当中实现的物理的部分, 其主要的包含了软件代码或者是相应类似的内容, 比如脚本和命令文件等。组件并不是很复杂, 自己可发的组件通常情况下可以分为以下三种类型:复合组件、扩展组件以及自定义组件。其中复合组件是将享有的各种组件结合起来, 形成一个新的组件, 能够将所组成组件的性能集中起来;扩展组件主要的是在现有组件的组件入门上派生出一个新的组件, 为原有的组件增加新的性能或者是更改原有组件的控能;自定义组件是直接的从System.作Windows.Forms.Control类派生出来, 其具有很强的灵活性, 同时对于开发者的要求也是非常高的。组件的设计是当前系统设计的重要的组成部分, 组件是否具有灵活的结构, 能否提供方便的调用接口等, 将直接的会影响到组件的整体质量。

3 C#封装C接口的硬件驱动

随着科学技术的不断发展, 当前硬件设备的种类在不断的增加, 而硬件制造商提供的主要的驱动程序有以下两种:一种是以DLL的形式提供, 其中以C或者是C++的接口居多;另一种是以Active X的形式提供, 以下就主要的对DLL和C#之间的配合进行讨论。在C#运行于.NET Framework上的时候, 其相应的代码是安全的, 被称之为托管代码。在托管代码当中调用非托管代码的步骤如下:首先是获取非托函数的信息;其次是对该非托管函数进行声明, 并且设置P/Invoke所需的属性;最后就是对该函数的调用。在完成上述第一步的过程当中, 可以使用dumpbin.exe或者是depends.exe工具, 这两个工具在VC++.NET部分提供。以下就一个完整的互操作的调用实例做探讨分析。

如果已经存在一个VC++6.0创建的DLL文件, 其文件名称之为Dev Agent.dll, 其中包含了被导出的函数extern”C”HRESULT_s t d c a l l D o Wo r k (c o n s t I N T i D e v I D, I N T i ICmd ID) ;其在托管代码防止使用此函数的代码表示为:[Dll Import (“Dev Arent.dll”) ]static extern int Do Work (const int i Drv ID;int i ICmd ID) ;在声明之后就可以直接的调用了, 此外, 在声明的时候必须使用extern进行修饰, 其主要的告知编译器, 此函数是在外部实现的方法体, 还应该用static进行修饰, 表明不需要实例化就可以进行调用。

4 结束语

数据采集组件的设计的科学合理性对于一个涉及到多种硬件设备的系统来说是非常重要的, 在组件设计的过程中, 应该尽最大努力保障其组件的高效性和灵活性, 只有这样才能够保障对系统进行有效的扩展。

摘要:随着科学技术的不断的发展, 组态软件当前已经被广泛的应用到各个领域中, 组态软件运行的前提和基础是数据采集, 数据采集是组态软件重要的组成部分, 数据采集的优劣将直接的影响组态系统的运行。以下就主要的对C#设计实现数据采集组件的关键技术以及设计的思路做探讨分析, 保障其设计的科学合理性, 使组态软件能够发挥出最佳的效果。

关键词:C#设计,数据采集,组件,关键技术设计思路

参考文献

数据库组件 篇9

关键词:COM组件,C#,ASP.NET,DataGridView,Excel

1 引言

Microsoft Excel具有强大的报表统计功能,而基于C#语言的ASP.NET是Microsoft新一代的程序开发工具,很多程序开发人员利用它来开发新一代理管信息系统。在程序中查看一些信息资料时,经常需要将这些资料通过Excel或打印,那么如何在基于C#语言的ASP.NET开发的Windows应用程序中实现该项功能呢,就要在程序设计时使用微软的COM技术,该技术在Windows平台上已得到日益广泛的应用,并逐渐成为建立组件及通过组件建立应用程序的规范。在COM构架下,开发者可编制各类功能专一的组件,然后将其按需组合,构成复杂的应用系统。

2 开发工具

本程序开发工具是Visual Studio 2005专业版,后台数据库采用SQL Server 2005,编程语言采用C#。

3 开发过程

(1)在Visual Studio 2005中新建一个Windows应用程序,将其命名为SQLEXCEL,默认主窗体为Form1。

(2)在Form1窗体中添加一个Data Grid View控件和两个Button控件(Button1和Button2)如图1,其中,Data Grid View控件用来显示数据库的记录,Button1控件用来按照一定的条件检索数据库中满足条件的记录,并将查询结果放到DataGrid View中,Button2控件用来将Data Grid View控件中的数据以Excel文档格式输出。

(3)主要程序代码1)在Data Grid View控件中显示数据的实现代码如下:

本实例通过使用Microsoft Excel自动化对象模型中的Workbooks对象的Add()方法创建一个新的工作簿,然后通过设置Excel对象的Cells属性,向新建的工作簿中添加数据记录。为了让读者更好地理解程序,下面对Workbooks对象的Add()方法和Excel对象的Cells属性进行简要的介绍。

1)Workbooks对象的Add()方法

①Template:指定是否添加工作簿,如果为True,表示添加;否则,表示不添加。

②返回值:返回Workbook类型,表示一个Excel工作簿。

2)Excel对象的Cells属性

该属性用来指定Excel工作簿中单元格的内容。

例如:excel.Cells[0,0]=“abcd”(该命令用来指定Excel工作簿中第一行第一列的单元格中的内容为“abcd”)

另外,需要特别注意的是在程序中对Excel进行操作控制时,需要引用Excel动态链接库(Microsoft Excel 11.0 Object Library),添加方法如下:

在Visual Studio 2005中选中当前项目,单击右键,选择“添加引用”选项,在弹出的“添加引用”对话框中选择“COM”选项卡(如图2),然后找到要引用的Excel动态链接库,单击“确定”按钮即可。

4 结语

上一篇:自尊下一篇:公路滑坡监测