LabVIEWForum.de
Hex-Strings zusammen fassen und an VISA Port weiterleiten! - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+---- Forum: Instrument IO & VISA (/Forum-Instrument-IO-VISA)
+---- Thema: Hex-Strings zusammen fassen und an VISA Port weiterleiten! (/Thread-Hex-Strings-zusammen-fassen-und-an-VISA-Port-weiterleiten)



Hex-Strings zusammen fassen und an VISA Port weiterleiten! - Herr Müller - 31.03.2011 13:18

Hallo liebe LabView Gemeinde!

Bei der Programmierung eines Schrittmotors stehe ich vor folgendem Problem:

Wie man auf dem Bild sehen kann, möchte ich z.B. über eine Sequenz verschiedene Parameter in Form von Hex-Strings an den Visa-Port übergeben. Nun habe ich noch keine Lösung dafür gefunden, die Strings zu einem Signal zusammen zu fassen, denn es sollten die von der Sequenz ausgegebenen Strings DIREKT an den Port weitergeleitet werden und nicht erst gesammelt werden.

Im Klartext:

Hex-String 1( Microstep resolution) an Visa, dann Hex String 2( Maximum acceleration) an Visa usw. des Weiteren sollte der String vom SUB-VI TMCL auch noch direkt auf den Visa Port kommen.

Bin über jeden kleinen Tipp, der mich nur ein kleines Stück weiter bringt dankbar!!!

Habe Lab View 10.0.1


Greetz


Herr Müller


RE: Hex-Strings zusammen fassen und an VISA Port weiterleiten! - Lucki - 31.03.2011 13:29

Der Zauberstab ist die Funktion "Strings verknüpfen".
Wichtig ist auch: Soll daraus
a) ein mehrzeiliger String
b) ein einzeiliger Spring mit Abschlußzeichen
c) ein einzeiliger String ohne Abschlußzeichen
werden?


RE: Hex-Strings zusammen fassen und an VISA Port weiterleiten! - Herr Müller - 31.03.2011 13:42

Das Problem beim Strings verknüpfen ist, dass der Verknüpfer wartet, bis alle Signale angekommen sind und dann einen String weiterleitet.
Der Verknüpfer sollte jeden einzelnen String direkt weiterleiten. Geht das überhaupt?

Es sollen genau die Strings bleiben, die in den Sequenzen stehen. Also einzeilig und ohne Endung.

Gruß


RE: Hex-Strings zusammen fassen und an VISA Port weiterleiten! - Lucki - 31.03.2011 16:44

Der Herr hat 2 Möglichkeiten
a) Die Strings zu einem Gesamtstring zusammenzufassen und den an VISA Write zu schicken. Daß der Verknüpfer wartet, ist doch OK: bevor der String nicht vollständig ist, kannst Du ihn sowieso nicht senden.
b) Visa Write wird 5 Mal hintereiner aufgerufen (man hat 5 Visa-Write-Ikons). Da wird jeder Teilstring, wenn er entsprechend der Reihenfolge der über den Fehlerstring verketteten Ikons dran ist, sofort gesendet. Das ist wahrscheinlich das was dem Herrn vorschwebt - und es spricht nichts dagegen.
Und die überflüssigen Sequenzstrukturen weglassen. Der Datenablauf wird durch die Verkettung über den Fehlerstring gewährleistet.


RE: Hex-Strings zusammen fassen und an VISA Port weiterleiten! - Herr Müller - 01.04.2011 07:52

Vielen Dank Lucki!!

Ich werde mein Glück versuchen und Rückmeldung geben.

Grüße


RE: Hex-Strings zusammen fassen und an VISA Port weiterleiten! - Herr Müller - 04.04.2011 08:32

Servus,

@Lucki, hab versucht das mit dem Fehlereingang zu machen, scheint aber nicht zu gehen, da der Fehlereingang des Visaports ja schon belegt ist, oder habe ich da etwas falsch verstanden?

Habe nun versuch das Ganze über eine Queue laufen zu lassen, was eigentlich auch ganz gut funktioniert, aber eben nur eigentlich. Wie man oben im Bild sieht möchte ich die fünf Parameter (SAP 140, etc.) nacheinander an den Visaport schicken, dazu habe ich eine Lokale Variable erstellt. Wenn ich nun mit der Highlight-Funktion das Programm ablaufen lasse, nimmt die Lokale-Variable auch die Werte der Parameter an, jedoch scheint der Visa Port nicht alle Strings an den Motor weiter zu leiten.

Beim Check des Motors, also welche Parameter ankamen, sind es manchmal drei oder vier oftmals aber auch nur einer.

Wo liegt denn hier der Fehler begraben?

Grüße

EDIT: HABE NUN EINFACH FÜNF WEITERE VISA ICONS EINGEFÜGT!! UND ES FUNKTIONIERT!!

MERCI, HABE DEINEN TIP FALSCH VERSTANDEN LUCKI


RE: Hex-Strings zusammen fassen und an VISA Port weiterleiten! - GerdW - 04.04.2011 08:38

Hallo Herr,

Zitat:Wo liegt denn hier der Fehler begraben?
Vielleicht in der Verquickung von sehr "kreativer" Queuenutzung und einem Unverständnis des Datenflussprinzips in Verbindung mit RaceConditions durch Nutzung lokaler Variablen?

Wieso schreibst du 5 Werte in die Queue, um sie direkt danach wieder auszulesen und in einer lokalen Variable zu überschreiben (RaceCondition!)?
Hast du dir mal die Beispiele zu Queues angeschaut und überlegt, wie die funktionieren? Tu das bitte!

Mal eine bildliche Erläuterung von Queues:
Eine Queue ist wie ein Wasserschlauch. An einer Stelle wird Wasser reingepumpt, an der anderen Stelle wieder rausgelassen. Wasser, das schon gezapft wurde, kann nicht ein zweites Mal gezapft werden! Wenn ich einen Eimer Wasser zapfe, ihn auskippe und neues Wasser in den Eimer lasse, ist das erste Wasser weg (und verschwendet) (= deine RaceCondtion mit den locals!).


RE: Hex-Strings zusammen fassen und an VISA Port weiterleiten! - Herr Müller - 04.04.2011 08:59

Vielen Dank für die anschauliche Beschreibung der Queue, habe mir nun auch die Beispiele dazu angeschaut und dank deiner Beschreibung nun gecheckt! Bin noch ein absoluter Anfänger in LabView und muss wohl deshalb erstmal ein paar Fehler machen um zu verstehen wo es lang geht.

Bitte entschuldigt, wenn der Herr Müller mal wieder einen totalen Quark zusammen bautCool


RE: Hex-Strings zusammen fassen und an VISA Port weiterleiten! - Herr Müller - 20.04.2011 10:36

Um den Thread zu vervollständigen hier der Nachtrag zu den verschiedenen Lösungen, welche in meinem Fall super funktionieren:

1. Für jeden String der übergeben werden soll ein neues VISA-Read einfügen.

2. Die Übergabe mittels einer lokalen- (im gleichen VI) oder einer globalen- Variablen (VI übergreifend) realisieren.


Vielen Dank für die schnelle Hilfe!! Top1


Timi