刘璐,袁战军,郭静
(陕西国际商贸学院信息与工程学院,陕西咸阳712046)
在现代工业不断发展和进步的过程中,控制系统也越来越复杂,数据的处理量也在不断的提高,但是单片机的处理能力是有限的,从而无法满足控制需求,所以分布式系统逐渐备受重视。在分布式系统数据收集过程中主要是通过下位机实现,将收集数据实现进一步分析及处理是通过上位机实现[1]。因为单片机的价格较低,并且具有较高的可靠性,所以被广泛应用到较为恶劣的工业环境中,分布式控制系统大部分都是使用单片机作为下位机。但是计算机的处理能力较强,并且具有良好的人际交互优势,所以其被作为上位机使用[2]。单片机和计算机通信一般都是使用串口通信模式,其主要是利用数据信号线、控制线和地线等按位实现数据通信的方式。Labview属于以数据流为基础的图形化编程环境,其被广泛应用到控制领域和检测方面。因为程序属于图形化框图的形式,在人机交互过程中具有一定的优势,并且其逐渐成为上位机的编程软件[3]。基于此,本文就实现了基于Labview的计算机和单片机通信设计。
文中所设计的通信硬件主要包括4部分,图1为计算机和单片机的线路设计结构,计算机属于上位机,其主要目的就是实现数据的发送、接受及人机交互。单片机作为下位机,其主要目的就是实现串口数据接口和发送[4]。
图1 计算机和单片机的线路设计结构
首先,通过单片机、电阻、晶振和电容创建单片机最小的系统,基于最小系统,根据MXA232芯片实现DB9串行端口的引出。使单片机串口到计算机和TXD中发送,并且接收到RXD的连接,单片机串口接收到计算机和RXD串口的连接对TXD相连进行发送,并且将两者和单片机的I/O引脚相互连接[5]。图2为串口通信显示系统硬件的电路结构。
图2 串口通信显示系统硬件的电路结构
系统中的计算机属于主控机,其主要作用就是控制下位单片机,实现下位机发送数据的存储和处理,程序使用Labview进行编写。下位单片机的主要目的就是实现工业现场的监控对象检测及控制,程序使用汇编语言进行编写。为了能够有效提高通信过程中的可靠性,通信双方要签订相应的通信协议,也就是双方都需要遵守的约定。比如,数据传输格式、校验格式及波特率等[6]。本文实现的通信协议主要为:使用RS-232异步通信,数据传输格式为11 bit。
图3为单片机主函数的程序流程,图4为单片机串口中断函数的程序流程。其中的参数要和上位机参数设置相同,比如奇偶校验、波特率等,通过对语句判断,将标识位去除,全面解析上位机发送的数据,之后使数据能够到串口缓冲区寄存器进行写入。为了能够将数据通过液晶充分的展现出来,就要根据液晶驱动时序图实现数据、写指令等一系列时序的设置,然后实现串口通信及液晶显示时序的匹配。因为液晶要具有一定的时间,而且串口通信数据收发比较快,无法接收某个字节并且将此字节显示处理,所以就要将接收数据到另外数组中通过中断方式充分展现[7]。
图3 单片机主函数的程序流程
图4 单片机串口中断函数的程序流程
Labview具有5个串行通信节点,其主要功能就是串口设置、串口读、串口写、串口缓存的检测、中断等多种功能,此节点都是在功能模板的I/O子模板中设置[8]。
串口通信节点使用过程比较简单,并且容易理解,以下为其节点的定义、功能及使用方法。
1)初始化。图5为初始化串口的设置,其主要功能就是实现数据位、波特率、奇偶校验位、停止位等的设计,其在通过计算机对串口仪器设备进行控制的过程中会使用,在使用串口通信之前,要实现串口的配置,从而实现正常通信[9]。
图5 初始化串口的设置
2)串口写。图6为串口写的设置,此节点将需要送到数据发送到串口输出缓存中。
图6 串口写的设置
3)检测串口缓存字节数。图7为检测串口缓存字节数的设置,在使用此节点检测到目前串口输入缓存中已经具有的字节数,之后制定serial port read节点,通过串口输入缓存实现字节数的读取,从而保证以此就能够将缓存数据全部读取[10]。
图7 检测串口缓存字节数的设置
4)串口读。图8为串口读的设置,通过串口缓存实现端端口制定长度数据的读取。
图8 串口读的设置
5)串行通信设计。图9为串行通信的设计。
图9 串行通信的设计
在通过Labview开发环境创建程序的过程中,其主要包括程序板、程序调试和框图程序的设计,前面板设计的主要目的就是实现良好人机交互界面的生成,用户利用操作控件实现操作,并且实现输入参数的设计,还能够实现输入量指示器的设计,从而显示数据。框图程序设计的主要目的就是实现数据端口、节点及连线的程序设计[11]。图10为计算机和单片机通信的结构图。
图10 计算机和单片机通信的结构图
以本文设计要求,在DDS信号源扫频模式前面板设计窗口中利用添加控件板数值实现控件输入、开关、按钮等一系列的操作,利用DDS实现起始扫描及频率截止、扫描周期、扫描步进等输入数值,以此实现数据的控制。能够对按钮的形状、位置、控制量精度、名称进行调整,通过控件选板实现I/O口资源名称控件的添加,从而能够实现串口通信设备的安装。并且根据不同的信号,实现跳频、单频工作模式前面板的设计,从而使操作更加便捷及简单[12]。图11为前面板的设计结构。
在实现框图程序设计的过程中,要在框图窗口面板中选择满足需求的节点图表,之后在框图中通过端子和其相互连接,这个时候要使用单片机为AD芯片控制寄存和幅度、频率、驻留时间和步进等一系列的寄存器实现控制字信息的发送,在通过Labview实现设计单片机和计算机通信的时候,要使前面板输入DDS扫频起始频率、扫频步进、截止频率、扫频周期等十进制数值通过相应运算转换成为十六进制数值,使用VISA写入函数使缓冲区相应的十六进制数据到VISA资源名称进行接口及设备的写入,最后对单片机进行发送[12-13]。图12为单片机和计算机框图程序的设计。
图12 单片机和计算机框图程序的设计
现代串口通信程序开发过程中,在计算机操作系统中一般使用VC、VB等高级语言进行编写,在使用其实现串口通信程序开发过程中,开发人员要面临较为繁琐的API函数编程,使用文本语言编写串口通信较为复杂,并且花费时间比较长,所以在实现主机通信程序设计的过程中,都使用Labview图形化语言进行编程,其能够将高级语言函数封装成为图形功能模块,图标之间的相互连线能够实现功能模块的相互传递,其编程较为简单,能够直接使用[14]。
首先对VIS进行调用,从而设置串口参数,包括比特率、串口号及数据中的停止位、位数、数据流量控制及奇偶检验,假如初始化没有问题就使用此串口实现数据收发,在串口结束使用过程中,通过VIS结束和相应串口进行对话[15]。图13为VISA调用的工作流程。
图13 VISA调用的工作流程
根据软件和硬件的设计实现以Labview为基础的计算机和单片机串口通信的设计,通过上位机实现数据123的发送,单片机在接收到数据之后到上位机进行返回,并且在液晶屏中实现数据的显示,从而能够实现计算机和单片机的数据通信[16]。
Labview属于虚拟仪器开发的工具,图形化编程界面能够使开发人员便于开发理想虚拟仪器程序,并且Labview还具有较为强大的网络功能,通过Labview开发更加便捷。本文实现Labview实现了计算机和单片机的通信设计,通过最后调试表示,本文所设计的通信能够实现计算机数据的实时通信,并且提高通信的精准度。