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 

Ergebnis Rechnung als "Controller" verwenden



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!

17.03.2013, 18:52 (Dieser Beitrag wurde zuletzt bearbeitet: 18.03.2013 09:10 von Y-P.)
Beitrag #1

TenaciousB Offline
LVF-Grünschnabel
*


Beiträge: 20
Registriert seit: Dec 2010

8.5
-
de


Deutschland
Photo Ergebnis Rechnung als "Controller" verwenden
Hallo LabView-Forum,
bin immer noch blutiger Anfänger, deshalb verzeiht mir folgende Frage, sollte Sie für manch erfahrenen Benutzer doch etwas komisch erscheinen…

Das Problem ist folgendes:

Ich habe mir einen Schrittmotor (mit Endstufe) von Firma Phidgets besorgt.
Diesen möchte ich nun per Knopfdruck nach links und rechts drehen lassen. Da die Schrittmotoren nur verschiedene Positionen (TargetPosition) anfahren können, hab ich mir dies dann so vorgestellt:
Ist ein Schalter auf „True“ soll der Motor die Position z.B. +50000 anfahren. Ist der Schalter auf „False“ soll er die Position -50000 anfahren.

Das Mini-Programm per Knopfdruck +50000 oder -50000 in einer Anzeige erscheinen zu lassen, habe ich schon geschrieben. (PositionTF
8.5 .vi  PositionTF.vi (Größe: 6,44 KB / Downloads: 173)
).
Wenn ich dieses in die Schrittmotorsteuerung einpflege, habe ich nun aber das Problem, dass die Schrittmotorsteuerung nur reagiert, wenn die Anzeige (Ergebnis) als „Control“ und nicht als „Indicator“ verwendet wird.


Meine konkrete Frage:
Gibt es eine Möglichkeit das Ergebnis einer Rechnung, welches ja in einer Anzeige als „Indicator“ dargestellt wird, direkt an ein Kontrollfeld weiterzuleiten?
Oder nochmals allgemeiner gefragt: In einem Kontrollfeld soll per Kopfdruck einmal +50000 und einmal -50000 stehen.
Wie könnte man dies noch realisieren?
Sollte ich mich mit meiner Idee total auf dem Holzweg befinden, bin ich für jegliche Vorschläge offen. Smile



Vielen Dank
Beste Grüße


Lv85_img
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
18.03.2013, 06:45
Beitrag #2

NWOmason Offline
Simultator
*****


Beiträge: 1.078
Registriert seit: Dec 2010

2012.SP1
2008
EN

93047
Deutschland
RE: Ergebnis Rechnung als "Controler" verwenden
(17.03.2013 18:52 )TenaciousB schrieb:  Gibt es eine Möglichkeit das Ergebnis einer Rechnung, welches ja in einer Anzeige als „Indicator“ dargestellt wird, direkt an ein Kontrollfeld weiterzuleiten?
Oder nochmals allgemeiner gefragt: In einem Kontrollfeld soll per Kopfdruck einmal +50000 und einmal -50000 stehen.
Wie könnte man dies noch realisieren?

Im einfachsten Fall erstellst du einfache eine lokale Variabele (Rechtsklick aufs Controll»Create»Lokal Variable). Dann kannst du programmatisch Werte in Controls schreiben:

   


Alternativen dazu gibts viele (Aufruf der Schrittmotorensteuerung als SubVI + Übergabe des Wertes, usw.) und kommt dann individuell auf die Steuerung des Schrittmotors an und was noch alles zum Programmumfang dazugehört.

Beste Grüße,
NWO

9 von 10 Stimmen in meinem Kopf sagen: Ich bin nicht verrückt,
die andere summt die Melodie von Tetris
.

NI schrieb:To use the abort button is like using a tree to stop a car!

(20.01.2012 11:02 )NWOmason schrieb:  Getting Started with NI LabVIEW Student Training
http://zone.ni.com/devzone/cda/tut/p/id/7466

