Schrittkette mit RS-gliedern

magmaa

Level-1
Beiträge
349
Reaktionspunkte
27
Zuviel Werbung?
-> Hier kostenlos registrieren
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?
 
benutze in den schrittketten verschiedene merker.

bei der zuweisung der ausgänge diese merker benutzen
 
Zuviel Werbung?
-> Hier kostenlos registrieren
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
 
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

Code:
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.
 
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
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ah ok danke und warum funktioniert das mit diesem code nicht in einer richtigen SPS nicht

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

denn in der step7 simulation funktioniert es?
 
sollte auch in einer echten cpu laufen. doppelzuweisung? evtl mb100 als taktmerkerbyte in der cpu konfiguriert?
 
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
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Also in der simulation geht es wunderbar versteh nur nicht warum soll ich das umständlich mit OB100 machen soll wenn es auch so

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

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

Code:
UN  M 100.0
=   M 100.1  //Richt[U]impuls[/U]
S   M 100.0
einfacher geht?

Sehe ich auch so.
Geht aber eben nur mit einem nichtremanenten Merker. Läuft es jetzt bei Dir?
 
JA in der simulation geht es, ob es bei einer richtigen cpu geht weiß ich nicht kann ich erste nächste woche testen.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Also in der simulation geht es wunderbar versteh nur nicht warum soll ich das umständlich mit OB100 machen soll wenn es auch so

Code:
UN  M 100.0
=   M 100.1  //Richt[U]impuls[/U]
S   M 100.0
einfacher geht?
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?
 
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:
Code:
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
 
kannst du mir mal erklären was das für einen sinn haben soll?:confused:
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.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
@volker

Kann ich dir auch sagen :ROFLMAO:, 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. :cool:
 
Zuletzt bearbeitet:
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. :)
 
wieso ist das in einer fc/ob1 einfacher als mit dem ob100?

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

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

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.
 
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)
 
Zurück
Oben