Eine Frage zu Flankenmerkern...

Zuviel Werbung?
-> Hier kostenlos registrieren
naja, wenn die aktion gestartet oder abgebrochen wurde?!

...und wenn ich nochmal nachdenke...

Code:
U E0.0
FP M0.0
S M1.0

U M1.0
U M10.1
U E0.2
S M10.2
das geht dann natürlich auch ohne Flanke, weil ja der M1.0 gesetzt wird...

die konkrete Aufgabenstellung wäre vielleicht hilfreicher...
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Hm, wie sonst könnte man das dann programmieren?

Die Aufgabe besteht darin, dass ein Zylinder nur dann startet, wenn

- eine LS über eine pos. Flanke einen Impuls abgibt
- ein anderer Zylinder in seiner GS steht
- ein vorhergehender Schritt (einer Schrittkette) gesetzt ist


Frage:

Wie kann ich da eine zeitliche Abhängigkeit berücksichtigen?
Das löst man am Besten mit einem zusätzlichen Warte-Schritt in der Schrittkette
"Warte bis alle Bedingungen zum Ausfahren des Zylinders erfüllt sind" und danach
zum Schritt "Ausfahren des Zylinders" weiterschaltet.

Dann braucht man keine Flanke. Die LS muß nur (egal wie lange schon) belegt sein.
In welcher zeitlichen Reihenfolge die Bedingungen erfüllt werden ist dann egal.
Hauptsache irgendwann sind alle Bedingungen gleichzeitig erfüllt.

Gruß
Harald
 
die konkrete Aufgabenstellung wäre vielleicht hilfreicher...

Nun, die eigentlich Aufgabe habe ich eigentlich schon genannt:

Die Aufgabe besteht darin, dass ein Zylinder nur dann startet, wenn

- eine LS über eine pos. Flanke einen Impuls abgibt
- ein anderer Zylinder in seiner GS steht
- ein vorhergehender Schritt (einer Schrittkette) gesetzt ist

Insgesamt sollen sechs Zylinder in die Schrittkette eingebunden werden. Als Startbedingung der anderen Zylinder habe ich jeweils den vorherigen Schrittmerker sowie die entsprechende Stellung des Zylinders angesetzt.
 
Hi,
ich würde dir generell bei solchen Schrittketten ein zusätzliche Endlagen oder Schrittüberwachung empfehlen.
So kommst du auch aus der Situation
U e0.0
fp m0.0
u e0.1 // noch nicht da?
icon8.gif

u e0.2 // oder noch nicht da
icon8.gif

= a0.0
wieder raus.
icon7.gif


Vorsicht bei Sprungen mit den Flankenmerkern.

u m0.0
spb m001

u e 0.0
fp m 0.1
= a 0.0
s m0.0

m001 : nop 0

u e0.1
fp m0.2
r m0.0


Was macht der fp m 0.1 wenn bei Durchlauf ( m0.0 =0) der E0.0 schon 1 ist?

Grüße michael
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Was macht der fp m 0.1 wenn bei Durchlauf ( m0.0 =0) der E0.0 schon 1 ist?

Ich würde dir generell bei solchen Schrittketten eine zusätzliche Endlagen oder Schrittüberwachung empfehlen.
Grüße michael

Hallo Michael,

wenn bei Durchlauf E0.0 schon 1 ist, so wird der FP M0.1 vermutlich keine Flanke mehr bilden.


Habe am Anfang der Schrittkette einen Richtimpuls programmiert, der ja dafür da ist, dass der Schritt 0 beim ersten Mal erreicht wird:

Code:
UN M0.0
= M0.1
S M0.0
O M0.1
O
U "Zylinder_1 in GS"
S M10.0   // Schritt 0
U M10.1   // Schritt 1
R M10.0


Aber wie kann ich bei Schrittketten eigentlich erreichen, dass nach dem Einschalten der SPS oder nach Spannungsaus (z.B. Notschalter drücken) alle Zylinder wieder in ihrer GS stehen - gibt es hierfür eine Möglichkeit?

Danke für eure Unterstützung!
 
Zuletzt bearbeitet:
mache doch einfach eine Initialisierungsschritt der bei notaus oder neustart durchlaufen wird.

Bei manchen Schrittketten habe ich auch schon mal
am Schrittanfang alle Funktionen gnadenlos gesetzt bzw.rückgesetzt
so wie eigentlich der Zustand sein soll wenn ich in den Schritt reinkomme.

Grüße Michael
 
Wie kann ich so etwas machen, Michael?

