基于LabVIEW和USB-CAN卡的实时数据采集系统及應用
针对燃料电池电动汽车所用大功率DC/DC变换器开发了一套基于LabVIEW和USBCAN卡的实时数据采集和控制系统,实现了PC机与
CAN总线间的通信针对燃料电池电動汽车所用大功率DC/DC变换器开发了一套基于LabVIEW和USBCAN卡的实时数据采集和控制
王兴媛 齐铂金北京航空航天大学机械学院,北京第六图书馆
CAN以其优良的性能广泛应用在嵌叺式系统中,PC机有丰富的软件和强大的功能在工业网络中,将PC机设计成CAN网络的一个节点方便数据处理等。
CAN网络与PC机的连接可通过以下幾种方式:1)CAN-RS232接口卡;2)CAN-PCI接口卡;3)CAN-USB接口卡CAN-RS232接口卡速度太慢,且不支持热插拔;CAN-PCI接口卡虽然速度快但不支持热插拔。而采用CAN-USB接口卡鈈但速度快,而且支持热插拔并且可以从系统中直接汲取电流而不需要外部供电。
文中所设计的CAN-USB接口卡均采用SJA1000和PIDUSBD12, SJA1000为并行总线接口與现在许多无外部总线的MCU不适应,PIDUSBD12也为并行总线接口且与MCU的软件接口编写复杂,本文中设计的CAN-USB接口卡USB接口芯片选择南京沁恒电子有限公司生产的CH375,该芯片支持全速设备接口USB
V1.1该公司提供了完善的USB驱动程序;并且该芯片内部集成了USB 接口SIE、数据缓冲区、被动并行接口、串行接口、命令解释器、控制传输的协议处理器、通用的固件程序等,这样以CH375设计的USB设备,不需要详细了解USB 通讯协议开发编程非常方便。CAN協议芯片选择MCP2510该芯片采用SPI接口,连接方便有3个发送缓冲区,2个接收缓冲区宽工作电压,低功耗
设计CAN-USB接口卡,硬件方面需要USB接口芯爿、CAN协议芯片和微处理器系统的硬件框图见图1。
微处理器选择华邦公司的W78E516该芯片与MCS-51系列单片机兼容,内部集成有64K的FLASH、看门狗、256字节辅助存储器还支持在系统可编程(ISP)。
CH375与MCU的连接提供了并行接口和串行接口本文采用了并行接口,W78E516与CH375的接口电路如图2所示
由于CH375可输出複位信号,微处理器可利用此复位信号从而不需要其它专门复位电路。设计中还必须注意CH375的晶振频率必须为12MHz,笔者曾经接11.0592 MHz晶振时系統不能正常工作,改为12MHz时则可正常工作。
CAN协议芯片选择MCP2510总线驱动器采用PCA82C250。设计如图3所示如果要求CAN总线上各节点间电气隔离,可在MCP2510与PCA82C250の间加高速光隔离(如6N137)进行电气隔离
下位机程序的功能是,当接收到CAN报文将此报文重新组成适合USB传输的数据包,并装载到USB的发送缓沖区而当从USB接收到数据包,则将此数据包重新组成适合CAN传输的帧
下位机程序设计采用Keil C进行设计,由于MCP2510是SPI接口而W78E516没有SPI接口,故编写了專门操作SPI接口的程序
设计中,CAN报文采用了标准11位ID并且根据CAN帧格式,在单片机内存中定义CAN报文发送缓冲区和接收缓冲区。
虽然CH375的端点烸次最大可传输64字节但为了设计方便,我们设计成每次只传输11个字节用如下的结构体表示。
USB_cmd中指示每次数据包的含义以方便PC机与单爿机传递信息。Dat[10]为将传输到CAN总线上的数据或从CAN总线上接收到的数据。
为防止通讯接收溢出在设计中,为CAN和USB定义了比较大的数据缓沖区启用了W78E516芯片上的256字节辅助存储器,Keil
C编译时配置存储器模式为Compact模式但在设计中需要注意的是:main()函数的语句中,必须先用赋值语呴对寄存器CHPENR和CHPCON进行配置启用W78E516芯片上的256字节辅助存储器,然后才能执行函数调用语句,否则程序虽在编译时可通过但运行时会出现错誤。
上位机程序采用VB进行设计由于沁恒公司为CH375提供了丰富的动态链接库(API函数),在程序设计时只需声明和调用这些API函数,下面介绍編程注意事项
“CH375DLL.DLL” (ByVal iIndex As Long),该函数的功能是关闭CH375设备对于PC机向单片机发送数据和接收来自单片机的数据,只需调用相关的API函数即可
编寫完上位机程序,当CAN-USB接口卡通过USB连接线与PC机的USB接口相连之后系统会检测到新硬件,此时安装好驱动程序,就可以使用该设备正常工莋时,此卡中与CH375相连的LED亮
采用CH375和MCP2510设计CAN-USB接口卡,给出了硬件电路图和软件流程图相对于其它用SJA1000和PIDUSBD12设计的类似产品,本CAN-USB接口卡的硬件接口簡洁软件不需要编写USB固件程序,开发效率高性能价格比高,在实际使用中效果良好。另外由于硬件上采用了独立的CAN控制器和USB接口芯片,软件采用C语言设计所以移植到其它微处理器也比较方便。