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

Ergebnis 1 bis 4 von 4

Thema: Berechnung SCL ; WORD oder INT

  1. #1
    Registriert seit
    08.12.2010
    Beiträge
    62
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,
    ich möchte in SCL Berechnungen durchführen. Und zwar bekomme ich verschiedene Zählerstande als WORD (binär).
    Nun will ich mit diesen Werten Rechnungen durchführen.
    Habe da eine grundlegende Frage zu den Datentypen.
    Word hat ja einen Wertebereich bis 65536 Integer +- 32768. Ich benötige sowieso nur positive Zahlen. Also wäre WORD besser geeignet.
    Wenn ich allerdings einen Befehl wie:
    Wert := Zaehler1*100/Zaehler2;
    schreibe funktioniert das mit WORD nicht. Der SCL Compiler gibt Fehler an.
    Wenn ich vorher die Zaehlerstände in INT konvertiere und auch "Wert" als INT deklariere funktioniert es.

    Wieso ist das so? Kann man mit WORD Variablen nicht ohne Weiteres rechnen?
    Zitieren Zitieren Berechnung SCL ; WORD oder INT  

  2. #2
    Registriert seit
    19.06.2005
    Ort
    in Bayern ganz oben
    Beiträge
    1.360
    Danke
    188
    Erhielt 372 Danke für 290 Beiträge

    Standard

    Hi,

    nein geht nicht. Du kannst aber Dein Word in ein Dword konvertieren z.b. DWORD_TO_DINT(WORD_TO_DWORD(x)).

    Gruss Daniel
    Erfahrung ist eine nützliche Sache. Leider macht man sie immer erst kurz nachdem man sie brauchte...

    OSCAT.lib Step 7

    Open Source Community for Automation Technolgy

    SPS-Forum Chat (Mibbit) | SPS-Forum Chat (MIRC)

  3. #3
    Registriert seit
    22.11.2006
    Ort
    CH
    Beiträge
    3.661
    Danke
    789
    Erhielt 657 Danke für 500 Beiträge

    Standard

    Word ist halt Wort und gibt noch keine Aussage was darin enthalten ist. Das könnten auch 16 Einzelbits sein. Der Compiler kann also nicht wissen soll er jetzt Einzelbits addieren, eine Dezimalzahl, oder BCD. Das gäbe alles verschiedene Resultate.

    Integer hingegen ist ein Datenformat das alles aussagt das man wissen muss um damit zu rechnen.
    Wenn dir ein INT von der Grösse nicht reicht, mach n Dint draus.

    Wenn aber das Word das du von dem Zähler kriegst ein uInt enthält musst du dafür sorgen dass das Vorzeichen richtig interpretiert wird. Mit nur word_to_int läufts sonst nicht.

    mfG René

  4. #4
    Registriert seit
    06.10.2004
    Ort
    Kopenhagen.
    Beiträge
    4.646
    Danke
    377
    Erhielt 809 Danke für 646 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von toto45 Beitrag anzeigen
    Und zwar bekomme ich verschiedene Zählerstande als WORD (binär).
    Vermutlich hast du deine Zähler als IW oder PIW und dann hast du Symbole dafür eingerichtet, womit STEP7 WORD vorschlägt obwohl INT sinnvoller wäre.

    Zitat Zitat von toto45 Beitrag anzeigen
    Word hat ja einen Wertebereich bis 65536 Integer +- 32768. Ich benötige sowieso nur positive Zahlen. Also wäre WORD besser geeignet.
    Was du beschreibst ist ein "unsigned INT". Sowas gibt es nicht in STEP7.
    Wenn du ausserhalb von -32768..+32767 zählen muss, dan DINTs verwenden.

    OBS. Wenn ich ein Zähler-Modul in mein S7 hat, dann ist den Zählerwert ein doubleword (ID, oder PID, mit DINT als Typ).
    Jesper M. Pedersen

Ähnliche Themen

  1. Word,DWORD oder doch Real
    Von Thor´sHammer im Forum CODESYS und IEC61131
    Antworten: 3
    Letzter Beitrag: 24.09.2011, 14:22
  2. Berechnung im DB?
    Von motamas im Forum Simatic
    Antworten: 13
    Letzter Beitrag: 14.06.2010, 11:43
  3. Berechnung DINT oder REAL
    Von mitchih im Forum Simatic
    Antworten: 6
    Letzter Beitrag: 22.01.2010, 09:24
  4. MB (8bit) in Word,Int oder ähnliches umwandeln
    Von Lars Bizare im Forum Simatic
    Antworten: 6
    Letzter Beitrag: 30.09.2005, 11:44
  5. Antworten: 1
    Letzter Beitrag: 23.09.2005, 13:56

Lesezeichen

Berechtigungen

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