Formel ohne Output

Wird der Baustein, in dem Du das jetzt aufrufst, auch aufgerufen?
Bist Du sicher, daß das Programm läuft?

Ansonsten mach Dir im Scale ein paar Hilfsvariablen und drösel die Berechnung auf.
Dann siehst Du, an welcher Stelle da ein Problem liegt.

Da das ein FB ist, kannst Du die Instanz beobachten.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo umcka98,

aktuell rufst du einen Funktionsblock SCALE in einem anderen Funktionsblock auf.
Wo wird der FB (Funktionsblock) Durchfluss_1 aufgerufen?

Eine Deklaration von einem FB reicht im Normalfall nicht zur Abarbeitung aus.
Ohne Abarbeitung, keine Berechnung und keine Wertänderung.

Bitte wendet dich an uns und wir (der WAGO Support) können dir vielleicht bei einem kurzem Telefonat helfen.
 
Hallo umcka98,

aktuell rufst du einen Funktionsblock SCALE in einem anderen Funktionsblock auf.
Wo wird der FB (Funktionsblock) Durchfluss_1 aufgerufen?

Eine Deklaration von einem FB reicht im Normalfall nicht zur Abarbeitung aus.
Ohne Abarbeitung, keine Berechnung und keine Wertänderung.

Bitte wendet dich an uns und wir (der WAGO Support) können dir vielleicht bei einem kurzem Telefonat helfen.
Das denke ich langsam auch
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo umcka98,

aktuell rufst du einen Funktionsblock SCALE in einem anderen Funktionsblock auf.
Wo wird der FB (Funktionsblock) Durchfluss_1 aufgerufen?

Eine Deklaration von einem FB reicht im Normalfall nicht zur Abarbeitung aus.
Ohne Abarbeitung, keine Berechnung und keine Wertänderung.

Bitte wendet dich an uns und wir (der WAGO Support) können dir vielleicht bei einem kurzem Telefonat helfen.
wago support kann auch nicht weiterhelfen
 
Dann nimm doch mal alle Fragen und Hilfen zusammen, die Dir hier gegeben wurden:

Programm ist geladen --> dann läuft es aber noch nicht. Also: Start drücken
Programm hat einen Task, der ruft einen Baustein immer zyklisch auf, in der Regel PLC_PRG.
Aus diesem Baustein heraus mußt Du nun das Programm strukturieren und die Bausteine aufrufen, z.B.:
PLC_PRG -> Skalierungsbausteine_FB() -> Scale_0()

Wird Dein Baustein nicht aufgerufen, kann er nix berechnen.

Hast Du mittlerweile das WORD_TO_REAL korrekt eingefügt?
 
Vielleicht machst du es einfach mal vernünftig ...
Nimm in deinem SCALE mal das AT von dem DU1 weg sodaß es einfach "nur noch" ein ganz normaler IN vom Typ WORD ist.
Beim Aufruf im DURCHFLUSS kannst du dann dem DU1 dann das IW1 übergeben.
Wenn Wago auch nicht weiterhelfen kann dann wird ja DURCHFLUSS wohl auf alle Fälle aufgerufen ...?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Dann nimm doch mal alle Fragen und Hilfen zusammen, die Dir hier gegeben wurden:

Programm ist geladen --> dann läuft es aber noch nicht. Also: Start drücken
Programm hat einen Task, der ruft einen Baustein immer zyklisch auf, in der Regel PLC_PRG.
Aus diesem Baustein heraus mußt Du nun das Programm strukturieren und die Bausteine aufrufen, z.B.:
PLC_PRG -> Skalierungsbausteine_FB() -> Scale_0()

Wird Dein Baustein nicht aufgerufen, kann er nix berechnen.

Hast Du mittlerweile das WORD_TO_REAL korrekt eingefügt?
Start hatte ich gedrückt hat aber wieder nicht geklappt. Den Baustein Durchfluss brauche ich gar nicht, den habe ich nur zum Testen entworfen. Ich brauche nur den OUT Wert aus der Formel vom SCALE Baustein. Mit diesem Wert möchte ich später in einer Transition einen Vergleich mit einer anderen Durchflussmenge ausführen.
 
Wenn du nicht auf die Vorschläge hörst dann wirst du in 5 Jahren noch daran sitzen.
Programmierung hat ein bißchen was mit Systematik zu tun ...
 
Laß Dir doch nicht alles aus der Nase ziehen, wenn Du Hilfe möchtest!

Wird der Scale-Baustein aufgerufen? Wird er ausgeführt? Wenn Du nicht sicher bist, schreibe einen festen Dummy-Wert auf den Ausgang zum Testen...

Du postest einen Screenshot, in dem Scale im Durchfluß aufgerufen wird. Wenn man Dich fragt, ob Durchfluß aufgerufen wird, dann sagst Du, Du brauchst ihn nicht...

Schau Dir die Struktur Deines Programm an.
ALLE BAUSTEINE DIE ABGEARBEITET WERDEN SOLLEN MÜSSEN AUFGERUFEN WERDEN - PUNKT
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Wenn du sicher gehen willst ob dein Scale Baustein aufgerufen wird, könntest du ja eine Variable im FB bei jedem Aufruf hochzälen lassen.

FUNCTION_BLOCK SCALE
...
VAR
i : int;
END VAR

OUT := ...
i := i+1;

Wenn dein Programm läuft und dein FB SCALE aufgerufen wird sollte wenigstens i immer größer werden. Wenn i nicht hochzählt funtioniert dein Aufruf noch nicht.
 
So sollte ein komplettes Programm aussehen von Dir:


Code:
PROGRAM PLC_PRG
    VAR
        Scale        : Scale_FB;
        ScaledValue : REAL;
    END_VAR
    
    Scale(    DU1 := %IW1,
            MIN1:= 0.0,
            MAX1:= 65535.0,
            MIN2:= 9.0,
            MAX2:= 150.0
            OUT => ScaledValue
            );
END_PROGRAM

FUNCTION_BLOCK Scale_FB
    VAR_INPUT
        DU1        : WORD;
        MIN1    : REAL;
        MAX1    : REAL;
        MIN2    : REAL;
        MAX2    : REAL;
    END_VAR
    
    VAR_OUTPUT
        OUT        : REAL;
    END_VAR
    
    VAR
        DU1_REAL: REAL;
    END_VAR
    
    DU1_REAL    := WORD_TO_REAL(DU1);
    OUT:= ((DU1_REAL-MIN) * (MAX2-MIN2)) / ((MAX1-MIN1) + MIN2);
    
END_FUNCTION_BLOCK
 
Zuviel Werbung?
-> Hier kostenlos registrieren
@umcka98 bitte klär das alles mit deinem Betreuer/Prof/deinen Komillitionen ab, dein Informationsfluss ist jetzt hier nicht die beste. Gefühlt fehlen essenzielle Basics wie Steuerungen funktionieren.
Ich muss das Projekt alleine umsetzen, der zuständige Prof hat mit Automatisierung nichts am Hut und keiner in der Firma hat Automatsierungskenntnisse. Und mit Wago habe ich bisher auch noch nicht so richtig gearbeitet. Ich könnte jetzt 100 Fotos hochladen aber das würde auch keinen weiterbringen. Fast alle Vorschläge hier habe ich auch versucht
 
M
So sollte ein komplettes Programm aussehen von Dir:


Code:
PROGRAM PLC_PRG
    VAR
        Scale        : Scale_FB;
        ScaledValue : REAL;
    END_VAR
   
    Scale(    DU1 := %IW1,
            MIN1:= 0.0,
            MAX1:= 65535.0,
            MIN2:= 9.0,
            MAX2:= 150.0
            OUT => ScaledValue
            );
END_PROGRAM

FUNCTION_BLOCK Scale_FB
    VAR_INPUT
        DU1        : WORD;
        MIN1    : REAL;
        MAX1    : REAL;
        MIN2    : REAL;
        MAX2    : REAL;
    END_VAR
   
    VAR_OUTPUT
        OUT        : REAL;
    END_VAR
   
    VAR
        DU1_REAL: REAL;
    END_VAR
   
    DU1_REAL    := WORD_TO_REAL(DU1);
    OUT:= ((DU1_REAL-MIN) * (MAX2-MIN2)) / ((MAX1-MIN1) + MIN2);
   
END_FUNCTION_BLOCK
Mein Main Projekt ist in Ablaufsprache, der Funktionsbaustein in ST
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo umcka98,
wago support kann auch nicht weiterhelfen

leider kann ich keine Nachfrage deinerseits bei uns finden.
Ich habe dir eine persönliche Nachricht über das SPS-Forum geschickt und dir darin erklärt wie du quasi direkt zu mir gelangen kannst.
Bitte melde dich bei uns (WAGO Support)
 
Zurück
Oben