LabVIEWForum.de
Serieller Mess-Bus (DIN Mess-Bus) - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: Hardware (/Forum-Hardware)
+---- Forum: 3rd Party Hardware (/Forum-3rd-Party-Hardware)
+---- Thema: Serieller Mess-Bus (DIN Mess-Bus) (/Thread-Serieller-Mess-Bus-DIN-Mess-Bus)

Seiten: 1 2


Serieller Mess-Bus (DIN Mess-Bus) - Oeric - 27.08.2009 15:53

Hallo Zusammen,

ich habe ein kleines Problem mit meinem Lambda-Meter LA4 von ETAS.
Ich bekomme einfach die Kommunikation mit meinem Mess-PC nicht hin.
Ich hänge mal die Informationen aus dem User-Guide an:

_______________________________________

6.3Kurzbeschreibung Serieller Meß-Bus (SMB)

Über den seriellen Meßbus können bis zu 16 Meßmodule an die serielle
Schnittstelle eines PCs angeschlossen werden. Die Übertragungsrate beträgt
38.400 Baud und es wird das Format 1 Startbit, 8 Datenbits, 1 Stopbit, keine
Parität benutzt.
Die Kommunikation wird immer vom PC eingeleitet. Jede Nachricht enthält die
Adresse des anzusprechenden Meßmoduls und den Befehlscode. Alle angeschlossenen
Meßmodule prüfen diese Anforderung d.h. sie dekodieren diese
und vergleichen den Adressteil mit der am jeweiligen Modul eingestelltenModuladresse. Nur das selektierte Modul verarbeitet die Nachricht, alle anderen
ignorieren die Nachricht. Die Verarbeitung der Kommandos ist modulspezifisch
definiert.

6.3.1Anforderung PC ⇒ Lambda Meter:

Jede Nachricht ist 1 Byte lang. Sie besteht aus Adreßteil für das anzusprechende
Modul und einem Kommandoteil für den modulspezifischen Kommandocode
von jeweils 4 Bit.
Jede Moduladresse (0 bis F) darf nur einmal vorkommen.

6.3.2Antwort Lambda Meter ⇒ PC:

Die vom Modul gesendete Information enthält keine Angaben über ihren Aufbau
und ihre Normierung. Es wird nach Anfrage immer nur 1 Byte, <CR> und
<LF> an den PC übertragen.
Der PC muß immer zuerst das HIGH-Byte und dann das zugehörige LOW-Byte
abfragen. Das LOW-Byte ist erst nach Abfrage des HIGH-Byte gültig!

6.3.3Codetabelle Lambda Meter

Bei Abfrage des PC über folgende Codes sendet das Lambda Meter maximal
1 Byte, das folgende Informationen enthält:
Code Beschreibung Wertebereich und
Umrechnungsvorschrift:

0 reserviert, exit aus Testmodus

1 LA4 sendet λ-Wert in 8 Bit-
Darstellung
0,744 ≤ λ ≤ 1,746

2 LA4 sendet High-Byte des
λ-Wertes in 16 Bit-Darstellung
0,7 ≤ λ ≤ 32,767

3 LA4 sendet Low-Byte des
λ-Wertes in 16 Bit-Darstellung

4 LA4 sendet High-Byte des
Ri-Wertes in 16 Bit-Darstellung
0,0 ≤ Ri ≤ 250,0 Ω

5 LA4 sendet Low-Byte des
Ri-Wertes in 16 Bit-Darstellung

6 LA4 sendet High-Byte des
O2-Wertes in 16 Bit-Darstellung
0,0 ≤ O2 ≤ 24,41 %

7 LA4 sendet Low-Byte des
O2-Wertes in 16 Bit-Darstellung

8 LA4 sendet High-Byte des
A/F-Wertes in 16 Bit-Darstellung
10,29 ≤ A/F ≤ 327,67

9 LA4 sendet Low-Byte des
A/F-Wertes in 16 Bit-Darstellung

ah LA4 sendet High-Byte des
internen Statuswertes (16 Bit)
noch nicht definiert

bh LA4 sendet Low-Byte des
internen Statuswertes (16 Bit)
noch nicht definiert

ch LA4 sendet High-Byte des IP
Wertes (16 Bit)
–3 mA ≤ IP ≤ 3 mA

dh LA4 sendet Low-Byte des IP
Wertes (16 Bit)

