[PROBLEM] FB lässt sich nicht mehrfach aufrufen bzw ..

openminded23

Level-1
Beiträge
49
Reaktionspunkte
2
Zuviel Werbung?
-> Hier kostenlos registrieren
... hat beim erneuten Aufruf die falschen Werte.

Hallo zusammen,
nachdem mir kürzlich so gut geholfen wurde, habe ich hier die nächste Frage:
Ich habe einen FB erstellt, mit dessen Hilfe ich eine bestimmte Position (mit 2 Motoren) anfahre. Rufe ich nun denselben FB ein weiteres Mal auf, um zum Beispiel eine zweite Position anzufahren, so kann ich die erste Position nicht mehr anfahren.

Der FB ist wurde mit Formalparametern programmiert, für jeden FB habe ich einen eigenen DB angelegt. Trotzdem ...
 
die globalen zugriffe in netzwerk 1 und 2 verhindern, dass dein baustein mehrfach aufgerufen werden kann und dabei richtig arbeitet... definiere zwei in-variablen für die x- und y-achse...
 
Nochwas:

Gern gemachter Fehler:

NIE TEMPORÄRE VARIABLEN SETZEN / RÜCKSETZEN !!!

Temp. Variablen können beim nächsten Basuteinaufruf an einer anderen Speicherstelle liegen und einen undefinierten Zustand haben, wenn Sie nicht vor Ihrer ersten Verwendung im Baustein einen Wert zugewiesen bekommen haben. Das gibt schon mal fieße, schlecht zu findene Fehler. Besser im "stat"-Bereich anlegen!

Auch Zeit_Impuls wird verwendet, ohne dass ihm zuvor einen Wert zugewiesen wurde (besser die Zeit als IN-Formalparameter definieren, mit Initialwert, dann kann er auch später individuell bei jedem Aufruf angegeben werden!

Und wie schon geschrieben wurde: die PEW-Zugriffe nicht als absolut-Zugriffe, sondern z.B. als IN-Formalparameter definieren!
 
Zuletzt bearbeitet:
Nochwas:

Gern gemachter Fehler:

NIE TEMPORÄRE VARIABLEN SETZEN / RÜCKSETZEN !!!


Was du meinst ist klar... richtig. Aber setzen Rücksetzen ist kein Problem. Mach das auch manchmal, nur halt am Anfang vom Baustein Initialisieren, also den Variablen die halt Gesetzt Rückgesetzt werden, einmal zu Null schreiben, ober halt einen festen Wert zuweisen!
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Alle Änderungen übernommen.
Immernoch keine Verbesserung.
Problematisch ist es auch, dass ich wenn ich den Baustein ein drittes Mal aufrufe, nur zwischen zwei Plätzen verfahren kann: Jeweils dem, den ich zuerst und den, den ich zuletzt angegeben habe .... :confused::confused:
 
Hab mir die Funktion jetzt nicht angeguckt, aber, beim aufruf vom FB sind auch andere Daten an die Formalparameter angebunden?

Also keine Bits oder Timer oder sonst was doppelt benutzt??


Wieso eigentlich immer FB!! In deinem Falle reicht doch FC...
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hab mir die Funktion jetzt nicht angeguckt, aber, beim aufruf vom FB sind auch andere Daten an die Formalparameter angebunden?

Also keine Bits oder Timer oder sonst was doppelt benutzt??


Wieso eigentlich immer FB!! In deinem Falle reicht doch FC...


Habe den gesamten Baustein auch schon als FC programmiert - gleiches Spiel, gleiche Funktion .... keine Verbesserung.
 
Das ist mir klar...

Meine nur... Ein FB ist halt einfach überflüssig. Aber ok... jeder hat seinen eigenen stil...
 
Zuviel Werbung?
-> Hier kostenlos registrieren
?????

Ne!! Ist immer noch ein FB, nur das du ihn DIEMSAL auch als FB genutzt hast. Jetzt sind doch die STAT-Variablen genutzt...




Änder das doch mal mit dem setzen rücksetzen...
Setze am Anfang vom FC/FB mal alle Temporären zurück...
 
Kann es sein, daß du außen, am FB/FB die gleichen Variablen anträgst. Das geht natürlich auch nicht, da der letzte FC-Aufruf dann für den Wert deiner Variablen verantwortlich ist. Damit würde ich mir erklären, daß beim Einfügen des 2. Aufrufes nur noch die 2. Position angefahren wird.
 
Kann es sein, daß du außen, am FB/FB die gleichen Variablen anträgst. Das geht natürlich auch nicht, da der letzte FC-Aufruf dann für den Wert deiner Variablen verantwortlich ist. Damit würde ich mir erklären, daß beim Einfügen des 2. Aufrufes nur noch die 2. Position angefahren wird.

Schade, wenn es so einfach wäre .....
Leider habe ich außen am FB/FC nicht die gleichen Variablennamen eingetragen.

Habe jetzt gerade nochmals probiert, die Variablen am Anfang der Funktion einmalig zurück zu setzen. Leider nützt das auch nichts. ...
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

kann es sein das immer beide Aufrufe ausgeführt werden?
Falls das so ist wird ja dein Motor von beiden Bausteinen angesteuert und es ist immer nur der zuletzt zugewiesene Wert für die Ausgänge ausschlaggebend.

Grüße...
 
Hallo,

kann es sein das immer beide Aufrufe ausgeführt werden?
Falls das so ist wird ja dein Motor von beiden Bausteinen angesteuert und es ist immer nur der zuletzt zugewiesene Wert für die Ausgänge ausschlaggebend.

Grüße...


??? Klar werden beide aufgerufen... Aber er hat ja unterschiedliche Variablen angebunden sagt er!
 
... ich kann auch keinen wirklich offensichtlichen Fehler in dem Baustein erkennen. Ich würde vielleicht die Merker entsprechend ihrer Funktion benennen. Das macht es für Andere einfacher ...
Vielleicht wäre es auch sinnig, wenn man schon einen FB erstellt, dann mit den SFB 4 , 5 Timern zu arbeiten. So ein Timer, der von extern kommt ist ja auch immer so eine Sache ...

Eine Frage hätte ich aber doch :
Im letzten Netzwerk (#8#) hast du u.A. als Bedingung das der Motor_X und auch der Motor_Y sowohl rechts wie auch links stehen ... Was soll das ?

So, und dann ist mir zum Schluß doch noch etwas aufgefallen ...
Mach aus der IN-Bedingung "ENDE" mal eine IN_OUT. Das könnte es vielleicht bringen ...

Gruß
LL

Ich muß hier doch noch was nachtragen ...
Das mit dem IN_OUT war Quatsch ... ersten meinte ich da ENDE (imd OUT) und zweitens ist das ja, wie ich im Nachhinein gesehen habe schon ein IN_OUT ...
So kann es laufen ...
 
Zuletzt bearbeitet:
Zurück
Oben