INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.


Antwort schreiben 

Problem bei Sinus-Bewegung



Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!

24.07.2014, 13:15
Beitrag #1

Bigles Offline
LVF-Neueinsteiger


Beiträge: 9
Registriert seit: Jul 2014

Labview13
2013
EN



Problem bei Sinus-Bewegung
Hallo zusammen!

Ich habe ein nicht ganz einfaches Problem mit meinem Labview-Programm zu lösen und ich habe keine Ahnung wie! Confused Falls mir jemand helfen könnte wäre ich seehr dankbar!!

Ich habe ein Linearmotor der tierische Sehnen zyklisch dehnen soll. Dazu benützte ich einen Linearmotor von der Firma Zaber. Da die Dehn-Bewegung sinusförmig sein soll, sende ich auf den Motor Geschwindigkeitssignale und approximiere so einen Sinus. Z.B. möchte ich mit 1Hz zyklisch dehnen, dann sende ich pro Sekunde 40 Geschwindigkeitssignale an den Motor, in regelmässigen Abständen, und eine Funktion berechnet die zugehörige Geschwindigkeit um einen Sinus zu erhalten. Das funktioniert eigenlich sehr gut. Das Problem beginnt dann, wenn im Hintergrund des Computers irgendwelche Prozesse zu arbeiten beginnen und dadurch der Computer (Intel i5-3220M @2.6GHz, 4Gb RAM) leicht verzögert die Signale ausgibt. Dann verfälscht sich (logischerweise) die relative Position der Dehnbewegung. Z.B. wenn ich während dem Betrieb ein Programm öffne, der Computer kurzzeitig erhöhte Aktivität hat, sendet er einen Geschwindigkeits-Befehl ein paar ms zu spät und um diese Zeit verschiebt sich die Position. Hat irgend jemand Erfahrung mit diesem Problem und einen Tipp wie ich das beheben könnte?

Vielen Dank schon im voraus für jede Antwort!
LG Bigles
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
24.07.2014, 13:32 (Dieser Beitrag wurde zuletzt bearbeitet: 25.07.2014 09:17 von jg.)
Beitrag #2

jg Offline
CLA & CLED
LVF-Team

Beiträge: 15.864
Registriert seit: Jun 2005

20xx / 8.x
1999
EN

Franken...
Deutschland
RE: Problem bei Sinus-Bewegung
Geh nicht davon aus, dass unter Windows eine Schleife einen festen Takt einhält. Das geht halt nicht.

Mögliche Lösungs-Ideen:
- Verwende das Metronom zur Schleifentaktung.
- Verwende eine Timed-Loop. Die taktet sich selber (auch auf Windows) wieder in das feste Zeitraster ein.
- Berechne die verstrichene Zeit seit Messbeginn und nimm diese zur "Beschleunigungsberechnung".

Gruß, Jens

Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)

!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!

Einführende Links zu LabVIEW, s. GerdWs Signatur.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
24.07.2014, 13:48 (Dieser Beitrag wurde zuletzt bearbeitet: 24.07.2014 13:49 von GerdW.)
Beitrag #3

GerdW Offline
______________
LVF-Team

Beiträge: 17.469
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Problem bei Sinus-Bewegung
Hallo Bigles,

Zitat:Da die Dehn-Bewegung sinusförmig sein soll
Noch ein Lösungsvorschlag: Nimm einen rotierenden Motor und ein Getriebe/Gestänge (wie bei einem handelsüblichen Hubkolbenmotor)…
Dann kannst du mit gleichmäßiger Geschwindigkeit arbeiten!

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
24.07.2014, 14:52
Beitrag #4

Bigles Offline
LVF-Neueinsteiger


Beiträge: 9
Registriert seit: Jul 2014

Labview13
2013
EN



RE: Problem bei Sinus-Bewegung
@jg: Ah, ich dachte so eine Schleife mit einem wait-element sei konstant! Vielen, vielen Dank für die Lösungsvorschläge. Ich werde die der Reihe nach mal ausprobieren.

@GerdW: Stimmt, auch eine gute Möglichkeit! Würde meine Konstruktion aber ziemlich verkomplizieren. Falls sich das Problem aber nicht softwaretechnisch lösen lässt, werde ich dass definitiv mal in Betracht ziehen.

Besten Dank euch beiden!
Lg Bigles
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
24.07.2014, 15:03
Beitrag #5

kpa Offline
LVF-Stammgast
***


Beiträge: 385
Registriert seit: Mar 2007

2019
2002
DE

88***
Deutschland
RE: Problem bei Sinus-Bewegung
Hallo Bigles,

ein Hubkolben beschreibt keinen Sinus.

http://de.wikipedia.org/wiki/Schubkurbel

Grüße

kpa
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
24.07.2014, 15:07
Beitrag #6

GerdW Offline
______________
LVF-Team

Beiträge: 17.469
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Problem bei Sinus-Bewegung
Hallo,

dafür aber einen Kosinus… Smile

Und den dann aber sehr viel gleichmäßiger als ein Motor, der über eine normale Loop auf einem Windows-PC in der Geschwindigkeit variiert wird…

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
24.07.2014, 15:54
Beitrag #7

Lucki Offline
Tech.Exp.2.Klasse
LVF-Team

Beiträge: 7.699
Registriert seit: Mar 2006

LV 2016-18 prof.
1995
DE

01108
Deutschland
RE: Problem bei Sinus-Bewegung
Wie ist denn die genaue Hardware-Konfiguration?
In der Regel wird der Stepper-Motor doch nicht wegen jedes Steps vom PC aus gesteuert, sondern zwischen PC und Motor ist ein Controller mit eigener Intelligenz und mit der Leistungelektronik für den Motor. Der PC ist mit dem Controller z.B über RS232 verbunden. Man kann dem Controller vom PC aus ganze Bewegungsprofile übergeben, die dann autark ausgeführt werden. Ein Stottern am PC wirkt sich dann überhaupt nicht auf die Bewegeung aus. Ist das bei Dir nicht so? Wenn es einen Controller gibt, wie sieht der Befehlssatz aus? Muß man die RS232-Befehle selbst generieren oder gibt es eine DLL-Bibliothek als Schnittstellentreiber? Im Idealfall kann die Firma sogar "Labview-Treiber" anbieten. Dabei handelt es sich im eine Sammlung von Funktionen (die man auch selbst erstellen könnte) , die auf die DLL (oder direkt auf die serielle Schnittstelle) zugreifen.
Gruß Ludwig
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
24.07.2014, 20:31 (Dieser Beitrag wurde zuletzt bearbeitet: 24.07.2014 20:35 von kpa.)
Beitrag #8

kpa Offline
LVF-Stammgast
***


Beiträge: 385
Registriert seit: Mar 2007

2019
2002
DE

88***
Deutschland
RE: Problem bei Sinus-Bewegung
(24.07.2014 15:07 )GerdW schrieb:  Hallo,

dafür aber einen Kosinus… Smile

Und den dann aber sehr viel gleichmäßiger als ein Motor, der über eine normale Loop auf einem Windows-PC in der Geschwindigkeit variiert wird…

Hallo Gerd,

der Kolbenhub beschreibt auch keinen Kosinus. Ich habe ein Bild gemacht an dem Du sehen kannst was der Kolben macht.
Das ergibt so einen verzerrten Kosinus der oben schmal und unten breit ist. Im Bild ist der Radius 1 und die Pleuelstange 1,5. Wenn die Pleuelstange größer gegenüber dem Radius wird dann geht es mehr in Richtung Kosinus aber es kann nie ein Kosinus werden. (Hier hat noch der Herr Phytagoras seine Finger im Spiel, die Pleuelstange ist meistens nicht in Hubrichtung.)

Grüße

kpa


Angehängte Datei(en) Thumbnail(s)
   
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
25.07.2014, 08:52
Beitrag #9

Bigles Offline
LVF-Neueinsteiger


Beiträge: 9
Registriert seit: Jul 2014

Labview13
2013
EN



Smile RE: Problem bei Sinus-Bewegung
Hallo zusammen!

Vielen Dank für die vielen Anregungen!

Nur kurz zur Sinus-Cosinus-Disskusion! Smile Es ist mir bewusst, dass es nicht einen exakten Sinus gibt; der Fehler ist für medizinische Versuche allerdings vernachlässigbar, es geht mehr darum natürliche Belastungen zu simulieren die natürlich in der Natur auch keinem perfekten Sinus entsprechen. Allerdings wäre es mechanisch für meinen Versuchsaufbau nur sehr schwer umsetztbar mit einem Kolbenhub zu arbeiten.

@Ludwig: Ich verwende einen Linear-Schrittmotor von der Firma Zaber (NA23C60) mit einem Controller. Die stellen eine Labview-Library zur verfügung, allerdings sehr einfach gehalten. Es gibt ca. 30 Commands von denen nur etwa 5 zur Positionsveränderung sind: Move relative, Move absolute, Move at constant speed, Set speed, Set acceleration. Die Library macht eigenlich nichts anders als den Befehl in ein 6-byte Datenpacket zu wandeln und diesen an den Controller per Visa zu senden.
Ich verwende jetzt "Move at constant speed", wobei ich einen Sinus in 40/Frequenz = steps unterteile. Z.B. bei 1Hz -> 40 Steps, bei 0.5Hz -> 80steps, ect. Dann hab ich einen While-Loop in Labview und berechne abhängig von i (der Laufvariable) die aktuelle Geschwindigkeit und gebe sie per command "move at constant speed" an den Controller.
Das Problem: sobald die Commands nur einige Millisekunden verspätet an den Controller gesendet werden, verschiebt sich die absolute Position der Motorenwelle. Z.B. Windows startet eine Hintergrundaktion oder ich öffne ein Programm, der Computer ist kurzzeitig ausgelastet (wobei das Problem schon bei ca 30% Computerauslastung auftritt) und sendet den nächsten "move at const. speed"-Befehl z.B. 3ms zu spät; dann bin ich um "s=v*t" also: "aktuelle geschwindigkeit * 3ms" an einer falschen Position: was in relaität dann oft etwa 0.05mm sind, was bei einer Gesamtdehnung von 0.3mm einen ziemlich grossen Fehler ist.
Das man Bewegungsprofile übergeben kann, ist (soweit ich weiss) nicht möglich.
Was ich also bräuchte wäre eine völlig genaue Taktgebung von Labview unabhängig davon was Windows im Hintergrund bastelt. Ich habe das Metronom mal ausprobiert; ändert aber nichts. Mit timed-loop kenn ich mich nicht aus, aber werde mich heute mal einlesen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
25.07.2014, 09:05
Beitrag #10

jg Offline
CLA & CLED
LVF-Team

Beiträge: 15.864
Registriert seit: Jun 2005

20xx / 8.x
1999
EN

Franken...
Deutschland
RE: Problem bei Sinus-Bewegung
Dich wird nicht nur Windows bei diesem Konzept stören.
Du musst auch bedenken, dass ein Senden eines Strings per RS-232 (inkl. VISA-API) auch nicht echtzeitfähig ist, und da hast so gut wie keinen Einfluss drauf.
- VISA Write hat einen Buffer, der Treiber entscheidet das genaue Timing des Abschickens.
- Die Datenübertragung selber dauert (Bsp: bei 9600 baud braucht 1 ASCII Zeichen ca. 1 ms).
- Du hast keinen Einfluss über die Empfangsseite..., wann verarbeitet der Controller den Empfang und wie schnell setzt er ihn um.

Gruß, Jens

Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)

!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!

Einführende Links zu LabVIEW, s. GerdWs Signatur.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
30
Antwort schreiben 


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  mäanderförmigen Bewegung inLabVIEW jefe 4 5.314 11.02.2009 18:30
Letzter Beitrag: jg

Gehe zu: