您的位置:控制工程论坛网论坛 » 站务交流 » 国庆节奖励积分 欢迎参与!

  • netwell

    netwell   |   当前状态:在线

    总积分:5615  2025年可用积分:0

    注册时间: 2006-12-06

    最后登录时间: 2017-03-16

    空间 发短消息加为好友

    netwell   发表于 2008/10/1 19:17:16

    1 引言 目前,变频调速已广泛应用于石油化工、家电等诸多领域,在变频调速的控制理论不断发展的同时,与之相应的控制手段和技术也朝着数字化与软件化方向迅速发展。电力电子技术的发展为交流调速奠定了物质基础,电力电子器件正在向大功率化、高频化、模块化、智能化方向发展。所以变频器在满足各项性能指标的同时,减小体积、简化控制、降低成本是目前面临的问题之一。当前应用比较广泛的控制方法虽然控制效果比较好,但过于复杂。本文设计的变频器专门针对小功率电机,具有体积小,成本低的优点。


    2 系统组成 变频器的整体结构如图1所示。



    图1 变频器的结构图


    整个系统主要有两部分组成,即控制电路和主回路。控制电路是以嵌入式微控制器AT89C51为核心,主回路由整流电路和智能功率模块(IPM)组成。IPM是集门极驱动和短路、过流、欠压、过热保护功能于一体的IGBT功率器件,其结构紧凑、性能稳定、工作可靠。在整个系统中,控制系统给主回路提供控制波形,并担负起全系统的控制和监护。 SA4828发出的6路PWM控制信号,通过IPM电源及光电耦合器进行隔离之后,输出给IPM逆变器,控制IPM直接加在异步电动机上的输出信号,实现对电机的变频调速功能。当IPM检测电路检测到有故障时将一路信号送到SA4828,SA4828的输出PWM波立即变成低电平,从而关断IPM。另一路送给单片机进入中断处理程序。


    3 主电路的参数选择 电机参数为额定功率0.75kW,额定电流2.1A,额定电压380V。 整流器的输入电压为单相工频交流电,当没加滤波电容时,单相桥式整流电路输出的平均直流电压为: 由 加上滤波电容后,Udc的最大值可达到交流线电压的峰值:


    3.1 整流二极管模块的参数计算 整流二极管的选择应从电机在最大负载电流下仍能可靠工作的情况下考虑。所以流过二极管的电流有效值为:



    式中,Im为电机最大负载电流峰值,其值一般取为电机额定电流的5~6倍。故二极管的额定电流为:


    二极管的耐压值为: 式中,U21为变压器二次线电压有效值。根据市场供货情况选择二极管整流模块的参数为1000V,30A。


    3.2 滤波电容的选择 当输入单相线电压为220V时,整流输出的最大电压是311V,考虑到电压为10%的波动,则最大输出可达342V,因此滤波电容的耐压值应在此电压之上,并有一定的安全裕度,故取滤波电容的耐压值为450V。 理论上,滤波电容的值越大越好,但考虑到体积成本等因素,电容值也不可能选得太大,事实上,中间直流滤波电容的容量是从限制电压波动的角度来选择的,根据经验,可选3个450μF的铝电解电容。


    3.3 逆变器功率器件的选择 IGBT是场控型大功率开关元件,它热时间常数小,承受过载能力差,在实际应用时,从负载最严重的情形来选择功率元件。功率元件的电流额定值:


    式中,λ—电机的过载系数,一般取1.5~2; In—电机的额定电流。此外,还应保证功率器件IGBT的集电极-发射极额定承受电压Uceo至少应为实际承担的最高峰值1.2倍以上,则功率器件的耐压值:


    所以选择IPM为600V/20A的智能功率模块,经比较多种型号的IPM的性能价格指标,最终采用三菱公司的PM20CSJ060。


    4 各部分电路功能 4.1 PWM产生器SA4828功能介绍 SA4828是MITEL公司于90年代末推出的专为感应电机的变频驱动而设计的一款集成电路。它采用双缘调制技术,能够产生精确的SPWM脉冲,并且可在紧急情况下快速关断脉冲,保护逆变器和电机。它与单片机配合使用,所有需定义的参数如载波频率、死区对间、最小脉宽、调制波形、V/F曲线等均由单片机通过A/D复用总线传送,输入一次数据后就可让它独立连续运行,直到需要更新控制数据。在使用中,它可以看作是单片机的外部存储器或一个I/O端口。SA4828的工作频率范围很宽,时钟频率为25kHz时,载波频率可达24kHz,输出频率4kHz。它还可以提供三种调制波形供用户选择:增强型,正弦型和高效型。此外,它的频率分辨率很高,可达16位字长。它兼容INTEL和MOTOROLA总线的单片机。该电路通过数据总线和控制线,即可直接与微处理器进行通讯,不需增加外围电路。



    图2 SA4828的管脚分布图


    SA4828的管脚布置如图2所示,它采用双列直插式封装,共28个管脚。介绍如下: (1)与单片机接口的标准总线AD0—AD7为 8位地址与数据复用总线。 (2)控制总线 (3)信号输出及控制 RPHT、 RPHB、 YPHT、 YPHB、 BPHT、 BPHB输出三相PWM脉冲驱动信号,均为标准的TTL电平。端指示输出封锁状态,低电平有效。SETTRIP为关断触发信号输入端,当输入为高电平时,输出脚及6个PWM输出将被迅速地箝位在低电平状态,这种封锁信号只有在信号作用下才能解除。 (4)电源 VDD为+5V电源端,VSS为芯片接地端。


    4.2 SA4828的控制 SA4828通过8位地址数据复用总线与单片机89C51相连,如图3所示。



    图3 SA4828与89C51的连接


    PWM脉冲的各种必需参数都是通过这条总线传给SA4828的。故障封锁信号直接接在89C51的变小上,一旦SA4828收到来自IPM或故障保护电路的故障信号。 它除了封锁PWM脉冲输出外,还将端箝位在低电平以向89C51发外部中断信号,使单片机转入中断处理子程序,处理故障中断信号。 SA4828芯片是可编程的。通过6只临时寄存器R0~R5、2只虚拟寄存器R14、R15,对48位的初始化寄存器和控制寄存器进行编程,获得PWM波。 SA4828内部有两个48位的寄存器,分别是初始化寄存器和控制寄存器。初始化寄存器存放基本的运行参数,如载波频率、脉冲删除、波形选择等,它只能在变频器开始运行前设定,并且在运行过程中不能修改。控制寄存器用来设定变频器的输出频率、启动停止等。它在整个运行期间可以不断修改,以实时控制电机的运行。 (1)初始化寄存器 初始化寄存器及其功能见表1。实际输出PWM波形的最小脉宽为脉冲取消时间减去失去时间。若幅值控制AC=1,则可三相幅值独立控制。选择不同的WS1和WS0,可输出正弦型(00)、增强型(01)和高效型(10)PWM波。通过对虚拟寄存器R14的写操作,就可将R0~R15中设定的初始化数据传送到48位的初始化寄存器中。 (2)控制寄存器控制寄存器及其功能见表2。若初始化寄存器中,幅值控制位AC=0,那么输出幅值选择字只须写入R相即可。若控制寄存器中,设定看门狗定时器无效,即WTE=0,那么在初始化过程中,不须给出看门狗计数器的值。通过对虚拟寄存器R15的写操作,就可将R0~R5中给定的运行数据传送到48位的控制寄存器中。





    (3)初始化参数计算单片机和SA4828的时钟频率均为12MHz,调制波频率范围0~50Hz,载波频率位15kHz,实际脉冲删除时间10μs,死区延迟时间5μs。 l 载波频率设定字由载波频率得:



    取2n+1=2则,n=0。载波频设定字为000。反算载波频率:



    l 调制波频率范围设定字由得:


    取2m=2,则m=1。调制波频率设定字为001。反算调制波频率:


    所以寄存器R0的值为00100000,即20H。 l 脉冲延迟时间设定字由得:



    所以寄存器R2中的值为21H。 l 最小删除脉宽设定字最小删除脉宽等于实际最小脉宽加上延迟时间,所以=10+5=15μs由得:



    所以寄存器R1中的值为25H。 l 波形选择字和AC设定选用高效波形,选择字为10,红相控制幅值AC=0。所以寄存器R3中的值为02H。 l 看门狗设定不用看门狗,所以寄存器R4,R5的值均为00H。 (4)控制寄存器值的参数 由于控制寄存器中的参数,在整个运行过程中需实时变化以控制电机的运行,因此需要在运行过程中实时计算得到。


    4.3 IPM20CSJ060智能功率模块 4.3.1 IPM20CSJ060的特性 l 集射极最大压降为600V,最大的集射极电流为20A,浪涌电流为40A,最高开关速度可达20kHz。 l 相互独立和隔离的门极驱动及保护逻辑。 l 内置IGBT的过流、短路、过温、欠压的检测、保护及保护信号的输出电路。



    图4 PM20CSJ060的内部结构


    图4即为PM20CSJ060的内部结构: 图4中各引脚介绍如下: VUPC,VVPC,VWPC:U,V,W相上桥臂驱动电源的接地端; UFO,VFO,WFU,V,W相上桥臂保护信号输出端; UP,VP,WP:U,V,W相上桥臂控制信号输入端; VUP1,VVP1,VWP1:U,V,W相上桥臂驱动电源正极的输入端; VNC:三相下桥臂公用驱动电源的接地端; VN1:三相下桥臂公用驱动电源正极的输入端; UN,VN,WN:U,V,W下桥臂控制信号输入端; F三相下桥臂公用保护信号输出端; P:电机主回路的直流电源正端; N:电机主回路的直流电源负端; U,V,W:U,V,W相输出端(接异步电机三相定子绕组)。


    4.3.2.驱动要求 该模块要求U,V,W三相的上桥臂驱动电源必须由3个相互隔离的独立电源供电,U,V,W三相的下桥臂公用1个驱动电源。驱动电源均为+15V电源。直流母线电压即P,N间的电压推荐不高于450V。在25℃时,功耗不大于56W。工作环境温度范围为-20~+100℃。 由于变频器最终是用来控制高压信号以驱动电机的。因此其中的变频信号都要在主回路与控制回路加入隔离电路。主回路IPM器件一般加光电耦合器较为方便。高速IPM器件的光耦一般接成如图5所示。



    图5 控制信号与IPM器件的接口


    图5中对驱动隔离光耦本身有一定的要求,一般tplH,tPHL<0.8μs, CMMR>10kV/μs,同时应在IPM的控制电源上加一个10μF的低感高频退耦电容。而且图5中控制信号输入端的上拉电阻R应该足够小以避免高阻抗IPM输入端拾取噪声,又要足够大使得高速光耦在推荐的最大电压下仍能可靠的控制IPM。本设计中选择的驱动隔离光耦为HCPL4504是美国安捷伦公司专为IPM等功率器件设计的光电隔离接口芯片,其tPLH,tPHL<0.3μs,内部集成高灵敏度光传感器,极短的寄生延时为IPM应用中的高速开关的死区时间确保了安全,是功率器件接口的完美解决方案。 相对来说对故障输出光耦要求不是很严格,因此本设计中选择价格较低的PC817。 隔离电源是决定变频器可靠性的因素之一。由于变频器的原理决定了IPM器件需要多组互相隔离的控制电压,至少为四组。本设计中选择IPM专用电源DF003。它是600V耐压IPM的专用供电电源,具有耐压范围宽,保护全,输出电流强劲等优点。


    4.4 系统保护电路 虽然在IPM模块中它已经设有过流、过热等保护,



    但为了提高系统的可靠性及更好的保护IGBT管,仍需设置一套快速而准确的保护环节以防止各种故障,因此本设计中还设计的系统的过压,欠压保护,由于篇幅原因,在此就不给出了。


    5 系统软件设计 软件设计是整个逆变控制的核心,它决定着变频器的输出特性,程序流程图如图6: 从程序流程图中可看出:单片机先将SA4828复位,在向其传送初始化参数和控制参数之后SA4828即可输出PWM波形,逆变器随后将处于工作状态,这时单片机应不断查询输出状态,以便随时调整PWM输出特性,以满足系统要求。


    6 结束语 实际应用表明,使用SA4828和智能功率模块IPM设计变频调速装置,设计简化,运行可靠,功能完善,调试方便,在控制、保护方面具有较高的智能控制。 选用智能功率模块和SA4828波形发生器,减少了设计时间,简化了硬件电路,减少了安装和布线时间,减小了整个系统的体积,有利于提高系统的稳定性。

    12楼 回复本楼

    引用 netwell 2008/10/1 19:17:16 发表于12楼的内容

  • CLY

    CLY   |   当前状态:离线

    总积分:986  2025年可用积分:0

    注册时间: 2007-04-02

    最后登录时间: 2009-11-03

    空间 发短消息加为好友

    CLY   发表于 2008/10/1 20:11:23

    13楼 回复本楼

    引用 CLY 2008/10/1 20:11:23 发表于13楼的内容

  • baxiaqqq

    baxiaqqq   |   当前状态:离线

    总积分:352  2025年可用积分:0

    注册时间: 2008-09-07

    最后登录时间: 2008-11-09

    空间 发短消息加为好友

    baxiaqqq   发表于 2008/10/1 21:33:44

    硬盘接口技术详解 [转帖]


    可能有点重复,但是比较全一些


    硬盘接口技术详解
    1、IDE/ATA

    1.1 概述
    IDE即Integrated Drive Electronics,它的本意是指把控制器与盘体集成在一起的硬盘驱动器,我们常说的IDE接口,也叫ATA(Advanced Technology Attachment)接口,现在PC机使用的硬盘大多数都是IDE兼容的,只需用一根电缆将它们与主板或接口卡连起来就可以了。
    IDE接口是由Western Digital与COMPAQ Computer两家公司所共同发展出来的接口。因为技术不断改进,新一代Enhanced IDE(加强型IDE,简称为EIDE)最高传输速度可高达100MB/秒(Ultra ATA/100)。
    IDE接口有两大优点:易于使用与价格低廉,问世后成为最为普及的磁盘接口。但是随着CPU速度的增快以及应用软件与环境的日趋复杂,IDE的缺点也开始慢慢显现出来。Enhanced IDE就是Western Digital公司针对传统IDE接口的缺点加以改进之后所推出的新接口。Enhanced IDE使用扩充CHS(Cylinder-Head-Sector)或LBA(Logical Block Addressing)寻址的方式,突破528MB的容量限制,可以顺利地使使用容量达到数十GB等级的IDE硬盘。
    在PC中,I/O设备,如硬盘驱动,不是直接与系统中央总线连接的(AT总线在AT系统,或PCI总线在之后的系统)。而I/O设备与接口芯片相连,而接口芯片与系统总线连接。
    接口芯片组成了I/O设备与系统总线的桥,在系统总线协议(PCI或AT)与I/O设备协议(如IDE或SCSI)之间进行翻译。这使I/O设备可以独立于系统总线协议。
    下图展示了PC工作站的基本系统结构,展示了IDE设备与系统余下部分的关系。


    1.2 IDE传输模式
    IDE硬盘接口的几种传输模式有明显区别。IDE接口硬盘的传输模式,经历过三个不同的技术变化,由PIO(Programmed I/O)模式,DMA(Direct Memory Access)模式,直至现今的Ultra DMA模式(简称UDMA)。
      PIO(Programmed I/O)模式的最大弊端是耗用极大量的中央处理器资源,在以前还未有DMA模式光驱的时候,光驱都是以PIO模式运行。大家可能还记得,当时用光驱播放VCD光盘,再配以软件解压,就算使用Pentium 166,其流畅度也不理想,这就是处理器被长期大量占用的缘故。以PIO模式运行的IDE接口,数据传输率达3.3MB/秒(PIO mode 0)至16.MB/秒(PIO mode 4)不等。后来随着Fast ATA/DMA模式的出现,IDE接口及装置都开始有了DMA的支持,DMA模式分为Single-Word DMA及Multi - Word DMA两种,跟PIO模式的最大区别是:DMA模式并不用过分依赖CPU的指令而运行,可达到节省处理器运行资源的效果。不过,后来由于Ultra DMA模式的出现和决速普及。这两个模式也只会是昙花一现,不久即被UDMA所取代。Single-Word DMA模式的最高传输率达8.33MB/秒,Multi-Word DMA(Double Word)则可达16.66MB/秒。
      由于Ultra DMA模式(Ultra ATA制式下所引用的一个标准)的普及,UDMA模式就全以16-bit Multi-Word DMA模式作为基准。UDMA其中一个优点是它除已拥有DMA模式的优点外,更应用了CRC(Cyclic Redundancy Check)技术,加强了资料在传送过程中侦错及除错方面的效能。在最初UATA/33规格制定时,为了保留IDE系统的最高兼容性,所以在硬件的设计上并没做出太大的修改,不仅能完全向下兼容旧式ATA装置,也无需硬件生产商改变接头及讯号联接的设计。自Ultra ATA标准推行以来,其接口便应用了DDR(Double Data Rate )技术将传输的速度提升了一倍,目前已发展到Ultra ATA/100了,其传输速度高达100MB/秒。
      Ultra DMA/66/100专用的硬盘连接线和一般的40芯连接线有所不同。Quantum在制定Ultra ATA/66的同时,在旧有IDE排线的规格上略作修改。除沿用40芯的IDE接头外,排线更换成80芯,在原有40芯排线的每条线芯之间,都多加一条线来相隔,并将这40条新线跟原先40芯排线之中原有的7条地线相连,把构成Crosstalk现象的电磁波滤走而增加了数据传输的稳定性(在高速的电子讯号传输时,当一大堆带着高频讯号的电线互相靠近一起的时候,讯号线上发出的电磁波便会互相干扰,这就是所谓的“Crosstalk”现象)。Ultra ATA/66/100排线的基本规格是徘线全长不超过18英寸。也就是说要真正发挥Ultra DMA/66的高速传输是需硬盘、排线的配合的,当然如果搭配一般的40芯排线,Ultra DMA/66接口的硬盘依然能够以向下兼容的方式工作,只不过无法使用Ultra DMA/66罢了。
      硬盘的传输模式进入UltraATA/100的时代。目前,硬盘的传输模式已由最早的PIO Mode 4(传输速率为16.6 MB/秒)进入UltraATA/100的时代。提醒DIY朋友注意,所选购的硬盘不仅要本身支持Ultra
    ATA/100,而所选购的主板的芯片组也要支持Ultra ATA/100,这样才能真正达到100MB/秒的传输速度。如果你现在使用的主板不支持Ultra ATA/1OO,只要购买一块i815E的主板或支持Ultra ATA/100的硬盘控制卡就行了。
    Serial ATA:(即串行ATA),是英特尔公司在2000年IDF(Intel Developer Forum,英特尔开发者论坛)上发布的将于下一代外设产品中采用的接口类型,就如其名所示,它以连续串行的方式传送资料,在同一时间点内只会有1位数据传输,此做法能减小接口的针脚数目,用四个针就完成了所有的工作(第1针发出、2针接收、3针供电、4针地线)。这样做法能降低电力消耗,减小发热量。目前市面也有了部份支持此接口的硬盘,如希捷公司推出的新款硬盘就支持串行ATA,不过非常少见。

    1.3小结
    ATA接口优点:
    价格低廉
    兼容性非常好
    ATA接口缺点:
    速度慢
    只能内置使用
    对接口电缆的长度有很严格的限制

    2、SCSI

    2.1概述
    SCSI直译为小型计算机系统专用接口(Small Computer System Interface)是一种连结主机和外围设备的接口,支持包括磁盘驱动器、磁带机、光驱、扫描仪在内的多种设备。它由SCSI控制器进行数据操作,SCSI控制器相当于一块小型CPU,有自己的命令集和缓存。要了解SCSI,必须先了解它的类型,以下是STA(SCSI Trade Association,SCSI同业公会)的标准分类。
    2.2 SCSI接口类型
    SCSI连接器分为内置和外置两种,内置数据线的外型和IDE数据线一样,只是针数和规格稍有差别,主要用于连接光驱和硬盘。40针IDE线有40根导线,40针ATA66有80根导线,SCSI内置则分为50针、68针和80针。至于SCSI外置数据线,就有以下几种规格,它们的密度均不相同,千万别弄错了。

    ? Apple SCSI,共有25针,分为两排,8位,常用于Mac机和旧式Sun工作站。

    ? Centronics,共有50针,分为两排,8位,有点像并行口,它可以连接的设备数目最多。

    ? SCSI-2 ,共有50针,分为两排,8位。

    ? Sun Microsystem的DD-50SA,共有50针,分为三排。

    ? SCSI-3和Wide SCSI-2,共有68针,分为两排,16位。旧式DEC单终结SCSI 使用68针高密接口。

    ? SCA,共有80针,分为两排。


     2.3 SCSI ID
    相信许多SCSI用户都有这种经历,插上设备之后,操作系统怎样也不认,后来检查总线,才发现是终结和ID没有设置好。ID(identify)作为SCSI设备在SCSI总线的唯一识别符,绝对不允许重复,可选范围从0到15,SCSI主控制器通常占用id 7,即是说我们可以用在设备上的ID号共有15个。
    在SCSI总线中,控制器也算一个设备, 即实际最大可连接设备数目 = 理论最大支持设备数目-1。
    2.4 总线终结器
    总线终结器能告诉SCSI主控制器整条总线在何处终结,并发出一个反射信号给控制器,必须在两个物理终端作一个终结信号才能使用SCSI总线。常见的错误是把终结设置在ID号最高或最低的地方,而不是设置在物理终端的SCSI设备上。其实,SCSI设备总是以链形来连接的,按顺序就能分辨出哪一个是终结设备。
      终结的方式有三种:自终结设备、物理总线终结器和自终结电缆。大多数新型SCSI设备都有自终结跳线,只要把非终结设备的自终结跳线设置成OFF即可避免冲突问题;物理总线终结器是一种硬件接头,又分为主动型和被动型两种,主动型使用电压调整器来进行操作,被动型利用总线上的能源信号来操作,被动型比主动型更为精确;自终结电缆可以代替物理总线终结器,也是一种硬件,它的价格非常昂贵,常用于两个主机连接同一个物理设备,如:两个服务器存取同一个物理SCSI硬盘。
      通过检查SCSI ID和总线终结器,我们可以找出大多数冲突现象的解决方法,这是SCSI设备用户必须重视的一点。

    2.5 SCSI规格公用的几个标准术语解释:
    2.5.1 SCSI-1:它是最早SCSI,特点是:支持同步和异步SCSI外围设备,支持7台8位的外围设备,使用8位的通道宽度,传输速率为4MB/s,这现在通常是扫描仪在用的。
    2.5.2 SCSI-2:类似SCSI-1,但是可以支持同时连接7个装置,传输速率为 10-20MB/s,目前有CD-R、CD-ROM在使用。
    2.5.3 Fast SCSI:8位的通道宽度,使用双倍的频率,传输速率为 10MB/s。
    2.5.4 Wide SCSI:16位的通道宽度,传输速率为20MB/s。
    2.5.5 ULTRA SCSI:8位的通道宽度,传输速率为20MB/s,其允许接口电缆的最大长度为1.5米。
    2.5.6 Ultra Wide SCSI:16位的通道宽度,传输速率为40MB/s,其允许接口电缆的最大长度为1.5米。
    2.5.7 ULTRA 2 SCSI:8位的通道宽度,其采用了LVD(Low Voltage Differential,低电平微分)传输模式,传输速率为40MB/s,允许接口电缆的最长为12米,大大增加了设备的灵活性,支持同时挂接15个装置。
    2.5.8 WIDE ULTRA 2 SCSI:它跟Ultra 2 SCSI差不多,也是采用LVD传输模式,允许最长接口电缆为12米,可同时挂接15个装置,不同于Ultra 2 SCSI,它有16位的通道宽度,因此传输速度为80MB/s。
    2.5.9 Ultra 160/m SCSI:支持最高数据传输率为160MB/s。
    2.5.10 Ultra320 SCSI:支持最高数据传输达到了320MB/s,是目前最新的SCSI接口类型。
    2.5.11 Single Ended(单终结):许多旧式设备都是单终结设备,它们限制于 SCSI-1协议的6米长度。注意:此距离包括设备内部电缆的距离。
    2.5.12 Differential(分差动):SCSI总线和设备可借助它来沿长传输的距离,附加线的最大长度为25米。缺点是与单终结设备不兼容。
    STA术语 最大总线速度MB/秒 总线宽度单位:bit 最大总线长度单位(米) 最大支持设备设备数目
    单终结 LVD HVD
    SCSI-1 5 8 6 - 25 8
    Fast SCSI 10 8 3 - 25 8
    Fast Wide SCSI 20 16 3 - 25 16
    Ultra SCSI 20 8 1.5 - 25 8
    Ultra SCSI 20 8 3 - - 4
    Wide Ultra SCSI 40 16 - - 25 16
    Wide Ultra SCSI 40 16 1.5 - - 8
    Wide Ultra SCSI 40 16 3 - - 4
    Ultra2 SCSI 40 8 - 12 25 8
    Wide Ultra2 SCSI 80 16 - 12 25 16
    Ultra3 SCSI 160 16 - 12 - 16

    2.6小结
    SCSI接口优点:
    适应面广,在一块SCSI控制卡上就可以同时挂接15个设备
    高性能(具有很多任务、宽带宽及少CPU占用率等特点)
    具有外置和内置两种
    SCSI接口缺点:
    价格昂贵
    安装复杂

    3、 Fibre Channel(光纤通道)
      光纤通道是一种跟SCSI或IDE有很大不同的接口,它很像以太网的转换开头。以前它是专为网络设计得,后来随着存储器对高带宽的需求,慢慢移植到现在的存储系统上来了。光纤通道通常用于连接一个SCSI RAID(或其它一些比较常用的RAID类型),以满足高端工作或服务器对高数据传输率的要求。
      光纤现在能提供100MBps的实际带宽,而它的理论极限值为1.06GBps。不过现在有一些公司开始推出2.12Gbps 的产品,它支持下一代的光纤通道(即Fibre Channel II)。不过为了能得到更高的数据传输率,市面的光纤产品有时是使用多光纤通道来达到更高的带宽。
      不像SCSI,光纤通道的配线非常柔韧。如果带有光纤光学电缆(Fiber Optic Cabling),它支持最长的长度超过了10公里,所以可以说SCSI在接口电缆长度的限制上跟光纤是没法比得,因为SCSI最长接口电缆不得超过12米。
    Features Fibre Channel SCSI
    Node to Node 100m 20m
    Max. Optical Distance 10,000m 12m
    Current Speed 200MB/s 160MB/s
    Future Speed 400MB/s 320MB/s
    Max.Connections 126(loop) 16million(sw) 15
    Peripherals Supported All Limited types
    Cost Compared to SCSI Higher but decreasing
    Serial Connectivity Yes No
    Protocol Supported Universal SCSI
    ANSI Standard Yes Yes
    Dual Ported Operation Yes No

    Nomenclature(术语表)
    Speed – Media – Distance – Transmitter
    Speed: Media:
    400 400MB/s200 200MB/s100 100MB/s50 50MB/s25 25MB/s12.5 12.5MB/s SM Single Mode FibreM5 50/125 MultiMode FibreM6 62.5/125 MultiMode FibreMI Miniature Cable - CopperTV Video Cable - CopperTP Twisted Pair - CopperTW Twiax – Copper
    Distance: Transmitter:
    L Long:>2KMI Intermediate:100m to 200mS Short:
    14楼 回复本楼

    引用 baxiaqqq 2008/10/1 21:33:44 发表于14楼的内容

  • baxiaqqq

    baxiaqqq   |   当前状态:离线

    总积分:352  2025年可用积分:0

    注册时间: 2008-09-07

    最后登录时间: 2008-11-09

    空间 发短消息加为好友

    baxiaqqq   发表于 2008/10/1 21:35:37

    MPEG-l/2声频层Ⅲ(MP3)是一种声频编码标准,它能在低位速率的条件下提供高质量的声频输出。这种标准特别在编码器中,已经广泛应用在各种消费类电子产品中。当许多消费类电子设备变成便携式时,MP3解码算法的实现,通常要使用专用的低功耗DSP。即使便携式通信设备(蜂窝电话和PDA)能支持解码特性,但是并不能保证在任何情况下提供高质量声频输出。


    本文提出一种新型的MP3系统结构,它是利用双内核处理器(一个16位定点DSP和一个32位RISC MCU内核)实现的。这种DSP-MCU双内核处理器的主要优点是把系统控制的各种功能和MP3解码任务均集成在一个单块芯片上。如果DSP和MCU内核是可编程的,并能以并行的方式处理数据,则能得到更多的实惠。在这种系统中,MP3解码算法是利用高精度的DSP内核来实现,而RISC内核能完成位流缓冲和包含用户接口在内的各种控制。由于这种系统结构能够有效地支持DSP和RISC内核之间的并行处理,所以它在处理声频位流时所需要计算开销能降到最少。


    在实际应用中,对于完成MP3解码算法的内核程度,使用一个可编程的DSP就能足以满足运行要求。但是,当考虑到一个完整的MP3解码系统时,必须增加一个MCU,才能完成位流取指令和包含用户接口的系统控制。此时就应该把多块处理器集成到一块芯片,从而使系统的功耗、成本和硬件开销降到最小。在电路设计时,双内核DSP-MCU电路也可使用其他方法,如使用一片DSP、外扩MCU,或使用一片MCU,外扩DSP。利用外扩处理器组成的MP3解码系统,其性能是要比文中推荐的单片双内核解码系统差些,但是在无单片双内核解码时,也是一种较好的选择。


    由DSP和MCU内核组成的双内核处理器,特别适合低功耗的MP3解码系统。由于MP3解码系统是根据双内核结构的原理,所以它适用于便携式通信设备,如蜂窝电话,这是因为它能提供高性价比的声频输出(具有低功耗,低成本和高质量的声频)。


    1  系统结构


    MP3解码器的内部结构如图5-26所示。它是由一个数字声频处理和一个系统控制组成。在数字声频处理中,通过MP3解码算法,把来自编码输入数据进行解码和转换成模拟声频信号。在电路设计时,这部分应强调硬件开销要少,如低的计算复杂性和低的存储器及容量。在系统控制部分里,它的主要功能是管理编码数据文件和把存储在媒体里的存储文件传送给声频处理。另外,它也能处理来自用户接口的有关信息,并把信息传给数字声频处理或报告系统和数据当前的状态。在电路设计时,这部分应重点放在无硬件开销情况下处理器能力的充分利用。


     



    双内核MP3解码器的内部结构如图5-27所示。只要利用合适的配置功能,就能使这种双内核MP3解码器具有并行处理能力,即数字信号处理和系统控制分别由DSP和RISC来处理。MP3解码算法是由计算性能极好的DSP来完成,而MP3的帧缓冲文件管理和用户接口是由RISC内核来实现。在普通系统中,MP3的帧缓冲是作为DSP功能的一部分经常在DSP里执行。而在双核MP3解码器中,RISC是DSP工作的一部分,这样就能进一步提高双内核并行操作的能力。

    2硬件设计


    MP3解码器的硬件框图如图5-28所示。这个电路是由双内核DSP、程序ROM、多媒体卡(Multimedia Card,MMC)立体声声频的DAC、LCD、键盘、串行通信接口和电源组成。其中双内核(双芯片)DSP是用作解码算法和系统控制,而MMC是存储编码后的声频数据。另外,串行通信口用做与PC交换数据。


     



    (1) 公共的系统时钟


    在电路硬件设计时,其时钟频率应该支持MPEG-1/2标准规定的所有采样速率(48kHz、44.1kHz、32kHz、24kHz、22.05kHz、16kHz)。为了支持这些多采样速率,必须设计一个时钟发生器,其内部结构图如图5-29所示。其中DAC的主时钟频率为6.1440MHz和11.2886MHz,它能支持公共的多采样速率的需求(128/256/384倍),而RISC内核使用低时钟(6.1440MHz)作为工作时钟频率。另外,DSP内核的工作时钟是由低时钟(6.1440MHz)经内嵌DSP里的PLL 8倍频产生的,因此,它的工作时钟频率为6.1440×8=49.152MHz。


     



    (2) 模拟声频输出


    为了满足低成本、高质量声频输出,硬件电路中的DAC应该采用∑一△调制技术的芯片。在分析MP3第一帧的边缘信息后,就能确定DAC的主时钟,而在时钟分频后就能产生精确的DAC时钟。通常,DAC时钟是由位时钟(采样速率×32)和帧同步时钟(采样速率×2)组成。所有的系统时钟均是由处理器时钟产生的,无需外部时钟和任何元件,从而大大优化硬件电路的设计。


    (3) 数据存储


    为了存储编码后的各种声频数据媒体,其硬件电路设计必须满足下列条件:


        ①高采样速率,通常大于几十MB;   
    ②快速访问时间,以满足实时操作的要求;
        ③接口简单,特别是与微处理器的接口;
        ④便携性能;
    ⑤成本低。


    为了满足上述条件,系统中的数据存储电路应使用多媒体卡(MMC),并利用一个串行通信口作为数据发送。通常MMC是直接连到RISC内核,同样,LCD通过用户接口,能显示当前系统的各种状态和文件索引。另外,具有矩阵结构的键盘是人机对话的重要电路,它能把用户指令(激活、停止和文件选择等)馈入,从而实现控制系统的各种操作。


    3  软件设计


    双内核MP3解码器的软件主要涉及到两部分:第一部分是DSP内核的MP3解码算法的优化;第二部分是基于用户接口的RISC内核的系统软件设计。在软件设计时,应重点分析这两部分的算法和相关软件。


        (1) MP3解码算法的优化


    由于MP3解码算法是由DSP来完成,为了降低功耗和使声音质量的影响减小到最低,必须对计算的复杂性和数据精度进行优化处理。


        a.计算复杂性优化处理


    输入模式离散余弦变换(Input Mode Disrete Cosine Transform,IMDCT)和子带合成程序的特性是通过具有余弦系数的乘法一累加器操作来表示的,这是因为这些程序的计算负担是很重的,所以必须用快速算法来完成计算优化。但是,通常快速计算的实现是要受到数据精度的制约,这是因为快速算法较普通算法具有更多的量化噪声。对于IMDCT和子带合成程序的快速算法,推荐使用李氏快速DCT算法和IMDCT李氏快速算法,而对于子带合成矩阵程序,应使用64点的李氏快速DCT。


    表5-14列出定点模拟结果,在这个表中的定点误差是定义为定点模拟和浮点模拟结果之差,并以dB表示差的均方根(Root Mean Square,RMS)。由表5-14中可以看出,对于IMDCT和子带合成程序,快速算法的优点是定点误差分别小于0.5dB和0.1dB。因此,在实际操作时,如果使用IMDCT和子带合成算法是能够降低功耗和减少计算负担的。



    b.数据精度优化处理


    由于DSP处理器的数据处理能力为16位,所以它基本上能够完成16位数据的DSP算法。但是,当输出声频需要更高精度时,则必须使用双精度表示数据,此时要以增加操作复杂性为代价,这是不可避免的现象。因此,在使用双精度表示以前,不仅要考虑到输出数据的精度,还要考虑到处理器实时的复杂性。


    为了确定数据的精度,必须完成对不同数据精度的定点模拟,其结果如图5-30所示。


     



    从图中看出,仅列出四种模拟情况,但是对于每种模拟情况,必须测量定点误差。由于余弦和开窗口值均是利用16位查表法完成的,所以对于32位数据的解码程序,必须采用32位×16位双精度才能实现。


    定点模拟的结果见表5-15,根据表5-15的结果可以看出,Ⅳ模拟的误差大约为6dB,这个值相应于1位误差(平均值)。因此,考虑到解码器输出数据的质量,表5-15中的Ⅳ模拟是最佳的选择。



     


    (2) 系统软件设计


    双内核处理器的系统软件将涉及到良好的用户接口和开销最少的系统控制。为了支持用户接口,必须采用与PC兼容的一个文件管理系统。


        a.软件结构
    本文推荐的系统软件结构如图5-31所示。该软件由5层组成,它能与各种软件接口。在图中底部有几个硬件,专门用来存储编码数据和模拟声频输出。文件管理的文件系统是位于硬件器件的右上方,它是与PC的MS-DOS文件系统兼容。同样,文件管理层上面是一个数据流控制器,它能完成MP3解码算法的输入输出位流控制。MP3解码算法是一种应用层,它位于软件结构中的最高层。由于输入位流的数据流控制位于文件管理层的上面,所以声频输出的数据流控制直接位于硬件器件层的上面,利用这种独特的配置结构,使得各层之间的通路达到最少。系统控制层是位于软件结构的顶部,它能接收用户指令和控制系统中的所有软件。


     



    b.软件处理流程


    为了更好地说明软件处理流程,必须对MP3解码系统中的各种状态进行简要说明。基于推荐软件结构的MP3解码系统的状态如图5-32所示。图中的所有状态均遵守用户指令,分别为:放音(PLAY)、停止(STOP)、下一个(NEXT)、前一个(PREV)和空闲(IDLE)。其中IDLE是等待状态,是等待另一个状态的到来,即转换到其他状态。而PLAY状态能够完成当前文件的解码算法。STOP状态能够使解码算法的操作停止,并使文件指针返回到文件的起始端。另外,NEXT和PREV状态能分别完成打开下一个和前一个文件。当从IDLE状态转变为NEXT/PREV状态时,就能使一个相邻的文件打开,并使当前状态返回到IDLE状态。但是,当转换到PLAY状态时,则必须转换到STOP状态后,才能完成PREV或NEXT状态的选择,并返回到PLAY状态。



    这些状态转换的过程如下:当电源接通时,RISC首先对系统进行初始化处理,并读出文件存储器中的文件分配表(File Assortment Table,FAT),然后进入IDLE状态。在PLAY状态中,RISC内核激活DSP内核中的MP3解码程序,然后DSP内核查询下一个帧缓冲的RISC内核的情况(通常是在处理重要边缘信息)。同时,RISC内核以并行方式完成帧缓冲处理,当帧解码处理完后,就进入STOP状态。此时能够对解码程序进行初始化操作,然后转到IDLE状态。在这种双内核结构中RISC内核仅完成MP3解码处理工作的一部分(除控制系统外)。在这里应注意到,RISC内核在帧处理方面要比DSP更好,因此,它能够提高整个系统的效率。


    4  试验结果


    为了测量系统产生的PCM输出声音的质量,必须完成ISO/IEC 13818-4兼容试验,试验结果见表5-16。在表中第一列表示浮点解码器和已实现解码器之间差的RMS电平,而第二列为差的最大值(最大的差值)。根据这个表中所列的试验方式,其中Ⅳ和无快速计算的Ⅳ是两种满足设计的重要试验。因此,由Ⅳ表示的解码计算能保证与ISO/IEC 13818-3声频解码器完全兼容。考虑到解码后声频的质量和计算负担,表中的Ⅳ(快速)是适合高质量MPEG-声频解码计算,它也是实际试验时首选的方式。


     




    因为输出的PCM位长度将要影响输出声频质量,所以必须通过兼容试验来比较几种PCM位长度,试验结果见表5-17。


     



    根据表5-17中的试验数据可以得到,只要PCM输出位长度大于16位,就能保证完全的兼容性能。


    为了验证推荐的算法能够满足实时要求,特用汇编语言编程和测量时钟周期,试验结果见表5-18。


     



    从表5-18中可以看出,推荐计算需要20.7MIPS而处理器能约束在60MIPS(60MHz时钟)工作,因此,试验结果完全能满足推荐算法的实时处理。


    现对双内核DSP构成的实时系统进行分析,由于本系统具有下列性能:


                指令执行速度    20.7MTPS;
                程序存储器    4K;
                数据存储器    9K;
                表格ROM    5.7K;
                采样速度48/44.1/32/24/22.05/16kHz;
                数据速率    32~320Kbps。


    另外,它还完全满足ISO/IEC 13818-4兼容试验。而MP3解码器完成设计任务所需要提供下列参数:


                指令执行速度    20.7MIPS;
                数据存储器    10K×16位RAM,5.7×16位RAM;
                程序存储器    4K×16位。


    从上比较可以得出,本文推荐的双内核DSP的实时系统完全能满足MP3解码器高质量声频输出,符合原设计的预想要求。

    15楼 回复本楼

    引用 baxiaqqq 2008/10/1 21:35:37 发表于15楼的内容

  • baxiaqqq

    baxiaqqq   |   当前状态:离线

    总积分:352  2025年可用积分:0

    注册时间: 2008-09-07

    最后登录时间: 2008-11-09

    空间 发短消息加为好友

    baxiaqqq   发表于 2008/10/1 21:36:36











    与上一代90纳米低成本FPGA相比,Cyclone III在低功耗、低成本和高性能等方面又有大幅提升,进一步扩展了低成本FPGA在汽车、消费和无线市场的应用空间。并且,一个显著的变化是,低成本FPGA不再将ASIC视为头号敌人,而更希望在无线微基站、软件无线电、视频监控和便携医疗设备等新兴市场,与DSP比翼双飞。
    作者:潘九堂
    3月20日,Altera公司宣布开始发售业界首款65nm低成本FPGA——Cyclone III系列。与上一代90纳米低成本FPGA相比,Cyclone III在低功耗、低成本和高性能等方面又有大幅提升,进一步扩展了低成本FPGA在汽车、消费和无线市场的应用空间。并且,一个显著的变化是,低成本FPGA不再将ASIC视为头号敌人,而更希望在无线微基站、软件无线电、视频监控和便携医疗设备等新兴市场,与DSP比翼双飞。 


    Cyclone III是Altera首次采用台积电成熟的低功耗工艺生产的FPGA器件,据称比竞争FPGA的功耗低75%,含有5K至120K逻辑单元(LE),288个数字信号处理(DSP)乘法器,存储器达到4Mbits,起价低至4美元。与上一代90纳米工艺器件相比,65纳米Cyclone III具有:1.7倍的逻辑;3.5倍的存储器;2倍的乘法器,乘法器性能达到了260MHz;每逻辑单元(LE)成本降低20%;功耗低50%;低成本配置选项支持业界标准并行闪存器件;速率更高(高达400Mbps)的存储器接口;更多的I/O,在8年I/O块上提供534个用户I/O引脚,支持多种业界I/O标准,包括875Mbps的LVDS通信接口。 




    与上一代低成本FPGA相比,Cyclone III的DSP乘法器、存储器和逻辑资源都有大幅提升



    在发布会上,Altera公司消费、汽车电子及广播业务部副总裁Tim Colleran用四个第一来概述了Cyclone III:首个从根本上针对低成本进行设计的FPGA系列;首个可供货的65nm低成本FPGA;首个使用低功耗工艺的65nm低成本FPGA;首个高于100K逻辑单元的低成本FPGA。 


    Altera资深营销副总裁Jordan Plofsky说:“Cyclone III系列与所有其他竞争方案相比,适合更多的应用领域,因为该系列前所未有地同时实现了低功耗、低成本和高性能。250多名参加了Altera早期试用计划的客户已经在大量应用中采用Cyclone III FPGA进行设计,主要针对消费类、汽车、军事、工业和无线通信等市场。” 


    其中,汽车和消费等成本敏感类应用是FPGA增长最快的市场,也是Cyclone III的主要应用市场。市场研究机构Gartner Dataquest的数据显示,2004年至2010年PLD市场的年复合增长率达15.9%,其中汽车和消费类应用分别高达49.7%和24.4%。另外,无线市场对Cyclone III也非常重要。专业应用包括无线基站、软件无线电和显示,以及图像和视频处理等。 


    ASIC不再是头号敌人,低成本FPGA和DSP争艳 


    一个有意思的变化是,在Cyclone III的发布现场,Altera并没有象往常一样,高谈FPGA取代ASIC,而是列举了很多FPGA在无线微基站、软件无线电、视频监控和便携医疗设备等新兴应用中取代MCU和DSP的案例——从最近举行的TI开发商论坛(Texas Instruments Developer Forum)来看,这些应用也被视为TI DSP产品未来的增长点,如面向无线基站的多核DSP,面向视频应用的达芬奇平台。 


    在这些FPGA取代DSP和MCU的案例中,Altera强调Cyclone III FPGA恰当地结合了强大的DSP乘法器、存储器和逻辑资源,为更多的应用提供更多的资源。例如,在软件无线电(SDR)应用中,Cyclone III在单个器件中集成了SDR信号处理,静态功耗低于0.5W。一个案例是Rockwell Collins的保密移动军用通信项目,其大小、重量、功耗和成本是最关键的因素。该公司采用Cyclone III系列后,在每一方面都能够采用同类最佳的规范来设计系统,最终实现了以前无法获得的新应用。 


    而在无线应用中,Cyclone III FPGA的低功耗、高密度和充足的DSP功能使设计人员可以在大量新的无线应用中使用低成本系列产品,例如无线微基站的数字IF和基带功能等。另一个案列是在视频系统I/O、视频压缩编码以及视频和图像处理应用中,通过采用Cyclone III FPGA,客户能够以低于20美元的成本实现全H.264编码器,或者以低于5美元的成本实现高清晰(HD)缩放功能。此外,在显示应用中,Cyclone III器件针对显示应用进行了优化,是第一款能够满足所有1080p HDTV性能需求的低成本FPGA。 




    Cyclone III扩展了低成本FPGA的应用空间,尤其是可以与DSP竞合一些新兴市场



    对于FPGA取代ASIC,Colleran认为这已经是一种业界共识,因此无需再多言。Colleran对记者表示:“过去15年来,FPGA不断在侵蚀ASIC市场,FPGA的密度越来越大,新的ASIC设计越来越少,这种趋势还将持续。当然,ASIC技术也在不断发展,功能不断增强。” 


    不过,就FPGA对MCU和DSP的取代,他则出言谨慎。他表示:“就FPGA取代MCU和ASIC而言,确实,这两种现象都在发生。我们FPGA中嵌入的NiosII 32位软核,可以在很多场合中取代MCU,这里所说的MCU,不是10美元以下的MCU,而是更高端更复杂的应用。NiosII软核是我们非常成功的产品。” 


    Colleran特别强调说:“FPGA不只是取代DSP,更多是和DSP共存。一方面,在某些应用中,FPGA会取代DSP;另一方面,更多的不是FPGA取代DSP,而是FPGA和DSP共存。”他向记者解释说,相比DSP,FPGA最大的优势是并行处理,在同一时间处理大量不同的任务。因此在涉及到很复杂的计算时,可以把DSP的一些任务卸载到FPGA中处理。比如原来需要用8个DSP,现在可能只需一个FPGA实现。FPGA可以取代大量DSP阵列,做到性价比非常高。另外,在复杂的图形处理中,FPGA有其它处理器无法比拟的优势。 


    尽管Colleran表示在某些应用中FPGA可以直接取代DSP,但他一再强调说:“FPGA和DSP更多是协处理关系。事实上,在公司层面,Altera和TI有非常紧密的合作关系,不是竞争者关系,而是合作者关系。”他还指出,市场非常非常大,FPGA和DSP都有广阔的应用空间,因为DSP和FPGA有一个共同的特性,那就是可编程、可以重用和算法可以不断升级,客户既可以使DSP,又可以使用FPGA,实现更低功耗和更高性能。 


    Cyclone III首款产品EP3C25现在向客户发售,并于2007年第三季度发售产品级器件。2007年底之前发售Cyclone III系列的所有8个型号产品。EP3C5E144C8 500Ku的价格为4美元。设计人员现在可以使用Quartus II软件7.0开始设计,与Cyclone III同时发布的Quartus II 7.0可以支持65nm Cyclone III FPGA全系列产品。200多名客户已经在Cyclone III系列早期试用计划中使用了Quartus II 7.0。

    16楼 回复本楼

    引用 baxiaqqq 2008/10/1 21:36:36 发表于16楼的内容

  • baxiaqqq

    baxiaqqq   |   当前状态:离线

    总积分:352  2025年可用积分:0

    注册时间: 2008-09-07

    最后登录时间: 2008-11-09

    空间 发短消息加为好友

    baxiaqqq   发表于 2008/10/1 21:37:35




    C语言测试是招聘嵌入式系统程序员过程中必须而且有效的方法。这些年,我既参加也组织了许多这种测试,在这过程中我意识到这些测试能为面试者和被面试者提供许多有用信息,此外,撇开面试的压力不谈,这种测试也是相当有趣的。 

      从被面试者的角度来讲,你能了解许多关于出题者或监考者的情况。这个测试只是出题者为显示其对ANSI标准细节的知识而不是技术技巧而设计吗?这是个愚蠢的问题吗?如要你答出某个字符的ASCII值。这些问题着重考察你的系统调用和内存分配策略方面的能力吗?这标志着出题者也许花时间在微机上而不是在嵌入式系统上。如果上述任何问题的答案是"是"的话,那么我知道我得认真考虑我是否应该去做这份工作。


      从面试者的角度来讲,一个测试也许能从多方面揭示应试者的素质:最基本的,你能了解应试者C语言的水平。不管怎么样,看一下这人如何回答他不会的问题也是满有趣。应试者是以好的直觉做出明智的选择,还是只是瞎蒙呢?当应试者在某个问题上卡住时是找借口呢,还是表现出对问题的真正的好奇心,把这看成学习的机会呢?我发现这些信息与他们的测试成绩一样有用。


      有了这些想法,我决定出一些真正针对嵌入式系统的考题,希望这些令人头痛的考题能给正在找工作的人一点帮助。这些问题都是我这些年实际碰到的。其中有些题很难,但它们应该都能给你一点启迪。


      这个测试适于不同水平的应试者,大多数初级水平的应试者的成绩会很差,经验丰富的程序员应该有很好的成绩。为了让你能自己决定某些问题的偏好,每个问题没有分配分数,如果选择这些考题为你所用,请自行按你的意思分配分数。


      预处理器(Preprocessor)


      1 . 用预处理指令#define 声明一个常数,用以表明1年中有多少秒(忽略闰年问题)


            #define SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL


      我在这想看到几件事情:


      1) #define 语法的基本知识(例如:不能以分号结束,括号的使用,等等)


      2)懂得预处理器将为你计算常数表达式的值,因此,直接写出你是如何计算一年中有多少秒而不是计算出实际的值,是更清晰而没有代价的。


      3) 意识到这个表达式将使一个16位机的整型数溢出-因此要用到长整型符号L,告诉编译器这个常数是的长整型数。


      4) 如果你在你的表达式中用到UL(表示无符号长整型),那么你有了一个好的起点。记住,第一印象很重要。


      2 . 写一个"标准"宏MIN ,这个宏输入两个参数并返回较小的一个。


            #define MIN(A,B) ((A) <= (B) ? (A) : (B))


      这个测试是为下面的目的而设的:


      1) 标识#define在宏中应用的基本知识。这是很重要的。因为在 嵌入(inline)操作符 变为标准C的一部分之前,宏是方便产生嵌入代码的唯一方法,对于嵌入式系统来说,为了能达到要求的性能,嵌入代码经常是必须的方法。


      2)三重条件操作符的知识。这个操作符存在C语言中的原因是它使得编译器能产生比if-then-else更优化的代码,了解这个用法是很重要的。


      3) 懂得在宏中小心地把参数用括号括起来


      4) 我也用这个问题开始讨论宏的副作用,例如:当你写下面的代码时会发生什么事?


      3. 预处理器标识#error的目的是什么?


      如果你不知道答案,请看参考文献1。这问题对区分一个正常的伙计和一个书呆子是很有用的。只有书呆子才会读C语言课本的附录去找出象这种问题的答案。当然如果你不是在找一个书呆子,那么应试者最好希望自己不要知道答案。


      死循环(Infinite loops)


      4. 嵌入式系统中经常要用到无限循环,你怎么样用C编写死循环呢?


      这个问题用几个解决方案。我首选的方案是:


        while(1)


        {


        }


      一些程序员更喜欢如下方案:


        for(;;)


        {


        }


      这个实现方式让我为难,因为这个语法没有确切表达到底怎么回事。如果一个应试者给出这个作为方案,我将用这个作为一个机会去探究他们这样做的基本原理。如果他们的基本答案是:"我被教着这样做,但从没有想到过为什么。"这会给我留下一个坏印象。第三个方案是用 goto


        Loop:


        ...


        goto Loop;


      应试者如给出上面的方案,这说明或者他是一个汇编语言程序员(这也许是好事)或者他是一个想进入新领域的BASIC/FORTRAN程序员。


      数据声明(Data declarations)


      5. 用变量a给出下面的定义


      a) 一个整型数(An integer)。


      b)一个指向整型数的指针( A pointer to an integer)。


      c)一个指向指针的的指针,它指向的指针是指向一个整型数( A pointer to a pointer to an intege)r 。


      d)一个有10个整型数的数组( An array of 10 integers)。


      e) 一个有10个指针的数组,该指针是指向一个整型数的(An array of 10 pointers to integers)。


      f) 一个指向有10个整型数数组的指针( A pointer to an array of 10 integers)。


      g) 一个指向函数的指针,该函数有一个整型参数并返回一个整型数(A pointer to a that takes an integer as an argument and returns an integer)。


      h) 一个有10个指针的数组,该指针指向一个函数,该函数有一个整型参数并返回一个整型数( An array of ten pointers to s that take an integer argument and return an integer )。


      答案是:


        a) int a; // An integer


        b) int *a; // A pointer to an integer


        c) int **a; // A pointer to a pointer to an integer


        d) int a[10]; // An array of 10 integers


        e) int *a[10]; // An array of 10 pointers to integers


        f) int (*a)[10]; // A pointer to an array of 10 integers


        g) int (*a)(int); // A pointer to a a that


        takes an integer argument and returns an integer


        h) int (*a[10])(int); // An array of 10 pointers


        to s that take an integer argument and return


        an integer


      人们经常声称这里有几个问题是那种要翻一下书才能回答的问题,我同意这种说法。当我写这篇文章时,为了确定语法的正确性,我的确查了一下书。但是当我被面试的时候,我期望被问到这个问题(或者相近的问题)。因为在被面试的这段时间里,我确定我知道这个问题的答案。应试者如果不知道所有的答案(或至少大部分答案),那么也就没有为这次面试做准备,如果该面试者没有为这次面试做准备,那么他又能为什么出准备呢?

    Static 

      6. 关键字static的作用是什么?


      这个简单的问题很少有人能回答完全。在C语言中,关键字static有三个明显的作用:


      1)在函数体,一个被声明为静态的变量在这一函数被调用过程中维持其值不变。


      2) 在模块内(但在函数体外),一个被声明为静态的变量可以被模块内所用函数访问,但不能被模块外其它函数访问。它是一个本地的全局变量。


      3) 在模块内,一个被声明为静态的函数只可被这一模块内的其它函数调用。那就是,这个函数被限制在声明它的模块的本地范围内使用。


      大多数应试者能正确回答第一部分,一部分能正确回答第二部分,同是很少的人能懂得第三部分。这是一个应试者的严重的缺点,因为他显然不懂得本地化数据和代码范围的好处和重要性。


      Const


      7.关键字const有什么含意?


      我只要一听到被面试者说:"const意味着常数",我就知道我正在和一个业余者打交道。去年Dan Saks已经在他的文章里完全概括了const 的所有用法,因此ESP(译者:Embedded Systems Programming)的每一位读者应该非常熟悉const能做什么和不能做什么. 如果你从没有读到那篇文章,只要能说出const意味着"只读"就可以了。尽管这个答案不是完全的答案,但我接受它作为一个正确的答案。(如果你想知道更详细的答案,仔细读一下Saks的文章吧。)


      如果应试者能正确回答这个问题,我将问他一个附加的问题:


      下面的声明都是什么意思?


        const int a;


        int const a;


        const int *a;


        int * const a;


        int const * a const;


        /******/


      前两个的作用是一样,a是一个常整型数。第三个意味着a是一个指向常整型数的指针(也就是,整型数是不可修改的,但指针可以)。第四个意思a是一个指向整型数的常指针(也就是说,指针指向的整型数是可以修改的,但指针是不可修改的)。最后一个意味着a是一个指向常整型数的常指针(也就是说,指针指向的整型数是不可修改的,同时指针也是不可修改的)。如果应试者能正确回答这些问题,那么他就给我留下了一个好印象。顺带提一句,也许你可能会问,即使不用关键字 const,也还是能很容易写出功能正确的程序,那么我为什么还要如此看重关键字const呢?我也如下的几下理由:


      1) 关键字const的作用是为给读你代码的人传达非常有用的信息,实际上,声明一个参数为常量是为了告诉了用户这个参数的应用目的。如果你曾花很多时间清理其它人留下的垃圾,你就会很快学会感谢这点多余的信息。(当然,懂得用const的程序员很少会留下的垃圾让别人来清理的。)


      2) 通过给优化器一些附加的信息,使用关键字const也许能产生更紧凑的代码。


      3) 合理地使用关键字const可以使编译器很自然地保护那些不希望被改变的参数,防止其被无意的代码修改。简而言之,这样可以减少bug的出现。


      Volatile


      8. 关键字volatile有什么含意?并给出三个不同的例子。


      一个定义为volatile的变量是说这变量可能会被意想不到地改变,这样,编译器就不会去假设这个变量的值了。精确地说就是,优化器在用到这个变量时必须每次都小心地重新读取这个变量的值,而不是使用保存在寄存器里的备份。下面是volatile变量的几个例子:


      1) 并行设备的硬件寄存器(如:状态寄存器)


      2) 一个中断服务子程序中会访问到的非自动变量(Non-automatic variables)


      3) 多线程应用中被几个任务共享的变量


      回答不出这个问题的人是不会被雇佣的。我认为这是区分C程序员和嵌入式系统程序员的最基本的问题。搞嵌入式的家伙们经常同硬件、中断、RTOS等等打交道,所有这些都要求用到volatile变量。不懂得volatile的内容将会带来灾难。


      假设被面试者正确地回答了这是问题(嗯,怀疑是否会是这样),我将稍微深究一下,看一下这家伙是不是直正懂得volatile完全的重要性。


      1)一个参数既可以是const还可以是volatile吗?解释为什么。


      2); 一个指针可以是volatile 吗?解释为什么。


      3); 下面的函数有什么错误:


        int square(volatile int *ptr)


        {


         return *ptr * *ptr;


        }


      下面是答案:


      1)是的。一个例子是只读的状态寄存器。它是volatile因为它可能被意想不到地改变。它是const因为程序不应该试图去修改它。


      2); 是的。尽管这并不很常见。一个例子是当一个中服务子程序修该一个指向一个buffer的指针时。


      3) 这段代码有点变态。这段代码的目的是用来返指针*ptr指向值的平方,但是,由于*ptr指向一个volatile型参数,编译器将产生类似下面的代码:


        int square(volatile int *ptr)


        {


        int a,b;


        a = *ptr;


        b = *ptr;


        return a * b;


        }


      由于*ptr的值可能被意想不到地该变,因此a和b可能是不同的。结果,这段代码可能返不是你所期望的平方值!正确的代码如下:


        long square(volatile int *ptr)


        {


        int a;


        a = *ptr;


        return a * a;


        }


      位操作(Bit manipulation)


      9. 嵌入式系统总是要用户对变量或寄存器进行位操作。给定一个整型变量a,写两段代码,第一个设置a的bit 3,第二个清除a 的bit 3。在以上两个操作中,要保持其它位不变。


      对这个问题有三种基本的反应:


      1)不知道如何下手。该被面者从没做过任何嵌入式系统的工作。


      2) 用bit fields。Bit fields是被扔到C语言死角的东西,它保证你的代码在不同编译器之间是不可移植的,同时也保证了的你的代码是不可重用的。我最近不幸看到 Infineon为其较复杂的通信芯片写的驱动程序,它用到了bit fields因此完全对我无用,因为我的编译器用其它的方式来实现bit fields的。从道德讲:永远不要让一个非嵌入式的家伙粘实际硬件的边。


      3) 用 #defines 和 bit masks 操作。这是一个有极高可移植性的方法,是应该被用到的方法。最佳的解决方案如下:


        #define BIT3 (0x1 << 3)


        static int a;


        void set_bit3(void)


        {


        a |= BIT3;


        }


        void clear_bit3(void)


        {


        a &= ~BIT3;


        }


      一些人喜欢为设置和清除值而定义一个掩码同时定义一些说明常数,这也是可以接受的。我希望看到几个要点:说明常数、|=和&=~操作。


      访问固定的内存位置(Accessing fixed memory locations)


      10. 嵌入式系统经常具有要求程序员去访问某特定的内存位置的特点。在某工程中,要求设置一绝对地址为0x67a9的整型变量的值为0xaa66。编译器是一个纯粹的ANSI编译器。写代码去完成这一任务。


      这一问题测试你是否知道为了访问一绝对地址把一个整型数强制转换(typecast)为一指针是合法的。这一问题的实现方式随着个人风格不同而不同。典型的类似代码如下:


        int *ptr;


        ptr = (int *)0x67a9;


        *ptr = 0xaa55;


        A more obscure approach is:


      一个较晦涩的方法是:


        *(int * const)(0x67a9) = 0xaa55;


      即使你的品味更接近第二种方案,但我建议你在面试时使用第一种方案。


      中断(Interrupts)


      11. 中断是嵌入式系统中重要的组成部分,这导致了很多编译开发商提供一种扩展—让标准C支持中断。具代表事实是,产生了一个新的关键字 __interrupt。下面的代码就使用了__interrupt关键字去定义了一个中断服务子程序(ISR),请评论一下这段代码的。


        __interrupt double compute_area (double radius)


        {


        double area = PI * radius * radius;


        printf("\nArea = %f", area);


        return area;


        }


      这个函数有太多的错误了,以至让人不知从何说起了:


      1)ISR 不能返回一个值。如果你不懂这个,那么你不会被雇用的。


      2) ISR 不能传递参数。如果你没有看到这一点,你被雇用的机会等同第一项。


      3) 在许多的处理器/编译器中,浮点一般都是不可重入的。有些处理器/编译器需要让额处的寄存器入栈,有些处理器/编译器就是不允许在ISR中做浮点运算。此外,ISR应该是短而有效率的,在ISR中做浮点运算是不明智的。


      4) 与第三点一脉相承,printf()经常有重入和性能上的问题。如果你丢掉了第三和第四点,我不会太为难你的。不用说,如果你能得到后两点,那么你的被雇用前景越来越光明了。


      代码例子(Code examples)


      12 . 下面的代码输出是什么,为什么?


        void foo(void)


        {


        unsigned int a = 6;


        int b = -20;


        (a+b > 6) ? puts("> 6") : puts("<= 6");


        }


      这个问题测试你是否懂得C语言中的整数自动转换原则,我发现有些开发者懂得极少这些东西。不管如何,这无符号整型问题的答案是输出是 "> 6"。原因是当表达式中存在有符号类型和无符号类型时所有的操作数都自动转换为无符号类型。因此-20变成了一个非常大的正整数,所以该表达式计算出的结果大于6。这一点对于应当频繁用到无符号数据类型的嵌入式系统来说是丰常重要的。如果你答错了这个问题,你也就到了得不到这份工作的边缘。


      13. 评价下面的代码片断:


        unsigned int zero = 0;


        unsigned int compzero = 0xFFFF;


        /*1's complement of zero */


      对于一个int型不是16位的处理器为说,上面的代码是不正确的。应编写如下:


        unsigned int compzero = ~0;


      这一问题真正能揭露出应试者是否懂得处理器字长的重要性。在我的经验里,好的嵌入式程序员非常准确地明白硬件的细节和它的局限,然而PC机程序往往把硬件作为一个无法避免的烦恼。


      到了这个阶段,应试者或者完全垂头丧气了或者信心满满志在必得。如果显然应试者不是很好,那么这个测试就在这里结束了。但如果显然应试者做得不错,那么我就扔出下面的追加问题,这些问题是比较难的,我想仅仅非常优秀的应试者能做得不错。提出这些问题,我希望更多看到应试者应付问题的方法,而不是答案。不管如何,你就当是这个娱乐吧...


      动态内存分配(Dynamic memory allocation)


      14. 尽管不像非嵌入式计算机那么常见,嵌入式系统还是有从堆(heap)中动态分配内存的过程的。那么嵌入式系统中,动态分配内存可能发生的问题是什么?


      这里,我期望应试者能提到内存碎片,碎片收集的问题,变量的持行时间等等。这个主题已经在ESP杂志中被广泛地讨论过了(主要是 P.J. Plauger, 他的解释远远超过我这里能提到的任何解释),所有回过头看一下这些杂志吧!让应试者进入一种虚假的安全感觉后,我拿出这么一个小节目:


      下面的代码片段的输出是什么,为什么?


        char *ptr;


        if ((ptr = (char *)malloc(0)) == NULL)


        puts("Got a null pointer");


        else


        puts("Got a valid pointer");


      这是一个有趣的问题。最近在我的一个同事不经意把0值传给了函数malloc,得到了一个合法的指针之后,我才想到这个问题。这就是上面的代码,该代码的输出是"Got a valid pointer"。我用这个来开始讨论这样的一问题,看看被面试者是否想到库例程这样做是正确。得到正确的答案固然重要,但解决问题的方法和你做决定的基本原理更重要些。


      Typedef


      15 Typedef 在C语言中频繁用以声明一个已经存在的数据类型的同义字。也可以用预处理器做类似的事。例如,思考一下下面的例子:


        #define dPS struct s *


        typedef struct s * tPS;


      以上两种情况的意图都是要定义dPS 和 tPS 作为一个指向结构s指针。哪种方法更好呢?(如果有的话)为什么?


      这是一个非常微妙的问题,任何人答对这个问题(正当的原因)是应当被恭喜的。答案是:typedef更好。思考下面的例子:


        dPS p1,p2;


        tPS p3,p4;


      第一个扩展为


        struct s * p1, p2;


        .


      上面的代码定义p1为一个指向结构的指,p2为一个实际的结构,这也许不是你想要的。第二个例子正确地定义了p3 和p4 两个指针。


      晦涩的语法


      16 . C语言同意一些令人震惊的结构,下面的结构是合法的吗,如果是它做些什么?


        int a = 5, b = 7, c;


        c = a+++b;


      这个问题将做为这个测验的一个愉快的结尾。不管你相不相信,上面的例子是完全合乎语法的。问题是编译器如何处理它?水平不高的编译作者实际上会争论这个问题,根据最处理原则,编译器应当能处理尽可能所有合法的用法。因此,上面的代码被处理成:


        c = a++ + b;


      因此, 这段代码持行后a = 6, b = 7, c = 12。


      如果你知道答案,或猜出正确答案,做得好。如果你不知道答案,我也不把这个当作问题。我发现这个问题的最大好处是这是一个关于代码编写风格,代码的可读性,代码的可修改性的好的话题。


      好了,伙计们,你现在已经做完所有的测试了。这就是我出的C语言测试题,我怀着愉快的心情写完它,希望你以同样的心情读完它。如果是认为这是一个好的测试,那么尽量都用到你的找工作的过程中去吧。天知道也许过个一两年,我就不做现在的工作,也需要找一个。


      作者介绍:


      Nigel Jones 是一个顾问,现在住在Maryland,当他不在水下时,你能在多个范围的嵌入项目中找到他。 他很高兴能收到读者的来信,他的email地址是: NAJones@compuserve.com


      参考文献


      1) Jones, Nigel, "In Praise of the #error directive," Embedded Systems Programming, September 1999, p. 114.


      2) Jones, Nigel, " Efficient C Code for Eight-bit MCUs ," Embedded Systems Programming, November 1998, p. 66.





     
    17楼 回复本楼

    引用 baxiaqqq 2008/10/1 21:37:35 发表于17楼的内容

  • baxiaqqq

    baxiaqqq   |   当前状态:离线

    总积分:352  2025年可用积分:0

    注册时间: 2008-09-07

    最后登录时间: 2008-11-09

    空间 发短消息加为好友

    baxiaqqq   发表于 2008/10/1 21:38:02

     
    随着电子信息技术的飞速发展和用户对多种业务需求的与日俱增,使原来独立设计运营的传统的电信网、互联网和有线电视网正在走向融合,“三网融合”已成为社会发展的一个重要大趋势。这些变化的特征使原来业务独立的运营商逐步改变,对网络设备提出了新的需求。


    信息业的巨大发展,给电源市场带来了巨大的市场机会和挑战,同时对电源提出了一些新的需求。例如:多种物理设备放在一起,有电磁兼容的需求和机房面积和承重的要求;网络设备种类变多使电源的负载变大,负载种类变多,对电源效率和种类有要求;机房和基站数目增多,对电源的可靠性和易维护性提出更高的要求,以满足无人值守需要。电源工作环境的差异对电源的应用环境也提出了新的需求,如更强电网适应能力、环境适应能力等,户外电源就是这一需求的典型代表。电源是整个信息网络的动力心脏,新的网络需要更可靠的电源。另外,随着运营商的全球化的趋势,电源设备也需要满足全球不同市场对产品的特殊要求。


    全球通信电源技术发展呈现以下几大趋势:


    (1)高效率 ,高功率密度,宽的使用环境温度


    随着运营商的设备的不断增多,用电量加剧,机房面积紧张等客观因素的存在,对电源产品提出了高效率 ,高功率密度,宽的使用环境温度的要求。
    新型高性能器件的不断研发、涌现与应用,例如:绝缘栅双极型晶体管(IGBT)、功率场效应晶体管(MOSFET)、智能IGBT功率模块(IPM)、MOS栅控晶闸管(MCT)、静电感应晶体管(SIT)、超过恢复二极管、无感电容器、无感电阻器、新型磁材料和变压器、EMI滤波器等。这些新型器件的应用可以提高通信电源的开关频率,减少电源外型尺寸,提高电源的功率密度。
    在通信电源中,开关技术是提高电源效率的一个重要技术。软开关技术、准谐振技术中的具有代表性的是谐振变换、移相谐振、零开关PWM、零过渡PWM等电路拓扑。随着软开关拓扑理论研究的深入以及应用的普及,大大减少了硬开关模式下电源中功率器件在开通、关断过程中电压下降/上升和电流上升/下降波形交叠产生的损耗和噪声,实现了零电压/零电流开关,降低损耗,提高电源系统的效率。


    为了更好适应环境,提高产品可靠性,220Vac工作的通信电源一般能够工作在120-290Vac,环境适应能力也由传统的45°C提高到60°C,甚至75°C。


    (2)网络化智能化的监控管理


    随着网络的日益发展,巨大网络设备需要的大量人力、物力投在设备的管理和维护工作,如:通信设施所处环境越来越复杂,人烟稀少、交通不便都增大了维护的难度。这对电源设备的监控管理提出了新的需求。


    通信电源系统的集中分散式监控系统需要对系统中状态量和控制量进行监控,还可对电池进行全自动管理;可以直接利用Internet上传输控制数据,使维护人员通过Internet进行数据查询、控制等维护工作。利用友好的人机界面,使维护人员能够方便地得到需要的信息。如各种保护、告警和数据信息存储、处理、打印等功能;维护计划,资产管理等工作。


    (3)全数字化控制


    数字化技术的发展逐步表现出了传统模拟技术无法实现的优势,如:采用全数字化控制技术,有效地缩小电源体积降低了成本,大大提高了设备的可靠性和对用户的适应性。整个电源的信号采样、处理、控制(包括电压电流环等)、通信等均采用DSP技术,可以获得优化的一致的稳定的控制参数。可以采用更加灵活的控制方式,在各种电压、温度下优化电源的输出,如降额保护、PFC数字控制谐波。利用DSP技术可以实现更简单稳定的通信和均流,可以获得良好的EMC指标。智能化程度更高,如灵活的LED报警指示组合,无监控的情况下可以通信。减少器件数目、提高模块指标、提高功率密度。消除模拟控制技术的器件离散性和温漂,保证每个模块均达到最优指标,提高电源可靠性。模块智能化程度更高,易于使用维护。


    (4)安全、防护、EMC


    考虑到设备复杂的运行环境,电源设备需满足相关的安全、防护、防雷标准,才能保证电源的可靠运行。


    安全性是电源设备最重要的指标;商用设备需要通过相关的安全认证,如UL、CSA、VDE,CCC等。防雷设计是保证通信电源系统可靠运行的必不可少的环节,对于通信设备而言,雷电过电压来源主要包括感应过电压、雷电侵入波和反击过电压。在一般情况下,通信电源必须采取系统防护、概率防护和多级防护的防雷原则。通信电源系统一般需要采用三级防雷体系。


    防潮、防盐雾和防霉菌设计称为三防设计。工程上通常选用耐蚀材料,通过镀、涂或化学处理方法对电子设备的表面覆盖一层金属或非金属保护膜,使之与周围介质隔离,从而达到防护的目的,一般在印制板涂三防漆;在结构上采用密封或半密封形式隔绝外部环境。良好的EMC指标使不同的电子设备能工作在一起;同时使使用者的电磁环境更加洁净,避免电磁环境对使用者的伤害。一般满足的标准有:EN55022,EN 300 386:2001,; CFR 47 Part 15 ;Telcordia GR-1089 [NA requirement].


    (5)环保


    环保的一方面的指标是,通信电源的电流谐波符合要求。降低电源的输入谐波,不但可以改善电源对电网的负载特性,减小给电网带来严重的污染,也可减少对其他网络设备的谐波干扰。另一个重要方面是,材料可循环利用和对环境无污染。这方面需要产品满足WEEE/ROHS指令。


    WEEE/ROHS指令包括两部分的内容,即涉及循环再利用WEEE和限制使用有害物质的ROHS。


    实施WEEE指令案的目的,最主要的就是防治电子电气废弃物(WEEE),此外是实现这些废弃物的再利用、再循环使用和其它形式的回收,以减少废弃物的处理。同时也努力改进涉及电子电气设备生命周期的所有操作人员,如生产者、销售商、消费者,特别是直接涉及报废电子电器设备处理人员的环保行为。
    实施ROHS指令案的目标是使各成员国关于在电子电气设备中限制使用有害物质的法律趋于一致,有助于保护人类健康的和报废电子电气设备合乎环境要求的回收和处理。


    从2006年7月1日起,投放于市场的新电子和电气设备不包含铅,汞,镉,六价铬,聚溴二苯醚(PBDE)或聚溴联苯(PBB)。


    艾默生网络能源在2005年面向全球推出了一款2900W的全数字化AC/DC模块。其工作电压范围为80~300V,额定效率达到92%以上,模块采用先进的电磁兼容设计,同时满足CE、NEBS、YD/T983等国内外标准要求。模块功率密度:0.9677W/cm3。工作温度-25°C~ 65°C,在海拔4000米高度仍能满载工作。由于采用数字控制技术,该模块智能化程度很高,甚至连模块的启动时间都可以设置,非常适合无人值守站使用。
    18楼 回复本楼

    引用 baxiaqqq 2008/10/1 21:38:02 发表于18楼的内容

  • 马军成

    马军成   |   当前状态:在线

    总积分:13915  2025年可用积分:1

    注册时间: 2006-12-01

    最后登录时间: 2022-06-28

    空间 发短消息加为好友

    马军成   发表于 2008/10/1 21:45:29

    请大家一定要编辑一下


    紧凑一些

    19楼 回复本楼

    引用 马军成 2008/10/1 21:45:29 发表于19楼的内容

  • dingjia

    dingjia   |   当前状态:离线

    总积分:99  2025年可用积分:0

    注册时间: 2008-09-07

    最后登录时间: 2010-12-10

    空间 发短消息加为好友

    dingjia   发表于 2008/10/1 21:47:19

    目前,随着石化、钢铁、造纸、食品、医药企业自动化水平的不断提高,对现场仪表维护人员的技术水平提出了更高要求。为缩短处理仪表故障时间,保证安全生产提高经济效益,本文发表一点仪表现场维护经验,供仪表维护人员参考。

        一、现场仪表系统故障的基本分析步骤


        现场仪表测量参数一般分为温度、压力、流量、液位四大参数。


        现根据测量参数的不同,来分析不同的现场仪表故障所在。


        1.首先,在分析现场仪表故障前,要比较透彻地了解相关仪表系统的生产过程、生产工艺情况及条件,了解仪表系统的设计方案、设计意图,仪表系统的结构、特点、性能及参数要求等。


        2.在分析检查现场仪表系统故障之前,要向现场操作工人了解生产的负荷及原料的参数变化情况,查看故障仪表的记录曲线,进行综合分析,以确定仪表故障原因所在。


        3.如果仪表记录曲线为一条死线(一点变化也没有的线称死线),或记录曲线原来为波动,现在突然变成一条直线;故障很可能在仪表系统。因为目前记录仪表大多是DCS计算机系统,灵敏度非常高,参数的变化能非常灵敏的反应出来。此时可人为地改变一下工艺参数,看曲线变化情况。如不变化,基本断定是仪表系统出了问题;如有正常变化,基本断定仪表系统没有大的问题。


        4.变化工艺参数时,发现记录曲线发生突变或跳到最大或最小,此时的故障也常在仪表系统。


        5.故障出现以前仪表记录曲线一直表现正常,出现波动后记录曲线变得毫无规律或使系统难以控制,甚至连手动操作也不能控制,此时故障可能是工艺操作系统造成的。


        6.当发现DCS显示仪表不正常时,可以到现场检查同一直观仪表的指示值,如果它们差别很大,则很可能是仪表系统出现故障。


        总之,分析现场仪表故障原因时,要特别注意被测控制对象和控制阀的特性变化,这些都可能是造成现场仪表系统故障的原因。所以,我们要从现场仪表系统和工艺操作系统两个方面综合考虑、仔细分析,检查原因所在。


        二、四大测量参数仪表控制系统故障分析步骤


        1.温度控制仪表系统故障分析步骤


        分析温度控制仪表系统故障时,首先要注意两点:该系统仪表多采用电动仪表测量、指示、控制;该系统仪表的测量往往滞后较大。


        (1)温度仪表系统的指示值突然变到最大或最小,一般为仪表系统故障。因为温度仪表系统测量滞后较大,不会发生突然变化。此时的故障原因多是热电偶、热电阻、补偿导线断线或变送器放大器失灵造成。


        (2)温度控制仪表系统指示出现快速振荡现象,多为控制参数PID调整不当造成。


        (3)温度控制仪表系统指示出现大幅缓慢的波动,很可能是由于工艺操作变化引起的,如当时工艺操作没有变化,则很可能是仪表控制系统本身的故障。


        (4)温度控制系统本身的故障分析步骤:检查调节阀输入信号是否变化,输入信号不变化,调节阀动作,调节阀膜头膜片漏了;检查调节阀定位器输入信号是否变化,输入信号不变化,输出信号变化,定位器有故障;检查定位器输入信号有变化,再查调节器输出有无变化,如果调节器输入不变化,输出变化,此时是调节器本身的故障。


        2.压力控制仪表系统故障分析步骤


        (1)压力控制系统仪表指示出现快速振荡波动时,首先检查工艺操作有无变化,这种变化多半是工艺操作和调节器PID参数整定不好造成。


        (2)压力控制系统仪表指示出现死线,工艺操作变化了压力指示还是不变化,一般故障出现在压力测量系统中,首先检查测量引压导管系统是否有堵的现象,不堵,检查压力变送器输出系统有无变化,有变化,故障出在控制器测量指示系统。


        3.流量控制仪表系统故障分析步骤


        (1)流量控制仪表系统指示值达到最小时,首先检查现场检测仪表,如果正常,则故障在显示仪表。当现场检测仪表指示也最小,则检查调节阀开度,若调节阀开度为零,则常为调节阀到调节器之间故障。当现场检测仪表指示最小,调节阀开度正常,故障原因很可能是系统压力不够、系统管路堵塞、泵不上量、介质结晶、操作不当等原因造成。若是仪表方面的故障,原因有:孔板差压流量计可能是正压引压导管堵;差压变送器正压室漏;机械式流量计是齿轮卡死或过滤网堵等。


        (2)流量控制仪表系统指示值达到最大时,则检测仪表也常常会指示最大。此时可手动遥控调节阀开大或关小,如果流量能降下来则一般为工艺操作原因造成。若流量值降不下来,则是仪表系统的原因造成,检查流量控制仪表系统的调节阀是否动作;检查仪表测量引压系统是否正常;检查仪表信号传送系统是否正常。


        (3)流量控制仪表系统指示值波动较频繁,可将控制改到手动,如果波动减小,则是仪表方面的原因或是仪表控制参数PID不合适,如果波动仍频繁,则是工艺操作方面原因造成。


        4.液位控制仪表系统故障分析步骤


        (1)液位控制仪表系统指示值变化到最大或最小时,可以先检查检测仪表看是否正常,如指示正常,将液位控制改为手动遥控液位,看液位变化情况。如液位可以稳定在一定的范围,则故障在液位控制系统;如稳不住液位,一般为工艺系统造成的故障,要从工艺方面查找原因。


        (2)差压式液位控制仪表指示和现场直读式指示仪表指示对不上时,首先检查现场直读式指示仪表是否正常,如指示正常,检查差压式液位仪表的负压导压管封液是否有渗漏;若有渗漏,重新灌封液,调零点;无渗漏,可能是仪表的负迁移量不对了,重新调整迁移量使仪表指示正常。


        (3)液位控制仪表系统指示值变化波动频繁时,首先要分析液面控制对象的容量大小,来分析故障的原因,容量大一般是仪表故障造成。容量小的首先要分析工艺操作情况是否有变化,如有变化很可能是工艺造成的波动频繁。如没有变化可能是仪表故障造成。


        以上只是现场四大参数单独控制仪表的现场故障分析,实际现场还有一些复杂的控制回路,如串级控制、分程控制、程序控制、联锁控制等等。这些故障的分析就更加复杂,要具体分析。










    信息来源:OPC中国论坛

    20楼 回复本楼

    引用 dingjia 2008/10/1 21:47:19 发表于20楼的内容

  • dingjia

    dingjia   |   当前状态:离线

    总积分:99  2025年可用积分:0

    注册时间: 2008-09-07

    最后登录时间: 2010-12-10

    空间 发短消息加为好友

    dingjia   发表于 2008/10/1 21:48:15

    怎样才能更好解决系统信号干扰? 

        1. 首先我们要了解现场系统为什么会有干扰?什么原因?共有几种?

        1) 地环流干扰

        在工业生产过程中实现监视和控制需要用到各种自动化仪表、控制系统和执行机构,它们之间的信号传输既有微弱到毫伏级、毫安级的小信号;有几十伏,甚至数千伏、数百安培的大信号;既有低频直流信号,也有高频脉冲信号等等,构成系统后往往发现在仪表和设备之间传输相互干扰,造成系统不稳定甚至误操作.出现这种情况除了每个仪表、设备本身的性能原因如抗电磁干扰影响外,还有一个十分重要的原因就是各种仪器设备根据要求和目的都需要接地,例如为了安全,机壳需要接大地;为了使电路正常工作,系统要有公共参考点;为了抑制干扰加屏蔽罩,屏蔽罩也需要接地.但是由于仪表和设备之间的参考点之间存在电势差(也就是各设备的共地点不同)因而形成“地环流”、“接地环路”问题。当环流很大时,会出现很高的共摸噪声电压,并通过分布参数耦合到信号线,或直接连接到电平信号线上,将产生很大的串模干扰,甚至损坏接口电路及设备。


        2)自然干扰


        雷电是一种主要的自然干扰源,雷电产生的干扰可以传输到数千公里以外的地方。雷电干扰的时域波形是叠加在一窜随机脉冲背景上的一个大尖峰脉冲。宇宙噪声是电离辐射产生的,在一天中不断变化。太阳噪声则随着太阳活动情况剧烈变化。自然界噪声主要会对通信造成干扰 而雷电能量尖峰脉冲可以对很多设备造成损坏,应该加以避免或降低损坏程度,减少损失。


        3)人为干扰


        电磁干扰产生的根本原因是导体中有电压或电流的变化,即较大的dv/dtdi/dt.dv/dt或di/dt能够使导体产生电磁波辐射。一方面,人们可以利用这一特点实现特定功能,例如,无线通信、雷达或其他功能,另一方面,电子设备在工作时,由于导体中的dv/dt或di/dt会产生伴随电磁辐射。无论主观上出于什么目的,客观上对电磁环境造成了污染。还有工厂企业在生产过程中会经常有一些大型的设备(电机、变频器等)频繁开关,它们也会造成一些容性、感性的干扰,也将影响仪器仪表正常显示或采集。凡是有电压电流突变的场合,肯定会有电磁干扰存在。数字脉电路就是一种典型的干扰源。随着电子技术的广泛应用,电磁污染情况会越来越严重。


        2. 怎样解决系统中的三种干扰呢?


        首先干扰的三要素是干扰源、敏感源和耦合路径,这三要素缺少一个,电磁兼容问题都不会存。因此要从这三要素入手。找出最方便的解决办法,一般干扰源和敏感源是没办法解决的,通常是从耦合路径想办法,也是最常用的办法。如加屏蔽、加滤波等手段。而处理地环流最为常见也最为麻烦,现在以此为探讨话题。


        1)第一种方法:


        所有现场设备不接地,使所有过程环路只有一个接地点,不能形成回路,这种方法看似简单。但实际应用中往往很难实现,因为某些设备要求必须接地才能保证测量精度或人身安全,某些设备可能因为长期遭到腐蚀和磨损后或气候影响而形成新的接地点。


        2)第二种方法:


        使两接地点的电势相同,但由于接地的电阻受地质条件及气候变化等众多因素的影响,这种方法其实在实际中也无法完全能做到。


        3)第三种方法:


        在各个过程环节中使用信号隔离器,断开过程环路,同时 又不影 响过程信号的正常传输,从而彻底解决地环路的问题。


        3. 为什么采用信号隔离器具有很好的优越性呢?


        在各个过程环路中使用信号隔离办法可以用DCS或PLC等隔离卡件或者现场带的隔离的变送器(分设备可以做到),也可以用信号隔离器来实现。比较起来,用信号隔离器有以下优点:


        绝大部分情况,采用信号隔离器+非隔离卡件比采用隔离卡件便宜
        信号隔离器比隔离卡件在隔离能力、抗电磁干扰等方面性能更加优越
        信号隔离器应用灵活,而且它还有信号转换和信号分配及接口转换等功能,使用起来更加方便
        信号隔离器通常有单通道、双通道、通道间相互完全独立,构成系统的配置、日常维护更加方便。


        4. 现在市场有那么多品牌的隔离器,价格参差不齐,该怎么选择呢? 


        隔离器位于二个系统通道之间,所以选择隔离器首先要确定输入输出功能,同时要使隔离器输入输出模式(电压型、电流型、环路供电型等)适应前后端通道接口模式。此外尚有精度﹑功耗﹑噪音﹑绝缘强度﹑总线通讯功能等许多重要参数涉及产品性能,例如:噪音与精度有关、功耗热量与可靠性有关,这些需要使用者慎选。总之,适用、可靠、产品性价比是选择隔离器的主要原则。 










    信息来源:中国自动化工程网

    21楼 回复本楼

    引用 dingjia 2008/10/1 21:48:15 发表于21楼的内容

总共 , 当前 /, 【上一页】1234567【下一页】