陳遠方 張洛平 孟文寶 周金朋
(河南科技大學(xué)機電工程學(xué)院,河南洛陽 471003)
隨著變頻調(diào)速技術(shù)的深入發(fā)展,基于變頻器調(diào)速的控制系統(tǒng)在大中型自動化生產(chǎn)中取得了廣泛的應(yīng)用。在實際的工業(yè)控制領(lǐng)域,一條生產(chǎn)流水線通常由多臺電動機驅(qū)動,能否實現(xiàn)多臺電動機的協(xié)調(diào)工作,直接關(guān)系到生產(chǎn)的可靠性和產(chǎn)品的質(zhì)量[1]。人工操作變頻器的控制面板,可以完成參數(shù)設(shè)定、發(fā)送運行指令、讀各類運行數(shù)據(jù)等。但過程復(fù)雜、專業(yè)化要求較強,并且在數(shù)據(jù)處理、計算、保存等諸多方面存在弱點,無法實現(xiàn)實時控制。目前,國內(nèi)外大多數(shù)變頻器公司(如臺灣臺達、日本東芝等)推出了帶有RS-485串行通訊接口的變頻器,為用戶通過計算機控制變頻器提供了條件[2]。本文研究了上位機控制多電動機協(xié)同轉(zhuǎn)動的方法。
在通信領(lǐng)域內(nèi),有兩種數(shù)據(jù)通信方式:并行通信和串行通信。串行通信只使用一條數(shù)據(jù)線,節(jié)省傳輸線。尤其是在遠程通信時,此特點尤為重要。本文選擇串行通信作為通信工程開發(fā)的通訊方式。
串行口在Win 32中是作為文件來進行處理的,而不是直接對端口進行操作。對于串行通信,Win 32提供了相應(yīng)的文件I/O函數(shù)與通信函數(shù),通過使用這些函數(shù),可以編制出符合不同需要的通信程序。下面只介紹我們熟知的windows下串行通信的兩種方法。
1.1.1 利用MSComm控件
MicrosoftCommunicationsControl(以下簡稱MSComm)是Microsoft公司提供的簡化Windows下串行通信編程的ActiveX控件,它為應(yīng)用程序提供了通過串行接口收發(fā)數(shù)據(jù)的簡便方法。
1.1.2 采用MFC串口通信編程
Win32系統(tǒng)對文件的概念進行了擴展,無論是文件、通信設(shè)備、命名管道、郵件槽、磁盤還是控制臺都被看作是文件。因此,可以用MFC中的CFile類來實現(xiàn)對串口的操作。
相對于后種方式,調(diào)用MSCOMM串口編程控件顯得更加簡便,不需要清楚知道各種API的用法,另外由于它在多種語言中的通用性,文中選擇通過MSCOMM串口控件實現(xiàn)串行通信。
本系統(tǒng)選用臺達公司的高機能·向量型交流電動機驅(qū)動器VFD-B系列變頻器。VFD-B是采用高品質(zhì)之元件、材料及融合最新的微計算機控制技術(shù)制造而成。這款變頻器是以RS-485作為串行通信協(xié)議并且具有網(wǎng)絡(luò)功能,RS-485采用平衡發(fā)送接收方式,它具有傳輸距離長(最大可達1 200 m)、抗干擾能力強和多站能力的優(yōu)點。
VFD-B系列交流電動機驅(qū)動器使用Modbus networks通訊協(xié)議。而Modbus可使用ASCII(American Standard Code for Information Interchange)或RTU(Remote Terminal Unit)兩種資料編碼。ASCII編碼是將所要傳送的資料先轉(zhuǎn)換成相對的ASCII碼后再傳送,而RTU則是資料直接傳送,不再經(jīng)過轉(zhuǎn)換[3]。
以ASCII資料編碼為例,簡述如下:
10-bit字符框(for ASCII),如圖1所示。ASCII資料格式的通訊協(xié)議見表1。
表1 ASCII模式通訊協(xié)議
(1)ASCII模式:變頻器向上位機回應(yīng)訊息的控制字與發(fā)送的控制字格式基本相同,只是在功能碼為03H(讀出寄存器內(nèi)容)時,在DATA資料內(nèi)容中增加資料數(shù)(以byte計算),但最多可同時讀取連續(xù)的20筆數(shù)據(jù)。
(2)偵誤值:ASCII模式的檢查碼(LRC Check)由Address到Data Content結(jié)束加起來的值。
當(dāng)驅(qū)動器做通信連接時,如果產(chǎn)生錯誤,此時驅(qū)動器會回應(yīng)錯誤碼且將命令碼的最高位(bit7)設(shè)為1(即Function code AND 80H)回應(yīng)給主控系統(tǒng),讓主控系統(tǒng)知道有錯誤產(chǎn)生。并且于驅(qū)動器的鍵盤顯示器上顯示CE-XX,作為警告信息,XX為當(dāng)時的錯誤碼。錯誤碼的意義見表2說明。
表2 錯誤碼的意義
MSCOMM控件提供了兩種處理通信問題的方法:一是事件驅(qū)動(Event-Driven)方式,二是查詢方式。
3.1.1 事件驅(qū)動方式
本文采用事件驅(qū)動方式處理通信問題。首先設(shè)置事件通知,當(dāng)所希望的事件發(fā)生時,Windows發(fā)出該事件已發(fā)生的通知。這種方法的優(yōu)點是程序響應(yīng)及時、可靠性高,特別是對于擴展了多個串口的情況,能避免數(shù)據(jù)丟失[4]。
3.2.1 創(chuàng)建通信工程ModeProject
打開Visual C++6.0,創(chuàng)建一個基于對話框的MFC AppWizard(exe)項目,命名為 ModeProject,插入MSComm控件。
3.2.2 串口初始化
在Class Wizard中為CModeProjectDlg類添加變量和響應(yīng)函數(shù)。
以單臺為例,程序主要部分如下:
3.2.2.1 串口事件處理函數(shù) OnCommMscomm1
MsComm控件一般用事件驅(qū)動方式從串口接收數(shù)據(jù),事件驅(qū)動法完成對數(shù)據(jù)的監(jiān)視,并在程序中捕捉和處理這些事件。為串口事件添加OnComm()消息處理函數(shù)。消息處理函數(shù)是對串口事件的處理,根據(jù)自身需要編寫[5]。
3.2.2.2 串口初始化
如圖2所示,通訊程序包括:單臺、多臺選擇模式,閉環(huán)調(diào)節(jié)程序,正轉(zhuǎn)、反轉(zhuǎn)、點動、停止、故障復(fù)位切換程序,手動、自動調(diào)頻模塊。檔位切換、正反停切換由相應(yīng)按鍵處理程序完成。閉環(huán)調(diào)節(jié)程序、電動機實際轉(zhuǎn)速的測量、模糊控制算法的實現(xiàn)由速度模塊服務(wù)程序處理。整個程序由工控機調(diào)動,程序初始化完成之后,可以根據(jù)需要手動選擇單、多臺控制模式。以單臺為例,可在對話框界面選擇變頻器,運動開始之后如果速度達不到設(shè)定目標,則進行手動或自動調(diào)節(jié),如果達到設(shè)定速度,則自動等待下一個周期速度比較,不作處理。通過改變變頻器的頻率值改變電動機轉(zhuǎn)速,電動機轉(zhuǎn)速由編碼器反饋到程序的速度處理模塊中,從而周而復(fù)始運轉(zhuǎn)下去。多臺電動機控制原理與單臺類似。
程序編寫過程中,單臺、多臺組成 group,電動機停止、正傳、反轉(zhuǎn)、點動正傳、點動反轉(zhuǎn)、故障復(fù)位組成 group,手動、自動校正組成group,這樣形成類似互鎖模式,當(dāng)選擇時,只能選擇同一group中的一個單選框。如圖3所示。
在現(xiàn)場實際調(diào)試本程序過程中,數(shù)據(jù)滿足實驗要求,采用閉環(huán)調(diào)速,變頻器以0.01 Hz為調(diào)速單位,調(diào)速精度高,精度范圍限制在±1 r/min,運行良好。
本文詳細介紹了VC++下變頻器與工控機的通訊工程開發(fā)方法,編寫程序并通過現(xiàn)場調(diào)試,用戶可以十分便捷地寫出靈活性高,移植性強的串口通信程序,避免了去掌握復(fù)雜windows API函數(shù)的弊端。這種開發(fā)方法具有很強的實用性,系統(tǒng)能夠做到無級調(diào)速,并廣泛地用于工業(yè)數(shù)據(jù)采集等領(lǐng)域。
[1]張丹紅,劉波.基于RS-485總線的多電動機同步控制系統(tǒng)研究[J].計算機技術(shù)與發(fā)展,2009,19(9):228 -231.
[2]楊玲.利用Visual C++6.0的MSComm控件實現(xiàn)計算機與變頻器的串行通訊[J].長春師范學(xué)院學(xué)報,2004,23(1):23 -25.
[3]VFD-B使用手冊[Z].中達電通股份有限公司,2008.
[4]高遠.通過MSComm控件實現(xiàn)串口的設(shè)備間數(shù)據(jù)傳輸[J].鐵道通信信號,2009,45(1):56 -57.
[5]吉翔,李永全.VC++下MSComm控件的串口通信方法[J].電腦開發(fā)與應(yīng)用,2009,22(12):34 -38.