Wenn du eine Multiinstanz haben möchtest und dort drin "Merker" brauchst, geht es nur mit statischen Variablen.
Ich benutze das auch gern, wenn ich ein und denselben Baustein auf mehreren Maschinentypen nutzen möchte da mir dann die Merker, die jeder selber vergibt völlig egal sind. Einfach die Quelle rüber und gut ist.
Besonderen Charme hat ein FB auch dann, wenn ich viele Flankenmerker in einer mehrmals verwendeten Funktion brauche. Dann müsste ich nämlich an einen FC viele INOUT hängen.
Schön ist auch, dass ich die Variablen einfach so reinnehmen kann ohne darauf achten zu müssen dass diese nicht irgendwo anders im Programm direkt oder indirekt adressiert werden (was ja bei Merkern der Fall ist).
Es ist so eine Frage- ist es bequemer, den DB zu erstellen oder die vielen Merker zu benutzen?
Wenn ich weiß, dass meine aufrufende Quelle ein FB ist, dann ist der DB allerdings egal- der geht ja in den Instanz-DB des aufrufenden FB's ein.
Man kann nicht einfach so sagen "FB sind gut, FC sind böse"- für simple Berechnungen oder ähnliches nehme ich gerne FC's da man sich da den DB spart.
Man sollte allerdings nicht in den Instanz- DB des FB fassen. Das geht zwar, ist aber böse und gibt Probleme, wenn einer die Schnittstelle des FB ändert (dann verschiebt sich nämlich alles!).