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

Seite 1 von 10 123 ... LetzteLetzte
Ergebnis 1 bis 10 von 99

Thema: Mit Pointer in Ringregister schreiben

  1. #1
    Registriert seit
    23.07.2013
    Beiträge
    66
    Danke
    26
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Guten Morgen,

    ich benutze eine CPU314C-2DP.

    Ich möchte gerne mit einem FB einen Tastendruck erkennen und diesen in ein Ringregister schreiben.
    Jetzt ist die Frage wie ich einen Pointer benutze um im Register fortlaufend zu schreiben mit meinem Beispiel? Bisweilen überschreibe ich immer nur den ersten Eintrag!
    Mein Quelltext kommt hier:

    Netzwerk1 - Tastendruck erkennen

    Code:
          U     E    124.1
          FP    M     10.0
          =     M     10.1
    
          U     M     10.1
          SPBN  M001
          L     "Register".Ereignis[0].Ereignisnummer
          L     1
          +I    
          T     "Register".Ereignis[0].Ereignisnummer
    
    M001: NOP   0
    Netzwerk2 - Uhrzeit (Stunden) protokollieren

    Code:
          U     E    124.1
          FP    M     10.2
          =     M     10.3
    
          U     M     10.3
          SPBN  M003
          L     "Uhrzeit".Aktuell_Stunden
          T     #Temp_akt_h
    
    M003: L     #Temp_akt_h
          T     "Register".Ereignis[0].Stunde
    Ein Bild von meinem Db hänge ich auch dabei...
    DB.jpg
    M.f.G. Nico
    Zitieren Zitieren Mit Pointer in Ringregister schreiben  

  2. #2
    Registriert seit
    20.06.2003
    Ort
    Sauerland.NRW.Deutschland
    Beiträge
    4.862
    Danke
    78
    Erhielt 805 Danke für 548 Beiträge

    Standard

    .
    mfg Volker .......... .. alles wird gut ..

    =>Meine Homepage .. direkt zum Download

    Meine Definition von TIA: Total Inakzeptable Applikation

  3. Folgender Benutzer sagt Danke zu volker für den nützlichen Beitrag:

    Minico89 (29.07.2013)

  4. #3
    Registriert seit
    19.07.2010
    Beiträge
    1.289
    Danke
    213
    Erhielt 267 Danke für 233 Beiträge

    Standard

    mal so ein Ansatz von mir. Keine Garantie, nur schnell runtergetippt und nicht getestet.

    Code:
          U     E    124.1
          FP    M     10.1
          SPBN  ende
    
    
          AUF   "MyDB"
    
    // Zeiger inkrementieren
          L     MW    12                    // Zeiger für Ringpuffer
          +     1
          T     MW    12                    // Zeiger für Ringpuffer
    
    // Zeiger auf Überlauf prüfen
          L     MW    12                    // Zeiger für Ringpuffer
          L     10                          // maximale Anzahl an Datensätzen
          >I    
          SPBN  over
          L     0
    over: T     MW    12                    // Zeiger für Ringpuffer
    
    // Daten eintragen
          L     8
          *I    
          +     10
          SLD   3
          LAR1  
    
          L     DBW [AR1,P#0.0]             // Ereignis laden
          +     1                           // eins addieren
          T     DBW [AR1,P#0.0]             // und wieder sichern
    
          L     "Uhrzeit".Aktuell_Stunde    // Aktuelle Stunde laden
          T     DBW [AR1,P#4.0]             // und in Ringpuffer sichern
    
    ende: NOP   0
    mfG Aventinus

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

    Minico89 (29.07.2013)

  6. #4
    Registriert seit
    23.07.2013
    Beiträge
    66
    Danke
    26
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Zitat Zitat von volker Beitrag anzeigen

    danke, aber das hab ich leider nicht ganz verstanden, ich habe erst seit 5 tagen mit sps zu tun... sorry

  7. #5
    Registriert seit
    19.07.2010
    Beiträge
    1.289
    Danke
    213
    Erhielt 267 Danke für 233 Beiträge

    Standard

    Dann musst du uns auch sagen wo es genau klemmt.

    Indirekt adressieren nach 5 Tagen wenn man vorher noch nix mit Programmieren zu tun hatte ist aber meist auch sportlich.
    mfG Aventinus

  8. #6
    Registriert seit
    23.07.2013
    Beiträge
    66
    Danke
    26
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Ich weiss noch nicht genau wo es genau klemmt, ich versuche jetzt erstmal deinen Code in meinem einzubinden.

    Nur eins verstehe ich nicht, und zwar:

    Code:
    // Daten eintragen
          L     8                      //warum 8?
          *I    
          +     10
          SLD   3
          LAR1  
    
          L     DBW [AR1,P#0.0]             // Ereignis laden
          +     1                           // eins addieren
          T     DBW [AR1,P#0.0]             // und wieder sichern
    
          L     "Uhrzeit".Aktuell_Stunde    // Aktuelle Stunde laden
          T     DBW [AR1,P#4.0]             // und in Ringpuffer sichern
    
    ende: NOP   0

  9. #7
    Registriert seit
    19.07.2010
    Beiträge
    1.289
    Danke
    213
    Erhielt 267 Danke für 233 Beiträge

    Standard

    Dein Datensatz ist 8 byte lang, 2 Integer und 4 Byte.
    mfG Aventinus

  10. #8
    Registriert seit
    23.07.2013
    Beiträge
    66
    Danke
    26
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Entweder raff ich nicht was du grade geschrieben hast, oder ich bin total doof, aber mein Datensatz ist 2 Int und 3 Byte lang oder?

  11. #9
    Registriert seit
    19.07.2010
    Beiträge
    1.289
    Danke
    213
    Erhielt 267 Danke für 233 Beiträge

    Standard

    Ja, klar. Aber wenn du in deinen Screenshot schaust stellst du fest, dass das Byte 17 nicht verwendet wird. Datentypen mit Word oder Doppelwortgröße beginnen immer an einer geraden Byteadresse. Und daher hast du 2 Integer, 3 Byte und ein Byte Reserve.
    mfG Aventinus

  12. #10
    Registriert seit
    19.07.2010
    Beiträge
    1.289
    Danke
    213
    Erhielt 267 Danke für 233 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Ja, klar. Aber wenn du in deinen Screenshot schaust stellst du fest, dass das Byte 17 nicht verwendet wird. Datentypen mit Word oder Doppelwortgröße beginnen immer an einer geraden Byteadresse. Und daher hast du 2 Integer, 3 Byte und ein Byte Reserve.
    mfG Aventinus

  13. Folgender Benutzer sagt Danke zu Aventinus für den nützlichen Beitrag:

    Minico89 (29.07.2013)

Ähnliche Themen

  1. mit any pointer ein bit schreiben
    Von Limette im Forum Simatic
    Antworten: 24
    Letzter Beitrag: 01.03.2012, 12:40
  2. Array in DB schreiben(any-pointer)
    Von Limette im Forum Simatic
    Antworten: 14
    Letzter Beitrag: 28.10.2011, 22:17
  3. Störmledungsbaustein mit Pointer?!?
    Von CrazyMC im Forum Simatic
    Antworten: 27
    Letzter Beitrag: 20.05.2010, 00:49
  4. Pointer als Out Variable Daten schreiben
    Von mkd im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 28.10.2009, 10:58
  5. Problem mit Pointer
    Von Mathias im Forum Simatic
    Antworten: 9
    Letzter Beitrag: 06.02.2009, 10:03

Lesezeichen

Berechtigungen

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