IND - DMX-Controller-Programmierung

Einfache Programmierung

Der folgende Absatz zeigt die Betriebsmodi des IND-DMX-Controllers und ihre einfache Anwendung:

Modus-Nr.: Beschreibung


(1)

PC-getriebene Steuerung
von bis zu echten 512 Kanälen als repetierende Sequenz der Kanalsteuerbytes. Die einzelnen Kanalsteuerwerte werden in das DMX-Format übersetzt und fast in Echtzeit auf den DMX-Bus ausgegeben.
 
Es gibt aus Kompatibilitäsgründen zwei verschiedene Befehle:

- 'P' -
Ausgabe einer Kanalbyte-Kette bis zu einer Länge von 255 Kanalbytes
- 'D' -
Ausgabe einer Kanalbyte-Kette bis zu einer Länge von 512 Kanalbytes. Hierzu ist die Vorgabe der Kanalzahl in Highbyte und Lowbyte erforderlich.


String-Syntax, repetierend:


" 'P' , <Kanalzahl> , <Kanal0-Byte> , <Kanal1-Byte> , <Kanal2-Byte> , <Kanal3-Byte>, <Kanal4-Byte> , <Kanal5-Byte>,... "

" D' , <Kanalzahl-Highbyte> , <Kanalzahl-Lowbyte> ,<Kanal0-Byte> , <Kanal1-Byte> , <Kanal2-Byte> , <Kanal3-Byte>, <Kanal4-Byte> , <Kanal5-Byte>,... "

Programmierbeispiel:

Steuerung einer DMX-Lampe mit

Kanal 0 = Statusbyte (= Wert 0)
Kanal 1 = Modus (= Wert 0)
Kanal 2 = Rot (= Wert 128)
Kanal 3 = Grün (= Wert 200)
Kanal 4 = Blau (= Wert 255)
Kanal 5 = Dummy (= Wert 0)

=> Summe 6 Kanäle

String, repetierend:

" 'P' , 6 , 0 , 0 , 128 , 200 , 255 , 0 "
" 'P' , 6 , 0 , 0 , 128 , 200 , 255 , 0 "
" 'P' , 6 , 0 , 0 , 128 , 200 , 255 , 0 "
...

Beträgt die Kanalzahl mehr als 256 Kanäle, so wird sie in ein Highbyte HB und ein Lowbyte LB unterteilt. Die Befehlssyntax ist dann z.B. bei 258 Kanälen:

" 'D' , 1 , 2 , 0 , 0 , 128 , 200 , 255 , 0, ...... "
" 'D' , 1 , 2 , 0 , 0 , 128 , 200 , 255 , 0, ...... "
" 'D' , 1 , 2 , 0 , 0 , 128 , 200 , 255 , 0, ...... "
...

Hierbei ist HB = 1 und LB = 2, da 1 * 256 + 2 = 258. Die weiteren 252 Kanäle sind hier nicht notiert.


(2)

Controller-getriebene Steuerung von bis zu 512 Kanälen. Der Controller erzeugt die repetierende Sequenz s.o. selbst. Der PC liefert nur die Änderungen der Lichteinstellung, wobei jeder Kanal direkt steuerbar ist. Das bedeutet eine stark verminderte Belastung des PCs und der Schnittstelle zum Controller, und bei Ausfall des PCs etc. bleibt die Beleuchtungssituation erhalten, die Lampen erlöschen nicht!
 
Es gibt 3 verschiedene Befehle:

- 'K' - Einstellung der Kanalzahl im System
- 'I' - Ausgabe eines Bytes für einen bestimmten Lichtkanal mit einer Nummer < 256
- 'J' - Ausgabe eines Bytes für einen bestimmten Lichtkanal mit einer Nummer >= 256

String-Syntax, NICHT repetierend:

" 'K' , <Kanalnummer-Highbyte> ,<Kanalnummer-Lowbyte> , 0"
" I' , <Kanalnummer> ,<Byte für diesen Kanal> "
" J' , <Kanalnummer+256> ,<Byte für diesen Kanal> "


Programmierbeispiel:

Steuerung einer DMX-Lampe mit

Kanal 0 = Statusbyte (= Wert 0)
Kanal 1 = Modus (= Wert 0)
Kanal 2 = Rot (= Wert 128)
Kanal 3 = Grün (= Wert 200)
Kanal 4 = Blau (= Wert 255)
Kanal 5 = Dummy (= Wert 0)

=> Summe 6 Kanäle

String, NICHT repetierend:

