Hallo,
für ein aktuelles Kundenprojekt wollte ich mir durch einen maßgeschneiderten Logikbaustein etwas programmieraufwand ersparen.
Es geht um eine Lösung für die bedienung einer Musikanlage über normale 4fach Multifunktionstaster.
Die normale bedienung funktioniert soweit schon, nur der kunde will einen kleinen Schönheitsfehler behoben haben.
Wenn man am 4f. Taster eine Musikquelle auswählt, dann leuchtet die jeweilige LED am schalter auf und wird im moment über lichtszenen gegeneinader verriegelt/umgeschaltet.
also z.b. Quelle 1 ein = LED 1 ein, LED 2-6 aus
Quelle 2 ein = LED 2 aus, LED 1, 3-6 aus....
wenn die Musikwiedergabe aber ausgeschaltet wird, bleibt die Tasterled trotzdem an. der Kunde würde aber gerne haben, daß wenn die Musikanlage aus ist, daß auch die Taster-leds ausschalten, bei wiedereinschalten der anlage soll die aktuelle quelle aber auch gleich wieder signalisiert werden.
Ich hab mich da jetzt mal an meinem ersten Baustein versucht, und wollte jetzt von euch wissen, ob das ganze so paßt, oder ob man noch was verbessern könnte.
Funktionstechnisch soll der Baustein folgendes abarbeiten:
(Lichtszenenfunktion wird deaktiviert, schaltung der LEDs erfolgt dann über den Baustein)
umschaltung der quellen erfolgt mit einem 1Byte befehl,
byte 0 = Musikquelle 1
byte 1 = Musikquelle 2 usw
einen eingang im Baustein hab ich als Freigabe definiert,
das soll mein Eingang sein, wenn die musikanlage läuft.
auf den Ausgängen des Bausteins kommen dann die einzelnen LEDs des jeweiligen Tasters.
Logik für Quelle 1 ist also:
wenn Byteeingang = 0 und Freigabe = 1, dann LED 1 = 1, und LED 2-8=0
wenn freigabe = 0 LED 1-8=0.
hier die Logik:
vielen dank,
mfg Mike
P.S. hab noch ein Bild der Logik eingefügt, um das ganze besser zu verdeutlichen.
für ein aktuelles Kundenprojekt wollte ich mir durch einen maßgeschneiderten Logikbaustein etwas programmieraufwand ersparen.
Es geht um eine Lösung für die bedienung einer Musikanlage über normale 4fach Multifunktionstaster.
Die normale bedienung funktioniert soweit schon, nur der kunde will einen kleinen Schönheitsfehler behoben haben.
Wenn man am 4f. Taster eine Musikquelle auswählt, dann leuchtet die jeweilige LED am schalter auf und wird im moment über lichtszenen gegeneinader verriegelt/umgeschaltet.
also z.b. Quelle 1 ein = LED 1 ein, LED 2-6 aus
Quelle 2 ein = LED 2 aus, LED 1, 3-6 aus....
wenn die Musikwiedergabe aber ausgeschaltet wird, bleibt die Tasterled trotzdem an. der Kunde würde aber gerne haben, daß wenn die Musikanlage aus ist, daß auch die Taster-leds ausschalten, bei wiedereinschalten der anlage soll die aktuelle quelle aber auch gleich wieder signalisiert werden.
Ich hab mich da jetzt mal an meinem ersten Baustein versucht, und wollte jetzt von euch wissen, ob das ganze so paßt, oder ob man noch was verbessern könnte.
Funktionstechnisch soll der Baustein folgendes abarbeiten:
(Lichtszenenfunktion wird deaktiviert, schaltung der LEDs erfolgt dann über den Baustein)
umschaltung der quellen erfolgt mit einem 1Byte befehl,
byte 0 = Musikquelle 1
byte 1 = Musikquelle 2 usw
einen eingang im Baustein hab ich als Freigabe definiert,
das soll mein Eingang sein, wenn die musikanlage läuft.
auf den Ausgängen des Bausteins kommen dann die einzelnen LEDs des jeweiligen Tasters.
Logik für Quelle 1 ist also:
wenn Byteeingang = 0 und Freigabe = 1, dann LED 1 = 1, und LED 2-8=0
wenn freigabe = 0 LED 1-8=0.
hier die Logik:
#5000|"Text"|Remanent(1/0)|Anz.Eingänge|.n.|Anzahl Ausgänge|.n.|.n.
#5001|Anzahl Eingänge|Ausgänge|Offset|Speicher|Berechnung bei Start
#5002|Index Eingang|Default Wert|0=numerisch 1=alphanummerisch
#5003|Speicher|Initwert|Remanent
#5004|ausgang|Initwert|runden binär (0/1)|typ (1-send/2-sbc)|0=numerisch 1=alphanummerisch
#5012|abbruch bei bed. (0/1)|bedingung|formel|zeit|pin-ausgang|pin-offset|pin-speicher|pin-neg.ausgang
#################################################
### 5000 Definition für HS-Experte
#################################################
# 5000|Bezeichnung|Remanent|Anz.Eingänge|.n.|Anzahl Ausgänge|.n.
# Bezeichnung
# | Remanent
# | | Anz.Eingänge|.n.
# | | | Anzahl Ausgänge|.n.
# | | | |
5000|"Eigene Erweiterungen\Ausgangswahl-1Byte"|0|3|"E1 res"|"E2 Ausg"|"E3 Freigabe"|8|"A0"|"A1"|"A2"|"A3"|"A4"|"A5"|"A6"|"A7 "
#################################################
### 5001 Definition des Bausteins
#################################################
# 5001|Anzahl Eingänge|Ausgänge|Zeitspeicher|Speicher|Berechnung bei Init
# Anzahl Eingänge
# | Ausgänge
# | | Zeitspeicher
# | | | Speicher
# | | | | Berechnung bei Init
# | | | | |
5001|3|8|0|0|0
#################################################
### 5002 Definition der Eingänge EN[x]
#################################################
# 5002|Index Eingang|Default Wert|Datenformat 0=numerisch 1=alphanummerisch
# Index Eingang
# | Default Wert
# | | Datenformat
# | | |
5002|1|0|0
5002|2|0|0
5002|3|0|0
#################################################
###5003 Definition des Speichers SN[x]
#################################################
#5003|Index Speicher|Initwert|Remanent
# Index Speicher
# | Initwert
# | | Remanent
# | | |
#5003|1|0|0
#################################################
### 5004 Definition der Ausgänge AN[x]
#################################################
# 5004|Index Ausgang|Initwert|Runden binär|Typ (1-send/2-sbc)|Datenformat 0=numerisch 1=alphanummerisch
# Index Ausgang
# | Initwert
# | | Runden binär
# | | | Typ
# | | | | Datenformat
# | | | | |
5004|1|0|0|1|0
5004|2|0|0|1|0
5004|3|0|0|1|0
5004|4|0|0|1|0
5004|5|0|0|1|0
5004|6|0|0|1|0
5004|7|0|0|1|0
5004|8|0|0|1|0
################################################
### 5012 Definition der Formelzeile(n)
#################################################
# 5012|Ende nach Ausführen|Bedingung|Formel|Zeitformel|Ausgang|Zeit speicher|Speichervariable|Negierter Ausgang
# Ende nach Ausführen
# | Bedingung
# | | Formel
# | | | Zeitformel
# | | | | Ausgang
# | | | | | Zeitspeicher
# | | | | | | Speichervariable
# | | | | | | | Negierter Ausgang
# | | | | | | | |
# 5012|0|"EC[1] and EN[1]"|"1"|""|1|0|0|2
### Ausgang 1 setzen
5012|0|"(EN[2]==0)and EN[3]"|"1"|""|1|0|0|0
5012|0|"(EN[2]==0)and EN[3]"|"0"|""|2|0|0|0
5012|0|"(EN[2]==0)and EN[3]"|"0"|""|3|0|0|0
5012|0|"(EN[2]==0)and EN[3]"|"0"|""|4|0|0|0
5012|0|"(EN[2]==0)and EN[3]"|"0"|""|5|0|0|0
5012|0|"(EN[2]==0)and EN[3]"|"0"|""|6|0|0|0
5012|0|"(EN[2]==0)and EN[3]"|"0"|""|7|0|0|0
5012|0|"(EN[2]==0)and EN[3]"|"0"|""|8|0|0|0
### Ausgang 2 setzen
5012|0|"(EN[2]==1)and EN[3]"|"0"|""|1|0|0|0
5012|0|"(EN[2]==1)and EN[3]"|"1"|""|2|0|0|0
5012|0|"(EN[2]==1)and EN[3]"|"0"|""|3|0|0|0
5012|0|"(EN[2]==1)and EN[3]"|"0"|""|4|0|0|0
5012|0|"(EN[2]==1)and EN[3]"|"0"|""|5|0|0|0
5012|0|"(EN[2]==1)and EN[3]"|"0"|""|6|0|0|0
5012|0|"(EN[2]==1)and EN[3]"|"0"|""|7|0|0|0
5012|0|"(EN[2]==1)and EN[3]"|"0"|""|8|0|0|0
### Ausgang 3 setzen
5012|0|"(EN[2]==2)and EN[3]"|"0"|""|1|0|0|0
5012|0|"(EN[2]==2)and EN[3]"|"0"|""|2|0|0|0
5012|0|"(EN[2]==2)and EN[3]"|"1"|""|3|0|0|0
5012|0|"(EN[2]==2)and EN[3]"|"0"|""|4|0|0|0
5012|0|"(EN[2]==2)and EN[3]"|"0"|""|5|0|0|0
5012|0|"(EN[2]==2)and EN[3]"|"0"|""|6|0|0|0
5012|0|"(EN[2]==2)and EN[3]"|"0"|""|7|0|0|0
5012|0|"(EN[2]==2)and EN[3]"|"0"|""|8|0|0|0
### Ausgang 4 setzen
5012|0|"(EN[2]==3)and EN[3]"|"0"|""|1|0|0|0
5012|0|"(EN[2]==3)and EN[3]"|"0"|""|2|0|0|0
5012|0|"(EN[2]==3)and EN[3]"|"0"|""|3|0|0|0
5012|0|"(EN[2]==3)and EN[3]"|"1"|""|4|0|0|0
5012|0|"(EN[2]==3)and EN[3]"|"0"|""|5|0|0|0
5012|0|"(EN[2]==3)and EN[3]"|"0"|""|6|0|0|0
5012|0|"(EN[2]==3)and EN[3]"|"0"|""|7|0|0|0
5012|0|"(EN[2]==3)and EN[3]"|"0"|""|8|0|0|0
### Ausgang 5 setzen
5012|0|"(EN[2]==4)and EN[3]"|"0"|""|1|0|0|0
5012|0|"(EN[2]==4)and EN[3]"|"0"|""|2|0|0|0
5012|0|"(EN[2]==4)and EN[3]"|"0"|""|3|0|0|0
5012|0|"(EN[2]==4)and EN[3]"|"0"|""|4|0|0|0
5012|0|"(EN[2]==4)and EN[3]"|"1"|""|5|0|0|0
5012|0|"(EN[2]==4)and EN[3]"|"0"|""|6|0|0|0
5012|0|"(EN[2]==4)and EN[3]"|"0"|""|7|0|0|0
5012|0|"(EN[2]==4)and EN[3]"|"0"|""|8|0|0|0
### Ausgang 6 setzen
5012|0|"(EN[2]==5)and EN[3]"|"0"|""|1|0|0|0
5012|0|"(EN[2]==5)and EN[3]"|"0"|""|2|0|0|0
5012|0|"(EN[2]==5)and EN[3]"|"0"|""|3|0|0|0
5012|0|"(EN[2]==5)and EN[3]"|"0"|""|4|0|0|0
5012|0|"(EN[2]==5)and EN[3]"|"0"|""|5|0|0|0
5012|0|"(EN[2]==5)and EN[3]"|"1"|""|6|0|0|0
5012|0|"(EN[2]==5)and EN[3]"|"0"|""|7|0|0|0
5012|0|"(EN[2]==5)and EN[3]"|"0"|""|8|0|0|0
### Ausgang 7 setzen
5012|0|"(EN[2]==6)and EN[3]"|"0"|""|1|0|0|0
5012|0|"(EN[2]==6)and EN[3]"|"0"|""|2|0|0|0
5012|0|"(EN[2]==6)and EN[3]"|"0"|""|3|0|0|0
5012|0|"(EN[2]==6)and EN[3]"|"0"|""|4|0|0|0
5012|0|"(EN[2]==6)and EN[3]"|"0"|""|5|0|0|0
5012|0|"(EN[2]==6)and EN[3]"|"0"|""|6|0|0|0
5012|0|"(EN[2]==6)and EN[3]"|"1"|""|7|0|0|0
5012|0|"(EN[2]==6)and EN[3]"|"0"|""|8|0|0|0
### Ausgang 8 setzen
5012|0|"(EN[2]==7)and EN[3]"|"0"|""|1|0|0|0
5012|0|"(EN[2]==7)and EN[3]"|"0"|""|2|0|0|0
5012|0|"(EN[2]==7)and EN[3]"|"0"|""|3|0|0|0
5012|0|"(EN[2]==7)and EN[3]"|"0"|""|4|0|0|0
5012|0|"(EN[2]==7)and EN[3]"|"0"|""|5|0|0|0
5012|0|"(EN[2]==7)and EN[3]"|"0"|""|6|0|0|0
5012|0|"(EN[2]==7)and EN[3]"|"0"|""|7|0|0|0
5012|0|"(EN[2]==7)and EN[3]"|"1"|""|8|0|0|0
### Ausgänge auf 0, wenn Freigabe =0
### aber schalterzustand nicht löschen
5012|0|"(EN[3]==0)"|"0"|""|1|0|0|0
5012|0|"(EN[3]==0)"|"0"|""|2|0|0|0
5012|0|"(EN[3]==0)"|"0"|""|3|0|0|0
5012|0|"(EN[3]==0)"|"0"|""|4|0|0|0
5012|0|"(EN[3]==0)"|"0"|""|5|0|0|0
5012|0|"(EN[3]==0)"|"0"|""|6|0|0|0
5012|0|"(EN[3]==0)"|"0"|""|7|0|0|0
5012|0|"(EN[3]==0)"|"0"|""|8|0|0|0
### Umschalter.End
#5001|Anzahl Eingänge|Ausgänge|Offset|Speicher|Berechnung bei Start
#5002|Index Eingang|Default Wert|0=numerisch 1=alphanummerisch
#5003|Speicher|Initwert|Remanent
#5004|ausgang|Initwert|runden binär (0/1)|typ (1-send/2-sbc)|0=numerisch 1=alphanummerisch
#5012|abbruch bei bed. (0/1)|bedingung|formel|zeit|pin-ausgang|pin-offset|pin-speicher|pin-neg.ausgang
#################################################
### 5000 Definition für HS-Experte
#################################################
# 5000|Bezeichnung|Remanent|Anz.Eingänge|.n.|Anzahl Ausgänge|.n.
# Bezeichnung
# | Remanent
# | | Anz.Eingänge|.n.
# | | | Anzahl Ausgänge|.n.
# | | | |
5000|"Eigene Erweiterungen\Ausgangswahl-1Byte"|0|3|"E1 res"|"E2 Ausg"|"E3 Freigabe"|8|"A0"|"A1"|"A2"|"A3"|"A4"|"A5"|"A6"|"A7 "
#################################################
### 5001 Definition des Bausteins
#################################################
# 5001|Anzahl Eingänge|Ausgänge|Zeitspeicher|Speicher|Berechnung bei Init
# Anzahl Eingänge
# | Ausgänge
# | | Zeitspeicher
# | | | Speicher
# | | | | Berechnung bei Init
# | | | | |
5001|3|8|0|0|0
#################################################
### 5002 Definition der Eingänge EN[x]
#################################################
# 5002|Index Eingang|Default Wert|Datenformat 0=numerisch 1=alphanummerisch
# Index Eingang
# | Default Wert
# | | Datenformat
# | | |
5002|1|0|0
5002|2|0|0
5002|3|0|0
#################################################
###5003 Definition des Speichers SN[x]
#################################################
#5003|Index Speicher|Initwert|Remanent
# Index Speicher
# | Initwert
# | | Remanent
# | | |
#5003|1|0|0
#################################################
### 5004 Definition der Ausgänge AN[x]
#################################################
# 5004|Index Ausgang|Initwert|Runden binär|Typ (1-send/2-sbc)|Datenformat 0=numerisch 1=alphanummerisch
# Index Ausgang
# | Initwert
# | | Runden binär
# | | | Typ
# | | | | Datenformat
# | | | | |
5004|1|0|0|1|0
5004|2|0|0|1|0
5004|3|0|0|1|0
5004|4|0|0|1|0
5004|5|0|0|1|0
5004|6|0|0|1|0
5004|7|0|0|1|0
5004|8|0|0|1|0
################################################
### 5012 Definition der Formelzeile(n)
#################################################
# 5012|Ende nach Ausführen|Bedingung|Formel|Zeitformel|Ausgang|Zeit speicher|Speichervariable|Negierter Ausgang
# Ende nach Ausführen
# | Bedingung
# | | Formel
# | | | Zeitformel
# | | | | Ausgang
# | | | | | Zeitspeicher
# | | | | | | Speichervariable
# | | | | | | | Negierter Ausgang
# | | | | | | | |
# 5012|0|"EC[1] and EN[1]"|"1"|""|1|0|0|2
### Ausgang 1 setzen
5012|0|"(EN[2]==0)and EN[3]"|"1"|""|1|0|0|0
5012|0|"(EN[2]==0)and EN[3]"|"0"|""|2|0|0|0
5012|0|"(EN[2]==0)and EN[3]"|"0"|""|3|0|0|0
5012|0|"(EN[2]==0)and EN[3]"|"0"|""|4|0|0|0
5012|0|"(EN[2]==0)and EN[3]"|"0"|""|5|0|0|0
5012|0|"(EN[2]==0)and EN[3]"|"0"|""|6|0|0|0
5012|0|"(EN[2]==0)and EN[3]"|"0"|""|7|0|0|0
5012|0|"(EN[2]==0)and EN[3]"|"0"|""|8|0|0|0
### Ausgang 2 setzen
5012|0|"(EN[2]==1)and EN[3]"|"0"|""|1|0|0|0
5012|0|"(EN[2]==1)and EN[3]"|"1"|""|2|0|0|0
5012|0|"(EN[2]==1)and EN[3]"|"0"|""|3|0|0|0
5012|0|"(EN[2]==1)and EN[3]"|"0"|""|4|0|0|0
5012|0|"(EN[2]==1)and EN[3]"|"0"|""|5|0|0|0
5012|0|"(EN[2]==1)and EN[3]"|"0"|""|6|0|0|0
5012|0|"(EN[2]==1)and EN[3]"|"0"|""|7|0|0|0
5012|0|"(EN[2]==1)and EN[3]"|"0"|""|8|0|0|0
### Ausgang 3 setzen
5012|0|"(EN[2]==2)and EN[3]"|"0"|""|1|0|0|0
5012|0|"(EN[2]==2)and EN[3]"|"0"|""|2|0|0|0
5012|0|"(EN[2]==2)and EN[3]"|"1"|""|3|0|0|0
5012|0|"(EN[2]==2)and EN[3]"|"0"|""|4|0|0|0
5012|0|"(EN[2]==2)and EN[3]"|"0"|""|5|0|0|0
5012|0|"(EN[2]==2)and EN[3]"|"0"|""|6|0|0|0
5012|0|"(EN[2]==2)and EN[3]"|"0"|""|7|0|0|0
5012|0|"(EN[2]==2)and EN[3]"|"0"|""|8|0|0|0
### Ausgang 4 setzen
5012|0|"(EN[2]==3)and EN[3]"|"0"|""|1|0|0|0
5012|0|"(EN[2]==3)and EN[3]"|"0"|""|2|0|0|0
5012|0|"(EN[2]==3)and EN[3]"|"0"|""|3|0|0|0
5012|0|"(EN[2]==3)and EN[3]"|"1"|""|4|0|0|0
5012|0|"(EN[2]==3)and EN[3]"|"0"|""|5|0|0|0
5012|0|"(EN[2]==3)and EN[3]"|"0"|""|6|0|0|0
5012|0|"(EN[2]==3)and EN[3]"|"0"|""|7|0|0|0
5012|0|"(EN[2]==3)and EN[3]"|"0"|""|8|0|0|0
### Ausgang 5 setzen
5012|0|"(EN[2]==4)and EN[3]"|"0"|""|1|0|0|0
5012|0|"(EN[2]==4)and EN[3]"|"0"|""|2|0|0|0
5012|0|"(EN[2]==4)and EN[3]"|"0"|""|3|0|0|0
5012|0|"(EN[2]==4)and EN[3]"|"0"|""|4|0|0|0
5012|0|"(EN[2]==4)and EN[3]"|"1"|""|5|0|0|0
5012|0|"(EN[2]==4)and EN[3]"|"0"|""|6|0|0|0
5012|0|"(EN[2]==4)and EN[3]"|"0"|""|7|0|0|0
5012|0|"(EN[2]==4)and EN[3]"|"0"|""|8|0|0|0
### Ausgang 6 setzen
5012|0|"(EN[2]==5)and EN[3]"|"0"|""|1|0|0|0
5012|0|"(EN[2]==5)and EN[3]"|"0"|""|2|0|0|0
5012|0|"(EN[2]==5)and EN[3]"|"0"|""|3|0|0|0
5012|0|"(EN[2]==5)and EN[3]"|"0"|""|4|0|0|0
5012|0|"(EN[2]==5)and EN[3]"|"0"|""|5|0|0|0
5012|0|"(EN[2]==5)and EN[3]"|"1"|""|6|0|0|0
5012|0|"(EN[2]==5)and EN[3]"|"0"|""|7|0|0|0
5012|0|"(EN[2]==5)and EN[3]"|"0"|""|8|0|0|0
### Ausgang 7 setzen
5012|0|"(EN[2]==6)and EN[3]"|"0"|""|1|0|0|0
5012|0|"(EN[2]==6)and EN[3]"|"0"|""|2|0|0|0
5012|0|"(EN[2]==6)and EN[3]"|"0"|""|3|0|0|0
5012|0|"(EN[2]==6)and EN[3]"|"0"|""|4|0|0|0
5012|0|"(EN[2]==6)and EN[3]"|"0"|""|5|0|0|0
5012|0|"(EN[2]==6)and EN[3]"|"0"|""|6|0|0|0
5012|0|"(EN[2]==6)and EN[3]"|"1"|""|7|0|0|0
5012|0|"(EN[2]==6)and EN[3]"|"0"|""|8|0|0|0
### Ausgang 8 setzen
5012|0|"(EN[2]==7)and EN[3]"|"0"|""|1|0|0|0
5012|0|"(EN[2]==7)and EN[3]"|"0"|""|2|0|0|0
5012|0|"(EN[2]==7)and EN[3]"|"0"|""|3|0|0|0
5012|0|"(EN[2]==7)and EN[3]"|"0"|""|4|0|0|0
5012|0|"(EN[2]==7)and EN[3]"|"0"|""|5|0|0|0
5012|0|"(EN[2]==7)and EN[3]"|"0"|""|6|0|0|0
5012|0|"(EN[2]==7)and EN[3]"|"0"|""|7|0|0|0
5012|0|"(EN[2]==7)and EN[3]"|"1"|""|8|0|0|0
### Ausgänge auf 0, wenn Freigabe =0
### aber schalterzustand nicht löschen
5012|0|"(EN[3]==0)"|"0"|""|1|0|0|0
5012|0|"(EN[3]==0)"|"0"|""|2|0|0|0
5012|0|"(EN[3]==0)"|"0"|""|3|0|0|0
5012|0|"(EN[3]==0)"|"0"|""|4|0|0|0
5012|0|"(EN[3]==0)"|"0"|""|5|0|0|0
5012|0|"(EN[3]==0)"|"0"|""|6|0|0|0
5012|0|"(EN[3]==0)"|"0"|""|7|0|0|0
5012|0|"(EN[3]==0)"|"0"|""|8|0|0|0
### Umschalter.End
mfg Mike
P.S. hab noch ein Bild der Logik eingefügt, um das ganze besser zu verdeutlichen.
Kommentar