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