Schrittkette macht was sie will

needhelp

Level-1
Beiträge
4
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
habe ein Problem mit einer Ablaufkette (ca. 25 Schritte) die wir für die Schule schreiben müssen.
Ich habe einen "neutralen" FB15 (mit 10 Schritten) programmiert und im FC16 die Ausgänge den Schritten zugewiesen. Wenn ich jetzt den FB15 (> DB15) im OB1 aufrufe und die weiterschaltbedingung für die Schritte 1-10 eingebe funktioniert alles einwandfrei.

Doch wenn ich den FB15 (diesmal > DB16) nochmal im OB1 aufrufe um die weiterschaltbedingung für die Schritte 11-20 eingebe spinnt auf einmal der ganze Ablauf. Schrittkette 1 (DB15) springt von Schritt 1 auf 4, obwohl die weiterschaltbedingung gar nicht gegeben sind.

Ich hoffe mir kann einer weiterhelfen. Danke schonmal
 
Hallo needhelp.

Das hört sich nach einer selbst geschrieben Schrittkette an. Verwendest du in deinem FB15 irgendwelche absoluten Adresse (Mx.x; Tx usw.)? Den bei einem einmaligen Aufruf des FB's funktioniert auch das super, wenn du aber den FB mehrmals aufrufst und du hast absolute Adressen in deinem FB, so kann es schon vorkommen, dass dein FB auf einmal spinnt. Da die Merker und Timer in diesem Fall keine feste Definition mehr haben. Ab um eine genauere Aussage machen zu können, währe es nicht schlecht, wenn es möglich ist dein Programm hier hereinzustellen. Den dann kann man eine genauere Aussage machen.
 
Hello needhelp.

Habe mir mal dein Programm angeschaut. Dabei ist mir folgendes aufgefallen. Du hast in deinem FB15 die Schrittmerker in den Temp Bereich gelegt. Die in diesem Bereich abgelegten Daten behalten aber nur für einen Programmzyklus ihren Zustand. Du musst deine Schrittmerker in den Stat Bereich des FB15 legen um die Zustände der Schrittmerker auch über mehrere Programmzyklen zu speichern. Bei einem Aufruf des FB15 kann es funktioniert habe, da dieser Tempbereich den der OB1 freigibt unter umständen nicht von einem anderen Baustein überschrieben worden ist und somit die Zustände über mehrere Zyklen gespeichert wurden. Es ist aber zu empfehle Zustände die länger als einen Zyklus gespeichert werden sollen in den Start Bereich des FB's zu legen. Für Berrechnung oder Zwischenwert die nur während eines Programmzyklus vorhanden sein sollen kann der Temp Bereich problemlos benutzt werden. Des Weiteren ist mir im FC16 aufgefallen, das du den Ausgänge (Y1..Y4) setzt und rücksetzt und diese als OUT Variable deklariert hast. Wenn du einen Ausgang setzt ist es zu empfehle, diesen als IN/OUT Variable deklariert, da dieser Ausgang ja nicht in jedem Programmzyklus neu beschrieben wird und somit können bei OUT variable unter umständen Zustände enstehen die du nicht berrechnen kannst. Ich hoffe ich konnte dir weiter helfen. Bei fragen einfach melden. Werde dein Programm aber noch genauer anschauen und dir eine korrigerte Version zuschicken.
 
Super, ertmals Danke für die schnelle Hilfe!

Das mit den Schrittmerkern im FB15 habe ich nicht gewusst. In der Schule hat uns das der Lehrer so gezeigt.

Habe die zwei Punkte kurz mal korrigiert und so wies aussieht geht das Programm jetzt :D
Werde morgen mal das ganze Programm mit allen 26 Schritten schreiben.


Eine Frage hätte ich noch:
Was muss ich als Transitionbedingung[SIZE=-1] bei Schitt 10 der 1. Schrittkette (DB15) angeben?

Gruß
[/SIZE]
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
So wie dein FB geschrieben ist, hast du da tatsächlich ein Problem. Immer wenn Schritt 10 seine Transition bekommt, wird ja Schritt 1 wieder aktiviert, das soll ja nicht sein, denke ich, da Kette 2 nun aktiv ist.
Ich würde in diesem Fall den 10. Schritt leer lassen, mit dem 10. Schritt an den 2. Ketten-FB übergeben und fertig. Das heißt, wenn den 1. FB (DB15) fertig ist, bleibt er im Schritt 10 stehen und startet den 2. FB (DB16). Dort geht der Ablauf dann weiter. So hast du auch eine gute kontrolle, wie weit dein Programm ist, Kette 1 muß immer 10 sein, wenn Kette 2 aktiviert ist.
 
Hallo needhelp.

Ich würde es genau wie Ralle machen. Würde aber wenn du alle Schritte deiner gesamten Schrittkette beendet hast (Dein Greiferprogramm einen kompletten Arbeitszyklus beendet hat) alle Schrittkette mal zurücksetzen. Danach kann das Spiel wieder von vorne losgehen. Wenn du noch fragen hast melde die einfach. Ach noch eine Sache. Euch hat wirklich der Lehrer erklärt, das ihr wenn ihr eine Schrittkette in einem FB macht, die Schrittmerker in die Tempoären Variablen abzulegen. Dann muss ich aber sagen, dann soll sich der Lehrer schnell einen anderen Beruf suchen, den er hat von SPS Programmierung keine Ahnung.
 
Werde es morgen mal so probieren! Danke euch zwei!

Ich hatte das mit der Schrittkette so in meinen Unterlagen. Ist schon ne Weile her als wir das in der Schule hatten, weiß also nicht ob das der Lehrer so gesagt hat oder ich das falsch abgeschrieben hab. Naja hauptsache es geht jetzt. Danke nochmals!
 
Zurück
Oben