2010年 第 24 卷 第4 期 测 试 技 术 学 报 Vol. 24 No . 4 2010
(总第82期) JOURNAL OF TEST AND MEASUREMENT TECHNOLOGY ( Sum No. 82)
文章编号: 1671-7449( 2010) 04-0351-06
基于 USB2. 0 的多路数据采集
系统上位机软件
设计
领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计
�
柯 艳, 李 杰, 孔祥雷, 刘 吉吉
(中北大学 电子测试技术国家重点实验室, 山西 太原 030051)
摘 要: 设计一个上位机软件实现对采集系统数据的传输、存储、分析、绘制曲线图等功能. 配合硬件系统,
该软件还具有设备复位、Flash 坏块检测、Flash 擦除等功能. 上位机软件采用 VB 编写主控程序, 在 VB 中
调用 M atlab 绘制数据曲线. 文中详细介绍了基于 FT 245BM 的 USB2. 0 与上位机的通信原理, VB 与
Mat lab 之间的数据传递机制等关键技术. 该软件已成功地用于多种采集系统的数据传输和数据处理. 实验
表
关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf
明: 该软件执行效率高、数据分析和曲线绘制速度快, 适用于通用的数据采集系统.
关键词: 数据采集; 上位机 ; 数据传输; 数据处理; 通信
协议
离婚协议模板下载合伙人协议 下载渠道分销协议免费下载敬业协议下载授课协议下载
中图分类号: TP311 文献标识码: A doi: 10. 3969/ j. issn. 1671-7449. 2010. 04. 014
Software Design of Host Computer of Multi-Channel
Data Acquisition System Based on USB2. 0
KE Yan, LI Jie, KONG Xianglei, L IU Zhe
( National Key Labo rato ry for Electr onic M easur ement Technolog y, No r th Univer sity of China, T aiyuan 030051, China )
Abstract: A sof tw are w as designed to achieve the functions of data t ransm ission, sto rage, analy sis and
chart draw ing . Working to gether w ith an exist ing hardw are part of a mult i-channel data acquisit ion
sy stem, it could also achieve the funct ions o f equipment reset , bad block checking and erasing of the
Flash. T he main pr ogr am of the sof tw are w as compiled in VB, in which the chart dr aw ing function w as
realized by calling the corr esponding module o f M atlab. T he tw o key technolo gies, the communicat ion
pr inciple betw een USB2. 0 and host computer and the data t ransmission mechanism betw een V B and
M at lab, w ere int roduced. T he softw are had been successfully appl ied in many data acquisit ion sy stems.
It w as proved that the sof tw ar e had the advantages o f high ef ficiency of data t ransmission, data analy sis
and char t draw ing, thus it is suitable for the general data acquisit ion sy stems.
Key words : data acquisit io n; host computer ; data tr ansmission; data processing ; communicat ion
pr otoco ls
随着计算机应用的普及, 外围设备与计算机之间的通讯问题成了各种应用中关键的一个环节 [ 1] . 在
各种通讯方式中, 传统的 RS232接口(串口) , 因其接口电路简单、编程容易, 得到广泛的应用. 但其最大
� 收稿日期: 2010-05-18
基金项目: 国家自然科学青年基金资助项目( 50905169)
作者简介: 柯艳( 1984-) , 女, 硕士生, 主要从事微纳传感与执行器件研究
通信作者: 李杰( 1976-) , 男, 副教授, 博士, 主要从事惯性导航及测试技术研究.
通信速度仅达到 115. 2 kb/ s, 这个速度已不能满足高速数据通信的需要. 而普通的 U SB 接口虽然通信
速度快, 但接口电路复杂, 且底层驱动程序不易编写[ 2 -3] . 本设计采用 FT DI 公司的 FT245BL 芯片, 该
芯片具有接口电路简单、通信速度快(可达 1 Mb/ s)、编程容易等特点, 是一般通信接口芯片的最佳选择.
针对实验室现有的读数盒硬件电路和数据采集系统, 本文详细介绍了基于 FT245BM 芯片的 USB
接口与上位机(计算机)通信的设计方法和技巧[ 4-6] . 采用 VB 语言编写上位机程序, 实现上位机对数据
Flash 的擦除和读写控制, 并对采集数据进行转换、存储、分离、绘图等处理. 由于每次采集的数据量大
(使用的是 8 G 的 Flash 存储) , 而 V B 的数值计算能力有限, 难以准确地对海量数据进行分析. Mat lab
的数值计算和分析能力强, 为了保证上位机软件的完整性和便捷性, 同时又不依赖于 Matlab 运行环境,
本设计采用 VB 和 MatrixVB 的嵌入式设计方法[ 7] , 克服了 V B 不能处理海量数据的缺陷, 大大提高了
软件的开发和执行效率.
1 通信原理介绍
1. 1 数据传输系统
数据传输系统是一个主从式系统. 在整个系统中, 所有命令是由主设备(上位机)发出, 从设备接收
到命令以后, 执行所要产生的操作. 只有在主设备
读取数据时, 从设备才提交数据给计算机, 计算机
再对所得数据进行判断、显示或绘图等操作. 该数
据传输系统的原理框图如图 1 所示.
在整个系统中, 上位机(计算机)实时对系统
进行监控, 根据用户的需求完成相应命令的下发.
采集系统把采集到的数据存储到 Flash 存储器中, 当 FPGA 收到从上位机发送的命令后, FPGA 对
Flash 存储器中数据进行相应的处理操作.
1. 2 FT245BM 与上位机的通信原理
FT 245BM 是 FTDI 公司生产的一款可进行 U SB 和并行 I/ O 口协议转换的芯片. FT 245BM 一方面
通过 USB 总线接收到上位机发来的数据, 并将其转化为并行 I/ O 数据发送到下位机. 另一方面该芯片
通过并行 I/ O 口接收下位机发来的数据, 并将其转化为 U SB 串行数据发送至上位机. 这一过程由芯片
自动完成, 几乎不需要占用 CPU 资源. 该芯片内部有 256字节的接收缓存区和 128 字节的发送缓冲区.
这 2 个 FIFO(缓存区)的作用是作为 U SB 与 I/ O 口数据交换的缓冲区[ 1] .
Visual Basic 6. 0 作为一种可视化编程语言, 通过调用 FTDI 公司提供的 D2XX 驱动程序和相应的
动态链接库, 可以方便地实现下位机与上位机之间的通信. 在调用时, 应将动态链接库 FTD2XX. DLL
放在系统的根目录下, 在 VB 的子模块中对所用到的 FTD2XX. DLL 中的 API 函数进行声明, 在程序中
调用相应的 API 函数便可实现 FT 245BM 与上位机之间的通信.
FT D2XX. DLL 中的 API 函数很多, 本程序只用到了部分函数, 主要介绍如下:
1) FT Open ( int iDevice, FT HANDLE * ftHandle) 打开设备. iDevice为设备号, 默认以 0 开
始; f tHandle 为一个指向存储该设备句柄的指针.
2) FT Read( FT HANDLE ftHandle, LPV OID lpBuf fer , DWORD dwBy tesT oRead, LPDWORD
lpdwBy tesReturned) 读 FT245BL. f tHandle 为设备句柄; lpBuf fer 用来存放从设备中读取数据的缓存;
dwBytesT oRead 为设备缓冲队列中可读取的数据大小; lpdwBytesReturned 为从设备中已读取的数据大
小.
3 ) FT Wr ite ( FT HANDLE ftHandle, LPVOID lpBuffer, DWORD dwBytesToWrite,
LPDWORD lpdwBytesWrit ten) 写 FT245BL. ftHandle 为设备句柄; lpBuffer 向设备中写入的数据;
dwBytesT oWrite 向设备中写入的数据大小; lpdwBy tesW ritten 已写进设备中的数据大小.
352 测 试 技 术 学 报 2010 年第4 期
4) FT GetQueueStatus ( FT HANDLE ftHandle, LPDWORD lpdwAmountInRxQueue) 获取状
态. f tHandle 为设备句柄; lpdwAmountInRxQueue接收队列中的字节数.
5) FT Purge( FT HANDLE lngHandle, FT PURGE T X And FT PU RGE RX) 清除接收缓冲
区和发送缓冲区.
6) FT ResetDevice ( FT HANDLE ftHandle) 向设备发送复位命令, 复位成功返回值 0;
7) FT Close( FT HANDLE lngHandle) 关闭设备.
上位机通过这些 API 函数发送命令给 FT 245BL, FPGA 接收到经 FT 245BL 传来的命令后控制对
Flash 的读写和擦除.
1. 3 Matr ixVB 介绍
MatrixVB 是由第三方 ( mathto ols 公司)提供的 COM 组件, 包含了大量 MAT LAB 相似的函数与
调用语法, 可以加强 VB 内建数学运算与图形展示功能[ 7-8] . 在 VB 程序代码中可以像使用 VB 自己的函
数一样使用 MatrixVB 的函数, 而且可以不依赖于 MAT LAB 的环境在 Visual Basic 中完成矩阵运算与
图形绘制显示等功能, 这种方法使用起来简单, 编程效率较高.
M atrixVB 函数库的功能大致可分为以下 8 大类: 矩阵运算、运算符重载、图形图像处理、最优化运
算、多项式、信号处理、随机与统计分析、控制系统. Visual Basic 虽是一种十分强大和有生命力的
Window s 编程语言[ 9] , 但是它的数值计算方面能力欠佳, 因此将其与计算能力强大的 MAT LAB 混合编
程将能体现各自的优势.
2 上位机软件设计
上位机软件的主要功能结构图如图 2所示. 软件界面及功能如图 3 所示.
采用 VB 实现的上位机软件, 主要实现了如下功能:
1) 设备管理. 主要实现对数据存储器 Flash 的控制
操作. 主要包括以下功能:
� 打 开设 备. 执 行打 开 设备 时, 程 序调 用
FT D2XX. DLL 的 API 函数 FT Open 打开设备, 并获
取该设备的设备号, 该设备号与设备一一对应, 用来对
该设备的进一步访问;
� 设备复位. 实现对设备的复位, 方便下一次操作;
数据读取. 执行读数操作时, 上位机向 FT245BL
发送读数命令, FT245BL 再将命令发送给 FPGA,
FPGA 接收到该命令后要求数据 Flash 发送数据, 最后
将数据通过 U SB 上传给上位机, 这个过程称为读数据
Flash. 在上位机操作界面上, 能直观地看到已读取的数据量和读取数据所用的时间, 同时将已读取的数
据存入数据文件, 便于对数据的查看和处理;
! 设备擦除. 执行设备擦除时, 上位机向 FT 245BL 发送擦除命令, FPGA 接收到该命令后执行对
数据 Flash 的擦除操作, 以便下一次向 Flash 中写入数据, 这个过程称为擦除数据存储器 Flash. 数据存
储器 Flash 擦除完成后, 将反馈一个代表擦除成功的信号给上位机, 上位机收到该信号后, 向用户显示
擦除成功的消息;
∀ 坏块检测. 实现对 Flash 的坏块检测, 找出不能存放数据的地址, 便于向 Flash 中写数, 单击“坏
块检测”按钮, 应用程序将 Flash 坏块地址存入指定位置;
# 关闭设备. 每次访问设备前都要先打开设备获得设备号后才能进行访问. 同理, 每次访问完设备
后都要关闭设备, 下一次才能成功访问该设备.
2) 数据管理. 主要实现验证数据读取的正确性, 分析数据的变化规律是否符合采集规律. 该部分主
353(总第82 期) 基于 USB2. 0 的多路数据采集系统上位机软件设计(柯 艳等)
要包括以下功能:
图 3 上位机软件界面
Fig. 3 Host computer s of tw are interface
图 4 三路姿态角的 V -N 波形图
Fig. 4 T hree at t itude-ang les’V -N w ave chart
� 数据查看. 查看采集回来的原始数据或经过转换、分离处理后的数据, 对于数据量小时方便查看
和分析;
� 数据处理. 包括数据转换、数据分离和数据存储. 数据转换是将以 16进制浮点数形式传递的原始
数据转换为 10 进制浮点数, 便于对数据的查看和分析;由于采集回来的数据有很多路(本软件针对实验
室现有的采集系统有 13路: 3 个方向的姿态角, 3 个方向的加速度, 3 个方向的速度, 3个方向的位移, 1
354 测 试 技 术 学 报 2010 年第4 期
个采集时间) , 将各路数据分开存储便于对数据的分析和查看;
波形绘制. 包括单路绘制和多路绘制. 由于 VB 的数值计算能力欠佳, 用 VB 中的绘图函数很难
直观地查看和分析数据的变化趋势, 当数据量很大时将使得程序的执行效率很低且难以反映数据的变
化. 而以 VB 作为主控程序, 完成图形界面和数据获取等工作, M atlab 完成复杂控制算法的计算任务,
可以很好地对数据进行分析.
图 4是某次试验过程中采集的三路姿态角的电压-采样点( V-N )波形图. 其中横坐标为采样点数, 纵
坐标为电压值.
3 软件实现的关键技术
3. 1 FPGA 与上位机之间的通信协议
上位机通过 U SB接口获取数据 Flash 中存储的数据, 主要通过现场可编程门阵列( FPAG)的控制来
实现. 因此在上位机与 FPGA 中要事先约定好通信协议, 让 FPGA 知道从上位机传来的哪些命令是要
求 Flash 发送数据, 哪些命令是对 Flash 进行擦除操作等等. 因此, 在编写底层 FPGA 程序前约定以下
4 组命令字协议, 每组命令字占用 4 个字节.
读数命令: &H25 &H5E &H77 &HA6;
停止读数命令: &H25 &H5E &H66 &HA5;
擦除Flash 命令: &H25 &H5E &H44 &HA3.
以上的命令字形式是 VB中的 16进制表示形式, 在底层 FPGA 程序中用 VHDL 语言编写, 将对应
的命令字转换为相应的二进制形式识别. 建立好通信协议后, 当FPGA 接收到从上位机发出的命令, 则
执行相应的操作. 在接收到命令之前, FPGA 一直处于等待状态;当接收到新的命令后, FPGA 将中断当
前操作, 转而执行新的命令操作.
3. 2 原始数据的转换和分离
3. 2. 1 原始数据的转换
采集系统采集回来的原始数据是 16 进制浮点数形式, 为了直观可见, 需将这种形式表示的数据转
换为 10 进制表示形式. 在转换时如果按照 16 进制与 10 进制之间的关系逐个字节转换, 对于庞大的数
据量来说将是一个漫长的过程. 为了提高数据转换效率, 调用一个动态链接库 DF21D. DLL, 该库中有
一个 API 函数专门用来实现 16 进制浮点数转换为 10 进制数据. 该函数定义形式为:
Funct ion GetChV alue ( ByVal buf As String, chs As Any , ByVal of f As Long, ByVal typ As
Long) As Long .
该函数中的参数都是值传递. 其中, buf 是用来存放目标数据的字符串, chs 是存放原始数据的地
址, of f 是要转换数据字节的下限, typ 是要转换数据字节的上限. 该函数的返回值的类型为长整型.
在调用该函数前必须将动态链接库 DF21D. DLL 放在系统的根目录下, 并在VB
工程
路基工程安全技术交底工程项目施工成本控制工程量增项单年度零星工程技术标正投影法基本原理
的模块中对该
函数显示声明, 声明格式为:
Public Declar e Funct ion GetChValue Lib "df21d. dll" ( ByV al buf As Str ing , chs As Any, ByVal of f
As Long, ByVal typ As Long ) As Long.
3. 2. 2 原始数据的分离
原始数据存入数据文件后, 要考虑原始数据是否丢帧、出错等现象. 因此, 在对数据进行分离处理
时, 要先找到每一帧的标志位, 然后判断帧头到帧尾是否满足一帧的数据字节数, 满足则进行转换、分
离、存储, 否则当错误帧处理. 为了提高程序的执行效率和便于程序的维护和开发, 将每一帧的字节数定
义为常量, 这样当数据帧字节数改变时, 只要改变常量的值就可以了, 提高了程序的可开发性和可维护
性. 程序在运行时也不用一个字节一个字节地判断是否标志位, 只需跳到帧尾判断即可, 有效地提高了
程序的执行效率.
355(总第82 期) 基于 USB2. 0 的多路数据采集系统上位机软件设计(柯 艳等)
3. 3 VB 与 Matr ixVB 的数据传递机制
在 V B中调用 Matlab 可以方便地对数据进行分析和图形化处理, 在不需要 Matlab运行环境的情况
下可通过以下步骤实现 VB 与 MatrixVB 之间的数据传递.
1) 安装 MatrixVB. 在系统上安装 MatrixVB, 然后在“开始→运行”菜单中用命令“regsvr32
mM atrix. dll”对 Matr ixVB 中的动态链接库注册. 系统要求: 硬盘空间 8. 8 M 以上; 操作系统要求
Window s 95 及其以上版本, 或者 Window s NT 4. 0 及其以上版本.
2) 在 VB 项目中引入 MatrixV B. 在 project 下拉菜单中单击 References, 在弹出的对话框中选中
MMatrix 项目, 系统将加载 MatrixVB 的动态链接库 MMatrix . DLL.
在 VB 中引入 MatrixVB 后, 可方便地使用 Matlab 命令, 实现对数据的访问和处理操作.
4 结束语
文中介绍了一种针对实验室现有的基于 FT 245BL 和 FPGA 的读数盒上位机软件设计方法, 对硬件
部分的数据存储和传输过程进行了简单介绍, 详细分析了上位机与下位机之间的通信原理, 并讨论了上
层软件设计的关键技术. 该软件采用 VB 与 MatrixVB 协同工作的方法大大提高了软件的执行效率, 在
不依赖于 Matlab 运行环境的前提下, 用 VB 作为软件的主控, 完成图形界面和数据获取等工作,
M atrixVB 完成复杂控制算法的计算任务. 软件模块功能分明, 易于开发和维护, 已成功地应用于实验室
现有的多种采集系统. 由于该软件具有数据处理灵活、执行效率较高、操作界面简单等特点, 将广泛应用
于控制系统的程序编制上.
参考文献:
[ 1] 蔡江洪, 史小军, 朱为, 等. 利用 FT245BM 实现 FPGA 与 PC 机的 USB 通讯[ J] . 电子器件. 2005, 28( 1) : 132-
137.
Cai Jianghong , Shi Xiao jun, Zhu Wei, et al. A met hod of the communication betw een FPGAand t he USB host based
on FT245BM [ J] . Chinese Journal of Electr on Device, 2005, 28( 1) : 132-137. ( in Chinese)
[ 2] 安荣, 任勇峰, 李圣昆. 基于 FPGA 和 USB2. 0 的数据采集系统[ J] . 仪表技术与传感器, 2009( 3) : 49-51.
An Rong , Ren Yongfeng , Li Shengkun. Data sampling sy stem based on FPGA and USB2. 0 [ J ] . Instr um ent
T echnique and Senso r , 2009( 3) : 49-51. ( in Chinese)
[ 3] 李朋勃, 张洪平. 基于 FPGA 和 USB2. 0 的高速数据采集系统[ J] . 单片机与嵌入式系统, 2009( 9) : 32-35.
L i Pengbo , Zhang Hongping. High-speed data acquisition system based on FPGA and USB2. 0[ J] . M icro contr oller s
& Embedded Sy st ems, 2009( 9) : 32-35. ( in Chinese )
[ 4] 徐锋. 基于 FT 245BM 的多 USB 接口的实现[ J] . 无锡职业技术学院学报, 2008, 7( 2) : 41-43.
Xu Feng . Design of multi-USB interface based on FT 245BM[ J] . Journal o f Wux i Institute of Techno lo gy , 2008, 7
( 2) : 41-43. ( in Chinese)
[ 5] 郑辉, 史靓, 姚建斌, 等. 基于 FT 245BM 的 USB 接口开发[ J] . 华北水利水电学院学报, 2009, 30( 1) : 73-75.
Zheng Hui, Shi L iang , Yao Jianbin, et al. Development of USB inter face based on FT 245BM [ J] . Journal of No rt h
China Instit ut e of Water Conser vancy and Hydroelectr ic Pow er, 2009, 30( 1) : 73-75. ( in Chinese )
[ 6] 李娜, 孟令军. 用 FT245 BM 实现 FPGA 与 PC 机的数据无缝传输[ J] . 重庆工学院学报(自然科学) , 2009, 23( 5) :
80-83.
Li Na, Meng Ling jun. A method of communication bet ween FPGA and the U SB host based on FT 245BM [ J ] .
Journal o f Chongqing Institute of T echno lo gy ( Natur al Science) , 2009, 23( 5) : 80-83. ( in Chinese)
[ 7] 王素立, 高洁, 孙新德. Matlab 混合编程与工程应用[ M ] . 北京: 清华大学出版社, 2008: 135-160.
[ 8] 张志涌. 精通 MATLAB 5. 3 版[ M ] . 北京: 北京航天航空大学出版社, 2000.
[ 9] 晏晖, 汪小澄, 程凡. 基于 VB 的电厂锅炉风速监测系统设计[ J] . 仪表技术与传感器, 2009( 3) : 55-58.
Yan Hui, Wang Xiaocheng, Cheng Fan. Pow er plant bo iler w ind speed monito r system based on VB[ J] . Instr um ent
T echnique and Senso r , 2009( 3) : 55-58. ( in Chinese)
356 测 试 技 术 学 报 2010 年第4 期