# Drehzahlregelung pulsiert



## BFC92 (3 April 2022)

Hallo, also ich regle die Drehzahl eines Drehstrommotors über einen näherungssensor. Hab dafür ein einfaches Programm geschrieben, aber wie schon erwartet pulsiert jetzt die Drehzahl (wenn ich beispielsweise 1500 Umdrehungen einstelle, schwankt die Drehzahl zwischen 1200 und 1700 RPM). Hat jemand ne idee wie ich was dagegen tun kann?






Also Dec_SP ist halt Drehzahl reduzieren, und Inc_SP Drehzahl erhöhen, der rest ist eigentlich selbsterklärend...

wär voll cool wenn jemand ne Idee hat, vllt sollte ich das auch ganz anders angehen...


----------



## BFC92 (3 April 2022)

Also mir ist natürlich klar das das ein überschwingen der Regelung ist, ich hab nur leider keine Ahnung was ich dagegen tun kann.


----------



## TP-Inc (3 April 2022)

Wie wird der Motor angesteuert? FU? Warum beschreibst du Eingänge? Von Regelung kann man hier ja fast nicht sprechen. Wie kommt der Drehzahlistwert zustande?


----------



## BFC92 (3 April 2022)

Jo klar über einen FU, ja ich weiß aber ich weiß halt nicht wie ich ne ordentliche Regelung mache, ja das sind halt die Eingänge für meinen FU. Hab das hingeschrieben um das Programm verständlich zu machen, auch wenn mir klar ist das das sehr einfach ist.


----------



## BFC92 (3 April 2022)

Ja der Drehzahlistwert wird über einen Näherungssensor abgetastet.


----------



## Plan_B (3 April 2022)

Wenn die Rampen im FU nicht zur Abtast-/ Stellgeschwindigkeit passen (zu lang sind) würde das schon ohne weitere Betrachtung des SPS-Reglers einiges erklären.
Mit welcher Häufigkeit werden die oben gezeigten Netzwerke abgearbeitet? Ich würde selbst mit kürzester Rampeneinstellung ein heftiges SChwingen vermuten. Wenn Du mit *einem *Näherungssensor die Istgeschwindigkeit abtastest, wäre ja eine Integration der Impulse über die Zeit erforderlich. Somit hast Du schon eine recht langsame Abtastung des Istwertes. Ist denn der DI schnell genug dafür?


----------



## Plan_B (3 April 2022)

BFC92 schrieb:


> Also mir ist natürlich klar das das ein überschwingen der Regelung ist, ich hab nur leider keine Ahnung was ich dagegen tun kann.


Im ersten Ansatz die Rampen reduzieren und die Abarbeitungsintervalle des "Reglers" mit längeren Pausen versehen. Wie passiert denn die Sollwertgenerierung nach den beiden Netzwerken?


----------



## BFC92 (3 April 2022)

Also die Rampenzeit zu verlängern bringt nichts, aber dadurch wurde sichtbar was das Problem ist, der "Regler" ist schnell aber der FU Reagiert erst spät darauf. Also ich benutze das siemens Telegramm 352, das sieht dann ungefähr so aus:


----------



## Plan_B (3 April 2022)

BFC92 schrieb:


> Also die Rampenzeit zu verlängern bringt nichts


Sag ich doch.
Du musst die Abstände zwischen den Impuösen für "Dec_SP" bzw. "Inc_SP" so groß machen, dass der FU eine Chance hat zu folgen.
Du scheinst ja die Ausgänge der SR direkt zu übergeben - häng doch einfach jeweils mal einen *langsamen* Impulsgenerator dahinter, der mit den Ausgängen der SR verundet wird.

PS: In welchem Zyklus erfasst Du denn die Istgeschwindigkeit? Ich vermute, Du zählst über ein fixes Zeitintervall (Weck-OP?) die Counts.
PPS: Von der Struktur her versuchst Du einen I-Regler zu basteln.


----------



## BFC92 (3 April 2022)

Oh ja hast recht, Rampe verkürzen war schlauer, Problem bleibt aber bestehn, ich versuch das mit den Impulsgenerator mal, danke für die Hilfe schonmal.

Ist Geschwindigkeit wird so erfasst (Sechs zählungen pro Umdrehung):


----------



## BFC92 (3 April 2022)

Kann ich theoretisch auch mit den fertigen Reglern von Tia arbeiten? Zum beispiel mit den CONT_C oder so? Ich weiß nur gar nicht wie ich das machen soll...


----------



## Plan_B (3 April 2022)

Selbstredend wären die fertigen Regler besser.

Deine Drehzahlerfassung läuft wie vermutet im normalen Zyklus. Ich hab das früher so gelöst, dass der Count-Baustein freilaufend unendlich gezählt hat und über einen Weck-OB in zeitlich konstanten Abständen eine Differenz gebildet wurde (Überlauf beachten ggf!).
Ein Reglerbaustein sollte ebnefalls in zeitlich konstanten Abständen aufgerufen werden.
Ich bin da schon zu lange raus, um Dir das konkret zu erklären, aber ich glaub der Grund für das gigabytegroße TIA ist auch die umfangreiche Hilfe 
Auch hier im Forum dürfte zum Cont-C einiges rumkommen via Forensuche.


----------



## Plan_B (3 April 2022)

Um das grundlegende Prinzip von Abtast- und Ausführungszyklen zu verstehen ist Dein Ansatz aber garnicht so verkehrt.
Nimm einen Impulsgeber mit ganz kurzer Ein-Zeit und variabler Auszeit. Den setzt Du an den Ausgang Deiner SR über ein UND auf Dein INC/DEC-Signal. Dann kannst Du über die Aus-Zeit den Abstand der INC/DEC-Signale an den FU steuern.

Dann kannst Du verfolgen im Umrichter, wie schnell der Sollwert sich verändert und ob der Umrichter noch folgen kann. Denn das selbe kann bei zu kurzen Abtastzyklen auch beim Cont-C passieren.


----------



## Heinileini (3 April 2022)

BFC92 schrieb:


> wär voll cool wenn jemand ne Idee hat, vllt sollte ich das auch ganz anders angehen...


Zunächst mal - unbhängig von Deinem Regelverhalten - könntest Du Netzwerk 1 und 2 stark vereinfachen.
Die Vergleiche < REAL bzw. > REAL liefern genau die Information, die auch die angeschlossenen SR Inc_SP und Dec_SP liefern.
Wozu also die SR und die Vergleiche == REAL, <= REAL und >= REAL, wozu Die ODER Verknüpfungen?
Übrigens ist es völlig überflüssig, einen Vergleich >= (oder <=) noch mit einem Vergleich == zu verodern.
Der Fall == ist in <= bzw. >= doch schon enthalten!

Wenn ich Deine Netzwerke 4 und 5 (DIV Real und MUL Real) richtig deute, dann erhältst Du alle 10 s ein Ergebnis aus Deiner ImpulsZählerei.
Dein ZeitTakt beträgt aber 1 s.
Wird Dein IEC-Zähler nach dem Auslesen wieder gelöscht?
Hat die Schwankung/das Schwingen der Drehzahl eine gleichbleibende Periode von 20 s? Wie lang ist die Periode?


----------



## BFC92 (3 April 2022)

Ja das mit der vereinfachung hab ich auch schon kurz nachdem ich das hier erstellt hab gemerkt, so funktioniert es mehr oder weniger wenn man mit den ein und ausschaltzeiten etwas spielt, danke nochmal für die hilfe, aber werd jetzt trotdem nochmal nen komplett anderen Ansatz versuchen:



Und nein ich erhalte jede Sekunde einen NEuen wert aus der Impulszählerei, und bekomme so die drehzahl, das funktioniert auch mit einer Abtastrate von 50ms... Aber auch an dich n dankeschön.


----------



## Plan_B (3 April 2022)

So schön. Ich freue mich, wenn Du das hingebogen bekommen hast.
Mit einem richtigen Regler bekommst Du aber ein vorhersagbares Verhalten. Du übertragst halt direkt den Sollwert an den FU und kannst die Änderungsgeschwindigkeit des Sollwerts (Rampe) selbst bestimmen. Außerdem wird der Regler schneller, wenn ein P-Anteil dazukommt.

In Deinem jetzigen Konstrukt macht ja das meiste der FU selbst, sodass Du ihm die Regelung eigentlich auch überlassen könntest. Viele FU können HTL-Signale direkt an ihren Digins verarbeiten und haben einen Drehzahlregler ohnehin integriert


----------



## BFC92 (3 April 2022)

Joa ich weiß nur leider gar nicht wie ich einen Richtigen Regler verwende, und ich finde auch absolut gar nichts hilfreiches im Internet, zum beispiel Cont_C gibt ja kein BOOL aus, und ich hab ja nur schneller und langsamer.


----------



## Plan_B (3 April 2022)

?
Du kannst Doch in Deinem Telekgramm einen Setpoint übertragen?!
Was ist denn das für ein Umrichter, der keinen Sollwert frisst? Steuerwort+Sollwert ist eigentlich Standard.


----------



## BFC92 (3 April 2022)

Ja das ist ein G120 und das kann der sicher, aber welcher parameter ist den der Drehzahlsollwert. Ich bin mit FUs sowas von überfordert. Wenn ich einfach den Sollwert übergeben könnte und der dann nur noch koriegiert wird wäre das top. Aber ich kriegs nicht hin.


----------



## SPS-Bitschubser (3 April 2022)

https://support.industry.siemens.com/cs/attachments/109485727/109485727_G120_CU240E2PN_at_S7_1200_SINA_SPEED_v10_DOCU_de.pdf
		

Hier mal eine siemens Beschreibung. Siemens hat eigentlich immer gute Beschreibungen und Beispiele auf ihrer Seite.


----------



## sunny22 (3 April 2022)

BFC92 schrieb:


> Joa ich weiß nur leider gar nicht wie ich einen Richtigen Regler verwende, und ich finde auch absolut gar nichts hilfreiches im Internet, zum beispiel Cont_C gibt ja kein BOOL aus, und ich hab ja nur schneller und langsamer.


Was du sucht ist eher "TCONT_S" und nicht CONT_C. TCONT_S ist ein Regler mit 2 binären Ausgängen für Up und Down.


----------



## BFC92 (4 April 2022)

Ok also ich bekomms einfach nicht hin: Ich habs hinbekommen das ich einen Sollwert in den Fu Schreiben kann, aber ich krieg damit auch keine Regelung hin, die PID Regler geben ja ein signal zwischen 0- und100% aus, aber ich kann nur entweder einen Wert schreiben oder schneller und langsamer machen. Optimal wäre wenn ich sowas wie ein virtueles Potentiometer verwenden könnte, aber da bin ich echt überfragt wie das gehen soll.


----------



## Plan_B (4 April 2022)

Entscheidend ist, dass Du Sollwert und Istwert gleich skalierst. Man verwendest dazu gern eine 0-100%Skalierung, aber da bist Dü völlig frei.
Entscheidend ist, dass ein erreichter Sollwert von z.b. 100 auch einen Rückmeldewert von 100 bedeutet. Das ist reine Mathematik.
Hast Du diese Hürde gemeistert würde ich tatsächlich einen antriebsbezogenen Baustein, so wie von @SPS-Bitschubser vorgeschlagen, verwenden.

Wenn Du einen Sollwert auf den FU schreiben kannst, ist doch das auch schon erledigt.


----------



## BFC92 (4 April 2022)

Ja ich kann einen Sollwert in den FU schreiben, habs rausgefunden wie das geht, ist tatsächlich trivial, aber bringt mir nix, da die Welle die ich Drehzahlüberwachen will nicht direkt vom Motor angetrieben wird sondern über einen Breitriemen, und da die Wellen wechselnde Durchmesser haben drehen sie sich relativ zum Motor verschieden schnell...
Naja bin dann noch kreativer geworden und hab das hier Veruscht:





Aber das ist ähnlich durchschnittlich wie die andere Lösung, und ich bin mit beiden ehr unzufrieden...


----------



## BFC92 (4 April 2022)

Und Bausteine wie SinaSpeed bringen mir hier auch wenig oder?


----------



## BFC92 (4 April 2022)

Also hab auch das hier mal versucht, und das Funktioniert auch, nur keine Ahnung was ich mit den Ausgangssignalen anstellen soll.


----------



## TP-Inc (4 April 2022)

Warum willst du auf der SPS einen Drehzahlregler bauen den der Sinamics mitbringt? Ja SINA_SPEED würde passen. https://cache.industry.siemens.com/...240E2PN_at_S7_1200_SINA_SPEED_v10_DOCU_de.pdf

Drehzalregelung geht sogar geberlos. Da könntest du deine Messung über INI als Überprüfung des G120 ausprogrammieren.


----------



## BFC92 (4 April 2022)

Nein SinaSpeed ist hier ungeeignet ich will die Drehzahl über ein Signal regeln das mir ein Näherungssensor gibt, eben einfach mit Geber mit sechs Strichen praktisch, und nicht Geberlos. Aber trotzdem danke. Ich weiß das es Geberlos geht, aber das ist halt nicht das was ich tun muss. Das ist also nutzlos.


----------



## rosebud (4 April 2022)

Welche PID-Parameter hat der Regelkreis?


----------



## BFC92 (4 April 2022)

Also eigentlich noch gar keine, muss erstmal die Grundlagen hin bekommen... 
Hab jetzt 1500 als Drehzahl Vorgegeben, und wenn der Sollwert sich 1500 nähert geht der ausgang LMN ja auf 0. Dann bekommt der FU ja den befehl Null umdrehungen, und an dem Punkt ist mein Problem das ich nicht lösen kann. Besser wärs wenn der Regler den Wert dann beibehält bei dem es passt, so muss er vllt gerade ne Drehzahl von1150 in Den Fu schreiben um 1500 umdrehungen zu errreichen, wäre cool wenn er sich dieser zahl langsam annähert und diese dann hält, beziehungsweise bei störgrößen halt nachregelt.


So siehts im Moment aus..


----------



## escride1 (4 April 2022)

2 Beiträge für ein und dieselbe Aufgabenstellung?
Entscheide Dich für einen, dem anderen schiebst Du einen Beitrag rein mit "Doppelpost, Link zum richtigen"


----------



## Heinileini (4 April 2022)

BFC92 schrieb:


> Ja ich kann einen Sollwert in den FU schreiben, habs rausgefunden wie das geht, ist tatsächlich trivial, ...


Das klingt doch schon nach einem grossen Fortschritt und recht hoffnungsvoll.


BFC92 schrieb:


> ... aber bringt mir nix, da die Welle die ich Drehzahlüberwachen will nicht direkt vom Motor angetrieben wird sondern über einen Breitriemen, und da die Wellen wechselnde Durchmesser haben drehen sie sich relativ zum Motor verschieden schnell ...


Das deute ich so, dass Du es mit einer variablen, stufenlosen "GetriebeÜbersetzung" zu tun hast.
Wodurch wird diese beeinflusst? 
Wer veranlasst ein Wechseln der Durchmesser nach welchen Kriterien?
Ist hierbei schon irgendeine Form einer Regelung aktiv?
Welche Übersetzung wird dadurch minimal und maximal wirksam?


BFC92 schrieb:


> ... muss erstmal die Grundlagen hin bekommen...


Das kann nie schaden. 


BFC92 schrieb:


> Hab jetzt 1500 als Drehzahl Vorgegeben, und wenn der *Sollwert* sich 1500 nähert geht der ausgang LMN ja auf 0.


Du meinst den Istwert.


BFC92 schrieb:


> Dann bekommt der FU ja den befehl Null umdrehungen, und an dem Punkt ist mein Problem das ich nicht lösen kann.


