APP下载

基于Labview对大学生方程式赛车的虚拟仪表设计

2014-04-16姜帅琦

科技视界 2014年13期
关键词:流程图串口单片机

姜帅琦

(南京农业大学 工学院,江苏 南京 210031)

0 引言

Labview软件简介:

本设计采用Labview软件进行开发设计。Labview是美国NI公司的一种基于G语言的虚拟仪器软件开发工具。它的显著特点是:采用简单易学的图形化编程,提供众多的设备驱动程序和可供用户直接调用且功能强大的函数库和Windows动态链接库函数,实现多线程编程等高级功能。并提供灵活的程序调试手段,既可以设置断点又可以设置探针,在程序运行中观察数据流的变化。

Labview编写的程序叫虚拟仪器程序,包括软面板设计和流程图设计2部分。软面板代替常规仪器的控制面板,一般由开关、旋钮、表头、显示器和其他部件组成。仪器流程图的设计,是根据仪器功能的要求,利用虚拟仪器开发平台提供的子模板,确定程序的流程图、主要处理算法和所实现的技术方法。流程图与每个仪器的前面板对应,用户能够通过前面板,用鼠标或控件操作仪器。

Labview具有功能强大的函数模块库,特别适用于测试和控制系统的开发。结合NI的硬件模块,能够方便的进行采集和分析相关测试数据。考虑到仪表整体功能测试和模块功能测试的需要,整个系统主要包括界面模块和各个功能测试模块。根据信号类型将仪表功能测试分为:车速表测试模块、发动机转速表测试模块、燃油表测试模块、水温表测试模块等主要功能模块。

1 Labview串口通信

程序设计主要由两部分组成:上位机程序设计和下位机程序设计,而在编写双方通信程序之前,必须先定义好双方的通信协议,采用相应的数据传输方法,这样才能保证数据的可靠性。

串行通信是一种常用的数据传输方法,虽然它的传输速度慢,但由于它占用的通信线路少、成本低、容易实现等优点,在数据通信方式上仍占有重要地位。目前,串口通信程序的开发,在Windows操作系统下一般用VB、VC、VF Delphi等许多高级语言编写。当用VB、VC、VF,开发串行通信程序时,开发人员不得不面对非常烦琐的API函数编程;用文本语言编串口通信程序较为复杂,花费的时间较长。所以在主机通信程序设计中,我们采用LabVIEW图形化语言作为编程语言,它把高级语言中的函数封装为图形功能模块,图标间的连线表示各个功能模块之间的数据传递。编程方式简单、直观、便于使用。串口通信功能模块包括串口初始化模块、串口读模块以及串口写模块,通过这些模块就可以实现对单片机的控制。

2 VISA串行通信基本功能模块介绍

VISA的调用流程如图1所示。通过对VISA节点的调用,可以方便、快速地实现系统上位机对下位机的实时监控。

在LabVIEW功能模板的Function >>InstrumentI/O >>VISA 程序库中包含进行串行通信操作的一些功能模块:

2.1 VISA Configure Serial Port节点

图1

该节点主要用于串口的初始化,在利用计算机控制串口仪器设备时,会经常用到这个节点在进行串行通信前,首先要配置好串口,即先初始化串口,使计算串口的各种参数设计与仪器设备的串口保持一致,这样才能正确的通信。它的主要参数意义如下:

VISA resource name:VISA资源名称,本文指串口号。

baud rate:波特率,默认为 9600。

data bits:一帧信息中的位数,LabVIEW中允许5-8位数据,默认值为8位。

stop bits:一帧信息中的停止位的位数,可为1位、1位半或2位。

Parity:奇偶校验设置。可为无校验、奇校验或偶校验。

flow control:该参数数据类型为簇,用于串行通讯中的握手方式。

2.2 VISA Read 节点

V该节点为串口读子VI,为本文中的主要节点,将串口中的数据读出,然后利用LabVIEW的强大数据处理功能对其进行分析处理。主要参数意义如下:

