我正在开发一个具有多个工业联合显像机的系统。我需要那些相机是同步的,这是联合视觉公司推荐的PTP协议。因此,我有一个时间服务器,充当一个PTP主时钟.摄像机通过以太网交换机连接到服务器上。不幸的是,该交换机没有启用PTP,这意味着它在传递PTP数据包时引入了延迟。这导致相机留在PtpStatus == Uncalibrated
中。
据我所理解的联盟视觉千兆特征手册,PTP导致相机的时间戳在所有相机之间同步,即GevTimestampValue
在任何给定的时间对所有相机都应该是相同的。然而,在我用多个摄像机拍摄一个时钟的实验中,我观察到两个不同的相机传递的时间戳大约是187511041595600刻度。( 187511秒)而在帧中可见的时钟显示大约的实际时间差。0.04秒
因此,我的问题是:
PtpStatus == Uncalibrated
导致这个不工作的原因吗?发布于 2022-09-22 11:37:12
经过一些调查工作后,我找到了原因,并将在这里分享我的发现,以防其他人陷入同样的境地:
简短答覆:
PtpStatus == Slave
中放置一次。如果它们稍后丢失同步,它们将恢复为Uncalibrated
,并保持一定的同步,但如果它们从未处于PtpStatus == Slave
中,则它们还没有同步。这使得时间戳离我们很远。很长的答案:我把开关配置成镜像时间服务器和照相机连接到我的笔记本电脑的端口。使用WireShark,我能够调查PTP流量,并发现Sync
和Delay_Req
数据包被传递,这导致相机从Listening
过渡到Uncalibrated
(我的时间服务器不发送Follow_Up
)。但是,Delay_Resp
(由时间服务器发送)由交换机丢弃。因此,我的交换机似乎在某种程度上配置错误,允许其他多播数据包在丢弃Delay_Resp
时传递。
https://stackoverflow.com/questions/73544984
复制相似问题