Modbus RTU Float lesen
Modbus RTU Float lesen
Hallo,
ich habe ein Red-y Flow-Sensor von der Firma Vögtlin www.voegtlin.com und möchte die Gas-Flow-Werte aus lesen.
Hier das dazu gehörige Handbuch
http://voegtlin.sharepointhosting.ch/DOCUMENTS/329-3027_de_manualsmart110.pdf
Leider fehlt mir das Fachwissen wie ich den Modbus RTU einstellen muss. Vielleicht kann mir einer von euch dabei helfen.
Gruß
ich habe ein Red-y Flow-Sensor von der Firma Vögtlin www.voegtlin.com und möchte die Gas-Flow-Werte aus lesen.
Hier das dazu gehörige Handbuch
http://voegtlin.sharepointhosting.ch/DOCUMENTS/329-3027_de_manualsmart110.pdf
Leider fehlt mir das Fachwissen wie ich den Modbus RTU einstellen muss. Vielleicht kann mir einer von euch dabei helfen.
Gruß
Zuletzt geändert von h.pantel am Mittwoch 25. August 2010, 12:39, insgesamt 1-mal geändert.
Re: Modbus RTU für Vögtlin Red-y
Viel Info!
Also zunächst gilt es 4 Bytes aus aufeinander folgenden Register-Adressen zu lesen (mit ModbusFunktion #3).
Das ist noch recht einfach... siehe Anlage.
Dann muss man die 4 Bytes noch in einen 32-Bit Float umrechnen. Wie das geht ist mir auf Anhieb auch nicht ganz klar.
Da hilft nur lesen, lesen, lesen bis man die Codierung versteht...z.B.
http://de.wikipedia.org/wiki/IEEE_754
Also zunächst gilt es 4 Bytes aus aufeinander folgenden Register-Adressen zu lesen (mit ModbusFunktion #3).
Das ist noch recht einfach... siehe Anlage.
Dann muss man die 4 Bytes noch in einen 32-Bit Float umrechnen. Wie das geht ist mir auf Anhieb auch nicht ganz klar.
Da hilft nur lesen, lesen, lesen bis man die Codierung versteht...z.B.
http://de.wikipedia.org/wiki/IEEE_754
- Dateianhänge
-
- red-y.prj
- (2.85 KiB) 519-mal heruntergeladen
ABACOM support
Re: Modbus RTU für Vögtlin Red-y
Hallo,
gibt es die Möglichkeit eigene Bausteine zu programmieren?
Ich habe nämlich fertige Programme in C/C++ und Visualbasic wie bereits geschrieben.
Vielleicht auch nur für die Umrechnung von 4 auf 32 bit, denn der Modbus 3 funktioniert schon mit Einschränkungen.
Das Signal am Ausgang Reg1 ist nicht korrekt. Alle anderen Signale sind Okay (ERR, CN, BSY).
Gruß Hermann
gibt es die Möglichkeit eigene Bausteine zu programmieren?
Ich habe nämlich fertige Programme in C/C++ und Visualbasic wie bereits geschrieben.
Vielleicht auch nur für die Umrechnung von 4 auf 32 bit, denn der Modbus 3 funktioniert schon mit Einschränkungen.
Das Signal am Ausgang Reg1 ist nicht korrekt. Alle anderen Signale sind Okay (ERR, CN, BSY).
Gruß Hermann
Re: Modbus RTU für Vögtlin Red-y
Jo, gibt es.
Sieh dir die PL-Beispiele zur DLL-Programmierung an.
C:\Programme\ProfiLab-Expert40\Beispiele\COUNTERDLL-C++Builder source
Mike
Sieh dir die PL-Beispiele zur DLL-Programmierung an.
C:\Programme\ProfiLab-Expert40\Beispiele\COUNTERDLL-C++Builder source
Mike
Re: Modbus RTU Float lesen
Darum geht es: Input Register und Holding Register sind bei ModBus 16-Bit Integer (word). ProfiLab liefert beim Lesen der Register daher ganzahlige Werte zwischen 0 und 65535 (FFFFh) an den REGx-Ausgängen der Modbus-Komponenten.
Um nun auch Flieskommazahlen per Modbus zu übertragen wird von Geräteherstellern häufig folgender 'Trick' angewendet: Zwei aufeinanderfolgende ModBus-Register mit je 16 Bit werden gedanklich zu einem 32-Bit-Register vereint. In diese 32-Bit wird nun die Fliesskommazahl nach IEEE-754 codiert. (Welches der beiden Register das High Word und welches das Low Word ist scheint leider nicht ganz eindeutig und vom Hersteller abhängig zu sein.)
Um nun einen solchen FLOAT-Wert zu lesen, muss man also zunächst die beiden (ganzzahligen) ModBus-Register lesen, und dann aus den 32 Bits wieder die zugehörige Flieskommazahl errechnen. Siehe auch:
http://www.guidogybels.net/index.html?floats.html
http://www.h-schmidt.net/FloatApplet/IEEE754de.html
Da die Dekodierung mit ProfiLab in der Tat nicht ganz einfach ist, stellen wir anliegend ein Beispiel und ein Makro für die Dekodierung bereit (ProfiLab Expert 4.0). (Auf die vorgeschlagene Programmierung einer DLL kann man in diesem Fall wohl verzichten, wäre aber auch eine Lösung.)
Um nun auch Flieskommazahlen per Modbus zu übertragen wird von Geräteherstellern häufig folgender 'Trick' angewendet: Zwei aufeinanderfolgende ModBus-Register mit je 16 Bit werden gedanklich zu einem 32-Bit-Register vereint. In diese 32-Bit wird nun die Fliesskommazahl nach IEEE-754 codiert. (Welches der beiden Register das High Word und welches das Low Word ist scheint leider nicht ganz eindeutig und vom Hersteller abhängig zu sein.)
Um nun einen solchen FLOAT-Wert zu lesen, muss man also zunächst die beiden (ganzzahligen) ModBus-Register lesen, und dann aus den 32 Bits wieder die zugehörige Flieskommazahl errechnen. Siehe auch:
http://www.guidogybels.net/index.html?floats.html
http://www.h-schmidt.net/FloatApplet/IEEE754de.html
Da die Dekodierung mit ProfiLab in der Tat nicht ganz einfach ist, stellen wir anliegend ein Beispiel und ein Makro für die Dekodierung bereit (ProfiLab Expert 4.0). (Auf die vorgeschlagene Programmierung einer DLL kann man in diesem Fall wohl verzichten, wäre aber auch eine Lösung.)
- Dateianhänge
-
- IEEE754.zip
- (4.91 KiB) 650-mal heruntergeladen
ABACOM support
Re: Modbus RTU Float lesen
Herzlichen DANK für die Info ich werde das heute mal ausprobieren!!!
Gruß Hermann
Gruß Hermann
Re: Modbus RTU Float lesen
Noch mal herzlichen Dank!! Das Programm läuft einwandfrei!!!! Gruß Hermann
Re: Modbus RTU Float lesen
Hallo,
können Sie mir verraten wie Sie das mit dem Float hinbekommen haben?
Besten Dank
können Sie mir verraten wie Sie das mit dem Float hinbekommen haben?
Besten Dank
Re: Modbus RTU Float lesen
Hat sich erledigt, man sollte vorher genau lesen