6. Synchronisation de la mesure

La synchronisation de la mesure est l'un des points les plus importants à garder à l'esprit lors de l'écriture d'une application de commande à distance. Négliger cet aspect de votre programme engendre un comportement imprévisible, des résultats non répétables et beaucoup de frustration. Un signe clair d'une mauvaise synchronisation de mesure est, lorsque vous devez insérer des pauses fixes au sein de votre application afin de la faire fonctionner.

Commençons par définir la synchronisation de mesureaux fins de ce chapitre :

Les instruments de mesure d'aujourd'hui sont des appareils complexes avec leurs propres systèmes d'exploitation. Votre application de mesure ne doit pas se soucier des statuts de l'instrument à tout instant. La synchronisation de mesure est la méthode avec laquelle vous pouvez être sûr qu'aux points importants de votre programme (SyncPoints), votre instrument est dans le statut souhaité.

Un exemple de synchronisation de mesure avec un oscilloscope et un DUT qui génère un signal non périodique :

CH6_MeasSyncWithScope_16x9.png

Sur l'image ci-dessus, vous observez qu'il y a des sections d'inactivité dans votre programme qui doivent attendre pour que l'instrument les capture. On remarque que ces périodes d'inactivité sont dynamiques dans la longueur. Elles doivent s'adapter aux différentes conditions (par exemple la vitesse de votre PC, un réglage différent de l'instrument et des temps d'acquisition). Comment pouvez-vous obtenir cela ? Le meilleur moyen est de laisser l'instrument vous dire quand il est prêt. Des méthodes différentes de synchronisation sont présentées après les notes suivantes.

Notes supplémentaires :

  • Toujours utiliser l'instrument d'acquisition (Oscilloscope, Analyseur de spectre, Wattmètre…) en mode d'acquisition unique. Seulement ensuite, vous pouvez être sûr que vos résultats de mesure proviennent de la dernière acquisition terminée, pas d'une précédente ou d'une acquisition pas encore terminée. Le plus important : chaque méthode de synchronisation travaille correctement uniquement dans le mode d'acquisition unique.
  • Les réglages de base et les réglages de déclenchement n'ont pas besoin d'être synchronisés. Le seul point important essentiel intervient à la fin quand vous voulez être sûr que tous les réglages ont été appliqués (SyncPoint ‘SettingsApplied’).
  • Après que le déclenchement se soit produit, l'oscilloscope commence l'acquisition de la forme d'onde. Votre programme doit attendre jusqu'à ce qu'il ait terminé (SyncPoint ‘AcquisitionFinished’).
  • La lecture de la forme d'onde après ce SyncPoint assure que le résultat provienne de l'acquisition la plus récente.

Aperçu des mécanismes de synchronisation

Dans les quatre chapitres suivants, nous présentons les différents mécanismes de synchronisation triés du plus simple au plus compliqué :

  • Interrogation *OPC?
  • Sondage du bit de statut (STB)
  • Attente de la demande de service (SRQ)
  • Événement de demande de service (SRQ)

Interrogation de synchronisation *OPC?

Il s'agit de la méthode de synchronisation la plus simple et la plus souvent utilisée.

Lorsque vous envoyez l'interrogation *OPC? à un instrument, il retarde la réponse jusqu'à ce que toutes les opérations en cours soient terminées. Par conséquent, les périodes d'inactivité dans votre programme prennent place dans les opérations de lecture VISA Read où votre programme attend que l'instrument réponde à l'interrogation *OPC? . Ce n'est pas la réponse elle-même qui importe ici, mais plutôt le délai qu'elle génère.

Important ! Puisque le *OPC? est une interrogation, vous ne devez pas oublier de lire la réponse provenant de l'instrument avec la fonction VISA Read(). Sinon votre instrument génère une erreur 'Query Interrupted' (interrogation interrompue) à l'interrogation suivante. Cela n'est pas seulement important pour l'interrogation *OPC? , mais pour toutes les interrogations.

Ici, nous mentionnerons un paramètre supplémentaire – VISA Timeout. Le VISA Timeout fournit le mécanisme par lequel vous pouvez définir la durée maximale à attendre dans les opérations de lecture VISA Read avant qu'elles ne se terminent avec une erreur de délai VISA. Puisque cette valeur est individuelle, et qu'elle dépend de la durée de votre tâche actuelle, assurez-vous de bien régler le délai VISA – un délai trop court générera des erreurs indésirables au cours des opérations régulières, un délai trop long rendra votre programme peu réactif dans le cas où une erreur réelle se produit.

