【摘要】:本文设计了基于嵌入式系统的网络化自动抄表系统,并着重阐述系统硬件ATmega128和LAN91C111的特点,并在采集器中移植了NUT/OS实时操作系统和实现了Tcp/Ip协议,能够实时地处理多任务,大幅提高系统的管理能力。
【关键词】:ATmega128,NUT/OS,以太网
1.引言
自动抄表(AutomatieMeterReading,以下简称AMR)是指采用电子和计算机以及网络技术自动读取和处理各类表计数据的自动化系统。自动抄表技术不仅是提高用电管理水平的需要,也是微电子和计算机技术迅速发展的必然。在用电管理方面,采用自动抄表技术,不仅能节约人力资源,更重要的是可提高抄表的准确性,减少因估计或誊写而造成帐单出错,使供用电管理部门能及时准确获得数据信息。由于电力用户因此不再需要与抄表者预约上门抄表时间,还能实时查询帐单,故这种技术越来越受到用户和电力管理部门欢迎。自动抄表技术不仅用于电力表的自动抄收,也被广泛的用在水表、天然气表和热气表的自动抄收上,同样具有自动化、速度快、准确度高等优点[1]。
本系统集微电子技术,自控技术,通信技术和网络技术于一体。采用集散结构,模块化设计,所有主要设备均带有微处理器,能独立运行。采集器与各终端(或智能电表)之间的通信采用RS485总线或电力载波技术,实现双向数据传输。采集器与管理中心计算机的通信可通过以太网实现远距离的数据通信。独特灵活的组网方式,适应于各种安装使用环境。自动抄表系统结构图如图1所示。
图1自动抄表系统结构图
2.硬件结构
本系统基于嵌入式系统设计智能数据采集器,该数据采集及传输控制器作为整个系统的核心起到桥梁作用。本系统的硬件采用Ethernut2.1g版本的硬件方案,在此平台上加入了RS485总线接口,使用Atmel的ATmega128单片机和SMSC公司的LAN91C111以太网控制芯片,外扩一块32K的SRAM,并提供一个UART接口,一个RJ45以太网接口,并提供一个ISP编程接口。硬件原理图如图2所示:
图2数据采集器硬件原理图
在图2中,数据线和地址线采取总线方式:8位数据线和16位地址线,PA口8位端口为复用AD端口,接地址锁存器74HC573D,PC口的8位端口用于地址线的高8位(A8~A15)。PD2,PD3通过MAX485接口。现场总线的信号通过ATmega128接收信号再通过LAN91C111与以太网进行相连。图中的HR601681是针对10M/100M以太网的变压滤波器。
2.1主控制模块芯片ATmega128
主控芯片ATmega128是一款低功耗CMOS8位单片机,最快频率可达16MHz,其具有128K字节内置Flash程序存储器,4K字节EEPROM,4K字节SRAM,32个8位通用工作寄存器,53个通用I/O口,两个USART口,一个I2C总线接口,一个标准的JTAG接口(用于在线仿真调试和程序下载),4个有比较模式和PWM模式的定时器/计数器,一个带内部振荡器的可编程看门狗定时器,一个8通道10位具有可选增益差分输入的A/D转换器,一个SPI口,6种可通过软件选择的节电模式[2]。
ATmega128的片内Flash程序存储器可以存放通过SPI串行接口、通用编程器或通过JTAG接口烧写的程序。自引导BOOT程序可以用任意的接口下载到应用Flash程序存储器中。当应用程序区被更新时BOOT区的软件将继续运行,实现同时可读/写的功能。增强RISC的8位CPU与在系统编程和在应用编程的Flash存储器集成在一个芯片内,使ATmega128成为功能强大的单片机,当运行Nut/OS嵌入式实时操作系统时(占用大约20K空间),还有100KB左右的空间,可以满足大多数应用程序的程序存储器需要,用户可以在此基础上编写自己的嵌入式控制应用程序。
2.2以太网接口设计
网络接口模块中,选用的是SMSC公司为嵌入式应用系统推出的第三代快速以太网控制器。LAN91C111的芯片上集成了遵循SMSC/CD协议的MAC(媒体层)和PHY(物理层),符合IEEE802.3/802.U-100Base-Tx/10Base-T规范。
LAN91C111芯片功能模块包括[3]:
(1)CSMA/CD收发分离的逻辑块,完成载波侦听多路访问/冲突检测功能。
(2)MAC模块依据CSMA/CD模块的状态对数据包进行访问,该模块一边与CSMA/CD模块的收发FIFO接口,另一边与仲裁器模块接口。
(3)仲裁器模块Arbiter,在BIU和DMA访问内部RAM的请求之间进行仲裁。
(4)总线接口单元模块BIU支持同步或异步的总线接口。
(5)内存管理单元模块MMU,用来分配内存和收发包队列。
LAN91C111为全双工、收发,支持交换式以太网,提前发送和接收功能;支持突发数据传输;通信速率可选,自动侦测10M和100M;增强的功率管理。该以太网控制器所遵循的标准与协议为IEEE802.3以太网传输协议。8位~32位数据总线接口单元由控制总线、地址总线和数据总线与外部的CPU控制芯片相连。外部数据可以8位、16位或32位方式与LAN91C111进行交换。该单元还集成了EEPROM接口,所有内部寄存器的初始值可先放在EEPROM中,自举时通过EEPROM接口输入芯片中,实现自动初始化。总线仲裁器监视以太网总线的数据交流情况,一旦发生阻塞,一方面通过总线接口单元与外部CPU联系,另一方面控制MMU(内存管理单元)实现总线数据协调。MMU控制8KBSRAM的存储情况,实现与DMA控制器之间的数据联络。DMA控制器与总线控制器一起控制数据在DMA与EPH(以太网协议处理器)之间的交换。从EPH出来的数据最终经过10M/100M的PHY直接接到以太网总线上。LAN91C111使用引脚TPIN+,TPIN-,TPOUT+和TPOUT-连接耦合隔离变压器HR601681,利用RJ-45插头实现与以太网的连接。数据线和地址线均采用总线方式:8位数据线和16位地址线,PA口的8位端口为复用的低8位地址线/8位数据线AD端口,接地址锁存器74HC573。读数据时,D:[0:7]直接送到ATmega128;写数据时,D:[0:7]送到LAN91C111。LANC91C111使用了四条地址线A1,A2,A3,A4来访问内部寄存器,和IS62C256的地址进行区分;LAN91C111端数据总线D0~D15与ATmega128的AD0~AD7及IS62C256的I/00~I/O7相连(PA口扩展外部数据存储器SRAM),D16~D32悬空;片选信号AEN接与非门SN54HC00的6脚,由地址线A14、A15控制。nBE0接SN54HC00的9、10端和A0,nBE1接SN54HC00的8脚,nBE2和nBE3通过上拉电阻接VCC。LAN91C111的ENEEP脚没有接EEPROM,所以通过电阻接地。RBIAS脚接11K电阻再接地,以便PHY能正确接收数据。LAN91C111的RESET脚接ATmega128的PE7(外部中断7),中断输出信号INTR0接PE2口(USART外部时钟输入/输出口),两元件的/RD、/WR相连。nSRDY、nDATA、nVLBUS工作在32位数据传输的方式下,不用悬空。nADS是地址锁存信号接地。
3.软件设计
Ethernut是一个开放源代码的基于8位单片机的嵌入式以太网解决方案,Ethernut在软件上包含一个NUT/OS实时操作系统和Nut/Net协议栈,除了非常少量与硬件相关的源代码使用汇编语言编写外,剩下的都是使用C语言编写的,具有很高的可移植性。Ethernut的总体结构图如图3所示。它的各个模块是独立开发的,为用户提供标准AVR-GCC和ICCAVR语言可调用的API函数。系统内核占用的程序空间大约是1.5KB,它是直接运行在设备驱动程序之上的系统核心软件,主要完成任务管理、任务的同步与通信。网络管理、文件系统和I/O管理是运行于系统内核之上的外围模块。
图3Ethernut的总体结构图
3.1操作系统移植
嵌入式操作系统的移植就是使一个实时内核能在微处理器或微控制器上运行,本系统是在ATmega128中移植了开源的操作系统Nut/OS。
Nut/OS可以分成下面几个相对独立的部分:
.定时器管理(TimerManagement)
.堆栈管理(HeapManagement)
.I/O管理(I/OManagement)
.事件管理(EventManagement)
.系统初始化(SystemInitialization)
.信号量(Semaphore)
.互斥体(RecursiveMutex)
.内存块管理(BankedMemoryManagement)
.线程管理(ThreadManagement)
通过系统提供的函数来进行系统调用,实现用户程序功能。从上面也可以看出在这样的操作系统上编程还是紧靠内核的,为了不影响软件的执行效率,没有再增加一层软件抽象。
3.2TCP/IP主要协议实现
由于Ethernut的Nut/Net协议栈为精简的TCP/IP协议栈,它对TCP/IP协议并不完全支持,仅保留了核心部分,它可以很方便地嵌入到8位MCU中,且尽量少占用MCU资源。Nut/Net仅支持以太网而不支持令牌网等其他网络[4]。
ARP协议(AddressResolutionProtocol),该协议的主要功能是为IP地址到对应的硬件地址之间提供动态映射,使网络上的每一个主机都建立一张IP地址和链路层地址之间的映射表。实现函数主要集中在NutArpInput.c、NutArpOutput.c、NutArpCacheUpdate.c三个文件中。ARP提供了一种把IP地址映射到MAC地址的机制。使用TCP/IP的编址方法,给每台机分配一个32位地址,整个互联网表现得如同一个虚拟网,只使用分配的地址来发送接收分组,但当主机路由器要在一个物理网络上发送分组时,得把IP地址映射到正确的物理地址上才能完成分组投递,它使用了动态绑定技术来完成地址的转换,为减少通信量,使用缓存机制来保存近期的活动连接,从而加快操作时间。从功能上看,ARP被分成两部分:一是在发送分组时把一个IP地址映射到一个物理地址上,二是回答其它主机的请求。主要的实现函数有[5]:
voidNutArpInput(NUTDEVICE*dev,NETBUF*nb);
NETBUF*NutArpAllocnetBuf(u_shorttype,u_longip,u_char*mac);
intNutArpOutput(NUTDEVICE*dev,NETBUF*nb)。
对于ARP请求或应答操作,以太帧中的帧类型值都是0x0806。ARP分组中的各个字段用来描述硬件类型和协议类型。硬件类型字段表示硬件地址的类型,值为1表示是以太网地址,协议类型值为0x0800表示IP地址。对以太网上IP地址的ARP请求或应答,硬件地址长度和协议地址长度分别是6和4,单位是字节。操作字段类型共有4种,1为ARP请求,2为应答,3为RARP请求,4为RARP应答。对于一个ARP请求,除目的地址外的所有字段都有填充值。当系统收到一个目的端为本机的ARP请求报文后,就把硬件地址填进去,然后将两个目的端地址分别替换两个发送端地址,把操作字段改为2,然后发送。
IP协议(InternetProtocol)。该协议的实现函数主要集中在NutIpInput.c、NutIpOutput.c、Route.c三个文件中。IP协议工作在网络层,是TCP/IP协议栈中最为核心的协议。所有的TCP、UDP、ICMP数据都是以IP数据包格式传输的。IP提供的是不可靠的、无连接的数据包。不可靠是指不能保证IP数据报成功到达目的地,可靠性得由上层协议来完成。如果有错误发生,IP仅简单地丢弃该数据报,并发送ICMP数据报给发送者。无连接是指IP不维护后续数据报的状态信息,每个数据报的处理是独立的,IP可能是乱序地到达目的地。将IP数据发往一个目标主机和数据报转发其实是一回事,本IP协议的实现提供了IP路由功能,这样可以很方便地将该协议用于服务器或网关中。由于物理网络对数据帧的长度有限制,因此IP层在发送IP数据报的时候,都判断数据报的长度是否大于网络接口的MTU,超过了就要发生分片。数据报一旦分片后,只有到目的地才进行重组。对于本文的系统而言,由于使用的是以太网的物理接口,其MTU=1500B,分片比较单一,重组要考虑打印数据的分片,而一般的请求和应答可以在一个报文段完成。IP数据报的首部提供了分片的有关信息。主要函数实现有:
u_longu_shortNutIpChkSumPartial(u_shortics,CONSTvoid*buf,size_tlen);
voidNutIpInput(NUTDEVICE*dev,NETBUF*nb);
intNutIpOutput(u_charproto,u_longdest,NETBUF*nb);
intNutIpRouteAdd(u_longip,u_longmask,u_longgate,NUTDEVICE*dev);
intNutIpRouteDelAll(NUTDEVICE*dev)。
4.上位机管理程序
在远端控制中心,需要有上位机管理程序负责对数据的统计和管理。设计的抄表管理系统运行于Windows操作系统,使用Delphi编写,通过ODBC接口与ACCESS数据库系统连接。软件的功能模块主要包括以下几个方面:系统管理包括重新登录、修改密码、操作权限管理等功能;系统设置包括仪表类型设置、收费参数设置等功能;远程操作包括读表、初始化和置数、拨号催款和关表等功能:数据管理包括仪表信息修改和查询、历史收费查询、收费、数据入库、用户的增添、删除、排序等功能;帮助包括使用指南等功能。
5.结语
本系统在8位MCU上实现嵌入式网络技术,在保证性能的基础上严格控制成本,而且还提升了抗干扰的性能,通过合理设计通信协议使得嵌入式网络的性能能够最大的提高,通过TCP/PI协议及通信网络和抄表计算机通信,将数据采集器所采集的计量数据集中并传送到抄表计算机中,完成远程抄表的功能。本系统通过分布广泛的网络来构成传输通道,这使得它组网简单、费用低廉、易于维护,具有良好的应用前景。
参考文献
[1]谭志强,黄懿。自动抄表技术的发展[J].电测与仪表,2009.1
[2]ATmega128datasheet,AtmelCorporation,2000
[3]LAN91C111datasheet,SMSCCorporation,2001
[4]项敏,王学军。TCP/IP协议栈在嵌入式芯片上的实现[J]].电子设计应用,2004.5
[5]沈文,黄力岱等。AVR单片机C语言开发应用实例—TCP/IP篇[M].清华大学出版社,2005.7
搜论文知识网致力于为需要刊登论文的人士提供相关服务,提供迅速快捷的论文发表、写作指导等服务。具体发表流程为:客户咨询→确定合作,客户支付定金→文章发送并发表→客户接收录用通知,支付余款→杂志出版并寄送客户→客户确认收到。鸣网系学术网站,对所投稿件无稿酬支付,谢绝非学术类稿件的投递!