Step 7 Inkrementalgeber "simulieren" als Takt für eine Messung

Itschi77

Level-1
Beiträge
31
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
ich möchte die Breite von Artikeln messen. An anderer Stelle habe ich das mit eine 1200er einem schnellen Zähler und einem Inkrementalgeber gemacht. Hier habe ich jetzt eine 300er und keinen Inkrementalgeber. Die normalen Zähler sind mir zu langsam, da ist die Differenz zwischen den Messungen zu gering. Jetzt dachte ich man kann so etwas irgendwie anders erzeugen. Also quasi einen Inkrementalgeber und einen schnellen Zähler simulieren.
Leider habe ich bis jetzt im Netz noch nichts gefunden. Und, daher schreibe ich hier, auch selber keine zündende Idee.
Positive Flanke Laser Lichtschranke > Zähler stand einlesen, negative Flanke > aktuellen Zählerstand einlesen > subtrahieren = Breite ist x Inkremente

Hat jemand eine Idee?

Viele Grüße und vielen Dank

Michael
 
Zuletzt bearbeitet:
wenn die geschwindigkeit konstat ist startzeit und endzeit erfassen und die differenz daraus berechnen. SB_DT_DT FC34 aus den iec funktion blocks
oder im ob35 ein dbw inkrementieren. evtl die aufrufzeit von ob35 kleiner stellen.
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Positive Flanke Laser Lichtschranke > Zähler stand einlesen, negative Flanke > aktuellen Zählerstand einlesen > subtrahieren = Breite ist x Inkremente
Passt doch, Michael. Hätte zwar erwartet, dass negative Flanke den Start macht und positive Flanke den Stopp, aber, was ich gar nicht verstehe:
welchen ZählerStand willst Du denn einlesen? Ich hatte verstanden, Du hast keinen (schnellen) Zähler und keinen InkrementalGeber.
Was dann? Was heisst simulieren? Ist die Geschwingigkeit, mit der die LS durchfahren wird, genügend konstant und genau genug bekannt?

PS:
Evtl. (wenn Geschwingigkeit sehr konstant gehalten wird) mit einem "EichGegenstand" bekannter Länge Deinen ProportionalitätsFaktor ermitteln.
 
Zuletzt bearbeitet:
Die normalen Zähler sind mir zu langsam, da ist die Differenz zwischen den Messungen zu gering.
Was/wie "zählst" Du da?

"Normale" Zähler/Zeitmesser zählen/messen mit der Geschwindigkeit der Zykluszeit. Wenn man schneller zählen will als die Zykluszeit, dann braucht man Hardwarezähler (in CPU31xC integriert oder z.B. FM350) oder Digitaleingänge mit Prozessalarm bei Signalwechsel (in CPU31xC integriert oder z.B. 321-7BH01) oder man muß die Baugruppe schneller abfragen (z.B. in zyklischem OB OB35).

Wie kurz sind Deine Signale? Wie hoch muß die zeitliche Auflösung sein? Wie genau +/- muß die Zeitmessung sein?
Kannst Du keinen Inkrementalgeber anbauen? Oder einen Initiator und Zähne/Nocken?

Harald
 
Über welche Zeitspanne reden wir denn beim passierenden Produkt? Liegt der zeitliche Abstand zwischen den Flanken im Sekundenbereich oder (wahrscheinlich) im Bereich 20...100ms?
Konstante Transportgeschwindigkeit ist eh Voraussetzung wenn Du keinen Geber am Transportsystem hast um direkt den Weg zu messen.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Das ganze befindet sich in der Testphase und ich möchte gucken ob es überhaupt funktioniert. Wenn ja werden später auch Inkrementalgeber installiert. Ich denke das die Geschwindigkeit erstmal so konstant ist das ich so testen kann. Ich stelle mir das so vor, das ich den Artikel messe, zb 10mm, das sind dann zb 100Ink. Dann sage ich +/- 5% ist akzeptabel. Wenn der aktuelle Artikel dann von Flanke zu Flanke 100 Ink. hatte sehe ich „aktueller Messwert 10mm“
Es wird sich im unteren 2stelligen ms Bereich bewegen.
Es kann auch sein das sich herausstellt das es nicht genau genug ist, aber dafür hätte halt gerne in den zb 40ms lieber 40 Signale als 4.
Zum Test läuft es an einer Stelle der Produktion wo klar ist das alles 10mm hat. Jetzt möchte ich mein System anbauen und gucken ob es auch immer 10mm Mist. Dann könnte ich es an anderer Stelle zur Entscheidungsbildung verwenden.
Dazu möchte ich noch den aktuellen Messwert mit einem Sollwert vergleichen und wenn der Abweicht in einen DB schreiben um mir später alle „Fehlmessungen“ anzusehen. Da lese ich noch wie man das automatisch in einen DB untereinander schiebt. Scheinbar indirekt adressiert mit Pointern. Dazu habe ich dann später wahrscheinlich auch noch eine Frage. Aber jetzt muss es erstmal grundsätzlich laufen.
 
Aktuell habe ich einen normalen Zähler, die Differenz zwischen dem Zählerstand bei 35mm zu 40mm ist zu gering. Alle 10ms wird einmal gezählt, kann das sein?
Ich bin der Meinung das ein HSC mit Inkrementalgeber eine höhere Differenz erzeugt
 
Aktuell habe ich einen normalen Zähler, die Differenz zwischen dem Zählerstand bei 35mm zu 40mm ist zu gering. Alle 10ms wird einmal gezählt, kann das sein?
Ein "normaler" Zähler in Kombination mit einer "normalen" ZyklusZeit ist eben kein HSC - sonst hätte man den nicht zu erfinden brauchen.

PS:
Wenn der Zähler alle 10 ms einmal zählt, dürfte Deine ZyklusZeit bei 5 ms liegen.
Mir war anfangs nicht klar, dass Du Längen um 10 mm messen wolltest und wie genau.
Bei MessLängen von z.B. 500 mm sähe die Welt schon anders aus - wobei aber die Herkunft der ZählImpulse weiterhin unklar ist. Die Frequenz darf nicht so hoch sein, dass die Zählerei anfängt, Impulse zu schlabbern.
 
Zuletzt bearbeitet:
Wenn Du eine Zeit von 40ms zwischen Start und Stop auf 1ms genau misst, dann bekommst Du 40 als Ergebnis - aber ziemlich sicher nicht auf 5% genau, sondern eher +/- 50..100% ;)
Wie viele Millisekunden sind Deine 10mm? Wie schnell läuft das Band? Wenn es 10mm/Sekunde läuft dann ist Dein Wunsch kein Problem... Ob das was Du vorhast machbar ist, kann man ausrechnen.
Was für eine S7-300 hast Du genau? Und was für geeignete Eingangs-Baugruppen?

Harald
 
PS: wenn Du keinen Inkrementalgeber hast der eine hohe Differenz zwischen Start und Stop erzeugt, dann kannst Du nur eine hochaufgelöste Zeitmessung machen - da ist halt "nur" das Problem, die Zeitmessung reproduzierbar ausreichend genau zu starten und zu stoppen und auszulesen. Das wird nur mit Prozessalarm oder schneller zyklischer Abfrage gehen - oder mit Zyklus-unabhängiger Zähler-Hardware (HSC).

Harald
 
Ja schon klar, deshalb meine Frage. Bekomme ich irgendwie mehr Signale als ein normaler Zähler ohne Inkrementalgeber
Wenn Du die (Uhr-)Zeit ms-genau geliefert bekommst, ist das doch schon viel genauer!
Die Ungenauigkeit kommt dann (nur noch) daher, dass die Zeit nicht verzögerungsfrei bei Flankenwechseln des LS-Signals auch wirklich aktuell genug eingelesen wird.

PS:
Sorry Harald! Habe Deinen Beitrag #11 erst jetzt entdeckt.
 
Zuletzt bearbeitet:
die uhrzeit ist auf 1 milisekunde genau (das mit der uhrzeit habe ich aber oben schon erwähnt. post 2)
entscheident ist (wie bereits erwähnt wie genau du die startzeit ermitteln kannst.
wenn dein eingang einen prozessarlarn auslösen kann (ob aufruf) kann man die zeit schon recht genau bestimmen.
 
Zuletzt bearbeitet:
Ich würde nicht die Uhrzeit nehmen (die kann +/- springen) sondern die SFC64 TIME_TCK, man hat aber noch das größere Problem, die Zeitmessung des Lichtschranke-Signals auf 1ms genau zu starten und zu stoppen - das geht nur mit Interrupt (Prozessalarm) oder mit Hardwarezähler. Ich würde nicht rumbasteln sondern einen Hardwarezähler nehmen. (oder es stellt sich heraus daß das Band schön langsam läuft)

Harald
 
ok. in der beziehung gebe ich dir recht.
aber von der genauigkeit ist beides das gleiche.
 
Zurück
Oben