Das kann nicht passen. Ich denke mal, der ReglerAusgang sollte nicht die Drehzahl, sondern das geforderte Drehmoment an den FU ausgeben.
Die Drehzahl des Motors ergibt sich dann aus der Übersetzung und aus dem Regelvorgang.


----------



## BFC92 (4 April 2022)

Heinileini schrieb:


> Das kann nicht passen. Ich denke mal, der ReglerAusgang sollte nicht die Drehzahl, sondern das geforderte Drehmoment an den FU ausgeben.
> Die Drehzahl des Motors ergibt sich dann aus der Übersetzung und aus dem Regelvorgang.


Danke dafür, du hast natürlich recht, gibt es einen Parameter Drehmoment bei G120?


----------



## Plan_B (4 April 2022)

BFC92 schrieb:


> nd wenn der Sollwert sich 1500 nähert geht der ausgang LMN ja auf 0. Dann bekommt der FU ja den befehl Null umdrehungen, und an dem Punkt ist mein Problem das ich nicht lösen kann.


Vorab: die Eigenheiten des Cont_C sind mir nicht vertraut.

Das von Dir beschriebene Verhalten passt zu einem Proportionalregler bzw. einem PI-Regler mit deutlicher P-Dominanz.
Das ist erstmal nicht schlecht. Da der FC universell ist, muss das auch so sein, denn der P-Anteil wird durch die simple Funktion (Sollwert-Istwert)*Proportionalverstärkung beschrieben.

Ich habe dieses Prblem für Drehzahlregelstrecken immer so gelöst:

Der Sollwert geht via optionalem Rampenbaustein auf den Sollwerteingang des PID-Reglers. Der Ausgangswert des PID-Reglers wird mit dem Sollwert (bzw. dem Rampenausgang) addiert. So kann man schön die Reglerparameter beginnend mit dem P einstellen. Bei verwendung eines Rampenbausteins stellst Du die FU-Rampen auf die minimal zulässige Zeit gemäß Anwendung und Motor ein. Ohne Rampenbaustein bitte auf die Werte, die der Prozess benötigt.
Da die Regelung eigentlich nur für die Störgröße "Belastung" zuständig ist, schalte ich dann Schlupfkompensation am FU ab bzw. auf sehr kleine Werte. Zusätzlich wird der Reglerausgang auf +/-25...50% des Sollwerts begrenzt.

Das Problem Deiner Wechselriemenscheibe löst Du durch entsprechend verschiedene Skalierungen des IStwerts, je nach Übersetzungsverhältnis.

So kompensierst Du sowohl den Schlupf des Asynchronmotors als auch den Riemenschlupf.

Das obige Problem sollte ein Antriebsregelbaustein wie Sina automatisch berücksichtigen.


----------



## rosebud (4 April 2022)

Es muß nicht immer Siemens sein. Von Danfoss gibt es seit Jahrzehnten Umrichter (Serien 6000, FC-100, FC-102), in denen die komplette Reglerlogik mit passenden Algorithmen enthalten ist. Etwas von der Sache verstehen sollte man natürlich.


----------



## Plan_B (4 April 2022)

Ja, aber die Sache dem FU zu überlassen, hat er oben schon abgeschmettert. Auch in dem anderen Thread.
Die Danfoss-Teile machen das schon ganz gut und haben alles wichtige onboard. Aber manch einer will halt unbedingt "irgendwas mit SPS".
VLT-6000 ist übrigens schon lange abgekündigt. Und die FC-10x sind für HVAC-Anwendungen, aber das nur am Rande.
Gesetzt war schon der g120 von Siemens, der allerdings auch einiges kann.


----------



## Thomas_v2.1 (4 April 2022)

Du hast den CONT_C als P-Regler parametriert. Daraus folgt, dass als Stellgröße ohne Regelabweichung 0 ausgegeben wird. Aktiviere den I-Anteil und dann sollte das damit auch funktionieren.


----------



## Plan_B (5 April 2022)

Irgendwo hat er geschrieben, er will jeden einzelnen Schritt verstehen. Da kann man nicht einfach zwei Regelalgoritmen gleichzeitig aktivieren


----------

