Inkrementalgeber als Zähler und für Geschwindigkeit

Zuviel Werbung?
-> Hier kostenlos registrieren
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......
 
Zuviel Werbung?
-> Hier kostenlos registrieren
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.
 
Zuletzt bearbeitet:
Netzwerk 1
PHP:
L PED768 // von Inkrementalgeber 100imp/u
DTR
T MD 120
NOP 0
Netzwerk 2
PHP:
L MD120
L5.0000000e-003
T MD40 // wert in Meter
NOP 0
Netzwerk 3
PHP:
U M 5.5 // Taktmerker
FP DB1.DBX8.0 //flankenbit
SPBNB _001
L MD40
T DB1.DBW0
_001: NOP 0
Netzwerk 4
PHP:
L MD40
LDB1.DBW0 //letzter zählwert
-R
T DB1.DBW 4 //Frequenz
NOP 0


geht ned habs mal von FUP in AWL gewandelt und rübergeschrieben warscheinlich hab ich das falsch verstanden :/?
 
Code:
[COLOR=#000000][COLOR=#0000BB]L MD120
L5.0000000e-003
???? //  /R,*R,-R,+R
T MD40 [/COLOR][COLOR=#FF8000]// wert in Meter
[/COLOR][COLOR=#0000BB]NOP 0  [/COLOR][/COLOR]

Da sollte was rein, sonst ist immer L5.00000e-003 im MD40
 
Zuviel Werbung?
-> Hier kostenlos registrieren
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
 
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
 
Zuletzt bearbeitet:
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
 
Zuviel Werbung?
-> Hier kostenlos registrieren
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
 
Zuletzt bearbeitet:
Zurück
Oben