|
|
Signalverzögerung im Modell |
|
ba6883 |
Forum-Newbie
|
|
Beiträge: 8
|
|
|
|
Anmeldedatum: 03.01.12
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 12.10.2012, 07:28
Titel: Signalverzögerung im Modell
|
|
|
|
|
Hallo Leute,
vorab, ich bin totaler Newbie in Simulink/Matlab, bin jedoch momentan dabei in meiner Diplomarbeit ein Modell einzubauen.
Es geht darum, dass ich ein Simulink Modell auf ein Steuergerät übertrage, welches digitale Ein- und Ausgänge besitzt das bspw. einen Pumpe ansteuert.
Die Aus- und Eingänge funktionieren, ich kann die Pumpe manuell ansteuern, allerdings versuche ich das jetzt alles zu automatisieren und die Pumpe mit einer gewissen Routine anzusteuern.
Folgendes habe ich vor:
Ich habe drei Eingänge (E1-3) und einen Ausgang (A1).
Eingang 1: Routinestart
Eingang 2: Vorgabe Geschwindigkeit
Eingang 3: Grundvorgabe
Ausgang 1: Pumpenansteuerung
Es soll so laufen, dass ich manuell auf den Eingang 1 einen "1" gebe, danach soll die Pumpe von der Grundvorgabe switchen und mit verschiedenen Geschwindigkeiten nach bestimmten Zeiten angesteuert werden.
Wie kann ich eine Zeitverzögerung in das Simulink Modell einbauen?
Keine Matlabprogrammierung!
Z.B. soll dies später so ablaufen.
Ich gebe manuell eine "1" auf den Routinestart. Von der Grundvorgabe (Stopp) soll dieser auf Vorgabe Geschwindigkeit switchen.
Danach soll die Pumpe für 10s auf 10% Geschwindigkeit laufen, nach dieser Zeit für 10s auf 50% usw. bis die letzte Zeit abgelaufen ist und die Pumpe wieder auf die Grundvorgabe wechseln. Ich danach jedoch durch einen Wechsel von "1" auf "0" wieder von vorne beginnen kann.
Für eine Steuerung in der Automatisierungstechnik (bspw. S7/S5) ist die Verzögerung bzw. Zeitsteuerung kein Problem, aber Simulink macht mir ein paar Probleme.
Wäre super wenn mir da jemand einen Tipp geben könnte.
Im Anhang findet ihr mein derzeitiges manuelles Subsystem.
Viele Grüße
Bernhard
Beschreibung: |
Modell für die manuelle Ansteuerung |
|
Download |
Dateiname: |
untitled.mdl |
Dateigröße: |
23.18 KB |
Heruntergeladen: |
478 mal |
|
|
|
|
|
atomPower |
Forum-Anfänger
|
|
Beiträge: 12
|
|
|
|
Anmeldedatum: 27.08.12
|
|
|
|
Wohnort: München
|
|
|
|
Version: 2007b
|
|
|
|
|
|
Verfasst am: 12.10.2012, 10:30
Titel:
|
|
Vielleicht mit Stateflow probieren!
Z.B. ähnlich dem Anhang.
Bin auch Neuling in Matlab
Beschreibung: |
|
Download |
Dateiname: |
stateflow_pump.mdl |
Dateigröße: |
24.53 KB |
Heruntergeladen: |
536 mal |
|
|
|
ba6883 |
Themenstarter
Forum-Newbie
|
|
Beiträge: 8
|
|
|
|
Anmeldedatum: 03.01.12
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 15.10.2012, 07:40
Titel:
|
|
hi,
also Stateflow hab ich ja noch weniger Ahnung als mit Simulink.
Sieht aber sehr interessant aus dein Modell.
Kannst du mir vielleicht kurz erklären wie dein Modell funktioniert?
Gruß
Bernhard
|
|
|
atomPower |
Forum-Anfänger
|
|
Beiträge: 12
|
|
|
|
Anmeldedatum: 27.08.12
|
|
|
|
Wohnort: München
|
|
|
|
Version: 2007b
|
|
|
|
|
|
Verfasst am: 15.10.2012, 09:21
Titel:
|
|
hi,
in dem Modell habe ich mehrere Zustände definiert (z.B. Start, 10% und 50%), dann wird eine Variable 'Init' als Eingangsvariable angelegt, solange diese gleich '0' ist, bleibt Stateflow in dem Start-Zustand hängen. Legst du eine '1' am Init ein, springt das ganze in den 10%-Zustand (Übergangsbedingung Init != 0).
In dem 10% Zustand wird am Anfang ('en:') eine lokale Variable 'time' auf '0' gesetzt und eine weitere lokale Variable 'a' auf dein Wert für 10% des Pumpenbetriebs gesetzt. Danach ('du:') wird die Zeit hochgezählt und einer Ausgangsvariable 'ausgang_pumpe' der Wert von a zugewiesen. Erreicht deine time-Variable 10 Sekunden wird in den nächsten Zustand gesprungen. Für die 10 Sekunden musst du dann noch einen richtigen Zahlenwert einsetzen.
Hoffentlich ist es verständlicher geworden.
Das ganze lässt sich bestimmt noch irgendwie optimieren, weiß aber noch nicht wie
Schöne Grüße
|
|
|
ba6883 |
Themenstarter
Forum-Newbie
|
|
Beiträge: 8
|
|
|
|
Anmeldedatum: 03.01.12
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 15.10.2012, 14:40
Titel:
|
|
hallo atomPower,
danke für die Erklärung. Mittlerweile habe ich mich mit Stateflow richtig angefreundet. Hier habe ich westenlich mehr Möglichkeiten meine Steuerung einzubauen.
Vielleicht kannst du mir diese kleine Frage beantworten:
Es geht um eine Schleife in Stateflow. Bspw. habe ich einen wechselnden Eingang (z.B. manuelle Eingabe). Dieser soll kontinuierlich auf einen Ausgang geschalten werden und erst bei einer bestimmten Signalgröße weiterschalten.
Ich weiß noch nicht genau was ich den State reinschreiben muss, damit dieser ständig den Wert ausgibt. Ausstieg ist kein Problem nur die Schleife macht mir Ärger. Muss man eine Transition zurückführen oder den Wert im State vergleichen oder gibt es vielleicht ein Jump?
Viele Grüße
|
|
|
ba6883 |
Themenstarter
Forum-Newbie
|
|
Beiträge: 8
|
|
|
|
Anmeldedatum: 03.01.12
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 15.10.2012, 14:53
Titel:
|
|
hi,
hat sich erledigt. Stell mich gerade etwas an.
Vor 10min hab ichs noch gelesen.
Für was gibt es wohl: Entry, During und Exit ???!?
Gruß
|
|
|
|
|
Einstellungen und Berechtigungen
|
|
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
|
|
Impressum
| Nutzungsbedingungen
| Datenschutz
| FAQ
| RSS
Hosted by:
Copyright © 2007 - 2024
goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.
|
|