# Schrittkette mit RS-gliedern



## magmaa (8 April 2007)

Hallo ich habe mir auf papier eine schrittkette für ein programm gezeichnet.
Nun will ich das programm mit RS- gliedern für jeden einzelnen schritt in step7 programieren.
Das problem ist das wenn ein ausgang gesetzt wird und später im programm nochmal auftaucht und nicht gesetzt ist wieder zurückgestzt wird.
Wie kann ich das umgehen?


----------



## volker (8 April 2007)

benutze in den schrittketten verschiedene merker.

bei der zuweisung der ausgänge diese merker benutzen


----------



## eNDe (9 April 2007)

*Schrittkettenprogrammierung*

Hallo magmaa,
bezüglich der Programmierung von Schrittketten gibt es verschiedene Methoden. Zwei dieser Methoden verwenden dazu RS.FF.
Methode 1 verwendet ein Initialisierungs-FF, die andere Methode arbeitet mit einer Wiedereinschaltsperre (WESPE-auch ein RS-FF). Methode 2 halte ich persönlich für die einfachere Art. 
Grundsätzlich sollte man bei der Programmierung von Ablaufsteuerungen mehrere Bausteine verwenden:
1. Die eigenliche Schrittkette - auch als Automatikebene bezeichnet
2. Die Einzelsteuerebene - Hier (und nur hier) werden die Ausgänge bearbeitet. Jeder Ausgang bekommt ein eigenes Netzwerk!
3. Die Betriebsartenebene - Hier (und nur hier) wird die Umschaltung der einzelnen Betriebsarten (Handbetrieb, Automatikbetrieb, Einzelschrittbetrieb usw.) bearbeitet
4. Die Meldeebene - Hier werden alle nur erdenklichen Meldungen (wie aktuelle Betriebsart, Störmeldungen usw.) ausgegeben.
Die konsequente Trennung der Programmteile hat den großen Vorteil, dass man für fast alles fertige Standardschaltungen verwenden kann. Falls du das nicht kennst, will ich dir gerne beim Erkenntnisgewinn helfen, allerdings ausschließlich hier im Forum über PN oder per e-Mail. (Über PN kann man keine Dateien versenden!)
Melde dich also bitte per PN, falls du Interesse hast. Drei Worte zu deinen Vorkenntnissen wären dabei hilfreich.
MfG eNDe


----------



## magmaa (9 April 2007)

Ah danke für deine hilfe, habs jetzt hinbekommen. 
Was mir noch etwas sorgen macht ist das mit dem Richtimpuls wie das genau funktionieren soll mit OB100 das habe ich noch nicht verstanden.

Denn ich habe die schrittkette einmal mit diesem Richtimpuls 


```
UN  M 100.0
=   M 100.1  //Richt[U]impuls[/U]
S   M 100.0
```
 erstellt dieser soll aber nicht richtig funktioneiern warum weiß ich auch nicht genau. 
Und ich hab das programm einmal ohne Richtimpuls erstellt, dass fand ich aber recht umständlich.

Daher würde ich gern wissen wie das richtig mit OB100 geht und warum das so ist.


----------



## volker (9 April 2007)

da der ob100 nur 1 mal im anlauf aufgerufen wird kannst du das ganz einfach so machen.

ob100
set
=m100.0

ob1 (letztes netzwerk)
clr
=m100.0

der m100.0 ist für 1 zyklus high


----------



## magmaa (9 April 2007)

Ah ok danke und warum funktioniert das mit diesem code nicht in einer richtigen SPS nicht


```
UN  M 100.0
=   M 100.1  //Richt[U]impuls[/U]
S   M 100.0
```
 
denn in der step7 simulation funktioniert es?


----------



## volker (10 April 2007)

sollte auch in einer echten cpu laufen. doppelzuweisung? evtl mb100 als taktmerkerbyte in der cpu konfiguriert?


----------



## zotos (10 April 2007)

magmaa schrieb:


> Ah ok danke und warum funktioniert das mit diesem code nicht in einer richtigen SPS nicht
> denn in der step7 simulation funktioniert es?



Bei einer S7 kann man doch definieren welche Merker remanent sind und welche nicht. Kann es sein das die Merker noch im remanenten Bereich liegen?

Versuch mal statt dem M100.x den Breich M200.x


----------



## magmaa (10 April 2007)

Also in der simulation geht es wunderbar versteh nur nicht warum soll ich das umständlich mit OB100 machen soll wenn es auch so


```
UN  M 100.0
=   M 100.1  //Richt[U]impuls[/U]
S   M 100.0
```

einfacher geht?


----------



## zotos (10 April 2007)

magmaa schrieb:


