论文部分内容阅读
高精度的时钟同步是分布式运动控制系统中的一项关键技术,目前IEEE1588、NTP(Network Time Protocol)、GPS(Global Positioning System)等多种同步方法均在分布式系统时钟同步领域有所应用。IEEE1588精确时钟同步协议按照实现方式的不同可以分为两类:纯软件的实现方式和带硬件辅助的实现方式。二者的同步精度、成本不尽相同,用户要根据自己的应用场景合理选择。本文分析了IEEE1588-2008的基本原理,分别实现了纯软件/带硬件辅助的IEEE1588时钟同步,并给出了相应的测试结果,对测试结果进行了分析。纯软件实现方面利用了开源的PTPd V2,以Linux为系统支撑,实现了IEEE1588软时钟同步。得到了微秒级的时钟同步结果,并对纯软件实现中可能影响同步精度的因素进行了分析,指明了操作系统实时性能对软时钟同步精度的影响。在此基础上探讨了提高嵌入式Linux实时性能的方法,采用双内核模式搭建了Linux/Xenomai硬实时环境,利用Xenomai自带的测试程序以及笔者设计的测试程序验证了Xenomai的实时性能。在Linux/Xenomai的基础上编译实现了RTnet,构造了Xenomai/RTnet硬实时环境,测试了RTnet的实时性能。带硬件辅助的实现方面选用STMicroelectronics公司的STM32F107VC MCU,利用其硬件本身对IEEE1588PTP的支持,实现了带硬时间戳的时钟同步。PTP硬件单元负责给PTP事件报文打时间戳,LwIP为上层应用程序提供UDP/IP支持,PTPd v2程序则实现IEEE1588精确时间同步功能。得益于STM32F107硬件上对IEEE1588PTP的支持,得到了±260ns的时钟同步精度。