Array? String? helft mir bitte!!!

KingHelmer

Level-1
Beiträge
1.076
Reaktionspunkte
139
Zuviel Werbung?
-> Hier kostenlos registrieren
Guten Morgen!

Ich bin derzeit dabei eine Visu zu erstellen, bei der die Lichtintensität von 3 verschiedenen Farben dargestellt wird.
Dazu würde ich den folgenden Code verwenden, um die Analogwerte an den 3 Ausgängen auf 40 Schritte einzuteilen:

Code:
IF %QW0 >= ((32761/40)*2) THEN     
RMR2 := TRUE;                                        (*RMR2 = "[B]R[/B]ück[B]M[/B]eldung[B]R[/B]ot[B]2[/B]*)
ELSE RMR2 := FALSE;
END_IF;

Ich denke, die Logik dürfte klar sein...

Aber wie kann ich mir nun die Arbeit sparen, dieses 120 Mal (40x pro Farbe) aufzuschreiben.
Gibt es hier irgendwas? Ich hatte etwas von Arrays oder ähnlichem gehört, könnt ihr mir ein wenig weiterhelfen?

Danke im Voraus und Grüße,

Florian
 
Ganz ehrlich, ich verstehe nicht wirklich was du machen willst.
Soll die Lichtintensität von jedem Farbkanal als Zahlenwert dargestellt werden? Oder willst du wirklich 40 Meldebits je Farbe setzen und die dann mit Textmeldungen in der Visu verknüpfen?

Warum gibtst du die Intensität nicht einfach als prozentualen Wert an? (Prozent := (WORD_TO_REAL(%QW0) / 32767) * 100; ) -> 0...100%

PS:
Tue dir selber einen Gefallen und benenne alle Variablen die du verwendest. Wenn du später in dein Programm schaust wirst du mit %QW0 nicht mehr viel anfangen können ......
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi,

also ich erkläre es etwas genauer:

ich habe 3 Lichtfarben (ROT, GRÜN, BLAU) welche gesteuert werden.
Nun will ich in der CODESYS Visu deren Intensität über einen Balken anzeigen lassen, der aus 40 kleinen "Bälkchen besteht.
Also praktisch so: [][][][][][][][][][][][]

Der erste Balken soll ab 1/40 der Lichtstärke auf Farbe Rot (bzw. grün oder blau) wechseln. Der 2. soll dann ab 2/40 der Lichtstärke mit angehen.

Man kann es sich vorstellen wie ein Ladebalken bei Windows....
Das funktioniert so auch, allerdings müsste ich nun für jede Farbe 40 eigene Variablen deklarieren und 40 IF ELSE Codes schreiben.

Das mit dem %QW0 schreibe ich hier nur so. Im Programm heisst die Variable dafür AWR. (*AnalogWertRot*)
Das war nur damit ihr seht, dass es ein Analogausgang ist :)

Grüße, Florian
 
Hallo,

Den Wert analog zur Visu schicken. ( 0-100% oder 0-32767()

Die einzelnen Balken über eine Wertüberschreitung einblenden.
Anzeige/Farbwechsel Kästchen 1= Wert > 2,5
Anzeige/Farbwechsel Kästchen 2= Wert > 5
Anzeige/Farbwechsel Kästchen 3= Wert > 7,5
Anzeige/Farbwechsel Kästchen 4= Wert > 10
...

Ich würde aber einen analogen Balken/Skala auswählen, Skalieren 0-100% und fertig
 
Hallo Verpolt,

Danke schomal!

wie kann ich die Skalierung einstellen?
Bzw. was kommt in das frei Feld bei "Skalierung"?

Einfach nur die Variable des Analogwertes? Wie lege ich dann die Grenze von 32761 fest?

Grüße,

Florian!
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Du legst dir eine analoge Balkenanzeige ins Bild

maximum des Balkens sollte maximum der Variable entsprechen. Entweder die Rohvariable 0-32767 von der SPS
0=min, max 32767

oder der skalierte Wert von der SPS 0-100%
dann 0=min, max=100

Dann hast du, je nach Auflösung/Schritte des Balkens, evtl. mehr als 40 verschiedene "Lämpchen" (analog)
 
Hallo nochmal,

das ist genau das, was ich gesucht habe! Vielen Dank!

Sieht sogar ganz gut aus :)

Beste Grüße,

Florian
 
Zurück
Oben