Step 7 FC mit Merker oder FB

m4xxy

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

Ich bin noch ziemlich neu in der SPS Programmierung.
Um ein besseres Verständnis zu bekommen habe ich mir ein Lehrbuch besorgt in dem unter anderem auch einige Programmierbeispiele zu finden sind.
Darin befindet sich auch ein Beispiel, in dem es darum geht, das mehrere Behälter entleert werden können und diese anschließend immer in der selben Reihenfolge wie sie auch geleert wurden, wieder befüllt werden.
Im Buch wird beschrieben das hierzu ein Funktions-Baustein verwendet werden soll, da hier Variablen als Hilfsspeicher verwendet werden müssen.
Andererseits wäre es doch genau so gut möglich einen FC zu verwenden und dabei Merker als Hilfsspeicher zu nutzen.

Meine Frage lautet nun soll man denn jetzt einen Funktions-Baustein verwenden, oder wäre eine Funktion (FC) mit Hilfe von Merkern genau so in Ordnung?
Wo genau liegen die Vor- bzw. Nachteile dieser beiden Varianten?
Gibt es eine Regel wann nun ein FC oder ein FB verwendet werden muss?

Meine Programmierversuche mache ich im Simatic Manager auf einer 300-Station.

Würde mich freuen wenn sich jemand die Zeit nehmen würde meine Frage, die für erfahrene Programmierer vielleicht ziemlich trivial klingen muss, zu beantworten. :)
 
Auf die Frage gibt es keine klare Antwort. Es gibt Mittel und Wege auch mit einem FC das gleiche zu erreichen wie mit einem FB, nur ist das viel Aufwendiger.

Die Frage die du dir stellen solltest ist: "Will oder muss ich den Baustein mehrmals aufrufen und muss er seine Aufgaben dabei Zyklusübergreifend erledigen."

Natürlich kannst du einen FC mit Merkern benutzen, solange du ihn nur einmalig aufrufst, denn bei jedem weiteren Aufruf würde er dann mit den dort geänderten Eingangsbedingungen die Speicher (Merker) neu beschreiben, was in den anderen Aufrufen dann zu anderen Ergebnissen führt, insofern er seine Aufgabe über mehrere Zyklen erledigen muss.

Geht es um eine einmalige Sache, die in einem einzigen Zyklus abgeschlossen ist und keine Speicher im Baustein (Merker) benötigen, kann man den auch mehrmals aufrufen.
Bei Sachen die Zyklusübergreifend und mehrmals unabhängig voneinander erledigt werden müssen, also Speicher benöigen, sollte ein FB verwendet werden.
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Bisher sind viele meiner Funktionen (Ventile z.B.) in FC umgesetzt. Für speichernde Ereignisse, Laufzeit, etc. gibt es ein Datenwort und ein paar Bits als INOUT.
Das funktioniert schon seit Jahren sehr gut. Im Zuge der Umstellung auf TIA-Portal bin ich gerade dabei, diese Funktionen in FB einzupassen.
Vorteil: Ich kann mir die "Hilfwdatenworte" sparen, die werden Static im FB. Außerdem verwenden wir im Moment noch das Bitmeldeverfahren, bei Umstieg auf Programm-Alarm im Baustein, wäre dann ohnehin FB die bessere Variante. Außerdem kann ich den Funktionsnahmen wegen der Deklaration im Static-Bereich des Aufrufenden FB direkt mit der Ventilbezeichnung versehen, wenn ich das will.
Nachteil: Jeder neue FB-Aufruf muß im aufrufenden FB deklariert werden (so man keine auf "Vorrat" anlegt) und führt so unweigerlich zu einer Neuinitialisierung des IDB beim Laden in die SPS.
Bei meinen Anlagen ist das nicht weiter schlimm, aber es gibt hier auch Kollegen, bei denen das aus verschiedenen Gründen nicht in Frage kommt.
 
Zurück
Oben