VB通信论文

2024-06-07

VB通信论文(共8篇)

VB通信论文 篇1

OPC技术是 (OLE for process control) 的简称, 是基于微软Windows系统的OLE/COM技术开发的一项应用技术。COM技术提供了一个标准化的平台, 各个设备厂商基于这个平台开发符合标准化COM接口的PLC产品。OPC技术基于这一平台, 整合各品牌PLC产品COM组件接口, 输出一个标准化数据接口。这样无论应用程序开发人员使用何种语言, 只需要调用这个数据接口, 即可访问到所连接的PLC数据, 而不用考虑PLC的品牌, 以及底层协议。

标准化的OPC系统包括4个部分:

(1) OPC服务器:为上位机与PLC提供过程数据。

(2) OPC代理占位DLL:为VB或者VBA开发的OPC应用程序提供OPC服务器接口数据格式交换服务。

(3) OPC自动化包装DLL:提供OPC服务器的自动化接口变换服务。VB或者VBA开发的上位机应用程序需要通过该接口访问OPC服务器。

(4) OPC应用程序:设计人员使用VB等语言设计的提供给用户的人机界面程序, 含有用户要求的所有功能。

上述中OPC服务器、OPC占位代理DLL、OPC自动化包装DLL这三部分是由第三方开发的DLL文件。本文以KEPWARE公司的OPC软件产品为例, 介绍如何编程VB与OPC数据通讯。在KEPWARE中所连接的设备以通道 (CHANNEL) 的形式描述, 每连接一个设备就使用一个CHANNEL, 同时每一个CHANNEL对应OPC服务器一个OPC组 (下面会介绍到) 。在对应的CHANNEL里面设置好通信端口即可。以串口1为例是COM1, 也支持以太网通信。

通过VB访问OPC服务器主要有三种对象, 这三种对象有各自的参数、属性、方法。

(1) OPC服务器。

(2) OPC组 (OPC组集合) 。

(3) OPC标签 (OPC标签集合) 。

OPC组、OPC标签在访问之前需要在KEPWARE一侧建立, 并配置好标签的对应PLC内部地址。下面分步介绍如何编程访问OPC服务器, 以操作PLC数据的。

1 连接OPC服务器

在使用VB编程OPC访问程序的时候, 首先建立OPC服务器名并建立连接。

声明OPC服务器:

Public opc_Server Obj As OPCServer//声明全局OPC服务器, 变量名opc_Server Obj

Set opc_Server Obj=New OPCServer//建立OPC服务器

连接OPC服务器可以显式访问也可以隐式访问。

连接服务器:

opc_Server Obj.Connect (my OPCInfor.OPC_Server) //隐式访问, 使用my OPCinfor.OPC子过程返回的值作为访问参数。这样可以灵活指定所访问的OPC服务器。

2 添加OPC组

在OPC服务器中OPC组集合是自动包含的, 可以使用OPC组集合的Add方法在里面添加OPC组。代码示例:

Public opc_Group Obj As OPCGroup//全局声明opc_Grouop Ob变量作为OPC组属性

Set opc_Group Obj=opc_Server Obj.OPCGroups.Add (my OPCInfor.OPC_Group) //添加OPC组名称, 同样使用隐式访问, 添加的组名称为变量”my OPCInfor.OPC_Group”中内容。

Set my Group1=opc_Server Obj.OPCGroups.Add ("Group1") //显式声明一个名称为Group1的OPC组

3 指定OPC标签集合名称

在KEPWARE中配置的OPC标签集合名称在编程时要一致, OPC组的名称也要一致, 否则无法通讯。下面是使用变量间接指定的例子。代码示例:my OPCInfor.OPC_Item=my Confi g.Get String Value ("OP CInfo", "OPCItem", "", m_str Confi guration File Name) //同样通过Land文件当中的“OPCinfo”字段中的“OPCItem”项内容来指定OPC组集合字符串。

4 添加OPC项

OPC项是指定访问OPC服务器数据的名称, 其通过OPC服务器与PLC相关联, 指向要访问的PLC某个数据地址。编程OPC服务器之前, 先在KEPWAR软件当中配置好需要访问的OPC项, 将其与PLC内部的某个地址相关联, 软件中称为“TAG”。比如:新建项并命名TAG1, 配置地址为D200。那么在设计应用程序访问地址D20的数据时, 就指定访问名TAG1就可以了。但是在使用OPC项之前, 先进行添加, 取得相应的句柄并妥善保存。如果要对OPC组内大量项标签进行读写操作的时, 这个句柄就非常有用。

