刘擘,梁哲兴
基于NI虚拟仪器和nRF9E5单片机的串口通讯
刘擘1,梁哲兴2
(1. 海军驻712所军代室,武汉 430064;2. 武汉船用电力推进装置研究所,武汉 430064)
针对多通道、长距离的数据传输,本文采用串口通讯方式,基于NI工控机和nRF9E5单片机硬件平台,并通过试验验证。
串口通讯 NI虚拟仪器 nRF9E5单片机
单片机与上位PC机的通讯方式有并行通讯和串行通讯。与并行通信相比,串行通信速度比较慢,不过由于其硬件连接占用硬件资源较少(只需两根线),信号传输距离远,使得串行通讯应用广泛。
本项目要求实现对多个检测通道数据的远距离传输处理,故采用串行通讯。
串口通讯由硬件平台和软件平台两部分组成。硬件平台是由NI虚拟仪器和nRF9E5单片机组成,其中NI虚拟仪器作为串口通讯的上位机,nRF9E5单片机作为串口通讯的下位机。
nRF9E5单片机是系统级无线射频收发芯片,内嵌高性能8051MCU,4通道12位ADC信号采集。内置nRF905收发器,包括所有nRF905芯片特性,可以工作在shockburstTM模式下(自动处理前缀,地址和CRC),最大程度的抑制了噪声,工作电压范围为1.9~3.6 V。
其原理框图如下图所示。
所谓虚拟仪器,是以PC机为基础,配以相应测试功能的硬件作为信号输入/输出的接口,完成信号的采集、测量与调理,从而实现各种测试功能的一种计算机化仪器系统。
NI虚拟仪器由通用仪器硬件平台和应用软件两大部分构成,如图2所示。
通用仪器硬件平台是虚拟仪器工作的基础,主要由PC机和信号采集调理装置组成,用于完成输入信号的采集、放大、模/数转换和信号输出控制等,其中PC机用来提供实时高效的数据处理性能,信号采集调理装置主要用来采集、传输信号,本项目采用性价比高、通用性强的PXI系统,PXI系统主机为NI PXI 1042,数据采集设备选用了一块PXI 6229多功能数据采集卡,它有32路16 Bit模拟量采集口和48路双向数字量接口,最大采样率为240 kS。
应用软件是虚拟仪器的核心,虚拟仪器可以在相同的硬件平台下,通过不同的测试功能软件模块的组合,实现功能完全不同的各种仪器。目前应用最为广泛的虚拟仪器软件开发工具就是美国NI公司推出的实验室虚拟仪器工程平台LabVIEW,它是一种基于G语言的32位编译型图形化编程语言,它采用模块化、结构化的设计思想,提高了编程效率,增强了软件的可维护性和可扩展性。
NI虚拟仪器具备GPIB,串口,以太网,USB等多种接口,可实现各种信号的采集、分析处理和数据传输等功能。
nRF9E5单片机内嵌8051系列微控制器,可在Keil C51调试软件平台上用C语言编程,编译完成后通过仿真器将程序下载到单片机ROM中。
NI虚拟仪器软件采用Labview 8.2版本,进行图形化程序编辑处理。
由于nRF9E5单片机具有无线收发功能,所以在本项目中,由1个nRF9E5单片机作为通讯管理单元,其他每个nRF9E5单片机作为单个信号检测通道,共计16个通道。通讯管理单元与NI虚拟仪器采用串口通讯方式,与16个信号检测通道采用无线通讯方式,在本文中,主要论述的是通讯管理单元与NI虚拟仪器的串口通讯。原理如图3。
通讯采用被动方式,即通讯管理单元不会主动向NI虚拟仪器传送数据,必须由NI虚拟仪器向通讯管理单元发出读写指令,通讯管理单元才会做出相应的反应。
NI虚拟仪器与通讯管理单元进行串口通讯,通讯采用轮流查询等方式,每路无线收发单元的地址都不相同。根据需要,无线收发单元的地址用三个ASCII字符表示,地址范围从000~015,即可有16路单片机通过通讯管理单元与上位机进行串口通讯。通讯管理单元与上位机应设置相同的通讯速率,在此设定为19 200 bit/s。
下位机和上位机的程序流程框图如图4和图5所示。
上位机每向单片机发一指令,单片机在0~500 ms内做出应答,而上位机也必须等单片机返回数据后,才能发新的指令,上位机接收转发送应至少延时10 ms。如果单片机超过最大响应时间仍没有应答,或应答数据不齐,则原因可能无效指令、通讯线路故障,单片机没有开机,通讯地址错误等。
上位机发出写数据指令后,如果单片机返回“NAK”,可能是数据传输错误,也可能是上位机发送的数据无效,单片机不能接收此数据。
上位机发送命令和接收数据的程序。
对于读采集通道的数据操作,上位机首先向单片机发送读数据的命令。单片机接收到指令后,首先进行校验,若不正确则进行相应处理,若正确则判别上位机读数据的地址是否和该单片机的地址相同,相同则发送数据,不同则轮询。当上位机接收到这组数据后,上位机就把该组数据和发送给单片机的数据作比较,如果两者一致,上位机开始准备接收数据串。数据串的个数,单片机在返回上位机的命令后会跟着一个关于数据量的字符,将该字符转化为数字量后就是数据串的大小。若比较结果不一致,上位机则会采取措施将错误的代码进行保存,供操作者识别。
串口通讯连续运行15小时,没有出现通讯错误。通讯错误在程序设计中分为两大类:一类是发送和接收数据长度一致,但在通讯过程中由于某些因素出现数据不一致;另一类是发送和接收数据长度不一致,或者是接收不到数据(数据丢失现象),原因可能是通讯暂时中断或其它。这两类错误在程序设计中分别用不同代码表示。通讯错误与正确数据一样,都保存在同一文件,且通讯错误的出现不会影响程序的正常运行。
模拟试验结果表明,通讯管理单元与NI虚拟仪器的串口通讯设计是正确的。
[1] nRF9E5中文手册2006版. 迅通科技.
[2] 陈兴华, 梁哲兴, 陈树衡. 虚拟仪器及其应用. 船电技术,2006(增刊).
Serial Communication Based on NI Virtual Instrument and nRF9E5 Single Chip Microcontroller
Liu Bo1, Liang Zhexing2
(1. Naval representatives Office in 712th Institute, Wuhan 430064, China; 2. Wuhan Institute of Marine Electric Propulsion, Wuhan 430064, China
TN915
A
1003-4862(2013)12-0052-03
2013-07-18
刘擘(1980-),男,工程师。研究方向:通讯工程。