Zeit/Datum auslesen und weiterverarbeiten

amateur

Level-1
Beiträge
26
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen!
Ich bin ein absoluter Neuling in Sachen SPS-Programmierung und hab auch gleich ein Problem, dass ich nicht gelöst bekomme. Und zwar möchte ich die aktuelle Zeit aus der SPS auslesen und anschließend weiterbearbeiten, habe aber absolut keine Ahnung, wie ich das machen soll. Ich habe zwar schon Beispiele gefunden, wie das in AWL funktionieren könnte, bin dieser Sprache allerdings nicht mächtig. Ich schreibe in SCL (meiner Meinung nach viel einfacher zu lernen als der Rest) und habe dafür keine Beispiele gefunden.
Ich hoffe, dass mir jemand helfen kann...

grüße
amateur
 
Die Zeit auslesen kannst du mit dem SFC1, das ist ein in der CPU eingebauter System Function Block. Des weiteren gibt es dann diverse Fuktionen in der Standard Library/IEC Functions unter Step7 und auch die Oscat-Library (siehe Forum und www.oscat.de) hat so einiges an Zeitfunktionen zu bieten.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Ralle!
vielen Dank für deine schnelle Antwort. Hilft mir aber leider noch nicht weiter. Auf den SFC1 bin ich auch schon gestoßen und auch darauf, dass dieser eine Funktion READ_CLK bereitstellen soll. Aber wie rufe ich die nun in SCL auf? Schreibe ich SFC1(), bekomme ich eine Fehlermeldung (Funktion nicht definiert), schreibe ich READ_CLK.SFC1(), bekomme ich eine Fehlermeldung (Bezeichner existiert nicht, unbekannte Anweisung) oder schreibe ich SFC1.READ_CLK(), bekomme ich den gleichen Fehler. Wie ruft man denn jetzt diese Funktion auf und verarbeite ich die Rückgabewerte dann später??
Wie gesagt, bin absoluter Neuling...
 
Du öffnest deine SFC-Quelle, gehst mit dem Cursor an die Stelle im Code, wo der Aufruf hin soll, dann Menü "Einfügen/Bausteinaufruf...", suchst dir aus der "Standard Library/System Function Blocks" den SFC1 und drückst "OK". Kurz warten und der Aufruf steht in deiner Quelle, inkl. Kommentaren für die IN/OUT/INOUT-Variablen, welche natürlich noch versorgt werden müssen. Anschließend befindet sich in deinem Bausteinordner auch der SFC1 inkl. Symbol, diesen kannst du aber nicht in die CPU kopieren, der ist schon drin.
 
@Amateur:
in SCL heißt das dann so :
Code:
Error := READ_CLK (CDT := SPS_Datum_Uhrzeit) ;

Error ist vom Typ INT
SPS_Datum_Uhrzeit ist vom Typ Date_and_Time

probier mal ....;)
 
Also das hat bis jetzt schon mal bestens geklappt, vielen Dank!! Jetzt hab ich aber gleich noch ne Frage, und zwar: Kann ich aus "error" jetzt auch z. B. das Jahr, den Tag oder nur die Stunde herauslösen? Wenn das noch ginge, wäre mein Glück perfekt!
 
...
nein, das steht in DATE_AND_TIME.
Wie das aufgebaut ist siehst du in der Step7-Hilfe. Wenn du an die einzelnen Bytes davon komfoirtabel herankommen willst, dann bediene dich des Befehls AT (SCL-Hilfe)

Syntax:
unter der Deklaration der Variablen für DATE_AND_TIME schreibst du ...
Code:
SPS_Datum_Uhrzeit : Date_and_Time ;
   a_Datum_Uhrzeit AT SPS_Datum_Uhrzeit : ARRAY [0..7] of byte ;

Nun kommst du z.B. mit a_Datum_Uhrzeit [2] an das Byte 2 von SPS_Datum_Uhrzeit.

Das wird verständlicher, wenn du den Aufbau der genannten Variablen kennst ...
 
Ein klein wenig komfortabler wird es mit einem STRUCT.

Code:
  DATE_TIME AT TEMP_DT:
    STRUCT
      JAHR                          : BYTE;
      MONAT                         : BYTE;
      TAG                           : BYTE;
      STUNDE                        : BYTE;
      MINUTE                        : BYTE;
      SEKUNDE                       : BYTE;
      MS_UND_WDAY                   : WORD;
    END_STRUCT;

Gruß, Onkel
 
Einbindung Quellcode

Hallo,
ich hab gerade mit großem Interesse euren Beitrag zum auslesen der Datumswerte gelesen. Leider komme ich mit der Einbindung des Quellcodes nicht ganz klar. Für meine Programm benötige ich die Jahreszahl aus der Datumsangabe. Vielleicht könnt ihr nochmal etwas genauer auf die Einbindung eingehen.

Gruß

Mario
 
Zurück
Oben