背景
控制系統一般檢測物理量的變化或開關、按鈕的狀態,再根據一定的控制邏輯,輸出相應的控制信號,驅動執行機構。為了提高控制的精度,實際上這個過程是不斷循環進行的,即採用所謂的閉環反饋控制方式。例如,一個採用液壓缸的位置控制系統,需要不斷檢測液壓缸的位置或行程,根據PID控制邏輯,輸出控制信號控制電磁閥或伺服閥的開口度,調節液壓缸運動的速度。液壓缸運動速度與位置偏差有關,偏差越小,速度越低,最終將液壓缸位置控制在指定的精度範圍內。只要液壓缸的位置發生變化,輸出控制信號也會變化。
控制對象的物理參數類型較多,如位置、溫度、速度、壓力等,必須通過相應的感測器將這些物理量的變化轉換成電信號的變化,才能傳送給計算機系統進行檢測。控制精度的高低與感測器的檢測精度密切相關。
對於特定的計算機系統而言,電信號的輸入類型和範圍基本是固定的,為了規範化統一化,往往對感測器輸出的各類信號還需要進行調理處理,轉換成計算機系統能夠輸入的電信號。因而大多數感測器輸出的信號經過二次儀表(放大、調理、轉換),再傳送給計算機。
檢測的電信號由於收到外部干擾的影響,往往不能真實反映物理量的變化,為此,需要對檢測的信號進行必要的處理,去偽存真,從而提高控制精度。
控制信號
控制信號是計算機系統實施各類動態操作時生成的信號,多數控制信號由CPU生成,但其他功能部件也可能生成部分控制信號,以配合CPU完成較複雜的操作。在操作暫存器時,CPU產生的控制信號只在CPU內部作用於所操作的暫存器,不會出現在控制匯流排上;在操作外部存儲單元時,包括記憶體單元和連線埠,CPU產生的控制信號會出現在控制匯流排上。在這裡,我們將最基本、最重要、最常見的控制信號做一個介紹。
時鐘信號
時鐘信號是一種周期性的方波信號,它是最基本的控制信號,也是產生時序過程的必要條件。圖中給出了時鐘信號的一般形式,橫坐標軸為時間軸,縱坐標軸為信號的幅度軸。時鐘信號的周期稱為時鐘周期,其頻率稱為時鐘頻率,一個時鐘周期通常被稱為一個節拍。
時鐘信號一般由晶體震盪片產生的周期信號經過整形、分頻後得到,一個計算機系統內,生成的時鐘信號只有一個,所有功能部件都會通過控制匯流排接收到這個信號,並以此信號為時間基準,進行有條不紊的工作。這就好像一個有周密規劃的公司一樣,在啟動一個項目後,對每位工作人員都安排了工作任務,但這些工作任務是有先後的,後面的任務需要等待前面的任務完成後才能進行,閃此,每位工作人員都要按照給定的時間限制來完成任務。那么,按照什麼時間來作為標準呢?在公司里,採用的就是當地時間,例如在中國,我們採用台北時間;類似地,在計算機系統模型中,時間基準就是時鐘信號,在啟動一個時序過程後,各功能部件按照約定好的節拍完成各自的操作,這就保證了計算機系統能夠有條不紊地工作。
讀/寫信號
讀信號和寫信號是兩種控制信號,但它們通常搭配在一起使用,因此將它們放在一起介紹。當CPU需要讀取對某一存儲單元中的數據時,它會產生讀信號,並施加在相應的功能部件上;當CPU需要向某一存儲單元保存數據時,它會產生寫信號,並施加在相應的功能部件上。對於8086/8088 CPU晶片,針對暫存器、記憶體單元、連線埠的讀寫信號是不同的控制信號,但讀/寫信號在不同的系統中定義也有區別。總的來說,讀信號針對存儲單元的讀操作,寫信號針對存儲單元的寫操作,這一特徵對任何計算機系統都適用。
片選信號
片選信號是一種特殊的控制信號,它足CPU針對外部存儲單元進行讀寫操作時產生的,但它是由地址匯流排的高位地址生成的,而非來自於控制匯流排的信號。物理地址中的高位地址用於區分不同的記憶體晶片或設備接口。這種區分在硬體上就是通過片選信號來實現的,片選信號是依靠地址解碼器生成的,其生成原理如圖所示。
在圖中,若地址解碼器的輸入為卯位輸入,則輸出為2 位,圖中以3位輸入為例。假設地址解碼器的輸人為3位高位地址,那么這3位高位地址可以理解為不同記憶體晶片或不同設備接口的編號,地址解碼器將高位地址解碼後,選通編號對應的輸出線路,而其餘輸出線路則處於未選通狀態。
例如,圖中,輸入編號“010”,則選通第2號輸出線路,使之輸出“1”,而其餘輸出線路均輸出“0”。這裡輸出線路編號是從第0號開始的,右側為低編號輸出。這些輸出線路上的信號便是片選信號,它們分別連線到不同記憶體晶片或不同設備接口的片選端,只有當相應片選信號有效後,記憶體晶片或設備接口才會接受CPU的讀寫操作。由於在任意時刻,只有一個記憶體晶片或設備接口被選中,因此,在任意時刻,只有一個記憶體晶片或設備接口能接受CPU的讀寫操作。中斷請求/中斷回響信號
中斷請求與中斷回響信號是一對控制信號,要完成完整的中斷過程,這兩個信號缺一不可。在現代計算機系統中,很多外部設備都屬於中斷型設備。最典型的中斷型設備為鍵盤、滑鼠等低速輸入設備。在沒有鍵盤、滑鼠輸入的情況下,CPU不會訪問它們的設備接口,而是執行系統程式或應用程式,僅當發生輸入事件時,設備接口才會通過控制匯流排向CPU傳送中斷請求信號。注意,多數控制信號都是由CPU通過控制匯流排發出,其他功能部件只是接收相應的控制信號,但中斷請求信號是例外的情況,它由中斷型設備發出,由CPU接收。實質上,中斷請求信號應屬於外部設備的狀態信號,而控制匯流排的全稱也應當是控制/狀態匯流排,包括CPU傳送給其他功能部件的控制信號和其他功能部件向CPU傳送的狀態信號。如果沒有在CPU內部設定中斷禁止,那么CPU在執行完當前指令後,會暫停當前程式的執行,並向控制匯流排發出中斷回響信號,提出中斷請求的設備接口接收到中斷回響信號後,會向數據匯流排傳送中斷類型號,CPU則從數據匯流排接收中斷類型號,並以此在記憶體中定位中斷服務程式,執行中斷服務程式調用,從而完成與設備接口的數據交換。除輸入設備外,輸出設備也叮能採用中斷方式與CPU互動,並且,除數據交換可以採用中斷方式外,設備出現故障需要CPU處理時也可以向CPU提出中斷請求。
時序過程
時序過程是指計算機系統中按照既定時間順序、分步驟完成的動態操作過程。指令的執行過程屬於時序過程,並且也是計算機系統中主要的時序過程‘,但並不是全部,例如中斷過程就不屬於指令執行的範疇。結合前面介紹的基本控制信號,在計算機系統模型中給出一種最基本的時序過程,應由此建立對時序過程理解的基礎,並在將來學習指令系統時.有意識地分析指令執行時可能的時序過程,以加深對指令執行的理解。
讀/寫操作是指令執行或其他時序過程中經常執行的,它本身也構成一個基本的時序過程。我們下面將分析CPU讀取記憶體單元的時序過程。注意,這裡給出的時序過程不針對任何一種具體的CPU晶片,只是一種概念性的說明。我們應當在此時序過程的分析中有意識地體會其順序性、步驟性。系統設計把讀操作分解為若干個步驟,每個步驟都能在一個節拍的時間內完成執行,下面分節拍列出各個步驟的操作。
(1)第一個節拍:CPU將記憶體單元的物理地址傳送到地址匯流排。
(2)第二個節拍:地址匯流排上信號穩定,等待片選信號的產生;CPU將讀控制信號傳送到控制匯流排。
(3)第三個節拍:控制匯流排上的讀信號已穩定,片選信號已產生並穩定;相應記憶體晶片被選通,低位地址信號進入記憶體晶片,記憶體晶片執行針對指定記憶體單元的讀操作。
(4)第四個節拍:記憶體晶片讀操作執行完畢,記憶體單元中的數據傳送到數據匯流排。
(5)第五個節拍:數據匯流排上的信號穩定,CPU將數據匯流排上的數據寫入到暫存器。
從上面的例子中,我們應當認識到,任何時序過程所消耗的時間都是節拍的整數倍。對於寫操作的時序過程,可以自己根據對讀操作時序過程的理解來構造。在介紹中斷請求/中斷回響信號時,已對中斷過程大致作了說明,讀者可以進一步將其分割為以節拍為單位的步驟,構造出中斷時序過程。
機器指令系統
機器指令的概念在前面的章節中已經多次提到,對其概念,這裡再重新歸納一次。機器指令實質上是一種二進制編碼,不同編碼對應不同的指令功能。機器指令除了指明操作類型外,還包含了對運算元的定址方式或運算元本身等信息。通常,一條完整的機器指令分為操作碼欄位、定址方式欄位、立即數欄位和位移量寧段幾個部分,各欄位占據的二進制位數因指令而異,如圖所示。在具體韻機器指令中,除操作碼欄位是每種指令都必須具有的欄位外,可能並不會包含上述所有的欄位。
操作碼欄位用於標識指令功能,例如,加法指令、減法指令、邏輯與指令等等。定址方式用於表示指令所使用的運算元使用何種定址方式,例如,暫存器定址、存儲器定址等等。立即數欄位用於提供運算元本身,位移量欄位用於提供存儲單元的地址分量。機器指令格式在不同的計算機系統中各不相同,同類指令執行的時序過程在不同系統中也各不相同。某一計算機系統的機器指令全集稱為該計算機系統的機器指令系統。機器指令的執行分為讀取指令、解釋指令、執行指令幾個步驟,這幾個步驟都是通過時序過程來完成的,執行指令僅是指令執行過程的其中一個組成部分。
彙編指令實質上是機器指令的助記版本,由於使用英文助記符,它比機器指令更加容易記憶。但是值得注意的是,大多數彙編指令的格式都是從機器指令格式演化而來的,而不是隨意定義的,而機器指令格式又是與CPU中指令解碼器的設計對應起來的。
常見的控制信號
時鐘
用來同步各種操作。
復位
初始化所有部件。
匯流排請求
表示部件需要獲得的使用權。
匯流排允許
表示需要獲得匯流排使用權的部件已獲得了使用權。
中斷請求
表示部件提出中斷請求。
中斷回響
表示中斷請求已被接收。
存儲器寫
將數據匯流排上的數據寫至存儲器的指定地址單元內。
存儲器讀
將指定存儲單元中的數據讀到數據匯流排上。
I/O讀
從指定的I/O連線埠將數據讀到數據匯流排上。
I/O寫
將數據匯流排上的數據輸出到指定的I/O連線埠內。
傳輸回響
表示數據已被接收,或已將數據送至數據匯流排上。
控制信號及其實現
機電控制系統的主要控制對象是電動機、液壓缸等執行機構,其控制形式多樣,控制系統需要針對具體的控制對象輸出相應控制信號。
控制信號的類型
根據機電系統控制對象的不同,控制信號可以分為四大類:模擬信號、數位訊號、開關信號和脈衝信號。
模擬信號
所謂模擬量信號,是指採用不同的電信號大小表示控制信號的大小,如電動機控制中,用一10V~+10V的電壓表示一1000~+1000r/min的轉速,電壓信號的每一個數值都代表不同的轉速輸出。模擬量信號的取值是連續的。
計算機系統內部採用數字方式存儲、傳輸數據,如果控制對象需要模擬量的控制信號,則必須經過模擬量到數字量的轉換,經D/A轉換後,才可以輸出給控制對象。
模擬量一般採用電壓信號,其電壓範圍如下:一10V~+10V;一5V~+5V;0V~+10V;0V~+5V。
電壓信號隨著控制線路的延長和工作環境的影響,容易衰減或受到干擾,這就限制了控制計算機與控制對象之間的距離,電壓形式的模擬信號只能在較短的距離進行控制。為了克服這個問題,往往還採用電流形式的模擬量控制信號,可以把控制距離延長到100~200m。
電流形式的模擬量範圍如下:0~20mA;4~20mA。其中,以4~20mA電流形式使用最為廣泛。
數位訊號
數位訊號實際上一種離散信號。在一根信號線上,以不同的電壓範圍表示0和l兩種狀態。多根信號線0、1的組合或同一信號線不同時刻0、1的組合形成控制機電對象所需要的數值。
表示0和1的狀態可以採用正邏輯,即低電平表示0,高電平表示1;也可以採用負邏輯,用高電平表示0,低電平表示1。
數位訊號的傳輸方式分成並行和串列兩種:並行傳輸是把不同線路同一時刻的二進制數組合在一起;而串列則是把同一線路不同時刻的二進制數組合在一起,如RS232、RS485、乙太網以及現場匯流排傳輸均是採用串列方式傳輸數字撾控制信號。
計算機系統不同,表示0、1狀態的電信號範圍不同。對於普通的PC、單片機、DSP等,大多採用TTI。電平標準,即o~0.4V的電壓表示0,2.4~5V的電壓表示1;PLC系統則普遍採用24V電壓等級表示數字量的0和1。
數位訊號並行輸出時,可以採用二進制格式,也可以採用BCD碼(包括8421碼和格雷碼),這是由軟體與連線線決定的。
數位訊號採用一定範圍的電壓表示0和1,可以克服模擬量信號易受干擾影響的缺點,能夠提高控制精度。在要求較高的情況下,應該儘量採用數字控制信號。目前,許多感測器的輸出也採用數位訊號。
開關信號
開關信號是針對某一根信號線而言的,其不同電壓範圍表示0、1(或開、關)兩種狀態。上述的並行數位訊號實際就是由多個開關信號組合而成。在許多控制模組或板卡中,並不明確區分開關信號和數位訊號。
如PLC系統的數字模組,單獨的每個數字連線埠可以作為開關信號的輸出,用於控制某個燈或狀態,如某些變頻器的速度設定就是採用2個或3個開關信號選擇內部定義的固定速度;而把它們每8個或16個組合在一起,則可以作為一個位元組或整數數值的輸出。
開關信號具有以下幾種不同的輸出形式:TTL電平輸出;繼電器輸出;集電極開路輸出(OC輸出)。
TTL電平輸出的輸出接點與公共端之間輸出直流電壓,根據輸出電流的大小,可以直接控制一定的負載,如指示燈、電磁閥等。為了保護輸出電路,往往採用光耦隔離措施,即使外部短路,也不會損壞內部電路。
繼電器輸出屬於無源輸出,每個輸出接點相當於一個開關,不能直接帶負載,需要在控制迴路中串接電源。針對負載特點,可以採用直流電源,也可以採用交流電源。因而是一種比較靈活的輸出形式。繼電器輸出的連線如圖所示。
集電極開路輸出時,電晶體的集電極處於開路狀態。當內部電路導致電晶體導通時,輸出接點(端子)與公共端之間為管壓降(0.4V),表示0,當電晶體不導通時,輸出接點處呈現高阻態,其狀態不確定。為此,需要將集電極通過電阻連線到+5V電源,這樣,當電晶體不導通時,電源通過電阻、負載與地形成一個迴路,輸出接點(集電極)處電壓即為電阻與負載分壓的電壓,只要超過2.4V,就可以表示1。採用的電阻稱為上拉電阻,其阻值的大小決定了帶負載的能力。集電極開路輸出的連線如圖所示,集電極開路輸出開關量信號,當內部輸出高電平時,光耦導通,使得電晶體也導通,輸出接點處呈現低電平,為0;而當內部輸出低電平時,光耦隔斷,電晶體不導通,輸出接點呈現高電平,為1。套用集電極開路輸出開關量,給輸出暫存器傳送控制數據時,應採用負邏輯,希望輸出1時,實際傳送0。
脈衝信號
脈衝信號是以某個線路上脈衝數量的多少表示控制數據的大小,如第3章介紹的步進電動機控制,一個脈衝代表電動機旋轉一個步距角。
脈衝信號可以採用開關信號實現,按照指定的時間間隔輸出高電平和低電平形成需要的脈衝序列,也可以採用專門的定時器實現脈衝輸出。
控制信號的實現
採用計算機實現機電系統控制,要求具備模擬信號、數位訊號、脈衝信號等的輸入輸出處理能力。
普通微機可以通過串列口、印表機進行簡單的數位訊號輸入輸出,對於大多數機電控制系統來說,則需要通過板卡擴充其模擬量、數字量通道。根據匯流排不同,具有ISA、PCI和USB等類型的板卡。
提供輸入輸出板卡的供應廠家很多,主要有美國國家儀器(NI)、研華、菱華、研祥、康拓、中泰、嘉兆、阿爾泰等公司。
1)PCL818:16路12位模擬量輸入,32路TTL電平數字量輸入輸出。
2)PCL833:3路24位正交編碼計數。
3)PCL836:6路獨立計數器,32路TTL電平數字量輸入輸出。
4)PCL725:8路繼電器輸出,8路光隔數字量輸入。
5)PCL711B:8路12位模擬量輸入,1路12位模擬量輸出,32路TTL電平數字量輸入輸出。
6)PCL726:8路12位模擬量輸出。
7)PCL730:32路TTL電平數字輸入輸出。
8)PCIl713:32通道12位隔離模擬量輸入卡。
9)PCIl716:16路16位模擬量輸人,2路16位模擬量輸出,32路TTL電平數字量輸入輸出,1路16位計數器。
10)PCIl784:4軸正交編碼計數。
11)PCIl753:96/192位數字量I/O卡。
12)PCIl781:8通道計數器/定時器卡。
13)USB4711A:16路12位模擬量輸入,2路12位模擬量輸出,16路TTL電平數字量輸入輸出,1路32位計數器。
14)USB4716:16路16位模擬量輸入,2路16位模擬量輸出,16路TTL電平數字量輸入輸出,1路32位計數器。
15)USB4718:8路熱電耦輸入。
16)USB4751:48路TTL電平數字量輸入輸出。
17)USB4761:8路繼電器輸出,8路光隔離TTL電平數字量輸入
其中,PCLxxx為ISA匯流排板卡、PCIxxxx為PCI匯流排板卡,USBxxxx為USB匯流排板卡。PCL833和PCL836卡在電動機的運動控制中套用較多,一般採用PCL833檢測電動機編碼器的正交編碼脈衝,採用PCL836輸出脈衝控制電動機(伺服電動機或步進電動機)。
PCL836卡可以提供如下功能:6個指定頻率的脈衝輸出;3個PWM脈衝輸出;6個高速計數;16個數字輸入口;16個數字輸出口。其中頻率脈衝輸出和PWM脈衝輸出需要利用同樣的硬體資源,不能同時使用。
研華公司的所有板卡驅動採用設備管理器進行,其輸入輸出函式基本一致。
研祥公司的I/O控制板卡
研祥公司是中國深圳的工業自動化產品製造商,其生產的模擬量、數字量、脈衝量板卡大多數與研華公司的產品兼容。研祥公司的PCL711B、PCL725、PCL726、PCL833、PCL836卡等與研華公司的同型號產品兼容,但其提供的驅動程式不同,編程方法也不一樣。研祥公司的控制板卡主要以控制項形式提供Windows平台下的編程接口。研祥的PCI輸入輸出板卡主要有:
1)PCI一64AD:64通道12位模擬量輸入、16路TTL電平數字量輸入輸出。
2)PCI一144DIO:144路TTL數字量輸入輸出。
3)PCI一16P16R:16路繼電器輸出,16路隔離數字量輸入。
阿爾泰公司的I/O控制板卡
阿爾泰公司是中國北京的工業I/O產品製造商,其產品系列包括ISA、PCI、USB匯流排的模擬量、數字量、脈衝量的輸入輸出,價位較為低廉。阿爾泰公司的產品提供Windows平台下VB、VC、Delphi以及LabView的驅動,接口函式簡單方便。阿爾泰公司的工業控制板卡產品主要有:
1)BHSl05:8路12位模擬量輸入,2路模擬量輸出。
2)BH5118C:32路12位模擬量輸入。
3)BH5200:9路16位計數器,32路TTL電平數字量輸入輸出。
4)PCI2001:32路16位100K高速光隔離模擬量輸入。
5)PCI2003:16路12位模擬量輸入,2路12位模擬量輸出,32路TTL電平數字量輸入輸出。
6)PCI2007:4路16位模擬量輸出。
7)PCI2304:8路12位模擬量輸出。
8)PCI2307:16路繼電器輸出,16路隔離TTL電平數字量輸入。
9)PCI2310:32路OC數字量輸出,32路隔離TTL電平數字量輸入。
10)PCIl020:4軸運動控制卡。包括:4路脈衝輸出,4路32位正交編碼計數,32路光隔離數字量輸入,32路光隔離數字量輸出。
11)USB2310:32路12位模擬量輸入,32路TTL電平數字量輸入輸出。
12)USB2810:32路12位模擬量輸入,16路TTL電平數字量輸入輸出,3路16位定時計數器。
BHXXXX為ISA匯流排的板卡。