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 

SubVI parallel ausführen mit Rückgabewert



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!

19.03.2015, 09:16
Beitrag #1

skywalker Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 154
Registriert seit: Jan 2007

2020
2007
DE

99310
Deutschland
SubVI parallel ausführen mit Rückgabewert
Hallo zusammen,

ich habe ein Main, welches ein SubVI über Referenz aufruft (Eingabeparameter ebenfalls als Referenz). Dadurch wird dieses parallel ausgeführt.

Funktionsbeschreibung:
Das Main beinhaltet ein Rundinstrument mit zwei Zeigern, welches die Ist- (blau) und Soll-Geschwindigkeit (rot) anzeigt.
Beim Drücken des Buttons "Bremsen" wird das SubVI v_Soll.vi aufgerufen und der zweite Zeiger (rot, Soll-Geschwindigkeit) läuft im Hintergrund eine Bremskurve ab.
Parallel besteht die Möglichkeit, die Ist-Geschwindigkeit mit + oder - zu verändern. Nach Ablauf der Bremskurve soll allerdings die Soll-Geschwindigkeit genau auf dem
Wert stehen bleiben, der als letztes vom SubVI ausgegeben wurde.

Dies bekomme ich nicht hin. Bei mir "hüpft" die Soll-Geschwindigkeit immer wieder auf 0.

Anbei die zwei VIs.
14.0 .vi  Main_v_Soll.vi (Größe: 40,78 KB / Downloads: 204)

14.0 .vi  v_Soll.vi (Größe: 43,64 KB / Downloads: 215)


Ich hoffe jemand versteht mein Problem. Undecided

Gruß
Stefan
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
19.03.2015, 10:48 (Dieser Beitrag wurde zuletzt bearbeitet: 19.03.2015 10:50 von GerdW.)
Beitrag #2

GerdW Offline
______________
LVF-Team

Beiträge: 17.467
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: SubVI parallel ausführen mit Rückgabewert
Hallo Skywalker,

Zitat:Nach Ablauf der Bremskurve soll allerdings die Soll-Geschwindigkeit genau auf dem Wert stehen bleiben, der als letztes vom SubVI ausgegeben wurde.
Die rote Nadel bleibt doch genau da stehen, wo sie vom subVI hingestellt wurde: bei einem Wert von ~95…

Zitat:Ich hoffe jemand versteht mein Problem.
Nicht wirklich…
Wieso muss das mit einem subVI erledigt werden, welches per VI-Server aufgerufen wird?
Wieso über Referenzen die Anzeigen beeinflussen?

Ich kann mir auch nicht vorstellen, warum zum Bremsen die Soll-Geschwindigkeit auf 165 erhöht werden muss!?

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
19.03.2015, 16:33
Beitrag #3

skywalker Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 154
Registriert seit: Jan 2007

2020
2007
DE

99310
Deutschland
RE: SubVI parallel ausführen mit Rückgabewert
Hallo,

die rote Nadel bleibt da stehen, aber sobald ich wieder die Ist-Geschwindigkeit verändere, springt die rote Nadel auf 0. Genau das soll nicht passieren, sondern in diesem Fall auf 95 bleiben.

Das gezeigt Programmbeispiel repräsentiert nur einen Teil des gesamten Programms. Die Bremskurve für die Soll-Geschwindigkeit (rot) beginnt nun Mal bei 165 km/h und läuft die definierte lineare Bremskurve bis 95 km/h ab.
Wie kann ich denn die Anzeigen ohne Referenzen von SubVI aus beeinflussen?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
19.03.2015, 16:42
Beitrag #4

GerdW Offline
______________
LVF-Team

Beiträge: 17.467
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: SubVI parallel ausführen mit Rückgabewert
Hallo skywalker,

THINK DATAFLOW!
Im Erhöhen/Verringern-State greifst du auf ein Schieberegister zu- im Bremsen-State dagegen nicht.

Wie soll das Schieberegister mitbekommen, dass du irgendwelche Werte geändert hast? Also bleibt dieser Sollwert dort immer Null…

Zitat:Wie kann ich denn die Anzeigen ohne Referenzen von SubVI aus beeinflussen?
Mit einer sauberen Statemachine.
Mit einem subVI, welches Eingangsparameter hat und Werte ausgibt (oder gleich diesen Cluster bearbeitet).

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
20.03.2015, 07:30
Beitrag #5

skywalker Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 154
Registriert seit: Jan 2007

2020
2007
DE

99310
Deutschland
RE: SubVI parallel ausführen mit Rückgabewert
Guten morgen,

ich stehe irgendwie auf dem Schlauch.

Mir ist bewusst, dass ich im Verringern-/Erhöhen-State ein Schieberegister nutze und im Bremsen-State nicht.
Aber wie kann ich von SubVI sagen, dass die Soll-Geschwindigkeit in das Schieberegister des Main geschrieben werden soll?

