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

Ergebnis 1 bis 6 von 6

Thema: Variablenproblem im FB

  1. #1
    Registriert seit
    09.01.2012
    Beiträge
    30
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo Zusammen,

    also ich bin jetzt hier neu im Forum und möchte mich hier schonmal entschuldigen, wenn ich mein Thema falsch gepostet habe oder dieses Thema schon 1000-mal behandelt wurde (habe die Suchfunktion benutzt )

    Auch arbeite ich erst seit zirka 3 Monaten neben der Schule mit der S7 bzw dem Pedant von Vipa und deren Programm WinPLC.

    so nun zu meinem Problem,

    im Ganzen versuche ich eine Funktionsblock für einen Taktbetrieb zu erstellen.
    Zum üben habe ich jetzt erst mal versucht quasi eine "Anlaufverzögerung" zu erstellen, also dass ein Wert der Eingegeben wird heruntergezählt wird, jeweils beim Betätigen eines Eingangs (zur besseren Veranschauung) später durch den Taktmerker 255.0 der ja einen 1Sekundentakt ausgibt.
    Ich glaube das meine Funktion an sich auch richtig ist, da beim Betätigen des Eingangs auch von 10 auf 9 gezählt wird, nur wenn ich jetzt den Eingang zurücksetz und den "Runterzählteil" überspring, setzt sich meine Variable wieder auf 10, diese müsste doch ihren Wert, wenn er nicht verändert wird (dieser Teil wird ja übersprungen) beibehalten für den nächsten Zyklus, oder nicht???

    Wo liegt hier mein Denkfehler oder vielleicht Definitionsfehler im Kopf des FB.
    Würde mich über Antworten freuen sehr recht wäre mir wenn diese vom Konzept gleich sind mit meiner idee mit den Sprüngen, da ich hier immer einwenig von einem Beispielprogramm abschaue

    Kopf des FB
    in Sekunden_Soll INT
    in S_Puls BOOL
    out Startanforderung BOOL
    in_out
    var Sekunden_Ist INT
    temp


    AWL-Zeilen des FB


    L #Sekunden_Soll
    T #Sekunden_Ist

    UN #S_Puls
    SPB END

    L #Sekunden_Ist
    L 1
    -I
    T #Sekunden_Ist
    END: NOP 0

    L #Sekunden_Ist
    L 0
    <=I
    = #Startanforderung

    AWL-Zeilen des OB

    CALL FB 1,DB1
    Sekunden_Soll:=10
    S_Puls:=E0.0
    Startanforderung:=A0.0
    Zitieren Zitieren Variablenproblem im FB  

  2. #2
    Registriert seit
    15.04.2011
    Beiträge
    1.122
    Danke
    229
    Erhielt 208 Danke für 176 Beiträge

    Standard

    Du setzt Deinen Zähler bei jedem Zyklus wieder auf den Anfangswert. Dir fehlt noch ein FB-Eingang welcher den Start der Zählung einleitet.

    Z.B.

    Code:
          UN #Start
          SPB M001
          L #Sekunden_Soll
          T #Sekunden_Ist
    M001: UN #S_Puls
    Edit: Außerdem solltest Du den S_Puls flankenauswerten, sonst ist Dein Zähler wohl vor dem Ablauf einer 1 Sekunde auf 0 .
    Geändert von 190B (09.01.2012 um 17:54 Uhr)
    Gruß
    190B

  3. #3
    Registriert seit
    11.05.2005
    Ort
    Baden-Württemberg
    Beiträge
    669
    Danke
    113
    Erhielt 153 Danke für 124 Beiträge

    Standard

    Hi,
    Das Prob ist, daß du jeden Zyklus Soll nach Ist transferierst.

    Micha
    "arbeite klug, nicht hart" - deutsches Sprichwort

  4. #4
    Registriert seit
    09.01.2012
    Beiträge
    30
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Also gut, das problem wäre jetzt gelöst

    habe jetzt auch meinen Zeittakt FB fertig, nur geht er mal wieder leider net ... habe ihn heute schon den ganzen mittag durchprobiert und auch ein paar sachen gefunden, aber es will einfach nicht.
    Ich glaube, dass das problem darin liegt, dass #Arbeit_Ende gleich zu beginn auf True steht, was ja nicht sein darf, da ja noch Zeiten in #Arbeit_Ist gespeichert sind.

    danke für Antworten

    in S_Puls BOOL
    in Takt_aktivieren BOOL
    in Arbeit_Soll_sek INT
    in Arbeit_Soll_min INT
    in Arbeit_Soll_h INT
    in Pause_Soll_sek INT
    in Pause_Soll_min INT
    in Pause_Soll_h INT
    out Betriebsanforderung BOOL
    in_out Arbeit_Ist_sek INT
    in_out Arbeit_Ist_min INT
    in_out Arbeit_Ist_h INT
    in_out Pause_Ist_sek INT
    in_out Pause_Ist_min INT
    in_out Pause_Ist_h INT
    var Flanke_Zeittakt_Start BOOL
    var Flanke_S_Puls BOOL
    var Arbeit_Ende BOOL
    var Pause_Ende BOOL
    var Takt_Befehl_Start BOOL
    temp



    UN #Takt_aktivieren //Arbeitszeit Null setzen
    SPBN M001
    L 0
    T #Arbeit_Ist_sek
    T #Arbeit_Ist_min
    T #Arbeit_Ist_h
    T #Pause_Ist_sek
    T #Pause_Ist_min
    T #Pause_Ist_h
    SPA END

    M001: U #Takt_aktivieren //Arbeitszeit laden
    FP #Flanke_Zeittakt_Start
    SPBN M002
    L #Arbeit_Soll_sek
    T #Arbeit_Ist_sek
    L #Arbeit_Soll_min
    T #Arbeit_Ist_min
    L #Arbeit_Soll_h
    T #Arbeit_Ist_h

    M002: L #Arbeit_Ist_sek //Auswertung Arbeitszeit
    L #Arbeit_Ist_min
    +I
    L #Arbeit_Ist_h
    +I
    L 0
    <=I
    U #Takt_aktivieren
    = #Arbeit_Ende

    L #Pause_Ist_sek //Auswertung Pausenzeit
    L #Pause_Ist_min
    +I
    L #Pause_Ist_h
    +I
    L 0
    <=I
    U #Takt_aktivieren
    = #Pause_Ende

    U #Arbeit_Ende
    U #Takt_Befehl_Start
    SPBN M003
    L #Pause_Soll_sek
    T #Pause_Ist_sek
    L #Pause_Soll_min
    T #Pause_Ist_min
    L #Pause_Soll_h
    T #Pause_Ist_h
    SPA M004

    M003: U #Pause_Ende
    UN #Takt_Befehl_Start
    SPBN M004
    L #Arbeit_Soll_sek
    T #Arbeit_Ist_sek
    L #Arbeit_Soll_min
    T #Arbeit_Ist_min
    L #Arbeit_Soll_h
    T #Arbeit_Ist_h

    M004: UN #Arbeit_Ende
    U #Pause_Ende
    = #Takt_Befehl_Start

    U #Arbeit_Ende
    SPB Paus

    U #Pause_Ende
    SPB END

    U #S_Puls
    FP #Flanke_S_Puls
    SPBN END

    L #Arbeit_Ist_sek
    L 1
    -I
    T #Arbeit_Ist_sek
    L 0
    <=I
    SPB Amin

    SPA END

    Amin: L #Arbeit_Ist_min
    L 1
    -I
    T #Arbeit_Ist_min
    L 0
    <=I
    SPB Ah
    L 59
    T #Arbeit_Ist_sek

    SPA END

    Ah: L #Arbeit_Ist_h
    L 1
    -I
    T #Arbeit_Ist_h
    <=I
    SPB A000
    L 59
    T #Arbeit_Ist_sek
    T #Arbeit_Ist_min

    SPA END

    A000: L 0
    T #Arbeit_Ist_sek
    T #Arbeit_Ist_min
    T #Arbeit_Ist_h

    SPA END

    Paus: L #Pause_Ist_sek
    L 1
    -I
    T #Pause_Ist_sek
    L 0
    <=I
    SPB Pmin

    SPA END

    Pmin: L #Pause_Ist_min
    L 1
    -I
    T #Pause_Ist_min
    L 0
    <=I
    SPB Ph
    L 59
    T #Pause_Ist_sek

    SPA END

    Ph: L #Pause_Ist_h
    L 1
    -I
    T #Pause_Ist_h
    L 0
    <=I
    SPB P000
    L 59
    T #Pause_Ist_sek
    T #Pause_Ist_min

    SPA END

    P000: L 0
    T #Pause_Ist_sek
    T #Pause_Ist_min
    T #Pause_Ist_h

    SPA END

    END: NOP 0

    U #Takt_aktivieren
    U #Takt_Befehl_Start
    = #Betriebsanforderung
    Geändert von Chris48 (10.01.2012 um 21:24 Uhr)

  5. #5
    Registriert seit
    19.03.2009
    Ort
    Stuttgart
    Beiträge
    37
    Danke
    7
    Erhielt 0 Danke für 0 Beiträge

    Standard

    schreib mal bitte was der Baustein machen soll, und was genau nicht geht ?!

  6. #6
    Registriert seit
    09.01.2012
    Beiträge
    30
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Also er soll halt einen Zeittakt ausführen, bei dem jeweils die Pausenzeit und die Arbeitszeit heruntergezählt wird und so ein Motor gestartet bzw. gestoppt wird, das Laden der Soll Zeiten in die Ist zeiten funktioniert auch, auch wird Null in die Ist Zeiten geladen wenn der Zeittakt mit #Zeittakt_Aktivieren nicht gesetzt ist.
    nur kann mit betätigen von S_Puls die zeit nicht sekundenweise heruntergezählt werden (wird später durch einen Taktmerker mit Sekundenimpuls ersetzt) ich glaube das es daher kommt, dass der #Arbeit_Ende schon zu Beginn auf True steht obwohl dass ja erst der fall sein dürfte, wenn die #Arbeits_Ist heruntergelaufen ist und gleich Null ist.

    war das so verständlich ??? finde es schwer mich hier richtig auszudrücken.

    danke für antworten

Ähnliche Themen

  1. B&R Automation Basic - Variablenproblem
    Von be_und_err im Forum Programmierstrategien
    Antworten: 14
    Letzter Beitrag: 17.03.2009, 09:01
  2. Variablenproblem
    Von Elo0815 im Forum Simatic
    Antworten: 5
    Letzter Beitrag: 06.02.2007, 19:00

Lesezeichen

Berechtigungen

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