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

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

Thema: Zwei Uhren in einer SPS

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

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    An alle Mathematiker/Informatiker!!!

    Wer kann mir helfen???
    Ich habe folgendes Problem:

    Ich moechte zwei Kategorien von Ereignisse mit YEAR/MONTH/DAY/HOUR/MINUTE/SECOND protokollieren/zeitstempeln und in der SPS in einem Stack ablegen:
    - Event-Kategorie 1: Parameter-Aenderungen des Operators --> System_Clock
    - Event-Kategorie 2: Prozess-Events --> Operator_Clock

    Bedingung: Beide Uhren sollen in der SPS - und nicht etwa verteilt in SPS und Terminal - laufen!

    Folgende Anforderungen stehen an die Uhren:
    --> System_Clock
    - soll einfach durchlaufen, ohne dass die Uhr (auf die reale Uhrzeit) gestellt wird
    - die Uhr darf/kann nicht vom Operator gestellt oder manipuliert werden
    - interessant ist in erster Linie nur das Delta zwischen den Events; durch Rueckrechnen kann der reale Zeitpunkt des Events ermittelt werden

    --> Operator_Clock
    - die Uhr (Date/Time) kann vom Operator ueber Terminal gestellt/veraendert werden um (fuer den Operator) moeglichst genau die Prozess-Events zu protokollieren
    - separate Aenderungen von YEAR, MONTH, DAY, HOUR, MINUTE ueber Tasten (INC/DEC)

    Sinn und Zweck:
    Ich moechte im Schadensfall anhand der Informationen der System_Clock-Zeitstempel Ablaeufe zeitlich zueinander (z.B. ueber die Differenz der Zeitstempel) protokollieren koennen, ohne das Manipulationen ueber Veraenderung der Operator_Clock (Zurueckstellen und Neudurchfahren des Zeitraums) moeglich sind.

    (Das Auslesen der Zeitstempel der System_Clock soll entweder ueber den Programm-Editor oder ueber eine Passwort-geschuetzte Seite im Terminal erfolgen.)

    Da es in der SPS aber nur eine Uhr gibt, habe ich gedacht, die Operator_Clock ueber einen Offset auf die System_Clock laufen zu lassen.
    Der (variable) Offset ergibt sich durch die Einstellung der Operator_Clock (Aenderung von YEAR, MONTH, DAY, HOUR, MINUTE ueber Tasten (INC/DEC)).

    Die Sache ist aber doch nicht so einfach, da ich jeden moeglichen Uebertrag (Beispiel Day = 26 / Offset = 12 --> 26+12=38 --> hat der betrachtete Monat nun 28, 29, 30 oder 31 Tage usw.) betrachten muss.

    Hat jemand eine Idee, wie ich dass Problem in einer SPS(!) loesen kann???
    Ein moegliches Stichwort waere z.B. "Julianischer Kalender".

    Noch ein Hinweis: Ein (sekundengenauer) programm-gesteuerter Zaehler (Zaehlumfang z.B. 1 Jahr) kommt nicht in Frage, da mir beim Stop der SPS das Delta zwischen Zaehlerstand_heute und Zaehlerstand_Event verfaelscht wird und somit ein Rueckrechnen auf die Event-Uhrzeit nicht mehr moeglich wird.


    Bin gespannt auf Eure Vorschlaege!!!

    Danke im Voraus!
    Zitieren Zitieren Zwei Uhren in einer SPS  

  2. #2
    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

    Mit welcher SPS arbeitest du?
    In Step7 gibt es das Format Date:

    DATE 16 Jahr-Monat-Tag D#1990-01-01 D#2168-12-31

    Das Datum wird als vorzeichenlose Ganzzahl in Tagen dargestellt, wobei der erste Tag der 1. Jan. 1990 ist.
    Damit kann man ganz normal rechnen, also z.Bsp. 15 Tage aufaddieren. Das errrechnete Datum wird mit den richtigen Tagen etc. umgerechnet.


    Ähnliches gilt für fas Format Time of Day:

    Datentyp Länge (Bit) Format

    TIME_OF_DAY oder TOD 32 Tageszeit in

    Stunden:Minuten:Sekunden.Millisekunden

    Beispiele für das Format (oberer und unterer Grenzwert)

    TOD#00:00:00.000

    TOD#23:59:59.999

    Stunden, Minuten und Sekunden müssen angegeben werden. Die Angabe der Millisekunden ist nicht erforderlich.

    Hinweis: Der Datentyp TOD wird als vorzeichenlose Ganzzahl in Millisekunden gespeichert, wobei Null gleich Mitternacht ist.
    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
    horseshoe ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    18.01.2006
    Beiträge
    10
    Danke
    2
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hallo Ralle,

    habe im konkreten Fall eine MISUBISHI Q-System auf dem Tisch.

    Der dort vorhandene Datentyp TIME (32 bit) hat ein Range von -24dxxx ... +24dxxx. Das ist fuer meine Zwecke nicht ausreichend.
    (In dem von mir geschilderten Fall kann es ohne weiteres sein, dass die Operator_Clock von der System_Clock um mehr als +/-24d abweicht.)

    Anmerkung: Ich habe - nach Auslesen der System-Uhr - die einzelnen Date/Time-Werte (YEAR/MONTH/DAY/HOUR/MINUTE/SECOND) im INT16 zur Verfuegung.

    Gruss horseshoe

  4. #4
    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

    Lies dir das mal durch:

    http://www.coding-board.de/board/arc...p/t-14847.html

    Sind auch etliche brauchbare Hinweise drin. Um ein wenig Rechnerei kommst du wohl nicht herum, hat denn deine Mitschubitschi kein Date-Format?

    Noch ein Link: http://home.nordwest.net/hgm/kalender/kal-prt.htm
    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

  5. #5
    Registriert seit
    15.01.2005
    Ort
    In der Mitte zwischen Bayreuth/Weiden
    Beiträge
    6.732
    Danke
    314
    Erhielt 1.520 Danke für 1.282 Beiträge

    Standard

    Die Q hat wie S7-300 auch nur eine Systemuhr, diese läuft auch bei Spannung aus.
    Es gibt keine Softwaremäßige Möglichkeit den Zeitpunkt des Abschaltens mitzubekommen.
    Und nichts was außer der Systemuhr nach Spannung-Aus noch weiterlaufen könnte.

    @Ralle wofür das Format DATE? Braucht man das wohl? Bei Mitsubishi jedenfalls nicht!
    Jetzt im Ernst es gibt nur diesen Namen nicht, bei Mitsubishi ist das einfach ein Array,
    ähnlich dem Date Format von Siemens.

    Rechnen kann auch die Q siehe Befehle:
    Date +
    Date -

    Wenn dann ist das irgendwie im HMI-System zu lösen, und nicht auf der SPS.

    Mfg
    Manuel
    Warum denn einfach, wenn man auch Siemens einsetzen kann!

    Wer die grundlegenden Freiheiten aufgibt, um vorübergehend ein wenig Sicherheit zu bekommen, verdient weder Freiheit noch Sicherheit (B. Franklin).

  6. #6
    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

    @MSB
    Ich kenne die Q nicht, mein erster Vorschlag war ja Date zu nutzen.
    Eine Uhr reicht ja, die zweite Uhrzeit (vom Bediener verstellbar) soll ja nur als feste Differenz zur "Hauptuhr" laufen, die Differenz ist einstellbar.
    Da die Differenz > 1 Tag sein kann, muß man auch mit dem Datum rechnen können, oder?
    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

  7. #7
    Registriert seit
    16.06.2003
    Ort
    88356 Ostrach
    Beiträge
    4.811
    Danke
    1.231
    Erhielt 1.101 Danke für 527 Beiträge

    Standard

    ok ich mach das jetzt mal ganz vereinfacht:

    V_SystemUhr
    diese uhr läuft auch bei Spannung aus und kann vom bediehner eingestellt werden.


    V-OperatorUhr
    dieser Uhr kann nicht vom Operator verstellt werden, läuft aber synchron zur systemuhr mit einem beliebigen offset.



    in einem interuppt der zb. jede secunde aufgerufen wird passiert folgendes: (bei der s7 wäre das ein ob35 oä - siehe hw-config)

    V_TimeDif = V_SytemUhr - V_SystemUhr_Last_Cycle

    IF V_TimeDif <= 2 Sekunden
    THEN
    V_Operator_Uhr = V_OperatorUhr + TimeDif
    ELSE

    // Sytemzeit wurde neu eingestellt weil Differenz zum letzten Zyklus nicht plausibel ist

    V_Operator_Uhr = V_OperatorUhr + 1 Sekunde

    // V_OperatorUhr wird bei jeder Änderung der Systemzeit (eventuell) um <1S verfälscht, aber das sollte tolerierbar sein

    END IF




    V_SystemUhr_Last_Cycle = V_SystemUhr // Sichern für nächsten Zyklus





    Bei SPS Anlauf passiert das:
    (bei S7 wäre das zb im OB100)


    V_TimeDif = V_SytemUhr - V_SystemUhr_Last_Cycle

    V_Operator_Uhr = V_OperatorUhr + TimeDif

    // es darf nicht möglich sein die systemzeit bei cpu-stop zu ändern
    // terminal kann ja softwareseitig so veriegelt werden über eine zwsp
    // variable die nur im laufenden programm in die systemzeit schreibt.
    // oder was weiß ich gibt viele möglichkeiten bis zur holzhammer
    // methode das display über einen sps ausgang schaltet...




    hab das jetzt so hiegeschrieben wie es aus mir rausgequollen ist.
    fange ab jetzt an auch darüber nachzudenken, was gefällt euch daran nicht? irgendwo wird doch noch ein haken sein...
    "Es ist weit besser, große Dinge zu wagen, ruhmreiche Triumphe zu erringen, auch wenn es manchmal bedeutet, Niederlagen einzustecken, als sich zu den Krämerseelen zu gesellen, die weder große Freude noch großen Schmerz empfinden, weil sie im grauen Zwielicht leben, das weder Sieg noch Niederlage kennt." Theodore Roosevelt - President of the United States (1901-1909)

  8. #8
    horseshoe ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    18.01.2006
    Beiträge
    10
    Danke
    2
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hallo Leute,

    vielen Dank fuer Eure Muehe, aber die richtige Loesung war - denke ich - noch nicht dabei.

    Ich versuche nochmal das Problem (vielleicht etwas einfacher) darzustellen:

    Ich moechte die System-Uhr (= System_Clock) der SPS bei Auslieferung der SPS auf GMT (Datum/Uhrzeit) stellen. Auf diese System-Uhr soll der Operator keinen(!) Zugriff haben. (Eigentlich soll/braucht er nicht mal wissen, dass diese Uhr in der SPS existiert!) Durch diese Uhr sollen (bestimmte) Events zwecks Protokollierung (mit der nicht manipulierbaren System_Clock) Zeit-gestempelt und in der SPS in einem Stack (Event-Nr. + System_Clock-Zeitstempel) archiviert werden.

    Eine zweite - fuer den Operator (z.B. auf Ortszeit) einstellbare Uhr (= Operator_Clock) soll (die) Events mit dem Zeitstempel der Ortszeit versehen und die Informationen (Event + Operator_Clock-Zeitstempel) in einem anderen Stack ablegen. Die in diesem Stack gespeicherten Informationen sind fuer den Operator ueber Terminal einsehbar.

    Vorstellung:
    Die Operator_Clock hat als Basis die System_Clock und laeuft zu dieser mit einem variablen (positiven oder negativen) Offset. Verstellt nun der Operator die Operator_Clock, so verstellt er nur den Offset.

    Sinn und Zweck:
    Ich moechte eine nicht manipulierbare Zeitbasis (= System_Clock) zum Zeit-stempeln von Events nutzen, dem Operator aber eine einstellbare Uhr fuer seine Zeitstempel zur Verfuegung stellen.

    Grund, warum ich nicht die Terminal-Uhr fuer die Operator_Zeit nehme:
    1. Ich habe mehrere Terminals und muesste diese untereinander synchronisieren.
    2. Ich benoetige beide Zeitbasen zentral in der SPS.
    3. Ich moechte die Terminals (hinsichtlich Programmierung) ziemlich "dumm" halten.

    Hat jemand eine Loesung???

    Gruss horseshoe

  9. #9
    Registriert seit
    01.08.2005
    Beiträge
    247
    Danke
    3
    Erhielt 41 Danke für 32 Beiträge

    Standard

    Hallo horseshoe,

    warum packst du nicht einfach eine neue Uhr hinzu?

    Möglichkeiten:

    1. Mit DCF77. Gibts für Siemens ab ~100€
    (Info: www.siemens.de/siplus). Läuft über dig. Eingänge

    2. Mit GPS-Empfänger (läuft über ASCII-Protokoll)

    Die "Standarduhr" kannst dann für den Anwender verwenden. Die "DCF77/GPS-Uhr" für deine "Zeitbasis".

    Damit hast immer eine Uhr für deine Protokollierung und eine, die der Anwender auch einstellen kann.

    Gruss

    Helmut

  10. #10
    Registriert seit
    16.06.2003
    Ort
    88356 Ostrach
    Beiträge
    4.811
    Danke
    1.231
    Erhielt 1.101 Danke für 527 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    was ist an meiner lösung nicht ok?
    "Es ist weit besser, große Dinge zu wagen, ruhmreiche Triumphe zu erringen, auch wenn es manchmal bedeutet, Niederlagen einzustecken, als sich zu den Krämerseelen zu gesellen, die weder große Freude noch großen Schmerz empfinden, weil sie im grauen Zwielicht leben, das weder Sieg noch Niederlage kennt." Theodore Roosevelt - President of the United States (1901-1909)

Ähnliche Themen

  1. Antworten: 10
    Letzter Beitrag: 16.08.2011, 16:31
  2. Zwei Identische TP277 auf einer Steuerung
    Von Trötschi im Forum HMI
    Antworten: 12
    Letzter Beitrag: 12.12.2008, 12:46
  3. Zwei FM350 an einer CPU 315
    Von kschmeer im Forum Simatic
    Antworten: 3
    Letzter Beitrag: 03.04.2008, 15:50
  4. Antworten: 3
    Letzter Beitrag: 02.04.2008, 09:21
  5. Im Forum laufen die Uhren etwas anders !!
    Von MW im Forum Stammtisch
    Antworten: 2
    Letzter Beitrag: 25.03.2007, 17:36

Lesezeichen

Berechtigungen

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