Datum und Uhrzeit aus einem OP lesen

pfloh

Level-1
Beiträge
63
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich hätt da noch mal ein kleines Problem...
Ich möchte das Datum und die Uhrzeit aus meinem OP77A an die SPS übergeben.
Dabei gehe ich wie folgt vor:
Ich habe den Bereichszeiger Datum/Uhrzeit aktiviert und eine Adresse eingestellt, welche ich vorher in einem Datenbaustein deklariert habe. Die länge steht auf sechs, die Erfassungsart auf Zyklisch fortlaufend und der Erfassungszyklus auf undefiniert (liegt hier vielleicht das Problem??). Die letzten drei Einstellungen sind jedoch grau hinterlegt und ich kann sie nicht ändern!
Desweitern habe ich ein Bild auf dem OP, auf dem ich ein Datum-Uhrzeit-Feld eingefügt habe. Hierrüber möchte ich die Uhrzeit vom OP ändern.Einstellungen hier sind auf Ein/Ausgabe eingestellt und auf Systemzeit anzeigen.
Ändere ich nun Datum und Uhrzeit am OP, kann ich keine Änderung in der SPS feststellen.
Woran kann das noch liegen???
 
Ich glaube, du denkst falsch herum...
Der Bereichszeiger sorgt dafür, das die Zeit des Panels mit der CPU-Zeit abgeglichen wird, und zwar wird die Panel-Zeit überschrieben.
Du solltest also die CPU-Zeit stellen, dann sorgt der Bereichszeiger dafür, das das Panel nach 10 Sekunden (oder einer Minute, je nach Einstellung) die neue Zeit bekommt.
Systemuhr CPU auslesen und stellen geht mit sfc0 und sfc1, mal die Suchfunktion benutzen...
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Laut der Hilfe:
Funktion
Dieser Bereichszeiger wird für die Übertragung von Datum und Uhrzeit von dem Bediengerät zur Steuerung verwendet.
Also gehe ich dovon aus, dass das Datum+Uhrzeit dann in dem von mir vorgegebenen Bereich zur verfügung steht, oder nicht??
Meine CPU besitzt keine Echtzeit, darum kann ich die Uhrzeit der CPU nicht benutzen.
 
Hallo,
ich meine mich erinnern zu können, dass du nach dem Bereich für die OP-Zeit im DB noch 2 Byte mehr anlegen (und freilassen) mußt als eigentlich benötigt.

Aber davon ab ... hatten wir beide dieses Thema nicht schon mal ?

Gruß
LL
 
ja,ja... Das ist ein altes Thema, funktioniert aber noch nicht. Bin sogar der Meinung, dass es vier reserve Bytes sein müssen (so ist es bei mir).
Kann es sein, dass das OP 77A diesen Bereichszeiger gar nicht unterstützt?? Wie oben beschrieben, ist das Feld Erfassungszyklus grau hinterlegt. Wenn ich ein Steuerungsauftrag aktiviere, kann ich eine gewünschte Zeit einstellen.
Notfalls muss ich die Zeit halt über einen Steuerungsauftrag übergeben.
Würdes es aber lieber anders machen.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
OP77A ist nicht unbedingt meine Welt - aber wenn es den Bereichszeiger nicht unterstützen würde, dann wäre er m.E. auch nicht anwählbar ...
Da du diesen Wert zur CPU schreibst brauchst du auch keinen Erfassungszyklus. Kommt der von dir geschriebene Wert überhaupt in der SPS an ?
Mit den 4 Byte hattest du Recht - ich hatte mich da verschrieben ...
 
Hab da gerade noch was gefunden:
Beachten Sie, dass die Bereichszeiger nur bei verfügbaren​
Kommunikationstreibern eingesetzt werden können.
Kann mir jemand etwas über die Kommunikationstreiber erzählen, ist das abhängig von der Verbindungsart?? MPI Profibus usw??
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
vielleicht hilft Dir ein Beispielprogramm das ich vor einiger Zeit im Internet zum freien Download gefunden habe.

Gruß
Joe
 

Anhänge

  • Clkop.zip
    86,9 KB · Aufrufe: 32
Das Programm ist leider mit Protool und mit steuerungsaufträgen programmiert. Ich programmiere mit WinCC flexible und würde das Problem gerne mit dem Bereichszeiger Datum/Uhrzeit lösen.
 
Jetzt nur mal so am Rande ...
wie bekommst du den DATE_TIME in den Bereichszeiger (wie hast du das gemacht) ?
An welche CPU geht das Ganze (wenn diese keine Echtzeit besitzt).
 
Zuviel Werbung?
-> Hier kostenlos registrieren
So, falls es jemanden interessiert. Habe jetzt eine Alternative gefunden, und sie funktioniert.
Habe das Datum/Uhrzeit editier Feld von Systemzeit auf Variable geändert. Dieser Wert wird dann auch zur SPS übertragen. Mit diesem Wert schreibe ich mittels SFC0 die CPU Uhr. Danach lese ich mittels SFC1
die CPU Uhr wieder aus und Benutze den Bereichszeiger Datum/Uhrzeit/System um die OP Uhr damit zu stellen.
Bestimmt nicht die eleganteste Lösung, aber anders habe ich es nicht zum laufen gebracht.
Vielen Dank für eure Unterstützung.
Gruß pfloh:
 