ISA resource name:VISA资源名称,本文指串口号。

byte count:用于设置所要读的字符数。由于LabVIEW的串行通讯子V1只允许对字符串的读写,因此本文中在进行数据处理时,必须要实现字符串与数字之间的正确转换。此外,若要读入当前串口中的所有字符,则要执行“VISA Sytes at Serial Port”子VI,用以确定将要读入的确切的字节数,然后将其输出作为VISARead节点的输入即可。

2.3 VISA Write 节点(如图 2)

图2

VISA Write节点的功能是向VISA resource name所代表的仪器或接口写入信息。输入参数VISA resource name是VISA Open函数所返回的,或者“流过”其他VISA函数的,包含了会话信息的VISA资源名;write buffer为字符串类型的写入数据,输出参数dup VISA resource name为输入参数VISA resource name的一个备份,可用于后继的VISA函数调用。整型输出参数return count返回实际写入数据的字节数。

2.4 VISA Close 节点(如图 3)

图3

主要参数:

VISA resource name:VISA资源名称,本文指串口号。

本文所用LabVIEW串口通讯程序的波特率为96O0,无奇偶校验,8位数据位,1位停止位,禁止软、硬件握手。

该节点用于将打开的VISA资源关闭,VISA resource name输入参数为包含会话信息的资源名。该函数关闭VISA会话,并释放与之关联的所有资源。

2.5 VISA Open 节点

该函数功能为打开一个与VISA resource name所代表仪器资源的会话。会话是VISA resource name参数本身隐含携带的仪器访问逻辑标识,可以同时存在对一个VISA资源的多个访问会话。在调用VISA Open之前VISA resource name参数仅仅是一个资源描述字符串,在函数调用之后,输出参数VISA resource name已经携带了会话信息,可以用于后继的VISA操作。输入参数为包含会话信息的资源名。

当完成VISA资源的搜索后,对于搜索到的VISA资源,可以通过VISA Open节点打开,建立计算机与这些VISA资源之间的通信管道。

3 VISA设计方法

3.1 Labview串口开发过程

在Labview环境中使用串口与在其它开发环境中开发过程类似,基本的流程框如图4:

图4

首先需要调用VISA Configure Serial Port完成串口参数的设置,包括所用串口号、比特率、一帧信息中有效数据的位数、停止位、奇偶校验、数据流量控制等,如下图5:

图5

如果初始化没有问题,就可以使用这个串口进行数据收发。

发送数据使用VISA Write,接收数据使用VISARead。如果VISA Read要读取的字节数大于缓冲区中的数据字节数,VISA Read操作将一直等待,直至Timeout或者缓冲区中的数据字节数达到要求的字节数。

在某些特殊情况下,需要设置串口接收/发送缓冲区的大小,此时可以使用VISA Set I/O BufferSize;而使用VISA Flush I/O Buffer则可以清空接收与发送缓冲区。在串口使用结束后,使用VISA Close结束与VISAResource Name指定的串口之间的会话。

3.2 VISA属性设置及串口实现

首先完成串口的初始化,在此设置波特率为9600b/s,8位数据位,1位停止位,无奇偶校验;其次设置Write/Read等相应模块的功能。

由于硬件在整个工作期间,以9600bit/s的速率连续向外发送数据,为了数据处理方便,可以采用LabVIEW8.6中的Serial Read With Time-out.vi模块,以保证每次从串口缓存中读出等量偶数个数据。

4 单片机程序设计

本文中所做的研究需要将实际采集到的方程式赛车的各种仪表信息存储到单片机中,由单片机提供数据给上位机进而实现数据的显示,再通过PC机的RS-232串行接口与外部设备进行通信,因此需要实现PC机和单片机之间的通信。本文将论述在Labview环境下PC机与AT89S52单片机之间实现串行通信的方案。

4.1 系统工作流程

