• 易迪拓培训,专注于微波、射频、天线设计工程师的培养
首页 > RFID和物联网 > RFID > USB总线在远程抄表系统中的应用

USB总线在远程抄表系统中的应用

录入:edatop.com     点击:

1 前& nbsp; 言

随着供水部门、供电部门、供气部门对“一户一表”工程改造的推进,以及对自动化的要求,远程自动抄表系统已成为水、电、气自动化管理和智能化控制不可缺少的组成部分。

采用集中抄表系统能够杜绝人工抄表产生的误抄、漏抄、估抄等人为错误,提高工作效率,减轻劳动强度,减员增效。一般抄表系统采用RS485总线,然后通过485/232模块与监控计算机连接,计算机通过串口轮巡采集电表数据。由于串口速度慢,这成为抄表系统传输速率提高的瓶颈,而使用485/usb模块,能很好的解决这个问题,USB 1.1规范的最高传输速率为12 Mb/s。USB总线除了用于外围设备和PC机之间的连接之外,在其它领域也有广泛应用,包括测量和自动化应用。

2 硬件设计:

模块的硬件包括: 微控制器、RS485 总线通信接口和USB 通信接口,如图1:

& nbsp;& nbsp;& nbsp;& nbsp;& nbsp;& nbsp; 图1 RS485/USB适配器硬件原理图

RS485定义了一个基于单对平衡线的多点、双向(半双工)通信链路,采用平衡式发送,差分式接收的数据收发器来驱动总线,每次通信只能有一个主站,适合轮巡方式通信。RS485收发器采用TI公司的75LBC184,它使用单电源供电,电压在+3-+5.5V范围都能正常工作,能完成TTL与RS485之间的转换。在电路中,使用了TLP521进行隔离,提高了系统的可靠性。

USB 通信接口采用PDIUSBD12,负责与上位机和微处理器进行信息交换。PDIUSBD12是Philips公司推出的一种价格便宜、功能完善的USB并行接口芯片,支持多路复用、非多路复用和DMA并行传输,它遵从USB1.1协议,适合于不同用途的传输类型。PDIUSBD12需要外接微控制器来进行协议处理和数据交换,对MCU没有特殊要求,接口方便灵活。微处理器采用P89C51RD 单片机。

3 系统软件设计

3.1 RS485软件子程序设计:

& nbsp;& nbsp;& nbsp; RS485软件编程非常简单,它使用处理器的串口。数据到来时存放到串口缓冲区中,并产生串口中断。

& nbsp;& nbsp;& nbsp;& nbsp;& nbsp;& nbsp;& nbsp;& nbsp;& nbsp;图2 串口中断流程图

RS485协议只是物理层,上层协议需要用户自己定义。 由于介绍RS485总线的文章很多,其他程序略。

3.2 USB软件设计:

USB设备与主机通过四根线连接,电源、地,以及两根数据线,该模块使用计算机提供的5v电源。连接速度由D+ , D-连线上的电阻位置决定的, 如果D+ 线上有上拉电阻, USB 设备为全速设备,如果D-连线上有上拉电阻, 则USB 设备为低速设备。PDIUSBD12 的softconnect 技术在片内集成了1.5k的上拉电阻, 可以通过微处理器发送命令来控制D+上的上拉电阻是否与电源连接。

在usb设备中,我们使用描述符区别不同的设备、端口等。描述符主要包括设备描述符、配置描述符、接口描述符,在设备中预先设置这些参数,主机通过对这些描述符的读取,获得该设备的信息。

当一个设备刚插入计算机时,主机需要对该设备枚举,读取该设备的相关参数,首先使用默认的设备地址0进行通信。主机端先向设备地址0,端点0发送Get_Descriptor(获取描述符)请求来查询接入什么样的设备,设备使用设备描述符回答,然后通过发送Set_Address(设定地址)请求来分配一个单独的地址给设备。设备读取这个请求,返回一个确认且保存新的地址。主机给新地址发送一个Get_Descriptor请求来读取这个设备完整的描述符,包括端点最大包的大小,设备支持的配置号,以及该设备的其它信息,主机将这些信息用于往后的通信中。而后发出Get_configuration_Descriptor(获取配置描述符)命令,用来获取设备的节点和端点的配置信息。而后发出(Set_configuration)设定配置请求,以该配置号配置设备。设备就完全正确处于可操作状态,完成了枚举过程,便可以通过端点进行数据传输了。

以下是主设备读取从设备描述符的过程

sync

setup

addr

endp

crc5

00000001

b4

0

0

08

