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

Results 1 to 5 of 5

Thread: Indirekte Adressierung Pointer berechnen

  1. #1
    Join Date
    26.03.2010
    Location
    MAGDEN
    Posts
    49
    Danke
    0
    Erhielt 2 Danke für 2 Beiträge

    Default


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo Leute
    Komme nicht weiter. Folgendes Problem:


    goon: AUF "Heizkurve_DB"
    L P#166.0 //Startadresse des Arrays
    LAR1
    L P#12.0
    +AR1
    L DBD [ AR1 , P#0.0 ]
    T #gewaehlte_Vorlauf_Temperatur

    Dieser Code funktioniert. Nun möchte ich aber den Pointer L P#12.0 dynamisch berechnen.
    Ich habe ein Array of Real. Nun möchte ich den vierten Inhalt dieses Arrays lesen und auf T #gewaehlte_Vorlauf_Temperatur ausgeben.

    Also Habe ich folgendes geändert:

    goon: AUF "Heizkurve_DB"
    L P#166.0
    LAR1
    L P##Zeiger_Vorlauf_Temp
    +AR1
    L DBD [ AR1 , P#0.0 ]
    T #gewaehlte_Vorlauf_Temperatur

    Die CPU geht nun auf Stopp. L P##Zeiger_Vorlauf_Temp ist ein DINT mit dem Inhalt 4. Es sollte nun das vierte DBD laden.
    Sieht jemand meinen Fehler?? Ich konnte es nicht lösen??

    Besten im Voraus für Eure Hilfe.
    Reply With Quote Reply With Quote Indirekte Adressierung Pointer berechnen  

  2. #2
    Join Date
    22.03.2007
    Location
    Detmold (im Lipperland)
    Posts
    12,380
    Danke
    422
    Erhielt 2,528 Danke für 2,102 Beiträge

    Default

    Hallo,
    dann erkläre ich dir mal, was du da gerade machst :
    du hast einen Pointer auf eine Adresse gebildet. Zu diesem addierst du die Pointer-Adresse an der Zeiger_Vorlauf_Temperatur steht hinzu, was bewirkt, dass du dann möglicherweise außerhalb deines DB-Bereichs einlesen willst.
    Vielleicht liest du dir die Pointer-Geschichte noch einmal durch. Ein Pointer basiert auf einer Bit-Adresse. Ein Byte hat 8 Bits, ein DINT besteht aus 4 Byte - wenn du den 4. DINT einlesen willst dann das noch einmal mal 4.
    Also :
    Code:
    L Zeiger_Vorlauf_Temperatur
    L 8
    *d
    L 4
    *d
    +AR1
    Gruß
    Larry

  3. #3
    Join Date
    26.03.2010
    Location
    MAGDEN
    Posts
    49
    Danke
    0
    Erhielt 2 Danke für 2 Beiträge

    Default

    Danke für die schnelle Antwort.
    Ja ich muss mir das wohl noch einmal zu Gemüte führen. Leider geht die SPS immer noch auf stopp.
    Ich habe es wie folgt korrigiert:
    Code:
    goon: AUF   "Heizkurve_DB"
          L     P#166.0
          LAR1
          L     #Zeiger_Vorlauf_Temp
          L     8
          *D
          L     4
          *D
          +AR1
          L DBD [ AR1 , P#0.0 ]
          T     #gewaehlte_Vorlauf_Temperatur
    War da nicht was: Inhalt (also 4)um 3 Stellen nach links verschieben? Ich weiss es eben nicht mehr....

  4. #4
    Join Date
    26.03.2010
    Location
    MAGDEN
    Posts
    49
    Danke
    0
    Erhielt 2 Danke für 2 Beiträge

    Default

    Nun die Lösung:
    Code:
    goon: AUF   "Heizkurve_DB"
          L     #Zeiger_Vorlauf_Temp    //Zeiger laden
          L     4                                   //da Realwerte mit 4 Multipl.
          *D
          SLD   3                                //Zeiger schieben
          L     P#166.0
          +D
          LAR1
          L DBD [ AR1 , P#0.0 ]         //Ziel laden
          T     #gewaehlte_Vorlauf_Temperatur


    Beste Grüsse an alle.

  5. #5
    Join Date
    22.06.2009
    Location
    Sassnitz
    Posts
    15,404
    Danke
    1,272
    Erhielt 4,535 Danke für 3,656 Beiträge

    Default


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Quote Originally Posted by Supermario73 View Post
    Nun die Lösung:
    Der Code rechnet das gleiche wie der Code im Beitrag vorher.
    Also entweder sind beide richtig oder beide falsch.

    Hinweise: wenn #Zeiger_Vorlauf_Temp = 4 ist, dann wird die Adresse des 5. REAL im Array berechnet. Die Adresse des ersten REAL im Array erhält man mit #Zeiger_Vorlauf_Temp = 0

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

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

Similar Threads

  1. Step 7 indirekte Adressierung Byteadresse Pointer
    By xj900mb in forum Simatic
    Replies: 2
    Last Post: 23.04.2015, 12:31
  2. Indirekte Adressierung / Pointer ???
    By max1de in forum Simatic
    Replies: 2
    Last Post: 20.02.2012, 18:29
  3. Replies: 2
    Last Post: 11.12.2009, 06:33
  4. cpu stop indirekte adressierung pointer
    By falk.jaeger in forum Simatic
    Replies: 17
    Last Post: 23.02.2009, 07:22
  5. indirekte Adressierung und Pointer ??????????????
    By Mathias W. in forum Simatic
    Replies: 11
    Last Post: 13.10.2003, 20:21

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
  •