eh reserviert, Testmodus noch nicht definiert

fh reserviert, Umschaltung in
Testmodus
_________________________________ (die Umrechnungsvorschriften habe ich weggelassen, die Endwerte werden jeweils durch Verrechnung des high- und des low-wertes bestimmt)

Außer diesen Informationen, dem Gerät mit Lambda-Sonde und einem RS232-auf-USB-Adapter habe ich nichts. VISA erkennt den Adapter, es passiert jedoch nichts.
Zunächsteinmal möchte ich den Sauerstoffgehalt messen. Was muss ich als Schreibpuffer in "Visa: Schreiben" eintragen? Die andern Messgrößen sind ja analog erhebbar.

Ich danke euch schonmal für eure Hilfe.

(Anbei findet ihr meinen ersten Ansatz, erstellt mit LabVIEW 8.6)


Serieller Mess-Bus (DIN Mess-Bus) - Y-P - 27.08.2009 16:59

1. Deine Baudrate ist mit 38400000 wohl etwas zu groß. Wink
2. Von Sauerstoffgehalt sehe ich in Deiner Anleitung leider nicht viel. Ich bin sowieso durch die (nett ausgedrückt) etwas dürftige Anleitung nicht ganz durchgestiegen. Hast Du nichts ausführlicheres?

Gruß Markus


Serieller Mess-Bus (DIN Mess-Bus) - rolfk - 29.08.2009 09:26

Die Information ist tatsächlich rudimentär. Das Byte das Du senden musst enthält 4 Bits für die Adresse und 4 Bits für das Kommando. Aber da fehlt zum Beispiel die Information ob die Addresse die oberen oder unteren 4 Bits sind.

Der Rest wäre dann einfach. Einfach das Kommandobyte senden, entweder indem Du die Geräteaddresse zwischen 0 und 15 mit 16 multiplizierst und das Kommando hinzuaddierst, oder umgekehrt das Kommando mit 16 multiplizierst und die Geräteaddresse hinzuaddierst. Danach sicherstellen dass diese Zahl ein 8 bit unsingned Integer ist, diesen in ein Array verwandeln (Build Array) und dann mit Byte Array to String in einen String um an die VISA Funktion zu senden. Danach zwei Bytes zurücklesen und das erste Byte davon analysieren. Das wird noch eine lustige Bitschieberei aber das schaffst Du schon.

Rolf Kalbermatter


Serieller Mess-Bus (DIN Mess-Bus) - Lucki - 30.08.2009 10:42

Das Manul ist klar und eindeutig. Der Einwand von rolfk ist zwar richtig, aber rein akademsch. Denn man kann, zumal wenn nichts dazu gesagt ist, doch wohl darauf vertrauen, daß die Reihenfolge der 4-bit-Werte "Adresse" und "Kommando" der Reihenfolge innerhalb des Bytes von links nach rechts, d.h. von High nach Low entspricht. Das Gegenteil wäre Verarschung des Anwenders.

Auch würde ich keinesfalls einen String mit mehreren Bytes an das Gerät senden. Es ist überhaupt nicht gesagt, daß das vom Gerät aus funktioniert. Also immer nur 1 byte senden und die Antwort des Gerätes abwarten.

Als Beispiel hier das Auslesen des 16bit Lambda-Wertes.(Kommandos 2 und 3).
[attachment=20908]Lv86_img[attachment=20907]


Serieller Mess-Bus (DIN Mess-Bus) - rolfk - 31.08.2009 08:09

Die Tatsache ist dass viele Manuals grundsätzlich Dinge sehr rudimentär beschreiben und da ist dieses Manual keine Ausnahme. Es mag als "Verarschung" klingen wenn die Dinge sich anders herausstellen als der erste intuitive Gedanke sie einem als logisch erscheinen lässt, aber in diesen Dingen wurde ich schon zu oft "verarscht" als dass ich auf diese Unterlassung hier nicht hätte hinweisen wollen Wink

Ich nehme an dass die Warnung mit dem String mit mehreren Bytes nich auf meinen Post gemünzt war. Da steht nämlich nirgends sowas drin. Wenn man die Anleitung genau befolgt kommt immer ein String mit genau einem Byte heraus.

Rolf Kalbermatter


Serieller Mess-Bus (DIN Mess-Bus) - Lucki - 31.08.2009 09:32

@Rolf Kabermatter:
Hast schon reicht, die Reihenfolge der beide Halbbytes im Byte hätte man schon benennen müssen. Recht eindeutig ist es nur für jemanden, der bereits Erfahrungn mit RS485 hat und weiß, daß vor jeder gesendeten Nachricht erst eine Adresse kommt und dann erst das Kommando. Aber davon darf das Manual nicht ausgehen.

Warnung mit dem String: Entschuldige vielmals, es war - zu Unrecht - auf Dich gemünzet. Habe mich durch Deinen Text verwirren lassen. Natürlich kann "Byte array to string" auch einen 1byte-String als Resultat haben.
Zu meiner Entlastung muß ich aber sagen, daß
Zitat:Danach sicherstellen dass diese Zahl ein 8 bit unsingned Integer ist, diesen in ein Array verwandeln (Build Array) und dann mit Byte Array to String in einen String um an die VISA Funktion zu senden.
eine etwas umständliche - und von daher missverständliche - Vorgehensweise/Beschreibung von dem hier ist:
[attachment=20925]
Gruß Ludwig


Serieller Mess-Bus (DIN Mess-Bus) - rolfk - 31.08.2009 09:44

' schrieb:eine etwas umständliche - und von daher missverständliche - Vorgehensweise/Beschreibung von dem hier ist:
[attachment=48977:Clip.png]

Ich verstehe, aber in meiner Erfahrung löst das erwähnen des Typecast bei Anfängern mehr Unklahrheiten aus, dann es erklärt. Big Grin

Rolf Kalbermatter


Serieller Mess-Bus (DIN Mess-Bus) - Oeric - 01.09.2009 11:25

Ich danke euch für eure Hilfe.

Jedoch erscheint der Timout-Fehler 1073807339...
Hab auch schon die Timout-Zeit hochgesetzt, hilft jedoch nicht.

Ist es überhaupt möglich mit einem Gerät zu kommunizieren, dass über einen din mess-bus verfügt, wenn ich es mit einem RS232 converter an mein USB anschließe...
Im Gerätemanager wird nämlich nur der COM-Port aufgelistet, mein Lambda-Meter jedoch nicht...
Ich habe mit derartigen Messgeräten noch keine Erfahrungen machen dürfen und die Anleitung, wie ihr schon gemerkt habt, ist sehr dürftig. Es ist auch keine Treiber-CD vorhanden und der Hersteller lässt sich auch Zeit mit seiner Antwortmail.


Serieller Mess-Bus (DIN Mess-Bus) - Lucki - 01.09.2009 14:17

' schrieb:Ist es überhaupt möglich mit einem Gerät zu kommunizieren, dass über einen din mess-bus verfügt, wenn ich es mit einem RS232 converter an mein USB anschließe...
Der Din-Messbus basiert auf der RS485-Schnittstelle, nicht auf RS232. Ein USB-RS485 Konverter sollte es schon sein, und kein USB-RS232 Konverter. Sicherheitshalber solltest du auch noch mal die Anschußbelegungen der 9pol. SubD-Buchsen von Gerät und Kabel überprüfen. Auf der sicheren Seite liegst Du nur, wenn Du von der Herstellerfirma das zum Gerät passende Konverterkabel für den PC-Anschluß bestellst, bzw. deren Empfehlung beachtest.
Gruß Ludwig


Serieller Mess-Bus (DIN Mess-Bus) - Oeric - 01.09.2009 14:30

' schrieb:Der Din-Messbus basiert auf der RS485-Schnittstelle, nicht auf RS232. Ein USB-RS485 Konverter sollte es schon sein, und kein USB-RS232 Konverter. Sicherheitshalber solltest du auch noch mal die Anschußbelegungen der 9pol. SubD-Buchsen von Gerät und Kabel überprüfen. Auf der sicheren Seite liegst Du nur, wenn Du von der Herstellerfirma das zum Gerät passende Konverterkabel für den PC-Anschluß bestellst, bzw. deren Empfehlung beachtest.

Im Lieferumpfang des Gerätes war das passende Kabel dabei, es ist jedoch nicht aufzufinden...
Ja, die Pin-Belegung ist anders, das habe ich auchs schon festgestellt. hab mir auch ein passendes Kabel zusammengelötet, bei dem ich einfach nur die kabel vertauscht habe, es funzt trotzdem nicht...