Block Controller B

Q-SYS Control 101 Training (German) : Block Controller

3 ) Einfache Kommunikation

12m 54s

4 ) Block Controller

18m 50s

6 ) Flow Control

36m 23s

7 ) Fazit „Control 101“

1m 29s

Übungsbeschreibung

Block Controller B 9m 23s

Entdecke weitere Teile des Block Controllers, wie Regleränderungen, Flow Control, Wenn-Bedingungen, Operatoren, boolesche Werte und die Umwandlung von Blöcken in Lua-Skript.

Video Transkript

Block Controller B 9m 23s
0:08
Da sind wir wieder. Nehmen wir den Block Controller nun etwas genauer unter die Lupe und sehen
0:13
uns die restlichen Blocktypen an.
0:15
In der Block Controller Benutzeroberfläche schauen wir uns nun einen anderen Block-Typ genauer an.
0:21
Unter „Flow Control“ finden wir Blocks, die aufgrund bestimmter Parameter bestimmte Aktionen ausführen.
0:28
Wie in einem Flussdiagramm geht es an einer Verzweigung je nach Entscheidung auf einem der Pfade weiter.
0:35
Nehmen wir einmal diesen „if / do“-Block. Damit ist eine ganze Menge möglich. An diesem Slot hier
0:41
oben erkennen wir, dass es sich um einen Befehl handelt. An diesem Slot kann ein Wert oder
0:47
Parameter angedockt werden, und mit diesem „offenen Mund“ können wir die Aktion definieren.
0:53
Außerdem hat er dieses Zahnrad-Icon, dazu kommen wir gleich. Jetzt integrieren wir diesen Block
0:59
erst mal in unser Programm.
1:01
Im vorigen Video haben wir einen Schalter erstellt, dessen Label – oder “Legend” – beim Drücken auf
1:06
„ON“ wechselte. Um nun das Label bei nochmaligem Drücken auf „OFF“ zu schalten, müssen wir das
1:13
Programm verändern.
1:15
Wenn der Schalter AN ist, soll das Label ON lauten. Wenn der Schalter AUS ist, soll das Label OFF
1:20
lauten. Das ist die Flusssteuerung.
1:23
Wir trennen also den Block „set control“ vom Block „control change“ und fügen diesen stattdessen in
1:29
den „if“-Block ein. Jetzt können wir den „if“-Block in den Block „control change“ ziehen. Hierdurch
1:37
wird bei einem Druck auf den Schalter das Label nur dann verändert, wenn eine bestimmte
1:41
Bedingung erfüllt wird.
1:43
Ihr wisst sicher schon, was wir noch ergänzen müssen – die Bedingung… Wir müssen noch einen
1:48
Block einfügen, der auswertet, ob der Schalter gedrückt ist.
1:51
Schauen wir mal unter „Operators“. Hier finden wir Elemente, die bestimmte Funktionen ausführen.
1:57
In unserem Falle sind das einfache mathematische Berechnungen oder logische Funktionen wie zum
2:01
Beispiel ein Vergleich zwischen zwei Dingen.
2:04
Genau das tut dieser Block hier: Da steht „leer“ „ist gleich“ „leer“. So etwas brauchen wir jetzt. Also
2:11
fügen wir das unserem „if“-Block hinzu.
2:14
Das ist jetzt ein neuer Block-Typ. Statt seitlichen Slots hat dieser Block „Löcher“. Blocks, die in diese
2:21
Art Leerraum passen, haben wir schon kennengelernt – mit einem Tab an der Seite. Das sind Werte
2:25
oder Parameter.
2:27
Nun ziehen wir aus den „AMAZING“-Blöcken diesen Parameter in unser Programm: „AMAZING
2:32
Boolean“. Ein „boolescher Operator“ vergleicht immer genau zwei Werte. Wie bei unserem Schalter,
2:40
wo es nur An oder Aus gibt.
2:43
Für den zweiten Leerraum gehen wir in den Bereich „Values“ und ziehen diesen Block „wahr/falsch”
2:50
in unser Programm. Der passt in das zweite Loch unseres Blocks.
2:54
Unser bisheriges Programm lautet jetzt: Wenn sich der Status unseres Schalters ändert, und zwar auf
3:00
den Wert „wahr“, dann ändere das Label auf „ON“. Es fehlt also nur noch die Definition der Aktion,
3:07
wenn der Status sich zu „falsch“ ändert. Aber wo sollen wir das definieren? Unser Block hat keine
3:12
weiteren Slots!
3:14
! Hier kommt das Zahnrad ins Spiel, das wir vorhin kurz erwähnt haben. Einige Blocks, so wie dieser
3:19
hier, können konfiguriert werden. In diesem kleinen Fenster wird eine Art Mini-Version der Block
3:24
Controller Benutzeroberfläche angezeigt.
3:27
Auf der rechten Seite ist unser Block, auf der linken Seite die Library mit möglichen Ergänzungen, die
3:33
wir dem Block hinzufügen können – wie in der normalen Oberfläche. Wenn wir nun eine der
3:37
Optionen, z.B. dieses Element „else“ – also “sonst” – hinzufügen, sehen wir, dass der Block sich auch
3:43
in der Hauptansicht verändert. Wir haben nun einen neuen Bereich, in dem wir einen weiteren
3:48
Befehl hinzufügen können.
3:51
Mit einem weiteren Klick auf das Zahnrad schließen wir das Konfigurationsfenster. Jetzt brauchen wir
3:56
einen weiteren Block „set Legend“. Diesen können wir einfach von oben kopieren.
4:01
Die meisten Windows-Tastaturkurzbefehle funktionieren auch in dieser Oberfläche. Zum Kopieren
4:07
drücke ich also Steuerung+C und füge die „else“-Bedingung mit Steuerung+V ein. Jetzt muss ich nur
4:13
noch den Text von „ON“ auf „Off“ ändern.
4:17
Lesen wir unser Programm noch einmal: Wenn sich der Status des Schalters ändert, und zwar auf den
4:24
Wert „wahr“, dann ändere das Label zu „ON“. Ansonsten ändere das Label zu „OFF“. Sieht gut aus!
4:32
Am Ende gibt es nur noch ein paar Kleinigkeiten zu beachten.
4:36
Zunächst müssen wir alles mit dieser gelben „Save changes“ Schaltfläche speichern, um den
4:41
Programmcode zu aktivieren. Auf diese Art kannst du ein Programm live bearbeiten, ohne den
4:46
laufenden Betrieb zu beeinflussen. Der alte Code bleibt aktiv, bis du deine Änderungen speicherst.
4:53
Nach dem Speichern können wir zum Designer Schema wechseln und testen, ob alles funktioniert.
4:58
Wenn ich den Schalter ausschalte, ändert sich das Label zu „OFF“. Wenn ich den Schalter einschalte,
5:03
ändert es sich zu „ON“. Hervorragend!
5:07
Okay, du hast recht! Wir haben jetzt 10 Minuten gebraucht, nur um eine Schalterbeschriftung zu
5:11
manipulieren; das ist nicht gerade beeindruckend. NOCH NICHT. Mit dieser Anleitung wollen wir nur
5:17
demonstrieren, wie die Blocks grundsätzlich funktionieren. Tatsächlich kannst du mit dem Block
5:21
Controller aber viel komplexere Dinge realisieren. Du kannst zum Beispiel Befehle ineinander
5:25
verschachteln. Die Blocks wirken recht starr, sind aber unglaublich wandlungsfähig und lassen sich
5:30
ganz nach deinen Bedürfnissen anpassen.
5:33
Wenn ich zum Beispiel die Farbe dieses Schalters anpassen will, kann ich einfach einen „set color“
5:38
Befehl ergänzen und der Block erweitert sich.
5:41
Auf diese Art kannst du so viele Befehle ergänzen, wie du willst: Wenn der Schalter gedrückt wird,
5:47
ändere die Beschriftung und die Farbe; setze einen anderen Schalter zurück; aktiviere einen Timer;
5:52
schalte eine Lichtquelle ein; ändere die sichtbare Ebene auf dem Steuerungs-Touchscreen; aktiviere
5:57
die Pyrotechnik, und so weiter… alles auf einmal. Plötzlich haben wir einen Schalter, der viel mehr
6:02
kann als nur eine Beschriftung zu verändern. Und genau darum geht es – da wollen wir hin.
6:13
Für unser einfaches Beispiel belasse ich es jetzt aber dabei, Befehle hinzuzufügen, die den Schalter
6:17
grün färben, wenn er an ist, und rot, wenn er aus ist. Nach dem Speichern habe ich im Schema einen
6:23
Schalter, der seine Farbe und seine Beschriftung ändert, wenn man ihn drückt.
6:27
Eine weitere wichtige Funktion im Block Controller öffnet sich per Rechtsklick auf einen Block. In
6:32
diesem Kontextmenü kannst du zum Beispiel über „Show Comments“ ein Kommentarfeld für diesen
6:37
Block aufrufen.
6:39
Hier kannst du eingeben, was auch immer du willst. Das beeinflusst die Funktion des Blocks nicht,
6:43
ermöglicht es dir aber dem Block einen Titel zu geben.
6:48
Mit der Option „Collapse Block“ kannst du den Block auf nur eine sichtbare Zeile zusammenklappen.
6:54
Auch das beeinflusst den Code nicht, kann aber bei komplexen Programmen sehr nützlich sein um
6:59
sich auf einen bestimmten Bereich zu fokussieren.
7:01
Das gezackte Ende symbolisiert einen eingeklappten Block, den du jederzeit wieder ausklappen und
7:06
weiterbearbeiten kannst.
7:08
OK – Das beste habe ich mir für den Schluss aufgehoben: Ich habe ganz am Anfang erwähnt, dass
7:13
der Block Controller es ermöglicht, Programme zu erstellen, ohne – wie ich – echte
7:17
Programmierkenntnisse zu haben. Diese Blocks schreiben nämlich im Hintergrund den
7:21
Programmcode für dich! …Und den kann ich mir unter dem „Lua“-Tab ansehen.
7:27
Das ist das Lua-Skript, das wir bisher erstellt haben. Das hier oben sind nur allgemeine Definitionen.
7:33
Unseren Block sehen wir hier unten. Nachdem du jetzt weißt, wie die Sprache strukturiert ist, kannst
7:38
du das vielleicht sogar „lesen“.
7:41
Mit Programmierkenntnissen hättest du das hier vermutlich eher direkt geschrieben ohne den Blog
7:45
Controller zu verwenden. Wenn du aber irgendetwas falsch geschrieben, einen Großbuchstaben
7:50
vergessen oder du dich bei einer Formatierung vertan hättest, würde dein Skript nicht funktionieren.
7:55
Der Block Controller nimmt dir all diese Arbeit ab und lässt dich dein Programm mit Hilfe von
7:59
Puzzleteilen erstellen und schreibt den Code im Hintergrund – ganz ohne Syntax-Fehler.
8:05
Es kann hilfreich sein das fertige Skript im Lua-Tab zu lesen, wenn du Programmieren in Lua lernen
8:10
möchtest. Du kannst den Code sogar weiterbearbeiten. Dafür klickst du auf das Icon hier oben und
8:15
wählst „Convert to Script“. Zunächst bekommst du dann allerdings – mit gutem Grund – einen
8:21
Warnhinweis angezeigt.
8:23
Du kannst Blocks in Lua-Skript umwandeln und das Skript direkt bearbeiten, aber du kannst editierten
8:28
Code nicht zurück in Blocks umwandeln. Ein Klick auf OK öffnet dann einen Text-Editor für
8:33
Programmcode. Zwar gibt es die Option „Revert to Blocks“ – hiermit wird aber der letzte Stand deiner
8:39
Block-Programmierung wiederhergestellt und du verlierst deine Änderungen im Lua-Skript.
8:45
Das ist also der Block Controller. Bisher haben wir nur einen kleinen Teil dessen gesehen, was der
8:50
Block Controller ist und was die Blocks in den unterschiedlichen Kategorien tun. Wir wollten dir einen
8:55
Einblick geben, wie die Blocks ineinandergreifen und in wieweit diese anpassbar sind und hoffen, du
9:00
bist jetzt etwas mit der Navigation und den Optionen der Benutzeroberfläche vertraut. In weiteren
9:06
Videos werden wir mehr ins Detail gehen, uns mit den Grundkonzepten der Programmiersprache
9:11
beschäftigen und uns ansehen, wie diese umgesetzt werden – in Lua und mit Hilfe des Block
9:16
Controllers. Bis dahin – Danke fürs Zuschauen.