Setopc_Item Obj=opc_Group Obj.OPCItems.Add Item (my OPCInfor.OPC_Group+my OPCInfor.OPC_Item+"Test Max"+CStr (i) , 1) //在OPC组中的项标签集合里面添加10个名称从Test Max (1) 到Test Max (10) 的OPC项标签 (item) 。

Serverhandles (i) =opc_Item Obj.Server Handle//通过数组取得项标签的句柄。

5 枚举所有项标签

在应用程序设计中, 如果需要读写项集合内的某个项数据, 需要取得标签集合中该项标签的符号, 这就需要用到枚举方法。就是在标签集合中进行项标签枚举, 直到找到指定的的项。

在程序代码中编写子过程用以实现枚举标签集合中所有的项标签功能。这个子过程可以作为一个功能块在所有读写项标签的语句中调用。在调用过程中只需要通过传值的形式传递项标签标识符, 子过程就可以完成查找、返回项符号, 进而进行读写操作。

代码示例:

返回的项标签符号存入变量OPC_Item Obj中, 可以方便的进行读写操作。

代码示例:

6 读写PLC数据

OPC服务器支持同步与异步的读写方式。同步方式是指在应用程序发出读写请求之后, 直到OPC服务器操作结束后继续程序执行。异步方式是在应用程序发出读写请求之后, 应用程序继续执行, 在OPC服务器数据处理结束后, 告之应用程序处理完毕。在数据同步性要求不高的情况下两者区别不大。

同步读取代码示例:

上面的代码示例适合于批量读取PLC内部数据, 如果需要单独读写某个项标签的数据, 可以使用项标签的Read与Write方法。

代码示例:opc_Item Obj.Write (True) //对变量OPC_Item Obj赋值的OPC项标签进行写操作。

OPC技术有很高的灵活性, 同一OPC应用程序可以集成不同种类的PLC设备。由于基于标准化COM接口技术, 在切换不同种类的PLC设备时, 上位机的应用程序不需要重新开发, 可以直接切换, 这也是OPC技术得以广泛应用的原因之一。本文通过介绍使用VB语言实现上位机程序访问OPC数据, 让广大设备开发人员了解OPC技术, 使大家认识到使用这项技术可以方便的实现PLC设备上位机通讯。

VB通信论文 篇2

本文的实例为上位机与OMRON 200HG系列PLC的1:N链接通信。带有RS―485接口通信板的PLC直接挂在RS―485总线上,上位机通过RS―232C /RS―

485转换器与总线相连,这样即构成数据采集子网,甚至可以是一个独立的小型分布式监控系统。其它仪器仪表设备,只要是标准串口都可以类似方式直接或间接与上位机链接。

关于VB的MSCOMM控件可参考相关资料。本例通信程序摘要如下:

(1) 初始化程序

Mscomm1.Commport=2 ’ 选择COM2

Mscomm1.Settings=”9600,N,8,2” ’ 设置通信参数

Mscomm1.Inputlen=0 ’ 读入接收缓冲区全部字符

Mscomm1.OutbufferSize=256 ’ 设置发送缓冲区大小

Mscomm1.InbufferSize=512 ’ 设置接收缓冲区大小

Mscomm1.PortOpen=True ’打开

COM2

(2) 发送命令程序

比如读取节点号03的PLC中IR000到IR009的内容,并放到tag1字符串变量中,此时有:

Dim Command, node, begin, number as string

Dim Answerlen as integer

node=”03” ’节点号

Command=”RR” ’命令为读IR区

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

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

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

二、TCP/IP工作原理

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

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

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

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

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

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

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

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

服务器程序窗体中有三个Winsock控件,Name分别为sckServer、sckBusy和sckListen。

其中sckListen是侦听控件;sckBusy是;sckServer连接控件。侦听控件和连接控件不能是同一个Winsock控件。

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

2、客户程序申请连接

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

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

申请连接的程序代码如下:

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

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

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

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

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

4、传送数据

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

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

5、关闭连接

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