Dazu müsste ich ja die entsprechenden Schritte setzen, die für die GS der einzelnen Zylinder zuständig sind, oder?

Aber wo baue ich so einen Initialisierungsschritt in die Schrittkette ein?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
mache doch einfach:

ob100
set
r m100.0 // Neustart


u E0.0 // Nothalt =0
u M100.0 // Neustart
spb NHLT

R A0.0 // Zylinder 1 in GS fahren
R A0.1 // zylinder 2 in GS fahren
usw..

// nicht vergessen Schrittmerker zurücksetzen
r M10.0 //Schritt 1
r M10.1 //Schritt 2
usw..

S m100.0 // Neustart fertig
NHLT : nop 0 // Ziel

Grüße
Michael
 
mache doch einfach:

ob100
set
r m100.0 // Neustart

Also der OB100 ist ja der Anlauf-OB und somit wird beim Anlauf der SPS der Merker M100.0 auf 0 gesetzt - nur wofür das?

u E0.0 // Nothalt =0
u M100.0 // Neustart
spb NHLT

Soll E0.0 der NotAus-Schalter sein?
Da M100.0 zurückgesetzt wurde, kann ja nicht zu der Sprungmarke NHLT gesprungen werden... sondern es geht weiter mit dem Rücksetzen der einzelnen Ausgänge?

R A0.0 // Zylinder 1 in GS fahren
R A0.1 // zylinder 2 in GS fahren
usw..

// nicht vergessen Schrittmerker zurücksetzen
r M10.0 //Schritt 1
r M10.1 //Schritt 2
usw..

Genügt es hier nicht nur die Schrittmerker zurückzusetzen, die die entsprechenden Ausgänge der Zylinder in GS fahren?

S m100.0 // Neustart fertig
NHLT : nop 0 // Ziel

Durch was wird M100.0 hier an dieser Stelle gesetzt?
Was passiert an der Sprungmarke?

Grüße
Michael


Sorry für die vielen dummen Fragen, aber irgendwie ist mir die Programmierung (oder was sie bewerkstelligen soll) nicht klar...

Könnte das bitte jemand etwas ausdeutschen - sozusagen für Dummies?
 
Zuletzt bearbeitet:
ob100
set
r m100.0 // Neustart

Also der OB100 ist ja der Anlauf-OB und somit wird beim Anlauf der SPS der Merker M100.0 auf 0 gesetzt - nur wofür das?
Könnte sein das der Merker remanent ist! Einstellung in der CPU.


u E0.0 // Nothalt =0
u M100.0 // Neustart
spb NHLT

Soll E0.0 der NotAus-Schalter sein? Ja
Da M100.0 zurückgesetzt wurde, kann ja nicht zu der Sprungmarke NHLT gesprungen werden... sondern es geht weiter mit dem Rücksetzen der einzelnen Ausgänge? Richtig - der wird aber nach einmaligen Durchlauf gesetzt. Es wird nun solange durchlaufen bis der E0.0 auf 1 geht. Also Nothalt beendet.

R A0.0 // Zylinder 1 in GS fahren
R A0.1 // zylinder 2 in GS fahren
usw..

// nicht vergessen Schrittmerker zurücksetzen
r M10.0 //Schritt 1
r M10.1 //Schritt 2
usw..

Genügt es hier nicht nur die Schrittmerker zurückzusetzen, die die entsprechenden Ausgänge der Zylinder in GS fahren?

Wenn du das so programiert hast - ja.

S m100.0 // Neustart fertig
NHLT : nop 0 // Ziel

Durch was wird M100.0 hier an dieser Stelle gesetzt?
Was passiert an der Sprungmarke? Nichts! Es geht weiter im Programm.

Grüße Michael
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Michael und Anne,
das ist mir zu bunt, versuche es doch mal mit Zitaten und Code Tags

nur noch mal so als Beispiel


Wie wird eine UND-Verknüpfung gemacht?

hier kann jetzt eine Antwort stehen mit den endsprechenden code.
Code:
      U E 0.0
      U E 0.1
      = A 0.0
 
Bevor Anne das konfuse OB100-Beispiel von Michael aufwändig austestet,
ein paar Bemerkungen dazu.

