18.02.2008 10:15 | |
Beigetreten: 06.03.2006 Letzter Bes: 13.09.2024 Beiträge: 369 Bewertung: (101) |
Wie genau und auf welcher CPU soll denn das funktionieren? |
19.02.2008 07:49 | |
Beigetreten: 19.04.2006 Letzter Bes: 10.12.2021 Beiträge: 521 Bewertung: (31) |
hallo, also einfach ist ja immer eine definitionsfrage. es geht auf jeden fall nicht mit drei/vier codezeilen. also erst mal die zeit. in der S7 bekommst du über sfc0/1 (set/read_clock) eine aktuelle uhrzeit deiner CPU. im TP gibt es systemfunktionen zur anzeige der uhrzeit. wenn du nun zeitpunkte im TP einstellen möchtest kannst du ein eingabefeld erstellen => Darstellung "Datum und Uhrzeit" => zugehörige Variable erstellen mit dem format "Date and Time". zu der variable gehört dann noch ein datenbereich (z.Bsp.:DB1 DBB0 Byte8 => 8Byte länge). das wären erst mal die grundvoraussetzungen. nun mußt du anhand der eingestellten zeit und deiner systemzeit auf der S7 den schalt/zeitpunkt ermitteln. die belegung von "Date and Time": Bytes Inhalt Bereich 0 Jahr 90 ... 89, d.h. die Jahre 1990 bis 2089 1 Monat 01 ... 12 2 Tag 1 ... 31 3 Stunde 0 ... 23 4 Minute 0 ... 59 5 Sekunde 0 ... 59 6 2 MSD von ms 00 ... 99 7 (4 MSB) LSD von ms 0 ... 9 7 (4 LSB) Wochentag 1 ... 7 (1 = Sonntag) jetzt zu deinem zeitpunkt: entweder zu vergleichst alle bytes, um den zeitpunkt herauszubekommen, oder einfach, du nutzt den FC 9 (EQ_DT) aus der Standard-Siemens-Lib |
...wer seine träume verwirklichen will, muß auch daraus erwachen... |
|
19.02.2008 08:32 | |
Beigetreten: 19.04.2006 Letzter Bes: 10.12.2021 Beiträge: 521 Bewertung: (31) |
"Ich würde FC12 GE_DT verwenden" ich jetzt auch... ok, zeitsystem. wir synchronisieren unsere cpu-zeiten über ein leitsystem ca. minütlich. wenn es hier ganz genau laufen soll, gibt es doch sicher die möglichkeit über einen DCF77-empfänger (Funkuhr) die cpu-zeit ganz genau zu betreiben. |
...wer seine träume verwirklichen will, muß auch daraus erwachen... |
|
20.02.2008 14:13 | |
Beigetreten: 19.04.2006 Letzter Bes: 10.12.2021 Beiträge: 521 Bewertung: (31) |
so, hab das mal als simples Bsp. programmiert. (siehe Anhang) wichtig ist, daß der DB1 als Symbol angelegt ist. da man auf zusammengesetzte Datentypen (Date_and_Time) nicht direkt zugreifen kann. Quelle Siemens-Hilfe: "Wenn Sie den Datentyp DATE_AND_TIME als Formalparameter in einer Anweisung verwenden, können Sie, weil es sich um einen zusammengesetzten Datentyp handelt, die Aktualparameter nur in einem der folgenden Formate angeben: · Als bausteinlokales Symbol aus der Variablendeklarationstabelle für einen bestimmten Baustein · Als symbolischen Namen für einen Datenbaustein, z. B. "DB_sys_info.Systemzeit", der aus den beiden folgenden Teilen besteht: - Ein Name, der in der Symboltabelle für die Nummer des Datenbausteins definiert ist (z. B. "DB_sys_info" für DB5) - Ein Name, der in dem Datenbaustein für das Element DATE_AND_TIME definiert ist (z. B. "Systemzeit" für eine Variable vom Datentyp DATE_AND_TIME, die in DB5 enthalten ist) Sie können keine Konstanten als Aktualparameter für Formalparameter von zusammengesetzten Datentypen, einschließlich DATE_AND_TIME, verwenden. Sie können auch keine absoluten Adressen als Aktualparameter an DATE_AND_TIME übergeben." in meinem bsp. findest du den DB1, den mußt du dann im ProoTool für deine Variable/n angeben. Dateianhangdate_and_time.zip (546 Downloads) |
...wer seine träume verwirklichen will, muß auch daraus erwachen... |
|
Folgen Sie uns auf