作者:北京博控主动化技能有限公司技能总监 刘楷
背 景
能耗监测体系:指经过对修建和大型公共修建安装分类和分项能耗计量设备,选用长途传输等手法及时收集能耗数据,完结要点修建能耗的在线监测和动态剖析功用的硬件体系和软件体系的总称。
能耗监控的技能中心在于能耗优化,而优化的条件是精确的能耗计量以及优化进程中能耗的计量。这样由传统意义上的“抄表”这样简略的数据会集演化成了“在线数据汇总与操控”,这就对网络提出了更高的要求。
首要,要求网络双向速度。其次,要求灵敏的网络架构。第三要求网络能包容满足的节点。
下图便是一个典型的网络示意图:
关于每个修建或许相对独立的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将向扫描的通道发送信标恳求,并接纳PAN Co-ordinator的信标恳求回应。需求扫描的通道和速率将在config.h中界说。扫描恳求的初始化和发送的作业能够经过MLME恳求的方法经过IEEE 802.15.4的MAC层发送。
3.AppColdStart()将经过vProcessEventQueues来查看和处理MLME回应。这个函数将调用vProcessIncomingMlme()来处理收到的MLME回应。vHandleAcTIveScanResponse()会被调用处理回来的活动通道扫描成果:
假如找到PAN Co-ordinator,函数将保存相应的Co-ordinator信息(比方 PAN ID,短地址,逻辑通道),而且调用vStartAssociate()向Co-ordinator来提交入网恳求,这一恳求将经过MLME恳求的方法提交。
假如PAN Co-ordinator没有被找到(可能是由于Co-ordinator还没有初始化完结)。这一函数将从头调用vStartAcTIveScan()来从头发动扫描。
4. AppColdStart将循环的调用vProcessEventQueues()等候来自Co-ordinator的入网回复。当收到回复后就将调用vProcessIncomingMlme(),然后将调用vHandleAssociateResponse来处理回复,接下来的函数将查看回复的状况:
假如PAN Co-ordinator承受的入网恳求,将设备置于联网状况。
假如PAN Co-ordinator拒绝了入网的恳求,函数就将从头调用vStartActiveScan()来开端查找别的一个PAN Co-ordinator。
5. AppColdStart()接下来将循环的调用vProcessEventQueues来等候来自于PAN Co-ordinator的MCPS信息或许硬件的行列信息。
当数据抵达了MCPS行列,vProcessEventQueue()首要运用函数vProcessIncomingMcps()来接纳数据帧,接着调用vHandleMcpsDataInd(),接着调用vProcessReceivedDataPacket(),开发人员能够在这个函数里边编写自己的数据处理进程。
当硬件事情抵达硬件事情行列,vProcessEventQueues()将调用vProcessIncomingHwEvent()来接纳抵达的事情,您能够在这个进程中编写自己的事情处理逻辑。
下面的图表明了End Device的作业进程。
图4-4-10 EndDevice程序流程
W5500驱动:
Coordinator作为网络的中心,一般也是数据会聚的中心。由于咱们在Coor的代码中参加W5500的操作。
硬件衔接上W5500作为SPI Slave作业,运用IO管脚如下:
在体系的初始化vInitSystem()中参加W5500的初始化,
// 初始化和W5500衔接的SPI
vAHI_SpiConfigure(1, E_AHI_SPIM_MSB_FIRST, E_AHI_SPIM_TXPOS_EDGE,
E_AHI_SPIM_RXPOS_EDGE, 1, E_AHI_SPIM_INT_DISABLE,
E_AHI_SPIM_AUTOSLAVE_DSABL);
运用Eclipse IDE环境,在工程文件中增加W5500的驱动:
图4-4-11 Eclipse IDE
在工程导航栏能够看到:
图4-4-12 工程导航
然后,把wizchip_conf.c中的接口代码替换为JN5168的SPI函数:
void wizchip_cs_select(void)
{
/* select slave 1*/
vAHI_SpiSelect(E_AHI_SPIM_SLAVE_ENBLE_1);
};
void wizchip_cs_deselect(void)
{
vAHI_SpiStop();
};
uint8_t wizchip_spi_readbyte(void)
{
u8AHI_SpiReadTransfer8();
return 0;
};
void wizchip_spi_writebyte(uint8_t wb)
{
vAHI_SpiStartTransfer8(wb);
};
这样就完结了代码,咱们能够看到无线IEEE802.15.4和以太网W5500的数据转接。
结 论
在运用W5500后咱们极大的简化了WPAN网关规划,这样确保了通讯速率和牢靠性的要求下,用简略的结构诠释了“简略便是牢靠”的道理。
——本文选自本站网4月《物联网技能特刊》透视新规划栏目,转载请注明出处,违者必究!