Step 7 Aufruf SCL Baustein aus OB1

Kehrer

Level-2
Beiträge
380
Reaktionspunkte
3
Zuviel Werbung?
-> Hier kostenlos registrieren
Warum kann ich nicht einen FC mit SCL im OB1 aufrufen?
1637760555687.png
Was soll das RET_VAL?

FC58
Code:
FUNCTION FC58 : BOOL
//Überwachung 50F2,50F3,50F7,50F8 Steuersicherungen
   

    IF NOT sicherung2P_iO OR NOT sicherung3P_iO OR NOT sicherung7P_iO OR NOT sicherung8P_iO THEN          //E11.1-E11.4
        FC58 := false;
        sf_fehler(Fehlernummer := 4, Fehlerart := sk_Fehler, Diagnosenummer := 0);   //Steuersicherung ausgelöst
    ELSE
        FC58 := true ;
    END_IF;   

END_FUNCTION
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Moin Kehrer,

Du hast mit
Code:
FUNCTION FC58 : BOOL
festgelegt, daß die Funktion einen booleschen Rückgabewert hat.
Bei einem FC muß dieser beschaltet werden. Du beschreibst ihn ja auch:

IF NOT sicherung2P_iO OR NOT sicherung3P_iO OR NOT sicherung7P_iO OR NOT sicherung8P_iO THEN //E11.1-E11.4
FC58 := false;
sf_fehler(Fehlernummer := 4, Fehlerart := sk_Fehler, Diagnosenummer := 0); //Steuersicherung ausgelöst
ELSE
FC58 := true ;
END_IF;

Also muß er auch beschaltet werden, Du willst ihn ja vermutlich weiterbenutzen.
 
Warum kann ich nicht einen FC mit SCL im OB1 aufrufen?
Anhang anzeigen 57624
Was soll das RET_VAL?
Jede Funktion (FC) hat immer einen Rückgabewert. Das hat nix mit der Programmiersprache zu tun.

Bei Dir ist der Rückgabewert ein Bool (1. Zeile).
Der wird meist als ENO genutzt.
Wenn Du ihn nicht brauchst, kannst Du ihn einer Dummy-Variablen aus dem Temp-Bereich übergeben. Aber übergeben musst Du ihn.
 
JSEngineering schrieb:
Hat es denn einen Sinn, daß Du den Rückgabewert im Baustein mit true/false beschreibst?

Jetzt weiß ich glaub warum es so bei den anderen FCs gemacht ist.
Diese werden in der Schrittkette aufgerufen.
Meiner ist eigentlich dafür da dass eine Fehlermeldung ausgelöst werden soll und nicht weiter gearbeitet werden kann.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
wie sonst? soll ja eine Fehlermeldung dann im HMI erscheinen
Bin für jeden Tipp dankbar

habe ich nicht vor weiterzuverarbeiten
Du sprichst in Rätseln....

Du willst einen Rückgabewert... sonst würdest Du FC58:= nicht mit true/false beschreiben. Und Du sagst, daß Du damit eine Fehlermeldung im HMI erzeugen möchtest.

Gleichzeitig aber willst Du den Rückgabewert nicht weiter verarbeiten!?

Oder erzeugst Du über sf_fehler(...); die Fehlermeldung?

Dann reicht doch
Code:
FUNCTION FC58 : BOOL
//Überwachung 50F2,50F3,50F7,50F8 Steuersicherungen

    IF NOT sicherung2P_iO OR NOT sicherung3P_iO OR NOT sicherung7P_iO OR NOT sicherung8P_iO THEN          //E11.1-E11.4
        sf_fehler(Fehlernummer := 4, Fehlerart := sk_Fehler, Diagnosenummer := 0);   //Steuersicherung ausgelöst
    END_IF; 
  
FC58 := true; (* Dummy-Zuweisung *)

END_FUNCTION

Aber anstatt diese vier Sicherungen in einen FC zu verpacken, würde ich das im OB1 lassen als FUP/KOP...
 
Jetzt weiß ich glaub warum es so bei den anderen FCs gemacht ist.
Diese werden in der Schrittkette aufgerufen.
Meiner ist eigentlich dafür da dass eine Fehlermeldung ausgelöst werden soll und nicht weiter gearbeitet werden kann.
Dann würde es Sinn machen, so wie Du es programmiert hast und dann den Rückgabewert als Freigabe für den nächsten Schritt zu benutzen. Wenn dann Fehler ansteht, fehlt die Freigabe (Rückgabewert = false) und der Schritt / der Prozeß kann nicht gestartet werden.
 
Zurück
Oben