komisch ... Variable in FUP wird nicht TRUE, obwohl im FB alles i.O.

Crashy

Level-1
Beiträge
123
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich habe eine Schrittkette in einem FB geschrieben und habe das Phänomen, dass zwar die Outputvariable TRUE wird, aber die zugewiesene Variable im FUP am Baustein FALSE bleibt.
Die Outputvariablen außerhalb der Schrittkette geben alles 1:1 weiter.
Was kann das sein ?

TwinCAT 2.11


Gruß Thorsten
 
Ich kenne jetzt das Verhalten von TC2 nicht, aber wo hast du die Variable denn deklariert ? Im STAT-Bereich oder im TEMP-Bereich des FB ?

Gruß
Larry
 
Hier die Screenshots dazu
 

Anhänge

  • Fehler_Testschrank2.jpg
    Fehler_Testschrank2.jpg
    356,5 KB · Aufrufe: 54
  • Fehler_Testschrank.jpg
    Fehler_Testschrank.jpg
    282,3 KB · Aufrufe: 65
Guten Tag,

Hast du mal per Querverweisliste nachgeschaut, wo du überall in die Variable Links_Halt schreibst?
Wenn du die Variable an anderer Stelle zu einem späteren Zeitpunkt überschreibst, kann das halt so auftreten.

Grüße
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Wenn ich den Verweis im FB direkt mache klappt es ja. Nur innerhalb der Schrittkette nicht.
Die Eingangsvariablen in der Schrittkette funktionieren.
 
Wenn ich den Verweis im FB direkt mache klappt es ja. Nur innerhalb der Schrittkette nicht.

Das hast du mit genau dieser "VOR" variable getestet? Oder ist das nur das verhalten der anderen Output Variablen?

"Direkt im FB" und "Innerhalb der Schrittkette" bedeutet das du Die Variable im FB FU_Gabel setzt. Einmal in der schrittkette im FU_Gabel und einmal ausserhalb der Schrittkette im FU_Gabel? Und das eine funktioniert und das andere nicht? Habe ich das richtig verstanden?
 
Zuletzt bearbeitet:
Wenn ich eine einfache Bedingung im FB schreibe oder die Variable im FB direkt auf TRUE setze, dann wird auch die Variable am Ausgang TRUE.

Wenn ich z.B. die Outputvariable "SEW.fbMoviDrive.Vor" vom FB "FU-Gabel" nehme und sie an einen ODER-Baustein mit einer anderen Outputvariable "SEW.fbMoviTrac.Vor" desselben FB packe und dann diesen ODER-Baustein der Variable "links" zuweise , funktioniert es. Aber die Variable "links" allen FB´s am Ausgang zuweisen geht nicht.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Das, was du da schreibst, ist genau das, was Eri schon angedeutet hat ...
Du hast mehrere Aufrufe (Instanzen) des selben FB's. Bei jedem Aufruf hast du die Variable dran.
Bei dem 1. Aufruf wäre der Output True - bei 2. Aufruf ist der Output False - was meinst du nun, welchen Zustand deine Variable nun hat ?
Man muss schon "ein ganz klein bißchen" die Spielregeln einer SPS beachten ...

Gruß
Larry
 
Soweit du mit Schrittkette das Programm SEW meinst muss ich Dir leider mitteilen, dass dies keine ist. Bei einer Schrittkette wird immer nur ein Schritt (parallele Schritte mal ausgenommen) ausgeführt. SEW ist aber ein "normales" FUP Programm in dem alle Netze nacheinander ausgeführt werden und somit auch die in den Netzen vorhandenen FU_Gabel FBs. Nur weil der Eingang Regler_Ein bei einigen FALSE ist bedeutet das ja nicht automatisch, dass der FB keine Ausgangsvariablen auf TRUE oder FALSE setzt.
 
Soweit du mit Schrittkette das Programm SEW meinst muss ich Dir leider mitteilen, dass dies keine ist. Bei einer Schrittkette wird immer nur ein Schritt (parallele Schritte mal ausgenommen) ausgeführt. SEW ist aber ein "normales" FUP Programm in dem alle Netze nacheinander ausgeführt werden und somit auch die in den Netzen vorhandenen FU_Gabel FBs. Nur weil der Eingang Regler_Ein bei einigen FALSE ist bedeutet das ja nicht automatisch, dass der FB keine Ausgangsvariablen auf TRUE oder FALSE setzt.
Ich weiß, was eine Schrittkette und ein FUP ist !
Die Schrittkette ist Bestandteil des FB "FU_Gabel" und ist, wie der ganze Inhalt meiner FB´s, in ST geschrieben.

Und die Behauptung von Larr ist auch falsch, denn die Variablen "Bremsschuetze", "Freigabe_Gabel" oder auch "Reset" sind insgesamt 5x den Ausgängen von Bausteinen zugewiesen und sie funktionieren alle einwandfrei. Klar werden sie 5x aktiv, aber solange die Regler ausgeschaltet sind ist es egal.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ist doch falsch... an die Hardware ausgegeben wird genau der Zustand der allerletzen Zuweisung im Zyklus.

Wenn du Bremsenschütze mehr als ein mal zuweist gilt auch hier nur der Zustand der letzten Zuweisung.

Mit dem was du bisher an Infos geliefert hast, kannst du funktioniert einwandfrei ebenso einwandfrei knicken.

Gesendet von Mobilgerät
 
Es ist doch immer nur einer von den fünf Reglern eingeschaltet. Also kann eine Variable niemals mehrmals beschrieben werden.
 
Es ist doch immer nur einer von den fünf Reglern eingeschaltet. Also kann eine Variable niemals mehrmals beschrieben werden.
Die Regler sind vielleicht ausgeschaltet, aber nicht die Aufrufe der FBs. Auf dem 1. Bild von Post#4 kann man das teilweise (leider nicht komplett) sehen.
Und solange die FBs aufgerufen werden, gelten auch die Zuweisungen des FBs an die Schnittstellenvariablen.

Und wie von den Vorrednern bereits gesagt, gilt dann die letzte Zuweisung.
 
Ich mag mich täuschen, aber das sind Ausgänge die im FB von Variablen gefüttert werden die unter VAR_OUTPUT deklariert sind diese Variablen haben immer irgendeinen Wert und wenn es der Initialisierungswert ist und der bügelt Dir die Variable die am Ausgang angeben ist bei jedem Aufruf über. Nur weil Du bei Deinem FB einen Eingang vorgesehen hast der verhindert, dass der Code Deines FBs ausgeführt wird, wird dadurch nicht die Ausgangsvariable abgeschaltet. Die übergibt Ihren Wert automatisch ob nun Code vorhanden ist oder nicht, das lässt sich nicht verhindern.

Von irgendwas mit Internetzugang gesendet
 
Zuletzt bearbeitet:
Es ist doch immer nur einer von den fünf Reglern eingeschaltet. Also kann eine Variable niemals mehrmals beschrieben werden.
Damit die Variable nicht beschrieben wird müsstes du den Baustein vollständig überspringen.
D.H. einen Sprung um das Aufrufnetzwerk bauen, dann, und nur dann würde dein Baustein die Variable nicht beschreiben.
Daraus wiederum folgt, dass wenn Bremsenschütze und Co. -vermeintlich- funktioniert, dass diese in allen FBs exakt den gleichen Bedingungen folgt, sodass im Prinzip ohnehin alle Bausteine, insbesondere der letzte Aufruf, denselben Wert ausgeben würden.

Generelle Grundregel:
Ausgänge werden genau ein einziges mal beschrieben, die wenigen sinnvollen Ausnahmen bestätigen letzten Endes nur die Regel.

-> Nach deinen x FBs baust du dir ein paar Netzwerke, in denen du die Ausgänge deiner FBs welche auf dieselben Ausgäng wirken entsprechend veroderst.

Mfg
Manuel
 
Zurück
Oben