Datentypen, Grenzwerte; Systemkonstante

bitzaehler
2020-12-22
2020-12-23
  • bitzaehler - 2020-12-22

    Hallo,
    gibt es die Möglichkeit (zB. beim Überlauf) auf die min und max Grenzen der Datentypen über Systemkonstante zuzugreifen.
    Klar kann man diese manuell als Konstante eingeben, da viele allgemein bekannt sind, aber bei selten verwendet wird muss nachgeschlagen werden und Tippfehler nicht ausgeschlossen.
    danke

     
  • byt0x - 2020-12-22

    Ich würde es mit sizeof() realisieren.

     
    • Ingo

      Ingo - 2020-12-22

      sizeof ist jetzt auch nicht so ganz straight, oder!? Damit bekommst du ja
      nur die Datentypbreite in, also wieviele Bytes der Datentyp belegt. Wie
      realisierst du das dann?

      So? 😉

      EXP(2, sizeof(bla) * 8 - 1)
      
       
      • byt0x - 2020-12-23

        Klar, warum nicht? Gepaart mit einem "typeof()" (https://forge.codesys.com/forge/talk/Engineering/thread/9092152d36/) ist es möglich den Datentyp zu berücksichtigen und damit für jeden Datentyp die MAX und MIN Werte zu berechnen. Kann man dann noch als Methode in eine Instanz eines FB packen und die Werte puffern, sodass sie nur einmal berechnet werden.

        Ist dann zwar immernoch keine Konstante, aber die Rechenzeit welche benötigt wird beschränkt sich nach dem ersten Berechnen auf ein Minimum.

        Wäre halt die Lösung wenn es keine Konstanten gibt in der Richtung, was ja noch zu klären ist :)

         

        Last edit: byt0x 2020-12-23
        • bitzaehler - 2020-12-23

          Ok, möglch ist vieles.
          Bei Date_And_Time & Co. schon aufwendiger.

          Da wäre es schon einfacher die Konstanten manuell in einem Datentyp zu hinterlegen, dass wäre meine geplante Alternative falls Codesys keine einfachere Lösung bietet.

           
  • bitzaehler - 2020-12-23

    Vielen Dank Euch beiden.
    aber das hilft nicht. ich suche z.b. für byte min 16#00 und max 16#ff als Systemkonstante.

     
    👍
    1

Log in to post a comment.