Mehrfacher Aufruf eines FC´s

jamalau

Level-1
Beiträge
31
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
bin am verzweifeln.

Habe einen FC programmiert welcher mit deiner Taste VKE 1 mit einer voreingestellte Zeit liefert.
Also nichts anderes als eine Tastbare Abschaltverzögerung, welche ich mit der selben Taste auch vorzeitig unterbrechen kann.
Ist so eigendlich kein Problem, für sich alleine klappt das auch, mit Aufruf call FCx kann ich Problemlos den Ausgang Tastend ein und ausschalten, oder er schaltet sich ebend nach voreingstellter Zeit selber ab.
Wenn ich nun aber den FC ein zweites mal aufrufe, überschreiben sich irgendwelche daten, blos ich weiss nicht wo. Die Eingangsparameter sind definitiv unterschiedlich, und im FC selber habe ich IN OUT und TEMP Variabelen verwendet.

Der Aufruf geschieht so:
OB1
Call FC 100

FC100
Netzwerk1

Call FCx
Taste1=E0.0
Zeitglied1= T0
Zeit für Zeitglied= S5T#5s
Out= a0.0

Netzwerk2
Call FCx
Taste1=E0.1
Zeitglied1= T1
Zeit für Zeitglied= S5T#5s
Out= a0.1

Also wenn ich nur Netzwerk 1 nehme alles ok, bei beiden fangen die Ausgäng an zu flattern.

Was mach ich da falsch ???
 
Hats du im FC absolut einen Merker adressiert ?

TEMP variable gehen VERLOREN!

Wenn du was für den nächsten Aufruf merken willst, muss das ein zusätzlicher INOUT Parameter sein !
 
Moin,moin,

du hast ja einen Timer zur Verzögerung genommen und dieser wird Zyklisch abgefragt, wenn dieser jetzt mit zwei Zeiten aus zwei FC´s angenommen werden soll weiß die CPU nicht welche Zeit aktuell ist und die Ausgänge Flattern im Zyklustakt der CPU.

Du musst bei der Benutzung von Zeiten immer einen jeweiligen Timer benutzen oder die einzelnen FC´s nacheinander aufrufen nicht gleichzeitig.
 
Moin,moin,

du hast ja einen Timer zur Verzögerung genommen und dieser wird Zyklisch abgefragt, wenn dieser jetzt mit zwei Zeiten aus zwei FC´s angenommen werden soll weiß die CPU nicht welche Zeit aktuell ist und die Ausgänge Flattern im Zyklustakt der CPU.

Du musst bei der Benutzung von Zeiten immer einen jeweiligen Timer benutzen oder die einzelnen FC´s nacheinander aufrufen nicht gleichzeitig.

Das ist der größte Mist, den ich hier seit langem gelesen habe!

6, setzen ! :( :( :(
 
@ug

gröl, ug du alter st...

Warte auch schon auf den FC, denke auch spontan an Merker oder temp-var.
 
Ralle schrieb:
Warte auch schon auf den FC, denke auch spontan an Merker oder temp-var.
Eigentlich hat er die Frage in seinem ersten Beitrag schon beantwortet: "Die Eingangsparameter sind definitiv unterschiedlich, und im FC selber habe ich IN OUT und TEMP Variabelen verwendet."

Gruß Andre
 
Zuviel Werbung?
-> Hier kostenlos registrieren
So, da ist er:


Netzwerk1
U #Tast1
FP #TEMP0
UN #Out1
L #S5Zeit
SA #Zeit1
U(
U #Tast1
FP #TEMP1
U #Out1
O #Out2
)
R #Zeit1
NOP 0
NOP 0
U #Zeit1
= #Out1

Netzwerk2
Netzwerk2
U #Tast2
FP #Temp00
UN #Out2
L #S5Zeit
SA #Zeit2
U(
U #Tast2
FP #Temp11
U #Out2
O #Out1
)
R #Zeit2
NOP 0
NOP 0
U #Zeit2
= #Out2

Wobei ich die Variablen so verteilt habe:

#Tast1 = IN
#Temp0 = Temp
#Temp1 = Temp
#Out1 = Out
#Out2 = Out
#Zeit1 = Timer
#S5Zeit = S5Time

für Netzwerk 2 ist es genau so verteilt !

Für den nächsten Aufruf will ich mir nichts merken, es werden absolut andere Parameter angetragen !!!
 
Zuletzt bearbeitet:
temp0

soviel ich aus erfahrung sagen kann:

nimm den tmep0 nicht als temporär! damit gibts probleme, wenn ihn als FP nimmst.

bei nächsten zyklus ist der wert von temp0 ja weg!

nimm hier einen merker oder so, vielleicht einen extern als IN deklarieren..
 
Hallo, ich habe jetzt alle TEMP Variablen als in_out deklriert, und nun klappt es.
Nun habe ich aber das Problem jedes mal 4 Merker an den FC zu schreiben.
Das sind dann ja bei 10 aufrufen 40 Merker, geht das nicht anders ?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
DBs

ich nehm für solche sachen immer meinen "arbeits_DB" DB60...
darin kann ich schreiben und löschen was und wann ich grade will...

aber vielleicht kannst du das prog ja auch etwas verändern...
 
Würde ich ja gerne aber wie kann ich Temp Variablen nutzen, oder evtl so einen Arbeits DB, oder auch irgendwas anders ?
 
Hab ich mal probiert, habe die Temps in die stats kopiert, aber irgendwie klappte das auch nicht. Ich denke man muss dann auch für jeden Aufruf einen eigenen DB generieren oder?
Werde es aber noch einmal versuchen hatte vorhin zu wenig Zeit, kann auch ein Fehler von mir gewesen sein
 
Super, war so richtig, schreib einen FB mit stat. Variablen, und schon klappts.
Muss wohl vorhin einen Fehler gemacht haben.
Einzger Wermutstropfen sind die vielen DB´s, kann ich da noch was machen?
 
Hallo

Es ist richtig du mußt natürlich stat. Variablen anlegen.
Damit du nicht soviel DB verbrauchts mußt du einen
Multiinstanz DB anlegen.

Also du mußt einen neuen FB anlegen zb Fb100
in diesem ruft du dann deine FB`s auf
Rechts Klicken
Änder in Multiinstand-Aufruf
Symbol eingeben
Beim Aufruf von FB 100
einen Instands DB vergeben
Fertig
 
@Das habe ich glaube ich schon gemacht, aber irgend was klappte da auch nicht.
Aber so wie es jetzt ist klappt es wunderbar, hab dann eben ein paar DB´s mehr. werden dann glaube ich 8-10 Stück das wird die 314 wohl locker verkraften.
Der FBx ist auch schon ein wenig größer geworden, ist jetzt ne Tageszeitabhängigkeit mit drin. Na ja werde mal weiter machen.

Überigens wurde mir hier schon super geholfen, Danke an alle, werde bestimmt bald wieder ne Frage haben.

cu.

@Piter
sorry war zu spät, hatte deinen Eintrag erst nach der Eingabe gelesen. Werde ich aber ausprobieren. Danke !!
 
Zurück
Oben