TIA SCL- Abfrage von 2 Sensoren?

Rampenlicht

Level-1
Beiträge
2
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
ich versuche momentan eine Lösung für folgendes Problem zu finden:
Ich habe 2 Sensoren (kapazitiv, Induktiv), diese können in verschiedenen Positionen montiert werden. Ein Werkstück (Metall oder Kunststoff) gleitet an den Sensoren vorbei.
B1 = induktiv, B2 = kapazitiv
Induktiv wenn B1 und B2, kapazitiv wenn nicht B1 und B2.
Ich müsste also mit einer gewissen Zeitverzögerung (z.b. 0.5S) meine Sensoren abfragen, damit ich Metall und Kunststoff unterscheiden kann.
Hat jemand eine Idee wie ich das Problem lösen kann?
Mein Versuch hat leider meine CPU immer in STOP betrieb gesetz, bzw die cpu überlastet:

WHILE TOF-Timer.Q DO

IF B1 THEN
Hilfsmerker_B1 = TRUE;
END_IF;

IF B2 THEN
Hilfsmerker_B2 := TRUE
END_IF;

END_WHILE;


// Danach abfrage

IF Hilfsmerker_B1...… etc
 
Mein Versuch hat leider meine CPU immer in STOP betrieb gesetz, bzw die cpu überlastet:

Klingt logisch, du solltest dich mit der Arbeitsweise einer SPS einmal genauer auseinandersetzen ( zyklischer Programmablauf )
Deine While Funktion verursacht das Problem.


Du könntest z.B. schreiben:
Code:
Hilfsmerker_B1 := B1 AND TOF_Timer.Q;
Hilfsmerker_B2 := B2 AND TOF_Timer.Q;

Ob das mit deinem Programm so harmoniert, kann ich dir nicht sagen. Es ist halt mal ein Ansatz für dich
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Und warum ging deine CPU in Stopp?
Bestimmt wegen Zykluszeitüberwachung?

Eine SPS ist eben kein normales Programm.
Die Schleife wird versucht innerhalb eines Zykluses abgearbeitet zu werden.
D.h. wenn zu Schleifenbeginn der Timer-Ausgang true ist, kommt er nie wieder aus der Schleife raus.
 
Am einfachsten ist es, wenn du die Sensoren so anordnest, dass zu erst der induktive und dann der kapazitive betätigt wird. Dann kannst du mit "B2 AND B1" und mit "B2 AND NOT B1" ganz ohne Zeiten deine Teile unterscheiden. Optional kann man noch die Flanken abfragen und das Setzen der Merker mit der Betriebsmeldung des Antriebs verriegeln.

Nachtrag: Die Flanke des kapazitiven Sensors musst du abfragen! Das ist natürlich keine Option.
 
Hallo,
vielen Dank für deine Hilfe.
Ich denke nicht, dass dein Vorschlag funktionieren wird, da meine Sensoren und TOF_Timer.Q niemals gleichzeitig auftreten werden.
Meinst du es könnte mit einer Flanke funktionieren?
Grüße
 
Zum ursprüngliche Frage.
Die Kapazitive Sensor meldet dass ein Werkstück vorhanden ist.
Die Induktive Sensor entscheidet ob Werkstück aus Metall oder Kunststoff ist.
Die Sensoren sind nich in denselben Position.

Lösungsansatz:
Wenn Kapazitive Sensor aktiviert startest du ein Timer.
Die Timer-Sollwert entspricht ein Fenster innerhalb dass man erwarten muss dass ein Werkstück vorbei beide Sensoren gefahren ist.
Die Timer hat ein mindestens Laufzeit - es läuft weiter bis eingestellten Zeit selbst wenn die kapazitive Sensor deaktiviert wird.
Wenn die Induktive Sensor aktiviert wird innerhalb von die eingestellte Zeit, dann ist das Wekstück aus Metall, wenn nicht ist es aus Kunststoff.
 
Am einfachsten ist es, wenn du die Sensoren so anordnest, dass zu erst der induktive und dann der kapazitive betätigt wird. Dann kannst du mit "B2 AND B1" und mit "B2 AND NOT B1" ganz ohne Zeiten deine Teile unterscheiden.
Die Sensoren sind nicht in denselben Stelle installiert.
Rampenlicht schrieb:
Ich habe 2 Sensoren (kapazitiv, Induktiv), diese können in verschiedenen Positionen montiert werden.
Selbst wenn sie in denselben Position installiert sind kann es unterschiedlichen Ansprechzeiten sein für die Sensoren und sogar auch die SPS eingänge.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
.. diese können in verschiedenen Positionen montiert werden. ..
Das hatte ich wohl mal wieder völlig falsch verstanden? Nun gut, dann würde ich mit den positiven und mit den negativen Flanken beider Sensoren arbeiten und die Zustände im Vorbeifahren entsprechend speichern. Eine Auswertung über Timer würde ich vermeiden. Falls es mal zu Störungen oder zu einem Stau kommt, gibt es Probleme.
 
Ich müsste also mit einer gewissen Zeitverzögerung (z.b. 0.5S) meine Sensoren abfragen, damit ich Metall und Kunststoff unterscheiden kann.
Rück bitte mal Dein eigentliches Problem ins Rampenlicht!
Was musst Du mit der 0,5 s Verzögerung überbrücken? Gibt es eine Zeit, in der durch das zu prüfende Material gleichzeitig beide Sensoren "bedämpft" werden oder wir das Material zuerst den einen bedämpfen und erst, nachdem dieser nicht mehr melden kann, den zweiten? D.h. liegen die beiden Sensoren so weit auseinander, dass sie nie gleichzeitig bedämpft werden können?
Ich habe es doch richtig verstanden, dass der kapazitive Sensor metallische wie nicht metallische Gegenstände gleichermassen meldet, der induktive aber nur metallische?

Falls sich die Signale des kap. und des ind. Sensors überlappen, musst Du
a.) entweder an der positiven Flanke des kap. Sensors auswerten, wenn zuerst der induktive meldet
b.) oder an der negativen Flanke des kap. Sensors, wenn zuerst der kapazitive meldet.
Eine Wartezeit ist nicht erforderlich und nicht hilfreich.
Code:
// an pos. Flanke von kap, wenn zuerst der ind melden müsste:
metal := ind AND kap AND NOT kapZuvor ;
kunst := NOT ind AND kap AND NOT kapZuvor ;
kapZuvor := kap ;

// an neg. Flanke von kap, wenn ind nach kap melden müsste:
metal := ind AND NOT kap AND kapZuvor ;
kunst := NOT ind AND NOT kap AND kapZuvor ;
kapZuvor := kap ;

// in beiden Fällen:
// - die Ergebnisse stehen nur 1 Zyklus lang zur Verfügung!
// - kapZuvor muss static oder in_out sein und darf nicht anderweitig verwendet werden.

PS:
Die Ergebnisse stehen zwar nur 1 Zyklus lang zur Verfügung, lassen sich aber speichern. Dann müsste aber geklärt werden, wann sie wieder gelöscht werden sollen. Das möchte ich aber der "Fantasie" bzw. den Bedürfnissen des TE überlassen.

Empfehlen würde ich aber unbedingt, die Sensoren so anzuordnen, dass sich überlappende Meldungen ergeben. Das vereinfacht die "Dekodierung" und macht sie unabhängig von der Geschwindigkeit, in der die Teile an den Sensoren vorbeihuschen. Wichtig ist dabei nur, dass nicht zwei aufeinander folgende Teile zur Überlappung führen.
Zusätzlich kann man eine RichtungsErkennung einbauen, die allerdings nur bei metallischen Teilen funktionieren würde.
 
Zuletzt bearbeitet:
Das hatte ich wohl mal wieder völlig falsch verstanden? Nun gut, dann würde ich mit den positiven und mit den negativen Flanken beider Sensoren arbeiten und die Zustände im Vorbeifahren entsprechend speichern. Eine Auswertung über Timer würde ich vermeiden. Falls es mal zu Störungen oder zu einem Stau kommt, gibt es Probleme.
Man kann sich viele Fehlerszenarien vorstellen. Die Erkennung von Fehlern im Prozess ist noch ein Thema. Im Fehlerfall muss ein Operator das Problem anschauen und entscheiden was passieren soll.

Es wäre Robuster mit positive und negative Flanken von beide Sensoren, plus ein Zeitüberwachung.
Die Fehlerszenarien ich mir vorstellen kann:
Negative Flanke (von beide Sensoren) kommen nicht innerhalb von ein Zeit nach die positive Flanke (Teil bleibt stehen unter ein Sensor).
Negative Flanke (von beide Sensoren) kommen zu früh innerhalb von ein Zeit nach die positive Flanke (Signal prellt).
Induktive Flanke(n) kommt ohne dass kapazitive Flanke(n) gekommen ist innerhalb von ein Zeit (diskrepanzfehler).
Es ist nicht möglich automatisch zu erkennen wenn die induktive Sensor defekt ist.
Noch was ?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Spricht was dagegen, den kapazitiven Sensor als zweiten Sensor auszuwerten?
Dann speichere ich mir vom ersten induktiven Sensor den Signalzustand ab (positive Flanke). Sobald der zweite Sensor kommt, gucke ich, ob ich eine positive Flanke abgespeichert habe.
Wenn nicht: Kunststoff.
Wenn ja: Metall.
Danach lösche ich die gespeicherte Flanke ab: Auswertung beendet.

So kann sogar das Band angehalten werden und die Auswertung kann problemlos weiterlaufen... und keine Zeit notwendig...
 
Zurück
Oben