APP下载

一种支持USB和以太网端口的数据采集器设计

2014-06-27宋晓梅巩学芳

西安工程大学学报 2014年5期
关键词:PC机采集器调用

李 楠,宋晓梅,巩学芳

(西安工程大学 电子信息学院,陕西 西安 710048)

0 引 言

工业生产和科研研究等行业中,常需要利用工控机或PC机对温度、电压、压力、电流等各种数据进行采集处理.数据采集系统的任务是对生产现场各种参数进行采集,送入计算机,由计算机根据需要进行相应的计算和处理,得到所需数据,同时根据需求对数据进行处理[1].现存的多数数据采集系统通常只有一种通信传输端口[2-6],如文献[2]中的系统采用CAN总线端口,文献[3-4]中的系统采用USB端口,文献[5-6]中的系统采用以太网端口.由于上述系统缺乏对多种端口与不同工作模式的支持,从而限制了其更广泛地应用.另外,考虑到USB和以太网通信端口是工业应用中与PC机连接常用的端口,为此,本文提出了一种基于双C8051F340处理器架构可支持USB和以太网端口的数据采集器.该数据采集器特点是支持多种工作模式,同时可将采集数据传输给PC机GUI软件进行直观显示.

1 方案设计

提出的数据采集器可将采集的数据通过USB和以太网端口传输给PC机GUI软件进行直观显示,并具有多种工作模式.考虑到不同通信端口在启动时间、缓存大小、传输速率等方面有较大差异,为了在不同工作模式下既实现最大采样频率与传输速率,又防止数据丢失,设计了如下3种工作模式:(1)USB传输模式,A/D采样频率为200kHz,一帧数据长度为1 500字节;(2)以太网传输模式,A/D采样频率为75kHz, 一帧数据长度为320字节;(3)USB和以太网混合传输模式,A/D采样频率为70kHz, 一帧数据长度为320字节.

数据采集器的原理框图如图1所示,包括PC机GUI软件模块和数据采集、传输模块.采用LabVIEW编写的GUI软件可通过USB和以太网端口获取采集数据并直观显示;数据采集与传输模块实现数据采集、控制和传输,包括USB传输子模块和以太网传输子模块,且两个子模块之间采用SPI总线进行互联通信;USB传输子模块包括信号的采集、工作模式选择、数据USB传输以及数据SPI发送,以太网传输子模块实现数据采样,带锁定按键1、2实现工作模式选择,模式控制方式如下:若键1按下,为USB传输模式,采集数据由USB端口直接经PC机USB传给GUI软件;若键2按下,为以太网传输模式,采集数据采用SPI通信传给以太网子模块,C8051F340(2)通过并口控制以太网控制器CP2200,经RJ45集成以太网接口HR911175A传给PC机GUI软件;若键1,2均按下,则为USB和以太网混合传输模式.

图1 数据采集器原理框图

2 硬件设计

数据采集器硬件主要涉及数据采集与传输模块,该模块又可细分为C8051F340单片机最小系统子模块、USB传输子模块、以太网传输子模块、SPI通信子模块,考虑到C8051F340最小系统参考文献较多,文中不再赘述,下面主要给出其他子模块的硬件连接关系.如图2所示,USB传输子模块中经调理电路处理过的信号由C8051F340(1)的P2.0引脚输入,利用片上A/D进行采样,P0.5、P0.7引脚接按键,键1、键2分别对应USB传输和以太网传输选择键.USB为C8051F340(1)和C8051F340(2)提供5V电压,均经各自REGIN引脚进入片上电压调节器生成工作所需的3.3V电压.以太网传输子模块中C8051F340(2)包括P3、P4在内的一些I/O引脚与CP2200对应引脚相连,它们之间是并行通信,CP2200其他引脚如TX-、TX+等与HR911175A对应引脚相连.两子模块之间采用SPI通信,采用四线单主机方式,C8051F340(1)(SPI主机)上P0.0~P0.3分别与C8051F340(2)(SPI从机)上P0.0~P0.2,P0.4相连.

图2 数据采集器主要器件硬件连接关系

3 软件设计

数据采集器软件设计包括单片机程序和PC机GUI软件程序2部分.其中,单片机程序实现工作模式选择、SPI通信、数据采集并通过USB或以太网端口向GUI软件传输数据;GUI软件从USB和以太网端口获取采集数据并进行图形化显示.

3.1 单片机程序设计

单片机程序设计包括C8051F340(1)程序和C8051F340(2)程序2部分.其中,C8051F340(1)程序需实现工作模式选择、数据采集、数据SPI发送及USB传输;C8051F340(2)需通过SPI从C8051F340(1)获取采集数据并实现以太网传输.

图3 C8051F340(1)主程流程图

3.1.1 C8051F340(1)程序设计 C8051F340(1)程序主要包括A/D采样程序、SPI主机程序、USB传输程序3部分,其主流程图如图3所示.C8051F340上电复位进行初始化设置,包括USB和单片机初始化,单片机初始化实现对晶振,I/O、定时器、内部中断、A/D和SPI初始化.然后,扫描键1,2的值确定工作模式,若分别为1,0,则为USB工作模式,将采集的一帧数据经SPI端口传给PC机;若分别为0,1,则为以太网工作模式,通过SPI通信方式将一帧数据发送给以太网传输子模块,由其与PC机进行以太网传输;若分别为1,1,则表示选择USB和以太网混合传输模式.

(1) A/D采样程序设计.设置A/D的参考电压为VDD(3.3V),采用8位单端采样,模拟输入为P2.0引脚,由定时器2确定A/D采样频率(200kHz、75kHz、70kHz).每完成一次数据采样,触发A/D中断,将采样数据存储到片上RAM中设置的存储区,当存储区采集数据长度为一帧(1 500、320、320字节)时,根据需要将该帧数据通过相应方式向外传输.另外,为了实现不间断采样,采用“乒乓”制实现两存储区交替完成数据采集和传输的任务.

(2) SPI主机程序设计.SPI采用四线单主机连接SPI0工作方式,主机只发送,从机只接收,这种状态下从器件接收数据的最大传输速率为系统时钟频率(48MHz)的1/4.经验证,本设计中8M为最大传输速率,下面为SPI主机向从机写数据函数:

void SPI-Write(uchar dat)

{

while(TXBMT==0);//等待发送缓冲存器为空

SPI0DAT=dat;//向数据寄存器写数据

while(SPIF==0);//等待SPI写完成

SPIF=0;//清除完成中断标志位

}

(3) USB传输程序设计.在设计USB传输程序时,直接调用Silicon Labs公司为C8051F340的USB功能开发的API函数,如USB-Suspend()、Block-Write()等,可使USB通信更易于实现.USB通信基本流程为:调用USB-Clock-Start(),初始化USB总线时钟,调用USB-Init()使能USB总线,调用USB-Int-Enable()使能API中断,调用Block-Write()向PC机GUI软件写采样数据,完成通信后,调用USB-Suspend()挂起USB中断.

3.1.2 C8051F340(2)程序设计 C8051F340(2)程序主要包括以太网传输程序、SPI从机程序,其主流程为单片主程序完成以太网传输的初始化设置,包括单片机初始化和以太网芯片初始化.建立网络连接后,通过SPI口接收从USB传输子模块传来的一帧数据,该帧数据接收完后,通过以太网接口将该帧数据传输给PC机.

(1) 以太网传输程序设计.在设计以太网传输程序时,考虑到UDP协议传输速度快,不必在每次传输数据时建立连接,因此采用UDP通信.另外,直接调用Silicon Labs公司为以太网控制芯片CP2200开发的TCP/IP库函数,使UDP通信程序的设计简单方便.其基本流程为:调用mn-init()完成UDP协议栈初始化,调用establish-network-connection()建立网络连接,调用mn-open()打开一个数据帧包,调用mn-send()发送一个数据帧包,调用mn-abort()关闭网络连接.

(2) SPI从机程序设计.SPI从机接收从主机传来的采样数据,下面是SPI从机从主机读数据函数:

uchar SPI-Read(void)

{

uchar dat;

while(SPI0CFG & 0x01);//等待接收到数据

dat=SPI0DAT;//读数据寄存器接收到新数据

while(SPIF==0);//等待SPI完成数据接收

SPIF=0;//清除传输完成中断标志位

return(dat);//从机返回一个随机数据

}

此外,有两点需要说明:第一,同一信号多次采样值不可能完全相同,所以只由C8051F340(1)上A/D进行采样,然后根据需要将采集数据传给PC机或以太网子模块,保证任何传输模式中数据的一致性;第二,C8051F340片上USB传输速率可达12Mb/s,只进行USB传输时,设A/D采样速率为最大值200ksps;当进行以太网传输时,考虑到A/D采样、SPI通信、以太网传输三者所用时间影响到采样数据的准确传输,所以对各自使用时间进行测试,具体测试方法如下:使用C8051F340(1)上P1.0口产生方波方式测得通过SPI通信发送一帧(320字节)数据所用时间T(spi)=0.66ms,测试代码为do{P10=1;SPI-Wdata();P10=0; SPI-Wdata();}while(1);同理,使用C8051F340(2)上P14口产生方波,测得通过以太网发送一帧数据所用时间T(udp)=3.3ms,测试代码为do{P14=~P14;status2=mn-send(socket-no2,send-data-buff1,SEND-DATA-BUFF-LEN);P14=~P14;status2=mn-send(socket-no2, send-data-buff2,SEND-DATA-BUFF-LEN);}while(1),此时设AD采样速率为75ksps,则采样时间T(ad)=4.27ms,此时 T(spi)+T(udp)< T(ad),满足系统正常工作需求.

