Forum: Mikrocontroller und Digitale Elektronik Implizite Adressierung DMX?


von Conny G. (conny_g)


Lesenswert?

Hi,

ich bastle an einer Schaltung, die DMX-gesteuert ist, einen Master 
(sendet DMX-Daten) und Slaves (empfangen DMX-Daten), die je 6 PWM-Kanäle 
haben.
Das Gesamtsteuersystem ist modular aufgebaut:

Master -> (DMX) -> Slave -> (DMX) -> Slave -> (DMX)

Normalerweise hängen ja nun alle Slaves am DMX-Bus und haben z.B. über 
DIP-Schalter ihre DMX-Adresse eingestellt.
Sie empfangen alle Daten aus dem 512-Werte-Stream von DMX und nehmen 
sich diejenigen, die auf Basis ihrer Adresse für sie wichtig sind.

Ich habe nun z.b. 3 Slaves, die nacheinander hängen und eigentlich nicht 
wirklich eine explizite Adresse bräuchten, da sie einfach die 
nachfolgenden Daten nach dem ersten Slave nehmen sollen.
Die ganze Installation ist statisch auf ein paar Jahre, also muss da 
wirklich keine DIP-Schalter auf der Platine haben.
(Vielleicht noch für universelle Verwendbarkeit in anderen Kontexten, 
aber ich müsste sie hier nicht bestücken.)

Jetzt wäre das m.E. auf zwei Arten zu lösen:
- jeder Slave gibt dem nächsten eine Adresse bzw. jeder Slave fragt 
seinen Vorgänge, was er ist. Dazu bräuchte es aber eine zusätzlich 
Datenverbindung oder einen "Init-Modus" auf dem DMX-Bus
- jede Slave nimmt die gesamt Chain an DMX-Daten auf, nimmt sich seine 
ersten 6 Wert und schickt dem nächsten Slave modifizierte Daten, d.h. 
rutscht die Werte 7-12 an den Anfang, hängt am Ende 6x Null an und 
schickt das an den nächsten Slave

Habe ich noch eine Lösungsmöglichkeit übersehen?
Habt ihr noch Ideen dazu?
Schom mal jemand sowas gemacht?

Vg,
Conny

von Martin (Gast)


Lesenswert?

Hi

Conny G. schrieb:
> Hi,
>
> ich bastle an einer Schaltung, die DMX-gesteuert ist, einen Master
> (sendet DMX-Daten) und Slaves (empfangen DMX-Daten), die je 6 PWM-Kanäle
> haben.
> Das Gesamtsteuersystem ist modular aufgebaut:
>
> Master -> (DMX) -> Slave -> (DMX) -> Slave -> (DMX)

Das sieht für mich so aus als würden deine Slaves das DMX-Signal 
empfangen und danach AKTIV weitersenden.
Alle mir bekannten DMX-Slaves haben eine DIREKTE elektrische Verbindung 
zwischen Ein- und Ausgangsbuchse. So das das Signal auch weitergeleitet 
wird wenn das Gerät defekt oder ausgeschaltet ist.

> Normalerweise hängen ja nun alle Slaves am DMX-Bus und haben z.B. über
> DIP-Schalter ihre DMX-Adresse eingestellt.
> Sie empfangen alle Daten aus dem 512-Werte-Stream von DMX und nehmen
> sich diejenigen, die auf Basis ihrer Adresse für sie wichtig sind.

Richtig.

> Ich habe nun z.b. 3 Slaves, die nacheinander hängen und eigentlich nicht
> wirklich eine explizite Adresse bräuchten, da sie einfach die
> nachfolgenden Daten nach dem ersten Slave nehmen sollen.
> Die ganze Installation ist statisch auf ein paar Jahre, also muss da
> wirklich keine DIP-Schalter auf der Platine haben.
> (Vielleicht noch für universelle Verwendbarkeit in anderen Kontexten,
> aber ich müsste sie hier nicht bestücken.)
>
> Jetzt wäre das m.E. auf zwei Arten zu lösen:
> - jeder Slave gibt dem nächsten eine Adresse bzw. jeder Slave fragt
> seinen Vorgänge, was er ist. Dazu bräuchte es aber eine zusätzlich
> Datenverbindung oder einen "Init-Modus" auf dem DMX-Bus
> - jede Slave nimmt die gesamt Chain an DMX-Daten auf, nimmt sich seine
> ersten 6 Wert und schickt dem nächsten Slave modifizierte Daten, d.h.
> rutscht die Werte 7-12 an den Anfang, hängt am Ende 6x Null an und
> schickt das an den nächsten Slave

Dann ist es aber kein DMX mehr sondern eine anderes Bus-System.
Wenn ein Slave ausfällt ist deine Kette tot.
Wenn ein Slave noch den vorderen in der Kette fragen soll, welche 
Adresse er selber hat wird es auch noch komplizierter, da jeder Slave in 
zwei Richtungen senden und empfangen muß ....
Eine Integration von Fertiggeräten ist unmöglich.
( Selbstbau lohnt sich nicht immer ... )

> Habe ich noch eine Lösungsmöglichkeit übersehen?
> Habt ihr noch Ideen dazu?

1.
Ja, wenn deine Installation statisch ist und du den Aufwand für Jumper / 
DIP-Schalter sparen möchtest, programmier die Adresse fest ein.

2.
Eine Lösung benutzt nur einen Taster. Ist der gedrückt, wird die erste 
Adresse deren Wert über 127 ist, als Adresse im EEPROM übernommen.

3.
Eine andere Lösung nimmt bei Tastendruck die Adresse aus Kanal 511/512
....

> Schom mal jemand sowas gemacht?

Nein, ich mag es individuell einstellbar, da nichts so stetig ist wie 
der Wandel ;-)
Bei meine ca. 60 DMX-Slaves mit insgesammt über 650 Kanälen in 4 
DMX-Universen hat sich das bewährt.
Meine DMX-Switches und LED-PWM-Dimmer sind selbst nachgebaut.
MovingHeads / PAR-Spots usw kann man billiger kaufen ...

> Vg,
> Conny

MfG
Martin

von Conny G. (conny_g)


Lesenswert?

@Martin

auf Basis Deiner Argumentation habe ich also die Wahl zwischen Standard 
(ein DMX-Client weiss seine Adresse) und proprietär (dynamische 
Adresse).
Das ist nachvollziehbar und ich sehe den Punkt, dass es langfristig 
einfacher ist, statische Adressen zu haben.
Ich glaube das überzeugt mich bei den DIP-Schaltern zu bleiben.
Denn ein eigenes Programmiertool für DMX-Clients ist auch müssig, was 
man mit den Programmiertaster-Lösungen ja bräuchte.

Das ist übrigens der Slave an dem ich arbeite:
Beitrag "Review von Schaltung und Routing"

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.