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

Ergebnis 1 bis 9 von 9

Thema: Date_Time verändern ?

  1. #1
    Registriert seit
    17.03.2011
    Ort
    im Wald
    Beiträge
    284
    Danke
    11
    Erhielt 36 Danke für 35 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo zusammen,

    als S7-Neuling versuche ich gerade eine grosse Zeitschaltuhr zu bauen. Dank der Beiträge hier, habe ich es geschafft (mit SFC1), die Systemzeit in einem DB abzulegen. Habe, die Bytes auch schön in Integer gewandelt damit ich damit arbeiten kann.

    Nun habe ich festgestellt, oder, meine es, das meine CPU, an einem Tag um eine Sekunde ungenau ist. OK, kein Problem. Ich werde also, wenn ein Tageswechsel ist, mittels einer Flanke, die Sekunden nachstellen. Das mache ich also mit dem SFC0.

    Aber, ich bin zu blöde eine DATE_TIME - Variable mit den gewünschten Daten zu erzeugen. Ich weiss zwar, welches Byte ich beschreiben muss. Aber wie beschreibe ich eine Temp-Variable des Typs DATE_TIME eines FC's ?

    Danke für die Hilfe und Gruß, Voxe
    Zitieren Zitieren Date_Time verändern ?  

  2. #2
    Registriert seit
    19.12.2008
    Beiträge
    336
    Danke
    19
    Erhielt 28 Danke für 28 Beiträge

    Standard

    Du bildest dir einen Pointer auf die Lokaldaten-Deklaration deiner Variablen und beschreibst dann mit dem Begleit-Offset die entsprechende Stelle :
    Code:
    L P##my_DateTime
    LAR1
    
    L #myStunde
    T B[AR1,P#3.0]
    
    usw.

  3. Folgender Benutzer sagt Danke zu Lupo für den nützlichen Beitrag:

    Voxe (06.01.2012)

  4. #3
    Registriert seit
    30.10.2009
    Ort
    10 km vom Herzen der Natur
    Beiträge
    1.626
    Danke
    120
    Erhielt 340 Danke für 255 Beiträge

    Standard

    Du könntest auch einfach in der HW-Konfig die Abweichung pro Tag hinterlegen.
    Gruß
    Michael

  5. #4
    Avatar von Voxe
    Voxe ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    17.03.2011
    Ort
    im Wald
    Beiträge
    284
    Danke
    11
    Erhielt 36 Danke für 35 Beiträge

    Standard

    Hallo Lupo,

    hoffe es zu verstehen. Aber wie übergebe ich es an die DATE_TIME Variable für den SFC0 ?

    Gruß, Voxe

  6. #5
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.716
    Danke
    398
    Erhielt 2.398 Danke für 1.998 Beiträge

    Standard

    Ich habe es so verstanden, dass du im Temp-Bereich deines FC's eine Variable, ich nenne sie mal my_DateTime, vom Typ Date_and_Time deklariert hast.
    In diese variable läßt du dir mittels des SFC1 die DT ausgeben, die modifizierst du dann, wenn du es nicht so machen willst wie von M-Ott beschrieben, und die schreibst du dann mit dem SFC0 wieder zurück.
    Schön wäre es, wenn du das nur auf ein Ereignis hin machen würdest und dann auch nur einmal bei demselben (Flanke bilden).

  7. #6
    Avatar von Voxe
    Voxe ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    17.03.2011
    Ort
    im Wald
    Beiträge
    284
    Danke
    11
    Erhielt 36 Danke für 35 Beiträge

    Standard

    Hallo Larry,

    das ist mein Plan.

    meine Variable heisst: nDate_Time. Aber wie kann ich sie beschreiben.
    Michaels-Idee ist gut, aber ich weiss den Offset noch nicht wirklich. Mir fehlt einfach die Stelle, wie ich meine Variable beschreiben kann.

    Gruß und Danke, Voxe

    PS: ich will sie einmal am Tag beschreiben, also Flankenwechsel des Tag-Bytes

  8. #7
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.716
    Danke
    398
    Erhielt 2.398 Danke für 1.998 Beiträge

    Standard

    Du legst sie einfach symbolisch an den passenden Eintrag des SFC-Aufrufs.
    Also so :
    Code:
    call SFC0
    PDT := #n_Date_Time
    Ret_Val := MW200

  9. Folgender Benutzer sagt Danke zu Larry Laffer für den nützlichen Beitrag:

    Voxe (06.01.2012)

  10. #8
    Avatar von Voxe
    Voxe ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    17.03.2011
    Ort
    im Wald
    Beiträge
    284
    Danke
    11
    Erhielt 36 Danke für 35 Beiträge

    Standard

    Hallo zusammen,

    habe Lupo's Lösung die natürlich funktioniert, nicht auf Anhieb verstanden bzw. umgesetzt. Ist halt S7.

    Code:
    U M 0.7       // meine Flanke
    SPBN end
    L P##Date_Time
    LAR1
    L 2
    T B [AR1,P#3.0]    // das Stunden-Byte wird auf 2 gestellt
    
    CALL SFC 0         // und übertragen
    PDT     :=#Date_Time
    RET_VAL :=#Dummy
    NOP 0
    end: R M 0.0
    Also nochmals Danke und Gruß, Voxe
    Geändert von Voxe (06.01.2012 um 00:27 Uhr)

  11. #9
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.716
    Danke
    398
    Erhielt 2.398 Danke für 1.998 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo Volker,
    deine Flanke funktoniert so natürlich nicht - du solltest schon beide Male den gleichen Merker nehmen

    Ist die Sache jetzt klar ?

    Gruß
    Larry

Ähnliche Themen

  1. Libnodave und Date_Time per VB.NET
    Von StefanK im Forum Hochsprachen - OPC
    Antworten: 4
    Letzter Beitrag: 23.10.2010, 00:13
  2. Date_Time Struktur
    Von Nerowinger84 im Forum HMI
    Antworten: 0
    Letzter Beitrag: 15.03.2010, 16:56
  3. Pointer verändern
    Von Schnicker im Forum CODESYS und IEC61131
    Antworten: 8
    Letzter Beitrag: 05.03.2010, 14:30
  4. S7 Date_Time Year als Integerwert
    Von Guste im Forum Simatic
    Antworten: 6
    Letzter Beitrag: 10.07.2009, 15:58
  5. Antworten: 3
    Letzter Beitrag: 05.12.2007, 07:03

Lesezeichen

Berechtigungen

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