Impulsfolge speichern und verzögert ausgeben

lefrog

Level-2
Beiträge
281
Reaktionspunkte
2
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo!

Ich habe folgende Problemstellung. An einer Anlage wird mit einer Kamera eine Kontrolle unserer Produkte vorgenommen. Unsere Produkte laufen auf einem Vakuumband, sind ca. 26mm lang (in Laufrichtung) und haben zueinander eine Lücke von ca. 5-8mm. Die Kamera entscheidet, ob die Teile für gut oder nicht gut befunden werden. Wenn nun ein odere mehrere Teile nicht gut sind, so sollen diese ausgeworfen (in unserem Fall ausgepustet) werden. Da dieses nicht unter der Kamera geschehen soll, muss ich irgendwie die Information für die nicht gut Teile speichern und diese an der Auswerfstation in genau der gleichen Reihenfolge auspusten. Das Transportband läuft mit 32m/min (533mm/sec). Problematisch wird es hier auch mit der Zykluszeit der Steuerung, so dass ich nur für dieses eine Problem eine eigene S7-313C-2DP vorgesehen habe - dieses muss nicht so bleiben, nur habe ich im Moment keine andere Idee.

Leider kann diese Funktion die Kamera nicht übernehmen, da bei jeder neuen Prüfung das Signal für das Ergebnis verworfen wird. Da die Bandgeschwindigkeit konstant ist hatte ich die Idee die Signale der Kamera irgendwie zu speichern und zeitlich versetzt auf das Magnetventil zu schalten (Schnellschaltventil von Festo).

Problem: Kein kontinuierlicher Fluss des Produktes, Lücken nicht konstant, dafür Bandgeschwindigkeit konstant. Es können maximal 10 Teile zwischen der Kamera und der Auswerfdüse liegen.

Für alle Anregungen bin ich dankbar - ich komm irgendwie nicht weiter. Ich habe nur den Ansatz zehn Mal den Weg zu nehmen, dass ich nach erhalten des nicht gut Signals der Kamera einen Merker schalte, eine Zeit ablaufen lasse (immer gleich da Bandgeschwindigkeit konstant) und dann einen Impuls schalte. Geht das auch einfacher?

Viele Grüße, Tobias
 
Hallo lefrog,
dein Problem lässt sich sehr einfach mit einem Schieberegister lösen. Da es dieses nicht direkt gibt, bildet man es mit dem Schiebebefehl eines DW nach und erhält damit 32 Positionen.
Nun stell dir vor, dieses Doppelwort liegt unter der Anlage und der Inhalt wird in jedem Zyklus der SPS um 1 Position nach rechts geschoben.
Nehmen wir mal an für ein Gutteil wird eine 1 eingetragen (Zykluswischer). Dann kommt diese 1 irgendwann einmal an der Auswurfpos. vorbei. Genau dieses Bit im DW wird für die Ventilansteuerung ausgewertet. Fertig!
Ablauf also in jedem Zyklus:
- DW schieben um 1 Pos nach rechts
- ZyWi des Kamerasignals bilden und Ergebnis in das linkeste Bit des DW eintragen
- UND-Abfrage des richtigen Bit an der Blaseposition

Viel Erfolg!
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo!

Das währe schon mal ein Ansatz - nur muss dafür die Zykluszeit konstant sein, und das kann ich nicht garantieren... Könnte ist das in den OB35 unterbringen und den mit 4 oder 5 Millisekunden laufen lassen?

Viele Grüße, Tobias
 
Hallo,

kannst du vom Band einen brauchbaren Impuls bekommen (so alle 50cm oder so).
Dann kannst du doch diesen zum Schieben des Registers nehmen.

MfG
 
