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

Seite 2 von 2 ErsteErste 12
Ergebnis 11 bis 12 von 12

Thema: Verzögerungsfunktion für ein EW gesucht

  1. #11
    Registriert seit
    07.03.2004
    Beiträge
    4.369
    Danke
    946
    Erhielt 1.158 Danke für 831 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von Thomas_v2.1 Beitrag anzeigen
    ...
    Ich gucke morgen mal ob das bei Codesys mit einem Array of TON auch nicht geht, oder ob das nur Siemens-Spezial ist.
    ...
    Um dem Nachschauen vorweg zu greifen: Ja CoDeSys (TwinCAT und Co.) können auch Arrays von Funktionsblöcken verwalten und somit auch von TON und TOF Arrays abbilden.

    Auf der Siemens Seite würde ich es wohl mit dem Standard FC80 (TON_R oder so ähnlich) versuchen. Der Arbeitet mit dem OB1_Prevcycle und benöttigt nur ein Doppelwort (DINT?) zum Speichern, hier von kann man ja auch bei Siemens ein Array anlegen.
    In SCL könnte man das ganze dann auch noch in eine For-Scheile packen und das Array via Index ansprechen.
    If you open your Mind too much, your Brain will fall out.

  2. Folgender Benutzer sagt Danke zu zotos für den nützlichen Beitrag:

    Bernard (18.11.2009)

  3. #12
    Registriert seit
    28.01.2009
    Ort
    Hamburg
    Beiträge
    199
    Danke
    52
    Erhielt 54 Danke für 34 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    So,habe den ganzen Mist noch einmal überarbeitet.Jetzt werden weder S5 noch IEC Timer verwendet.Habe denTipp von Zotos berücksichtigt und den FC80 genommen.Aus diesem habe ich die Timer gebaut die für die Funktionalitäten gebraucht wurden.Für die Errechnung der Zykluszeit wurde ebenfalls ein eigener Baustein erzeugt.
    Alle Einschaltverzögerungen sowie die Impulszeiten sind für jedes Bit einstellbar,das Format ist t#Time.Die Restlaufzeiten jedes einzelnen Timers sind über Zeitfelder auslesbar.Das Kernprogramm ist in SCL erstellt.
    Habe jetzte keine Lust mehr weiter zu proggen(meine Freundin drohte schon damit,mein neues Notebook in die
    Tonne zu kloppen).
    Pgrogramm liegt bei.
    Beschaltungsmuster liegt bei
    SCL Code
    Code:
    FUNCTION_BLOCK "ew_Totzeit"
    VAR_INPUT//Eingänge
     einwort:WORD;//Totzeit Eingangswort
     ein_Bit AT einwort:ARRAY[1..16] OF BOOL;
     Zeitfeld_Ton:ARRAY[1..16] OF TIME;//Zeitfeld für Eingangsverzögerung
     Zeitfeld_Impuls:ARRAY[1..16] OF TIME; //Zeitfeld für Impulsverlängrung
     END_VAR
    //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    VAR_IN_OUT
    //Durchgänge  
    END_VAR
    //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    VAR_OUTPUT//Ausgänge
    Auswort:WORD;//Totzeitverzögertes Ausgangswort
    Feld_Rest_time_Ton:ARRAY[1..16] OF TIME;//Restzeiten aller Einschaltverzögerungen
    Feld_Rest_time_impuls:ARRAY[1..16] OF TIME;//Restzeit aller Impulsverlängerungnen
    END_VAR
    //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    VAR// statische Variablen
    speicher_timer_ton:ARRAY[1..16] OF DINT;
    speicher_timer_puls:ARRAY[1..16] OF DINT;
    Taktzeit:"Zyklus_TIme";//Erzeugt Zykluszeit
    Speicher_impuls:ARRAY[1..16] OF STRUCT
        Flag:bool;
        FLME_1:BOOL;
        FLME_2:BOOL;
    END_STRUCT;
    Flanken_Speicher:ARRAY[1..16] OF STRUCT
        FLME:BOOL;
        Impuls:BOOL;
        END_STRUCT;
    Index:INT;
    END_VAR
    //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    VAR_TEMP// LokaleVariablen
    Auswort_intern_ton:WORD;
    Auswort_intern_impuls:WORD;
    ausgang_Bit_Ton AT Auswort_intern_ton:ARRAY[1..16] OF BOOL;
    ausgang_Bit_impuls AT Auswort_intern_impuls:ARRAY[1..16] OF BOOL;
    Zykluszeit_intern:INT;
    END_VAR
    //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    BEGIN
    //Vorbelegung index 
    index:=1;
    //Zykluszeit Messung
    Taktzeit();
    Zykluszeit_intern:=Taktzeit.Zykluszeit;
     
     FOR index:=1 TO 16 BY 1 DO
            //Einschaltverzögerung
            Time_TON(Timer_start :=ein_Bit[index]  // IN: BOOL
                   ,Timer_reset :=false // IN: BOOL
                   ,OB1_PREV_CYCLE :=Zykluszeit_intern // IN: INT
                   ,TON_Time_Vorgabe :=Zeitfeld_Ton[index]  // IN: TIME
                   ,Timer_Q :=ausgang_Bit_Ton[index]  // OUT: BOOL
                   ,Timer_Rest_time :=Feld_Rest_time_Ton[index]  // OUT: TIME
                   ,Timer_Speicher :=speicher_timer_ton[index]  // INOUT: DINT
                   ); // VOID
            //Impulerzeugung Einschaltverzögerung zu Ende
            P_Flanke_in_SCL(p_Signal :=NOT ausgang_Bit_Ton[index]  // IN: BOOL
                            ,Impuls := Flanken_Speicher[index].Impuls // OUT: BOOL
                            ,flme :=Flanken_Speicher[index].FLME // INOUT: BOOL
                            ); // VOID
             //Nachlauf Eingang ist false
             Time_Impuls(Timer_start :=  Flanken_Speicher[index].Impuls  // IN: BOOL
                         ,Timer_reset :=false  // IN: BOOL
                         ,OB1_PREV_CYCLE :=Zykluszeit_intern  // IN: INT
                         ,Impuls_Time_Vorgabe :=Zeitfeld_Impuls[index]  // IN: TIME
                         ,Timer_Q :=ausgang_Bit_impuls[index]   // OUT: BOOL
                         ,Timer_Rest_time :=Feld_Rest_time_impuls[index] // OUT: TIME
                         ,Timer_Speicher :=speicher_timer_puls[index]  // INOUT: DINT
                         ,Speicher_bool_Zustand := Speicher_impuls[index].Flag // INOUT: BOOL
                         ,Flme_1 := Speicher_impuls[index].FLME_1// INOUT: BOOL
                         ,Flme_2 := Speicher_impuls[index].FLME_2 // INOUT: BOOL
                         ); // VOID
     END_FOR;
     //Befehlsausgabe
     Auswort:=Auswort_intern_impuls  OR Auswort_intern_ton;
    OK:=true;
    END_FUNCTION_BLOCK
    Viele Grüße Bernard
    Angehängte Grafiken Angehängte Grafiken
    Angehängte Dateien Angehängte Dateien
    Zitieren Zitieren Ew_Totzeit ohne S5Timer  

Ähnliche Themen

  1. AKF 13 gesucht
    Von dben im Forum PC- und Netzwerktechnik
    Antworten: 1
    Letzter Beitrag: 16.07.2012, 08:03
  2. Antworten: 3
    Letzter Beitrag: 17.09.2011, 16:11
  3. S7 - 212 gesucht ...
    Von smartie im Forum Suche - Biete
    Antworten: 2
    Letzter Beitrag: 31.03.2006, 14:29
  4. FB 42 & FB 51 gesucht.
    Von Köbes11 im Forum HMI
    Antworten: 0
    Letzter Beitrag: 20.01.2005, 07:53
  5. Gesucht: S5-CPU 928
    Von PeterEF im Forum Suche - Biete
    Antworten: 2
    Letzter Beitrag: 03.01.2005, 07:30

Lesezeichen

Berechtigungen

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