Funktion mehrere male benutzten

Zuviel Werbung?
-> Hier kostenlos registrieren
so...

also ich habe meine Netzwerke aus dem FC1 in einen FB1 kopiert.
Jedes mal wenn ich den FB1 jetzt in einem neuen FB aufrufe muss ich diesen ja mit einem neuen DB deklarieren. wird das nicht auch zu unübersichtlich?

EDIT::

So
füge jetzt mal code mit ein... kann es sein das mein RM_AUF und RM_ZU (L0.1 usw) schuld sind an der misere?

FB 10 ruft 2x FB1 auf
 

Anhänge

  • FB10.pdf
    5,6 KB · Aufrufe: 10
  • FB1.pdf
    9 KB · Aufrufe: 10
Zuletzt bearbeitet:
Für eine richtige Multiinstanz sind noch 2 Schritte nötig.

1: Fehlerkorrektur

Du darfst in einem mehrfach benutzten ("bibliotheksfähigen") Baustein KEINE Zugriffe auf globale Variablen machen.
Im FB1 benutzt Du die globalen Timer.
Möglichkeit 1: Du deklarierst einen IEC Timer (z.B. SFB4 "TON") im STAT-Bereich des FB (bessere Variante)
Möglichkeit 2: Du legst eine Variable vom Typ "Timer" an die IN_OUT Schnittstelle. Die kannst Du dann lokal verwenden.

2: Der Aufruf des FB1 geht etwas anders. Du deklarierst im STAT-Bereich des FB10 den FB1. Namen vergeben und bei Datentyp FB1 reinschreiben
Mehrere Male so machen...
Beim Aufruf des FB10 wird dann ein "großer" IDB vergeben.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
habe jetzt einfach mal ne variable in den bereich in_out gesetzt Timer1 Datentyp Time... allerdings lässt sich mein timer nicht umbennen zu dieser variable da er mit typconst fehler hinschreibt :(
 
habe jetzt einfach mal ne variable in den bereich in_out gesetzt Timer1 Datentyp Time... allerdings lässt sich mein timer nicht umbennen zu dieser variable da er mit typconst fehler hinschreibt :(


Hallo!

Also wenn du vor hast einen Timer in einem Multiinstanzfähigen Baustein an der schnittstelle nach außen zu führen muss das an der IN dekleration geschehen!Da gibts den Datentyp "Timer" damit kannst du dann im Baustein einen S5Timer belegen!Aber bässer finde ich einen IEC Timer in den Statischen des Bausteins und wenn du die Zeit von außen verändern willst dann nur diese über die IN Deklaration übergebn im Format "Time"
Mir gefällt es nich an einem Standart bzw. Multiinstanz Baustein S5Timer anzugeben!


Mfg
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Für eine richtige Multiinstanz sind noch 2 Schritte nötig.

1: Fehlerkorrektur

Du darfst in einem mehrfach benutzten ("bibliotheksfähigen") Baustein KEINE Zugriffe auf globale Variablen machen.
Im FB1 benutzt Du die globalen Timer.
Möglichkeit 1: Du deklarierst einen IEC Timer (z.B. SFB4 "TON") im STAT-Bereich des FB (bessere Variante)
Möglichkeit 2: Du legst eine Variable vom Typ "Timer" an die IN_OUT Schnittstelle. Die kannst Du dann lokal verwenden.

2: Der Aufruf des FB1 geht etwas anders. Du deklarierst im STAT-Bereich des FB10 den FB1. Namen vergeben und bei Datentyp FB1 reinschreiben
Mehrere Male so machen...
Beim Aufruf des FB10 wird dann ein "großer" IDB vergeben.


Datentyp Timer kann nicht an der IN_OUT Schnittstelle angegeben werden!

Mfg
 
Hallo!
!Aber bässer finde ich einen IEC Timer in den Statischen des Bausteins und wenn du die Zeit von außen verändern willst dann nur diese über die IN Deklaration übergebn im Format "Time"
Mir gefällt es nich an einem Standart bzw. Multiinstanz Baustein S5Timer anzugeben!


Mfg

wie muss ich das denn machen?? Wenn ich im stat den sfb4 angebe??
den baustein sfb 4 anstelle meiner timer einsetzen und dann deklarieren mit meinem in? an q kann ich keine logik verschalten.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
wie muss ich das denn machen?? Wenn ich im stat den sfb4 angebe??
den baustein sfb 4 anstelle meiner timer einsetzen und dann deklarieren mit meinem in? an q kann ich keine logik verschalten.


Also du kannst in den Stat des FB1 in deinem Fall statt den S5Timern die IEC verwendet!Dazu im FB1 den benötigten IEC Timer in den STAT Variablen angeben!Alle aufrufbaren Bausteine die in den STAT angegben werden findest du dann in der Schnellauswahl unter "Multiinstanzen"

Mfg
 
Zuerst deklarieren.

Dann im Programmteil eine Leerbox einfügen (KOP/FUP). Dort den Namen des deklarierten Timers einfügen. Danach erscheint der Timerbaustein.
Achtung! Stolperfalle für "Anfänger": Wenn an einem TON der Sollwert 0s beträgt, wird der Ausgang des Timers niemals 1.
 
So jetzt funktioniert es... weiß nicht ob das jetzt so ist wie ihr mir beschrieben habt aber erstmal funktioniert es...

Wenn ich an meinem FB10 diese T1 - Tx (datentyp Timer) nicht hinschreibe, funktioniert das ganze iwie nicht... ist das denn richtig das ich die so beschalte?
 

Anhänge

  • FB1.pdf
    11 KB · Aufrufe: 15
  • FB10.pdf
    6,8 KB · Aufrufe: 6
Zuviel Werbung?
-> Hier kostenlos registrieren
So jetzt funktioniert es... weiß nicht ob das jetzt so ist wie ihr mir beschrieben habt aber erstmal funktioniert es...

Wenn ich an meinem FB10 diese T1 - Tx (datentyp Timer) nicht hinschreibe, funktioniert das ganze iwie nicht... ist das denn richtig das ich die so beschalte?
Ja so funktioniert es!Du musst aber diese Globalen Timer immer angeben!
Du hast jetzt die Variante 1 ausgeführt!Nicht die Variante wo gar kein Timer mehr nach außen geführt werden muss (Verwendung von IEC Timern)!

Aber wenn es dir egal ist das du für solche Bausteine die S7 Timer verwendest kannst es so lassen!
Mfg
 
Für mich sind das sowieso ganz pauschal mal viiiiieeeeel zu viele Timer für die Funktion.
Für meine Begriffe brauchst du maximal 2 Timer ... das ganze verteil auf 4, höchstens 5 Netzwerke.
Wenn du mehr brauchst, dann denkst imho noch zu kompliziert ...

Mfg
Manuel
 
Was soll eigentlich dein Baustein genau Steuern?Kannst mal eine Kurze Funktionbeschreibung bzw. Ablaufbeschreibung machen?

Mfg
 
Das soll eine Ansteuerungs-Rückmeldevergleich sein... selbst gebastelt...

Automatikwert vom PLS kommt rein in einer gewissen zeit MUSS die AUF-Meldung erscheinen. Wenn nicht gibt der Baustein eine Störung raus.
Beim abschalten (N-Flanke) das gleich nur andersherum. es MUSS in einer gewissen Zeit die ZU-Rückmeldung kommen das der Baustein nicht in Störung geht.

Außerdem dürfen niemals AUF und ZU oder AUF-NICHT und ZU-NICHT anstehen.
 
Hab deinen FB 1 mal etwas verändert!Würde der nicht auch so funktionieren?
Mfg


1. ja ich denke noch zu kompliziert... wie gesagt... nur S5 Ausbildungswissen... aber wird schon noch...

2. @SCM. Wenn ich so drüberfliege müsste das auch funktionieren. :)


EDIT:::::

ÄHHH...
Weiß nicht ob das jetzt an PLC_Sim liegt oder es wirklich so sein wird... und zwar wenn ich in deinem Netzwerk 3 #Automatik setze, wird der in Netzwerk 4 über #N_STOER übernommen.
ALLDERDINGS fängt die Zeit nicht an abzulaufen da R_RM_AUF oder ZU erst in Netzwerk 5 und/oder 6 zurückgesetzt werden.
Heißt es steht zu dem Zeitpunkt an dem ich am Eingang des Timer1 eine 1 anstehen habe AUCH NOCH eine 1 am RÜCKSETZEINGANG...
und soviel ich aus der Hilfe verstanden habe, muss erst der Rücksetzeingang wech sein und DANN erst darf eine 1 am Eingang anstehen. Sonst fängt er nie an zu "timen" :)

EDIT2::::

Habe jetzt einfach versucht das Netzwerk mit Timer1 nach ganz unten zu verscheiben... siehe da, jetzt funktionierts :) ... Super Danke!!! @SCM

Eine Frage an ALLE...
ist ein Programmierung mit Multiinstanzen sehr Zyklusraubend?
Was wäre besser... jeder FB nen eigenen DB?
Bei meinem Prog. wird das egal sein... nur so zum Allgemeinwissen ;)
 
Zuletzt bearbeitet:
1. ja ich denke noch zu kompliziert... wie gesagt... nur S5 Ausbildungswissen... aber wird schon noch...

2. @SCM. Wenn ich so drüberfliege müsste das auch funktionieren. :)


EDIT:::::

ÄHHH...
Weiß nicht ob das jetzt an PLC_Sim liegt oder es wirklich so sein wird... und zwar wenn ich in deinem Netzwerk 3 #Automatik setze, wird der in Netzwerk 4 über #N_STOER übernommen.
ALLDERDINGS fängt die Zeit nicht an abzulaufen da R_RM_AUF oder ZU erst in Netzwerk 5 und/oder 6 zurückgesetzt werden.
Heißt es steht zu dem Zeitpunkt an dem ich am Eingang des Timer1 eine 1 anstehen habe AUCH NOCH eine 1 am RÜCKSETZEINGANG...
und soviel ich aus der Hilfe verstanden habe, muss erst der Rücksetzeingang wech sein und DANN erst darf eine 1 am Eingang anstehen. Sonst fängt er nie an zu "timen" :)

EDIT2::::

Habe jetzt einfach versucht das Netzwerk mit Timer1 nach ganz unten zu verscheiben... siehe da, jetzt funktionierts :) ... Super Danke!!! @SCM

Eine Frage an ALLE...
ist ein Programmierung mit Multiinstanzen sehr Zyklusraubend?
Was wäre besser... jeder FB nen eigenen DB?
Bei meinem Prog. wird das egal sein... nur so zum Allgemeinwissen ;)


Also ich hab nur dein Grundsätzlichen FB1 verändert!An den NW hab ich nichts verschoben!Wenn dann müsste der fehler bei edit 1 auch schon vorher gewesen sein!:cool:
Aber wenns jetzt ja funktioniert is ja gut und du hast 3 Timer gespart! ;)
Also wir machen in der Firma sehr sehr viel mit Multiinstanzen und imho ist es besser als alle fb mit db aufruf zu machen!
Also von der Zykluszeit wirst es nicht wirklich kennen bzw ist der Multiinstanz aufruf schneller weil weniger db aufgteschlagen werden müssen!

Mfg Mario
 
Zuletzt bearbeitet:
Zurück
Oben