Introduction to NI LabVIEW - Learn LabVIEW Basics
http://www.ni.com/gettingstarted/labviewbasics/

Top 5 der Empfehlungen für LabVIEW-Einsteiger
http://www.ni.com/newsletter/51735/de/
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
18.03.2013, 09:02
Beitrag #3

GerdW Offline
______________
LVF-Team

Beiträge: 17.398
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Ergebnis Rechnung als "Controler" verwenden
Hallo Tenacious,

Zitat:Wenn ich dieses in die Schrittmotorsteuerung einpflege, habe ich nun aber das Problem, dass die Schrittmotorsteuerung nur reagiert, wenn die Anzeige (Ergebnis) als „Control“ und nicht als „Indicator“ verwendet wird.
Könnte es sein, dass die "Schrittmotorsteuerung" - die du uns, obwohl dort das Problem auftritt, nicht zeigst - eine Eventstruktur verwendet?
Dann wird dir der Tipp von NWO auch nicht viel weiterhelfen! Dann bitte eine "Value signalling"-Property verwenden...

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

TenaciousB Offline
LVF-Grünschnabel
*


Beiträge: 20
Registriert seit: Dec 2010

8.5
-
de


Deutschland
RE: Ergebnis Rechnung als "Controller" verwenden
Hallo,
ich bedanke mich für eure Antworten!

NWO, ich habe es wie von dir vorgeschlagen versucht. Doch leider funktioniert es nicht.
Aber wahrscheinlich ist es naheliegend, dass meine Herangehensweise falsch ist, da wird GerdW schon recht haben. Wink

Ich wollte es aber auf diese Weise versuchen, da es mir so am einfachsten erschien mein Ziel zu erreichen.
Die Sache ist nämlich die:
Ich habe das Beispielprogramm zur Schrittmotorsteuerung von Phidgets heruntergeladen und nehme dies nun als Grundlage, um es nach meinen Wünschen zu verändern.
Ändern ist einfacher als neu aufbauen.
Anstelle meiner Anweisung (True +50000; False -50000) war vorhin nämlich ein Schieberegler. Meine Idee: Ersetzte (ganz einfach Wink ) das schieben mit der Maus, um eine bestimmte Position zu erreichen mit einem Schalter, der auf Knopfdruck einmal +50000 und einmal -50000 einsetzt.

Ich dachte so kann ich dies lösen und deshalb hab ich auch nicht gleich die ganze Schrittmotorsteuerung hochgeladen… (Schrittmotorsteuerung:
8.5 .vi  Schrittmotorsteuerung_N4.vi (Größe: 63,69 KB / Downloads: 127)
)

Nun möchte ich aber doch noch einen Schritt zurückgehen und erklären was ich eigentlich im Sinn habe:
Bei der Schrittmotorendstufe gibt es auch 4 Eingänge (True; False). Schließt man daran Mikroswitch an, kann man diese z.B. als Endschalter verwenden.

Meine Intention ist es, den Motor zwischen den zwei Endschaltern hin und her laufen zu lassen.
Bedeutet:
Ist ein Endschalter auf True so setzt er ein FlipFlop auf True, ist dieser Wert True so läuft der Motor auf z.B. +50000. Läuft der Motor nun auf den unteren Endschalter so setzt dieses Signal, den FlipFlop auf False. Der Motor muss nun zu TargetPosition -50000. Die 50000 werden natürlich nie erreicht, da die Endschalter physisch zwischen den Werten liegen. Der Motor läuft also undendlich lang zwischen zwei Endschaltern hin und her. Gestoppt wird der Motor durch klatschen. Ein Programm dafür habe ich schon zusammengebaut. (Es funktioniert über Aufnahme und Pegelveränderung).



