# PWM-Signal mit einem Digitaleingang einlesen.



## littrom (29 November 2017)

Hallo Leute,

dies ist mein erstes Forumthema. 

Wie in der Überschrift ersichtlich ist, möchte ich ein PWM-Signal einer Pumpe über einen DI einlesen und auswerten. 
Die PWM-Frequenz ist auf 75Hz festgelegt (13,3ms). Ich muss also irgend wie das Verhältnis von High zu Low ausrechnen und in % ausgeben.

Jetzt die Frage ist es überhaupt möglich mit einem 750-8100er und einer DI Karte mit 3ms Reaktionszeit ein 75Hz Signal zu erfassen und auszuwerten.
Rein von der Zyklenzeit müsste es ja gehen.

gruß

Roman


----------



## weißnix_ (29 November 2017)

Das dürfte vor allen in den Bereichen über 70% und unter 30% schwierig werden.


----------



## littrom (29 November 2017)

wie meinst du das?

sorry bin noch recht Frisch in der SPS-Programmierung


----------



## KLM (29 November 2017)

Es steht und fällt mit der Zykluszeit des Task. Ich hab etwa 70Hz als Faustformel, was unter Berücksichtigung anderer zu erledigender Aufgaben praxistauglich ist. Du bewegst Dich also am oberen Limit und musst auch ein Auge auf die Größe des Prozessabbildes legen. Bei jedem Start eines Task mit K-Bus Zugriff wird das gesamte PA gelesen. Auf Nummer Sicher gehst Du mit einer Zäherklemmer, da die einen eigenen Zählspeicher hat, den Du dann ausließt.


----------



## KLM (29 November 2017)

Aso, nein. Du willst ja nicht nur die Pulse zählen, sondern auch das Verhältnis Low-High berechnen. Kannst Du bei der Frequenz, ohne über die Auflösung nachzudenken, mit einem DI gleich vergessen.


----------



## littrom (29 November 2017)

Danke für die klare Antwort.

wie könnte ich die Aufgabe lösen, welche Klemme ist dafür sinnvoll?


----------



## weißnix_ (29 November 2017)

bei einer Impulsrate von 75Hz hast Du einen PWM-Zyklus von 13,3ms.
Bei 100% Duty-Cycle wäre das also Dauer-Ein. 0% ist daueraus.
Bei 50% haben wir 6,65ms an und 6,65ms aus. Könnte noch gehen  mit einer schnellen Task.
Bei 30% haben wir 3,99ms on und 9,31ms off  Da wird es eng bei der Messung der On-Zeit.
Bei 70% ist es umgekehrt und wird bei der off-Zeit-Messung knapp.

Übrigens: Gibt es überhaupt eine schnelle Zählerkarte, welche das Tastverhältnis messen kann? Würde mich auch persönlich interessieren.


----------



## thomass5 (29 November 2017)

... Welche Spannungshöhe gibt die Pumpe aus? Evtl.mit einem Kondensator integrieren und die Spannung analog messen....


----------



## littrom (29 November 2017)

Die Schaltspannung ist 24V DC


----------



## thomass5 (29 November 2017)

... dann sollte die Karte max. 24V vertragen oder einen Spannungsteiler einsetzen.


----------



## Tiktal (30 November 2017)

@*weißnix*

es gibt noch digitale Eingangsklemmen mit 0,2ms (z.B. 750-403), oder Zählerklemmen mit 0,1-100kHz (750-404/000-003)
Ob man da nun wa smit anfangen kann, weiß ich nicht.

Gruß

Onno


----------



## weißnix_ (30 November 2017)

Zähler- oder Inkrementalgeberklemmen (zumindest bei Beckhoff) geben das nicht her nach meinen Recherchen.
Ich hatte mal mit der Beckhoff NC-Geschichte gespielt. Da wurde ein Tastverhältnis angezeigt an einer Inkrementalgeberklemme. Da es die Klemme selbst nicht macht, denke ich, das wurde in der NC-Task berechnet. Da Taskzyklen unter 1ms auf einem Cx9020 aber nicht wirklich praktikabel sind, bezweifle ich bei meinem PWM-Signal von ~5kHz sinnvoll was anfangen zu können.

