變頻器在流量控制中的使用
變頻調(diào)速以其優(yōu)良的控制性能和高效的節(jié)能優(yōu)點(diǎn)在工業(yè)領(lǐng)域和民用領(lǐng)域得到了廣泛的應(yīng)用和發(fā)展。變頻調(diào)速是公認(rèn)的最為理想,最有發(fā)展前景的調(diào)速方式之一。隨著計(jì)算機(jī),可編程控制器以及其他智能控制設(shè)備在控制領(lǐng)域的廣泛應(yīng)用,誕生了大量基于各種總線和通信協(xié)議的通信方式。RS-485就是一種基于RS-485總線的通信協(xié)議,它已經(jīng)被應(yīng)用在了上位機(jī)和變頻器的通信之中。本文采用RS-485通信協(xié)議,通過計(jì)算機(jī)來自動控制液壓系統(tǒng)的流量。
1、RS-485通信協(xié)議
為了讓上位機(jī)和變頻器之間進(jìn)行有效的通信,必須約定它們的通信方式。在此,使用基于RS-485總線的RS-485通信協(xié)議。協(xié)議約定如下:采用異步傳輸,一臺主機(jī)發(fā)送,可以多臺從機(jī)(變頻器)接收,沒有接收到主機(jī)的請求,從機(jī)不能主動發(fā)送信息。
糾錯方法:在信息后加checksum,checksum等于所有字節(jié)(HEX)之和的最后一個字節(jié),轉(zhuǎn)換成ASCII碼。
數(shù)據(jù)包格式:HeaderAKP1P0D3D2D1D0S Delimiter其中數(shù)據(jù)包中各部分意義如下:Header:3ah A,K,P1P0,D3D2D1D0,S分別是單字節(jié)十六進(jìn)制數(shù),轉(zhuǎn)換為ASCII碼。
A:從機(jī)(變頻器)地址。變頻器的地址范圍為(1-31),A必須存在。地址A=00H時對所有從機(jī)生效,且所有從機(jī)不回送信息,故A=00H時只能發(fā)運(yùn)行命令操作等。
K:數(shù)據(jù)包功能。
P1P0:參數(shù)序號。參數(shù)標(biāo)號,倆字節(jié)十六進(jìn)制數(shù),如P0100轉(zhuǎn)換為十六進(jìn)制為0064. D3D2D1D0:參數(shù)值。去掉小數(shù)點(diǎn)的參數(shù)值,共四個字節(jié)的十六位進(jìn)制數(shù),先發(fā)高位,后發(fā)低位。
S:和校驗(yàn)字。S是上面所有字節(jié)十六進(jìn)制之和(A+K+P1P0+D3+D2+D1+D0)取最后一字節(jié)bit7bit0)值,轉(zhuǎn)換為ASCII碼。
Delimiter:0dh,0ah.
2系統(tǒng)設(shè)計(jì)
在本文所研究變頻調(diào)速液壓系統(tǒng)中,采用計(jì)算機(jī)上的RS-232串口來和變頻器通信,由于計(jì)算機(jī)上的RS-232接口和變頻器上的RS-485接口在電氣特性上存在著差異。兩種總線間不能直接進(jìn)行通信,因此采用HY-811轉(zhuǎn)接模塊將兩種不同總線的信號進(jìn)行轉(zhuǎn)換。
在本文中采用計(jì)算機(jī)為上位機(jī),通過總線控制現(xiàn)場的變頻器,傳感器和執(zhí)行部件。計(jì)算機(jī)采集來自流量傳感器的數(shù)據(jù),通過比較實(shí)際的流量值和期望值之間的誤差,不斷調(diào)整電動機(jī)轉(zhuǎn)速,使系統(tǒng)流量的誤差符合要求。
3上位機(jī)與變頻器的通信程序?qū)崿F(xiàn)
應(yīng)用VB60中內(nèi)嵌的MSComm控件來對計(jì)算機(jī)的串口編寫控制程序,建立上位機(jī)和變頻器之間的聯(lián)系。MSComm控件是微軟公司的串口通信ActiveX控件,該控件提供了對串口的各種操作,支持多線程。
MSComm控件通過串行端口傳輸和接收數(shù)據(jù),為應(yīng)用程序提供串行通信功能。該通信控件可以采用事件驅(qū)動和查詢方式來開發(fā)串口通信程序。
應(yīng)用MSComm控件通信前,首先對其相關(guān)屬性進(jìn)行設(shè)置:ComrnPort=1使用計(jì)算機(jī)上的第1串行口來和變頻器通信;Settings:9600,n,8,1設(shè)置傳輸波特率為960Obit/s,8位數(shù)據(jù)位,無偶校驗(yàn),1位停止位;InpuMtode=1按二進(jìn)制方式收發(fā)數(shù)據(jù);Inputlen=0每次讀出輸入緩沖區(qū)中全部的數(shù)據(jù);主機(jī)向變頻器發(fā)送命令的子程序如下:PublicSubAdj(InverterAsInteger,F(xiàn)unAsString,PAs String,DataAsLong)
評論