Chinaunix首页 | 论坛 | 博客
  • 博客访问: 120176
  • 博文数量: 9
  • 博客积分: 1485
  • 博客等级: 上尉
  • 技术积分: 235
  • 用 户 组: 普通用户
  • 注册时间: 2006-06-27 13:17
文章分类

全部博文(9)

文章存档

2011年(1)

2010年(3)

2009年(1)

2008年(4)

分类:

2010-04-01 14:38:48

2009-09-30 12:07
摘   要:在现代工业控制领域中,控制器作为下位机完成现场各种信号和数据的采集、运算和控制,上位机则可提供人机交互界面,实现数据的处理以及现场数据的实时显示等监视和远程控制等功能。本文介绍了利用VB.NET实现BC8000总线端子控制器与上位机之间串行通讯的原理及方法。

关键词:VB.NET;串口通讯;SerialPort控件;BC8000

Study on COM port Communication between BC8000 and PC Based on VB.NET
DENG Hua-chang,FANG Kang-ling,LIANG Kai,ZHANG Peng

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:


图1 PC与BC8000连接图

  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中添加串口通讯库,调用以下指令就可以进行数据的收发 :

  (1)发送数据指令SendData。可以利用此指令方便地发送数据,可以发送一个或多个字节,最多可发送255个字节数据。

  (2)接收数据指令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:


图2 数据监控系统运行画面

4 结语

  本文利用VB.NET实现了BC8000总线端子控制器与上位机之间的串行通讯,并通过一个实际应用说明该方法是行之有效的。可编程逻辑控制器与上位机之间串行通讯的应用,可以有效地提高控制系统的整体自动化程度。为小规模自动控制系统的数据传输提供了一条有效的解决途径。

阅读(10072) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~