微處(chù)理器是
電(diàn)磁流量計(jì)
的核(hé)心單元, 控(kòng)制整(zhěng)個系統的(de)運行。當(dāng)單(dān)片機(jī)應用系(xì)統(tǒng)的 cpu 受(shòu)到幹擾(rǎo)時, 可能(néng)造成的影(yǐng)響有(yǒu): 非正常修改程序計數(shù)器指(zhǐ)針(zhēn); 改寫可編(biān)程輸(shū)出端(duān)口(kǒu)狀态; 非(fēi)正常(cháng)修改數據(jù)區的(de)數據等。以(yǐ)上不良影響會(huì)使單(dān)片機程序(xù)失控(kòng), 其後果是非常嚴重的。結(jié)合
智能電(diàn)磁流(liú)量計
的工作特(tè)點和 msp430系列(liè)單片(piàn)機的(de)特(tè)性, 采用(yòng)軟件與(yǔ)硬件抗幹擾技術相結(jié)合, 提高系統(tǒng)運行的穩(wěn)定(dìng)性。
1 硬(yìng)件抗幹(gàn)擾(rǎo)
由于(yú)軟件抗幹擾措(cuò)施是以犧牲 cpu 效(xiào)率爲(wèi)代價(jià)的(de), 如(rú)果沒有硬(yìng)件消(xiāo)除絕大(dà)多數幹(gàn)擾, cpu 将(jiāng)疲(pí)于奔命, 無暇顧(gù)及正常(cháng)工作, 嚴重影(yǐng)響(xiǎng)系統(tǒng)的工作效率和實時性。電磁流量計輸出(chū)單元(yuán)一般包括(kuò) 4~ 20 ma 電流(liú)輸(shū)出, 集電(diàn)極開(kāi)路的頻率(lǜ)輸出(chū)以及(jí)工業(yè)現場總線(xiàn)接口(kǒu)等, 在輸入和輸(shū)出通道上采用(yòng)光電(diàn)隔離器來進行信息傳輸(shū)是很(hěn)有好處的(de), 它将微(wēi)機(jī)系統與各種傳感(gǎn)器(qì)、 開關、 執行機構(gòu)從電氣上隔離(lí)開來, 很大一部分幹擾将被阻(zǔ)擋。m sp430單(dān)片機(jī)與外圍設備, 如(rú)模數轉換(huàn)器、 eep -rom 等采用總線(xiàn)通信(xìn)方式。當信号同(tóng)時切(qiē)換時會引(yǐn)起 /地(dì)彈 0和串擾(rǎo)。在電(diàn)路闆布線時, 總(zǒng)線盡量使用地(dì)線包圍, 電(diàn)路采(cǎi)用多點接(jiē)地方(fāng)式。同時總線采用上拉電阻方(fāng)式, 可(kě)以提高邏(luó)輯電路噪聲容(róng)限, 使總(zǒng)線通信(xìn)更加(jiā)可靠。m sp430的通(tōng)用端口(kǒu)可(kě)以設(shè)置爲(wèi)輸(shū)入和輸(shū)出兩種狀态, 對(duì)于沒有使(shǐ)用的(de)端口(kǒu), 全部(bù)設置(zhì)爲輸出(chū)狀态, 防(fáng)止 cpu受到意外幹(gàn)擾。此外 xt 2out 、 x out 、 vref+ 空置; x i n 、 av cc 接(jiē)數字(zì)電(diàn)源端; xt 2in 、 vref-、 vref+ 接(jiē)數字地。
2 睡(shuì)眠狀(zhuàng)态抗幹擾(rǎo)
電磁(cí)流量計中微處理器(qì)很多情況(kuàng)下是在執(zhí)行等(děng)待指(zhǐ)令和循環(huán)檢查程序(xù), 這時 cpu 沒有(yǒu)工(gōng)作(zuò), 但卻(què)是清醒的(de), 很容(róng)易受幹擾。msp430系列(liè)單片(piàn)機(jī)提(tí)供了(le)多種(zhǒng)睡(shuì)眠狀态(tài), 讓 cpu在沒(méi)有(yǒu)正常(cháng)工作(zuò)時休眠, 必(bì)要時(shí)再由(yóu)中(zhōng)斷(duàn)系統(tǒng)來喚(huàn)醒它(tā), 之後恢複(fú)休眠狀态,從而使 cpu受到随機幹擾的(de)威脅大大降低(dī), 同時降低(dī)了 cpu的(de)功耗。
3 指(zhǐ)令(lìng)冗餘(yú)與軟件(jiàn)陷(xiàn)阱技術
程(chéng)序正常運(yùn)行時, 指令(lìng)計數(shù)器始終指向下一條指(zhǐ)令的第(dì)一個字節, 當單(dān)片機受到幹擾時, 可(kě)能引起程序計數(shù)器的非(fēi)正常修改, 将操(cāo)作數當作(zuò)指令碼執(zhí)行, 造成程(chéng)序誤操作。m sp430單片(piàn)機采(cǎi)用 risc指(zhǐ)令内核, 指令字有單(dān)字節(jiē)、 雙字(zì)節和(hé)三字節(jiē)指(zhǐ)令三(sān)種, 在雙(shuāng)字節和(hé)三字節指令後插入(rù)兩(liǎng)條單字(zì)節指(zhǐ)令, 程(chéng)序失控時(shí)也可以迅(xùn)速進入預期控制軌道。
綜(zōng)合考(kǎo)慮 cpu 效(xiào)率(lǜ)和抗幹(gàn)擾能(néng)力, 在對程(chéng)序流向起(qǐ)關鍵作用的指(zhǐ)令處(chù), 如跳轉指(zhǐ)令、 中(zhōng)斷恢複(fú)指令等(děng), 插入兩條 / nop0單字(zì)節空操作指令(lìng), 以保(bǎo)證(zhèng) /跑飛 0的(de)程序迅速納入(rù)正确(què)的控制軌道。爲(wèi)了防(fáng)止單(dān)片機輸出口狀(zhuàng)态被意外(wài)修(xiū)改(gǎi), 定期重(zhòng)新(xīn)定義(yì)輸出口狀态。m sp430單(dān)片機内部(bù)集成很多外圍設備(bèi), 如 uart、 spi串(chuàn)口、 定(dìng)時計(jì)數器等, 爲了防(fáng)止這些(xiē)設備的(de)相應(yīng)控制(zhì)寄存(cún)器被意(yì)外修改(gǎi), 每次使用時都(dōu)需重新設(shè)置。指(zhǐ)令冗(rǒng)餘使 /跑飛(fēi) 0的程序安定下(xià)來是有前提條(tiáo)件的: 程(chéng)序計算器必(bì)須指(zhǐ)向程(chéng)序區(qū)。當程序計數器(qì)落到非程(chéng)序區, 如(rú) rom 中未使(shǐ)用的(de)空(kōng)間、 中斷(duàn)向量表、 數據區(qū), 則冗餘指令失效。
采(cǎi)取(qǔ)額外措施(shī)就是設(shè)立軟(ruǎn)件陷(xiàn)阱。所謂軟件陷阱(jǐng), 就是一(yī)條引導(dǎo)指令, 強行将捕獲的程(chéng)序引向對程序(xù)出錯(cuò)進(jìn)行處(chù)理(lǐ)的程序, 一(yī)般安(ān)排在(zài)未使用的(de)中斷向量(liàng)、 未使用的(de) rom 等。m sp430單(dān)片機(jī)具有多個(gè)中斷(duàn)發生(shēng)源。正(zhèng)常工(gōng)作時, 執(zhí)行完中(zhōng)斷服(fú)務程序後, 相應的中(zhōng)斷标(biāo)志位會被硬件(jiàn)自動複位(wèi); 當單(dān)片機(jī)受(shòu)到幹擾(rǎo), 運行(háng)異常(cháng)時, 可(kě)能會觸發(fā)沒有(yǒu)使用(yòng)的中斷, 導(dǎo)緻系(xì)統(tǒng)不能正(zhèng)常工作, 因(yīn)此在未被使(shǐ)用的中(zhōng)斷向量(liàng)處插入(rù)冗餘(yú)指令, 使中(zhōng)斷自動返回, 如(rú): / nop nop reti0。
對于沒(méi)有使用(yòng)的 rom, 程(chéng)序燒錄器默(mò)認寫入字0xfff,f該(gāi)字對于指令系統是(shì)一條指令(lìng), 這條指(zhǐ)令會修改單片機内部(bù)寄存器(qì)值; 如果(guǒ)程序 /跑飛(fēi) 0進入(rù)這段 rom中, 可(kě)能造(zào)成數(shù)據運算錯(cuò)誤, 因此在未使(shǐ)用的(de) rom 中寫入代(dài)碼, 使程序(xù)跳轉到出(chū)錯處(chù)理程(chéng)序。