Ich nehme an, das war jetzt das Programm für Segment1. Kommt jetzt noch 5-mal das gleiche hinzu für die anderen 5 Segmente?
Ehe Du noch ein paar km Code eintippst, verrat uns doch mal, …
- wo die Information über die gewählte SegmentNr herkommt und in welcher Form (6 einzelne Bits? Für jedes Segment 1 eigenes Bit? Sollen mehrere Segmente gleichzeitig auf dieselbe Farbe eingestellt werden? ODER als Zahl, z.B. 1 bis 6 so dass immer nur in 1 einzigen Segment die Farbe angewählt werden kann?)
- wo die Information über die gewählte Farbe herkommt und in welcher Form (7 einzelne Bits? Für jede Farbe 1 eigenes Bit? ODER als Zahl, z.B. 0 bis 6)
- Warum beschränkst Du die Anzahl Farben von 7 auf 6?
Mein Vorschlag:
- 7 Farben + AUS
- FarbAnwahl über die Zahlen 0 bis 7
- die Zuordnung der Zahlen zu den Farben sinnvoll wählen (wie bereits in #6 beschrieben)
- SegmentAnwahl über die Zahlen 0 bis 5 oder 1 bis 6 oder … - … was erwartet Deine LED-Ansteuerung?
Ich verstehe nämlich nicht, warum EinzelBits mühsam auf verschiedene Zahlen umjongliert werden sollen/müssen.
Kennst Du die BinärDarstellung der Zahlen 0 bis 7?
Fällt es Dir schwer, Dir zu merken "1 für rot; 2 für grün, 4 für blau"? Die Zuordnung der Farben rot, grün und blau zu den Zahlen 1, 2 und 4 hängt davon ab, was Deine LED-Angelegenheit daraus macht.
Fällt es Dir schwer, Dir zu merken "rot und grün ergibt gelb; rot und blau ergibt violett; grün und blau ergibt türkis; rot und grün und blau ergibt weiss; weder rot noch grün noch blau ergibt schwarz (= AUS)"?
Du brauchst doch eigentlich nur die beiden Zahlen (Farbe und SegmentNr) 1:1 an die LED-Mimik (fast?) unverändert "durchzureichen" und musst nur noch ein ConfirmBit dazuzaubern - oder habe ich das so falsch verstanden?
Code:
L FarbNr // INT-Variable für FarbNr; IN; 0 bis 7
T MW0
U M1.0
= #color1_o // Ausgang für Farbe1, z.B. rot
U M1.1
= #color2_o // Ausgang für Farbe2, z.B. grün
U M1.2
= #color4_o // Ausgang für Farbe2, z.B. blau
L SegmentNr// INT-Variable für SegmentNr; IN; 1 bis 6
T MW2
U M3.0
= #segment1_o // Ausgang für Segment1
U M3.1
= #segment2_o // Ausgang für Segment2
U M3.2
= #segment4_o // Ausgang für Segment4
L FarbNrAlt // "neue" INT-Variable
L FarbNr // INT-Variable für FarbNr (s.o.)
T FarbNrAlt // "neue" INT-Variable - muss im jeweils folgenden PLC-Zyklus noch unverändert zur Verfügung stehen (z.B. IN-OUT)
<>I
// hier ggfs noch ImpulsVerlängerung einbauen - erstmal ohne Verlängerung testen!
= ConfirmBit // Ausgang für ConformBit - ist doch dasselbe Bit für alle Segmente?
// dieser Code ist schon der komplette Inhalt des FC! Es fehlen nur noch die VariablenDeklarationen.
Gruss, Heinileini
PS:
Dir HexZahlen in den farbigen Feldern sowie die Angaben "RGB(..., ..., ...)" gelten u.a. in Excel.
