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

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

Thema: Pointer DB

  1. #1
    BlackDice Gast

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Moin zusammen,
    ich bin grad dabei einen Pointer zu programmieren um Daten in einen DB zu schreiben. Diese Sollen dann von der ersten Adresse bis zu letzten durchlaufen. Mein Netzwerk sieht zur zeit so aus:
    Code:
    
    
          U     M      0.0
          FP    M     99.0
    
          AUF   DB     1
          L     P#0.0
    
          L     0
          T     #Zaehler
    
    Loop: L     #Zaehler
          SLD   3
          LAR1  
    
          L     DBD [AR1,P#2.0]
          T     DBD [AR1,P#6.0]
    
          L     #Zaehler
          L     26
          >=D   
          SPB   ENDE
    
          L     #Zaehler
          L     L#4
          +D    
          T     #Zaehler
          SPA   Loop
    
    
    ENDE: NOP   0
    Durch den M0.0 möchte ich das die Daten nur bei einer Positiven Flanke weiter geschoben werden.
    Das Problem ist dass meine PLCSim in Stop geht der Diagnosepuffer sagt "Bereislängenfehler beim lesen" und zwar bei deim L und T [AR1,P#2.0] und [AR1,P#6.0]

    Viele Dan schonmal
    Geändert von BlackDice (23.09.2016 um 12:06 Uhr)
    Zitieren Zitieren Pointer DB  

  2. #2
    Registriert seit
    12.03.2015
    Ort
    Österreich
    Beiträge
    13
    Danke
    5
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Gibt es denn den besagten DB schon?

  3. #3
    Registriert seit
    14.01.2015
    Beiträge
    1.347
    Danke
    368
    Erhielt 228 Danke für 202 Beiträge

    Standard

    Wie groß ist denn der angelegte DB1. Ist er mindestens 10 Byte lang ?

    Ich habe gerade gesehen, dass noch hochgezählt wird. Dementsprechend müsste der DB1 noch länger sein.

    Mit Grüßen
    Geändert von DeltaMikeAir (23.09.2016 um 11:49 Uhr) Grund: Ergänzung

  4. #4
    BlackDice Gast

    Standard

    Ja den DB gibt es schon. Ich möchte im DB Real Werte verschieben. Der DB geht bis zur Adresse 26.0

  5. #5
    Registriert seit
    14.01.2015
    Beiträge
    1.347
    Danke
    368
    Erhielt 228 Danke für 202 Beiträge

    Standard

    Was jetzt schon einmal auffällt, ist der Vergleich und das addieren.
    Im ersten Zyklus kommst der #Zaehler mit 0 rein, dann wird +4 addiert, dann noch einmal 4 addiert.
    Das heißt, der Vergleich auf =6 wird nicht greifen sondern nur der >6. Welches Format hat der #Zaehler,
    weil du mit +D addierst. Ist es ein Word oder DWORD?

  6. #6
    Registriert seit
    14.01.2015
    Beiträge
    1.347
    Danke
    368
    Erhielt 228 Danke für 202 Beiträge

    Standard

    Wenn die CPU auf STOP geht, kannst du ja in der Diagnose nachschauen, auf welche Adresse der Pointer zugreifen wollte. Das wäre interessant

  7. #7
    BlackDice Gast

    Standard

    Ok da ist mir beim Kopieren was abhanden gekommen. Ich vergleiche auf 26. Hab ich im ersten post auch schon geändert.
    Meine Idee ist dass ich mehrere Plätzte (2,6,8,10,14,18,22 und 26) habe. Der erste wert soll auf Platz 2 eingetragen werden und dann mit der Positiven Flanke auf den nächsten Platz kopiert werden.
    Der Zähler ist Real
    Das ist Baustein adresse 108. Wenn ich dann mit "Gehe zu" zum Fehler springe ist der Cursor bei der Zeile "L DBD [AR1,P#0.0]
    Geändert von BlackDice (23.09.2016 um 12:07 Uhr)

  8. #8
    Registriert seit
    13.03.2007
    Ort
    Nürnberg
    Beiträge
    551
    Danke
    56
    Erhielt 48 Danke für 43 Beiträge

    Standard

    mir fallen anderes auf.

    a) das mit der pos. Flanke, wäre wohl so:
    U M 0.0
    FP M 99.0
    spb Go
    bea

    Go: AUF DB 1
    ....


    b) loop
    hab grad das Berger-Buch da.

    L Anzahl
    Next: T #Zaehler

    ...

    L #Zaehler
    Loop Next

    der "Loop" läuft rückwärts !


    c) richtung:
    mit
    L DBD [AR1,P#2.0]
    T DBD [AR1,P#6.0]
    willst du die daten nach hinten schieben.
    damit du nichts überschreibst, was schon dort ist, müsste man von hinten anfangen und die daten aus dieser richtung "holen".

    das erhöhnen vom AR1 kannst du sicher selbst:
    +AR1 P#2.0 bei Wortweise
    +AR1 P#4.0 bei DWortweise
    Kabelsalat ist Gesund
    (vom CCC abgekupfert)

    Prognosen sind schwierig,
    besonders wenn sie die Zukunft betreffen.
    (Ursprung nicht wirklich bekannt)



  9. #9
    BlackDice Gast

    Standard

    Dann müsste es ja so etwas richtiger sein. Sage ich den denn eigentlich nicht durch die 26 die in ich den Zähler lade dass er bei Adresse 26 Anfangen soll?

    Code:
    U     M      0.0     
     FP    M     99.0
    
    
          SPB   Los
          BEA   
    
    
    Los:  AUF   DB     1
          L     P#0.0
    
    
          L     26
          T     #Zaehler
    
    
    Loop: L     #Zaehler
          SLD   3
          LAR1  
    
    
          L     DBD [AR1,P#0.0]
          T     DBD [AR1,P#4.0]
    
    
          L     #Zaehler
          L     2
          >=D   
          SPB   ENDE
    
    
          L     #Zaehler
          L     L#4
          -D    
          T     #Zaehler
          SPA   Loop
    
    
    ENDE: NOP   0

  10. #10
    Registriert seit
    13.03.2007
    Ort
    Nürnberg
    Beiträge
    551
    Danke
    56
    Erhielt 48 Danke für 43 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    L 26
    T #Zaehler
    ...
    L #Zaehler
    L 2
    >=D
    SPB ENDE ///// ja 26 ist größer als 2, dann zu Ende. Loopt also gar nicht.
    Kabelsalat ist Gesund
    (vom CCC abgekupfert)

    Prognosen sind schwierig,
    besonders wenn sie die Zukunft betreffen.
    (Ursprung nicht wirklich bekannt)



Ähnliche Themen

  1. Step 7 Pointer
    Von 00alex im Forum Simatic
    Antworten: 6
    Letzter Beitrag: 06.06.2013, 06:57
  2. Pointer als IN (FC/FB) wieder übergeben als Pointer
    Von saarlaender im Forum Simatic
    Antworten: 15
    Letzter Beitrag: 18.06.2012, 11:47
  3. S7 LAR P##... --- pointer auf pointer
    Von milmu im Forum Simatic
    Antworten: 7
    Letzter Beitrag: 22.11.2010, 17:39
  4. Pointer
    Von Mathias im Forum Simatic
    Antworten: 4
    Letzter Beitrag: 19.06.2009, 17:02
  5. Pointer
    Von OB1 im Forum Simatic
    Antworten: 5
    Letzter Beitrag: 20.02.2009, 17:52

Lesezeichen

Berechtigungen

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