《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 通信與網(wǎng)絡(luò) > 業(yè)界動態(tài) > 數(shù)控變頻器的研究與實現(xiàn)

數(shù)控變頻器的研究與實現(xiàn)

2015-05-17
作者:曾文龍,,李曉龍,,胡慶生
來源:2014年微型機與應(yīng)用第10期

  摘  要變頻器控制在工業(yè)自動化領(lǐng)域有著廣泛的應(yīng)用,,其主要目標是控制電機的運行狀態(tài),。根據(jù)目前控制系統(tǒng)的發(fā)展趨勢,,使用Visual C++的MFC類編寫串口程序,,以ModBus為通信協(xié)議,,經(jīng)RS-232轉(zhuǎn)RS-485電路,,實現(xiàn)利用上位機對臺達變頻器VFD-M的所有參數(shù)進行設(shè)置,,使對變頻器的實時控制成為現(xiàn)實,,最終實現(xiàn)面向現(xiàn)場的自動化控制。

  關(guān)鍵詞: 變頻器,;Visual C++,;ModBus協(xié)議;串行通信

  傳統(tǒng)電機采用分立元件的模擬電路控制,,但由于控制電路安裝難,、功耗高,、安全性低,以及交流電機無級調(diào)速的需求和傳統(tǒng)的直流調(diào)速技術(shù)的限制,,工業(yè)領(lǐng)域中變頻器技術(shù)逐漸實用化并投入市場應(yīng)用,。變頻器具有過流、過壓,、過載保護,、可控調(diào)速、降低線路電壓波動,、轉(zhuǎn)矩極限可調(diào),、停止方式可控、逆轉(zhuǎn)禁止,、高效利用能源等眾多功能,。此外,變頻器還集成分級加減速和經(jīng)典PID等算法,,使得復雜的調(diào)速控制簡單化,。因此在自動化領(lǐng)域,特別是在機電一體化系統(tǒng)中,,變頻器扮演者重要角色,。

  一般變頻器具有兩種控制方式:控制面板控制方式和串行通信數(shù)據(jù)控制方式??刂泼姘蹇刂品绞嚼米冾l器自帶控制面板進行手動操控,,一般應(yīng)用于非自動控制場合。在自動化程度越來越高的工業(yè)生產(chǎn)現(xiàn)場以及機電一體化的數(shù)控設(shè)備中,,人工操作基本是不可行的,。為此,本文采用串行通信數(shù)據(jù)控制方式,,設(shè)計了基于Visual C++的變頻器上位機控制系統(tǒng),,用來建立與變頻器之間的串行通信。該系統(tǒng)具有控制界面直觀,、操作簡單,、控制內(nèi)容齊全等優(yōu)點。通過RS-232/485串行通信方式直接控制變頻器,,實現(xiàn)現(xiàn)場交流電機的自動化控制,,進而實現(xiàn)“控制-檢測-調(diào)節(jié)-再控制”的閉環(huán)控制系統(tǒng)。這是一條可行,、高效的技術(shù)路線,。

  1 變頻器數(shù)字控制方式

  1.1 變頻器的數(shù)字控制的軟硬件基礎(chǔ)

  本文選用臺達VFD-M變頻器為控制對象,使用Visual C++的MFC類編寫串口程序,,以ModBus為通信協(xié)議,,經(jīng)RS-232轉(zhuǎn)RS-485電路,,最終實現(xiàn)利用上位機對臺達變頻器VFD-M的所有參數(shù)的設(shè)置,實現(xiàn)對變頻器的實時控制,。根據(jù)變頻器的通信地址,,操作人員可以在上位機上設(shè)置多臺變頻器的參數(shù),,以實現(xiàn)對變頻器運行的實時控制,。其可視化界面美觀、實用,,操作簡潔,。

  1.2 變頻器命令代碼控制方式

  在眾多的通信協(xié)議中,由Modicon公司設(shè)計的ModBus通信協(xié)議已經(jīng)成為一個通用工業(yè)標準,,據(jù)此不同廠商生產(chǎn)的控制設(shè)備可以連成工業(yè)網(wǎng)絡(luò),,實現(xiàn)集中監(jiān)控[1]。通過此協(xié)議,,控制器之間,、控制器與其他設(shè)備之間可以實現(xiàn)信息交換。使用該通信方式無需附加任何費用,,是最為廉價,、實用且開放的串行通信方式。本文以RS-485標準構(gòu)建硬件橋梁,,在其上使用ModBus通信協(xié)議實現(xiàn)計算機與變頻器通信,,進而實施控制。在實際的應(yīng)用中,,只需按照變頻器規(guī)定的通信數(shù)據(jù)結(jié)構(gòu),、控制字和協(xié)議格式發(fā)送數(shù)據(jù)即可實現(xiàn)計算機與變頻器的通信。以臺達變頻器VFD-M為例,,采用ModBus ASCII通信協(xié)議的運轉(zhuǎn),、停止、正轉(zhuǎn),、反轉(zhuǎn)代碼指令分別為:“:010620000002-

  D7\r\n”,、“:010620000001D8\r\n”、“:010620000010C9\r\n”,、“:010620000020B9\r\n”,。只要將這些控制代碼傳送給變頻器,即可令變頻器執(zhí)行相應(yīng)功能,,控制電機運轉(zhuǎn),。

  2 Visual C++串行通信實現(xiàn)

  2.1 Visual C++與MFC簡介

  Visual C++是微軟公司推出的在Win32環(huán)境下運行的面向?qū)ο罂梢暬删幾g系統(tǒng)的開發(fā)程序。MFC是微軟生產(chǎn)的名為Microsoft Foundation Classes(微軟基礎(chǔ)類)的C++類集的縮寫形式,,它提供面向?qū)ο罂蚣?,程序開發(fā)人員可以使用這一框架創(chuàng)建Windows應(yīng)用程序,,并且MFC按照C++類的層次形式結(jié)合在一起,幾個高層類提供一般功能,,而低層類實現(xiàn)更具體的行為,,每一個低層次類都是從高層類中派生出來的,因此繼承了高層類的行為[2],。

  MFC是一個微軟公司提供的類庫,,以C++類的形式封裝了Windows的API,并且包含一個應(yīng)用程序框架,,以減少開發(fā)人員開發(fā)應(yīng)用程序的工作量,。其中MFC類中包含了大量窗口句柄封裝類、Windows自帶的控件和組件的封裝類,。MFC類(或者其派生類),、組件的封裝類是MFC應(yīng)用程序的總體結(jié)構(gòu)。MFC 提供了MFC AppWizard 自動生成框架(用MFC編寫的程序絕大部分都能在Windows中完美運行),。

  實際上,,MFC是微軟提供的用于在C++環(huán)境下編寫應(yīng)用程序的一個框架和引擎。VC++是Windows下開發(fā)人員使用的專業(yè)C++ SDK(Standard Software Develop Kit,,專業(yè)軟件開發(fā)平臺),,MFC就是掛在其上的一個輔助軟件開發(fā)包。

  C++和VC++的區(qū)別在于C++是一種程序設(shè)計語言,,是一種完全兼容C語言的軟件編制的通用規(guī)范,;而VC++只是一個編譯器、開發(fā)工具,,或者說是一種集成的應(yīng)用程序開發(fā)平臺,。

  2.2 Cserial類與ActiveX控件MSComm對比

  MSComm控件(Microsoft Communication Control)建立在ActiveX基礎(chǔ)之上,幾乎覆蓋了對串口編程接口的所有封裝,,其最大的好處是技術(shù)本身的跨語言特性,,即凡是支持ActiveX控件操作的程序設(shè)計語言均可使用,例如Visual C++,、Visual Basic,、Visual FoxPro等。.NET平臺語言也同樣支持ActiveX,,因此,,MSComm幾乎成了這些不能直接操作系統(tǒng)資源的語言平臺上可以進行串口通信的為數(shù)不多的方法之一。

  但是,,在Visual C++中使用MSComm,,要比在Visual Basic等語言環(huán)境中復雜得多。使用MSComm就要理解COM模型特殊的變量,COM并不是簡單的類封裝,,而是要通過各種復雜的接口和數(shù)據(jù)轉(zhuǎn)換的過程,,才能將對控件的操作轉(zhuǎn)化為最終對Windows API的調(diào)用。使用基于MSComm的串口通信程序,,可能存在隨著通信數(shù)據(jù)量的加大,,整個程序所占內(nèi)存數(shù)量上升的情況,而主程序?qū)Υ藷o能為力,。除此之外,,MSComm控件依賴于消息循環(huán),在一般情況下需要有對話框作為宿主,,這使得編寫一個使用串口的后臺服務(wù)幾乎成為不可能的事,。

  Cserial類的優(yōu)點在于它的開放性,,即所有的功能均以源代碼提供,,開發(fā)者不僅可以直接在工程中使用這些代碼,而且可以根據(jù)項目規(guī)劃將其編譯成靜態(tài)庫,、動態(tài)庫,,還可以在原有的基礎(chǔ)上進行改造[3]。因此本文使用Cserial 類控制串口,。

  2.3 使用Cserial類控制串口

  Cserial一共有7個文件,,作用如下:

  (1)Serial.cpp和Serial.h是基礎(chǔ)類包裝,定義并實現(xiàn)Cserial類,。

  (2)SerialEx.h和SerialEx.cpp定義并實現(xiàn)繼承于Cserial類的CserialEx類,,這個類為Windows的消息傳遞進行了特別的優(yōu)化,適合于使用SDK編寫的圖形界面程序,。

  (3)SerialMFC.h,、SerialWnd.h和SerialWnd.cpp 3個文件實現(xiàn)了進一步的包裝,便于在MFC中使用Cserial[4],。

  例如串口的打開,、設(shè)置、讀,、寫,、關(guān)閉函數(shù)分別為:

  m_port.Open();

  m_port.SetUp();

  m_port.Write();

  m_port.Read();

  m_port.Close();

  如寫運轉(zhuǎn)指令:m_port.Write(":010620000002D7\r\n");。

  3 總體方案設(shè)計

  3.1 總體方案結(jié)構(gòu)

  變頻器的串行通信系統(tǒng)結(jié)構(gòu)圖如圖1所示,。