Hallo nochmal,
das Beste wäre natürlich ein Bandimpuls, aber Achtung, es darf kein einziger verloren gehen sonst geht auch die Synchronität zwischen der realen Anlage und dem SPS-internen Modell verloren. Kostet aber einen Eingang :(

So klappt es aber!
 
Ein ähnliches Problem hatten wir gerade hier
http://www.sps-forum.de/showthread.php?t=11632
besprochen, da hab ich einen rel. einfachen Baustein (FC20) geschrieben.
Schau dir den mal an. er geht davon aus, daß die Kamera ein Signal "Fertig" und ein Signal "NIO" liefert und an der Ausfurfstation eine LS sitzt, die das kommende Teil erkennt. Eigentlich sollte er genau für deinen Fall passen, es können max. 16 Teile zwischen Kamera und Auswurfstation liegen, mit DBD könnte man das auf 32 erhöhen, aber das brauchst du ja gar nicht. Im vorliegenden Beipiel hab ich das für max. 8 Teile ausprogrammiert, aber die Erweiterung ist problemlos.
 
Zuletzt bearbeitet:
Hallo!

Danke erstmal für eure Tipps - ich werd mich das gleich in der Firma mal anschauen und versuchen.

Mein Problem an der ganzen Sache ist das ich zeitkritisch arbeite. Bei 533mm pro Sekunde rauscht das Transportband in jeder Millisekunde ca. 0,6mm weiter. Bei 26mm großen Teilen bleibt da nicht viel Zeit diese Sicher zu erkennen und auszuwerfen, daher meine Bedenken wegen der Zykluszeit. Ich werde das aber dennoch einfach mal versuchen.

Viele Grüße, Tobias
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo
ich bleibe bei meiner Lösungsstrategie, auch wenn Question_mark offenbar etwas dagegen einzuwenden hat. Weil (manchmal auch sehr vage) Kritik hilfreich ist, habe ich meinen Vorschlag mal simuliert. Hier das funktionierende Ergebnis:

U E 0.0 // Liegt ein Bandimpuls an?
FP M 1.1 // dynamisieren
SPBN Ende // <-- wenn kein Impuls

L MD 100 // Schieben 1x nach rechts
SRD 1
T MD 100
U E 0.1 // Kamerasignal abfragen
FP M 1.0 // dynamisieren
= M 100.7 // und in linkes Registerbit eintragen

Ende :U M 103.4 // Bit der Ausblasstelle abfragen
= A 4.0 // und ausgeben

Dabei bedeuten:
E0.0 Eingang Bandimpulse
E0.1 Eingang Kamerasignal, 1=Gutteil
A4.0 Ausgang für Auswerfer
MD100 Schieberegister
M103.4 angenommene Position des Auswerfers

Technologische Besonderheiten die mir so einfallen dürften alle keine Probleme bereiten. ;)
 
Wäre es evtl. möglich, das ihr einen Geber an dem Band anbauen könntet?
Wenn ja, kannst du doch einfach eine FM zu stecken.
Da gibst du dann den Eingang von der Kamera drauf und den Ausgang des Ventils und den rest kannst du in der FM programmieren...
Soweit ich weiss, ist die FM vom CPU Zyklus unabhängig, oder?

MfG
Borsti
 
Hallo,

Bitte lese nochmal genau nach, was Du da geschrieben hast und korrigiere es bitte. Sonst mache ich das :ROFLMAO:

6, setzen..

Gruss

Question_mark

Hi QM,
wenn er von DW spricht und im nächsten Satz von "diesem Doppelwort" ist doch alles in 32-facher Butter, oder? Oder habe ich jetzt Tomaten auf den Augen?

Flinn
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Neue Definitionen ???

Hallo,

Flinn schrieb:
Hi QM,
wenn er von DW spricht und im nächsten Satz von "diesem Doppelwort" ist doch alles in 32-facher Butter, oder? Oder habe ich jetzt Tomaten auf den Augen?

In 16-facher oder 32-facher Butter ???
Meine Notation dazu ist :
DW = 16 Bit
DD = 32 Bit

Egal, ob wir hier von S5 oder S7 schreiben. Kannst Dich neben eNDe setzen.

Gruss

Question_mark
 
Ich bin sonst kein Erbsenzähler ..

Hallo,

MSB schrieb:
Heut nimmt ers aber mal wieder Siemensianisch ...

MSB, Du meinst natürlich mich :ROFLMAO:
Vielleicht war ich da ein bisschen kleinlich bei der Definition. Aber wer sich hier als Lehrer für SPS outet und schon vorher in einem anderen Beitrag den kürzest möglichen Impuls so völlig daneben definiert hat, der muss auch mal ein bisschen Kritik einstecken können....
Nur um wenigstens seine didaktischen und fachlichen Fähigkeiten überdenken zu können. Der muss schliesslich für eine gute Ausbildung des Nachwuchses sorgen, wer bezahlt sonst meine Rente, wenn ich dann in 20 Jahren mit 70 in den Ruhestand gehen kann ??? Also reiner Egoismus hinter meinem Sarkasmus.

Gruss

Question_mark
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo
ich glaube, mich noch einmal melden zu müssen.
1. Wenn in einer Klasse Typen wie Question_mark sitzen, ist das die Hölle, denn sie wissen immer alles besser. Geht es aber an konkrete Fragen, hört und sieht man nichts mehr von ihnen.
2. In dem von Question_mark erwähnten Beitrag geht es nicht schlechthin um den kürzest möglichen Impuls einer SPS sondern um den Begriff Zykluswischer und der ist nun mal genau einen Zyklus lang, nicht länger und nicht kürzer. Alles Andere fällt meiner Meinung nach nicht unter diesen Begriff. Aber es könnte ja sein, dass Question_mark zusätzlich sein Wissen im Forum einbringt.
3. Auch hier geht es wieder um Begriffe und deren Abkürzung, insbesondere um die Begriffe Wort und Doppelwort. Question_mark kennt hier nur
DW=16Bit
DD=32 Bit
Dann sollte er mal die folgenden Befehle in S7 eintippen:
L W#16#ABCD // das sind 16Bit
L DW#16#ABCDEFAB // das sind 32 Bit
L DD#16#0 // das ist ein Fehler
Au Weia! Das tut dann aber doch weh oder?

Ergebnis: Wer seine Forumsbeiträge vor der Veröffentlichung nicht von fehlerfreien Menschen analysieren lässt läuft Gefahr, als unqualifiziert hingestellt zu werden. Das heisst nicht, dass Falsches nicht als solches fair zurückgewiesen wird.

Aus meiner Sicht ist nun Schluss mit dieser letzten Endes unqualifizierten Auseinandersetzung.
 
@eNDe

Dein Vergleich hinkt etwas, aber das ist wirklich auch nicht so wichtig.
Trotzdem mal zur Klarstellung.

Code:
 L DW#16#ABCDEFAB // das sind 32 Bit
L DD#16#0 // das ist ein Fehler

Man muß natürlich immer genau angeben wovon man spricht, Siemens hat hier nicht gerade zum Verständnis beigetragen. (Könnte auch sein, daß das nicht Siemens, sondern irgendein Standardisierungsgremium war.)

L B#16#0 ist ein Bytetyp (8Bit)
L W#16#0 ist ein Wordtyp (16Bit)
L DW#16#0 ist ein DWordtyp (32Bit) #16 steht für Hexadezimales Format

Das hat im Grunde nichts mit L DB10.DBB0 L DB10.DBW0 und LDB10.DBD0 zu tun, dort können dann außer Hexadezimalen Typen auch andere drin stecken. Außerdem wird damit kein Typ, sondern der Speicherort beschrieben.

Es gibt also kein DD#16#0, der Typ ist einfach nicht definiert.
 
Krümel und Kuchen

Hallo,

eNDe schrieb:
Dann sollte er mal die folgenden Befehle in S7 eintippen:

Ich kann mich jetzt wirklich nicht daran erinnern, irgendein Wort über Adressierung geschrieben zu haben. Geh doch mal zu Deinem Friseur, der hat immer ein offenes Ohr für Dich ....

Gruss

Question_mark
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Entschuldigung, off topic

Hallo QM,

ich schätze dich, aber lass doch bitte deine Haarspalterei, oder grenze es wenigstens ein bisschen ein!

Die wirklich interessanten Beiträge in diesen Forum zu finden, ist mittlerweile schon schwierig genug. Meine Tageszeitung habe ich aus ähnlichen Gründen bereits seit Jahren abbestellt.

@all
Um den Zykluswischer ging's hier:
http://sps-forum.de/showthread.php?t=11712&highlight=Zykluswischer


Gruß, Onkel
 
Zurück
Oben