微(wei)處理器(qi)是
電磁(ci)流量計(ji)
的核心(xin)單元, 控(kong)制整個(ge)系統的(de)運行。當(dang)單片機(ji)應用系(xi)統的 CPU 受(shou)🐕到❄️幹擾(rao)時, 可能(neng)造成的(de)影響有(you): 非正常(chang)修改程(cheng)序計數(shu)器🐪指針(zhen); 改寫可(ke)編程輸(shu)出端口(kou)狀态; 非(fei)正常修(xiu)改數據(ju)區的數(shu)據等。以(yi)上不良(liang)影響會(hui)使單片(pian)機程序(xu)失控, 其(qi)後果是(shi)非常嚴(yan)重的。結(jie)合
智能(neng)電磁流(liu)量計
的(de)工作特(te)點和 MSP430系(xi)列單片(pian)機的特(te)性, 采用(yong)軟件與(yu)硬🚶件抗(kang)幹擾技(ji)💯術相結(jie)合, 提高(gao)系統運(yun)行的穩(wen)定性。
1 硬(ying)件抗幹(gan)擾
由于(yu)軟件抗(kang)幹擾措(cuo)施是以(yi)犧牲 CPU 效(xiao)率爲代(dai)價的, 如(ru)果🈲沒有(you)硬🐕件消(xiao)除絕大(da)多數幹(gan)擾, CPU 将疲(pi)于奔命(ming), 無暇顧(gu)及正常(chang)工作🏃🏻, 嚴(yan)重影響(xiang)系統的(de)工作效(xiao)率和實(shi)時性。電(dian)磁流量(liang)計輸出(chu)單元一(yi)般包括(kuo) 4~ 20 mA 電⛱️流輸(shu)出, 集電(dian)極開路(lu)的頻率(lü)輸出以(yi)及工業(ye)現場總(zong)線接口(kou)等, 在🥰輸(shu)入和輸(shu)出通道(dao)上采用(yong)光電隔(ge)離器🔞來(lai)進行信(xin)息傳輸(shu)是很有(you)好🤞處的(de), 它将微(wei)機系統(tong)與各種(zhong)傳感器(qi)💚、 開關、 執(zhi)行機構(gou)從電氣(qi)上隔離(li)開來🌈, 很(hen)大一部(bu)分幹擾(rao)将被阻(zu)擋。M SP430單片(pian)機🐕與外(wai)圍設備(bei), 如模數(shu)轉換器(qi)、 EEP -ROM 等采用(yong)總線通(tong)信方式(shi)。當信号(hao)同時切(qie)換時會(hui)引🔴起 /地(di)🔴彈 0和串(chuan)擾。在電(dian)路👣闆布(bu)線時, 總(zong)線盡量(liang)使用地(di)線包💯圍(wei), 電路采(cai)用多點(dian)接地方(fang)🤩式。同時(shi)總線采(cai)用上拉(la)電♉阻方(fang)式, 可以(yi)提高邏(luo)輯電♻️路(lu)噪聲容(rong)限, 使總(zong)線通信(xin)更加可(ke)靠。M SP430的通(tong)用端口(kou)可以設(she)置⛹🏻♀️爲輸(shu)入🔱和輸(shu)出兩種(zhong)狀态, 對(dui)于沒有(you)使✊用的(de)端口, 全(quan)部✍️設置(zhi)爲輸出(chu)狀态, 防(fang)止 CPU受到(dao)意外幹(gan)♌擾。此外(wai) XT 2OUT 、 X OUT 、 VREF+ 空置; X I N 、 AV CC 接(jie)數字電(dian)源端; XT 2IN 、 VREF-、 VREF+ 接(jie)☀️數字地(di)。
2 睡眠狀(zhuang)态抗幹(gan)擾
電磁(ci)流量計(ji)中微處(chu)理器很(hen)多情況(kuang)下是在(zai)執行等(deng)待指令(ling)和循環(huan)檢查程(cheng)序, 這時(shi) CPU 沒有工(gong)作, 但卻(que)是清醒(xing)的, 很容(rong)易受幹(gan)擾。MSP430系列(lie)單片機(ji)提供了(le)多種睡(shui)眠狀态(tai), 讓 CPU在沒(mei)有正常(chang)工作時(shi)休眠, 必(bi)要時再(zai)由中斷(duan)🌈系統來(lai)喚醒它(ta), 之後恢(hui)複休眠(mian)狀态,從(cong)而♌使 CPU受(shou)到随🍉機(ji)幹擾的(de)威脅大(da)大降低(di), 同時降(jiang)低了 CPU的(de)功耗。
3 指(zhi)令冗餘(yu)與軟件(jian)陷阱技(ji)術
程序(xu)正常運(yun)行時, 指(zhi)令計數(shu)器始終(zhong)指向下(xia)一條指(zhi)令的第(di)一個字(zi)節, 當單(dan)片機受(shou)到幹擾(rao)時, 可能(neng)引起程(cheng)序計數(shu)器的非(fei)正常修(xiu)改, 将操(cao)作數當(dang)作指令(ling)碼❓執行(hang), 造成程(cheng)序誤操(cao)作。M SP430單片(pian)機✂️采用(yong) RISC指令内(nei)核, 指令(ling)⚽字有單(dan)字節、 雙(shuang)字節🆚和(he)三字節(jie)👈指令三(san)種, 在雙(shuang)字節🔞和(he)三字節(jie)指令後(hou)插入兩(liang)條單字(zi)節指令(ling), 程序失(shi)控時也(ye)可以迅(xun)🐉速進入(ru)預期控(kong)制軌道(dao)。
綜合考(kao)慮 CPU 效率(lü)和抗幹(gan)擾能力(li), 在對程(cheng)序流向(xiang)起關鍵(jian)作用的(de)指令處(chu), 如跳轉(zhuan)指令、 中(zhong)斷恢複(fu)指令等(deng), 插入兩(liang)條 / NOP0單字(zi)節空操(cao)作指令(ling), 以保證(zheng) /跑飛 0的(de)程序迅(xun)速納入(ru)正确的(de)控制軌(gui)道。爲了(le)防止單(dan)片機輸(shu)出口☂️狀(zhuang)态被意(yi)外修改(gai), 定期重(zhong)新定義(yi)輸出口(kou)📱狀态。M SP430單(dan)片機内(nei)部集成(cheng)很多外(wai)圍設備(bei), 如 UART、 SPI串口(kou)、 定時計(ji)數器等(deng), 爲了防(fang)止這🈲些(xie)設備的(de)相應控(kong)🈲制寄存(cun)器被意(yi)外修改(gai), 每次使(shi)用時都(dou)需重新(xin)☀️設置。指(zhi)令冗餘(yu)使 /跑飛(fei) 0的程序(xu)安定下(xia)來是有(you)前提條(tiao)件的: 程(cheng)序計算(suan)器必須(xu)指向程(cheng)序區。當(dang)程序計(ji)數器落(luo)到非程(cheng)序區, 如(ru) ROM 中未使(shi)用的空(kong)間、 中斷(duan)向量表(biao)、 數據區(qu), 則冗餘(yu)指令失(shi)效✌️。
采取(qu)額外措(cuo)施就是(shi)設立軟(ruan)件陷阱(jing)。所謂軟(ruan)件陷阱(jing), 就是一(yi)條引導(dao)指令, 強(qiang)行将捕(bu)獲的程(cheng)序引向(xiang)對程序(xu)出錯進(jin)行處理(li)的程序(xu), 一般安(an)排在未(wei)使用的(de)中斷向(xiang)量、 未使(shi)用的 ROM 等(deng)。M SP430單片機(ji)具有多(duo)個中斷(duan)發生源(yuan)。正常工(gong)作時, 執(zhi)行完中(zhong)斷服務(wu)程序後(hou), 相應的(de)中斷标(biao)志位會(hui)被硬件(jian)自動複(fu)位; 當單(dan)片機受(shou)到幹擾(rao), 運行異(yi)常時, 可(ke)能會觸(chu)發沒有(you)使用的(de)中斷, 導(dao)緻系統(tong)不能正(zheng)常工作(zuo), 因此在(zai)未被使(shi)用的中(zhong)斷向量(liang)處插入(ru)冗餘指(zhi)令, 使中(zhong)斷自動(dong)返回, 如(ru): / NOP NOP RETI0。
對于沒(mei)有使用(yong)的 ROM, 程序(xu)燒錄器(qi)默認寫(xie)入字0xfff,f該(gai)字對于(yu)指📐令系(xi)統是一(yi)條指令(ling), 這條指(zhi)令會修(xiu)改單片(pian)機内部(bu)寄存器(qi)值; 如果(guo)程序 /跑(pao)飛 0進入(ru)這段 ROM中(zhong), 可能造(zao)成數據(ju)運算錯(cuo)🏃🏻♂️誤, 因此(ci)在未使(shi)用的 ROM 中(zhong)寫入代(dai)碼, 使程(cheng)序跳轉(zhuan)到出錯(cuo)處理程(cheng)序。