sckClient.Close'关闭连接

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

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

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

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

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

sckserver.LocalPort=4477

2、客户程序发送数据

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

五、结束语

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开发客户服务器软件的设计与实现[R].北极星电力论文.2002-8.

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

VB通信论文 篇4

1 基于快速实现局域网通信环境下对VB编程进行研究的意义

随着计算机网络通信技术水平的不断提高, 人们在生活、工作以及生产中越来越依赖通信网络技术, 各种快速、及时的即时通讯软件得到了广泛的欢迎, 例如在我国使用人数最多的通信软件腾讯QQ, 此外在企业内部使用的MSN、UC等。这些通信软件对然能够方便、快速的进行沟通交流, 但是其只能广泛的应用在广域网中, 不能应用在局域网中。在局域网环境下, 能够实现快速、即时实现的通信软件比较少, 进而不能有效的满足局域网工作开展的需求。对于局域网的工作人员来说, 如果能够根据企业内部的实际情况对局域网通信应用程序进行编制, 将会促进企业工作的顺利开展。但是, 网络程序编制工作对于工作人员的要求较高, 程序编写人员不仅要具备深刻的理论知识, 而且还要对网络协议进行熟悉了解。对于一个不了解编程的工作人员来说, 编制程序是十分困难的。运用VB编程就能够将该问题进行很好的解决, 微软公司推出的VB编程中的Winsock控件将VB编程中所有的技术细节内容进行展现, 实现UDP和TCP之间的便捷访问。在快速实现局域网通信的环境下, 通过运用Winsock控件, 主只要设定好控件的属性, 调用控件的使用方法, 能够有效的实现局域网通信中计算机数据的远程连接与双向通信功能, 对编程人员的技术水平没有过高的要求, 甚至编程人员不需要对TCP/IP协议深入了解, 进而避免编程工作的晦涩性。总之, 快速实现局域网通信运用VB编程是十分有必要的。

2 基于快速实现局域网通信的VB编程实践

在局域网通信环境下, 用户通过运用TCP协议能够有效的对局域网中的计算机远程连接进行创建和维护工作。为了实现计算机与计算机之间的数据连接, 需要建立相关的计算机服务器程序、创建用户的相应应用程序。所以, 在运用TCP协议的基础上有效快速实现局域网通信, 最重要的环节就是正确编写服务器相关程序与用户相应应用程序。为了确保程序编写的准确性, 可以通过应用VB编程中的Winsock控件来实现。

2.1 运用Winsock控件编制的服务器相关程序

在运用Winsock控件对服务器相关程序进行编制时, 需要严格遵循以下的流程和步骤:

1) 创建用户应用程序

在对用户的应用程序进行创建时, 首先将服务器的计算机名称或者计算机的IP地址输入到Winsock控件的Remote-Host属性中;其次, 将用户计算机服务器端口的侦听端口存入到Winsocek控件中的Remote Port属性中;最后, 应用Winsock控件中的Connect方法实现连接。

2) 创建计算机服务器应用程序

在对计算机服务器应用程序进行创建时, 遵循以下的步骤:一、设置一个侦听端口, 将相关的数值输入到Winsock控件的Local⁃Port属性中;二、运用Winsock控件的Listen方法对来自客户计算机的connect清酒进行监听;三、对客户机中的connect请求所带来的Connedtion Request事件进行捕获;四、对Connedtion Request中的Accept方法进行调用实现连接, 在该过程中双方均可对数据信息进行接收;五、在对数据进行发送时, 运用Send Data方法, 在对数据进行接收时, 运用Data Arrival事件中的Get Data方法。

2.2 快速实现局域网通信的VB编程在UDP协议下的应用

在使用局域网时, 如果没有语音弄搭建服务器, 那么在局域网环境下实现数据通信的编程就需要运用Udp协议。Udp协议指的是用户数据报文协议, 是一种无连接的协议, 对Udp编程进行编写时, 不需要对客户端与服务器端的应用程序进行编写, 在对Udp应用程序进行创建时, 主要遵循以下的操作流程:

1) 对A/B机中Winsock控件的Local Port值进行设定;

2) B机中的IP地址运用A机中的Remote Host属性进行设置;

3) A机中的IP地址运用B机中的Remote Host属性进行设置;

