摘 要:在現代工業控制領域中,控制器作為下位機完成現場各種信號和數據的采集、運算和控制,上位機則可提供人機交互界面,實現數據的處理以及現場數據的實時顯示等監視和遠程控制等功能。本文介紹了利用VB.NET實現BC8000總線端子控制器與上位機之間串行通訊的原理及方法。
關鍵詞:VB.NET;串口通訊;SerialPort控件;BC8000
[align=center]Study on COM port Communication between BC8000 and PC Based on VB.NET
DENG Hua-chang,FANG Kang-ling,LIANG Kai,ZHANG Peng[/align]
Abstract:In the fields of modern industrial controlling,PLC is used to collect,calculate and control every kind of signals and data,while the host computer can provide mutual interface,realizing the functions of managing data and long-distance controlling.This paper introduces the theory and way on the COM port communication between BC8000 and host computer based on VB.NET.
Key Words:VB.NET;COM port communication;SerialPort;BC8000
PC機和控制器之間的通信問題一直是業界的熱門話題,它廣泛應用于工業控制系統、智能檢測系統、數據采集系統等。PC機與控制器之間通常采用兩種通信方式:并行通信和串行通信。并行通信是指將待發送數據的各位同時傳送。串行通信則將數據一位一位地按順序傳送。并行通信雖然傳輸效率高、速度快,但可靠性差,所需硬件設備復雜,不適于長距離通信,所以一般只適用于要求實時性強,傳送速率較高的系統中,實用面較窄。相比之下,串行通信雖然速度較慢、效率較低,但可靠性好,簡單易實現,傳輸距離較長,所以被廣泛應用于多種場合,特別適合于計算機與控制器之間的通信。
目前實現串口通信的軟件主要有VC++,VB6.0等。VC++對畫面的處理是較差的一環,而且培養一個熟練的VC++設計師可能需要花費很長的時間。VB6.0具有簡單易用,學習時間較短,畫面變化豐富等優點,但是不適合執行速度高,通信效率要求嚴格的自動監控系統程序。VB.NET是Microsoft最新推出的一種集成開發環境,它具有功能強大、界面友好、32位的真正面向對象、易學易用等特點,受到廣大用戶的青睞,被廣泛運用于各個領域。本文將介紹如何利用VB.NET來實現BC8000與PC的串口通信。
1 BC8000的串口通訊
1.1 BC8000簡介
BC8000是德國BECKHOFF公司生產的一種總線端子控制器,總線端子控制器即帶PLC功能的總線耦合器 。BC8000控制器長約100mm,寬約47mm,高約68mm,總線端子寬約12mm,最多可以擴展64個總線端子,體積很小,對占用場地有嚴格要求
的特殊環境BC8000有著無可比擬的優勢,它也可以很方便的嵌入到各種儀器儀表中。因其結構緊湊、安裝方便,而且性能穩定、價格便宜而得到廣泛的應用。BC8000上自帶一個外設端口(RS485),經過RS485/232轉換器可直接與PC連接進行數據傳輸。如圖1:
[align=center]