So jetzt zurück zum Problem:
Ja stimmt die Schrittmotorsteuerung arbeitet mit Events.
Value Signaling Property war vom Schieberegler zuvor schon eingefügt.     Nur funktioniert dies nun nicht mehr wie gewünscht. Die +50000 und -50000 werden zwar eingesetzt, jedoch reagiert der Motor nur, wenn ich den Kontroller verändere.

Was habe ich falsch gemacht?


Beste Grüße
TenaciousB


Angehängte Datei(en)
0.0 .rar  Libraries.rar (Größe: 264,51 KB / Downloads: 124)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
18.03.2013, 22:37 (Dieser Beitrag wurde zuletzt bearbeitet: 18.03.2013 22:43 von GerdW.)
Beitrag #5

GerdW Offline
______________
LVF-Team

Beiträge: 17.398
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Ergebnis Rechnung als "Controller" verwenden
Hallo TenaciousB,

ja, die Steuerung arbeitet Event-basiert. Du musst also Events triggern - und das macht man mit der Property "Value (signalling)". Und eben diese sehe ich nirgends in deinem VI...

- Die Property "Value" erzeugt KEIN Event...
- Ein Schreiben in eine "Value signalling"-Property im INIT-Case (wie im Bild angedeutet) würde nur ein einmaliges Event erzeugen...
- Du musst natürlich auch deine Benutzereingaben mittels des Buttons in eine "Value signalling"-Property schreiben, wenn du Events auslösen willst...
- Momentan würde jede Iteration ein Event auslösen, sobald du die lokale Variable durch die genannte Property ersetzt. Das ist nicht der Weisheit letzter Schluss...
- Warum erstellst du nicht einen weiteren Eventcase, welcher durch deinen Button ausgelöst wird? Und in diesem dann das andere Event durch die genannte Property triggern?

Zitat:Value Signaling Property war vom Schieberegler zuvor schon eingefügt. ... Was habe ich falsch gemacht?
Dein Fehler ist in Leseproblemen begründet Big Grin
Ich kann im Bild jedenfalls keine "Value signalling"-Property entdecken (im VI auch nicht)...

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
19.03.2013, 21:52
Beitrag #6

TenaciousB Offline
LVF-Grünschnabel
*


Beiträge: 20
Registriert seit: Dec 2010

8.5
-
de


Deutschland
RE: Ergebnis Rechnung als "Controller" verwenden
Hallo GerdW,
also das mit meinem Leseproblem hab ich nun verstanden… „Value“ und „Value Signaling“ ist nicht das Selbe! Wink
Deinen Rat ein weiteres Eventcase ausgelöst durch meinen Taster oder eben nachher durch Input 0 und Input 1 in Kombination mit FlipFlop auszulösen, ist mir auch schon in den Sinn gekommen.
Jedoch erscheint mir der Weg bis dahin noch sehr, sehr steinig! Wink

Also wie du im Bild     siehst habe ich ein neues EventCase erzeugt. Dieses reagiert auf True und False von Schalter „Boolean“. Dies funktioniert auch soweit. (Ich drücke auf dem Taster und in der Anzeige Target Position erscheint einmal 50000 und einmal -50000). Jedoch funktioniert das mit dem Val(Sgnl) nicht richtig. Vielleicht habe ich es falsch erzeugt? Rechtsclick auf Indicator: „TargetPosition“ dann „Create“, dann „PropertyNode“, dann „Value Signaling“.

Vielleicht ist es an falscher Stelle… in der falschen Schleife?

Das „Value“-Feld, welches ich bei obigen Bild eingekreist habe, hat auch etwas mit dem Ganzen zu tun, da dessen Terminal der Indicator „TargetPosition“ ist. Das Terminal von „Target Position Val(Sgnl)“ ist auch der Indicator „TargetPosition“. Vielleicht doppelt belegt? Ist das, das Problem??

Versteht mich bitte nicht falsch, wenn ich gar zu blöd frage!! Ich geb mir wirklich Mühe. Das Buch „Handbuch für die Programmierung mit LabView“ habe ich mir schon seit längerem besorgt. Jedoch ist es schwierig die Zusammenhänge zu verstehen! Diese Schrittmotorensteuerung ist als Zweitprojekt in LabView doch etwas umfangreich.

