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 weiter strukturieren



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!

09.07.2015, 08:25 (Dieser Beitrag wurde zuletzt bearbeitet: 09.07.2015 08:26 von gfzk.)
Beitrag #1

gfzk Offline
LVF-Grünschnabel
*


Beiträge: 47
Registriert seit: Sep 2009

2012
2007
DE_EN

76344
Deutschland
Programm weiter strukturieren
Hallo,

das Blockdiagramm meines Hauptprogramms wächst immer weiter an. Ich habe mindestens 4 verschiedene Task die parallel laufen und es könnten noch welche hinzukommen. Jetzt Frage ich mich, ob das so wie ich die Tasks in das Hauptprogramm eingebettet habe überhaupt sinnvoll ist aus technischer Sicht wie auch aus Gründen der Übersichtlichkeit (Kosmetik).

Wie geht man das bei grösseren Projekten an?

Viele Grüße
Georg


Angehängte Datei(en) Thumbnail(s)
   
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
09.07.2015, 08:27 (Dieser Beitrag wurde zuletzt bearbeitet: 09.07.2015 08:30 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: Programm weiter strukturieren
(09.07.2015 08:25 )gfzk schrieb:  Wie geht man das bei grösseren Projekten an?
Über SubVIs!

Gruß, Jens

EDIT: Vorsicht vor zu vielen parallelen Timed-Loops! Nicht gerade "best practice".

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
09.07.2015, 08:30
Beitrag #3

GerdW Offline
______________
LVF-Team

Beiträge: 17.469
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Programm weiter strukturieren
Hallo Georg,

Zitat:Wie geht man das bei grösseren Projekten an?
- subVIs
- Verzicht auf TWLs: sowas löst man über das DAQmx-Timing!
- Verzicht auf TWLs: VISA-Kommunikation über die serielle Schnittstelle ist selten so genau "getimet"…
- Verzicht auf lokale Variablen (wie z.B. "Stopp")

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
09.07.2015, 08:30
Beitrag #4

gfzk Offline
LVF-Grünschnabel
*


Beiträge: 47
Registriert seit: Sep 2009

2012
2007
DE_EN

76344
Deutschland
RE: Programm weiter strukturieren
Wow, so schnell hatte ich noch nie eine Antwort.

Also die ganze Schleife einfach in ein SubVI? Aber wie ist das dann mit den Frontpanel Elementen, die werden doch dann nicht aktualisiert bis das SubVI beendet ist?

Gruß, Georg
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
10.07.2015, 10:35
Beitrag #5

gfzk Offline
LVF-Grünschnabel
*


Beiträge: 47
Registriert seit: Sep 2009

2012
2007
DE_EN

76344
Deutschland
RE: Programm weiter strukturieren
Danke für die Rückmeldungen, ein paar Fragen stehen aber noch im Raum:


Zitat:EDIT: Vorsicht vor zu vielen parallelen Timed-Loops! Nicht gerade "best practice".
Welche Bewandtnis hat es damit auf sich? Soll damit vermieden werden, dass sich die Schleifen gegenseitig ins Gehege kommen?


Zitat:- Verzicht auf TWLs: sowas löst man über das DAQmx-Timing!
Einverstanden, das geht auch anders - und jetzt weiß ich auch wie.


Zitat:- Verzicht auf TWLs: VISA-Kommunikation über die serielle Schnittstelle ist selten so genau "getimet"…
Da ich an dieser Stelle pollen möchte bzw. muss fiele mir nur ein die Warten-Funktion zu verwenden anstatt die Timed-While-Loop.


Zitat:- Verzicht auf lokale Variablen (wie z.B. "Stopp")
Wäre hier eine globale Variable oder eine Umgebungsvariable vorzuziehen?

Und last but not least das Thema SubVIs:
Wird die Schleife, inklusive dem Teil vor dem Eintritt und nach dem Austritt, in ein SubVi umgewandelt? Falls die Antwort Ja lautet, wie stelle ich sicher, dass die Frontpanel Elemente kontinuierlich upgedatet werden?
Falls die Antwort Nein lauten sollte, hieße dass, dass jeweils ein SubVI für den Teil vor den Schleifeneintritt, dem Teil in der Schleife und dem Teil nach der Schleife zu erstellen ist?

Viele Grüße
Georg
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
10.07.2015, 10:44
Beitrag #6

GerdW Offline
______________
LVF-Team

Beiträge: 17.469
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Programm weiter strukturieren
Hallo gfzk,

Zitat:Da ich an dieser Stelle pollen möchte bzw. muss fiele mir nur ein die Warten-Funktion zu verwenden anstatt die Timed-While-Loop.
VISA arbeitet mit internen Buffern, du musst keine Einzelbytes pollen. Stattdessen kannst entweder ganze Messages abfragen (bei aktivem TermChar) oder mit dem TimeOut des VISARead die Schleife bremsen…

Zitat:Wäre hier eine globale Variable oder eine Umgebungsvariable vorzuziehen?
Eine FGV. Oder ein Notifier…

Zitat:Wird die Schleife, inklusive dem Teil vor dem Eintritt und nach dem Austritt, in ein SubVi umgewandelt?
Ja.

Zitat:Falls die Antwort Ja lautet, wie stelle ich sicher, dass die Frontpanel Elemente kontinuierlich upgedatet werden?
Werden sie doch im subVI weiterhin Big Grin
Falls du die Werte auch im HauptVI sehen willst, empfehle ich Queues.

Zitat:Falls die Antwort Nein lauten sollte, hieße dass, dass jeweils ein SubVI für den Teil vor den Schleifeneintritt, dem Teil in der Schleife und dem Teil nach der Schleife zu erstellen ist?
Auch das ist möglich, je nachdem, wie weit man seinen Code modularisieren möchte. Bei "größeren"/aufwändigeren Gerätetreibern bietet es sich an, auch die De-/Initialisierung in weiteren subVIs zu verstecken…

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
10.07.2015, 11:06
Beitrag #7

jg Offline
CLA & CLED
LVF-Team

Beiträge: 15.864
Registriert seit: Jun 2005

20xx / 8.x
1999
EN

Franken...
Deutschland
RE: Programm weiter strukturieren
Eine Timed-Loop ist ein "extrem" harter Eingriff in die Tasksteuerung innerhalb von LabVIEW. Bei normaler Programmierung sorgt LabVIEW dafür, dass jeder Prozess (also z.B. SubVIs o.ä.) irgendwann ein wenig Prozessor-Zeit zugeteilt bekommt (Round Robin). Eine Timed-Loop verhält sich da anders. Nach der eingestellten Loop-Time startet sie gnadenlos von vorne. Hierzu ein Extrem-Beispiel: Nehmen wir an, der Code innerhalb der Timed-Loop braucht grundsätzlich länger zur Abarbeitung als die gewünschte Loop-Time und der Code läuft auf einem 1-Prozessor-System. Was passiert? Genau, die CPU wird zur 100% durch die Timed-Loop belegt, andere Threads kommen GAR nicht mehr zur Abarbeitung. Deshalb Vorsicht bei exzessiver Verwendung von Timed-Loops.

NI empfiehlt u.a.
- üblicherweise nur 1 Timed-Loop pro CPU-Core.
- Abstufung der Prioritäten bei mehreren Timed-Loops.
etc. pp.

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
28.07.2015, 15:10
Beitrag #8

Moes Offline
LVF-Grünschnabel
*


Beiträge: 23
Registriert seit: Jun 2015

13.0f2
2015
DE

30629
Deutschland
RE: Programm weiter strukturieren
Frage zur Programmstruktur des Threadsteller:

Darf man mehr als eine While-Schleife überhaupt verwenden?

Meine eigene Erfahrung auf corei3 (2 Kerne) Laptop ist das es bereits zwei While-Schleifen ein echtes Problem sind wenn man eingänge Sampled Angel_not

Chassi: cDAQ 9178 mit
AnalogIn: 9205
AnaloOut: 9264
DigitalIn: 9421
DigitalOut: 9472
CAN "In": 9862
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
28.07.2015, 15:22
Beitrag #9

GerdW Offline
______________
LVF-Team

Beiträge: 17.469
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Programm weiter strukturieren
Hallo Moes,

Zitat:Darf man mehr als eine While-Schleife überhaupt verwenden?
Ja.

Zitat:Meine eigene Erfahrung auf corei3 (2 Kerne) Laptop ist das es bereits zwei While-Schleifen ein echtes Problem sind wenn man eingänge Sampled
Das dürfte eher an deiner Programmierung liegen und nicht am Core i3… Big Grin

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
  Wie Programme in LabView Strukturieren? Moes 4 5.128 28.07.2015 15:28
Letzter Beitrag: GerdW
Question weiter bei konstantem Wert olmethn 9 5.685 10.10.2012 15:52
Letzter Beitrag: BNT
  Hauptprogramm weiter ausführen bei SubVI-Aufruf haiopei 16 22.216 14.03.2012 17:21
Letzter Beitrag: phylin
  whileschleife - pause & weiter?? crazypet 1 4.770 13.08.2008 10:36
Letzter Beitrag: Y-P
  Textausgabe und das programm soll weiter laufen D3nnis.C 3 4.950 08.01.2008 09:27
Letzter Beitrag: D3nnis.C
  Dialog öffnen und Programm weiter laufenlassen manuel001 3 3.922 08.10.2007 13:48
Letzter Beitrag: manuel001

Gehe zu: