Probleme mit FB

Regeldas

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

ich habe ein kleines Problem was ich hier gern mal schildern würde und vielleicht weiss ja einer Rat. Was aber schön wäre ist, dass man evtl. Antworten so schreibt, das ich sie verstehe den ich bin noch keine Profi in Sachen SPS.
Also mein Problem:
Zur Zeit programmiere ich ein Hochregallager von Fischer-Technik mit einer 314C-2DP und Step7 5.3
Nun will ich vom OB in einen FB1 springen damit dort mein Unterprogramm ausgeführt wird. Das klappt ja auch alles super, ich habe im FB1 #Variablen deklariert und diese werden dann auch im OB auf dem Baustein angezeigt der FB1 aufruft (FUP-Ansicht). Jetzt verteile ich die symbolischen Namen der Ein und Ausgänge an den FB1 im OB. So wenn ich jetzt das Programm starte funktioniert es einwandfrei. Wenn ich aber jetzt im selben OB einen anderen FB einfüge der die selben symbolischen Adressen verwendet wie der erste FB, kommt es zu Problemen. Wenn ich den zweiten durch verschiedene Bedingungen auswähle und dann durch andere Bedingungen wieder den ersten auswähle(anwähle) funktionieren die Ausgänge nicht mehr sie werden zwar im ersten angesprochen aber werden anscheinend im zweiten FB blockiert. Meine Frage ist also, wie kann ich denn FB so zurücknehmen (reseten) das ich alle Ausgänge wieder benutzen kann und von FB zu FB springen kann ohne Probleme mit gleichen Adresszuweisungen bei unterschiedlichen FB´s.

So ich hoffe das hat jemand verstanden und kann mir helfen. Danke:confused:
 
Zuletzt bearbeitet:
Wo liegen deine Bedingen für die Unterschiedlichen Aufrufe ?? Hast du 2 unterschiedliche Instanz DB´s gewählt ??

Dies kannst du nur erreichen wenn du entweder eine Bedingung schaffst mit der du nur einen Aufruf zulässt, sprich den anderen Aufruf überspringen, oder einfacher EN beschaltest !!!!
 
Ja ich habe einmal DB1 und DB2 für FB1 und FB2. Es kann aber auch sein wie du schon sagtest ,dass die beiden in einem Zyklus aufgerufen werden. Bedingungen für den ersten FB und für den zweiten ist ein Zahlenvergleich der je na FB unterschiedlich ausfällt und dadurch zwischen beiden unterscheidet, dass heisst wenn sich die Zahl ändert(mit ein paar schaltern verundet) springt er von einem FB in den nächsten und ich weiss nicht ob das so richtig ist???
Wie kann man das ggf. mit dem Zyklus ändern. Danke
 
Das mit dem Zyklus ändern kannst du nicht !! Das ist das grundlegende arbeitsprinzip einer SPS. Anweisungen werden von oben nach unten abgearbeitet.

Ob beide gleichzeitig aufgerufen werden siehst du wenn du mit beiden FB´s Online gehts !! Läuft die run leiste unten wird der FB gerade bearbeitet. Steht sie, dann wird er nicht bearbeitet.

Ansonsten kannst du es mal so versuchen:

U "Bedingung1"
UN "Bedingung2"
SPB M001
SPA ENDE
U "Bedingung2"
UN "Bedingung1"
SBP M002
SPA ENDE

M001: Call FB1, DB1
SPA ENDE
M002: Call FB2, DB2
ENDE: Nop 0


Nicht die schönste Lösung aber die beiden FBS´s werden auf keinen fall gleichzeitig bearbeitet.
 
Zurück
Oben