|
|
Performance-Problem durch S-Function in Simulink! |
|
Feder1805 |
Forum-Newbie
|
|
Beiträge: 1
|
|
|
|
Anmeldedatum: 18.02.19
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 18.02.2019, 08:31
Titel: Performance-Problem durch S-Function in Simulink!
|
|
|
|
|
Guten Morgen euch allen!
Ich stehe aktuell vor folgendem Problem: Ich verwende MATLAB / Simulink (R2018b Update 2) und einen Arduino Due, auf welchem ich meine Steuerung (und später meine Regelung) für mein mechatronisches System laufen lassen möchte.
Aktuell steuere ich vier Schrittmotoren über vier Schrittmotor-Treiber (mit je einem Step-, Direction-, Mode und Digital-Current-Eingang), lese vier inkrementelle Encoder (mit A- und B-Phase) ein und habe zusätzlich noch zwei Taster in Verwendung. Diese werden alle direkt über das Simulink Modell angesteuert und eingelesen. Die Sample-Time, bei der das System noch einwandfrei läuft, beträgt dabei 200µs (Solver: discrete). Ich würde die Sample-Time natürlich auch sehr gerne noch weiter runter setzen, damit ich höhere Drehzahlen erzeugen kann (Rechtecksignal mit kleinerer Periodendauer -> siehe Bild: Rechtecksignal) und diese auch noch sicher über die Encoder einlesen kann (eingebunden über vier MATLAB-Functions -> siehe folgender Code und Bild: Encoder). Jedoch wird das System sehr langsam, sobald ich Ts noch kleiner mache. Im External-Mode sowie mit generiertem Code auf dem Due.
Jetzt kommt aber das eigentliche Problem: über zwei S-Functions habe ich einen Wägezellenverstärker (HX711) und vier Temperatursensoren (DS18B20) in meinem Simulink Modell implementiert. Betreibe ich jeweils eine der S-Functions in einem separaten Modell, gibt es keinerlei Verzögerungen. Wird jedoch nur eine S-Function in mein Gesamtmodell eingefügt, wird das System extrem langsam oder die Sensoren werden erst gar nicht mehr ausgelesen.
Die S-Functions sehen wie folgt aus:
HX711:
Language: C++
Number of discrete states:1
Sample mode: Discrete
Sample-time value: 0.1
DS18B20:
Language: C++
Number of discrete states:1
Sample mode: Discrete
Sample-time value: 1
Habt ihr die Lösung bzw. einen Tipp für mich, um die Sample-Time möglichst niedrig zu halten und trotzdem mein Programm inkl. den S-Functions ohne Verzögerungen lauffähig zu machen?
Vielen Dank schon Mal!
Beschreibung: |
Einbinden der vier MATLAB-Functions |
|
Download |
Dateiname: |
Encoder.JPG |
Dateigröße: |
50.05 KB |
Heruntergeladen: |
486 mal |
Beschreibung: |
Erzeugung des Rechtecksignals |
|
Download |
Dateiname: |
Rechtecksignal.JPG |
Dateigröße: |
57.31 KB |
Heruntergeladen: |
427 mal |
|
|
|
|
|
|
|
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.
|
|