Supportforum von www.raeppel.de

Forum für SPS-Tools & Automatisierungstechnik
Aktuelle Zeit: 28.03.2024, 21:37

Alle Zeiten sind UTC + 1 Stunde


Forumsregeln


Die Forumsregeln lesen



Ein neues Thema erstellen Auf das Thema antworten  [ 7 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: seriell empfangene CHAR -> REAL
BeitragVerfasst: 05.06.2008, 19:15 
Schönen guten Abend!

Ich empfange per seriellem CP eine CHAR-Kette und muss diese in eine REAL wandeln und weiterverarbeiten. Wie geht man da vor?

Nils


Nach oben
  
 
 Betreff des Beitrags:
BeitragVerfasst: 06.06.2008, 08:28 
Hallo nils,

zunächst muss man erstmal folgendes wissen:
Zitat:
char '0' entspricht Hexadezimal 30
char '1' entspricht Hexadezimal 31
...
...
char '9' entspricht Hexadezimal 39

Daraus ergibt sich in etwa folgende Herangehensweise:

In diesem Beispiel gehe ich von einer 4 Stelligen Zeichenkette aus, kann man ja beliebig erweitern wenn man mehr braucht. :)

Code:
//erste Stelle von links wandeln

 
L #char1
BTI            //in Integer wandeln
L 30           //30 subtrahieren um die korrekte Ziffer als Int zu erhalten
-I
L 1000         //multiplizere mit 1000
*I
T #tausender   //Zwischenergebnis (Word)


//zweite Stelle von links wandeln

L #char2
BTI            //in Integer wandeln
L 30           //30 subtrahieren um die korrekte Ziffer als Int zu erhalten
-I
L 100         //multiplizere mit 100
*I
T #hunderter   //Zwischenergebnis (Word)

//dritte Stelle von links wandeln

L #char3
BTI            //in Integer wandeln
L 30           //30 subtrahieren um die korrekte Ziffer als Int zu erhalten
-I
L 10          //multiplizere mit 10
*I
T #zehner     //Zwischenergebnis (Word)

//vierte Stelle von links wandeln

L #char4
BTI            //in Integer wandeln
L 30           //30 subtrahieren um die korrekte Ziffer als Int zu erhalten
-I
T #einer      //Zwischenergebnis (Word)


//das Ganze zusammenrechnen

L #tausender
L #hunderter
+I
L #zehner
+I
L #einer
+I
T #int_zahl   //Die Zeichenkette als Integerzahl

//Dieses nun in Real wandeln

L #int_zahl
ITD
DTR
T #real_zahl  //Das Endergebnis als Gleitkommazahl

.



.


Nach oben
  
 
 Betreff des Beitrags:
BeitragVerfasst: 08.06.2008, 11:53 
Offline

Registriert: 25.01.2008, 18:34
Beiträge: 34
Wohnort: Dillenburg
besser kann man es nicht erklären!

Ich bin aber der Meinung das man auch den Wert von Null einfach mit '0' laden kann und abziehen kann. Wer das ganze auch noch mit Dez Zahlen machen will dem sei gesgat das die '0' = dez 48 entspricht.


MFG

Chris

_________________
Der Vorteil der Klugheit besteht darin, dass man sich dumm stellen kann. Das Gegenteil ist schon schwieriger.


Nach oben
 Profil  
 
 Betreff des Beitrags: Wandlung
BeitragVerfasst: 08.06.2008, 15:23 
Offline
Site Admin

Registriert: 24.01.2008, 21:55
Beiträge: 175
Hallo,

strukturell find ichs ok. Aber wieso das BTI für die Zeichen? Es sind doch noch gar keine Zahlen. Wie schon Chris geschrieben hat:

L #char_x
L W#16#30 // '0' subtrahieren um die korrekte Ziffer als Int zu erhalten
-I

André

_________________
www.raeppel.de
mit innovativen SPS-Tools schneller ans Ziel


Nach oben
 Profil  
 
 Betreff des Beitrags: Stimmt
BeitragVerfasst: 09.06.2008, 11:12 
Hallo,
Ihr habt recht!
Das 'BTI' ist überflüssig. :)

Gruß easytex


Nach oben
  
 
 Betreff des Beitrags: Re: seriell empfangene CHAR -> REAL
BeitragVerfasst: 31.07.2008, 08:56 
Offline

Registriert: 24.07.2008, 08:43
Beiträge: 1
Hallo, bin evtl. ein bisschen spät dran, aber ich habe eine Funktion, die aus einem 10-stelligen char-array in eine Gleitkommazahl wandelt, wobei egal ist, wo der Dezimalpunkt steht.

Code:
FUNCTION "CHARtoREAL" : REAL
TITLE =
AUTHOR : SKSE
FAMILY : convert
NAME : CHTORE
VERSION : 0.2


VAR_INPUT
  str : ARRAY  [1 .. 10 ] OF CHAR ;   
END_VAR
VAR_TEMP
  tstr : STRING  [10 ];   
  Multiplikator : REAL ;   
  Divisor : REAL ;   
  Realausgabe : REAL ;   
  RetVal : INT ;   
END_VAR


Bei interesse, schicke ich euch die AWL-Quelle

Gruß
Stefan


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: seriell empfangene CHAR -> REAL
BeitragVerfasst: 02.08.2008, 10:07 
Offline
Site Admin

Registriert: 24.01.2008, 21:55
Beiträge: 175
Hallo Stefan,

stells doch in Downloadbereich.

André

_________________
www.raeppel.de
mit innovativen SPS-Tools schneller ans Ziel


Nach oben
 Profil  
 
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 7 Beiträge ] 

Alle Zeiten sind UTC + 1 Stunde


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 10 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
cron
Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de