Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de
  NX Simulation
  MCD: Positionswert in Operation aktualisieren ohne vorgegebene Geschwindigkeit

  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Thema geschlossen  Thema geschlossen!
Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuer Beitrag | nächster älterer Beitrag
  
Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für NX
  
NX: Erste Schritte, ein Webinar am 26.09.2025
Autor Thema:  MCD: Positionswert in Operation aktualisieren ohne vorgegebene Geschwindigkeit (327 mal gelesen)
Year-One
Mitglied
Ingenieur / Doktorand


Sehen Sie sich das Profil von Year-One an!   Senden Sie eine Private Message an Year-One  Schreiben Sie einen Gästebucheintrag für Year-One

Beiträge: 13
Registriert: 02.11.2015

Siemens NX 10

erstellt am: 09. Dez. 2015 09:44    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo zusammen,

ich sitze hier vor einem Problem. Ich habe mir ein Tool geschrieben, mit dem ich mir Positionswerte berechnen und ausgeben lasse.

Mit diesen Werten würde ich gerne meine Kinematik, in diesem Falle eine Winkelverdrehung über einen HingeJoint, visualisieren. Leider funktioniert das nicht so wie ich das möchte. Die Werte kommen zumindest mal am Signaladapter an, jedoch werden die Werte nicht korrekt übernommen bzw. dargestellt. Der Joint bewegt sich auch noch, wenn ich keinen neuen Wert mehr übergebe.

Ich denke das Problem liegt im Attribut "Speed". Dieses möchte ich aber nicht setzen.

Hat jemand eine Idee, wie ich dieses Dilemma lösen könnte?

Grüße

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

mseufert
Ehrenmitglied V.I.P. h.c.
Freiberuflicher CAD/CAM Ingenieur


Sehen Sie sich das Profil von mseufert an!   Senden Sie eine Private Message an mseufert  Schreiben Sie einen Gästebucheintrag für mseufert

Beiträge: 2723
Registriert: 18.10.2005

erstellt am: 10. Dez. 2015 09:04    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Year-One 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von Year-One:
Hat jemand eine Idee, wie ich dieses Dilemma lösen könnte?

Hallo Year-One,

geh' zunächst mal davon aus, daß hier niemand Gedanken lesen kann  :

Was für ein Tool hast Du geschrieben ? Welche Programmiersprache, welche Methode ?
Wie sieht die Kinematik aus ? Bewegt sich der Joint richtig, wenn er interaktiv angesteuert wird ?
Lässt sich der interaktive Vorgang z.B. als Journal aufzeichnen ? Falls ja, was steht drin ?

Eine exakte Beschreibung des Problems hilft wahrscheinlich mehr, als die relative Häufigkeit des Wortes "ich" in rekordverdächtige Höhen zu treiben. 

Gruß, Michael

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Year-One
Mitglied
Ingenieur / Doktorand


Sehen Sie sich das Profil von Year-One an!   Senden Sie eine Private Message an Year-One  Schreiben Sie einen Gästebucheintrag für Year-One

Beiträge: 13
Registriert: 02.11.2015

Siemens NX 10

erstellt am: 10. Dez. 2015 10:47    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo mseufert,

danke für den Hinweis, war schon lange nicht mehr in einem Forum tätig und bin wohl zu tief im Thema drinnen  

Also folgender Sachverhalt:

Außerhalb von NX:
Über eine Formel werden zyklisch Positionswerte berechnet und ausgegeben.

Innerhalb NX - Mechatronics Concept Designer:
Input:
Die Positionswerte werden über eine .dll Applikation per RuntimeCode eingelesen, welche mit Visual Studio als interne Applikation in C# geschrieben wurde. Die Positionswerte liegen als String vor, bspw.: "-15.000" was -15° bedeuten soll.

Modelaufbau:
Zum Überprüfen dient ein einfaches Modell, welches ein einfaches Gelenk darstellt.
RigidBody(1) - Festteil, mit FixedJoint
RigidBody(2) - Bewegliches Teil, mit HingeJoint als Attachment an RigidBody(1)

Um die Positionswerte dem Gelenk zu zuordnen ist ein PositionControl auf en HingeJoint bezogen eingesetzt. Über eine Operation kann das Gelenk korrekt gesteuert werden, indem ein Positionswert und eine Geschwindigkeit zugewiesen wird.

Für die Zuweisung des eingelesenen Positionswertes wurde hier im Forum, an anderer Stelle, ein SignalAdapter empfohlen und auch eingesetzt. 

Dem Signaladapter wurde der Parameter Position des PositionControls zugewiesen:

Parameter:
Zuweisen zu    |    (nicht aktiviert)
Alias          |    Parameter
Objekt         |    PositionControl(1)
Objekttyp      |    Positionsregler
Parameter      |    Position
Wert           |    0.000000
Einheit        |    Grad
Datentyp       |    Double
Lesen/Schreiben|    W

Signale:

Zuweisen zu    |    aktiviert
Name           |    Signal_1
Datentyp       |    double
Eingabe/Ausgabe|    Eingabe
Ausgangswert   |    0.0000000
Messen         |    Winkel
Einheit        |    degrees

Formeln:

Zuweisen zu    |    Signal_1
Formel         |    Paramater

Verarbeitung:

Im RuntimeCode wird das Signal_1 dann deklariert und zugewiesen:
...
Signal Signal1;
...
Access.Connect("Select Signal 1",out Signal1);
...

in einer weiteren Funktion wird der Positionswert zyklisch eingelesen und einer String-Variable (posVal) zugewiesen.

