Zugriff auf Daten in FB

Ralle

Super-Moderator , User des Jahres 2006-2007
Teammitglied
Beiträge
15.404
Reaktionspunkte
4.039
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich hab das schon 100 Mal gemacht, aber jedes Mal probiere ich erst ewig rum.

Ich habe einen Multiinstanz-FB (Also z.Bsp. einen FB42, der in einem anderen FB als STAT definiert ist), der hat als IN

DB-Nummer
Anfangsbyte Daten
Länge Daten

Im FB will ich einen neuen Any bauen, z.Bsp. für den SFC14.
Das ist soweit alles klar.

Worüber ich jedesmal stolper, muß ich nun das AR2 aufaddieren oder nicht?

Das hier funktioniert nicht:
Code:
      LAR1  P##ADDR_Temp
      TAR2  
      +AR1                              //Anfangsadresse des ANY-Pointers in AR1 laden

      L     B#(16, 2)                   //Syntax-ID und Typ: Byte laden
      T     W [AR1,P#0.0]
      L     #wAdr_Len                   //Transferlaenge
      T     W [AR1,P#2.0]
      L     #wAdr_DB                    //Quelle-DB 
      T     W [AR1,P#4.0]
      L     P#DBX 0.0                   //Anfangs-DW im Quell-DB
      L     #wAdr_Byte
      SLD   3
      +D    
      T     LD [AR1,P#6.0]

Das hier funktioniert:
Code:
      LAR1  P##ADDR_Temp
//      TAR2  
//      +AR1                              //Anfangsadresse des ANY-Pointers in AR1 laden

      L     B#(16, 2)                   //Syntax-ID und Typ: Byte laden
      T     W [AR1,P#0.0]
      L     #wAdr_Len                   //Transferlaenge
      T     W [AR1,P#2.0]
      L     #wAdr_DB                    //Quelle-DB 
      T     W [AR1,P#4.0]
      L     P#DBX 0.0                   //Anfangs-DW im Quell-DB
      L     #wAdr_Byte
      SLD   3
      +D    
      T     LD [AR1,P#6.0]


ADDR_Temp ist als Any im Temp des FB42 definiert
Wenn ich das mache funktioniert es nicht.

Die Frage an sich ist, bei welchem Zugriff, auf welche Daten muß ich das AR2 zum AR 1 dazu addieren.

Ich geh immer davon aus, dass es bei den Temp-Var nicht nötig ist, liege ich da richtig?
 
Hi Ralle, das AR2 muss nur bei indirekten Zugriffen auf Instanzdaten addiert werden.
Da deine temp nicht im IDB steht brauchst du auch AR2 nicht.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Drann denken...

Und immer dran denken das nur TEMP Variablen beim FB nicht in den Instanzdaten stehen. IN, OUT und INOUT Parameter stehen genauso in den Instanzdaten wie die STAT Parameter. Allso muss man beim Indirekten Zugriff auf diese immer das AR2 addieren wenn der FB Multiinstanzfähig sein soll!
 
Danke, genau so hat es ja auch funktioniert, ich wollte aber endlich mal Klarheit haben, weil ich jedesmal wieder am grübeln bin. Ich werd wohl alt. :ROFLMAO:
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich werd wohl alt. :ROFLMAO:
Naja ... mit deinen über 100 Jahren ja auch verzeihlich ... :ROFLMAO:

Aber davon ab, da ich das gleiche Problem auch kenne und nachvollziehe kann mogele ich mich bei so etwas immer gerne da raus in dem ich so etwas dann gerne in SCL mache - SCL kümmert sich dann für mich da drum ... :rolleyes:

Gruß
Larry
 
Zurück
Oben