+ All Categories
Home > Documents > 15 algebraic loop - zacher-international.com · Die Meldung „algebraic loop“ erscheint bei...

15 algebraic loop - zacher-international.com · Die Meldung „algebraic loop“ erscheint bei...

Date post: 28-Oct-2019
Category:
Upload: others
View: 2 times
Download: 0 times
Share this document with a friend
19
www.zacher-automation.de 2016 Copyright S. Zacher 1 Prof. Dr. S. Zacher Automation Automation Automation Automation- - -Letter Letter Letter Letter Nr Nr Nr Nr. 15 . 15 . 15 . 15 09.03.2016 09.03.2016 09.03.2016 09.03.2016 bei Simulation eines modellbasierter ASA-Reglers “What Is an Algebraic Loop? In a Simulink ® model, an algebraic loop occurs when a signal loop exists with only direct feedthrough blocks within the loop. Direct feedthrough means that the block output depends on the value of an input port; the value of the input directly controls the value of the output. Some blocks have input ports with direct feedthrough. Simulink cannot compute the output of these blocks without knowing the values of the signals entering the blocks at these input ports at the current time step.” Source: Help of MATLAB ® / Simulink ® ,,MathWorks, 2015 http://de.mathworks.com/help/simulink/ug/algebraic-loops.html
Transcript
Page 1: 15 algebraic loop - zacher-international.com · Die Meldung „algebraic loop“ erscheint bei einer Simulink-Modell, wenn der Signalweg von Eingang zu Ausgang ohne Zeitverzögerung

www.zacher-automation.de 2016 Copyright S. Zacher 1

Prof. Dr. S. Zacher

AutomationAutomationAutomationAutomation----Letter Letter Letter Letter NrNrNrNr. 15. 15. 15. 15

09.03.201609.03.201609.03.201609.03.2016

bei Simulation eines modellbasierter ASA-Reglers

“What Is an Algebraic Loop?In a Simulink® model, an algebraic loop occurs when a signal loop exists with only direct feedthrough blocks within the loop. Direct feedthrough means that the block output depends on the value of an input port; the value of the input directly controls the value of the output.Some blocks have input ports with direct feedthrough. Simulink cannot compute the output of these blocks without knowing the values of the signals entering the blocks at these input ports at the current time step.”

Source: Help of MATLAB® /Simulink®,,MathWorks, 2015http://de.mathworks.com/help/simulink/ug/algebraic-loops.html

Page 2: 15 algebraic loop - zacher-international.com · Die Meldung „algebraic loop“ erscheint bei einer Simulink-Modell, wenn der Signalweg von Eingang zu Ausgang ohne Zeitverzögerung

www.zacher-automation.de 2016 Copyright S. Zacher 2

Abstract, Urheberrechts- und Haftungshinweis

