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

Seite 1 von 4 123 ... LetzteLetzte
Ergebnis 1 bis 10 von 40

Thema: DB Werte auffaddieren

  1. #1
    Registriert seit
    23.04.2007
    Ort
    i.d.N.v. Saarbrücken
    Beiträge
    281
    Danke
    63
    Erhielt 9 Danke für 8 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    hallööchen,

    hab folgendes problem,

    angenommen ich habe 2 DB's in den jeweils ein Wert steht. wird ein merker gesetzt soll der eine um den anderen wert erhöht werden und beim nächsten mal immer der vorher erhöhte wert wieder erhöht werden. der sich immer erhöhende wert soll dann in einen anderen db geschrieben werden

    also zb
    [html]
    erste addition 50(wert im erstenDB)+1(wert im zweitenDB) = 51
    zweite addition 51+1(wert im zweitenDB) = 52
    ...
    ...
    ...[/html]

    bis jetzt hab ich was geschrieben was allerdings immer wieder die gleichen werte addiert
    guckst du hier
    [html]
    U M 65.0
    L DB1.DBD 1
    L DB2.DBD 1
    +R
    T DB3.DBD 1[/html]

    hab die ganze zeit überlegt aber ich komm net drauf wie ich den erhöhten wert immer wieder bei der nächsten addition aufrufen und erhöhen kann, is bestimmt leicht für die Pro's, wär nett wenn mir jemand ne hilfestellung geben könnte

    mfg
    Zitieren Zitieren DB Werte auffaddieren  

  2. #2
    Registriert seit
    09.10.2006
    Beiträge
    270
    Danke
    32
    Erhielt 26 Danke für 24 Beiträge

    Standard

    Hi.

    Also wenn ich das richtig verstehe hast du z.B. im DB1 den Wert 4 und im DB2 den Wert 6. Und wenn dein Merker gesetzt wird sollen beide addiert und in den DB3 geschrieben werden.

    beim nächsten mal immer der vorher erhöhte wert wieder erhöht werden.
    Um welchen Wert? Der im DB 1; 2; oder 3

    der sich immer erhöhende wert soll dann in einen anderen db geschrieben werden
    Vielleicht kann man die DB-Adresse wie einen Pointer dynamisch gestalten.
    Habe es aber selbst noch nicht gemacht.

  3. #3
    Registriert seit
    20.11.2006
    Ort
    Hamburg
    Beiträge
    225
    Danke
    35
    Erhielt 35 Danke für 32 Beiträge

    Standard

    meinst du etwa so
    Code:
    U M65.0
    L DB1.DBD0   //hier steht Anfangs die 50
    L DB2.DBD0   //hier steht die 1
    +R
    T DB1.DBD0
     
    U M65.1       //Reset auf 50
    L 50.0
    t DB1.DBD0

  4. #4
    Avatar von geduldiger
    geduldiger ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    23.04.2007
    Ort
    i.d.N.v. Saarbrücken
    Beiträge
    281
    Danke
    63
    Erhielt 9 Danke für 8 Beiträge

    Standard

    also ich meinte das eigentlich so

    [HTML]
    wert im DB1 = 50 der bleibt auch immer so
    wert im DB2 = 1 (kann aber jeden wert annehmen also nicht nur die 1)

    jetzt soll immer wenn derselbe merker gesetzt wird der wert im DB1 um den wert im DB2 erhöht werden und beim nächsten mal dann der erhöhte wert wieder um den wert im DB2 erhöht werden
    nacher will ich einen wert in einem DB abspeichern der sich dann wie folt verändert (für das beispiel mit 50 und 1)

    50, 51, 52, 53, 54, 55...................... [/HTML]

  5. #5
    Registriert seit
    20.11.2006
    Ort
    Hamburg
    Beiträge
    225
    Danke
    35
    Erhielt 35 Danke für 32 Beiträge

    Standard

    Wird dann bis in alle Ewigkeit gezählt oder wird auch irgendwann resetet?

  6. #6
    Avatar von geduldiger
    geduldiger ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    23.04.2007
    Ort
    i.d.N.v. Saarbrücken
    Beiträge
    281
    Danke
    63
    Erhielt 9 Danke für 8 Beiträge

    Standard

    ja die werte in den DB's ändern sich öfters und es wird immer der eine auf den anderen auffaddiert, aber das is ja egal welcher wert da gerade im DB steht.

  7. #7
    Registriert seit
    20.11.2006
    Ort
    Hamburg
    Beiträge
    225
    Danke
    35
    Erhielt 35 Danke für 32 Beiträge

    Standard

    Wenn du es präziser beschreiben kannst, dann kann ich dir auch sicher helfen.
    Nochmal die Frage, die unbeantwortet blieb.
    Wird irgendwann resetet und wieder bei 50 angefangen zu zählen?

  8. #8
    Avatar von geduldiger
    geduldiger ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    23.04.2007
    Ort
    i.d.N.v. Saarbrücken
    Beiträge
    281
    Danke
    63
    Erhielt 9 Danke für 8 Beiträge

    Standard

    achso, nein es wird nicht resetet, aber irgendwann steht halt statt der 50 ein anderer wert im db (kommt von ner Visu) drin und dann wird der mit der 1 auffaddiert, auch die 1(kommt auch von der Visu) ändert sich irgendwann

    es is immer das gleiche 50; 51; 52; 53........ ( bei 50 und 1)

    oder 74; 74,3; 74,6; 74,9; 75,2;..... ( bei 70 und 0,3)

  9. #9
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.788
    Danke
    398
    Erhielt 2.414 Danke für 2.010 Beiträge

    Standard

    Also,
    ich muss zugeben, dass ich auch noch nicht richtig verstanden habe, was du machen willst.
    Trotzdem mein Vorschlag :
    Code:
    DB1.DBD0 // Anfangswert von der Visu
    DB1.DBD4 // Inkrement von der Visu
     
    DB1.DBD8 // hochgezählte Werte
    DB1.DBD12 // Gesamt
     
    U -Impuls
    UN -Flankenmerker
    spbn nCnt
     
    L DB1.DBD 8   // Hochzählen
    L DB1.DBD 4
    +R
    T DB1.DBD 8
     
    nCnt: 
    U -Impuls
    = -Flankenmerker
     
    L DB1.DBD 8   // Hochzähl-Wert
    L DB1.DBD 0   // Anfangswert
    +R
    T DB1.DBD 12  // Gesamt
    Vielleicht ist es das ja ...

  10. #10
    Registriert seit
    20.11.2006
    Ort
    Hamburg
    Beiträge
    225
    Danke
    35
    Erhielt 35 Danke für 32 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Dann benutze doch das Ändern als Zählerreset
    Code:
    FUNCTION FC 1 : VOID
    TITLE =
    VERSION : 0.1
    BEGIN
    NETWORK
    TITLE =Überprüfen ob sich Wert 1 aus der Visu geändert hat
          L     DB1.DBD    0; 
          L     DB1.DBD    4; 
          ==R   ; 
          SPB   _001; 
    //Visuwert hat sich geändert
          L     DB1.DBD    0; 
          T     DB1.DBD    4; 
          T     DB3.DBD    0; 
    _001: NOP   0; //Sprungziel bei keine Änderung aus der Visu
    NETWORK
    TITLE =Überprüfen ob sich Wert 2 aus der Visu geändert hat
     
          L     DB2.DBD    0; 
          L     DB2.DBD    4; 
          ==R   ; 
          SPB   _002; 
    //Visuwert hat sich geändert
          L     DB2.DBD    0; 
          T     DB2.DBD    4; 
          L     DB1.DBD    0; 
          T     DB3.DBD    0; 
    _002: NOP   0; //Sprungziel bei keine Änderung aus der Visu
    NETWORK
    TITLE =Addition bei Ereignis M65.0 (muss als Flanke vorliegen)
          U     M     65.0; 
          SPBN  _003; 
    //Addition durchführen
          L     DB3.DBD    0; 
          L     DB2.DBD    0; 
          +R    ; 
          T     DB3.DBD    0; 
    _003: NOP   0; //Sprungziel wenn M65.0=0
    END_FUNCTION

Ähnliche Themen

  1. Werte von PA Bus auf OP7 bzw. Visualisieren
    Von Jehuty im Forum Feldbusse
    Antworten: 0
    Letzter Beitrag: 17.11.2009, 11:13
  2. Werte in DBD schreiben
    Von nuss im Forum Simatic
    Antworten: 10
    Letzter Beitrag: 19.09.2007, 16:01
  3. Werte in BCD ausgeben
    Von SPS-Linksfuß im Forum Simatic
    Antworten: 40
    Letzter Beitrag: 22.08.2006, 11:04
  4. CP 340 / 2 Werte vom PC in ein DB der SPS
    Von maxi im Forum Simatic
    Antworten: 12
    Letzter Beitrag: 16.08.2006, 12:18
  5. Werte Speichern
    Von Unregistriert57 im Forum HMI
    Antworten: 2
    Letzter Beitrag: 25.06.2006, 10:35

Lesezeichen

Berechtigungen

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