[英]Grab images and set configuration of GenICam protocol in c# .net
[英]Synchronizing the timestamp of multiple Allied Vision GenICam cameras through PTP
我正在开发一个带有多个工业 Allied Vision Mako 相机的系统。 我需要同步这些相机,Allied Vision 建议使用 PTP 协议。 因此,我有一个时间服务器作为 PTP 主时钟。 摄像机通过以太网交换机连接到该服务器。 不幸的是,该交换机未启用 PTP,这意味着它在传递 PTP 数据包时会引入延迟。 这会导致相机保持在PtpStatus == Uncalibrated
。
据我了解 Allied Vision GigE-Features 手册,PTP 导致相机的时间戳在所有相机上同步,即GevTimestampValue
在任何给定时间在所有相机上都应该相同。 然而,在我用多个相机拍摄时钟的实验中,我观察到两个不同相机提供的时间戳约为 187511041595600 滴答(约 187511 秒),而帧中可见的时钟显示的实际时差约为 0.04 秒。
因此,我的问题是:
PtpStatus == Uncalibrated
导致这不起作用?经过一些调查工作,我找到了原因,并将在这里分享我的发现,以防其他人陷入同样的境地:
简短的回答:
PtpStatus == Slave
中出现一次才能同步。 如果它们稍后失去同步,它们将恢复为Uncalibrated
并保持一定程度的同步,但如果它们从未处于PtpStatus == Slave
中,它们尚未同步。 这导致时间戳偏离。 长答案:我将交换机配置为镜像时间服务器和相机连接到我的笔记本电脑的端口。 使用 WireShark,我能够调查 PTP 流量并发现Sync
和Delay_Req
数据包被传递,这导致摄像机从Listening
转换为Uncalibrated
(我的时间服务器不发送Follow_Up
)。 但是, Delay_Resp
(由时间服务器发送)被交换机丢弃。 因此,我的交换机似乎以某种方式配置错误,让那些其他多播数据包在丢弃Delay_Resp
时通过。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.