IN:Pointer in Multiinstanz

mrdoc

Level-1
Beiträge
33
Reaktionspunkte
1
Hallo erstmal,

kurze Beschreibung meines Vorhabens:
Ich habe einen FB den ich in einem anderen FB aufrufen möchte und zwar als Multiinstanz.

Problem ist das der FB der als Multiinstanz aufgerufen wird nicht mehr richtig funkioniert.
Sobald ich ihn aber normal mit eigenem Instanz-DB aufrufe geht wieder alles.

Mittlerweile habe ich herausgefunden dass es an folgenden Zeilen liegt:
Code:
L     P##Host_Exchange
      LAR1  
      L     B [AR1,P#2.0]

#Host_Exchange ist ebenfalls ein DB der als Pointer an den FB übergeben wird.

Wenn ich den FB mit eigenem IDB aufrufe kommt am Ende der Zeilen wie erwartet der Datentyp 84 also DB raus.
Wenn ich ihn nun aber als Multiinstanz aufrufen aber nach wie vor exakt den selben Pointer übergebe kommt irgendein quatsch raus (nichts im Bereich der Datentypen).


Ich hoffe jemand kann mir da die Augen öffnen.

P.S.: Falls mit jemand nicht glaubt ich kann auch gerne besagtes Programm anhängen

MfG
Robin
 
Zuletzt bearbeitet:
Ok jetzt habe ich doch noch was in den tiefen des Siemens Supports gefunden:

Code:
      TAR2  
      L     P##Host_Exchange
      UD    DW#16#FFFFFF
      +D    
      LAR1

Dadurch wird der Datentyp (84) auch wunderbar ausgelesen (yeah!).
Leider hackt es nun wenige Zeilen weiter nämlich beim auslesen der DB-Nummer.

Code:
L     W [AR1,P#0.0]               // 'Host_Exchange' DataBlock
      T     #AuxDb

Dort wird nun der Wert 24833 ausgelesen...
...statt 1 wie ich erwartet hätte.
 
Bei indirekter Adressierung in Multiinstanzen musst Du zwingend das AR2 zum AR1 addieren, da das AR2 den Offset des Beginns des Speicherbereich des FB im übergeordneten IDB angibt.
 
Soweit ich das sehe wird doch das AR2 zu AR1 addiert. Zumindest bei seiner zweiten Antwort.
Andere Frage an Mr. Doc: Wann arbeitest du eigentlich?????
 

Schau mal in der AWL Ansicht online, ob sich AR1 oder DB1/2 zwischen den Ladeoperationen ändern.
 
Das ist leider nicht ganz richtig. :sad:
Der offizielle Siemens Support und die Step7-Hilfe sagen, daß beim Addieren des Multiinstanz-Offset aus dem AR2 die Bereichskennung aus AR2 ausgeblendet werden muß und NICHT aus der Parameteradresse P##inparameter - dann stimmt auch die errechnete Adresse mit der Bereichskennung 16#85 = DI !

Zugriff auf eine Multiinstanz
 
Vielen Dank für die Lösungsvorschläge bin leider erst jetzt zum Antworten gekommen.

Mit der Methode von PN/DP funktioniert alles so wie es soll und was noch viel wichtiger ist... ich verstehe sogar warum

Andere Frage an Mr. Doc: Wann arbeitest du eigentlich?????

Bin aus der Nachtschicht gekommen und mit so einem Problem kann ich nicht einschlafen.
 
Für die Nutzung dieser Website sind Cookies erforderlich. Du musst diese akzeptieren, um die Website weiter nutzen zu können. Erfahre mehr…