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

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

Thema: indirekte Adressierung

  1. #1
    Anonymous Gast

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo zusammen,

    ich habe ein Programm bei dem ich verschiedene PEWs auf einen PAW leiten möchte, dazu habe ich folgenden Teil programmiert:

    Code:
          L     #aktuellerPEW               //Lade aktuelles PEW
          SLD   3                           //Umwandlung des #aktuellenPEW in das Pointerformat Bereichsinterner Zeiger
          TAR1                              //Transferiere ins Adressregister  1 der CPU
          L     PEW [AR1,P#0.0]             //Lade das PEW, dessen Adresse im Adressregister 1 steht(ohne Offset)
          T     #AusgangPAW                 //Transferiere zum PAW
    Jedoch scheint dies nicht zu funktionieren. Das PAW zeigt nicht den Wert des PEW an. Wo liegt der Fehler? #aktuellerPEW ist ein Integerwert wie z.B. 288.

    Vielen Dank für Eure Hilfe,
    Matthias
    Zitieren Zitieren Gelöst: indirekte Adressierung  

  2. "Hallo nochmal,
    vielen Dank schon mal ich bin schon ein großes Stück weiter. Da stimmt es natürlich, dass man LAR und nicht TAR nehmen muss. Ich bekomme aber trotzdem noch keinen transfer auf das PAW hin. Laut PG-Beobachtung scheint die Adresse jetzt zu stimmen, aber er macht es irgendwie trotzdem nicht."


  3. #2
    Anonymous Gast

    Standard

    Hallo!

    wenn du LAR1 anstatt TAR1 nimmst müsste das gehen so wie du die das denkst. Aber wies aussieht willst du das immer aufs gleiche PAW ausgeben, oder? Und als Intergerwert wird ausgewählt welches PEW umkopiert werden soll.

    MfG
    André Räppel
    www.sps-concept.de
    Zitieren Zitieren Zeigeradressierung  

  4. #3
    Anonymous Gast

    Standard

    Genau, ich möchte über das Schieben und transferieren in das AR1 erreichen, dass der PEW variiert und an immer das gleiche PAW transferiert wird. also wird LAR1 nichts bingen, da ich erst die Adresse ins AR schieben muss.

  5. #4
    Anonymous Gast

    Standard

    Also um nochmal genau die Funktion zu beschreiben: Ich habe eine Variable #aktuellerPEW in der der PEW als Zahl gespeichert ist. Beispielsweise 288. Diese Zahl variiert bei jedem durchlauf. Ich muss diese Zahl also in das Pointerformat bringen um den Eingang auf einen festen PAW zu bringen. Es soll in diesem Beispielsdurchgang also nichts anderes passieren als

    Code:
    L PEW288
    T PAW288
    im nächsten durchgang könnte das dann lauten:

    Code:
    L PEW290
    T PAW288
    Nur gerade dieses Transferieren macht er nicht. Wo mache ich den Fehler?

  6. #5
    Registriert seit
    16.06.2003
    Ort
    88356 Ostrach
    Beiträge
    4.822
    Danke
    1.254
    Erhielt 1.110 Danke für 531 Beiträge

    Standard

    was für daten liest du den überhaupt ein?
    möglicherweise brauchst du die bausteine sfc14 und sfc15 um die daten konsistent zu lesen?

  7. #6
    Anonymous Gast

    Standard

    Hallo,
    das soll universell sein, so dass ich diesen Baustein in diversen Projekten einsetzen kann. Daran kann es aber nicht wirklich liegen, da ich an einer anderen Stelle das gleiche Problem habe. Müsste denke ich ein logischer Fehler sein:
    Code:
     L     #AusgabeBit_Start
          L     #Bytebereich_I              //Lades aktuelles PEW
          +I    
          SLD   3                           //Umwandlung des #aktuellenPEW in das Pointerformat Bereichsinterner Zeiger
          TAR1                              //Transferiere ins Adressregister  1 der CPU
          S     A [AR1,P#0.1]               //Lade das PEW, dessen Adresse im Adressregister 1 steht(ohne Offset)
    An anderer STelle will ich dies machen. Kurze Beschreibung: Eine Byteadresse soll zusammenaddiert werden (zwei Integer werte) beispielsweise 2+4 sodass ich auf dem AB6 lande und dann für das Pointerformat 3 Stellen geschoben werden. Anschließend soll das ganze in das Adressregister geladen werden und dann mit der indirekten Adressierung auf Ax.1 verweisen wie in meinem Beispiel also auf A6.1 und diesen Ausgang setzen.

    Aber auch dies kappt nicht. ist ja quasi das gleiche PRinzip, aber löuft nicht.

  8. #7
    Anonymous Gast

    Standard

    Hallo Matthias,

    wer lesen kann is klar im Vorteil! Du sollst anstatt TAR1 -> LAR1 nehmen. Denn mit TAR1 schiebst du den Inhalt des AR1 in den Akku und nicht umgedreht.

    MfG
    André Räppel
    www.sps-concept.de
    Zitieren Zitieren Beitrag richtig lesen!!  

  9. #8
    Registriert seit
    19.06.2003
    Beiträge
    200
    Danke
    10
    Erhielt 17 Danke für 13 Beiträge

    Standard

    Hallo zusammen,
    Um den Inhalt vom Akku1 in ein Adressregister zu laden muss der Befehl
    LAR1 oder LAR2 benutzt werden. Mit TAR1 oder TAR2 wird das aktuelle Adressregister in den Akku1 kopiert.

    Um solche Programme zu testen eignet sich übrigens der Debugmodus.
    Im Debugmodus kann Befehl für Befehl abgearbeitet und die Register beobachtet werden.
    Folgendes gibt es dabei zu beachten:
    - Die SPS wechselt in den Modus Halt (alle Ausgänge log.0)
    - Der Baustein muss Online geöffnet werden.
    - Unter Ansicht muss explizit Darstellung AWL angewählt sein.
    - Die Betriebsart der CPU muss auf Testbetrieb geschaltet sein (nicht Prozessbetrieb)
    Gruss Martin

  10. #9
    Anonymous Gast

    Standard

    Hallo nochmal,
    vielen Dank schon mal ich bin schon ein großes Stück weiter. Da stimmt es natürlich, dass man LAR und nicht TAR nehmen muss. Ich bekomme aber trotzdem noch keinen transfer auf das PAW hin. Laut PG-Beobachtung scheint die Adresse jetzt zu stimmen, aber er macht es irgendwie trotzdem nicht.

  11. #10
    Anonymous Gast

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo Matthias,

    versuch mal statt SLD 3 --> SLW 3
    also :
    Code:
    L #aktPEW   // Var IN  int
    SLW 3
    LAR1
    L PEW[AR1,P#0.0]
    T #aktPAW  // Var Out  WORD
    das sollte eigentlich funktionieren.

    mfg.
    Rolf

Ähnliche Themen

  1. Indirekte Adressierung in AWL
    Von Bensen83 im Forum Simatic
    Antworten: 16
    Letzter Beitrag: 31.01.2015, 15:58
  2. indirekte Adressierung
    Von Sash7770 im Forum Simatic
    Antworten: 8
    Letzter Beitrag: 22.12.2008, 12:47
  3. indirekte Adressierung
    Von Linowitch im Forum HMI
    Antworten: 13
    Letzter Beitrag: 06.12.2008, 19:43
  4. Indirekte Adressierung
    Von thomasgull im Forum Simatic
    Antworten: 8
    Letzter Beitrag: 31.01.2008, 14:49
  5. Indirekte Adressierung von SFC 20
    Von andre im Forum Simatic
    Antworten: 6
    Letzter Beitrag: 05.09.2005, 09:44

Lesezeichen

Berechtigungen

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