
Comparaison horaire
Lorsqu'il s'agit d'applications de traitement de matériel graphique de plusieurs caméras, le moment ou la séquence temporelle correcte des prises de vue pour le traitement ultérieur est souvent crucial. En cas de transfert d'un horodatage, une référence temporelle aux autres données d'image peut être établie. Mais il est alors important que la base temporelle des caméras concorde précisément. Grâce au protocole PTP (Precision Time Protocoll), les caméras GigE Vision IDS, à partir du firmware 2.2, peuvent être synchronisées simplement.
Synchroniser des caméras GigE Vision IDS à l'aide du protocole PTP
Le protocole PTP (Precision Time Protocol) est une norme de synchronisation temporelle (IEEE1588) avec laquelle des appareils reliés par réseau peuvent être synchronisés entre eux. Les caméras, qui prennent en charge cette norme, échangent avec un maître-temps des messages de synchronisation dans des cycles définis. Avec les informations de l'horodatage relatives au moment de l'émission et de la réception, les compteurs internes des caméras peuvent être étalonnés très précisément et leur synchronisation maintenue.
Avec le firmware version 2.2 des caméras, toutes les caméras GigE Vision IDS sont compatibles avec le protocole PTP.
PTP n'est pas défini pour les connexions USB, par conséquent, cette note d'application ne porte que sur les caméras GigE Vision IDS.
L'horodatage IEEE1588 est un compteur temporel de périodes, où le 1er janvier 1970, 00:00 heure est défini comme le moment zéro, qui offre une précision de 1 ns (1 GHz). La précision de la synchronisation temporelle entre les appareils réseau, conditionnée par les inexactitudes liées aux latences et aux temps de propagation des signaux, relève davantage de l'ordre de la microseconde !
Applications PTP
Le protocole PTP est une technologie de base, qui représente le fondement de différentes applications avec référence temporelle des contenus d'images. Selon le besoin d'une application et la complexité de l'infrastructure réseau, ce protocole peut être configuré de manière différente :
1. Synchronisation d'horodatages relatifs
Dans ce cas, toutes les caméras se trouvent dans un réseau. Une caméra joue le rôle de maître, les autres sont esclaves. Les horodatages de toutes les caméras esclaves sont synchronisés avec la caméra-maître. Les caméras n'affichent aucun horodatage absolu (temps réel) et ne peuvent pas être déclenchées de manière synchrone sans effort supplémentaire.
Avantages :
- Les horodatages relatifs créent une affectation temporelle des prises de vue de toutes les caméras de l'application. Cela permet d'identifier la première image, l'importance du décalage temporel entre les images des différentes caméras.
- Les horodatages relatifs peuvent être générés pour une infrastructure réseau spéciale sans efforts ni coûts supplémentaires.

2. Synchronisation d'horodatages avec temps absolu
Dans ce cas, les caméras réseau sont synchronisées avec un maître externe. Ce maître PTP peut correspondre à une carte réseau qui prend en charge le " Hardware-Timestamping " - sans prise en charge matérielle, l'exactitude de la synchronisation en pâtit considérablement. Outre le matériel requis, un logiciel prenant en charge le protocole PTP est également nécessaire (ne fait pas partie d'IDS peak).
Avantages :
- Les contenus d'image avec horodatages (réels) globaux peuvent être reliés à toute autre information avec référence temporelle réelle au-delà des limites de l'application.
- Les contenus d'image peuvent être réutilisés pour d'autres applications ou analyses avec une référence temporelle globale.