圖1 PC與BC8000連接圖[/align]
1.2 通訊設置
BC8000的RS485通訊模式的初始化是通過KS2000對控制器的table 001的寄存器32,33,34中的通訊參數進行修改來設置的波特率、奇偶校驗、停止位和數據位數:
寄存器32中設定波特率:0:38400,1:19200,2:9600,3:57600,4:1200,5:2400,6:4800。
寄存器33中設定模式:0:7個數據位, 偶校驗,1:7個數據位, 奇校驗,2:8個數據位, 無校驗,3:8個數據位, 偶校驗,4:8個數據位,奇校驗。
寄存器34設定停止位:0:1個停止位,1:2個停止位。
配置RS485通訊模式后,在TwinCAT的Library Manager中添加串口通訊庫,調用以下指令就可以進行數據的收發 :
?。?)發送數據指令SendData??梢岳么酥噶罘奖愕匕l送數據,可以發送一個或多個字節,最多可發送255個字節數據。
?。?)接收數據指令ReceiveData??梢岳么酥噶罘奖愕亟邮招畔ⅲ梢越邮找粋€或多個字節,最多可接收255個字節數據。
編程完畢后將BC8000的地址選擇開關設為99(主站模式)即可進行數據的傳輸。
2 串口通信在VB.NET平臺下的實現
Visual Basic.NET是Microsoft Visual Studio.NET套件中主要組成部分之一,是目前微軟.NET架構下最具活力的編程語言之一。它是在VB6.0的基礎上增加了許多新的面向對象的特性,諸如封裝、繼承、面向對象等,這大大加強了VB的功能。VB.NET支持面向對象編程、多線程處理、結構化異常處理等技術,能有效的保證軟件的穩定性和高效性。同時VB.NET在微軟.NET架構下能方便高效地實現與SQL Server數據庫的連接和操作。因此利用VB.NET實現串口通信具有現實意義。
2.1 VB.NET通信實現方法
利用VB.NET實現串口通信常用的方法有兩種:一種是自己用API函數編寫串口通信 ,但是程序復雜,可以完成更強大的功能,適合深度開發;另一種是直接使用控件。在VS2005以前的版本中,串行通信控件是Mscomm,而在VS2005中被升級為SerialPort。該控件具有豐富的與串行通信密切相關的屬性及事件,提供了對串口的各種操作,且操作方便,簡單易行。
2.2 SerialPort控件屬性
此控件所在的類是Microsoft最新在Microsoft .Net Framework 2.0中引進的。下面介紹此控件的主要屬性和驅動事件:
BaudRate:設置波特率。
DataBits:數據位。
Modifiers:繼承屬性控制,其枚舉值為Public、Protected、Protected Friend、Friend、Private。
Parity:檢驗性,其枚舉值為None、Odd、Even、Mark、Space。
PortName:串口號,對應Mscomm控件中的CommPort。
Read:從緩沖區讀數據.對應Mscomm控件中的Input。
ReadBufferSize:接收緩沖區的大小。
ReceivedBytesThreshold:接收緩沖區中接收到一個字符。就產生一次DataReceived事件。
StopBits:停止位。
Write:向緩沖區寫數據。
WriteBufferSize:發送緩沖區的大小。
DataReceived事件:是SerialPort最主要的事件,可以在此事件中對數據進行處理。
2.3 上位機的通訊程序設計
由于VB.NET編程語言具有非常方便的界面設計特性,可以快速地制作風格一致的友好的窗體界面 。程序員在利用SerialPort控件時,只需設置、監視其屬性和事件,即可完成對串行口的初始化和數據的傳輸工作。通過標準RS232串行接口將現場數據實時傳送到PC,并實現現場數據顯示的功能。主要程序示例如下:
Public Class Form1
Dim buffB(50) As Byte ‘串口接收緩沖區
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
SerialPort1.BaudRate = 9600 ‘波特率設定
SerialPort1.PortName = "com1" ‘端口設定
If SerialPort1.IsOpen = False Then SerialPort1.Open() ‘打開串口
End Sub
Private Sub SerialPort1_DataReceived(ByVal sender As System.Object, ByVal e As
System.IO.Ports.SerialDataReceivedEventArgs) Handles SerialPort1.DataReceived
SerialPort1.Read(buffB, 0, 50)
BeginInvoke(New EventHandler(Address Of function), SerialPort1.BytesToRead())‘接收字符串
End Sub
Sub function(ByVal sender As System.Object, ByVal e As System.EventArgs)
TextBox1.Text= Encoding.ASCII.GetString(buffB, 0, 30) ‘顯示
End Sub
End Class
3 應用舉例
在貴州水鋼二軋廠的數據監控系統中,需要通過串口采集所軋鋼材的種類及數目等實時數據,并對采集的數據進行處理、記錄等,為操作者安排生產提供依據。運用上述系統進行設計,運行結果如下圖2:
[align=center]

圖2 數據監控系統運行畫面[/align]
4 結語
本文利用VB.NET實現了BC8000總線端子控制器與上位機之間的串行通訊,并通過一個實際應用說明該方法是行之有效的??删幊踢壿嬁刂破髋c上位機之間串行通訊的應用,可以有效地提高控制系統的整體自動化程度。為小規模自動控制系統的數據傳輸提供了一條有效的解決途徑。
參考文獻
[1] RS485 Bus coupler BC8000[S].BECKHOFF New Automation Technology. 2006.
[2] 田原,李素若等. VB.NET程序設計[M].北京:北京交通大學出版社,2006.
[3] 范逸之,廖錦棋等. Visual Basic.NET自動化系統監控—RS-232串行通信[M].北京:中國青年出版社,2002.
[4] 陳健波,施東文,奚旦立等.基于VB.NET的礦井廢水監控系統的設計與實現[J].煤礦機械.2004,10:57-59.
[5] 黃衛華,方康玲,周紅軍等.基于組態王和VB的工業遠程監控系統[J].冶金自動化.2005,2:60:62