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

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 12

Thema: Bits auslesen aus UINT

  1. #1
    Registriert seit
    14.08.2009
    Beiträge
    34
    Danke
    2
    Erhielt 0 Danke für 0 Beiträge

    Frage


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo!
    ich bräuchte mal wieder eueren Rat. Ich habe an meiner EL6731 Profibus Masterklemme einen Frequenumrichter hängen. Der FU gibt mir einen zyklische Istwerte aus welche als 32 Bit Doppelwörter übertragen wird. Im TwinCAT System Manager werden mir dann in einem Array zwei Variablen a 16Bit als UINT erzeugt. Soweit so gut.

    Der Übertragene Ist-Wert ist das Statuswort des FUs welches ich teilweise Visualisieren will. Nun könnte ich natürlich den Typ UINT belassen und für jeden möglichen Wert von 0-65535 über CASE die einzelnen Statusmeldungen in meiner Visu aktivieren. Gibt es nciht aber auch einen einfacheren Weg die einzelnen der 16 Bits auszulesen obs sie gesetzt sind?

    Gruß Coco
    Zitieren Zitieren Bits auslesen aus UINT  

  2. #2
    Registriert seit
    06.07.2007
    Beiträge
    2.811
    Danke
    174
    Erhielt 274 Danke für 253 Beiträge

    Standard

    Über
    Code:
    Variablenname.0
    ...
    Variablenname.15
    müsstest du die einzelnen Bits auswerten können.
    Geändert von Cerberus (03.09.2009 um 10:31 Uhr) Grund: Kleine Änderung im Code.
    A programmer is just a tool which converts caffeine into code.

  3. Folgender Benutzer sagt Danke zu Cerberus für den nützlichen Beitrag:

    Cococabana (03.09.2009)

  4. #3
    Registriert seit
    27.07.2007
    Beiträge
    223
    Danke
    17
    Erhielt 42 Danke für 40 Beiträge

    Standard

    Schade zu langsam.

    So wie von Cerberus beschrieben sollte das gehen.

  5. #4
    Registriert seit
    14.08.2009
    Beiträge
    34
    Danke
    2
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Super, da erspare ich mir viel viel arbeit! =)

    Habt Dank ihr beiden!

  6. #5
    Registriert seit
    16.12.2009
    Ort
    Süddeutschland
    Beiträge
    173
    Danke
    37
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Zitat Zitat von Cerberus Beitrag anzeigen
    Über
    Code:
    Variablenname.0
    ...
    Variablenname.15
    müsstest du die einzelnen Bits auswerten können.
    alt aber aktuell: ich möchte das auszulesende Bit als Variable angeben (Variablenname.Bitnummer). Das frisst er aber nicht ("Ganze Zahl oder symbolische Konstante erwartet"). Ich peile nicht ganz was ich hier falsch mache. Hat wer Abhilfe? Danke.
    Beckhoff CX9010-1101
    TwinCat 2.11

  7. #6
    Registriert seit
    15.02.2011
    Ort
    Stromness, Scotland, UK
    Beiträge
    339
    Danke
    25
    Erhielt 34 Danke für 33 Beiträge

    Standard

    Da musst du uns (oder zumindest mir) noch etwas mehr Informationen mitliefern.

    Beckhoff sagt zu deiner Feherlmeldung folgendes: "Fügen Sie eine ganze Zahl oder den Bezeichner einer gültigen Konstante ein." (Link)
    Hast du die Variable korrekt initialisiert? Ist es eine ganze Zahl?

    Poste doch den Code mal, dann kann dir sicher schnell geholfen werden!

  8. #7
    Registriert seit
    16.12.2009
    Ort
    Süddeutschland
    Beiträge
    173
    Danke
    37
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Zitat Zitat von gloeru Beitrag anzeigen
    Da musst du uns (oder zumindest mir) noch etwas mehr Informationen mitliefern.

    Beckhoff sagt zu deiner Feherlmeldung folgendes: "Fügen Sie eine ganze Zahl oder den Bezeichner einer gültigen Konstante ein." (Link)
    Hast du die Variable korrekt initialisiert? Ist es eine ganze Zahl?

    Poste doch den Code mal, dann kann dir sicher schnell geholfen werden!
    Code:
    FUNCTION_BLOCK FB_BitextractFromUdint
    VAR_INPUT
        in:         UDINT;
        Bit:        USINT;
    END_VAR
    VAR_OUTPUT
        out: BOOL;
    END_VAR
    
    Programmcode:
    out:=in.bit;
    ja, die Info von Beckhoff hatte ich auch. Verwundert mich aber - sieht so aus als könnte "bit" nur eine Konstante sein.
    Beckhoff CX9010-1101
    TwinCat 2.11

  9. #8
    Registriert seit
    25.11.2010
    Ort
    OWL
    Beiträge
    752
    Danke
    27
    Erhielt 165 Danke für 143 Beiträge

    Standard

    Zitat Zitat von forellengarten Beitrag anzeigen
    ja, die Info von Beckhoff hatte ich auch. Verwundert mich aber - sieht so aus als könnte "bit" nur eine Konstante sein.
    Das sieht nicht nur so aus.
    Bleibt also nur
    Code:
    out:=(in AND SHL(UDINT#1,Bit))>0;
    Man kann es ja in eine Funktion packen, damit es nicht jedesmal soviel Schreibarbeit ist.

  10. Folgender Benutzer sagt Danke zu StructuredTrash für den nützlichen Beitrag:

    forellengarten (30.11.2011)

  11. #9
    Registriert seit
    29.09.2006
    Beiträge
    368
    Danke
    0
    Erhielt 41 Danke für 38 Beiträge

    Standard

    Kann auch nur eine Konstante sein! Auch möglich ist es das Feature "Konstanten ersetzen" zu wählen, dann werden diese direkt im Code verwendet (hat aber auch Nachteile, das z.B. diese als Symbol nicht zur Verfügung stehen).

  12. #10
    Registriert seit
    16.12.2009
    Ort
    Süddeutschland
    Beiträge
    173
    Danke
    37
    Erhielt 1 Danke für 1 Beitrag

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von StructuredTrash Beitrag anzeigen
    Das sieht nicht nur so aus.
    Bleibt also nur
    Code:
    out:=(in AND SHL(UDINT#1,Bit))>0;
    Man kann es ja in eine Funktion packen, damit es nicht jedesmal soviel Schreibarbeit ist.
    genial. Danke! Wer das auch benötigt hier die leicht korrigierte Version:
    FUNCTION fBitXtract : BOOL
    VAR_INPUT
    in: DWORD;
    Bit: USINT;
    END_VAR
    IF (in AND SHL(DWORD#1, bit))>0 THEN fBitXtract:=TRUE; END_IF;

    warum es mit DWORD geht, mit UDINT nicht ("...kann UDINT nicht in ANY_BIT kovertieren.." weiß ich allerdings auch nicht.
    Beckhoff CX9010-1101
    TwinCat 2.11

Ähnliche Themen

  1. S7-200 Unterprogramme und Bits setzen/auslesen
    Von D0m1n1k im Forum Simatic
    Antworten: 8
    Letzter Beitrag: 02.06.2010, 19:47
  2. UINT to Float
    Von Raydien im Forum CODESYS und IEC61131
    Antworten: 4
    Letzter Beitrag: 19.01.2010, 09:17
  3. Libnodave, VBA und Auslesen von Bits
    Von Fluffi im Forum Hochsprachen - OPC
    Antworten: 3
    Letzter Beitrag: 24.07.2009, 14:09
  4. Antworten: 6
    Letzter Beitrag: 10.07.2007, 02:15
  5. Bits in temporäres Byte mappen und gesetzte Bits zählen
    Von yetibrain im Forum PC- und Netzwerktechnik
    Antworten: 3
    Letzter Beitrag: 19.02.2005, 16:31

Lesezeichen

Berechtigungen

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