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

Ergebnis 1 bis 5 von 5

Thema: Aus Funktion Springen und in anderem FB weitermachen in ST? (ähnlich SPA)

  1. #1
    Registriert seit
    21.11.2013
    Ort
    Frankfurt am Main
    Beiträge
    30
    Danke
    0
    Erhielt 1 Danke für 1 Beitrag

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,

    ich versuche gerade einen Treiber von einem meiner altern s7 Projekte welcher in AWL geschrieben ist in ST auf Beckhoff zu übersetzen.
    Gerade versuche ich erfolglos eine Funktion zu realisieren welche einem SPA bzw. absoluten Sprung Befehl imitiert.

    also bspw. in S7 AWL

    UN M10.0
    U M10.1
    = A 4.0
    SPA XYZ
    ...
    ...

    -----
    jetzt hab ich mir gedacht ich kann ja in Twincat vielleicht etwas wie einen CALL machen der eine andere Funktion bzw. Funktionsbaustein welcher in ST geschrieben ist aufruft und die aktuelle Funktion / If Schleife abbricht.

    ...
    if (...)
    then
    ...
    else
    CALL XYZ
    "und raus aus dieser datei - nix mehr weiter ausführen hier".
    ..
    ..

    Habt ihr eine Idee?
    Bitte entschuldigt meinen PSEUDO Code.

    Viele Grüße
    Michi
    Zitieren Zitieren Aus Funktion Springen und in anderem FB weitermachen in ST? (ähnlich SPA)  

  2. #2
    Registriert seit
    13.01.2013
    Beiträge
    627
    Danke
    26
    Erhielt 64 Danke für 59 Beiträge

    Standard

    Also spontan würde mir da was einfallen wie eine VAR die von deinem Hilfsbaustein auf FALSE getriggert wird und der Entsprechende Baustein somit nicht mehr aufgerufen wird.
    Oder (ist fast der gleiche ansatzt)
    If var1 = true then Hauptprogramm();
    Else AnderesProgramm();
    End_if
    Oder ggf auch über einen Task machbar. Wenn ich dich richtig verstanden habe führen hier viele Wege ans Ziel.

  3. #3
    Registriert seit
    15.01.2005
    Ort
    In der Mitte zwischen Bayreuth/Weiden
    Beiträge
    6.732
    Danke
    314
    Erhielt 1.520 Danke für 1.282 Beiträge

    Standard

    Auch wenns meistens Scheiß ist aber auch die IEC Welt kennt Sprünge,
    auch wenn mir die gerade nicht einfallen weil ich die nie brauche ...

    Gesendet von meinem GT-I9505 mit Tapatalk
    Warum denn einfach, wenn man auch Siemens einsetzen kann!

    Wer die grundlegenden Freiheiten aufgibt, um vorübergehend ein wenig Sicherheit zu bekommen, verdient weder Freiheit noch Sicherheit (B. Franklin).

  4. #4
    Registriert seit
    03.12.2013
    Ort
    nähe Karlsruhe
    Beiträge
    12
    Danke
    1
    Erhielt 3 Danke für 3 Beiträge

    Standard

    Hallo,

    in ST kannst Du meines Wissens nach nicht springen, das geht nur in AWL. Ein RETURN(); verlässt den aktuellen Baustein wie von Dir gewollt.

    Einen Ablauf würde ich in ST aber mittels einer Case Anweisung realisieren, das ist finde ich viel flexibler und übersichtlicher.
    Bei uns sieht das in etwa so aus:

    Code:
    IF xStart AND NOT xRun THEN
        iSchritt:=1;
    END_IF
    
    
    
    CASE iSchritt OF
    
    0:  (* Schritt 0, nix machen *)
        xRun:=FALSE;
    
    1:  (* Initschritt *)
        xRun := TRUE;
        iSchritt:=2;
    
    2:  (* Schritt 2 ... *)
        IF xWeiterschaltbedingung1 
        AND xbla
        THEN
             (* tu irgendwas *)
             iSchritt:=3;
        END_IF
    
    3:  (*Schritt 3 ...*)
        IF xWeiterschaltbedingung2 THEN
            iSchritt:=4;
        END_IF
    
    ... usw
    
    
    99: (*Schritt 99 fertig *)
        IF xWeiterschaltbedingung THEN
            iSchritt:=0;
        END_IF
    
    END_CASE;
    Geändert von tygan (18.12.2013 um 08:01 Uhr)

  5. #5
    Registriert seit
    25.02.2010
    Beiträge
    618
    Danke
    35
    Erhielt 121 Danke für 110 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo Michi
    Ein Call ist nicht unbedingt das gleich wie ein Sprung in AWL.
    Rufts du mit Call eine anderen Baustein auf, wird nach dessen Ausführung die Abarbeitung eventuell hinter dem Call weitergeführt was du ja nicht möchtest.
    Günstiger ist es die If then Schleife mit einer Variable sauber zu verlassen. Dazu mal "Exit IF" nachschlagen ob Twincat dies unterstützt.
    Dann wie mein Vorredner sagte aus einem Sprungverteiler deinen Baustein aufrufen.
    Eventuell wäre auch ein ereignissorientierter Aufruf eines FB die bessere Lösung für dein Problem. Ähnlich einem Weckalarm nur eben als Ereigniss nicht als Zeit.
    Grüsse Holger

Ähnliche Themen

  1. Sonstiges MCIS RPC auf anderem Rechner
    Von L3viathan im Forum Simatic
    Antworten: 0
    Letzter Beitrag: 20.08.2013, 08:38
  2. OPCServer.WinCC unter anderem Account starten
    Von night2day im Forum Simatic
    Antworten: 0
    Letzter Beitrag: 15.03.2011, 16:14
  3. Hauptschalter in anderem Raum installieren
    Von Toddy80 im Forum Schaltschrankbau
    Antworten: 12
    Letzter Beitrag: 28.02.2011, 09:10
  4. Db Wert in einem anderem FB lesen
    Von d3nnis.c im Forum Simatic
    Antworten: 3
    Letzter Beitrag: 03.05.2009, 20:31
  5. nach fehler in schrittkette weitermachen?
    Von Anonymous im Forum Simatic
    Antworten: 14
    Letzter Beitrag: 15.01.2006, 22:35

Lesezeichen

Berechtigungen

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