Zuviel Werbung? - > Hier kostenlos beim SPS-Forum registrieren

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 12

Thema: Funktionen (FU) in WinCat

  1. #1
    Registriert seit
    04.08.2010
    Beiträge
    60
    Danke
    14
    Erhielt 1 Danke für 1 Beitrag

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo

    ich habe mal eine Frage bezüglich Funktionen in WinCat bzw. der Sprache "ST". Ich habe ein etwas größeres Projekt programmiert und möchte nun alles aus der Main in Funktionen schaufeln, sodass ich in Main nur noch die Funktionen aufrufen muss.
    Das habe ich auch getan, doch leider Funktioniert das nicht so, wie ich mir das vorgestellt habe. Es funktioniert nämlich gar nicht mehr.
    Wenn ich alles in Main lasse geht auch alles, doch sobald ich in Funktionen auslagere geht es nicht mehr.
    Ein Bsp.:
    Ich habe eine Funktion in der zwei Taster sind, zwei IF-Schleifen und zwei TON's. So die Taster schalten, in die Schleifen wird auch gegangen, doch die TON's werden nicht ausgeführt. Wenn ich am IN-Eingang ein TRUE habe läuft es nicht an.
    Hat einer eine IDEE woran das liegen könnte? Kann man in Funktionen keine Standardbausteine verwenden?

    Habt vielen Dank im Voraus.
    Zitieren Zitieren Funktionen (FU) in WinCat  

  2. #2
    Registriert seit
    27.07.2007
    Ort
    Leipzig
    Beiträge
    239
    Danke
    25
    Erhielt 47 Danke für 43 Beiträge

    Standard

    Hallo,

    am besten mal den Code posten. Grundsätzlich kann man in Funktionen alles aufrufen. Das besondere an einer Funktion ist das du keine Instanzen bilden kannst und die Funktion gibt dir genau einen Rückgabewert.

    Versuch es doch besser mit Funktionsbausteinen (FB).

    gruß bonatus

  3. Folgender Benutzer sagt Danke zu bonatus für den nützlichen Beitrag:

    Bambam (06.08.2010)

  4. #3
    Bambam ist offline Benutzer
    Themenstarter
    Registriert seit
    04.08.2010
    Beiträge
    60
    Danke
    14
    Erhielt 1 Danke für 1 Beitrag

    Standard

    So sieht mein Code aus:

    Code:
     (*Klingel*)
     
    FUNCTION bKlingel : BOOL
    VAR_INPUT
    END_VAR
    VAR
     trigTasterS560 : R_TRIG;
     trigTasterS559 : R_TRIG;
     icountKlingel  : INT;
     tonKlingel_2  : TON;
     tonKlingel_1  : TON;
     
    END_VAR
     
     trigTasterS560(CLK:= bE09_TasterS560Tuerkontakt);
     trigTasterS559(CLK:=bE08_TasterS559Klingel);
     
     (*tpKlingel_0(IN:=bE08_TasterS559Klingel, PT:=t#5s , Q=>bA08_KlingelSignal);*)
     
     IF  trigTasterS560.Q THEN
          icountKlingel := 3;
     END_IF
     
     IF trigTasterS559.Q THEN
      icountKlingel := 1;
     END_IF
     
     tonKlingel_1(IN:= (icountKlingel > 0 AND NOT tonKlingel_2.Q)  , PT:=t#1s , Q=>bA08_KlingelSignal ); (*Pausenlaenge zwischen den Signalen*)
     
     tonKlingel_2(IN:= tonKlingel_1.Q  , PT:=t#2s );            (*Dauer des Klingelsignals*)
     
     IF  tonKlingel_2.Q THEN
          icountKlingel := icountKlingel - 1;
     END_IF
    FB probiere ich gerade doch wenn ich das aufrufe ( Klingel(); ) kommt der Fehler "Klingel ist keine Funktion"?!
    Geändert von Bambam (06.08.2010 um 13:01 Uhr)

  5. #4
    Registriert seit
    27.07.2007
    Ort
    Leipzig
    Beiträge
    239
    Danke
    25
    Erhielt 47 Danke für 43 Beiträge

    Standard

    du musst wahrscheinlich bei der Deklaration das ": BOOL" weglassen

    Funktion_Block bKlingel
    .
    .
    .

  6. Folgender Benutzer sagt Danke zu bonatus für den nützlichen Beitrag:

    Bambam (06.08.2010)

  7. #5
    Registriert seit
    29.09.2006
    Beiträge
    368
    Danke
    0
    Erhielt 41 Danke für 38 Beiträge

    Standard

    Hallo,

    ein Tippfehler vielleicht? bKlingel??

    Viele Grüße

  8. Folgender Benutzer sagt Danke zu Fx64 für den nützlichen Beitrag:

    Bambam (06.08.2010)

  9. #6
    Bambam ist offline Benutzer
    Themenstarter
    Registriert seit
    04.08.2010
    Beiträge
    60
    Danke
    14
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Habt vielen Dank für eure Antworten.

    Aber um das noch einmal zu ordnen. Ich habe eine Funktion erstellt die bKlingel heißt und so aussieht wie die, die ich auch als CODE zuvor gepostet.

    Danach habe ich es mit einem Funktion Block versucht der Klingel heißt. Der sieht wie folgt aus:

    Code:
    FUNCTION_BLOCK Klingel
    VAR_INPUT
    END_VAR
    VAR_OUTPUT
    END_VAR
    VAR
     trigTasterS560 : R_TRIG;
     trigTasterS559 : R_TRIG;
     icountKlingel  : INT;
     tonKlingel_2  : TON;
     tonKlingel_1  : TON;
    END_VAR
     
    (*Klingel*)
     trigTasterS560(CLK:= bE09_TasterS560Tuerkontakt);
     trigTasterS559(CLK:=bE08_TasterS559Klingel);
     (*tpKlingel_0(IN:=bE08_TasterS559Klingel, PT:=t#5s , Q=>bA08_KlingelSignal);*)
     IF  trigTasterS560.Q THEN
          icountKlingel := 3;
     END_IF
     IF trigTasterS559.Q THEN
      icountKlingel := 1;
     END_IF
     tonKlingel_1(IN:= (icountKlingel > 0 AND NOT tonKlingel_2.Q)  , PT:=t#1s , Q=>bA08_KlingelSignal ); (*Pausenlaenge zwischen den Signalen*)
     tonKlingel_2(IN:= tonKlingel_1.Q  , PT:=t#2s );            (*Dauer des Klingelsignals*)
     IF  tonKlingel_2.Q THEN
          icountKlingel := icountKlingel - 1;
     END_IF
    So und beim Funktionsblock, wenn ich den wie folgt aufrufe:

    Code:
    Klingel();
    Kommt die Fehlermeldung:
    Klingel ist keine Funktion!

  10. #7
    Registriert seit
    27.07.2007
    Ort
    Leipzig
    Beiträge
    239
    Danke
    25
    Erhielt 47 Danke für 43 Beiträge

    Standard

    Hallo, ich habs mal versucht in einen FB zu machen:
    Deklaration:
    Code:
    FUNCTION_BLOCK Klingel
    VAR_INPUT
        TasterS1    : BOOL;
        TasterS2    : BOOL;
    END_VAR
    VAR_OUTPUT
        Klingel_Signal: BOOL;
    END_VAR
    VAR
        trigTasterS1 : R_TRIG;
        trigTasterS2 : R_TRIG;
        icountKlingel  : INT;
        tonKlingel_1  : TON;
        tonKlingel_2  : TON;
    END_VAR
    ST-Teil:
    Code:
    trigTasterS1(CLK:= TasterS1);
    trigTasterS2(CLK:=TasterS2);
    
     (*tpKlingel_0(IN:=bE08_TasterS559Klingel, PT:=t#5s , Q=>bA08_KlingelSignal);*)
     
     IF  trigTasterS1.Q THEN
          icountKlingel := 3;
     END_IF
     
     IF trigTasterS2.Q THEN
      icountKlingel := 1;
     END_IF
     
     tonKlingel_1(IN:= (icountKlingel > 0 AND NOT tonKlingel_2.Q)  , PT:=t#1s , Q=>Klingel_Signal ); (*Pausenlaenge zwischen den Signalen*)
     
     tonKlingel_2(IN:= tonKlingel_1.Q  , PT:=t#2s );            (*Dauer des Klingelsignals*)
     
     IF  tonKlingel_2.Q THEN
          icountKlingel := icountKlingel - 1;
     END_IF
    An dem FB hast du nun 2 Eingänge und 1 Ausgang.

    Ruf den FB am besten mal in FUP auf da sieht man das am besten.

  11. Folgender Benutzer sagt Danke zu bonatus für den nützlichen Beitrag:

    Bambam (06.08.2010)

  12. #8
    Bambam ist offline Benutzer
    Themenstarter
    Registriert seit
    04.08.2010
    Beiträge
    60
    Danke
    14
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Super danke.

    Doch leider kommt immer noch der Fehler:
    Das Klingel keine Funktion ist.
    Ist doch zum Mäuse melken ...

  13. #9
    Registriert seit
    29.09.2006
    Beiträge
    368
    Danke
    0
    Erhielt 41 Danke für 38 Beiträge

    Standard

    hast Du denn eine FB Instanz deklariert?

  14. #10
    Registriert seit
    27.07.2007
    Ort
    Leipzig
    Beiträge
    239
    Danke
    25
    Erhielt 47 Danke für 43 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Dann rufst du irgendwo in deinem Programm noch die Funktion Klingel auf.

    In der fehlermeldung siehst du wo das ist.

    Mit einem Doppelklick gelangst du an die Stelle wo der Fehler ist

Ähnliche Themen

  1. Probleme mit WinCat
    Von Fallon im Forum CODESYS und IEC61131
    Antworten: 5
    Letzter Beitrag: 03.08.2011, 08:25
  2. RFC1006/S7-Funktionen
    Von dannyli im Forum Hochsprachen - OPC
    Antworten: 1
    Letzter Beitrag: 25.06.2009, 19:25
  3. Funktionen in Funktionen aufrufen
    Von Baldaro im Forum Simatic
    Antworten: 12
    Letzter Beitrag: 21.06.2009, 16:17
  4. KS-Funktionen AEG A120
    Von Friedrich-Alexander im Forum Sonstige Steuerungen
    Antworten: 5
    Letzter Beitrag: 27.05.2008, 20:58
  5. Aufruf der Funktionen in OB1
    Von blume_mercan im Forum Simatic
    Antworten: 10
    Letzter Beitrag: 16.01.2008, 18:59

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •