Benutzer-Werkzeuge

Webseiten-Werkzeuge


advanced_macro_de

Mehr zu Makro und Accessory

In diesem Kapitel werden tiefergehende Erläuterungen zu Makro und Accessory beschrieben.

Allgemein

Ein Makro dient zur Steuerung von Abläufen auf einer BiDiB-Baugruppe, wie z.B. der LightControl. Dazu werden mehrere Makroschritte in der konfigurierten Reihenfolge ausgeführt.
Die nachfolgende Abbildung zeigt den Makros-Reiter im BiDiB-Wizard.

Startbedingung

Jedes Makro kann zu einer konfigurierten Zeit durch die Modellbahn-Uhr gestartet werden. Dazu muss die Checkbox aktiviert werden und die Uhrzet ausgewählt werden. Zudem muss das Steuerungsprogramm regelmässig die aktuelle Modellbahn-Zeit senden.

Verzögerungsfaktor

Mit Anpassung des Verzögerungsfaktor kann die Ausführgeschwindigkeit des Makro angepasst werden. Dieser Verzögerungsfaktor gilt für alle „Verzögerungen“ (Eintrag in Spalte Wartezeit sowie in Schritten mit Port Typ „Verzögerung“) im aktuellen Makro. Ein Wert von 2 führt zu einer Verdoppelung der Wartezeit während der Ausführung.
Hinweis: Die Wartezeit wird in Ticks angegeben. Normalerweise (bei Verzögerungsfaktor 1) dauert ein Tick 20ms.

Durchläufe

Der Wert im Schieber Durchläufe bestimmt, wie oft ein Makro durchläuft, nachdem es gestartet wurde. Der Standardwert ist 1, wodurch ein gestartetes Makro 1-mal ausgeführt wird. Wird die Anzahl Durchläufe auf unendlich (∞) gesetzt, dann läuft das Makro bis es wieder gestoppt wird.

Makroschritte

In den folgenden Abschnitten werden die Optionen der Spalte Porttyp beschrieben.

Bei einigen Porttypen ist die Spalte Verzögerung aktiviert. Ein Verzögerungswert wird verwendet, um zu warten, bevor der Schritt ausgeführt wird. Wenn Sie vor dem Schritt eine Verzögerung hinzufügen möchten, müssen Sie den Port Typ Verzögerung verwenden.
Bei den Ticks handelt es sich um eine Zeitangabe für die Wartezeit bis zur Ausführung der Aktion. Die Grundeinheit ist ein Makro-Tick und beträgt 20 ms.

Makro

Der Porttyp Makro ermöglicht das Starten oder Stoppen eines anderen Makros aus dem ausgewählten Makro. Dies ist erforderlich, wenn mehrere Makros ausgeführt werden, die dieselben Ports steuern.

Eingang

Der Porttyp Eingang ermöglicht es, die aktuelle Makroausführung in diesem Schritt zu blockieren, bis die ausgewählte Option in der Spalte Action erfüllt ist. Wenn Sie Warten bis Wert=0 wählen, wird das Makro in diesem Schritt blockiert, bis der ausgewählte Eingabeport einen Wert von 0 (aus) hat. Wenn Sie Warten bis Wert=1 wählen, wird das Makro in diesem Schritt blockiert, bis der ausgewählte Eingabeport den Wert 1 (ein) hat.

Die nachfolgende Abbildung zeigt die Konfguration um das Makro im Schritt 2 so lange anzuhalten bis der Input_0 den Wert 0 hat.

Andere Port-Typen

Die anderen einfachen Porttypen wie

  • Lichtausgang
  • Servoausgang
  • Schaltausgang
  • Schaltausgang-Paar

ermöglichen die Ausführung einer Aktion am ausgewählten Port.

Für Servoausgang muss der Zielwert in der Spalte Extra eingegeben werden. Dieser Wert wird in diesem Schritt als Zielwert für das Servo verwendet.

Servo-Bewegung abwarten

Der Typ Servo-Bewegung abwarten blockiert das aktuelle Makro in diesem Schritt, bis das ausgewählte Servo den Zielwert erreicht hat.

Verzögerungen

Der Typ Verzögerung ermöglicht es, in diesem Schritt auf die konfigurierte Verzögerung zu warten.

Die Zufällige Verzögerung ermöglicht das Warten auf eine zufällige Verzögerung mit maximal der in diesem Schritt konfigurierten Verzögerung.

Bei den Ticks handelt es sich um eine Zeitangabe für die Wartezeit bis zur Ausführung der Aktion. Die Grundeinheit ist ein Makro-Tick und beträgt 20 ms.

In das Eingabefeld Wartezeit kann man nur einen Wert von 0-255 eintragen. Benötigt man eine größere Wartezeit, kann man die Ticks mit einem Verzögerungsfaktor verändern. Dafür gibt es den Verzögerungsfaktor-Schieber am oberen Bildrand des Aktionsfensters (siehe oben). Dieser Faktor wirkt jedoch auf alle Wartezeiten in diesem Makro.
Alternativ kann man auch mehrere Schritte vom Typ Verzögerung im Makro benutzen.

Flag

Der Typ Flag wird zum Löschen, Abfragen oder Setzen eines Flags verwendet. Ein Flag ist ein baugruppenweiter Merker und wird von allen Makros gemeinsam genutzt. Wenn Sie das Flag in einem Makro setzen oder löschen, sehen alle anderen Makros denselben Flag-Wert.
Dies kann verwendet werden, um ein Makro warten zu lassen (in diesem Schritt blockieren), bis ein Flag-Wert 0 (abfragen 0) oder 1 (abfragen 1) vor dem Makro erhält geht weiter.

Flags sind nur intern im Knoten verfügbar und der aktuelle Wert kann nicht von außerhalb einer Makroausführung abgefragt oder festgelegt werden.

Kritischer Bereich

Der Typ Kritischer Bereich wird verwendet, um die Schritte zwischen dem Schritt Kritischer Bereich, Aktion Start und dem Schritt Kritischer Bereich, Aktion Ende vor Unterbrechung oder Abbruch zu schützen .

:!: Der Schritt Kritischer Bereich ist eine Hülle um einige Schritte und daher müssen Sie einen Schritt Start und einen Schritt Ende haben, um korrekt zu funktionieren.

Accessory notify

Der Typ Accessory notify darf nur verwendet werden, wenn das Accessory das Ergebnis senden soll, bevor das Accessory fertig (wirklich fertig) ist.

Normalerweise wird die „Accessory fertig durchgelaufen“-Meldung immer nach dem Ende der Ausführung des Accessory gesendet (Normalfall: wenn das zugewiesene Makro beendet ist). Dies dient dazu den kritischen Vorgang der Accessory-Ausführung überwachen zu können. Falls nämlich ein Fehler auftritt wird der Fehler zurückgemeldet und nicht ok. Diese „Ende“-Mitteilung wird pro Ausführung eines Accessory genau 1x gesendet.

Falls man erreichen will, dass diese Benachrichtigung schon vor dem eigentlichen Ende der Ausführung des Accessory an das Steuerungs-Programm gesendet wird (weil z.B. alle kritischen Schaltvorgänge schon durchgeführt sind), dann kann man den Befehl „Accessory notify“ verwenden. Wenn man das „Accessory notify“ mehr als 1x im Makro drin hat, dann hat es keine Auswirkung mehr nachdem das 1. „Accessory notify“ gesendet wurde, denn der „Befehl“ wird nicht mehr gesendet.

Denken Sie z.B. an den Fall, dass das Makro die Tore eines Bahnübergangs schließt. Die Signalleuchten beginnen zu blinken, die Schranken werden mit dem Servo nach unten bewegt, erreichen ihre Endposition und die Signalleuchten sollten einige Zeit blinken. Das folgende Bild zeigt die erforderlichen Makros.

Wenn Sie den Aspekt des Zubehörteils zuweisen und die Testtaste drücken, befindet sich das Accessory im Status Ausstehend (das Uhrensymbol im Assistenten), bis der Eingang mit dem Namen Servoende rechts erreicht (oder links erreicht) den Wert 1 (ich habe es mit einer Verknüpfung auf GPIO 0 getestet, das ist Port 25) und erreicht dann den Status Fertig (das grüne Markierungssymbol im Assistenten). Wenn dieser Eingangsport nicht den Wert 1 erhält, wird das Zubehör nicht als fertig gemeldet und bleibt im Status Ausstehend.

Bei dieser Beschreibung handelte es sich um die normale Ausführung eines Accessory.

Wenn Sie signalisieren möchten, dass das Accessory früher fertig ist, weil Sie beispielsweise einen Ton hinzugefügt haben, der von Anfang an und während des Absenkens der Schranken abgespielt wird, und 20 Sekunden nachdem die Schranken (das Servo) die Endposition erreicht haben, sollte der Ton ausgeschaltet werden, dann könnten Sie die Accessory notify-Aktionen verwenden.

Sie können hier Accessory notify verwenden, da es dem Zug egal ist, ob der Ton aufgehört hat zu spielen, sondern nur, dass die Schranken unten sind und der Eingang 'Servo rechts/links umschalten erreicht' 'glücklich' ist.
In diesem Fall können Sie einen Schritt Accessory notify verwenden, nachdem die Endposition erreicht wurde (bestätigt durch die Eingabe), bevor der Ton beendet ist (und damit das Makro beendet ist).

Accessory notify - ' Okay melden, wenn Wert = 0 / 1'

Im folgenden Makro wird das Zubehör immer mit einem Fehler beendet, da in Schritt 4 der Eingang 24: Servo-Ende links erreicht wartet, bis er 1 wird, und einige ms später die Prüfung in Schritt 6 auf denselben Eingang mit einem Wert = ' erfolgt. 0' wird durchgeführt.
Daher sollte die Aktion als 'Ergebnis zurückgeben, okay, wenn Wert = '0' und andernfalls ein Fehler' interpretiert werden.

advanced_macro_de.txt · Zuletzt geändert: 2024/01/13 08:50 von akuhtz

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki