Wegmesssystem - CPU 312

Pico1184

Well-known member
Beiträge
327
Punkte Reaktionen
9
Zuviel Werbung?
->Hier kostenlos registrieren
Hallo,

ich bin gerade mal wieder an ner zehn Jahre alten Anlage und könnte verzweifeln.

Es geht um einen Taktautomat welcher eine Kanüle mit einem Verschluss moniert. Dies ist über einen mechanischen Stößel realisiert welcher mit dem Takttischantrieb gekoppelt ist. Der Stößel drückt in der Taktpause den Verschluss auf die Kanüle.

Dabei können zwei mögliche Fehler entstehen.

1. Kanüle fehlt im takttisch => Stößel fährt zu weit raus
2. Kanüle ist schräg im takttisch => Stößel fährt nicht ganz aus

Dies ist über ein wegmesssystem und einem Nocken als trigger realisiert.

Die Anlage wurde früher über eine S5 gesteuert und wurde nun auf eine S7 312 umgebaut. Ladespeicher = 128kb

Das Wegmesssystem gibt 2 digitale Ausgänge an die Steuerung.

1. Ausgang = Min wert unterschritten
2. Ausgang = Max Wert überschritten

Das Messsystem hat eine messrate von 16 Messungen pro Sekunde.

Wenn ich den Tisch langsam von Hand drehe funktioniert das alles auch gut.

Nur wenn das alles mit 2000Upm läuft erkennt die Steuerung nur noch schlechtteile irgendwie stimmt das mit den Ausgängen des Messsystems nicht mehr!

Hat jemand von euch ne Idee an was das liegen kann....ist die CPU zu langsam???

Grüße Pico
 

Larry Laffer

Supermoderator
Teammitglied
Beiträge
13.148
Punkte Reaktionen
2.745
Hallo,
ein paar Dinge verstehe ich gerade nicht.
Wie schnell drehst du den Tisch wenn es funktioniert ? Wieviele Messungen finden dann so pro Sekunde statt ?
Wie schnell ist deine CPU aktuell (OB1-Zykluszeit) ?
2000 Umdrehungen/Minute sind der Tisch-Antrieb. Wie schnell dreht sich dann die "Scheibe" und wieviele Messungen finden dann statt ?

Gruß
Larry
 
OP
P

Pico1184

Well-known member
Beiträge
327
Punkte Reaktionen
9
Zuviel Werbung?
->Hier kostenlos registrieren
Programmiert hatte ich es zuerst so:

Min Ausgang Messsystem = false wenn Wert unterschritten
Max Ausgang Messsystem = true wenn Wert überschritten

Code:
//Nockenflanke
U #Nocken
FP #Flanke_Nocken
= #FP_Nocken

//Gutteil
U #FP_Nocken
U #Min_Mess
UN #Max_Mess
S "DB_Register".Register[1].Gutteil

//Schlechtteil 1
U #FP_Nocken
UN #Min_Mess
UN #Max_Mess
S "DB_Register".Register[1].Schlechtteil

//Schlechtteil 2
U #FP_Nocken
UN #Min_Mess
U #Max_Mess
S "DB_Register".Register[1].Schlechtteil

//Schlechtteil 3
U #FP_Nocken
U #Min_Mess
U #Max_Mess
S "DB_Register".Register[1].Schlechtteil

....

Wie gesagt, wenn ich langsam mit der Hand drehe funktioniert das, nur bei voller Geschwindigkeit bekomme ich nur Schlechtteile!

Habe dann gedacht, dass ich es vielleicht besser ist diese Prüfung über die gesamte Nockenlänge zu tätigen!

Code:
//Nockenflanke Positiv
U #Nocken
FP #Flanke_Nocken_Pos
= #FP_Nocken

//Nockenflanke Negativ
U #Nocken
FN #Flanke_Nocken_Neg
= #FN_Nocken

//Nocken aktiv
U #FP_Nocken
S #Nocken_aktiv

//Min wert unterschritten
U #Nocken_aktiv
UN #Min_Mess
R #Nocken_aktiv

U #FN_Nocken
UN #Nocken_aktiv
S "DB_Register".Register[1].Schlechtteil

U #FN_Nocken
U #Nocken_aktiv
S "DB_Register".Register[1].Gutteil
R #Nocken_aktiv

//Max Wert überschritten
........

Dies funktioniert schon besser, leider habe ich immer wieder pseudoausschuss!
 

Larry Laffer

Supermoderator
Teammitglied
Beiträge
13.148
Punkte Reaktionen
2.745
... ich hatte erstmal gar nicht (ich gebe zu entgegen meiner sonstigen Angewohnheit) nach deinem Code gefragt. Ich würde mich freuen, wenn du mir meine Fragen zunächst beantworten könntest, da ich nämlich annehme, dass du die angestrebte Geschwindigkeit einmal nicht verarbeiten kannst (Zykluszeit SPS) und dein Mess-System damit auch nicht klar kommt (Reaktionszeit etc.).

Aber ... by the way ... hatte das ursprüngliche S5-System die gleiche Grund-Hardware (inkl. Mess-System) ?

Gruß
Larry
 
OP
P

Pico1184

Well-known member
Beiträge
327
Punkte Reaktionen
9
Wie schnell drehst du den Tisch wenn es funktioniert ? Wieviele Messungen finden dann so pro Sekunde statt ?

Den Tisch drehe ich da von Hand ganz langsam! Das Messsystem macht intern 16 Messungen pro Sekunde. Die Werte frage ich aber nur an einem bestimmten Zeitpunkt ab (Nocken).

Wie schnell ist deine CPU aktuell (OB1-Zykluszeit) ?

3ms aktuell, längste 5ms, kürzeste 1ms

2000 Umdrehungen/Minute sind der Tisch-Antrieb. Wie schnell dreht sich dann die "Scheibe" und wieviele Messungen finden dann statt ?

Gefordert sind 70 Takte pro Minute das wären die 2000Upm d.h. der Nocken bzw. der Trigger welcher die Ausgänge des Messsystems abfrägt kommt 70 mal in der Minute!

Aber ... by the way ... hatte das ursprüngliche S5-System die gleiche Grund-Hardware (inkl. Mess-System) ?

Das Messsystem war schon vorhanden! Welche S5 vorhanden war kann ich erst am Montag sagen, muss mir erst mal die alte Hardeware genauer anschauen, leider habe ich das System vorher noch nie gesehen und auch nicht selbst ausgelegt!

Grüße Pico
 
Zuletzt bearbeitet:

Larry Laffer

Supermoderator
Teammitglied
Beiträge
13.148
Punkte Reaktionen
2.745
Zuviel Werbung?
->Hier kostenlos registrieren
OK ... hast du noch nachgeschoben ... :)
Mit den Daten hast du ja alle Zeit der Welt ...
Dein Mess-System liefert dir die Ausgänge "Gut" bzw. "Schlecht" wenn du ihm den Trigger gibst und nimmt dieser wieder weg, wenn dein Trigger wegfällt ? Oder wie werden die Ausgänge des Systems geschaltet ? Geht der Nocken nur in die SPS oder auch zeitgleich an das Mess-System ?
 
OP
P

Pico1184

Well-known member
Beiträge
327
Punkte Reaktionen
9
Dein Mess-System liefert dir die Ausgänge "Gut" bzw. "Schlecht" wenn du ihm den Trigger gibst und nimmt dieser wieder weg, wenn dein Trigger wegfällt

Nee die Ausgänge des Messsystems stehen dauerhaft an, ich beachte sie nur beim Triggerzeitpunkt!

Geht der Nocken nur in die SPS oder auch zeitgleich an das Mess-System ?

Am Messsystem ist leider kein trigger Eingang vorhanden, daher geht er nur auf die Steuerung!

Grüße Pico
 

Larry Laffer

Supermoderator
Teammitglied
Beiträge
13.148
Punkte Reaktionen
2.745
Vom Ablauf her würde ich das Ganze aber eher als Schrittkette realisieren :
Code:
U #Schritt1
U #Nocken
S #Schritt2
R #Schritt1

U #Schritt1
UN #Nocken
S #Schritt2  // Schlecht-Teil
R #Schritt1

U#Schritt1
U#min
UN #max
S #Schritt3  //Gut-Teil
R #Schritt1

U #Schritt2
U #Bewertung_gebucht
S #Schritt1
R #Schritt2

U #Schritt3
U #Bewertung_gebucht
UN #Nocken
S #Schritt1
R #Schritt3
... ist ungetestet - sollte aber funktionieren ...

Gruß
Larry
 

Larry Laffer

Supermoderator
Teammitglied
Beiträge
13.148
Punkte Reaktionen
2.745
Zuviel Werbung?
->Hier kostenlos registrieren
Nee die Ausgänge des Messsystems stehen dauerhaft an, ich beachte sie nur beim Triggerzeitpunkt!

Dann solltest du diese erst auswerten wenn Trigger da ist und eine kurze Zeitverzögerung (50 - 100ms) abgelaufen ist.
Das kannst du aber m.E. ganz gut in die Schrittkette (oben) mit einbauen ...
 
OP
P

Pico1184

Well-known member
Beiträge
327
Punkte Reaktionen
9
Dann solltest du diese erst auswerten wenn Trigger da ist und eine kurze Zeitverzögerung (50 - 100ms) abgelaufen ist.

Du meinst die Zeit damit ich in den Zyklus des Messsystems komme???

Das kannst du aber m.E. ganz gut in die Schrittkette (oben) mit einbauen ...

Das mit der Schrittkette verstehe ich nicht ganz welche Vorteile soll das bringen???

Normalerweise mache ich die Nockenbearbeitung immer über die POS Flanke und aktiviere die Kontrolle und mit der NEG Flanke schließe ich die Kontrolle ab und Werte aus!

Grüße Pico
 

Larry Laffer

Supermoderator
Teammitglied
Beiträge
13.148
Punkte Reaktionen
2.745
Schrittkette deswegen weil die ganze Auswertung im Grunde eine kleine Schrittkette ist. Immer wenn es dir auf Flanken ankommt dann arbeitest du ja mit so etwas.

Die Schrittkette hat den Vorteil, dass du dieses Problem erfassen kannst :
Code:
//Schlechtteil 1
U #FP_Nocken 
UN #Min_Mess 
UN #Max_Mess 
S "DB_Register".Register[1].Schlechtteil
... das machst du aber auch mit einer Timer-Verzögerung ...
Ich unterstelle hier, dass du "min" und/oder "max" erst viele Millisekunden naxh setzen von Trigger hast ...

Gruß
Larry
 
OP
P

Pico1184

Well-known member
Beiträge
327
Punkte Reaktionen
9
Zuviel Werbung?
->Hier kostenlos registrieren
Ich unterstelle hier, dass du "min" und/oder "max" erst viele Millisekunden nach setzen von Trigger hast ...

Ja das wird so sein, aber ich verstehe nicht ganz warum? Ich frage doch zu einem bestimmten Zeitpunkt min und max ab und wenn die SPS Zykluszeit ca 3ms sind muss ich doch aktuelle Daten mit einer max Verzögerung von 3ms bekommen!

Grüße Pico
 

Larry Laffer

Supermoderator
Teammitglied
Beiträge
13.148
Punkte Reaktionen
2.745
... ich nehme mal an, dass das, was dein Trigger ist nicht gleichzeitig auch frü die Messung verantwortlich ist. Da können schon ein paar Winkelgrade ganz nett was als Zeitverzögerung ausmachen. Außerdem hat dein Mess-system ganz sicher auch eine interne Zykluszeit - du sprachst etwas von 16 Messungen/Sekunde ? Das wäre dann ein Zyklus von 62,5 ms - also der Wert für deinen Trigger-Verzögerungs-Timer ...

Gruß
Larry
 
OP
P

Pico1184

Well-known member
Beiträge
327
Punkte Reaktionen
9
... ich nehme mal an, dass das, was dein Trigger ist nicht gleichzeitig auch frü die Messung verantwortlich ist.

Nein der Trigger hat mit der Messung nichts zu tun, das ist nur der Zeitpunkt bei welchem ich die Werte Abfrage!

Da können schon ein paar Winkelgrade ganz nett was als Zeitverzögerung ausmachen. Außerdem hat dein Mess-system ganz sicher auch eine interne Zykluszeit - du sprachst etwas von 16 Messungen/Sekunde ? Das wäre dann ein Zyklus von 62,5 ms - also der Wert für deinen Trigger-Verzögerungs-Timer ...

Okay das meinte ich vorhin damit dass da ne Verschiebung zwischen sps Zyklus und messzyklus ist und daher mit dem Timer der nächste Zyklus des Messsystems abgewartet wird um aktuelle Daten zu bekommen!

Werde das morgen gleich ausprobieren! Danke dir für deine Unterstützung! Melde mich nochmal ob's geklappt hat!

Grüße Pico
 
Zuletzt bearbeitet:
OP
P

Pico1184

Well-known member
Beiträge
327
Punkte Reaktionen
9
Zuviel Werbung?
->Hier kostenlos registrieren
Also ich bin schier am verrückt werden. Leider hat nichts funktioniert,
ich bekomme von diesem blöden Messsystem keine aktuellen Werte.

Hab mir jetzt das Handbuch mal näher angeschaut, das Ding hat einen "Freeze" Eingang,
damit könnte ich den Wert bei positiver Flanke meines Nockens einfach einfrieren, weiterverarbeiten und dann wieder freigeben.

Hört sich in der Thorie doch gut an. Ich warte nur morgen mal bis ich wieder vor diesem s.... Ding stehe.

Manchmal hat man aber auch gar kein Glück auf seiner Seite :confused:

Grüße Pico
 

Larry Laffer

Supermoderator
Teammitglied
Beiträge
13.148
Punkte Reaktionen
2.745
Hast du mal versucht es so zu machen, wie in meinem Beispiel mit der Schrittkette (plus der Verzögerung natürlich) ?
 
OP
P

Pico1184

Well-known member
Beiträge
327
Punkte Reaktionen
9
Hast du mal versucht es so zu machen, wie in meinem Beispiel mit der Schrittkette (plus der Verzögerung natürlich) ?

Ja aber leider hat das auch nicht geklappt.....

Habs aber trotzdem hinbekommen und zwar hab ich den Freeze benutzt......Habe mal ausprobiert mit dem Nocken den Freeze Eingang zu setzen und mir die Werte angeschaut.
Diese waren dann viel zu verzögert.

Dann hab ich den Nocken ein Stück weiter nach hinten versetzt und die Werte verglichen...wieder verzögert...

Nocken noch ein Stück versetzt und siehe da aktuelle Werte.

Was ich aber nicht verstehe ist, dass der Nocken jetzt viel später als die ca 60ms verstellt wurde

Also irgendetwas stimmt da zeitlich nicht!

Ich hätte auch anstatt den Nocken zu versetzen einfach die Verzögerung in der Steuerung erhöhen können, wär ja auf das gleiche gekommen!

Grüße Pico
 
Zuletzt bearbeitet:
Oben