VB通信

2024-05-30

VB通信(精选九篇)

VB通信 篇1

电子天平具有称量精确、方便实用、数值快速稳定等特点,主要用来测定物体的质量、密度等参数。目前广泛应用于工业企业及实验室等领域。目前国内使用的电子天平种类众多,但无论量程大小或者精度的高低,其基本构造原理都很类似。主要的区别在于天平传感器数据采集及处理的方式。因为传感器本身会随着温湿度、蠕变、各类偏差、线性等因素改变而产生不同的电压差,其采集到的数据也会随之有所变化。随着电子秤的广泛应用,在实际称重过程中,仅靠电子秤自身管理、控制,其局限性日益突出。如果能把电子秤的数据传至计算机处理,利用其强大的管理和控制功能,不但可拓展电子秤的应用范围,而且其性能价格比、安全可靠性、控制灵活性、操作简易性、人机交互性、管理自动化均将获得极大提高。将以市场上主流的电子天平为平台并结合自己的实践,给出一个通过计算机进行数据采集的实例,如图1所示。

2 系统硬件配置

2.1 电子天平选型

电子天平选用某公司(SARTORIUS)BS系列电子天平,型号:BS210S;量程210g,精度:0.1mg,带有9针数据输出串口。该仪器具有动态响应快、测量精度高、功能丰富等特点。内置RS-232通信接口,可以方便连接打印机、电脑等外围设备。

2.2 上位机配置

装有Windows XP Pro中文专业版的台式计算机。该计算机带有与9针串口,方便与仪器进行数据通信。

2.3 通信电缆

电子天平与电脑的连接电缆采用遵循RS232协议的数据连接线,如图2所示。

3 系统开发平台及协议

3.1 开发平台

开发平台采用MS VB6.0进行程序编写。基于VB开发平台的串行通信程序在工业领域有着广泛的应用。而VB平台本身也具有简单、灵活、可扩展性强等特点,非常适合应用于工业及实验室产品的数据通信软件开发。

3.2 通信协议

电脑与电子天平通信时采用RS232协议。目前电子秤的通信多以电子秤内置串口与计算机串口或者并口进行数据交换为主。计算机与电子天平之间用屏蔽多芯电缆通过串口连接,根据RS232协议的要求,连接线的距离一般不能超过15米,超过这个距离后数据传输就不能保证。更长距离的传输需要基于RS485或者RS422协议。在工业生产对自动化要求越来越高的今天,利用计算机实行监测和控制已十分普及。串行通信技术的特点是传输线少、成本低。与并行通信相比较,其通信响应速度快、传输速率适中、且编程相对简单。

3.3 通信控件

系统开发采用的串行通信可通过VB6.0中的MSCOMM控件实现。MSCOMM控件是Microsoft提供的扩展控件,用于支持VB程序对串口的访问,该控件包含了大部分串口通信的底层运行过程和许多繁琐的处理过程,同时支持查询方法和事件驱动通信的机制,特别适合基于Windows系统的串口程序开发。在串口通信过程中,当发送数据、收到数据或产生传输错误时,均触发MSComm控件的OnComm事件,然后可以通过判断CommEvent属性值获得事件类型,再根据事件类型进行相应数据处理。因此用很少的程序代码就可以实现上位计算机与底层设备的串口数据通信。

4 通信接口设计

4.1 MSCOMM属性

(1)通信协议为:无起始位和奇偶校验位、数据位8位、停止位1位、波特率9600bps、传送码为ASCII码。

(2)CommPort属性:用于设置并返回通信端口号,即常说的串口号,可取值为1~16,默认值为1。

(3)Setting属性:用于设置初始化参数,以字符串的形式设置并返回波特率、奇偶校验、数据位、停止位,默认值为“9600,N,8,1”。

(4)PortOpen属性:设置并返回通信端口的状态,也可以打开和关闭端口,可选值为True和False。使用串口之前必须先将要使用的串口打开,而使用完毕之后必须关闭该串口。

(5)Input属性:用于从接收缓冲区返回和删除字符。

(6)Output属性:用于向传输缓冲区写一个字符串。

(7)InBufferSize属性:用于表示整个接收缓冲区的大小,缺省值是1024字节。

(8)InBufferCount属性:用于表示返回接收缓冲区中等待的字符数。可以把InBufferCount属性设置为0来清除接收缓冲区。

(9)OutBufferCount属性:用于表示返回在传输缓冲区中等待的字符数。为0可以清除传输缓冲区。

4.2 通信控制命令

图3、图4为赛多利斯天平的通信控制命令形式。控制命令采用固定的22位帧地址。地址形式如图4所示。该协议可以在开发工具加载串口协议控件后以如图3中的组合编码方式进行调用。下面是字符在表中所代表的含义:

K代表:ID地址

V代表:+/-符号

W代表:称重值

E代表:称量单位

S1/S2代表控制字符

4.3 通信功能命令格式

如图5所示。

ESC代表一个空格字符

K代表一个结构字符

K2代表另一种结构字符

_代表下划线

CR代表返回一个值

LF代表对齐格式

