FB mit Array versorgen

thomasgull

Level-2
Beiträge
166
Reaktionspunkte
3
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen.
Ich probiere gerade ein FB mit einem Arry zu versorgen.

Der FB ist in SCL Programmiert und hat ein Array von 0..10 of Struct mit 2 Int werten.

Nun der DB ist ebenso aufgebaut.

nun die Frage wie versorge ich den FB?



Call FB900,db900
iIndex: =MW10
iSortieraten:=???
oZahl1:= logisch
oZahl2:= Logisch


Adresse Name Typ Anfangswert Kommentar
0.0 STRUCT
+0.0 zahlen ARRAY[0..10]
*0.0 STRUCT
+0.0 Zahl1 INT 0
+2.0 Zahl2 INT 0
=4.0 END_STRUCT
=44.0 END_STRUCT


grüsse Thomas
 
Hallo Thomas,

wenn du den Code postest, der nicht funktioniert, dann kann man dir eher weiterhelfen.
Sonst kann man nur raten.

Wenn der DB im Offline-Bausteinordner vorhanden ist und Schnittstelle und DB-Array gleich deklariert wurden, dann funktioniert Zotos Vorschlag auch.

Code:
Call FB900,db900
iIndex: =MW10
iSortieraten:="DeineDB".zahlen    // nicht "DeinDB".zahlen[0] => eckige Klammer weglassen
oZahl1:= logisch
oZahl2:= Logisch
Gruß puzzlefreak
 
das ist der SCL
Code:

FUNCTION_BLOCK FB900

DB Struktur


DB Zahlen

Adresse Name Typ Anfangswert Kommentar
0.0 STRUCT
+0.0 zahlen ARRAY[0..10]
*0.0 STRUCT
+0.0 Zahl1 INT 0
+2.0 Zahl2 INT 0
=4.0 END_STRUCT
=44.0 END_STRUCT





VAR_TEMP
tIndex:INT;
END_VAR

VAR
sZahl1:INT;
sZahl2:INT;
END_VAR

VAR_INPUT
iIndex:INT;

iSortierdaten:ARRAY [0..10]OF STRUCT
Zahl1:INT;
Zahl2:INT;
END_STRUCT;
END_VAR

VAR_OUTPUT
oZahl1:INT;
oZahl2:INT;
END_VAR



tIndex:=iIndex;

sZahl1:=iSortierdaten[tIndex].Zahl1;// Auf eine Struktur in einem DB kann direkt zugegriffen werden.
sZahl2:=iSortierdaten[tindex].Zahl2;

oZahl1:=sZahl1;
oZahl2:=sZahl2;



END_FUNCTION_BLOCK

ist das gerüst für einen Test.

"heute ist wohl nicht mein Tag"
 
Bei großen Arrays ist es vom Speicherplatz her gesehen besser, diesen Parameter im Bereich "IN_OUT" anzulegen, da dann nur ein Zeiger auf das erste Arrayelement und keine Kopie des gesamten Array übergeben wird.

Nachteil ist aber dass das Array nicht mehr read-only ist.
 
Zurück
Oben