indizierter Zugriff auf DB

hammerheadbene

Level-1
Beiträge
6
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Kann ich auch iwie indiziert auf die Datenbausteinnummer zugreifen? Also per Schleife möchte ich die einzelnen Datenbausteine "durchforsten". Derzeit bin ich nur soweit, dass ich einen Datenbaustein indiziert zugreifen kann mit:

Code:
bol := DB0.DX[WordNr, BitNr];


Alles in SCL ;).
Möchte nun den DB0 im nächsten Schleifendurchgang mit DB1 ersetzen.
Weiß nicht ob ich die Funktion Word_to_Block_DB ganz verstanden habe, aber lässt es sich damit lösen?
 
Ja ...!
Code:
for myIndex := 1 to 10 by 1 do
   bol := Word_to_Block_DB(int_to_word(myIndex)).DX[WordNr, BitNr];
end_for ;
Sollte so funktionieren ...

Gruß
LL
 
So ein problem gelöst, folgt sogleich das nächste. Nun möchte ich nicht nur auf ein Bit, Byte oder Wort eines Datenbausteines zugreifen, sondern auf ein ganzes Feld. Aber Step 7 erlaubt mit das nicht, wenn ich es mit indiziert mahcen will. Soll ungefähr so aussehen:

Code:
for myIndex := 1 to 10 by 1 do
   bol := Word_to_Block_DB(int_to_word(myIndex)).Struktur.Feld;
end_for ;

Aber dies ist eben nicht möglich in SCL. Gibt es noch eine andere Variante, außer das Feld auf ein neues zu überschreiben --> wenn ich das mache, habe ich zuviele Lokaldaten und der Speicher ist voll.
 
Hallo,
SCL kann den Zugriff auf Datenbereiche nur dann realisieren, wenn sie ihm bekannt sind.
Für deinen Fall heißt das, dass der Zugriff in der oben dargestellten Schleife mit der Breite Doppelwort aufhört.

Wie wäre es für deinen Fall mit einem Blockmove ?
Du mußt hier nur die Größe deines Datenfeldes kennen und die jeweilige Anfangsposition in Quelle und Ziel. Daraus baust du dir dann einen ANY-Pointer (siehe dazu auch in der FAQ), den du dann an den SFC übergibst.

Gruß
LL
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Das ist ja leider das Problem. Ich habe mehrer Datenbausteine die viele Strukturen enthalten. Die Strukturen sind dabei unregelmäßig lang und ich weiß nicht wann die anfangen und aufhören. Und um nun nicht alle Datenbausteine einzeln abzufragen, wollte ich das ganze dynamisch gestalten.

Habe zwar jetzt auch eine Lösung für das Problem, aber so richtig befriedigen tut sie mich nicht.
 
Ich weiß nicht, ob dir das weiterhilft ...
Du könntest statt DB's Instanzen von (SCL-)FB's nehmen. Hierbei kann dann der FB die/seine daten verwalten und wenn es etwas nach irgendwohin zu übergeben gibt dann kjönntest du die Schnittstelle des FB dafür nehmen oder von dem FB den Transfer auf einen ihm übergebenen Zielbereich vornehmen.

Gruß
LL
 
Geht leider auch nicht, da ich nur so ne Art Erweiterung mache und das ganze Zeug mit den DB´s anlegen und so nicht mehr verändern möchte/darf/kann :).
Trotzdem Danke
 
Zurück
Oben