# 4 Byte (float) auf Real?



## klauserl (31 Januar 2008)

Hallo!
Lese über Profibus 4 Byte ein, die im Float (was immer das auch ist) Format ausgegeben werden.
Wie bringe ich dieses Format auf eine brauchbare (z.B. Real) Darstellung.
Habe mir die einzelnen Bytes angeschaut, kann aber mit den Werten nichts anfangen, egal in welcher Reihenfolge ich sie auf zusammenbastle.

Danke!?


----------



## Rainer Hönle (31 Januar 2008)

Die 4-Byte-Float-Zahl entspricht der 4-Byte-Real-Zahl. Eine Konvertierung ist somit nicht notwendig. Die Zahlz ist natürlich in ihrer internen Repräsentation und in keiner Textdarstellung. Mit was soll die Zahl angeschaut werden?


----------



## Ralle (31 Januar 2008)

Liest du die in ein Rechnerprogramm ein oder in die SPS? Welche Programmiersprache nutzt du?


----------



## klauserl (31 Januar 2008)

Ralle schrieb:


> Liest du die in ein Rechnerprogramm ein oder in die SPS? Welche Programmiersprache nutzt du?


Hallo!
Habe eine SPS Siemens CPU 315/2DP
In der Variablentabellenansicht hab ich auch die 4Bytes sichtbar, und es tut sich auch in jedem Byte was.
Nur kann ich die Bytes zusammenstellen wie ich will, aber kann damit keine brauchbare Anzeige ( der Wert soll etwa zwischen 12 und 15 dezimal) sichtbar machen.
L.G.


----------



## Larry Laffer (31 Januar 2008)

... von welchem PB-Teilnehmer (Hersteller und Typ) erhälst du denn den FLOAT ? Möglicherweise deckt sich das Format deines FLOAT nicht mit dem Siemens-Format REAL. Macht der Hersteller dazu keine Angaben (Art des Aufbau's) ?

Gruß
LL


----------



## Rainer Hönle (31 Januar 2008)

Zeig den die vier Bytes asl DWORD im Format Gleitpunkt an. Die Bytes nicht irgendwie zusammenstupfeln. Wie beobachtest Du dies 4 Bytes jetzt? Operand und Darstellung?


----------



## marlob (31 Januar 2008)

Also der Wert der rein kommt soll zwischen 12 und 15 liegen.
Sag uns doch mal was du in den 4 Bytes für Werte hast, die dann diesen Wert zwischen 12 und 15 ergeben


----------



## Zottel (31 Januar 2008)

klauserl schrieb:


> Hallo!
> ...Nur kann ich die Bytes zusammenstellen wie ich will, aber kann damit keine brauchbare Anzeige ( der Wert soll etwa zwischen 12 und 15 dezimal) sichtbar machen.


Hast du schon mit REAL in der S7 gearbeitet?
Wenn du folgendes Progrämmchen laufen läßt:
L MD0
L 1.111111
+R
T MD0
und beobachtest die Akkuinhalte, dann kannst du wählen, ob du Hexadezimal oder Gleitkomma sehen willst.
In Hex passiert genau dass was du beschreibst: "... es tut sich auch in jedem Byte was."
Wenn deine Bytefolge vom Profibus z.B. ab MB 17 (d.h in MB17,18,19,20) abgelegt wird, dann soltest du beim Beobachten von MD17  eine sinnvolle Zahl sehen.
Fall, gibt es 3 Möglichkeiten:
- 1. Dein PB-Teilnehmer verwendet eine gerade umgekerte Anordnung der Bytes (Intel-Format, little endian) als die Simatic. In diesem Fall kannst du bei der Parametrierung angeben, daß du es anders brauchst. Wenn nicht mußt du das 1. Byte mit dem 4. und das 2. mit dem 3. tauschen.
- 2. Dein PB-Teilnehmer verwendet eine Anordnung der Bytes, die weder dem Intel- noch dem Motorola-Standard entspricht (habe ich schon gesehen bei über zwei Modbus-Worte verteilten REALS). Dann kannst du probieren. Es gibt 24 Möglichkeiten 4 Bytes anzuordnen.
- 3. Dein PB-Teilnehmer verwendet sein ganz eigenes Format. Da hilft nur, den Hersteller fragen, ob er Doku oder gleich eine Umwandlungsfunktion bereitstellt.


----------



## klauserl (31 Januar 2008)

Hallo
Es handelt sich um den Messumformer
Siemens Profimess!!!

Habe nur folgendes Datenblatt.

http://www.mesuco.ch/uploads/media/KBR_08C4.gsd

L.G


----------



## Ralle (31 Januar 2008)

Geh mal in die Hardwarekonfig. Doppelclick auf den Profimess, dann den Reiter "Parametrieren" und dort unter "Gerätespezifische Parameter", die Einstellung ändern.


----------



## MSB (31 Januar 2008)

Nur ein Beispiel:
L PED (Adresse n von dem Modul voltage PH-N L1-L3)
T MD0
(n ist die Anfangsadresse des Moduls)

Jetzt schaust du MD0 in einer VAT als REAL an, was steht da nun?

Float = Englisch für Gleitpunkt

Mfg
Manuel


----------



## klauserl (31 Januar 2008)

Ralle schrieb:


> Geh mal in die Hardwarekonfig. Doppelclick auf den Profimess, dann den Reiter "Parametrieren" und dort unter "Gerätespezifische Parameter", die Einstellung ändern.


 
Danke mal *allen* vorab für die rasche Hilfe!

Komm heut nicht mehr an die Sache ran.
Werde ich morgen gleich probieren!!!
L.G.


----------



## klauserl (1 Februar 2008)

Hallo!
Danke für die ganzen Tipps!!!

Steck noch immer bei meinem Problem!
Ich weiß noch immer nicht wie ich die 4 Bytes zusammenstellen muss, um eine Real Zahl zu erhalten.
Hab nun eine Beschreibung des Float Formates gefunden. Gibts denn nicht eine Funktion, die das auf eine brauchbare Zahl wandeln kann???

Danke!?!


----------



## Rainer Hönle (1 Februar 2008)

Wo steht denn die Zahl? Im PE? Dann einfach PED xxx bei Stausvar eingeben und als Format Gleitpunkt (wie bereits geschrieben). Wenn es im Merkerbereich steht (nach L PED xxx T MD yyy), dann MD xxx usw. Oder was ist genau die aktuelle Frage?


----------



## MSB (1 Februar 2008)

Was wird nun in der so deklarierten Variablentabelle angezeigt?
Das schlimmste was dir dann noch passieren kann (falls der Wert falsch ist),
ist der von Ralle hier beschriebene Punkt.

Mfg
Manuel


----------



## Larry Laffer (1 Februar 2008)

klauserl schrieb:


> Gibts denn nicht eine Funktion, die das auf eine brauchbare Zahl wandeln kann ???


 
Soweit ich das beurteilen kann entspricht der Aufbau deines FLOAT genau dem Siemens REAL-Format.

Des weiteren siehe MSB und Ralle ...

Gruß
LL


----------



## Rainer Hönle (1 Februar 2008)

Larry Laffer schrieb:


> Soweit ich das beurteilen kann entspricht der Aufbau deines FLOAT genau dem Siemens REAL-Format.
> 
> Des weiteren siehe MSB und Ralle ...
> 
> ...



Das ist definitiv so. Das habe ich bereits in meinem ersten Beitrag geschrieben. Es könnte nur sein, dass die Bytereihenfolge verdreht ist. Wenn wir endlich eine Antwort auf die mehrfach gestellten Fragen "Was wird in welcher Darstellung wie angezeigt" bekommen, können wir dies auch beurteilen. Warten wir weiter ...


----------



## klauserl (1 Februar 2008)

Das mit der Bytereihenfolge ist ein guter Tipp.
Ich glaub das meine GSD nicht die ganz richitge ist.
Werd mich mal um ne aktuelle umscchauen müssen.
Besten Dank nochmals für eure Hilfe!!!
L.G.


----------



## Rainer Hönle (1 Februar 2008)

Könntest Du auch so nebenbei mal unsere Fragen beantworten? (Wie, in welcher Darstellung, was etc.) Möglichkeiten gibt es viele. Um zielgerichtet vorzugehen habe ich dies bereits vor 24 Stunden gefragt (war auch nicht der einzige) und noch keine Antwort erhalten.


----------



## MSB (1 Februar 2008)

@klauserl
Da du uns ja offensichtlich allen nicht glaubst, oder nicht liest was wir schreiben:

Hier das PDF zu Profibus-Option des Multimess, welcher übrigens von KBR und nicht von Siemens ist!
Sehr schön ist übrigens folgendes Kapitel "Beispiel zur Einbindung in eine Simatic-Steuerung
S7-300"

Anhang anzeigen DTDTLX0007_1505-1_DE13_MMESS3-Profibus.pdf


Mfg
Manuel


----------



## Torsten05 (3 Februar 2008)

Hi,

scheint ein typischer Anfängerfehler bei der Einstellung der Darstellung zu sein. Hatte erst letzte Woche einen Anruf:" Die Gegenstelle sendet mir 512, aber bei mir kommt immer nur 200 an. Wir haben schon alles versucht..."

"Schalt mal die Dartellung auf Dezimal".

"Öhh..."

Torsten


----------



## Zefix (4 Februar 2008)

Torsten05 schrieb:


> Hi,
> 
> scheint ein typischer Anfängerfehler bei der Einstellung der Darstellung zu sein. Hatte erst letzte Woche einen Anruf:" Die Gegenstelle sendet mir 512, aber bei mir kommt immer nur 200 an. Wir haben schon alles versucht..."
> 
> ...


LOL bei mir auch letzte Woche:
Eru mit deiner Laufenden Nummer stimmt was nicht, die zählt immer um 10 oder so gleich hoch.
Ich: Hä? Schalt auf Dez Ansicht 
Er:Hmmpf


----------



## klauserl (7 Februar 2008)

Hallo!
Sorry war die letzten Tage krank.
Das Problem lag doch an der falschen GSD.
Nach 2 h Telefongespräch mit dem Vertreiber konnte ich das Problem lösen. 
Lösung: low byte und high byte tauschen (also Byte1 mit Byte4)
und die beiden inneren bytes auch tauschen (also Byte2 mit Byte3)

Dann endlich konnte ich die Werte anzeigen.

Nochmals Danke für eure Hilfe!!!


----------



## Pizza (7 Februar 2008)

Zottel schrieb:


> - ... Dein PB-Teilnehmer verwendet eine gerade umgekerte Anordnung der Bytes (Intel-Format, little endian) als die Simatic. In diesem Fall kannst du bei der Parametrierung angeben, daß du es anders brauchst. Wenn nicht mußt du das 1. Byte mit dem 4. und das 2. mit dem 3. tauschen...
> .


 
wer lesen kann... 

Bei "undefinierten" Werten hilft es manchmal die Sache in einer VAT in verschiedenen Darstellungen anzuschauen.


----------

