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

Ergebnis 1 bis 7 von 7

Thema: Zugriff auf Lokaldaten in einem FC/FB

  1. #1
    Registriert seit
    30.01.2009
    Beiträge
    440
    Danke
    25
    Erhielt 48 Danke für 44 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hi Leute,

    hatte letzte Woche schon ne Diskussion zu diesem Thema und versuche gerade hier für mich Licht ins Dunkle zu bekommen. Habe im Forum u.a. folgende Lösung gefunden, habe aber Probleme dies zu verstehen

    TAR1 #dTempAR1 //Adressregister retten
    TAR2 #dTempAR2

    LAR1 P##stTemp //startadrese der quelle in AR1
    LAR2 P##wTempOutput //startadresse des ziels in AR2

    L W [AR1,P#0.0] //stTemp nach
    T W [AR2,P#0.0] //wTempOutput schreiben

    LAR1 #dTempAR1
    LAR2 #dTempAR2 //Adressregister zurückschreiben

    L #wTempOutput //aus dem Temp-Bereich
    T #wOutput //auf den Ausgang kopieren

    Was ich nicht verstehe:
    Wo, wie, warum sind die Variablen #dTempAR1 und #dTempAR2 definiert
    Was bringt das zuvor Adressregister retten und zurückschreiben. Stehe irgendwie aufm Schlauch das nachzuvollziehen, liegt sicher auch daran das man dies zu wenig anwendet, hoffe ich
    Zitieren Zitieren Zugriff auf Lokaldaten in einem FC/FB  

  2. #2
    Registriert seit
    11.09.2007
    Ort
    Suedwestpfalz
    Beiträge
    917
    Danke
    81
    Erhielt 209 Danke für 192 Beiträge

    Standard

    Das sind Hilfsdoppelwörter in denen die Inhalte der AR zwischengepuffert werden.

    Am ende des Bausteines werden die Variablen dann wieder in die AR geladen.

    4L hat das gut beschrieben, mit Code.

    http://www.spsforum.com/showthread.php?t=23433

    dtsclipper
    Das Grauen lauert in der Zwischenablage !!

  3. #3
    Move ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    30.01.2009
    Beiträge
    440
    Danke
    25
    Erhielt 48 Danke für 44 Beiträge

    Standard

    Tja, das ist ja der Beitrag von 4L den ich nicht ganz verstehe

  4. #4
    Registriert seit
    11.12.2008
    Beiträge
    73
    Danke
    39
    Erhielt 9 Danke für 8 Beiträge

    Standard

    Zitat Zitat von Move Beitrag anzeigen
    Was ich nicht verstehe:
    Wo, wie, warum sind die Variablen #dTempAR1 und #dTempAR2 definiert
    Was bringt das zuvor Adressregister retten und zurückschreiben. Stehe irgendwie aufm Schlauch das nachzuvollziehen, liegt sicher auch daran das man dies zu wenig anwendet, hoffe ich
    das sind einfach nur DWORD-Temp-variablen zum merken der alten Registerwerte

    und das retten der Register ist dann praktisch, wenn du in einem DB mehrfach die gleiche Struktur hintereinander hast und in deinem programm deren bestandteile immer registerindirekt adressierst

    (z.b. L W [AR1,P#0.0] )

    und dann zwischen diesen indirekten aufrufen noch der programmschnipsel oben reinkommt.

    angenommen, dein DB bestünde aus nem Array von UDTs. Die UDTs hätten dann ja immer die gleiche Struktur... wenn du also innerhalb eines UDTs arbeiten willst und deren Struktur kennst, kannst du die die Anfangsadresse des gerade relevanten UDTs ins AR1 laden und von diesem startpunkt aus feste pointer verwenden.

    wenn das Array dann auch noch in einem Instanz-DB stünde und deine befehle in nem Multiinstanzierten FB stünden, wäre auch noch das AR2 relevant, weil im AR2 der anfang der Daten dieser instanz stünde

    während man das AR1 in der regel einfach neu mit der Anfangsadresse des gewünschten UDTs beschreiben könnte, endet n verändertes AR2 bei multiinstanzen in nem ziemlichen chaos

  5. Folgender Benutzer sagt Danke zu Mangokind für den nützlichen Beitrag:

    Move (02.03.2009)

  6. #5
    Move ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    30.01.2009
    Beiträge
    440
    Danke
    25
    Erhielt 48 Danke für 44 Beiträge

    Standard

    Ok,
    will heißen, das wenn ich mehrere Eingangsparameter an meinem FC/FB habe und über Adressregister diese ansprechen will, muß ich den gültigen Parameter ins AR laden,auswerten, beschreiben etc. und am Ende wieder zurückschreiben bzw retten um dann die nächste Variable nutzen zu können?

  7. #6
    Registriert seit
    11.09.2007
    Ort
    Suedwestpfalz
    Beiträge
    917
    Danke
    81
    Erhielt 209 Danke für 192 Beiträge

    Standard

    Vereinfacht geesagt:

    Die ARs werden gerettet um mit ihnen spielen zu können, aber dann wieder in den Ursprungszustand überführt werden zu können. Also das Spielzeug wieder wegräumen.

    Wichtig, wie Mangokind gesagt hat, bei Multiinstanzen.
    Das AR 2 verwaltt hier nämlich die DB-Adresse, und wenn die verdreht ist bist Du nicht mehr in Deinem I-DB...

    Also setzt man halt am Ende seinen Codes die AR wieder zurück.

    dtsclipper
    Das Grauen lauert in der Zwischenablage !!

  8. Folgender Benutzer sagt Danke zu dtsclipper für den nützlichen Beitrag:

    Mangokind (02.03.2009)

  9. #7
    Registriert seit
    11.09.2007
    Ort
    Suedwestpfalz
    Beiträge
    917
    Danke
    81
    Erhielt 209 Danke für 192 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von Move Beitrag anzeigen
    Ok,
    will heißen, das wenn ich mehrere Eingangsparameter an meinem FC/FB habe und über Adressregister diese ansprechen will, muß ich den gültigen Parameter ins AR laden,auswerten, beschreiben etc. und am Ende wieder zurückschreiben bzw retten um dann die nächste Variable nutzen zu können?
    Nicht ganz genau.
    Am Anfang Deines Codes einmal Retten, dann alles Durchrechnen, dann ARs widerherstellen und Ende

    dtsclipper
    Das Grauen lauert in der Zwischenablage !!

  10. Folgende 2 Benutzer sagen Danke zu dtsclipper für den nützlichen Beitrag:

    Move (02.03.2009),SIGGI (02.03.2009)

Ähnliche Themen

  1. Zugriff auf Lokaldaten
    Von Züttu im Forum Simatic
    Antworten: 4
    Letzter Beitrag: 19.07.2010, 12:07
  2. Antworten: 3
    Letzter Beitrag: 07.10.2009, 16:12
  3. Antworten: 0
    Letzter Beitrag: 13.11.2008, 12:39
  4. Indirekter Zugriff auf Lokaldaten des Vorgänger
    Von Senator42 im Forum Simatic
    Antworten: 1
    Letzter Beitrag: 24.03.2007, 14:17
  5. Problem mit BLKMOV bei Zugriff auf V-Lokaldaten
    Von armadillo im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 11.02.2006, 06:38

Lesezeichen

Berechtigungen

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