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

Seite 3 von 3 ErsteErste 123
Ergebnis 21 bis 30 von 30

Thema: Inkrementalgeber als Zähler und für Geschwindigkeit

  1. #21
    Registriert seit
    06.01.2005
    Ort
    im schönen Lipperland
    Beiträge
    4.472
    Danke
    498
    Erhielt 1.143 Danke für 736 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von Dword Beitrag anzeigen
    ich will etwas anderes versuchen ich habe nun die karte auf Endloszählen gestellt und den sfb47 in mein OB1 eingebaut funktioniert wunderbar 1 umdrehung zählt auf 100 ist also schon mal super für die streckenerfassung.

    so jetzt will ich aber noch die geschwindigkeit erfassen.

    wie mache ich das am besten ?

    Das hat LL doch schon beschrieben. Nimm eine Zeit (zb min), ermittel die Strecke in der Zeit (zb 5 Meter) Also hast du eine Geschwindigkeit von 5 Meter/Minute oder von 0.083333333 Meter/Sekunde oder von 300 Meter/Stunde......
    Früher gab es Peitschen .... heute Terminkalender

  2. #22
    Dword ist offline Benutzer
    Themenstarter
    Registriert seit
    03.01.2012
    Beiträge
    64
    Danke
    5
    Erhielt 1 Danke für 1 Beitrag

    Standard

    ja aber irgendwie haperts bei der umsetzung wie ermittle ich die zeit nach 1 min ?
    1011 1011 1010 1102 1010 0011 1011 1000 1111

  3. #23
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.224
    Danke
    533
    Erhielt 2.698 Danke für 1.950 Beiträge

    Standard

    Zitat Zitat von Dword Beitrag anzeigen
    ja aber irgendwie haperts bei der umsetzung wie ermittle ich die zeit nach 1 min ?
    Auch das hat ja LL schon geschrieben. Hier noch einmal ein recht einfacher Weg.

    1. Nimm z.Bsp. den Taktmerker für 1 Sekunde (Bit5)
    2. Mache daraus eine Flanke
    3. Lege in einem DB oder in 2 MW 2 Variablen an 1: letzter Zählwert 2: Frequenz
    3. immer wenn die Flanke True wird genau 1 mal folgendes ausführen:

    Frequenz = Istzählwert - letzer Zählwert (Das wären dann Impulse pro Sekunde, man kann das über den Umfang des Rades auch in eine Geschwindigkeit umrechenen)
    letzter Zählwert = Istzählwert

    Achtung, bei ersten Durchlauf des Bausteins und wenn der Zähler überläuft, also wieder auf 0 geht, dann stimmt die Rechnung nicht. Man sollte also diese beiden Fälle mit einem Vergleicher ausfiltern, z.Bsp.

    Nur rechnen, wenn (Istzählwert > alter Zählwert) und (alter zählwert <> 0)

    Alternativ kannst du natürlich auch einen Timer über 1 Minute laufen lassen und bei ablaufendem Timer die Flanke bilden, Timer dann wieder neu starten. 1 Minute ist recht lang, da ändert sich deine HMI-Anzeige nur jede Minute, der Antrieb kann derweil schon stehen.
    Geändert von Ralle (06.03.2012 um 08:31 Uhr)
    Gruß
    Ralle

    ... there\'re 10 kinds of people ... those who understand binaries and those who don\'t …
    and the third kinds of people … those who love TIA-Portal

  4. #24
    Dword ist offline Benutzer
    Themenstarter
    Registriert seit
    03.01.2012
    Beiträge
    64
    Danke
    5
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Netzwerk 1
    [PHP]L PED768 // von Inkrementalgeber 100imp/u
    DTR
    T MD 120
    NOP 0[/PHP]
    Netzwerk 2
    [PHP]L MD120
    L5.0000000e-003
    T MD40 // wert in Meter
    NOP 0[/PHP]
    Netzwerk 3
    [PHP]U M 5.5 // Taktmerker
    FP DB1.DBX8.0 //flankenbit
    SPBNB _001
    L MD40
    T DB1.DBW0
    _001: NOP 0[/PHP]
    Netzwerk 4
    [PHP]L MD40
    LDB1.DBW0 //letzter zählwert
    -R
    T DB1.DBW 4 //Frequenz
    NOP 0[/PHP]


    geht ned habs mal von FUP in AWL gewandelt und rübergeschrieben warscheinlich hab ich das falsch verstanden :/?
    1011 1011 1010 1102 1010 0011 1011 1000 1111

  5. #25
    Registriert seit
    19.06.2008
    Ort
    Ostalbkreis
    Beiträge
    3.140
    Danke
    201
    Erhielt 553 Danke für 498 Beiträge

    Standard

    Code:
    L MD120
    L5.0000000e-003
    ???? //  /R,*R,-R,+R
    T MD40 // wert in Meter
    NOP 0  
    Da sollte was rein, sonst ist immer L5.00000e-003 im MD40

  6. #26
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.727
    Danke
    398
    Erhielt 2.405 Danke für 2.002 Beiträge

    Standard

    Ja hast du ...

    Du mußt die Impulse in einem bestimmten Intervall einlesen. Also z.B. der von Ralle genannte Taktmerker. Mit der positiven Flanke dessen den Wert einlesen und nur dann. Nach dem Einlesen den Zähler wieder löschen oder sich dessen letzen Wert merken - irgendwann einmal gibt es dann aber einen Überlauf.

    Im Grunde hast du aber von Ralles Beschreibung in deinem Code nicht allzu viel umgesetzt ...
    Da es sich hier um einen (sequentiellen) Ablauf handelt - wie wäre es, wenn du dich hierfür mal mit einer Schrittkette auseinander setzt ?

    Übrigens gut, dass du AWL-Code gepostet hast - mit FUP kann ich gar nichts anfangen ...

    Gruß
    Larry

  7. #27
    Dword ist offline Benutzer
    Themenstarter
    Registriert seit
    03.01.2012
    Beiträge
    64
    Danke
    5
    Erhielt 1 Danke für 1 Beitrag

    Standard

    ja habs falsch rübergeschrieben ist *R drinn der fehelr war das ich db1.dbW0 genommen habe anstatt db1.DBD0 ist ja n doppelwort ich honk es funzt soweit jetzt wen ich eine flüssige darstellung will wie mache ich das weil irgendwie spinnt die gleitzahl rum und hüpft imer von stelle zu stelle ah schwer zu erklären :/

    edit*
    Du mußt die Impulse in einem bestimmten Intervall einlesen. Also z.B. der von Ralle genannte Taktmerker. Mit der positiven Flanke dessen den Wert einlesen und nur dann. Nach dem Einlesen den Zähler wieder löschen oder sich dessen letzen Wert merken - irgendwann einmal gibt es dann aber einen Überlauf.
    aber ich hab se doch über einen flakenmerker eingelesen m5.5 ist mein taktmerker
    Geändert von Dword (06.03.2012 um 13:11 Uhr)
    1011 1011 1010 1102 1010 0011 1011 1000 1111

  8. #28
    Dword ist offline Benutzer
    Themenstarter
    Registriert seit
    03.01.2012
    Beiträge
    64
    Danke
    5
    Erhielt 1 Danke für 1 Beitrag

    Standard

    kann es sein das ich für die geschwindigkeit noch zusätzlich den sfb39 verwenden sollte?
    Mann ich häng einfach total an dem problem und komm ned weiter.

    gibts nicht irgend ein beispielprogramm oder so ? vileicht löst sich dan der knoten in meinem hirn
    1011 1011 1010 1102 1010 0011 1011 1000 1111

  9. #29
    Registriert seit
    05.01.2009
    Ort
    69198 Schriesheim
    Beiträge
    236
    Danke
    54
    Erhielt 34 Danke für 33 Beiträge

    Standard

    Hallo,

    habe mal den Code soweit geschrieben, hatte jetzt aber echt keine Lust den Geber mit PLCSIM
    zu testen, bitte noch mal drüber schauen, vor allem bei der Umrechnung

    Code:
    //________________Bedingungen zum Abarbeiten________________
    
          U(                                // Und Bedingung 
          L     "MD108_Zaehlwert_alt"       //alten Zählwert laden
          L     L#0                         //Dint 0 laden
          ==D                               //Vergleich auf Gleichheit
          )     
          O(                                //oder
          L     "MD104_PED768_Geberwert"    //neuen Zählwert laden
          L     "MD108_Zaehlwert_alt"       //alten Zählwert laden
          <D                                //Vergleich auf kleiner
          )     
          SPB   neg                         //Aussprung bei VKE 1
    
    //________________Abarbeiten der Berechnungen________________
    
          U     "M100.5_Taktmerker_1_sec"   //Taktmerker aus CPU
          FP    "M102.0_Fl_Merker"          //Flankenauswertung
          SPN   ohne                        //Aussprung bei VKE 0
          L     "MD104_PED768_Geberwert"    //Zählwert Neu
          L     "MD108_Zaehlwert_alt"       //Zählwert Alt
          -D                                //Subtrahiere Doppelword
          T     "MD112_Imp_sec"             //Impulsanzahl der letzten Sekunde
          L     "MD104_PED768_Geberwert"    //aktuellen Geberwert laden
          T     "MD108_Zaehlwert_alt"       //in den Altspeicher laden
    
    //_____in der letzten Sekunde zurück gelegter Wert 
          L     "MD112_Imp_sec"             // Beitrag Nr.5 500imp = 1 Umd = 500 mm
          DTR                               //Dint nach Real
          L     1.000000e-002               //multiplikation für mm nach m
          /R                                //Division Real
          T     "MD116_Geschwindig_m/s"     //aktuelle Geschwindigkeit m/s
    
    ohne: NOP   0
    neg:  NOP   0
    ich hoffe es passt,
    der Überlauf wird auf jeden Fall kommen, wie du das handelst mußt du sehen.

    Gruß Thomas
    Geändert von thomas_1975 (07.03.2012 um 01:35 Uhr) Grund: info wegen Überlauf

  10. #30
    Registriert seit
    05.01.2009
    Ort
    69198 Schriesheim
    Beiträge
    236
    Danke
    54
    Erhielt 34 Danke für 33 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    außerdem nur so nebenbei,

    U M 5.5 // Taktmerker
    FP DB1.DBX8.0 //flankenbit
    SPBNB _001
    L MD40
    T DB1
    .DBW0
    _001
    : NOP 0
    geht gar nicht, genau so in NW4 eine Real ist nunmal 4 Byte lang und passt in kein Wort mit 2 Byte

Ähnliche Themen

  1. S5 95U ob13 als genauer Takt für Zähler
    Von automatnix im Forum Simatic
    Antworten: 9
    Letzter Beitrag: 15.08.2011, 20:14
  2. Suche Inkrementalgeber für FM 350 für Versuchszwecke
    Von Rockwell im Forum Suche - Biete
    Antworten: 0
    Letzter Beitrag: 01.02.2011, 17:17
  3. Antworten: 1
    Letzter Beitrag: 05.12.2008, 00:01
  4. Inkrementalgeber und Geschwindigkeit
    Von S7_Mich im Forum Simatic
    Antworten: 12
    Letzter Beitrag: 20.01.2007, 21:28
  5. Antworten: 14
    Letzter Beitrag: 17.01.2005, 17:59

Lesezeichen

Berechtigungen

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