4) B机的Local Port值作为A机的Remote Host属性;

5) A机的Local Port值作为B机的Remote Host属性;

6) 双方均应用Send Date将数据进行发送, 并运用Data Arrival事件中的Get Data方法进行数据接收。

2.3 以下是快速实现局域网通信的VB编程在UDP协议下的应用的编程实例分析:

在A、B机之间运用Udp协议对数据文件进行传输, 首先将需要传输的本地文件, 注意将图片和声音文件存储成临时文件, 运用二进制文件的方式打开, 将获得的内容输入到bvte类型的数组中, 然后通过网络将数组值进行传输。以下是代码:

接收端在接收到数据后, 打开一个新建的二进制文件, 然后将所接收到的数据输入到该文件中。以下是接收端的代码:

该种方法主要运用Winsock控件将局域网通信的基本功能进行实现, 企业单位可以根据自身的实际情况运用编程, 增加功能, 进而充分的将局域网在工作中的作用发挥出来。

3 结束语

总而言之, 基于快速实现局域网通信的环境下运用VB编程, 如果局域网通信应用程序需要运用服务器或者客户端进行确认, 那么就选择使用TCP协议, 实现局域网通信之前, 建立相应的连接。另外, 如果局域网的通信量比较大, 那么在建立之后运用TCP协议对其进行维护, 并保证数据的完整性, 最终有效的将局域网在工作中的作用发挥出来。

参考文献

[1]王巍.基于VB的局域网即时通讯软件设计浅谈[J].科学之友, 2010, 20 (11) :39-40.

[2]张志华.汪发宝, 楼新远.基于P2P组播技术的局域网即时通信系统的实现用[J].铁路计算机应用, 2009, 3 (31) :75-76.

[3]李佳音, 张博强.利用WinSock编程实现SMTP协议[J].电脑编程技巧与维护, 2012, 3 (3) :98-99.

[4]张果, 郑洪凯.局域网即时通信软件的研究与实现[J].电脑知识与技术, 2012, 3 (11) :9-10.

VB通信论文 篇5

根据国家电监会关于电力系统二次防护的5号令的要求,通过配置单向隔离装置,将实时数据库(SIS系统)与辅助网络系统(水网、煤网、灰网)隔离。控制系统与接口机相连,数据只通过单向隔离装置指定端口单向通过数据接收工作站传送至实时数据库服务器。用户对实时数据的应用和分析访问实时数据库服务器,不对生产管理区造成安全威胁。基于此项安全要求,必须要有新的接口软件来代替原有的接口通讯模式(OPC方式),即:数据发送采用UDP协议,辅网系统接口将获取或接收的控制系统原始数据发送到指定的地址和端口,实时数据库系统接口需要接收UDP数据包并解析即可获得标签点的实际数据,如图1所示。

2 Winsock网络通信控件

Winsock控件提供了访问TCP和UDP网络服务非常简便的途径,只通过设置Winsock控件的属性并调用其方法,就可直接连接到一台远程计算机进行,并可实现双向数据交换。

WinSock主要支持两种类型的套接字:(1)流式套接字(Stream Socket)也称面向连接方式,该方式对应的是TCP协议,其传输特点是通信可靠性高,可以保证数据流的传输是可靠的、有序的、无重复的,可提供双向的数据流,数据被看作字节流,无长度限制。(2)数据报套接字(Datagram Socket)又称无连接方式,对应的是UDP协议,这种方式不提供数据传输的正确性、有序性和无重复性。因为它支持面向记录的数据流,因此传输的数据可能丢失和重复,并且接收顺序混乱,报文长度是有限的。本系统选用数据报套接字方式。

3 辅助网络系统接口

本系统采用GE公司的iFix4.0作为辅助网络系统监控软件,iFix4.0具有可靠性高,稳定性好,功能强大的特点,尤其是iFix数据访问开发工具包(iFix DataBase Access Toolkit),该工具包允许应用程序编程人员访问iFix的实时和历史数据,该工具包主要包括了实时数据访问接口EDA,历史数据访问接口HDA。开发工具包中所提供的编程接口函数,是针对于Visual Basic语言所开发。

4 UDP方式发送协议简介

UDP方式发送协议简介如表1所示。

5 通讯软件具体实现

(1)在创建的VB应用程序项目中应该首先添加2个模块(Module)

这2个模块都是由iFix数据访问开发工具包提供的,其中一个模块是用于EDA编程接口使用的vdba.bas,另外一个模块是用于HDA编程接口使用的fixtools.bas,在vdba.bas模块中主要是基于VB格式的EDA接口函数、数据结构、常数的声明,而在fixtools.bas模块中主要是实现对fixtools.dll动态链接库的声明,基于VB格式的HDA接口函数、数据结构、常数的声明,此外还提供了其他函数声明,如iFix软件的安装路径,iFix是否正在运行。在添加了编程接口的声明模块后,就可以在VB应用程序中调用这些函数了。

(2)执行VB工具栏“工程/部件”命令,将Winsock控件添加到工程中,并命名为“UDP”

程序采用UDP协议进行通信,其主要属性设定如下:

With UDP UDP协议参数设置

.Protocol=sckUDPProtocol采用UDP协议

.RemoteHost=IP_REMOTE远程计算机IP

.RemotePort=PORT_REMOTE远程计算机端口

.LocalPort=PORT_LOCAL本地端口号

.Bind PORT_LOCAL,IP_LOCAL绑定本地端口、IP地址End With

UDP协议设定完后,判断iFix软件是否运行及从配置文件中读出iFix数据库中的数据点的标签名,并把所有标签名按顺序存在(TagName)数组中。初始化工作完成。

(3)创建读取开关量数据函数

G=eda_define_group(1,0)

根据读取的iFix标签名(DI_TagName)数组,定义读取的一组标签的实时值“A_CV”

For i=0 To DI_TagName-1

DI(i)=eda_define_ntf(G,"FIX",

DI_dataname(i),"A_CV",0)

DI_datavalue(i)=0

Next i

Call eda_lookup(G)

Call eda_wait(G)

Call eda_read(G)

Call eda_wait(G)

For i=0 To DI_TagName-1

将读取到的每个标签的实时数据读出赋值给变量

eda_err=eda_get_ascii(G,

DI_TH(i),Value,79)

DI_datavalue(i)=Trim(Format(Value,""))

Next i

Call eda_delete_group(G)

将Timer控件添加到工程中,在属性中设置3000ms循环执行。

(4)创建发送开关量数据函数

Private Sub DI_send()

……

Dim DI_send()As Byte

ReDim DI_send(LenB(DI_senddata(i)))

CopyMemory DI_b(0),DI_senddata(i),LenB

(DI_senddata(i))

……

UDP.SendData DI_send

……

End Sub

(5)创建读取模拟量数据函数

Private Sub AI_read_IFIX()

G=eda_define_group(1,0)

根据读取的iFix标签名(AI_TagName)数组,定义读取的一组标签的实时值“F_CV”

For i=0 To AI_TagName-1

AI_TH(i)=eda_define_ntf(G,"FIX",AI_tagname

(i),"F_CV",0)

AI_datavalue(i)=0

Next i

Call eda_lookup(G)

Call eda_wait(G)

Call eda_read(G)

Call eda_wait(G)

For i=0 To AI_TagName-1

将读取到的每个标签的实时数据读出赋值给变量

eda_err=eda_get_float(G,AI_TH(i),fvalue)

AI_datavalue(i)=Format(FVALUE,"####0.00")

Next i

Call eda_delete_group(G)

End Sub

(6)创建发送模拟量数据函数

Private Sub AI_send()

……

Dim AI_send()As Byte

ReDim AI_send(LenB(AI_senddata(i)))

CopyMemory AI_send(0),AI_senddata(i),LenB(AI_senddata(i))

……

UDP.SendData AI_send

……

End Sub

(7)执行VB工具栏“工程/部件”命令,将Timer控件添加到工程中,并在属性设置中设置3000ms循环执行。编辑代码调用读取及发送程序。

Private Sub Timer1_Timer()

读取模拟量数据并发送

AI_read_IFIX

AI_send

读取数字量数据并发送

DI_read_IFIX

DI_send

End Sub

系统参数画面如图2所示。

6 结束语

采用Winsock控件实现的UDP发送数据程序,已成功应用于某电厂辅助网络系统中,程序简单稳定,很容易实现辅助网络系统向SIS系统发送实时数据的功能,达到了理想的效果。

