湖南鐵道職業(yè)技術(shù)學(xué)院 周虹 周文軍
結(jié)合CK0625數(shù)控系統(tǒng)的設(shè)計,研究了變頻調(diào)速技術(shù)在主軸驅(qū)動系統(tǒng)中的應(yīng)用。在Windows2000平臺下,通過使用MSComm控件及采用事件驅(qū)動的通信方式,利用VC++6.0開發(fā)了工控機與變頻器的通訊軟件,解決了工控機與變頻器的通訊問題,實現(xiàn)了主軸的無級調(diào)速。
1 前言
數(shù)控車床的主運動是主軸帶動工件作旋轉(zhuǎn)運動,主軸的旋轉(zhuǎn)精度決定了零件的加工精度。為了保證加工時能選用合理的切削用量,從而獲得較高的生產(chǎn)效率、加工精度和表面質(zhì)量,數(shù)控車床要求主軸的轉(zhuǎn)速在很寬的范圍內(nèi)連續(xù)可調(diào),而交流變頻調(diào)速技術(shù)是實現(xiàn)數(shù)控車床主軸無級變速最有效的手段之一。
CK0625機床的硬件部分由運動控制器、工控機、交流伺服電機及其驅(qū)動器、交流異步電動機、變頻器等組成,屬于NC嵌入PC型開放式數(shù)控系統(tǒng),其控制軟件在Windows2000開發(fā)平臺下用Visual C++6.0編制。本文將結(jié)合CK0625的軟件設(shè)計介紹工控機與變頻器的通訊及主軸無級變速的具體實現(xiàn)。
2 交流異步電動機的變頻調(diào)速
由電機學(xué)基本原理可知,異步電動機的轉(zhuǎn)速為:
(1)
式中:f1為供電電源頻率;p為定子繞組磁極對數(shù);s為轉(zhuǎn)差率。
CK0625選用了型號為JW7134的三相交流異步電動機,其功率為750W,額定電壓為380V,額定電流為2.05A,額定頻率為50Hz,最高轉(zhuǎn)速為1400r/min,磁極對數(shù)為2。
異步電動機磁場旋轉(zhuǎn)的轉(zhuǎn)速(即同步轉(zhuǎn)速)n0??捎孟率奖硎荆?
(2)
將額定頻率50Hz,磁極對數(shù)2代人式(2),得
而電機JW7134的最高轉(zhuǎn)速為1400r/min,即n=1400r/min。
轉(zhuǎn)差率s的計算公式如下:
(3)
將n0=1500,n=1400代人式(3),得s=0.067。
CK0625的主運動采用了變頻調(diào)速技術(shù),即通過平滑改變f1使轉(zhuǎn)速平滑變化的調(diào)速方法,將轉(zhuǎn)差率s=0.067代人公式(1),則CK0625主軸轉(zhuǎn)速與頻率的關(guān)系如下:
根據(jù)CK0625車床主軸的調(diào)速范圍、交流異步電動機的功率大小以及電氣柜的安裝尺寸,本數(shù)控系統(tǒng)選用了型號為VFD007M21A的0.75kW臺達(dá)通用型變頻器。
3 工控機與主軸變頻器的通訊
VFD007M21A變頻器帶有微處理器和通信能力,這樣就不用開發(fā)專用的通信接口。目前帶通信功能的變頻器主要采用RS-485或RS-232C通訊接口標(biāo)準(zhǔn),該變頻器使用了RS-485通訊,通過RS-232CRS-485轉(zhuǎn)換器連接到工控機上,它采用了2線雙絞傳輸方式,即數(shù)據(jù)D+和數(shù)據(jù)D-,這種數(shù)據(jù)差動傳輸方式可以有效地消除干擾的影響,波特率最高可達(dá)到19200bit/s。
工控機與變頻器的通訊主要分為兩大部分:第一部分主要用來對通訊參數(shù)進行設(shè)置,如設(shè)置波特率、起始位、數(shù)據(jù)位、奇偶校驗位、停止位以及通訊端口的選擇等,其具體值取決于變頻器通訊協(xié)議和工控機的配置情況。第二部分主要用來實現(xiàn)工控機和變頻器的通訊。在正常生產(chǎn)運行時,可能需要通過工控機對變頻器的功能參數(shù)進行設(shè)置,或者對變頻器的運行特性進行設(shè)置。同時,還需要讀取變頻器反饋回來的有關(guān)信息(如變頻器功能參數(shù)值、運行特性、實際頻率值、電機轉(zhuǎn)速值等)進行分析和動態(tài)顯示,并根據(jù)這些信息來控制車床的運行。
VFD007M21A變頻器采用USS協(xié)議(universal serial protoco1)。該協(xié)議通過主從結(jié)構(gòu)和串行通信的方式,實現(xiàn)對設(shè)備的訪問和控制。本系統(tǒng)中,變頻器通過雙絞線連接到工控機上,并通過工控機進行通訊控制。工控機與變頻器之間的每一次通訊信息由14個字節(jié)構(gòu)成,每一個字節(jié)采用標(biāo)準(zhǔn)的通用異步收發(fā)器(UART)格式:1個起始位、8個數(shù)據(jù)位、1個奇偶校驗位和1個停止位構(gòu)成。
4 工控機與變頻器通訊的軟件設(shè)計
在計算機的串行通信中,常用的通信方式有三種:直接讀寫串口、利用WindowsAPl函數(shù)讀寫串口和利用串口通信控件MSComm操作串口。其中,直接讀寫串口即通過調(diào)用-inp()和-out()函數(shù)直接讀寫串口;利用WindowsAPl函數(shù)讀寫串口,即通過調(diào)用API函數(shù)中的CreateFile()、ReadFile()、WriteFile()等函數(shù)操作串口。使用這兩種方法進行編程,比較復(fù)雜,且不直觀。而通過引進ActiveX控件MSComm,只需通過改變MSComm控件的屬性設(shè)置和編寫相應(yīng)的初始化程序,就能在Windows環(huán)境下簡單地實現(xiàn)不同用戶的串行通信要求,從而達(dá)到遠(yuǎn)程控制的目的。因此,本系統(tǒng)中使用了MSComm控件實現(xiàn)串口通訊。
MSComm控件為應(yīng)用程序提供了通過串行接口收發(fā)數(shù)據(jù)的簡便方法,它提供了兩種處理通信問題的方法:事件驅(qū)動方法和查詢法。在本系統(tǒng)中,采用的變頻器回送的狀態(tài)信息1幀為14Byte,而且要求系統(tǒng)反應(yīng)及時,具有高可靠性。因此,編程采用了事件驅(qū)動的通信方式,用GetCommEvent()可獲得onComm產(chǎn)生事件或錯誤的代碼。
根據(jù)USS協(xié)議,變頻器回送給工控機的信息報文為一組14Byte的十六位字,系統(tǒng)需要讀取其中的ADR字段和HIW字段,以獲取變頻器的運行狀態(tài),再經(jīng)過數(shù)學(xué)模型的計算,可以得出并顯示主軸電機的轉(zhuǎn)速。
設(shè)計工控機與變頻器通信的軟件應(yīng)具備變頻器功能參數(shù)設(shè)置與讀取、變頻器運行特性、發(fā)送頻率值與變頻器運行時的頻率值讀取三個功能,后兩個功能在Windows2000平臺下利用VC++6.0進行編程實現(xiàn)。
利用MSComm控件進行串口編程的過程如下:
(1)插入MSComm控件
在VC++6.0開發(fā)環(huán)境中,選擇MSComm控件插入程序,則系統(tǒng)自動為所插入的控件定義一個CM-SComm類,與其相關(guān)的文件保存在mscomm.h和mscomm.cpp文件中。確認(rèn)以上菜單選擇后,則MSComm控件已嵌入到項目文件中。利用Class Wiz-ard為其添加變量m_MSComm,程序中對串口的各種操作均通過該變量來實現(xiàn),程序如下:
在MainOperPanlView.h中添加下面聲明語句:
protected:CMSComm m_MSComm;
在CMainOperPanlView.cpp::OnCreate()函數(shù)中添加創(chuàng)建控件的語句:
m_MSComm.Create(NULL,0,CRect(0,0,0,
0),this,IDC_MSCOMMl) ;
(2)初始化并打開串口
在程序設(shè)計中,主框架類CmainFrm里的OnCreate(LPCREATESTRUCT lpCreateStruct)函數(shù)中進行初始化工控機串口,串口初始化一般說來要完成設(shè)定通信端口號(CommPort)、設(shè)定通信協(xié)議(Hand-Shaking)、設(shè)定傳輸速率等參數(shù)(Setting)、設(shè)定其它參數(shù)、打開通信端口(PortOpen)五個設(shè)置,其代碼如下:
{
m_MSComm.SetCommPort(2) ;//選擇COM2
m_MSComm.SetlnBufferSize(1024) ;//接收緩沖區(qū),設(shè)置輸入緩沖區(qū)的大小,Bytes
m_MSComm.SetOutBufferSize(1024) ;//發(fā)送緩沖區(qū),設(shè)置輸出緩沖區(qū)的大小,Bytes
m_MSComm.SetlnputLen(0) ;//設(shè)置當(dāng)前接收區(qū)數(shù)據(jù)長度為0,表示全部讀取
m_MSComm.SetlnputMode(1) ;//以二進制方式讀寫數(shù)據(jù)
m_MSComm.SetRThreshold(1) ;//接收緩沖區(qū)有1個及1個以上字符時,將引發(fā)接收數(shù)據(jù)的OnComm事件
m_MSComm.SetSettings(”9600,n,7,2”) ;//波特率9600,無檢驗位,7個數(shù)據(jù)位,2個停止位
…
}
(3)鋪捉串口事件
MSComm控件采用了事件驅(qū)動的方法從端口獲取數(shù)據(jù),即有事件(如接收到數(shù)據(jù))發(fā)生時通知程序,并在程序中需要鋪獲并處理相應(yīng)事件,程序如下:
在MainOperPanlView.h中添加:
protected:
afx_msg void OnCommMscomm();
DECLARE_EVENTSINK_MAP()
在CMainOperPanlView.cpp中添加事件的映射:
BEGIN_EVENTSINK_MAP(CMain OperPanlView,CFormView)
//{{AFX_EVENTSINK_MAP(CMainOperPanl-View)
ON_VENT(CMainOperPanlView,IDC MSCOMMl,
1/*OnComm*/,OnComm,VTS_NONE)//映射
MSComm控件事件
//}1AFX_EVENTSINK_MAP
END_EVENTSINK_MAP()
(4)串口讀寫
完成串口讀寫的函數(shù)Getlnput()及SetOutput()的函數(shù)原型分別是VARIANT Getlnput();voidSetOutDut(const VARIANT& new Value); 都要使用VARIANT類型,PC機控制變頻器的參數(shù)通過類ColeVariant的構(gòu)造函數(shù)來實現(xiàn),ColeVariant可以接收各種類型的數(shù)據(jù)(如字符串、整數(shù)、浮點數(shù)等)并自動將其轉(zhuǎn)換為符合VARIANT要求的數(shù)據(jù)。程序代碼如下:
void CMainOperPanlView::OnComm()
{
VARIANT variant_inp;
COleSafeArray safearray_inp;
LONG len,k;
BYTErxdata[2048] ;//設(shè)置BYTE數(shù)組
…
{
varlant_mp
MSComm.Getlnput() ;//讀緩沖區(qū)
sdearray_inp:variant_inp;//VARIANT型變量轉(zhuǎn)
換為ColeSafeArray型變量
len:safearray_inp•GetOneDimSize() ;//得到有效數(shù)據(jù)長度
for(k=0;k
5 結(jié)束語
在數(shù)控車床主軸驅(qū)動系統(tǒng)中,采用變頻調(diào)速技術(shù)調(diào)節(jié)主軸的轉(zhuǎn)速,具有高效率、寬范圍、高精度的特點。本系統(tǒng)在Windows2000平臺下利用VC++6.0開發(fā)了工控機與變頻器的通訊軟件,解決了工控機與變頻器的通訊。實踐證明,該軟件較好的實現(xiàn)了數(shù)控車床主軸的無級變速。
第二屆伺服與運動控制論壇論文集
第三屆伺服與運動控制論壇論文集