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

Seite 2 von 3 ErsteErste 123 LetzteLetzte
Ergebnis 11 bis 20 von 24

Thema: Timerproblem in SCL

  1. #11
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.727
    Danke
    398
    Erhielt 2.404 Danke für 2.002 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von schnecke Beitrag anzeigen
    Würde das Ganze auch auf die von mir dargestellte Art mittels der IF-Anweisung funktionieren?
    Das geht so noch einfacher :
    Code:
    actFlag_T10:= Taste an not Ausgang ;
    Im Grunde entsteht SCL bei solchen Sachen aus der AWL-Syntax. Das heißt, dass alle Gesetzmäßigkeiten und Vorgehensweisen von AWL auch hier ihre Gültigkeit haben / behalten.

    Gruß
    Larry

  2. #12
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.197
    Danke
    926
    Erhielt 3.292 Danke für 2.661 Beiträge

    Standard

    tempFlag ist eine BOOL-Variable, die einfach nur zur Übergabe von T10.Q an T11.S benutzt wird
    (also des Ausgangs des ersten Timers an den Eingang des zweiten Timers = hintereinander schalten).
    In AWL würde ich das Flag als Schmiermerker oder Connector bezeichnen.

    TEMP würde ausreichen, das Flag braucht kein Gedächtnis.

    Mit IF ... kann man es bestimmt auch machen, doch das ist mir zu umständlich.

    Harald
    Es ist immer wieder überraschend, wie etwas plötzlich funktioniert, sobald man alles richtig macht.

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  3. #13
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.197
    Danke
    926
    Erhielt 3.292 Danke für 2.661 Beiträge

    Standard

    Zitat Zitat von schnecke Beitrag anzeigen
    Startet dann die ASV unverzüglich über dieses "tempFlag"?
    Ausgang wird true, wenn Taste mindestens 1s gedrückt ist und geht 4s nach loslassen von Taste wieder auf false.

    Harald
    Es ist immer wieder überraschend, wie etwas plötzlich funktioniert, sobald man alles richtig macht.

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  4. #14
    schnecke ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    05.07.2010
    Beiträge
    148
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Ok, dank' euch!

    TEMP würde ausreichen, das Flag braucht kein Gedächtnis.
    Aber unter VAR muss es doch als BOOL deklariert werden, oder?


    Code:
    actFlag_T10:= Taste AND NOT Ausgang;
    actFlag_T11:= Ausgang AND NOT Taste;
    Wie müssten denn dann für obigen Code die Einträge hinter S:= und Q:= in den beiden Zeilen currTime_T10 und currTime_T11 lauten?
    Geändert von schnecke (13.09.2010 um 17:38 Uhr)
    L.G. schnecke

  5. #15
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.197
    Danke
    926
    Erhielt 3.292 Danke für 2.661 Beiträge

    Standard

    Sobald T10 true wird, wird dieses true über tempFlag an den Eingang von T11 gegeben.
    Weil T11 eine Ausschaltverzögerung ist, geht der Ausgang von T11 und damit Ausgang sofort auf true.

    Wenn Du den Code testen/simulieren würdest, dann würdest Du dieses Verhalten feststellen:
    Code:
               | 1s |   |-      4s      -|
                _______
    Taste    __|       |____________________
                     __
    T10.Q    _______|  |____________________
                     ____________________
    T11.Q    _______|                    |__
                     ____________________
    Ausgang  _______|                    |__
    Die Frage zu dieser Antwort hast Du mittlerweile wieder gelöscht ...

    Zur neuen Frage:
    Zitat Zitat von schnecke Beitrag anzeigen
    TEMP würde ausreichen, das Flag braucht kein Gedächtnis.
    Aber unter VAR muss es doch als BOOL deklariert werden, oder?
    tempFlag muß auf jeden Fall irgendwo als BOOL deklariert werden, wenn Du es benutzen willst.
    Das kann unter VAR sein, dann hat die Variable ein Gedächtnis und benötigt Platz im Instanz-DB.
    Laut SCL-Hilfe gibt es auch noch VAR_TEMP, dann hat die Variable kein Gedächtnis und belegt
    keinen Platz im Instanz-DB.

    Harald
    Es ist immer wieder überraschend, wie etwas plötzlich funktioniert, sobald man alles richtig macht.

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  6. #16
    schnecke ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    05.07.2010
    Beiträge
    148
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Zitat Zitat von PN/DP Beitrag anzeigen
    Die Frage zu dieser Antwort hast Du mittlerweile wieder gelöscht ...
    Yep, weil ich es mittlerweile durch Simulieren nachvollziehen konnte und die Frage somit erledigt war!

    Vielen Dank nochmals für deine Mühe...


    Wenn ich folgenden Code anwenden würde:

    Code:
    actFlag_T10:= Taste AND NOT Ausgang;
    actFlag_T11:= Ausgang AND NOT Taste;
    Was müsste dann in den folgenden beiden Zeilen für S:= und Q:= eingetragen werden?

    Code:
    currTime_T10:= S_ODT (T_NO:= T10, S:=?, TV:= T#1s, R:= FALSE, BI:= biVal_T10, Q:= ?);
    currTime_T11:= S_OFFDT (T_NO:= T11, S:=?, TV:= T#4s, R:= FALSE, BI:= biVal_T11, Q:= ?);

    Sorry, aber dieses SCL bringt mich als SPS-Anfängerin zur Verzweiflung...
    Geändert von schnecke (13.09.2010 um 18:11 Uhr)
    L.G. schnecke

  7. #17
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.727
    Danke
    398
    Erhielt 2.404 Danke für 2.002 Beiträge

    Standard

    Zitat Zitat von schnecke Beitrag anzeigen
    Was müsste dann in den folgenden beiden Zeilen für S:= und Q:= eingetragen werden?
    Hallo,
    das hatte dir PN/DP im Beitrag#9 in diesem Thread schon beantwortet ...

    Gruß
    Larry

  8. #18
    schnecke ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    05.07.2010
    Beiträge
    148
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Zitat Zitat von Larry Laffer Beitrag anzeigen
    Hallo,
    das hatte dir PN/DP im Beitrag#9 in diesem Thread schon beantwortet ...

    Gruß
    Larry
    1)

    Ja, aber folgender Code kann doch auch für sich alleine stehen:

    Code:
    currTime_T10:= S_ODT (T_NO:= T10, S:=Taste, TV:= T#1s, R:= FALSE, BI:= biVal_T10, Q:= tempFlag);
    currTime_T11:= S_OFFDT (T_NO:= T11, S:=tempFlag, TV:= T#4s, R:= FALSE, BI:= biVal_T11, Q:= Ausgang);
    2)

    Wenn ich nun aber deinem Vorschlag folge und programmiere

    Code:
    actFlag_T10:= Taste AND NOT Ausgang;
    actFlag_T11:= Ausgang AND NOT Taste;
    dann muss doch auch definiert werden, was eine Ein- u. eine Ausschaltverzögerung ist... wie wird das bewerkstelligt?

    Doch wohl nicht auch über den Code unter 1) oder?
    L.G. schnecke

  9. #19
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.727
    Danke
    398
    Erhielt 2.404 Danke für 2.002 Beiträge

    Standard

    Hallo,
    das geht mir jetzt wieder ein bißchen durcheinander ...
    Die Funktion des Timers (Ein- oder Ausschaltverzögerung) hast du mit dem Aufruf schon festgelegt :
    S_ODT = OnDelayTime = Einschaltverzögerung
    S_OFFDT = OFFDelayTime = Ausschaltverzögerung

    Wenn der Timer T10 nach Ablauf den Timer T1 starten soll, so geht das nur in dem du ihm die Information dafür übergibst. Dafür hat Harald (PN/DP) in seinem Beispiel die Temp-Variable "tempFlag" vom Typ Bool gewählt.

    In meinem Beitrag wollte ich dir nur zeigen, dass du außer der IF-Geschichte (wie von dir angedacht) auch noch die Möglichkeit hast mit einer direkten Zuweisung zu arbeiten. Dein IF-Konstrukt würde nur funktionieren, wenn sich dein Baustein den Zustand merken kann - das würde bedeuten, dass du einen FB erstellst und die Hilfsvariable im STAT-Bereich deklariert ist. Ich weiß im Augenblick nicht, ob das bei dir nun so war. Meine Zuweisung (vorausgesetzt sie war sio korrekt) würde auch mit einer TEMP-Variablen und somit auch in einem FC funktionieren, da sie in jedem Programmzyklus wieder aus Neue erfolgt ...

    Gruß
    Larry

  10. #20
    schnecke ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    05.07.2010
    Beiträge
    148
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo LL,

    danke für deine Antwort - leider habe ich noch immer ein riesiges Verständnisproblem...

    Die Aufgabe war ja, dass nach dem Drücken einer Taste nach 1s ein Ausgang angeht und wenn diese Taste losgelassen wird, der Ausgang nach 4s wieder ausgeht.

    So, nun kann ich das über den Vorschlag von Harald (PN/DP) mittels der Temp-Variable "tempFlag" vom Typ Bool bewerkstelligen. Das ist soweit klar!

    Was jedoch noch nicht klar ist:

    Wenn ich nun das Ganze über eine direkte Zuweisung entsprechend folgendem Code

    Code:
    actFlag_T10:= Taste AND NOT Ausgang;
    actFlag_T11:= Ausgang AND NOT Taste;
    programmieren möchte, so muss ich doch ebenfalls die Timerart

    S_ODT = OnDelayTime = Einschaltverzögerung
    S_OFFDT = OFFDelayTime = Ausschaltverzögerung

    irgendwo definieren - wo mache ich das denn?

    ... denn den Programmcode von Harald habe ich ja dann nicht, wenn ich es über eine direkte Zuweisung machen möchte!

    Vielen Dank für die Hilfe...
    L.G. schnecke

Ähnliche Themen

  1. Timerproblem
    Von Tobias2k9 im Forum Programmierstrategien
    Antworten: 5
    Letzter Beitrag: 14.01.2009, 13:29
  2. Parallel laufende Programme - Timerproblem?
    Von ogstyle im Forum Simatic
    Antworten: 13
    Letzter Beitrag: 27.06.2007, 13:45
  3. Timerproblem!
    Von Merker0.0 im Forum Simatic
    Antworten: 5
    Letzter Beitrag: 04.08.2006, 22:48
  4. Timerproblem im FB
    Von samson im Forum Simatic
    Antworten: 7
    Letzter Beitrag: 24.09.2005, 13:20

Lesezeichen

Berechtigungen

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