Danke
schöne Grüße!


Angehängte Datei(en)
8.5 .vi  Schrittmotorsteuerung_N4.vi (Größe: 64,13 KB / Downloads: 114)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
21.03.2013, 09:26 (Dieser Beitrag wurde zuletzt bearbeitet: 21.03.2013 09:33 von GerdW.)
Beitrag #7

GerdW Offline
______________
LVF-Team

Beiträge: 17.398
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Ergebnis Rechnung als "Controller" verwenden
Hallo B,

Zitat:Also wie du im Bild siehst habe ich ein neues EventCase erzeugt. Dieses reagiert auf True und False von Schalter „Boolean“. Dies funktioniert auch soweit. (Ich drücke auf dem Taster und in der Anzeige Target Position erscheint einmal 50000 und einmal -50000). Jedoch funktioniert das mit dem Val(Sgnl) nicht richtig. Vielleicht habe ich es falsch erzeugt?
- Die PropertyNode hast du vollkommen richtig erzeugt, "falsch erzeugen" geht eigentlich auch nicht...
- Was funktioniert nicht richtig? Hast du Debugging gemacht? Bekommst du Fehlermeldungen?
- Nachdem du in diese Property geschrieben hast, sollte im nächsten Schleifendurchlauf das dazu passende Event ausgeführt werden. Passiert das bei dir? (Ich kann dein VI aufgrund der ganzen fehlenden subVIs nicht testen...)
EDIT: Wenn ich aus deinem VI alles rausschmeiße, was nicht mit dem Thema zu tun hat, wird nach jedem Boolean-Event auch ein "Target Position"-Event abgearbeitet...

Anmerkung:
- Wenn du in die Proeprty "Value (signalling)" schreibst, musst du nicht parallel nochmal in das Terminal schreiben. (Oder denkst du "doppelt hält besser"?)
- Wenn dein "Boolean"-Terminal ungenutzt rumliegt, kannst du es auch ins Event legen und dort abfragen (IMHO "sauberer" als "Neuer Wert" zu verwenden, insbesondere bei "Latched"-Schaltern...). Dies gilt auch für andere ungenutzte Terminals...

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

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: Ergebnis Rechnung als "Controller" verwenden
Sollte man da nicht mal den Titel nachträglich ändern? Ein "Controller" ist etwas ganz anderes als was hier gemeint ist. Also entweder in "Control" oder "Bedienelement" ändern?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
24.03.2013, 13:53 (Dieser Beitrag wurde zuletzt bearbeitet: 24.03.2013 13:59 von TenaciousB.)
Beitrag #9

TenaciousB Offline
LVF-Grünschnabel
*


Beiträge: 20
Registriert seit: Dec 2010

8.5
-
de


Deutschland
RE: Ergebnis Rechnung als "Controller" verwenden
Hallo GerdW,
soweit es mir möglich war, habe ich die Zeit in den letzten vergangenen Tagen damit verbracht, deine Vorschläge umzusetzen und mich generell mit LabView befasst.

Bin zum Thema FlipFlop einen großen Schritt weitergekommen !!! Smile
Das Flipflop als Unterprogramm eingebaut, reagiert nun auf die Inputs der Endstufe. Auf einem Ausgang des FlipFlops habe ich „Select“ angeschlossen. Bei „True“ gibt es „+ Constant“ weiter, bei False „- Constant“. Welcher Wert gerade ausgegeben wird, steht im Indicator „TargetPosition2“. Damit verbunden „Val(Signl)“ (richtig erzeugt Wink aus „TargetPosition2“)

„Ellipse 1“ im Bild.    
Wie du siehst befindet sich das Ganze sich in der While-Schleife.

Um doppeltes zu vermeiden, habe ich „Value“ Target Position von Bild „Schrittmotorsteuerung_N4“ gelöscht „Ellipse 2“

Damit die Schrittmotorsteuerung anspricht, habe ich nun ein neues „Event“ erzeugt, welches auf eine Wertänderung („+Constant“; „-Constant“) reagiert.
„Ellipse 3“ im Bild.    

Und siehe da es funktioniert!! Smile Der Motor reagiert auf die Endschalter und dreht in die entgegengesetzte Richtung sobald der Befehl kommt.
„Val(Signl)“ war also genau das was ich gebraucht habe! Danke Big Grin


Doch leider sind nun neue Probleme aufgetreten:
Während das Programm läuft kann ich keine Tasten oder Schieberegler mehr betätigen! Sad
Pei Programmaufruf fährt der Motor direkt auf den Wert einer der beiden Konstanten, obwohl der Motor gar nicht „engaged“ ist.

An was kann dies liegen?Huh


Hier nochmals das Programm:
8.5 .vi  Schrittmotorsteuerung_N7.vi (Größe: 64,57 KB / Downloads: 114)


... auch die RAR-Datei mit den ganzen Unterprogrammen...
0.0 .rar  SubVI_Library.rar (Größe: 270,26 KB / Downloads: 148)
So müsstest du alles öffnen können.. oder?



Auf jedem Fall, vielen Dank für die bis jetzt geleistete Hilfe!Shy


Hallo Lucky,
natürlich, kein Problem! Das wusste ich nicht.
Wahrscheinlich wäre auch ein Bezug auf „Schrittmotorsteuerung“ im Titel angebracht.

Wo kann man das ändern?

Blush
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
24.03.2013, 20:14
Beitrag #10

GerdW Offline
______________
LVF-Team

Beiträge: 17.398
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Ergebnis Rechnung als "Controller" verwenden
Hallo B,

Zitat:Das Flipflop als Unterprogramm eingebaut
Und warum so kompliziert?
So geht's auch:
   
Wenn du das Flipflop irgendwann mehr als einmal in einem VI verwenden willst, solltest du es "reentrant" ("Ablaufinvariant") einstellen!

Zitat:Während das Programm läuft kann ich keine Tasten oder Schieberegler mehr betätigen!
In jedem Schleifendurchlauf erzeugst du ein neues ValueChange-Event für TargetPosition - und dieses wird abgearbeitet. Währenddessen sind andere Events blockiert (Standardeinstellung der Event-Struktur!) und du kannst nichts mehr bedienen... Alles so wie du es programmiert hast Big Grin
Es hatte Gründe, warum ich weiter oben schrieb:
Zitat:- Momentan würde jede Iteration ein Event auslösen, sobald du die lokale Variable durch die genannte Property ersetzt. Das ist nicht der Weisheit letzter Schluss...
Jetzt kennst du die Gründe!

Einfache Lösung: nur dann ein Event erzeugen, wenn sich der Wert für TargetPosition (wirklich) ändert...

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
  Array entfernen - Warum wird Ergebnis nicht durchgereicht? mez15 7 4.351 28.10.2013 11:47
Letzter Beitrag: GerdW
  additionstrainer- Ergebnis mit eingegebenen Wert (user) verglichen werden clubmatejunkie 15 7.867 23.05.2013 10:02
Letzter Beitrag: GerdW
  "Ergebnis und Rest" Problem ReneP 6 5.481 16.11.2011 10:57
Letzter Beitrag: ReneP
  LinMot Controller und LabView David_GF 1 5.323 23.03.2011 17:20
Letzter Beitrag: A.Berndsen
  Wago Ethernet I/O Controller undLabVIEW VisionaryS 3 9.097 14.01.2011 11:31
Letzter Beitrag: chris_deus
  fuzzy controller ansteuern und nutzen Janni 0 2.864 17.06.2010 12:53
Letzter Beitrag: Janni

Gehe zu: