EDN China > 设计实例 > 消费电子设计 > 家居智能控制系统 > 正文
? 2016博客大赛-不限主题,寻找电子导师,大奖升级??

基于Web和硬件可重构技术的远程抄表设计

2009年04月16日 ?? 收藏0

  本文在进行硬件设计的时候采用了基于IP核的设计方法,并将数据集中器的大部分功能在单个FPGA芯片上予以实现。设计电路原理图之前,必须根据系统需求选择合适的IP核。所谓IP核,是指那些以硬件形式(硅片版图)或者软件形式(用Verilog、VHDL描述的RTL或者门级模型)存在的、具有特定功能的硬件电路。IP核通常分为硬核、固核与软核三种。根据系统的硬件开发环境以及性能需求,本文选择了Altera公司开发的一系列软核产品,它们是用Verilog语言所描述的硬件模块,允许用户根据需要对各种参数进行配置,如数据通路带宽、优先进行速度优化还是资源优化等,因而应用非常灵活。系统所用到的软IP核产品有Nios CPU、ROM、RAM、定时器、通用异步收发器UART,以及用于外部功能扩展的Avalon总线模块,并将Nios CPU配置为32位字长模式,拥有256个通用寄存器,工作频率33MHz;UART配置为14400bPs的波特率,8位数据位,2位停止位,无奇偶校验。在确定了IP核并进行相应设置后,需要设计系统的电路原理图。图2表示了由各个IP模块组成的数据集中器内部硬件结构,其中的ROM用于存放用户程序,RAM作为程序运行时的存储空间,定时器为实时操作系统提供时钟中断功能,外部总线接口和UART负责与系统外部进行通信。它们将通过一条内部总线与Nios CPU相连,这样就构成了一个完整的嵌入式硬件系统。设计电路图后的下一步工作是选择合适的实现载体。基于IP核的设计方法通常使用FPGA芯片或者直接在硅片上实现。本文采用的是Altera公司APEX20KE系列FPGA芯片,能提供8000个左右的逻辑块资源和多达400Kb左右的ROM和RAM存储空间。由于FPGA芯片具有可反复更改的特性,因此有助于硬件系统的改进和不断升级。另外,通过对通信接口进行重构,例如将UART改为CAN总线控制器,可以使系统能与更多的硬件环境兼容。

数据集中器的硬件结构

  图2 数据集中器的硬件结构

  由于在FPGA芯片上构造电平转换电路和以太网物理层、MAC层电路较困难,本文将这些功能放到了FPGA芯片的外面,并分别使用MAX485和LAN91C111芯片来实现电平转换和以太网硬件接口功能。FPGA芯片内的UART模块和MAX485芯片共同完成与电表的数据通信任务,前者负责接收和发送数据,后者完成信号电平的转换。SMSC公司的LAN91C111是为了方便嵌入式应用系统连接到快速以太网而专门设计的,它实现了CSMA/CD协议的物理层和媒体访问控制层(MAC)两个部分,并可以很方便地与许多嵌入式处理器进行数据交换。

  软件设计

  数据通讯协议

  抄表系统中有两个地方存在通讯协议的问题,其中一个在数据集中器与各个电表之间。目前,国内各厂家生产的电表绝大部分具有国家颁布的“多功能电能表通信规约”所规定的抄表协议,因此只要数据集中器中的电表通信模另外一个必须考虑通讯协议的地方是数据集中器和电力抄表中心之间。目前,国家还没有制定正式的标准,各个厂家采用的协议也各不相同。这造成了系统之间基本上不存在互操作性和互连性,从而阻碍了行业的进一步发展。

  本文提出了以标准公开的HTTP协议作为应用层通讯的基础,不但能解决系统之间的兼容性问题,而且还将因特网上广泛使用的Web技术引入到远程抄表系统中,为其带来了许多便利。例如,只要能连接到因特网,就可以完成抄表工作,摆脱了时间、地点的约束。另外,用户抄表使用的终端程序是所有计算机平台上都带有的Web浏览器,这意味着用户无需花费一分钱额外投资,就可以得到一个图形用户界面。在HTTP的底层使用了TCP/IP协议来保证数据在因特网上的可靠传输。用户对电表的操作命令以及相关参数将被作为HTML表单数据以HTTPPOST方法传送给数据集中器上的嵌入式Web服务器,而操作的结果和数据则是以HTML表格的形式返回。

  数据集中器的软件设计

  数据集中器在抄表系统中起着关键的作用,它一方面要通过因特网与抄表中心进行通信,另一方面要采集来自各个电表的用电数据。为了降低开发难度,提高可维护性,系统使用C语言作为开发语言,并利用了GNU的开发工具,包括gcc 、gdb等。另外,将系统功能分解为五个相互协作的任务,采用uc/os-II作为实时操作系统,实现任务调度和任务间通信。这五个任务分别是:

  (1)网络通信接口:负责在因特网上收发数据。本文采用Altera公司提供的专门针对嵌入式系统应用的精简TCP/IP协议栈作为底层通信协议。数据发送功能是通过调用TCP/IP传输层服务函数nr_ pLugs_send ()实现的,而数据接收功能则是由一个在创建通信套接字时被注册的回调函数实现的。当传输层收到一个有效应用层数据时,该函数被调用,应用层数据的指针被当作实参传入,随后回调函数把数据指针以消息的形式发送给HTTP引擎。

  (2)HTTP引擎:负责以HTTPPOST协议接收和发送数据,将所析取出的抄表命令和数据参数交给控制模块;根据控制模块传回的数据和从虚拟文件系统中读取的HTML文件模板,动态构造一个完整的HTML文件,发送给请求方。

  (3)虚拟文件系统:负责在ROM或者外部Flash存储器上实现一个小型的只读文件系统,用以存放各种静态Web页面和动态构造Web页面所需要的页面模板。它靠维护一个文件索引表来实现文件的读取,其结构如图3所示。

虚拟文件系统索引表

?

  图3 虚拟文件系统索引表

  (4)控制模块:负责安全性检查、命令和数据参数格式转换。由于因特网是一个公共网络,在其上传输的控制命令和数据有可能被截获、篡改和重发,因此需要进行安全性检查。主要采用数据加密和随机数验证两种方法。

  (5)电表通信:负责与指定电表进行通信,从而读取用电数据,以及完成各种控制操作,其功能相当于分层网络模型中的数据链路层。数据的接收和发送是通过nr_uart_rxchar()和nr_uart_Txchar()两个函数实现的。


?? ?? ??


打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮

1.扫描左侧二维码
2.点击右上角的分享按钮
3.选择分享给朋友
?? ??

Web? FPGA? 远程抄表?

相关文章

我来评论
美国的游客
美国的游客 ??? (您将以游客身份发表,请登录 | 注册)
?
有问题请反馈