Umwandeln

Moboso

Level-1
Beiträge
36
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Leute ,

kann mir vielleicht jemand sagen wie ich in FUP Daten einens MWs in REAL Zahlen umwandeln kann und umgekehrt ?
Was muss man da denn beachten ?

Lg
 
findest du doch im auswahlbaum
erst I_DI dahinter ein DI_R. allerdings brauchst du, wenn in einem nw sein soll eine tempvariable
 
suche dir die beiden Befehle in FUP raus. Ich habe im Moment kein Step7 vor mir. Aber wenn, dann heissen die Befehle gleich oder ähnlich
 
S7???

die Umwandlungen funktionieren nur mit 32bit Ganzzahlen

also I_DI, dann DI_R und rückwärts TRUNC (nur Ganzzahlanteil) oder CEIL (aufrunden) oder FLOOR (abrunden) oder ROUND (entsprechend Rundungsregeln runden) ...

[edit] bin ich wohl zu langsam heut [/edit]
 
Code:
      U(    
      L     MW    10
      ITD   
      T     #tmp
      SET   
      SAVE  
      CLR   
      U     BIE
      )     
      SPBNB _002
      L     #tmp
      DTR   
      T     MD    20
_002: NOP   0
ist in fup darstellbar.
aber wie man sieht, ist die lösung von marlob schöner
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Code:
*
      U(    
      L     MW    10
      T     #tmp
      SET   
      SAVE  
      CLR   
      U     BIE
      )     
      SPBNB _002
      L     #tmp
      DTR   
      T     MD    20
_002: NOP   0

mit #tmp als DINT auch funktioniert ... allerdings nur für den positiven Wertebereich
 
Also das I_DI und DI_R hat einwandfrei geklappt , aber wo findet man einen R_DI und ein DI_I .... um alles wieder zurück zu wandeln ?

Irgendwie versteh ich das nicht :(
 
drück mal bei offenem KOP/AWL/FUP - Editor Strg+K, erscheint links eine Auswahlliste (oder verschwindet :ROFLMAO: ) [geborgt bei Ralle] ... da dann unter Umwandler
 
Also das I_DI und DI_R hat einwandfrei geklappt , aber wo findet man einen R_DI und ein DI_I .... um alles wieder zurück zu wandeln ?

wie geschrieben habe ich alle Glieder gefunden , nur wie ich es realisieren kann , damit ich das Ganze rückwärts funktioniert versteh ich nicht

Aus Double Integer nach Integer :(
 
die vorzeichenrichtige umwandlung von DINT nach INT ist ein bißchen tricky ... man muß das vorzeichen erkennen

Code:
*
      U(    
      L     MD    10
      RND   
      T     MD    14
      UN    OV
      SAVE  
      CLR   
      U     BIE
      )     
      SPBNB _001
      L     MD    14
      L     DW#16#7FFFFFFF
      UD    
      T     MD     2
_001: NOP   0

sieht komisch aus, ist aber dafür direkt in FUP übersetzbar

die INT-Zahl steht dann vorzeichenrichtig in MW4 ... allerdings funktioniert das nur mit zahlen die auch in den INT-Wertebereich passen, bei größeren kommt Kokulores raus :rolleyes:

und hier nochmal, damit man es auch versteht *g*

Code:
*
      L     MD    10                    //REAL-Zahl
      RND                               //runden
      L     DW#16#7FFFFFFF
      UD                                //DW-und
      T     MD     2                    //als DW speichern
//vorzeichenrichtige Zahl liegt in MW4
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Ahso, jetzt weiss ich wie ihr das meint.

Aber wenn ich Dint nach BCD wandle dann gibt er am Ausgang ein DWORD aus.

Doch mein BCD nach Int verlangt am Eingang ein WORD.
 

Anhänge

  • iuh.jpg
    iuh.jpg
    22,9 KB · Aufrufe: 43
Doch mein BCD nach Int verlangt am Eingang ein WORD.

füge er ein MOVE ein, mit dem er die DWORD BCD-Zahl in ein temporäres WORD lädt ... das ist der Grund, warum das Vorzeichen verloren geht :rolleyes:

[edit] ist übrigens das selbe, als würdeste du die DINT-Zahl mit MOVE in eine INT-Zahl schieben - ZACK - Vorzeichen weg, aber du sparst dir den Umweg über BCD[/edit]
 
Zuletzt bearbeitet:
Ah verstehe , das muss ich jetzt mal versuchen.

Wie kommt man auf so Sachen, hattet ihr alle mal das selbe Problem ?
 
Zurück
Oben