Programmierung einer virtuellen Objektverfolgung

matziane

Level-1
Beiträge
120
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Guten Morgen,
bin gerade damit beschäftigt die oben genannte Geschichte in einer Simatic S7 zu programmieren.

Gemeint ist damit folgendes:
Die Antriebe in einem Gerät fahren mit einer bestimmten Geschwindigkeit.
Ein Objekt fährt nun in dieses Gerät hinein, in diesem Gerät sind keine Initiatoren um zu erkennen wo das Objekt genau ist.
Ich überwache nun ob mein Gerät sich bewegt und ob etwas in das Gerät hinein gefahren wird.

Nun fülle ich, wenn das Gerät sich bewegt und etwas in das Gerät hinein fährt, in einem DB Bitweise 50 Doppelworte, mittels auf 1 setzen und nach links schieben.
Die Zeit für jeden nach Linksschiebeimpuls errechne ich anhand der Länge des Geräts und der Geschwindigkeit mit der es fährt.

Mein Problem ist nun, dass diese Positionierung zu ungenau wird, da meine Impulszeiten zu klein werden.
Brauche aber recht viele Bitsignale um eine genaue Objektverfolgung hin zu bekommen.

Kurz gerechnet.
50 Doppelworte heisst 1600 Bits
Angenommen mein Gerät fährt mit 12m/min und das Gerät ist 12m lang, dann würde es eine Minute dauern bis ein Objekt durch das Gerät durch ist.
Durch die 1600 Bits hätte ich theoretisch eine Genauigkeit von 7,5mm
Das wird aber nicht klappen, da Störfaktoren wie Zykluszeit und diese kleinen Impulszeiten die sich im Bereich 37ms bewegen, einen sehr starken negativen Einfluss haben.

Vielleicht habt ihr ja Ideen bzw. schon mal etwas ähnliches entwickelt um mir Hilfestellung zu geben.
Vielleicht ist ja mein Denkansatz schon Grundsätzlich falsch.

Vielen dank im voraus.
 
Warum schiebst du die ganzen Bits da durch?

1. Falls die Geschwindigkeit konstant ist:
Du kennst doch den genauen Zeitpunkt, wenn das Gerät hineinfährt, das ist der Zeitpunkt, an dem du jetzt zum ersten mal schiebst.
Mit der abgeleaufenen Zeit, seit dem Hineinfahren kannst du dann immer die Position berechnen, ohne zu schieben.

2. Falls die Geschwindigkeit nicht konstant ist.
Gibt es nicht die möglichkeit, einen Incrementalgeber so anzubringen, das er den Weg der zurückgelegt wird messen kann (am Vorschubmotor oder wie immer das aussieht)?
Dann könnte man zum Zeitpukt des Einfahrens den Weg speichern und zu jedem beleibigen Zeitpunkt über die Differenz zum Istwert, die Position ermitteln.

3. Wenn die Geschwindigkeit nicht konstant ist und kein Geber irgendwo angebracht werden kann.
Dann geht es einfach nicht genauer, denn wenn man nichts messen kann, muß man schätzen und das tust du ja eigentlich im Moment. :-(
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Wir nutzen Variante 2 von Ralle. Wert bei Einfahrt auf 0 und dann mit den Geberimpulsen Hochzählen. Über die Geberauflösung und eventuelle Getriebeverrechnungen erhältst du rechnerisch die maximale Auflösung die im System zu erreichen ist. Selbst bei Fördererstops (Nachlauf des Motors usw)weist du, wo dein Fördergut ist.

Kurzen und schnellen Impulse kannst du durch Alarmverarbeitung und oder Impulsverlängerung gut beikommen...
 
Guten Morgen,
die Variante klingt für mich auch sehr gut, vor allem auch sicher.
So werde ich das ganze wohl auch aufziehen.

Wie löst ihr das mit dem "Nullübergang" bei dem Geber?
 
Wir benutzen Incrementalgeber . Diese geben ein 0° und ein 90° Signal. Aus diesen wird Drehrichtung und ein Impuls gebildet. Dieser Impuls wird in der CPU über Alarmeingänge gezählt. Somit gibt es kein Problem mit "Nullübergang" wie bei Absolutwertgebern....
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Das mit dem Incrementalgeber scheint mir die wirklich beste Variante sein, bin gerade dabei das dahin gehend umzubauen.
Aktuell läuft es so, dass wenn ein Teil in die Anlage fährt, nulle ich den Wert der Vorderkante und zähle diesen dann anhand des Geberwerts hoch.
Hinter diesem hochzählen ist noch eine Formel die mir anhand von Übersetzungsverhältnissen von Wellen und von Rollenumfängen die Strecke in mm errechnet, welche ich mir dann wegschreibe.
Wird die Hinterkante erkannt, wird auch die nach dem selben Prinzip hochgezählt.
Aktuell habe ich noch ein Problem mit meinem FIFO, da bis zu 2 Objekte unterwegs sein können und ich muss diese Anhand der Zuordnung rein und rausschieben.

Aber trotzdem bis hier her erstmal Dankesehr für die Hinweise
 
Zurück
Oben