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

Ergebnis 1 bis 7 von 7

Thema: TON in SCL

  1. #1
    Registriert seit
    30.07.2014
    Beiträge
    11
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hi

    Habe ein Problem, und zwar habe ich eine auf der Siemens SPS in FB in SCL. Am Anfang deklariere ich eine TON den ich später starte. Der Eingang (IN) wird gleich nachdem der Timer nicht mehr benötigt wird auf FALSE gesetzt, um ihn später ein zweites mal zu nutzen. Das Problem ist, dass der Ausgang (Q) trotzdem auf TRUE stehen bleibt, obwohl (Auch laut Hilfe) der Ausgang FALSE wird sobald der Eingang FALSE ist. Beim zweiten mal fängt der Timer dann auch nicht an zu laufen.

    Kennt jemand das Problem oder kann mir helfen?


    tonZeitFuellzeit(IN:= TRUE, PT:= t#5000ms);

    IF NOT i_xAutoBA THEN
    tonZeitFuellzeit.IN := FALSE;
    ...
    iState:=10;

    ELSIF tonZeitFuellzeit.Q AND iq_stHardwareIO.stI.xDrucksensor (* Druck im Eimer aufgebaut! *)
    THEN
    tonZeitFuellzeit(IN:=FALSE , PT:= t#5000ms);
    ...
    iState:=340;

    ELSIF tonZeitFuellzeit.Q AND NOT iq_stHardwareIO.stI.xDrucksensor
    THEN
    tonZeitFuellzeit.IN := FALSE;
    ...
    iState := 10;
    END_IF;


    Gruß
    Phivog
    Zitieren Zitieren TON in SCL  

  2. #2
    Registriert seit
    19.06.2008
    Ort
    Ostalbkreis
    Beiträge
    3.140
    Danke
    201
    Erhielt 553 Danke für 498 Beiträge

    Standard

    Dürfen wir die Variablendeklaration sehen?

  3. #3
    Registriert seit
    19.06.2008
    Ort
    Ostalbkreis
    Beiträge
    3.140
    Danke
    201
    Erhielt 553 Danke für 498 Beiträge

    Standard

    Dürfen wir die Variablendeklaration sehen?

    Code:
    ELSIF tonZeitFuellzeit.Q AND iq_stHardwareIO.stI.xDrucksensor (* Druck im Eimer aufgebaut! *)
            THEN 
                tonZeitFuellzeit(IN:=FALSE , PT:= t#5000ms);
                ...
                iState:=340;
    
            ELSIF tonZeitFuellzeit.Q AND NOT iq_stHardwareIO.stI.xDrucksensor
            THEN
                tonZeitFuellzeit.IN := FALSE;
                ...
    btw.. Mit oder ohne Druckschalter wird der timer 0

  4. #4
    phivog ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    30.07.2014
    Beiträge
    11
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    VAR
    ...
    tonZeitFuellzeit : TON;
    tonPlatteunten : TON;

    END_VAR

    Ja, als das war jetzt ein Beispiel aus dem Programm wo er nicht schaltet. In dem dazugehörigem DB sehe ich, dass der Ausgang noch auf TRUE steht

  5. #5
    Registriert seit
    23.07.2009
    Ort
    Österreich
    Beiträge
    2.354
    Danke
    455
    Erhielt 693 Danke für 518 Beiträge

    Standard

    Seh ich das richtig....

    Wenn du den Timer nochmal verwenden willst wird das hier nicht viel bringen oder?
    tonZeitFuellzeit.IN := FALSE;
    Das setzt den Timer nicht zurück. Da der FB ja nicht aufgerufen wird

    Damit du den Timer rücksetzen kannst musst du auf jeden Fall den FB aufrufen damit er einmal abgearbeitet werden kann.
    tonZeitFuellzeit(IN:=FALSE , PT:= t#xyzms);


    EDIT:
    Es scheitert ja auch schon in deiner Beschreibung
    Zitat Zitat von phivog Beitrag anzeigen
    Hi
    Am Anfang deklariere ich eine TON den ich später starte.
    Der Eingang (IN) wird gleich nachdem der Timer nicht mehr benötigt wird auf FALSE gesetzt, um ihn später ein zweites mal zu nutzen.
    Wie gesagt es bringt nichts den nur den Eingang IN auf FALSE zu setzen und den FB nicht durchlaufen zu lassen
    Zitat Zitat von phivog Beitrag anzeigen
    Das Problem ist, dass der Ausgang (Q) trotzdem auf TRUE stehen bleibt, obwohl (Auch laut Hilfe) der Ausgang FALSE wird sobald der Eingang FALSE ist.
    Jep, woher soll den der FB wissen das sein IN sich geändert hat wenn er inzwischen noch nie abgelaufen ist...?
    Die Hilfe geht übrigens davon aus das der Timer aufgerufen wird, und nicht durch irgendwelche IFs übersprungen wird...
    Zitat Zitat von phivog Beitrag anzeigen
    Beim zweiten mal fängt der Timer dann auch nicht an zu laufen.
    Warscheinlich hast du zu dem Zeitpunkt den Eingang IN schon wieder auf TRUE, der FB wurde aber nie mit IN=FALSE durchlaufen. Das kriegt der gar nicht mit.
    Timer sind keine Hellseher...
    Geändert von RONIN (28.10.2014 um 16:08 Uhr)
    If at first you don't succeed, you're not Van Damme!
    ... or maybe using TIA!

  6. #6
    Registriert seit
    19.06.2008
    Ort
    Ostalbkreis
    Beiträge
    3.140
    Danke
    201
    Erhielt 553 Danke für 498 Beiträge

    Standard

    Wird der FB in Abhängigkeit ausgeführt?

    Ist irgendwo ein CASE of iState drinn?

  7. #7
    Registriert seit
    27.06.2009
    Ort
    am Nordharz
    Beiträge
    3.717
    Danke
    443
    Erhielt 920 Danke für 740 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Im Augenblick wird der Timer durch die erste Zeile in jeden Zyklus mit IN:= TRUE aufgerufen.
    Später setzt Du zwar den IN: auf FALSE, aber das bekommt der TON nicht mit, wie RONIN bereits erklärt hat, weil er mit diesem Parameter nicht aufgerufen wird.

    Der momentan einzige Aufruf des TONs:
    Zitat Zitat von phivog Beitrag anzeigen
    Code:
    tonZeitFuellzeit(IN:= TRUE, PT:= t#5000ms);
    Auf jeden Fall gut, dass der Timer selbst nicht durch irgendwelche IFs usw. übersprungen wird. Aber IN: ist immer TRUE, egal was sonst so folgt oder vorweg geschehen ist.


    In Summe aller Bedingungen, die man in obigen Code sieht, müßte der Aufruf in etwa so aussehen:
    Code:
    tonZeitFuellzeit(IN:= i_xAutoBA AND NOT tonZeitFuellzeit.Q, PT:= t#5000ms);
    (Der Drucksensor iq_stHardwareIO.stI.xDrucksensor hat nur Auswirkungen auf den iState, wenn ich das richtig sehe?)


    Das Problem wird sein, das sich der Timer durch das "NOT tonZeitFuellzeit.Q" sofort wieder selber startet (wenn nicht mit dem Aktivieren des Timers die Automatik "i_xAutoBA" abgeschaltet wird) und der Zeitablauf damit von Neuem beginnt. Sieht aber irgendwie nicht so gewollt aus, oder?




    PS: Verwende bitte mal den Code-Button (#) für's Programm. Ganz rechtes Icon in der 2. Reihe. Dann ist es besser lesbar und Du kannst auch Einrückungen und andere (Leer-) zeichen posten.

Ähnliche Themen

  1. TIA S7 1200 SCL Array of TON
    Von mathiak im Forum Simatic
    Antworten: 29
    Letzter Beitrag: 18.08.2014, 14:10
  2. TIA V11 SCL TON Multiinstanz
    Von MrEASY im Forum Simatic
    Antworten: 14
    Letzter Beitrag: 04.03.2013, 15:17
  3. Scl ton
    Von bluebird277 im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 19.11.2010, 11:24
  4. SFB4 (TON) in SCL
    Von Gerri im Forum Simatic
    Antworten: 8
    Letzter Beitrag: 06.10.2009, 21:11
  5. TON als Multiinstanz unter SCL
    Von derwestermann im Forum Simatic
    Antworten: 0
    Letzter Beitrag: 09.10.2007, 13:30

Lesezeichen

Berechtigungen

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