LabVIEWForum.de - VISA Schnittstelle sperren/freigeben

LabVIEWForum.de

Normale Version: VISA Schnittstelle sperren/freigeben
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2
Hallo zusammen

Kann mir jemand erklären was genau das von NI zur Verfügung gestelltes VI "VISA schliessen" und "VISA öffnen" genau auf der
Schnittstelle des PC's mache?

Sofenr ja über eine serielle Schnittstelle kommuniziert wird im LabVIEW, wird automatisch die Schnittstelle gesperrt für LabVIEW!
Diese wird dann nach beenden des LabVIEW für andere Programme wieder entsperrt oder besser gesagt freigegeben.

Kann das sperren und freigeben der Schnittstelle auch während des Prozesses im LabVie durchgeführt werden.

Habe Probleme mit der Schnittstelle, da ich zwischendurch im Prozess immer wieder völlig "komisch" Telegramme empfange, die überhaupt
keinen Sinn machen!

Ich wende folgenden Ablauf im LabVIEW an beim senden und empfangen von Daten über die Schnittstelle:

VISA öffnen -> Mit Schnittstelle kommunizieren -> VISA schliessen

Bitte um Feedback

Cheeerzs
MWS
hallo,
vom Prinzip her richtig...

öffnen-->lesen->schliessen einmalig, oder kontinuierlich ? (oder öffnen vor schleife--- lesen--- schliessen nach schleife?)

poste mal ein screenshot, oder vi
' schrieb:hallo,
vom Prinzip her richtig...

öffnen-->lesen->schliessen einmalig, oder kontinuierlich ? (oder öffnen vor schleife--- lesen--- schliessen nach schleife?)

poste mal ein screenshot, oder vi


Der Ablauf ist genau so wie Du sagtest:

öffnen vor Schleife -----> lesen oder schreiben -----> schliessen nach Schleife

Habe das ganze mit einem Controller gelöst, indem ich die Prozesse auseinander nehme!
Prozess "Open serial", "Close serial", "Write" und "Read"

Cheeerzs
MWS
also hört sich erst mal "richtig" an...

wo liegt jetzt genau das problem ? du erhälst auf der schnittstelle irgendwelche anderen zeichen ? was für ein gerät hast du denn angeschlossen ?!
evtl. vi posten ?

Gruß Dennis
' schrieb:Hallo zusammen

Kann mir jemand erklären was genau das von NI zur Verfügung gestelltes VI "VISA schliessen" und "VISA öffnen" genau auf der
Schnittstelle des PC's mache?

Sofenr ja über eine serielle Schnittstelle kommuniziert wird im LabVIEW, wird automatisch die Schnittstelle gesperrt für LabVIEW!
Diese wird dann nach beenden des LabVIEW für andere Programme wieder entsperrt oder besser gesagt freigegeben.

Kann das sperren und freigeben der Schnittstelle auch während des Prozesses im LabVie durchgeführt werden.

Habe Probleme mit der Schnittstelle, da ich zwischendurch im Prozess immer wieder völlig "komisch" Telegramme empfange, die überhaupt
keinen Sinn machen!

Ich wende folgenden Ablauf im LabVIEW an beim senden und empfangen von Daten über die Schnittstelle:

VISA öffnen -> Mit Schnittstelle kommunizieren -> VISA schliessen

VISA Open öffnet die Schnittstelle und reserviert sie tatsächlich aber jede andere VISA Funktion tut das auch implizit wenn dies nicht schon eher passiert ist. VISA Close kommt hier ins Spiel da ansonsten ein serieller Port der einmal geöffnet wurde bis zum Abschliessen der Applikation für andere Applikationen blockiert bleibt.

Rolf Kalbermatter
' schrieb:VISA Open öffnet die Schnittstelle und reserviert sie tatsächlich aber jede andere VISA Funktion tut das auch implizit wenn dies nicht schon eher passiert ist. VISA Close kommt hier ins Spiel da ansonsten ein serieller Port der einmal geöffnet wurde bis zum Abschliessen der Applikation für andere Applikationen blockiert bleibt.

Rolf Kalbermatter

Ich benutze das VISA Close auch...jedoch sperrt das LabVIEW diese Schnittstelle immer noch. Bis ich das LabVIEW beendet habe.
Dann gibt er die Schnittstelle wieder frei!Stimmt das so?

