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 

Programm wird langsamer



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.09.2007, 08:27 (Dieser Beitrag wurde zuletzt bearbeitet: 04.12.2007 21:52 von jg.)
Beitrag #1

tzy2001 Offline
LVF-Grünschnabel
*


Beiträge: 37
Registriert seit: May 2007

8.2
2007
kA

88214
Deutschland
Programm wird langsamer
Hallo zusammen,

Ich habe ein Problem. Mein Programm wird langsamer (1min entsprechen dann 1min15sec), sobald ich ein Analoges Modul (Temperatur Messung z.B.) im Programm integriere.

Ich arbeite mit einem USB-Chassis cDAQ-9172. In diesem Slot sind 7 Module eingebaut (2xNI9263; 2xNI9477; 2xNI9217; 1xNI9205).

Ich habe in meinem Programm SUBvi's eingebaut, und haber gehofft das das Programm deswegen normal weiterlauft.

Sobald ich das Modul 9205 im Programm integriere, wird das Programm noch langsamer (1min entspricht 1min30sec).

Ich bin ratlos, und hoffe das mir jemand helfen kann.

Ich habe im Anhang das Programm mit eingefügt (Bild und Programm selber).

Mfg

Bin Anfänger. Nicht wundern.

(VI LV 8.2)


Angehängte Datei(en) Thumbnail(s)
       

Sonstige .vi  Projekt11092007alt.vi (Größe: 46,72 KB / Downloads: 263)

Sonstige .vi  Projekt24092007.vi (Größe: 59,8 KB / Downloads: 272)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
24.09.2007, 09:35
Beitrag #2

tzy2001 Offline
LVF-Grünschnabel
*


Beiträge: 37
Registriert seit: May 2007

8.2
2007
kA

88214
Deutschland
Programm wird langsamer
' schrieb:Hallo zusammen,

Ich habe ein Problem. Mein Programm wird langsamer (1min entsprechen dann 1min15sec), sobald ich ein Analoges Modul (Temperatur Messung z.B.) im Programm integriere.

Ich arbeite mit einem USB-Chassis cDAQ-9172. In diesem Slot sind 7 Module eingebaut (2xNI9263; 2xNI9477; 2xNI9217; 1xNI9205).

Ich habe in meinem Programm SUBvi's eingebaut, und haber gehofft das das Programm deswegen normal weiterlauft.

Sobald ich das Modul 9205 im Programm integriere, wird das Programm noch langsamer (1min entspricht 1min30sec).

Ich bin ratlos, und hoffe das mir jemand helfen kann.

Ich habe im Anhang das Programm mit eingefügt (Bild und Programm selber).

Mfg

Bin Anfänger. Nicht wundern.

Falls Ihr die SubVI's benötigt, bitte melden.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
24.09.2007, 09:45
Beitrag #3

monoceros84 Offline
LVF-Stammgast
***


Beiträge: 445
Registriert seit: Oct 2006

2011
2006
EN


Deutschland
Programm wird langsamer
Ich weiß nicht, ob das daran liegt, aber ein Anfang wäre mal, die Initialisierung und das Starten der DAQ-Tasks VOR deiner Schleife zu erledigen. Das verbraucht nämlich meist viel Zeit.

Analog das Beenden und Löschen der Tasks NACH der Schleife.

Evtl. funktioniert das dann schon wie gewünscht...

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
24.09.2007, 14:18 (Dieser Beitrag wurde zuletzt bearbeitet: 04.12.2007 21:52 von jg.)
Beitrag #4

tzy2001 Offline
LVF-Grünschnabel
*


Beiträge: 37
Registriert seit: May 2007

8.2
2007
kA

88214
Deutschland
Programm wird langsamer
' schrieb:Ich weiß nicht, ob das daran liegt, aber ein Anfang wäre mal, die Initialisierung und das Starten der DAQ-Tasks VOR deiner Schleife zu erledigen. Das verbraucht nämlich meist viel Zeit.

Analog das Beenden und Löschen der Tasks NACH der Schleife.

Evtl. funktioniert das dann schon wie gewünscht...


