APP下载

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

2011-05-14唐绪伟滕召胜唐晨光

网络安全与数据管理 2011年15期
关键词:缓冲区报表总线

唐绪伟 ,滕召胜 ,王 永 ,唐晨光

(1.湖南大学 电气与信息工程学院,湖南 长沙 410082;2.怀化职业技术学院,湖南 怀化 418000)

随着我国电力工业的快速发展,电气设备预防性实验成为保障电力系统安全运行和维护工作的一个重要环节[1]。绝缘诊断是检测电气设备绝缘缺陷或故障的重要手段。绝缘电阻表作为测试绝缘电阻的专用仪表,要保证其测量精度在国家规定范围之内,须定期进行检定。目前的绝缘电阻表检定系统均为孤立检测装置,其报表生成和对历史数据的查询均由人工完成,已无法满足仪表检定行业对该检定装置的智能化要求[2]。

USB作为一种基于令牌式且对外设有统一接口的新型高速串行标准总线,具有使用便捷、易扩展、低成本、低干扰、速度快等特点[3],将 USB从机技术应用于绝缘电阻表自动检定系统,使现有孤立的检定装置[1]与主机有机地融合成智能化检定装置,实现检测数据快速上传,配合主机软件系统和数据库系统可自动、快速生成检定报表(检定原始记录、检定证书、检定通知书等),设备送检单位可在较短时间内得到直观、准确的检定结果,减少了人工操作,提高了检定效率。在信息管理系统中,检定装置与主机可快速进行信息交互,达到检定装置的智能化要求。

1 绝缘电阻表自动检定系统构成

基于USB从机技术的绝缘电阻表自动检定系统为MCU+PC结构形式,MCU单元完成数据检测功能,检测单元采用 8 bit MCU,主要完成数据显示、存储、通信、功能选择及初始化等工作,PC单元完成报表生成功能。其结构如图1所示。

图1 绝缘电阻表检定系统结构框图

在绝缘电阻表自动检测系统中,由从机检测8位十进制开关信号,经从机处理后存入相应数据的存储区。检定时,利用按键、程序下载口或USB接口进行检定参数设定;然后将检测的电阻信息、温湿度信息及检测参数信息送入存储器保存并显示;最后将主机所需信息经USB从机接口快速上传或经USB主机接口实现报表快速输出;在从机模式时,依靠主机发送指令来完成数据的自动检测和快速上传。

本文选用CH375A芯片作为USB总线接口控制器,其内部集成了PLL倍频器、主从 USB接口 SIE、数据缓冲区、被动并行接口、异步串行接口、命令解释器、控制传输的协议处理器、通用的固件程序等部件[3]。CH375A还具备串行、并行通信两种接口方式以及主机(HOST)、从机(DEVICE/SLAVE)两种工作模式。本设计采用并行通信、从机模式的被动接口硬件连接方式和内部固件编程方法,通过中断方式控制数据传输。可将多个CH375A直接挂接到MCU系统总线上,实现外围设备及器件共存。在从机模式时,端点2的上传区和下传区各有64 B的数据缓冲单元;上传、下传端点号地址分别为0x82和0x02;主机端输出和输入端点各有64 B的数据缓冲区,且与端点2共享一组缓冲区,即主机端的输出缓冲区为端点2的上传缓冲区,输入缓冲区为端点2的下传缓冲区。本设计正好利用该特点,通过端点2批量上传和下传数据到缓冲区,实现信息快速交互。

系统选用具有超强抗干扰、高速、低功耗的8 bit STC89C52RD+单片机为从机核心控制器,其内置看门狗WATCH-DOG电路、512 B RAM和 4 KB Flash存储器[4],使用时无需扩展存储器和附加外置看门狗电路。简化的外围电路,可方便地应用到绝缘电阻表自动检测系统中。

系统中的USB接口主要用于主机与从机间信息的快速传输。通过主机软件可快速实现主机模式与从机模式的切换。在从机模式时,可为主机快速添加设备,设备插入后,实现从机信息快速上传和报表信息的快速生成。主机模式下可实现检测报表快速输出。下面详细介绍该通信接口的硬件设计和软件实现方法。

2 系统通信接口硬件设计

绝缘电阻表自动检定系统由USB接口电路、STC89C52RD+单片机、电源电路、时钟电路、看门狗电路、人机接口电路、电阻信息检测电路、存储器电路、温湿度检测电路、打印机接口电路和程序下载电路等硬件组成。

该通信接口的硬件电路主要由USB从机控制芯片CH375A、USB插座、电源、信号线及保护电路组成。CH375A与STC89C52RD+单片机组成的USB通信接口电路如图2所示。

图2 绝缘电阻表自动检定系统通信接口电路

图中,CH375A的数据总线(D0~D7)与 STC89C52RD+的P0端口相连,地址数据选择输入端 (A0)与P2.0相连,读信号控制端(RD#)与P3.7相连,写信号控制端(WR#)与P3.6相连,片选信号控制端(CS#)与P2.1相连,中断信号输出端(INT#)与P3.2相连。可灵活地选用位寻址或总线方式编程,也可在不变动硬件电路的情况下,完成CH375A主机模式与从机模式的相互切换。当CS#为低电平时,选中CH375A芯片,若 A0为低电平,选择数据端口,可进行数据读写;若A0为高电平,选择命令端口,可进行命令的写入。当采用总线方式编程时,CH375A的命令地址和数据地址分别为0x81000、x8000。采用12 MHz晶振、并行数据传送方法和优化的模块化软件,全速模式下,其传输速度可达12 Mb/s[3]。

从机工作电源由主机USB接口总线提供,根据USB 2.0总线规范,主机可提供4.4~5.25 V的电压、总线电流为100 mA的电源,其中最大总线电流不超过500 mA[5]。据此要求,参见图2,图中 Vcc为 5 V电源,经 2 Ω常温热敏电阻R1限流,其压降小于0.3 V,达到了从机系统的供电要求。

工业环境的干扰因素非常复杂,系统电磁兼容设计十分重要[6]。当接口切换至主机模式时,外设与USB接口共用MCU电源,存储器插入时会导致电流瞬间变化,对检定系统产生干扰;另外,静电和雷击也会对裸露USB接口构成破坏。因此,在CH375A的V3引脚接入1 μF去耦电容、电源接入点并接两个 100 μF去耦电容、数据总线(D0~D7)上串接22 Ω抑制共模干扰的电阻和10 kΩ的上拉电阻;在PCB设计时,尽量使晶振和去耦电容靠近CH375A芯片,以减小寄生电容的产生;为了减小外部信号串入干扰,信号线D+和D-贴近、平行且在两侧布置地线,为了减少系统高频辐射对其他电路的影响,在元件周围布置了环绕地线;并在系统接口外部实施整体屏蔽,降低测试高压对接口的影响。

3 系统通信接口软件设计

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

图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读写子程序如下:

在初始化程序模块中,首先将芯片的VID和PID写入 CH375A(可采用默认值);再将工作模式 2(模式 2为设备模式,若要实现接口功能切换,此模式为默认模式,接口连接识别成功后,在设定时间内若无数据输入,则自动切换至主机模式)写入CH375A中;20 ms后开放中断,完成初始化。

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

图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所示。

图5 报表输出模块程序流程图

图6 主机与CH375进行信息交互流程图

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

图7 USB通信测试界面

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

[1]杨世海,陈彦华.电测仪表及其应用[M].北京:中国电力出版社,2009.

[2]中国经济报告课题组.2010年仪表检定仪行业发展研究报告[R].北京:北京君略产业研究院,2010.

[3]周洪建.基于DriverStudio的USB设备驱动程序的设计[J].福建电脑,2007(10):141-142.

[4]USB总线接口芯片CH375中文手册.http://www.winchiphead.com/download/CH375/CH375DS1.PDF.2011-02-11.

[5]李云胜,李晓虹.基于STC单片机的商品电子防盗系统设计[J].自动化与仪表,2009(7):38-41.

[6]张林昌.发展我国的电磁兼容事业[J].电工技术学报,2005,20(2):23-28.

[7]周兴,戴胜华.基于单片机的USB数据采集系统设计[J].仪器仪表标准化与计量,2006(1):25-27.

猜你喜欢

缓冲区报表总线
一种基于CAN总线的误码测试方法
基于网络聚类与自适应概率的数据库缓冲区替换*
从三大报表读懂养猪人的成绩单
镇长看报表
一类装配支线缓冲区配置的两阶段求解方法研究
CAN总线并发通信时下位机应用软件设计
关键链技术缓冲区的确定方法研究
基于CAN总线的水下通信系统设计
初涉缓冲区
宝马F02车总线系统