LabVIEWForum.de - IO88 Platine ansteuern

LabVIEWForum.de

Normale Version: IO88 Platine ansteuern
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo,
ich betreibe eine ELV IO 88 Platine über den seriellen Anschluss. Soweit klappt das auch ganz gut. Ich kann Ausgänge setzten und löschen, also das Senden von Befehlen klappt.

Leider komme ich mit der Signalverarbeitung nicht zurecht. Dazu habe ich mal das Programm unten angehangen.

Mein Problem ist, dass im Fenster "read string" die Daten angezeigt werden, welche an die Schnittstelle geschickt werden, aber nicht was dort zurück kommt.

An die Schnittstelle werden ganz normale ASCII Befehle geschickt.

Zb.: <STX>O<ETX> um alle Ausgänge abzufragen

In meinem COM-Terminal würde das so aussehen:
[TX] - 02 4F 03
[RX] - 02 4F 01 06 03


Leider klappt das so in LabVIEW leider nicht. Wäre nett, wenn mir jemand einen heißen Tipp geben könnte, wie man das macht.

Gruß,
Unimatrix
Jetzt klappt alles soweit, wie es soll. Ich habe den Bytecount vom Reader Block auf 8 bit gesetzt.

Leider ist das ganze Programm nur sehr träge. Wenn ich beispielsweise die Ausgänge setzte dann leuchtet erst ca. eine Sekunde später das Lämpchen am Ausgang. Oder auch die Signalerfassung der Eingänge verläuft träge.

Kann mir da vielleicht einer sagen, wie das zu beschleunigen geht?
Hallo Unimatrix,

diverse Fehlerchen im Umgang mit der seriellen Schnittstelle:
- die erwartete Antwort ist 5 Zeichen lang, du fragst aber 8 ab. Klar das da länger als nötig gewartet wird...
- du hast beim InitSerialPort die Option für das Ende-Zeichen auf Standard gelassen, d.h. es wird ein LF als Endezeichen erwartet. Ist dies wirklich so? Oder wird nicht vielleicht das 0x03 als Endezeichen verwendet und könnte so (statt der festen Abfrage von 8 Zeichen) als klares EOT benutzt werden...
- du schließt in der Schleife die VISA-Referenz, gibst also den Port frei. Trotzdem willst du in der nächsten Iteration wieder Daten vom Port abfragen... Den Port erst nach der Schleife wieder freigeben!!!
- Aufgrund falscher Abfragen (s.o.) wird wohl die Standard-TimeOut-Zeit verwendet - wenn ich mich recht erinnere, sind dies 10s...

Es gibt hier so viele Threads zum Thema "Serieller Port" und auch einige Beispiele, die mit LabVIEW mitgeliefert werden - da hättest du wenigstens mal reinschauen können...
Danke für die schnelle Antwort. Natürlich habe ich auch vorher die Beispiele angeguckt.

Ich habe es jetzt durch die Tipp beschleunigen können. Aber leider ist das Ergebnis immer noch nicht zufriedenstellend. Ich habe den Eindruck, dass die Ausgabe "verrutscht" ist.

Zb. so:

0603024900

Im Anhang ist auch ein Bild, wie die Datenübertragung abläuft.
Hallo Unimatrix,

Zitat:Ich habe den Eindruck, dass die Ausgabe "verrutscht" ist. Zb. so: 0603024900
(Leider kann ich momentan dein VI nicht anschauen, hab kein LV2011 zur Verfügung.)
Wie ich schon mal erläutert hatte:
Wenn du fest einstellst, 8 Bytes lesen zu wollen, macht das LV auch. Dann wird halt gewartet, bis die nächste Botschaft ankommt, um den Lesebuffer auf die geforderten 8 Byte aufzufüllen. So kommt es zum "Verrutschen" der Bytes...

Nochmal (wie auch schon geschrieben):
Nutze das 0x03 als Endezeichen beim VISA-Init. Dann sollte es passen...

Ansonsten:
- Bild des BD anhängen oder VI runterkonvertieren...
- Wie die serielle Übertragung auf Hardware-Ebene funktioniert, ist zumeist bekannt und für die Frage irrelevant (solange die richtigen Einstellungen beim VISA-Init vorgenommen werden) - das Bild hättest du dir sparen können...
Danke! Das war es! Ich musste als Endzeichen das 0x03 eingstellen.
Referenz-URLs