摘? 要: 介紹變頻器專用仿真器的設(shè)計開發(fā)。硬件設(shè)計方面,介紹了芯片的選擇,重點論述三對PWM波形發(fā)生器、保護(hù)電路和信號輸入輸出電路,并選擇并口與上位機(jī)通信;軟件設(shè)計方面,仿真器與上位機(jī)的通訊使用同步串行通訊(SPI),軟件依據(jù)此通訊協(xié)議而設(shè)計,使用32位命令-地址-數(shù)據(jù)方式。此仿真器也可直接用于變頻控制,實際使用證明,此仿真器優(yōu)于其它通用型仿真器。
關(guān)鍵詞: 變頻器? 仿真器? PWM波形
?
市面上各種仿真器應(yīng)有盡有,但這些仿真器是通用性的,對于使用8XC196MC作為變頻器專用芯片的開發(fā)人員來說,卻并不那么好用,甚至有一定的障礙,因為仿真器的有些端口已被仿真系統(tǒng)使用,用戶就不能再使用這些端口。
下面依據(jù)變頻器開發(fā)的一些要求設(shè)計簡單好用的8XC196MC仿真器,重點是三相波形發(fā)生器(WG)及保護(hù)(EXTINT)電路8XC196MC和其他的芯片比較,一個最顯著的特點是它的WG電路。WG是使8XC196MC適合于電機(jī)控制的主要片內(nèi)外圍電路,其與專用三相波形發(fā)生器芯片HEF4752相似,但它的功能更強(qiáng),使用起來更方便,占用CPU時間更少。WG可產(chǎn)生三對具有同一載波(三角波或正向鋸齒波可選)但占空比各自可編程的PWM波形,每對PWM波形是互補(bǔ)的。其間的死區(qū)時間(不重迭激活時間)、輸出極性和輸出組合均可編程。載波周期和各相的占空比的修改方式以及每個載波周期中斷請求次數(shù)也可編程。當(dāng)被WG驅(qū)動的外設(shè)發(fā)生故障時,其保護(hù)電路立即硬件關(guān)閉WG的輸出,并提出中斷請求。當(dāng)用WG的三對PWM波形(經(jīng)隔離放大)來驅(qū)動三相逆變器時,可實現(xiàn)交流電機(jī)的變頻調(diào)速或其他交直流調(diào)速方案。
1 硬件設(shè)計方案
為了簡化仿真器r 設(shè)計,使用87C196MC作仿真器開發(fā)芯片,這樣可以利用其內(nèi)部的EPROM。內(nèi)部的EPROM可以作為仿真器的監(jiān)控程序(要求正確無誤),外部的RAM可以作為仿真器的用戶程序。內(nèi)部EPROMr 主要任務(wù)是將用戶程序、數(shù)據(jù)送到外部RAM中或從RAM中讀取程序、數(shù)據(jù)因為87C196MC在運(yùn)行內(nèi)部EPROM程序時,外部的P3、P4、P5口可以設(shè)置為I/O口,這樣就可以控制這三個I/O口來控制RAM數(shù)據(jù)的寫入或讀出,此時P3、P4口需要接上拉電阻),在傳送用戶程序時從內(nèi)部EPROM處執(zhí)行程序(將=1后復(fù)位)。傳送完用戶程序后,再從外部RAM處執(zhí)行程序(將=0后復(fù)位)。另外,為了使用方便,使用一個8255作為鍵盤掃描和動態(tài)顯示擴(kuò)展芯片,分配重復(fù)地址0FF00~0FFFF共256個地址空間。8255的PB口用來作為驅(qū)動數(shù)碼管8段碼的信號,PC下口作為驅(qū)動數(shù)碼管4位碼的信號,同時作為鍵盤掃描輸出信號,PC上口其中3位作為鍵盤掃描輸入信號,這樣就有4個動態(tài)顯示的數(shù)碼管和12個鍵組成的鍵盤,已能滿足大部分的開發(fā)要求。8255其余端口可留給用戶擴(kuò)展使用。RAM使用32K(程序數(shù)據(jù)共同占用),地址為0000~7FFF,這樣大的空間已經(jīng)能滿足幾乎所有的開發(fā)應(yīng)用,剩下8000~FEFF的31.75K留給用戶擴(kuò)展使用。
2 仿真器硬件設(shè)計
硬件設(shè)計要求將WG波形發(fā)生器的輸出口(產(chǎn)生三對PWM波形用來驅(qū)動三相逆變器)、A/D轉(zhuǎn)換輸入口(用于反饋電流、反饋轉(zhuǎn)速、電位器電壓設(shè)置、電位器頻率設(shè)置等的輸入)、多功能P2口(用戶可以利用它作一些如電源開關(guān)、報警、轉(zhuǎn)速捕獲及串行通訊等)、保護(hù)電路輸入引腳EXTINT(它和外部中斷共用同一引腳,用來接受外設(shè)的故障信號,并同時提出中斷請求)留給用戶,另外安排鍵盤和顯示(使用8255擴(kuò)展)。為了用戶使用方便,這些口都必須使用標(biāo)準(zhǔn)的接口插槽。仿真器與計算機(jī)進(jìn)行通訊,才能將程序或數(shù)據(jù)寫入或讀自仿真器的RAM,所以仿真器本身需要通訊接口。為了不占用用戶端口,強(qiáng)制使用8位總線方式,這樣就多出了P5.6(BUSWIDTH)和P5.4引腳,如果使用簡單的同步帶時鐘反饋串行通訊方式與計算機(jī)連接,使用計算機(jī)并口(計算機(jī)并口操作簡單,并且有輸出鎖存器,還可以控制、等引腳,與前面的要求相符)與仿真器通訊。由于A/D轉(zhuǎn)換共有13路,一般情況下用戶用不了這么多,所以可以選擇P1.0和P1.1給仿真器通訊使用。
按這樣的方式分配引腳:P1.0——由計算機(jī)到仿真器的主時鐘(CLKI)信號;P1.1——由計算機(jī)到仿真器的數(shù)據(jù)(DI)信號;P5.4——由仿真器到計算機(jī)的數(shù)據(jù)(DO)信號;P5.6——由仿真器到計算機(jī)的反饋時鐘(CLKO)信號。圖1就是儀此而設(shè)計的仿真器框圖。
?
3 仿真器軟件設(shè)計
軟件設(shè)計的主要任務(wù)是完成計算機(jī)和仿真器的通訊,也就是說,要求計算機(jī)的軟件協(xié)議與仿真器的軟件協(xié)議相容。選用同步帶時鐘反饋串行通訊協(xié)議,計算機(jī)為主機(jī),仿真器為從機(jī),這樣就不受延時時間的限制,而且通訊速度可以在一定的范圍內(nèi)可調(diào)。協(xié)議定義如下:
(1) 數(shù)據(jù)格式采用8位無校驗方式;
(2) 從機(jī)一直等待主機(jī)時鐘上升沿;
(3) 在主機(jī)的時鐘上升沿之前,主機(jī)的數(shù)據(jù)已準(zhǔn)備好;
(4) 從機(jī)在接受到主機(jī)的時鐘上升沿后,讀取主機(jī)送來的數(shù)據(jù),將反饋時鐘信號置位(高電平)。主機(jī)在接受到從機(jī)的反饋時鐘信號上升沿后,將主時鐘信號清位(低電平);
(5) 從機(jī)在接受到主機(jī)的時鐘下降沿后,發(fā)送自己的數(shù)據(jù)給主機(jī),然后將反饋時鐘信號清位;
(6)主機(jī)在接受到從機(jī)的反饋時鐘信號下降沿后,讀取從機(jī)送來的數(shù)據(jù);
(7) 這樣就完成了1位數(shù)據(jù)的傳遞,如此重復(fù)第3步到第6步,直到8位數(shù)據(jù)傳完,時序如圖2。
?
另外,使用4字節(jié)命令-地址-數(shù)據(jù)格式。第一字節(jié)是命令字,包括讀、寫和測試命令;第二字節(jié)是高地址;第三字節(jié)是低地址;第四字節(jié)表示要寫入或讀出的數(shù)據(jù)。
仿真器傳送一個字節(jié)數(shù)據(jù)(同時輸出1字節(jié)數(shù)據(jù)和輸入1字節(jié)數(shù)據(jù))算法設(shè)計如下:
(1)寄存器DATAIN存放從計算機(jī)輸入到仿真器的數(shù)據(jù),寄存器DATAOUT存放仿真器輸出到計算機(jī)的數(shù)據(jù),設(shè)置計數(shù)器COUNT=8;
(2) 等待計算機(jī)的主時鐘信號上升沿;
(3)將DATAIN寄存器左移一位,讀取輸入主數(shù)據(jù)電平。如果為1,則DATAIN=DATAIN+1,否則轉(zhuǎn)向4;
(4) 將從時鐘信號置高;
(5) 等待計算機(jī)的主時鐘信號下降沿;
(6) 將DATAOUT左移一位,最高位移入C。如果C為1,則將從數(shù)據(jù)信號置為高電平,否則將其清為低電平,然后將從時鐘信號清為低電平。
(7) 計數(shù)器COUNT=COUNT-1。如果COUNT不為0,則轉(zhuǎn)第2步,否則此子程序返回。
與此相仿,計算機(jī)傳送一個字節(jié)的算法設(shè)計如下:
(1) 設(shè)置計數(shù)器COUNT=8,寄存器DATAIN=0存放從仿真器輸入到計算機(jī)的數(shù)據(jù),寄存器DATAOUT存放計算機(jī)輸出到仿真器的數(shù)據(jù),傳送錯誤標(biāo)志ERROR=FALSE(假);
(2) 判斷DATAOUT的最高位是否為1。若為1,則將主數(shù)據(jù)信號置位,否則將其清位,然后將DATAOUT左移一位,將主時鐘信號置位;
(3) 等待反饋時鐘信號上升沿,并同時測試是否超時。如果超時,ERROR=TRUE(真),子程序返回,否則轉(zhuǎn)第4步;
(4) 將主時鐘信號清位;
(5) 等待反饋時鐘信號下降沿,并測試是否超時。
如果超時,ERROR=TRUE,子程序返回,否則轉(zhuǎn)第6步;
(6) DATAIN左移一位,讀取從數(shù)據(jù)信號。如果為1,則DATAIN=DATAIN+1,否則直接轉(zhuǎn)到第7步;
(7) COUNT=COUNT-1,判斷COUNT是否為0。
為0則子程序返回,否則轉(zhuǎn)第2步。
仿真器向外部RAM寫數(shù)據(jù)的子程序算法如下(不包括寫命令1字節(jié)):
(1) 從計算機(jī)傳入一個字節(jié)數(shù)據(jù)(調(diào)用一次傳送1字節(jié)子程序,以后都是這樣),寫入P4輸出寄存器。然后再傳入一個字節(jié)數(shù)據(jù),寫入P3輸出寄存器。給地址鎖存引腳ALE(P5.0)一個高脈沖(先置高,再清低),鎖存地址;
(2) 再從計算機(jī)傳入一個字節(jié)數(shù)據(jù),寫入P3輸出寄存器。給單片機(jī)寫引腳(P5.2)一個低脈沖(先清低,再置高),這樣就向RAM寫入了一字節(jié)數(shù)據(jù);
(3) 子程序返回。
仿真器從外部RAM讀數(shù)據(jù)的子程序算法(不包括讀命令1字節(jié)):
(1) 從計算機(jī)傳入一個字節(jié)數(shù)據(jù),寫入P4輸出寄存器。然后再讀入一個字節(jié),寫入P3輸出寄存器。給地址鎖存引腳ALE(P5.0)一個高脈沖,鎖存地址;
(2) 向P3輸出寄存器寫入0FFH,以定義P3口為輸入口。給單片機(jī)讀引腳(P5.3)一個低電平,再讀P3口引腳寄存器P3_PIN數(shù)據(jù)到DATAOUT,然后將讀引腳變?yōu)楦唠娖?
(3) 向計算機(jī)傳入一個字節(jié)數(shù)據(jù)DATAOUT,返回。
依此法設(shè)計的仿真器已經(jīng)投入使用,實際使用證明,根據(jù)以上方法設(shè)計的仿真器用于變頻器開發(fā)非常方便,其中的RAM可以使用EEPROM(如AT28C64)代替(管腳兼容,相鄰數(shù)據(jù)之間的時間間隔可以通過計算機(jī)軟件控制)。用戶程序設(shè)計好寫入EEPROM后,可以直接用于工業(yè)現(xiàn)場控制。
?
參考文獻(xiàn)
1 王秩泉.高檔單片機(jī)8xC196MC與電氣傳動,電氣傳動自動化,1997;19(3)
2 何熙文.Intel 8XC196MC/MD高檔單片機(jī)原理及實用設(shè)計.大連:大連理工大學(xué)出版社,1995
3 趙秀菊.單片微型計算機(jī)8XC196原理及應(yīng)用.南京:東南大學(xué)出版社,1995
4 張 利.PC機(jī)打印口的原理及應(yīng)用開發(fā),北京:清華大學(xué)出版社,1996
5 Stephen D.Gilbert.跟我學(xué)VISUAL C++ 6.北京:機(jī)械工業(yè)出版社,1999