Geberauswertung

PG710

Level-1
Beiträge
45
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen,

ich habe einen Geber auf einer Kugelrollspindel.
1 Umdrehung = 10mm Fahrweg.
Auf der Kugelrollspindel ist ein Handrad angebracht mit dem
ich eine bestimmte Position einstelle.
Der Geber liefer pro Umdrehung 1024 Impulse.
Wenn ich das EB20 anschaue, wird es hochgezählt bis 1024
und beginnt dann wieder bei 0.(nach jeder Umdrehung)
Wie kann ich in meinem OP jetzt den Weg von 0-1000mm
anzeigen.
Der kompette Weg, den die Spindel macht ist ca. 1000mm.

Ich wäre dankbar für jede Idee,

Gruss
 
Hallo PG710,
was für ein Geber ist das den du da verwendest, Inkremental, SSI.
Wie bekommst du den Zählwert auf dein EB20, was nicht bis 1024 sondern
nur bis 256 zählen kann da Byte.

Eine Bewertung des Zählers kannst du selber machen in den du eine
simple Zähler - Nenner bewertung machst, deine Auflösung ist für deine
spindel nicht so günstig, ein geber mit 1000 impulse pro umdrehung wäre
besser gewesen.

gruß helmut
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen,

ich habe einen Geber auf einer Kugelrollspindel.
1 Umdrehung = 10mm Fahrweg.
Auf der Kugelrollspindel ist ein Handrad angebracht mit dem
ich eine bestimmte Position einstelle.
Der Geber liefer pro Umdrehung 1024 Impulse.
Wenn ich das EB20 anschaue, wird es hochgezählt bis 1024
und beginnt dann wieder bei 0.(nach jeder Umdrehung)
Wie kann ich in meinem OP jetzt den Weg von 0-1000mm
anzeigen.
Der kompette Weg, den die Spindel macht ist ca. 1000mm.

Ich wäre dankbar für jede Idee,

Gruss

Wie Helmut schon sagte wäre einer mit 1000/2000/5000 . . . besser gewesen.

Welche Baugruppe hast du denn, normalerweise benötigst du mehr als 1 Byte.

Üblich sind 16 bit oder 24bit Zähler ( 2byte oder 3byte)
 
Du könntest bei jedem Sprung von 1024 auf 0 ein separates Datenwort um 1024 Punkte hoch zählen und diesen Wert mit dem EW20 addieren.
Beim Sprung von 0 auf 1024 wieder das Datenwort um 1024 verringern.

Noch einfacher wäre, der Geber hätte ein einfaches A B Signal mit dem Du gleich selbständig die Inkremente zählst.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
ich würde sagen, dass der PG da einen Absolutwertgeber, der bis 1024 zählen kann, im Einsatz hat. Das ist für die Aufgabenstellung nicht so prickelnd ...
Als einzige Vorgehensweise fiele mir hier jetzt ein, dass du die Anzahl der Überläufe (1024 -> 0) bzw. umgekehrt mit erfasst und dir damit in einem weiteren DBD (ein Doppelwort wäre hier schon angesagt) einen Offset mit auf- bzw. ab-addierst. Das müßtest du dann natürlich irgendwann einmal referenzieren.

Den Inhalt dieses Doppelwortes könntest du dann durch Division durch 1024 in mm umrechnen ...

Gruß
LL
 
du hast noch nicht geschrieben was für ein geber es jetzt ist und
wie die werte in die steuerung kommen.

Wenn es ein SSI ist könnte man den an einer entsprechenden
Funktionsbaugruppe anschließen z.B. FM351 die kann dann die
Skallierung für dich übernehmen und zählt dann auch wie du es
brauchst.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen,

also es ist ein Absolutgeber der über Profibus mit einer cpu315
verbunden ist.
Für die Auswertung ist eigentlich keine zusätzliche Karte vorgesehen.
Wie gesagt, den Geber lese ich über EW20 ein.
Wie kann man das genau realisieren mit dem Überlauf?

Gruss
 
Hi

Absolutwertgeber 1024 Impulse Profibus und "Singleturn" ?

Etwas ungewöhnlich.

Hast du die Gebernummer/Typ und den Hersteller ?
 
Bei jeden Überlauf einen zähler zählen.
bei positiven überlauf vorwärts zählen, bei
negativen überlauf abwärts zählen.

Den zählerstand dann mit 1024 multiplizieren, das
Ergebnis als Offset auf das EW20 addieren.
 
Muß es jetzt unbedingt Profibus sein der Geber hat doch einen
Standart SSI Ausgang, den könntest du doch an einer FM anschließen.
Das Gateway muß ja schließlich auch gekauft werden, lass es doch
einfach weg.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Du musst erst mal feststellen in welche richtung gekurbelt wird.
Das geht indem du das EW20 zyklisch speicherst und dann
diesen Speicher mit dem EW20 vergleichst.

Ist das EW20 größer als der Speicher kurbelst du vorwärts
(positiv), ist das EW20 kleiner als der Speicher kurbelst du
rückwärts (negativ).

Mit dieser Information könntest du dann Bits setzen die sagen
den zähler abwärts oder aufwärts zählen.

Den überlauf kannst du so machen das du z.b. ab einen bestimmten
Wert des EW20 (z.b. 100) ein Bit setzt. Drehst du positiv und das EW20
ist wieder kleiner 100, hast du einen positiven überlauf, Zähler vorwärts
zählen und das Bit rücksetzen.

Drehst du negativ und der Wert von EW20 wird größer 100 hast du einen
negativen überlauf zähler abwärts zählen.

Das ganze muß du jetzt mal in einen Code packen, den können wir dann
ja noch verfeinern.
 
Hallo Helmut......,
erst mal recht herzlichen Dank für deine Antworten. Ja, ich denke das ist eine gute Vorlage. Nur weis ich nicht ob ich das hinbekomme ...
 
ich hatte auch schon mit Singleturn-Gebern am Profibus zu tun. In der Hardwareconfig wo du den Geber einbindest kannst du doch den Geber parametrieren. Dort kannst du ihm normalerweise auch die gewünschte Schrittzahl pro Umdrehung vorgeben.

Gruß Bär
 
Zuviel Werbung?
-> Hier kostenlos registrieren
@ bär1971
das Problem ist doch nicht die Schrittzahl sondern das Singleturn !!
Er fängt halt nach einer Umdrehung wieder bei 0 an.

Ich würde (wenn das möglich ist) versuchen den Hersteller zu bitten den Geber zu tauschen gegen einen Multiturn Geber. Alles andere ist Bastelei!
Ich kann zwar fleißig Überläufe mitzählen aber was passiert wenn jemand bei ausgeschalteter Steuerung am Handrad dreht ???
Dann steht dein Handrad irgendwo dein gespeicherter Wert ist ein völlig anderer und nach dem Wiedereinschalten musst Du erstmal mitkriegen, daß jemand das Handrad verstellt hat.
Das bedeutet dann das ganze Ding muss dann wieder neu eingestellt werden.
Jetzt kann man ja evtl. nach dem Einschalten vergleichen ob der neue Istwert nahe am gespeicherten Istwert liegt aber wenn im ausgeschalteten Zustand jemand das Handrad um genau eine Umdrehung verstellt hat, dann erkennst du nichtmal das !!

Also ich hätte da richtig Bauchweh.

peter(R)
 
Ich kann Den Peter nur beipflichten, ich würde auch den Geber tauschen.
Es gibt da Multiturngeber mit Profibushaube, wir setzen da oft die von der
Fa. Lika ein der baut für viele Hersteller die Geber z.b. Fraba.
Dann gibt es da auch Liniare Messysteme von Lika, Siko, Elgo oder MTS.

http://www.lika.it/deu/prodotti.php?ID=2
http://www.lika.it/deu/prodotti.php?ID=5

http://www.elgo.de/de/produkte/sensoren/

