Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!
(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
Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)
!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!
(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! =)
24.10.2013, 09:43 (Dieser Beitrag wurde zuletzt bearbeitet: 24.10.2013 09:46 von redhand.)
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.
24.10.2013, 10:21 (Dieser Beitrag wurde zuletzt bearbeitet: 24.10.2013 10:23 von GerdW.)
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
Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)
!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!
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.
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
Anzeige
25.10.2013, 11:57 (Dieser Beitrag wurde zuletzt bearbeitet: 25.10.2013 11:59 von jg.)
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:
Gruß, Jens
EDIT: Themen zusammengefügt.
Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)
!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!
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.
(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:
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?