微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 硬件工程师文库 > 以太网网关节点在节能计量系统中的设计

以太网网关节点在节能计量系统中的设计

时间:03-28 来源:博控自动化技术公司供稿 点击:

  作者:北京博控自动化技术有限公司技术总监 刘楷
  背 景

  能耗监测系统:指通过对建筑和大型公共建筑安装分类和分项能耗计量装置,采用远程传输等手段及时采集能耗数据,实现重点建筑能耗的在线监测和动态分析功能的硬件系统和软件系统的统称。

  能耗监控的技术核心在于能耗优化,而优化的前提是准确的能耗计量以及优化过程中能耗的计量。这样由传统意义上的"抄表"这样简单的数据集中演变成了"在线数据汇总与控制",这就对网络提出了更高的要求。

  首先,要求网络双向速度。其次,要求灵活的网络架构。第三要求网络能容纳足够的节点。

  下图就是一个典型的网络示意图:

  

  对于每个建筑或者相对独立的WPAN内部可以使用无线、PLC或者以太网和无线混合组网方式。WPAN内部的结构如下图所示:

  

  图中采集节点随着能耗采集和控制方式演变也有多种形式,从最开始的公共建筑和厂矿中的三项电表,到如下图所示家用、办公室用的采集插座和无线灯控,越来越多。

  

  

  整个系统中计量的核心在于具有数据汇聚和处理功能,并且保证PAN和WAN连接的网关节点。

  下面我们就重点讨论网关的设计。

  设 计

  网关节点的内部结构如下:

  

  这部分内容从函数的级别详细解释了代码。我们将分别解释PAN Co-ordinator和End Device的代码。

  config.h头文件将被引用到两个源代码文件中,同时两个源代码文件也引用了以下的头文件:

  jendefs.h, AppHardwareApi.h, AppQueueApi.h, mac_sap.h, mac_pib.h

  coordinator.c的内容

  开发者最常问的问题之一就是为什么Jennic的程序都没有Main函数,这个熟悉的函数哪里去了呢?这是因为Jennic程序都由boot loader来启动和引导,boot loader引导完成后就将自动的调用AppColdStart函数,您可以认为AppColdStart就是我们通常所说的Main()。

  AppColdStart将进行下面的操作:

  1.AppColdStart将调用函数vInitSystem(),这一函数将完成以下任务:

  初始化设备的IEEE 802.15.4的协议栈

  设置PAN ID和PAN Co-ordinator的短地址,在这个应用中这些参数都由我们预定义在config.h这个文件中

  打开射频接收器

  使Co-ordinator可以接受其他的设备加入网络

  2.AppColdStart()会调用vStartEnergyScan(),这一函数将会开始在各个通道进行能量扫描以获得各个通道的能量级别。所扫描的通道以及速率都定义在config.h中。扫描将通过初始化一个MLME请求并将其发送给IEEE 802.15.4的MAC层来实现。

  3.AppColdStart()将通过调用vProcessEventQueues()的方式等待MLME的回应。vProcessEventQueues()函数将检查三个不同类型的事件队列并将接到的事件交给不同的事件处理函数处理。比如这个函数将调用vProcessIncomingMlme()函数来处理MLME回应。 而这个函数将调用vHandleEnergyScanResponse()来处理能量检测扫描的回应结果。这个函数将检查所有通道的能量级别,并挑选一个最安静的通道作为建立网络的通道。接下来将调用vStartCoordinator()函数,这个函数将设置必要的参数并且递交MLME请求来启动网络,启动网络的请求不需要处理任何的回复信息。

  4.AppColdStart()循环调用vProcessEventQueues()来等待其他设备的加入网络的请求,入网请求将以MLME请求的方式发送到codinator.当请求到达的时候函数将调用vHandleNodeAssociaTIon来处理。接下来codinator将创建并发送入网请求回复。

  5.AppColdStart将循环调用vProcessEventQueues来处理来自于MCPS的消息队列和来自于硬件的消息队列。

  当数据到达MCPS队列后,vProcessEventQueues首先调用函数vProcessIncomingMcps()来接收到达的数据帧.vProcessIncomingMcps()调用vHandleMcpsDataInd(),这个函数将调用vProcessReceivedDataPacket,在这个函数里面您可以自定义您自己的数据处理过程。

  当硬件事件到达硬件队列后,vProcessEventQueues将调用函数vProcessIncomingHwEvent来接收到来的事件。您需要在这个函数中自定义自己的事件处理过程。

  您可以参考下面的示意图来理解

  

  图4-4-9 Coordinator程序流程图

  enddevice.c的内容介绍

  End Device的运行过程仍然是从AppColdStart开始。这一函数和Co-ordinator的运行方式完全的不同,下面将详细的讲解这个过程。

  1.AppColdStart调用vInitSystem,这个函数将初始化IEEE 802.15.4的协议栈

2.AppColdStart()调用vStartAcTIveScan()开始对于活动通道的扫描, End Device将向扫描的通

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top