Avantages :

  • Simple et efficace dans la plupart des cas.
  • N'utilise pas de canaux de contrôle de la session (voir la méthode de sondage STB), fonctionne donc également avec le RawSocketet la connexion série.

Inconvénients :

  • Bloque la communication avec l'instrument jusqu'à ce qu'il réponde. Cela peut être critique pour des opérations sur le long terme, où votre application devient peu réactive.

Synchronisation du sondage du bit de statut (STB)

Cette méthode est utilisée par les pilotes d'instruments Rohde & Schwarz. Si vous utilisez des commandes SCPI directes, retrouvez les exemples d'implémentation à la fin de ce chapitre. Jetons d'abord un coup d’œil à l'organigramme indiquant la procédure. L'explication suit ensuite.

Pour expliquer l'organigramme, nous devons avoir une vision du sous-système de statut de l'instrument‒ une structure hiérarchique des registres avec le principal tout en haut appelé Bit de statut(STB). Il s'agit d'un registre 8 bits défini dans la norme IEEE 488.2. Chacun de ces bits a une signification différente et sert de résumé pour les registres inférieurs de la chaîne hiérarchique des registres de statut. La structure complète du sous-système de statut que vous retrouverez dans tout manuel d'utilisation de commande à distance d'instrument Rohde & Schwarz (recherchez le terme 'Status Byte' (bit de statut)). L'image suivante illustre le registre Status Byte (bit de statut) plus le second registre Event Status Register (registre de statut d'événement)(ESR) :

  • La première opération de l'organigramme règle le filtre ESEsur 1 (Bit 0 = 1). Ce qui signifie, nous sommes uniquement intéressés dans le ESR Bit 0 – OPC. Vous devez juste envoyer cette commande une fois, après l'initiation de la connexion, ou après la commande *RST.
  • L'opération suivante interroge la valeur du registre ESR avec la commande *ESR?. Ce registre est un registre EVENT (d'événement) – vous effacez sa valeur à la lecture. Cela réinitialise l'ESR Bit 0 – OPC revient à 0.
  • L'opération suivante envoi la commande que vous souhaitez synchroniser. Dans notre cas, il s'agit de la commande SCPI SINGqui arme l'oscilloscope pour une acquisition unique. *OPC (sans le point d'interrogation !) à la fin de la séquence dit à l'instrument : après que toutes les commandes de cette séquence soient exécutées et terminées, régler le ESR Bit 0 – OPCsur 1. Pour cette raison, vous devez le réinitialiser à 0 avant. Sinon il pourrait avoir été réglé sur 1 par l'une des actions précédentes et votre boucle de sondage STB se terminerait de manière incorrecte après sa première itération.
  • L'opération suivante est la boucle de sondage du bit de statut. Vous interrogez le bit de statut (Status Byte) jusqu'à ce que le bit 5 – Event Status Summary (résumé statut événement)soit réglé sur 1. La valeur du bit de statut peut être retrouvée de deux manières différentes – avec la commande SCPI *STB?, ou avec une fonction VISA spéciale appelée ReadSTB(). Quelle est la différence ? Le *STB? est une commande SCPI standard utilisant les mémoires tampons des E/S VISA. La fonction ReadSTB() communique sur un canal séparé appelé Control Channel, et n'interfère pas avec la communication d'écriture / lecture SCPI standard. Elle est également optimisée pour des temps de réponse plus courts. Nous recommandons l'intégration d'un délai de sondage progressif à l'intérieur de cette boucle. Par exemple : aucun délai les 10 premières fois, puis un délai de 1 ms les 100 suivantes, un délai de 10 ms les 1000 suivantes et ainsi de suite... Pour éviter des boucles infinies, les pilotes d'instruments Rohde & Schwarz utilisent un délai appelé OPC Timeout.
  • Une fois la boucle terminée, le ESR Bit 0 – OPC est à nouveau réinitialisé avec la commande SCPI *ESR?

Avantages :

  • Ne bloque pas la communication avec l'instrument. Vous pouvez en parallèle envoyer des commandes SCPI et recevoir des réponses.
  • Adapté pour les opérations sur le long terme. Par exemple, auto-alignements ou auto-tests.

