Step 7 Nummer des DB`s aus Block DB als word ausgeben

Maggi

Level-2
Beiträge
80
Reaktionspunkte
10
Zuviel Werbung?
-> Hier kostenlos registrieren
Tach zusammen!

Ich bin dabei einen Baustein mit variablen DB zugriffen zu erstellen.

Hierzu müsste ich die Nummer eines DB`s als INT oder WORD aus einem Eingang Block_DB auslesen oder andersrum.
Also aus einem WORD ein DB Zugriff....

Beispiel:
Eingang BLOCK_DB: DB20
Ausgabe Word: 20 bzw. W#16#20

Steh da nen bisschen auf den Schlauch hoffe jemand kann mir helfen.

Gruß Markus
 
Du müsstest den DB schon mal aufrufen damit Du die Nummer als INT oder so holen kannst: Also AUF DB ...
Aber sag mal was genau Du damit vor hast. Evtl gehts auch einfacher.
 
Jep, aber evtl brauch er das ja gar nicht, wenn er nur den db als z.b. InstanzDB für einen aufgerufen FB nutzen will. Deshalb wären mehr Infos gut
 
Siemens-üblich funktioniert die Variante von Larry nur in FB, jedoch nicht in FC. :rolleyes:

In FC funktioniert bei der Übergabe von 16-Bit-Parametertypen folgendes:
Code:
      L     P##myINParameter_BlockDB
      SRD   16
      T     #myWord
Ich weiß jetzt aber nicht wieso das funktioniert und wo das dokumentiert ist - also besser nicht nachmachen!


Hierzu müsste ich die Nummer eines DB`s [...] andersrum.
Also aus einem WORD ein DB Zugriff....
Übergabe der DB-Nummer als WORD oder INT:
Code:
      L     #myINParameter_Int
      T     #tmp_DBNr_Int
      AUF   DB [#tmp_DBNr_Int]

Die Variante mit der Übergabe als BLOCK_DB ziehe ich vor, weil dabei die DB-Verwendung direkt in den Referenzdaten auftaucht.
Wenn die DB-Nummer zur Laufzeit variabel sein soll dann geht die Übergabe als BLOCK_DB m.w. nur bei FB, und da auch nicht direkt an der Aufrufschnittstelle sondern via: L #DBnummer / T "IDBx".myINParameter_BlockDB

Die Variante mit der Übergabe als WORD oder INT ist einfach und funktioniert immer, ist aber problematisch, weil da die DB-Verwendung bei Programmanalyse nur sehr schwer zu finden ist.


PS: Willst Du eigentlich den DB direkt öffnen oder einen ANY basteln?

Harald
 
Zurück
Oben