Samstag, 2. März 2024
Samstag, 2. März 2024
NX-Motion-Simulink Co-Simulation Teil 1
In dieser Anleitung geht es darum, dass dynamische Simulationen die mittels NX motion durchgeführt werden nicht nur in sich geschlossen ablaufen, sondern dass auch Eingangs- und Ausgangsgrößen an Matlab Simulink übergeben und von dort auch wieder zurückübernommen werden.
So wäre ein mögliches Szenario:
•Ein Mehrkörper-Modell wurde in NX motion aufgebaut. Dabei enthalten ist eine Baugruppe mit Bauteilen, die über Gelenke, Federkräfte und Drehmomente miteinander interagieren.
•Es soll eine bestimmte Lage über eine Regelung gehalten werden. Dazu werden in NX motion Sensoren angelegt die Größen wie Beschleunigung, Geschwindigkeit und Weg enthalten können … sowohl rotatorisch als auch linear.
•Diese Größen werden an Simulink übergeben und die dort aufgebaute Regelung vergleicht die Messwerte mit den Sollwerten und gibt dann feste Winkel oder Wege vor. Diese Übergabe-Werte sind dann in NX motion wiederum motorisch erzeugte Wege oder Winkel die an einem Gelenk wirken.
Damit das so funktioniert wie beschrieben, sind einige Einstellungen nötig und das Grundverständnis wie diese Interaktion aufgebaut sein muss.
Es ist gleichermaßen eine Anleitung wie Co-Simulationen über 2 Programme hinweg funktionieren und aufgebaut werden. Wie immer liegt der Teufel im Detail und viele Stolperfallen verhindern eine schnelle Umsetzung.
Modellaufbau in NX-motion
Bei Installation einer neueren NX-Version fehlt das „Classic-MENÜ“ über das viele KE eingefügt werden können wie z.B. auch Materialeingaben und Materialausgaben für NX motion.
Man kann das Menü weiterhin benutzen, sofern man es einblendet. Es läßt sich über die Schnellzugriffsleiste mit einem Häckchen setzen und ist dann im blauen Menü verfügbar.
Problembehebung 1
Die Co-Simulation funktioniert nur zwischen kompatiblen Programmversionen. Bitte eine dieser Paarungen verwenden. Ansonsten findet keine Kommunikation zwischen Simulink und NX statt.
Anmerkung: in NX motion sollte bei der Pfadangabe zur MATLAB-App auch die richtige Programm-Version ausgewählt sein.
Problembehebung 2
Die Co-Simulation funktioniert nur wenn alle Dateien in einem gemeinsamen Ordner auf der lokalen Festplatte liegen. Es müssen sowohl das Simulink-Modell als auch die NX-motion-Simulationsdateien und auch alle CAD-Einzelteile und die Baugruppe in diesem gemeinsamen Ordner abgelegt werden.
Die Rechte für diesen Ordner müssen komplett frei sein … also lesen und schreiben.
Anmerkung 1: liegen die Projektdateien zwar in einem gemeinsamen Ordner, der sich aber auf einem Netzlaufwerk befindet, so starte die Simulation und bleibt bei T=0 sehr lange stehen … bis sie dann irgendwann mit einem Fehler abbricht.
Anmerkung 2: diesen Fehler ausschließen kann man, wenn die Simulation grundsätzlich läuft und Daten zwischen Simulink und NX getauscht werden … erkennbar an einen Editor-Textfenster „The Cosimulation has been solved successfully“
Aus der Baugruppen-Datei wird eine NX motion-Simulation angelegt. Dabei sollte darauf geachtet werden, dass
•der Analysetyp „Dynamik“ ausgewählt ist
•die Häkchen bei „Antrieb“ und „Co-Simulation“ gesetzt sind
•Die Solveroption „RecurDyn“ sollte ausgewählt sein.
Damit wird hinterlegt, dass erzeugte Sensordaten an Simulink übergeben sowie Antriebsdaten von Simulink an motion übernommen werden sollen.
Bewegungskörper anlegen
Bei einer Mehrkörper-Simulation gibt es prinzipiell nur starre Körper. Diese können eine Bewegung und Drehung im Raum machen, sich aber nicht verformen.
In der Baugruppe gibt es sehr viele einzelne Körper. Diese können in NX motion zu festen Körpern zusammengefasst werden; beispielsweise weil diese fest miteinander verschraubt oder verschweißt sind oder weil keine Relativbewegung zwischen ihnen möglich sein soll. Es können somit gezielt Freiheitsgrade reduziert und das System vereinfacht werden.
Wählen den Knopf „Bewegungskörper“ und klicke alle Körper nacheinander mit der Maus an, die zusammengefasst werden sollen.
Gelenke anlegen
Für die erzeugten Bewegungskörper müssen noch die Beziehungen zueinander definiert werden. Das können z.B. Drehgelenke, Kugelgelenk oder lineare Gelenke sein.
Es muss immer ein Typ von Gelenk gewählt werden und dazu immer 2 Bewegungskörper zugeordnet werden.
Ein Aktionskörper ist das erste Bauteil und wird angewählt. Der Ursprung sollte beschrieben werden … meistens ein beiden Bewegungskörpern gemeinsamer Punkt. Ein Drehgelenk benötigt eine Drehachse … also ein Vektor und einen Punkt.
Die Basis ist das zweite Bauteil und wird angewählt. Wird das Häkchen bei „Bewegungskörper andocken“ nicht gesetzt, so sind beide Bauteile über den gemeinsamen Punkt und Vektor des Aktionskörpers verbunden
Wird als Basis kein Bewegungskörper ausgewählt, so wird automatisch das raumfeste Koordinatensystem als Bezug genommen. Das Gelenk ist dann raumfest und kann sich nicht bewegen.
Wird der Haken bei „Bewegungskörper andocken“ gesetzt, so kann auch für die Basis ein eigener Ursprung und ein Vektor definiert werden.
Verbindungselemente anlegen
Um Gelenken kraftschlüssige Koppelelemente wie Federn oder Dämpfer zuzuweisen, wird ein Anschlusselement „Feder“ gewählt. Es müssen dann 2 Bewegungskörper gewählt werden und die jeweiligen Ursprungspunkte dazu.
Die Federsteifigkeit wird hier angegeben sowie auch optional Dämpferelement automatisch erzeugt werden.
Auch eine vorgespannte Feder kann in das Feld „Bereits geladene Länge“ eingegeben werden. Liegen die beiden Ursprungspunkte exakt übereinander, so würde dieser Abstand als ungespannt angesehen werden und damit die Feder nicht gespannt sein.
Wird aber ein Weg vorgegeben, so wird mit der Federsteifigkeit und dem Weg eine Federkraft ermittelt, die bereits zwischen den Ursprungspunkten wirkt.
Markierungen anlegen
Es können an bestimmten Stellen der Geometrie der Bewegungskörper Punkte definiert werden. Diese befinden sich fest auf den Bewegungskörpern und bewegen sich mit diesen im Raum.
So können Punkte definiert werden, die als Ursprung für z.B. Federn wirken und Kräfte zwischen 2 Punkten übertragen werden. Dabei muss nicht zwangsläufig ein Koppelelement wie eine lineares Element eingesetzt werden.
Markierung sind geometrisch festgelegte Punkte, die für Sensorpositionen später wiederverwendet werden können.
Sensor anlegen
Sensoren liefern Messwerte aus dem zeitlichen Verlauf der Simulation. Das können Beschleunigung, Geschwindigkeit oder Bewegungen sein … sowohl linear als auch rotatorisch.
Bei der Definition eines Sensors wird zum einen dessen geometrische Position benötigt wie auch die Art von Messung. Für die Position wird die vorher angelegte Markierung ausgewählt.
Zahnradkoppler anlegen
Zwischen Wellen können auch feste Übersetzungsverhältnisse definiert werden. Das entspricht einer Verzahnung der Wellen mit einem bestimmten Übersetzungsverhältnis.
Über die Eingabe der Berührkreisdurchmusser wird die Übersetzung
3D-Kontakte anlegen
Da die Bewegungskörper sich erst einmal nicht sehen und aneinander anstoßen oder sich komplett durchdringen können, gibt es Kontakte.
3D-Kontakte können definiert werden. Dabei werden 2 Bewegungskörper ausgewählt und diese beiden geometrischen Strukturen überwacht, dass diese sich nicht durchdringen können.
Sobald eine Durchdringung erkannt wird und damit miteinander in Kontakt treten werden so hohe Rückstellkräfte erzeugt, dass diese sich bis zu den Kontaktflächen verschieben und dann entweder aufeinander abrollen oder abgleiten können.
Materialausgabe anlegen
Um Sensorwerte für Simulink nutzbar zu machen müssen diese der Materialausgabe hinzugefügt werden. Dadurch werden diese im Simulink-Block als Datenstream hinzugefügt.
Materialeingabe anlegen
Um vom Simulink-Block eine Eingabegröße als Datenstream zu erhalten, muss der Variablenname bestimmt werden und in Materialeingaben hinzugefügt werden.
Antrieb anlegen – Teil 1
Ein Antrieb verbindet folgende KEs miteinander:
•Gelenk an dem der Antrieb wirken soll
•Eine Materialeingabe aus Matlab die den Wert liefert (linearer Weg oder Drehwinkel)
•Eine Funktion die beides miteinander verknüpft
Damit eine Funktion angelegt werden kann und diese keine Einheitenprüfung durchführt, müssen die Voreinstellungen von NX motion geändert werden.
Antrieb anlegen – Teil 2
Um einen Gelenk mit einem Antrieb zu verbinden, muss der Antrieb zuerst angelegt werden. Es wird das Gelenk ausgewählt wie auch eine „Funktion“ ausgewählt. Zusätzlich muss angegeben werden, wie diese Funktion interpretiert wird … als Verschiebung, Geschwindigkeit oder Beschleunigung.
Getestet habe ich es erfolgreich mit der Verschiebung als Weg oder Winkel.
Bei „Funktion“ gibt es hinter dem Namen einen Knopf mit einem Pfeil nach unten. Dort wählt man „Bearbeiten“ aus.
Antrieb anlegen – Teil 3
Im XY-Funktions-Manager werden die angelegten Funktionen angezeigt.
Um eine Funktion zu bearbeiten wählt man diese aus und klickt unten auf den Knopf „Funktion bearbeiten“.
Im XY-Funktionseditor wird dem Funktionsnamen eine Formel bzw. Verknüpfung zugeordnet. Hier wählt man eine der angelegten Bewegungs-Eingaben aus, bis diese im Formel-Feld eingetragen ist.
Integration mit Simulink 1
Es ist wichtig, dass sich die NX-Dateien wie auch die Simulink-Dateien lokal auf der Festplatte befinden.
Es muss die korrekte MATLAB-Programmversion im Dateipfad zugewiesen werden (Win64)
Integration mit Simulink 2
Als nächstes wird die Simulation in NX gestartet. Dabei wird abgefragt, welches Programm die Co-Simulation leiten soll. Wir wählen „Simulink“ aus.
Danach wird im selben Verzeichnis wie die NX-Dateien 2 Matlab-m-Dateien erzeugt.
•„xxx_Solution_1_Plant.m“
•„xxx_Solution_1_PlantIO.m“
Davon öffnen wir diejenige mit „…Plant.m“. Im Editor entferne den Kommentar vor „set param ….“ und starten das Skript.
Integration mit Simulink 3
Es wird jetzt ein Motion-Plant Simulink-Block erzeugt. Dieser wird kopiert und in das eigene Simulink-Modell eingefügt.
Links am Block sind die Simulink-Ausgänge welche in NX als Eingangsgrößen dienen … also die Drehwinkel.
Rechts am Block sind die Simulink-Eingängen welche in NX als Sensoren Messwerte liefern.
1.Doppelklicken des Blocks
2.Doppelklicken auf „Dynamik-Model“
3.Eintragen der Schrittweite
(z.B. 100 Schritte)