摘要:該文介紹了利用Visual Basic 6.0的MSComm控件完成對計(jì)算機(jī)串口的控制、系統(tǒng)通過ModBus協(xié)議及RS232/485轉(zhuǎn)換電路實(shí)現(xiàn)對變頻器的參數(shù)傳遞、運(yùn)行控制等。
關(guān)鍵詞:ModBus協(xié)議;MSComm;變頻器
Design of Frequency Converter Control SystemBased by on VB6.0
ZHANG Jiao-bai
(Hunan Normal University Subsidiary, Xiangdong Hospital Information Center, Liling 412200, China)
Abstract: This Paper Introduces a way by which The host Computer controls variable frequency driver by The Mircosoft Communication Control based by Visual Basic 6.0, The serial Communication Program is designed to control the variable frequency driver by using the ModBus protocol and RS232/485 change-over circuit。So it can be realized that transfer parameters and control running.
Key words: ModBus protocol; MSComm; variable frequency driver
在工業(yè)生產(chǎn)中、變頻器被廣泛地應(yīng)用于工業(yè)控制領(lǐng)域,它可以控制交流電機(jī)的轉(zhuǎn)速、轉(zhuǎn)向等。在工業(yè)控制系統(tǒng)中,變頻器控制作為整個(gè)控制系統(tǒng)的一部分不可缺少,現(xiàn)在的變頻器都帶有RS485通訊接口,這使得變頻器可以方便地與其它控制設(shè)備連接,構(gòu)成功能強(qiáng)大的工業(yè)控制系統(tǒng)。
1 ModBus協(xié)議
ModBus協(xié)議是應(yīng)用于各種電子控制器的一種通用語言,通過此協(xié)議,不同廠商生產(chǎn)的控制設(shè)備可以連成工業(yè)網(wǎng)絡(luò),進(jìn)行集中監(jiān)控,此協(xié)議支持傳統(tǒng)的RS232、RS422、RS485和以太網(wǎng)設(shè)備,在許多工業(yè)設(shè)備中,包括PLC、DCS、智能儀表等都在使用ModBus協(xié)議作為它們的通訊標(biāo)準(zhǔn)。標(biāo)準(zhǔn)的Modicon控制器采用RS232C實(shí)行串行的ModBus通訊,ModBus有ASCII和RTU兩種通訊模式,通訊協(xié)議規(guī)定了消息、數(shù)據(jù)結(jié)構(gòu)和應(yīng)答方式。數(shù)據(jù)通訊采用(主/從)方式,主設(shè)備端發(fā)出數(shù)據(jù)請求消息,從設(shè)備端接收到正確消息后就可以發(fā)送數(shù)據(jù)到主設(shè)備端以響應(yīng)請求。ModBus協(xié)議需要對數(shù)據(jù)進(jìn)行校驗(yàn),串行協(xié)議中除有奇偶校驗(yàn)外,ASCII模式還有LRC(Longitudinal redundancy check)校驗(yàn),RTU模式有16位CRC校驗(yàn)。本系統(tǒng)采用ASCII模式,其數(shù)據(jù)格式見表1。
2 VB.MSComm控件使用說明
Viuasl Basic 6.0(簡稱VB6.0)是Microsoft 公司基于Windows的面向?qū)ο蟮南到y(tǒng)開發(fā)工具,VB6.0中MSComm 控件通過串行端口傳輸和接收數(shù)據(jù),為應(yīng)用提供串行通訊功能,MSComm控件在串口編程時(shí)非常方便,Microsoft Communications Control(以下簡稱MSComm)是Microsoft公司提供簡化Windows下串行通信編程的ActiveX控件,它為應(yīng)用提供了通過串口收發(fā)數(shù)據(jù)的簡便方法,具體來說它提供了兩種通訊處理方式,一種是事件處理方式:該方式相當(dāng)于一般程序設(shè)計(jì)中的中斷方式。當(dāng)串口發(fā)生事件或錯(cuò)誤時(shí),MSComm控件會產(chǎn)生OnComm事件,用戶程序可以捕獲該事件進(jìn)行相應(yīng)處理。另一種是查詢處理方式,在用戶程序中設(shè)計(jì)定時(shí)或不定時(shí)查詢MSComm控件的某些屬性是否發(fā)生變化,從而確定相應(yīng)處理。
3 系統(tǒng)硬件設(shè)計(jì)
本系統(tǒng)使用的是迅磊牌變頻器,由上海迅磊變頻器有限公司生產(chǎn),迅磊變頻器自帶RS485通訊口,系統(tǒng)采用主從式結(jié)構(gòu),工業(yè)PC為主機(jī),變頻器和儀表為從機(jī),通過一個(gè)RS232/485接口電路相連,系統(tǒng)中采用ModBus協(xié)議ASCII碼通訊模式,變頻器和其他設(shè)備可通過自身按鍵設(shè)置設(shè)置地址和通訊格式,迅磊變頻器通訊報(bào)文格式如表3。
表3 報(bào)文格式
設(shè)備連接如圖1。
RS232/RS485已有成熟的產(chǎn)品,其簡要電路如圖2。
4 通訊程序
4.1 系統(tǒng)運(yùn)行
如圖3。
4.2 程序清單
變頻器通訊程序清單如下:
Private mBytDataSend(10) As Byte '發(fā)送的數(shù)據(jù)
Private mData_Incept1() As Byte '接收緩沖區(qū)
Private mData_Incept(10) As Byte '接收的數(shù)據(jù)
Private Sub Form_Load();
'初始化發(fā)送報(bào)文
mBytDataSend(0) = 2;
mBytDataSend(1) = 1;
mBytDataSend(2) = 1;
mBytDataSend(3) = 0;
mBytDataSend(4) = 0;
mBytDataSend(5) = 0;
mBytDataSend(6) = 34;
mBytDataSend(7) = 0;
mBytDataSend(8) = 0;
mBytDataSend(9) = 0;
mBytDataSend(10) =34;
TimerReadCom.Interval=2000;
End Sub;
設(shè)置Com口屬性。
Private Function SetSX() As Long;
MSComm1.InBufferSize=1024;
MSComm1.Inputlen=0;
MSComm1.InputMode = comInputModeBinary;
MSComm1.Settings=\"9600,N,8,1\";
MSComm1.CommPort=1;
If MSComm1.PortOpen Then;
SetSX=1;
ELSE;
SetSX=0;
ENDIF;
END Function;
定時(shí)讀取變頻器狀態(tài)。
Private Sub TimerReadCom_Timer();
Dim Buffer_Send As Variant;
Buffer_Send = CVar(mBytDataSend);
MSComm1.Output = Buffer_Send
ReadData;
End Sub;
讀Com口數(shù)據(jù)。
Private Sub ReadData();
Dim I As Integer
Dim LRCTemp As Byte '
Dim Buffer as
Dim Buffer as Variant;
Do Until MSComm1.InBufferCount < 11;
DoEvents;
Loop;
Buffer = MSComm1.Input;
mData_Incept1 = Buffer;
For I=0 to 10;
mData_Incept(0)=mData_Incept1(0);
Next I;
LRCTemp = SUMXOR(mData_Incept, 10);
If (LRCTemp = mData_Incept(10)) And (mData_Incept(0) = 2) Then;
Label1=(mData_Incept(10)*256+mData_Incept(10))/1000;
else
'接收的數(shù)據(jù)不正確,丟棄不用
Endif;
End Sub;
'LRC效驗(yàn)碼
Private Function SUMXOR(DATA() As Byte, L) As Byte
Dim B As Byte
Dim I As Integer
Dim Ⅱ As Integer
Dim ARR() As Byte
ARR = DATA
Ⅱ = L
B = ARR(1)
For I = 2 To 9 'Ⅱ - 1
B = B Xor ARR(I)
Next I
SUMXOR = B
End Function
5 結(jié)束語
變頻器在工業(yè)上的應(yīng)用越來越廣泛,通過以上方法可以對變頻器實(shí)現(xiàn)精確控制,特別是在燃燒控制系統(tǒng)中起著很大的作用,上述實(shí)例已在很多套窯爐及鍋爐燃燒自動(dòng)化控制系統(tǒng)中成功應(yīng)用,效果良好。
參考文獻(xiàn):
[1] 上海迅磊變頻器參考手冊[Z].2009.
[2] 沈大林.中文Visual Basic 6.0案例教程[M].北京:人民郵電出版社,2005.
[3] 姜鳳武,王航.基于ModBus協(xié)議實(shí)現(xiàn)單片機(jī)與變頻器的通信[J].自動(dòng)化技術(shù)與應(yīng)用,2006(4).