?

實現狀態量變化檢測的中斷技術研究

2016-04-26 21:59張彥文
科技視界 2016年10期
關鍵詞:自動檢測控制系統中斷

張彥文

【摘 要】本文給出了一個在以計算機為核心的控制系統中,采用中斷處理方法實現輸入狀態量變化自動檢測的電路的設計方案。該電路可以自動檢測發生變化的狀態位,對發生變化的狀態位的序號進行編碼,并以中斷請求的方式,將變化狀態位的序號編碼通知處理器。處理器根據狀態位的序號編碼,可快速確定變化的狀態量信號,從而可極大地提高處理器狀態量檢測的效率。電路簡單、實用,具有很高的使用價值。

【關鍵詞】控制系統;狀態量快速處理;自動檢測;中斷

0 前言

工業或礦業生產系統是一個非常復雜、多元的產業,涉及到多種不同的生產過程。如何有效地管理各個過程與系統,需要將生產過程中產生的過程數據以實時互動的方式傳遞給現場設備操作人員及生產管理人員,從而實現對生產過程的規劃、控制和優化。如何快速的采集系統中大量設備的運行及現場工況狀態量信號,是以計算機為核心的工業、礦業自動化系統的一個重要問題。常用的處理方法是采用CPU處理器毫秒級的計時器中斷,周期性的檢測狀態量的變化與否,這將會消耗大量的處理器時間。因為多數情況下狀態量變化的頻度較低,CPU處理器的中斷處理檢測到狀態量變化的機會也是較低的,導致CPU處理器多數時間都在進行無用的狀態巡檢,浪費了大量的處理器時間。

本文設計了一種以計算機中斷處理技術實現輸入狀態量變化自動檢測的數字輸入電路,該電路被稱之為“變化檢測器”。電路的主要功能為當外部接點的狀態量變化時,“變化檢測器”向CPU處理器產生外部中斷請求,并將變化的狀態量的位序號進行編碼,將編碼發送給CPU處理器。CPU處理器根據位序號編碼,可快速確定變化的狀態量信號,從而極大地提高CPU處理器的處理效率。如在16路狀態量信號中,第6位狀態位發生了變化,“變化檢測器”電路產生中斷請求,并對發生變化的狀態位的序號“0101”(二進制)進行編碼。

1 電路邏輯設計

“變化檢測器”電路可自動檢測外部接點的狀態量改變與否。當檢測到外部狀態量發生改變時,將變化的狀態量的位序號信息進行編碼,并主動向CPU處理器發出外部中斷請求,CPU處理器響應中斷請求。中斷處理程序根據中位序號編碼信息,可以快速地確定變化的狀態量的位置。

理論上講,“變化檢測器”的原理較為復雜,且要將這個原理變成實用的應用電路,需要有多種功能的邏輯部件支持。這些功能部件包括狀態位邊沿變化檢測用“鎖存器”和“異或門”電路;狀態位同時變化的優先級判別電路;狀態位變化保持寄存器和位序號編碼電路;中斷發生電路;接點狀態量變化與CPU處理器讀取訪問同時發生時的調停判別電路等。

圖1給出的是可進行16路外部接點狀態量變化自動檢測電路“變化檢測器”的硬件原理圖。該電路是以可編程邏輯器件PAL22V10為核心,結合RAM存儲器 IDT6167、多路選擇器74HC257、與門器件74HC00、或門器件74HC32、D鎖存器74HC74、JK鎖存器74HC109、驅動電路74HC244等器件構成的。其工作原理如下:外部接點狀態ID0~ID15經過兩片74HC257將16個狀態信號分成兩個8位信號組,在IC4器件(PAL22V10)的時序控制下,與存儲在RAM器件IC1中接點的“原”狀態逐位比較。當比較結果不同時,IC4器件則停止比較,保存當前變化狀態位的位序號C1~C4于數據緩存器IC5(74HC244),并激活中斷鎖存器IC10A(74HC109),產生中斷請求。當CPU處理器響應中斷后,發出數據讀取命令/CDRD,從數據緩存器IC5中讀出變化的位序號CD0~CD7,同時由鎖存器件IC11(74HC74)構成的中斷應答電路,來清除中斷鎖存器IC10A的中斷請求,重新啟動IC4器件,繼續進行狀態位比較。IC4是“變化檢測器”電路的控制核心,電路檢測和控制時序是由此器件內部邏輯產生。IDT6167是16Kx1Bit的CMOS靜態RAM,存儲外部接點的“原”狀態。D鎖存器74HC74、JK鎖存器74HC109構成中斷請求電路和應答電路。

該電路由常用器件組成。其中用到了兩個關鍵器件。一個是CMOS靜態RAM存儲器IDT6167。IDT6167是一個高速靜態存儲器RAM,容量為16Kx1Bit,訪問速度為15ns,完全可以滿足狀態量變化的快速、實時檢測要求。另外,IDT6167的輸入、輸出都是TTL電平兼容,單5V電源供電,可極大的減化系統的設計。IDT6167存儲器的數據寬度為1位,非常適合于存儲以“位”為單位來表示的狀態量,因此,在“變化檢測器”電路中,它被用作狀態量的“記憶”單元。由于 “變化檢測器”電路具有16路狀態量的檢測能力,因此,IDT6167僅需要配置四根地址線;另一個器件為可編程器件PAL22V10,它是“變化檢測器”電路的核心。PAL22V10的編程邏輯內含有一個5位計數器、8選1多路選擇器、鎖存器等,以產生“變化檢測器”電路的控制邏輯和時序。IDT6167存儲器的讀寫、變化比較、中斷產生等操作,都是在可編程器件PAL22V10的邏輯控制下自動完成。其內部邏輯使用硬件描述語言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的控制邏輯較為復雜。圖2為PAL22V10產生的電路控制時序圖。其中C1~C4位計數器信號,/SAV位初始狀態存儲標志,NDI為變化狀態位的當前值,CD為狀態位變化檢出信號,INT(/EN)為中斷請求(終止計數器)信號,/WE為IDT6167寫入信號,/ACK為中斷應答信號。

2 電路動作分析

在圖1所示的邏輯圖中,PAL22V10內部計數器C1~C4在狀態檢查中起著非常重要的作用。按照PAL22V10內部計數器的狀態位序號,逐次掃描各個輸入狀態位,以檢測每個外部接點的“原”狀態(存儲在RAM中)與“新”狀態的差異。

從圖2時序可以看出,計數器C1~C4對應計數值(0~15),分別對應了16個狀態位序號。當/RST復位后,C1~C4從0開始計數,直至計數值達到15的這段時間內,電路將外部接點的16個狀態的初始值寫入到IDT6167存儲器中。此后,/SAV信號變為低電平“L”,終止IDT6167的寫入操作。如果某個狀態位發生了改變,狀態位變化檢出信號CD變為高電平,此信號置位IC10A鎖存器,向CPU處理器產生中斷信號INT和存儲器寫入信號/WE,將變化的狀態位的“新”值寫入IDT6167存儲器中,并產生/EN信號,停止PAL22V10內部計數器的計數。此時,PAL22V10內部計數器C1~C4的內容就是變化狀態位的序號編碼。

CPU應答中斷時,通過/CDRD信號,使能IC5,讀取變化的位序號編碼CD0~CD7后,復位IC11A鎖存器,發出中斷應答信號/ACK,清除器件IC10A的中斷請求信號INT,重新啟動PAL22V10內計數器的計數動作。由于利用位序號編碼CD0~CD7就可以知道變化狀態位的具體位置,所以軟件處理就相當容易了。IC1器件IDT6167具有16Kx1Bit的存儲容量。因為“變化檢測器”電路的處理能力為16路狀態量,所以僅使用了IDT6167器件的16個物理存儲單元,用于保存外部接點的“原”狀態信息。PAL22V10內部計數器C1~C4用作IDT6167存儲器的地址線。在進行狀態位比較操作時,計數器C1~C4的內容決定了當前正在進行比較的狀態位的序號。從IDT6167存儲器中讀出C1~C4對應的狀態位“原”信息DO,與提供給IC4器件的外部狀態信息X0~X7,進行對位比較。每次比較操作,都會發生一次存儲器讀取,所以,IDT6167存儲器發生讀取操作遠多于寫入操作的次數。IDT6167存儲器的寫入操作只在下列的兩種情況下才會發生。一是,系統發生復位后,直至/SAV信號變為低電平“L”前,16個狀態位初始信息的寫入;二是,當電路檢出變化的CD信號變為高電平“H”時,發生變化的狀態位對應的RAM存儲單元的“新”狀態位信息的寫入。IC2和IC3是多路選擇器,由PAL22V10內部計數器的C4信號進行控制。當計數器的C4信號為“L”時,將外部接點的ID0~ID7提供給IC1的X0~X7。當計數器的C4信號為“H”時,將外部接點的ID8~ID15提供給IC1的X0~X7。CPU響應中斷時,通過讀取CD0~CD7可獲得變化狀態位的序號信號,也可以通過ID0~ID15,直接獲得外部接點的狀態信息。這兩個信息結合起來,可以快速確定變化狀態位的當前狀態值。

3 應用接口說明

“變化檢測器”作為外部接點變化自動檢測的核心電路,具體使用時,需要提供必要的接口電路和控制信號。這些信號包括:

(1)輸入信號

復位信號/RST;

時鐘信號CLK;

讀信號/CDRD;

外部狀態信號ID0~ID15。

(2)輸出信號

中斷請求信號INT;

變化位的序號編碼信號CD0~CD7。

特別要說明的是,當使用“變化檢測器”時,在不同的應用場合,要求電路響應外部接點狀態變化引發的中斷的情形也會差異。這些可能的情形包括:接點ON(合)時請求中斷;接點OFF(分)時請求中斷;接點ON/OFF(合/分)時請求中斷;為此,“變化檢測器”設置了跳線JP+和JP-。按照圖3的設置,就可以使電路滿足不同應用場合下,狀態量檢測的中斷要求。

4 結論

本文給出的“變化檢測器”都是由常用的、廉價的基本電路組成。電路邏輯清晰,實現容易,且設計思路獨特新穎,具有極高的技術參考和推廣應用價值。雖然電路設計僅能處理16路外部接點狀態量,但依據此電路的設計思想,進行少許更改,就能具備對32路、64路外部狀態量的處理能力?!白兓瘷z測器”在集散控制系統采集終端研制中,取得了良好的應用效果。

【參考文獻】

[1]姚琳,等,編.微機原理與接口技術[M].清華大學出版社,2010.

[2]周春來.廣播電視自動監控技術[M].中國廣播電視出版社,2009.

[3]閻石主,編.數字電子技術基礎[M].高等教育出版社,2006.

[4]何小艇.電子系統設計[M].浙江大學出版社,2001.

[5]謝自美,主編.電子電路設計、實驗、測試[M].華中科技大學出版社,2000.

[責任編輯:楊玉潔]

猜你喜歡
自動檢測控制系統中斷
基于STM32的室內有害氣體自動檢測與排風系統
光電傳感器在自動檢測和分揀中的應用
基于TestStand的自動檢測程序開發
跟蹤導練(二)(5)
千里移防,衛勤保障不中斷
K-F環自動檢測系統設計
AT89C51與中斷有關的寄存器功能表解
FPGA內嵌PowerPC的中斷響應分析
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合