Adresse des geöffneten DBs ermitteln

Woto

Level-2
Beiträge
82
Reaktionspunkte
0
Hallo zusammen,
ich muss folgenden S5-Code in der S7 realisieren:
Code:
 MAB
 LRW +3 ;Schreibzeiger
 LRW +12 ;Laenge des Datensatzes
 XF
 LRW +13 ;Datenwort Beginn Eintrag
 +F
usw.
Im Basisadressregister steht die Adresse des aktuell geöffneten DBs.

Um dies effizient umzusetzen, habe ich mir gedacht, dass man die Adresse des Datenbausteins ins AR1 oder AR2 schreibt und dann mit
Code:
L LW[AR1,P#6.0]
lädt.
Nur dafür muß man die Adresse als Pointer ins AR1 schreiben und genau da liegt mein Problem. Wie kann ich die Adresse des aktuell geöffneten DBs ermitteln
Der DB wird vorher indirekt geöffnet:
Code:
Auf DB[DBNR]
Ich habe also nur die temporäre Variable DBNR.

Gruß,
Woto
 
wenn der DB schon offen ist, wofür dann noch die adresse?

bzw.

die db-nummer ist doch schon bekannt

aber mit:

Code:
*
      L     DBNO                        // letzten offenen Globaldatenbaustein ...
      T     #wDbnoSave                  // ... sichern

bekommst du die nummer des letzen, offenen DBs
 
Hallo Vierlagig,
ich möchte ganz gerne mit dem AR1 arbeiten. Dann könnte man den Code einfach umsetzen:
Code:
L LW[AR1,P#6.0]
L LW[AR1,P#24.0]
*I
T LW[AR1,P#26.0]

Ansonsten müßte man einen Datenwort-Zeiger realisieren:
Code:
L 6
SLD 3
T #DWZeiger
L DBW[#DWZeiger]
T #Zwischen
 
L 24
SLD 3
T #DWZeiger
L DBW[#DWZeiger]
L #Zwischen
*I
T #Zwischen
 
L 26
SLD 3
T #DWZeiger
L #Zwischen
T DBW[#DWZeiger]

Ich finde das ein wenig unübersichtlich.
 
Code:
*
      L     6
      SLD   3
      LAR1  
      AUF   DB [#wDbNumberTemp]
      L     DBW [AR1,P#0.0]
      L     DBW [AR1,P#18.0]
      *I    
      T     DBW [AR1,P#20.0]

ist es das, was du willst?
 
Hallo Vierlagig,
sieht ganz gut aus. Würde auch
Code:
      L     0
      LAR1  
      AUF   DB [#wDbNumberTemp]
      L     DBW [AR1,P#6.0]
      L     DBW [AR1,P#24.0]
      *I    
      T     DBW [AR1,P#26.0]
funktionieren

Gruß,
Woto
 
Hallo johnij,
wieso DB0.
Ich lade das Adresregister mit 0 und mache anschließend den DB auf.
 
Für die Nutzung dieser Website sind Cookies erforderlich. Du musst diese akzeptieren, um die Website weiter nutzen zu können. Erfahre mehr…