Application Design Patterns Meister
Die Master / Slave-Muster wird am häufigsten verwendet, wenn auf Benutzerschnittstellen-Steuerungen reagieren, während gleichzeitig Daten sammeln. Angenommen, Sie eine Anwendung schreiben möchten, die Maßnahmen und eine sich langsam ändernde Spannung meldet sich einmal alle fünf Sekunden. Es erhält eine Wellenform von einer Übertragungsleitung und zeigt sie auf einem Graphen alle 100ms, und stellt auch eine Benutzerschnittstelle, die dem Benutzer ermöglicht, Parameter für jede Erfassung zu ändern.
Das Master / Slave-Entwurfsmuster ist für diese Anwendung gut geeignet. Bei dieser Anwendung wird die Master-Schleife, die die Benutzerschnittstelle enthält. Die Spannungserfassung und Protokollierung wird in einem Folgeregelkreis passieren, während die Übertragungsleitung Erfassung und die grafische Darstellung in einem anderen passieren.
Anwendungen, die Kontrolle beinhaltet auch die aus der Nutzung von Master / Slave-Design Patterns profitieren. Ein Beispiel dafür ist die Interaktion des Benutzers mit einer freien Bewegung Roboterarm. Diese Art der Anwendung ist extrem kontrollorientierte wegen der physischen Schäden am Arm oder Umgebung, die auftreten kann, wenn die Steuerung fehlerhaft gebraucht wird. Zum Beispiel, wenn der Benutzer des Arm anweist, seine Abwärtsbewegung zu stoppen, aber das Programm wird mit der Arm der Schwenksteuerung besetzt, kann der Roboterarm mit der Stützplattform kollidieren. Diese Situation kann durch die Anwendung des Master / Slave-Entwurfsmuster der Anwendung vermieden werden. In diesem Fall wird die Benutzerschnittstelle von der Master-Schleife gehandhabt werden, und jeder Abschnitt des steuerbaren Roboterarm seine eigene Slave-Schleife haben. Unter Verwendung dieses Verfahrens jeder steuerbarer Abschnitt des Armes wird seine eigene Schleife hat, und daher sein eigenes Stück Verarbeitungszeit.
Dies wird für eine noch Kontrolle über den Roboterarm über die Benutzeroberfläche ermöglichen.
Inhaltsverzeichnis
1. Warum sollten Sie Master / Slave?
Das Master / Slave-Entwurfsmuster ist sehr vorteilhaft, wenn Multi-Task-Anwendungen. Es gibt Ihnen einen modularen Ansatz für die Anwendungsentwicklung aufgrund seiner Multi-Loop-Funktionalität, aber am wichtigsten ist, es gibt Ihnen mehr Kontrolle über Zeitmanagement Ihrer Anwendung. In LabVIEW, die jeweils parallel Schleife wird als eine separate Task oder Thread behandelt. Ein Faden wird als Teil eines Programms definiert, die unabhängig von anderen Teilen ausführen können. Wenn Sie eine Anwendung, die nicht separate Threads nicht verwendet, wird die Anwendung von dem System als ein Thread interpretiert. Wenn Sie Split Ihre Anwendung in mehrere Threads, sie für jede Aktie Verarbeitungszeit gleichmäßig miteinander.
Dies gibt Ihnen mehr Kontrolle darüber, wie Ihre Anwendung abgelaufen ist, und gibt dem Benutzer mehr Kontrolle über Ihre Anwendung. Die Parallelität von LabVIEW eignet sich zur Umsetzung des Master / Slave-Entwurfsmuster.
Der Standard-Master / Slave-Design-Pattern-Ansatz für diese Anwendung wäre es, die Beschaffungsprozesse in zwei getrennte Schleifen zu setzen (Slave-Schleifen), die beide von einer Master-Schleife angesteuert, dass Umfragen die Benutzeroberfläche (UI) steuert, um zu sehen, wenn die Parameter geändert wurden . Für die Kommunikation mit den Slave-Schleifen, schreibt die Master-Schleife auf lokale Variablen. Dadurch wird sichergestellt, dass jeder Erfassungsvorgang den anderen nicht beeinträchtigt wird, und dass die von der Benutzerschnittstelle verursachten Verzögerungen (beispielsweise einen Dialog zu bringen up) werden keine Wiederholung der Akquisitionsprozesse verzögern.
2. Erstellen Sie eine Master / Slave-Applikation
Das Master / Slave-Entwurfsmuster besteht aus mehreren parallelen Schleifen. Die Schleife, die alle anderen steuert der Master und die übrigen Schlaufen sind Slaves. Eine Master-Schleife fährt immer einen oder mehr Slave-Loops. Da die Datenkommunikation direkt zwischen diesen Schleifen Datenfluss unterbricht, muss er durch das Schreiben und das Lesen zu Messaging-Architekturen das heißt lokale oder globale Variablen, Ereignisse, Benachrichtigungen oder Warteschlangen in LabVIEW erfolgen. Abbildung 1 zeigt, wie die verschiedenen Schleifen miteinander unter Verwendung gemeinsam genutzter Daten verbunden sind.
Abbildung 1: Master / Slave-Übersicht
3. Beispiel - Synchronisieren von Loops
Diese Anwendung hat die folgenden Anforderungen:
- Erstellen Sie eine Queued Message Handler die Benutzeroberfläche zu behandeln. Die Benutzerschnittstelle sollte zwei Knie Prozess Tasten mit LEDs enthalten, und eine Austrittstaste.
- Erstellen Sie zwei getrennte Prozesse, die sowohl einen Einzelschalter LED ein und bei unterschiedlichen Geschwindigkeiten (100 und 200 ms-Intervalle). Diese beiden Prozesse werden gesteuert, um die Benutzeroberfläche.
Wir sind nun bereit, unsere LabVIEW Master / Slave-Anwendung zu beginnen. Um die endgültige Master / Slave-Anwendung anzuzeigen, öffnen Sie bitte den beigefügten VI (SynchLoops.vi).
4. Wichtige Hinweise
Es gibt einige Einschränkungen bewusst zu sein, wenn sie mit dem Master / Slave-Entwurfsmuster wie Messaging-Architekturen zu tun verwenden und Synchronisation.
Lösung: Ein „acquire / release Semaphore“ Paar um jedes Stück Code, der auf die globale schreibt. Dadurch wird sichergestellt, dass mehrere Schleifen nicht versuchen, auf den globalen zugleich zu schreiben. Unter den Beispielen mit LabVIEW enthalten ist ein Paar, das die Verwendung von Semaphoren demonstrieren. Semaphore werden die globalen Daten sperren, während auf eine Race-Bedingung zu vermeiden, um geschrieben zu werden.
Problem: Da das Master / Slave-Entwurfsmuster nicht auf der Synchronisation basiert, ist es möglich, dass die Slave-Schleifen Ausführung vor der Master-Schleife beginnen. Daher Initialisieren der Master-Slave-Schleife, bevor die Schleifen Ausführung beginnen kann ein Problem sein.
Lösung: Vorkommen können diese Arten von Synchronisationsprobleme zu lösen, verwendet werden.
Für Beispiele, die die Verwendung von Vorkommen finden Sie in den LabVIEW Versand Beispiele zeigen. Abbildung 2 veranschaulicht ein Beispiel, wie Vorkommen zu verwenden.
Abbildung 2: Beispiel Occurrence