MATLAB实现的无线传感器网络WSN的时间同步TPSN算法及改进(附报告+代码)]
MATLAB的TPSN时间同步算法
。
初始化时,我们规定时钟偏移为32e6,即两个节点时间相差1秒。设置合适的固定时延、时钟频偏、时钟偏移。对于节点间信息传输时的随机时延部分,我们采用指数分布随机数生成函数Exprnd,生成一个随机数表示随机时延。并设置我们要获取的样本个数和同一个节点两轮发射同步信息的时间差。为了计算两个节点间的同步时间数据,我们设置4个时间戳,分为为原始时间戳T1(节点S发送的时间),接受时间戳T2(节点R接受到的时间),传送时间戳T3(节点R送出应答的时间),节点S接收到响应报文时的时间戳T4。利用linspace函数,初始化一个4行线性的矢量[0,0,0,0],代表4个临时时间戳。并计算10个样本对应的每个样本的4个临时时间戳值,再利用10个样本中的临时时间戳计算出真实的时间戳。利用计算的真实时间戳得到对应的数据点,并进行曲线拟合。利用拟合的曲线方程估算实验中的时间频率偏移,与实验初始规定的时钟频率偏移值作比较。
新的改变
从仿真实验结果可以看出,随着样本总数的增大,经典TPSN算法在实验中的时间偏差也不断增大,可以看出经典TPSN算法的误差在不停累积。而本文参考了《基于 TPSN 的时间同步改进算法》,进行了仿真实验中时间偏差的计算公式,时间同步误差得到明显的减小。改进的TPSN算法基于原有的同步机制,对同步后的同步信息建立新的数学模型来提高同步精度。这种方法能够在原有同步数据下,进一步提高同步精度.
```matlab
附录
利用MATLAB实现的TPSN算法仿真实验源代码:
%以下参数考虑时钟晶振为32MHz
FixedDelay=2; %固定时延
%假设两节点时间相差1s
ClockOffset=32e6; %时钟偏移相差1s
ClockSkew=1.0007; %时钟频偏
ExpDelayPar=2; %指数分布的参数
ObservationNum=10; %取得的样本的个数
%zigBee 的比特速率为250kbit/s,故假设同步数据包的长度为 250bit,故发一个同步包的时间为这里假设每隔 10ms 发一个同步时间包
ConstDelay=320000; %同一个节点两轮发射同步信息的时间差
%计算临时时间戳,exprnd()生成一个随机数,用来表示随机时延部分
TimeStampsTmp=linspace(0,0,4) %设置TimeStampsTmp =[0,0,0,0]
pause
for i=2:ObservationNum+1
.........完整代码评论区