电子天平的通信功能控制命令基本相同,不同型号的电子天平略有差异,应根据电子天平的型号有所选择。例如:计算机请求电子天平发送“打印”请求(即从天平读取数据),只要从计算机串口输出打印控制命令Esc P CR LF(其ASCII码值为:ESC(27),P(80),CR(13),LF(10)即可,其中的字符“P”就是用来表示图4中字符“K”所代表的具体控制字符。又如向天平发送代码ESC T CR LF(其ASCII码为:ESC(27),T(84),CR(13),LF(10)即为除皮功能。

5 系统程序

5.1 用ASCII码进行通信功能命令控制

要实现计算机与电子天平串行通信,必须开发一个应用程序,通过它实现两者之间的数据交换。VB的MSCOMM控件提供两种通信方式:事件驱动方式和查询通信方式,本实例采用前者,下面具体说明通信程序的编制。通信控制程序的主界面如图6所示。

当点击图6软件上按钮“称量”,计算机将向天平发送“打印(从天平取称量值)”,程序代码如下所示:

5.2 主控制程序

5.3 需要注意的地方

(1)进行软件编写前需要对MSComm控件初始化设置:

MSComm Settings:1200,O,7,1(波特率1200,采用奇校验O,7个停止位,1个数据位)

(2)在系统开发过程中,如不需使用串口时,应及时关闭串口,释放系统资源。否则可能会影响系统的其他应用。

(3)需采用符合天平线序的链接线,如图2连接电脑与天平。

(4)不同型号的赛多利斯天平控制代码略有不同,具体请参考产品说明书。

6 结语

通过一个实例编写了一个基于RS232协议的串行通信通信软件,利用VB6.0结合串行通信的方式实现了电脑与电子天平(型号:BS210S)的通信及数据处理问题。VB作为一种成熟的开发平台,可以提供良好的人机界面和面向对象的设计方法。串行通信作为一种技术成熟、方便可靠的通信方式,不失为一种有效的通信手段。程序功能丰富,可以实现多种方式称量、按需存储、根据用户需求将数据转化成密度或方差等形式输出等功能。该软件采用了模块化的控制方式,可扩展性强,非常适合与实验室与工业自动化相关的领域,可以方便地为用户开发功能强大、实时性强的串口通信程序。

摘要:以电子天平为例(型号:BS210S),提供了电子天平和计算机进行串口通信时的接口命令及功能控制方法,并利用VB6.0设计了电子天平的串口通信程序,实现了数据的双向传输、数据处理等功能,为实验室研究和工业自动化领域提供方便可靠的自动采集数据的方法。

关键词:电子天平,通信,程序开发,Visio Basic 6.0

参考文献

[1]Data interface descriptions for GD,GE and TE models,Sartorius AG,2004.

[2]Description of the interface for EA,EB,GD,GE and TE balances/scales,Sartorius AG,2004.

[3]Microsoft公司.Microsoft Visual Basic6.0控件参考手册[Z].北京希望电子出版社,2003.

[4]范逸之,陈立元.Visual Basic与RS—232串行通信控制[M].北京:清华大学出版社,2002.

[5]高峰霞,廖彬山.Visual Basic6.0中文版提高与应用.电子工业出版社,1999.

VB与三菱PLC通信 篇2

VB源代码下载

http:///download.action?t=40&k=MTQzOTcxMTM=&pcode=LCw1NTkwMzYsNTU5MDM2&rPLC以卓越的可靠性和方便的可编程性广泛应用于工业控制领域。实现PC机与PLC通信的目示、动态数据画面显示、报表显示、窗口技术等多种功能,为PLC提供良好的人机界面。本文详在Windows环境下,使用VB6.0开发通信程序,实现了PC机与FX系列PLC之间的协议进行了详细的介绍,并以VB为开发工具实现了PC机与FX系列PLC的串行通信。1 前言

PLC以卓越的可靠性和方便的可编程性广泛应用于工业控制领域。实现PC机与PLC通信的目示、动态数据画面显示、报表显示、窗口技术等多种功能,为PLC提供良好的人机界面。本文详在Windows环境下,使用VB6.0开发通信程序,实现了PC机与FX系列PLC之间的2 PC机与PLC实现通信的条件

带异步通信适配器的PC机与PLC只有满足如下条件,才能互联通信:

(1)带有异步通信接口的PLC才能与带异步通信适配器的PC机互联。还要求双方采用的总线元”变换之后才能互联。

(2)双方的初始化,使波特率、数据位数、停止位数、奇偶校验都相同。

(3)要对PLC的通信协议分析清楚,严格地按照协议的规定及帧格式编写PC机的通信程序。程。

3 PC机及与FX系列PLC的串行通讯 3.1 硬件连接

PC机与FX系列PLC不能直接连接,要经过FX-232AW单元进行RS232C/RS-接关系:

3.2 FX系列PLC的通信协议

在PC机中必须依据互联的PLC的通信协议来编写通信程序,因此先介绍FX系列PLC的通信(1)数据格式

FX系列PLC采用异步格式,由1位起始位、7位数据位、1位偶校验位及1位停止位组成,波I码。(2)通信命令

FX系列PLC有4个通信命令,它们是读命令、写命令、强制通命令、强制断命令,如下表所示M—辅助继电器;S—状态元件;T—定时器;C—计数器;D—数据寄存器。(3)通信控制字符

FX系列PLC采用面向字符的传输规程,用到5个通信控制字符,如下表所示。*当PLC对PC机发来的ENQ不理解时,用NAK回答。(4)报文格式

PC机向PLC发送的报文格式如下:

其中STX为开始标志:02H;ETX为结束标志:03H;CMD为命令的ASCII码;S字节求累加和,溢出不计。由于每字节十六进制数变为两字节ASCII代码,故校验和为SUM数据段格式与含义如下:

*写命令的数据段有数据,读命令的数据段则无数据。读/写字节数为01H~40H(1~64)个。PLC向PC机发送的应答报文格式如下:

*对读命令的应答报文数据段为要读取的数据,一个数据占两个字节,分上位下位: 对写命令的应答报文无数据段,而用ACK及NAK作为应答内容。(5)传输过程

PC机与FX系列PLC之间采用应答方式通信,传输出错则组织重发。其传输过程如下:

PLC根据PC机的命令,在每个循环扫描结束处的END语句后组织自动应答,无需用户在PL4 利用VB6.0编写通信程序

下面以一个简单的例子来说明编写通信程序的要点。假设PC机要求从PLC中读入从D123开4),其传输应答过程及报文如下(图略可向作者索取):

命令报文中10F6H为D123的地址,04H表示要读入4个字节的数据。校验和SUM=3+30H+34H+

03H=174H,溢出部分不计,故SUMH为'7',SUML为‘4’,相应的ASCII中4个字节的十六进制数,其相应的ASCII码为8个字节,故应答报文长度为12个字节。根据PC机与FX系列PLC的传输应答过程编制出如下所示的通信程序流程图略。

利用VB的MSComm控件,按照流程图可以编写如下通信程序实现PC机与FX系列PLC之omm控件可以采用轮询或事件驱动的方法从端口获取数据。在这个例子中使用了轮询方法。(1)通信口初始化

Private Sub Initialize()MSComm1.CommPort = 1

MSComm1.Settings = ″9600,E,7,1″ MSComm1.InBufferSize = 1024 MSComm1.OutBufferSize = 1024 MSComm1.InputLen = 0

MSComm1.InputMode = comInputModeText MSComm1.Handshaking = comNone MSComm1.PortOpen = True End Sub(2)请求通信与确认

Private Function MakeHandShaking()As Boolean Dim InPackage As String MSComm1.OutBufferCount = 0 MSComm1.InBufferCount = 0 MSComm1.Output = Chr(&H5)Do

DoEvents Loop Until MSComm1.InBufferCount = 1 InPackage = MSComm1.Input If InPackage = Chr(&H6)Then MakeHandShaking = True Else

MakeHandShaking = FalseEnd If End Function(3)发送命令报文

Private Sub SendFrame()Dim OutString As String MSComm1.OutBufferCount = 0 MSComm1.InBufferCount = 0

OutStrin = Chr(&H2)+″0″+″10F604″+Chr(&H3)+″74″MSComm1.Output = OutString End Sub(4)读取应答报文

Private Sub ReceiveFrame()Dim InString As String Do

DoEvents

Loop Until MSComm1.InBufferCount = 12 InString = MSComm1.Input End Sub 5 结束语

以本文所述机制编写的通信程序已成功用于以FX2N型PLC作为主控制器的高层建筑玻璃幕墙现了PC机对PLC的监视和控制。同时,本程序对PC机与其它型号PLC之间的通信也有一定下面是我自己写的一个VB与三菱FX系列PLC通讯的软件,如果想学习的可以下下来看看,下载地要源代码的留下邮箱!有什么不懂得也可以给我留言。我会做出解答的。下载地址

VB通信 篇3

关键词:串口通信;监控;VB6.0

中图分类号:TP393文献标识码:A文章编号:1009-3044(2007)18-31487-01

VB6.0 Equipment with Serial Communication and Monitoring Capabilities

GU Huan-yu

(Shanghai Telecom Technology Development Ltd.,Shanghai 200065,China)

Abstract:In practical applications,the computer serial port and external serial devices commonly used data transmission channel.This paper introduces the basic principles of serial communication function and presented in windows environment serial communication under the general methods and steps, and Visual Basic 6.0 programming under.

Key words:Serial Communication;Monitor;VB6.0

1 引言

计算机串口是通过串行通讯方式进行通信,即一条信息的各位数据被逐位按顺序传送。串行通讯的特点是:数据位传送按位顺序进行,最少只需一根传输线即可完成,成本低、速度较慢,距离可以从几米到几千米。数据通讯量不是很大时,在工控领域广泛地使用串口通信对设备进行监控。

2 问题描述

为了完成对IP网关相应设备是否正常的监视,包括监视输入线路馈电是否正常,控制前端机完成对使用线路与备用线路之间的切换,随时查询控制状态和监视结果,设计计算机串口通信程序。

通讯指标:通信方式为波特率9600bps的主从半双工串行方式,数据包内字节间最大时隙1.5ms,前端机对主站下行指令的最大响应时间为10ms。

数据包格式为:

(3)校验字为长度字和数据字符段的模256算术和。

3 设计思路

系统主要实现以下功能,即对设备发送读指令,读取设备状态;对设备发送控制指令,控制设备动作。下面以N=0(设备号为0)为例,简单说明程序设计的思想。

(1)系统初始化,系统对N=0的设备发出写控制字命令,所有线路走A路。监测前端机返回状态。

(2)监测线路状态,向前端机发出读状态字命令,分析前端机返回状态,并通过可视界面即时显示。

(3)控制设备:如切换电路等,由系统向设备发出写控制字命令,控制设备动作,通过监测前端机返回状态,判断动作是否成功完成。

4 系统实现

随着Windows的广泛应用,越来越多的微机用户已习惯于Windows操作系统。现在有诸多应用软件都可以帮助我们比较方便实现以上功能,编程工作量相对较小,只需进行主要应用功能的编程和少量界面控制的编程。VB的通讯控件友好、功能强大,编程速度快,加上VB的易学、易用,快速开发等特点,数据通讯量不是很大时,在单片机通讯领域广泛地使用VB开发PC上层通讯软件。下面以VB6.0为例简要说明串口通信的实现。

在VB的控件工具箱中,提供了一个使用非常方便的串行通讯控件MSComm,它全面的提供了使用RS-232串行通讯上层开发的所有细则,它既可以使用查询方式又可以使用事件驱动方式来完成串行通讯。在窗体中加入MSComm控件, 取名为MSComm1, 加入Command命令按钮并取名为initialize. 写入以下代码实现系统初始化:

Private Sub initialize_Click()

If MSComm1.PortOpen = True Then MSComm1.PortOpen = False

MSComm1.InBufferSize = 40 '设置MSComm1接收缓冲区为40字节

MSComm1.CommPort = 1

'设定Com1

If MSComm1.PortOpen = False Then

MSComm1.Settings = "9600,n,8,1"

'9600波特率,无校验,8位数据位,1位停止位

MSComm1.PortOpen = True

'打开串口

End If

MSComm1.OutBufferCount = 0

'清空发送缓冲区

MSComm1.InBufferCount = 0

'清空接收缓冲区

outL(0) = "10"(十进制)

outL(1) = "18"

outL(2) = "208"

outL(3) = "0"

……

outL(19) = "0"

outL(20) = "226"

outL(21) = "13" (outL数组设为Byte 数据类型,存储为单精度型、无符号整型、8 位(1个字节)的数值形式,范围在 0 至 255 之间。)

MSComm1.Output = outL

With MSComm1

.InputMode = comInputModeBinary '设置接收数据模式为二进制形式

'为了实现实时监测功能,接收数据的读取要尽可能的快速,则设置MSComm1的属性如下:

.RThreshold = 1'设置接收一个字节产生OnComm事件

.InputLen = 1 '设置Input 一次从接收缓冲读取字节数为1

.OutBufferCount = 0 '清除发送缓冲区

MaxW = -99 '最大值赋初值

MinW = 99 '最小值赋初值

w = 0 '数据个数计数器清零

If .PortOpen = False Then'判断通信口是否打开

.PortOpen = True '打开通信口

If Err Then'错误处理

MsgBox "串口通信无效"

Exit Sub

End If

End If

End With

End Sub

控件MSComm提供了一个事件OnComm,该事件可以截取串口的任何消息,转入事件处理程序。OnComm可以扑获通讯时发生的串口事件和错误信息,当有串口事件或错误发生时,VB会立刻触发一个OnComm事件,程序就会自动转入OnComm事件处理程序中。MSComm1_OnComm的事件处理程序只处理 comEvReceive事件,首先判断帧数据的开始字节,关闭OnComm接收事件,然后接收数据字节。具体源代码如下:

Dim ab(6) As Byte '字节数据类型数组,用来存储接收到的一组字节数据

Dim av As Variant '用来从接收缓冲区读取数据

Private Sub MSComm1_OnComm()

With MSComm1

Select Case .CommEvent'判断MSComm1通信事件

Case comEvReceive'收到Rthreshold个字节产生的接收事件

av = .Input'读取一个接收字节

ab(1) = av(0)'转换保存到字节数据类型数组

If ab(1) = 10 Then'判断是否为数据开始标志

RThreshold = 0'关闭OnComm事件接收

Do

Loop Until .InBufferCount >= 5

'循环等待MSComm1接收缓冲区>=5个字节

w = w + 1 '计数器累加计数

For i = 2 To 6

av = .Input '读取第二个数据字节(BCD码高位字节)

ab(i) = av(0)'转换保存到字节数据类型数组

Next i

Else

MsgBox "接收数据错误", vbOKOnly, "提示"

Exit Sub

End If

.InBufferCount = 0'清除接收缓冲区

.OutBufferCount = 0 '清除发送缓冲区

End With

End Sub

读状态,响应状态的程序设计也是相似的,但接收到响应状态字需要分析数据。

5 结论

本系统利用VB6.0下的ActiveX控件的串行通信功能,实现了在Windows环境下用单台PC机监控的任务,完成对IP网关相应设备是否正常的监视,监视输入线路馈电是否正常,控制前端机完成对使用线路与备用线路之间的切换,可随时查询控制状态和监视结果。且可结合数据库,纪录通话时间等,模拟交换机功能。整个控制系统灵活方便,具有很大的实用性。

参考文献:

[1]范逸之,陈立元.Visual Basic与RS-232串列通信控制(最新版).清华大学出版社,2002.

[2]Evangelos Petroutsos,Kevin Hough. Visual Basic 6高级开发指南.电子工业出版社,1999.

VB通信 篇4

关键词:串口通信,VB.net,SerialPort,巡检系统

1 概述

串口通信 (Serial Communications) , 是指外设和计算机间, 通过数据信号线、地线、控制线等, 按位进行传输数据的一种通讯方式。串口通信是计算机上一种常用的设备通信协议, 串行接口按电气标准及协议来分包括RS-232C、RS-422、RS485等, 串口通信方便易行, 广泛应用于工业测控领域。

在.NET平台下使用VB.NET语言实现串口通信主要有三种方法:一是采用VB6.0中的MSComm控件;二是采用微软在.NET2.0及其以后版本提供的内置的串口操作类Serial Port;三是采用第三方API函数。该文主要介绍NET Framework 2.0类库包含了Serial Port类。

2 串口通信原理

串口通信是按位 (bit) 发送和接收字节。尽管比按字节 (byte) 的并行通信慢, 但是串口可以在使用一根线发送数据的同时用另一根线接收数据。它很简单并且能够实现远距离通信。IEEE488定义串口通信长度可达1200米。串口用于ASCII码字符的传输。通信使用3根线完成, 分别是地线、发送、接收。由于串口通信是异步的, 端口能够在一根线上发送数据同时在另一根线上接收数据。其他线用于握手, 但不是必须的。串口通信最重要的参数是波特率、数据位、停止位和奇偶校验。对于两个进行通信的端口, 这些参数必须匹配。

3 Serial Port类介绍

在VB6.0中编写串口通讯程序, 一般都使用Microsoft Communication Control (简称MSComm) 的通讯控件实现。随着微软Visual Studio不断升级, Visual Studio.Net没有将MSComm控件加入控件库, 而是在NET Framework 2.0类库包含了Serial Port类, 实现串口通讯的多种功能。该文详细介绍VB.net语言中的Serial Port类, 实现上、下位机串口通信软件的设计方法。Serial Port类具体介绍如下:

3.1 命名空间

System.IO.Ports命名空间包含了控制串口重要的Serial Port类, 该类提供了同步I/O和事件驱动的I/O、对管脚和中断状态的访问以及对串行驱动程序属性的访问, 所以在程序代码起始位置需加入Using System.IO.Ports。

3.2 串口的通讯参数

串口通讯最常用的参数就是通讯端口号及通讯格式 (波特率、数据位、停止位和校验位)

Port Name属性:获取或设置通信端口, 包括但不限于所有可用的COM端口, 该属性返回类型为String, Port Name返回的值为COM1、COM2……。

Baud Rate属性:获取或设置串行波特率。它表示每秒钟传送的bit的个数, 一般为9600、19200等。

Parity属性:获取或设置奇偶校验检错方式。Parity类型中枚举了Odd (奇) 、Even (偶) 、Mark、None、Space。

Data Bits属性:获取或设置每个字节的标准数据位长度。这是衡量通信中实际数据位的属性, 取值一般为6、7、8。

Stop Bits属性:获取或设置每个字节的标准停止位数。取值为None、One、One Point Five、Two。

Encoding属性:获取或设置传输前后文本转换的字节编码。Serial Port默认的Encoding是ASCII方式, 这种方式传输汉字存在乱码问题, 所以在实际应用中, 采用Unicode编码方式。

3.3 串口的打开和关闭方法

Open () 方法:打开一个新的串行端口连接。

Close () 方法:关闭端口连接, 将Is Open属性设置为false, 并释放内部Stream对象。

3.4 数据的发送和读取常用方法

Write () 方法:将数据写入串行端口输出缓冲区。

Write Line () 方法:将指定的字符串和New Line值写入输出缓冲区, 即为输出并换行。

Read Line () 方法:一直读取到输入缓冲区中的New Line值, 即为读入并换行。

Read To () 方法:一直读取到输入缓冲区中的指定Value的字符串。

读取串口缓冲区的方法有, 其中除了Read Existing和Read To, 其余的方法都是同步调用, 线程被阻塞直到缓冲区有相应的数据或大于Read Time Out属性设定的时间值后, 引发Read Existing异常。

3.5 常用事件

Data Received事件:表示将处理Serial Port对象的数据接收事件的方法。在接收到了[Received Bytes Threshold]设置的字符个数或接收到了文件结束字符并将其放入了输入缓冲区时被触发。

Error Received事件:表示处理Serial Port对象的错误事件的方法。

3.6 Serial Port的使用

串口通讯的流程:先设置串口号及波特率、数据位、停止位和校验位, 再打开端口连接, 发送数据, 接收数据, 最后关闭端口连接这样几个步骤。实时采集或巡检系统只需要配置一次串口通信参数, 就循环发送指令和读取串口数据。

数据接收的设计方法比较重要, 采用轮询的方法比较高效, 但是得精确计算轮询延时时间, 在VB中的延时方法中一般调用API中DOEvents方法处理。也可采用Data Received事件触发的方法, 合理的设置Received Bytes Threshold的值, 若接收的是定长的数据, 则将Received Bytes Threshold设为接收数据的长度, 若接收数据的结尾是固定的字符或字符串则可采用Read To的方法或在Data Received事件中判断接收的字符是否满足条件。

4 设计开发实例

4.1 串口通信参数设置界面设计

下面以“十六路采集元巡检系统为例”介绍串口通信的开发过程。首先设计串口通信设置界面, 如图1所示:

实例中通信延时为对多路信息采集的时间间隔, 100即为0.1秒。并设置了巡检的起始通道与终止通道, 将通信配置信息写入set.ini文件中, 方便后期通信重复调用。

4.2 串口通信实现

4.2.1 串口配置

利用函数读取set.ini中的配置信息, 并初始化Serial Port控件。

4.2.2 串口巡检采集

利用串口循环采集16路通道中的数据采集仪表的实时采集数据, 并实时显示, 程序及界面如图2所示。

函数realtime () 函数, 完成了对串口十六通道采集仪表数据的循环采集, Time Delay () 函数完成对通道巡检采集的延时程序, 具体延时时间可根据具体仪表通信响应时间在通信设置界面可修改。现在的笔记本等电脑都无穿行接口, 需要外接usb转串口的转接头或无线通信模块, 无线通信因通信距离、环境的影响会出现通信错误, 因此在通信程序中加入了数据合法性检验, 对通信错误数据实行丢弃处理。

5 结束语

从十六路串口巡检系统可以看出, 利用VB.net语言中的Serial Port类可开发串口通信程序, 比调用外部第三方串口控件或API函数更方便、快捷, 而且用较少代码实现相同功能, 比VB6.0环境中的MSComm控件功能更强大, 且VB.net开发软件界面更美观。

参考文献

[1]曾立武, 黄晓锋, 兰紫娟, 何凌燕, 栾胜基.基于VB6.0串口通信的环境空气质量自动监测系统[J].现代电子技术, 2012 (20) :155-158.

[2]许俊锋, 马春草, 刘畅.基于VB6.0的串口通信数据采集系统设计[J].仪表技术, 2012 (4) :7-11, 15.

[3]陈学军.Windows平台下串口通信数据实时获取与监测[J].自动化仪表, 2012 (3) :66-69.

[4]田添.利用控件MSComm实现计算机的串口通信[J].数字通信, 2012 (2) :95-97.

[5]郑武, 肖宝森.串口通信新模型的研究与C#实现[J].电脑编程技巧与维护, 2012 (11) :29-30, 35.

[6]潘方.RS232串口通信在PC机与单片机通信中的应用[J].现代电子技术, 2012 (13) :69-71.

[7]王雪, 王红印, 田正凯, 周春枚, 曾军.基于CAN总线的实时数据采集串口通信的实现[J].电子质量, 2012 (6) :16-17, 25.

[8]王毅, 万英, 胡福成.基于串口通信的温度测量系统的设计[J].电力与电工, 2012 (2) :33-37.

VB通信 篇5

1 串行通信的实现

1.1 接口转换

一台PC机的一个串口可以连接一台PLC,也可以连接多台PLC,如采用PLC最多可以连接32台PLC。通用的计算机一般只具有RS-232接口,而工控设备大多采用RS-485接口,为了实现两者之间的通信,需要一块接口转换器,来实现RS-232与RS-485之间的转换,这比另外增加RS-485接口方便而且便宜。我们选用台湾研华公司的ADAM4520转换模块,该模块一端直接插在计算机串口上,另一端提供一个半双工的RS-485接口,其内置的电路可以自动地控制信号的传输方向(如图1所示)。这种RS-485接口控制对用户是完全透明的,使得对RS-232编写的软件可以不加修改地用在这里。该模块需要外加一个+10V~+30V直流电源,可以隔离3000V的高电压,传输速率最高可达115.2kbit/s。

1.2 PC机和PLC的连接图和硬件图

通用的计算机一般只具有RS-232接口,而工控设备大多采用RS-485接口。ADAM4520输出端为带有十个螺钉接口的端子排,从端子排出来和带有水晶头的双绞网线连接,水晶头可以直接插在变频器的PU接口上,端子排和双绞网线连接方法如图2所示。

1.3 通信方案

Visual Basic(以下简称VB)是Windows环境下简单、易学的可视化编程语言开发系统。其可视化界面设计风格和面向对象的程序设计等优点,已广泛地应用于各个领域,是很多计算机软件开发人员采用的开发工具。VB不但提供了良好的界面设计能力,而且在计算机串口通信方面也有很强的功能。采用VB开发windows下的数据采集和工业控制应用软件十分方便,特别是软件界面设计非常便捷,编程工作量较小,开发周期短。特别适合非计算机专业的工程技术人员掌握和使用[2]。

MsComm是Microsoft提供的简化Windows下串行通信编程的一个ActiveX控件,它的核心内容是组建对象模型COM(Component Object Mode1),是以属性和事件的形式提供的对Windows通信驱动程序API函数的接口。MsComm控件提供了事件驱动和查询两种处理通信的方法,其中事件驱动方法在硬件上要求必须采用Modem方式连接,并通过设置CommEvent、Rthreshold等属性实现对MsComm控件的OnComm事件驱动;查询方式则通常通过OutPut属性直接写输出缓冲区,且通过Input属性直接读输入缓冲区实现。使用MsComm控件开发串行通信程序时,一般先在窗体中添加一个MsComm控件,然后对其相关属性进行必要的设置,再设计OnComm事件过程或读取MsComm输入缓冲区的通用过程即可[3]。在串口通信程序开发中常用的属性及其意义如表1所示。

2 VB下用MsComm实现计算机与PLC的串行通信

如前所述,MsComm控件处理接收信息的方式可以采用事件驱动法或查询法。用事件驱动法设计程序时,每当有新字符到达、端口状态改变或发生错误时,MsComm控件将产生OnComm事件,而应用程序在捕获该事件后,通过检查MsComm控件CommEvent属性可以获知所发生事件或错误,从而采取相应的操作。而查询法是每当应用程序执行完某一串口操作后,将不断检查某一事件是否发生。例如,当程序向串口发送某个命令后,等待收到一个PLC的特定响应串[4]。

因为查询方式占用CPU的时间太多,本例采用事件驱动方式。通信的界面包括一个发送按钮和一个文本框。采用主从方式通信,计算机作主机,PLC作从机。单击“发送”按钮,计算机发送数组Array中的数据。计算机接收到可编程序控制器返回的数据后存放在数组rcv内,并在文本框内显示出来。

2.1 串口及通信参数的初始化

2.2 发送程序

要发送报文的格式为:

约定起始字符为0,结束字符为十六进制数&HFF。校验码为报文中第二个字节与数据区内各字节的异或和。

下面是发送程序的代码:

2.3 收数据

PLC只有在接收到计算机发送的信息后,才发送数据,故可以将发送完成后接收到的第一个字节作为接收报文的开始,直到串口无接收事件时认为报文结束。

3 编程及电机调速功能实现

我们用一个简单读写的例子来说明如何应用串口实现通信:

在VB工程环境下建立一个新工程,在Form1中分别添加5个对象:Text1文本,用来输入要传输的信息;Command1按钮,用来发送数据,将Text1中的字符写入传输寄存器;Command2按钮,用来接收数据,即从串口的寄存器中读取数据并删除字符;List1列表框依次显示从串口寄存器中读取的数据;Mscomml控件,利用它的属性进行串口通讯[5]。

实现数据传输的部分源代码如下:

以上是简单的原理代码,读者可以结合自己的需要设计一些其他的控件和对象,就可以实现很多功能。作者就是利用该控件的串口和工控机连接,实现了电机的无级调速、正反转运行及状态监测等功能。

4 结束语

本文以西门子S7-200 PLC为例,介绍了一种运用VB自身提供的串口通信控件MsComm实现上位机与PLC之间的通信方法,并将其应用于我们开发的汽车车桥性能试验系统中,很好的实现了上位工控机对PLC的控制监测。系统在进行实时控制任务时,控制处理能力强、工作可靠稳定。本方法对于其它类型PLC及类似设备与上位机的串口通信也有一定的参考价值。

参考文献

[1]范逸之,陈立元.Visual Basic与RS.232串行通信控制最新版[M].北京:中国青年出版社,2000.

[2]张正华,杜宇人.在VB下智能仪器和PC机之间的数值通信[J].计算机应用,2001(1):3-4.

[3]葛新锋,董永强.串口通信数据传输及其在变频器控制中的应用[J].继电器,2007(17):72-75.

[4]高钦和.可编程序控制器应用技术与设计实例[M].北京:人民邮电出版社,2004.

基于VB.NET的变电所数据通信 篇6

随着计算机、网络通信等技术的发展,变电站的自动化运行水平不断提高,大大减少了人为操作事故,使变电站运行远程监控成为可能,并已成为电力系统的发展趋势。本文提出一种方案,利用PLC(可编程控制器,Programmable Logic Controller)采集变电所中的相关模拟、开关信号,并将数据利用串口上传至微机。微机通过VB.NET程序进行数据处理、存储,并将信息输出,进行实时监测;同时,本地微机可与远端微机建立局域网,将变电所数据通过网络数据流传至远端,并在远端微机显示相关信息,实现了远程监控、报警。该方案使用户在本地微机和远端微机上均可实时获悉变电所运行状态,实现了变电站运行远程监控。

本系统中,PLC使用型号为西门子的S7-200,并带有EM235扩展模块,具有抗干扰性强、体积小、易于组装等优点。微机编程均使用VB.NET,因对于VB.NET,存取网络与存取磁盘的数据,除了数据源的差异之外,其处理模式是一致的,VB.NET易实现网络数据传输。这进一步提高了系统的运行速度,提高了监测的精确性。PLC每0.5 s向上位机发送一次数据,而串行通讯和网络通讯的传输周期均远小于0.5 s,因此监控延时最大为0.5 s。

1 变电所信号的采集

1.1 PLC的数据采集

本系统选用的S7-200型PLC及其扩展模块EM-235可采集多路数字、模拟信号,并通过模数转换器将模拟信号转化为数字信号[1]。

其中,变电所中需要监测开关信号可通过隔离电路直接连接至PLC的数字输入端口,PLC将数字量存储在内部寄存器IB0中。同时,电流、电压等模拟信号可通过电流、电压互感器以及电平转换电路转化为0~5 V、4~20 m A的标准直流模拟信号,这些模拟信号可输入至扩展模块EM-235[2]。扩展模块中的模数转换器将模拟信号转化为数字信号并存储在PLC的内部双字节寄存器AIW中,以备进一步处理。PLC采集数据示意图如图1。

1.2 PLC与微机的串口通讯

1.2.1 硬件连接

PLC和微机之间采用PC/PPI电缆连接。此电缆的RS-232端接微机串口,RS-485端接PLC串口。因PLC串口总线采取RS-485标准,而微机串口总线采取RS-232标准,故需要PC/PPI电缆进行转化。设置PC/PPI电缆上的DIP开关,可设置其传输速率,此速率必须与以后PLC和微机程序中的设置相同。这样,仅利用电缆,不需要搭建外围电路,PLC和微机通讯的硬件部分工作即完成。

1.2.2 PLC软件设计

S7-200系列PLC指令系统提供了专门的指令“XMT”,用来将PLC内部数据发送到外部。发送之前,要对PLC特殊寄存器初始化,设置基本通信协议。同时,因设定数据以字符形式传递,须在PLC内将整形数据转化为ASCII码,运用“ITA”指令。随后,采用定时传数,每隔0.5 s发送一次数据。另外,程序中定义了起始字符,与微机中的VB.NET程序配合以检验传输顺序。

1.3 上位机监控系统

上位微机用VB.NET编程,主要实现的功能是接收PLC数据和处理数据,并实时显示。

1.3.1 数据接收

对于VB6.0语言,系统提供了专门用于微机与外部串口通讯的控件Mscomm,但在VB.NET中并没有此控件,需要手动加载该控件。合理配置Mscomm控件的属性值,与PLC建立对应的通讯协议,才能实现PLC与微机之间正确的数据传输。

Mscomm有2种不同的方式处理和解决各类通讯软件的开发和设计问题:

(1)事件驱动方式,通过OnComm事件实现。

(2)程序通过检查属性的CommEven值来轮巡事件和错误。

这里采用两种事件驱动的综合,触发OnComm事件后仍检查CommEvent属性值,提高接收可靠性。

此外,为防止传输错误,变成中设置了检验语句。规定一个默认字符,PLC在发送有用数据之前首先发送该字符,上位机接收到字符串后首先检验首字符是否为该默认字符。如果是,则照常处理数据;如果不是,证明传输不正确,则关闭通讯口,隔一段时间重新开通讯口,直到传输字符正确。上位机采集数据部分的程序流程图如图2。

1.3.2 数据处理

在上位机接收到数据后,即可进行数据处理。具体步骤如下:

(1)利用VB.NET的Substring方法将整体字符串分割[3]。其中每个模拟量对应一个字符串,所有开关量对应一个字符串。

(2)利用VB.NET的数据类型转换函数将字符串转换为数值变量。对模拟量,根据电压、电流互感器,电平转换电路及模数转换器的转换倍数计算,得到实际电压、电流值。对数字量,根据其数值判断每个开关的状态。

(3)根据处理得到的模拟量、开关量,在监控界面上输出相应值,并在变量值异常时发出报警信号。

(4)将采集到的数据存储到数据库。

其中,采集量在VB.NET、PLC中对应的变量见表1。对应的监控界面如图3。

2 变电所信号的远程传输

2.1 网络联机原理

系统采用服务机/客户机模式建立连接,即直接接收PLC数据的微机作为服务机,负责远端监测的微机作为客户机。双方采用普通的网络传输线进行连接。当远端需要数据时,即刻向服务机发出联机请求,此时如果服务机已经启动了监听,并且双方设定了相同的通信端口,则会建立连接。这相当于双方建立了通信桥梁。随后,利用已建立的桥梁,服务机和客户机之间进行数据交流,达到数据通讯的目的。

目前较常用的传输层通信协议是TCP协议和UDP协议。UDP是一个简单的面向数据报的传输层协议:进程的每个输出操作刚好产生一个UDP数据报,该数据报导致一个IP数据报的发送,但UDP不提供可靠性:它发送应用程序数据到IP层数据报,但不保证这些数据报到达其目的地。而TCP是一种专门用以提供数据传输的联机通讯协议,它能够确认数据被完整正确地跨网络传送[4]。

这里使用Socket设计网络联机的服务程序,利用TCP协议。TCP提供了一种可靠的面向连接的字节流传数层服务,将用户数据打包形成报文段。它发送数据后启动一个定时器;通信的另一端对收到的数据进行确认,对乱序的数据重新排序,丢弃重复数据;而且TCP提供端到流的流量控制,并计算和验证一个强制性的端到端的检查和。TCP协议在Socket网络程序的应用相当广泛。如前述,VB.NET中System.Net.Sockets命名空间包含两个运用TCP协议的类,TcpListener和TcpClient,提供程序开发人员设计TCP协议的Socket功能[5]。整个应用程序的运作过程大致如下:

(1)连接到指定端点:服务器连接到一个指定的端点(端口号),监听客户端;客户端对此服务器的Socket端点进行联机操作。

(2)完成服务器联机:建立与主机服务器的联机。

(3)传送数据以及Socket:客户端应用程序将指定的程序传送至Socket端点。

(4)从Socket读取数据:步骤(3)的反向操作,在Socket端读取所需的数据。

(5)关闭Socket:停止客户端与服务器的Socket联机操作。

此过程的图示如图4。

2.2 建立联机

2.2.1 服务机软件设计

对服务机程序,首先,要定义一个Tcp Listener变量和一个NetworkStream变量。TcpListener封装了TCP传输协议,在本程序中用于建立连接;NetworkStream即网络数据流,用于在网络传输时寄存有用信息。其次,要注意端口号,此号在运行时由用户设定,其意义是程序传送数据的Socket端点。通过将此端口号赋给Tcp Listener,即可启动监听。当监听有响应,即网络连接成功,就要给根据连接所得的客户信息为网络数据流赋值。这样,服务机联机工作才算完成。此过程的源代码如下:

2.2.2 客户机软件设计

客户机中要定义TcpClient变量和NetworkStream变量,Tcp Client变量和TcpListener变量配合使用。同时,用户要设定Tcp Client变量中的端口号和服务机名,端口号与服务机的端口号一致,服务机名使用服务机IP。此两值都在程序运行时由用户输入。将此两值赋给TcpClient变量。TcpClient变量发出联机请求,当联机成功,为客户机的NetworkStream变量赋值,以备下一步实际接收信息时使用。此过程的源代码如下:

2.3 数据传送

建立联机后,服务机以网络数据流为载体,将打包好的数据定时自动传送出去;相应地,客户机通过网络数据流不断接收数据,并将数据分割、处理、显示,分割、处理、显示的方法与1.3.2所述相同。需要注意,数据传送是以字节为单位,服务机传输前需要对数据进行相应转化;同样,客户机接收到数据后也要进行相应转化。

网络传输部分服务机、客户机界面分别如图5(a)、5(b)。客户机的监控界面与图3相同。

3 结论

本系统通过VB.NET编程,将串口通讯及局域网通讯结合在了一起。应用西门子S7-200型PLC作为下位机,采集变电所数据并通过串行通讯传递至上位微机。上位机与远端建立局域网连接,作为服务机将变电所数据传送至远端,实现了变电所运行远程监控。所选PLC体积小,抗干扰能力强,可采集多路信号,在现场有广泛的应用。网络传输速度快,传送距离远,硬件简单,成本低,可扩展性强。系统在较简单的硬件连接方式下实现了数据的远程精确监控。

摘要:为方便变电所维护,实现变电所运行远程监控,提出了一套监控系统。应用西门子S7-200型PLC采集变电所数据,并与本地微机建立通讯。微机利用VB.NET接收、处理数据,并与远端微机建立了局域网。最终在本地微机与远端微机均实现了变电所运行的实时监控。

关键词:可编程控制器,数据采集,串口通讯,VB.NET,网络数据传输

参考文献

[1]胡学林.可编程控制器教程(基础篇)[M].第一版.北京:电子工业出版社,2003:86-147.

[2]郭春春,贺贵明,陈明榜,等.基于VB6.O的西门子PLC与PC的通信实现微机监控[J].PLC控制与工厂自动化,2004,19(8):71-74.GUO Chun-chun,HE Gui-ming,CHEN Ming-bang,et al.Supervision Function of Computerized of Communication Between SIEMENS PLC and PC Based on VB6.0[J].PLC&FA.2004,19(8):71-74.

[3]鲁俊生,张昕.Visual Basic.NET程序设计实用教程[M].第一版.北京.科学出版社,2003:42-162.

[4]吕文达.精通Visual Basic.NET网络与输入/输出技术[M].第一版.北京.清华大学出版社,2005:199-219.

基于VB技术开发C/S通信软件 篇7

Internet的发展,使地球成了“地球村”,也使TCP/IP协议成了地球村“人与人”之间的“牵手协议”。其实在日常生活中,TCP/IP协议除了用于广域网外,在局域网中也能“大显身手”。

本文在深入分析TCP/IP协议工作原理的基础上,给出了软件设计中经常用到的C/S(客户端/服务器)架构的实现方法,并利用Microsoft Visual Basic 6.0给出了框架搭建的实现过程。

二、TCP/IP工作原理

TCP(传输控制协议)是一系列规则的集合,它和网际协议(IP)共同使用,通过互联网在计算机之间以信息单元的形式发送数据。IP是网络上信息从一台计算机传递给另一台计算机的方法或者协议,它是一个无连接协议。在TCP/IP网络应用中,多数网络应用程序是使用客户/服务器模型方式,其中,客户向另一个程序发起服务请求,服务器则完成此请求。虽然客户/服务器的观点能够在同一台电脑的程序中使用,但它最为重要的应用环境,还是网络。在网络中,客户/服务器模型提供了一个连接分布在不同抵御的程序的便利途径。

Visual Basic6.0中提供了Winsock控件,对用户是不可视,通过它可以很容易地访问TCP和UDP网络。要编写客户和服务器应用程序,不需要了解TCP或调用底层Winsock API的具体细节,只需要通过设置Winsock控件的属性和调用该控件的方法,就可以很容易地连接到远程计算机并进行双向的数据交换。

Winsock控件可能的用途有:创建收集用户信息的客户端应用程序,并将收集的信息发送到某中央服务器;创建一个服务器应用程序,作为多个用户的数据的汇入点;创建“聊天”应用程序。

利用VB中的Win Sock控件开发软件时,首先需要考虑使用什么协议,可以选用的协议有TCP和UDP两种。本文主要介绍了采用TCP协议时的开发过程,也对采用UDP协议的开发过程作了简述。

三、TCP/IP客户服务器程序设计方法

TCP是传输层协议,实现端到端通信,在端主机上实现,屏蔽下层网络提供的服务质量的差别,为应用程序提供稳定可靠的服务,但不能实现组播功能。TCP对上层提供面向连接可靠的通信服务。

使用TCP/IP协议通讯,首先要指定通信方式为TCP方式,将Winsock控件的Protocol属性设置为sck TCPProtocol。然后,按TCP通信协议规定,先要申请建立网络连接,然后才能传输数据。

1、服务器程序开始侦听网络

服务器程序窗体中有三个Winsock控件,Name分别为sck Server、sck Busy和sck Listen。

其中sck Listen是侦听控件;sck Busy是sck Server连接控件。侦听控件和连接控件不能是同一个Winsock控件。

服务器程序必须首先侦听网络,等待客户的连接申请,才有可能建立网络连接。服务器程序开始侦听网络前,需要为侦听用(sck Listen)控件的Local Port属性设置通信接口,然后调用Listen方法。服务器程序开始侦听网络的程序代码如下:

2、客户程序申请连接

当服务器程序已经启动运行并开始侦听网络后,在客户程序申请连接前,需要为客户Winsock控件的Remode Host属性设置远程主机,为Remode Port属性设置通信接口,然后再调用Connect方法向服务器程序申请连接。

设置远程主机名,可以是计算机名也可是IP地址。如果是主机计算机名,则需要系统翻译为相应的IP地址;如果是主机IP地址,则直接进行连接。

申请连接的程序代码如下:sck Client.Protocol=sck TCPProtocol‘设置协议为TCP方式‘IP地址"127.0.0.1"代表本机,与本机的实际地址无关

3、服务器程序应答连接请求

服务器程序启动侦听网络后,当客户程序执行Connect方法申请连接时,服务器程序的侦听控件(sck Listen)触发Connection Request事件,并传递连接请求句柄。编程人员需要在该当事件程序中调用连接控件(sck Server)的Accept方法实现连接。

服务器程序应答连接的程序代码如下:

当服务器程序执行Accept方法建立连接后,客户程序中的接连控件将触发Connect事件通报连接完成,否则触发Error事件通报连接失败。可以在该事件程序中加入连接后的处理程序。

如果要求服务器程序支持多用户连接,则需要创建Winsock控件数组,在连接时动态生成Winsock控件与客户程序建立连接。程序代码应修改如下:

4、传送数据

当服务器程序和客户程序连接成功后,可以开始传送数据。建立连接后的服务器程序和客户程序都可以发送或接收数据。当一方要发送数据时,调用Send Data方法。

如果一方发送了数据,在连接的另一方控件将产生Data Arrival事件,在Data Arrival事件处理程序中需要调用Get Data方法接收数据。接收数据类型必须与发送数据的类型一致方可正确接收数据。接收数据的程序代码如下:

5、关闭连接

当应用程序结束数据传送后,必须关闭连接,释放系统资源。当连接的一方关闭连接时,可以调用Close方法。关闭连接程序代码如下:

一方执行关闭连接后,在连接的另一方控件将产生Close事件。程序需要处理事件,完成关闭连接的最后工作。该事件的处理代码如下:

四、使用UDP通信方式程序设计方法

用户数据报协议UDP是无连接传输层协议,提供应用程序之间传送数据报的基本机制。与TCP协议不同的是,TCP的可靠保证,是它的三次握手机制,这一机制保证校验了数据,保证了他的可靠性。而UDP就没有了,所以不可靠。不过UDP的速度是TCP比不了的,而且UDP的反应速度更快,QQ就是用UDP协议传输的,HTTP是用TCP协议传输的。

1、设置服务器程序中Wins ock控件的属性

在服务器程序中,需要为Winsock控件的Local Port属性设置通信接口:

sckserver.Local Port=4477

2、客户程序发送数据

当UDP主机要发送数据时,可调用Send Data方法。发送数据程序的代码如下:

五、结束语

Microsoft Visual Basic 6.0中的Winsock控件为C/S架构的软件开发提供了强有力的工具。用户在开发时,只需要考虑选用TCP协议还是UDP协议。在无需理解TCP或UDP的工作原理和底层Winsock API的具体细节的情况下,也能快速、有效地搭建出C/S模式的软件架构。当然,搭建架构只是软件设计的第一步,真正开发出有一定实际价值的应用软件,还需要如数据库等方面的技术支撑,期待能和同行们一起研究。

摘要:本文通过对客户端/服务器(C/S)网络结构进行分析,结合TCP/IP协议的通信原理,并针对一个典型的C/S网络服务应用实例,开发了基于VB技术的客户端/服务器通信软件,大大提高了网络通信速度和通信效率。

关键词:VB,TCP/IP协议,Winsock控件,C/S

参考文献

[1]李湘江.VB开发客户服务器软件的设计与实现[P].北极星电力论文.2002-8.

[2]IT专家网.http://www.ctocio.com.cn/[EB/OL].2005-08.

VB通信 篇8

随着计算机技术与控制技术的不断发展,集散控制系统(DCS)以其集中管理、分散控制的优点越来越多地被应用于过程控制工业领域。DCS作为一种新型控制装置,其先进性,实用性已为人们接受。并且实际工作中已取得了较大成绩。不过,从应用总体看,DCS应用还是初步的,管理上和应用技术上还存在一些问题。这需要在不断探索中逐步加以解决。为了实现整个过程控制系统的正常运转,需要解决许多问题,其中最重要的是通信兼容问题。OPC(OLE for Process Con201)的出现,建立了一套符合工业控制要求的通信接口规范,使控制软件可以高效、稳定地对硬件设备进行数据存取操作,系统应用软件之间也可以灵活地进行信息交互,极大提高了控制系统的互操作性和适应性。无论供应商还是最终用户,都可以从OPC技术中得到巨大的益处[1]。OPC技术必将在促进我国工控系统朝着开放方向发展的过程中发挥重要作用。虽然在我国有越来越多的厂商推出了采用OPC技术的产品,但其兼容性、操作性还有待提高。这使开发基于OPC的客户端软件具有广泛的应用前景。因此,开展此学术领域的课题研究具有重要的理论意义和实用价值。

1 系统整体结构

本文是以CENTUM CS3000为基础,实现缓冲槽液位的监控,并利用VB编写OPC客户端,将上位机中的数据读取出来,因此该系统主要由两部分组成,即用于实现底层集散控制的CENTUM CS3000系统及用于读取数据的OPC客户端。

1.1 CENTUM CS3000系统

1.1.1 被控对象研究

被控对象是一个缓冲槽液位监控系统,一个加料阀,一个排料阀和一个液位检测仪表,对于加料阀,从FCS有一命令(VALVE—A)输出控制其开/关, 同时从阀门有一反馈信号(LS-A)输入FCS反应阀门的状态;同样对于排料阀从FCS也有一命令(VALVE-B)输出控制其开/关,从阀门有一反馈信号(LS-B)输入FCS反应阀门高低阀门状态,阀门高低通过LI-100指示,LI-100的报警状态有高高报(HH),高报(HI),低报(LO),低低报(LL)。

1.1.2 FCS卡件部分组态及反馈部分组态

创建项目所需的控制站与操作站:FCS0101(控制站), HIS0164 (操作站),控制站(FCS)主要在系统的控制部分起一定作用,主要包括FCS卡件部分组态,FCS反馈控制部分及顺控表的形成。根据项目要求,FCS反馈部分所创建的仪表为输入指示仪表,输入指示仪表用于连接来自I/O卡件或其他仪表的信号,作为过程值进行显示,这里主要用到的是PVI仪表。报警信息可用于操作人员对生产过程进行报警,报警信息的数据和条件都可以在顺控表中引用,在该项目中,系统顺控要求如图1所示。

1.1.3 HIS部分组态及虚拟测试

HIS中的图形窗口用于操作和监视,共有四种类型:总貌窗口、控制分组、流程图窗口、趋势窗口。流程图窗口对于生产的操作和监视是非常重要的,它包括基本的工艺流程,及现场的过程数据、颜色变化等功能。组态完毕后,在CS3000中,FCSOl01文件夹下选中DR0003,从FCS菜单中点击Test Function启动虚拟测试功能,出现虚拟测试启动画面。这样就可以进行各种仿真测试了。需要把仿真后的结果提取出来,这就要用到后面所讲的OPC技术了[1]。

1.2 OPC客户端软件设计

OPC客户端的主要工作是保持与OPC服务器的连接并维护、管理建立在该OPC服务器上的组(Group)对象和项目(Item)对象,负责通过项目对象对设备或OPC服务器缓存数据的同步、异步的读写或者通过事件驱动的方式来对项目对象进行数据更新。同时,OPC客户端还要进行内存管理工作,在OPC客户端退出时,需要将建立在所有OPC服务器上的组对象和项目对象删除,释放建立对象占用的内存,防止服务器内存泄漏。客户端建立的连接和组对象、项目对象由客户端来保存,服务器不保存,一旦OPC服务器重新启动,所有建立在该服务器上的连接和组及项目对象必须重新建立,在该项目中,利用VB语言相对简单,周期较短的特点编写OPC客户端[2],OPC的具体实现过程会在下一节中进行描述。

2 数据通信的实现

2.1 客户端数据接收形式

数据接收是客户端软件所完成的最基本、最重要的功能之一。其基本的数据流向OPC服务器的缓冲区,并保持同步更新。因此需要定义OPC服务器对象类、OPC组对象类、OPC项目对象类,并分别定义三个类的集合变量,同时在组对象类中定义该组对象的事件DataChange。在某组对象类中包含的项目对象类中查找到项目对象,对其的值、值状态和时间戳进行修改,从而完成数据接收任务。具体的流程如图2所示。

2.2 基于VB的OPC数据通信

开发之前需先引用动态链接库OPCAauto.dll,操作步骤如下:在“工程”菜单下选择“引用”,在弹出的引用窗口选中“OPC DA Automation Wrapper 2.02”。只有引用了OPC DA Automation Wrapper 2.02中的动态链接库OPCAuto.dll文件,在程序中才能创建服务器对象,并进行一系列对象的操作。下面按照程序开发的四个步骤,给出部分代码如下:

(1)定义全局变量。定义全局变量是为了在窗体的任何方法的代码内应用。变量类型应指定为对象型。

Dim WithEvents AnOPCServer As OPCServer

Dim WithEvents ConnectedOPCServer As OPCServer

Dim ConnectedServerGroup As OPCGroups

Dim WithEvents ConnectedGroup As OPCGroup

Dim OPCItemCollection As OPCItems

Dim OneOPCItem As OPCItem

Dim ItemCount As Long

Dim OPCItemIDs(10) As String

Dim ItemServerHandles() As Long

Dim ItemServerErrors() As Long

Dim ClientHandles(10) As Long

(2)浏览本机或远程OPC服务器。

(3)连接OPC服务器对象和建立OPC组。

(4)添加OPC项。

2.3 系统功能实现

当CS3000系统运行到虚拟测试阶段时,就可利用VB编好的OPC客户端采集数据了。启动VB客户端程序,在“输入栏”中分别输入相适应的值LI-100.PV,SVAV-A.PV,SVAV-A.MV,SVAV-B.PV,SVAV-B.MV。同时在CS3000系统中,给各个仪表输入相适应的值,VB客户端运行结果如图3所示,VB客户端数据采集结果与过程控制中现场数据相同,设计结果正确。

3 结束语

本文针对当前DCS应用对工控软件的需求,全面深入地探讨了过程数据采集和通信设计和实现,重点研究了OPC Server、OPC Client与数据I/O等关键问题,在横河CS3000平台上对缓冲槽液位监测系统进行研究并仿真,通过OPC客户端程序进行数据采集与通信。可以预见,基于DCS的OPC技术的工控软件由于具有良好的开放性和可维护性,必将在促进我国和世界工控系统朝着开放方向发展的过程中发挥巨大的作用。

参考文献

[1]姜晓铭.VisualBasic6.0数据库编程指南[M].北京:中国石化出版社,2005,25(7):61-63.

[2]李富鹏,向铁元.基于OPC技术的公共数据平台[J].电力自动化设备,2006,38(8):56-58.

[3]段明祥.工业控制与自动化的创新与技术进展[J].自动化博览,2003,32(5):58-61.

[4]郭红晓,莫德举.OPC技术及其软件的开发[J].北京化工大学学报,2002,29(3):33-35.

VB通信 篇9

可编程序控制器 (PLC) 是以计算机技术为核心的通用自动控制装置, 由于其体积小、使用灵活、性价比较高等特点, 在工业生产中得到了广泛的应用。企业现场设备层中的设备种类繁多, 有传感器、启动器、I/O部件、阀门及检测设备等。PLC是现场设备控制层不可缺少的部分, 利用组态软件监视PLC内部的数据与运行状况价格偏高且二开发性较差, 在实际应用中用西门子公司的S7-200系列小型PLC自由口及Visual Basic (简称VB) 编程实现PC机与PLC之间的串行通信。

2、通信原理

PLC控制器具有通信功能, 它使PLC与PLC之间、PLC与上位计算机以及其他智能设备之间能够交换信息, 形成一个统一的整体。S7-200 PLC控制器支持多种通讯模式, 如点点接口 (PPI) 、多点接口 (MPI) 、自由口方式等。自由口通讯可由用户控制串行通讯接口, 实现用户自定义的通讯协议。在自由口通讯方式下, 用户利用梯形图程序中的接收完成中断、字符接收中断、发送完成中断、发送指令和接收指令实现S7-200系列PLC与上位机的通信。在PLC与PC的通讯方式上, 自由口通讯是一种灵活的方法。

西门子公司的S7-200PLC向外界发送与接收数据分别使用XMT及RCV命令。XMT命令将指定存储区内的数据通过指定端口传送出去, 当存储区内最后一个字节传送完毕, PLC将产生一个中断, 命令格式为:XMT TABLE, PORT, 其中PORT指定PLC用于发送的通信端口。TABLE为是数据存储区地址, 其第一个字节存放要传送的字节数, 即数据长度, 最大为255。RCV命令从指定的端口读入数据存放在指定的数据存储区内, 当最后一个字节接收完毕, PLC也将产生一个中断, 命令格式为RCV TABLE, PORT, PLC通过PORT端口接收数据, 并将数据存放在TBL数据存储区内, TABLE的第一个字节为接收的字节数。

自由通信是S7-200系列PLC的一大特色。它使S7-200系列PLC可以与任何通信协议公开的设备、控制器进行通信, 即可以由用户自己定义通信协议 (如ASCⅡ协议) 。波特率最高为38.4 kbit/s (可调整) 。因此可以通信的范围大大增加, 控制系统配置也更加灵活、方便。

上位机作为主站通过PLC监控下层设备的状态, 首先要实现上位机与PLC间的串行通信。由于串行通信具有线路简单、应用灵活、可靠性高等优点, 并且普通计算机均带有串行口, 所以PC机与PLC间通常采用串行通信方式。实际应用时采用了VB的通信控件, PC机为RS232接口, S7-200系列PLC自由口为RS485, 西门子公司提供的PC/PPI电缆带有RS232/RS485电平转换器, 因此不需增加任何硬件, 就可方便的实现二者的互联和协议转换。

3、通信程序设计思想

3.1 PLC自由端口的初始化

在自由口通信模式下, 通过设置特殊存储器SMB30 (端口0) 来为自由端口通信选择波特率、奇偶校验和数据位。这些设定必须与PC机设定值相一致。

SMB30 (端口0) 各项参数设置如下:

pp为奇偶校验选择, d为数据位选择, bbb为波特率选择。

00为无校验, 0为每个字符8位, 000为38400baud, 001为19200baud;

01为偶校验, 1为每个字符7位, 010为9600 baud, 011为4 800baud;

10为无校验, 100为2 400baud, 101为1200baud;

11为奇校验, 110为600baud, 111为300baud;

mm为协议选择:00为PPI协议, 01为自由口协议, 10为PPI/主站模式, 11默认为PPI/从站模式。

3.2 VB中MSComm控件属性设置及串口初始化

VB中的MSComm控件具有功能完善的串口数据发送和接收功能。MSComm控件具有两种通信方式:事件驱动方式和查询方式。因为查询方式占用CPU时间太多, 本设计采用事件驱动方式。要完成通信, 必需正确设置MSComm控件的相关属性, 设计时在窗体中对其进行初始化, 主要包括端口、波特率、奇偶校验设置等。

设置MSComm控件的主要属性如下:

Comm Port:设定通信连接端口代号, 程序必须指定所要使用的串行端口号, 默认为端口1。

Setting:设定通信口参数, 其格式为"9600, E, 8, 1", 其中9600为通信波特率, E为通信校验为偶校验, 8为数据位数, 1为停止位位数。

Port Open:设定通信口状态, 若为真, 通信端口打开, 否则关闭。

Input:接收缓冲区返回的数据流。

Output:向缓冲区写入数据流。

Out Buffer Count:传回输出缓冲区中的字符数。

In Buffer Count:传回接收缓冲区中的字符数。

Input Len:设定串行端口读入字符串的长度。

Input Mode:设定接收数据的类型, 本次设定为0-接收的数据为文本。

在打开串行端口之前, 确定串行端口设备必须支持Settings属性当前的设置值。串口初始化程序代码如下:

3.3 PLC实时向上位PC机传送数据

利用PLC循环扫描的特点, 当设备状态改变时, PLC立即就可检测到, 并将反映系统状态变化的数据存入指定的数据缓冲区, 通过XMT发送指令, 将数据通过自由口发送至上位PC机。每个系统的状态对应于数据缓冲区中的一个指定字节, 所存储数据均为16进制数据, 为保证通信过程的可靠性, 上位机对所接受到的数据进行首尾字符校验, 如果校验成功, 则说明接收到的首末字节之间的数据是正确的, 从而进行处理, 否则, 放弃这批数据, 要求重新发送。

利用VB中MSComm控件的On Comm事件编写相应的代码处理接收到的信息。PC机根据接收到的信息很容易实现对每个开关量的状态进行识别, 从而控制监控界面的实时显示。

4、结束语

本文利用VB中的MSComm控件实现上位机PC与PLC之间的串行通信, 实现了上位机对PLC的实时监控。对于分布式控制系统大幅度地减小了通讯成本, 具有一定的推广价值。

摘要:PLC可直接与现场控制层的检测仪器仪表设备连接, 是底层设备控制网络中的重要组成部分, 本文利用VB的MSComm控件实现了PLC与PC机的串行通信, 达到了对底层设备的控制。

关键词:PLC,串行通信,自由口

参考文献

[1].龚沛曾.中文Visuail Basic 6.0程序设计教程.北京:高等教育出版社, 2001

[2].周轶峰.Visuail Basic 6.0实用编程技术.北京:中国水利水电出版社, 1999

[3].SIEMENS.SIMATIC S7 Configuring Hardware and Communication Connections STEP 7 V5.0 Manual.

上一篇:双足机器人下一篇:中国最美乡村