Ich habe das Programm verändert, so wie Du es mir gesagt hast (Ich hoffe das ich Dich richtig verstanden habe). Es ist besser geworden, aber es läuft nicht in 1min. Jetzt verliere ich nur noch 4sec pro Minute.

Wenn ich jetzt mehr hinnein mache, dann wird es besitmmt wieder langsamer??

(VI LV 8.2)


Angehängte Datei(en) Thumbnail(s)
   

Sonstige .vi  Projekt24092007.vi (Größe: 59,8 KB / Downloads: 208)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
24.09.2007, 14:36
Beitrag #5

monoceros84 Offline
LVF-Stammgast
***


Beiträge: 445
Registriert seit: Oct 2006

2011
2006
EN


Deutschland
Programm wird langsamer
Genau so habe ich das gemeintSmile

Als nächsten Schritt kannst du mal die DAQ-Zugriffe in einem Task zusammenfassen. Ich weiß nicht genau, ob digitale und analoge Inputs zusammengefasst weden können (wahrscheinlich nicht), aber zumindest einen Task mit allen DIs und einen mit allen AIs. Die einzelnen Kanäle nach dem "Task erstellen" mit "Kanäle hinzufügen" einfügen. Das VI kann mehrmals nacheinander ausgeführt werden, es hängt immer einen weiteren Kanal an den Task an. Das alles noch VOR der Schleife.

Dann benötigst du nicht mehr zig "DAQ Read", sondern nur noch ein oder zwei (AI und DI). Diese geben dann jeweils Arrays von Werten aus.

Damit solltest du das ganze auch nochmal beschleunigen können.

Du musst aber wissen, dass du dich nicht 100%ig darauf verlassen kannst, dass die Minute immer eingehalten wird. Wenn dein PC-Prozessor ausgelastet ist (z.B. indem jemand Excel startetWink), dann kann der Rechner das VI nicht mehr so schnell ausführen und es kommt zu Verzögerungen. Wenn du das ganze wirklich genau getimet benötigst, kommst du wohl um eine Realtime-Anwendung nicht herum...

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
24.09.2007, 15:55 (Dieser Beitrag wurde zuletzt bearbeitet: 24.09.2007 16:04 von tzy2001.)
Beitrag #6

tzy2001 Offline
LVF-Grünschnabel
*


Beiträge: 37
Registriert seit: May 2007

8.2
2007
kA

88214
Deutschland
Programm wird langsamer
' schrieb:Genau so habe ich das gemeintSmile

Als nächsten Schritt kannst du mal die DAQ-Zugriffe in einem Task zusammenfassen. Ich weiß nicht genau, ob digitale und analoge Inputs zusammengefasst weden können (wahrscheinlich nicht), aber zumindest einen Task mit allen DIs und einen mit allen AIs. Die einzelnen Kanäle nach dem "Task erstellen" mit "Kanäle hinzufügen" einfügen. Das VI kann mehrmals nacheinander ausgeführt werden, es hängt immer einen weiteren Kanal an den Task an. Das alles noch VOR der Schleife.

Dann benötigst du nicht mehr zig "DAQ Read", sondern nur noch ein oder zwei (AI und DI). Diese geben dann jeweils Arrays von Werten aus.

Damit solltest du das ganze auch nochmal beschleunigen können.

Du musst aber wissen, dass du dich nicht 100%ig darauf verlassen kannst, dass die Minute immer eingehalten wird. Wenn dein PC-Prozessor ausgelastet ist (z.B. indem jemand Excel startetWink), dann kann der Rechner das VI nicht mehr so schnell ausführen und es kommt zu Verzögerungen. Wenn du das ganze wirklich genau getimet benötigst, kommst du wohl um eine Realtime-Anwendung nicht herum...


Tut mir leid, aber das verstehe ich nicht .

Es ist so, das jeder DAQ-Read ein Signal, auf eine Boole-LED geben müssen, damit der Zustand, der extern ist auch auf dem Bildschirm erkennbar ist. D.h. leuchtet extern die Rote LED dann soll auf dem Desktop ebenfalls die Rote Boole-LED leuchten. Wie kann man hier die Tasks verbinden, wenn ich diese Funktion haben möchte??

