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 

Zeitbedarf DAQ Sequenz verringern, Semaphor wirklich notwendig?



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!

13.06.2018, 15:58
Beitrag #1

Philipp841 Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 74
Registriert seit: Mar 2018

LV 2015 SP1 32bit
2016
DE

28359
Deutschland
Zeitbedarf DAQ Sequenz verringern, Semaphor wirklich notwendig?
Hallo zusamm´,

beigefügtes VI (Motorcontroller.vi) enthält ein DAQ-Device mit dem u.a. Signale zur Steuerung zweier Motoren ausgegeben werden. Im Hauptprogramm läuft parallel zu dieser (I/O-)Whileschleife noch eine Main-While-Schleife in welcher zur Datenerfassung ebenfalls auf die NI-Karte zugegriffen wird (Allerdings wird in besagter Main nur auf die AI-Channels zugegriffen).

Zwischen den beiden While-Schleifen wurde eine Semaphor-Funktion integriert, die dafür sorgt, dass immer nur eine der beiden Whileschleifen zur Zeit ausgeführt wird, bzw. die eine auf die andere wartet (Vermutlich damit die Karte bzw. das Ausgeben/Einlesen von Signalen nicht durcheinander gerät. Oder wüsste jmd. einen anderen Grund?).

Zur Folge hat dies, dass die Main-While-Schleife hin und wieder auf die I/O-Schelife warten muss; und zwar ganz schön lange. Insgesamt benötigt die I/O-Whileschleife ca. 50ms. Duch eine Zeitmessung der einzelnen Frames kann ich auch sagen, wie sich diese Zeit zusammen setzt.

Frame 1 - 10ms
Frame 2 - 10ms
Frame 3 - 16ms
Frame 4 - 16ms
Frame 5 - wird nicht ausgeführt, da nicht benötigt, Fehler etc... wie auch immer

Nun zu meiner Frage:
Ich habe in der Main-While-Schlife die parallel laufende Datenerfassung bereits so umgebaut, dass selbige kontinuierlich erfolgt, sprich das Erstellen, Konfigurieren, Starten, Stoppen und Schließen des Tasks nicht in jedem Schleifendurchlauf erfolgen muss und somit unnötig Zeit kostet. Ist dies in dem beigefügten VI ebenfalls möglich? Wenn ja, worauf gilt es zu achten?
(Ich habe bedenken, dass die Motoren empfindlich darauf reagieren könnten, wenn die Ausgabe der Ansteuerungssignale kontinuierlich und nicht mehr getaktet erfolgt? Insbesonder im Hinblick auf Positions- und Geschwindigkeitsregelungen etc.)

Gibt es möglicherweise auch noch eine Alternative für mein Ziel, eine gleichbleibend schnelle Datenerfassung hinzubekommen ohne die Ansteuerung der Motoren modifizieren zu müssen?

Und zum Schluss: Wieso wird diese Semaphor-Funktion benötigt, wenn ich bei der Datenerfassung lediglich auf die AIs und zur Ansteuerung der Motoren nur auf die I/Os zugreife?

Vielen Dank,
Philipp


Angehängte Datei(en)
15.0 .vi  Motorcontrol.vi (Größe: 22,85 KB / Downloads: 222)

13.0 .vi  DAQ DO mit Devices.vi (Größe: 34,42 KB / Downloads: 222)

13.0 .vi  DAQ DO1mit Devices.vi (Größe: 34,5 KB / Downloads: 217)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
13.06.2018, 16:56
Beitrag #2

jg Offline
CLA & CLED
LVF-Team

Beiträge: 15.864
Registriert seit: Jun 2005

20xx / 8.x
1999
EN

Franken...
Deutschland
RE: Zeitbedarf DAQ Sequenz verringern, Semaphor wirklich notwendig?
Probieren geht über Studieren. Lass ihn einfach mal weg...

Ich kann dir auch keinen wirklich vernünftigen Grund für den Semaphore nennen, außer der Ersteller des Programms hatte Angst zwecks Resourcen-Konflikten über den USB-Bus. Ab und an einen DO zu setzen (mit Software-Takt) und Counter neu zu setzen, das sollte keine großen Störungen bringen. Früher hast du aber auch dauernd den AI-Task neu angelegt, vielleicht gab es da Probleme im Zusammenspiel.

Um dein nicht funktionsfähiges Motor-Controller-VI zu verstehen, habe ich mir nochmal deinen alten Upload angeschaut.

Fehler bei Frame 5 kommt daher, dass davor versucht wird, für 3 Counter 3 Tasks anzulegen - deine 6212 hat aber nur 2 Counter. Somit Fehler beim 3. Task.

Außerdem empfehle ich dir, alle DOs zu einem Task zusammenzulegen, dann sparst du noch etwas Kommunikationsübertragung zur Karte.

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
20.06.2018, 16:55
Beitrag #3

Philipp841 Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 74
Registriert seit: Mar 2018

LV 2015 SP1 32bit
2016
DE

28359
Deutschland
RE: Zeitbedarf DAQ Sequenz verringern, Semaphor wirklich notwendig?
Hy Jens,

vielen Dank für deine Antwort. Zusammenlegen der DOs habe ich verstanden. Würde es an der Stelle auch Sinn machen ähnlich vorzugehen wie bei der Datenerfassung. Sprich den Task nur 1x außerhalb der While schleife anzulegen?

Wie sieht es mit Frame 3 und 4 aus. Gibt es hier noch Möglichkeiten Zeit zu sparen ?

Danke & Gruß,
Philipp
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
20.06.2018, 17:08
Beitrag #4

GerdW Offline
______________
LVF-Team

Beiträge: 17.480
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Zeitbedarf DAQ Sequenz verringern, Semaphor wirklich notwendig?
Hallo Philipp,

Zitat:Sprich den Task nur 1x außerhalb der While schleife anzulegen?
Ja, natürlich.
Würdest du es jemals anders machen?

(Sinn kann man nur haben, aber nicht machen. Big Grin)

Zitat:Wie sieht es mit Frame 3 und 4 aus. Gibt es hier noch Möglichkeiten Zeit zu sparen ?
- Wozu braucht man eine Schleife, die bei "i >= 0" beendet wird? Rube-Goldberg!
- Die Case-Strukturen zum Abfangen von Fehlern sind Rube-Goldberg: wenn ein Fehler aufgetreten ist, werden die DAQmx-Funktionen sowieso nicht ausgeführt…
Ansonsten nein: die DAQmx-Funktionen selbst kannst du nicht beschleunigen…

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Antwort schreiben 


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  Sequenz Generator erstellen wilson85 4 5.325 13.08.2013 08:34
Letzter Beitrag: GerdW
  Spannungsmessung in Sequenz mit NI USB-6009 MasterWienke 14 13.519 24.06.2011 08:59
Letzter Beitrag: MasterWienke
  Zeitsteuerung mit Flacher Sequenz koler 31 23.540 12.05.2009 09:42
Letzter Beitrag: Lucki

Gehe zu: