油封厂家
免费服务热线

Free service

hotline

010-00000000
油封厂家
热门搜索:
技术资讯
当前位置:首页 > 技术资讯

单片机IP技术在智能小区系统中的应用

发布时间:2020-07-21 19:31:32 阅读: 来源:油封厂家

引言

本文引用地址: 住宅小区智能化(或称为"智能小区")的概念是本世纪90年代引入国内的,它是以家庭智能化为核心,包括远程抄表,家庭防盗报警,医疗救助,家电控制等功能,采用系统集成方法,建立一个沟通小区内部住户之间、住户与小区综合服务中心之间、住户与外部社会的综合信息交互系统,从而为住户营造一个安全、舒适、便捷、高效的居住和生活环境。现行的智能小区系统多是以rs485、can总线、lonworks等总线进行联网,布线复杂,冲突多,系统不够稳定且涉及到消防安全及成本的考虑。而以太网实现联网,布线简单,且也比can、lonwoks等更便宜,更有利于小区智能化产品的兼容和统一。在当今计算机技术及信息技术不断发展的情况下,以及人们对家居生活的需求及观念上的变化,电话、电视、计算机三网有合一的趋势,将来智能小区的发展必定是以太网的天下。所以针对当前行业的发展情况和趋势,对于基于ip的以太网家庭智能终端的研究顺应时代发展的潮流,有一定的现实意义。

智能小区系统结构

本文中提出的小区智能系统由小区计算机管理系统、网络交换设备、家庭智能终端(cdt)三个主要部分组成,网络结构如图1所示。

小区管理系统是指安装在小区管理中心,完成全小区内用户数据终端数据采集和处理的计算机系统,对于用户数较多的系统,可以采用客户机/服务器(c/s)结构。小区管理系统分为监控微机(client)和服务器(server)两个部分,客户端只作数据采集使用,数据的处理在服务器端进行。小区管理系统的功能包括:显示用户终端的上网状态,接受并显示住户报警,读取水电气表数据并产生报表,报警日志处理,系统管理等。用户数据终端:用户终端用来与管理系统通讯、并完成对各种计量信号和报警信号的采集、应答主机的呼叫、回答上网状态,并提供操作面板欢迎用户查询。

用户终端硬件结构及rtl8019的配置

1、用户终端结构硬件结构图如图2所示:系统由两块单片机组成,一块负责五表读数、安防红外遥控器及安防信号的采集工作,另一块负责驱动rtl8019通讯、家电控制,并响应键盘及驱动液晶显示。两块mcu之间通过串口交换数据。

2、rtl8019的配置 rtl8019是一款高度集成的以太网控制芯片,它有两种工作模式:一种是跳线模式jumper,一种是非跳线模式 jumperless,后者也支持plug and play。在单片机中一般都采用跳线模式选项。i/o端口的基地址io_base_address由单片机和8019之间的接线决定。此外8019还具有8个irq接口,本系统中没用到irq,采用查询方式。

8019输入输出地址共32个,地址偏移量为00h――1fh: 其中00h--0fh共16个地址,为寄存器地址,寄存器分成4页page0――page3,与ne2000兼容的寄存器只有3页(page0-page2),为了保证驱动程序对所有ne2000的网卡有效,不要去操作第四页的寄存器。

10h--17h共8个地址,为dma地址。 18h--1fh共8个地址,为软复位端口。8019的硬件复位很简单,只需在上电时对rstdrv输出一高电平就可以了。8019复位的过程将执行一些操作,比如将93c46读入,将内部寄存器初始化等,至少需要2毫秒的时间。推荐等待更久的时间之后才对网卡操作,比如100毫秒之后才对它操作,以确保完全复位。

ics16b=low时采用8位dma操作模式,上面的地址中只有18个是有用的: 00h--0fh共16个寄存器地址。10h dma地址 (10h--17h的8个地址是一样的,都可以用来做dma端口,只要用其中的一个就可以了)。1fh 复位地址(18h到1fh共8个地址都是复位地址,每个地址的功能都是一样的,只要其中的一个就可以了,但实际上只有18h、1ah、1ch、1eh这几个复位端口是有效的,其他不要使用,有些兼容卡不支持19h、1bh、1dh等奇数地址的复位)。

网卡驱动及tcp/ip协议栈的简化

从程序员的角度来说,对8019的操作是比较简单的,驱动程序只需要将要发送的数据按一定的格式写入芯片并启动发送命令,8019会自动添加接收状态、下一页指针、以太网帧长度和校验fcs段,并将数据包转换成物理帧格式在物理信道上传输。反之,8019收到物理信号后将其还原成数据,按指定格式存放在芯片ram中以便主机程序取用。简言之就是8019完成数据包和电信号之间的相互转换:数据包电信号。以太网协议由芯片硬件自动完成,对程序员透明。驱动程序有3种功能:芯片初始化、收包、发包。发送数据包是先将待发送的数据包通过dma写操作存入网卡芯片ram,并给出发送缓冲区首地址(tpsr0、tpsr1)和数据包长度(tbcr0,tbcr1),启动发送命令,网卡芯片会自动按以太网协议完成发送并将结果写入状态寄存器。接收数据包时,采用查询的方式,根据curr==bnry+1?可以判断是否收到新的数据包,如果有则通过dma读操作从网卡芯片ram读出数据。发送、接收子程序如下所示:

1发送子程序 bit transmit(void) { cardcopydown(); xbyte[io_base_address + nic_command] = cr_no_dma|cr_stop|cr_page0;//停止8019 xbyte[io_base_address + nic_intr_status] = 0xff;//清中断标志 xbyte[io_base_address + nic_xmit_start] = xmit_start;//设置发送开始地址 xbyte[io_base_address + nic_xmit_config] = tcr_no_loopback;//设置为一般模式 xbyte[io_base_address+nic_data_config]=dcr_fifo_8_byte|dcr_normal|dcr_byte_wide;//设置8位dma模式 xbyte[io_base_address + nic_xmit_count_lsb] = 100;//设置发送数据长度 xbyte[io_base_address + nic_xmit_count_msb] = 0; xbyte[io_base_address + nic_command] = cr_start|cr_xmit|cr_page0;//启动8019 return (true); } 2接收子程序 bit receive(void) { uint tempshort; uchar temp; uchar curr; uchar bnry; uint i; //停止网卡 xbyte[io_base_address + nic_command] = cr_stop|cr_no_dma|cr_page1; //读取当前current的值 curr= xbyte[io_base_address + nic_current]; //读取当前boundary的值 xbyte[io_base_address + nic_command] = cr_stop|cr_no_dma|cr_page0; bnry= xbyte[io_base_address + nic_boundary]; if(curr==0) return (faulse); if((++bnry)> page_stop) bnry=page_start; if(curr!=bnty)//表示有包收到 { //设置远端dma地址和长度 xbyte[io_base_address + nic_rmt_addr_lsb] = 0x00; xbyte[io_base_address + nic_rmt_addr_msb] = boundary; xbyte[io_base_address+nic_rmt_count_lsb]=__dread&0xff; xbyte[io_base_address + nic_rmt_count_msb] = (__dread>>8)&0xff; //设置dma读 xbyte[io_base_address + nic_command] = cr_start|cr_dma_read|cr_page0; //重复读dma端口 for (i=0;i

隆鼻

上海双眼皮医院

济南牙齿矫正医院

相关阅读