> Also in der simulation geht es wunderbar versteh nur nicht warum soll ich das umständlich mit OB100 machen soll wenn es auch so
> 
> 
> ```
> ...



Sehe ich auch so. 
Geht aber eben nur mit einem nichtremanenten Merker. Läuft es jetzt bei Dir?


----------



## magmaa (10 April 2007)

JA in der simulation geht es, ob es bei einer richtigen cpu geht weiß ich nicht kann ich erste nächste woche testen.


----------



## volker (10 April 2007)

magmaa schrieb:


> Also in der simulation geht es wunderbar versteh nur nicht warum soll ich das umständlich mit OB100 machen soll wenn es auch so
> 
> 
> ```
> ...





zotos schrieb:


> Sehe ich auch so.
> Geht aber eben nur mit einem nichtremanenten Merker. Läuft es jetzt bei Dir?


wieso ist das in einer fc/ob1 einfacher als mit dem ob100?


----------



## Karsten (10 April 2007)

Bei Schrittketten mache ich es immer so, dass ich mit aktuellen und neuen Merkern arbeite.

Sagen wir meine Schrittkette hätte fünf Schritte, dann würde ich z.B. M 0.0 bis M0.4 (neue Merker) bzw. M2.0 bis M2.4 (aktuelle Merker) verwenden.
Beispiel:

```
Schritt_1:
U   M0.0
S   M2.1
R   M2.0
 
Schritt_2:
U   M0.1
S   M2.2
R   M2.1
...
 
L   MW2
T   MW0
```
 
Viele Grüße


----------



## volker (10 April 2007)

kannst du mir mal erklären was das für einen sinn haben soll? 
ausser das du unnötig merker verquast.

und grundsätzlich gilt ja wohl, das man die schrittkette durch eine nicht bestehende freigabe zurücksetzt. denn nicht nur im anlauf (der sowieso so gut wie nie vorkommt) muss die kette zurückgesetzt werden.


----------



## Ralle (10 April 2007)

@volker

Kann ich dir auch sagen , so kann er die Schrittkette vorwärts (vom 1. zum letzen Netzwerk), statt rückwärts (vom letzten zum 1. Netzwerk) programmieren. Erst zum Schluß werden die Daten in die neuen Merker übernommen, und so wird sichergestellt, daß pro SPS-Zyklus max. ein Schritt erfolgen kann.  Wenn man die Schrittkette im letzte Netzwerk beginnt, kann man sich das ganze aber sparen. Ansonsten kann es passieren, daß bei ungünstigen Verhältnissen die gesamte Schrittkette (oder Teile) in einem Rutsch (Zyklus) durchrauscht, ohne daß man mal dazu kommt einen Ausgang zu setzen. Karstens Lösung habe ich aber auch noch nirgends gesehen . Einen Trigger zum Weiterschalten braucht man dann nicht.


----------



## volker (10 April 2007)

ok. soweit habe ich nicht darüber nachgedacht. 

meistens progge ich meine schrittketten so

u e1
u schritt1
s schritt2
u schritt3
r schritt2

das hat zwar den nachteil, das für einen zyklus 2 schritte aktiv sind, stellt aber sicher, dass das gesamte programm das mitbekommt.
die programmierung von hinten nach vorne mag ich nicht sonderlich, da ich das irgendwie unübersichtlich finde.

und ich muss sagen, dass ich mit meiner art noch nie probs hatte.
und bei ketten wo das relevant sein könnte weiss ich das und machs dann aussnahmsweise anders.


----------



## zotos (11 April 2007)

volker schrieb:


> wieso ist das in einer fc/ob1 einfacher als mit dem ob100?



Was einfacher oder übersichtlicher ist liegt ja immer im Auge des Betrachters.



volker schrieb:


> da der ob100 nur 1 mal im anlauf aufgerufen wird kannst du das ganz einfach so machen.
> 
> ob100
> set
> ...



Hier wird der Richtimpuls in zwei verschiedenen OBs erzeugt. Was für jemand wie den Kollegen magmaa wohl verwirrend ist da er den OB100 sonst wohl für nichts benutzt hat.

Die Lösung mit den nicht remanenten Merkern ist kompakt da ein dreizeiler der nur an einer Stelle steht und nicht auf zwei Bausteine verteilt ist. Hat aber die Nachteile das man wissen mus welche Merker nicht remanent sind und das man gleich zwei davon braucht.

Ohne jetzt den Schrittketten Thread (Graph vs. Klassisch) hier weiter leben zu lassen: Ich habe auch schon ewig keine Schrittkette mehr mit Merkern und einen Richtimpuls aufgebaut.


----------



## magmaa (11 April 2007)

Genau besser kann ich es auch nicht sagen. @zotos


----------



## Ralle (11 April 2007)

magmaa schrieb:


> Genau besser kann ich es auch nicht sagen. @zotos



Dann bedank dich doch bei zotos , der steht auf Bedanken :-D.


----------



## zotos (11 April 2007)

Höre ich da den Neid vom User2006, Super-Moderator, der User mit den meisten Beiträgen? Nur weil er mal bei irgend etwas nicht führt ist er gleich neidisch ;o)


----------

