衛(wèi)海根
(山西科安消防工程有限公司,山西 太原 030024)
文章涉及的消防報警設(shè)備指相對獨(dú)立的智能設(shè)備,用于火災(zāi)報警、顯示、通訊、控制等方面,具體包括智能火災(zāi)報警控制器、樓層顯示器、纜式報警控制系統(tǒng)、氣體滅火裝置、消防電話裝置。所謂故障,指設(shè)備不能完成預(yù)期(設(shè)計(jì))的功能。
為了具有一定的智能,上述設(shè)備中都含有單片機(jī),并有相應(yīng)的程序運(yùn)行。因此,可能出現(xiàn)的故障有兩大類:軟件故障和硬件故障。
軟件故障不包括程序編制調(diào)試時出現(xiàn)的語法錯誤(此類錯誤多是由于編寫程序時違反語法規(guī)則而產(chǎn)生的,不難解決,也必須首先解決),而是指邏輯錯誤、長期運(yùn)行的穩(wěn)定性差、缺乏自我保護(hù)能力、產(chǎn)生意外的現(xiàn)象、功能操作失效等引發(fā)的故障。
這里的硬件故障不包括硬件原理設(shè)計(jì)缺陷導(dǎo)致的故障,我們考慮的是,在嚴(yán)格的校對、評審、試驗(yàn)以及初樣生產(chǎn)之后,設(shè)備的原理設(shè)計(jì)得以定型和確認(rèn),在一段時間內(nèi),能夠進(jìn)行正樣(具有一定批量)生產(chǎn)的相對穩(wěn)定的設(shè)備。這樣的設(shè)備,由于在制造上存在許多環(huán)節(jié)(元器件采購、電路板制作、焊接、安裝、現(xiàn)場布線等),依然可能出現(xiàn)硬件故障。也有這樣的軟件故障,只在相關(guān)硬件故障出現(xiàn)時才暴露出來,這是一種特殊的軟件故障。
上述故障,有時顯得明顯而易于發(fā)現(xiàn),有時很隱蔽而難于發(fā)現(xiàn)。這就需要在組裝完成后不斷地、全方位地測試,盡早將故障暴露出來,降低應(yīng)用中發(fā)生故障的可能性。為此進(jìn)行的測試因而必須包括設(shè)計(jì)功能測試、模塊組合測試、意外操作測試、邊界(臨界)測試、疲勞測試,觀察各種現(xiàn)象并同預(yù)期結(jié)果相比較。在測試過程中,還必須注意測試點(diǎn)的普遍性,盡量在較短時間內(nèi)覆蓋較多的可能性,減少盲點(diǎn)。
測試人員不能是設(shè)計(jì)者本人,以免測試點(diǎn)局限于設(shè)計(jì)范圍內(nèi)。
設(shè)計(jì)功能測試的目的在于測試設(shè)備是否達(dá)到設(shè)計(jì)預(yù)期功能,可以按照操作說明書進(jìn)行操作,檢查各功能,這種測試要求完整,即不允許遺漏任何功能。在測試各功能時,要求廣泛地選取各種類型的測試點(diǎn),保證設(shè)備功能完整性。
模塊組合測試目的在于檢查設(shè)備的各種配置是否能夠自由組合而正常工作,檢查軟硬件是否協(xié)調(diào)以及系統(tǒng)能否自我保護(hù)以及設(shè)備的靈活性和可維護(hù)性。
意外操作測試可以檢查設(shè)備對各種錯誤的接收、容納能力。在用戶或測試人員的錯誤操作下,要求設(shè)備依然正常工作或能恢復(fù)正常,并保護(hù)敏感區(qū)域、敏感信息不受錯誤操作的侵害。進(jìn)行這種測試,要求盡量“錯”,盡量“意外”,以測試系統(tǒng)的強(qiáng)壯性。
邊界(臨界)測試檢查設(shè)備在設(shè)計(jì)極限情況下能否正常工作。測試時對照設(shè)計(jì)指標(biāo)或設(shè)計(jì)目標(biāo),施加最大(上邊界)或最小(下邊界)的“負(fù)荷”,檢查各方面是否正常,保證設(shè)備的長期可用性。
疲勞測試目的在于測試設(shè)備長期、反復(fù)運(yùn)行時是否能正常工作。由于消防報警設(shè)備一般情況下是不間斷工作,可靠性要求高。這對軟硬件提出了較高的要求:軟件能抗自鎖、不死機(jī)、自恢復(fù);硬件能長期通電工作,經(jīng)受環(huán)境考驗(yàn),一般通過長期開機(jī)運(yùn)行來檢查有無異常。另外,還要通過反復(fù)運(yùn)行來檢查運(yùn)行結(jié)果是否一致。同前面各種測試相比,這種測試需要花費(fèi)較多時間,其目的是盡可能排除設(shè)備中存在的隱患,其間出現(xiàn)的故障也最難解決,但也最需要解決。
通過上述測試,可以發(fā)現(xiàn)存在于設(shè)備中的絕大多數(shù)故障。但是要排除故障,就需要確定屬于哪一類故障。實(shí)踐中可以采用對比的方法:如果同樣的軟件應(yīng)用于多個同類型設(shè)備時出現(xiàn)重復(fù)的故障現(xiàn)象,則可以認(rèn)為首先是軟件故障;如果故障現(xiàn)象不重復(fù)出現(xiàn),則可以認(rèn)定為硬件故障。由于故障現(xiàn)象同故障根源之間并非總是直接關(guān)聯(lián),因而對上述判斷的確認(rèn)還需要相當(dāng)?shù)慕?jīng)驗(yàn)積累。確認(rèn)故障類型后,“對癥下藥”就有了方向,就易于排除故障。因此對設(shè)備進(jìn)行全面而有效的測試是確保設(shè)備質(zhì)量的一個必不可少的過程。
確定為軟件故障后,利用仿真器在線仿真,重現(xiàn)故障現(xiàn)象,從以下幾個方面考慮,查找出軟件缺陷:
某些程序代碼不可達(dá),即程序永遠(yuǎn)不能執(zhí)行到給定的代碼;變量沒有初始化就被使用;變量使用后沒有重置;變量的類型、范圍不合理,如8位無符號二進(jìn)制只能表示0~255之間的數(shù);不同類型的變量相互轉(zhuǎn)換沒有受到強(qiáng)制,采用了自動轉(zhuǎn)換產(chǎn)生意外的結(jié)果;緩沖區(qū)和目標(biāo)沒能同步刷新,導(dǎo)致沒有實(shí)際輸出;微指令時序錯誤;循環(huán)邊界失控,陷入死循環(huán);部分代碼遇到相應(yīng)的硬件失效,陷入死循環(huán);定時精度太低,引發(fā)事務(wù)錯亂;代碼執(zhí)行所有可能產(chǎn)生的結(jié)果沒有全部得到處理,出現(xiàn)意外現(xiàn)象;處理通訊報文時人為丟失部分信息;程序中對資源的分配不合理,引起堆棧溢出、覆蓋其他資源;數(shù)據(jù)索引不唯一、數(shù)據(jù)指針移動錯誤,查找不到指定條件的結(jié)果:程序?qū)τ嘘P(guān)器件、設(shè)備沒有初始化;程序沒有給器件、設(shè)備足夠的響應(yīng)時間;軟件設(shè)計(jì)思路不能提供具有實(shí)時性的多任務(wù)功能;程序中斷服務(wù)程序工作過于繁忙,導(dǎo)致系統(tǒng)沒有能力進(jìn)行其他正常工作。
在找到軟件缺陷后,其排除也就變得容易。隨著程序員的經(jīng)驗(yàn)不斷豐富,此類問題將會有所減少,使得軟件能夠保證系統(tǒng)功能正常。但是,只有經(jīng)過嚴(yán)格的測試,才能為程序員對軟件不斷改進(jìn)創(chuàng)造條件,使設(shè)備功能不斷完善。
硬件故障可能涉及到組件、器件、電路板、焊接、接線和布線等方面。一般從以下方面著手查找問題,并予以排除:
組件接口信號邏輯不匹配;集成電路塊損壞或精度、速率不夠;晶體不能正常振蕩;元器件在較高溫度下失效;接插件接觸不緊密或元器件引腳氧化;電路板制作質(zhì)量差,有斷線、搭線,金屬孔化不好;電路板材質(zhì)絕緣性能不好,甚至有短路現(xiàn)象;電路板印制線強(qiáng)度不夠,在安裝時遭到損壞;焊接存在虛焊,引起接觸不良;焊接時搭線或損壞焊盤;接線松弛,不能經(jīng)受震動;器件插拔方法不當(dāng),造成損壞或功能不正常;系統(tǒng)硬件配置不當(dāng);非標(biāo)準(zhǔn)件制作時有應(yīng)力集中;外接感性設(shè)備時沒有保護(hù)弱電系統(tǒng);布線時采用了規(guī)定以外的護(hù)套;布線時強(qiáng)電與弱電沒有分開;系統(tǒng)同大地接觸不良;環(huán)境潮濕,絕緣電阻減小,影響系統(tǒng)工作。
在出現(xiàn)硬件故障時,從上述方面可以排除大部分故障。有些硬件故障相當(dāng)棘手,排除起來需要有各種儀器,花費(fèi)較多時間。有鑒于此,我們對于硬件故障應(yīng)重在預(yù)防,而非排除。上面提供的硬件故障原因,為預(yù)防提供了具有針對性的參考,可以從多方面督促產(chǎn)品生產(chǎn)、應(yīng)用過程的質(zhì)量提高。
消防設(shè)備的目的在于提供一種安全保障,毫無疑問,該系統(tǒng)自身應(yīng)當(dāng)具有高的可靠性,做到有備無患,隨時可用,能夠經(jīng)受環(huán)境、時間的考驗(yàn)。文章從軟件和硬件兩方面闡述了妨礙設(shè)備功能的因素,為提高消防設(shè)備的質(zhì)量提供一些參考。