湖南鐵道職業技術學院 周虹 周文軍
結合CK0625數控系統的設計,研究了變頻調速技術在主軸驅動系統中的應用。在Windows2000平臺下,通過使用MSComm控件及采用事件驅動的通信方式,利用VC++6.0開發了工控機與變頻器的通訊軟件,解決了工控機與變頻器的通訊問題,實現了主軸的無級調速。
1 前言
數控車床的主運動是主軸帶動工件作旋轉運動,主軸的旋轉精度決定了零件的加工精度。為了保證加工時能選用合理的切削用量,從而獲得較高的生產效率、加工精度和表面質量,數控車床要求主軸的轉速在很寬的范圍內連續可調,而交流變頻調速技術是實現數控車床主軸無級變速最有效的手段之一。
CK0625機床的硬件部分由運動控制器、工控機、交流伺服電機及其驅動器、交流異步電動機、變頻器等組成,屬于NC嵌入PC型開放式數控系統,其控制軟件在Windows2000開發平臺下用Visual C++6.0編制。本文將結合CK0625的軟件設計介紹工控機與變頻器的通訊及主軸無級變速的具體實現。
2 交流異步電動機的變頻調速
由電機學基本原理可知,異步電動機的轉速為:

(1)
式中:f1為供電電源頻率;p為定子繞組磁極對數;s為轉差率。
CK0625選用了型號為JW7134的三相交流異步電動機,其功率為750W,額定電壓為380V,額定電流為2.05A,額定頻率為50Hz,最高轉速為1400r/min,磁極對數為2。
異步電動機磁場旋轉的轉速(即同步轉速)n0。可用下式表示:

(2)
將額定頻率50Hz,磁極對數2代人式(2),得
而電機JW7134的最高轉速為1400r/min,即n=1400r/min。
轉差率s的計算公式如下:

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