摘 要:隨著科學技術(shù)的日益發(fā)展,變頻器被廣泛應(yīng)用到工業(yè)生產(chǎn)的每個角落。本文介紹了一種利用VB6.0編程,實現(xiàn)計算機與艾默生EV1000型變頻器間的頻率與狀態(tài)控制。實驗結(jié)果表明利用VB6.0提供的 Mscomm控件能夠很好的實現(xiàn)計算機對變頻器的控制。
關(guān)鍵詞:串行通迅;變頻器;VB6.0
1.引言
本文以對艾默生EV1000型變頻器的控制為例為大家介紹一種使用VB6.0編程工具提供的MScomm控件,通過RS485串行接口對一臺設(shè)備進行遠程控制的方案。
2.變頻器485串口通迅方案的設(shè)計
本方案采用艾默生Ev1000型變頻器,并在窗體上使用HScroll控件手動控制傳感器的工作頻率,將變器實際工作頻率與目標工作頻率顯示在窗體上。該通過數(shù)據(jù)發(fā)送模塊、數(shù)據(jù)讀取模塊兩個模塊組成。數(shù)據(jù)發(fā)送模塊將HScroll控件的最大值設(shè)為變頻器的最大工作頻率,本款變器為工頻變頻器,故最大值為50HZ最小值為0HZ。使變頻器的工作頻率和HScroll控件中的值一致。這樣可以通過拖動HScroll控件的滑動塊,就可以實現(xiàn)變頻器的頻率控制。
2.1 數(shù)據(jù)發(fā)送模塊
⑴ 簡述
數(shù)據(jù)發(fā)送模塊通過使用timer控件不停的讀取HScroll控件的值將其?????通過MScomm控件發(fā)送到變頻器。以達到通過拖動HScroll控件的滑動塊或者控制HScroll的值來控制變頻器的工作頻率的目的。
⑵ 模塊設(shè)計
本方案采用的變器為工頻變頻器,最大工作頻率為50HZ,可采用RTU和ASCII模式進行串行通迅。本方案采用ASCII模式,數(shù)據(jù)幀的格式為幀頭、從機地址、功能碼、數(shù)據(jù)、校驗碼、帖尾。幀頭為0X3A帖尾為0XD,0XA。常用功能碼最的作用是決定不同的操作請求。本方案需要使用的功能碼為0X03 和0X06這兩個參數(shù)。0X03功能為讀取變頻器功能碼參數(shù)和運行參數(shù),0X06改寫單個變頻器功能碼或者控制參數(shù),掉電之后不保存。從機地址,在一臺上位機控制多臺從機的情況下,可以通過該地址來識別各從機的工作狀態(tài),并對各從機發(fā)布命令。該值在變頻器中設(shè)置,本款變器的默認地址為05本方案未作改變。數(shù)據(jù)部分則由寄存器地址和變頻器控制字與變頻器狀態(tài)字組成。本方案需要使用的寄存地址分別3200設(shè)定變頻器工作狀態(tài)、3201設(shè)定變頻器工作頻率和3301‘變頻器實當前主設(shè)定的實際運行值。根據(jù)ev1000型變頻器通迅協(xié)議,變頻器控制字與狀態(tài)字由兩個八位二進制數(shù)編碼在轉(zhuǎn)換成十六進制數(shù)字符型進行傳輸。常用的是正常啟動變頻器,電機運行方向為正轉(zhuǎn)、允許加減速、上位機控制有效、故障復位無效,0000000111000111轉(zhuǎn)為十六進制數(shù)為01C7。讀取變頻器工作頻率0000000000000001轉(zhuǎn)為十六進制數(shù)為0001。設(shè)定變頻器頻率只需在設(shè)定變頻器寄地址后加上所需設(shè)定的頻率即可(表示方法同樣是四位十六進制數(shù),使用hex()函數(shù)從十進制轉(zhuǎn)為十六進制數(shù)不足四位在有效數(shù)前補零)。要注意的是本款變頻器與上位機之間通迅時傳遞的頻率信息時沒有小數(shù)位的信息以字符型直接發(fā)送給變頻器所以將HScroll控件的最大值設(shè)為5000,最小值為0。所以在收到變頻器發(fā)送的工作頻率信息時將其除以一百后才是其實際工作頻率。代碼如下:
Private Sub Form_Load()
yc1 = 0:sbz=chr(58):wbz=chr(13)+chr(10)
MSComm3.Output = Chr(58) + “0506320001C7” + lrcjiaoyan(“0506320001C7”) + Chr(13) + Chr(10) 在窗體啟動時啟動變頻器
End Sub
Private Sub Timer1_Timer()
Label9.Caption = HScroll1.Value / 100 ‘將hscroll的值實時顯示在窗體中
If yc1 > 5 Then ‘該值大于5時向控制變頻器的工作頻率
MSComm3.Output = Chr(58) + “05063201” + pl(Form1.HScroll1.Value) + lrcjiaoyan(“05063201” + pl(Form1.HScroll1.Value)) + Chr(13) + Chr(10)
yc1 = 0
Else
MSComm3.Output = Chr(58) + “050333010001” + lrcjiaoyan(“050333010001”) + Chr(13) + Chr(10)
yc1 = yc1 + 1 ‘yc1小于5時則讀取變器的實際工作頻率
End If
End Sub
2.2 數(shù)據(jù)接收模塊
⑴ 簡述
數(shù)據(jù)接收模塊通過MScomm控件的OnComm事件將變頻器向上位機發(fā)送的信號接收后轉(zhuǎn)換成十進制數(shù)并將其顯示在窗體上。
⑵ 模塊設(shè)計
首先將需要使用的sbz=chr(58),wbz=chr(13)+chr(10)兩個變量在Form_Load()事件中定義使之可以O(shè)nComm 事件中被引用。MScomm控件的OnComm事件是在串口每接收到一個字節(jié)的數(shù)據(jù)則觸發(fā)該事件,因為本方案使用timer事件每10毫秒觸發(fā)時便向變器發(fā)送一次讀取變頻器工作頻率的命令可以保證上位機能夠不間斷的接收到來自變頻器關(guān)于變頻器工作頻率的信息。本模塊將所收到的數(shù)據(jù)使用自定義的lrcjiaoyan()函數(shù)進行LRC較驗,并與發(fā)送變頻器的發(fā)送來LRC 校驗碼進行比對,如果比對結(jié)果一致則該數(shù)據(jù)幀有效,之后將其變頻器工作頻率的數(shù)據(jù)截取下來轉(zhuǎn)換成為十進制數(shù)后將其顯示到窗體上代碼如下:
Private Sub MSComm3_OnComm()
Dim inbyte3 As String:Dim zjg As String:Dim wbzwz As Integer
Dim sbzwz As Integer:Dim jiaoyanzhi As String:Dim jiaoyanzhi1 As String
Dim gn As String:Dim xspl As Integer:Dim sdpl As Long
inbyte3 = MSComm3.Input
inputstring = Trim(inputstring + inbyte3)去掉該數(shù)據(jù)中的空格
Do While InStr(inputstring, wbz) <> 0 And InStr(inputstring, sbz) <> 0
wbzwz = InStr(inputstring, wbz) ‘確定幀尾的位置
sbzwz = InStr(inputstring, sbz) ‘確定幀首的位置
zjg = Mid(inputstring, sbzwz, wbzwz + 1) ‘截取該數(shù)據(jù)幀中有效數(shù)據(jù)
inputstring = Trim(Mid(inputstring, wbzwz + 2))
jiaoyanzhi = Mid(zjg, wbzwz - 2, 2) ‘截取變頻器發(fā)送來的校驗碼
jiaoyanzhi1 = lrcjiaoyan(Mid(zjg, sbzwz + 1, wbzwz - 3)) ‘對數(shù)據(jù)進行校驗
If jiaoyanzhi1 = jiaoyanzhi Then ‘判斷LRc校驗值是否一致
gn = Mid(zjg, sbzwz + 1, 4)
if gn = “0503”
xspl = Val(“&h” + Mid(zjg, sbzwz + 7, 4)) ‘將讀取到的數(shù)據(jù)轉(zhuǎn)換為十進制
Label10.Caption = Str(xspl / 100) ‘將收到的數(shù)據(jù)顯示到窗體上
End if
End If
Inputstring = “ ” ‘清空inputstring的值準備接收下一幀數(shù)據(jù)。
Loop
End Sub
3 綜述
在對單一或幾臺支持串口通迅的設(shè)備如變頻器時進行復雜或者需要頻繁手動干預(yù)的操作時,使用PLC控制并連接到上位機并制作操作界面顯得不夠經(jīng)濟,而且增加了不必要的中間環(huán)節(jié)無形中則降低了整個系統(tǒng)的可靠性和維護成本,相比之下使用一臺上位機直接控制一臺或多臺設(shè)備則降低了企業(yè)的維護成本有利于提高中小企業(yè)的自動化程度。
參考文獻
[1]《EMERSON EV1000中文V2.1版說明書》;
[2]張輝、李榮利、王和平著《VISUAL BASIC串口通信及編程實例》;
作者簡介
郭琦(1982-),男,漢族,從事自動化及安全生產(chǎn)管理工作。