001.jpg

  3.2 控制界面設(shè)計

  本文設(shè)計的系統(tǒng)所要實現(xiàn)的基本功能是控制變頻器輸出,,使電機能正轉(zhuǎn)、反轉(zhuǎn),、加速和減速,。為了使軟件有更好的兼容性能,附加了串口配置模塊。同時為方便操作員使用,,還增加了變頻器在STOP模式下的預設(shè)模塊,,并以視圖化形式呈現(xiàn)出來,用來完成對一些常用函數(shù)的設(shè)置,。系統(tǒng)控制界面如圖2所示,。

002.jpg

  3.3 串行通信的編程實現(xiàn)

  (1)創(chuàng)建基于對話框的項目

 ?、龠M入Visual C++編程環(huán)境,,選擇“File/New”菜單命令,打開新建項目工作區(qū),,選擇“Project”標簽下的“MFC AppWizard[exe]”選項,,在“Project Name”編輯框中輸入應(yīng)用程序項目的名稱“數(shù)據(jù)控制變頻器的研究與實現(xiàn)”,在“Location”編輯框中輸入相應(yīng)的文件名和文件路徑,,單擊“OK”按鈕,。

  ②在MFC AppWizard-Step1向?qū)ы撋线x擇基于對話框的選項(Dialog base),,后面其他的向?qū)ы摱疾捎媚J設(shè)置值并確定,。

  (2)調(diào)整對話框?qū)傩?/p>

 ?、侔础癆lt+Enter”組合鍵,,彈出“Dialog Properties”對話框。

 ?、谠O(shè)置ID和標題,,其他保持默認設(shè)置,如圖3所示,。

003.jpg

 ?。?)給對話框添加控件

  將控件工具欄中的控件按鈕拖到對話框模板上合適的位置。

 ?。?)根據(jù)需要對控件的屬性進行設(shè)置,,如表1所示的對正轉(zhuǎn)按鈕的設(shè)置。

005.jpg

 ?。?)添加消息映像

  在Windows的使用控件編程中,,必須事先設(shè)定對話框中各控件的消息處理方式,這樣,,用戶才可以向控件發(fā)送消息來完成指定的任務(wù),,或根據(jù)控件產(chǎn)生的消息執(zhí)行相應(yīng)的程序代碼。為控件添加消息的一般步驟如下,。

 ?、俅蜷_“MFC ClassWizard”對話框,按“Ctrl+W”組合鍵,如圖4所示,。

004.jpg

 ?、谶x擇“Message Maps”標簽,從“Class name”列表框中選擇“CvisualCDlg”類,。

 ?、墼凇癘bject IDs”列表框中選擇產(chǎn)生消息的控件ID,例如IDC_FORWARD,。

 ?、茉凇癕essages”消息框中選擇消息響應(yīng)方式,例如BN-CLICKED方式,。

 ?、輪螕簟癆dd Function”按鈕,創(chuàng)建相應(yīng)的成員函數(shù),。

 ?、捱x定“Member functions”列表框中的相應(yīng)成員函數(shù),單擊“Edit Code”按鈕,,在成員函數(shù)模板中添加如下程序代碼:

  void CVisualCDlg::OnForeward()

  {

  //TODO:Add your control notification handler code here

  }

  至此系統(tǒng)框架就已經(jīng)完成,,下一步就是針對每一個控件內(nèi)嵌Cserial類函數(shù)來完成對串口的控制,,進而控制變頻器,。

  3.4 變頻器工作方式設(shè)定

  要實現(xiàn)對變頻器的串行通信控制,需對變頻器進行工作方式設(shè)定,,如表2所示,,詳細設(shè)定值說明可參考臺達VFD-M變頻器使用手冊[5]。

006.jpg

  3.5 通信的硬件實現(xiàn)

  3.5.1 臺達變頻器VFD-M

  臺達VFD-M變頻器系列是由中達電通股份有限公司生產(chǎn)的超低噪音迷你型變頻器,,最大輸出功率可達7.5 kW,,體積小、噪音低,,主要用于三相異步交流電機的控制,。

  3.5.2 物理接口

  臺達VFD-M變頻器帶有RS-485接口,因此可以通過RS-232/485轉(zhuǎn)換器與上位機RS-232端口連接,,與上位機建立通信,。

  將界面控制變?yōu)楹瘮?shù)控制,建立函數(shù)庫,,通過函數(shù)調(diào)用實現(xiàn)控制,,使其資源共享,便于在不同控制系統(tǒng)中靈活調(diào)用,。

  搜集不同型號的變頻器的控制代碼,,編制控制代碼表,供程序定義時使用及在編程過程中調(diào)用。這樣,,程序就可適用于控制各式各樣的變頻器,。

  在工業(yè)自動化控制領(lǐng)域,組網(wǎng)運行是發(fā)展趨勢,,系統(tǒng)中各控制單元的控制方法及實現(xiàn),,大部要由主控計算機完成。本文以上位機Visual C++6.0為開發(fā)平臺,,使用MFC類進行開發(fā)設(shè)計,,最終形成運行于上位機的應(yīng)用程序。變頻器是自動控制系統(tǒng)中使用較廣泛的交流電機控制器,,本文通過上位機,,用串行通信的方式對變頻器操控,進而對交流電機實現(xiàn)控制,。這一方案及實現(xiàn)方法能為自動化工程師解決此類問題提供一個理想,、良好的解決思路。

  參考文獻

  [1] 崔躍,,夏旭東,,蔣勇.Quantum控制系統(tǒng)在20 000 m3/h制氧機的應(yīng)用[J].電氣應(yīng)用,2006(2).

  [2] 王文學,,張謙,,尹巖青.Visual C++6寶典[M].北京:電子工業(yè)出版社,2001.

  [3] 周韌研,,商斌.Visual C++串口通信開發(fā)入門與編程實踐[M].北京:電子工業(yè)出版社,,2009.

  [4] 曹衛(wèi)彬.C/C++串口通訊典型應(yīng)用實例編程實踐[M].北京:電子工業(yè)出版社,2009.

  [5] 董艦,,張桓.數(shù)字通信在變頻器控制中的作用[J].河北聯(lián)合大學學報(自然科學版),,2012(3):93-99.


本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,,并不代表本網(wǎng)站贊同其觀點,。轉(zhuǎn)載的所有的文章、圖片,、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有,。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無法一一聯(lián)系確認版權(quán)者。如涉及作品內(nèi)容,、版權(quán)和其它問題,,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,,避免給雙方造成不必要的經(jīng)濟損失,。聯(lián)系電話:010-82306118,;郵箱:[email protected]