廣州工控機(jī)維修工控程序運(yùn)行失常怎么辦?
系統(tǒng)受到干擾侵害致使PC值改變,造成程序運(yùn)行失常。對(duì)于程序運(yùn)行失常的軟件對(duì)策主要是發(fā)現(xiàn)失常狀態(tài)后及時(shí)引導(dǎo)系統(tǒng)恢復(fù)原始狀態(tài)。
設(shè)置監(jiān)視跟蹤定時(shí)器
使用定時(shí)中斷來(lái)監(jiān)視程序運(yùn)行狀態(tài)。定時(shí)器的定時(shí)時(shí)間稍大于主程序正常運(yùn)行一個(gè)循環(huán)的時(shí)間,在主程序運(yùn)行過(guò)程中執(zhí)行一次定時(shí)器時(shí)間常數(shù)刷新操作。這樣,只要程序正常運(yùn)行,定時(shí)器不會(huì)出現(xiàn)定時(shí)中斷。而當(dāng)程序運(yùn)行失常,不能及時(shí)刷新定時(shí)器時(shí)間常數(shù)而導(dǎo)致定時(shí)中斷,利用定時(shí)中斷服務(wù)程序?qū)⑾到y(tǒng)復(fù)位。在8031應(yīng)用系統(tǒng)中作為軟件抗干擾的一個(gè)事例,具體做法是:
使用8155的定時(shí)器所產(chǎn)生的“溢出”信號(hào)作為8031的外部中斷源INT1。用555定時(shí)器作為8155中定時(shí)器的外部時(shí)鐘輸入;
8155定時(shí)器的定時(shí)值稍大于主程序的正常循環(huán)時(shí)間;
在主程序中,每循環(huán)一次,對(duì)8155定時(shí)器的定時(shí)常數(shù)進(jìn)行刷新;
在主控程序開(kāi)始處,對(duì)硬件復(fù)位還是定時(shí)中斷產(chǎn)生的自動(dòng)恢復(fù)進(jìn)行分類(lèi)判斷處理。
設(shè)置軟件陷井
當(dāng)PC失控,造成程序“亂飛”而不斷進(jìn)入非程序區(qū),只要在非程序區(qū)設(shè)置攔截措施,使程序進(jìn)入陷井,然后強(qiáng)迫使程序進(jìn)入初始狀態(tài)。例如Z80指令系統(tǒng)中數(shù)據(jù)FFH正好對(duì)應(yīng)為重新起動(dòng)指令RST56,該指令使程序自動(dòng)轉(zhuǎn)入0038H入口地址。因此,在Z80CPU構(gòu)成的應(yīng)用系統(tǒng)中,只要將所有非程序區(qū)全部置成FFH用以攔截失控程序。并在0038H處設(shè)置轉(zhuǎn)移指令,使程序轉(zhuǎn)至抗干擾處理程序。