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