Der OB100 wird beim STOP->RUN-Übergang der CPU genau 1 mal aufgerufen.
Das umständliche rücksetzen, verknüpfen, "spb NHLT" und setzen des M100.0
in einem bedingten Programmzweig im OB100 ist sinnlos.
Der Sprung "spb NHLT" wird nie ausgeführt.
[Anne:] Da M100.0 zurückgesetzt wurde, kann ja nicht zu der Sprungmarke NHLT gesprungen werden... sondern es geht weiter mit dem Rücksetzen der einzelnen Ausgänge? [Michael:] Richtig - der wird aber nach einmaligen Durchlauf gesetzt. Es wird nun solange durchlaufen bis der E0.0 auf 1 geht. Also Nothalt beendet.
Diese Aussage ist falsch, der OB100 wird ja nur 1x aufgerufen.

Ausgänge im OB100 rücksetzen ist völlig überflüssig.
Wenn der OB100 aufgerufen wird, dann sind alle Ausgänge=0.
Außer ein Ausgang ist geforced, dann nützt aber ein Rücksetzen nichts.

Einzelne oder alle Schrittmerker im OB100 rücksetzen ist ebenso sinnlos
oder gar gefährlich (eventuelle Kollisionsgefahr der Zylinder!).
Entweder die Schrittmerker sind normal nicht-remanent, dann sind beim
STOP->RUN-Übergang und somit im OB100 schon alle Schrittmerker=0.
Oder der Programmierer hat absichtlich remanente Schrittmerker benutzt,
dann ist das Rücksetzen im OB100 nicht zielführend.
Eine geordnete und ggf. zeitlich gestaffelte Reaktion der Schrittkette
auf das Aus-/Einschalten der Steuerung muß separat programmiert werden.
Das könnte eine eigene Grundstellungs-Initialisierungs-Schrittkette sein,
falls das Anfahren der Grundstellung beim Einschalten erwünscht ist.

Das Verknüfen des Notaus-Signals im OB100 ist sinnlos.
Bei Einschalten der Steuerspannung MUSS Notaus zunächst aktiv sein und
irgendwann später mit einem extra-Taster erst quittiert/aufgehoben werden.
Wenn nur die CPU in STOP und dann wieder in RUN geschaltet wird, dann muß
je nach Aufgabenstellung und Gefährdungs-Analyse entschieden werden, ob das
einen Einfluß auf die Schrittkette haben soll und wie dann ggf. reagiert
werden soll.


Noch ein Sicherheits-Hinweis zu den Zylindern:
Wenn das z.B. Pneumatik-Zylinder sind, dann muß für jeden Zylinder durchdacht
werden, wie der Zylinder auf Ausschalten, Einschalten und Notaus reagieren
soll und entsprechende Magnetventile eingesetzt werden.
Stichwort: Gefährdungs-Analyse
Und: das Aktivieren von Notaus darf keine gefährlichen Bewegungen auslösen.
Und: Nur durch Einschalten der Steuerspannung bzw. Spannungswiederkehr
nach Spannungsausfall darf die Maschine in der Regel nicht selbständig
Bewegungen ausführen.

Gruß
Harald
 
Harald,
vielen dank für deine ausführliche Beschreibung.
Mein Fehler war natürlich anzuzeigen wo der OB1 anfängt.
Sorry,


ob100
set
r m100.0 // Neustart


OB1!!!!!!!!!!!!!!!!!!!!!

u E0.0 // Nothalt =0
u M100.0 // Neustart
spb NHLT


R A0.0 // Zylinder 1 in GS fahren
R A0.1 // zylinder 2 in GS fahren
usw..

// nicht vergessen Schrittmerker zurücksetzen
r M10.0 //Schritt 1
r M10.1 //Schritt 2
usw..


S m100.0 // Neustart fertig
NHLT : nop 0 // Ziel




Grüße Michael

 
Zuletzt bearbeitet:
Hallo und lieben Dank für eure Erklärungen und Hilfestellungen...

In dem aktuellen Projekt müssen die sechs Zylinder nach dem Abschalten mittels AUS-Taster noch ihre Bewegungen zu Ende bringen. Dies ist mir dadurch gelungen, dass ich als Bedingung für Schritt 0 den AUS-Taster hinzugenommen habe.

Mein Problem ist der Start nach NOTAUS!

Beim Drücken von NOTAUS müssen alle Zylinder sofort stehenbleiben. Das klappt ja recht gut durch das Rücksetzen der einzelnen Schrittmerker.

Aber wie kann ich eine Art "Grundstellungsfahrt" nach NOTAUS bewerkstelligen - nachdem also die Spannung wieder eingeschaltet wurde?

Wäre hierfür das Beispiel von "Michael Müller" mit dem OB100 und OB1 geeignet oder ist so etwas noch einfacher zu programmieren?
 
