張彥文
【摘 要】本文給出了一個(gè)在以計(jì)算機(jī)為核心的控制系統(tǒng)中,采用中斷處理方法實(shí)現(xiàn)輸入狀態(tài)量變化自動(dòng)檢測(cè)的電路的設(shè)計(jì)方案。該電路可以自動(dòng)檢測(cè)發(fā)生變化的狀態(tài)位,對(duì)發(fā)生變化的狀態(tài)位的序號(hào)進(jìn)行編碼,并以中斷請(qǐng)求的方式,將變化狀態(tài)位的序號(hào)編碼通知處理器。處理器根據(jù)狀態(tài)位的序號(hào)編碼,可快速確定變化的狀態(tài)量信號(hào),從而可極大地提高處理器狀態(tài)量檢測(cè)的效率。電路簡單、實(shí)用,具有很高的使用價(jià)值。
【關(guān)鍵詞】控制系統(tǒng);狀態(tài)量快速處理;自動(dòng)檢測(cè);中斷
0 前言
工業(yè)或礦業(yè)生產(chǎn)系統(tǒng)是一個(gè)非常復(fù)雜、多元的產(chǎn)業(yè),涉及到多種不同的生產(chǎn)過程。如何有效地管理各個(gè)過程與系統(tǒng),需要將生產(chǎn)過程中產(chǎn)生的過程數(shù)據(jù)以實(shí)時(shí)互動(dòng)的方式傳遞給現(xiàn)場設(shè)備操作人員及生產(chǎn)管理人員,從而實(shí)現(xiàn)對(duì)生產(chǎn)過程的規(guī)劃、控制和優(yōu)化。如何快速的采集系統(tǒng)中大量設(shè)備的運(yùn)行及現(xiàn)場工況狀態(tài)量信號(hào),是以計(jì)算機(jī)為核心的工業(yè)、礦業(yè)自動(dòng)化系統(tǒng)的一個(gè)重要問題。常用的處理方法是采用CPU處理器毫秒級(jí)的計(jì)時(shí)器中斷,周期性的檢測(cè)狀態(tài)量的變化與否,這將會(huì)消耗大量的處理器時(shí)間。因?yàn)槎鄶?shù)情況下狀態(tài)量變化的頻度較低,CPU處理器的中斷處理檢測(cè)到狀態(tài)量變化的機(jī)會(huì)也是較低的,導(dǎo)致CPU處理器多數(shù)時(shí)間都在進(jìn)行無用的狀態(tài)巡檢,浪費(fèi)了大量的處理器時(shí)間。
本文設(shè)計(jì)了一種以計(jì)算機(jī)中斷處理技術(shù)實(shí)現(xiàn)輸入狀態(tài)量變化自動(dòng)檢測(cè)的數(shù)字輸入電路,該電路被稱之為“變化檢測(cè)器”。電路的主要功能為當(dāng)外部接點(diǎn)的狀態(tài)量變化時(shí),“變化檢測(cè)器”向CPU處理器產(chǎn)生外部中斷請(qǐng)求,并將變化的狀態(tài)量的位序號(hào)進(jìn)行編碼,將編碼發(fā)送給CPU處理器。CPU處理器根據(jù)位序號(hào)編碼,可快速確定變化的狀態(tài)量信號(hào),從而極大地提高CPU處理器的處理效率。如在16路狀態(tài)量信號(hào)中,第6位狀態(tài)位發(fā)生了變化,“變化檢測(cè)器”電路產(chǎn)生中斷請(qǐng)求,并對(duì)發(fā)生變化的狀態(tài)位的序號(hào)“0101”(二進(jìn)制)進(jìn)行編碼。
1 電路邏輯設(shè)計(jì)
“變化檢測(cè)器”電路可自動(dòng)檢測(cè)外部接點(diǎn)的狀態(tài)量改變與否。當(dāng)檢測(cè)到外部狀態(tài)量發(fā)生改變時(shí),將變化的狀態(tài)量的位序號(hào)信息進(jìn)行編碼,并主動(dòng)向CPU處理器發(fā)出外部中斷請(qǐng)求,CPU處理器響應(yīng)中斷請(qǐng)求。中斷處理程序根據(jù)中位序號(hào)編碼信息,可以快速地確定變化的狀態(tài)量的位置。
理論上講,“變化檢測(cè)器”的原理較為復(fù)雜,且要將這個(gè)原理變成實(shí)用的應(yīng)用電路,需要有多種功能的邏輯部件支持。這些功能部件包括狀態(tài)位邊沿變化檢測(cè)用“鎖存器”和“異或門”電路;狀態(tài)位同時(shí)變化的優(yōu)先級(jí)判別電路;狀態(tài)位變化保持寄存器和位序號(hào)編碼電路;中斷發(fā)生電路;接點(diǎn)狀態(tài)量變化與CPU處理器讀取訪問同時(shí)發(fā)生時(shí)的調(diào)停判別電路等。
圖1給出的是可進(jìn)行16路外部接點(diǎn)狀態(tài)量變化自動(dòng)檢測(cè)電路“變化檢測(cè)器”的硬件原理圖。該電路是以可編程邏輯器件PAL22V10為核心,結(jié)合RAM存儲(chǔ)器 IDT6167、多路選擇器74HC257、與門器件74HC00、或門器件74HC32、D鎖存器74HC74、JK鎖存器74HC109、驅(qū)動(dòng)電路74HC244等器件構(gòu)成的。其工作原理如下:外部接點(diǎn)狀態(tài)ID0~I(xiàn)D15經(jīng)過兩片74HC257將16個(gè)狀態(tài)信號(hào)分成兩個(gè)8位信號(hào)組,在IC4器件(PAL22V10)的時(shí)序控制下,與存儲(chǔ)在RAM器件IC1中接點(diǎn)的“原”狀態(tài)逐位比較。當(dāng)比較結(jié)果不同時(shí),IC4器件則停止比較,保存當(dāng)前變化狀態(tài)位的位序號(hào)C1~C4于數(shù)據(jù)緩存器IC5(74HC244),并激活中斷鎖存器IC10A(74HC109),產(chǎn)生中斷請(qǐng)求。當(dāng)CPU處理器響應(yīng)中斷后,發(fā)出數(shù)據(jù)讀取命令/CDRD,從數(shù)據(jù)緩存器IC5中讀出變化的位序號(hào)CD0~CD7,同時(shí)由鎖存器件IC11(74HC74)構(gòu)成的中斷應(yīng)答電路,來清除中斷鎖存器IC10A的中斷請(qǐng)求,重新啟動(dòng)IC4器件,繼續(xù)進(jìn)行狀態(tài)位比較。IC4是“變化檢測(cè)器”電路的控制核心,電路檢測(cè)和控制時(shí)序是由此器件內(nèi)部邏輯產(chǎn)生。IDT6167是16Kx1Bit的CMOS靜態(tài)RAM,存儲(chǔ)外部接點(diǎn)的“原”狀態(tài)。D鎖存器74HC74、JK鎖存器74HC109構(gòu)成中斷請(qǐng)求電路和應(yīng)答電路。
該電路由常用器件組成。其中用到了兩個(gè)關(guān)鍵器件。一個(gè)是CMOS靜態(tài)RAM存儲(chǔ)器IDT6167。IDT6167是一個(gè)高速靜態(tài)存儲(chǔ)器RAM,容量為16Kx1Bit,訪問速度為15ns,完全可以滿足狀態(tài)量變化的快速、實(shí)時(shí)檢測(cè)要求。另外,IDT6167的輸入、輸出都是TTL電平兼容,單5V電源供電,可極大的減化系統(tǒng)的設(shè)計(jì)。IDT6167存儲(chǔ)器的數(shù)據(jù)寬度為1位,非常適合于存儲(chǔ)以“位”為單位來表示的狀態(tài)量,因此,在“變化檢測(cè)器”電路中,它被用作狀態(tài)量的“記憶”單元。由于 “變化檢測(cè)器”電路具有16路狀態(tài)量的檢測(cè)能力,因此,IDT6167僅需要配置四根地址線;另一個(gè)器件為可編程器件PAL22V10,它是“變化檢測(cè)器”電路的核心。PAL22V10的編程邏輯內(nèi)含有一個(gè)5位計(jì)數(shù)器、8選1多路選擇器、鎖存器等,以產(chǎn)生“變化檢測(cè)器”電路的控制邏輯和時(shí)序。IDT6167存儲(chǔ)器的讀寫、變化比較、中斷產(chǎn)生等操作,都是在可編程器件PAL22V10的邏輯控制下自動(dòng)完成。其內(nèi)部邏輯使用硬件描述語言ABEL描述如下。
MODULE PLD2 FLAG ‘-JA:,-R3
TITLE ‘Change Detector
“DECLARTIONS
SPLD2 DEVICE ‘P22V10;
CLK,RST,EN,Y,N,P PIN 1,2,3,4,14,15;
X7,X6,X5,X4,X3,X2,X1,X0 PIN 5,6,7,8,9,10,11,13;
C4,C3,C2,C1,C0,SAV,NDI,CD PIN 19,20,21,22,23,16,17,18;
RESET,PRESET NODE 25,26;
C4,C3,C2,C1,C0,NDI,CD ISTYPE ‘POS;
SAV ISTYPE ‘NEG;
H,L,X,Z,CK = 1,0,.X.,.Z.,.C.;
CNT = [C3,C2,C1];
ACNT = [C4,C3,C2,C1,C0];
EQUATION
RESET = !RST;
CD := !C0 & !SAV & ((!X0 & (CNT == 0) # !X1 & (CNT ==1) # !X2 & (CNT == 2) # !X3 & (CNT == 3) # !X4 & (CNT == 4) # !X5
& (CNT == 5) # !X6 & (CNT == 6) # !X7 & (CNT ==7) ) & Y & P
# (X0 & (CNT == 0) # X1 & (CNT == 1) # X2 & (CNT == 2) # X3 & (CNT == 3) # X4 & (CNT == 4) #X5
& (CNT == 5) # X6 & (CNT == 6) # X7 & (CNT == 7) ) & !Y & N);
NDI := X0 & (CNT == 0) # X1 & (CNT == 1) # X2 & (CNT == 2) # X3 & (CNT == 3) # X4 & (CNT == 4) # X5 & (CNT == 5) # X6
& (CNT == 6) # X7 & (CNT == 7) ;
!SAV := C0 & C1 & C2 & C3 & C4 # !SAV;
!C0 := !EN & !CD & C0 # (EN # CD) & !C0;
!C1 := !EN & !CD & C0 & C1 # !C0 & !C1 # (EN # CD) & !C1;
!C2 := !EN & !CD & C0 & C1 & C2 # !C0 & !C2 # !C1 & !C2 # (EN # CD) & !C2;
!C3 := !EN & !CD & C0 & C1 & C2 &C3 # !C0 & !C3 # !C1 & !C3 # !C2 & !C3 # (EN # CD) & !C3;
!C4 := !EN & !CD & C0 & C1 & C2 & C3 & C4 # !C0 & !C4 # !C1 & !C4 # !C2 & !C4 # !C3 & !C4
# (EN # CD) & !C4;
從上述的ABEL描述語言編寫的邏輯代碼可以看出,PAL22V10的控制邏輯較為復(fù)雜。圖2為PAL22V10產(chǎn)生的電路控制時(shí)序圖。其中C1~C4位計(jì)數(shù)器信號(hào),/SAV位初始狀態(tài)存儲(chǔ)標(biāo)志,NDI為變化狀態(tài)位的當(dāng)前值,CD為狀態(tài)位變化檢出信號(hào),INT(/EN)為中斷請(qǐng)求(終止計(jì)數(shù)器)信號(hào),/WE為IDT6167寫入信號(hào),/ACK為中斷應(yīng)答信號(hào)。
2 電路動(dòng)作分析
在圖1所示的邏輯圖中,PAL22V10內(nèi)部計(jì)數(shù)器C1~C4在狀態(tài)檢查中起著非常重要的作用。按照PAL22V10內(nèi)部計(jì)數(shù)器的狀態(tài)位序號(hào),逐次掃描各個(gè)輸入狀態(tài)位,以檢測(cè)每個(gè)外部接點(diǎn)的“原”狀態(tài)(存儲(chǔ)在RAM中)與“新”狀態(tài)的差異。
從圖2時(shí)序可以看出,計(jì)數(shù)器C1~C4對(duì)應(yīng)計(jì)數(shù)值(0~15),分別對(duì)應(yīng)了16個(gè)狀態(tài)位序號(hào)。當(dāng)/RST復(fù)位后,C1~C4從0開始計(jì)數(shù),直至計(jì)數(shù)值達(dá)到15的這段時(shí)間內(nèi),電路將外部接點(diǎn)的16個(gè)狀態(tài)的初始值寫入到IDT6167存儲(chǔ)器中。此后,/SAV信號(hào)變?yōu)榈碗娖健癓”,終止IDT6167的寫入操作。如果某個(gè)狀態(tài)位發(fā)生了改變,狀態(tài)位變化檢出信號(hào)CD變?yōu)楦唠娖剑诵盘?hào)置位IC10A鎖存器,向CPU處理器產(chǎn)生中斷信號(hào)INT和存儲(chǔ)器寫入信號(hào)/WE,將變化的狀態(tài)位的“新”值寫入IDT6167存儲(chǔ)器中,并產(chǎn)生/EN信號(hào),停止PAL22V10內(nèi)部計(jì)數(shù)器的計(jì)數(shù)。此時(shí),PAL22V10內(nèi)部計(jì)數(shù)器C1~C4的內(nèi)容就是變化狀態(tài)位的序號(hào)編碼。
CPU應(yīng)答中斷時(shí),通過/CDRD信號(hào),使能IC5,讀取變化的位序號(hào)編碼CD0~CD7后,復(fù)位IC11A鎖存器,發(fā)出中斷應(yīng)答信號(hào)/ACK,清除器件IC10A的中斷請(qǐng)求信號(hào)INT,重新啟動(dòng)PAL22V10內(nèi)計(jì)數(shù)器的計(jì)數(shù)動(dòng)作。由于利用位序號(hào)編碼CD0~CD7就可以知道變化狀態(tài)位的具體位置,所以軟件處理就相當(dāng)容易了。IC1器件IDT6167具有16Kx1Bit的存儲(chǔ)容量。因?yàn)椤白兓瘷z測(cè)器”電路的處理能力為16路狀態(tài)量,所以僅使用了IDT6167器件的16個(gè)物理存儲(chǔ)單元,用于保存外部接點(diǎn)的“原”狀態(tài)信息。PAL22V10內(nèi)部計(jì)數(shù)器C1~C4用作IDT6167存儲(chǔ)器的地址線。在進(jìn)行狀態(tài)位比較操作時(shí),計(jì)數(shù)器C1~C4的內(nèi)容決定了當(dāng)前正在進(jìn)行比較的狀態(tài)位的序號(hào)。從IDT6167存儲(chǔ)器中讀出C1~C4對(duì)應(yīng)的狀態(tài)位“原”信息DO,與提供給IC4器件的外部狀態(tài)信息X0~X7,進(jìn)行對(duì)位比較。每次比較操作,都會(huì)發(fā)生一次存儲(chǔ)器讀取,所以,IDT6167存儲(chǔ)器發(fā)生讀取操作遠(yuǎn)多于寫入操作的次數(shù)。IDT6167存儲(chǔ)器的寫入操作只在下列的兩種情況下才會(huì)發(fā)生。一是,系統(tǒng)發(fā)生復(fù)位后,直至/SAV信號(hào)變?yōu)榈碗娖健癓”前,16個(gè)狀態(tài)位初始信息的寫入;二是,當(dāng)電路檢出變化的CD信號(hào)變?yōu)楦唠娖健癏”時(shí),發(fā)生變化的狀態(tài)位對(duì)應(yīng)的RAM存儲(chǔ)單元的“新”狀態(tài)位信息的寫入。IC2和IC3是多路選擇器,由PAL22V10內(nèi)部計(jì)數(shù)器的C4信號(hào)進(jìn)行控制。當(dāng)計(jì)數(shù)器的C4信號(hào)為“L”時(shí),將外部接點(diǎn)的ID0~I(xiàn)D7提供給IC1的X0~X7。當(dāng)計(jì)數(shù)器的C4信號(hào)為“H”時(shí),將外部接點(diǎn)的ID8~I(xiàn)D15提供給IC1的X0~X7。CPU響應(yīng)中斷時(shí),通過讀取CD0~CD7可獲得變化狀態(tài)位的序號(hào)信號(hào),也可以通過ID0~I(xiàn)D15,直接獲得外部接點(diǎn)的狀態(tài)信息。這兩個(gè)信息結(jié)合起來,可以快速確定變化狀態(tài)位的當(dāng)前狀態(tài)值。
3 應(yīng)用接口說明
“變化檢測(cè)器”作為外部接點(diǎn)變化自動(dòng)檢測(cè)的核心電路,具體使用時(shí),需要提供必要的接口電路和控制信號(hào)。這些信號(hào)包括:
(1)輸入信號(hào)
復(fù)位信號(hào)/RST;
時(shí)鐘信號(hào)CLK;
讀信號(hào)/CDRD;
外部狀態(tài)信號(hào)ID0~I(xiàn)D15。
(2)輸出信號(hào)
中斷請(qǐng)求信號(hào)INT;
變化位的序號(hào)編碼信號(hào)CD0~CD7。
特別要說明的是,當(dāng)使用“變化檢測(cè)器”時(shí),在不同的應(yīng)用場合,要求電路響應(yīng)外部接點(diǎn)狀態(tài)變化引發(fā)的中斷的情形也會(huì)差異。這些可能的情形包括:接點(diǎn)ON(合)時(shí)請(qǐng)求中斷;接點(diǎn)OFF(分)時(shí)請(qǐng)求中斷;接點(diǎn)ON/OFF(合/分)時(shí)請(qǐng)求中斷;為此,“變化檢測(cè)器”設(shè)置了跳線JP+和JP-。按照?qǐng)D3的設(shè)置,就可以使電路滿足不同應(yīng)用場合下,狀態(tài)量檢測(cè)的中斷要求。
4 結(jié)論
本文給出的“變化檢測(cè)器”都是由常用的、廉價(jià)的基本電路組成。電路邏輯清晰,實(shí)現(xiàn)容易,且設(shè)計(jì)思路獨(dú)特新穎,具有極高的技術(shù)參考和推廣應(yīng)用價(jià)值。雖然電路設(shè)計(jì)僅能處理16路外部接點(diǎn)狀態(tài)量,但依據(jù)此電路的設(shè)計(jì)思想,進(jìn)行少許更改,就能具備對(duì)32路、64路外部狀態(tài)量的處理能力?!白兓瘷z測(cè)器”在集散控制系統(tǒng)采集終端研制中,取得了良好的應(yīng)用效果。
【參考文獻(xiàn)】
[1]姚琳,等,編.微機(jī)原理與接口技術(shù)[M].清華大學(xué)出版社,2010.
[2]周春來.廣播電視自動(dòng)監(jiān)控技術(shù)[M].中國廣播電視出版社,2009.
[3]閻石主,編.數(shù)字電子技術(shù)基礎(chǔ)[M].高等教育出版社,2006.
[4]何小艇.電子系統(tǒng)設(shè)計(jì)[M].浙江大學(xué)出版社,2001.
[5]謝自美,主編.電子電路設(shè)計(jì)、實(shí)驗(yàn)、測(cè)試[M].華中科技大學(xué)出版社,2000.
[責(zé)任編輯:楊玉潔]