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

Ergebnis 1 bis 8 von 8

Thema: Twincat V2.x Programm oder FB erstellen

  1. #1
    Registriert seit
    16.03.2014
    Beiträge
    359
    Danke
    74
    Erhielt 45 Danke für 38 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo zusammen,
    nach dem ich nun recht viel ausprobiert habe, ergibt sich eine Frage:

    Ist es ein Unterschied ob ich meine "Teilprogramme" als Programm oder als FB schreibe ?

    Mein letzter Stand war, das ein FB lediglich den Vorteil einer Instanzierung und daher mehrfacher Gebrauch darstellt !?

    Wenn ich nur einmal eine Sache benötige, so bietet sich doch ein Programmsegment an oder ?

    Allerdings habe ich seit gestern seltsame Phänomene bei meiner BC9000 festgestellt und bin mir nun nicht mehr sicher
    ob ich das richtig verstanden habe.

    Kann es sein, das die "einzelnen" Programme ein total anderes Ablaufschema zeigen als wenn ich einen FB erzeuge ?

    GGf. stelle ich alsbald einen Codeausschnitt hier rein um mal eine Expertenmeinung zu bekommen...

    Danke
    Shrimps
    Zitieren Zitieren Twincat V2.x Programm oder FB erstellen  

  2. #2
    Registriert seit
    24.02.2009
    Beiträge
    1.244
    Danke
    23
    Erhielt 276 Danke für 235 Beiträge

    Standard

    Jop der größte Unterschied zw. einem Programm und einen Funktionsblock ist die Instanzierbarkeit. Ein Programm kannst du global im ganzen Projekt aufrufen (außer in Funktionen). Bei Mehrfach-Aufrufen werden die Werte im Programm immer überschrieben.

    Was du nun einsetzt ist größtenteils Geschmackssache. Ich kenne Projekte die aus vielen Programmen bestehen. Nicht mein Geschmack, aber man kann es machen. Ich habe idR nur ein Programm pro Task und arbeite von da aus mit Funktionsblöcken, auch wenn es nur eine Instanz davon gibt.
    Sänd from mei Kombjudder mitse Dastadurr.

  3. #3
    Registriert seit
    02.06.2006
    Beiträge
    223
    Danke
    7
    Erhielt 41 Danke für 35 Beiträge

    Standard

    Ein Programm kann auch nur 1 Rückgabewert liefern.
    Der FB Viele Output Parameter.

  4. #4
    shrimps ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    16.03.2014
    Beiträge
    359
    Danke
    74
    Erhielt 45 Danke für 38 Beiträge

    Standard

    Hallo,
    besten Dank für die Antworten.
    Dann lag ich ja richtig...
    Ist also nur eine Frage der Vorlieben...

    @georg28:
    Du liegst leider falsch: Ein Programm kann genau wie ein FB arbeiten und exakt alles identisch machen, also var_in_out, var_in, var_out etc.
    Das war unter anderem eines meiner Probleme: Eine reine Funktion kann nur einen Rückparameter liefern !


    Dann gehts also weiter...

    Bye
    Shrimps

    Nachfolgend der Code eines kleines Programms welches ich nicht als Funktion hinbekommen hatte...

    Code:
    PROGRAM FoerderTakt
    VAR_INPUT
        rProzent        : REAL    := 50;        (* Max benötigte Leistung 50-100 *)
        rSollMenge        : REAL;                (* Vorgabe der Foerdermenge *)
    END_VAR
    VAR_TEMP
        rBrennwert         : REAL     := 4.8;        (* KWh / Kg *)
        rKW                : REAL    := 16.0;    (* Max Brennerleistung *)
        rSchnecke_pro_h    : REAL     := 19500;    (* Wieviel g pro h fördert die Schnecke *)
        rObergrenze_s    : INT     := 36;        (* Maximale Laufzeit pro Takt bei 100% in 1/10s *)
        rMaxSekunden    : REAL;                (* Wieviel Sekunden Summe Förderdauer *)
        iArbeitstakt    : INT;
        iPausenTakt        : INT;
        rTakte            : REAL;
    END_VAR
    VAR_OUTPUT
        tArbeitstakt    : TIME;
        tPausenTakt        : TIME;
    END_VAR
    
    rMaxSekunden     := (rKW * 3600 * 1000 * rProzent) / (rBrennwert * rSchnecke_pro_h * 100);
    
    iArbeitstakt     := REAL_TO_INT(rObergrenze_s * rProzent / 100);
    
    rTakte             := rMaxSekunden * 10 / iArbeitstakt;
    
    iPausenTakt     := REAL_TO_INT((36000 / rTakte ) - iArbeitstakt);
    
    tArbeitstakt     := INT_TO_TIME(iArbeitstakt * 100);
    
    tPausenTakt        := INT_TO_TIME(iPausenTakt * 100);
    
    IF rSollMenge > 0 THEN
        tArbeitstakt := REAL_TO_TIME(3600 * rSollMenge / rSchnecke_pro_h) * 1000;
    END_IF
    
    
    ############### Aufruf in einem anderen Programmteil: ##################
    CASE Schritt OF
    
    brenner_init:;
    
        FoerderTakt(rProzent:= 100,
                    rSollMenge:= 60,
                    tArbeitstakt=>tFoerderZeit1 ,
                    tPausenTakt=> );
    
    ############ etc #########

  5. #5
    Registriert seit
    25.11.2010
    Ort
    OWL
    Beiträge
    752
    Danke
    27
    Erhielt 165 Danke für 143 Beiträge

    Standard

    Der Zugriff auf ein PRG ist von überallher möglich. Nicht nur sein Aufruf, sondern auch der Zugriff auf die VAR_INPUT/OUTPUT-Schnittstelle. Beim FB ist der Zugriff dagegen auf die instanziierende POU beschränkt, für mich die bessere Variante.

  6. #6
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.728
    Danke
    398
    Erhielt 2.406 Danke für 2.002 Beiträge

    Standard

    Zitat Zitat von shrimps Beitrag anzeigen
    Nachfolgend der Code eines kleines Programms welches ich nicht als Funktion hinbekommen hatte...
    Das liegt sicherlich daran, dass du verschiedene deiner im TEMP-Bereich deklarierten Variablen eigentlich als Konstanten verwendest. Du kannst in einer Funktion (wegen dem fehlenden Gedächtnis / Instanz) keine Variablen mit einem Wert vorbelegen. Du deklarierst diese Variablen also entweder als Konstanten oder du weißt sie am Code-Anfang mit dem gewünschten Grundwert zu - oder machst dir einen FB ...

    Gruß
    Larry

  7. #7
    shrimps ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    16.03.2014
    Beiträge
    359
    Danke
    74
    Erhielt 45 Danke für 38 Beiträge

    Standard

    Hallo Larry,
    so ganz verstanden habe ich das nicht:
    mein Proggie funktioniert ja einwandfrei.
    Ein Gedächtniss brauche ich ja nicht...
    Und als Funktion geht es doch nicht, weil ich ja zwei Rückgabewerte benötige ?!
    Oder bringt es technisch einen Unterschied ob ich die Vorgaben als Constant definiere ?

    LG
    Shrimps

  8. #8
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.728
    Danke
    398
    Erhielt 2.406 Danke für 2.002 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Code:
    VAR_TEMP
        rBrennwert         : REAL     := 4.8;        (* KWh / Kg *)
        rKW                : REAL    := 16.0;    (* Max Brennerleistung *)
        rSchnecke_pro_h    : REAL     := 19500;    (* Wieviel g pro h fördert die Schnecke *)
        rObergrenze_s    : INT     := 36;        (* Maximale Laufzeit pro Takt bei 100% in 1/10s *)
        rMaxSekunden    : REAL;                (* Wieviel Sekunden Summe Förderdauer *)
        iArbeitstakt    : INT;
        iPausenTakt        : INT;
        rTakte            : REAL;
    END_VAR
    ... ich meinte das rot markierte ...
    Wenn du diesen Baustein als Funktion erstellen wolltest dann würde das nicht funktionieren - das müßten dann Konstanten sein.

    Ich bezog mich auf deine Aussage, dass du den Code nicht als Funktion hinbekommen hattest (wie zitiert).

    Gruß
    Larry

  9. Folgender Benutzer sagt Danke zu Larry Laffer für den nützlichen Beitrag:

    shrimps (20.03.2015)

Ähnliche Themen

  1. Automatisch SPS Programm erstellen
    Von WGertzen im Forum Simatic
    Antworten: 12
    Letzter Beitrag: 10.05.2012, 22:59
  2. DB aus Programm erstellen
    Von Kiter11 im Forum Simatic
    Antworten: 29
    Letzter Beitrag: 03.02.2011, 21:31
  3. Programm neu erstellen oder Großputzaktion??
    Von steppenwolf im Forum Simatic
    Antworten: 15
    Letzter Beitrag: 28.08.2008, 00:10
  4. VB Programm erstellen
    Von demmy86 im Forum Hochsprachen - OPC
    Antworten: 10
    Letzter Beitrag: 20.01.2008, 16:29
  5. Oberfläche/ Programm erstellen * Anfänger*
    Von Medical im Forum Hochsprachen - OPC
    Antworten: 8
    Letzter Beitrag: 25.09.2007, 10:25

Lesezeichen

Berechtigungen

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