Uhrzeit HMI -> SPS S7

larsibaby2000

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

ich habe mal eine Frage wahrscheinlich ist die auch relativ einfach denke ich !
Also folgendes Problem:
Hab nen OP270 und ne 315-2DP nun möchte ich die Uhrzeit der SPS stellen über einen ALT NEU vergleich.
Habe einen DB wo alle Daten also sprich Jahr, Monat, Tag, Stunde, Minute, Sekunde als Byte angelegt sind.
Im HMI hab ich eine Variable mit Date_And_Time angelegt wenn ich nun den Steuerungsauftrag 40 starte krieg ich gesagt das der Auftrag ungültig sei !?
Aber warum ?
Hab ich was entscheidenes vergessen ??



Danke schonmal :confused:
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ja genau vom OP zur SPS.
Aber ist nicht 40 und 41 das gleiche abgesehen von den Formaten .
40 ist DATE_AND_TIME & 41 ist OP/TP.

Allerdings sieht meine funktion nicht vor mit dem Bereichszeiger zu arbeiten .
es soll so funktionieren dass am op die uhrzeit eingestellt werden kann, dann an die sps gesendet wird in einen DB( nach enter drücken ) und dann soll diese zeit vom op in die sps übernommen werden.

so ist mal der plan !

ob es klappt ? schaun wir mal !


bin für vorschläge dankbar !
 
...
dann würde ich die Variable gleich im DB editieren und dann mit dem SFB1 (oder 0 ?) die DB-Variable (vielleicht in Abhängigkeit eines Bits) zur CPU schreiben ...
 
schaut euch mal das an !?


U #SPS_Uhr_Stellen // Anforderung Uhr stellen
U( // und
L #Steuerungsauftrag.Nummer // kein
L W#16#0 // Auftrag
==I // im Gange
) // dann
SPBN _NOS // nicht springen


L W#16#29 // 29 hex => 41 dez "HMI Systemzeit an SPS senden"
T #Steuerungsauftrag.Nummer // in Auftragsfach

L W#16#0 // Keine
T #Steuerungsauftrag.Para_1 // Parameter
T #Steuerungsauftrag.Para_2 // notwendig
T #Steuerungsauftrag.Para_3

// Zeit von OP in Lokaldaten schreiben

L #Datum_Zeit_OP.Jahr // Year
T LB 2
L #Datum_Zeit_OP.Monat // Month
T LB 3
L #Datum_Zeit_OP.Tag // Day
T LB 4
L #Datum_Zeit_OP.Stunde // Hours
T LB 5
L #Datum_Zeit_OP.Minute // Minutes
T LB 6
L #Datum_Zeit_OP.Sekunde // Seconds
T LB 7
L #Datum_Zeit_OP.Wochentag // Day of week
T LB 9

// Zeit von OP bei Auftragsstart zwischenspeichern

L LD 2 // Lokale Zeit von OP
T #Zeit_Alt_1 // zwischenspeichern

L LD 6 // Lokale Zeit von OP
T #Zeit_Alt_2 // zwischenspeichern


_NOS: NOP 0


U #SPS_Uhr_Stellen // Anforderung steht
U( // und
L #Steuerungsauftrag.Nummer // Auftrag
L W#16#0 // ausgefürt
==I // dann
)
SPBN _SET // nicht springen

// Zeit von OP in Lokaldaten schreiben

L #Datum_Zeit_OP.Jahr // Year
T LB 2
L #Datum_Zeit_OP.Monat // Month
T LB 3
L #Datum_Zeit_OP.Tag // Day
T LB 4
L #Datum_Zeit_OP.Stunde // Hours
T LB 5
L #Datum_Zeit_OP.Minute // Minutes
T LB 6
L #Datum_Zeit_OP.Sekunde // Seconds
T LB 7
L #Datum_Zeit_OP.Wochentag // Day of week
T LB 9

// Überprüfung ob neue Zeit von OP

U( // OP hat
L #Zeit_Alt_1
L LD 2 // noch
==D
) // keine
U(
L #Zeit_Alt_2 // neue Uhrzeit
L LD 6
==D // gesendet
) // dann
SPB _RET // ans ende springen


CALL "SET_CLK" // SPS Uhr stellen
PDT :=#t_DateTime // mit OP Zeit
RET_VAL:=#t_RetVal

CLR
= #SPS_Uhr_Stellen // Auftrag ausgeführt
 
Zuviel Werbung?
-> Hier kostenlos registrieren
am einfachsten gehst mit sfc0 (netzwerk4)

netwerk3 ist für die synchronisation der zeit zwischen op und ag.
im op den bereichzeiger 'datum uhrzeit sps' definieren.
 

Anhänge

  • Zwischenablage02.gif
    Zwischenablage02.gif
    5,2 KB · Aufrufe: 168
warum ist der Bereich 12 Byte lang ??

sauber kurz und uebersichtlich !!
Jetzt frag ich mich nur Warum der Bereichszeiger einen Bereich von 6 Worten belegt. Was macht er im DW 5 und DW 6?? Mein Datum/Uhrzeit liegt mitten in einem DB, und nach den 8 Byte mit Date&Time gehts mit Anwenderdaten weiter. Beisst sich da irgendwas??

System: OP270 und ProTool/Pro CS V 6.0 SP2

wer weisss Rat?

Corrado
 
Oh aus Ravensburg !
Da hab ich auch 4 Jahre gearbeitet !

Also ich habe es so gelöst das ich den bereich (DATE_AND_TIME)
auf gemacht habe also im byte 1 liegt das jahr in 2 der Monat usw.
das habe ich mir dann in meinen DB geschoben wie ich es brauche und den bereichszeiger darauf gelegt !
 
Zurück
Oben