基于USB通信的多功能智能插座

时间:2007-11-16

  摘  要:多功能智能插座是一种家庭信息采集设备,该设备监测家用电器工作状态的同时兼插座使用,并具有网络监测能力。本文着重介绍了该插座与上位机通信的USB实现。为了将该插座的用途拓展到工业现场,文章对使用一种RS485到USB接口转换卡进行了初步探讨。

  关键词:USB;RS-485;设备驱动程序;转换卡

1.     概述

  现有的插座在其使用方式、功能以及外形特征等诸方面都表现出多样化的趋势。有的增加了保险功能、电源指示功能、开关功能,有的增加了调压功能。这些插座的功能无论怎样,只能是单一的目的:为用电设备提供电源接口。它们的共同缺陷就是不具有信息化和智能化功能。为了实现插座的信息化和智能化,我们将研究设计的智能信息系统与插座结合,将该智能设备与电源插座合为一体,设计成多功能智能监测插座。该插座由于在建筑电气安装时性固定完成,采用照明电源供电,人们使用时就好象使用普通电源插座一样,免除了过多的连接线

2.系统功能与组成

2.1功能

该多功能智能监测插座是在普通插座的基础上,结合信息的需要,增加了如下功能:

  1)   对接入插座的电器的电压、电流、频率进行监测。

  2)   对插座工作环境温度进行监测。

  3)   将监测到的电器的工作电压或电流与其额定值进行比较,如果超过额定值,主机就发送命令给执行单元,自动切断该电器的电源,实现了保护功能。

  4)   通信功能:将监测到的信息经过通信接口传给上位机,在家庭内部或工业现场可以连成一个局域网。在主机端人们可以通过一个人机界面定期或不定期查询接入插座的诸电器的工作状况。如果想实现进一步的方便,可以将该局域网通过公用电话网连到Internet 上,这样就可以在家庭以外的地方用手机或PC机随时方便地查询家用电器的工作情况了。

2.   2组成

  该智能监测插座由电源系统、监测系统、控制系统、通信系统四部分组成。(1)电源系统:完成照明电源到直流稳压电源的变换,提供给该智能系统工作电源。由隔离降压、整流、滤波、稳压等电路组成。

  (2)监测系统:由电压传感器、电流传感器和温度传感器以及模/数变换电路组成,负责信息的采集处理。

  (3)控制系统:由微处理机(单片机)和执行器件组成。微控制器一方面控制采集部分的模拟量到数字量的转换;另一方面接受上位机的命令,然后将这个命令交给执行单元去完成,比如切断用电器的电源。

  (4)通信系统:该插座的通信系统主要是在其内部增加一个通信接口,以便联网和服务器进行通信。由于该设备构成局域网,在设计要采用分层次的设计思想,在这篇文章里,只考虑设计的一层:物理层的通信实现。

3.  物理层通信的设计

  在串行通信口的缺点中有三项为突出:低速、复杂的电缆和端口数的限制。通用串行总线(USB)不仅克服了所有这三项缺点,而且具有支持热插拔、容易扩展、低成本、低干扰等优点。USB标准已经成为业界普遍认同的一种事实上的接口标准,支持这一标准各种新产品正在大量涌现,而且现在的微型计算机上都有USB接口,所以我们就选择USB作为该多功能插座和主机串行通信的接口。

 3.1 USB接口芯片及其工作原理

  在这篇文章中我们采用Philips公司推出的PDIUSBD12芯片,这是一种价格便宜、功能完善的并行接口芯片,它支持多路复用、非多路复用和DMA并行传输。PDIUSBD12接口芯片遵从协议USB1.1,适合于不同用途的传输类型。PDIUSBD12需要外接微控制器(MCU)来进行协议处理和数据交换,它对MCU没有特殊要求,而且接口方便灵活,因此设计师可以选用自己熟悉的MCU对芯片进行控制,也可利用Philips公司的固件(firmware)结构来缩短开发时间、降低风险、减小投资。

  性能特点:PDIUSBD12除了具有USB设备的一般特性外,还具有如下特点:(1)是一种高性能的USB接口芯片,其内部集成有SIE(Serial Interface Engine)、320字节的FIFO、收发器和电压调节器。(2)适用于大部分设备类规范。可与任何外部微控制器/微处理器实现高速并行接口,其速度可高达2Mbit/s。

  (3)可进行完全独立的DMA操作。

  (4)主端点配置有双缓冲,因而可提高数据的吞吐量、减小数据传输时间,轻松实现数据的实时传输。

  (5)当采用同步传输方式时,数据的传输速度为1Mbit/s;而采用批量传输方式的速度为1Mbyte/s。在使用上述方式进行数据传输时,可方便地使用多种中断方式。

  (6)带有可编程的时钟输出,与USB总线的连接可通过软件来控制(Soft Connect TM)。

  (7)有两种工作电压可供选择:分别为3.3±0.3V和3.6~5.5V。

  (8)输出和数据传输状态可通过USB连接指示灯来监控。

