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

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

Thema: oscat lib 1.5

  1. #11
    Registriert seit
    06.10.2003
    Beiträge
    3.411
    Danke
    451
    Erhielt 505 Danke für 408 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo hugo,

    deinen Test mit t1, t2 und t3 habe ich durchgeführt, funktioniert natürlich.

    Zitat Zitat von hugo Beitrag anzeigen
    ..auch beim überlauf erbibt die subtraktion ein gutes ergebniss, auch dann wenn der alte wert noch nicht übergelaufen wäre..
    Wenn (Tx - last) für nur einen einzigen Zyklus einen sehr großen negativen Wert annimmt, findet sich dein PT1-Glied nicht wieder.


    Die Korrektur bei Überlauf müsste ungefähr so aussehen:
    Code:
    #dt := TIME_TCK() - last;
    IF #dt < T#0ms THEN
        #dt := #dt + T#24D_20H_31M_23S_647MS;
    END_IF;
    Gruß, Onkel
    Angehängte Grafiken Angehängte Grafiken
    Geändert von Onkel Dagobert (12.03.2007 um 00:17 Uhr)
    Es gibt viel mehr Leute, die freiwillig aufgeben, als solche, die echt scheitern.
    Henry Ford

  2. #12
    Registriert seit
    29.08.2006
    Beiträge
    195
    Danke
    0
    Erhielt 35 Danke für 21 Beiträge

    Standard

    hi dagobert,
    danke das du den überlauf test für mich gemacht hast.
    da er funktioniert wird es auch kein überlaufproblem geben.
    den wir werten nie auf gropßer kleiner aus, sondern vielmehr machen wir immer tx := time() - last
    und tx wird dann ausgewertet.

    tx ergibt aber nie einen unsinnigen wert den wie dein test ja beweist ist die subtraktion auch bei überlauf ok.

    eventuelle startup probleme beheben wir durch init direkt beim ersten aufruf.

    eine korrektur wie du sie vorschlägst sollte also nicht nötig sein.

    es ist völlig egal ob time nun negativ ode positiv ist. die differenz zweier zeiten ergibt immer das gleiche

  3. #13
    Registriert seit
    02.02.2006
    Ort
    Hessen
    Beiträge
    429
    Danke
    16
    Erhielt 28 Danke für 22 Beiträge

    Standard

    Zitat Zitat von hugo Beitrag anzeigen
    es ist völlig egal ob time nun negativ ode positiv ist. die differenz zweier zeiten ergibt immer das gleiche
    Hallo,

    solange das mehrmalige schnelle Drücken derselben Taste unter Windoof "Schwerer Ausnahmefehler" erzeugen kann, bin ich da nicht so sicher. Tatsächlich halte ich es für sicherer, z.B. beim Zeitformat die kleinere Zahl von der größeren abzuziehen, statt umgekehrt.
    mfG Werner
    Hoch lebe die Suchfunktion!
    Zitieren Zitieren Wirklich immer?  

  4. #14
    Registriert seit
    06.10.2003
    Beiträge
    3.411
    Danke
    451
    Erhielt 505 Danke für 408 Beiträge

    Standard

    Hugo, Hugo,

    vielleicht überdenkst du das nochmal? Grundrechenarten erkläre ich hier nicht.

    Code:
     
    T#24D_20H_31M_23S_637MS - T#24D_20H_31M_23S_617MS = T#20ms
    --> ok
     
     
    einen Zyklus später:
     
    T#10ms - T#24D_20H_31M_23S_637MS = -T#24D_20H_31M_23S_627MS
    --> fatal error for oscad lib ?

    Gruß, Onkel
    Es gibt viel mehr Leute, die freiwillig aufgeben, als solche, die echt scheitern.
    Henry Ford

  5. #15
    Registriert seit
    29.08.2006
    Beiträge
    195
    Danke
    0
    Erhielt 35 Danke für 21 Beiträge

    Standard

    nun ich verstehe es immer noch nicht
    :

    1. ein überlauf einer variablen erzeugt keinen fatal error weil bei einer variablen sowas auch zur laufzeit nicht geprüft wird.

    wenn der wert üner 24d geht und ein überlauf stattfindet dann erhalten wir bei siemens time etwas mit -24d ....
    der alte gespeicherte wert liegt noch bei etwas unter 24d.

    wenn ich nun von einem ganz am unteren werttebereich liegenden wert mit etwa -24d nehme und davon einen wert von ca +24d abziehe bekomme ich wieder die normale differenz wie wenn ich auch von 23d 22d abziehe, dagobert hat das ja siehe oben auch auf siemens für uns getestet.
    unter codesys sieht das im prinzip genauso aus lediglich mit dem unterschied das wir dort den wertebereich von 0 - 48d haben.

    zahlen in der edv sind absichtlich so kodiert das genau dieses mit überlauf funktioniert. wieso wollt ihr dann korrigieren wo es gar nichts zu korrigieren gibt.

    ich darf nur nicht operationen wie t1 < t2 oder sowas machen aber t2 - t1 ergibt immer sinn.

  6. Folgender Benutzer sagt Danke zu hugo für den nützlichen Beitrag:

    Rayk (12.03.2007)

  7. #16
    Registriert seit
    29.08.2006
    Beiträge
    195
    Danke
    0
    Erhielt 35 Danke für 21 Beiträge

    Standard

    nun ich verstehe es immer noch nicht
    :

    1. ein überlauf einer variablen erzeugt keinen fatal error weil bei einer variablen sowas auch zur laufzeit nicht geprüft wird.

    wenn der wert üner 24d geht und ein überlauf stattfindet dann erhalten wir bei siemens time etwas mit -24d ....
    der alte gespeicherte wert liegt noch bei etwas unter 24d.

    wenn ich nun von einem ganz am unteren werttebereich liegenden wert mit etwa -24d nehme und davon einen wert von ca +24d abziehe bekomme ich wieder die normale differenz wie wenn ich auch von 23d 22d abziehe, dagobert hat das ja siehe oben auch auf siemens für uns getestet.
    unter codesys sieht das im prinzip genauso aus lediglich mit dem unterschied das wir dort den wertebereich von 0 - 48d haben.

    zahlen in der edv sind absichtlich so kodiert das genau dieses mit überlauf funktioniert. wieso wollt ihr dann korrigieren wo es gar nichts zu korrigieren gibt.

    ich darf nur nicht operationen wie t1 < t2 oder sowas machen aber t2 - t1 ergibt immer sinn.

    wie dagobert für mich ja auch auf simens getestet hat:
    deinen Test mit t1, t2 und t3 habe ich durchgeführt, funktioniert natürlich.
    deinen Test mit t1, t2 und t3 habe ich durchgeführt, funktioniert natürlich.

  8. #17
    Registriert seit
    06.10.2003
    Beiträge
    3.411
    Danke
    451
    Erhielt 505 Danke für 408 Beiträge

    Standard

    Hallo Hugo,

    aha, jetzt verstehe ich, wo unser Missverständnis liegt. Bei der S7 ist es so dass von 0 bis 2147483647ms (=24d) gezählt wird. Bei Überlauf wird wieder bei 0 begonnen!

    Zitat Zitat von Auszug aus der Step7-Onlinehilfe zur SFC64
    Beschreibung
    Mit der SFC 64 "TIME_TCK" (time tick) lesen Sie die Systemzeit der CPU. Die Systemzeit ist ein "Zeitzähler", der von 0 bis max. 2147483647 ms zählt. Bei einem Überlauf der Systemzeit wird wieder ab 0 gezählt. Das Zeitraster und die Genauigkeit der Systemzeit betragen bei S7-400 und bei der CPU 318 1 ms, bei allen anderen CPUs der S7-300 10 ms. Die Systemzeit wird nur von den Betriebszuständen der CPU beeinflußt.
    Ich versuche das mittels SCL auch noch mal zu belegen.

    In codesys geht es nach 48D mit -48D weiter?


    Gruß, Onkel
    Es gibt viel mehr Leute, die freiwillig aufgeben, als solche, die echt scheitern.
    Henry Ford

  9. #18
    Registriert seit
    06.10.2003
    Beiträge
    3.411
    Danke
    451
    Erhielt 505 Danke für 408 Beiträge

    Standard

    Zitat Zitat von Onkel Dagobert Beitrag anzeigen
    ..Ich versuche das mittels SCL auch noch mal zu belegen...
    Kann ich ja garnicht. Wenn ich den tatsächlichen Zeitpunkt des Überlaufs sehen möchte, müsste ich ja 24 Tage warten. Manipulieren lässt sich die Systemzeit nicht, und eine Simulation bringt auch nichts.

    Aber ich denke mal, das es schon so ist.


    Gruß, Onkel


    /edit/
    Hier noch ein paar links zum Thema.
    http://support.automation.siemens.com/WW/view/de/640451 (Bsp. als pdf-File)
    http://support.automation.siemens.co...iew/de/8736315
    http://support.automation.siemens.co...iew/de/8736822
    Geändert von Onkel Dagobert (12.03.2007 um 19:31 Uhr)
    Es gibt viel mehr Leute, die freiwillig aufgeben, als solche, die echt scheitern.
    Henry Ford

  10. #19
    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

    Danke,

    soweit habe ich noch gar nicht gedacht.
    Werde die Funktionen die TIME_TCK nutzen um eine Überlaufkorrektur
    demnächst ergänzen.

    mfg
    Daniel

  11. #20
    Registriert seit
    29.08.2006
    Beiträge
    195
    Danke
    0
    Erhielt 35 Danke für 21 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    hi leute,
    jetzt haben wir aber die verschiedensten widersprüchlichen aussagen:

    fakten:
    1. iec61131 sieht für den typ time den wertebereich 0 .. 49 tage vor
    also keine negativen zeiten.

    in codeesys ist dies auch so implementiert.

    2. nach euren aussagen in diesem thread hat s7 typ time den wertebereich -24 tage .. + 24 tage.

    3. meine aussage das bei beiden implementationen ein überlauf oben und unten im wertebeich stattfindet.
    beim überlauf ist zu beachten das nach einem überlauf:

    A. eine vergleich größer kleiner scheitert weil ja der vermeintlich größere werte plötzlich ein ganz kleiner ist. in so einem fall muss eine korrektur in software gemacht werden.

    B. in den funktioinen von oscat verwenden wir bei system time abfragen solche größer kleiner vergleiche nicht um der überlaufproblematik aus dem weg zu gehen.
    egal welcher wertebereich vorliegt, eine subtraktion zweier werte gleichen abstands ergibt immer die gleiche differenz egal ob ein überlauf stattgefunden hat oder nicht, auch wenn nur einer der beiden werte übergelaufen ist.
    in diesem fall der anwendung ist somit keine korrektur am oberen oder unteren ende des wertebereichs nötig.

Ähnliche Themen

  1. Oscat
    Von slk230-power im Forum Simatic
    Antworten: 23
    Letzter Beitrag: 13.05.2011, 13:03
  2. Oscat Lib
    Von paulo78 im Forum Programmierstrategien
    Antworten: 6
    Letzter Beitrag: 27.04.2010, 10:00
  3. OSCAT Release 2.76
    Von hugo im Forum Werbung und Produktneuheiten
    Antworten: 0
    Letzter Beitrag: 10.08.2008, 16:09
  4. Oscat Lib 2.0
    Von hugo im Forum Werbung und Produktneuheiten
    Antworten: 8
    Letzter Beitrag: 30.10.2007, 22:53
  5. Oscat.lib
    Von Lockerbee im Forum Simatic
    Antworten: 8
    Letzter Beitrag: 25.02.2007, 22:32

Lesezeichen

Berechtigungen

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