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

Seite 2 von 2 ErsteErste 12
Ergebnis 11 bis 13 von 13

Thema: Dynamischer Insanz-DB bei FB-Aufruf

  1. #11
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.184
    Danke
    923
    Erhielt 3.290 Danke für 2.659 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von Flux Beitrag anzeigen
    Muss ich das ar2 auch berücksichtigen, wenn ich symbolisch adressiere?
    Nur wenn Du Dich auf die Adresse einer Instanzvariable beziehst, wie z.B. P##statvar - das liefert nur den Offset innerhalb der Instanz.
    Nicht wenn Du über den Name auf den Inhalt der Variable zugreifst (L #statvar), da berücksichtigt der MC7-Compiler den Multiinstanz-Offset zur Laufzeit.

    Harald
    Es ist immer wieder überraschend, wie etwas plötzlich funktioniert, sobald man alles richtig macht.

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  2. #12
    Registriert seit
    25.03.2012
    Beiträge
    314
    Danke
    60
    Erhielt 9 Danke für 8 Beiträge

    Standard

    Zitat Zitat von PN/DP Beitrag anzeigen
    Nur wenn Du Dich auf die Adresse einer Instanzvariable beziehst, wie z.B. P##statvar - das liefert nur den Offset innerhalb der Instanz.
    Ok, dann also noch hintendran:
    Code:
    LAR1 P##statBool
    TAR2 // Instanz-Offset
    +AR1 // im Bereichszeiger berücksichtigen
    
    U #inBool
    = DIX [AR1, P#0.0] // indirekte Adressierung von #statBool
    PS: Theoretisch müsste man jeden FB in dem die eigenen Lokaldaten indirekt adressiert werden multiinstanz-fähig machen, da man nicht weiß ob der FB als Multiinstanz verwendet wird.
    Geändert von Flux (04.03.2015 um 20:03 Uhr)

  3. #13
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.184
    Danke
    923
    Erhielt 3.290 Danke für 2.659 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Vorsicht, das +AR1 funktioniert nur bis Multiinstanzadressen kleiner 4kB.
    Benutze besser diese Berechnung:
    Code:
    L P##statBool     //relative Adresse #statBool in dieser Instanz (DI) 
    TAR2              //Lade Adressregister2 mit Offset dieser Multiinstanz (DB) in Akku1 
    UD DW#16#FFFFFF   //Bereichskennung (DB) ausblenden 
    +D                //Addiere 
    LAR1              //Lade AR1 mit Inhalt von Akku1: absolute Adresse #statBool im IDB (DI)
    Wenn man FB mit dem Attribut "multiinstanzfähig" erstellt, dann sollte man sie auch tatsächlich voll multiinstanzfähig programmieren

    Harald
    Es ist immer wieder überraschend, wie etwas plötzlich funktioniert, sobald man alles richtig macht.

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

Ähnliche Themen

  1. Antworten: 16
    Letzter Beitrag: 23.05.2017, 16:03
  2. Zeilenumbruch bei dynamischer Sprachumschaltung
    Von EvilIce im Forum CODESYS und IEC61131
    Antworten: 2
    Letzter Beitrag: 16.05.2014, 13:43
  3. Antworten: 9
    Letzter Beitrag: 05.04.2013, 09:01
  4. Antworten: 9
    Letzter Beitrag: 10.02.2011, 10:46
  5. dynamischer db aufruf
    Von misconduct im Forum Simatic
    Antworten: 1
    Letzter Beitrag: 24.11.2007, 22:42

Stichworte

Lesezeichen

Berechtigungen

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