3.2 通信硬件电路设计

  本文我们选用89C52单片机作为该系统的微控制器。PDIUSBD12和89C52的电路连接如图1所示:

 

                        图1   USB接口通信电路

 

3.3 通信系统软件设计

3.3.1 USB设备驱动程序开发

  Windows2000提供了一些常见USB设备的驱动程序,但是要使D12构成的USB设备正常工作仍需要自己编写驱动程序。尽管系统已经提供了很多标准接口函数,但编制驱动程序仍然是USB开发中困难的,通常采用Windows DDK来实现。

    

3.3.2 USB设备固件(firmware)设计

  设备固件是设备运行的,采用汇编语言设计。其主要功能是控制芯片PDIUSBD12接受并处理USB驱动程序的请求(如请求设备描述符、请求或设置设备状态、请求设备设置、请求或设置设备接口等共10种USB1.1标准请求);控制芯片PDIUSBD12接受应用程序的控制指令;控制A/D模块的数据采集;通过PDIUSBD12存储数据并实时上传PC。

  下位机程序主要的工作是初始化D12,通过D12进行数据传输以及按协议对数据进行格式转换。USB单片机控制程序通常由三部分组成:,初始化部分,完成单片机和所有的外围电路(包括D12)的初始化;第二,主循环部分,等待来自数据采集设备或上位机的数据,并启动数据格式转换程序,进行数据通信,是固件的主体部分;第三,中断服务程序,由上位机和数据采集设备触发,进行一些低工作量的实时处理(如置相应标志位),然后在主循环部分对数据作进一步的处理。

PDIUSBD12的初始化过程如下:

  (1)   设置地址使能;

  (2)   设置端点(EndPoint)使能(这时候LED亮);

  (3)   软断开(Disconnect);

  (4)   延时(1~2s);

  (5)   软连接(Soft Connect ,用Set Mode命令,此时LED灭);

  (6)   中断使能,等待中断。

  (7)响应来自主机的Setup包,完成枚举。步骤3~5就是利用Soft Connect TM技术,不必进行物理插拔而使主机初始化USB总线。虽然USB协议对枚举过程作了统一的规定,但是不同公司的芯片实现起来可能有所不同。USB枚举的过程实际上就是主机和USB设备的一个握手过程:主机发送出包含某个枚举请求的Setup包,USB设备响应该请求并返回必要的信息。在主机得到USB通信所需要的所有USB设备的信息之后,枚举即告结束。

  D12构成的USB设备的枚举过程如下:(1)Get Device Descriptor: 主机请求代码为8006000100004000,然后89C52通过D12发送设备描述符,次只需发送设备描述的前8个字节,如:1201000100000010。(2)Set Address: 主机请求代码为0005020000000000,说明主机设置其地址为0X02,收到该请求后D12只需使能该地址(0X82),并对控制输入端写0长度的数据。(3)读取全部Device Descriptor: 主机请求代码为8006000100001200,与1不同的是此时是读取全部设备描述符,一般为18个字节,可以分为多次传输,D12发送的前8字节与1相同,后10个字节为:71048888000100000001。其中,前两个字节是厂商ID(VID),本例中的为0X0471,即分配给Philips公司的ID号。后两个字节是设备ID(PID),设计定义为0X8888。VID和PID决定了驱动程序的匹配,一定要与生成的主机驱动程序一致。(4)Get Config Descriptor: 主机请求代码为8006000200000900,根据USB协议的定义,第四字节的0X02表明该请求是一配置描述符请求。D12发送9字节的配置描述符给主机,为09022e000101006001。(5)读取全部Config Descriptor: 主机请求代码为8006000200001200,此时D12必须把包括配置描述符、接口描述符、各端点(D12为四个)的描述符在内的所有的配置情况分多次发送给主机。(6)如果以上步骤都正确,主机将找到新设备,提示安装驱动程序,否则找到未知设备,不可用。安装驱动程序后,以后的每次设备插入,枚举次序与以上步骤略有不同,之后会有Set Configuration、Get  Configuration和Get Interface等调用。

3.3.3系统应用程序设计

  PC机应用程序是该插座数据采集系统的中心,采用VC++6.0编程。其功能主要有:开启或关闭USB设备、检测USB设备、设置USB数据传输管道(pipe)、设置A/D状态和数据采集端口、实时从USB接口采集数据、存储显示并分析数据。程序主框图如图2所示:

4.工业用的智能监测插座

4.1 USB通信在工业现场的局限

  USB电缆的传输距离是5米,因此上述的USB通信方案仅适用于家庭用的监测插座。即使增加了中继或HUB,USB传输距离通常也不超过几十米,这对工业现场而言显然是太小了。目前,工业现场有大量采用RS-485传输数据的采集设备。RS-485总线传输距离可以达到1200m以上,并且可以挂接多个设备。不足之处是传输速度慢、可靠性差、需要板卡的支持、成本高、安装麻烦等。RS-485的这些缺点恰好能被USB所弥补,而USB传输距离的限制又是RS-485的优势所在。为此,我们采用一种RS-485和USB的接口转换卡来解决上述问题。

4.2  RS-485和USB转换卡的原理与硬件电路图

 

               图2   应用程序主框图

     

4.2.1 转换卡的工作原理

  在采集现场,数据采集设备将采集的数据利用485总线进行传输。在主机端,利用转换卡接收来自485总线的数据并通过USB接口传送至PC进行分析处理。而主机向设备发送数据的过程正好相反,主机向USB口发送数据,通过485~USB转换卡转换为485协议向远端输送。转换卡的主要功能是完成信号电平转换和数据格式转换。RS-485和USB电平的转换主要依靠硬件,通过各自的接口芯片将信号转换为TTL电平。数据格式的转换则主要是软件方面的工作, MCU读到某一个接口的数据,然后按照另一个接口协议中对数据帧的要求进行打包。设计的是通过MCU协调两个接口的数据收发,由于相当部分的工作已经由各个接口电路完成,所以设计工作量大为减少。

4.2.2 转换卡硬件电路

  硬件部分主要是MCU与485和USB的接口电路设计,如图3所示。MCU采用普通8051,USB接口芯片为PDIUSBD12,485接口芯片为MAX485。

4.3 转换卡软件设计

  软件设计包括单片机软件(固件)设计和主机部分软件设计。单片机软件使用伟福公司提供的WAVE仿真软件开发,并通过其仿真器进行在线调试。主机部分软件又包括驱动程序和应用程序两部分,分别使用DDK和VC6.0生成。

 

                               图3  USB接口转换卡电路图

 

5.结束语

  对于该智能监测插座的研究目前仍然处于理论的设想与设计过程中,要做出产品来,仍然有很长的路要走,需要更多的人投入更多的精力。尤其是利用USB通信这一块,USB驱动程序的编写是个难点。随着技术的不断更新、完善和发展,相信该多功能插座的实现会越来越容易。


  

参考文献:

[1]. RS485 datasheet https://www.dzsc.com/datasheet/RS485_585289.html.
[2]. PDIUSBD12 datasheet https://www.dzsc.com/datasheet/PDIUSBD12_544412.html.
[3]. 89C52 datasheet https://www.dzsc.com/datasheet/89C52_105388.html.
[4]. TTL datasheet https://www.dzsc.com/datasheet/TTL_1174409.html.
[5]. MAX485 datasheet https://www.dzsc.com/datasheet/MAX485_859396.html.


上一篇:一种TCP/IP卸载引擎架构的应用
下一篇:基于PWM降压转换器AP3003的车载充电器的系统设计

免责声明: 凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。

相关技术资料