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

Ergebnis 1 bis 4 von 4

Thema: Timer (Array?)

  1. #1
    Registriert seit
    11.05.2006
    Beiträge
    2
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,
    und zwar wollte ich fragen ob ich diese Einschaltverzögerung auch in eine For-Schleife machen kann?

    Zeitwert[1]:= S_ODT(T_NO:=T1, S:=X[1],TV:=T#1s,Q:=Status[1]);
    Zeitwert[2]:= S_ODT(T_NO:=T2, S:=X[2],TV:=T#1s,Q:=Status[2]);
    Zeitwert[3]:= S_ODT(T_NO:=T3, S:=X[3],TV:=T#1s,Q:=Status[3]);
    Zeitwert[4]:= S_ODT(T_NO:=T4, S:=X[4],TV:=T#1s,Q:=Status[4]);

    Ich habe Probleme mit dem " T_NO:=T? ", denn das möchte ich am liebsten in ein Array schreiben, damit ich eine For-Schleife erstellen kann.Ich stell mir das wie folgt vor:

    For i:=1 to 4 do
    Zeitwert[i]:= S_ODT(T_NO:=T[i], S:=X[i],TV:=T#1s,Q:=Status[i]);
    End_For;

    Doch so klappt es nicht mit dem " T[i] ".
    Könnt ihr mir vielleicht helfen, warum es nicht klappt und wie ich es richtig machen kann?

    Liebe Grüße
    Torsten
    Zitieren Zitieren Timer (Array?)  

  2. #2
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.222
    Danke
    533
    Erhielt 2.698 Danke für 1.950 Beiträge

    Standard

    RTFM

    Siemens-Hilfe zu SCL T_ODT (Aufruf von Zeitfunktionen):


    Zeitfunktionen werden aufgerufen wie Funktionen. Die Funktionsbezeichnung kann überall anstelle eines Operanden in einen Ausdruck eingesetzt werden, solange der Typ des Funktionsergebnisses mit dem des ersetzten Operanden kompatibel ist.
    Der Funktionswert (Rückgabewert) der an die Aufrufstelle zurückgegeben wird, ist ein Zeitwert vom DatentypS5TIME.
    Absoluter oder dynamischer Aufruf
    Beim Aufruf können Sie als Nummer der Zeitfunktion einen absoluten Wert (z. B. T_NO:=T10) vom Datentyp TIMER eingeben. Ein solcher Wert kann allerdings zur Laufzeit nicht mehr verändert werden.
    Anstelle der absoluten Nummer können Sie auch eine Variable oder eine Konstante vom Datentyp INT angeben. Das hat den Vorteil, dass Sie den Aufruf dynamisch gestalten können, indem Sie der Variablen bei jedem Aufruf eine andere Nummer zuweisen.
    Eine weitere Möglichkeit des dynamischen Aufrufs ist die Angabe einer Variablen vom Datentyp TIMER.
    Beispiele
    //Beispiel für einen absoluten Aufruf:
    CurrTime:=S_ODT (T_NO:=T10,
    S:=TRUE,
    TV:=T#1s,
    R:=FALSE,
    BI:=biVal,
    Q:=actFlag);

    //Beispiel für einen dynamischen Aufruf: Bei jedem Durchlauf
    //einer FOR-Schleife wird eine andere Zeitfunktion aufgerufen:
    FUNCTION_BLOCK ZEIT
    VAR_INPUT
    MEINE_ZEIT: ARRAY [1..4] of STRUCT
    T_NO: INT;
    TV : WORD;
    END_STRUCT;
    .
    .
    END_VAR
    .
    .
    FOR I:= 1 TO 4 DO
    CurrTime:= S_ODT(T_NO:=MEINE_ZEIT[i].T_NO, S:=true,
    TV:= MEINE_ZEIT[i].TV);
    END_FOR;

    //Beispiel für einen dynamischen Aufruf bei Verwendung einer
    //Variablen vom Datentyp TIMER:
    FUNCTION_BLOCK ZEITGEBER
    VAR_INPUT
    meineZeit:TIMER;
    END_VAR
    .
    .
    CurrTime:=S_ODT (T_NO:=meineZeit,.....);
    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

  3. #3
    amw ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    11.05.2006
    Beiträge
    2
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Danke erstmal für die Hilfe,
    aber das klappt nicht so ganz wie das in der Hilfe beschrieben ist.
    Außerdem ist "TV" nicht vom Datentyp "Word" sondern vom Datentyp "S5TIME",also kann das schonmal nicht so klappen.

    Also meine Fragen wären:
    1. Wie kann ich einer Variable ein Zeitwert vom Datentyp "S5TIME" zuweisen?
    2. Hast du vielleicht ein Programm, wo du schon einmal so eine Einschaltverzögerung mit einer For-Schleife dynamisch aufgerufen hast?

    Denn irgendwie klappt das nicht ganz mit der Kennnummer "T_NO".
    Mit einer Einschaltverzögerung geht das, jedoch wenn ich 2 Einschaltverzögerung habe,dann geht es schon nicht mehr!

    Liebe Grüße
    Torsten

  4. #4
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.222
    Danke
    533
    Erhielt 2.698 Danke für 1.950 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Geht doch eigentlich:

    Code:
     
    FUNCTION FC96 : INT
    Title = 'ST_Modul'
    //
    // 4 unterschiedliche Zeiten starten
    //
    Version : '1.0'
    author  : Ralle
    name    : ST_MOD
    family  : MODUL
    // Bausteinparameter
    VAR_INPUT
      // Eingangsparameter
      MEINE_ZEIT: ARRAY [1..4] OF STRUCT
      T_NO: INT;
      TV : s5Time;
      END_STRUCT;
    END_VAR
    VAR_IN_OUT
      // In-OUT-Parameter  
      END_VAR
    VAR_TEMP
      // temporäre Variablen
      i: INT;
      CurrTime: S5TIME;
     END_VAR
    FOR I:= 1 TO 4 DO
    CurrTime:= S_ODT(T_NO:=MEINE_ZEIT[i].T_NO, S:=true, 
    TV:= MEINE_ZEIT[i].TV);
    END_FOR;
      ;
      FC96 := 100;
    END_FUNCTION
    Außen an den FC muß das Array ran (z.Bsp, die Struct nochmal in einem DB definieren). Die Timernummern die du dort einträgst dürfen nur einmal vergeben werden sonst ein Timer mehrmals gestartet wird. Es gibt noch die IEC-Timer, damit ginge es evt. besser, die nutze ich selbst aber nie.
    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. Antworten: 18
    Letzter Beitrag: 21.12.2016, 17:03
  2. Timer
    Von blurry333 im Forum Simatic
    Antworten: 15
    Letzter Beitrag: 18.02.2011, 09:22
  3. Timer in FB
    Von Robot-Sun im Forum Programmierstrategien
    Antworten: 10
    Letzter Beitrag: 09.09.2007, 12:48
  4. Suche Ersatz für IFM TIMER LG ( Logik Timer)
    Von GrafLaugenkotz im Forum Sonstige Steuerungen
    Antworten: 1
    Letzter Beitrag: 16.01.2007, 17:02
  5. Bool-Array in Byte-Array
    Von Techniker im Forum Sonstige Steuerungen
    Antworten: 10
    Letzter Beitrag: 13.01.2006, 19:12

Lesezeichen

Berechtigungen

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