肖云茂 孫毅 張華興
1 引言
步進電機在簡單的開環(huán)工作方式下能夠達到相當高的定位精度,,且低速運行時又可輸出很大的轉矩,因此在運動控制中得到了廣泛的應用[1],。PC 機步進電機控制系統(tǒng),,應用于多個領域如數(shù)控機床、機器人,、激光加工設備等各種儀器設備,。一個完整的PC 機步進電機控制系統(tǒng),下位機與PC 機構成主從式控制結構:PC 機負責人機交互界面的管理,,包括鍵盤和鼠標的管理,、系統(tǒng)狀態(tài)的顯示、控制指令的發(fā)送等部分工作,;下位機完成運動控制的所有細節(jié),,包括脈沖和方向信號的輸出、自動升降速的處理等部分工作,。實際下位機開發(fā)過程復雜,,主體包含硬件電路設計和控制程序設計兩方面??刂瞥绦蛟O計過程需要軟件調試,、硬件調試、系統(tǒng)調試3 個過程,。軟件調試一般比較容易進行,,但如果要進行牽涉硬件的硬件調試或系統(tǒng)調試,包括元器件選用,、PCB 板制作,、元器件焊接、程序燒錄環(huán)節(jié),,其中任一環(huán)節(jié)的疏漏都可能造成程序調試失真,。通過Proteus 中各虛擬儀器所構建硬件電路,,調試所設計程序的控制效果,達到虛擬硬件調試,、虛擬系統(tǒng)調試程序的目的,,為PC 機步進電機系統(tǒng)開發(fā)提供有效的理論實踐依據(jù),避免因硬件電路設計過程錯誤引起的程序異?;蛴布嶒灄l件限制影響開發(fā),。
Proteus 是英國Labcenter 公司開發(fā)的電路分析與實物仿真軟件實現(xiàn)了單片機仿真和SPICE 電路仿真相結合,具有模擬電路仿真,、數(shù)字電路仿真,、單片機及其外圍電路組成的系統(tǒng)的仿真、RS232 動態(tài)仿真,、I2C 調試器,、SPI 調試器、鍵盤,、LCD,、虛擬儀器、示波器,、邏輯分析儀系統(tǒng)仿真的功能;支持主流單片機系統(tǒng)的仿真功能,;在硬件仿真系統(tǒng)中具有全速,、單步、設置斷點等調試功能,,同時可以觀察各個變量,、寄存器等的當前狀態(tài);支持第三方的軟件編譯和調試環(huán)境,,如Keil uVision2,、MTLAB 等軟件。由于Proteus 軟件本身的優(yōu)良仿真特性,,所設計程序能于Proteus 中完成仿真過程的同時,,即基本證明了所設計程序的準確性,從而基本完成了系統(tǒng)開發(fā)中的控制程序設計部分,,并為系統(tǒng)硬件電路設計提供指導意義,。
2 設計要求
以構建基于Proteus 的PC 機對步進電機運動控制仿真系統(tǒng)為例,上位機人機交互界面由VB 開發(fā)完成,;下位機硬件電路由Proteus 中各虛擬儀器所構建完成,;下位機控制程序由Keil uVision2開發(fā)完成;期間還要采用虛擬串口(VSPD),,用于模擬一根串口通信線,,實現(xiàn)上位機與下位機的串口通信,,最終實現(xiàn)上位機(VB)對下位機(Proteus)中步進電機的實時控制過程。
2.1 系統(tǒng)總體框圖
上位機通過RS232C 串口通信方式實現(xiàn)對下位機下達指令,,下位機AT89C51 單片機根據(jù)接受到的指令,,按一定的時序產(chǎn)生A、B,、C,、D 四相控制信號,分別實現(xiàn)單拍,、雙拍,、單雙拍的三種步進電機驅動方式。在實際運用中,,單片機與步進電機之間一般還需要信號隔離,、放大集成電路。下位機部分增設顯示功能,,由LCD1602 來完成實時地顯示步進電機運動狀態(tài),。Proteus 的仿真電路與實際電路可以有一定的區(qū)別,考慮到仿真的實踐性驗證,,設計出實際仿真適用的整個控制模塊,,如圖1 所示。
2.2 下位機仿真系統(tǒng)結構設計
在實際運用中,,單片機控制步進電機需要隔離,、放大模塊。在仿真時該控制模塊可省略,,直接將步進電機與AT89C51 相連接,,也可在仿真電路中使用,因這里主要是為了檢測脈沖的控制效果,,所以省去隔離,、放大電路。
串口通信部分[3],,非仿真控制中,,上位機電平是RS232C 電平,而下位機是TTL 電平,,不能直接通信的,,所以增加一個電平轉換芯片MAX232。在實際仿真中,,由于上下位機都是在PC 中進行,,所以無需電平轉換芯片,否則會發(fā)生錯誤。實際仿真時,,串口的2,、3 位直接與AT89C51 的RXD、TXD 直接對接就可以了,。
LCD 部分顯示電路,,當單片機驅動LCD 時,由于信號的傳輸過程會有損耗,,所以在實際應用驅動LCD 時,,常采用信號增益模塊加以驅動。仿真過程無信號損耗,,系統(tǒng)外部晶振電路,,復位電路等在仿真過程可以省略。
綜上所述,,在搭建Proteus 下位機系統(tǒng)時,,隔離放大模塊、LCD 驅動模塊,、外部晶振電路和復位電路可有可無,,而RS232 電平與TTL 電平轉換模塊必需省去。
3 軟件設計
3.1 下位機軟件設計
下位機軟件由Keil uVision2 開發(fā)完成,。程序本身通用于仿真Proteus,、實際步進電機控制系統(tǒng)。下位機程序包括:初始化程序,,串行中斷程序,,定時器T0 中斷程序,LCD 顯示函數(shù)(含幾條控制命令子函數(shù))及程序主函數(shù)體五部分構成,。程序設計流程,如圖2 所示,。
程序設計中要注意設置串行中斷的優(yōu)先級應高于T0 中斷,,因為默認的ET0 中斷優(yōu)先級是高于串行中斷ES 的[6],使用語句PT0=0,;//低優(yōu)先級,,PS=1;//高優(yōu)先級即可,,因為只要當串行通信優(yōu)先級最高時,,才能實現(xiàn)上位機對下位機的實時控制,十分重要,。串行中斷中需應用字符型數(shù)據(jù)與ASCII 碼轉化的算法,。因為MSComm1.Output 中送出去的是字符型數(shù)據(jù),而AT89C51 會把接收到的字符數(shù)據(jù)轉化成ASCII 碼,這樣如果上位機發(fā)送一個數(shù)據(jù)“0”,,而下位機轉化成ASCII 碼后即變成了“48”,,顯然這不是事先跟下位機約定的控制指令,所以需要對接收到的指令數(shù)據(jù)做一定的計算處理,,然后再交給CPU 進行判斷,。因為上位機的控制指令數(shù)據(jù)只有七個,使用語句if(temp<=57 & temp>=48)temp=temp-0x30,;即可實現(xiàn),。整個串行中斷程序設計如下:
static void com_isr(void)interrupt SIO_VECTOR using 1
{
if(RI)//RI=0 申請串行中斷
{
temp=SBUF;
//從接收寄存器中讀取指令數(shù)據(jù)
if(temp<=57 & temp>=48)
//判斷指令寄存器數(shù)據(jù)
temp=temp-0x30,;
//計算指令寄存器數(shù)據(jù)
RI=0,;
//RI=0 為下一次串行中斷做準備
k=0;//為顯示函數(shù)執(zhí)行條件
return,;
}
}
設計T0 中斷程序時,,中段時間(它由定時計數(shù)器的初始值、工作方式共同決定)與中斷次數(shù)關鍵內容,,決定了驅動電機脈沖頻率的變化,,即決定了步進電機轉速,需要設計一個合理的轉速方便記錄采集步進電機數(shù)據(jù),,觀察單拍,、雙拍、單雙拍驅動方式下電機的運動狀態(tài),。
LCD 顯示程序設計中因為“MODE:”是始終顯示的,,所以可以在程序初始化的時候就設計好LCD 的“MODE:”顯示,然后再根據(jù)數(shù)據(jù)指令顯示對應的步進電機運動狀態(tài),,這樣能節(jié)省MCU的處理時間,,提高仿真系統(tǒng)的實時控能力。主程序體中完成最終接受來的上位機指令的處理,,進而完成上位機控制步進電機的整個過程,。
其中對應控制指令N,各個器件的狀態(tài),。每一個N 值都意味著一條控制指令,,不同N 值,步進電機,、LCD,、上位機Text、P1 口脈沖[5]會有對應的狀態(tài)內容,。具體如表1 所示,。
3.2 上位機軟件設計
上位機軟件用VB 進行開發(fā),。采用Microsoft 公司提供的MicrosoftCommunications Control 串行通信編程的ActiveX 控件,封裝了完整的所需的API 函數(shù),,為應用程序提供了通過串行口收發(fā)數(shù)據(jù)的簡便方法,。只要設置Settings 屬性包括返回波特率、奇偶校驗,、數(shù)據(jù)位,、停止位、對應串口等參數(shù),。然后設計對應的事件處理,,以達到目標通信控制效果。程序主要開發(fā)對下位機發(fā)送的七條指令及Text 電機狀態(tài)顯示,,實現(xiàn)上位機控制,。
4 系統(tǒng)仿真運行效果及仿真分析
對應的單拍正轉、雙拍正轉,、單雙拍正轉種情況下由虛擬示波器(OSCILLOSCOPE)采集的脈沖驅動信號,,如圖3 所示。結合表1 的P1 口脈沖,,剔除正常存在的毛刺與抖動,,與實際驅動所需的對應脈沖信號是完全吻合的。
下位機在接收到單拍正轉對應圖3(a)指令后步進電機的相應運動過程,,如圖4 所示,。此處,虛擬步進電機的虛擬步距角為90 度,,圖中A,、B、C,、D 四相紅代表高電平,,藍代表低電平。圖3 與圖4 仿真過程記錄的信息,,與實際設計程序控制預期運行結果完全吻合,,仿真效果明顯可信。
如圖5 所示,,下位機在運行的條件下,上位機Option 單拍,,單擊正轉按鈕,,即上位機向下位機發(fā)送指令“1”。其中的virtualTerminal(虛擬終端),,是Proteus 軟件的輔助分析工具,,每次串口通信的指令將會被記錄下來。步進電機會根據(jù)P1 的脈沖形式做對應的運動,Proteus 中LCD,、上位機Text 正確顯示步進電機運動狀態(tài),。
5 結束語
提出了一種基于Proteus 的PC 機對步進電機運動控制仿真方法。所構建的仿真系統(tǒng)能很好的實現(xiàn)PC 機對步進電機的同步控制與狀態(tài)顯示整體過程,,通過程序設計開發(fā)與仿真系統(tǒng)無縫連接,,實現(xiàn)了程序所預期要求的控制過程,并給出了豐富的實驗觀察接口,,仿真實現(xiàn)了程序硬件調試,、系統(tǒng)調試過程。
參考文獻
1 孫耀杰,,左賀,,康龍云,曹秉剛,,史維祥. 抑制混合式步進電機轉矩波動的時變重復控制[J]. 中國電機工程學報,,2004,24(11):183~187
2 孟武勝,,李亮. 基于AT89C52 單片機的步進電機控制系統(tǒng)設計[J]. 測控技術,,2006,25(12):46~51
3 張俊杰,,李世其,,熊友軍. 基于數(shù)據(jù)手套的機械手控制技術應用[J]. 計算機應用研究,2006(6):170~175
4 李河清,,侯志祥. 基于串行通信的步進電機小型集散控制系統(tǒng)[J].計算機工程,,2007,33(10):258~260
5 金建新,,鄭虎子. 16 位單片機控制混合式步進電機的研究[J]. 機械設計與制造,,2007(9):94~96
6 李全利,遲榮強. 單片機原理及接口技術[M]. 北京:高等教育出版社,,2004(1)
http://www.chuandong.com/publish/tech/thesis/2009/5/thesis_0_8_7298.html