Datentypen, Grenzwerte; Systemkonstante

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

    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

     
  • bitzaehler

    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
  • byt0x

    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

        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

          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.

           

Log in to post a comment.