掌握并灵活应用iFix软件的EDA,HDA编程接口,我们就可以用VB6.0语言开发出符合不同SIS系统的应用程序。本文的论述对解决这类问题具有一定参考价值。

参考文献

[1]GE.iFix Database Access Toolkit Help.

VB通信论文 篇6

1 系统结构与设计

系统构成如图1所示,远端PC通过局域网和本地PC通信,在通信中使用Winsock控件和TCP/IP协议;本地端PC通过并行通信接口或串行通信接口与单片机通信,在并口通信中使用WINIO并口通信驱动程序、EPP协议和LPT打印机接口,在串口通信中使用MsComm控件、RS 232C协议和COM口。在此结构中,本地PC端起到中继的作用,当本地端PC接收到从远端PC传送过来的命令,在选择通信方式后,与单片机通信,使单片机向远端PC传送数据。

2 远端PC与本地端PC通信设计

TCP/IP 是目前在网络通信中广泛采用的一组完整的网络协议,该协议的核心是TCP,IP和UDP协议。TCP/IP 网络环境下应用程序通过网络系统编程界面套接字(Socket)实现与内核的交互。利用Socket通信编程接口编写程序,其目的是在TCP/IP所组建网络的不同机器之间利用客户/服务器模式建立通信连接,开发人员只要提供一些基本的连接信息,其余由操作系统内核完成。WinSock (Windows Socket) 是Windows 操作系统下的通用的TCP/IP 应用程序的网络编程接口,通过调用WinSock的接口函数来调用TCP/IP的各种功能。在VB 6.0 中,WinSock 控件对Windows Sockets API进行封装,使用程序员可以不必了解TCP/IP或调用底层WinSock API的具体细节,只要设置好相应属性,在触发的事件过程中作好相应处理,就能编写出网络应用程序。

远端PC与本地端PC通信通过VB 6.0调用WinSock控件实现,图2(a),(b) 分别为其控制界面。需说明以下几点:远端PC选择好要连接的本地端PC的IP地址和网络传送端口后,再发起联机申请;本地端PC网络传送端口必须和远端PC传送端口一致,串行端口选择是COM1/COM2,并行端口输入并口地址(378H);远端PC在命令输入区输入命令后,发送命令按钮才有效;回传数据区存放单片机传送回来的实时数据并可保存成文本文件,信息区存放网络工作状态、远端PC的命令,及单片机数据传送情况。其工作过程如图2(c)所示。

3 本地端PC与单片机通信设计

3.1 本地端PC与单片机并口通信设计

3.1.1 并行通信接口及协议

在速率要求较高的场合,可以利用PC机上的打印机接口(CENTRONICS标准,DB-25芯针座,TTL电平)实现。并口通信有SPP、EPP和ECP三种工作模式。本文采用EPP协议。

(1) EPP协议[3]

增强型并行接口协议EPP(Enhanced Parallel Port),为PC和外设之间定义了并行双向通信的标准,该协议通过硬件自动握手,能达到500 kB/S~2 MB/s的通信速率,适合大量数据传输的外设进行告诉通信。EPP分为EPP1.7和EPP1.9,二者之间的区别是:EPP1.9需要判断超时(避免出现“死循环”)以及nwait信号是否有效,而EPP1.7不需要判断,传输速度更快。EPP协议支持4种操作,包括数据写出、地址写出、数据读取和地址读取。

(2) EPP协议的寄存器地址及一些主要的引脚定义[4],如表1,表2所示。

3.1.2 WINIO并口通信驱动程序

在VB中无法直接使用输入/输出指令来完成对端口的访问,尤其是Windows 2000/XP系统对端口的保护更加严格。要对端口进行访问,一般有2种方法:第一种是通过C/C++等编程软件开发一些动态链接库(DLL)或ActiveX 控件用于在VB 中调用来完成对底层硬件的控制;第二种更为简便的方法是到互联网上去寻找一些免费的DLL 或ActiveX 控件,本系统使用的是网络上免费的动态链接库文件WINIO.DLL[5](适用于Windows 2000/XP),主要实现了对底层并行端口使用的方法。WINIO是一个绿色环保软件,他不需要向注册表中添加任何信息,只要把WINIO.VXD,WINIO.SYS,WINIO.DLL放在应用程序所在的文件夹下就可以。在使用的时候,直接将WINIO.BAS引用到工程中,就可以实现对端口的控制和访问。

3.1.3 并口通信设计

如图3所示,打印机口通过单片机的P1口传送数据,nWait和nDstorbe通过P2.0和P2.1与单片机连接。并行接口与单片机相连一般有两种方式:一种是直接连接,另一种是使用双向驱动器或锁存器的总线方式[6]。本系统采用第一种方式,能最大限度发挥EPP速度快的优势,但单片机易受到不稳定信号的干扰。EPP模式为双向传输协议,为了简化设计,只进行采用单片机向PC传送数据的单向读传送,并口采用EPP1.9模式,支持超时和nwait判断。

本地端PC通过并口与单片机通信的VB源程序如下:

3.2 本地端PC与单片机串口通信设计

MsComm 控件是Microsoft公司提供的简化Windows下串行通信编程的ActiveX控件,他为应用程序提供通过串行接口收发数据的简便方法。该控件具有完善的串口数据的发送和接收功能。通过此控件,PC机可以利用串行口与其他设备实现轻松连接,简单高效地实现设备之间的通讯。

PC串行接口COM1/COM2信号符合RS 232C电气标准,而单片机串行接口采用TTL逻辑电平,实现二者之间的异步串行通信需要电平转换芯片。单片机串行接口有一个全双工串行接口,经过MAX 232芯片可方便地转换成RS 232电气标准[7]。

本系统以串行通信为备用通信方式,本地端PC通过串口与单片机通信的VB源程序如下:

3.3 单片机程序设计

单片机部分可进行并口和串口2种方式的通信,用汇编语言编写通信子程序。在这里分别给出2种方式的程序流程图。如图4(a),(b)所示。

本系统有如下特色:本地端PC起到中继作用;这里使用局域网(如果要使用Internet,必须为本地端PC提供固定的IP地址),当网络连接中断时,可自动重新连接;本地端PC采用并口和串口2种方式与单片机通信。并口采用EPP1.9模式,单片机也可判断超时;远端PC可实时读取单片机中的数据。

本文利用了VB面向对象和可视化编程的特点,将网络、并口、串口通信方式相结合实现了远程PC与单片机系统的通信,并在大功率开关电源控制系统上测试,可完全正常运转。本系统给出的方法,对其他PC通信场合亦有一定参考价值。

摘要:根据对单片机系统的远程网络控制的要求,充分利用VB可视化编程、先进的网络技术和并、串行口通信的特点,提出一种基于VB 6.0环境下将WinSock网络控件、WINIO并口通信驱动程序以及MsComm串口通信控件相结合实现网络远程PC与单片机通信的方法,并给出部分原程序。

关键词:VB6.0,WinSock,WINIO,MsComm,EPP,单片机

参考文献

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

[2]陆继翔,余隋怀.基于WinSock控件实现局域网上的点到点通信[J].弹箭与制导学报,2006,26(1):150-156.

[3]汪洋.利用EPP接口协议实现高速数据通信[J].单片机与嵌入式系统应用,2001(6):21-22.

[4]徐晓东,刘江虹.并口EPP模式下的双机高速互连[J].内蒙古大学学报:自然科学版,2003,34(5):560-563.

[5]网页http://www.daqchina.net/daqchina/download/winio.htm资料.

[6]周永基.PC并口EPP通信外围电路设计[J].现代电子技术,2003,26(10):29-34.

VB通信论文 篇7

1 Atmega8单片机的USART部件

Atmega8的USART是串行通信部件。对Atmega8的USART的操作为寄存器访问。与USART有关的寄存器有UCSRA寄存器、UCSRB寄存器、UCSRC寄存器、UDR寄存器、UBRR寄存器。Atmega8的USART支持9600bit/s、115200bit/s等波特率,支持多种帧格式,包括5/6/7/8/9位数据位,有/无奇偶校验位,一位/两位停止位等帧格式。USART甚至支持同步串行通信。USART的数据收发可以采用中断和查询两种方式。由于Atmega8的USART使用TTL电平,与PC机的串口的RS-232电平不匹配,所以需要用MAX232进行电平转换。图1是串行通信硬件连接图。

以下是部分Atmega8采用查询收发串行数据的C语言代码:

2 Visual Basic 6.0和MS Comm控件

