Step 7 Date_And_Time //// SFC1

Vagasa

Level-1
Beiträge
49
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo

Ich habe die Sufu genutzt und einiges gelesen, aber irgendwie komm ich bei einem ganz simplen Problem nicht weiter. Bin nicht so gut in AWL und mit dem Pointer hab ich mich auch noch nicht beschäftigt, aber es muss auch einfacher gehen...

Ich will Stunden und Minuten via Touchpanel vorgeben ( Einfach in ein Eingabefeld tippen ). Die SPS soll über den Vergleicherbaustein die Stunden und Minuten vergleichen, wenns passt wird ein Bit gesetzt. Habe via SFC1 das aktuelle Datum / Uhrzeit in meinem DB100 geschrieben und als Date_And_Time deklariert.

Jetzt brauche ich ja aus der Date_and_Time Variable das Byte Stunden und Minuten. ( Glaub es war Byte 2 und 3 ). Und genau da tu ich mich jetzt schwer...Ich programmiere momentan noch das meisste in KOP. Einfache AWL Beispiele sollte ich aber auch verstehen.
Also im Prinzip muss ich wissen, wie ich das Date_And_Time format einzelnt auslesen kann.

Danke
MFG

Date_Time.JPG
 
Zuletzt bearbeitet:
Nach Beiträgen von PN/DP zu suchen, ist immer eine gute Idee, denn da war doch was vor kaum 2 Wochen:
Sobald Du mit SFC1 die Uhr in die TEMP-Variable gelesen hast, hast Du alles was Du brauchst. Weiteres Zerlegen des DATE_AND_TIME ist nicht nötig, da es eh keine fertige Funktion für die Zerlegung in die Einzelteile gibt, weil DATE_AND_TIME eigentlich eine Struktur ist, auf deren Einzelteile man direkt zugreifen kann - sehr schön machbar in SCL und AT-Sicht.

Man kann sich einfach über den Aufbau des Datentyps DATE_AND_TIME informieren:
Das DATE_AND_TIME in Deiner Variablendeklaration in TEMP markieren und F1 drücken, oder den SFC1 markieren und F1 drücken, oder ...
Da wirst Du sehen, daß Du einfach nur das zweite und dritte Byte aus der DATE_AND_TIME-Variable lesen brauchst.
z.B. so in AWL
Code:
LAR1 P##tempVar_wo_SFC1_hingeschrieben_hat
L B [AR1, P#2.0]
T AB2
L B [AR1, P#1.0]
T AB3

Harald
:D
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Es sind die Bytes 3 und 4.

Wenn Dein Pointer für den DATE_AND_TIME auf DBX0.0 liegt ist die Sache recht einfach:

Code:
[SIZE=2]//---------------------------------------------------
// Stunde eintragen
//---------------------------------------------------
      L     DB100.DBB    3
      BTI   
      T     MW700
//---------------------------------------------------
// Minute eintragen
//---------------------------------------------------
      L     DB100.DBB    4
      BTI   
      T     MW702
[/SIZE]

und dann sind in den MWs Integer-Zahlen mit denen Du arbeiten kannst.
 
Danke ich bin schon ein Stück weiter jetzt. Muss ich jetzt noch etwas beachten wegen dem Aufruf des SFC1? Momentan hab ich mein FC10 wodrin ich das programmiert habe im OB1 aufgerufen mehr nicht. Weil die ausgelesenen Stunden / Minuten passen irgendwie nicht und der sekundentakt springt manchmal.

MFG
Date_Time.JPG
 
Zurück
Oben