Sonstiges Bistabile Kippstufe bleibt nicht gesetzt

Morymmus

Level-1
Beiträge
526
Reaktionspunkte
71
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

wir verwenden bei uns in der Firma eig. nur IEC 61131-3-Konforme Steuerungen, meist die XIOC von EATON.
Heute musste ich aber in einer bestehenden Maschine eine Änderung an dem Programm durchführen, die mit einer mir leider bis dahin unbekannten S7-200 bestückt ist.
Auf der Maschine läuft eine Schrittkette für einen Handlötkolben mit automatischer Lotzufuhr.
Aufgabe war nun, zum einen die aktuellen Schritte über Leuchtmelder sichtbar zu machen - das stellt kein Problem dar -
und zum anderen einen Pressluftzylinder über mehrere Durchläufe der Schrittkette hinweg anzusteuern und zu halten.
Der Pressluftzylinder dient zur Klemmung des Werkstücks an dem 4 Lötstellen auszuführen sind.

Ich hatte nun folgende Idee:
1. Werkstück einlegen
2. Arretierung mit Taster bedienen
3. Pressluftzylinder mit bistabiler Kippstufe halten bis ein Zähler die notwendige Anzahl von Lötvorgängen gezählt hat

soweit so gut.
Ich hatte aber folgenden Effekt: Ich habe o.g. Schaltungsidee sowohl mit einem RS-Block als auch mit den einzelnen R- bzw. S-Blöcken programmiert, aber der Ausgang zeigt keinerlei speicherndes Verhalten - sobald man den Taster loslässt, fällt auch das Ventil wieder ab.
Hierbei macht es keinen Unterschied, ob ich den Ausgang direkt angebe oder einen Merker dazwischen schalte.
Auch die Verwendung im Main oder in einem Unterprogramm bringt keinen Unterschied im Verhalten.

Ich habe zwar mittlerweile einen Work-around gefunden, in dem ich den vorderen Endlagen-Sensor des Zylinders zum Halten den Ventils verwende, aber wirklich zufrieden bin ich mit dieser Lösung noch nicht.
Vor allem würde mich aber mal interessieren, ob schon mal jemand von Euch so ein ähnliches Problem hatte und was ggfs die Lösung war.

Ich verwende eine
S7-200 CPU Typ 224 Ver 2.0 an einem
Field PG mit WinXp und CP5611 sowie
Step7-Micro/Win Ver 4.0.9.25 mit SP9

Vielen Dank für Eure Antworten.
 
Was hattest Du denn im R-Zweig programmiert? War da auch der Zählerstand mit verknüpft? Bzw. ist Dir klar daß der Zylinder über mehrere Schritte der Schrittkette ausgefahren bleiben muß?
Wie wärs, wenn Du uns mal Dein nicht funktionierendes Programmstück zeigst?
An der S7-200 liegt der Misserfolg bestimmt nicht...

Man könnte im Schritt nach dem Warten auf den Taster den Zylinder-Ausgang setzen (--> fährt aus)
und viele Schritte später nach dem 4. Lötvorgang den Ausgang rücksetzen (--> fährt wieder ein)
Ich bevorzuge aber die Großes-Oder-Variante:
Code:
LD Schritt3
O  Schritt4
O  Schritt5
...
O  Schritt16
=  Zylinder
Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

Danke für die schnelle Antwort.

Also, programmiert hatte ich folgendes:

Code:
Network 1  
LD     E0.0 // Zweihand-Bedienung Taster Rechts
U      E0.1 // Zweihand-Bedienung Taster Links
LD     M0.0 // Merker Lötprozess abgeschlossen 
O      E0.2 // Zweihand-Bedienung Verriegelung lösen
NOT
LPS
U      A0.0 // Ventil 1 : Verriegelung Werkstück
=      A0.0 // Ventil 1 : Verriegelung Werkstück
LPP
ULD
O      A0.0 // Ventil 1 : Verriegelung Werkstück
=      A0.0 // Ventil 1 : Verriegelung Werkstück

Network 2 
LD     M1.7 // Schrittmerker Schritt 7
LD     E0.0 // Zweihand-Bedienung Taster Rechts
U      E0.1 // Zweihand-Bedienung Taster Links
ZR     Z1, 4 // Zähler Lötvorgänge

Network 3 
LD     Z1 // Zähler Lötvorgänge
=      M0.0 // Merker Lötprozess abgeschlossen

Mir ist schon klar, das der Fehler vermutl. nicht in der S7-200 zu suchen ist, aber ein bisschen ratlos bin ich trotzdem.

Wenn ich obiges Programm beobachte, dann wird beim Drücken der Tasten das Ventil gesetzt und der Zähler initialisiert.
Drücke ich auch noch den Taster S3, wird das Ventil vorrangig zurückgesetzt wie es sein sollte.
Lasse ich die Zweihand-Taster S1 und S2 los, fällt das Ventil sofort wieder ab, obwohl weder M0.0 noch S3 aktiv sind.
Wenn ich dann, mit abgeschaltetem Ventil, die Lötvorgänge durchführe dekrementiert der Zähler wie gewünscht und beim erreichen der 0 wird Merker M0.0 aktiv und würde somit die Rücksetzbedingung erfüllen.

Ich habe natürlich auch schon geprüft, ob irgendeine der hier verwendeten Adressen (E/A/M/Z) an anderer Stelle im Programm überschrieben wird - ich habe aber nichts gefunden.

Selbst wenn ich o.g. Code in ein absolut frisches Projekt programmiere bekomme ich den selben Effekt.

Viele Grüße

Mory
 
Zurück
Oben