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

Page 1 of 2 12 LastLast
Results 1 to 10 of 11

Thread: indirekte Adressierung

  1. #1
    Anonymous Gast

    Default


    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
    Reply With Quote Reply With Quote Answered: 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

    Default

    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
    Reply With Quote Reply With Quote Zeigeradressierung  

  4. #3
    Anonymous Gast

    Default

    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

    Default

    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
    Join Date
    16.06.2003
    Location
    88356 Ostrach
    Posts
    4,854
    Danke
    1,279
    Erhielt 1,125 Danke für 537 Beiträge

    Default

    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

    Default

    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

    Default

    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
    Reply With Quote Reply With Quote Beitrag richtig lesen!!  

  9. #8
    Join Date
    19.06.2003
    Posts
    206
    Danke
    12
    Erhielt 21 Danke für 16 Beiträge

    Default

    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

    Default

    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

    Default


    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

Similar Threads

  1. Indirekte Adressierung in AWL
    By Bensen83 in forum Simatic
    Replies: 16
    Last Post: 31.01.2015, 15:58
  2. indirekte Adressierung
    By Sash7770 in forum Simatic
    Replies: 8
    Last Post: 22.12.2008, 12:47
  3. indirekte Adressierung
    By Linowitch in forum HMI
    Replies: 13
    Last Post: 06.12.2008, 19:43
  4. Indirekte Adressierung
    By thomasgull in forum Simatic
    Replies: 8
    Last Post: 31.01.2008, 14:49
  5. Indirekte Adressierung von SFC 20
    By andre in forum Simatic
    Replies: 6
    Last Post: 05.09.2005, 09:44

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •