卫海根
(山西科安消防工程有限公司,山西 太原 030024)
文章涉及的消防报警设备指相对独立的智能设备,用于火灾报警、显示、通讯、控制等方面,具体包括智能火灾报警控制器、楼层显示器、缆式报警控制系统、气体灭火装置、消防电话装置。所谓故障,指设备不能完成预期(设计)的功能。
为了具有一定的智能,上述设备中都含有单片机,并有相应的程序运行。因此,可能出现的故障有两大类:软件故障和硬件故障。
软件故障不包括程序编制调试时出现的语法错误(此类错误多是由于编写程序时违反语法规则而产生的,不难解决,也必须首先解决),而是指逻辑错误、长期运行的稳定性差、缺乏自我保护能力、产生意外的现象、功能操作失效等引发的故障。
这里的硬件故障不包括硬件原理设计缺陷导致的故障,我们考虑的是,在严格的校对、评审、试验以及初样生产之后,设备的原理设计得以定型和确认,在一段时间内,能够进行正样(具有一定批量)生产的相对稳定的设备。这样的设备,由于在制造上存在许多环节(元器件采购、电路板制作、焊接、安装、现场布线等),依然可能出现硬件故障。也有这样的软件故障,只在相关硬件故障出现时才暴露出来,这是一种特殊的软件故障。
上述故障,有时显得明显而易于发现,有时很隐蔽而难于发现。这就需要在组装完成后不断地、全方位地测试,尽早将故障暴露出来,降低应用中发生故障的可能性。为此进行的测试因而必须包括设计功能测试、模块组合测试、意外操作测试、边界(临界)测试、疲劳测试,观察各种现象并同预期结果相比较。在测试过程中,还必须注意测试点的普遍性,尽量在较短时间内覆盖较多的可能性,减少盲点。
测试人员不能是设计者本人,以免测试点局限于设计范围内。
设计功能测试的目的在于测试设备是否达到设计预期功能,可以按照操作说明书进行操作,检查各功能,这种测试要求完整,即不允许遗漏任何功能。在测试各功能时,要求广泛地选取各种类型的测试点,保证设备功能完整性。
模块组合测试目的在于检查设备的各种配置是否能够自由组合而正常工作,检查软硬件是否协调以及系统能否自我保护以及设备的灵活性和可维护性。
意外操作测试可以检查设备对各种错误的接收、容纳能力。在用户或测试人员的错误操作下,要求设备依然正常工作或能恢复正常,并保护敏感区域、敏感信息不受错误操作的侵害。进行这种测试,要求尽量“错”,尽量“意外”,以测试系统的强壮性。
边界(临界)测试检查设备在设计极限情况下能否正常工作。测试时对照设计指标或设计目标,施加最大(上边界)或最小(下边界)的“负荷”,检查各方面是否正常,保证设备的长期可用性。
疲劳测试目的在于测试设备长期、反复运行时是否能正常工作。由于消防报警设备一般情况下是不间断工作,可靠性要求高。这对软硬件提出了较高的要求:软件能抗自锁、不死机、自恢复;硬件能长期通电工作,经受环境考验,一般通过长期开机运行来检查有无异常。另外,还要通过反复运行来检查运行结果是否一致。同前面各种测试相比,这种测试需要花费较多时间,其目的是尽可能排除设备中存在的隐患,其间出现的故障也最难解决,但也最需要解决。
通过上述测试,可以发现存在于设备中的绝大多数故障。但是要排除故障,就需要确定属于哪一类故障。实践中可以采用对比的方法:如果同样的软件应用于多个同类型设备时出现重复的故障现象,则可以认为首先是软件故障;如果故障现象不重复出现,则可以认定为硬件故障。由于故障现象同故障根源之间并非总是直接关联,因而对上述判断的确认还需要相当的经验积累。确认故障类型后,“对症下药”就有了方向,就易于排除故障。因此对设备进行全面而有效的测试是确保设备质量的一个必不可少的过程。
确定为软件故障后,利用仿真器在线仿真,重现故障现象,从以下几个方面考虑,查找出软件缺陷:
某些程序代码不可达,即程序永远不能执行到给定的代码;变量没有初始化就被使用;变量使用后没有重置;变量的类型、范围不合理,如8位无符号二进制只能表示0~255之间的数;不同类型的变量相互转换没有受到强制,采用了自动转换产生意外的结果;缓冲区和目标没能同步刷新,导致没有实际输出;微指令时序错误;循环边界失控,陷入死循环;部分代码遇到相应的硬件失效,陷入死循环;定时精度太低,引发事务错乱;代码执行所有可能产生的结果没有全部得到处理,出现意外现象;处理通讯报文时人为丢失部分信息;程序中对资源的分配不合理,引起堆栈溢出、覆盖其他资源;数据索引不唯一、数据指针移动错误,查找不到指定条件的结果:程序对有关器件、设备没有初始化;程序没有给器件、设备足够的响应时间;软件设计思路不能提供具有实时性的多任务功能;程序中断服务程序工作过于繁忙,导致系统没有能力进行其他正常工作。
在找到软件缺陷后,其排除也就变得容易。随着程序员的经验不断丰富,此类问题将会有所减少,使得软件能够保证系统功能正常。但是,只有经过严格的测试,才能为程序员对软件不断改进创造条件,使设备功能不断完善。
硬件故障可能涉及到组件、器件、电路板、焊接、接线和布线等方面。一般从以下方面着手查找问题,并予以排除:
组件接口信号逻辑不匹配;集成电路块损坏或精度、速率不够;晶体不能正常振荡;元器件在较高温度下失效;接插件接触不紧密或元器件引脚氧化;电路板制作质量差,有断线、搭线,金属孔化不好;电路板材质绝缘性能不好,甚至有短路现象;电路板印制线强度不够,在安装时遭到损坏;焊接存在虚焊,引起接触不良;焊接时搭线或损坏焊盘;接线松弛,不能经受震动;器件插拔方法不当,造成损坏或功能不正常;系统硬件配置不当;非标准件制作时有应力集中;外接感性设备时没有保护弱电系统;布线时采用了规定以外的护套;布线时强电与弱电没有分开;系统同大地接触不良;环境潮湿,绝缘电阻减小,影响系统工作。
在出现硬件故障时,从上述方面可以排除大部分故障。有些硬件故障相当棘手,排除起来需要有各种仪器,花费较多时间。有鉴于此,我们对于硬件故障应重在预防,而非排除。上面提供的硬件故障原因,为预防提供了具有针对性的参考,可以从多方面督促产品生产、应用过程的质量提高。
消防设备的目的在于提供一种安全保障,毫无疑问,该系统自身应当具有高的可靠性,做到有备无患,随时可用,能够经受环境、时间的考验。文章从软件和硬件两方面阐述了妨碍设备功能的因素,为提高消防设备的质量提供一些参考。