Inkrementalgeber und Geschwindigkeit

S7_Mich

Level-2
Beiträge
214
Reaktionspunkte
3
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

hab an euch mal ne Frage,

haben an einem Motor einen Inkrementalgeber mit zwei Spuren angeschlossen und wie in einem anderen Thread beschrieben, das Programm dazu geschrieben. Inkrementalgeber ist an einer CPU 314 IFM angeschlossen. Dazu den SFB39 für Positionieren. Die gezählten Inkremente sind im DB39 abgelegt.

Sieht so aus.

un m 10.0 // 100ms Flanke
spb m001

L #Inkremente aktuell
L #Inkremente letzter Zyklus
-D
L 10
*D
L #Inkremente pro cm
/D
T #Geschwindigkeit

L #Inkremente aktuell
T #Inkremente letzter Zyklus

m001: nop 0

Habe natürlich "echte" Variablen verwendet. Also MW und DBW´s. Nur zwecks Veranschaulichung.

Dabei ist aber jetzt das Problem, das Wert ziemlich schwankt. +/- 10. Um sicher zu gehen, das es nicht an meinem Programm für die Ansteuerung des Servos liegt, habe ich einfachhalber

L 7000
T PAW 338

in die SPS geladen.

Ich habe eine konstante Ausgangsspannung der Analogbaugruppe und auch eine konstante Ausgangsspannung des Servos.

Motor dreht gleichmäßig. Nur der errechnete Wert schwankt. Ist das bei Inkrementalgebern normal, oder ist mein Programm falsch?

Gruß
Michael
 
Geber

Hi,
100ms ? Was für Auflösung hast du, wieviel Imp. pro sek?
Ist das nicht ein bissl träge?

Gruss: V.
 
Geber

Hi,
wie sieht es aus mit deiner Berechnungsgenauigkeit? Ich kann
nicht sehen über was für Zahlenwerte sprechen wir hier.
Wie wäre es mit Realwertberechnung? Mathe lässt grüssen..:ROFLMAO:

Gruss: V.
 
Es sind nur Doppelwörter.

Könnt ich mal so probieren.

un m 10.0 // 100ms Flanke
spb m001

L db39.dbd 12 // aktuelle Inkremente
dtr
L db1.dbd 0 // Inkremente letzter Zyklus
-R
L 50.0 // bei 20ms * 50
*R
L 37.0 // Inkremente pro cm
/R
trunc
T db1.dbd 4 // Geschwindigkeit

L db39.dbd 12 // aktuelle Inkremente
T db1.dbd 0 // Inkremente letzter Zyklus

m001: nop 0

Und das dann vielleicht noch alle 20 ms könnt vielleicht dann besser werden.

Aber ich glaub, das hab ich auch schon probiert. Zumindestens mit 100ms und Realformat. Mit 20ms noch nicht.

Gruß
Michael
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Berechnung

Hi,

Es sind nur Doppelwörter.

Könnt ich mal so probieren.

un m 10.0 // 100ms Flanke
spb m001

L db39.dbd 12 // aktuelle Inkremente
dtr
L db1.dbd 0 // Inkremente letzter Zyklus // ist das schon REAL, oder?
-R
L 50.0 // bei 20ms * 50
*R
L 37.0 // Inkremente pro cm
/R
trunc
T db1.dbd 4 // Geschwindigkeit

L db39.dbd 12 // aktuelle Inkremente
T db1.dbd 0 // Inkremente letzter Zyklus

m001: nop 0

Gruss: V.
 
Servus,

da hab ich doch glatt ein dtr vergessen. ich hab das heute getestet, Wert schwankt aber trotzdem. schwankungen sind eher +/- 15-20. Also wirklich nicht genau. sind diese inkrementalgeber nicht genauer?

gruß
michael
 
@S7_Mich,
das Problem wird nicht der IGR sein, sondern die Zykluszeit. Den Fehler durch die zyklische Bearbeitung kannst du ja mal berechnen und mit den Schwankungen vergleichen.
mfG. Jo
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Servus,

da hab ich doch glatt ein dtr vergessen. ich hab das heute getestet, Wert schwankt aber trotzdem. schwankungen sind eher +/- 15-20. Also wirklich nicht genau. sind diese inkrementalgeber nicht genauer?

gruß
michael

Inkrementalgeber sind absolut genau.
Das Problem hast du jetzt durch die zyklische Bearbeitung der SPS. Als Beispiel: Beim Erstellen des Prozessabbildes der Eingänge (PAE) ist deine Spur auf 1. Während des Zyklus wechselt das Signal von 0 und wieder auf 1. Beim nächsten PAE ist das Signal wieder 1, es wird kein Flankenwechsel erkannt, d.h. dein Zähler zählt nicht weiter, obwohl eigentlich schon ein Impuls weitergezählt werden müsste.
Die Zeit zwischen deinen Impulswechseln muss zwei Zykluszeiten betragen, damit ein Flankenwechsel sicher erkannt wird.
Sonst musst du deine Impulse extern erfassen. Ich glaube, dafür gibt es Zählerbaugruppen, die da mitkommen, bin mir aber nicht sicher, weil ich das noch nie gebraucht habe. Ich habe die Positionierung bis jetzt nur extern gesehen, also über Sollwertvorgaben und FU's mit Positionierbaugruppen etc.
Einfach mal ausprobieren, Siemens hat bestimmt auch irgendwo 'ne Doku dazu. Irgendwo...

Gruß, Tobias.
 
Vielleicht solltest du das ganze einfach mal in den OB35 schreiben, dann hast du wenigstens
den Faktor Zykluszeit (wenigstens der SPS) schon mal weitestgehend eliminiert.

Interessant wäre natürlich auch zu wissen, wo und wie dein "#Inkremente aktuell" herkommt.

Mfg
Manuel
 
das ganze in den ob35 mit 20ms zu schreiben bin ich auch schon gekommen. bringt aber ebenfalls keine besserung. inkremente-aktuell kommt aus dem instanzdatenbaustein db39.dbd12. db39 gehört zum sfb39. an der cpu 314ifm ist der inkrementalgeber angeschlossen. mehr funktionen des sfb39 sind nicht verwendet.

dachte eigentlich das der sfb39 nicht von der zykluszeit abhängt. für die spur a und b sind ja schnelle eingänge an der cpu verfügbar.

gruß
michael
 
Zuviel Werbung?
-> Hier kostenlos registrieren
37 Inkremente pro cm ist die Auflösung.

Tja, ich habs auch schonmal im OB35 mit 20ms probiert. Das gleiche Problem!

Gruß
Michael

wieviele cm fährst du denn pro sec. ? kann es vielleicht sein das dein drehgeber zu viele Imp. pro umdrehung gibt? Da wäre dann das Problem was TobiasA schon beschrieben hat. Vielleicht einen drehgeber mit weniger imp. / umdrehung verwenden
 
Das Problem ist eigentlich nur. daß durch Deine kurze Meßzeit eine Multiplikation deines absoluten Meßfehlers erfolgt. Lösung: entweder gleich eine ganze Sekunde (Zeitbasis) lang messen oder ein PT1-Glied zur Meßwertberuhigung einsetzen.
 
Zurück
Oben