Step 5 Alle Merker vor Ablauf des Programmes zurücksetzen

sebihees

Level-1
Beiträge
4
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen,

im Rahmen meiner Projektarbeit für den staatlich geprüften Elektrotechniker bin ich im Bereich der SPS auf ein kleines Problem gestossen.

Ich programmiere eine Steuerung für einen Holzautomaten. Das Programm sollte ich aufgrund der Übersichtlichkeit in mehrere Bausteine packen.

Beispiel:

U E0.0
SPB PB1

Solange E0.0 gedrückt ist springt das Programm in den PB1 und arbeitet dort vorhandene Programmierung ab. Zum Beispiel wird ein Motor gestartet, der anläuft und durch einen Endschalter programmtechnisch abgeschaltet werden soll. Vor Berührung des Endschalters wird aber der Taster losgelassen und das Programm springt nicht mehr in den PB1 und der Motor wird nach Berührung des Endschalters somit auch nicht abgeschaltet.

Ich habe dafür einen Merker genutzt, der mit z.B. dem Motor zusammenhängt, so das er auf jeden Fall noch einen Zyklus in den PB1 springt.

Beispiel:

O E0.0
O M1.0
SPB PB1

Es soll aber wohl auch möglich sein zu Beginn jedes Zykluses alle Merker zu löschen. Und dann erst den Zyklus ablaufen zu lassen.

Wie lautet dieser Befehl? Habe das selbst in der Fachlitaratur nicht gefunden, mein Dozent sprach aber davon das es so etwas gäbe ist aber nicht greifbar!

Danke für eure Hilfe!
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi,
also das bedingte Bearbeiten des PB durch den E0.0 ist schon
ziemlich ungewöhhnlich und bisweilen auch gefährlich wie du
ja schon bemerkt hast.
Man sollte schon die PB's zyklisch im OB1 aufrufen und dann Bedingungen
innerhalb des jeweiligen PB einbringen.
Was macht es für einen Sinn den PB bedingt laufen zu lassen?
Gruß
Move
 
So z.B. könnte das Abschalten funktionieren, ist aber durch den Rücken in die Brust!
O E 0.0
O M 1.0
SPB PB1 --> PB1
un Endschalter
= A Motor (motor läuft solange der Endschalter nicht kommt)
U Endschalter (mit steigender Flanke des Endschalters wird der Hilfsmerker gelöscht)
UN FL-Merker
R M 1.0
S FL-Merker
un Enschalter
R FL-Merker

Merker rücksetzen solltest du in den Anlauf OBs OB20/21/22 wie z.B. U M x.x oder L KH0
R M x.x T MW x

Hoffe es hilft weiter ;)
 
Zuviel Werbung?
-> Hier kostenlos registrieren
:confused: Also ein Programm in mehrere Bausteine zu packen macht absolut sinn, nur nicht so!

Also ich kenne das auch, z.B. werden alle Timer in einem Bustein bearbeitet, Flanken in einem, Ausgänge (am besten erst am Zyklusende aufgerufen) in einem ....
 
Hi,
also das bedingte Bearbeiten des PB durch den E0.0 ist schon
ziemlich ungewöhhnlich und bisweilen auch gefährlich wie du
ja schon bemerkt hast.
Man sollte schon die PB's zyklisch im OB1 aufrufen und dann Bedingungen
innerhalb des jeweiligen PB einbringen.
Was macht es für einen Sinn den PB bedingt laufen zu lassen?
Gruß
Move

Verkürzte Laufzeiten! Weil nur der Programmteil durchlaufen wird, der notwendig ist!
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich würde das prinzipiell auch nicht so machen, aber der Dozent wollte es gerne so.

Nur die Frage ist halt, wie ich alle Merker zurücksetze.

Würde es dann so gehen:

Im OB 1 am Anfang:

L KB 0
T MW0
T MW1
T MW2
...

???
 
Zuletzt bearbeitet:
Hi,

naja dann sag deinem Dozenten man, dass das ganze etwas weltfremd ist.
So programmiert man nun mal nicht?
Was sparst du denn effektiv an Laufzeit und was bringt es und wer merkt das
schon.
Dein Motorschütz braucht ja ein vielfaches deiner SPS-Laufzeit um zu schalten sodass
die SPS-Laufzeit hier kaum ins Gewicht fällt.
Außerdem hast du hier nichts zeitkritisches was schalten muss.
Und wenn es um Sicherheit geht muss du dies eh hardwaretechnisch lösen, außer
du hast eine F-Steuerung, aber dann würde der TÜV-Beamte bei der Programmierung aber
auch einen Schreikrampf kriegen....vermute ich mal.
Also etwas praxisnah denken und nicht zu sehr in die Theorie versinken
Gruß
Move
 
