陳遠方 張洛平 孟文寶 周金朋
(河南科技大學機電工程學院,河南洛陽 471003)
隨著變頻調速技術的深入發展,基于變頻器調速的控制系統在大中型自動化生產中取得了廣泛的應用。在實際的工業控制領域,一條生產流水線通常由多臺電動機驅動,能否實現多臺電動機的協調工作,直接關系到生產的可靠性和產品的質量[1]。人工操作變頻器的控制面板,可以完成參數設定、發送運行指令、讀各類運行數據等。但過程復雜、專業化要求較強,并且在數據處理、計算、保存等諸多方面存在弱點,無法實現實時控制。目前,國內外大多數變頻器公司(如臺灣臺達、日本東芝等)推出了帶有RS-485串行通訊接口的變頻器,為用戶通過計算機控制變頻器提供了條件[2]。本文研究了上位機控制多電動機協同轉動的方法。
在通信領域內,有兩種數據通信方式:并行通信和串行通信。串行通信只使用一條數據線,節省傳輸線。尤其是在遠程通信時,此特點尤為重要。本文選擇串行通信作為通信工程開發的通訊方式。
串行口在Win 32中是作為文件來進行處理的,而不是直接對端口進行操作。對于串行通信,Win 32提供了相應的文件I/O函數與通信函數,通過使用這些函數,可以編制出符合不同需要的通信程序。下面只介紹我們熟知的windows下串行通信的兩種方法。
1.1.1 利用MSComm控件
MicrosoftCommunicationsControl(以下簡稱MSComm)是Microsoft公司提供的簡化Windows下串行通信編程的ActiveX控件,它為應用程序提供了通過串行接口收發數據的簡便方法。
1.1.2 采用MFC串口通信編程
Win32系統對文件的概念進行了擴展,無論是文件、通信設備、命名管道、郵件槽、磁盤還是控制臺都被看作是文件。因此,可以用MFC中的CFile類來實現對串口的操作。
相對于后種方式,調用MSCOMM串口編程控件顯得更加簡便,不需要清楚知道各種API的用法,另外由于它在多種語言中的通用性,文中選擇通過MSCOMM串口控件實現串行通信。
本系統選用臺達公司的高機能·向量型交流電動機驅動器VFD-B系列變頻器。VFD-B是采用高品質之元件、材料及融合最新的微計算機控制技術制造而成。這款變頻器是以RS-485作為串行通信協議并且具有網絡功能,RS-485采用平衡發送接收方式,它具有傳輸距離長(最大可達1 200 m)、抗干擾能力強和多站能力的優點。
VFD-B系列交流電動機驅動器使用Modbus networks通訊協議。而Modbus可使用ASCII(American Standard Code for Information Interchange)或RTU(Remote Terminal Unit)兩種資料編碼。ASCII編碼是將所要傳送的資料先轉換成相對的ASCII碼后再傳送,而RTU則是資料直接傳送,不再經過轉換[3]。
以ASCII資料編碼為例,簡述如下:
10-bit字符框(for ASCII),如圖1所示。ASCII資料格式的通訊協議見表1。


表1 ASCII模式通訊協議
(1)ASCII模式:變頻器向上位機回應訊息的控制字與發送的控制字格式基本相同,只是在功能碼為03H(讀出寄存器內容)時,在DATA資料內容中增加資料數(以byte計算),但最多可同時讀取連續的20筆數據。
(2)偵誤值:ASCII模式的檢查碼(LRC Check)由Address到Data Content結束加起來的值。
當驅動器做通信連接時,如果產生錯誤,此時驅動器會回應錯誤碼且將命令碼的最高位(bit7)設為1(即Function code AND 80H)回應給主控系統,讓主控系統知道有錯誤產生。并且于驅動器的鍵盤顯示器上顯示CE-XX,作為警告信息,XX為當時的錯誤碼。錯誤碼的意義見表2說明。

表2 錯誤碼的意義
MSCOMM控件提供了兩種處理通信問題的方法:一是事件驅動(Event-Driven)方式,二是查詢方式。
3.1.1 事件驅動方式
本文采用事件驅動方式處理通信問題。首先設置事件通知,當所希望的事件發生時,Windows發出該事件已發生的通知。這種方法的優點是程序響應及時、可靠性高,特別是對于擴展了多個串口的情況,能避免數據丟失[4]。
3.2.1 創建通信工程ModeProject
打開Visual C++6.0,創建一個基于對話框的MFC AppWizard(exe)項目,命名為 ModeProject,插入MSComm控件。
3.2.2 串口初始化
在Class Wizard中為CModeProjectDlg類添加變量和響應函數。
以單臺為例,程序主要部分如下:
3.2.2.1 串口事件處理函數 OnCommMscomm1
MsComm控件一般用事件驅動方式從串口接收數據,事件驅動法完成對數據的監視,并在程序中捕捉和處理這些事件。為串口事件添加OnComm()消息處理函數。消息處理函數是對串口事件的處理,根據自身需要編寫[5]。


3.2.2.2 串口初始化


如圖2所示,通訊程序包括:單臺、多臺選擇模式,閉環調節程序,正轉、反轉、點動、停止、故障復位切換程序,手動、自動調頻模塊。檔位切換、正反停切換由相應按鍵處理程序完成。閉環調節程序、電動機實際轉速的測量、模糊控制算法的實現由速度模塊服務程序處理。整個程序由工控機調動,程序初始化完成之后,可以根據需要手動選擇單、多臺控制模式。以單臺為例,可在對話框界面選擇變頻器,運動開始之后如果速度達不到設定目標,則進行手動或自動調節,如果達到設定速度,則自動等待下一個周期速度比較,不作處理。通過改變變頻器的頻率值改變電動機轉速,電動機轉速由編碼器反饋到程序的速度處理模塊中,從而周而復始運轉下去。多臺電動機控制原理與單臺類似。
程序編寫過程中,單臺、多臺組成 group,電動機停止、正傳、反轉、點動正傳、點動反轉、故障復位組成 group,手動、自動校正組成group,這樣形成類似互鎖模式,當選擇時,只能選擇同一group中的一個單選框。如圖3所示。
在現場實際調試本程序過程中,數據滿足實驗要求,采用閉環調速,變頻器以0.01 Hz為調速單位,調速精度高,精度范圍限制在±1 r/min,運行良好。

本文詳細介紹了VC++下變頻器與工控機的通訊工程開發方法,編寫程序并通過現場調試,用戶可以十分便捷地寫出靈活性高,移植性強的串口通信程序,避免了去掌握復雜windows API函數的弊端。這種開發方法具有很強的實用性,系統能夠做到無級調速,并廣泛地用于工業數據采集等領域。
[1]張丹紅,劉波.基于RS-485總線的多電動機同步控制系統研究[J].計算機技術與發展,2009,19(9):228 -231.
[2]楊玲.利用Visual C++6.0的MSComm控件實現計算機與變頻器的串行通訊[J].長春師范學院學報,2004,23(1):23 -25.
[3]VFD-B使用手冊[Z].中達電通股份有限公司,2008.
[4]高遠.通過MSComm控件實現串口的設備間數據傳輸[J].鐵道通信信號,2009,45(1):56 -57.
[5]吉翔,李永全.VC++下MSComm控件的串口通信方法[J].電腦開發與應用,2009,22(12):34 -38.