http://www.mtssensor.de/Industrie-Sensoren.31.0.html


Ansonsten können wir ja schon mal anfangen zu Coden, hier ein Anfang
nur für die Drehrichtung.
Code:
[FONT=Calibri]FUNCTION_BLOCK "SSI"[/FONT]
[FONT=Calibri]TITLE =Singelturn Geber[/FONT]
[FONT=Calibri]VERSION : 0.1[/FONT]
 
[FONT=Calibri]VAR_INPUT[/FONT]
[FONT=Calibri]IN_Geber : INT ; [/FONT]
[FONT=Calibri]END_VAR[/FONT]
[FONT=Calibri]VAR_OUTPUT[/FONT]
[FONT=Calibri]OUT_DIR_P : BOOL ; //Positive Drehrichtung[/FONT]
[FONT=Calibri]OUT_DIR_M : BOOL ; //Negative Drehrichtung[/FONT]
[FONT=Calibri]END_VAR[/FONT]
[FONT=Calibri]VAR[/FONT]
[FONT=Calibri]Stillstand : "TON"; //Zeit Stillstand erkennen[/FONT]
[FONT=Calibri]HM1_Stillstand : BOOL ; //Hilfsmerker Stillstand erkennen[/FONT]
[FONT=Calibri]HM2_Stillstand : BOOL ; //Hilfsmerker Stillstand erkennen[/FONT]
[FONT=Calibri]Speicher : INT ; //Zwischenspeicher Geber[/FONT]
[FONT=Calibri]END_VAR[/FONT]
[FONT=Calibri]BEGIN[/FONT]
[FONT=Calibri]NETWORK[/FONT]
[FONT=Calibri]TITLE =Drehrichtung feststellen[/FONT]
[FONT=Calibri]//Positive Drehrichtung[/FONT]
[FONT=Calibri]   L     #IN_Geber; [/FONT]
[FONT=Calibri]   L     #Speicher; [/FONT]
[FONT=Calibri]   >I    ; [/FONT]
[FONT=Calibri]   S     #OUT_DIR_P; [/FONT]
[FONT=Calibri]   O     #OUT_DIR_P; [/FONT]
[FONT=Calibri]   O     #HM2_Stillstand; [/FONT]
[FONT=Calibri]   R     #OUT_DIR_M; [/FONT]
[FONT=Calibri]//Negative Drehrichtung[/FONT]
[FONT=Calibri]   <I    ; [/FONT]
[FONT=Calibri]   S     #OUT_DIR_M; [/FONT]
[FONT=Calibri]   O     #OUT_DIR_M; [/FONT]
[FONT=Calibri]   O     #HM2_Stillstand; [/FONT]
[FONT=Calibri]   R     #OUT_DIR_P; [/FONT]
[FONT=Calibri]//Stillstand [/FONT]
[FONT=Calibri]   ==I   ; [/FONT]
[FONT=Calibri]   =     #HM1_Stillstand; [/FONT]
[FONT=Calibri]//Verzögerung Stillstand erfassen[/FONT]
[FONT=Calibri]   CALL #Stillstand ([/FONT]
[FONT=Calibri]        IN                       := #HM1_Stillstand,[/FONT]
[FONT=Calibri]        PT                       := T#500MS,[/FONT]
[FONT=Calibri]        Q                        := #HM2_Stillstand);[/FONT]
[FONT=Calibri]//Zählerstand speichern[/FONT]
[FONT=Calibri]   L     #IN_Geber; [/FONT]
[FONT=Calibri]   T     #Speicher; [/FONT]
[FONT=Calibri]END_FUNCTION_BLOCK[/FONT]
 
@Peter,
da hast du vollkommen recht.
Das Problem ist der Überlauf.

Wie könnte man dieses am besten lösen, mal abgesehen davon, dass
gekurbelt wird wenn der Hauptschalter aus ist.

@Helmut
Vielen Dank für Deine tollen Beiträge. Wies aussieht ists für dich
kein Problem.

Gruss
 
Zurück
Oben