Merker rücksetzen macht man in einem OB20/21/22 aber eigentlich nicht im OB1. Dann merkt der ja nur max. 1 Zyklus! Dann ist das nur noch ein Schmiermerker.
Typisch teilt mach die Merker in Festmerker 0.0 bis 199.7 und Schmiermerker 200.0 bis 255.7 (kann aber auch jeder selber festlegen).

Das Löschen von Schmiermerkern (die kann jeder Baustein verwenden wie er gerade lust hat) mach eigentlich nur in Alarm OBs Sinn.
Festmerker sollten in einem Anlauf OB gelöscht bzw. vorbesetzt werden.

Das Löschen selber sollte man in einer kleinen Schleife erledigen.

Beispiel lösche Merker 0.0 bis 199.7
:
:
Weiter: Nop0
L KF0
T MW200
L KF200
>=F
Spb =ENDE
L KH0000
B MW200
T MW0
L MW200
LKF2
+F
T MW200
SPA Weiter
ENDE: Nop0
BE


Tipp: Lade KB und transferiere in Wort ist nicht gut. KB ist byte und Wort ist 2xByte ! :D
 
Irgendwie ist da was falsch gelaufen. Mein Kommentar bezog sich auf einen früheren Beitrag vom TE.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
OK Verziehen! Ich habe zwar seit 15 Jahren keine S5 mehr projektiert aber das bisschen Code liegt noch im Rückenmark. :grin: noch was zur Wiedergutmachung:

S5 sollte man (Ich sage es seeeehr ungern) nicht mehr verwenden. Das ist wie wenn man einen 95 jährigen, bei Olympia, für den 100 Meterlauf anmeldet!

Und so wie vom Lehrer verlangt sollte man schon gar keine neue SPS vergewaltigen. Eine SPS hat auch eine Seele!:cool:
 
OK Verziehen! Ich habe zwar seit 15 Jahren keine S5 mehr projektiert aber das bisschen Code liegt noch im Rückenmark. :grin: noch was zur Wiedergutmachung:
S5 sollte man (Ich sage es seeeehr ungern) nicht mehr verwenden. Das ist wie wenn man einen 95 jährigen, bei Olympia, für den 100 Meterlauf anmeldet!
Und so wie vom Lehrer verlangt sollte man schon gar keine neue SPS vergewaltigen. Eine SPS hat auch eine Seele!:cool:

Und so wie vom Lehrer verlangt sollte man schon gar keine neue SPS vergewaltigen. Eine SPS hat auch eine Seele!:cool -->richtig

S5 sollte man (Ich sage es seeeehr ungern) nicht mehr verwenden. --> höre ich nicht gern, zu Lernzwecken warum nicht ? (Meine Einschätzung ist aber nicht so ganz hoch zu bewerten, ist halt eine Liebe aus der Jugendzeit)
 
Hallo s-u-h
Deine schleife funktioniert nicht,
du löscht Deine Zählvariable am Anfang immer mit l Kf 0.
Wenn du den Progtrammteil im OB21/22 aufruft geht die Steuerung NIE in Run,
stoppt auch nicht weil die Zykluszeitüberwachung noch nicht aktiv ist.
Ist dann ein wenig Disko ROT und GRÜNE LED an der Steuerung sind gleichzeit an.

gruss Micha.

Einer aus der "alten" S5 Zeit.....
 
Zuviel Werbung?
-> Hier kostenlos registrieren
OK Verziehen! Ich habe zwar seit 15 Jahren keine S5 mehr projektiert aber das bisschen Code liegt noch im Rückenmark. :grin: noch was zur Wiedergutmachung:

S5 sollte man (Ich sage es seeeehr ungern) nicht mehr verwenden. Das ist wie wenn man einen 95 jährigen, bei Olympia, für den 100 Meterlauf anmeldet!

Und so wie vom Lehrer verlangt sollte man schon gar keine neue SPS vergewaltigen. Eine SPS hat auch eine Seele!:cool:

Also diese Aussage von dir ist echt Klasse.
Hätte ich nicht besser formulieren können, wenn ich davon ausginge, dass programmieren nur mit neuen SPSen geht.
Es ist völlig egal, wie die Steuerung heißt und wie die aussieht.
Wichtig ist, dass man die Logik verstanden hat nach der Schule.
Also ich habe erst jetzt wieder eine 95U beim Nachbarn für Heizung und Solar eingebaut und neu programmiert, da die neuen Komponenten einfach zu teuer sind.
Aber darf ich das denn noch, wenn der Kollege in einem anderen Thread schreibt wegen Haftung oder so? :p
Ich habe es gemacht und es funktioniert, dann ist gut so.


bike
 
Zurück
Oben