<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          關(guān) 閉

          新聞中心

          EEPW首頁 > 工控自動(dòng)化 > 設(shè)計(jì)應(yīng)用 > 基于LabVIEW的PC機(jī)與變頻器的串口通信

          基于LabVIEW的PC機(jī)與變頻器的串口通信

          作者: 時(shí)間:2009-05-05 來源:網(wǎng)絡(luò) 收藏

          1 引言

          本文引用地址:http://www.ex-cimer.com/article/163822.htm

          近年來,隨著電力電子技術(shù)、微電子技術(shù)及大規(guī)模集成電路的發(fā)展,生產(chǎn)工藝的改進(jìn)及功率半導(dǎo)體器件價(jià)格的降低,調(diào)速越來越被工業(yè)上所采用。在摩擦學(xué)測試系統(tǒng)中,用控制電機(jī)實(shí)現(xiàn)試驗(yàn)設(shè)備的速度調(diào)節(jié)已經(jīng)成為一種非常重要和有效的控制手段。

          由于摩擦學(xué)試驗(yàn)機(jī)和摩擦學(xué)測試的特殊性,摩擦學(xué)試驗(yàn)中的調(diào)速有著不同于一般工業(yè)變頻控制的特點(diǎn)。一方面,要求變頻器調(diào)速能夠在較大范圍內(nèi)滿足摩擦學(xué)測試的要求,使得試驗(yàn)結(jié)果具有可比性;另一方面,摩擦磨損試驗(yàn)過程中,對控制有一些特殊的要求,例如需要特殊的速度、運(yùn)動(dòng)的非周期性以及設(shè)備的快速啟動(dòng)和停止等。在一些疲勞試驗(yàn)中,甚至要求電機(jī)進(jìn)行寸動(dòng)或者往復(fù)運(yùn)動(dòng)以檢測材料的性能,有的試驗(yàn)現(xiàn)場對人體的損害比較大,需要遠(yuǎn)距離進(jìn)行控制和檢測電機(jī)的運(yùn)轉(zhuǎn)情況。所以,必須利用計(jì)算機(jī)程序控制變頻器實(shí)現(xiàn)一些特殊控制功能。這就要求計(jì)算機(jī)與變頻器之間存在有效的通訊功能。

          本文針對摩擦學(xué)試驗(yàn)研究的特點(diǎn),采用廣泛使用的編程語言,開發(fā)用于東元7200MA變頻器運(yùn)行頻率的控制通訊程序。

          2 通訊系統(tǒng)總體設(shè)計(jì)

          串行是一種常用的數(shù)據(jù)傳輸方法,占用的線路少、成本低,在工程方式上占有重要地位。本文以內(nèi)置RS 485通訊接口的東元7200MA變頻器為研究對象,設(shè)計(jì)的控制變頻器的通訊系統(tǒng)。圖1所示為系統(tǒng)總體結(jié)構(gòu)框圖。

          計(jì)算機(jī)通過RS 485通信口與變頻器相連,對變頻器進(jìn)行控制。RS 485串行總線采用平衡發(fā)送和差分接收的方式傳輸信號(hào),具有傳輸距離遠(yuǎn)(約1 219 m)、抗干擾能力強(qiáng)等特點(diǎn)。而且總線收發(fā)器具有高靈敏度,能檢測低至200 mV的電壓,故傳輸信號(hào)能在千米以外得到恢復(fù)。由于目前機(jī)普遍只配有RS 232,所以在計(jì)算機(jī)上連接一個(gè)RS 232/485轉(zhuǎn)換器,然后再與變頻器的串口相連。將各種動(dòng)作按照通訊協(xié)議編寫成命令,發(fā)送給變頻器,就達(dá)到了通過機(jī)來控制變頻器的目的。同樣,機(jī)讀取數(shù)據(jù)也必須由變頻器根據(jù)RS 485通訊協(xié)議進(jìn)行識(shí)別和響應(yīng)才能完成。

          3 軟件實(shí)現(xiàn)方案

          目前,串口通信程序的開發(fā)在Windows操作系統(tǒng)下一般用VB,VC,Delphi等編寫。當(dāng)采用VB,VC開發(fā)程序時(shí),操作者不得不面對非常繁瑣的API函數(shù)編程;而Delphi沒有自帶的串口通信控件,在它的幫助文檔里也沒有提及串口通信,給編程人員帶來許多不便。

          是美國NI公司開發(fā)的一種圖形化的編程語言,它內(nèi)置數(shù)據(jù)采集、儀器控制、過程監(jiān)控和自動(dòng)測試功能,包括VISA,GPIB,RS 232,DAQ等模塊和基本分析庫;提供強(qiáng)大的數(shù)據(jù)分析、處理、顯示功能的同時(shí)還保證系統(tǒng)靈活性;LabVIEW具有開放的系統(tǒng)互連性及廣泛的硬件支撐,具有DDL和CIN接口,可以與多種設(shè)備直接連接;流程圖式的開發(fā)環(huán)境大大簡化了程序開發(fā)的復(fù)雜程度,縮短開發(fā)周期;界面良好、易于理解,方便調(diào)試和維護(hù),用它來實(shí)現(xiàn)PC機(jī)與變頻器的串口通信是最為簡捷的方法之一,已經(jīng)具有較廣大的用戶群。

          設(shè)置東元7200MA系列變頻器所涉及的主要參數(shù)有端口號(hào)、波特率、數(shù)據(jù)位等,具體說明如表1所示。

          本程序采用中文版LabVIEW 8.2進(jìn)行通訊編程,在編寫程序之前,安裝的NI VISA驅(qū)動(dòng)必須和LabVIEW程序版本匹配,避免編程出錯(cuò)。從變頻器設(shè)置轉(zhuǎn)數(shù)到啟動(dòng)再到停止有一個(gè)順序和時(shí)間過程,因此本程序主要采用順序結(jié)構(gòu)和層疊式結(jié)構(gòu)實(shí)現(xiàn)。具體步驟如下:

          (1)初始化串口,利用VISA Configure SerialPort.VI設(shè)置PC與變頻器通信的基本參數(shù):端口號(hào)、波特率、奇偶校驗(yàn)、數(shù)據(jù)位、停止位、緩沖區(qū)大??;

          (2)利用VISA Write.VI寫端口,根據(jù)變頻器的通訊協(xié)議把設(shè)定轉(zhuǎn)數(shù)的動(dòng)作參數(shù)變成命令符,然后把整個(gè)命令幀以ASCII碼字符串的形式發(fā)送到串口;

          (3)利用Wait(ms).VI延時(shí)等待,主機(jī)發(fā)送命令到變頻器,變頻器判斷命令正確后將數(shù)據(jù)返回給主機(jī)需要一定時(shí)間,故這一步需要設(shè)置延時(shí)等待。等待時(shí)間可根據(jù)變頻器的響應(yīng)時(shí)間確定,也可以通過LabVIEW的中的工具確定出程序運(yùn)行時(shí)間來設(shè)置等待時(shí)間;

          (4)再利用VISA Write.VI寫端口,把啟動(dòng)的動(dòng)作參數(shù)寫成命令幀并以字符串形式寫入VISA Write.VI的緩沖區(qū)。

          以上4步即可完成變頻器以一定的轉(zhuǎn)數(shù)轉(zhuǎn)動(dòng)。寫命令到串口的過程在While循環(huán)里進(jìn)行,變頻器啟動(dòng)后不需要停止,可以直接連續(xù)地設(shè)置變頻器的轉(zhuǎn)數(shù)來更改電機(jī)轉(zhuǎn)動(dòng)速度,While循環(huán)內(nèi)采用延時(shí)等待處理,延時(shí)500 ms;

          同理,停止命令以一個(gè)層疊式順序結(jié)構(gòu)和上面(2),(3)兩步命令層疊進(jìn)行,同樣先需要設(shè)定變頻器轉(zhuǎn)數(shù)為零,然后延時(shí)等待,最后把停止命令以字符串形式發(fā)給串口,完成變頻器的停止動(dòng)作;


          上一頁 1 2 下一頁

          關(guān)鍵詞: 串口 通信 變頻器 PC LabVIEW 基于

          評(píng)論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();