# Win CC Timer & Zähler



## cod3sys (16 November 2006)

Hallo Forum,

Hat jemand Erfahrungen mit WinCC Zählfunktionen oder Zeitfunktionen ?
z.B. BOOL Signal "Tür Auf", es soll gezählt werden wie lange die Tür auf war und  wie oft.
Bin sehr dankbar für jede idee... 


Gruß
NUT


----------



## Unregistrierter gast (16 November 2006)

Nutellla schrieb:


> Hallo Forum,
> 
> Hat jemand Erfahrungen mit WinCC Zählfunktionen oder Zeitfunktionen ?
> z.B. BOOL Signal "Tür Auf", es soll gezählt werden wie lange die Tür auf war und  wie oft.
> ...


Zählen und Zeiten tut man in der SPS, nicht in WinCC.

(Da gibts doch auch gar keine Zähler / Zieten ... ??)


----------



## cod3sys (17 November 2006)

Hallo,

danke für deine Antwort. Ich weiss das man Zeiten und Zählern in der SPS verarbeitet. In diesem Fall habe ich aber keine SPS die untergeordnet ist. Die Variablen kommen von einer ET200 Station.


----------



## Andi F (17 November 2006)

Hallo Nutella,

Deine Angaben sind etwas missverständlich. Wie bekommst Du denn die Daten ohne SPS von der ET200 aufs WinCC?


Gruss Andi F


----------



## Maldito (17 November 2006)

Man könnte in einem Skript den Tag als Trigger anlegen und bei Änderung den Zeitstempel auslesen. Diesen in einen Buffer schreiben und bei der nächsten Änderung den Unterschied der Zeiten ausrechnen. Zur Anzahl der Öffungen direkt eine Variable inkrementieren.


----------



## Raydien (17 November 2006)

Ich habe mal bei Intouch nen Lifebeat realiesiert, ich denke das müsste bei WinCC aber auch gehen.

Sekunden Takt auf Aktion Skript.. dort eine +1 auf eine Variable schreiben .. schon haste dein Zeitwert. Dieses Skript kannst du natürlich zusätzlich durch eine UND Bedinnung natürlich EIn/Aus Schalten .. Somit hättest du deinen Timer..


----------



## cod3sys (17 November 2006)

Andi schrieb:
			
		

> Hallo Nutella,
> 
> Deine Angaben sind etwas missverständlich. Wie bekommst Du denn die Daten ohne SPS von der ET200 aufs WinCC?



Hallo Andi,
in meinem Beispiel habe ich auf ein Rechner nur WinCC installiert und über einen OPC Server (Industrial Ethernet) verbinde ich mich zu den SPS en oder zu den ET200 Baugruppen.


----------



## cod3sys (17 November 2006)

Hat jemand vielleicht ein *Beispiel*, wie man sowas auf der Basis von einem Taktmerker erstellt. Ich denke mal bei WinnCC sind Zeiten oder Zähler nur in Verbindung von Taktmerker (trigger) oder negtive+positive Flanken möglich.


----------



## Praktikant (18 November 2006)

hi,

ich habe mal ein miniprojekt auf www.lipro.de/zähler1.zip gelegt.


----------



## cod3sys (18 November 2006)

wooowww das ist echt cool von dir Praktikant 
vielen Dank ...

werde es mal gleich runterladen und probieren


----------



## cod3sys (18 November 2006)

Hi nochmal,

Praktikant habe mir dein Beispiel Projekt runtergeladen und getestet funktioniert sehr gut, vielen Dank nochmal.
Wenn ich aber den VB script in meinem Projekt benutzen will bekomme ich immer die Fehlermeldung " Variable ist nicht definiert " .
Dabei habe ich genau so wie in deinem Projekt zwei interne Variable angelegt wo ich die Zeit und Anzahl reinschreibe.
Ich füge mal ein paar Screenshots ein kann man besser sehen.
Wenn ich aber wieder auf dein Beispiel Projekt wechsele funktioniert es wieder ohne Fehlermeldungen.
Was ist denn nun bei mir anders, daß die zugewiesenen internen Variablen nicht erkannt werden ?
Übrigens kannst du mir vielleicht auch verrraten ob ich mit diesem Script nur bei Wertänderung der Variable aus dem Variablenhaushalt Zählen kann ? 
Also ohne daß ich einen Button betätige.



 

 







Gruß
NUT


----------



## Praktikant (18 November 2006)

hi,

zu 1.
die variablen sind bildweit definiert (Option Explicit)

zu 2.
dazu solltest du eine neue aktion im global-script anlegen und den trigger mit der variable verbinden, die auf tuer offen reagiert.
nun wird das script bei jeder änderung der variable aufgerufen und du musst mit 

if DEINE_VARIABLE = 1 then
    DEINE_AKTIONEN
end if

den zustand abfangen


----------



## cod3sys (19 November 2006)

Praktikant ich  kann mich nicht genug für deine Mühe bedanken. Danke, Danke, Danke ..... Deine Beiträge haben mir sehr geholfen.


----------



## cod3sys (20 November 2006)

Hi,

kannst du mir bitte noch einmal aushelfen.
Also ich habe diesen Script im Global Script angelegt und mit der genannten Variable getriggert.
Wenn das Tor geöffnet ist wird nichts gezählt. Ich habe mal mit dem Microsoft Script Debugger mir die Sache angeschaut und der Script bleibt immer an der " If RolltorOffen = 1 then " stehen.
Muss irgendwo die Variale aus dem Variablenhaushalt irgenwie nochmal gelesen werden ???
Der Script sieht wie folgt aus:

Option Explicit
Function action
Dim RolltorOffen, AnzahlOffen
Set RolltorOffen = HMIRuntime.Tags ("Rolltor_geöffnet")
If RolltorOffen =  1 Then
      Set AnzahlOffen = HMIRuntime.Tags ("AnzahlOffen")
      AnzahlOffen.Write(AnzahlOffen.Read (1) +1)
End If
End Function


----------



## Praktikant (20 November 2006)

If RolltorOffen.*Read(1) *= 1

so short


----------



## cod3sys (20 November 2006)

Vielen Dank,

du bist echt ein Profi in Visual Basic.
Sorry das ich ziemlich genervt habe aber das ist mein Einstieg in Visual Basic.


----------



## cod3sys (21 November 2006)

Hi Praktikant,

kannst du mir vielleicht nochmal den Hintergrund erzählen wie deine Zeit hier immer 1 sekunde zählt ?
Kann man in VB z.B. Timer.Intervall = 1000 irgendwie etwas ändern ?
In welcher Zeit wird die mit VB erfasst ? ms ?


----------



## Praktikant (21 November 2006)

das stellst du mit dem trigger ein


----------



## cod3sys (21 November 2006)

Hi,  genauso hatte ich es schon versucht. Das der Script über einen zyklischen Trigger aufgerufen wird, aber es zählt irgendwelche wahnsinns Zahlen zusammen. Ich habe es zur Zeit mit der Zählfunktion gelöst und es mit einem 1 Sekunden Trigger belegt. Also solange das Rolltor offen ist ( If ... then ) wird im sekundentakt hochgezählt. Trotzdem würde mich intressieren wie man in Visual Basic diese Timer funktion mit Sekunden Takt lösen kann. Hast du es bei dir schonmal versucht ? Funktioniert es wenn du deinen Script mit einem Sekunden Trigger belegst ?


----------



## Praktikant (21 November 2006)

hi, 
in vbs kannst du nur den timer abfragen und nicht setzen.
für timerfunktionen setzte ich ein fremd-ocx ein.


----------



## cod3sys (23 November 2006)

hi Praktikant,
werde mir mal ein Buch zu Visaul Basic bestellen.
Vielen Dank für all die nette Hilfe.


----------



## Praktikant (23 November 2006)

kein problem,

dafür ist das forum ja da.
schau auch mal bei http://www.vbarchiv.net vorbei.


----------

