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

Ergebnis 1 bis 8 von 8

Thema: Pointer und Schieber

  1. #1
    Anonymous Gast

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Halli Hallo,
    ich habe kleine Probleme im Moment.
    Ich habe Daten auf DB gespeichert und möchte, dass nach einer bestimmte Zeit, wenn ich neue Daten bekomme, werden die Alte Daten nicht überschreiben sonder geschoben. Ich möchte keine daten verloren.
    Mein Problem ist: ich kenne mich nicht so gut mit Pointer und Schieber und ich weiss nicht so genau wie ich das realizieren kann :oops: .
    kennten jemand mir helfen???
    Danke![/img]
    Zitieren Zitieren Gelöst: Pointer und Schieber  

  2. "
    Dieses Programm funktioniert aber nicht in S7, da es dort keine "Bearbeite"-Befehl mehr gibt!
    ok ok
    er wird denn so kleinlich sein. das kann man doch ohne probs mal eben in s7 konvertieren lassen.

    dann sieht das so aus.
    Code:
    deklaration:
    in:
    EINT	BOOL		 EINT	
    FIDB	BLOCK_DB		 FIDB	
    DADB	BLOCK_DB		 DADB	
    _DATE	WORD		 DATE	
    NUWO	INT		 NUWO	
    out:
    FLAN	BOOL		 FLAN	
    IMPU	BOOL		 IMPU	
    temp:
    conv_akku1	DWORD			
    conv_akku2	DWORD			
    conv_stw	WORD			
    
    
          UN    #EINT                       // Daten eintragen anstossen
          R     #FLAN                       // Flankenmerker ruecksetzen
          U     #EINT
          UN    #FLAN
          S     #FLAN
          =     #IMPU                       // Impulsmerker
    //;
          UN    #IMPU
          SPB   M001
    //;
          AUF   #DADB                       // Daten - DB
          L     #_DATE                      // Daten zum abspeichern
          T     MW   202
    //;
          AUF   #FIDB                       // fifo-db
          L     #NUWO                       // Anzahl nutzworte
          L     2                           // endadresse -1 erzeugen
          +I    
          T     MW   200                    // index
    //;
    M002: L     MW   200                    // lade index dw x
          T     DBW    0
    
          T     #conv_akku1
          L     STW
          T     #conv_stw
          L     DBB    1
          SLW   4
          LAR1  
          L     #conv_stw
          T     STW
          L     #conv_akku1
          L     DBW [AR1,P#0.0]             // lade dw x
          T     DBW    2                    // zwischenspeichern in dw1
          L     MW   200
          L     1
          +I                                // erzeuge index +1
          T     DBW    0                    // neuer index
          L     DBW    2                    // zwischengespeichertes dw x
    
          T     #conv_akku1
          TAK   
          T     #conv_akku2
          L     STW
          T     #conv_stw
          L     DBB    1
          SLW   4
          LAR1  
          L     #conv_stw
          T     STW
          L     #conv_akku2
          L     #conv_akku1
          T     DBW [AR1,P#0.0]             // im neuen index speichern
    //;
          L     MW   200                    // index -1
          L     1
          -I    
          T     MW   200
          L     MW   200
          L     2                           // erstes nutzwort erreicht
          <>I   
          SPB   M002                        // sprung bei nein
          L     MW   202                    // ablagedaten
          T     DBW    6                    // im dw 3 speichern
    M001&#58; NOP   0
    mfg"


  3. #2
    Registriert seit
    20.06.2003
    Ort
    Sauerland.NRW.Deutschland
    Beiträge
    4.884
    Danke
    80
    Erhielt 814 Danke für 551 Beiträge

    Standard

    hier mal ein baustein mit dem man sowas machen könnte.
    wenn oben ein neuer wert eingetragen wird wird unten der letzte rausgeschoben.

    diesen baustein habe ich mal für s5 geschrieben, funktioniert aber auch in einer s7.

    das erste nutzdatenwort ist dw 3. die oberen werden intern benötigt.

    Code:
    Netzwerk 1                   Ein Wort in Fifo speichern       FUP Ausgabe
    Name &#58;FIFO-EIN
    Bez  &#58;EINT      E/A/D/B/T/Z&#58; E  BI/BY/W/D&#58; BI
    Bez  &#58;FIDB      E/A/D/B/T/Z&#58; B
    Bez  &#58;DADB      E/A/D/B/T/Z&#58; B
    Bez  &#58;FLAN      E/A/D/B/T/Z&#58; A  BI/BY/W/D&#58; BI
    Bez  &#58;IMPU      E/A/D/B/T/Z&#58; A  BI/BY/W/D&#58; BI
    Bez  &#58;DATE      E/A/D/B/T/Z&#58; E  BI/BY/W/D&#58; W
    Bez  &#58;NUWO      E/A/D/B/T/Z&#58; D  KM/KH/KY/KC/KF/KT/KZ/KG&#58; KF
    
         &#58;L   KC C
         &#58;L   KY 10,2                              EINT=Daten eintragen anstossen
         &#58;L   KH 2000                              FIDB=FIFO-DB
         &#58;L   KC BY                                DADB=Daten-DB
         &#58;L   KC VL                                FLAN=Flankenmer.zum Daten eintr.
         &#58;                                         IMPU=Impulsmer.zum Daten eintr.
         &#58;                                         DATE=Daten zum ablegen
         &#58;                                         NUWO=Anzahl der Nutzworte
         &#58;***
    
    
    Netzwerk 2                                                    FUP Ausgabe
         &#58;AWL
         &#58;UN  =EINT                                Daten eintragen anstossen
         &#58;RB  =FLAN                                Flankenmerker ruecksetzen
         &#58;U   =EINT
         &#58;UN  =FLAN
         &#58;S   =FLAN
         &#58;=   =IMPU                                Impulsmerker
         &#58;
         &#58;UN  =IMPU
         &#58;SPB =M001
         &#58;
         &#58;B   =DADB                                Daten - DB
         &#58;L   =DATE                                Daten zum abspeichern
         &#58;T   MW 202
         &#58;
         &#58;B   =FIDB                                fifo-db
         &#58;LW  =NUWO                                Anzahl nutzworte
         &#58;L   KF +2                                endadresse -1 erzeugen
         &#58;+F
         &#58;T   MW 200                               index
         &#58;
    M002 &#58;L   MW 200                               lade index dw x
         &#58;T   DW   0
         &#58;B   DW   0
         &#58;L   DW   0                               lade dw x
         &#58;T   DW   1                               zwischenspeichern in dw1
         &#58;L   MW 200
         &#58;L   KF +1
         &#58;+F                                       erzeuge index +1
         &#58;T   DW   0                               neuer index
         &#58;L   DW   1                               zwischengespeichertes dw x
         &#58;B   DW   0
         &#58;T   DW   0                               im neuen index speichern
         &#58;
         &#58;L   MW 200                               index -1
         &#58;L   KF +1
         &#58;-F
         &#58;T   MW 200
         &#58;L   MW 200
         &#58;L   KF +2                                erstes nutzwort erreicht
         &#58;><F
         &#58;SPB =M002                                sprung bei nein
         &#58;L   MW 202                               ablagedaten
         &#58;T   DW   3                               im dw 3 speichern
    M001 &#58;BE
    mfg

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

    SIGGI (17.10.2008)

  5. #3
    Registriert seit
    30.08.2003
    Beiträge
    2.197
    Danke
    30
    Erhielt 258 Danke für 229 Beiträge

    Standard

    Hallo Zeus,

    wieviele Daten sollen denn da verschoben werden und wieviele Datensätze sollen maximal erhalten bleiben?

    Mfg
    André Räppel
    Zitieren Zitieren Schieber  

  6. #4
    Registriert seit
    02.07.2003
    Beiträge
    18
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hallo Zeus,

    dazu braucht man einen FIFO. Wenn deine Einträge Byte/Word oder DWord lang sind, hast du Glück gehabt, sowas gibt (oder gab?) es
    schon mal in der S7-Bibliotek. Hast du aber größere Einträge, so
    bleibt dir nichts anderes übrig diesen FIFO selber zu schreiben
    oder zu fragen ob jemand so einen Baustein schon geschrieben hat.
    Leider gibt es derzeit in dem Forum keine Möglichkeit freie Bausteine (unter z.B.) GPL ins Netz zu stellen schade.
    Siemens bietet einen FIFO auch über seine kostenpflichtigen Dienst an.
    Wir haben sollch einen Baustein letztes Jahr mal gekauft, hatten aber nur
    Probleme damit.
    gesegnete Arbeit,
    Ulrich Klakow
    Zitieren Zitieren FIFO verwenden  

  7. #5
    Anonymous Gast

    Standard

    Zitat Zitat von volker
    hier mal ein baustein mit dem man sowas machen könnte.
    wenn oben ein neuer wert eingetragen wird wird unten der letzte rausgeschoben.

    diesen baustein habe ich mal für s5 geschrieben, funktioniert aber auch in einer s7.

    das erste nutzdatenwort ist dw 3. die oberen werden intern benötigt.

    Code:
    Netzwerk 1                   Ein Wort in Fifo speichern       FUP Ausgabe
    Name &#58;FIFO-EIN
    Bez  &#58;EINT      E/A/D/B/T/Z&#58; E  BI/BY/W/D&#58; BI
    Bez  &#58;FIDB      E/A/D/B/T/Z&#58; B
    Bez  &#58;DADB      E/A/D/B/T/Z&#58; B
    Bez  &#58;FLAN      E/A/D/B/T/Z&#58; A  BI/BY/W/D&#58; BI
    Bez  &#58;IMPU      E/A/D/B/T/Z&#58; A  BI/BY/W/D&#58; BI
    Bez  &#58;DATE      E/A/D/B/T/Z&#58; E  BI/BY/W/D&#58; W
    Bez  &#58;NUWO      E/A/D/B/T/Z&#58; D  KM/KH/KY/KC/KF/KT/KZ/KG&#58; KF
    
         &#58;L   KC C
         &#58;L   KY 10,2                              EINT=Daten eintragen anstossen
         &#58;L   KH 2000                              FIDB=FIFO-DB
         &#58;L   KC BY                                DADB=Daten-DB
         &#58;L   KC VL                                FLAN=Flankenmer.zum Daten eintr.
         &#58;                                         IMPU=Impulsmer.zum Daten eintr.
         &#58;                                         DATE=Daten zum ablegen
         &#58;                                         NUWO=Anzahl der Nutzworte
         &#58;***
    
    
    Netzwerk 2                                                    FUP Ausgabe
         &#58;AWL
         &#58;UN  =EINT                                Daten eintragen anstossen
         &#58;RB  =FLAN                                Flankenmerker ruecksetzen
         &#58;U   =EINT
         &#58;UN  =FLAN
         &#58;S   =FLAN
         &#58;=   =IMPU                                Impulsmerker
         &#58;
         &#58;UN  =IMPU
         &#58;SPB =M001
         &#58;
         &#58;B   =DADB                                Daten - DB
         &#58;L   =DATE                                Daten zum abspeichern
         &#58;T   MW 202
         &#58;
         &#58;B   =FIDB                                fifo-db
         &#58;LW  =NUWO                                Anzahl nutzworte
         &#58;L   KF +2                                endadresse -1 erzeugen
         &#58;+F
         &#58;T   MW 200                               index
         &#58;
    M002 &#58;L   MW 200                               lade index dw x
         &#58;T   DW   0
         &#58;B   DW   0
         &#58;L   DW   0                               lade dw x
         &#58;T   DW   1                               zwischenspeichern in dw1
         &#58;L   MW 200
         &#58;L   KF +1
         &#58;+F                                       erzeuge index +1
         &#58;T   DW   0                               neuer index
         &#58;L   DW   1                               zwischengespeichertes dw x
         &#58;B   DW   0
         &#58;T   DW   0                               im neuen index speichern
         &#58;
         &#58;L   MW 200                               index -1
         &#58;L   KF +1
         &#58;-F
         &#58;T   MW 200
         &#58;L   MW 200
         &#58;L   KF +2                                erstes nutzwort erreicht
         &#58;><F
         &#58;SPB =M002                                sprung bei nein
         &#58;L   MW 202                               ablagedaten
         &#58;T   DW   3                               im dw 3 speichern
    M001 &#58;BE
    mfg
    Dieses Programm funktioniert aber nicht in S7, da es dort keine "Bearbeite"-Befehl mehr gibt!
    Zitieren Zitieren Geht nicht!  

  8. #6
    Registriert seit
    20.06.2003
    Ort
    Sauerland.NRW.Deutschland
    Beiträge
    4.884
    Danke
    80
    Erhielt 814 Danke für 551 Beiträge

    Standard

    Dieses Programm funktioniert aber nicht in S7, da es dort keine "Bearbeite"-Befehl mehr gibt!
    ok ok
    er wird denn so kleinlich sein. das kann man doch ohne probs mal eben in s7 konvertieren lassen.

    dann sieht das so aus.
    Code:
    deklaration&#58;
    in&#58;
    EINT	BOOL		 EINT	
    FIDB	BLOCK_DB		 FIDB	
    DADB	BLOCK_DB		 DADB	
    _DATE	WORD		 DATE	
    NUWO	INT		 NUWO	
    out&#58;
    FLAN	BOOL		 FLAN	
    IMPU	BOOL		 IMPU	
    temp&#58;
    conv_akku1	DWORD			
    conv_akku2	DWORD			
    conv_stw	WORD			
    
    
          UN    #EINT                       // Daten eintragen anstossen
          R     #FLAN                       // Flankenmerker ruecksetzen
          U     #EINT
          UN    #FLAN
          S     #FLAN
          =     #IMPU                       // Impulsmerker
    //;
          UN    #IMPU
          SPB   M001
    //;
          AUF   #DADB                       // Daten - DB
          L     #_DATE                      // Daten zum abspeichern
          T     MW   202
    //;
          AUF   #FIDB                       // fifo-db
          L     #NUWO                       // Anzahl nutzworte
          L     2                           // endadresse -1 erzeugen
          +I    
          T     MW   200                    // index
    //;
    M002&#58; L     MW   200                    // lade index dw x
          T     DBW    0
    
          T     #conv_akku1
          L     STW
          T     #conv_stw
          L     DBB    1
          SLW   4
          LAR1  
          L     #conv_stw
          T     STW
          L     #conv_akku1
          L     DBW &#91;AR1,P#0.0&#93;             // lade dw x
          T     DBW    2                    // zwischenspeichern in dw1
          L     MW   200
          L     1
          +I                                // erzeuge index +1
          T     DBW    0                    // neuer index
          L     DBW    2                    // zwischengespeichertes dw x
    
          T     #conv_akku1
          TAK   
          T     #conv_akku2
          L     STW
          T     #conv_stw
          L     DBB    1
          SLW   4
          LAR1  
          L     #conv_stw
          T     STW
          L     #conv_akku2
          L     #conv_akku1
          T     DBW &#91;AR1,P#0.0&#93;             // im neuen index speichern
    //;
          L     MW   200                    // index -1
          L     1
          -I    
          T     MW   200
          L     MW   200
          L     2                           // erstes nutzwort erreicht
          <>I   
          SPB   M002                        // sprung bei nein
          L     MW   202                    // ablagedaten
          T     DBW    6                    // im dw 3 speichern
    M001&#58; NOP   0
    mfg
    Zitieren Zitieren Re: Geht nicht!  

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

    SIGGI (17.10.2008)

  10. #7
    Registriert seit
    30.08.2003
    Beiträge
    2.197
    Danke
    30
    Erhielt 258 Danke für 229 Beiträge

    Standard

    Für grössere Datenblöcke hab ich was ganz elegantes.
    -> http://www.sps-concept.de/download/print/dat_reg.pdf
    Damit kann man beispielsweise auf den x.Satz im Datenregister zugreifen. Die Satzgrösse richtet sich nach der einzutragenden/auszulesenenden Variable. Es wird überwacht ob der DB lang genug ist usw. Eingesetzt habe ich diesen Baustein u.a. folgendermassen:

    1. * Seriennummern von Fertigungsteilen werden täglich hochgezählt. Zu diesen Seriennummern werden an mehreren Bearbeitungsstellen die Qualitätsdaten in das Datenregister eingetragen... Seriennummer = Satznummer. Am Ende der Produktionslinie werden diese passend zum Teil ausgelesen und dementsprechend sortiert. Über die HMI-Oberfläche können die daten ebenfalls ausgelesen werden.

    2. * Anlagenkonfigurationen von 300 Byte (!) sind in einem DB eingetragen. Diese können angewählt werden und werden zum aktivieren in einen Merkerbereich geschrieben. Ebenso können diese bearbeitet und rückgeschrieben werden.

    Beispielsweise könnten also diese Daten in den DB eingetragen werden. Satz 1...99. Bei 99 angekommen gehts wieder bei 1 los.

    MfG
    André Räppel
    Zitieren Zitieren "FIFO"  

  11. #8
    Anonymous Gast

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von Zeus
    Halli Hallo,
    ich habe kleine Probleme im Moment.
    Ich habe Daten auf DB gespeichert und möchte, dass nach einer bestimmte Zeit, wenn ich neue Daten bekomme, werden die Alte Daten nicht überschreiben sonder geschoben. Ich möchte keine daten verloren.
    Mein Problem ist: ich kenne mich nicht so gut mit Pointer und Schieber und ich weiss nicht so genau wie ich das realizieren kann .
    könnten jemand mir helfen???
    Danke![/img]
    Zitieren Zitieren Re: Pointer und Schieber  

Ähnliche Themen

  1. Pointer
    Von Dotzi im Forum Simatic
    Antworten: 9
    Letzter Beitrag: 16.09.2008, 18:32
  2. DB und Pointer
    Von PhilippL im Forum Simatic
    Antworten: 8
    Letzter Beitrag: 12.09.2007, 07:02
  3. Antworten: 0
    Letzter Beitrag: 25.03.2006, 02:36
  4. db und pointer
    Von fbeine im Forum Simatic
    Antworten: 26
    Letzter Beitrag: 13.03.2006, 10:02
  5. Durchflussregelung mit Auma Schieber
    Von Anonymous im Forum Simatic
    Antworten: 11
    Letzter Beitrag: 18.07.2005, 07:44

Lesezeichen

Berechtigungen

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