# Betriebsstunden erfassen und auswerten



## Anonymous (17 Juni 2005)

hallo erstmal
bin gerade dabei eine Pumpensteuerung zu schreiben. das alles funktioniert wunderprächtig. jetzt hab ich nur ein problem. ich möchte die Betriebsstunden der einzelnen Pumpen (16 St.) erfassen. das ein- und ausschaltverhalten der einzelnen Pumpen ist unterschiedlich. ich hab es mit einem sfc2,3,4 versucht. nur funktioniert er nicht so wie ich mir das vorstelle. ausserdem kann ich nur einen parametrieren, oder? hat jemand eine idee wie ich das am bessten und einfach löse? wäre über hilfe sehr dankbar. bin ein wenig verzweifelt.

vielen dank schon mal im vorraus


----------



## lorenz2512 (17 Juni 2005)

Hallo,
warum nicht einen Takt erzeugen, und dann jede Pumpe in einem Wort hochzählen?
Aber gibt auch was fertiges, von dem Member Volker:
http://80.144.250.75/files/index.php

da mal unter SPS, S7_Bausteine, Bs schauen.

mfg

dietmar


----------



## volker (17 Juni 2005)

lorenz2512 schrieb:
			
		

> Hallo,
> warum nicht einen Takt erzeugen, und dann jede Pumpe in einem Wort hochzählen?
> Aber gibt auch was fertiges, von dem Member Volker:
> http://80.144.250.75/files/index.php
> ...



Um bei mir downzuloaden nie die echte ip-adresse verwenden.
mein server hat eine dynamische adresse. die ändert sich min alle 24 stunden.

benutzt immer unten stehenden link


----------



## Anonymous (17 Juni 2005)

*Betriebsstunden*

Hallo
hab mir jetzt mal das programm angeschaut. Danke für den hinweis. ist mir sehr hilfreich.
Bin jedoch noch in der "programmier-anfang-fase", und versteh ein paar kleinigkeiten nicht. könnte mir jemand sagen, was die anweisungen im ob1 nw1(bis aufruf fc119)bewirken. mir sag die zuweisung = L 20.0 nix. 
ist L nicht ein ladebefehl? was bewirkt BLD. ausserdem habe ich schwierigkeiten die ladebefehle im fc119 nw1 zu verstehen.
was mich ausserdem stutzig macht, ist, das das ganze doch zykluszeitabhängig ist, oder? oder wie mach ich das, das 60sekunden auch wirklich 60 sekunden sind? tut mir leid, aber irgenwie versteh ich das nicht. wär super, wenn mir jemand hilft. wie gesagt, bin anfänger.

nochmals danke 

gruß michi


----------



## lorenz2512 (17 Juni 2005)

Hallo,
vieleicht ist der Bz leichter zu verstehen, ist unter Beispielprogramme S7 zu finden:
http://www.sps-net.de/infos/info_main.htm
Ist nach dem Prinzip wie oben beschrieben aufgebaut, Takt erzeugen, Takt zählen aufgebaut.

mfg

dietmar


----------



## old_willi (17 Juni 2005)

Hallo,

wenn du auf FUP oder KOP umschaltest verschwinden diese dir unbekannten Befehle.
Die Verschaltungen am FC werden bei Programmierung in FUP/KOP vor oder hinter dem Bausteinaufruf automatisch gemacht. Die Verbindung zum FC erfolgt über die Lokaldaten die mit L bezeichnet werden.

Die Befehle BLD XXX und NOP 0 haben für die Funktion keine Bedeutung. Damit wird in FUP/KOP der grafische Bildaufbau gesteuert.

Wenn du in AWL die Befehle BLD und NOP 0 löscht so bleibt die Funktion erhalten aber FUP/KOP- Darstellung ist weg.

Gruß Wilfried


----------



## Anonymous (17 Juni 2005)

hallo
Danke dir Willi. NOP 0 war mir bekannt, aber BLD nicht.  könntest du mir noch sagen, wofür die anweisungen stehen:

      L     B#(31, 3)
      L     W#16#2000
      L     'BY'
      L     'VL'


hab den Betriebsstundenzähler ausprobiert. hab den takt mit eien takmerkerbyte (M 100.3) aus der hardwarekonfig beschaltet. trotzdem ist der nicht mit der echtzeit synchron. mach ich was falsch, oder wie mach is richtig? kann das an der zykluszeit der cpu hängen?

gruß michi


----------



## old_willi (17 Juni 2005)

Hallo Michi,

weil BLD keine Programmfunktion hat, hat es mich nie interessiert. Vielleicht weiß ein anderer mehr. Zu den Befehlen:

L B#(31,3) = Lade 2 Byte mit den dez. Werten 31 + 3.
In FUP/KOP gibt es den Befehl nicht und man muss ihn ersetzen durch
L W#16#1F03.

L W#16#2000 = L ein Wort #16  in 16Bit- Darstellung (Hex) . Der Wert Hex 2000 entspricht deimal 8192.

L 'BY' = Lade die 2 Zeichen (B + Y) im ASCII- Code.

Ich vermute dein Taktmerker hat keinen Sekundentakt. Nimm mal M 100.5.

Gruß Wilfried


----------



## volker (17 Juni 2005)

Mike_Ra schrieb:
			
		

> hallo
> L     B#(31, 3)
> L     W#16#2000
> L     'BY'
> ...



 :lol: 
Das bedeutet:
ich habe den baustein am 31.3.2000 geschrieben
by vl bin halt ich.



> hab den Betriebsstundenzähler ausprobiert. hab den takt mit eien takmerkerbyte (M 100.3) aus der hardwarekonfig beschaltet. trotzdem ist der nicht mit der echtzeit synchron. mach ich was falsch, oder wie mach is richtig? kann das an der zykluszeit der cpu hängen?



der bs erwartet eine positive flanke. der taktmerker aus der hardware steht aber für eine gewisse zeit an. der zähler zählt dann natürlich viel zu schnell.


```
U     #takt_05s_2Hz
      FP    M     90.0
      =     L     21.0
      BLD   103
      U     M     90.1
      =     L     21.1
      BLD   103
      U     A      1.0
      =     L     21.2
      BLD   103
      CALL  FC   120
       Takt    :=L21.0
       Reset   :=L21.1
       Freigabe:=L21.2
       Std     :=DB80.DBW10
       Min     :=DB80.DBW11
       Sek     :=DB80.DBW12
      NOP   0
```


----------



## Anonymous (21 Juni 2005)

Hi Volker

Jetzt leuchtet mir das schon eher ein mt dem `BY` und dem `VL` .

hab jetzt den Zähler mal so ausprobiert, wie du es gesagt hast. also mit einem 2Hz Taktmerkerbyte 100.3 aus der Hadwarekonfig. der zähler wird dan mit einer pos flanke gezählt.
hab mir das ganze dan in einer var angekuckt. nach ca 15 min hat der zähler aber schon eine abweichung von ca 1 min. also ca 1 min zu langsam. 
das liegt doch daran, das der zähler nur 1x jeden zyklus hochzählt. bedingt durch die fp. also wenn ich eine zykluszeit von ca 10ms hab, ist ja der zähler jede sekunde um die zykluszeit zu langsam,oder? 
wenn ich also einen genaueren zähler brauche, muss ich die systemzeit mit ins programm integrieren.

gruß Michi


----------



## volker (21 Juni 2005)

du könntest die fc aus dem ob35 heraus aufrufen.


----------



## volker (21 Juni 2005)

Mike_Ra schrieb:
			
		

> nach ca 15 min hat der zähler aber schon eine abweichung von ca 1 min. also ca 1 min zu langsam.



Das kann ich aber nicht bestätigen.

ich habe hier einen 10minuten test mit einer 313c2dp gemacht. zykluszeit 40ms.

wenn ich den takt mit einem timer (1sek) machen komme ich auf:
9m17s

wenn ich die pos.flanke des taktmerkers nehme komme ich auf:
10m1s

wenn ich den bs im ob35 aufrufe komme ich auf:
10m0s


----------



## Anonymous (27 Juni 2005)

Hi volker

das war nur so ungefähr. jedenfalls war er halt nicht genau. 
i hab jetzt des so gemacht, das ich das ganze im ob35 aufrufe. wollt es zwar mit dem ob 32 machen, geht aber mit der cpu 316-2-dp nicht. jedenfalls nochmal danke für deine auskuft. bin dir echt dankbar, und vor allem happy das es endlich funktioniert.

gruß miche


----------



## XP-M (10 August 2005)

Hallo,

habe mir den BS mal abgekupfert...
Jedoch habe ich damit ein problem, da dieser ja nur bis 32767 Std. zählt....und danach mit Vorzeichen Minus weiterzählt... ??? liegt das an Int ?




> L B#(31,3) = Lade 2 Byte mit den dez. Werten 31 + 3.
> In FUP/KOP gibt es den Befehl nicht und man muss ihn ersetzen durch
> L W#16#1F03.
> 
> ...



Für was brauch ich das überhaupt ?

Wäre sehr dankbar wenn mir weiterhelfen könnte....


----------



## volker (11 August 2005)

wenn du weiter zählen willst, must du entwerder den bs nehmen der auch tage zählt oder ,falls du doppelworte benutzen kannst den baustein auf doppelworte anpassen.

code im nw1 ist mein (c) vermerk. :wink:


----------

