鐘孟輝,郭烈恩,沈 川
(南昌大學機電工程學院,江西南昌 330031)
ISA總線是IBM PC總線基礎(chǔ)上發(fā)展起來的,IBM公司在PC總線的基礎(chǔ)上增加了一個36引腳的AT擴展槽而形成AT總線[1]。雖然ISA總線目前已很少見,但由于基于該總線的接口電路對布線的要求沒有PCI總線板卡那么高,所以在ISA總線上開發(fā)接口電路目前仍是人們首先考慮的方法。
在高速走絲電火花線切割系統(tǒng)中,常采用以步進電機為主要部件的開環(huán)位置控制系統(tǒng)。這種系統(tǒng)因結(jié)構(gòu)簡單,調(diào)試、維修、使用方便,成本低廉而在高速走絲機中得到了廣泛的應(yīng)用[2]。目前這種控制系統(tǒng)中,環(huán)形分配器一般采用軟件分配脈沖或用專用芯片如CH 250來實現(xiàn)對步進電機的控制。用軟件來實現(xiàn)脈沖的分配將占用上位機過多的資源,降低了計算機的運行效率,而且快速響應(yīng)也受到了影響。若用專用芯片來實現(xiàn)對步進電機的控制,則控制方式不夠靈活,所以其使用也受到一定的限制。本文以工控機為上位機、51單片機為下位機,采用ISA總線實現(xiàn)上位機和下位機間的通信。上位機實現(xiàn)插補計算,通過ISA總線把插補脈沖傳給下位機,由下位機實現(xiàn)對脈沖的分配。這種控制方法靈活、占用上位機時間少、適用范圍廣、通用性強。這種控制方式每個控制卡可同時完成多個步進電機的控制,便于完成3軸及以上控制要求的應(yīng)用。
整個系統(tǒng)主要包括上位機、譯碼和鎖存電路、51單片機三部分組成(圖1)。上位機主要負責插補計算,ISA接口電路和譯碼鎖存電路負責上位機和下位機之間的通訊,下位機即51單片機主要負責脈沖分配,實現(xiàn)對步進電機的控制。
圖1 接口電路的組成部分
本系統(tǒng)中只使用了 ISA總線中的A 0~A 9 10位地址總線來表示I/O空間,其I/O端口地址僅為000H~3FFH共1 kB,其中前512個地址(000H~1FFH)被主板上的I/O接口使用,其余200H 3FFH為插在擴展槽中的I/O通道使用,其中還有部分被通用的外部設(shè)備使用[3]。
因此在進行控制卡設(shè)計時,只能選用系統(tǒng)和用戶都沒有使用的I/O端口地址,通常用戶可使用300H~31FH地址,這是IBM PC系列微機留作實驗板用的地址。在本系統(tǒng)中選用300H作為控制卡的基地址,高位地址A 9~A2經(jīng)74HC688譯碼產(chǎn)生片選信號(300H)。采用74HC373對低位地址A 0、A 1進行鎖存,供單片機讀取,這樣本控制板的地址范圍即300H~303H。
本文采用74HC245進行總線隔離,以實現(xiàn)在外設(shè)不使用總線的時候,能及時釋放總線,讓其他設(shè)備可以使用總線。用基地址譯碼結(jié)果(300H)接74HC245的OE端,這樣只有CPU選中控制板地址時,245芯片才處于導(dǎo)通狀態(tài)。用I/OR接245芯片的DIR端。當CPU從外設(shè)讀入數(shù)據(jù)時I/OR為低電平,245芯片的導(dǎo)通方向為從B到A,其他狀態(tài)則保持從A到B的導(dǎo)通狀態(tài)。
由于CPU的速度要比下位機(51單片機)快得多,為了保證CPU的正常運行和數(shù)據(jù)的正確傳輸,本系統(tǒng)采用74HC373對數(shù)據(jù)總線進行鎖存,以解決高速的CPU和低速外設(shè)之間的矛盾。如圖2所示,373芯片的OE端接I/OR的反相電平。因為D0D7接在單片機的P0口上如圖3所示,當單片機向上位機傳輸數(shù)據(jù)的時候,373的輸出端應(yīng)處于高阻狀態(tài)。373芯片的鎖存允許端LE必須保證當上位機向下位機傳輸數(shù)據(jù)的時候處于導(dǎo)通狀態(tài),即LE應(yīng)為高電平,而在上位機數(shù)據(jù)傳輸周期結(jié)束之前對數(shù)據(jù)進行鎖存,以供單片機讀取。即LE應(yīng)在數(shù)據(jù)傳輸周期結(jié)束之前變?yōu)榈碗娖健?/p>
圖2 鎖存和譯碼電路
圖3 下位機電路
本系統(tǒng)上位機的運行環(huán)境是Window s XP系統(tǒng),但Window s對系統(tǒng)底層的操作采取了屏蔽的政策,因此在涉及底層操作時就要深入到Window s的內(nèi)核去編寫屬于系統(tǒng)級的設(shè)備驅(qū)動程序[4]。在本系統(tǒng)中采用Win Io庫的函數(shù)對 ISA接口進行讀寫操作,WinIo庫通過使用內(nèi)核模式下設(shè)備驅(qū)動程序和其他一些底層編程技巧繞過Window s安全保護機制,允許32位Windows程序直接對I/O進行操作。采用SetPortVal()和GetPortVal()兩個函數(shù)來對I/O進行讀寫操作。
如圖3所示,當上位機向300H~303H輸出數(shù)據(jù)時,由基地址片選信號和寫控制信號合成的信號就會觸發(fā)單片機的外部中斷0(INT0)。這時單片機就迅速讀取P2.0和P2.1的地址信號,確定上位機發(fā)送的控制對象(300H~303H分別對應(yīng)X、Y、U、V 4軸);然后再讀取P0口的數(shù)據(jù),決定脈沖個數(shù)和脈沖方向;最后由P1口通過光電隔離元件向步進電機驅(qū)動電路發(fā)送各軸步進電機的進給脈沖信號和方向脈沖信號,脈沖寬度由單片機采用定時器0以中斷的方式來設(shè)定。當步進電機轉(zhuǎn)到預(yù)定角度后,由反饋端Xback、Yback向單片機發(fā)送就緒信號,以便接收下一個進給脈沖。
本控制系統(tǒng)已運用在高速走絲電火花線切割機床上,實踐證明其具有控制靈活、安全可靠、抗干擾能力好等優(yōu)點。在此接口電路的基礎(chǔ)上,還可開發(fā)各種帶有中斷功能的更復(fù)雜的控制板,如可將線切割間隙控制系統(tǒng)也集成到該接口電路中來。
[1] 蔣志峰,蔣偉峰,劉濟林.基于ISA總線接口電路的設(shè)計及研究[J].實驗室研究與探索,2000(1):82-86.
[2] 秦憶.現(xiàn)代交流伺服系統(tǒng)[M].武漢:華中理工大學出版社,1995.
[3] 王力虎,李紅波.PC控制及接口程序設(shè)計實例[M].北京:科學出版社,2004.
[4] 楊強,李秋堂.Win9X虛擬設(shè)備驅(qū)動程序編程指南[M].北京:清華大學出版社,1999.
[5] 李慧君.基于ISA總線電火花線切割脈沖電源的研究[D].哈爾濱:哈爾濱理工大學,2007.
[6] 戴向國,傅水根,王先逵,等.基于ISA總線的步進電機控制卡設(shè)計[J].機械與電子,2001(5):31-32.
[7] 陳云,閆如鐘,陳明.基于 ISA總線的步進電機控制器軟硬件實現(xiàn)[J].組合機床與自動化加工技術(shù),2002(7):64-65.