TIA DB_Any / DB Abfragen aus Variable

VMManuel

Level-1
Beiträge
31
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen,

ich stehe gerade mächtig auf dem Schlauch. Habe jetzt auch schon einige Beiträge hier durchgelesen kommen aber nicht weiter.

Ich habe vor einigen Wochen mal probiert die DB Nummer als Variable zu speichern und in einem FB dann abzufragen. Diese habe ich als DB_ANY Deklariert.
Hatte dies irgendwo gesehen, meine im Siemens Forum.

Nur leider weiß ich nicht mehr wie ich es gemacht habe. Es hat damals funktioniert das ich per MOVE Werte in die entsprechenden DB schrieben konnte.
Ich bekommen es jetzt aber nicht mehr hin, auch die Seite von damals finde ich nicht wieder,

Hoffe es kann mir einer Helfen...

Beispiel: "Nummer" als DB_ANY

DB[Nummer].Wert

Benutze eine 1200/1500er CPU

Grüße,
Manuel
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hatte das in FUP mal ausprobiert und direkt an dem MOVE Baustein geschrieben, also nicht in AWL.
Es funktionierte damals auch Problemlos, nur weiß ich echt nicht mehr wie ich es gemacht hab.
 
SCL
Code:
#MyDBAny := 3; //DB3
#MyDBAny.%DBW0 := #Value; //DB3.DBW0

Warum so altmodisch programmieren? Solcher Zugriff geht nicht mit "optimierten" DB.
Kannst Du nicht einen UDT/PLC-Datentyp deklarieren und an den FB übergeben? Dann könntest Du in dem FB auf die Variablen des übergebenen DB bzw. UDT symbolisch zugreifen.

Harald
 
Super, danke. Mein Fehler lag darin das es noch ein optimierter DB war. Mhh das ist blöd.

Leider hab ich mit TIA noch nicht so viel zu tun gehabt und zuletzt meist nur die 300er gehabt. (Angefangen mit S5 in der Ausbildung ;))

Hast du nen Beispiel zu deinem Vorschlag? Verstehe den nicht ganz,

Gruß,
Manuel
 
Zuviel Werbung?
-> Hier kostenlos registrieren
#MyDBAny ist eine Variable mit Datentyp DB_ANY. Da wird die Nummer des gewünschten DB reingeschrieben.
Danach kannst Du auf absolute Adressen (DBW, DBX, ...) in dem variablen DB zugreifen. Oder #MyDBAny an Deinen FB übergeben und in dem FB auf absolute Adressen in dem übergebenen DB zugreifen.
Symbolisch auf Variablen in dem indirekt adressierten DB zugreifen geht nicht, weil der Compiler nicht weiß, welche Struktur der zur Laufzeit übergebene DB hat. Damit der Compiler die Struktur kennt muß die Struktur mitgeteilt werden indem man z.B. als Übergabe die Struktur oder UDT deklariert.

Harald
 
Guten Morgen, danke für die Antwort. Soweit hab ich es verstanden.

Ich habe im DB einen Struct angelegt unter der die ganzen Daten sind die ich benötige. Der DB ist aber weiterhin optimiert. Die DB Nummer habe ich in einer DB_ANY Variablen geschrieben.

Bekomme ich so die Struktur/Variablen rauskopiert?

Grüße,
Manuel
 
Nein. Weil man in "optimierten" DB die Variablen nur symbolisch adressieren kann, weil die Variablen da keine (öffentlichen) Adressen haben auf die man zugreifen könnte.

DB_ANY und absolute Adressierung geht nur bei DB mit Standard-Zugriff.

Harald
 
Zurück
Oben