Das ganze ist für mich aber mittlerweile ein theoretisches Problem, da PWM mit einer solchen Frequenz im Industriebereich nicht so die Verbreitung hat als Prozesssignal. An meiner Viessmann-Therme wird über dieses PWM-Signal der Sollwert des Saugzuggebläses vorgegeben. Jetzt erfasse ich den Gebläseistwert über dessen eingebauten Hall-Geber (0...200Hz).

Ich hatte da mal eine Idee gehabt aber nicht umgesetzt:
Eine Zählerklemme mit Gate einsetzen. Ein konstantes Frequenzsignal an den Zählereingang und das PWM-Signal an den Gate-Eingang. So liesse sich die High-Zeit des PWM mit hoheer Auflösung erfassen.
Das konstante Frequenzsignal könnte durche eine Pulse-Train-Klemme oder ähnliches erzeugt werden.
Das gleiche Konzept hatte ich schonmal für eine Produktlängenmessung schneller, kurzer Produkte geplant, aber es kam nicht zur Umsetzung.


----------



## PN/DP (30 November 2017)

Mit Zeitmessung in einer normalen zyklischen Task wird die Messung der Pulsdauer ziemlich ungenau. Wie klein kann die Taskzeit festgelegt werden / ist die schnellstmögliche Task? Kann auch so schnell auf die Karte zugegriffen werden?
Gibt es auch DI-Karten, die Prozessalarme (Interrupt) auslösen können?
Oder Zählerkarten, die direkt die Pulsdauer messen können?
Ich denke, nur durch Hardware-Verarbeitung der Pulsflanken kommt man auf eine Auflösung < 8%
Mit welcher Auflösung wird das Ergebnis erwartet? Etwas mehr auflösende Werte kann man durch Mittelwertbildung über mehrere Messungen erreichen.

Harald


----------



## weißnix_ (30 November 2017)

Interrupts kenne ich im Twincat-Umfeld nicht.
Und genau die Frage nach geeigneten Karten habe ich ja auch. ansonsten hab ich nur den in #12 beschriebenen Workaround.

Wie würde es denn ein Siemens-Spezi lösen?


----------



## littrom (30 November 2017)

Unter folgendem Link ist das PWM-Profil der Pumpe beschrieben vielleicht hab ich auch etwas falsch verstanden, 
da es gar nicht so einfach zu sein scheint wie ich es mir gedacht habe.

Hat schon jemand Erfahrung mit einem PWM-DC Converter und wenn ja eine Bezugsquelle

Gruß


----------



## weißnix_ (30 November 2017)

Na für eine Solarpumpe würde ich auf diesen Aufwand komplett verzichten.
Gib der Pumpe das Sollwertsignal vor und gut ist's.
Die Drehzahlregelung mache ich   über die V/R-Differenz und die Dachtemperatur/Speichertemp-Differenz. Also im Prinzip versucht meine Regelung eine konstante Differenz zwischen dem Vor- und Rücklauf herzustellen. Der Regler für die V/R-Differenz gibt den Sollwert für die Speicher-Dach-Differenz vor. Der wiederum bringt mir den Drehzahlsollwert für die Pumpe.
Drehzahlfeedback von der Pumpe hab ich nicht, brauch ich nicht.
Aber auch die Speicher-Dach-Differenzregelung alleine funktioniert tadellos.


----------



## littrom (30 November 2017)

Das ich das nicht unbedingt brauche ist mir klar, wäre so ein nice to have Ding .

Welche Bausteine verwendest du?


----------



## weißnix_ (30 November 2017)

Selber geschriebene + OSCAT-Regler


----------



## winnman (30 November 2017)

Mit Diode und Widerstand in Serie auf Elko, parallel zum Elko ein Poti (um das so hinzudrehen, dass bei 50% PWM ca. die halbe Spannung rauskommt), dann noch ein 2. Poti als Spannungsteiler um auf 0-10V zu kommen, fertig.


----------

