TIA Frage zu Graph

bastler

Level-2
Beiträge
258
Reaktionspunkte
3
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo
Ich habe folgende Aufgabe bekommen:
Es muss ein FB erstellt werden, der unter "vorausgeschaltete permanente Anweisungen" aufgerufen wird.
In dem FB soll eine Variable X auf true gesetzt werden, sobald die Bedingung dafür erfüllt ist.

Code:
IF #Bedingung  THEN
  #X:= TRUE;
END_IF;

Bis hier ist alles ok.
In der Schrittkette soll es dann an einen Schritt eine Aktion geben, in der die Variable X wieder auf false gesetzt wird.
Also habe ich in dieser Aktion als Bestimmungszeichen ein "R" für rücksetzen gewählt und habe die Variable X angegeben.
Die Bedingungen für das setzen der Variable sind bei diesen Schritt nicht mehr erfüllt.
Allerdings wird die Variable nicht zurückgesetzt. Kann mir einer erklären, wieso X nicht zurückgesetzt wird.
Diese Projekt ist eine Hausaufgabe und muss so realisiert werden, wie es die Aufgabenstellung vorgibt.
Danke schon mal im voraus.

MfG
bastler
 
ist deine 'Bedingung' immer auf TRUE?
dann würdest du in der Schrittkette 'X' zurücksetzen, aber
in der permanenten Answeisung direkt wieder setzen.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
"Bedingung" ist ein Taster, also nur dann true, wenn gedrückt!
Wie ich schon schrieb, die Bedingung für das Setzen sind in dem Schritt fürs Rücksetzen nicht mehr gegeben.
 
Sorry, ich hab Quatsch erzählt. X ist unter Output in dem FB deklariert, den ich unter "vorausgeschaltete permanente Anweisungen" aufrufe. Dieser FB hat einen Instanz-DB.
In dem FB, wo die Schrittkette läuft, dort ist x unter static deklariert.
 
Also im FB, der unter "vorausgeschaltete permanente Anweisungen" aufgerufen wird, X als InOut deklarieren.

Dann müsste es funktionieren.
 
Also wenn ich X als InOut in den FB deklariere, der in "vorausgeschaltete permanente Anweisungen" aufrufe funktioniert das Rücksetzen, wenn X als Output deklariert ist, funzt es nicht. Kann mir das einer erklären?
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Output sollte nur verwendet werden, wenn dieser Parameter immer beschrieben wird.
z.B.
X_Output := #Bedingung

Das ist extrem wichtig bei Verwendung von FC's, dort wird sonst vom System ein zufälliger Wert in Output geschrieben.


Output wird grundsätzlich nur geschrieben und nicht gelesen


mal ein Beispiel mit Merkern zu einfacheren Verständnis:
Code:
// im aufgerufenem FB

IF #Bedingung  THEN
  #X:= TRUE;              // hier würde z.B. M20.0 gesetzt
END_IF;

// am Parameter X wird im Aufruf X_Static angehängt   // z.B. M20.1

// in Schritt xyz
R X_Static                  // R M20.1

// aber M20.0 wird nicht beeinflusst!!!
 
Zuletzt bearbeitet:
Das versteh ich nicht, wenn du M20.0 setzt und M20.1 rücksetzt, dann ist doch klar, das M20.0 auf true bleibt.
 
Das ganze würde evtl. mit Output funktionieren, wenn Du im Schritt das X_Output Datenbit aus dem Instanz-DB zurücksetzt.

Das würde ich aber als unsaubere Programmierung bezeichnen.
 
Zurück
Oben