Bei Simulation von Regelkreisen mit MATLAB/Simulink kommt es oft zur Meldung „algebraic loop“ und zum Abbruch der Simulation, wenn die Signalübertragung von Eingang zum Ausgang in einem geschlossenen Kreis ohne Zeitverzögerung stattfindet. Besonders stark sind modellbasierte Kompensationsregler betroffen (sieheAutomation-Letter Nr 8, http://www.zacher-international.com/Automation_Letters/08_ASA-Implementierung.pdf)

Nach dem Kompensationsprinzip wird die Strecke durch den Regler „unwirksam gemacht“, wie im Automation-Letter Nr. 6 gezeigt wurde, so dass das Signal im Kreis ohne Zeitverzögerung verläuft.

http://www.zacher-international.com/Automation_Letters/06_Unwirksame_Strecke.pdf

Unter Simulink-Help findet man Hinweise, wie man solche „algebraic loops“ entdecken oder wie man die Simulation auch mit „algebraic loops“ ausführen kann.

Diese Maßnahmen reichen aber nicht aus, wenn aus dem Simulink-Modell der C-Code generiert werden soll. In diesem Fall soll nicht die Meldung unterdrückt, sondern der „algebraic loop“ beseitigt werden.

In vorliegende Publikation ist gezeigt, wie man die „algebraic loops“ vermeiden kann, und an Beispielen von ASA-Reglern erläutert.

Die vorliegende Publikation unterliegt der Urheberrecht. Alle Rechte sind bei Dr, S. Zacher vorbehalten. Die Weiterentwicklung oder Nutzung der Publikation ohne Referenz auf Urheber ist nicht zugelassen.

Für die Anwendung der vorliegenden Publikation in der Industrie, im Laborbetrieb und in anderen praktischen Fällen sowie für eventuelle Schäden, die aus unvollständigen oder fehlerhaften Angaben über das dynamische Systeme ergeben können, übernimmt der Autor keine Haftung.

All rights are by the author, Dr. S. Zacher, reserved. No use of this publication without references on theauthor. For the practical use of the results of this publication takes the author no responsibility.

Page 3: 15 algebraic loop - zacher-international.com · Die Meldung „algebraic loop“ erscheint bei einer Simulink-Modell, wenn der Signalweg von Eingang zu Ausgang ohne Zeitverzögerung

www.zacher-automation.de 2016 Copyright S. Zacher 3

I N H A L T :

1. Einführung ………………………………………………………………………... Seite 4

2. Was ist ASA-Regler? ……………………………………………………………. Seite 5

2.1 Optionen des ASA-Reglers ………………………………………………… Seite 5

2.2 Optionen der Schatten-Strecke ……………………………………………. Seite 6

2.3 Beispiel: ASA-Regler für eine Antenne …………………………………… Seite 7

3. Warum erscheint die Meldung „algebraic loop“ ………………………………... Seite 9

4. Wie kann man einen “algebraic loop“ finden? ………………………………….. Seite 12

5. Wie kann die Simulation trotz Meldung ausgeführt werden? ………………… Seite 13

6 Zusammenfassung ……………………………………………………..………….. Seite 19

Page 4: 15 algebraic loop - zacher-international.com · Die Meldung „algebraic loop“ erscheint bei einer Simulink-Modell, wenn der Signalweg von Eingang zu Ausgang ohne Zeitverzögerung

www.zacher-automation.de 2016 Copyright S. Zacher 4

1 Einführung

Auschlaggebend für diese Publikation war folgende Frage eines Studenten:

„Ich habe meinen ASA-Regler (unten) mit Hilfe des Automation Letters in einen Transfer Function Block umgewandelt. Leider erhalte ich immer noch eine Fehlermeldung, die besagt, dass es eine AlgebraicLoop gibt (rot eingezeichnet).“

Die kurze Antwort auf diese Frage lautet: „Der algebraic loop bei Simulink und die Gegenmaßnahmen sind von MathWorks beschrieben: http://de.mathworks.com/help/simulink/ug/algebraic-loops.html“

Jedoch möchte ich nachfolgend eine ausführliche Antwort auf folgende Fragen geben, um das Problem „algebraic loop“ auch für andere Projektarbeiten zu erläutern:

• Was ist ASA-Regler?

• Warum erschient die Meldung „algebraic loop“?

• Wie kann die Simulation trotz dieser Meldung ausgeführt werden?

Page 5: 15 algebraic loop - zacher-international.com · Die Meldung „algebraic loop“ erscheint bei einer Simulink-Modell, wenn der Signalweg von Eingang zu Ausgang ohne Zeitverzögerung

www.zacher-automation.de 2016 Copyright S. Zacher 5

Im Automation-Letter Nr 8 wurden zwei Optionen des ASA-Reglers beschrieben:

http://www.zacher-international.com/Automation_Letters/08_ASA-Implementierung.pdf

mit einem Vorfilter mit einem Kompensator

v

1 Was ist ASA-Regler?

1.1 Optionen des ASA-Reglers

Betrachten wird nachfolgend nur die Option „ASA-Regler mit Kompensator“ und nehmen wir an, dass die Übertragungsfunktion GS(s) der Regelstrecke (Antenne) und das gewünschte Verhalten GM(s) bei Führungsverhalten gegeben sind:

)(

)(1)(1

)(

)(1)(

)(

S

SM

S

SM

K

sG

sGsG

sG

sGsG

sG+

+

=

S

F M

S

1 ( )( ) 2 ( )

( )

G sG s G s

G s

+= ⋅ ⋅

Page 6: 15 algebraic loop - zacher-international.com · Die Meldung „algebraic loop“ erscheint bei einer Simulink-Modell, wenn der Signalweg von Eingang zu Ausgang ohne Zeitverzögerung

www.zacher-automation.de 2016 Copyright S. Zacher 6

1 Was ist ASA-Regler?

1.2 Optionen der Schatten-Strecke

1) mit Schatten-Strecke als Software-Modell 2) mit Schatten-Strecke als zweite Strecke

