Zuviel Werbung? - > Hier kostenlos beim SPS-Forum registrieren

Ergebnis 1 bis 6 von 6

Thema: Adresse im Instanzdatenbaustein ermitteln

  1. #1
    Registriert seit
    14.09.2006
    Beiträge
    9
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,

    für eine variable Programmierung wäre es für mich vorteilhaft, wenn ich die Adresse einer UDT Variable in einem Instanzdatenbaustein ermitteln könnte. D.h. z.B. ich bräuchte den zeiger, der gerade geladenen Variabel.

    L #Ziel_DW.StrNr
    --> Welche Adresse im DI

    Ich möchte damit einen definierten Bereich von DBx.DBWy nach DBx.DBW#Ziel_DW kopieren. Wobei ich bei einer Änderung des DI´s diese Programmierung NICHT ändern muss.

    L W#16#1002 // init ANY Pointer
    T LW 0
    T LW 10
    L #Status_Laenge
    T LW 2
    T LW 12
    L #Ltg_DB
    T LW 4
    L #Prg_DB
    T LW 14
    L #DW1_Ltg_DB
    SLD 3
    T LD 6

    L #Ziel_DW // Variable Programmierung
    SLD 3
    T LD 16

    L 2#10000100 // Bereichübergreifender Zeiger im DBX
    T LB 6
    T LB 16

    CALL SFC 20 // copy data
    SRCBLK :=#Sorce
    RET_VAL:=#Return
    DSTBLK :=#Dest



    Hubertus
    Zitieren Zitieren Adresse im Instanzdatenbaustein ermitteln  

  2. #2
    Registriert seit
    23.11.2004
    Beiträge
    347
    Danke
    2
    Erhielt 28 Danke für 28 Beiträge

    Standard

    hallo,
    L #Ziel_DW.StrNr
    --> Welche Adresse im DI
    " L DINO" lädt die Nummer in den AKKU1.

    gruß
    raika

  3. #3
    hubiwahn ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    14.09.2006
    Beiträge
    9
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Zitat Zitat von RaiKa Beitrag anzeigen

    " L DINO" lädt die Nummer in den AKKU1.

    Die Nummer des DI ist nicht das Problem, ich benötige den exakten Pointer auf die Adresse.


    Hubertus
    Zitieren Zitieren Pointer  

  4. #4
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.220
    Danke
    533
    Erhielt 2.696 Danke für 1.948 Beiträge

    Standard

    Nur mal zum überlegen, hab grad keine Möglichkeit zum probieren.
    Schau doch mal im AR1 nach, was dort drinsteht, nachdem
    L #Ziel_DW.StrNr
    ausgeführt wurde.
    Falls es ein Multizinstanz-FB ist, brauchst du auch noch AR2, das enthält den Offset zu den Daten.

    Versuch auch mal folgendes:
    L P##Ziel_DW, das sollt doch dann der Pointer auf die UDT sein, oder?
    Die Strucktur der UDT ist dir ja bekannt, mit dem Pointer kannst du dann weiterrechnen.

    Eine andere Möglichkeit wäre, nicht eine UDT zu übergeben, sondern DB-Nummer, Datenwort-Nummer und z.Bsp. Bereichslänge.
    Gruß
    Ralle

    ... there\'re 10 kinds of people ... those who understand binaries and those who don\'t …
    and the third kinds of people … those who love TIA-Portal

  5. #5
    hubiwahn ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    14.09.2006
    Beiträge
    9
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Schau doch mal im AR1 nach, was dort drinsteht, nachdem
    L #Ziel_DW.StrNr
    ausgeführt wurde.
    Leider nicht´s zugehöriges!

    Versuch auch mal folgendes:
    L P##Ziel_DW, das sollt doch dann der Pointer auf die UDT sein, oder?
    Bringt einen leider auch nicht weiter.

    Eine andere Möglichkeit wäre, nicht eine UDT zu übergeben, sondern DB-Nummer, Datenwort-Nummer und z.Bsp. Bereichslänge.
    Dann bin ich ja wieder fest an die Struktur gebunden. Ist bis lang allerdings auch meine Not-Lösung

    Hubertus

  6. #6
    Registriert seit
    16.02.2006
    Beiträge
    54
    Danke
    0
    Erhielt 2 Danke für 2 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo versuchs doch mal hiermit:

    LAR1 P#Dein_Anyzeiger
    L w#16#1002
    t Lw[ar1,p#0.0]
    L #Anzahl_Byte
    t Lw[ar1,p#2.0]
    L #Quell_DB
    t Lw[ar1,p#4.0]
    l p#DBB0.0
    t LD[AR1,p#6.0]

    Bei Multiinstanzfähigen Bausteinen:

    Tar2
    UD Dw#00ff_ffff
    Lar1 P#Dein_Anyzeiger
    +AR1
    ......


    Hoffe es hilft dir weiter.
    Geändert von Ma_su (25.09.2006 um 16:19 Uhr) Grund: Was vergessen
    Gruß Marc

    ----------------------------------------------------------------------------------------------------------------
    Der Vorteil der Klugheit besteht darin, dass man sich dumm stellen kann. Das Gegenteil ist schon schwieriger. (Kurt Tucholsky)

Ähnliche Themen

  1. Adresse von Formaloperanden ermitteln
    Von Katzi im Forum Simatic
    Antworten: 21
    Letzter Beitrag: 21.11.2013, 16:11
  2. in SCL Adresse von String im IDB ermitteln
    Von Ralle im Forum Simatic
    Antworten: 6
    Letzter Beitrag: 03.03.2011, 09:39
  3. DB Adresse ermitteln
    Von Marc_Quark im Forum Simatic
    Antworten: 10
    Letzter Beitrag: 22.10.2009, 08:22
  4. Adresse des geöffneten DBs ermitteln
    Von Woto im Forum Simatic
    Antworten: 10
    Letzter Beitrag: 29.09.2008, 12:09
  5. Adresse eines Merkers am FB ermitteln
    Von RAN im Forum Simatic
    Antworten: 9
    Letzter Beitrag: 18.10.2007, 13:48

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •