![](/img/trans.png)
[英]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.