Hallo
@Anne
Aber wie kann ich eine Art "Grundstellungsfahrt" nach NOTAUS bewerkstelligen - nachdem also die Spannung wieder eingeschaltet wurde?

Die Maschine darf keinesfalls nach <Hauptschalter Ein> irgendwelche
Zuckungen ausführen. Auch nicht nach quittieren des Not-Aus und Spannungswiederkehr

Außerdem wird der OB100 nach Not-Aus gar nicht abgearbeitet weil du ja
bei Not-Aus nicht die CPU von der Versorgungsspannung trennst (normalerweise)

Ich würde die Zylinder mit einer Art Handfunktion (Einrichtbetrieb) vom
Bediener zurückfahren lassen. Wenn die Maschine nach Not-Aus kreuz und quer
stehengeblieben ist kann das sehr teuer bzw. sogar gefährlich werden Zylinder
einfach zu bewegen. Es sei denn die Maschine ist so simpel das sich da wirklich
nichts in die Quere kommen kann.
Trotzdem darf sich ohne Tastendruck o. Ä nichts bewegen

Mfg
Paul
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Es sei denn die Maschine ist so simpel das sich da wirklich
nichts in die Quere kommen kann.
Trotzdem darf sich ohne Tastendruck o. Ä nichts bewegen
Mfg
Paul

Danke für deine Antwort Paul. Nun im Grunde ist die Maschine nicht schwierig - und ohne einen Tastendruck würde sich nach NOTAUS und Spannungswiederkehr auch nichts bewegen, weil es einen Button auf einem Panel gibt, der sozusagen den Automatikbetrieb erst startet.

Gut, eine Möglichkeit ist natürlich alle Zylinder erst mal per Hand in ihre GS zu bewegen - aber mich würde einfach einmal interessieren, ob ich das auch programmieren könnte und vor allem wie?

Lieben Dank!
 
Ich würde eine zweite Schrittkette "Grundstellungsfahrt" programmieren, und solange diese Schrittkette
nicht im Endschritt "Grundstellungsfahrt beendet" steht, die Produktiv-Schrittkette sperren bzw. deren
Schrittmerker alle auf 0 halten. Bei CPU-Start oder Notaus wird die Schrittkette "Grundstellungsfahrt"
auf den Startschritt gesetzt, der auf die Start-Taste vom Panel wartet.

Es kann aber sein, daß ein vollkommen automatisches Anfahren der Grundstellung nicht immer möglich ist.
Bei/nach einem Notaus werden sich in der Regel noch Produkt(e) irgendwo in der Anlagen befinden, die
manuell entfernt oder durch die Bearbeitungsstrecke gefahren werden müssen.
Wenn also sowieso Maschinenteile im Handbetrieb bewegt werden müssen, dann lohnt sich eine automatische
Grundstellungsfahrt vielleicht nicht bzw. ist nicht 100% kollisionsfrei-sicher realisierbar.
Du als Programmiererin mußt Dir alle möglichen und unmöglichen Stellungen vorstellen können, in denen
sich die Maschine nach Spannungswiederkehr befinden kann.

Es kommt immer darauf an, wie groß ist die Anlage, wieviele Aktoren müssen wie verfahren werden.
Eventuell ist auch eine Halbautomatik für jeden Zylinder, Greifer oder was-weiß-ich sinnvoll, bei der mit
verschiedenen Tastern jeweils nur 1 Aktor für sich eine eigene Grundstellungsfahrt macht. Das wäre auch
schon eine Unterstützung des Anlagenfahrers, der "aufräumen" muß. Der Anlagenfahrer entscheidet, in welcher
Reihenfolge er die einzelnen Aktoren ihre Grundstellungsfahrt machen läßt.

Ohne Deine Anlage genauer zu kennen, kann man Dir nicht "die" richtige Grundstellungs-Prozedur empfehlen.

Gruß
Harald
 
Danke für deine Erläuterungen Harald.

Ja, ist sicher schwer etwas zu sagen, wenn man die Anlage nicht kennt. Die Zylinder nach NOTAUS zunächst manuell in die GS zu fahren ist vermutlich die sicherste Variante.

Nur so aus Neugierde...

Gibt es denn keine Möglichkeit, nicht mit einer zweiten Schrittkette, sondern ähnlich dem Vorschlag des Users Michael Müller, über einen OB oder Ähnlichem die Zylinder in ihre GS fahren zu lassen, nachdem z.B. ein Taster (Grundstellung) gedrückt wird?
 
Zurück
Oben