主要内容

本页采用了机器翻译。点击此处可查看英文原文。

在两台目标计算机上同步 PTP 时钟

此示例演示了如何使用精密时间协议 (PTP) 在两台目标计算机上同步时钟。

PTP 系统设置

要运行 PTP 守护进程并构建使用 PTP 的实时应用程序,必须安装 Speedgoat I/O Blockset。有关详细信息,请参阅PTP 前置条件

安装 Speedgoat I/O 模块集后,使用 Speedgoat showPtpInterfaces 实用程序检查所选端口是否支持 PTP 协议,并确保该支持功能已完成配置。

要检查目标计算机 tg1tg2 的配置,此示例在 MATLAB 命令行窗口中使用以下命令:

speedgoat.showPtpInterfaces('TargetObject', tg1)
         Label         Index     PTPSupport                  Configuration
     _____________    _______    __________ _________________________________________
     {'Host Link'}    {'wm0'}     {'No' }      {'IP: 192.168.7.5 Subnet: 255.255.255.0'}
     {'ETH1'     }    {'wm1'}     {'Yes'}      {'Not configured'                       }
     {'Onboard'  }    {'wm2'}     {'No' }      {'Not configured'                       }
speedgoat.showPtpInterfaces('TargetObject', tg2)
         Label         Index     PTPSupport                  Configuration
     _____________    _______    __________ __________________________________________
     {'Host Link'}    {'wm0'}     {'No' }      {'IP: 192.168.7.10 Subnet: 255.255.255.0'}
     {'ETH1'     }    {'wm1'}     {'Yes'}      {'Not configured'                        }
     {'Onboard'  }    {'wm2'}     {'No' }      {'Not configured'                        }

要使用点对点传输 (PTP),请使用 Speedgoat 以太网配置工具 speedgoat.configureEthernet 为以太网接口配置 IP 协议栈。

在此示例中,tg1ETH1 端口被设置为 IP 地址 10.10.10.21,而 tg2ETH1 端口被设置为 IP 地址 10.10.10.22

在目标计算机上配置好 ETH1 端口后,使用以太网电缆将它们相互连接。

启动 PTP 守护进程目标计算机

对于目标计算机 PC1(tg1),请连接至目标计算机并启动 PTP 守护进程作为时钟发送器(主节点,-W)。

tg1 = slrealtime('TargetPC1');
connect(tg1);
tg1.ptpd.Command = 'ptpd -L -K -W -b wm1';
pause(5);
start(tg1.ptpd)

对于目标计算机 PC2(tg2),请连接至目标计算机并启动 PTP 守护进程作为时钟接收器(从属设备,-g)。

tg2 = slrealtime('TargetPC2');
connect(tg2);
tg2.ptpd.Command = 'ptpd -L -K -g -b wm1';
pause(5);
start(tg2.ptpd)

有关 PTP 守护进程选项的更多信息,请参阅 ptpd, ptpd-avb 参考页面。

开放模型并构建实时应用

打开 PTP 时钟接收器模型 slrt_ex_ptp_offset_time_receiver 并构建实时应用程序。

model = 'slrt_ex_ptp_offset_time_receiver';
open_system(model);
modelSTF = getSTFName(tg2);
set_param(model,"SystemTargetFile",modelSTF);
evalc('slbuild(model)');

为确认点对点时钟同步,请在 tg2 上加载实时应用程序并运行该应用程序。

load(tg2,model);
start(tg2);

查看目标计算机之间的时钟偏移

打开仿真数据检查器,观察发射器和接收器时钟之间的偏移或差异。显示屏呈现了时钟在同步过程中如何逐步缩小时间偏差。

关闭模型

bdclose(model);