siemens x
傳感器

泓格科技基于MODBUS 總線多功能電力儀表遠程通訊的軟件開發(fā)技術(shù)

2025China.cn   2008年09月19日

Based on MODBUS Software Technology of Remote Communication about Multifuctional Electrical
Instrument


作者:詹根基 郭厚焜 單位:華東交通大學(xué)機電學(xué)院

  【內(nèi)容摘要】本文通過對江陰長江斯菲爾電力儀表公司的多功能電力儀表進行具體的分析,介紹了基
于Visual Basic 軟件編程開發(fā)了遠程讀取多功能電力儀表數(shù)據(jù)的程序。通過MSComm 控件對RS-232
串口COM1 的進行控制,實現(xiàn)了對多功能電力儀表遠程控制功能。
  【關(guān)鍵詞】RS-232 串口,MODBUS 總線,MSComm 控件,232/485 轉(zhuǎn)換模塊
Abstract The paper analyzes multifunctional electrical instrument of JianYin Changjiang Sfere Electric
Power Company Limited specifically. It is introduced remotely accessing multifunctional electrical
instrument by application of Visual Basic. The paper achieves to remotely control multifunctional electrical
instrument by using MSComm control to access serial port COM1.
Key Words RS-232 serial port, MODBUS, MSComm Control, 232/485 Converter Module

一、前言
  原來的電力系統(tǒng)中,高低壓配電柜中往往要安裝各種各樣的儀表,(如電度表、電流表、電壓表
等)實現(xiàn)對電力系統(tǒng)的監(jiān)視。而如果在一些大廠往往就有很多儀表,每隔一段時間就要有專人帶著紙
筆到廠區(qū)內(nèi)的所有儀表點巡視一番,并將所有的數(shù)值記錄下來,帶回辦公室作數(shù)據(jù)分析和處理。
  隨著計算機科學(xué)技術(shù)的發(fā)展,計算機在電力監(jiān)控領(lǐng)域中得到了越來越廣泛的應(yīng)用。使用多功能智
能電力儀表代替機械式的電力儀表是工業(yè)自動化的大勢所趨。由于多功能儀表不但可以一表多用,而
且一般的多功能儀表都可以通過其通訊接口來實現(xiàn)對儀表的編程、數(shù)據(jù)采集等功能。所以使用多功能
電力儀表能夠在很大程度上減少人們的勞力,并且可以極大地提高效率。
由于實現(xiàn)對電力多功能儀表的監(jiān)視,功能比較單一,且市場上的組態(tài)軟件也比較昂貴。在這里作者就
是用MSComm 控件實現(xiàn)對串口的控制,實現(xiàn)對江陰長江斯菲爾電力儀表公司的多功能電力儀表遠程
讀取電能數(shù)據(jù),從而達到軟件的設(shè)計。MSComm 控件是Microsoft 提供的擴展控件,用于支持VB 程
序?qū)Υ诘脑L問,該控件“隱藏”了大部分串口通訊的底層運行過程和許多煩瑣的處理過程,同時支持
查詢方法和事件驅(qū)動通訊的機制。因此用其實現(xiàn)微機串口的數(shù)據(jù)通訊相當簡單,以很少的程序代碼就
可以輕松串口的訪問和數(shù)據(jù)通訊。

二、MODBUS 通訊協(xié)議分析:
  由于江陰長江斯菲爾電力儀表公司CD194E 系列的多功能電力儀表是采用遠程RS-485 數(shù)字接口
(差分、半雙工)和使用MODBUS-RTU 通訊協(xié)議,來實現(xiàn)對儀表的編程、數(shù)據(jù)采集等功能,所以先
介紹MODBUS 協(xié)議:
  MODBUS 協(xié)議是一種主從式點對點的通訊協(xié)議,允許一臺主機和多臺從機之間進行數(shù)據(jù)通信,