主机发起的setup包,使用默认的地址0,端点0。其中SYNC字段为同步序列数据域,固定为01H,紧接着为标识符数据域PID字段,用来表示数据封装包的类型,可分为令牌、数据、握手或特殊四种封装包类型。其中令牌封装包细分为OUT,IN,SETUP,SOF四种封装格式。随后为地址数据域ADDR字段,用来寻址高达127个外围设备,每个设备只有对应唯一的地址,ENDP字段为端点数据域,最多可寻址32个端点,它仅在IN,OUT,SETUP令牌封装包中,最后为CRC校验和。

sync

Data0

data

crc16

00000001

c3

80 06 00 01 00 00 40 00

bb 29

主机发送数据,其中数据域中的数据80表示设备标准请求,06描述符命令(get_descriptor)00 01 代表请求设备的描述符,00 00为语言类型,40 00,指出期望从设备返回的数据个数,如果描述符的个数大于指定的字节个数,则按照指定个数返回,如果描述符小于指定的字节数,返回实际的字节个数。

sync

ack

00000001

4b

该帧为设备收到数据后的确认帧

sync

in

addr

endp

crc

00000001

96

0

0

08

该帧为向设备发送数据请求。

sync

Data1

data

crc16

00000001

d2

12 01 10 01 00 00 00 10 d8 0d

01 c0 04 01 01 02 00 01

88ee

12为描述符长度,01为设备类型,10 01 为usb版本号,bcd码,这里是usb1.1,00 为设备类型码,00为子类设备代码,00为USB分配的设备协议代码,10为端点0最大包的大小,d8,0d为厂商编号,01 c0为产品编号,04 01为设备出厂编号,01为厂商字符串索引,02 为产品字符串索引,00为序列号,01为设置编号。

在主程序中完成对系统、PDIUSBD12的初始化,以及完成对d12的枚举,将数据的发送接收都放在中断程序中。PDIUSBD12有3组端点,使用默认端点0和端点2。将端点2作为数据传输的通道,当PDIUSBD12从USB收到一个数据包时,就对CPU产生一个外部中断请求,CPU立即相应中断,在中断服务子程序中,将数据包从PDIUSBD12内部缓冲区移到循环数据缓冲区中,随后清零PDIUSBD12的内部缓冲区,对数据校验,如果接收得数据正确,直接调用RS485数据发送子程序,将数据发送到RS485网络。

& nbsp;


图3 外部中断流程图

3.3 计算机软件设计:

计算机软件主要包括,驱动的设计,动态连接库的设计。驱动程序采用飞利浦提供的驱动,上位机程序使用api函数并封装RS485总线的上层协议,提供给用户使用的接口。本例采用VC编写用户程序和动态连接库。从驱动中读数据的程序如下,

void& nbsp;& nbsp; readdata(unsigned char *rec)

{ & nbsp;& nbsp;unsigned char outbuf[105];

& nbsp;& nbsp;& nbsp; HANDLE hFile, hDevice=0;

& nbsp;& nbsp;& nbsp; BOOL bResult;

& nbsp;& nbsp;ULONG nBytes = 25;

& nbsp;& nbsp;& nbsp; hFile = open_file("PIPE02");

& nbsp;& nbsp;& nbsp; if(hFile == INVALID_HANDLE_VALUE)

& nbsp;& nbsp;& nbsp; & nbsp; {return;}

& nbsp;& nbsp;& nbsp; hDevice = open_dev();

& nbsp;& nbsp;& nbsp; bResult = ReadFile(hFile,outbuf,10,& nBytes,NULL);

if(bResult==FALSE)

{ DeviceIoControl(hFile,IOCTL_D12_RESET_PIPE,0,0,0,0,& nBytes,NULL);& nbsp;& nbsp; }

& nbsp;CloseHandle(hFile);

& nbsp;CloseHandle(hDevice);

}

在使用这个函数的时候,只需要添加如下说明。

extern "C" DllImport void readdata ( unsigned char * );

4 结& nbsp; 论

由于采用了USB总线,克服了原来使用RS232接口速度慢的瓶颈,提高了远程抄表系统的数据传输速率,该方案已经成功的得到应用,稳定可靠,有广阔的应用前景。

参考文献:

[1] 基于PDIUSBD12芯片的USB接口的研究与开发。微计算机信息。2005年第21卷8-2期

[2] Compaq、Intel、Microsoft、NEC.Universal Serial Bus Specification V1.1.1998

[3] 广州周立公单片机发展有限公司.PDIUSBD12 USB接口使用指南.2002

13.56MHz NFC天线,13.56MHz RFID天线设计培训课程套装,让天线设计不再难

上一篇:低成本传感器及A/D转换接口的设计考虑
下一篇:RFID温度监测标签与冷链温度监测

13.56MHz 线圈天线设计详情>>
手机天线设计培训教程详情>>

手机天线设计培训教程 国内最全面、系统、专业的手机天线设计培训课程,没有之一;是您学习手机天线设计的最佳选择...【More..

  网站地图