" 'K' , 1 , 2 , 0"

Der Befehl 'K' leitet die Eingabe der Kanalzahl ein. Im Beispiel sind es 258 Kanäle. Die folgenden Bytes entsprechen dieser Kanalzahl in Highbyte HB und Lowbyte LB wie bei Modus (1). Das vierte Byte ist in diesem Modus immer 0. Dieser Befehl wird einmal gesendet und nur wiederholt, wenn sich die Kanalzahl geändert hat.

Dann folgen die Kanalbytes, also die einzelnen Werte, welche der Controller auf den entsprechenden Kanälen ausgibt:

" 'I' , 0 , 0 "

Der Befehl 'I' wählt den Kanal 0 (im Bereich 0...255). Dieser Kanal wird im 2. Byte geschrieben. Das 3. Byte ist der Wert, der diesem Kanal zugeordnet werden soll.
Die restlichen Bytesequenzen lauten:

" 'I' ,1 , 0 "
" 'I' ,2 ,128 "
" 'I' , 3 , 200 "
" 'I' ,4 , 255 "
" 'I' ,5 , 0 "
...

Im Falle von Kanaladressierungen im Bereich 256...511 wird die 'J'- Sequenz verwendet. Diese arbeitet wie das 'I'-Kommando, jedoch bedeuten Kanaladressierungen immer einen um 256 höheren Kanal:

Eine Sequenz

" 'J' ,0 , 0 "
" 'J' ,1 , 0 "
" 'J' ,2 ,128 "
" 'J' , 3 , 200 "
" 'J' ,4 , 255 "
" 'J' ,5 , 0 "
...

legt also die Kanalbytes 256 .. 261 fest.

Die Unterscheidung in 'I'- und 'J'-Kommando dient lediglich zur Einsparung der Übertragung des Highbytes der Kanalnummer.


(3)

Intervallsteuerung von über PC vorgegebenen Beleuchtungseinstellungen. In einstellbar 0.2 ...60 Sekunden-Intervallen wird die Beleuchtungseinstellung gewechselt. In dieser Betriebsart gilt lediglich: Kanalumfang*Intervallzahl < 512 . Nach der Vorgabe der Beleuchtungssequenzen wird der PC nicht mehr benötigt. Der Controller arbeitet dann selbsständig.
 
Mit den Befehlen der Betriebsart (2) kann nicht nur eine DMX-Kanalsequenz festgelegt werden, sondern mehrere, welche sich mit einer bestimmten Intervallzeit abwechseln. Da der RAM-Speicher des Controllers 512 Kanalbytes speichern kann, lässt sich dieser Speicher auch aufteilen in mehrere Sequenzen zu je der höchsten Kanalzahl, welche sich im System befindet.

Wenn also z.B. eine DMX-Lampe mit 4 Kanälen benutzt wird, dann ließen sich 512/4 =128 Byte-Sequenzen (=Lichteinstellungen) programmieren, welche mit einer Intervallzeit abwechseln.

Es gibt wie vor 3 verschiedene Befehle:

- 'K' - Einstellung der Kanalzahl im System
- 'I' - Ausgabe eines Bytes für einen bestimmten Lichtkanal mit einer Nummer < 256
- 'J' - Ausgabe eines Bytes für einen bestimmten Lichtkanal mit einer Nummer >= 256

String-Syntax, NICHT repetierend:

" 'K' , <Kanalnummer-Highbyte> ,<Kanalnummer-Lowbyte> , Intervallzeit"
" I' , <Kanalnummer> ,<Byte für diesen Kanal> "
" J' , <Kanalnummer+256> ,<Byte für diesen Kanal> "

Die Intervallzeit ist ebenfalls ein Bytewert 0...255, wobei die reale Intervallzeit Wert* 0.25 Sekunden beträgt.

Programmierbeispiel:

Steuerung einer DMX-Lampe mit

Kanal 0 = Statusbyte (= Wert 0)
Kanal 1 = Modus (= Wert 0)
Kanal 2 = Rot (= Wert 128)
Kanal 3 = Grün (= Wert 200)
Kanal 4 = Blau (= Wert 255)
Kanal 5 = Dummy (= Wert 0)

(=> Summe 6 Kanäle)

Kanal 6 = Statusbyte (= Wert 0)
Kanal 7 = Modus (= Wert 0)
Kanal 8 = Rot (= Wert 120)
Kanal 9 = Grün (= Wert 210)
Kanal 10 = Blau (= Wert 230)
Kanal 11 = Dummy (= Wert 0)

.....

Kanal 504 = Statusbyte (= Wert 0)
Kanal 505 = Modus (= Wert 0)
Kanal 506 = Rot (= Wert 125)
Kanal 507 = Grün (= Wert 10)
Kanal 508 = Blau (= Wert 22)
Kanal 509 = Dummy (= Wert 0)

String, NICHT repetierend:

" 'K' , 0 , 6 , 2"

Der Befehl 'K' leitet die Eingabe der Kanalzahl ein. Im Beispiel sind es 6 Kanäle. Die folgenden Bytes entsprechen dieser Kanalzahl in Highbyte HB und Lowbyte LB wie bei Modus (1). Das vierte Byte ist in diesem Modus die Intervallzeit, die hier mit 2*0,25 Sekunden insgesamt 0.5 Sekunden beträgt. Dieser Befehl wird einmal gesendet und nur wiederholt, wenn sich die Kanalzahl geändert hat.

Dann folgen die Kanalbytes, also die einzelnen Werte, welche der Controller auf den entsprechenden Kanälen ausgibt:

" 'I' , 0 , 0 "

Der Befehl 'I' wählt den Kanal 0 (im Bereich 0...255). Dieser Kanal wird im 2. Byte geschrieben. Das 3. Byte ist der Wert, der diesem Kanal zugeordnet werden soll.
Die restlichen Bytesequenzen lauten:

" 'I' , 1 , 0 "
" 'I' , 2 ,128 "
" 'I' , 3 , 200 "
" 'I' , 4 , 255 "
" 'I' , 5 , 0 "
...

Im Falle von Kanaladressierungen im Bereich 256...511 wird die 'J'- Sequenz verwendet. Diese arbeitet wie das 'I'-Kommando, jedoch bedeuten Kanaladressierungen immer einen um 256 höheren Kanal.

Die letzte Sequenz in obigem Beispiel lautet also z.B:

" 'J' , 248 , 0 "
" 'J' , 249 , 0 "
" 'J' , 250 ,125 "
" 'J' , 251 , 10 "
" 'J' , 252 , 22 "
" 'J' , 253 , 0 "

Die Unterscheidung in 'I'- und 'J'-Kommando dient lediglich zur Einsparung der Übertragung des Highbytes der Kanalnummer.


(4)

Speicherung der Beleuchtungssituation ^von bis zu 253 Kanälen. Über einen PC-Befehl kann eine bestimmte Kanalsequenz nach (2) im Adapter gespeichert werden und steht dann auch ohne PC nach dem neuen Einschalten des Controllers zur Verfügung. Das heißt, alle DMX-Geräte nehmen den Zustand bei Speicherung der Beleuchtungseinstellung ein. Der DMX-Adapter kann somit auch z.B als autarkes Testgerät dienen.
 
Es gibt nur den Befehl:

- 'S' -
Speichern

Der Befehl speichert sogar die ersten 253 Kanäle in das EEPROM des Controllers, ein nichtflüchiger Speicher, der beim erneuten Einschalten des Controllers die Daten zur Verfügung stellt.

Nach dem Einschalten (ohne PC) arbeiten die DMX-Geräte, wie zum Zeitpunkt der Speicherung.

String-Syntax, Programmierung


" 'S' "


(5)

Speicherung der Beleuchtungsintervalle. Über einen PC-Befehl kann eine Abfolge von Kanalsequenzen nach (3) gespeichert werden. In dieser Betriebsart gilt lediglich: Kanalumfang*Intervallzahl < 253 . Der DMX-Adapter kann somit z.B. auch als autarkes Lichtsteuergerät ohne PC z.B. für Schaufenster zu Werbezwecken oder sonstige Lichtabfolgen dienen.
 
Es gibt nur den Befehl:

- 'S' -
Speichern

Der Befehl speichert sogar die ersten 253 Kanäle in das EEPROM des Controllers, ein nichtflüchiger Speicher, der beim erneuten Einschalten des Controllers die Daten zur Verfügung stellt.

Nach dem Einschalten (ohne PC) arbeiten die DMX-Geräte, wie zum Zeitpunkt der Speicherung.

String-Syntax, Programmierung


" 'S' "


(6)

Kompatibilität zu anderen DMX-Controllern. D.h., das Gerät kann ggf. als Ersatz für andere dienen, wenn er diese emulieren kann. Informationen hierzu entnehme man den Parametrierungsmodi des Controllers im Vergleich mit dem zu ersetzenden Produkt.
  (Siehe oben)