微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > MCU和DSP > 基于USB从机技术的绝缘电阻表自动检定系统通信接口设计

基于USB从机技术的绝缘电阻表自动检定系统通信接口设计

时间:10-29 来源:电子技术应用 点击:


3 系统通信接口软件设计


绝缘电阻表自动检定系统的软件主要包括从机应用程序、CH375内部固件程序、Windows平台下的USB驱动程序、应用程序和微打印应用程序五部分,如图3所示。

在从机应用程序中,采用总线(字节)编程方式和中断方式读写数据,由CH375A初始化程序模块(包括VID和PID设定、CH375A工作模式设定、中断系统初始化)、内部固件程序模块和数据检测程序模块、信息交互程序(读写程序)模块、主机模式下报表输出程序模块等组成;在主机应用程序中,利用 API函数对CH375A数据缓冲区中数据进行读写操作,以C++ Builder 2010为软件平台进行主机界面开发,access 2003为软件平台进行信息管理系统开发,Word 2003为软件平台进行报表编辑和输出开发,XML为C++ Builder 2010与Word 2003之间数据交换桥梁。下面详细介绍通信接口关键部分的程序设计、源代码及程序说明。

3.1 系统通信接口从机关键部分程序设计

从机应用程序主要包括CH375A读写子程序、CH375A初始化子程序、信息交互子程序(中断子程序)、检测子程序和微打印机控制程序等部分。其中,读写子程序是依据CH375A读写时序,采用字节寻址方法进行,利用宏定义方法对数据端口和命令端口进行定义,以降低程序对硬件的依赖,增强程序的可读性和移植性。

CH375A读写子程序如下:
//写命令子函数
void CH375_Write_Cmd(uchar cmd)
{ CH375_CMD_PORT=cmd;
}
//写数据子函数
void CH375_Write_Dat(uchardat)
{ CH375_DAT_PORT=dat;
}
//读数据子函数
uchar CH375_Read_Dat()
{ return CH375_DAT_PORT;
}
在初始化程序模块中,首先将芯片的VID和PID写入CH375A(可采用默认值);再将工作模式2(模式2为设备模式,若要实现接口功能切换,此模式为默认模式,接口连接识别成功后,在设定时间内若无数据输入,则自动切换至主机模式)写入CH375A中;20 ms后开放中断,完成初始化。

在信息交互程序模块中,当CH375A收到数据或发送完数据后,INT#引脚产生低电平,申请单片机中断,随即进入从机中断函数,进行信息传输和处理。信息交互程序流程如图4所示。

进入中断后,首先读取(GET_STATUS)中断状态,同时清除当前中断请求。然后对读入状态进行分析判断,若状态为EP2_OUT,表示CH375A成功接收到下传数据,再锁定数据缓冲区,防止数据缓冲区数据遭到破坏;若状态为EP2_IN,表示数据上传已成功,此时CH375A的数据缓冲区仍处于锁定状态,需软件解锁。CH375A成功接收到数据后,从机通过API函数RD_USB_DATA读取数据,读入后缓冲区自动解锁。然后判断是否有数据上传,有则通过API函数WR_USB_DATA7进行上传,完成后退出;否则自动退出。当CH375A将数据成功上传后,主机判断是否还有数据要上传,有则利用WR_USB_DATA7进行数据上传,完成后利用API函数USB_UNLOCK对CH375的数据缓冲区进行解锁,然后退出;否则利用USB_UNLOCK对数据缓冲区进行解锁,然后退出。

若CH375A工作在主机模式下,此时可启用报表输出程序。由STC89C52RD+来检测微型打印机状态和选通微型打印机,条件满足后,从机将检测信息及检定辅助信息经CH375A并行接口输出到微型打印机,完成报表的自动生成。使系统摆脱对主机的依赖,实现系统对报表快速输出的功能。报表输出模块程序流程如图5所示。


3.2 系统通信接口主机关键部分程序设计

绝缘电阻表自动检定系统主机应用程序主要包括Windows平台下的USB驱动程序、主机应用程序及报表输出程序。

本文采用组件库丰富且支持强大网络和数据库功能的C++ Builder 2010作为前台软件开发平台。首先,利用C++ Builder新建一个DLL类的(动态链接库)工程;再以DllEntryPoint为入口函数、dllimport为出口函数创建CH373A的动态链接库;然后将创建的CH375DLL.H、CH375DLL.LIB、CH375DLL.DEF文件导入工程中,即可完成动态库的链接。通过调用CH375OpenDevice(0)来开启CH375A从机设备[7],将CH375DLL.H文件中定义的变量INVALID_HANDLE_VALUE与返回值比较,若相等,则表示CH375A设备打开成功,否则表示设备打开失败,主机界面中可显示相应提示信息;依据协议,做好等待从机信息准备;完成后退出。主机与CH375A进行信息交互的流程,如图6所示。

 若将C++ Builder 2010的Timer控件触发时间设为100 μs,1 s内可完成10 000次批量数据传输。完全可以满足用户对绝缘电阻表自动检测系统的快速检定要求。目前,该系统已投入使用,其绝缘电阻表自动检定系统与上位机间进行USB通信的测试界面如图7所示。

本设计基于USB从机技术的通信接口,可自动识别主机和微型打印机,实现设备的快速连接。在绝缘电阻表自动检定系统中应用,使得原有检测装置与主机融为一体,可完成数据的自动检测、快速上传及自动生成编辑功能强大的Word报表,系统数据库方便了用户对检定数据的管理,提高了工作效率,实现了自动化、智能化检定。本文采用C语言模块化编程方式,可快速移植和二次开发,有利于USB从机技术在智能检测设备和高速数据采集系统中的广泛应用。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top