如何在matlab 单片机中调用单片机的无线模块

将映射关系一常数列表写进去嘫后用查表发将点映射出去,,能发我一份matlab 单片机程序看看吗

这阵子没怎么上网,程序已发

该楼层疑似违规已被系统折叠 

想紦单片机测到的数据在matlab 单片机里面画成一个坐标图感激不尽。。vb也行。


一、Leach协议与NS的关系

三、簇头建立算法流程图

五、 算法运行结果分析

一、Leach协议与NS的关系

  为了实现leach 协议对ns进行扩展。在ns中增加了一个事件驱动模拟器支持模拟无线传感器网絡协议这些扩展包括MAC协议,用于计算和交互的能量分配模型和leach协议的体系结构

是用于Nodes交互的连接器,  Agent用来实现不同网络协议,是支持分組产生和丢弃的节点Applications用来产生数据和实现不同的应用函数。一旦网络拓扑结构建立起来后模拟通过启动节点上的Applications运行。

文件然后将packets發至Connector。Connector将数据包传送给用于数据链路处理的链路层(LL).经过一小段时间的延迟后数据包由LL发送给Queue缓冲队列。如果是还没有传送过的数据包Queue將以队列进行存储。然后Queue将数据包出队列发送到MAC层。然后开始运行MAC(媒体访问控制)协议最终,packets被发送到网络接口层(Network

发送过程可参考洳下图1

  接收过程与发送过程传输的路径相反

Leach协议跨越几个层次实现的协议,Leachapp应用在最高层Application它是自适应分簇拓扑算法。周期执行每轮循环分为簇头的建立阶段和稳定的数据通信阶段。

(1)簇头建立阶段:初始阶段每个节点从0和1中随机产生一个数,如果这个数小于阀值T(n)该节点就成为当前轮的簇头。

   其中P是期望的簇头数在所有节点中占的百分比,r是选举轮数r mod (1/p)代表这一轮循环中当选过簇头的节点個数,G是这一轮循环中未当选过簇头的节点集合

   每个节点自主选择是否成为当前轮的簇头并通过广播的形式报告给其他节点。簇头通过CSMA MAC協议进行广播所有的簇头以相同的传输能量进行广播。

   簇头建立起来之后每个非簇头节点要决定在当前轮中自己属于哪个簇头。非簇頭节点根据收到的广播信号强度决定加入哪个簇头非簇头节点决定了自己属于哪个簇头后,必须通知簇头节点它是该簇的成员非簇头節点同样通过CSMA MAC协议将自己加入该簇的信息报告给簇头节点。

簇头节点收到所有的非簇头节点加入的信息后基于本簇内加入的节点数目创建TDMA调度,通知每个节点什么时间可以传输数据

一个簇内的信息传输会影响相邻簇。为了减少这种信号干扰各个簇内的信息交互通过不哃的CDMA编码。簇头可以决定本簇中节点所用的CDMA编码这个用于当前阶段的CDMA编码在广播簇头的时候发送给簇内节点。具体在advertiseClusterHead()中实现

当簇内节點收到这个消息后,它们会在各自的时间槽内发送数据簇头节点收到所有的数据后执行信号处理函数压缩数据为一个信号,并将这个合荿的信号发给基站

三、簇头建立算法流程图

     Leach协议中不同簇内用不同的CDMA编码,同一个簇内采用同一个CDMA编码进行数据传输如果以各个簇头為结点,建立完全图为了使各个簇采用不同的编码,利用PCA边着色

     所谓PCA边着色问题,指在完全图中给节点的每条邻接边分配不同的码烸个节点用一个码在其邻接边(即链路)上进行发送或接收数据。

如果记PCA需要的最大可用码数为:#(PCA)

例如:在图2中节点的最大度数為6,故⊿为6

在leach协议中假定期望的簇头数为n, 再加上汇聚节点所以,节点的最大度数⊿为(n+1)因此,

在leachApp.cc程序中簇头建立后,簇头決定本簇内的CDMA编码这是在广播簇头时确定的,即advertiseClusterHead()函数中

 //普通节点个数可任意设置,此处设为10

  myADVnum()是在MAC层中计算求得启动运行后,计算每個簇头的邻近簇头发来的ADV

    由于各个簇头形成和建立起来的时间不同,而簇头建立起来后需要广播ADV, 通知其他节点加入簇头广播的ADV会被网絡中的所有节点接收到,即簇头和普通节点都能收到先建立起来的簇头发来的ADV普通节点收到簇头发来的通知包后都会将该数据包加入自巳的一个接收队列。对后来建立起来的簇头来说一旦自己成为簇头,就会删除其他簇头发来的广播包;对没有成为簇头的普通节点来说需要出接收的簇头队列中选出一个距离最近的簇头加入,然后删除接收队列中的广播包

五、 算法运行结果分析

用ns模拟每个节点向基站傳输数据

输出得到TCL文件。在ns环境下运行该TCL文件得到trace文件。

trace的功能是详细记录模拟的过程可以根据用户的需要记录模拟过程中的任何一個细节。所有对模拟的分析是基于trace文件截取一部分文件代码如下:

在文件分析中主要用到t,  Ni,  Ne这几个数据。其中t 后面的数字代表时间,Ni后媔的数字代表节点IDNe后面的数字代表节点能量

去掉所有以N开头的行数,该行为统计数据得到文件trace1.tr

  • 单个节点能量变化统计:

以节点1为例,提取所有Ni等于1的节点的时间和相应能量,存入文件1.txt.

在gawk环境中输入代码如下:

得到的能量变化图如下图所示:

(2) 工作节点能量统计:

得到 文件3.txt嘚统计数据如下:

全网间隔时间为0.5秒工作节点能量变化图:

3.全网所有节点能量和变化统计

在gawk环境下输入:

将以下程序写入文件1.awk

   再不断地將每个时间间隔为0.5秒的数据写入文件5.txt(只需在文件5.txt 中不断追加统计数据)。最后可以得到0到4.5秒之间全网在每0.5秒的时间间隔内的总能量

在gnuplot環境下,输入命令:

最后得到的全网能量变化情况如下图所示:

4. 生成的簇头和簇内节点统计

设置普通节点个数50AP节点1个,仿真时间10秒普通节点位置随机产生。生成TCL文件运行该TCL文件将结果输出到2.tr文件中。

[4] NS与网络模拟(徐雷鸣庞博,赵耀编著人民邮电出版社)全部資料51hei下载地址:

我要回帖

更多关于 matlab 单片机 的文章

 

随机推荐