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

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 14

Thema: Schrittkette?? noch nie gemacht.

  1. #1
    Registriert seit
    27.09.2008
    Beiträge
    201
    Danke
    21
    Erhielt 11 Danke für 10 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,

    bevor alle mich zurechtweisen: ich habe die Suche bereits bemüht, aber nichts wirklich passendes gefunden.

    Vielleicht ist eine Schrittkette auch falsch und es geht besser in ST. Aber erst mal denke ich an AS.


    Ich brauche folgendes:
    Variablen:
    VAR_INPUT
    Aktivierung_SK :BOOL;
    Nachlauf_Umwälzung_SK :TIME;
    Abfluss_SK :TIME;
    HG_DAUER_ingesamt_SK :TIME;
    HG_Takt_HI_SK :TIME;
    HG_Takt_LO_SK :TIME;
    Wartezeit_SK :TIME;

    END_VAR

    VAR_OUTPUT
    Umwaelzung_Kontakt_SK :BOOL;
    Abfluss_Kontakt_SK :BOOL;
    HG_Kontakt_SK :BOOL;
    Ablauf_beendet :BOOL;
    Umwaelzung_Ablauf :Time;
    Abfluss_Ablauf :Time;
    HG_Dauer_Ablauf :Time;
    Wartezeit_Ablauf :Time;

    END_VAR


    Der Programmablauf sollte folgender sein (kein Anspruch auf korrekten Code, will es nur mal so zeigen):


    Entweder:
    Aktivierung_SK=False ---->>> Return (nichts soll passieren)


    Oder:
    Aktivierung_SK=True

    dann

    -->>Umwaelzung_Kontakt=True für die Dauer von Nachlauf_Umwälzung
    Dabei soll Umwaelzung_Ablauf angezeigt werden.

    danach

    -->>Abfluss_Kontakt_SK=True für die Dauer von Abfluss_SK
    Dabei soll Abfluss_Ablauf angezeigt werden.

    danach

    -->>Ablauf der Zeit HG_Dauer_insgesamt, innerhalb dieser Zeit soll ein Taktgeber, der durch HG_Takt_HI_SK und HG_Takt_LO_SK parametriert ist, den Ausgang HG_Kontakt_SK schalten.
    Dabei soll HG_Dauer_Ablauf angezeigt werden.

    danach

    -->>Ablauf der Zeit Wartezeit_SK

    danach

    -->> Ablauf_beendet soll für 1 Sekunde schalten, um anzuzeigen, dass der Ablauf beendet ist.

    Wie löst man so eine Aufgabe am Besten?

    Danke schon mal für´s Lesen.


    Gruss

    McNugget
    Zitieren Zitieren Schrittkette?? noch nie gemacht.  

  2. #2
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.718
    Danke
    398
    Erhielt 2.400 Danke für 2.000 Beiträge

    Standard

    Hallo,
    nur mal so als Start-Impuls :
    Code:
    U 10.0
    U Aktivierung_SK
    U Umwaelzung_Kontakt
    S M 10.1
    R M 10.0
     
    U M10.1
    L Nachlauf_Umwälzung
    SE T1
    U T1
    S M10.2
    R M10.1
     
    U M10.2
    U Abfluss_Kontakt_SK
    S M10.3
    R M10.2
     
    U M10.3
    L Abfluss_SK
    SE T2
    U T2
    S M10.4
    R M10.3
     
    usw.
    Vielleicht bringt dich das etwas in die Spur ...

    Gruß
    LL

  3. #3
    Registriert seit
    19.11.2006
    Beiträge
    1.346
    Danke
    6
    Erhielt 254 Danke für 231 Beiträge

    Standard

    Meine Hilfestellung für CoDeSys /TwinCAT:

    Code:
    IF bedingung OR bedingung1 then
      (*tu_dies*);
    ELSIF bedingung2 then
      (*tu_das*);
    ELSE 
      (*tu_was_anderes*);
    END_IF
    Schrittketten in ST gehen gut mit CASE-Anweisungen:
    Code:
    (* Bedingung für Start der Schrittkette*)
    IF Startbdingung AND NOT Abbruchbedingung THEN
      Schrittzahler := 1;
    END_IF
    
    CASE Schrittzahler OF
    1: (*....*)
        Schrittzahler := 2;
    2: (*....*)
        Schrittzahler := 3;
    3: (*....*)
        Schrittzahler := 4;
    4: (*....*)
        Schrittzahler := 0;
    END_CASE
    
    (* Abbruch der Schrittkette *)
    IF Abbruchbedingung THEN
       Schrittzahler := 0;
    END_IF

  4. #4
    Registriert seit
    06.06.2008
    Beiträge
    13
    Danke
    3
    Erhielt 2 Danke für 2 Beiträge

    Standard

    Hallo MC Nugget

    habe mal auf die schnelle eine Schrittkette aufgestellt so wie wir sie programmieren das ganze wird in AS als FB programmiert.
    Angehängte Grafiken Angehängte Grafiken
    Zitieren Zitieren Schrittkette  

  5. #5
    McNugget ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    27.09.2008
    Beiträge
    201
    Danke
    21
    Erhielt 11 Danke für 10 Beiträge

    Standard

    Hallo allerseits.

    vielen Dank für die vielen Ansätze.

    @LL: Vielen Dank für Deine Mühe. Mit AWL habe ich so meine Probleme. Habe ich noch nie verwendet, da ich alles bisher gut in FUP erledigen konnte. Ich wollte es extra in AS haben, da hier zyklische Abläufe am besten zu bewältigen sind.
    Am liebsten möchte ich mich gar nicht mit AWl beschäftigen, das fand ich in der Berufsschule schon recht umständlich. Lieber ST und FUP und eben für diesen Ablauf mal AS.

    @Trinitaucher:Ein Ansatz in ST ist auch nicht schlecht. ich werde das Ganze alternativ noch mal in ST durchkauen, um es mal zu üben. Vielen Dank.

    @Zickenbändiger: So hatte ich mir das gedacht. Aber ich verstehe nicht, wie das laufen soll: Wie sage ich dem gesamten AS-Baustein "test" dass er 1-Mal abgearbeitet werden soll und springe dann wieder heraus?
    Neben "Init" ist "Action_1" Rufe ich mit so einer Aktion ein Unterprogramm auf?
    Wie drücke ich aus dem Unterprogramm aus, dass dieses beendet ist und dass nun zum nächsten Block gesprungen werden kann?

    Aktuell habe ich es in FUP realisiert, mit vielen Sets und Resets. Funktioniert, ist aber irgendwie nicht soo schön, weil man wirklich alles explizit abfangen muss.

    Wie gesagt: habe noch nie was in AS gemacht, und leider mein schlaues Büchlein schon länger nicht mehr wiederbekommen.

    Vielen Dank noch mal an alle, die sich dir Mühe gemacht haben, zu antworten.

    McNugget

  6. #6
    Registriert seit
    25.09.2005
    Ort
    Neuss
    Beiträge
    278
    Danke
    11
    Erhielt 31 Danke für 29 Beiträge

    Standard

    Besser ist es, den gewollten Zustand (Schritt) in einer Integer-Variablen zu speichern. Die Zuweisung kann z.B. mit einem "move" in FUP geschehen. Die gewünschten Aktionen (Abfrage auf Schritt-Nr) kann an entsprechneder Stelle mittels Vergleicher (CMP ==I) geschehen. Funktionieren wird auch eine Variante mit einzeln gestezten Bits - die sind aber aufwendiger zu verwalten und führen schnell zu Fehlern (mehrere Bits gesetzt) - deshalb haben auch viele dieser Schrittketten einen "All-Reset" .

  7. #7
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.718
    Danke
    398
    Erhielt 2.400 Danke für 2.000 Beiträge

    Standard

    Hallo,
    für eine Realisierung in ST / SCL würde ich persönlich den Vorschlag 2 von Trinitaucher favourisieren. Das kommt einer schrittweisen Bearbeitung und einer sauberen Strukturierung am Ehesten entgegen ...

    Gruß
    LL

  8. #8
    McNugget ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    27.09.2008
    Beiträge
    201
    Danke
    21
    Erhielt 11 Danke für 10 Beiträge

    Standard

    @HeizDuese: Das mit "move" und der Integer-Variablen verstehe ich nicht so ganz. Kann ich mir das so vorstellen: wenn Erster Schritt dann setze Status-Variable auf "1".
    Wenn Statusvariable ="1" dan arbeite den zweiten Schritt ab. nach Abarbeiten des zweiten Schritts setze Statusvariable auf "2".. usw???

    Quasi ein "Nockenzähler"???

    @LL: Ja, den Ansatz finde ich auch klasse, nur habe ich da wieder das Problem, dass ich viele Zeiten ablaufen lassen muss. Das war ja in ST nicht so schrecklich einfach und fehlerfrei zu realisieren.

    Gruss

    McNugget

  9. #9
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.718
    Danke
    398
    Erhielt 2.400 Danke für 2.000 Beiträge

    Standard

    Zitat Zitat von McNugget Beitrag anzeigen
    @LL: Ja, den Ansatz finde ich auch klasse, nur habe ich da wieder das Problem, dass ich viele Zeiten ablaufen lassen muss. Das war ja in ST nicht so schrecklich einfach und fehlerfrei zu realisieren.
    Wo ist das Problem ?
    Du mußt es nur richtig anfangen. Ich würde an dieser Stelle vielleicht nicht unbedingt einen "normalen" Timer nehmen, sondern vielleicht einen IEC-Timer. Das ist dann kein Problem.
    Eine andere Alternative wäre sich die Uhrzeit (Systemzeit) beim Start der Zeitfunktion zu "merken" plus der gewünschten Verzögerung und dann immer vergleichen, ob die aktuelle Zeit größer als die "gemerkte" Zeit ist.

    Gruß
    LL
    Geändert von Larry Laffer (16.10.2008 um 17:18 Uhr)

  10. #10
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.222
    Danke
    533
    Erhielt 2.697 Danke für 1.949 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von Larry Laffer Beitrag anzeigen
    Wo ist das Problem ?
    Du mußt es nur richtig anfangen. Ich würde an dieser Stelle vielleicht nicht unbedingt einen "normalen" Timer nehmen, sondern vielleicht einen IEC-Timer. Das ist dann kein Problem.
    Eine andere Alternative wäre sich die Uhrzeit (Systemzeit) beim Start der Zeitfunktion zu "merken" plus der gewünschten Verzögerung und dann immer vergleichen, ob die aktuelle Zeit größer als die "gemerkte" Zeit ist.

    Gruß
    LL
    LL, dies ist der Beckhoff-Thread ! Da gibts nur IEC-Timer.
    Gruß
    Ralle

    ... there\'re 10 kinds of people ... those who understand binaries and those who don\'t …
    and the third kinds of people … those who love TIA-Portal

Ähnliche Themen

  1. Hausautomation wie gemacht???
    Von DerPaul im Forum Gebäudeautomatisierung
    Antworten: 8
    Letzter Beitrag: 18.03.2010, 10:58
  2. Antworten: 3
    Letzter Beitrag: 21.01.2009, 08:32
  3. Wer hat schon mal was mit ADS und CE5.0 gemacht?
    Von repök im Forum CODESYS und IEC61131
    Antworten: 1
    Letzter Beitrag: 07.09.2008, 13:36
  4. kaPUT gemacht
    Von Borsti im Forum Simatic
    Antworten: 9
    Letzter Beitrag: 19.05.2007, 13:41
  5. Öffentlich gemacht
    Von Markus im Forum Hochsprachen - OPC
    Antworten: 5
    Letzter Beitrag: 17.03.2007, 08:22

Lesezeichen

Berechtigungen

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