Eine POINTER Frage

Danielegger

Level-1
Beiträge
14
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hy Leute,
bin nicht lange registriert aber schon begeistert vom Forum, wircklich SUPER.
Schauen wir Mal ob ihr folgendes knacken könnt, ein Kolege hat das geschrieben, ich weiss, dass es funktioniert, ich weiss aber nicht genau wie, viel Spaß:

1) Der FB2 mit dem Instanzdatenbaustein DB2 hat eine Statische Variable "variable_1" als STRUCT deklariert und mit der Anfangsadresse 10.0

2) In dem gleichen FB2 wird ein FC5 aufgerufen. Dieser FC5 braucht ein IN mit dem Namen "variable2", dass als POINTER declariert ist.

3) Die "variable_1" (STRUCT mit der Anfangsadresse 10.0) wird benutzt um den IN "variable_2" vom FC5 (Input als POINTER) zu verbinden.

4) Dann im FC5 wird folgendes gemacht:

Code:
L  P##variable_2      // Zeiger auf DB2.DIX10.0 ??
L  AR1                // gespeichert auf Arbeitzregister 1 ??
L  W [AR1 , P#0.0]    // Inhalt vom DB2.DIW10 wird geladen ??
T  #DB                // Inhalt auf Temporere Variable "DB" gespeichert ??

AUF  DB [#DB]         // DB [mit Inhalt von DB2.DIW10] wird aufgeschlagen ??

Meiner Meinung nach wird im FC5 den DB mit dem Inhalt vom DB2.DIW10 geöffnet. Das Problemm bei der Sache, im STRUCT vom "variable_1" gibt es nur BOOL Variablen und kein WORD oder INT womit man normalerweise ein DB aufschlägt.

Frage:
Lege ich richtig mit miener Behauptung oder mache ich da ein Fehler?
Ich hoffe es war klaar genug. Ich bin schlecht mit Erklärungen, wenn nicht versuche ich es noch Mal.
Vielen Dank im Voraus
Daniel
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Verstehe ich das richtig ??

Hy,
vielen Dank für dei schnelle Antwort.
Habe ich es richtig verstanden ??
In deinem Bespiel; Soll das heißen, dass:

L P##IN;
LAR1;

--> AR1 zeigt als Pointer auf die Anfangsadresse von OB1_DATE_AND_TIME, dass heißt auf die Lokaladresse 12.0 des OB1 ??

L W [AR1,P#0.0]
--> läd das Wort der Lokaldaten in OB1 d.h. vom bit 12.0 bis 13.7 (16 bit = 1 Wort), welches ggf. die DB-Nummer enthält

T #w_db_nr
AUF DB [#w_db_nr]
--> öffnet den angegebenen DB, die DB-Nummer ist in den 16 bit (vom bit 12.0 bis 13.7 bzw. LW12 des Lokaldatenbereichs im OB1) ????

Wenn das richtig ist, dann habe ich es verstanden, ansosten bitte HILFEEE!!
 
ICH HABS VERSTANDEN !!!

Hey Jörg, alter, ich hab’s endlich kapiert nach dem ich deine Beschreibung noch Mals durchgelesen habe…… UUUUAAAAAAUUUUUUU Ich muss zugeben es ist wirklich ein geiles Werkzeug. Vielen lieben Dank für deine Unterstützung.
Bis zum nächsten Mal.
Gruß
Daniel

PS. Nur noch eine Frage, was passiert wenn es in DB Bereich des Pointers eine 0 (Null) steht? Ich nehme an, dass die CPU es merkt und den zuletzt geöffneten DB aufgeschlagen hinterlässt, oder?
 
Zurück
Oben