Ich sage nicht das es nicht geht, ich habe es einfach nur nicht kapiert :-).

Aber ehrlich gesagt, hätte ich es auch so nicht verstanden :-).

Es ist schwierig da mitzukommen, wenn man in Sachen programmieren erst vor 2 Wochen entjungfert wurde :-).

Mfg
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
25.09.2007, 08:02
Beitrag #7

monoceros84 Offline
LVF-Stammgast
***


Beiträge: 445
Registriert seit: Oct 2006

2011
2006
EN


Deutschland
Programm wird langsamer
Hi

Sorry, ich hätte das wahrscheinlich etwas genauer erklären sollen. Hatte nur so kurz vor Feierabend gehofft, du verstehst, was ich meineSmile

Ein wirklich minimales Beispiel siehst du im Anhang. Ich habe allerdings keine Namen für physikalische Kanäle vergeben können, weil ich hier kein DAQ-System habe. Also bei den leeren Felder noch deine Kanelnnamen zufügen. Außerdem empfiehlt es sich, z.B. Min und Max der messung anzugeben. Aber das war ja jetzt nicht Gegenstand der Frage.
Wichtig ist, wenn du mehrere Kanäle hinzufügst, dass du bei DAQmx-Read auch "Multiple Channels" auswählst.

Das ist hier also ein Beispiel für AI. Für DI machst du das im Prinzip genauso. Mit der Funktion "Index Array" spaltest du das Feld mit den Messwerten auf, dann hast du genauso wieder den Zugriff auf die einzelnen "LEDs".

Ich hoffe, jetzt wird deutlicher, was ich meine...

   

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
26.09.2007, 08:35
Beitrag #8

rolfk Offline
LVF-Guru
*****


Beiträge: 2.305
Registriert seit: Jun 2007

alle seit 6.0
1992
EN

2901GG
Niederlande
Programm wird langsamer
' schrieb:Ich habe das Programm verändert, so wie Du es mir gesagt hast (Ich hoffe das ich Dich richtig verstanden habe). Es ist besser geworden, aber es läuft nicht in 1min. Jetzt verliere ich nur noch 4sec pro Minute.

Wenn ich jetzt mehr hinnein mache, dann wird es besitmmt wieder langsamer??

Nein das ist nicht gesagt!

Die Wait Until Multiple Milliseconds Funktion basiert die interne Zeitmessung auf dem Timertick. Dieser wird intern im Computer von der Taktfrequenz abgeleitet und ist nur ungefähr korrekt im Hinblick auf unsere normale Zeitmessung. Auch kann die Taktfrequenz leicht schwanken abhängig von der Temperatur. Der PC Timertick ist übrigens notorisch dafür dass er nicht ganz so genau ist wie das manche Leute gerne haben möchten und Schwankungen von +-1% zwischen mehreren PCs sind absolut keine Seltenheit.

Wenn Du eine wirklich korrekte Timed Datenerfassung machen willst wirst Du neben dem Zusammenfassen der Kanäle in einen Task auch noch die Verwendung von Timed Buffered Data Acquisition lernen müssen. Dann wird der Takt auf der Datenerfassungskarte generiert die einen wesentlich genaueren Taktgeber besitzt der voll in Hardware implementiert ist und nicht durch CPU Interrupts aufgehalten werden kann.

Rolf Kalbermatter

Rolf Kalbermatter
Technische Universität Delft, Dienst Elektronik und Mechanik
https://blog.kalbermatter.nl
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
27.09.2007, 12:34
Beitrag #9

tzy2001 Offline
LVF-Grünschnabel
*


Beiträge: 37
Registriert seit: May 2007

8.2
2007
kA

88214
Deutschland
Programm wird langsamer
' schrieb:Hi

Sorry, ich hätte das wahrscheinlich etwas genauer erklären sollen. Hatte nur so kurz vor Feierabend gehofft, du verstehst, was ich meineSmile