3) mit Schatten-Strecke, die selbst Regelstrecke ist

Nachfolgend wird an das Problem „algebraic loop“ angegangen, bezogen nur auf die 1. Option, d.h. der Kompensator und die Schatten-Strecke sollen beide simuliert werden. Aus diesem Regler-Modell wird dann die C-Code generiert. Die Simulink-Konfiguration für Code-Generierung mit Simulink Coder oder Embedded Coder wird hier nicht behandelt, sind Bestandteil meines Unterrichts „Modellbasierte Softwareentwicklung“ an der DHBW Stuttgart und Hochschule Darmstadt.

Je nach Hardware-Realisierung des ASA-Reglers sind folgende Optionen de Schatten-Strecke möglich, siehe Automation-Letter Nr 8:

http://www.zacher-international.com/Automation_Letters/08_ASA-Implementierung.pdf

Page 7: 15 algebraic loop - zacher-international.com · Die Meldung „algebraic loop“ erscheint bei einer Simulink-Modell, wenn der Signalweg von Eingang zu Ausgang ohne Zeitverzögerung

www.zacher-automation.de 2016 Copyright S. Zacher 7

1.3 Beispiel: ASA-Regler für eine Antenne

Die Simulation bricht ab und die MATLAB-Meldung „algebraic loop“erscheint. Um dies zu vermeiden und die Simulation auszuführen, wird im MATLAB-Command-Window der folgende Befehl eingegeben werden:

set_param('ASA_regler_kompensator_Antenne','AlgebraicLoopSolver','TrustRegion')

Im Bild rechts ist die Sprungantwort des Kreises mit ASA-Regler gezeigt.

1 Was ist ASA-Regler?

Page 8: 15 algebraic loop - zacher-international.com · Die Meldung „algebraic loop“ erscheint bei einer Simulink-Modell, wenn der Signalweg von Eingang zu Ausgang ohne Zeitverzögerung

www.zacher-automation.de 2016 Copyright S. Zacher 8

Zum Vergleich ist auch die simulierte Regelung der Antenne mit dem PID-Regler gegeben, die aus der unten gezeigten Projektarbeit der Hochschule Darmstadt, Fernmaster-Studiengang, stammt.

1.3 Beispiel: ASA-Regler für eine Antenne

Die Kennwerte des PID-Reglers:

P = 38,11

I = 0,01

D = 0,4

ASA-Regler

PID-Regler

Die Vorteile des ASA-Reglers sind sofort ersichtlich, jedoch wird beim PID-Regler keine „algebraic loop“- Meldung ausgegeben, obwohl beide geschlossenen Regelkreise sind. Warum?

1 Was ist ASA-Regler?

Page 9: 15 algebraic loop - zacher-international.com · Die Meldung „algebraic loop“ erscheint bei einer Simulink-Modell, wenn der Signalweg von Eingang zu Ausgang ohne Zeitverzögerung

www.zacher-automation.de 2016 Copyright S. Zacher 9

3 Warum erscheint die Meldung „algebraic loop“?

Grundsätzlich werden die Lösungen von Differentialgleichungen bei einer Simulation mittels Differenzen-gleichungen bzw. Rekursionen berechnet, unabhängig davon, ob das Originalmodell analog oder digital ist:

byy +=+ i1i

Damit die Berechnung bei fortgeschrittenen Indexen i = 1, 2, 3… auch fortschreiten kann, soll die Differenz

1i+y

von Simulink-Algorithmus erkennbar sein. Wenn diese Differenz zu klein oder Null ist, erscheint die besagte Warnung „algebraic loop“.

Es gibt zwei Optionen: algebraic loop und aritificial algebraic loop, die auf nachfolgenden Seiten ausführlicher erklärt werden.

i1i yy −=∆ +

Beispiele von MathWorks: http://de.mathworks.com/help/simulink/ug/algebraic-loops.html

a) algebraic loop b) aritificial algebraic loop

MATLAB-Meldung Keine MATLAB-Meldung MATLAB-Meldung

Create Subsystem

Page 10: 15 algebraic loop - zacher-international.com · Die Meldung „algebraic loop“ erscheint bei einer Simulink-Modell, wenn der Signalweg von Eingang zu Ausgang ohne Zeitverzögerung

www.zacher-automation.de 2016 Copyright S. Zacher 10

3 Warum erscheint die Meldung „algebraic loop“?

a) „algebraic loop“ entsteht, wenn der Signalweg von Eingang zum Ausgang (von Step zu Scope) keine Zeitverzögerungen beinhaltet bzw. besteht aus P-Gliedern.

MATLAB-Meldung

Keine MATLAB-Meldung

Beispiele von MathWorks: http://de.mathworks.com/help/simulink/ug/algebraic-loops.html

Page 11: 15 algebraic loop - zacher-international.com · Die Meldung „algebraic loop“ erscheint bei einer Simulink-Modell, wenn der Signalweg von Eingang zu Ausgang ohne Zeitverzögerung

www.zacher-automation.de 2016 Copyright S. Zacher 11

b) „aritificial algebraic loop“ entsteht nach der Bildung von Subsystemen, d.h. die Subsysteme werden von Simulink wie P-Glieder ausgewertet.

Create Subsystem

MATLAB-Meldung

Beispiele von MathWorks: http://de.mathworks.com/help/simulink/ug/algebraic-loops.html

Keine MATLAB-Meldung

3 Warum erscheint die Meldung „algebraic loop“?

Page 12: 15 algebraic loop - zacher-international.com · Die Meldung „algebraic loop“ erscheint bei einer Simulink-Modell, wenn der Signalweg von Eingang zu Ausgang ohne Zeitverzögerung

www.zacher-automation.de 2016 Copyright S. Zacher 12

4 Wie kann man einen „algebraic loop“ finden?

Als Beispiel ist unten ein Regelkreis als Simulink-Datei Bypass_PT1 gegeben.

Der „algebraic loop“ wird nach dem Doppelklick angezeigt:

Simulink.BlockDiagram.getAlgebraicLoops('ASA_02sim')

In Simulink wird MATLAB Code mit Hyperlink eingetragen:

Simulink.BlockDiagram.getAlgebraicLoops('ASA_02sim')

Page 13: 15 algebraic loop - zacher-international.com · Die Meldung „algebraic loop“ erscheint bei einer Simulink-Modell, wenn der Signalweg von Eingang zu Ausgang ohne Zeitverzögerung

www.zacher-automation.de 2016 Copyright S. Zacher 13

5 Wie kann die Simulation trotz Meldung ausgeführt werden?

Es gibt folgende Möglichkeiten die Simulation trotz Meldung „algebraic loop“ fortzusetzten:

a) Die Warnung algebraic loop im Solver deaktivieren:

Page 14: 15 algebraic loop - zacher-international.com · Die Meldung „algebraic loop“ erscheint bei einer Simulink-Modell, wenn der Signalweg von Eingang zu Ausgang ohne Zeitverzögerung

www.zacher-automation.de 2016 Copyright S. Zacher 14

5 Wie kann die Simulation trotz Meldung ausgeführt werden?

b) Die Simulation mit Fixed-step ausführen und die Abtastzeit (Fixed-step size) verkleinern

Page 15: 15 algebraic loop - zacher-international.com · Die Meldung „algebraic loop“ erscheint bei einer Simulink-Modell, wenn der Signalweg von Eingang zu Ausgang ohne Zeitverzögerung