Anschließend wird dem Signal der als Double konvertierte Wert zugewiesen:
Signal1.FloatValue = Convert.ToDouble(posVal);

hier wurde auch schon mit

Signal1.FloatValue = float.Parse(posVal);

experimentiert, was aber keinen Unterschied erkennen ließ.

Output:
Beim direkten Starten der MCD-Simulation geschieht nichts. Wird jedoch der Parameter im PositionControl(1) zuvor händisch gesetzt bewegt sich das Gelenk, jedoch nicht mit den Werten, die ihm übermittelt werden. Zudem bewegt sich das Gelenk weiter, wenn der Output der Formel konstant bleibt.

Zurück zur Frage:
Ändert sich nun der vorgegebene Positionswert, so berechnet MCD über die Vorgabe des Speed-Parameters die Simulationsdauer bis zum Erreichen der nächsten Position. Wie kann man den Speed-Parameter umgehen, dass das Gelenk quasi von Position zu Position "springt"? Mit extrem hohen Speed-Werten funktioniert das leider auch nicht.

Grüße
Year-One

PS: ohne "Ich" und ausführlich, nun bitte konstruktive Fragen/Tipps. Das Tool zur Berechnung der Position spielt hier keine Rolle, da die Werte als String richtig ankommen! Das ist eine MCD-interne Geschichte

[Diese Nachricht wurde von Year-One am 10. Dez. 2015 editiert.]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

mseufert
Ehrenmitglied V.I.P. h.c.
Freiberuflicher CAD/CAM Ingenieur


Sehen Sie sich das Profil von mseufert an!   Senden Sie eine Private Message an mseufert  Schreiben Sie einen Gästebucheintrag für mseufert

Beiträge: 2723
Registriert: 18.10.2005

erstellt am: 14. Dez. 2015 10:10    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Year-One 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von Year-One:
Beim direkten Starten der MCD-Simulation geschieht nichts. Wird jedoch der Parameter im PositionControl(1) zuvor händisch gesetzt bewegt sich das Gelenk, jedoch nicht mit den Werten, die ihm übermittelt werden. Zudem bewegt sich das Gelenk weiter, wenn der Output der Formel konstant bleibt.

Das Problem tritt also auch bei interaktiver Anwendung auf ? Dann lässt es sich mit einem externen Programm wohl kaum in den Griff bekommen.

Zitat:
Original erstellt von Year-One:
Das ist eine MCD-interne Geschichte

Dann empfehle ich das Simulanten-Forum. 

Gruß, Michael

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

VBraun
Mitglied


Sehen Sie sich das Profil von VBraun an!   Senden Sie eine Private Message an VBraun  Schreiben Sie einen Gästebucheintrag für VBraun

Beiträge: 3
Registriert: 07.11.2015

Dell Precision M6800

erstellt am: 15. Dez. 2015 11:21    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Year-One 10 Unities + Antwort hilfreich


MCD_NX10_Runtime_Behaviour_AngleSignal.prt

 
Hallo Year-One,


ich vermute in deinem Signaladapter musst du die Zuweisungsrichtung umkehren.
Du willst ja dass dein Positioncontrol mit einem Wert aus deinem Signal überschrieben wird.

Daher sollte das in der Formel etwa so aussehen:

Formeln:

Zuweisen zu    |    Parameter
Formel        |    Signal_1

Bei dem Arbeiten mit dem Runtime Behaviour musst du zusätzlich deinen Wert der anscheinend als Winkel aus deiner externen Applikation kommt in einen radialen Wert umwandeln.

Die Verfahrgeschwindigkeit würde ich entweder in der Runtime Behaviour berechnen und zusätzlich übergeben (weiteres Signal) oder im PositionControl fix vorgeben.

Schau mal im Anhang habe ich ein kleines Beispiel angefügt, vielleicht hilft das ja etwas (den c# Code kannst du im NX öffnen).

Viele Grüße
VBraun

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP



Ingenieur*in Gebäudetechnik HKLS (80%) Kennziffer: 270/2025 K.4.1

Die Hochschule Darmstadt sucht in der Zentralen Organisationseinheit Bau und Liegenschaften ab dem nächstmöglichen Zeitpunkt unbefristet eine*n

Ingenieur*in Gebäudetechnik HKLS (80%)
Kennziffer: 270/2025 K.4.1

Die Hochschule Darmstadt unterhält und bewirtschaftet zurzeit an den Standorten Darmstadt und Dieburg 53 Gebäude mit einer Nettogrundfläche von ca....

Anzeige ansehenFeste Anstellung
Year-One
Mitglied
Ingenieur / Doktorand


Sehen Sie sich das Profil von Year-One an!   Senden Sie eine Private Message an Year-One  Schreiben Sie einen Gästebucheintrag für Year-One

Beiträge: 13
Registriert: 02.11.2015

erstellt am: 15. Dez. 2015 16:27    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hi VBraun,


Das Problem lag zum einen in der Datenzuweisung, in Signal, Signaladapter und OperationControl steht ja überall "double" und "degrees",da muss man erstmal drauf kommen, dass in der RuntimeBehaviour dann auf Radiant geswicht werden muss.....

Das mit der "Speed" klappt dann auch, wenn ich große Werte eingebe.

Top, dank dir!

Grüße
Year-One

[Diese Nachricht wurde von Year-One am 15. Dez. 2015 editiert.]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag öffnen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2025 CAD.de | Impressum | Datenschutz