Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Datentyp single (Delphi) in Datentyp Gleitkomma (S7) wandeln (https://www.delphipraxis.net/151782-datentyp-single-delphi-datentyp-gleitkomma-s7-wandeln.html)

Delphiuser1987 1. Jun 2010 14:44


Datentyp single (Delphi) in Datentyp Gleitkomma (S7) wandeln
 
Hallo, ich bin Anfänger und habe folgendes Problem.
Ich muss den Datentyp single (4Byte) in den Datentyp Gleitkomma (4Byte) (Simatic Siemens S7) übetragen.
Denn wenn ich in Delphi einen single Wert einlese (z.B. 1,6) dann kommt auf der SPS Seite (Datentyp Gleitkomma) komplett was anderes heraus.
Jetzt wollte ich wissen wie ich das in Delphi machen muss dass die beiden Typen übereinstimmen.

Danke für eure Hilfe :)

mkinzler 1. Jun 2010 14:45

Re: Datentyp single (Delphi) in Datentyp Gleitkomma (S7) wan
 
Was kommt den heraus?

Bernhard Geyer 1. Jun 2010 14:48

Re: Datentyp single (Delphi) in Datentyp Gleitkomma (S7) wan
 
Wie werden die Daten übertragen?

ich vermute mal das du von Big Endian auf Little Endian wandeln musst um die Richtige Byte-Reihenfolge zu haben.

Delphiuser1987 1. Jun 2010 15:00

Re: Datentyp single (Delphi) in Datentyp Gleitkomma (S7) wan
 
-8.7546383e^23 kommt heraus, also völliger quatsch

Delphiuser1987 1. Jun 2010 15:02

Re: Datentyp single (Delphi) in Datentyp Gleitkomma (S7) wan
 
die daten übetrage ich via profibus
habe eine hilscher karte in delphi eingebunden.
vom delphi programm übetrage ich dann daten zur sps und anderst herum ebenfalls

Delphiuser1987 1. Jun 2010 15:03

Re: Datentyp single (Delphi) in Datentyp Gleitkomma (S7) wan
 
wie mache ich das mit dem wandeln ?????

gammatester 1. Jun 2010 15:23

Re: Datentyp single (Delphi) in Datentyp Gleitkomma (S7) wan
 
Zitat:

Zitat von Delphiuser1987
wie mache ich das mit dem wandeln ?????

Wenn Dein Ergebnis -8.7546383e^23 zu den 1.6 gehört, liegt es nicht an der Byte-Reihenfolge, hier eine function, die ein longint umdreht, via absolute longint und single kannst Du auch single umdrehen. Allerdings ist das Ergebnis für 1,6 dann -429492192.0! (in Bytes $CD $CC $CC $3F --> $3F $CC $CC $CD )
Delphi-Quellcode:
function RB(A: longint): longint;
  {-reverse byte order in longint}
begin
  RB := ((A and $FF) shl 24) or ((A and $FF00) shl 8) or ((A and $FF0000) shr 8) or ((A and longint($FF000000)) shr 24);
end;

var
  s: single;
  l: longint absolute s;
  ..
  l := RB(l);

himitsu 1. Jun 2010 15:30

Re: Datentyp single (Delphi) in Datentyp Gleitkomma (S7) wan
 
http://www.delphipraxis.net/internal...t.php?t=148180
und
http://www.delphipraxis.net/internal...t.php?t=177820

Aber eventuell nutzt S7 ein anderes Datenformat und nicht IEEE 754?

mkinzler 1. Jun 2010 15:31

Re: Datentyp single (Delphi) in Datentyp Gleitkomma (S7) wan
 
Bitte vermeidet Mehrfachposts!

Delphiuser1987 2. Jun 2010 07:15

Re: Datentyp single (Delphi) in Datentyp Gleitkomma (S7) wan
 
danke für eure hilfe


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:23 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz