收藏 分销(赏)

一种VxWorks下多设备时间同步方法_王子衢.pdf

上传人:自信****多点 文档编号:599381 上传时间:2024-01-11 格式:PDF 页数:3 大小:1.81MB
下载 相关 举报
一种VxWorks下多设备时间同步方法_王子衢.pdf_第1页
第1页 / 共3页
一种VxWorks下多设备时间同步方法_王子衢.pdf_第2页
第2页 / 共3页
一种VxWorks下多设备时间同步方法_王子衢.pdf_第3页
第3页 / 共3页
亲,该文档总共3页,全部预览完了,如果喜欢就下载吧!
资源描述

1、2023.6电脑编程技巧与维护1概述嵌入式软件是针对特定应用领域,基于某一固定的硬件平台,用来达到用户预期目标的计算机软件。嵌入式软件要求更高的时间准确性、安全性和稳定性,被广泛应用于工业生产。其中,VxWorks操作系统在嵌入式软件领域应用较为广泛,是一种嵌入式实时操作系统,并且是嵌入式开发环境的关键组成部分。以其良好的持续发展能力、高性能的内核及友好的用户开发环境,在嵌入式实时操作系统领域占据一席之地,并且被广泛地应用于通信、航空、航天等高精尖技术及实时性要求极高的领域中。在实际使用过程中,存在多设备运行的情况,因不同设备本身定时器之间会存在差异,设备间的时间差会随着时间推移逐渐增大,影响

2、多设备的协同使用。为了多设备之间协同使用能有一个良好的效果,需要保证各设备间的时间同步性。基于NTP的时间同步是一种时间同步网络技术,NTP利用冗余服务器端和多条网络路径提高获得时间的准确性和可靠性。NTP以服务器/客户端模式进行通信,设备节点通过带有时间戳的数据包进行自身时钟与校准时钟的同步。在此介绍一种基于NTP时间同步原理的时间同步方法,将一个设备作为授时节点,其他设备作为接收节点,接收节点通过组播向授时节点进行NTP请求,获取两者时间差,进行时间修正,达到时间同步的效果。2流程介绍基于NTP时间同步原理,将主节点设备作为网络服务器,各子节点设备作为网络客户端,各子节点设备周期设置t1时

3、间,通过组播地址1发送NTP请求命令,服务器通过组播地址1接收各子节点设备的NTP请求命令,并设置t2及t3时间发送至组播地址2中,各子节点设备在组播地址2监听服务器发送的时间设置信息,并根据接收内容中的互联网协议(IP)地址获取本节点设备对应的时间设置信息,设置t4时间后即可计算出与主节点设备的时间差,进而对本地时间进行修正,达到各节点设备时间同步的效果。具体流程如图1所示。首先设置NTP信息传输结构体实例,包含了进行时间校准所需的t1、t2、t3、t4时间及区分各子节点设备的存放IP地址的数组。模块结构体内容如图2所示。作者简介:王子衢(1991),男,硕士,研究方向为图形显示控制软件及实

4、现;安效峰(1982),男,硕士,研究方向为图形显示控制软件及实现。一种 VxWorks 下多设备时间同步方法王子衢,安效峰(中国船舶集团有限公司第七一五研究所,杭州310023)摘要:为了确保多个设备间的时间同步性,保证系统实时性的要求,介绍了一种 VxWorks 操作系统下的多设备时间同步方法。基于网络时间协议(NTP)时间同步原理,将一个设备作为授时节点,其他设备作为接收节点。接收节点通过组播向授时节点进行 NTP 时间同步请求,获取两个设备的时间差,进行时间修正,达到时间同步的效果。同时通过实例直观地展示了这一方法,证明该方法的可行性,可保证多设备间的时间同步,满足系统实时性要求。关键

5、词:VxWorks 操作系统;多设备;时间同步;实时性;网络时间协议图1NTP时间同步流程图2模块结构体内容设 置t2、t3时间设 置t2、t3时间设置t1时间设置t4时间计算节点时间差设置t1时间设置t4时间计算节点时间差主节点定时器时间设置时间设置组播1组播2NTP请求时间校准定时器节点1定时器节点N修正时间差NTP请求时间校准修正时间差BYTElivnMode;BYTEstratum;BYTEpoll;BYTEprecision;intt1;intt2;intt3;intt4;charipaddr_client 20;inttype;typedef struct NtpHeader62D

6、OI:10.16184/prg.2023.06.0092023.6电脑编程技巧与维护在主节点设备程序中启动服务器设置,建立用于监听组播地址1上消息的连接及用于往组播地址2上发送消息的连接。在各子节点设备程序中启动客户端设置,建立用于向组播地址1中发送NTP请求的连接及在组播地址2上监听主节点设备返回消息的连接。建立完连接后,各子节点设备周期向主节点设备发送NTP请求命令,即对上文中的NTP信息传输结构体进行赋值,将t1时间及本节点设备IP地址信息填入后发送至组播地址1,主节点设备在组播地址1中接收到该消息后,对该结构体内的t2及t3时间进行赋值,其他变量保持不变,发送至组播地址2上。各节点设备

7、在组播地址2上监听客户端的返回消息,收到消息后对该结构体内的IP地址进行判断,如果与本节点设备的IP地址一致,则进行处理;如果不一致,则进行丢弃。当子节点设备收到对应的主节点设备返回的时间设置消息后,对该结构体内的t4时间进行设置,同时获取两个节点设备间的时间差为(t2-t1)+(t3-t4)/2,将该差值与该节点设备的本地时间相加,即可获得与主节点设备一致的时间信息,其他节点设备的操作流程类似。3示范例程基于第2节的流程介绍,在此将进行实例化演示,进行一个主节点设备与两个子节点设备的时间同步操作。首 先 在 主 节 点 设 备 程 序 中 设 置 自 身IP地 址 为192.168.0.10

8、,然后建立与用于监听子节点设备NTP请求消息的组播地址224.112.1.1的连接,先执行socket函数创建套接字,对sockaddr_in结构体的sin_family、sin_port、sin_addr.s_addr参数进行赋值,再进行bind绑定,通过setsockopt函数进行本地回环许可,设置结构体ip_mreq的imr_interface.s_addr及imr_multiaddr.s_addr参数值,再次调用setsockopt函数加入组播地址,最后启动任务进行监听。对应需建立与用于发送时间设置消息的组播地址224.112.1.2的连接,先执行socket函数创 建 套 接 字,对

9、sockaddr_in结 构 体 的sin_family、sin_port、sin_addr.s_addr参数进行赋值,再执行bind函数,设 置 结 构 体ip_mreq的imr_interface.s_addr及imr_multiaddr.s_addr参数值,通过setsockopt函数加入发送的组播后即可在需要的位置执行发送操作。对于两个子节点设备,分别设置自身IP地址为192.168.0.11和192.168.0.12,与主节点设备镜像设置的两个组播地址建立连接。即先建立与用于接收主节点设备时间设置消息的组播地址224.112.1.2的连接,先执行socket函数 创建套接字,对soc

10、kaddr_in结构体的sin_family、sin_port、sin_addr.s_addr参数进行赋值,再进行bind绑定,通过setsockopt函数进行本地回环许可,设置结构体ip_mreq的imr_interface.s_addr及imr_multi-addr.s_addr参数值,再次调用setsockopt函数加入组播地址,最后启动任务进行监听。对应建立与用于发送NTP请求消息的组播地址224.112.1.1的连接,先执行socket函数创建套接字,对sockaddr_in结构体的sin_family、sin_port、sin_addr.s_addr参数进行赋值,再进行bind绑定

11、,设 置 结 构 体ip_mreq的imr_interface.s_addr及imr_multiaddr.s_addr参数值,通过setsockopt函数加入发送的组播后即可在需要的位置执行发送操作。在子节点1设备程序中启动一个任务,根据需求周期向主节点设备进行NTP请求,本例周期间隔设置为1s,在VxWorks操作系统下,通过sysClkRateSet(100)函数设置时间定时器为每秒运行100次,即每次定时器次数增加间隔为10 ms,再通过tickGet()函数获取当前设备运行的定时器次数,即可得到设备开机后的运行时间,赋值到NTP信息传输结构体对应的变量t1,再将自身的IP地址赋值到ip

12、addr_client数组中,最后发送至组播地址224.112.1.1上。服务器在组播地址224.112.1.1中监听到客户端发送的NTP请求后,复制接收到的NTP信息传输结构体,通过之前同样的方式获取当前主节点设备运行的时间并将t2及t3变量进行赋值并发送 至 组 播 地 址224.112.1.2上。客 户 端 在 组 播 地 址224.112.1.2中监听服务器发送的时间设置信息,收到消息后通过strcmp函数对ipaddr_client数组中的IP地址与自身IP地址进行对比,如果一致,则进入处理,获取当前设备运行的时间,赋值进NTP信息传输结构体对应变量t4中,计算出时间差为(t2-t1

13、)+(t3-t4)/2,将该时间差与当前设备运行时间相加即可获得与主节点设备一致的时间信息。子节点2设备的操作与子节点1设备的操作一致。最后在主节点设备及子节点设备程序中分别再创建一个任务,用于周期1 s输出该设备当前的时间信息值,验证时间同步方法的有效性。一个主节点设备与两个子节点设备时间同步运行的效果如图3图5所示。通过232串口将调试计算机与3个设备进行连接,通过超级终端软件分别输出3个设备当前运行的时间信息值,图3为主节点时间信息输出内容;图4为子节点1时间信息打印的输出内容;图5为子节点2时间信息输出内容,3个设备输出的时间信息保持一致,证明3个设备内部已实现时间同步性。632023

14、.6电脑编程技巧与维护4结语基于保证多设备间的时间同步性,减少因时间误差导致对系统的影响。介绍了一种运行在VxWoks嵌入式实时操作系统下的多设备时间同步的开发方法,通过NTP时间同步原理,利用两个组播地址将主节点设备与子节点设备进行连接,通过双向的数据交互,进行NTP时间同步,通过计算两个设备时间差,实现时间同步;设计一个主节点设备与两个子节点设备进行时间同步的实例,主节点设备和两个子节点设备与两个组播地址分别建立连接,两个子节点设备周期对NTP信息传输结构体中对应内容进行赋值并发送至主节点设备,主节点设备监听到子节点设备的请求后,更新结构体数据内容再发送至子节点设备,子节点设备计算获得两个

15、设备的时间差,进行时间同步;将3个设备的时间信息分别进行输出,直观地展示了3个设备时间信息的一致性,验证了时间同步开发方法的可行性。基于该开发方法,可将项目中的多个设备划分为一个主节点与多个子节点,由一个主节点设备通过NTP时间同步机制,对所有子节点设备进行时间同步,确保系统中的所有设备运行在一个误差较小的时间范围内,保证设备运行过程中的时间有效性。参考文献1林建民.嵌入式操作系统技术发展趋势J.计算机工程,2001(10):1-4.2陈华强,张盼华.典型实时嵌入式操作系统应用分析J.电子测试,2018(23):22-23.3王维兴.基于VxWorks加固计算机智能测试软件设计与实现J.电脑编

16、程技巧与维护,2011(2):95-97.4王震,满令伍,张道伟.基于NTP的轻量化时间同步设计J.指挥信息系统与技术,2022,13(2):91-94.5袁小迪,宋文霞,张越.基于NTP的停车场时间同步系统研究与设计J.计量科学与技术,2021,65(5):96-100.6张宇,刘俏君,付欣艳,等.网络时间服务器的NTP同步偏差性能评估J.计量与测试技术,2021,48(7):22-24.7李贞妮,张军,罗喜伶,等.基于VxWorks的NTP服务器的设计与实现J.计算机工程与设计,2006(23):4404-4407.图3主节点时间信息输出内容图4子节点1时间信息输出内容图5子节点2时间信息输出内容64

展开阅读全文
相似文档                                   自信AI助手自信AI助手
猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 学术论文 > 论文指导/设计

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服