Utilisation du protocole PTP : « synchronisation relative »
Le paragraphe suivant décrit à titre d'exemple la méthode d'établissement d'une " synchronisation relative " d'horodatages entre deux caméras compatibles PTP d'un réseau.
Configuration matérielle
Deux caméras GigE Vision IDS différentes (GV-526xFA-C, GV-504xCP-M) avec firmware 2.2 (" compatibles PTP ") sont raccordées au même commutateur réseau. Un PC hôte supplémentaire sert uniquement à commander et configurer les caméras. Il ne participe pas à la synchronisation PTP des caméras.
Configuration logicielle
Toutes les fonctions relatives à la configuration PTP se trouvent dans la cartographie des nœuds des caméras sous la catégorie " PtpControl " (Contrôle PTP). Ces fonctions sont disponibles à partir de la version 2.2 du firmware. Pour l'établissement de la synchronisation PTP, nous utilisons Vision Cockpit de l'installation IDS peak sur le PC hôte.
Configurer une caméra en tant que maître PTP
La caméra GV-526xFA-C doit être configurée comme appareil maître PTP. Pour cela, ouvrir la caméra dans Vision Cockpit et activez PTP en définissant " PtpEnable " (Activer PTP) sur " True " (Vrai). La caméra reçoit également l'autorisation d'assumer le rôle de maître en réglant " PtpSlaveOnly " (PTP esclave uniquement) sur " False " (Faux).
# Configure master camera
PtpEnable = True
PtpSlaveOnly = False
Configurer l'autre caméra en tant qu'esclave PTP
La caméra GV-504xCP-M doit être configurée comme appareil esclave PTP. Activer aussi ici PTP en définissant " PtpEnable " sur " True " (Vrai). Mais cette fois, la caméra est limitée uniquement au travail de l'appareil esclave. À cette fin, l'option " PtpSlaveOnly " reste définie sur " True " (Vrai).
# Configure slave camera
PtpEnable = True
PtpSlaveOnly = True
Création de la hiérarchie maître-esclave
Dès qu'un appareil maître et esclave sont configurés, la hiérarchie maître-esclave se met automatiquement en place. Pour la caméra maître, cela consiste à basculer l'option " PtpStatus " (Etat PTP) de " Listening " (Écoute) sur " Master " (maître). Avec la caméra esclave, vous identifiez que l'option " PtpStatus " de " Listening " est d'abord sur " Uncalibrated ", puis après la synchronisation avec la caméra maître, passe sur " Slave " (Esclave).
Après l'établissement de la hiérarchie maître-esclave des caméras via leurs nouvelles fonctionnalités PTP, la " synchronisation relative " est achevée.
Activation des horodatages
Si vous souhaitez utiliser les horodatages des caméras désormais synchronisées avec les données d'image de votre application, vous devez activer le transfert des horodatages en tant que métadonnées (avec les données Chunk).
Pour cela, activez d'abord le transfert des données Chunk avec la mémoire d'images en réglant " ChunkModeActive " (Mode Chunk actif) sur " True ". Sélectionnez ensuite via le " ChunkSelector " (Sélecteur Chunk) l'information " Timestamp " (Horodatage) et activez à l'aide du commutateur " ChunkEnable " (Activation Chunk).
# activate chunk data creation
ChunkModeActive = True
# enable "ChunkTimestamp"
ChunkSelector = Timestamp
ChunkEnable = True
La caméra génère à partir de maintenant, avec chaque prise de vue, un horodatage et le transfère avec la mémoire d'images (dans les données Chunk) au PC hôte. Les données Chunk et les horodatages associés peuvent être lues avec tout logiciel de norme Vision.
Prise de vue
Si les données d'image avec horodatages doivent être traitées dans des applications, le moment de la prise de vue et le déclenchement associé de la caméra peuvent être déterminants. Tout dépend si les images de plusieurs caméras à des moments parfaitement identiques (prise de vue synchrone) sont nécessaires et de la tolérance autorisée pour l'écart de correspondance temporelle (gigue de l'horodatage). Selon les besoins de l'application, vous devez alors choisir une méthode de déclenchement appropriée pour les caméras. L'exactitude accessible des différentes méthodes des signaux matériels et logiciels est déterminante pour la sélection, tout comme les efforts et les coûts requis pour leur mise à disposition et leur utilisation. Dans notre astuce technique " Déclenchement selon le principe Lego ", vous trouverez une sélection de possibilités de déclenchement pour votre application.
Pour vérifier la " synchronisation relative " configurée au préalable, nous utilisons le signal PPS (Puls per second, impulsion par seconde) de déclenchement de la caméra et obtenons ainsi une marche libre synchrone de la caméra.
Marche libre synchrone
Le signal PPS produit par l'activation de la fonctionnalité PTP de chaque caméra (aussi bien esclave que maître) est, comme l'indique son nom, généré toutes les secondes, et constitue une bonne occasion de test de la synchronisation des caméras. Le signal est réglé comme source de déclenchement et déclenche ainsi une prise de vue toutes les secondes. Les horodatages des images générés de cette manière devraient être identiques à la microseconde près grâce à la " synchronisation relative ". La marche libre synchrone via le signal PPS est réglé comme suit sur toutes les caméras.
# image acquisition configuration for both cameras
LineSelector = Line2
LineMode = Output
LineSource = PPS
TriggerSelector = ExposureStart
TriggerMode = On
TriggerSource = Line2
# Limit bandwidth on both cameras
DeviceLinkThroughputLimit = 60000000
# Start acquisition on both cameras
Execute AcquisitionStart
Lecture des horodatages
Pour traiter dans votre application les horodatages avec les contenus d'image, vous devez lire les données Chunk de la mémoire d'images actuelle. Étant donné qu'avec les données Chunk, il s'agit d'une mémoire de charge spécifique au fabricant avec une mise en page mémoire généralement inconnue, les différentes métadonnées sont lues par le biais de la cartographie des nœuds. Pour cela, toutes les métadonnées existantes de GenTL sont transférées dans la cartographie des nœuds avec leurs noms de nœud normalisés pour qu'elles soient accessibles via l'API standard.
Avec la prochaine mise à jour IDS peak 1.1 de début avril, vous pourrez accéder et éditer les horodatages ainsi que toutes les autres données Chunk très facilement grâce à l'API IDS peak. L'extrait de code source suivant montre à titre d'exemple comment extraire les horodatages d'une mémoire d'images. Un exemple complet de code source illustrant le traitement des données Chunk est également disponible dans le package d'installation du kit de développement logiciel IDS peak SDK (à partir de la version 1.1).
// Get buffer from device's datastream
const auto buffer = m_dataStream->WaitForFinishedBuffer(5000);
// check buffer for chunks
if (buffer->HasChunks())
{
// update nodemap with current chunk data
m_nodemapRemoteDevice->UpdateChunkNodes(buffer);
// Get the value of the timestamp chunk
const auto chunktimestamp = m_nodemapRemoteDevice->FindNode<peak::core::nodes::FloatNode>("ChunkTimestamp")->Value();
}
Résumé
Le protocole PTP est une fonctionnalité de base essentielle dans les applications multi-caméras quand il s'agit d'affecter de manière temporelle des contenus d'images. Une synchronisation relative entre les caméras peut ainsi être réalisée très simplement, sans nécessiter de matériels et de logiciels supplémentaires. Dans de nombreuses applications, la synchronisation des caméras entre elles suffit amplement pour garantir l'utilisation des images au " même " moment ou dans un ordre correct. Avec le firmware version 2.2, les caméras GigE Vision IDS sont également équipées d'une horloge externe pour une synchronisation globale. Si vous avez des questions sur la synchronisation temporelle via le protocole PTP ou si vous avez besoin d'un complément d'informations, consulte la base de connaissances de notre page Web ou contactez notre équipe de conseil système.