Visiwin Smart Standart Datum / Uhrzeit

TMaroni

Well-known member
Beiträge
129
Punkte Reaktionen
3
Zuviel Werbung?
->Hier kostenlos registrieren
Hallo Jungs

Ich möchte gerne mit meiner SPS-Steuerung (S7-300) das Datum und die Uhrzeit mit meinem Touchpanel PC
minutlich synchronisieren. Bei der Synchronisierung ist die SPS-Steuerung der Master. Das Datum und die
Uhrzeit sind als INT im DB abgelegt.
Hat jemand einen Vorschlag, wie ich das machen könnte?

Danke zum Voraus für eure Hilfe!

Gruss
TMaroni
 

Larry Laffer

Supermoderator
Teammitglied
Beiträge
13.092
Punkte Reaktionen
2.719
Hallo,
wenn der Weg (die Zeit kommt aus der SPS) für dich der Richtige ist (ich würde wegen der Ungenauigkeit der SPS eher den PC als Uhrzeit-Server nehmen) dann kannst du es m.E. nur so machen, dass du in VisiWin dir eine Methode erstellst (welche Programmiersprache benutzt du ?), die auf das Change-Event des VW-Items Minute reagiert und entsprechend die Systemzeit nach den Vorgaben der anderen Items ändert.
Ich kann dir allerdings (da wir VW-Smart nicht einsetzen) nicht sagen, ob dort auch die gleiche Funktionalität zur Verfügung steht ...

Gruß
Larry
 
OP
T

TMaroni

Well-known member
Beiträge
129
Punkte Reaktionen
3
Zuviel Werbung?
->Hier kostenlos registrieren
Im Visiwin Smart kann ich die VB-Sprache benutzen, VW-Items Change-Events kann ich auch beim Smart benutzen!
Nur bin ich im VB-Programmierung nicht Sattelstark! Kann man vielleicht mit der Tick-Funktion und mit den VW-Items etwas machen?

Gruss
TMarroni
 

Larry Laffer

Supermoderator
Teammitglied
Beiträge
13.092
Punkte Reaktionen
2.719
Hallo,
dein Event heißt "Change". Dafür mußt du den Handler in deine eigene Methode umleiten und darin den "Sender" (also welches Item das Ereignis auslößt) und die EventArgs (also die weiteren Item-Informationen wie z.B. den Value des Items) auswerten.
Ich kann dir dafür auch Beispiele heraussuchen - VB wäre auch meine Sprache - ein gutes .Net-Grundverständnis sollte dafür aber m.E. schon vorhanden sein denn sonst nützt dir das Ganze nicht allzu viel ...

Gruß
Larry
 
OP
T

TMaroni

Well-known member
Beiträge
129
Punkte Reaktionen
3
Der Event macht ein Bit aus der Steuerung. Einfache Befehle vom VB kenne ich wenn sie einigermassen wie SCL (IF Then Else) sind.
Welches Befehl ist von dir aus das richtige, setsystemtime oder setlocaltime?
Die Variablen des Datenbausteins werden in den internen Variablen z.B. :

DIM SPS_Jahr as INT
DIM SPS_Monat as INT
DIM SPS_Tag as INT
DIM SPS_Stunde as INT
DIM SPS_Minuten as INT
DIM SPS_Sekunden as INT
übergeben.
Bei einem TICK-Befehl wird dann die Funktion SetTime aufgerufen!


Gruss
TMaroni
 
Zuletzt bearbeitet:

Larry Laffer

Supermoderator
Teammitglied
Beiträge
13.092
Punkte Reaktionen
2.719
Zuviel Werbung?
->Hier kostenlos registrieren
Hallo,
ich würde es in etwa so machen :
Code:
TimeofDay.Second = mySecond
TimeofDay.Minute = myMinute
etc.
... ist aber nicht getestet.

Du hast aber das Prinzip von VisiWin hier noch nicht verstanden.
Wie bekommst du denn (deiner Meinung nach) die Werte der SPS-Variablen in deine definierten (mit DIM erzeugten) Variablen ?
Ein VW-Item ist ein Objekt, das du erzeugen und am VW-Aktualisierungs-Service anmelden mußt.
Dieses Objekt, wenn richtig angelegt, liefert dir dann selber ein Event, wenn es seinen Wert ändert (wie schon von mir beschrieben), den du dann beliebig verwerten kannst.
Kannst du mit den Begriffen Instanzen, Handler, Objecte sinn voll umgehen ?
Der Teil, der mir bekannt ist, ist mit relativ wenig Aufwand umzusetzen - man muß aber verstehen, ws man da tut ...

Gruß
Larry
 
OP
T

TMaroni

Well-known member
Beiträge
129
Punkte Reaktionen
3
Das ist kein Problem wie ich die Werte von SPS bekomme, wie du oben genau beschrieben hast.
Es geht bei mir nur um den Code in VB wie ich das Datum und die Uhrzeit einstellen kann.
Ich habe bei googlen etwas gefunden aber ich ich weiss nicht ob es funktioniert:

Private Structure LOCALTIME
Dim wYear As Short
Dim wMonth As Short
Dim wDayOfWeek As Short
Dim wDay As Short
Dim wHour As Short
Dim wMinute As Short
Dim wSecond As Short
Dim wMilliseconds As Short
End Structure
Private Declare Function SetSystemTime Lib "kernel32" (ByRef lpSystemTime As LOCALTIME) As Long

Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Dim timeStru As LOCALTIME
timeStru.wDay = 28
timeStru.wDayOfWeek = 6
timeStru.wHour = 21
timeStru.wMilliseconds =203
timeStru.wMinute = 50
timeStru.wMonth = 9
timeStru.wSecond = 35
timeStru.wYear = 2007 'set the new time
SetLocalTime(timeStru)
End Sub

Gruss
TMaroni
 

Larry Laffer

Supermoderator
Teammitglied
Beiträge
13.092
Punkte Reaktionen
2.719
Hallo,
mit der von dir herausgesuchten Prozedur liegst du m.E. richtig. Wie schon geschrieben setze ich die Systemuhr des PC's normalerweise nicht sondern eher die der SPS. Daher war meine ursprüngliche Annahme falsch. Den von dir geposteten Beitrag habe ich in ähnlicher Form auch im Internet gefunden.

Jetzt hast du deine Struktur aber erstmal (wahrscheinlich zum Testen) mit Konstanten beschaltet.
Deine VW-Items hängen aber an einer Form (oder einer anderen Klasse). Außerdem werden die normalerweise auch nur aktualisiert wenn die Form aktiv ist.
Das Aufrufen des SetLocalTime kannst du natürlich auch über einen Timer machen - klar ...
In diesem Fall würde ich mir hier aber eine eigene Klasse machen, die die Items beinhaltet, den Timer und das Attachen und Detachen der Items an den VW-Service.
Wenn du diese Klasse sauber progarmmiert hast dann kannst du sie dann überall instanzieren, wo nötig und du behältst auch deine Anwendung und deren Speicherbedarf unter Kontrolle - ist aber deine Entscheidung.

Gruß
Larry
 
Oben