(24.10.2013 07:43 )redhand schrieb: [ -> ]Wo sehe ich dann den vom Gerät zurückgegebenen String?
Das "Write Single Register" hat ja dann nur noch den "Exception Code" als Ausgang.
Dazu müsstest du debugging betreiben und in die VIs reinschauen.
(24.10.2013 07:43 )redhand schrieb: [ -> ]Oder muss ich, wenn ich zb die aktuelle Temperatur will, etwas "lesen" über "MB Serial Master Read"?
RICHTIG! Das/die entsprechenden Register aus der Doku raussuchen und über "Read Input Register" oder "Read Holding Register" auslesen. Du musst mal ausprobieren, was funktioniert, laut Doku sollte beides gehen.
(24.10.2013 07:43 )redhand schrieb: [ -> ]zu 1) -> Woher weiß das "Write Single Register" das es mit der Slave Adresse1 kommuniziert? Ich wähle ja über das "MB Serial Init" den COM-Port aus den ich ansprechen möchte oder?
Über den Cluster, den du angeschlossen hast.
(24.10.2013 07:43 )redhand schrieb: [ -> ]zu 2) -> Steht "WRITE Single Register" für SETZEN eines Registers´?
RICHTIG!
Gruß, Jens
(24.10.2013 08:37 )jg schrieb: [ -> ]RICHTIG! Das/die entsprechenden Register aus der Doku raussuchen und über "Read Input Register" oder "Read Holding Register" auslesen. Du musst mal ausprobieren, was funktioniert, laut Doku sollte beides gehen.
Es wird es wird
Ich möchte ja eine Temperatur bekommen. Derzeit habe ist am Jumo auch ein Temperaturfühler angeschlossen. Am Jumo kann ich die Temperatur sehen, also er funktioniert
Wenn ich jetzt das das Register zu Istwert auslese bekomme ich einen Wert über das Input Register. Ist das nun auch ein Hexcode? bzw hast du eine Ahnung wie ich diesen so umkonvertieren kann, sodass ich auch eine Temperatur sehe?
und nochmal danke! =)
Ergänzung: Wieso benötige ich die Umwandlung gemäß IEEE754(wie im Beispiel oben: Dezimal:275 -> Hex: 4389800) wenn es eine Hex-Tabelle gibt?
In einem Beispiel zum Auslesen von Werten in der Anleitung wird der Antwortwert 0000 41C8 in 25.0 übersetzt. Also hier wird es auch so gemacht.
Hallo redhand,
viel Spaß beim Erstellen und Nutzen einer Tabelle mit 2^32 Einträgen!
Gibt es in deinem Manual etwa einen Eintrag zum Code "C49A523D"?
Dein Hexwert 000041C8 wird nach Tauschen von LSW/MSW zu 41c80000, welches wiederum ein SGL mit dem Wert "25.00" ist. Ein typischer TypeCast also...
Umkehrung von Beitrag #15.
Dir ist schon klar, wie die Daten im Computer-RAM abliegen? Einfach als Binär-Information! Eine IEEE754-"Single" belegt im RAM 4 Byte, und die Binärinformation dieser 4 Byte kannst du natürlich auch in 2 U16 packen.
Gruß, Jens
Hallo,
nachdem ich einiges durchforstet habe schreibe ich nun doch ein neues Thema
Ich kommuniziere über eine RS232 mit einem Gerät.
Das Gerät erwartet einen Hex-Code und gibt mir als Antwort auch wieder einen solchen zurück.
Die Protikollbeschreibung ist beigefügt.
Beispielanfrage: 01 03 3100 0004 4AF5
-> 01: slave adresse; 03: Funktion; 3100:Adresse; 0004:Wortanzahl; 4AF5:Checksumme
Antwort: 010308 0000 41C8 0000 4120 4A9E
->hier sind die auszuwertenden Antwortteile: 0000 41C8 und 0000 4120
Frage: Gibt es eine VI die mir diese Hexcode nach IEEE 754 in eine Dezimalzahl wandelt?
Ist es möglich genau diese Werte aus dem Antwortstring rauszuziehen, sodass ich auch den "echten" Dezimalwert anzeigen lassen kann?
Grüße
Wozu jetzt ein neuer Thread? Das war doch schon geklärt? Wozu die Modbus-Protokoll-Beschreibung hochladen, du verwendest doch schon die Modbus-VIs? Gerd hatte dich auf "Typecast" hingewiesen!
Bsp: Abfrage der Adressen 0x0035, 2 Register abfragen und dann richtig typecasten:
[
attachment=46947]
Gruß, Jens
EDIT: Themen zusammengefügt.
Könntest du das als VI hochladen?
Naja das Problem ist, ich bekomme mit dem Modbus keine gescheiten Antworten.
Ich habe es nun folgendermaßen versucht (siehe Anhang), wieder über VISA.
So kann ich den kompletten Anfragestring eingeben und bekomme einen kompletten Antwortstring.
Nur an der Auswertung harpert es noch..
(25.10.2013 12:54 )redhand schrieb: [ -> ]Ich habe es nun folgendermaßen versucht (siehe Anhang), wieder über VISA.
So kann ich den kompletten Anfragestring eingeben und bekomme einen kompletten Antwortstring.
Entschuldige die harten Worte, aber das ist doch jetzt "Blödsinn". Dein VI passt jetzt zufällig genau auf das 1 Bsp. im Dokument, nämlich auf die Abfrage der 2 Sollwerte auf Adresse 0x3100 und 0x3102. Und selbst hier hast du einen Fehler, die Rückmeldung ist 13 Byte lang, nicht 12.
Was machst du, wenn du 8 Register abfragen willst? Dein VI wird nicht funktionieren.
Hier ein VI, das IMHO genau auf das Bsp passen muss:
[
attachment=46951]
Gruß, Jens
Hallo redhand,
also wirklich...
Wenn du weiterhin auf die ModBus-VIs verzichtest, musst du halt selbst die passenden Bytes aus dem String ausschneiden und per TypeCast (wie schon mehrfach gezeigt und erläutert) in ein FLOAT aka SGL umwandeln!
Das sollte doch nun wirlich nicht so schwer sein nach all den Erläuterungen! Oder sollen wir hier für dich die dafür nötigen 3 oder 4 Funktionen in dein VI programmieren?