Application Modèles de conception maître

Le modèle maître / esclave est le plus souvent utilisé pour répondre aux commandes de l'interface utilisateur tout en collectant des données simultanément. Supposons que vous voulez écrire une application qui mesure et enregistre une tension changeant lentement une fois toutes les cinq secondes. Il acquiert une forme d'onde à partir d'une ligne de transmission et il affiche sur un graphique toutes les 100ms, et fournit également une interface utilisateur qui permet à l'utilisateur de modifier les paramètres pour chaque acquisition.






Le modèle de conception maître / esclave est bien adapté pour cette application. Dans cette application, la boucle maître contiendra l'interface utilisateur. L'acquisition et l'enregistrement de la tension qui se passera dans une boucle esclave, tandis que l'acquisition de la ligne de transmission et graphique qui se passera dans l'autre.

Les applications qui impliquent le contrôle bénéficient également de l'utilisation des modèles de conception maître / esclave. Un exemple est l'interaction d'un utilisateur avec un bras robotisé de mouvement libre. Ce type d'application est très orienté vers le contrôle en raison des dommages physiques au bras ou un environnement qui pourrait se produire si le contrôle est mal géré. Par exemple, si l'utilisateur ordonne au bras d'arrêter son mouvement vers le bas, mais le programme est occupé par le contrôle pivotant du bras, le bras robotique pourrait entrer en collision avec la plate-forme de support. Cette situation peut être évitée en appliquant le modèle de conception maître / esclave à l'application. Dans ce cas, l'interface utilisateur sera traité par la boucle principale, et chaque section commandée du bras robotisé aura sa propre boucle esclave. En utilisant cette méthode, chaque section contrôlable du bras aura sa propre boucle, et donc son propre morceau de temps de traitement.
Cela permettra un contrôle plus réactif sur le bras robotique via l'interface utilisateur.

Table des matières

1. Pourquoi utiliser maître / esclave?

Le modèle de conception maître / esclave est très avantageux lors de la création d'applications multi-tâches. Il vous donne une approche plus modulaire pour le développement d'applications en raison de sa fonctionnalité multi-boucle, mais plus important encore, il vous donne plus de contrôle de la gestion du temps de votre application. Dans LabVIEW, chaque boucle parallèle est traitée comme une tâche distincte ou fil. Un fil est définie comme une partie d'un programme qui peut exécuter indépendamment des autres parties. Si vous avez une application qui n'utilise pas des threads séparés, cette application est interprété par le système comme un fil. Lorsque vous divisez votre application en de multiples threads, ils chaque fois que le traitement des actions également entre eux.







Cela vous donne plus de contrôle sur la façon dont votre application est chronométré, et donne à l'utilisateur plus de contrôle sur votre application. La nature parallèle de LabVIEW se prête à la mise en œuvre du modèle de conception maître / esclave.

L'approche standard de modèle de conception maître / esclave pour cette application serait de mettre les processus d'acquisition en deux boucles distinctes (boucles esclave), tous deux entraînés par une boucle de maître qui interroge l'interface utilisateur (IU) contrôle pour voir si les paramètres ont été modifiés . Pour communiquer avec les boucles d'esclaves, la boucle maître écrit aux variables locales. Cela garantira que chaque processus d'acquisition n'affectera pas l'autre, et que les retards causés par l'interface utilisateur (par exemple, ce qui porte une boîte de dialogue) ne tardera pas à toute itération des processus d'acquisition.

2. Construire un maître / esclave application


Le motif de dessin maître / esclave se compose de plusieurs boucles parallèles. La boucle qui contrôle tous les autres est le maître et les boucles restantes sont des esclaves. Une boucle maître entraîne toujours une ou plusieurs boucles esclaves. Étant donné que la communication de données directement entre ces boucles rompt le flux de données, il doit être fait par écrit et de la lecture à des architectures de messagerie à savoir variables locales ou globales, occurrences, notifications ou files d'attente dans LabVIEW. La figure 1 montre comment les différentes boucles sont reliées entre elles à l'aide de données partagées.


Figure 1: maître / esclave Vue d'ensemble

3. Exemple - Boucles Synchroniser

Cette application a les exigences suivantes:

  • Créer un gestionnaire de messages pour Queued gérer l'interface utilisateur. L'interface utilisateur devrait contenir deux boutons de processus bascule avec LED et un bouton de sortie.
  • Créer deux processus distincts tant que commutateur d'une LED individuelle et descendre à des vitesses différentes (100 et 200 ms d'intervalle). Ces deux processus seront contrôlés à l'aide de l'interface utilisateur.

Nous sommes maintenant prêts à commencer notre application maître LabVIEW / esclave. Pour voir l'application maître / esclave finale, s'il vous plaît ouvrir ci-joint VI (SynchLoops.vi).

4. Remarques importantes


Il y a quelques mises en garde à connaître lorsque l'on traite avec le modèle de conception maître / esclave telles que les architectures de messagerie utilisent et la synchronisation.

Solution: Placez une paire autour de tout morceau de code « sémaphores acquire / release » qui écrit dans le monde. Cela garantit que plusieurs boucles ne tentent pas d'écrire sur le monde en même temps. Parmi les exemples inclus avec LabVIEW sont un couple qui démontrent l'utilisation de sémaphores. Sémaphores verrouillera les données globales tout en étant écrit afin d'éviter une condition de course.


Problème: Étant donné que le modèle de conception maître / esclave ne repose pas sur la synchronisation, il est possible que les boucles d'esclaves commencent exécution avant que la boucle maître. Par conséquent, l'initialisation de la boucle maître avant les boucles esclaves commencent l'exécution peut être un problème.

Solution: Occurrences peuvent être utilisés pour résoudre ce genre de problèmes de synchronisation.

Pour trouver des exemples qui démontrent l'utilisation d'occurrences consulter les exemples d'expédition de LabVIEW. La figure 2 illustre un exemple sur la manière d'utiliser les occurrences.


Figure 2: Exemple Occurrence







Articles Liés