testudt wäre jetzt dein UDT das du definiert hast und die Arraygrösse muss mindestens so gross sein wie das Array das du anhängen willst.Code:ArrayofUDT : ARRAY[0..100] OF testudt ;
Index kann in VAR oder Temp. da in einem Zyklus abgearbeitet.
Wenn man dass dann z.B. mit WHILE über mehrere Zyklen verteilt muss dass beachtet werden. Wird dann aber eh aufwändiger.
mfG René
Ein Problem (schon wieder eines!) noch beim Aufruf im OB1 von oben dargestelltem FB:
ArrayofUDT:=
Fehler: Aktualdatentyp BLOCK_DB passt nicht zu formalem Typ ARRAY des Formalparameters ArrayofUDT
... du mußt das Array natürlich genau so, wie du es als INOUT-Parameter erwartest irgendwo deklariert haben.
Das kannst du dann (am Besten symbolisch) an den Parameter des FB antragen ...
Gruß
Larry
Nun, ich habe ja ein Array[0..10] of UDT11 deklariert.
call FB123 , db123[
ArrayOfUDT := "DB11".meinArray/CODE]
Gruß
Larry
Wo ?
Davon das du es als IN-OUT-Parameter an dem FB hast ist es noch nicht wirklich irgendwo vorhanden. Du mußt das Gleiche jetzt noch in einem DB deiner Wahl deklarieren und diese Deklaration dann beim Aufruf deines FB (also im OB1 bei dir) an denselben übergeben.
Also vielleicht in etwa so :Code:call FB123 , db123[ ArrayOfUDT := "DB11".meinArray/CODE] Gruß Larry[/QUOTE] Also den[B] DB11[/B] (Array[0..10] of UDT11) gibt es ja [B]physikalisch[/B] im Bausteinordner! [CODE] Call FB123, DB123 [COLOR=#ff0000]ArrayofUDT := DB11[/COLOR][COLOR=#ff0000].INDEX[/COLOR]
Call FB123, DB123
ArrayofUDT := "DB11".INDEX
Wenn es den DB11 gibt und er den symbolischen Namen DB11 hat dann müßte es dann trotzdem so heißen :
Zitat von spirit
Call FB123, DB123
ArrayofUDT := "DB11".INDEX
Falls der DB11 einen anderen symbolisch Namen hat, dann den zwischen den Gänsefüßchen eintragen. Falls er gar keinen symbolischen Namen hat dann solltest du ihm einen geben ...
Gruß
Larry
Guten Morgen!
Is doch klar.... bei drei Schleifendurchläufen wird [index-1] irgendwann null. Und das Element null gibts nicht weil Du 1..3 angelegt hast.
Gruß
IF M_Takten THEN
FOR index := 3 TO 1 BY -1 DO
ArrayOfUDT[index] := ArrayOfUDT[index - 1];
END_FOR;
M_Takten := False;
END_IF;
Ja klar, da habe ich nur abgeschrieben ohne zu ändern -wie doof! D.h. mit eins geht es mit ner Schleife gar nicht, oder?
Nun bekomme ich keinen Fehler mehr; aber es steht in jedem Array der selbe Inhalt...
Code:IF M_Takten THEN FOR index := 3 TO 1 BY -1 DO ArrayOfUDT[index] := ArrayOfUDT[index - 1]; END_FOR; M_Takten := False; END_IF;
Müsste jetzt nach drei Durchläufen der Merker nicht automatisch wieder Null werden?
Die Schleife schiebt nur von oben runter. wenn oben nix neues reinkommt bleibt das so wie es ist.
Müsste ja.
Hast du übersetzt und runtergeladen?
mfG René
Es wird ...
@vollmi: Danke! Aber der nächste Hänger lässt bestimmt nicht lange auf sich warten.
Macht mit Kanonen auf Spatzen schiessen nicht einen Heidenspass?
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?