下位机的程序包括数据采集模块和串口通信的数据传输模块,数据采集模块首先进行初始化,通过单片机控制A/D转换模块数据采集功能,A/D模块将模拟信号转换成数字信号后发出中断,单片机将传输AD模块采集的信号到缓冲区。串口数据传输模块在串口通信之前,对串口进行初始化,主要包括串口波特率,数据格式,接收中断的设置[18]。当上位机发送数据给下位机,会引起单片机接收中断,此时进入中断服务程序,单片机接收数据,比较校验和,如果相同,发指令给PC机确认,最后将采集到的数据通过RS-232串行接口传送到PC机。

4.2 按键子程序流程图

键盘扫描查询子程序,是提供人机信息交换的接口。由于采用扫描法,是利用CPU在完成其他工作之余,反复扫描查询键盘接口,根据端口的输入情况,调用不同的按键处理子程序。当按键按下时,利用软件延时去抖动,然后扫描按键位置,读取准确数值,最后完成一次按键处理。

4.3 显示子程序流程图

当单片机输出字形码时,所有数码管都接收到相同的字形码,但究竟是那个数码管会显示出字形,取决于单片机对位选通COM端电路的控制,所以只要将需要显示的数码管的选通控制打开,该位就显示出字形,没有选通的数码管就不会亮。在轮流显示过程中,每位数码管的点亮时间为1~5ms,由于人的视觉暂留现象及发光二极管的余辉效应,只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感。显示子程序流程图如图6所示。

图6

4.4 数据采集程序的实现

单片机程序用A/D模块进行采集传感器的值,然后用SCI口将采集的值发给PC机。

A/D转换简介:

在过程控制和仪器仪表中,多由计算机进行实时控制及实时数据处理,计算机所加工的信息总是数字量,而被检测的对象却往往是一些连续变化的模拟量(如温度、压力、速度和流量等),因此需要将模拟量转化成为数字量,以便在计算机中进行运算处理,此过程称为模数(A/D)转换。进行A/D转换,需要了解以下的基本问题:

1)采样精度

采样精度就是指数字量变化一个最小量是模拟信号的变化量,即通常所说的采样位数。设采样位数为N,则最小的能检测到的模拟量变化值为1/2N。如图7所示:

图7

2)采样速率

采样速率是指完成一次A/D采样所要花费的时间。速率和所选器件的工作频率有很大关系。

3)滤波

为了使采样的数据更准确,必须对采样的数据进行筛选去掉误差较大的数据。通常采用中值滤波和均值滤波来提高采样精度。中值滤波是取3次采样的中间值,均值滤波是取多次采样的算术平均值。

4)物理量回归

在实际应用中,得到稳定的A/D采样值后,还需要把A/D采样值与实际物理量对应起来。A/D转换的目的是把模拟信号转化为数字信号,供计算机进行处理,但必须知道A/D转换后的数值所代表的实际物理量的值,这样才有实际意义。

5 虚拟仪表程序

5.1 主程序

5.2 宏定义程序

6 总结

采用NI的Labview软件系统,使得我们建立起一套虚拟仪表平台,通过该系统可以快速准确的获得各项数据,为我们后续赛车电子产品的研发积累了测试经验。虚拟数字式赛车仪表的应用,使仪表的读数更加清晰和直观、信息量更大、智能化程度更高、功耗低及开发周期短,可用于日常学科研究中。通过对Labview的综合应用及与单片机的相结合,使方程式赛车的虚拟仪表设计更加简化快速,Labview也为方程式赛车的其他设计提供了更好的平台。

猜你喜欢

流程图串口单片机
浅谈AB PLC串口跟RFID传感器的通讯应用
基于单片机的SPWM控制逆变器的设计与实现
基于单片机的层次渐变暖灯的研究
基于单片机的便捷式LCF测量仪
专利申请审批流程图
专利申请审批流程图
USB接口的多串口数据并行接收方法探索
基于蓝牙串口适配器的GPS接收机与AutoCAD的实时无线通信
Microchip推出两个全新PIC单片机系列
宁海县村级权力清单36条