在两台目标计算机上同步 PTP 时钟
此示例演示了如何使用精密时间协议 (PTP) 在两台目标计算机上同步时钟。
PTP 系统设置
要运行 PTP 守护进程并构建使用 PTP 的实时应用程序,必须安装 Speedgoat I/O Blockset。有关详细信息,请参阅PTP 前置条件。
安装 Speedgoat I/O 模块集后,使用 Speedgoat showPtpInterfaces 实用程序检查所选端口是否支持 PTP 协议,并确保该支持功能已完成配置。
要检查目标计算机 tg1 和 tg2 的配置,此示例在 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 协议栈。
在此示例中,tg1 的 ETH1 端口被设置为 IP 地址 10.10.10.21,而 tg2 的 ETH1 端口被设置为 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);