0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

英创信息技术IEEE1588协议驱动分布式系统高精度同步触发简介

英创信息技术 来源:英创信息技术 作者:英创信息技术 2020-02-12 10:35 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

IEEE1588是精确网络对时协议,简称PTP。它通过硬件实现的时间标签(hardware time stamp),使对时精度达到亚微秒级(< 1us),大大高于常规的网络对时协议(NTP)。PTP协议的另一个特色是它可输出精确时间同步的硬件脉冲,通常称为PPS脉冲。在网络化的嵌入式系统中,利用PTP的硬件PPS脉冲,可对处于不同位置的多台设备实现同步触发的功能。这对分布式系统的数据采集、实时控制都具有非常的意义。

英创公司的多款嵌入式主板,ESM7000、ESM6802和ESM6800,其网络接口均支持PTP协议,且可输出PPS脉冲,因此是分布式智能设备的理想嵌入式平台。以下将以ESM7000为例,介绍实现分布式同步触发的软硬件方案。

基于PTP的同步触发软件流程

ESM7000预装的Linux平台文件系统中,已包含了PTP对时及硬件时间同步的完整工具,即ptp4l和phc2sys,同时可方便的控制PPS脉冲的使能。在这个基础上,按照图1所示流程就可实现同步触发的功能。

图1同步触发软件流程

在实际的测试中发现,PTP的对时精度与网络环境有密切关系。在单一的100M网络环境所获得的设备间的同步精度在±200ns;而在1000M网环境,同步精度就下降到±1us;混合网络环境,同步精度可差至±15us。

同步触发脉冲的硬件方案

所谓硬件方案,是指图1中触发脉冲生成器的实现方案。以PTP协议生成的周期性PPS脉冲为基础,由应用程序生成触发使能信号,再通过一个简单的D触发器生成最后的触发脉冲。硬件方案涉及3个信号如下:

●PPS_OUT:整秒脉冲输出,即周期固定为1秒,在ESM7000上,PPS的脉冲宽度为10ns,上升沿有效。

●TRG_EN:触发使能,通常用一位GPIO来实现,其高电平有效。

●TRG_PULSE:触发脉冲,上升沿有效;在TRG_EN为低时,将强制TRG_PULSE为低;当TRG_EN为高时,后续的PPS_OUT脉冲上升沿将锁存高电平,从而是TRG_PULSE变高电平。TRG_PULSE脉冲上升沿将将作为系统采集控制硬件单元的触发输入,触发各个嵌入式设备同步动作。

图2同步触发脉冲生成电路原理

在图2中,TRG_PULSE还可反馈给ESM7000主板,通知同步触发已发生。但不是必须的。

大部分ESMARC主板均可支持PTP同步触发功能。对不同型号的主板,PPS脉冲输出管脚有所不同,如下表所示:

主板型号 PTP网口 PPS信号管脚 备注
ESM7000系列 eth0 CN2.GPIO0
ESM6802系列 eth0 CN2.GPIO24 V2.4版才支持
ESM6800系列 eth1 CN2.GPIO22 不能使用SD
ES6801 eth0 CN1.GPIO0 不能使用CAN1

对选择哪一位GPIO管脚作为TRG_EN,本方案没有限制。可根据设备的具体情况来确定。

对同步触发从设备测试

本测试用从设备的“当前时间+ 偏移量”来代替主设备发布的触发时间TRGTIME,就可用简单的脚本测试整个触发过程,具体的脚本如下:

#!/bin/sh
# trg_en_3 $1 [$2] [$3]
# $1 = 0, off ptp; = 1: on ptp
# $2 = number of seconds to delay from cuurent time
# $3 = ip:port
PATH="/usr/bin:$PATH"
E_NOARGS=85
re='^[0-9]+$'
TRG_EN_GPIO="gpio1"
TRG_EN_DIRECTORY="/sys/class/em_gpio/em_gpio/$TRG_EN_GPIO"
PHC2SYSLOG="/tmp/phc2syslog.txt"
DELAY=10
# if no arg, exit
if [ -z "$1" ]
then
echo "Usage: `basename $0` filename"
exit $E_NOARGS
fi
# if $1 != 1, off ptp and exit
if [ "$1" -ne 1 ]
then
echo 0 > /sys/class/ptp/ptp0/pps_enable
pkill phc2sys
pkill ptp4l
exit 0
fi
# get trigger delay is available, default = 10(s)
if [ $# -ge 2 ]
then
DELAY="$2"
fi
# now we start to make trg_en step by step
echo "step 1: setup gpio1 as trg_en"
if [ ! -d "$TRG_EN_DIRECTORY" ]
then
echo "config $TRG_EN_GPIO as trg_en"
echo 1 > /sys/class/em_gpio/em_gpio/export
fi
echo out > /sys/class/em_gpio/em_gpio/$TRG_EN_GPIO/direction
echo 0 > /sys/class/em_gpio/em_gpio/$TRG_EN_GPIO/value
echo "step 2: start ptp"
phc2sys -s eth0 -c CLOCK_REALTIME -w -m -u 4 > $PHC2SYSLOG &
sleep 1
ptp4l -i eth0 -s &
echo "step 3: wait phc2sys sync convergence"
num_rms=0
while [ "$num_rms" -lt 3 ]
do
RMS_ARRAY=$(cat $PHC2SYSLOG | tail -n 3 | sed -r 's/.*rms[ ]+([0-9]+).*/\1/g')
# echo "$RMS_ARRAY"
for rms in $RMS_ARRAY
do
if ! [[ $rms =~ $re ]]
then
echo "$rms is NOT an integer!"
break
fi
echo "$rms"
if [ "$rms" -lt 350 ]; then
let "num_rms += 1"
fi
done
# clear log file if rms is convergence
if [ "$num_rms" -ge 3 ]; then
echo "rms is convergence ($num_rms)"
cat /dev/null > $PHC2SYSLOG
else
let "num_rms = 0"
sleep 2
fi
done
echo "step 4: enable pps, and setup trigger time"
echo 1 > /sys/class/ptp/ptp0/pps_enable
TRGTIME=$(date +%s) # get current date in seconds
let "TRGTIME = $TRGTIME + $DELAY"
PPSTIME=$(cat /sys/class/pps/pps0/assert | cut -d '.' -f 1)
echo "TRGTIME = $TRGTIME PPSTIME = $PPSTIME"
echo "step 5: wait pps time reach trigger time"
while [ "$PPSTIME" -lt "$TRGTIME" ]
do
sleep 0.1
PPSTIME=$(cat /sys/class/pps/pps0/assert | cut -d '.' -f 1)
done
echo "step 6: now PPSTIME = TRGTIME, set trg_en"
echo 1 > /sys/class/em_gpio/em_gpio/$TRG_EN_GPIO/value
echo "step 7: wait pps time reach trigger time + 1"
let "TRGTIME = $TRGTIME + 1"
while [ "$PPSTIME" -lt "$TRGTIME" ]
do
sleep 0.1
PPSTIME=$(cat /sys/class/pps/pps0/assert | cut -d '.' -f 1)
done
echo "step 8: clear trg_en"
echo 0 > /sys/class/em_gpio/em_gpio/$TRG_EN_GPIO/value
echo "basename $0 done"

示波器可观察到,上述脚本产生的TRG_EN信号,准确使能PPS脉冲产生与之上升沿完全同步的触发脉冲TRG_PULSE。

对分布式系统同步触发功能感兴趣的客户,可通过邮件support@emtronix.com与英创公司技术部门联系,以了解详细的实现代码。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Linux
    +关注

    关注

    88

    文章

    11628

    浏览量

    217950
  • 嵌入式主板
    +关注

    关注

    7

    文章

    6107

    浏览量

    36948
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    在恩智浦i.MX RT1180跨界处理器上如何实现1588协议同步

    简介 在前面的文章中介绍了i.MX RT1180跨界处理器的主要应用场景是在工业自动化与智能制造的高精度测量领域,而这其中时间同步是一个实时系统能够稳定运行的关键。而主流的工业网络
    的头像 发表于 12-05 09:09 3764次阅读
    在恩智浦i.MX RT1180跨界处理器上如何实现<b class='flag-5'>1588</b><b class='flag-5'>协议</b><b class='flag-5'>同步</b>

    1588协议如何依赖温补晶振实现高精度时间同步

    在5G基站密集部署、工业自动化产线高速运转、金融交易系统毫秒必争的今天,精确到纳秒级的时间同步早已成为现代数字网络的命脉。IEEE1588PrecisionTimeProtocol(PTP)
    的头像 发表于 12-02 14:45 99次阅读
    <b class='flag-5'>1588</b><b class='flag-5'>协议</b>如何依赖温补晶振实现<b class='flag-5'>高精度</b>时间<b class='flag-5'>同步</b>?

    协议转换后的时间同步精度如何保证?

    方法如下: 一、源头同步:统一时间基准(核心前提) 确保电能质量监测装置、协议转换设备(网关 / 边缘节点)、目标平台(主站 / 云平台)采用同一时间源,从根源减少偏差: 高精度对时协议
    的头像 发表于 11-12 14:00 394次阅读
    <b class='flag-5'>协议</b>转换后的时间<b class='flag-5'>同步</b><b class='flag-5'>精度</b>如何保证?

    IEEE1588 PTP授时服务器:轨道交通系统的时间同步基石​

    在现代轨道交通飞速发展的今天,西安同步电子科技有限公司SYN2411型PTP1588 授时服务器作为一种先进的时间同步设备,正悄然在轨道交通系统的各个环节发挥着至关重要的作用,成为保障
    的头像 发表于 09-19 18:08 629次阅读

    解码精密时间核心:SYN2411IEEE1588主时钟技术解析

    高精度时间同步网络的事实标准。作为国内领先的时间频率技术提供商,SYN2411IEEE1588主时钟,正是为满足严苛时间同步需求而生的核心设
    的头像 发表于 09-19 18:07 648次阅读

    AWStudio:轻松设置EtherCAT分布式时钟,提升同步精度

    系统中的时钟同步问题EtherCAT不使用分布式时钟,各从站依赖本地时钟独立运行,无统一时间基准,这会导致工业自动化场景的可靠性与控制精度降低,引发以下后果:多设备
    的头像 发表于 08-29 11:34 542次阅读
    AWStudio:轻松设置EtherCAT<b class='flag-5'>分布式</b>时钟,提升<b class='flag-5'>同步</b><b class='flag-5'>精度</b>!

    分布式光伏发电监测系统技术方案

    分布式光伏发电监测系统技术方案 柏峰【BF-GFQX】一、系统目标 :分布式光伏发电监测系统旨在
    的头像 发表于 08-22 10:51 2883次阅读
    <b class='flag-5'>分布式</b>光伏发电监测<b class='flag-5'>系统</b><b class='flag-5'>技术</b>方案

    高精度VCTCXO:±0.05ppm稳定性赋能基站时钟系统

    FCom富士晶振高精度VCTCXO提供±0.05ppm稳定性,满足5G小基站、SyncE、IEEE1588高精度时钟同步系统需求。
    的头像 发表于 07-15 10:00 2286次阅读
    <b class='flag-5'>高精度</b>VCTCXO:±0.05ppm稳定性赋能基站时钟<b class='flag-5'>系统</b>

    PTP同步时钟使用注意事项及场景应用

    在数字化时代,精准时间同步分布式系统至关重要。PTP(精确时间协议IEEE1588标准)应运而生,它通过网络传输时间戳,突破传统
    的头像 发表于 06-12 15:35 645次阅读

    PTP 时钟服务器在应用方面的介绍

    ,实现网络中各个节点的时钟同步。SYN2407 系列模块对该协议的支持,使得其能够轻松融入各类遵循 IEEE1588 标准的网络系统,为整个网络提供
    的头像 发表于 06-06 14:03 792次阅读

    PTP同步时钟使用注意事项及场景应

    在数字化时代,精准时间同步分布式系统至关重要。PTP(精确时间协议IEEE1588标准)应运而生,它通过网络传输时间戳,突破传统
    的头像 发表于 05-26 15:49 397次阅读

    1588v2协议:精确时间同步技术深度解析与实测演示

    实际应用中的表现。 1588v2协议概述 1588v2协议是一种用于在网络中实现高精度时间同步
    的头像 发表于 04-24 17:56 1369次阅读
    <b class='flag-5'>1588</b>v2<b class='flag-5'>协议</b>:精确时间<b class='flag-5'>同步</b><b class='flag-5'>技术</b>深度解析与实测演示

    国产超高精度AFE替换AD7124应用于分布式控制系统

    国产超高精度AFE替换AD7124应用于分布式控制系统
    的头像 发表于 03-12 10:15 704次阅读
    国产超<b class='flag-5'>高精度</b>AFE替换AD7124应用于<b class='flag-5'>分布式控制系统</b>

    紫光同创推出万兆以太网高精度1588解决方案

    1588V2时间同步协议广泛应用各个行业,尤其是新一代通信技术领域,对时间同步精度要求越来越高。
    的头像 发表于 01-13 16:47 1650次阅读
    紫光同创推出万兆以太网<b class='flag-5'>高精度</b><b class='flag-5'>1588</b>解决方案

    基于ptp的分布式系统设计

    。 PTP概述 PTP是一种网络时间同步协议,它允许网络中的设备同步它们的时钟。PTP基于IEEE 1588标准,旨在提供亚微秒级别的时间
    的头像 发表于 12-29 10:09 975次阅读