Ein Array mit 1 bzw. 0 überschreiben..

Step7Neuling

Level-2
Beiträge
226
Reaktionspunkte
1
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

ich habe eine Frage, vielleicht läßt es sich ganz schnell lösen, aber wie das immer so ist...man sieht den Wald.....etc pp.

Ich würde gerne ein Array mit 50 Boolschen Var. mit einsen oder nullen per Sel. Baustein überschreiben...
Was muss ich dafür machen ?

Habe mal Probiert, dem Array vorher einen Status zu geben, aber da geht nur die erste von 50....

Ich danke für eure Hilfe...

Gruß
Step7Neuling
 
Hi und moin,

Also du hast versucht, das Array zu initialisieren meinst du mit "Status zu geben", oder?
Dazu ist die Codesys Hilfe ganz hilfreich und übersichtlich, wenn du nach Array suchst.

Und dann hoffe ich mal, dass du nicht eine 1 oder 0 an dein Array überträgst, da dies eingentlich ein TRUE oder FALSE sein muss.

Wenn du es als ARRAY [1..50] OF INT; deklarierst kannst du natürlich auch 1er und 0er nehmen.
Ansonsten als ARRAY [1..50] OF BOOL; und dann mit TRUEern und FALSEen :)

Wenn du dann Werte zuweist, einfach nur das entsprechende Array oder einen ganzen Bereich auswählen und die Werte zuweisen:

arMeinArray [1] := TRUE;
arMeinArray [3..5]:=FALSE, TRUE, FALSE;

Grüße,
Flo
 
Zuviel Werbung?
-> Hier kostenlos registrieren
ja selbstverständlich mit TRUE bzw. FALSE...
aber muss ich jetzt 50 mal TRUE bzw. FALSE schreiben...


Gibt es da nicht eine einfachere Lösung....wenn es ein INT wäre...habe ich gelesen, das man es auch mit :=1,3(40) machen könnte, geht das nicht auch bei BOOL? bzw. warum geht das nicht bei BOOL?
 
Variante 1 - eine Schleife.
Variante 2 - Du legst die gleiche Struktur noch einmal in eine Variable und belegst diese per Default mit False oder True (wie gewünscht). Zum Beschreiben kopierst du diese "Leervariable" auf deine Arbeitsvariable.
 
ja das hatte ich auch schon überlegt...also Var. 2...
Aber ich hab eigentlich keine Struktur, entweder alle 1 oder 0....

und sonst gibt es keine möglichkeit?

blöde Frage, wie mache ich eine Schleife mit Zähler im FUP?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Variante 2 meint:
Du legst Dir noch ein zweites identisches Array an, in dem alle Bits mit FALSE initialisiert sind.
Wenn Du zur Programmlaufzeit im ersten Array alle Bits löschen willst, dann kopiere Array2 auf Array1. Das sollte auch in FUP gehen, wenn es für Deine CPU einen Baustein gibt, der Arrays kopieren kann.

Harald
 
Bei einem ARRAY[x..y] OF BOOL ist es doch viel einfacher:

Code:
VAR
    arrBools : ARRAY[x..y] OF BOOL;
END_VAR

MEMSET(ADR(arrBools), 0, SIZEOF(arrBools)); // setzte alle einträge auf false.
MEMSET(ADR(arrBools), 1, SIZEOF(arrBools)); // setzte alle einträge auf true.
 
Zurück
Oben