Wie gesagt, das gepostete Beispiel repräsentiert nur einen Ausschnitt des Gesamtprogrammes. Im "richtigen" Programm nutze ich die Statemachine mit Typedefs.

@GerdW: Könntest du bitte erklären, was das bedeutet?
Zitat:Mit einem subVI, welches Eingangsparameter hat und Werte ausgibt (oder gleich diesen Cluster bearbeitet).

Stefan
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
20.03.2015, 08:10
Beitrag #6

GerdW Offline
______________
LVF-Team

Beiträge: 17.467
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: SubVI parallel ausführen mit Rückgabewert
Hallo skywalker,

Zitat:Aber wie kann ich von SubVI sagen, dass die Soll-Geschwindigkeit in das Schieberegister des Main geschrieben werden soll?
Direkt vom subVI aus kannst du nicht auf das Schieberegister zugreifen.

Aber du kannst ja dein MainVI entsprechend anpassen - z.B. mit Events statt mit Referenzen arbeiten und neue Werte per Event (ValueSignalling oder UserEvent) vom subVI ins MainVI schicken. Dann kann das MainVI dafür sorgen, dass der neue Wert an der korrekten Stelle gespeichert wird…

Zitat:Könntest du bitte erklären, was das bedeutet?
Ich meine damit ein handelsübliches subVI mit Ein- und Ausgängen, welches direkt im MainVI eingebunden wird, statt eines Aufrufs über den VIServer…

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
20.03.2015, 08:53
Beitrag #7

skywalker Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 154
Registriert seit: Jan 2007

2020
2007
DE

99310
Deutschland
RE: SubVI parallel ausführen mit Rückgabewert
Ich kann vom SubVI Events ins Main schicken? Das wusste ich nicht. Wie geht das?

Im Main greife ich dann mit der Eventstruktur (seperate while-Schleife) die Wertänderung des Drehknopfes (Geschwindigkeit) ab und schicke diese in diese in den entsprechenden Case.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
20.03.2015, 09:25
Beitrag #8

GerdW Offline
______________
LVF-Team

Beiträge: 17.467
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: SubVI parallel ausführen mit Rückgabewert
Hallo skywalker,

Zitat:Wie geht das?
Ich wiederhole aus meinem vorigen Beitrag:
Zitat:per Event (ValueSignalling oder UserEvent)

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
20.03.2015, 14:17
Beitrag #9

skywalker Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 154
Registriert seit: Jan 2007

2020
2007
DE

99310
Deutschland
RE: SubVI parallel ausführen mit Rückgabewert
Hallo,

ich habe es jetzt mit einer Queue realisiert und es scheint zu klappen.


14.0 .vi  v_Soll2.vi (Größe: 42,96 KB / Downloads: 206)

14.0 .vi  Main_v_Soll2.vi (Größe: 36,57 KB / Downloads: 260)


Allerdings rufe ich das SubVI weiterhin über VIServer auf. Anders sehe ich keine Möglichkeit, die Bremskurve parallel im Hintergrund laufen zu lassen und gleichzeitig die Ist-Geschwindigkeit im Main zu ändern.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
20.03.2015, 14:21
Beitrag #10

GerdW Offline
______________
LVF-Team

Beiträge: 17.467
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: SubVI parallel ausführen mit Rückgabewert
Hallo skywalker,

Zitat:Anders sehe ich keine Möglichkeit, die Bremskurve parallel im Hintergrund laufen zu lassen und gleichzeitig die Ist-Geschwindigkeit im Main zu ändern.
Pack die "Bremskurve" in eine parallel laufende Schleife mit einer kleinen Statemachine (Idle, Bremsen, Quit)…

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
  Mehrere Schleifen parallel ausführen! houss 7 13.006 06.08.2013 14:41
Letzter Beitrag: houss
  Aufruf einer DLL parallel zu subVI tiwo 2 4.202 16.08.2012 15:22
Letzter Beitrag: tiwo
  Parallel Abläufe trotz SubVI mit serieller Kommunikation zur HW anja210 3 4.260 01.08.2012 21:43
Letzter Beitrag: Lucki
  Hauptprogramm weiter ausführen bei SubVI-Aufruf haiopei 16 22.137 14.03.2012 17:21
Letzter Beitrag: phylin
  SubVI Funktionen verwenden, ohne SubVI Frontpanel (AVT Kamera) Allyoucaneat 3 8.839 25.08.2011 15:18
Letzter Beitrag: GerdW
  SubVi Parallel laufen und schliessen Dom0503 8 9.111 01.08.2011 14:24
Letzter Beitrag: Dom0503

Gehe zu: