Windsensor an CPU312C in m/s auswerten

Andy082

Level-2
Beiträge
177
Reaktionspunkte
2
Zuviel Werbung?
-> Hier kostenlos registrieren
Abend.


Ich hab mir nun wieder etwas Zeit genommen und mich mit meiner 312C wieder gespielt.....

Augenblicklich versuche ich einen Windsensor des Herstellers Somfy an einem meiner schnellen Zählereingänge auszuwerten.
Grundlegend erhalte ich von meinem Sensor pro Umrehung 4 Impulse.
An meinem HMI würde ich gerne m/s ausgeben.

Meine ersten Versuche beziehen sich auf die Bausteine SFB47 & SFB48.

Das Problem ist für mich jedoch, verwende ich den SFB47, so müsste ich den Counterwert nach 1 Sekunde zurücksetzen.
=> kA wie das laufen sollte

Verwende ich wiederum den SFB48, habe ich einerseits keine Möglichkeit von Hz auf m/s zu rechnen, weiters erhalte ich bei geringen Impulsen keine Hz-Ausgabe.

Die Errechnung würde wie folgt aussehen:

Impulse/4 = Impulse pro Sekunde (IpS)

IpS * 2 * r (6,5cm => 0,065m) * pi = m/s

Bissal schwer die Rechnung hier zu erklären.

Sieht jemand eine weitere eventuell viel einfachere Möglichkeit von meinen Impulsen auf meine m/s zu kommen?


mfg,
Andy
 
Hallo Andy,

stell in der Hardwarekonfig den Zählereingang auf Frequenzmessen. Die Integrationszeit kannst du bis auf 10 Sekunden hochstellen.

Mit dem SFB48 kannst du die Frequenz einlesen. Warum du nicht von Hz auf m/s umrechnen kannst verstehe ich nicht.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Morgen Woldo.

....dir und allen anderen einen schönen Ostersonntag.

Den Versuch selbst habe ich bereits getätigt, wobei ich mir eben bei meiner zusammengedachten Umrechnung von Hz auf m/s sowas von gar nicht sicher bin....

v [m/s] = (2*pi*r[m]*t*f[Hz])/Impulsanzahl = (2*pi*0,065*1*f[Hz])/Impulsanzahl =>

=> v[m/s] = 0,102102*f[Hz]

....weshalb ich zu dem Schluss gekommen wäre, es könnte nicht möglich sein. Ich lasse mich aber gerne eines Besseren belehren und ich hoffe das tut auch jemand.

Die HW-Cfg ist, wie auch von dir empfohlen, eingestellt.

Mein kleines Programm sieht wie folgt aus:

Code:
Netzwerk 1:
      CALL  "FREQUENC" , "Instanz-DB-Frequenz"
       LADDR   :=W#16#300
       CHANNEL :=0
       SW_GATE :=TRUE
       MAN_DO  :=
       SET_DO  :=
       JOB_REQ :=
       JOB_ID  :=
       JOB_VAL :=
       STS_GATE:=
       STS_STRT:=
       STS_DO  :=
       STS_C_DN:=
       STS_C_UP:=
       MEAS_VAL:=DB113.DBD0     "Frequenzerrechnung".Hz
       COUNTVAL:=
       JOB_DONE:=
       JOB_ERR :=
       JOB_STAT:=
 
Netzwerk 2:
      L     DB113.DBD0     "Frequenzerrechnung".Hz
      DTR                                     //Um Hz in eine Gleitzahl umzuwandeln;
      L     1.021020e-001                     
      *R    
      T     DB113.DBD4     "Frequenzerrechnung".MpS_GZ
      L     DB113.DBD4     "Frequenzerrechnung".MpS_GZ
      RND                                    //Um das Ergebniss in eine Ganzzahl umzuwandeln
      T     DB113.DBD8     "Frequenzerrechnung".MpS

Nun ergeben sich wieder zwei Probleme:
Einerseits erhalte ich erst eine Ausgabe an MEAS_VAL:=, wenn sich der Sensor bereits mit einigen Hz dreht, d.h.: langsame Windgeschwindigkeiten würden nicht ausgewertet werden.
Andererseits bin ich mir bei meinen Umwandlungen von Ganzzahlen in Gleitzahlen (durch meine Umrechnungszahl von 1.021020e-001) auch nicht sicher.

mfg,
Andy
 
ein anderer Lösungsansatz....

....wäre die Verwendung des Zählerbausteins SFB47.

Code:
     CALL  "COUNT" , "Instanz-DB-Counter"
       LADDR   :=W#16#300
       CHANNEL :=0
       SW_GATE :=TRUE
       CTRL_DO :=
       SET_DO  :=
       JOB_REQ :=
       JOB_ID  :=
       JOB_VAL :=
       STS_GATE:=
       STS_STRT:=
       STS_LTCH:=
       STS_DO  :=
       STS_C_DN:=
       STS_C_UP:=
       COUNTVAL:=DB113.DBD0         //"Frequenzerrechnung".Impulse
       LATCHVAL:=
       JOB_DONE:=
       JOB_ERR :=
       JOB_STAT:=

Was wäre, wenn ich nun anhand meines Taktmerkers den Wert von COUNTVAL jede Sekunde auf 0 zurücksetze? So würde ich quasi "Impulse pro Sekunde" erhalten und könnte auch kleinere Windgeschwindigkeiten auswerten.
Mein Problem ist nur, dass ich weder den DINT-Wert in DB113.DBD0 noch jene im Instanzbaustein für SFB48 beschreiben und so auf 0 setzen kann.

Unter http://support.automation.siemens.c...lib.csinfo&lang=de&objid=18467424&caller=view wir die Möglichkeit aufgezeigt, einen Wert per WR_Count_value (Auftragsanstoß für "Zählwert schreiben") und WR_Job_value (Wert für den jeweiligen Schreibauftrag) in den SFB47 zu schreiben.
Ich komm aber nicht dahinter, wie ich denn diese Befehle verarbeiten soll. :confused:

Außerdem kommt mir, wenn ich hier wiederum Eigenkritik übe, die ganze Berechnung etwas schwammig vor. Immerhin ist das Löschen des Zählers doch wiederum von der Zykluszeit der SPS abhängig. Somit würden bei hohen Windgeschwindigkeiten einmal mehr, einmal weniger Zählimpulse erfasst werden.

Eventuell fällt jemandem, der wie ich nicht weiß, wass er denn Sonntags bei strahlendem Sonnenschein machen soll, etwas dazu sein. :-D


mfg
 
Warum machst du dir das Leben eigentlich so schwer?

Die Frequenzmessung ist doch exakt was du brauchst.
Zu deinen niedriegen Frequenzen solltest du dir in den Zählerparametern die "Integrationszeit" mal näher betrachten,
dann klappts auch mit niedrigen Frequenzen ...

Für deine Rechnung oben, die auf den ersten Blick so i.O. scheint musst du nur noch den Frequenzwert vom SFB geteilt durch 1000 nehmen ... weil der SFB das ganze ja in mHz ausgibt ...

Mfg
Manuel
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Abend, Manuel.

Danke für den Tip....

Ich habe nun nochmals folgendes versucht:

HW-Cfg auf Frequenzmessen, Messwert ausgeben: Direkt und einer Integrationszeit von 1000s, alle weiteren Werte wurden auf Standart belassen.

Heute war bei mir gutes Wetter zum Messen der Windstärke. Soll heißen, dass der Wind lt. Anometer immer schier konstant war.

Der Grund weshalb ich die Frequenzmessung nicht so ganz begrüsse ist, dass bei geringen sowie normalen Windstärken mal ein Wert an der Variable Meas_Var:= ansteht und mal wieder nicht, obwohl am Eingang stetig ein Impulssignal ansteht.

Auch mit anderen Integrationszeiten hatte sich das Problem nicht gelöst. (egal ob 10ms, 100ms oder 10000ms)
Brauchbar ist das Ganze nur, wenn ich "Messwert ausgeben: Mittelwert" aktiviere. Nur lassen sich so keine Windböhen entdecken und meine Raffstore "retten".

Mit der Messung meiner Impulse per Counter würde ich so selbst kleine Böhen entdecken.

Die Umrechnung der mHz wurde unter den Tisch gekehrt, da die Anzeige mit 3 Dezimalstellen ausgegeben wird.
Somit hebt sich dies quasi auf....

mfg,
Andy


P.S.:
Ich mach mir nicht mein Leben schwer...
Ich springe einfach gerne mal ins kalte Wasser und versuche mich mit einigen Ideen wieder ans Ufer zu strampeln. Wenn's dann gar nicht mehr geht, lass ich mich hier im Forum "retten". :ROFLMAO:
 
Zuletzt bearbeitet:
Lösung gefunden......

So, 2:00 Uhr früh ist's und ich denke ich hab die Lösung für mein Problem gefunden.....

