TIA DB_ANY in SCL verwenden

joru_sps

Level-1
Beiträge
16
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Experten;
Kann ich bei Verwendung des Datentyps „DB_ANY“ in SCL nur noch absolut weiterprogrammieren?
Ich möchte gerne in einem SCL Code Baustein auf „full“ zugreifen (siehe Bild).

DatenDB.jpg

#full := "FIFO DB".Daten.FIFO_Kopf.full; //SCL Code
funzt;
dabei ist aber „FIFO DB“ eben der Name des entsprechenden DBs, dieser soll aber eben variabel sein und ich denke man kann ihn am besten mit einem „DB_ANY“ Typ einlesen? Wenn ich das mache, gehts aber irgendwie symbolisch nicht weiter...
Jochen fragt
 
Zuletzt bearbeitet:
Hallo,
immer daran denken, wie ein Compiler, der einen Code erstellt, arbeitet ...
Zur Compile-Zeit wird aus den vorliegenden Informationen ein Code gebildet. Ein variabel zu übergebender DB ist aber keine vorliegende Information. Der Compiler erzeugt aus deiner symbolischen Programmierung am Ende doch wieder absolute Adressen - in diesem Fall von was ???

Gruß
Larry
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
danke für die Antwort. Ich glaube ich habe mich missverständlich ausgedrückt: Der SCL Code wird in einem FB verwendet, der einen Input Parameter bekommen soll, wo man für jeden FB Aufruf fest einen DB eintragen kann.
Frage ist halt nur, wie man diesen DB Namen in den SCL Code bekommt… (Als DB_Any wohl nicht?)
Beispiel.jpg
 
Zuletzt bearbeitet:
Nein ... als Block_DB deklarieren (auf der Schnittstelle) - siehe dazu auch die SCL-Hilfe.
Alle Zugriffe darauf sind dann aber IMMER absolut (also nicht symbolisch) und erfolgen nur im Format Bit, Byte, Word, DWord. Das umcasten obliegt dir dann auch wieder selber.

Wofür willst du das so machen ? Ich finde diese Vorgehensweise nun nicht unbedingt elegant ...

Gruß
Larry
 
Hi joru_sps

du willst auf eine 1516. Vergiss den ANY. Und vergiss auch den Block_DB :ROFLMAO:

Du hast einen UDT_FIFO gemacht. Also mach an deiner Schnittstelle einen INOUT myFIFO vom Type UDT_FIFO.
Dann kannst du im FB mit #myFIFO.FIFO_Kopf.full drauf zugreifen.
Dann mach soviele DB als UDT_FIFO wie du willst.
Den FB versorgst du an myFIFO mit einem dieser DB Namen. An anderer Stell mit einem anderen DB Namen.

Du kannst natürlich auch in einem DB (nennen wir den mal AlleFifos) ein Array of UDT_FIFO anlegen (genannt FifoArray). Und dann den FB am Beinchen myFIFO mit "AlleFifos".FifoArray[#i] versorgen.
Optimierte DB sind nicht auf 64K beschränkt :D

'n schön' Tach auch
HB
 
Zuviel Werbung?
-> Hier kostenlos registrieren
...ah, danke, dass sind ja bisher unentdeckte Möglichkeiten. Vom Block_DB hatte ich mich schon verabschiedet. Den Datentyp UDT für einen InOut habe ich bisher noch nicht gekannt.
n' schön' Tach re joru_sps
 
Zurück
Oben