Visual Basic是微软公司出品的一个快速可视化程序开发工具软件,是极具特色和功能强大的软件。它所包含的MS Comm控件可以用于串行通信,可以简化Windows串行通信编程。MS Comm控件有很多属性,常用的属性有:

(1)Comm Port设置并返回通讯端口号。

(2)Settings以字符串的形式设置并返回波特率、奇偶校验、数据位、停止位。

(3)Port Open设置并返回通讯端口的状态。也可以打开和关闭端口。

(4)Input接收缓冲区。

(5)Output发送缓冲区。

(6)在MSComm控件设置Comm Event属性为com Ev Receive并产生On Comm之前,要接收的字符数。

MS Comm提供了两种处理通信问题的方法:一是事件驱动(Event-driven)方法,一是查询法。

用VB开发上位机程序时,新建一个窗体,在上面放一个MSComm控件、两个TextBox控件、两个CommandButton控件和两个Label控件(如图2所示)。

具体见下表:

3 结束语

VB6.0以其好学易用性得到广泛的应用,Atmega8单片机以其高性价比、功能强大等特点被广泛应用于测控领域,Atmega8与PC机的结合能够实现方便、强大的测控功能。

参考文献

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

[2]李长林.Visual Basic串口通信技术与典型实例[M].北京:清华大学出版社,2006.

VB通信论文 篇8

一、MSComm控件

串行通信控件Microsoft Comm Control (简称MSComm) , 只要正确设置和监视控件的属性和事件, 就可以实现通信。

1、控件属性

(1) Comm Port:设置并返回通信端口号。

(2) Settings:以字符串设置并返回波特率, 奇偶校验位, 数据位和停止位。

(3) Port Open:设置并返回通信端口的状态。

(4) Input:从接收缓冲区中读数据, 类型为Variant。

(5) Output:向发送缓冲区写数据, 类型为字符串或字节数组。

(6) InputMode:设置从缓冲区读数据的格式。

(7) In Buffer Count:设置和返回接收缓冲区的字节数, 0表示清空缓冲区。

(8) Out Buffer Count:设置和返回发送缓冲区的字节数, 0表示清空缓冲区。

(9) InputLen:设置和返回每次读出的字节数, 0表示读出接收缓冲区中的内容。

(10) Rthreshold:在OnComm发生之前, 接收缓冲区接收的最少字节数。0表示禁止发生串口事件。1表示当接收缓冲区中的字节数≥1时, 产生接收事件。

(11) CommEvent:返回相应的串口事件常数。

2、控件处理接收信息的方式

(1) 事件驱动方式

每当有新字符到达或端口状态改变或发生错误时, M S C o m m控件将产生On Comm事件, 而应用程序在捕获该事件后, 通过检查CommEvent属性可以获知所发生的事件或错误, 从而采用相应的操作。

(2) 查询方式

通过查询InputBufferCount属性值, 处理接收到的信息。执行完某一串口操作后, 将不断检查某一事件是否发生, 所以该方式占用CPU的时间较多。

二、串口通信程序

我们采用事件驱动方式, 计算机作为主机, P L C作为从机, 单击“发送”按钮, 计算机发送数组Array中的数据, 计算机接收到PLC返回的数据后存在数组rcv内, 并在文本框中显示出来。

1、串口及通信参数初始化

2、发送程序

要发送的报文格式, 如表1。

3、接收数据

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

三、P L C程序

报文格式如表2所示。

CPU模块在接收时检测起始字符和结束字符。校验码为报文中“数据字节数”字节与数据区各字节的异或和, VB90存放CPU计算出的异或校验结果, VB91和VB99分别存放计算机发送来的检验码和数据区字节数。

1、主程序

2、初始化子程序

3、接收完成中断程序INT_0

计算机与PLC组建的实时监控系统开发成本低、实时性好、操作简便、通用性强, 利用计算机易组网功能, 既可做到内部网络互联、信息共享, 又可网络, 使异地信息共享、远程监控变为现实。

参考文献

[1]李淑华.VB程序设计及应用.高等教育出版社

[2]范逸之.VB与RS232串行通信控制.中国青年出版社

[3]廖常初.PLC编程及应用.机械工业出版社

上一篇:三联抗血小板论文下一篇:H.264解码器