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

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 13

Thema: Adressregister retten, wozu ?

  1. #1
    Registriert seit
    08.07.2004
    Beiträge
    503
    Danke
    11
    Erhielt 4 Danke für 3 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Häufig sehe ich den Befehl TAR1 oder TAR2 am Beginn eines Bausteins.
    Der Befehl bedeutet Transferiere Adressregister 1 oder 2 in Akku 1.
    und am Ende dan LAR1 oder LAR2

    Warum das Ganze ?

    Häufig wird der Begriff "retten" benutzt, das assoziiert dass etwas nachher wieder zurückgebracht wird.
    Wenn ich aber zwischendurch Akkuoperation durchgeführt habe, wie kann ich dann etwas "retten", im Akku steht dann nicht mehr das Alte !
    Gruß und Danke für Infos
    Zitieren Zitieren Adressregister retten, wozu ?  

  2. #2
    Registriert seit
    12.05.2010
    Beiträge
    32
    Danke
    0
    Erhielt 3 Danke für 3 Beiträge

    Standard

    Hallo Outrider,
    da hast du die Hälfte der Befehle weggelassen. Es geht:
    TAR1
    T save_AR1
    und dann
    L save_AR1
    LAR1

    Das macht man, damit man das Adressregister innerhalb des Bausteins zur Pointerberechnung verwenden kann.

    Gruß Kaulquappe

  3. #3
    Avatar von Outrider
    Outrider ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    08.07.2004
    Beiträge
    503
    Danke
    11
    Erhielt 4 Danke für 3 Beiträge

    Standard

    Mir ist schon klar dass die Register intern zur Pointerberechnung genutzt werden, aber warum wird am Anfang der Inhalt gerettet !
    Der Inhalt wird in den Akku geschrieben, wenn ich inder FC aber AKKU operationen verwende dann ist das gerettete verloren oder...?
    Oder darf ich nach dem Retten keine Akkuoperationen ausführen ?
    Müsste eigentlich nicht vom System zwangsläufig am Ende eines FC oder FBs eine Rettung stattfinden damit das Register im nächsten FC oder FB frei für den Gebrauch ist ?

    Viele Fragen sind da.
    Gruß
    Zitieren Zitieren Re Adressregister  

  4. #4
    Registriert seit
    12.05.2010
    Beiträge
    32
    Danke
    0
    Erhielt 3 Danke für 3 Beiträge

    Standard

    Dann war ich wohl etwas zu kurz angebunden: Das Adressregister lässt sich nicht direkt in eine statische Variable transferieren. Deshalb lädt man es erst in den Akku und dann überträgt man den Wert des Akkus in die statische Variable (in meinem Beispiel save_AR1). Und dann kann mal sowohl mit dem Adressregister als auch mit dem Akku machen was man möchte und stellt sicher, dass bei Verlassen des Bausteins wieder alles ist wie vorher.

    Noch ein Nachtrag:
    Wenn ein FB in einem zeitgesteuerten OB aufgerufen wird, schlägt er ja beliebig im OB1 ein. Und da sind AR1 und AR2 die Pointer auf einen Daten-DB und einen Instanz-DB. Und die sollen ja bei verlassen wiederhergestellt werden.
    Geändert von Kaulquappe (12.11.2012 um 15:11 Uhr)

  5. #5
    Avatar von Outrider
    Outrider ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    08.07.2004
    Beiträge
    503
    Danke
    11
    Erhielt 4 Danke für 3 Beiträge

    Standard

    Ok, Danke !
    Zitieren Zitieren Re Adressregister  

  6. #6
    Registriert seit
    24.05.2006
    Beiträge
    234
    Danke
    14
    Erhielt 77 Danke für 57 Beiträge

    Standard

    Der Nachtrag ist so nicht richtig. Beim Aufruf eines höherprioren OBs (z.B. ein Zeit-OB der den OB1 unterbricht) werden alle Register gerettet und zum Abschluß wiederhergestellt, so dass der unterbrochene OB hiervon nichts bemerkt. Das macht das Betriebssystenm der CPU, der Anwender muss sich darum nicht kümmern.
    Das Sichern von insbesondere AR2 ist bei multiinstanzfähigen FBs notwendig, da AR2 auf den Anfang des Datenbereichs des jeweils aktiven FBs zeigt. Würde dieses überschrieben, so führten anschließend alle IN/OUT/INOUT/STAT Zugriffe innerhalb des FBs auf eine falsche Adresse im verwendeten Multiinstanz-DB.

  7. #7
    Registriert seit
    12.05.2010
    Beiträge
    32
    Danke
    0
    Erhielt 3 Danke für 3 Beiträge

    Standard

    Danke für die Korrektur
    Kaulquappe

  8. #8
    Registriert seit
    22.11.2006
    Ort
    CH
    Beiträge
    3.618
    Danke
    776
    Erhielt 646 Danke für 492 Beiträge

    Standard

    Zitat Zitat von hovonlo Beitrag anzeigen
    Das Sichern von insbesondere AR2 ist bei multiinstanzfähigen FBs notwendig, da AR2 auf den Anfang des Datenbereichs des jeweils aktiven FBs zeigt. Würde dieses überschrieben, so führten anschließend alle IN/OUT/INOUT/STAT Zugriffe innerhalb des FBs auf eine falsche Adresse im verwendeten Multiinstanz-DB.
    Das verstehe ich jetzt nicht. Ich habe jetzt glaub ich schon viele MultiinstanzFBs gebaut. Und diese auch in FBs als Multiinstanzen aufgerufen, teilweise 40 mal. Die haben alle einwandfrei funktioniert ohne das ich mich um Adressregisterrettung gekümmert habe? Was habe ich denn da automatisch richtig gemacht, dass es trotzdem funktioniert hat?

    mfG René

  9. #9
    Registriert seit
    27.06.2009
    Ort
    am Nordharz
    Beiträge
    3.717
    Danke
    443
    Erhielt 919 Danke für 740 Beiträge

    Standard

    Zitat Zitat von vollmi Beitrag anzeigen
    ... Was habe ich denn da automatisch richtig gemacht, dass es trotzdem funktioniert hat? ...
    Nicht mit Pointern rumgespielt?

  10. #10
    Registriert seit
    22.11.2006
    Ort
    CH
    Beiträge
    3.618
    Danke
    776
    Erhielt 646 Danke für 492 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    ah okay, das mach ich ausserhalb von Instanzaufrufen nicht. Nur im FB selbst.

    Aber wie rettet man das adressregister in SCL überhaupt?

Ähnliche Themen

  1. Adressregister retten
    Von Solaris im Forum Simatic
    Antworten: 14
    Letzter Beitrag: 03.06.2012, 23:08
  2. Floating License retten
    Von Riedi im Forum Simatic
    Antworten: 3
    Letzter Beitrag: 17.08.2011, 11:53
  3. DB-Daten beim Programmladen retten
    Von Feng im Forum Simatic
    Antworten: 20
    Letzter Beitrag: 04.06.2011, 13:51
  4. Eingabedaten Retten
    Von Kuddel30 im Forum Simatic
    Antworten: 6
    Letzter Beitrag: 06.04.2010, 19:12
  5. Simkarte retten
    Von KatharinaAnastasia im Forum Simatic
    Antworten: 3
    Letzter Beitrag: 02.03.2010, 10:07

Lesezeichen

Berechtigungen

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