Step 7 DATE_AND_TIME direkt zu OPC Server schicken

Slavan

Level-2
Beiträge
27
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo an alle,

in meinem DB habe ich eine Variable DATE_AND_TIME definiert und sichtbar für OPC Server gemacht. In OPC Scout sehe ich die Variable.
Wenn ich sie anbinde, ist sie aber nicht gültig. Ist das mein Fehler oder lässt sich die Variable direkt gar nicht übergeben??

Soll ich die Variable dann in String mit Format : 01.01.2015 08:12:45 umwandeln? Ist das überhaupt noch DT Format??

Vielen Dank im Voraus
 
Welche Simatic.Net OPC Server verwendest du denn? Evtl. OPC-UA? Und für welche Steuerung?

Zumindest die älteren Versionen des Simatic OPC-DA Servers sollen laut Doku Date-And-Time beherrschen, bzw. wird es komfortablerweise auf den OLE-Typ VT_DATE konvertiert. Ansonsten müsstest du dich nämlich auf Client Seite mit dem BCD-Format rumquälen.
Vielleicht ist es nur der OPC-Scout der den OLE-Typ VT_DATE nicht beherrscht. Hast du es schonmal deinen eigentlichen OPC-Client getestet?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen,

wie von Thomas beschrieben, gibt es in der S7 verschiedene Datum-Typen. Davon eignen sich nur wenige (einer) für OPC, denn bei OPC ist der Datum-Typ ein VT_DATE. Es ist also die Aufgabe des OPC Servers, der den Datumswert aus der S7 holt, diesen in einen VT_Date zu konvertieren. Das kann der SimaticNET OPC Server nur für den Date-And-Time. Du brauchst dafür nichts tun, das macht der OPC Server. Für alle anderen Datum-Typen wird einfach nur eine Zahl geliefert (dessen Bedeutung gerade bei dem BCD Codierten Datum viel Gehirnschmalz braucht um es selber auszurechnen)

Wenn nun aber im Client (OPC Scout) diese VT_Date Variable mit "Bad" angezeigt wird, ist dies vermutlich ein "BadOutOfRange". Der Grund dafür ist, dass (obwohl ineinander konvertierbar) das "Minumum" dieser beiden Typen unterschiedlcih ist. Der eine fängt bei 1900-01-01 an und der andere bei 1970-01-01. Wenn du also nun z.B. "nichts" in deinem Datum drin stehen hast, bedeutet das in der S7 "1900" und das kann der OPC Server nicht in einen VT_Date umwandeln, weil er außerhalb des Wertebereichs ist.

Im "normalen" Betrieb ist das kein Problem da du vermutlich "heutige" Datumse in dem DB stehen hast, und dann können sie auch korrekt konvertiert werden.

Gruß
Dr. OPC
 
Vielen Dank an alle,

Problem ist gelöst. Daten aus DB werden abgeholt und im OPC-Scout angezeigt. Dafür muss man (und das fehlte) vom Client-Seite das richtige Format auswählen. Und ooopla - es funktioniert.
danke an alle für die schnelle Hilfe.
 
Vielen Dank an alle,

Problem ist gelöst. Daten aus DB werden abgeholt und im OPC-Scout angezeigt. Dafür muss man (und das fehlte) vom Client-Seite das richtige Format auswählen. Und ooopla - es funktioniert.
danke an alle für die schnelle Hilfe.

Was ist nun das "richtige Format" ?
In der SPS wohl Date and Time. Aber welches im PC-Programm?
 
Ein Time in der SPS entspricht einem DINT in Millisekunden.
D.h. Ein INT in C#. Entweder du arbeitest dann direkt mit den Millisekunden oder du machst einen Timespan draus.
Code:
TimeSpan.FromMilliseconds( millisec );
 
Zurück
Oben