Ein wirklich minimales Beispiel siehst du im Anhang. Ich habe allerdings keine Namen für physikalische Kanäle vergeben können, weil ich hier kein DAQ-System habe. Also bei den leeren Felder noch deine Kanelnnamen zufügen. Außerdem empfiehlt es sich, z.B. Min und Max der messung anzugeben. Aber das war ja jetzt nicht Gegenstand der Frage.
Wichtig ist, wenn du mehrere Kanäle hinzufügst, dass du bei DAQmx-Read auch "Multiple Channels" auswählst.

Das ist hier also ein Beispiel für AI. Für DI machst du das im Prinzip genauso. Mit der Funktion "Index Array" spaltest du das Feld mit den Messwerten auf, dann hast du genauso wieder den Zugriff auf die einzelnen "LEDs".

Ich hoffe, jetzt wird deutlicher, was ich meine...

[attachment=35682:DAQ.png]

Vielen Dank für Deine freundliche Hilfe. Ich habe die DAQvi zusammengefügt (siehe Bild).

Leider läuft das Programm immer noch langsam. Wenn man die Konstante an der "Wait Until Next ms Multiple"vi auf 100 stellt, dann zählt es genau gleich langsam weiter, als wenn die Konstante auf 1000 gestellt ist.

Es ist aber trotzdem besser geworden. Ich hatte damals das Problem, als ich noch alles in der Schleife hatte, das die Laufzeit in wirklichkeit 1min und 30 sec und in LabVIEW 1min betrug. Jetzt ist es in wirklichkeit nur noch 1min und 5sec.

Es hat sich was verbessert. Ich versuche es jetzt mit dem ElapsedVI. Vielleicht wird es damit besser.

Aber trotzdem, Deine Lösungen/Hilfen waren super.

Mfg


Angehängte Datei(en) Thumbnail(s)
   
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
27.09.2007, 12:36
Beitrag #10

tzy2001 Offline
LVF-Grünschnabel
*


Beiträge: 37
Registriert seit: May 2007

8.2
2007
kA

88214
Deutschland
Programm wird langsamer
' schrieb:Nein das ist nicht gesagt!

Die Wait Until Multiple Milliseconds Funktion basiert die interne Zeitmessung auf dem Timertick. Dieser wird intern im Computer von der Taktfrequenz abgeleitet und ist nur ungefähr korrekt im Hinblick auf unsere normale Zeitmessung. Auch kann die Taktfrequenz leicht schwanken abhängig von der Temperatur. Der PC Timertick ist übrigens notorisch dafür dass er nicht ganz so genau ist wie das manche Leute gerne haben möchten und Schwankungen von +-1% zwischen mehreren PCs sind absolut keine Seltenheit.

Wenn Du eine wirklich korrekte Timed Datenerfassung machen willst wirst Du neben dem Zusammenfassen der Kanäle in einen Task auch noch die Verwendung von Timed Buffered Data Acquisition lernen müssen. Dann wird der Takt auf der Datenerfassungskarte generiert die einen wesentlich genaueren Taktgeber besitzt der voll in Hardware implementiert ist und nicht durch CPU Interrupts aufgehalten werden kann.

Rolf Kalbermatter

Vielen Dank für Deine Hilfe

Mfg
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
  Extrem langsamer Variablen Zugriff über Referenzen hajos118 12 5.587 01.08.2022 17:20
Letzter Beitrag: BNT
  Programm wird Langsam Kernphysik_Jürgen 11 8.315 29.11.2016 14:33
Letzter Beitrag: GerdW
  Langsamer Anstieg sonne2013 5 5.541 21.09.2012 17:39
Letzter Beitrag: Lucki
  Programmbearbeitung durch globale Variablen erheblich langsamer? Ativon 4 6.817 07.06.2012 11:06
Letzter Beitrag: rolfk
  VI wird nicht beendet wenn Event case schleife benutzt wird frischling 15 13.355 03.05.2012 08:24
Letzter Beitrag: GerdW
  Problem mit langsamer werdender Software KD 7 6.581 18.08.2011 08:55
Letzter Beitrag: KD

Gehe zu: