S7 1200 TIA Lokale Uhrzeit auslesen....

of-1986

Level-1
Beiträge
43
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo SPS Profis...,

habe eine Frage: muss die Lokale Uhrzeit aus der CPU auslesen , habe es mir dem RD_SYS_T Baustein gemacht im richtigen Format nur ist das Datum und die Zeit falsch!
Übernimmt die CPU das Datum sowie Zeit nicht vom PC, beim Laden bzw. versorgen der CPU und wie kann ich mir einen Timer bauen der zyklisch die sekunden zählt und alle z.B. 3minuten mir einen 1-er liefert mit dem ich was anfangen kann?

Wie soll ich das machen, jemand tipps für mich?

RD_SYS_T.JPG

so sieht mein Baustein aus...
 
Von selber stellt sich die Uhrzeit der SPS nicht.
Über "Online & Diagnose" kannst du die Uhrzeit in der SPS manuell stellen.

Wenn du einen NTP-Server im Netzwerk hast kann die SPS die Uhrzeit mit diesem synchronisieren. Dann geht die Uhrzeit aber immer nach UTC.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ist schon klar das sich die Zeit nicht von selber stellt, deswegen frage ich.
wenn ich über "Online & Diagnose" die Uhrzeit einstellen will, ist bereits die richtige Uhrzeit und das richtige Datum eingestellt.

Bild Uhrzeit:

Uhrzeit.JPG
 
Danke!
Das wars!
Hats du eine Idee für meine 2 Frage: wie kann ich mir einen Timer bauen der zyklisch die sekunden zählt und alle z.B. 3minuten mir einen 1-er liefert mit dem ich was anfangen kann?

vl. hast ein Bildchen??
kurz zur Info, der 1-er der im 3min.-takt kommen soll wird nur als Temp.Variable genutzt damit ich alle 3 Minuten meine Helligkeit abfrage, da Sie über einen Helligkeitsensor zu sehr schwankt(AI 0-10V)
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Für deinen 3-Minuten Takt würde ich aber nicht die Uhrzeit auswerten, sondern einfach einen Timer (TON) mit der entsprechenden Zeit einsetzen.
Am einfachsten fügst du eine Leerbox (das mit den zwei Fragezeichen ??) ein, und tippst dort TON ein. Dann kommt ein Dialog mit einem Vorschlag bezüglich Instanzdatenbaustein.
Am Parameter PT gibst du eine Zeit an, z.B. T#3M. Am Eingang IN gibst du negiert den Ausgang Q des Instanz-DBs an (z.B. "IEC_Timer_0_DB_1".Q). Dann bekommst du am Ausgang Q alle 3 Minuten einen Impuls für einen Zyklus.
Vorteil an der Sache ist dass deine SPS Uhrzeit nicht gestellt sein muss.

Edit: Bild
TIA-TON-Timer.png
 
Zuletzt bearbeitet:
habe es so realiesiert wie von dir vorgeschlagen, Ton zählt die vorgegegebene Zeit nun wird mein Ausgang Q nie gesetzt, habe es soger mit einem SR probiert, falls das fürs Auge zu langsam war aber das SR Glied wird nie gesetzt!

Bild:
TON_Impuls.JPG

Danke!
 
Verwende mal als Variable für S/R eine statische Variable, oder einen Merker.

Da ich aber auch schonmal bei der 1200er ein seltsames Phänomen mit dem TON hatte, habe ich es mal bei mir mit einem Merker probiert.
Das funktioniert bei mir nämlich auch nicht!
Bug bei Siemens würde ich fast sagen?

Scheint irgendwie problematisch zu sein dass man auf den Ausgang Q lesend zugreift, denn wenn man eine Hilfsvariable am Q-Ausgang einfügt und diese an den IN-Eingang des TON beschaltet funktioniert es nämlich.
Wobei das eigentlich kein Problem darstellen sollte. Bei der 1200er kann man leider nicht auf AWL umschalten, dann könnte man nachsehen was da für ein Code generiert wurde.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Funktioniert in SCL auch nicht. In folgendem Test-FB bleibt der Zähler immer auf 0, der Timer läuft aber und wird auch zurückgesetzt.
Code:
FUNCTION_BLOCK "TonTimerTest"
{ S7_Optimized_Access := 'TRUE' }
VERSION : 0.1
   VAR_OUTPUT 
      "zaehler_out" : DInt;
   END_VAR

   VAR 
      "ton_timer" {OriginalPartName := 'IEC_TIMER'; VersionGUID := 'b68d17d6-3fcc-4468-818a-b36d847990bb'; }  : TON_TIME;
      "s1" : Bool;
      "zaehler" : DInt;
   END_VAR


BEGIN
	#ton_timer(IN:=NOT #ton_timer.Q,
	           PT:=t#10s
	);
	
	IF (#ton_timer.Q) THEN
	  #zaehler := #zaehler + 1;
	END_IF;
	
	#zaehler_out := #zaehler;
	
END_FUNCTION_BLOCK

Vielleicht schick ich das morgen mal an Siemens, mal sehen was die dazu sagen.
Wahrscheinlich ist das jetzt eine neue "Systemeigenschaft".
 
ich wollt dich gerade fragen was du glaubst ob es in SCL funktionieren könnte, aber wie du bereits herausgestellt hast, auch nicht...

bei deinem SCL Code den du oben angeführt hast wird meiner Mainung das Problem sein das deine Variable ton_timer.Q immer 0 ist und du negierst die um den Timer zu aktivieren, dass passt auch nur wird die Variable Q vom TON nie auf 1 gesetzt da der Timer immer aktiv ist...

Was meinst du wenn ich eine Hilfsvariable mit einem Bool 1 anlege, also der immer auf TRUE ist, und den dann beim TON als IN Variable anlege, könnte das funkt.?
Dann greife ich nicht auf den Ausgang Q und habe ihn nicht als IN Variable...
 
Wenn der Ausgang Q immer false wäre würde der Timer nach Ablauf der Zeit aber nicht neu gestartet.
Irgendwas scheint in der Bearbeitungsreihenfolge bei der 1200er anders zu laufen als bei einer 300/400er, denn dort kann man es so programmieren und es funktioniert auch.

Damit es bei der 1200er funktioniert, musst du eine weitere Hilfsvariable anlegen welche du negiert am IN-Eingang beschaltest, und welche über den Ausgang Q zugewiesen wird.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich würde mal sagen das Problem liegt daran das du für das SR-Glied und das = dahinter die selbe Variable benutzt. Nimm da mal was anderes dahinter oder lass es ganz weg und schau dann mal was passiert
 
Zurück
Oben