Jetzt nur mal so am Rande ...
wie bekommst du den DATE_TIME in den Bereichszeiger (wie hast du das gemacht) ?
An welche CPU geht das Ganze (wenn diese keine Echtzeit besitzt).

Verstehe die Frage nicht ganz. Habe unter Bereichszeiger den Bereichszeiger Datum/Uhrzeit aktiviert und den bereich festgelegt wo das OP den Wert eintragen soll. benutze eine CPU 314.
Hast du vielleicht noch eine Idee wie ich es mit diesem Bereichszeiger lösen kann?? Meine jetztige Lösung funktioniert zwar, gefällt mir aber nicht 100%
 
Habe unter Bereichszeiger den Bereichszeiger Datum/Uhrzeit aktiviert und den bereich festgelegt wo das OP den Wert eintragen soll.
Wenn ich dich hier richtig verstehe, dann hast du zwar den Bereichszeiger gemacht - aber hineingeschrieben hast du nichts ... Stimmt das so ?
Wenn ja, dann versuch das doch mal. Es wird nicht von selber die Systemzeit des Bediengerätes in den Bereichszeiger gepackt ...
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Also, meine genaue Vorgehensweise ist wie folgt:
Unter Verbindungen/Bereichszeiger habe ich den Bereichzeiger Datum/Uhrzeit aktiviert. Als Symbol habe ich eine voher definierte Variable des Typs Date_and_Time eingefügt. Damit wurde dan auch automatisch die Adresse vergeben. Sie besteht aus dem erten Word der oben genannten Variable.
Alle anderen Einstellungen sin grau hinterlegt uns somit nicht zu verändern.
Ich dachte, dass das Bediengerät sein Datum und Uhrzeit jetzt in die Variable schreibt, oder ist das nicht so???
Wo muss ich jetzt noch was reinschreiben??
 
Warum liest eigentlich keiner die Hilfe-Dateien?

Bereichszeiger "Datum/Uhrzeit" Bereichszeiger "Datum/Uhrzeit"

Funktion
Dieser Bereichszeiger wird für die Übertragung von Datum und Uhrzeit von dem Bediengerät zur Steuerung verwendet.
Die Steuerung schreibt den Steuerauftrag "41" in das Auftragsfach.
Mit der Auswertung des Steuerauftrags schreibt das Bediengerät sein aktuelles Datum und die Uhrzeit in den im Bereichszeiger "Datum/Uhrzeit" projektierten Datenbereich. Alle Angaben sind BCD-codiert.
Wenn in einem Projekt mehrere Verbindungen projektiert sind, und in einer der Verbindungen der Bereichszeiger "Datum / Uhrzeit" verwendet werden soll, so muss der Bereichszeiger für jede projektierte Verbindung aktiviert werden.

Hinweis Beachten Sie bei der Eingabe in den Datenbereich "Jahr", dass die Werte 80-99 die Jahreszahlen 1980 bis 1999 und die Werte 0-29 die Jahreszahlen 2000 bis 2029 ergeben.

Wichtig auch noch:
41
Datum/Uhrzeit zur Steuerung übertragen
(Im Format OP/MP)
Zwischen zwei Aufträgen müssen mindestens 5 Sekunden liegen, da sonst das Bediengerät überlastet wird.​
Parameter 1, 2, 3​


Mfg
Manuel
 
Zuletzt bearbeitet:
Habe die Hilfe mehr als einmal gelesen. und meiner Meinung nach gehe ich dann doch genau richtig vor, oder nicht??
Vieleicht verstehe ich die Hilfe auch nicht richtig, dann wäre ich über einen Wink in die richtige Richtung sehr dankbar.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Habe die Hilfe mehr als einmal gelesen. und meiner Meinung nach gehe ich dann doch genau richtig vor, oder nicht??
Vieleicht verstehe ich die Hilfe auch nicht richtig, dann wäre ich über einen Wink in die richtige Richtung sehr dankbar.

Was verstehst du dann an dem Text, und insbesondere den Fetten Markierungen nicht?
 
Ich erkläre mal lieber wie ich es verstehe.
Wenn ich den Bereichzeiger Datum/Uhrzeit über WinCC flexible aktiviere, schreibt mir das OP sein Datum/Uhrzeit in die CPU. Ich brauche unter Adresse bzw. Symbol einfach nur noch sagen, wo ich das Datum/Uhrzeit gerne hin hätte. In der Cpu kann ich dann über das Datum/Uhrzeit in der angegebenen Variable verfügen. So verstehe ich dich Hilfe, aber so funktioniert es bei mir nicht.
 
Da steht:

Wenn Steuerauftrag = 41
Dann Schreibt Bediengerät seine Uhrzeit an Ort welcher wo im Bereichszeiger definiert ist.

Da steht NICHT das das Bediengerät das ohne vorherige Aktion (hier Steuerauftrag) macht.

Mfg
Manuel
 
Zurück
Oben