在CD194E 系列的多功能電力儀表通訊系統(tǒng)中,主機是微機(PC、工控機、PLC),從機是CD194E
系列儀表。在該通訊系統(tǒng)中,允許系統(tǒng)連接多達128 個儀表及1200 米的通訊距離。通訊方式采用主
機請求,從機應(yīng)答。即:主機提出命令請求,從機響應(yīng)接收數(shù)據(jù)后作數(shù)據(jù)分析,如果數(shù)據(jù)滿足通訊規(guī)
約,從機做數(shù)據(jù)響應(yīng)。

主、從機間的通訊每一幀數(shù)據(jù)包含以下信息(16 進制):
從機地址、命令字、信息字、校驗碼
從機地址(1 個字節(jié)):從機設(shè)備號,主機利用從機地址來識別進行通訊從機設(shè)備。
命令字(1 個字節(jié)):設(shè)定主機對從機的通訊內(nèi)容。
信息字(N 個字節(jié)):包括進行兩機通訊中各種數(shù)據(jù)地址、數(shù)據(jù)長度、數(shù)據(jù)信息。
校驗碼(2 個字節(jié)):用于檢測數(shù)據(jù)通訊錯誤,采用循環(huán)冗余碼CRC16。
通訊參數(shù)的設(shè)置:通過儀表上的編程鍵盤對儀表的儀表地址(1-247)、通訊速度(4800 或9600)和
數(shù)據(jù)格式(1 個起始位,8 個數(shù)據(jù)位,1 個停止位,可選擇無校驗位、奇校驗位、偶校驗位。)進行設(shè)
置。
網(wǎng)絡(luò)連線如圖一如示:


  在這里,作者使用的是臺灣泓格科技有限公司的232/485 轉(zhuǎn)換模塊I-7520。由主控計算機送出的
命令是通過RS-232 串行通信端口發(fā)送出去,此信號經(jīng)過232/485 轉(zhuǎn)換模塊(模塊編號I-7520)將信號
標準電位及類型轉(zhuǎn)換后,在485 網(wǎng)絡(luò)上傳播開來。多功能電力儀表收到屬于自身的命令后,會進行分
析控制的操作,最后將結(jié)果送至485 網(wǎng)絡(luò),讓此信號再通過I-7520 的轉(zhuǎn)換后,可由計算機的RS-232
串行通信端口接收進來。整個送收過程全是以串行處理。

三、軟件的設(shè)計和開發(fā)

注:從CD194E 系列的多功能電力儀表傳過來的電功率數(shù)據(jù)就存放在Byte1 到Byte4 內(nèi)。
3.通信步驟:
⑴加入通信控件。也就是MSComm 控件
⑵設(shè)置通信端口號碼。即CommPort 屬性,在本文使用Com1。
⑶設(shè)置通訊參數(shù)。即Settings 屬性。在本文設(shè)置為9600,n,8,1。即通訊速度為9600,數(shù)據(jù)格式為1 個
起始位,8 個數(shù)據(jù)位,1 個停止位,無校驗位。注意必須與多功能電力儀表的設(shè)置一致,不然就會通
信失敗。
⑷設(shè)置其它參數(shù)。必要時再加上其它的屬性設(shè)置。
⑸打開通信端口。即PortOpen 屬性設(shè)成True。
⑹每隔500毫秒送出字符串或讀入字符串。即發(fā)送命令4(讀N 個字節(jié))來讀取電功率參數(shù),使用
Input 及Output 屬性。
⑺使用完MSComm 控件后,將通信端口關(guān)閉。
4.人機界面:

5.程序代碼:
’API 函數(shù)聲名
Private Declare Function GetTickCount Lib "kernel32" () As Long
’點擊結(jié)束程序按鈕
Private Sub CmdEnd_Click()
End
End Sub
’點擊讀取電功率按鈕
Private Sub CmdRead_Click()
d = Not d
If d Then
n = "停止讀數(shù)"
Else
n = "讀取電功率"
End If
End Sub
’程序初始化
Private Sub Form_Load()
ode = comInputModeBinary
en = True
d = False
End Sub
Private Sub Timer1_Timer()
Dim C4%, C5%, C6%, C7%
Dim Tick&
Dim Data As Double
Dim Buf() As Byte
Dim ByteOut(7) As Byte
en = 0
Buf =
’重新定義數(shù)據(jù)輸入緩沖區(qū), 發(fā)送命令4
en = 1
ByteOut(0) = &H1
ByteOut(1) = &H4
ByteOut(2) = &H0
ByteOut(3) = &H5C
ByteOut(4) = &H0
ByteOut(5) = &H4
ByteOut(6) = &H31
ByteOut(7) = &HDB
= ByteOut(0) & ByteOut(1) & ByteOut(2) & ByteOut(3) & ByteOut(4) & ByteOut(5) &
ByteOut(6) & ByteOut(7)
’等待多功能電力儀表響應(yīng)的數(shù)據(jù)到達串口
Tick = GetTickCount()
Do
If (GetTickCount() - Tick) / 1000# > 10 Then
MsgBox "時間過久,請檢查多功能電力儀表及傳輸狀態(tài)!", vbCritical + vbOKOnly, "系統(tǒng)信息"
Exit Sub
End If
DoEvents
Loop Until erCount >= 9
’從輸入緩沖區(qū)讀數(shù)據(jù)
Buf =
If Buf(0) <> 1 Then
MsgBox "地址錯誤!", vbCritical + vbOKOnly, "系統(tǒng)信息"
Exit Sub
End If
Buf =
If Buf(0) <> 4 Then
MsgBox "命令錯誤!", vbCritical + vbOKOnly, "系統(tǒng)信息"
Exit Sub
End If
Buf =
If Buf(0) <> 4 Then
MsgBox "長度錯誤!", vbCritical + vbOKOnly, "系統(tǒng)信息"
Exit Sub
End If
Buf =
C4 = Buf(0)
Buf =
C5 = Buf(0)
Buf =
C6 = Buf(0)
Buf =
C7 = Buf(0)
Buf =
Buf =
Data = Power(C4, C5, C6, C7)
= CStr(Data)
End Sub
’自定義功率換算函數(shù)
Private Function Power(C4%, C5%, C6%, C7%)
Dim PowerExp As String, Mantissa As String
Dim ReadValue#
Dim ValueSign&
If ((C4 And &H80) / 2 ^ 7) = True Then
ValueSign = -1
Else
ValueSign = 1
End If
PowerExp = CStr((C4 And &H7F) * 2 + (C5 And &H80) / 2 ^ 7)
Mantissa = CStr((&H80 Or C5) * 2 ^ 16 + C6 * 2 ^ 8 + C7)
ReadValue = ValueSign * 2 ^ (Val(PowerExp) - 126) * Val(Mantissa) / (256 * 65536)
Power = ReadValue
End Function

四、結(jié)論
本實例是作者在實驗室做過多次實驗,達到了預(yù)定的應(yīng)用效果,目前在江西某廠取得了實際的應(yīng)用。
該控制系統(tǒng)的最大優(yōu)點是:
1,從硬件上看,僅僅使用一個轉(zhuǎn)換模塊就可以實現(xiàn)全廠電能遠程監(jiān)控和集中管理的功能。大大提高
了效率,且十分經(jīng)濟實惠。
2,從軟件上看,直接使用串口的控制技術(shù),而不必需要寫額外的驅(qū)動程序。采用VB 開發(fā)應(yīng)用軟件十
分方便,編程工作量小。
【參考文獻】
1.李肇慶、韓濤。串行端口技術(shù),國防工業(yè)出版社,2004
2.范逸之。Visual Basic 與RS-232 串行通信控制,清華大學(xué)出版社,2002
3.范逸之。Visual Basic 與分布監(jiān)控系統(tǒng)——RS232/485 串行通信,清華大學(xué)出版社,2002
4.江陰長江斯菲爾電力儀表有限公司使用手冊
5. 臺灣泓格科技有限公司的232/485 轉(zhuǎn)換模塊說明書.

(轉(zhuǎn)載)

標簽:泓格科技 電力儀表遠程通訊 MODBUS 我要反饋 
2024世界人工智能大會專題
即刻點擊并下載ABB資料,好禮贏不停~
優(yōu)傲機器人下載中心
西克
2024全景工博會
專題報道