Zyklusmerker bei Schrittkette

anne

Level-1
Beiträge
347
Reaktionspunkte
2
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo, ich habe ein mittelschweres Problem... :p

In einer FC1 ist eine Schrittkette programmiert:

Code:
UN  M2.0
=   M2.1
S   M2.0
O   M2.1
O
U   "M_Schr_7"          // letzter Schritt der Kette
U   "Bedingung_1"
U   "Bedingung_2"
S   "M_Schr_0"          // Schritt 0
U   "M_Schr_1"
R   "M_Schr_0"
 
usw.


In OB1 ist programmiert:

Code:
U   "Bedingung_3"
CC FC 1

Wird nun die SPS komplett (über Netzteil) abgeschaltet, so komme ich über den Merker M2.1 in Schritt 0 und die Kette funktioniert.

Wird diese Schrittkette jedoch gestoppt und die SPS nicht komplett abgeschaltet, so komme ich anschließend über M2.1 nicht mehr in Schritt 0!


Offensichtlich greift M2.1 nur, wenn die SPS völlig stromlos war?


Meine Idee ist nun:

OB100:

Code:
SET
= M30.0


OB1:

Code:
U   "Bedingung_3"
CC FC 1
 
CLR
= M30.0


Und dann in FC1:

Code:
O   M30.0
O
U   "M_Schr_7"          // letzter Schritt der Kette
U   "Bedingung_1"
U   "Bedingung_2"
S   "M_Schr_0"          // Schritt 0
U   "M_Schr_1"
R   "M_Schr_0"
 
usw.


Was meint ihr, würde das auch dann klappen, wenn die SPS nicht stromlos geschaltet wurde?

Lieben Dank!
 
einfacher ist es wenn du im ob100

set
r m2.0

machst. damit wird beim warmstart der schritt auch aktiv.

Was ich nicht verstehe:
gibt es keinen reset für die schrittkette (schrittmerker)?
wie werden merker "M_Schr_x" zurückgesetzt?
ich würde im hochlauf (ob100) einen reset-merker setzen
und mit diesem die schrittmerker alle "reseten" und nur
den von schritt 0 setzen

gruß,
thomas
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Danke für deine Antwort Thomas,

du meinst also ich sollte die Programmierung

Code:
UN  M2.0
=   M2.1
S   M2.0
O   M2.1
O
U   "M_Schr_7"          // letzter Schritt der Kette
U   "Bedingung_1"
U   "Bedingung_2"
S   "M_Schr_0"          // Schritt 0
U   "M_Schr_1"
R   "M_Schr_0"
 
usw.

so belassen und einfach im OB100 hinzufügen:

Code:
SET
R M 2.0

ABER:

Dadurch hat doch M2.0 nicht für einen Zyklus den Status 0, wenn im OB1 die FC1 aufgerufen wird, oder sehe ich das falsch?

Anders gefragt: Wie schaffe ich es, dass bei jedem Aufruf der FC1 durch den OB1 der Merker M2.0 für einen Zyklus den Status 1 hat?


PS:
Die einzelnen Schrittmerker werden durch die nachfolgenden Schrittmerker zurückgesetzt. Also Schrittmerker1 setzt Schrittmerker0 zurück, Schrittmerker2 setzt Schrittmerker1 zurück, usw.
 
Zuletzt bearbeitet:
wenn bei jedem aufruf der schrittkette das ausgelöst werden soll,
dann in ob1 folgendes schreiben:

U "Bedingung_3"
FP "Hilfsmerker"
R M 2.0

U "Bedingung_3"
CC FC 1

damit wird einmalig bei jedem aufruf des fc1 der merker 2.0 zurückgesetzt.

mir ist immer noch nicht klar was passiert wenn schritt 5 z.b. aktiv ist und der aufruf erfolgt?
dann wird schritt 0 gesetzt und schritt 5 bleibt auch gesetzt?

...
U "M_Schr_7"
U "Bedingung_1"
U "Bedingung_2"
S "M_Schr_0"
R "M_Schr_1"
R "M_Schr_2"
R "M_Schr_3"
...
R "M_Schr_7"
U "M_Schr_1"
R "M_Schr_0"

könnte da helfen...

gruß,
thomas
 
Zuletzt bearbeitet:
Ok Thomas,

dann könnte ich also im OB1 Folgendes schreiben:

Code:
U "Bedingung_3"
FP "Hilfsmerker"
R M 2.0
 
U "Bedingung_3"
CC FC 1


Über NOTAUS werden alle Schrittmerker zurückgesetzt! Über eine Schaltfläche im Panel wird der Automatikbetrieb aktiviert bzw. deaktiviert. Lt. Kunden sollen nach Deaktivierung des Automatikbetriebs die einzelnen Schritte noch ausgeführt werden bis der Schritt 0 erreicht ist.
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
ich sehe das problem darin wenn während der schritte (z.b. im schritt 5) die "bedingung_3" weg geht.

wenn sie wiederkommt => schritt 0 wird gesetzt
dann bleibt bei dem stück code das ich bisher kenne jeder andere schrittmerker erst mal im letzten zustand erhalten.
deswegen habe ich beim setzen von schritt 0 die anderen alle zurückgesetzt.

welcher merker dein not-aus hat kann ich nirgens erkennen.

gruß,
thomas
 
Puh, ja Thomas du hast Recht - das habe ich nicht bedacht... vielen Dank für den Hinweis!

Abhilfe könnte vielleicht (dein Vorschlag) schaffen:

Code:
UN  M2.0
=   M2.1
S   M2.0
O   M2.1
O
U   "M_Schr_7"          // letzter Schritt der Kette
U   "Bedingung_1"
U   "Bedingung_2"
S   "M_Schr_0"          // Schritt 0
[COLOR=#0000ff]R   "M_Schr_1"[/COLOR]
[COLOR=#0000ff]R   "M_Schr_2"[/COLOR]
[COLOR=blue]R   "M_Schr_3"[/COLOR]
[COLOR=blue]...[/COLOR]
[COLOR=blue]R   "M_Schr_7"[/COLOR]       
U   "M_Schr_1"
R   "M_Schr_0"
 
usw.

Was meinst du, passt das so?
 
Zuletzt bearbeitet:
nach allem was ich bis jetzt von dem code gesehen habe reicht es in dem von mir blau markierten bereich die ganzen schrittmerker zurückzusetzen (ausser schritt 0)

gruß,
thomas
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ja ok Thomas.

NOT-AUS schaut wie folgt aus:

Code:
UN E0.0                    // NotAus
R   "M_Schr_0"        
[COLOR=black]R   "M_Schr_1"[/COLOR]
[COLOR=black]R   "M_Schr_2"[/COLOR]
[COLOR=black]R   "M_Schr_3"[/COLOR]
[COLOR=black]...[/COLOR]
[COLOR=black]R   "M_Schr_7" [/COLOR]
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
mal so nebenbei, ist das mit den bedingten Bausteinaufrufen nicht sowieso
Käse ?
Ich würde außerdem lieber mit einem Reset eine 0 in dein Schrittmerkerbyte oder -wort schreiben, um zu gewährleisten das auch sicher jeder Schritt zurückgesetzt wird.

gruß Thomas
 
Zurück
Oben