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

Ergebnis 1 bis 6 von 6

Thema: Länge eines Datentyps ermitteln

  1. #1
    Registriert seit
    01.05.2008
    Beiträge
    93
    Danke
    2
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,

    gibt es die Möglichkeit über eine (System-)Funktion rauszufinden, wie groß ein Datentyp in Byte ist?
    also z. B.:

    Datentyp Größe (Byte)
    Byte 1 Byte
    Word 2 Bytes
    Int 2 Bytes
    DInt 4 Bytes
    ... ...
    mfg
    Helmi
    Zitieren Zitieren Länge eines Datentyps ermitteln  

  2. #2
    Registriert seit
    23.07.2009
    Ort
    Österreich
    Beiträge
    2.351
    Danke
    452
    Erhielt 692 Danke für 517 Beiträge

    Standard

    Grundsätzlich... Nein.

    Was hast du den vor? Möchtest du irgendwo etwas mit variabler Länge übergeben?
    Schreib mal ein wenig genauer.
    If at first you don't succeed, you're not Van Damme!
    ... or maybe using TIA!

  3. #3
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.191
    Danke
    923
    Erhielt 3.292 Danke für 2.661 Beiträge

    Standard

    Man kann in TEMP hintereinander 2 Variablen des Datentyps anlegen, die Adressen der Variablen ermitteln und voneinander abziehen.
    Code:
    L P##tempVar2
    L P##tempVar1
    -D
    SRD 3
    T #sizeOfVar
    Harald
    Es ist immer wieder überraschend, wie etwas plötzlich funktioniert, sobald man alles richtig macht.

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  4. #4
    Registriert seit
    01.05.2008
    Beiträge
    93
    Danke
    2
    Erhielt 0 Danke für 0 Beiträge

    Standard

    ich habe einen DB der immer den gleichen Datentyp beinhaltet (insg. 1000 Variablen).

    Dazu habe ich eine Variable die die Nummer der Variablen beinhaltet in die etwas geschrieben werden soll.

    Um nun die Adresse zu ermitteln mach ich folgendes:

    Code:
    L Variable
    L 4             //entspricht der Länge des verwendeten Datentypes im DB (hier Time_Of_Day)
    *I
    T Adresse
    Ich bin kein Freund von festen Zahlen im Code (egal welche Sprache).
    Und würde gerne die 4 ersetzen durch eine "Systemfunktion" die mir anhand des übergebenen Datentypes die Länge ausspuckt

    Analog zu "SizeOf" in Delphi z. B.
    Geändert von HelmiMUC (18.03.2015 um 13:31 Uhr)
    mfg
    Helmi

  5. #5
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.726
    Danke
    398
    Erhielt 2.401 Danke für 2.001 Beiträge

    Standard

    Hallo,
    so wie ich das lese ist das mit der Konstanten 4 nicht das einzige Unschöne, das du da hast. Wenn du aber einen konstanten Datentyp hast dann kannst du auch mit einer Konstanten für die Adresse-Berechnung arbeiten.
    Aber erstmal vorab : dein Codeschnipsel kann dir unmöglich die richtige Adresse deines Datentyps liefern. Wie machst du denn da weiter im Code ?
    DT oder DateAndTime ist übrigens auch nicht 4 Byte lang sondern 8.

    Ich würde den Code so erstellen :
    - In dem DB ein Array mit gewünschter Länge vom gewünschten Datentyp erstellen.
    - Den DB symbolisch benennen
    - Den Pointer auf das erste Element des Arrays laden
    - den Pointer um den Wert des Indexes-1 * Datentyp-Breite erhöhen
    - Nun das Element über indirekte Adressierung laden und damit arbeiten

    Gruß
    Larry

  6. #6
    Registriert seit
    01.05.2008
    Beiträge
    93
    Danke
    2
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,

    sorry - ich hab mich im Thread drüber total verhaut - es muss heissen: "Time_Of_Day".
    Dann stimmt auch wieder die 4 dazu.

    So wie du das beschrieben hast, Larry, mach ich das auch
    nur ohne Array

    sondern so:

    Code:
    L Variable
    + -1
    L4
    *I
    T Adresse
    
    //...
    
    L Adresse
    SLW 3
    LAR1
    
    //...
    
    AUF DB[#DB_No]
    L Wert
    T DB[AR1, #P0.0]
    mfg
    Helmi

Ähnliche Themen

  1. TIA S7-1200 Länge eines DB ermitteln
    Von Techniker im Forum Simatic
    Antworten: 6
    Letzter Beitrag: 15.02.2014, 16:33
  2. Die ByteGröße eines selbssdefinierten Datentyps ermitteln
    Von alb im Forum CODESYS und IEC61131
    Antworten: 2
    Letzter Beitrag: 24.02.2012, 14:54
  3. Länge eines UDT ermitteln
    Von Woto im Forum Simatic
    Antworten: 4
    Letzter Beitrag: 20.04.2009, 08:21
  4. DB-Länge ermitteln
    Von Fliegertiger im Forum Hochsprachen - OPC
    Antworten: 4
    Letzter Beitrag: 18.12.2007, 15:39
  5. SCL Befehl um die Länge eines Datenbausteins zu ermitteln?
    Von 1.0er im Forum Programmierstrategien
    Antworten: 1
    Letzter Beitrag: 13.01.2006, 02:18

Lesezeichen

Berechtigungen

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