摘 要:RS-485串行通信能夠保證快速、穩(wěn)定、遠(yuǎn)距離地傳輸數(shù)據(jù),已經(jīng)越來越多地應(yīng)用于工業(yè)控制。文中介紹了基于RS-485三墾變頻器與PC機(jī)串行通信的硬件特性、通信協(xié)議及軟件實(shí)現(xiàn)。實(shí)驗(yàn)表明:該通信軟件性能穩(wěn)定、實(shí)用效果良好。
關(guān)鍵詞:串行通信; RS-485; 變頻器
[b][align=center]Implementation of Serial Communication between SANKEN
Inverter and PC Based on RS-485[/align][/b]
He Ankun Zhang Jingwu Chen Ming
Abstract:RS-485 serial communication ensure the transmission data quickly, steadily and further, which has been used to the industry control more and more.This paper introduce the hardware performance,communication protocol and software implementation of serial communication between SANKEN inverter and PC based on RS-485. Experiment display the software performance is steadily and real effect is good.
Keywords:serial communication;RS-485;inverter
1引言
目前,在我國現(xiàn)場控制總線中,RS-485使用最為普遍。RS-485 總線的共模輸出電壓在-7V 至+12V 之間,具有抑制共模干擾的能力,數(shù)據(jù)傳輸速率最大為10Mbit/s,當(dāng)波特率為1200bps 時(shí)最大的傳輸距離理論上可達(dá)15 千米。RS-485網(wǎng)絡(luò)所具有的設(shè)備簡單、容易實(shí)現(xiàn)、傳輸距離遠(yuǎn)、維護(hù)方便等優(yōu)點(diǎn)而被許多變頻器廠家所采用。文章分析了工業(yè)環(huán)境中串行通信選擇RS-485的原因,論述了基于RS-485 三墾變頻器與PC機(jī)串行通信的硬件特性,通信協(xié)議及軟件實(shí)現(xiàn),實(shí)驗(yàn)表明該通信軟件穩(wěn)定可靠,能直觀的觀看變頻器的實(shí)際運(yùn)行狀態(tài),并能比較方便的進(jìn)行多組參數(shù)的設(shè)定和改寫。通過此軟件,極大的方便了工程師和客戶對變頻器的操控和掌握。
2 RS-232與RS-485的比較
常用的串行通信有兩種,一種為RS-232串行通信,一種為RS-485串行通信。由于串行通信使用方式簡便易用,工業(yè)控制領(lǐng)域大多都使用串行通信作為其數(shù)據(jù)交換的手段。但是工業(yè)設(shè)備的使用環(huán)境經(jīng)常比較惡劣,可能會存在噪聲或者電源諧波的干擾,RS-232在如此環(huán)境下抗干擾的能力遠(yuǎn)不及RS-485,除此之外,RS-232只能是一對一控制,而RS-485則可以實(shí)現(xiàn)一對多控制;RS-232一般是9針公頭,而RS-485則是兩根線就可以控制。因此工業(yè)環(huán)境下的串行通信大多都采取RS-485串行通信方式。
3 三墾變頻器與PC的串行通信
3.1 軟硬件環(huán)境
硬件配置:PC(配備標(biāo)準(zhǔn)RS-232)一臺、RS-232/RS-485轉(zhuǎn)換卡一個(gè)、ISI通信卡一塊、Inverter 三臺(三墾變頻器ES-0.4KW、SPF-11KW、IPF-90KW)。
軟件包括:Windows XP操作系統(tǒng)、Microsoft Visual Basic 6.0中文版、三墾變頻器通信協(xié)議指導(dǎo)手冊等。
3.2 通信協(xié)議
三墾各個(gè)系列變頻器所提供的通信協(xié)議格式如下:
1、 指令格式:指令格式如圖1所示,各字段含義如表1。
2、指令的詳細(xì)解釋
圖1顯示了指令的格式,共25條指令,由操作碼(OP)決定,分別由A-Q及R、S、x、y、z、a、b、c組成。以指令C和N說明指令的詳細(xì)構(gòu)成,如表2。
表1 指令各字段含義