3.2 PC机GUI软件设计

LabVIEW编写的PC机GUI软件可将采集数据以图形方式直观显示,包括USB传输子模块和以太网传输子模块2部分.LabVIEW开发程序分为前面板和程序面板两部分,前面板是图形化人机界面,主要将采集数据以图形方式显示,可直接获得数据幅值和频率信息;程序面板完成逻辑功能,主要实现PC机与C8051F340(1)的USB通信以及和C8051F340(2)的以太网通信功能.由于前面板较简单,故文中只对程序面板进行说明.

USB传输子模块程序面板主要完成GUI软件和C8051F340(1)之间USB通信,为了方便程序的编写,直接调用Silicon LabS公司提供的USBxpress套件中USB主机API函数[7].其基本流程为:调用SI-GetNumDevices()获取输入USB器件相关信息,SI-SetTimerouts()设置USB总线读延迟,SI-Open()打开USB器件,SI-Read()读USB器件采集数据,SI-close()关闭USB器件,完成整个通信过程.

以太网传输子模块软件程序面板主要完成GUI软件和C8051F340(2)以太网通信.为了提高编程效率,直接调用LabVIEW软件中UDP通信包内的子VI.其基本流程为:调用UDP OPEN打开UDP端口,调用UDP Read从端口读取数据,调用UDP Close关闭UDP端口,若通信过程中出现错误,则General Error Handler给出错误警告.

4 实验测试

为了验证本文提出的数据采集器的可行性,设计了2个实验,实验一用于验证USB端口传输,实验二用于验证以太网端口传输.信号源产生的信号经调理电路处理后,由C8051F340(1)上P2.0引脚输入,根据所需传输方式按下相应按键,完成系统连接及操作过程.

4.1 USB端口传输

输入峰峰值为3.3V,频率为15kHz的正弦信号,其实验结果如图4(a),因为A/D参考电压为3.3V,采用8位采样,采样幅值结果应为255满格,但因参考电压存在一定误差,连接线路存在一定衰减,所以采样得到的结果为252格(3.26V),由频域波形图可直观得到其ω/2π为0.075,Ω=2πf(其中ω为数字域频率,Ω为模拟角频率,T为采样时间间隔,f为输入信号频率),计算得f为15kHz,与实际输入相符.

4.2 以太网端口传输

输入峰峰值为3.3V,频率为6kHz的正弦信号,其实验结果如图4(b)所示,采样幅值结果为252格,频域波形图中ω/2π值为0.08.同理,经计算得采样信号幅值和频率分别为3.26V和6kHz,可判断采样结果和实际输入相符合.因此,实验证明本设计方案具有可行性.

图4 不同实验GUI前面板实验结果图

5 结束语

本文提出了一种支持USB和以太网端口的数据采集器,该采集器采用双C8051F340架构,实现2种传输方式及3种工作模式,3种工作模式切换可通过按键选择实现,可方便应用于更多场合;采用PC机LabVIEW编写的GUI软件方便采集数据直观显示,实验表明本文提出的设计方法合理可行且适用于15kHz以下低频信号.

参考文献:

[1] 孙伟超,尹德强,汪定国,等.基于C8051F040的环境数据采集系统设计[J].电子测量技术,2011,34(10):91-95.

[2] 马训鸣,林晓焕.CAN总线在多通道电液力协调加载系统中的应用[J].西安工程大学学报,2009,23(1):59-62.

[3] 袁宝红,付奎,张德祥.基于FPGA和LabVIEW的USB数据采集与传输系统[J].仪表技术与传感器,2013(9):24-27.

[4] 张青春.基于LabVIEW和USB接口数据采集器的设计[J].仪表技术与传感器,2012(12):32-34.

[5] 王长清,张素娟,蒋景红.基于以太网帧的嵌入式数据传输方案及实现[J].计算机工程与设计,2011,32(6):1952-1956.

[6] 朱磊,薛谦,石教雄.基于LabVIEW的以太网接口数据采集器设计[J].计算机测量与控制,2009,17(4):788-790.

[7] 朱磊,刘东.C8051F340与LabView基于API的USB通信[J].单片机与嵌入式系统应用,2007,11(1): 35-37.

猜你喜欢

PC机采集器调用
COVID-19大便标本采集器的设计及应用
核电项目物项调用管理的应用研究
基于Cortex-M4的油气管道微功耗数据采集器软件设计应用
基于三菱FXPLC的感应淬火机床与PC机的串行通信实现
基于ZigBee的大型公共建筑能耗采集器设计
基于LabVIEW的多数据采集器自动监控软件设计与开发
VC.NET下实现dsPIC单片机与PC机的通信
基于系统调用的恶意软件检测技术研究
基于单片机与PC机的电气量采集系统设计
VIVID3彩色超声仪结构原理及维修