www.zacher-automation.de 2016 Copyright S. Zacher 15

5 Wie kann die Simulation trotz Meldung ausgeführt werden?

b) Die Simulation mit Fixed-step ausführen und die Abtastzeit (Fixed-step size) verkleinern

Page 16: 15 algebraic loop - zacher-international.com · Die Meldung „algebraic loop“ erscheint bei einer Simulink-Modell, wenn der Signalweg von Eingang zu Ausgang ohne Zeitverzögerung

www.zacher-automation.de 2016 Copyright S. Zacher 16

5 Wie kann die Simulation trotz Meldung ausgeführt werden?

Dafür wird zuerst das Simulink-Modell mit „Model Discretizer“ digitalisiert

http://www.zacher-international.com/Automation_Letters/05_Model_Discretizer.pdf

c) Man kann algebraic loop eliminieren, indem man eine kleine Totzeit in die betroffene Rückführung setzt

Dann werden die „algebraic loops“ wie oben beschrieben festgestellt.

Page 17: 15 algebraic loop - zacher-international.com · Die Meldung „algebraic loop“ erscheint bei einer Simulink-Modell, wenn der Signalweg von Eingang zu Ausgang ohne Zeitverzögerung

www.zacher-automation.de 2016 Copyright S. Zacher 17

5 Wie kann die Simulation trotz Meldung ausgeführt werden?

Danach wird man eine kleine Totzeit in die betroffene Rückführung gesetzt (siehe Unit Delay unten)

Somit ist auch die kurze Antwort auf die in der Einführung gestellte Frage klar (siehe Bild unten).

Page 18: 15 algebraic loop - zacher-international.com · Die Meldung „algebraic loop“ erscheint bei einer Simulink-Modell, wenn der Signalweg von Eingang zu Ausgang ohne Zeitverzögerung

www.zacher-automation.de 2016 Copyright S. Zacher 18

5 Wie kann die Simulation trotz Meldung ausgeführt werden?

Nach Einführung einer kleine Totzeit in die betroffene Rückführung wird die Stellgröße eines ASA-Reglers schneller abgetastet als die Regelgröße, weil der Regler und die Strecke nach dem Kompensationsprinzip vollständig kompensiert sind.

Bei einer langen Simulation kann folgendes Bild erscheinen: (Stellgröße grün, Simulationsdauer 200s, Abtastzeit 0.05 s)

Dasselbe kann auch mit der Regelgröße passieren, wenn die Abtastzeit zu klein ist (sehe Bilder unten: links mit Abtastzeit 0,01 s, rechts mit 0,1 s).

Die Abtastzeit soll angepasst werden oder ein Tiefpassfilter bei der Messung von Stellgröße soll eingefügt werden, wie neben im Bild gezeigt ist.

Page 19: 15 algebraic loop - zacher-international.com · Die Meldung „algebraic loop“ erscheint bei einer Simulink-Modell, wenn der Signalweg von Eingang zu Ausgang ohne Zeitverzögerung

www.zacher-automation.de 2016 Copyright S. Zacher 19

6 Zusammenfassung

und dann nach einem der folgenden Verfahren deaktiviert oder eliminiert werden:

Die Meldung „algebraic loop“ erscheint bei einer Simulink-Modell, wenn der Signalweg von Eingang zu Ausgang ohne Zeitverzögerung erfolgt. Dabei bricht die Simulation ab. Es gibt hierzu zwei Optionen: algebraic loop (unten links) und aritificial algebraic loop (unten rechts).

Um die Simulation doch auszuführen, sollen algebraic loops zuerst mit dem folgenden Befehl angezeigt werden

Simulink.BlockDiagram.getAlgebraicLoops('Dateiname')

a) Die Warnung algebraic loop im Solver deaktivieren:

c) Eine kleine Totzeit (Unit Delay) in die betroffene Rückführung setzen

b) Die Simulation mit Fixed-step ausführen und die Abtastzeit (Fixed-step size) verkleinern


Recommended