Binäre Kommunikation
- learny
- adviser
- Сообщения: 207
- Зарегистрирован: 23 окт 2008, 17:54
- Версия LabVIEW: 8.5
- Контактная информация:
Binäre Kommunikation
Hallo eg, hallo zusammen,
hoffe dass ich an der richtigen Stelle poste.
Ich habe einen Hardware Datalogger mit dem ich über RS232 kommunizieren kann. Das Beispiel von eg funktioniert prima mit einem Test-Gerät (ISDN-Router mir seriellem Anschluss).
Was mein Datalogger betrifft, konnte ich über einen Port-Monitor jedoch nur HEX-Befehle vom Hersteller-Software feststellen.
Ich habe versucht das praktische Beispiel (und das Read/Write ni-VI) so umzustellen, dass ich die HEX-Befehle eingeben kann. Ergebnis: nichts wird vom Puffer ausgelsen. Der Readline bleibt leer.
any ideas?
Danke und Grüße
learny
hoffe dass ich an der richtigen Stelle poste.
Ich habe einen Hardware Datalogger mit dem ich über RS232 kommunizieren kann. Das Beispiel von eg funktioniert prima mit einem Test-Gerät (ISDN-Router mir seriellem Anschluss).
Was mein Datalogger betrifft, konnte ich über einen Port-Monitor jedoch nur HEX-Befehle vom Hersteller-Software feststellen.
Ich habe versucht das praktische Beispiel (und das Read/Write ni-VI) so umzustellen, dass ich die HEX-Befehle eingeben kann. Ergebnis: nichts wird vom Puffer ausgelsen. Der Readline bleibt leer.
any ideas?
Danke und Grüße
learny
أهلا و سهلا بالمستخدمين العرب
-
Eugen Graf
- guru
- Сообщения: 6502
- Зарегистрирован: 13 ноя 2007, 02:20
- Награды: 4
- Версия LabVIEW: 2009
- Откуда: Saarbrücken
- Контактная информация:
Re: Serielle Schnittstelle ohne VISA
Hallo, kannst du mal nen Screenshot von deinem Block Diagramm machen oder dein VI hier posten?
- learny
- adviser
- Сообщения: 207
- Зарегистрирован: 23 окт 2008, 17:54
- Версия LabVIEW: 8.5
- Контактная информация:
Re: Serielle Schnittstelle ohne VISA
Hallo eg, und danke für deine Antwort.
Ich kann leider erst am Montag Screenshots machen..
Für den Anfang (auch aufgrund meiner "Grundstufenkenntnisse" in LV), dass ich überhaupt eine Antwort auf irgendein Befehl von meinem seriellen Gerät bekommen kann, nutze ich gerade das Beispiel basic serial R/W von Labview. Mit deinem Beispiel VI habe ich das selbe Problem: Ich bekomme keine Antworten zurück.
Der Format der gesendeten Befehle wird in HEX-Format gesendet, wie ich über einen Port-Monitor festgetellt habe.
Grüße
learny
Ich kann leider erst am Montag Screenshots machen..
Für den Anfang (auch aufgrund meiner "Grundstufenkenntnisse" in LV), dass ich überhaupt eine Antwort auf irgendein Befehl von meinem seriellen Gerät bekommen kann, nutze ich gerade das Beispiel basic serial R/W von Labview. Mit deinem Beispiel VI habe ich das selbe Problem: Ich bekomme keine Antworten zurück.
Der Format der gesendeten Befehle wird in HEX-Format gesendet, wie ich über einen Port-Monitor festgetellt habe.
Grüße
learny
أهلا و سهلا بالمستخدمين العرب
-
Eugen Graf
- guru
- Сообщения: 6502
- Зарегистрирован: 13 ноя 2007, 02:20
- Награды: 4
- Версия LabVIEW: 2009
- Откуда: Saarbrücken
- Контактная информация:
Re: Serielle Schnittstelle ohne VISA
Dann musst du dich mit dem Übertragungsprotokoll auseinander setzen. Die binären Befehle sind in der Dokumentation zu deinem Gerät erklärt.
Kann sein, dass du Glück hast und die Treiber schon von jemandem geschrieben sind. Du kannst im Internet nach "Dein Gerätename Treiber" suchen.
Kann sein, dass du Glück hast und die Treiber schon von jemandem geschrieben sind. Du kannst im Internet nach "Dein Gerätename Treiber" suchen.
- learny
- adviser
- Сообщения: 207
- Зарегистрирован: 23 окт 2008, 17:54
- Версия LabVIEW: 8.5
- Контактная информация:
Re: Serielle Schnittstelle ohne VISA
Hallo eg, und danke für Deine Antwort
das Glück, den passenden Treiber dazu gefunden zu haben hatte ich leider nicht. Ich habe allerdings einen Treiberwunsch für das Gerät von ni angefordert. Viellleicht wird ja mein Wunsch erfüllt...
Im Benutzerhandbuch meines Geräts, finde ich nur die Befehle im string form. auf Seite 32 in folgendem Dokument (Kommunikationsbeschreibung): http://download.sma.de/smaprosa/dateien ... ZD0803.pdf
Weißt Du vielleicht wie ich eine Verbindung zwischen dem HEX-Übertragungsprotokoll und den Kommandos im Herstellerdokument finden kann?
Danke im Voraus
das Glück, den passenden Treiber dazu gefunden zu haben hatte ich leider nicht. Ich habe allerdings einen Treiberwunsch für das Gerät von ni angefordert. Viellleicht wird ja mein Wunsch erfüllt...
Im Benutzerhandbuch meines Geräts, finde ich nur die Befehle im string form. auf Seite 32 in folgendem Dokument (Kommunikationsbeschreibung): http://download.sma.de/smaprosa/dateien ... ZD0803.pdf
Weißt Du vielleicht wie ich eine Verbindung zwischen dem HEX-Übertragungsprotokoll und den Kommandos im Herstellerdokument finden kann?
Danke im Voraus
أهلا و سهلا بالمستخدمين العرب
-
Eugen Graf
- guru
- Сообщения: 6502
- Зарегистрирован: 13 ноя 2007, 02:20
- Награды: 4
- Версия LabVIEW: 2009
- Откуда: Saarbrücken
- Контактная информация:
Re: Binäre Kommunikation
Ne ne, das ist doch genau das, was du brauchst. Die Befehle auf der Seite 32 haben Identifier (CMD). Du kannst weiterhin das Beispiel basic serial R/W nutzen, nur mussst du mit dem Rechtsklick die Darstellung auf Hexadecimal umstellen. Das wichtigste ist SMA Rahmenformat (Seite 13), SMA Telegrammformat (Seite 24) und die Befehlsliste (Seite 32).
Gruß
Gruß
- learny
- adviser
- Сообщения: 207
- Зарегистрирован: 23 окт 2008, 17:54
- Версия LabVIEW: 8.5
- Контактная информация:
Re: Binäre Kommunikation
morgen werde ich mir das ganze + folgendes Dokument lesen, ausprobieren und mich dann anschließend melden
http://digital.ni.com/public.nsf/allkb/ ... 2800710865
http://digital.ni.com/public.nsf/allkb/ ... 2800710865
أهلا و سهلا بالمستخدمين العرب
- learny
- adviser
- Сообщения: 207
- Зарегистрирован: 23 окт 2008, 17:54
- Версия LabVIEW: 8.5
- Контактная информация:
Re: Binäre Kommunikation
Hallo eg,
also ich habe folgendes probiert:
- im Serial R/W habe ich die Anzeige auf HEX umgestellt.
- Ich habe einen Request wie in der Port-Log (vom Portmonitor)gesendet.
- Immernoch keine Antwort.
Wenn ich das Rahmenformat auf Seite 13 mit dem Log-Protokoll vergleiche, dann stelle ich fest, das es sich um die Antworten handelt, die ich vom Gerät bekomme.
Die Antworten haben folgendes Rahmen:
7E: Startbyte
FF: Adresse
03: Control
und genau dieser Block wiederholt sich bei jeder Antwort, am Anfang und am Ende.
Zu den Requests:
Die Requests
Die "requests" erfolgen ebenso im HEX-Format, beginnend mit:
Start: 68
Längenbyte: 0-255 (i.e. 04 04 im Log)
Start: 68
Protokollkopf: Enthält die Kommandos (die CMD_Kommandos?)
Ich habe bereits soviel ausprobiert, das VI ließt aber immernoch nichts.
In der Anlage ein Ausschnitt aus dem Monitor-Log, wo der Datenlogger und an ihm verbundene Geräte sich melden nach jeweils ein Request, den ich gerne in meinem simple R/W VI realisieren möchte.
Danke vielmals.
Gruß
learny
also ich habe folgendes probiert:
- im Serial R/W habe ich die Anzeige auf HEX umgestellt.
- Ich habe einen Request wie in der Port-Log (vom Portmonitor)gesendet.
- Immernoch keine Antwort.
Wenn ich das Rahmenformat auf Seite 13 mit dem Log-Protokoll vergleiche, dann stelle ich fest, das es sich um die Antworten handelt, die ich vom Gerät bekomme.
Die Antworten haben folgendes Rahmen:
7E: Startbyte
FF: Adresse
03: Control
und genau dieser Block wiederholt sich bei jeder Antwort, am Anfang und am Ende.
Zu den Requests:
Die Requests
Die "requests" erfolgen ebenso im HEX-Format, beginnend mit:
Start: 68
Längenbyte: 0-255 (i.e. 04 04 im Log)
Start: 68
Protokollkopf: Enthält die Kommandos (die CMD_Kommandos?)
Ich habe bereits soviel ausprobiert, das VI ließt aber immernoch nichts.
In der Anlage ein Ausschnitt aus dem Monitor-Log, wo der Datenlogger und an ihm verbundene Geräte sich melden nach jeweils ein Request, den ich gerne in meinem simple R/W VI realisieren möchte.
Danke vielmals.
Gruß
learny
أهلا و سهلا بالمستخدمين العرب
-
Eugen Graf
- guru
- Сообщения: 6502
- Зарегистрирован: 13 ноя 2007, 02:20
- Награды: 4
- Версия LabVIEW: 2009
- Откуда: Saarbrücken
- Контактная информация:
Re: Binäre Kommunikation
Womit hast du die Requests gemacht?
Erweitere das Simple Serial R/W um folgendes:
Mache dir einen Cluster aus allen Elementen, die du abschicken willst und benutze danach Flatten To String VI um aus deinem Cluster ein binäres String zu bekommen. Danach kannst du diesen String einfach an VISA Write anschliessen.
Beim VISA Read ist folgendes zu beachten:
wenn du beim Konfigurieren der seriellen Schnittstelle das Termination Char eingeschaltet hast, dann wirst du beim binären Übertragungsprotokoll beim Lesen fast immer einen Timeoutfehler bekommen. Um es zu vermeiden, musst du Termination Char ausschalten und beim Lesen die genaue Anzahl Bytes angeben.
Hier siehst du wie ich ein Paket zum Abschicken zusammenstelle:
ich bündele den Paketinhalt zu einem Cluster und wandele diesen Cluster in ein binäres String um. Wichtig dabei ist genau zu wissen was in den Cluster reinkommt und das steht in der Dokumentation. Auch ist auf die Datentypen der Clusterelemente zu achten, diese müssen ganz genau übereinstimmen, sonst wird das Gerät dein Befehl nicht verstehen.
Erweitere das Simple Serial R/W um folgendes:
Mache dir einen Cluster aus allen Elementen, die du abschicken willst und benutze danach Flatten To String VI um aus deinem Cluster ein binäres String zu bekommen. Danach kannst du diesen String einfach an VISA Write anschliessen.
Beim VISA Read ist folgendes zu beachten:
wenn du beim Konfigurieren der seriellen Schnittstelle das Termination Char eingeschaltet hast, dann wirst du beim binären Übertragungsprotokoll beim Lesen fast immer einen Timeoutfehler bekommen. Um es zu vermeiden, musst du Termination Char ausschalten und beim Lesen die genaue Anzahl Bytes angeben.
Hier siehst du wie ich ein Paket zum Abschicken zusammenstelle:
ich bündele den Paketinhalt zu einem Cluster und wandele diesen Cluster in ein binäres String um. Wichtig dabei ist genau zu wissen was in den Cluster reinkommt und das steht in der Dokumentation. Auch ist auf die Datentypen der Clusterelemente zu achten, diese müssen ganz genau übereinstimmen, sonst wird das Gerät dein Befehl nicht verstehen.
- learny
- adviser
- Сообщения: 207
- Зарегистрирован: 23 окт 2008, 17:54
- Версия LabVIEW: 8.5
- Контактная информация:
Re: Binäre Kommunikation
Hallo eg,
Die Requests habe ich mit dem Originalprogramm versursacht und mit Hilfe von Free Serial-Port-Monitor aufgezeichnet.
Bevor ich an der Bündelung mit dem Cluster arbeite, möchte ich nur kurz noch was fragen:
Ich werde mich zunächst mit clustern und Flatten to string vertrauter machen und anschließend das Basic Serial R/W "versuchen" zu erweitern.
Danke
Beste Grüße
Die Requests habe ich mit dem Originalprogramm versursacht und mit Hilfe von Free Serial-Port-Monitor aufgezeichnet.
Bevor ich an der Bündelung mit dem Cluster arbeite, möchte ich nur kurz noch was fragen:
Was meinst Du mit den "Elementen die ich abschicken möchte"? Die HEX-Befehle, die ich aus den logged-requests aufgezeichnet habe, oder die CMD Befehle, die auf Seite 32 des Protokolls?Mache dir einen Cluster aus allen Elementen, die du abschicken willst und benutze danach Flatten To String VI um aus deinem Cluster ein binäres String zu bekommen. Danach kannst du diesen String einfach an VISA Write anschliessen.
Ich werde mich zunächst mit clustern und Flatten to string vertrauter machen und anschließend das Basic Serial R/W "versuchen" zu erweitern.
Danke
Beste Grüße
أهلا و سهلا بالمستخدمين العرب
- learny
- adviser
- Сообщения: 207
- Зарегистрирован: 23 окт 2008, 17:54
- Версия LabVIEW: 8.5
- Контактная информация:
Re: Binäre Kommunikation
die Elemente sind die Bytes in jedem Block, die bei jedem Request mitgesendet werden, oder?
أهلا و سهلا بالمستخدمين العرب
-
Eugen Graf
- guru
- Сообщения: 6502
- Зарегистрирован: 13 ноя 2007, 02:20
- Награды: 4
- Версия LabVIEW: 2009
- Откуда: Saarbrücken
- Контактная информация:
Re: Binäre Kommunikation
Ich meine alles zusammen, was in das Request-Paket gehört. Also Syncbyte, CMD, Daten u.s.w.learny писал(а): Was meinst Du mit den "Elementen die ich abschicken möchte"? Die HEX-Befehle, die ich aus den logged-requests aufgezeichnet habe, oder die CMD Befehle, die auf Seite 32 des Protokolls?
Das ganze funktioniert genauso, wie in anderen Programmiersprachen. Man macht eine Datenstruktur (in LV ist es ein Cluster) und man castet diese Struktur aus den Typ ByteArray (das macht das Flatten To String in LV). Na gut, in C/C++ gibt es noch Pointer, den man direkt an die Write Funktion übergeben kann, aber in LV wird es mit Casten gemacht.
- learny
- adviser
- Сообщения: 207
- Зарегистрирован: 23 окт 2008, 17:54
- Версия LabVIEW: 8.5
- Контактная информация:
Re: Binäre Kommunikation
hallo eg,
bin gerade sehr durcheinander.. Möchte daher nur folgendes fragen, so dass ich die Information besser "ordnen" kann..
durch den Cluster werde ich in der Lage sein, die verschiedenen Parametern in eine Sturktur so zu bündeln, so dass ich sie danach aufgefächert in den VISA-Write VI schicke. Habe ich die Sache so richtig verstanden?
kann ich die Funktion des Clusters ersetzen durch einen einzigen Befehl, der alle in den Cluster eingehenden Parametern enthält? Brauche ich dazu das Flatten To String?
Ein Requestpaket soll eigentlich folgendes enthalten oder?:
1- Start Byte: 68
2- danach den Längenbyte 2x:04 04
3- dann wieder den Startbyte: 68
4- danach kommt der Inhalt des Telegramms, bestehend aus dem Protokollkopf+Nutzdaten (Laut Buch 7 Bytes Protokollkopf und bis 255 Byte für die Nutzdaten).
5- Checksum aus eine byteweise Addition des Protokollkopfes + Nutzdaten
6- Stoppbyte: 16
was ist die Stelle 4? Sind es die CMD-Befehle in string Format?
Danke vielmals
bin gerade sehr durcheinander.. Möchte daher nur folgendes fragen, so dass ich die Information besser "ordnen" kann..
durch den Cluster werde ich in der Lage sein, die verschiedenen Parametern in eine Sturktur so zu bündeln, so dass ich sie danach aufgefächert in den VISA-Write VI schicke. Habe ich die Sache so richtig verstanden?
kann ich die Funktion des Clusters ersetzen durch einen einzigen Befehl, der alle in den Cluster eingehenden Parametern enthält? Brauche ich dazu das Flatten To String?
Ein Requestpaket soll eigentlich folgendes enthalten oder?:
1- Start Byte: 68
2- danach den Längenbyte 2x:04 04
3- dann wieder den Startbyte: 68
4- danach kommt der Inhalt des Telegramms, bestehend aus dem Protokollkopf+Nutzdaten (Laut Buch 7 Bytes Protokollkopf und bis 255 Byte für die Nutzdaten).
5- Checksum aus eine byteweise Addition des Protokollkopfes + Nutzdaten
6- Stoppbyte: 16
was ist die Stelle 4? Sind es die CMD-Befehle in string Format?
Danke vielmals
أهلا و سهلا بالمستخدمين العرب
-
Eugen Graf
- guru
- Сообщения: 6502
- Зарегистрирован: 13 ноя 2007, 02:20
- Награды: 4
- Версия LabVIEW: 2009
- Откуда: Saarbrücken
- Контактная информация:
Re: Binäre Kommunikation
Ja, genaulearny писал(а): hallo eg,
bin gerade sehr durcheinander.. Möchte daher nur folgendes fragen, so dass ich die Information besser "ordnen" kann..
durch den Cluster werde ich in der Lage sein, die verschiedenen Parametern in eine Sturktur so zu bündeln, so dass ich sie danach aufgefächert in den VISA-Write VI schicke. Habe ich die Sache so richtig verstanden?
Ja, du kannst es machenlearny писал(а): kann ich die Funktion des Clusters ersetzen durch einen einzigen Befehl, der alle in den Cluster eingehenden Parametern enthält?
Nein, du kannst eine Stringkonstante erstellen und dort dein binäres String zum Abschicken fest reinschreibenlearny писал(а): Brauche ich dazu das Flatten To String?
Die CMD-Befehle sind nicht im Stringformat, es sind Zahlen, die du durch Flatten To String in ein binäres String umwandelst.learny писал(а): Ein Requestpaket soll eigentlich folgendes enthalten oder?:
1- Start Byte: 68
2- danach den Längenbyte 2x:04 04
3- dann wieder den Startbyte: 68
4- danach kommt der Inhalt des Telegramms, bestehend aus dem Protokollkopf+Nutzdaten (Laut Buch 7 Bytes Protokollkopf und bis 255 Byte für die Nutzdaten).
5- Checksum aus eine byteweise Addition des Protokollkopfes + Nutzdaten
6- Stoppbyte: 16
was ist die Stelle 4? Sind es die CMD-Befehle in string Format?
Danke vielmals
Ich denke das Commando steht an der Stelle 4 im Protokollkopf.
Übrigens, da du die Checksumme berechnen sollst, konnte die händische Eingabe über Terminal nicht funktionieren, außer du hast die Pakete mitgehört und genauso abgeschickt. Hast du schon ein VI zur Checksummenberechnung?
- learny
- adviser
- Сообщения: 207
- Зарегистрирован: 23 окт 2008, 17:54
- Версия LabVIEW: 8.5
- Контактная информация:
Re: Binäre Kommunikation
bezüglich der Checksumme - habe ich leider nicht..Die CMD-Befehle sind nicht im Stringformat, es sind Zahlen, die du durch Flatten To String in ein binäres String umwandelst.
Ich denke das Commando steht an der Stelle 4 im Protokollkopf.
Übrigens, da du die Checksumme berechnen sollst, konnte die händische Eingabe über Terminal nicht funktionieren, außer du hast die Pakete mitgehört und genauso abgeschickt. Hast du schon ein VI zur Checksummenberechnung?
sind die CMD-Zahlen also die dazugeordneten Zahlen in der zweiten Spalte in der CMD-Tabelle auf Seite 32? (z.B. für CMD_GET_NET wäre die Zahl 6?)
أهلا و سهلا بالمستخدمين العرب