Code:
Netzwerk 1:
    CALL  "COUNT" , "Instanz-DB-Counter"
       LADDR   :=W#16#300
       CHANNEL :=0
       SW_GATE :=M100.7
       CTRL_DO :=
       SET_DO  :=
       JOB_REQ :=
       JOB_ID  :=
       JOB_VAL :=
       STS_GATE:=
       STS_STRT:=
       STS_LTCH:=
       STS_DO  :=
       STS_C_DN:=
       STS_C_UP:=
       COUNTVAL:=DB113.DBD0        //Impulse
       LATCHVAL:=
       JOB_DONE:=
       JOB_ERR :=
       JOB_STAT:=

Netzwerk 2:
      U     M    100.7
      SPB   END
      L     "Frequenzerrechnung".Impulse
      L     102                                 //Rechnungszahl
      *I    
      T     "Frequenzerrechnung".MpS
   END:  NOP   0

Anhand des Taktmerkers aktiviere und deaktiviere ich mein SW-Gate.
Bis zur nächsten positiven Flanke bleiben meine Impulse im Zählwert gespeichert. Die Errechnung der "Meter pro Sekunde" wird dann sekündlich durchgeführt und am Panel ausgegeben. So können auch kleinere Böhen erkannt und ausgewertet werden.

Über Feedback, egal ob positiv oder negativ, würde ich mich freun....

mfg,
Andy
 
Hallo Andy082,

das ist ja interessant.
Ich möchte auch so etwas machen.
Kannst du mir nähere Info's zu deinem Windsensor geben (Genaue Bezeichnung und ev. Preis + Lieferant).
Wo genau schliesst du dann den Windsensor an und kannst du mir das Stück Code posten.
Wäre dir sehr dankbar.

Habe auch eine CPU (315-2DP) im Keller hängen zur Hausautomation und möchte die Rollladen runterfahren, sobald ein Sturm kommt (Insektengitterschutz)

noeppkes ...
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo.

Da bereits mehrere Anfragen bezüglich dem verwendeten Windsensor ankommen, hier der Link zur Herstellerseite. (hoffe das wird nicht als Werbung gesehen)
http://www.somfy.at/index.cfm?page=...sor-<br>eolis-sensor-rts&tab=PRO&userpref=A|3
Der hier gezeigte Sensor ist leider bereits für Funkbetrieb. Habe im Verkauf einen sehr guten Bekannten sitzen und bekam daher ein älteres, liegen gebliebenes Exemplar.

Grundsätzlich kann man jeden beliebigen Windsensor einsetzen, sofern dieser einen potenzialfreien Kontakt zur verfügung stellt. Ich selbst habe bei meinem das Ganze noch mit einem Transistor entkoppelt, da ich den kleinen Reedkontakt nich unbedingt mit 24V und 2A konfrontieren wollte.

Die Anbindung erfolgt bei mir über einen meiner schnellen Zähleingänge, daher auch die CPU312C. Ob es bei einer älteren 315-2DP funktioniert kann ich nicht sagen, würde aber meinen, dass es eher recht ungenau wird. Bei hohen Windstärken, ergo schnellen Impulsen am Eingang kommt die CPU sicherlich nicht mehr mit. d.h. es gehen Impulse verlohren und das Ergebnis wird unbrauchbar.

Was den Code betrifft, so wurde in etwa jener wie zuletzt beschrieben verwendet. Der Aufruf call "COUNT" bezieht sich auf den SFB47.

mfg,
Andy
 
Eine Frage habe ich noch:

kann man das auch mit einem "normalen" Digitaleingang machen?
Von Eltako gibts da einen Sensor der macht bei 32m/s Wind 94 Pulse/sec also 94Hz.

Überfordert das einen normalen DI und das Programm dahinter, oder könnte das funktionieren?
 
Eine Frage habe ich noch:

kann man das auch mit einem "normalen" Digitaleingang machen?
Von Eltako gibts da einen Sensor der macht bei 32m/s Wind 94 Pulse/sec also 94Hz.

Überfordert das einen normalen DI und das Programm dahinter, oder könnte das funktionieren?

Wird vermutlich mit einer bezahlbaren S7 nicht funktionieren. Die Zykluszeit + Eingangsverzögerung der Digitaleingänge dürfte maximal 10ms betragen bei 100Hz.
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Täusche ich mich, wenn ich mal einfach so behaupte, dass die schnellen Zähleingänge einer 31xC-CPU dafür ausreifen sollten?
Immerhin schaffen diese ja 10kHz.

Aber mit einem normalen DI seh ich da keine Chance.
 
Zurück
Oben