Anfängerfrage zu FB aufruf

mde

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

habe schon lange nichts mehr mit Step7 gemacht und muss mich jetzt wieder damit beschäftigen.
Ich muss in meinem Programm oft die gleiche Funktion aufrufen.
Wenn ein Startsignal ansteht soll ein Ausgang einschalten bis ein paar Endschalter kommen, wenn in einer Zeit X die Endschalter nicht erreicht sind soll ein Fehler kommen. Dieser Fehler darf erst gelöscht werden, wenn er an einem Display quittiert wurde.
Ich habe mir einen FB gebaut der diese Aufgabenstellung bearbeitet, mit folgenden Ein- und Ausgängen
Eingänge: Start, Ini1, Ini2, Ini3, Timer, Zeit

Ausgänge: Out, ErrIni1, ErrIni2, ErrIni3

Jetzt wollte ich den FB in meinem Programm aufrufen und die Ein- und Ausgangsvariablen zuordnen. Ich wollte es so machen das ich z.B. an den Ausgang ErrIni1 eine Bitverknüpfung „Setzen“ einfüge die mein Fehlerbit setzt.

Dabei musste ich feststellen, dass das gar nicht möglich ist weitere Verknüpfungen an Ausgängen anzuhängen.

Meine Frage ist jetzt wie kann ich so was machen ohne noch extra Merker einzusetzen?

Gruß mde
 
Hast du den FB in AWL (dein Baustein wurde gerade in AWL im Editor angezeigt) eingefügt? Du mußt den Baustein in KOP oder FUP einfügen. Außerdem müssen die Out natürlich Bool sein, damit du da eine Bitverknüpfung anfügen kannst.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo mde

Bau doch die Setzbedingung gleich in deinen FB mit ein.
Um dann den ggf. vorhandenen Fehler zurück zu setzen benötigst du dann halt noch eine zusätzliche Eingangsvariable (z.B. RESET)

Gruß Uwe
 
Die Merker könnte man umgehen indem der FB in einem FB ( vgl -> Multiinstanz ) aufgerufen wird. im führenden FB stehen dann die statischen Variablen zur Weiterverarbeitung zur Verfügung.
 
Die Merker könnte man umgehen indem der FB in einem FB ( vgl -> Multiinstanz ) aufgerufen wird. im führenden FB stehen dann die statischen Variablen zur Weiterverarbeitung zur Verfügung.

Hör auf! Er hat doch geschrieben, daß er lange nichts mehr mit Step7 gemacht hat. Bring ihn nicht ganz aus dem Konzept. ;)
 
@ Ralle:

ich habe den FB in KOP eingefügt und die Ausgänge sind BOOL aber ich kann keine weitere Verknüpfung an den Ausgang anhängen. Ich kann nur was an den ENO Pin anhängen.
 
Ich hab es auch nicht geschafft an einen FB/FC an Boolsche Ausgänge eine weitere Logik anzuknüpfen. Ich gehe dann entweder den Umweg über Lokalvariablen, die ich mit dem Augang beschalte und mache die Verknüpfung mit diesen im nächsten Netzwerk.
Die Ausgänge von einem FB könntest du auch direkt aus seinem Instanz DB abgreifen, jedoch ist davon abzuraten, wenn man nicht voll symbolisch programmiert da sich bei der Schnittstellenänderung die Adressen verschieben.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Dann musst Du glaube ich einen Konnektor vrwenden um den Ausgang weiter verwenden zu können, und der muss als TEMP-Variable definiert sein

Zitat aus der SIEMENS Hilfe über KOP:
Symbol

<Operand>
---( # )---


Parameter Datentyp Speicherbereich Beschreibung
<Operand> BOOL E, A, M, *L, D Zugeordnetes Bit
* Ein Operand im Lokaldaten-Stack kann nur verwendet werden, wenn er in der Variablendeklarationstabelle im Bereich TEMP eines Codebausteins (FC, FB, OB) deklariert wurde.
 
@ Ralle:

ich habe den FB in KOP eingefügt und die Ausgänge sind BOOL aber ich kann keine weitere Verknüpfung an den Ausgang anhängen. Ich kann nur was an den ENO Pin anhängen.

Du hast Recht. Ich nehme alles zurück und behaupte das Gegenteil. Das geht tatsächlich nur bei Eingängen. Na ja, ich mache fast alles per AWL und nutze immer Temp zwischengeschaltet oder Merker- und Datenbits.

Möglichkeit:

1. Du definiertst dir Temp-Bool oder Stat-Bool oder Merker oder Datenbits in einem Datenbaustein, die du an den FB hängst.
Mit diesen setzt du deine Merker-, Datenbits

2. Setzen/Rücksetzen gleich in deinem Baustein

PS: Da bin ich ja richtig platt, ich hätte drauf gewettet, daß das geht :cool:
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Du hast Recht. Ich nehme alles zurück und behaupte das Gegenteil. Das geht tatsächlich nur bei Eingängen. Na ja, ich mache fast alles per AWL und nutze immer Temp zwischengeschaltet oder Merker- und Datenbits.

Möglichkeit:

1. Du definiertst dir Temp-Bool oder Stat-Bool oder Merker oder Datenbits in einem Datenbaustein, die du an den FB hängst.
Mit diesen setzt du deine Merker-, Datenbits

2. Setzen/Rücksetzen gleich in deinem Baustein

PS: Da bin ich ja richtig platt, ich hätte drauf gewettet, daß das geht :cool:

Das hatte ich auch gedacht das es einfach geht aber naja...

Ich muss ehrlich sagen deine Möglichkeit 1 habe ich nicht verstanden, liegt aber daran das ich das mit den DBs noch nicht so richtig verstanden hab.

Werde es mal mit Setzen/Rücksetzen im Baustein probieren.
 
Du nimmst einen Merker oder definierst im Tempbereich des Bausteins, in welchem du deinen FB aufrufst eine Variable "Temp_01" als Bool. (Variablenname beliebig). Diese Variable schreibst du an den Out seines FB. Dann NACH dem FB-Aufruf (unbedingt danach, da die Temp-Var erst gültig ist, nachdem der FB ihr den Wert übergeben hat) kanst du in einem neuen Netzwerk schreiben:

U Temp_01
S M10.0

(Ist hier AWL, sollte aber klar sein, sind ja nur 2 Anweisungen. ;)
 
Zurück
Oben