3、變頻器所進(jìn)行的通信錯(cuò)誤處理
變頻器如果從上位機(jī)接收到的指令中檢查出錯(cuò)誤,將進(jìn)行以下處理:
?、?在奇偶錯(cuò)誤、校驗(yàn)和錯(cuò)誤或指令代碼未定義時(shí):
回傳的錯(cuò)誤指令為指令代碼“?”。同時(shí),DT項(xiàng)回傳一個(gè)字節(jié)的通信錯(cuò)誤代碼。
?、?在DT項(xiàng)的數(shù)據(jù)過長或不足,不能解釋數(shù)據(jù)內(nèi)容時(shí):
如果接收指令的各個(gè)指令所定義的數(shù)據(jù)過長或不足、或者接收指令無法解釋時(shí),其錯(cuò)誤處理同①。
③ 超時(shí)處理:
接收開始代碼后,如果不能在150ms 以內(nèi)接收全部指令將進(jìn)行超時(shí)處理,強(qiáng)制完成接收狀態(tài)。這時(shí)變頻器將返回通信錯(cuò)誤代碼“d”。
?、?通信錯(cuò)誤代碼分別為:“p”代表奇偶錯(cuò)誤;“s”代表檢驗(yàn)和錯(cuò)誤;“u”代表未定義操作代碼;“d”代表數(shù)據(jù)過長、數(shù)據(jù)不足或者數(shù)據(jù)無法解釋。
?、?其它錯(cuò)誤
有關(guān)接收計(jì)算機(jī)指令的錯(cuò)誤,在上述情況以外,將進(jìn)行超時(shí)處理,對計(jì)算機(jī)而言為“無應(yīng)答”。
4、變頻器和計(jì)算機(jī)的指令發(fā)送接收方法
串行通信的基本程序是一臺計(jì)算機(jī)將指令發(fā)送給一臺變頻器,之后變頻器回傳應(yīng)答給計(jì)算機(jī)。所以,變頻器在接收到了計(jì)算機(jī)發(fā)送出的指令后必須回傳應(yīng)答。如果計(jì)算機(jī)在沒有得到應(yīng)答時(shí),仍連續(xù)發(fā)送多條指令則無法確保正常的工作。
由于變頻器異?;蛘咄ㄐ啪€路異常,計(jì)算機(jī)可能無法接收到變頻器的應(yīng)答。為了避免由于等待變頻器的應(yīng)答而造成的通信程序鎖定,計(jì)算機(jī)將按照所設(shè)定的2 秒或更長以上的時(shí)間來執(zhí)行接收超時(shí)處理。
表2 指令詳細(xì)內(nèi)容舉例

3.3 串行通信的程序?qū)崿F(xiàn)
由于篇幅所限,這里僅介紹通信部分的實(shí)現(xiàn)代碼,主要包括:通信端口的定義,通信速率的設(shè)定,通信發(fā)送、通信接受、通信錯(cuò)誤處理以及退出等。
主要代碼如下:
…
MSComm1.CommPort=1 ‘選擇1號通信端口
MSComm1.Settings="4800,o,8,1" ‘設(shè)定為4800bps,奇數(shù)、數(shù)據(jù)8位、停止1位
MSComm1.RThreshold=1 ‘Commm Evert 發(fā)生當(dāng)接收到一個(gè)字符時(shí)
MSComm1.InputLen=0 ‘輸入緩沖數(shù)據(jù)清零?
MSComm1.PortOpen=True ‘通信端口打開?
Timer1.Interval=1000 ‘接收超時(shí)時(shí)間(ms)1秒
Tx=“*01C”? ‘設(shè)定向變頻器傳送的數(shù)據(jù)
TxLen=Len( Tx ) ‘ 得到傳送數(shù)據(jù)長度(校驗(yàn)和與停止位除外)
Sum=0
For i=1 To TxLen
Sum=Sum+Asc(Mid(Tx, i, 1))
Next i
Sum=((0-Sum)And 127) Or 64
Tx=Tx+Chr(Sum)+vbCrLf ‘在傳送代碼上添加校驗(yàn)和與停止位(CR+LF)
Timer1.Enabled=True ‘ 啟動(dòng)接收超時(shí)檢出計(jì)數(shù)器
MSComm1.Output=Tx ‘向變頻器傳送數(shù)據(jù)
End Sub
Private Sub MSComm1_OnComm() ‘[通過Comm事件接收數(shù)據(jù)]
Dim Rx As String, RxLen As Integer,Sum As Integer
Dim Msg As String
If MSComm1.CommEvent<>comEvReceive Then Exit Sub ‘確認(rèn)接收的數(shù)據(jù)是Comm事件
Do
Rx=Rx+MSComm1.Input ‘接收變頻器的數(shù)據(jù)
DoEvents
Loop Until Right(Rx,2)=(Chr(13)& Chr(10)) ‘找到停止位
Timer1.Enabled=False ‘取消超時(shí)定時(shí)器
RxLen=Len(Rx)-2 ‘接收數(shù)據(jù)字長(停止位除外)
Sum=0 ‘接收到的校驗(yàn)和的計(jì)算
For i=1 To RxLen-1
Sum=Sum+Asc(Mid(Rx , i,1))
Next i
Sum=((0-Sum)And 127)Or 64
If Mid(Rx, RxLen, 1)=Chr(Sum) Then ‘校驗(yàn)和的檢查
Msg=Left(Rx, RxLen) ‘ 接收數(shù)據(jù)(包括校驗(yàn)和,不包括停止位)
Else
Msg=“Check Sum NG”? ‘校驗(yàn)和錯(cuò)誤顯示
End If
MsgBox “Received Data=” & Msg ‘顯示接收數(shù)據(jù)
MSComm1.PortOpen=False ‘[ 關(guān)閉通信端口]
End Sub
‘ 在變頻器的輸出頻率為2 0 H z 時(shí),運(yùn)行該程序,在信息框中將顯示“*01C02000@”
4 結(jié)論
文章首先對RS-232與RS-485進(jìn)行了比較,然后介紹了基于RS-485三墾變頻器與上位機(jī)串行通信的實(shí)現(xiàn),實(shí)驗(yàn)表明:利用VB編制的人機(jī)界面操作簡便,取得了良好的實(shí)用效果。利用RS-485協(xié)議進(jìn)行串行通信,可以保證快速、穩(wěn)定遠(yuǎn)距離地傳輸數(shù)據(jù)。在目前以及以后的工業(yè)控制和其他方面必將得到越來越多的應(yīng)用。
參考文獻(xiàn)
[1].范逸之 陳立元.Visual basic 與RS-232串行通訊控制[M].清華大學(xué)出版社,2004-6.
[2].三菱電機(jī)株式會社.變頻器原理與引用教程[M].國防工業(yè)出版社,1998-9
[3].陽憲惠等.現(xiàn)場總線技術(shù)及其應(yīng)用[M].清華大學(xué)出版社,2001-2
[4].王明衍 趙毅.一種基于RS-485接口的通信方法[J].微計(jì)算機(jī)信息.2006-2(1).P220-222
論文創(chuàng)新點(diǎn):完成了三墾變頻器與PC機(jī)串行通信的設(shè)計(jì),該通信軟件穩(wěn)定可靠,能直觀的觀看變頻器的實(shí)際運(yùn)行狀態(tài),并能比較方便的進(jìn)行多組參數(shù)的設(shè)定和改寫。通過此軟件,極大的方便了工程師和客戶對變頻器的操控和掌握。
作者簡介:
賀安坤:男, 1972年6月生,漢族,講師,碩士,研究方向:單片機(jī)與嵌入式系統(tǒng)開發(fā),計(jì)算機(jī)應(yīng)用。Email: hak9000@sohu.com