Inconvénients :

  • Plus difficile à implémenter.
  • Ne fonctionne pas avec les connexions RawSocket et série, car elles ne prennent pas en charge la fonction canal de commande VISA ReadSTB().

Méthodes avancées avec la demande de service "Service Request" (SRQ)

Attente de la synchronisation du Service Request (SRQ)

Cette méthode est similaire à la synchronisation de sondage du bit de statut précédente, mais à la place d'une boucle de sondage STB, elle utilise une fonction VISA WaitOnEvent()configurée pour attendre l'événement de demande de service Service Request. Des exemples pour ce type de synchronisation sont disponibles à la fin de ce chapitre.

Pour utiliser le mécanisme, vous devez :

  • Effectuer un réglage une fois après la réinitialisation *ESE 1;*SRE 32(voir image ci-dessus des registres sous-système de statut de l'instrument). Cela règle le filtre ESE pour réagir sur le bit ESR OPC simplement comme dans la méthode de synchronisation précédente avec un sondage STB. "*SRE 32" règle le filtre SREpour générer une demande de servicesi le bit de résumé de statut d'événement (Event Status Summary) du registre STB est réglé sur 1.
  • Avant l'envoi de la commande pour synchroniser, activez l'événement de demande de service avec la fonction VISA EnableEvent().
  • Envoyez la commande pour synchroniser avec le ;*OPCà la fin.
  • Appelez la fonction VISA WaitOnEvent(). Elle attend jusqu'à ce que l'événement de demande de service arrive, ou le délai expire.
  • Désactivez l'événement de demande de service avec la fonction VISA DisableEvent().

Avantages :

  • Par rapport à la méthode précédente, aucune implémentation de boucle de sondage STB n'est nécessaire.
  • IO Trace est plus court et plus lisible.

Inconvénients :

  • Votre application dans LabVIEW et MATLAB ne peut pas être interrompue pendant l'exécution du VISA WaitOnEvent(). Cela peut s'avérer être un problème en cas de commandes qui prennent du temps à se terminer, par exemple une interrogation d'auto-test *TST?
  • Non prise en charge avec les connexions RawSocket et série.

Synchronisation d'événement de demande de service (SRQ)

L'idée principale est que vous initiez une tâche de l'instrument et vous concentriez sur autre chose. Lorsque l'instrument a terminé la tâche, VISA invoque une fonction de votre choix. Cette fonction est appelée Event handler (gestionnaire d'événements).

Des exemples pour ce type de synchronisation dans C# et LabWindows/CVI sont disponibles à la fin de ce chapitre.

Pour utiliser le mécanisme de synchronisation d'un événement de demande de service, vous devez :

  • Effectuer un réglage une fois après la réinitialisation *ESE 1;*SRE 32(voir l'image ci-dessus Registres sous-système du statut de l'instrument). Cela règle le filtre ESE afin qu'il agisse sur le bit ESR OPC simplement comme dans la méthode de synchronisation précédente avec un sondage STB. *SRE 32règle le filtre SRE pour générer une demande de service si le bit de résumé du statut d'événementdu registre STBest réglé sur 1.
  • Avant l'envoi de la commande pour synchroniser, vous devez enregistrer votre fonction de rappel avec une fonction VISA InstallHandler()et activer le mécanisme de demande de service avec une fonction VISA EnableEvent().
  • Envoyer la commande pour synchroniser avec le ;*OPCà la fin. Une fois l'exécution de la commande terminée, VISA appelle votre fonction enregistrée.

Avantages :

  • Vous pouvez effectuer d'autres tâches en attendant.
  • Idéal pour les applications multi-thread.

Inconvénients :

  • Plus complexe à implémenter.
  • Non pris en charge par les connexions RawSocket et série.
  • Non pris en charge dans LabVIEW et dans MATLAB.

Exemples de commandes SCPI directes

Exemples de tâche de mesure précédente avec l'interrogation de synchronisation *OPC? ,plus :

  • Synchronisation du sondage STB
  • Attente de synchronisation de la demande de service
  • Synchronisation de l'événement de demande de service (dans Python, C# et LabWindows/CVI)

Exemples de pilotes d'instruments

Exemples de tâche de mesure précédente :

Request information

Do you have questions or need additional information? Simply fill out this form and we will get right back to you.

Marketing de permission

Votre demande a bien été envoyée ! Nous vous contacterons dans les plus brefs délais.
An error is occurred, please try it again later.