首页 » 技术文章 » 弹上通信系统的LabVIEW与单片机的通信技术

弹上通信系统的LabVIEW与单片机的通信技术

作者:  时间:2011-05-17 19:47  来源:EDN

  引言

  某型信息化弹药通过对目标的基准弹道与飞行中的攻击弹道进行比较后,给出有限次不连续的修正量来修正攻击弹道,以减少弹着点误差,提高弹丸对付高速机动飞行目标的命中精度,或提高远程打击精度。该信息化弹药的基本结构就是在常规炮弹上加装弹道修正模块,弹道修正模块主要由微控制器根据基准弹道修正攻击弹道参数来提高命中率。

  在传感器及信号调理电路的基础上,选用高速单片机、快速的数据传输总线以及LabVIEW应用程序,可快速开发一个简单实用的信息化弹药弹道控制通信系统模型。本通信系统模型用USB总线,在PC机与USB设备间实现上下位机之间的通信,在软件方面通常要完成以下设计:USB设备固件编程、USB设备驱动编程和PC机应用程序设计。下位机弹道修正模块用Silicon Labs公司的全速USB Flash微控制器C8051F340,上位机PC采用LabVIEW编写应用程序。与C8051F340进行USB通信主要有3种方式:利用CIN调用开发USB设备的外部代码;调用DLLUSB设备进行操作;通过VISA访问USB设备。下面分别进行介绍和比较。

  1 利用CIN调用开发USB设备外部代码

  CIN(Code InteRFace Node,代码接口节点)LabVIEW中通过参数传递来调用CC++代码的节点,可以利用USB设备生产厂家提供的C  C++代码,将代码集成并作为一个单独的VI发布,实现数据的高效处理。这种实现方法相当于在LabVIEW下利用CINUSB设备编写驱动程序。以C8051F340端口1IN批量传输为例。规定使用端口1IN批量传输且最大包长度为128字节,假设端点1IN的缓冲区地址为0x7E000x7E8F。主机通过不断发送IN令牌请求USB执行IN传输,C8051F340会通过将端点字节计数寄存器(N1CNT)加载,以示数据准备完毕,同时将一个IN数据包装入端点的IN FIFO并将INPRDY(EINCSR LO)位置1。利用CIN调用USB设备的外部代码的一般步骤如下:

  ①创建CIN节点。CIN节点位于“函数选板”一“互连接口”一“库与可执行库文件”子选板下。根据设备的参数需要增加外部代码的输入/输出端口。

  ②创建C源文件。右击CIN并选择创建C8051F340UsbInlc文件选项,对打开的程序修改如下:

  ③编译C8051F340UsbInlc文件,生成可被LabVIEW执行的C8051F340UsbInl1sb。以VC++为例编译CIN节点源文件。在VC++下创建C8051F340UsbInlmak文件,内容如下:

  在VC++下点击newprojectmake file,输入文件名C8051F340UsbInl后点击为OKFinish按钮。将C8051F340UsbInlcC8051F340U-sbInlmak一起复制到C8051F340UsbInl文件夹下,重新打开C8051F340UsbInl工作台,按F7可生成C8051F340UsbInl1sb文件。

  ④右击选用的CIN图标,选择“加载代码资源”并选择C8051F340UsbInl1sb文件。至此,一个基于CIN的读USB端口1VI创建完毕。

  上面是一个利用CIN创建开发USB驱动的VI的步骤,实际开发过程要麻烦很多,需要对设备及通信协议相当熟悉。因此,利用CIN实现USB通信受到一些限制。

  2 调用DLL实现USB通信

  开发USB设备时,不仅要面向USB控制器编程还要面向Windows编程(如果上位机用Windows操作系统),对不熟悉USB协议的用户而言是个难题。为了缩短用户开发USB设备时间,生产厂家往往会把对USB设备进行操作的函数封装成DLL(Dynamic Link Library,动态链接库)提供给用户。dll文件是一种可执行文件,允许程序共享执行特殊任务必需的代码和其他资源,与语言无关,可以被任何支持DLL的语言编写的应用程序访问。

   Silicon Labs公司针对USB系列单片机为USB驱动程序开发提供了USBXpress开发套件,其中的SiUSBXpdll包含了23个函数。一个简单的USB通信程序,通常要用到SiUSBXpdll中的SI_GetNumDevicesSI_SetTimeoutsSI_OpenSI_ReadSI_WriteSI_Close等几个函数。在LabVIEW中调用dll文件有两种方法,下面将分别介绍。

  首先是利用CLF(调用库函数节点)节点调用SiUSBXpdll,一般步骤如下:

  ①放置CLF节点并通过路径加载dll文件。CLF节点位于“函数选板”一“互连接口”一“库与可执行库文件”子选板下。

②在加载的dll文件里选择要用到的函数并进行参数配置。根据USBXpress开发手册,对每一个被调用的函数配置合适的参数。

③配置参数完成之后,每一个函数就是一个VI,可在LabVIEW程序中调用。

  其次是通过导入共享库的方法调用SiUSBXpdll

  导入共享库的实质是将dll文件中的函数自动生成对应的VI。函数的每个参数可在头文件包含以及预处理定义条件下在生成的VI中显示出来,与利用CLF相比较,省去了手动配置参数的步骤。使用方法如下:新建一个VI,点击“工具”一“导入共享库”,选择为用户创建共享库;点击下一步,在“选择共享库及头文件”页面加载.dll文件和.h文件的路径;点击下一步,在预处理定义中添加预处理说明(如果需要添加);点击下一步,等待解析头文件并选择待转换函数;点击下一步,进行项目库设置配置,连续点击下一步,直至所有选中的函数生成VI存放用户库里(默认状态)。调用时,在“函数选板”一“用户库”一“SiUSBXp”,选择在LabVIEW程序设计中用到的VI

  以上两种调用DLL实现USB通信的方法具体操作不一样,但本质都是利用USB厂家提供的dll文件访问USB设备。图1LabVIEW调用DLL实现一个简单USB通信的流程。

  LabVIEW通过调用dll文件大大缩减了实现USB通信开发工作量,但最关键也是最难的一步在于给函数配置参数。通常来讲,DLL主要用CC++等文本语言开发,有些参数类型和LabVIEW不匹配,直接调用无法正常使用。为了解决这个问题,需要用户对参数进行修改或者对原有的dll文件进行二次开发,加大了工作量。

相关推荐

飞思卡尔CEO:新战略初现成效 未来更关注中国市场

飞思卡尔  单片机  2013-04-28

飞思卡尔携手周立功单片机 共同拓展中国MCU市场

飞思卡尔  MCU  单片机  2012-12-19

英飞凌为提高XMC4000单片机生产率免费提供DAVE 3

英飞凌  单片机  2012-04-20

LabVIEW天下会广召天下英雄

NI  LabVIEW  2012-04-16

英飞凌XMC4500工业单片机现已量产供货

英飞凌  单片机  XMC4500  2012-03-19

NI携手FIRST共同推出第二届FTC科技挑战赛

NI  FTC  LabVIEW  2012-03-14
在线研讨会
焦点