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

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

Thema: Herauslösen von Stunde,Minute,Sekunde aus Zeit in CPU

  1. #1
    Registriert seit
    03.11.2005
    Ort
    Völkermarkt
    Beiträge
    96
    Danke
    10
    Erhielt 1 Danke für 1 Beitrag

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo!


    So nun muss ich euch schon wieder mal auf die "Probe" stellen!


    Muss für mein Programm eine Auswertung machen, für die ich
    die Stunden,Minuten,Sekunden aus der CPU brauche.


    Das ganze sollte also extra in MW liegen ...
    also zum Beispiel:
    Stunden -> MW1
    Minuten -> MW2
    Sekunden -> MW3

    Habe mittels SFC1 (Read System Clock) und FC8 (DT_to_TOD)
    die Zeit als Time_Of_Day Variable.


    Nun wie kann ich aus dieser Variable meine benötigten Daten "extrahieren"?



    mfg Andreas
    Linux - This is freeing what I am!
    Zitieren Zitieren Herauslösen von Stunde,Minute,Sekunde aus Zeit in CPU  

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

    Standard

    hallo andreas,
    gib mal in der hilfe DATE_AND_TIME ein dort findest du eine beschreibung wo die stunden usw. liegen
    mfg uwe

  3. #3
    Registriert seit
    15.01.2005
    Ort
    In der Mitte zwischen Bayreuth/Weiden
    Beiträge
    6.761
    Danke
    323
    Erhielt 1.529 Danke für 1.288 Beiträge

    Standard

    Aus der Siemens Hilfe:

    In nachfolgender Tabelle ist der Inhalt der Bytes aufgeführt, die die Information zu Datum und Uhrzeit enthalten. Das Beispiel zeigt Datum und Uhrzeit für Donnerstag, den 25. Dezember 1993, 8:01 Uhr und 1,23 Sekunden.


    Byte
    Inhalt
    Beispiel

    0
    Jahr
    B#16#93

    1
    Monat
    B#16#12

    2
    Tag
    B#16#25

    3
    Stunde
    B#16#08

    4
    Minute
    B#16#01

    5
    Sekunde
    B#16#01

    6
    Die beiden höchstwertigen Ziffern von MSEC
    B#16#23

    7
    (4MSB)
    Die niederwertigen Ziffern von MSEC

    B#16#0

    7
    (4LSB)
    Wochentag
    1 = Sonntag
    2 = Montag
    ...
    7 = Samstag
    B#16#5

    Jetzt musst du dir aus der Struktur Date_And_Time welche du vom SFC1 erhältst nur noch die oben beschriebenen Bytes herauslösen.

    In meinem Fall Stand bei DB2.DW0 das Format Date_And_Time
    Code:
          L     DB2.DBB    2
          BTI   
          T     "DB2 Uhrzeit".Tag_Aktuell
    
          L     DB2.DBB    1
          BTI   
          T     "DB2 Uhrzeit".Monat_Aktuell
    
          L     DB2.DBB    0
          BTI   
          T     "DB2 Uhrzeit".Jahr_Aktuell
    
          L     DB2.DBB    7
          L     B#16#F
          UW    
          T     "DB2 Uhrzeit".Wochentag_Aktuell
    
          L     DB2.DBB    3
          BTI   
          T     "DB2 Uhrzeit".Stunden_Aktuell
    
          L     DB2.DBB    4
          BTI   
          T     "DB2 Uhrzeit".Minuten_Aktuell
    
          L     DB2.DBB    5
          BTI   
          T     "DB2 Uhrzeit".Sekunden_Aktuell
    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).

  4. #4
    Registriert seit
    27.10.2005
    Ort
    Schwäbisch Gmünd
    Beiträge
    5.240
    Danke
    642
    Erhielt 955 Danke für 769 Beiträge

    Standard

    Code:
    // TOD (Zeit seit Mitternacht in Millisekunden) in Akku 1
    L 1000
    /D
    T #temp // Zeit in Sekunden merken (Doppelwort das my. 86400)
    L 60 
    MOD // Sekundenanteil  berechnen ...
    T MB 3 // ... und merken
    L #temp // Gesamtsekunden holen 
    L 60 
    /D // Zeit in Minuten berechnen ...
    T #temp // ... und merken
    L 60 
    MOD // Minutenanteil berechnen ...
    T MB 2 // ... und merken
    L #temp 
    L 60
    /D // Zeit in Stunden berechnen ...
    T MB 1 // ... und merken
    Zu beachten: Nicht die angegebenen MWs verwenden wegen Überlappung, MBs genügen vom Wertebereich auch, ansonsten MW6, MW4 und MW2 verwenden.

    PS: Codiert und nicht getestet
    Rainer Hönle
    DELTA LOGIC GmbH

    Ein Computer kann das menschliche Gehirn nicht ersetzen. Engstirnigkeit kann unmöglich simuliert werden. (Gerd W. Heyse)

  5. #5
    Registriert seit
    03.11.2005
    Ort
    Völkermarkt
    Beiträge
    96
    Danke
    10
    Erhielt 1 Danke für 1 Beitrag

    Standard

    hallo nochmal ...


    so hab mich für den code von rainer hönle entschieden, ist leichter in mein
    programm aufzunehmen ...


    danke für EURE bemühungen ... mfg Andreas
    Linux - This is freeing what I am!
    Zitieren Zitieren danke  

  6. #6
    Registriert seit
    03.11.2005
    Ort
    Völkermarkt
    Beiträge
    96
    Danke
    10
    Erhielt 1 Danke für 1 Beitrag

    Standard

    hallo

    @rainer
    ich glaube im code von dir ist ein fehler und zwar als erstes

    L #temp // Gesamtsekunden holen
    L 60 -> L 6 und nicht 60!?
    /D // Zeit in Minuten berechnen ...
    T #temp //

    und wenn ich damit nun was berechnen will kommt ein
    #falsches ergebnis raus


    mfg
    Linux - This is freeing what I am!
    Zitieren Zitieren @rainer  

  7. #7
    Registriert seit
    15.01.2005
    Ort
    In der Mitte zwischen Bayreuth/Weiden
    Beiträge
    6.761
    Danke
    323
    Erhielt 1.529 Danke für 1.288 Beiträge

    Standard

    Es gibt da noch eine Möglichkeit, müsste dann aber im OB1 stehen:

    Code:
          L     LB14
          BTI   
          T     MW0 //Tag
    
          L     LB13
          BTI   
          T     MW2 //Monat
    
          L     LB12
          BTI   
          T     MW4 //Jahr
    
          L     LB19
          L     B#16#F
          UW   
          T     MW6 Wochentag
    
          L     LB15
          BTI   
          T     MW8 //Stunden
    
          L     LB16
          BTI   
          T     MW10 //Minuten
    
          L     LB17
          BTI   
          T     MW12 //Sekunden
    Alternativ können die MW's auch durch MB's zu ersetzen, du kannst auch beliebig weglassen, falls dir die Uhrzeit genügt.

    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).

  8. #8
    Registriert seit
    27.10.2005
    Ort
    Schwäbisch Gmünd
    Beiträge
    5.240
    Danke
    642
    Erhielt 955 Danke für 769 Beiträge

    Standard

    Zitat Zitat von apachler
    L #temp // Gesamtsekunden holen
    L 60 // Pass schon, denn eine Minute hat 60 Sekunden-> L 6 und nicht 60!?
    /D // Zeit in Minuten berechnen ...
    T #temp //

    und wenn ich damit nun was berechnen will kommt ein
    #falsches ergebnis raus
    Habe das ganze auf der SPS getestet. Bei mir funktioniert es wie gedacht. Was zeigt denn der Status an? Ist TOD auch in Akku1?
    Rainer Hönle
    DELTA LOGIC GmbH

    Ein Computer kann das menschliche Gehirn nicht ersetzen. Engstirnigkeit kann unmöglich simuliert werden. (Gerd W. Heyse)
    Zitieren Zitieren Re: @rainer  

  9. #9
    Registriert seit
    03.11.2005
    Ort
    Völkermarkt
    Beiträge
    96
    Danke
    10
    Erhielt 1 Danke für 1 Beitrag

    Standard

    hallo!

    hab jetzt die sache mal so gelöst:

    Code:
    L TOD
    T MD 23
    
          L     MB    23
          BTI   
          T     #Stunden
    
          L     MB    24
          BTI   
          T     #Minuten
    
          L     MB    25
          BTI   
          T     #Sekunden
    müsste doch auch gehen, oder nicht?


    @MSB
    Ist auch eine gute Lösung doch möchte ich das nicht im OB1 stehen haben.

    @Rainer
    An der SPS hab ich es nicht getestet, hab es mir nur durch den kopf gehen lassen. Aber wenn es dann in der Steuerung funzt hab ich nix dagegen. Gefällt mir doch am besten die Lösung ...



    Danke an alle ... mfg Andreas
    Linux - This is freeing what I am!
    Zitieren Zitieren aha das sieht gut aus ...  

  10. #10
    Registriert seit
    15.01.2005
    Ort
    In der Mitte zwischen Bayreuth/Weiden
    Beiträge
    6.761
    Danke
    323
    Erhielt 1.529 Danke für 1.288 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Dein Code kann nicht gehen,

    da im TOD die Zeit nich in einzelnen Bytes steht, sowie im Date_AND_Time sondern als Vorzeichenlose Ganzzahl in Millisekunden.

    Entweder so wie von Rainer oder von mir.

    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).

Ähnliche Themen

  1. Antworten: 21
    Letzter Beitrag: 29.04.2011, 23:23
  2. m³ Zählen aus Liter/sekunde
    Von Johannes F im Forum Programmierstrategien
    Antworten: 14
    Letzter Beitrag: 05.05.2010, 00:07
  3. Stückzahl pro Minute?
    Von bastler im Forum Simatic
    Antworten: 16
    Letzter Beitrag: 30.03.2009, 08:13
  4. TON (1 Sekunde dauert ca. 3 Sekunden)???
    Von olitheis im Forum CODESYS und IEC61131
    Antworten: 6
    Letzter Beitrag: 28.11.2008, 20:42
  5. Impuls zur vollen Stunde
    Von thotrix im Forum Simatic
    Antworten: 5
    Letzter Beitrag: 12.12.2006, 09:57

Lesezeichen

Berechtigungen

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