Zuviel Werbung? - > Hier kostenlos beim SPS-Forum registrieren

Seite 5 von 5 ErsteErste ... 345
Ergebnis 41 bis 47 von 47

Thema: Wandlung Real zu Int

  1. #41
    Registriert seit
    17.06.2004
    Ort
    Offenau
    Beiträge
    3.758
    Danke
    209
    Erhielt 421 Danke für 338 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von PN/DP Beitrag anzeigen
    Setzt kein OV, weil +I einfach nur die unteren 16-Bit von #zuIntZuWandelndeZahl nimmt. + 0 ergibt dann auf jeden Fall einen gültigen INT-Wert.
    Wenn nach der + 0 allerdings das Ergebnis = #zuIntZuWandelndeZahl ist, dann ist #zuIntZuWandelndeZahl im für INT gültigen Bereich.

    Harald
    Das hatte Ich ja vermutet, das die I Funktionen auch die Akku Werte vor der Operation nur 16 Bit breit auswerten, und nicht erst das Ergebnis!

    Aber die Prüfung:

    Code:
          PUSH                      //DINT-Wert in Akku2 merken
          ITD                       //Akku1 INT -> DINT
          ==D
    find Ich gut! Ich hab da immer die Obergrenze und Untergrenze verglichen...
    Geändert von Jochen Kühner (07.03.2011 um 12:40 Uhr)
    ---------------------------------------------
    Jochen Kühner
    https://github.com/jogibear9988/DotN...ToolBoxLibrary - Bibliothek zur Kommunikation mit PLCs und zum öffnen von Step 5/7 Projekten

  2. Folgender Benutzer sagt Danke zu Jochen Kühner für den nützlichen Beitrag:

    JesperMP (07.03.2011)

  3. #42
    Registriert seit
    06.10.2004
    Ort
    Kopenhagen.
    Beiträge
    4.639
    Danke
    377
    Erhielt 803 Danke für 644 Beiträge

    Standard

    Dies funktioniert, aber es kostet zweimal ein DINT vergleicher.
    Code:
     
          L     MD   100
          RND   
          T     #diTEMP
          L     L#32767
          >D    
          JC    _er1
          L     #diTEMP
          L     L#-32768
          <D    
          JC    _er2
          L     #diTEMP
          T     MW   110
          JU    end
    _er1: S     M     10.0                  // >32767
          JU    end
    _er2: S     M     10.1                  // <-32768
          JU    end
    end:  NOP   0
    Jesper M. Pedersen

  4. #43
    Registriert seit
    06.10.2004
    Ort
    Kopenhagen.
    Beiträge
    4.639
    Danke
    377
    Erhielt 803 Danke für 644 Beiträge

    Standard

    Funktionierts, und belastet den CPU en klein bisschen weninger:

    Code:
          L     MD   100
          RND   
          T     #diTEMP
          PUSH  
          ITD   
          ==D   
          JCN   _er1
          L     #diTEMP
          T     MW   110
          JU    end
    _er1: S     M     10.0                  // >32767 / <-32768
    end:  NOP   0
    Jesper M. Pedersen

  5. #44
    Registriert seit
    17.06.2004
    Ort
    Offenau
    Beiträge
    3.758
    Danke
    209
    Erhielt 421 Danke für 338 Beiträge

    Standard

    Zitat Zitat von JesperMP Beitrag anzeigen
    Dies funktioniert, aber es kostet zweimal ein DINT vergleicher.
    Code:
     
          L     MD   100
          RND   
          T     #diTEMP
          L     L#32767
          >D    
          JC    _er1
          L     #diTEMP
          L     L#-32768
          <D    
          JC    _er2
          L     #diTEMP
          T     MW   110
          JU    end
    _er1: S     M     10.0                  // >32767
          JU    end
    _er2: S     M     10.1                  // <-32768
          JU    end
    end:  NOP   0
    So ähnlich mach Ich meine Bereichsprüfungen auch immer. Ich lade nur den zu vergleichenden Wert beim ersten >D als zweites und mach ein <=D draus, so muss Ich beim 2ten vergleich nur noch die zweite Grenze laden. (spart eine Zeile Code, juhu!). Aber beim Int Bereich vergleich ist die Lösung von Harald natürlich super!
    ---------------------------------------------
    Jochen Kühner
    https://github.com/jogibear9988/DotN...ToolBoxLibrary - Bibliothek zur Kommunikation mit PLCs und zum öffnen von Step 5/7 Projekten

  6. #45
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.314
    Danke
    932
    Erhielt 3.329 Danke für 2.688 Beiträge

    Standard

    Zitat Zitat von JesperMP Beitrag anzeigen
    Funktionierts, und belastet den CPU en klein bisschen weninger:

    Code:
          L     MD   100
          RND   
          T     #diTEMP
          PUSH  
          ITD   
          ==D   
          JCN   _er1
          L     #diTEMP
          T     MW   110
          JU    end
    _er1: S     M     10.0                  // >32767 / <-32768
    end:  NOP   0
    [Optimizer] - kann ich mir nicht verkneifen
    #diTEMP kann man weglassen. Und durch Umstellen einen Jump einsparen. Kürzer geht es dann wohl nicht mehr.
    Code:
          L     MD   100
          RND   
          PUSH  
          ITD   
          <>D   
          =     M     10.0                  // >32767 / <-32768
          JC    end
          T     MW   110
    end:  NOP   0
    Ich muß zugeben, so sieht der Code schon ziemlich perfekt aus.

    Harald
    Es ist immer wieder überraschend, wie etwas plötzlich funktioniert, sobald man alles richtig macht.

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  7. #46
    Registriert seit
    08.08.2007
    Ort
    Dresden
    Beiträge
    9.648
    Danke
    1.059
    Erhielt 2.046 Danke für 1.627 Beiträge

    Standard

    Zitat Zitat von PN/DP Beitrag anzeigen
    Ich muß zugeben, so sieht der Code schon ziemlich perfekt aus.
    brauch man den M10.0?
    [SIGNATUR]
    Ironie setzt Intelligenz beim Empfänger voraus.
    [/SIGNATUR]

  8. #47
    Registriert seit
    06.10.2004
    Ort
    Kopenhagen.
    Beiträge
    4.639
    Danke
    377
    Erhielt 803 Danke für 644 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Was zu tun wenn etwas schief geht muss man ja entscheiden.
    Einfach ignorieren ohne Warnung ist nach meiner Meinung nicht i.O.

    PN/DP, ja sieht "perfekt" aus.
    Jesper M. Pedersen

Ähnliche Themen

  1. Wandlung 32Bit Real nach 16Bit Gleitkomma
    Von BadTaste im Forum CODESYS und IEC61131
    Antworten: 11
    Letzter Beitrag: 04.10.2017, 14:03
  2. DTR - Ganzzahl-Wandlung to real - AWL
    Von schneijo im Forum Simatic
    Antworten: 4
    Letzter Beitrag: 26.08.2011, 16:19
  3. Wandlung Zahlenwerte
    Von Martin L. im Forum Simatic
    Antworten: 8
    Letzter Beitrag: 10.04.2009, 20:05
  4. Wandlung von Real => INT
    Von Heinz im Forum Simatic
    Antworten: 4
    Letzter Beitrag: 29.07.2005, 12:33
  5. Wandlung WSCAD -> Eplan
    Von PeterEF im Forum E-CAD
    Antworten: 12
    Letzter Beitrag: 25.01.2005, 22:06

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •