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

Seite 1 von 3 123 LetzteLetzte
Ergebnis 1 bis 10 von 24

Thema: Problem bei SCL

  1. #1
    Registriert seit
    29.10.2010
    Beiträge
    553
    Danke
    57
    Erhielt 39 Danke für 37 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hi,

    ich möchte in ein ARRAY die RET_VAL Ausgabe des SFC64(TIME_TCK) schreiben, bekomme aber immer nen ungültigen Datentyp. Was mache ich falsch?

    Code:
    FUNCTION FC200: VOID
    VAR_TEMP
    Takt:
    ARRAY[0..9] OF DINT;
    END_VAR
    TIME_TCK(RET_VAL:=Takt[0]); // TIME
    END_FUNCTION
    Zitieren Zitieren Problem bei SCL  

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

    Standard

    Überarbeitet aber nicht getestet:
    Code:
    FUNCTION FC200: VOID
    VAR_TEMP
    Takt: ARRAY[0..9] OF TIME;
    END_VAR
     Takt[0] := TIME_TCK(); // TIME
    END_FUNCTION
    If you open your Mind too much, your Brain will fall out.

  3. #3
    dentech ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    29.10.2010
    Beiträge
    553
    Danke
    57
    Erhielt 39 Danke für 37 Beiträge

    Standard

    Dabei bekomme ich nen Fehler bei Takt[0] := TIME_TCK(); ungültiger Datentyp, wenn ich darauf klicke ist der Fehler hinter den Klammern.

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

    Standard

    Dann hast Du die Änderung in der Variablendeklaration nicht beachtet.

    Ich habe das Array von DINT auf Time umgestellt. Entweder Du macht diese Änderung auch oder du baust noch etwas um z.B. so:

    Takt[0] := TIME_TO_DINT(TIME_TCK());
    If you open your Mind too much, your Brain will fall out.

  5. #5
    dentech ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    29.10.2010
    Beiträge
    553
    Danke
    57
    Erhielt 39 Danke für 37 Beiträge

    Standard

    Thx, das funzt.

  6. #6
    dentech ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    29.10.2010
    Beiträge
    553
    Danke
    57
    Erhielt 39 Danke für 37 Beiträge

    Standard

    Hi,

    habe das jetzt so vervollständigt:

    Code:
    FUNCTION FC200: VOIDVAR_TEMP
    Systemzeit_1 : DINT;
    Systemzeit_2 : DINT;
    Diff_Systemzeit: DINT;
    Test : DINT;
    Zaehler : INT;   
    END_VAR
    IF "SPS Daten".Takt.Takt_Start THEN;
        Systemzeit_1 := TIME_TO_DINT(TIME_TCK());                       //Systemzeit_1 einlesen
    END_IF;
    
    
    IF "SPS Daten".Takt.Takt_Ende THEN;
        Systemzeit_2 := TIME_TO_DINT(TIME_TCK());                       //Systemzeit_2 einlesen
    END_IF;
    
    
                 IF Systemzeit_2 > Systemzeit_1 & "SPS Daten".Takt.Takt_Ende=False & "SPS Daten".Takt.Takt_Start=False THEN;                                                                                           
                        Diff_Systemzeit := Systemzeit_2 - Systemzeit_1;                                                        
                        "SPS Daten".Takt.Takt[0] := Diff_Systemzeit;
                             
                END_IF;
    
    
    END_FUNCTION

    Aber die Zeiten passen auf einmal nicht mehr, bekomme zwischendurch eine negative Differenz.

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

    Standard

    Zitat Zitat von dentech Beitrag anzeigen
    Aber die Zeiten passen auf einmal nicht mehr, bekomme zwischendurch eine negative Differenz.
    Naja das ist klar da Du Variante B gewählt hast Du hättest das Array vielleicht lieber doch auf TIME umgeändert -> siehe Variablendeklaration in meiner ersten Antwort. ---> Das rote TIME



    Time ist eine positive ganzzahl die, die ms wiederspiegelt. DINT geht eben auch ins negative.
    If you open your Mind too much, your Brain will fall out.

  8. #8
    dentech ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    29.10.2010
    Beiträge
    553
    Danke
    57
    Erhielt 39 Danke für 37 Beiträge

    Standard

    habe ich jetzt mal gemacht, aber wieso bekomme ich eine Zeit von 6 Tagen, der müsste doch bei jedem MRES wieder bei 0 anfangen oder?

  9. #9
    Registriert seit
    20.11.2006
    Ort
    Hamburg
    Beiträge
    225
    Danke
    35
    Erhielt 35 Danke für 32 Beiträge

    Standard

    Wenn ich das richtig verstehe, willst du die Systemzeit als Timer verwenden.

    Bedenke, dass die Systemzeit nur bis 2^31 geht und dann wieder bei 0 anfängt. du musst den Überlauf beachten.

  10. #10
    Registriert seit
    19.06.2005
    Ort
    in Bayern ganz oben
    Beiträge
    1.360
    Danke
    188
    Erhielt 372 Danke für 290 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hi,

    und statische Variablen (FB) nehmen.

    Gruss Daniel
    Erfahrung ist eine nützliche Sache. Leider macht man sie immer erst kurz nachdem man sie brauchte...

    OSCAT.lib Step 7

    Open Source Community for Automation Technolgy

    SPS-Forum Chat (Mibbit) | SPS-Forum Chat (MIRC)

Ähnliche Themen

  1. Hilfe bei Problem bei TechnikerArbeit
    Von Borschd im Forum Simatic
    Antworten: 8
    Letzter Beitrag: 04.01.2012, 06:26
  2. Antworten: 9
    Letzter Beitrag: 10.02.2011, 10:46
  3. Scl problem
    Von 301204020608 im Forum Simatic
    Antworten: 21
    Letzter Beitrag: 05.11.2010, 08:32
  4. Problem in SCL
    Von M4RKU5 im Forum Simatic
    Antworten: 9
    Letzter Beitrag: 12.03.2008, 14:30
  5. Brauche Hilfe bei SCL.SFC Aufrufen in SCL
    Von Gerold im Forum Simatic
    Antworten: 10
    Letzter Beitrag: 06.10.2005, 10:47

Lesezeichen

Berechtigungen

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