@Dennis.Moser
Ich bekomme nicht einfach irgendwelche Zeichen.
Eigentlich müsste ich 2 Bytes bekommen. z.B 81 (HEX).
Doch anstatt 81 bekomme ich 85....oder anstatt 41 bekomme ich 45!

Ich kommuniziere mit einer SPI-Konverter-Hardware, welche meine Befehle in ein SPI-Telegram umwandelt
und der Prüfhardware übermittelt!

Ich denke aber das dies ev. ein Problem der Schnittstelle ist...daher wollte ich grundsätzlich mal fragen was
es alles im LabVIEW gibt im eine Schnittstelle zu öffnen und schliessen, sowie sperren und freigeben.

Jedoch anscheinend mache ich da alles richtig?

Cheeerzs
MWS
' schrieb:Ich benutze das VISA Close auch...jedoch sperrt das LabVIEW diese Schnittstelle immer noch. Bis ich das LabVIEW beendet habe.
Dann gibt er die Schnittstelle wieder frei!Stimmt das so?


Nein!

eg
' schrieb:Nein!

eg
Kann ich nur uneingeschränkt unterstützen. Ausser in einigen älteren LabVIEW Versionen ist es sogar so dass VISA Close selbst ausgeführt wird, wenn der Eingangs-Errorcluster einen Fehler anzeigt!

Allerdings wenn Du nach dem VISA Close auch nur irgendwo noch ein VISA Read oder so ausführst auf dieselbe Resource ist sie gleich wieder geöffnet. VISA Open ist wie gesagt eigentlich heutzutage überflüssig da jede VISA Funktion den zugewiesenen Port automatisch öffnet wenn dies nicht schon geschehen ist.

Rolf Kalbermatter
' schrieb:Kann ich nur uneingeschränkt unterstützen. Ausser in einigen älteren LabVIEW Versionen ist es sogar so dass VISA Close selbst ausgeführt wird, wenn der Eingangs-Errorcluster einen Fehler anzeigt!

Allerdings wenn Du nach dem VISA Close auch nur irgendwo noch ein VISA Read oder so ausführst auf dieselbe Resource ist sie gleich wieder geöffnet. VISA Open ist wie gesagt eigentlich heutzutage überflüssig da jede VISA Funktion den zugewiesenen Port automatisch öffnet wenn dies nicht schon geschehen ist.

Rolf Kalbermatter


Wie sieht es aus mit dem VI "VISA: I/O Puffer leeren"?

Habe folgendes Problem dass ich das falsche Telegramm über die serielle Schnittstelle zurück bekomme!
Sofern ich diesen Fehler habe, beende ich die Applikation und starte sie nochmals neu.
Und siehe da -> Ich bekomme plötzlich das richtige Telegramm.

Das Telegramm besteht aus 2 Bytes in HEX-Format!
Anstatt 81 HEX bekomme ich 85 HEX!!

Cheeerzs
MWS
' schrieb:Wie sieht es aus mit dem VI "VISA: I/O Puffer leeren"?

Habe folgendes Problem dass ich das falsche Telegramm über die serielle Schnittstelle zurück bekomme!
Sofern ich diesen Fehler habe, beende ich die Applikation und starte sie nochmals neu.
Und siehe da -> Ich bekomme plötzlich das richtige Telegramm.

Das Telegramm besteht aus 2 Bytes in HEX-Format!
Anstatt 81 HEX bekomme ich 85 HEX!!

VISA Flush hat verschiedene Flags. Eine Variante die normalerweise nur intern den VISA eigenen Buffer per Richtung leert. Ob diese Variante den Port wieder öffnet weiss ich nicht sicher. Die andere muss den Windows Port öffnen um das Leeren des Buffers auf der Windows Ebene zu ermöglichen und wird daher den Port implizit öffnen wenn dies nicht schon geschehen ist.

Was Du beschreibst könnte auch den Verlust der Synchronisation bedeuten. Du denkst Byte 1 zu lesen liesst aber Byte 2 der Message und als 2tes Byte das erste der folgenden Message. Protokolle die keinerlei Möglichkeit der Synchronisation bieten sind schlicht gesagt Müll und sollten auch da benützt werden, nämlich nur auf dem Müll.

Rolf Kalbermatter
Seiten: 1 2
Referenz-URLs