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

Ergebnis 1 bis 4 von 4

Thema: Ethercat dword in 32 bools konvertieren

  1. #1
    Registriert seit
    29.08.2009
    Beiträge
    776
    Danke
    25
    Erhielt 3 Danke für 3 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo, kann ich ein Ethernet dword irgendwie in ne Struktur aus 32 Bools schreiben, ohne jedes Bit einzeln zuzuweisen?
    Zitieren Zitieren Ethercat dword in 32 bools konvertieren  

  2. #2
    Registriert seit
    19.12.2006
    Beiträge
    185
    Danke
    25
    Erhielt 26 Danke für 21 Beiträge

    Standard

    Falls es nichts fertiges gibt, dann Bau dir doch einfach eine kleine Funktion.
    Man müsste einzelne Bits aus dem DWORD so lesen können

    Code:
    bit_x:= meineDWORDVariable.x
    Sonst ganz Old School über Bitmasken oder vorher bitweise schieben usw.

    Wenn es um die Verknüpfung im Sys Manager geht, kannst du sicher auch eine Struktur mit 32 Bits erstellen und eine Variable diesen Typs deklarieren. Diese Variable dann einfach mit dem DWORD der Klemme verknüpfen.

    Gruß

  3. #3
    Bensen83 ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    29.08.2009
    Beiträge
    776
    Danke
    25
    Erhielt 3 Danke für 3 Beiträge

    Standard

    Genau das habe ich ja versucht, aber die Typen "32bool" und dword passen nicht zusammen laut kompilier.
    Zitieren Zitieren Das habe ich versucht  

  4. #4
    Registriert seit
    19.10.2009
    Beiträge
    194
    Danke
    8
    Erhielt 50 Danke für 44 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Das liegt daran, dass der Typ BOOL in der PLC ein Byte im Speicher belegt. Eine Struktur mit 32 BOOL belegt 32 Byte und lässt sich nicht direkt mit DWORD verknüpfen. Die einzelnen BOOLS lassen sich auf das DWORD verknüpfen: für jedes BOOL beim Verknüpfen den Dialog öffnen, Overlapped auf 1 und Offset auf 0 bis 31 setzen. Das ist machbar aber sehr aufwendig.
    Da ist der Bit-Vereinzelung über eine Funktion in der PLC viel einfacher. Z.B. so
    Code:
    TYPE T_32bool : ARRAY[0..31] OF BOOL;
    END_TYPE
    Code:
    FUNCTION F_DWORD_TO_BOOLARR : T_32bool
    VAR_INPUT
        dwInput: DWORD;
    END_VAR
    VAR
        Mask: DWORD;
        i: INT;
    END_VAR
    Mask:= 1;
    FOR i:= 0 TO 31 DO
        F_DWORD_TO_BOOLARR[i]:= (dwInput AND Mask) = Mask;
        Mask:= SHL(Mask, 1);
    END_FOR
    Gruß
    witkatz

Ähnliche Themen

  1. DWord to Array
    Von kai86 im Forum Simatic
    Antworten: 12
    Letzter Beitrag: 02.03.2010, 13:05
  2. Dword vergleichen
    Von mitchih im Forum Simatic
    Antworten: 4
    Letzter Beitrag: 27.08.2009, 21:58
  3. DWORD to Byte
    Von hank12 im Forum Simatic
    Antworten: 19
    Letzter Beitrag: 05.05.2009, 07:44
  4. dword
    Von 1schilcher im Forum Programmierstrategien
    Antworten: 21
    Letzter Beitrag: 14.02.2007, 10:34

Lesezeichen

Berechtigungen

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