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

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

Thema: Bitmuster Puzzel

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

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo, ich habe folgendes Problem:

    Ich habe ein Bitmuster, welches in ein anderes umgeformt werden soll. Hier mal ein Beispiel:

    vorhandenes Bitmuster

    16#00050317

    erfordertes Bitmuster

    16#AC40000000000000

    Ich möchte hier nicht sämtliche Bits aufführen, weil das doch etwas lang würde. Zur Erklärung: A= 1010 usw.

    Ich programmiere in Strukturiertem Text und würde gerne wissen, ob es hierbei die Möglichkeit gibt, in dieser Struktur, wie sie oben zu sehen ist, einzelne Bits zu schieben, zu entfernen oder hinzuzufügen, oder ob man sich aus den einzelnen Speicherbereichen ein neues Muster zusammenfummeln kann.
    Ein Vorgehensweise wäre auch sehr hilfreich...
    Zitieren Zitieren Bitmuster Puzzel  

  2. #2
    Registriert seit
    08.08.2007
    Ort
    Dresden
    Beiträge
    9.648
    Danke
    1.059
    Erhielt 2.046 Danke für 1.627 Beiträge

    Standard

    nach welcher vorschrift wird aus 16#50317 ein 16#AC40000000000000
    [SIGNATUR]
    Ironie setzt Intelligenz beim Empfänger voraus.
    [/SIGNATUR]

  3. #3
    Registriert seit
    03.10.2009
    Beiträge
    62
    Danke
    3
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Achso, hätte ich wohl dazuschreiben sollen!

    Struktur der Bit-Konstanten
    Bit 26 - 25 bestimmen die PDO-ID
    Bit 19 - 17 bestimmen den Bitmuster-Typ
    Bit 11 - 9 bestimmen die ID innerhalb Typ 0
    Bit 5 - 1 bestimmen gesetztes Bit innerhalb von "Digital-Infos" (z.B. XX..XX00011 = 3 setzt Bit 35, weil Bit 33 das erste der Digital-Infos ist, in diesem Fall setzt #17 das 55. Bit)

    Das wäre die Vorschrift für 16#00050317, wobei das Byte ganz links und damit die PDO- ID wegfällt.



    Struktur des Bitmusters
    Bit 64 - 62 definieren den Bitmuster- Typ
    Bit 61 - 59 definieren die IDs innerhalb diesen Typs
    Bit 58 - 33 definieren 26 Digital-Infos
    Bit 32 - 17 und 16 - 1 definieren 2 Analog-Infos (-10000 bis 10000 bzw. -32768 bis 32768 )

    Das wäre die Vorschrift für 16#AC40000000000000, wobei die Analogie zum ersten Bitmuster der Bitmuster- Typ und dessen ID sind und dahinter digitale und analoge Informationen eingetragen werden, um die es mir erstmal noch nicht geht.

    16#00050317 -> 16#AC40000000000000 = Typ 5, ID 3, Digital-Info 23
    Geändert von doelckenbeck (04.08.2010 um 10:40 Uhr)

  4. #4
    Registriert seit
    08.08.2007
    Ort
    Dresden
    Beiträge
    9.648
    Danke
    1.059
    Erhielt 2.046 Danke für 1.627 Beiträge

    Standard

    i only understand railway station
    [SIGNATUR]
    Ironie setzt Intelligenz beim Empfänger voraus.
    [/SIGNATUR]

  5. #5
    Registriert seit
    03.10.2009
    Beiträge
    62
    Danke
    3
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Einfacher gefragt, gibt es die Möglichkeit in einer dieser Strukturen (z.B. 16#0293784) einzelne Bits zu schieben, zu entfernen, oder hinzuzufügen um sie in eine andere umzuformen, oder muss ich mir Speicherbereiche zusammenkopieren?

  6. #6
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.260
    Danke
    537
    Erhielt 2.707 Danke für 1.956 Beiträge

    Standard

    Bei Siemens kannst du in SCL über den AT-Operator z.Bsp. ein DWORD auf ein Array of Bool verweisen und dann die Bits manipulieren, bei Codesys kann man direkt über Variable.Bitnummer einzelne Bits manipulieren. Ob bei Codesys dazu nur bestimmte Variablentypen verwendet werden können kann ich im Moment nicht beantworten.
    Gruß
    Ralle

    ... there\'re 10 kinds of people ... those who understand binaries and those who don\'t …
    and the third kinds of people … those who love TIA-Portal

  7. #7
    Registriert seit
    01.09.2008
    Ort
    Berlin
    Beiträge
    172
    Danke
    51
    Erhielt 51 Danke für 44 Beiträge

    Standard

    Du könntest das Bitmuster auch in ein String wandeln und dann mit INSERT und DELETE (usw.) arbeiten.
    Geändert von ebt'ler (04.08.2010 um 11:01 Uhr)

  8. #8
    Registriert seit
    03.10.2009
    Beiträge
    62
    Danke
    3
    Erhielt 0 Danke für 0 Beiträge

    Standard

    So, jetzt nochmal eine andere Frage zum Thema. Kann man mit einem Befehl aus einem beliebigen Bitmuster herausholen?

    Bsp.:

    16#10837456

    Das sind ja vier Byte! Kann man irgendwie z.B. das dritte Byte, also 16#83 da rausholen? Habs mit memcpy versucht, funktioniert aber noch nicht so ganz...
    Vielleicht mit Pointern?
    Geändert von doelckenbeck (04.08.2010 um 16:07 Uhr)

  9. #9
    Registriert seit
    03.10.2009
    Beiträge
    62
    Danke
    3
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Habs schon, man inkrementiert einfach die Quelladresse um ein Byte, bis man an der richtigen Stelle ist.

  10. #10
    Registriert seit
    08.03.2010
    Ort
    BaWü
    Beiträge
    131
    Danke
    10
    Erhielt 13 Danke für 11 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    doppelpost sy
    Geändert von Sera (09.08.2010 um 10:25 Uhr)

Ähnliche Themen

  1. Aus Hex Zahl wieder Bitmuster machen
    Von Deimos0815 im Forum Simatic
    Antworten: 17
    Letzter Beitrag: 17.08.2011, 10:34
  2. Bitmuster
    Von AdrianS im Forum Simatic
    Antworten: 5
    Letzter Beitrag: 06.10.2007, 15:23
  3. Antworten: 4
    Letzter Beitrag: 23.04.2004, 13:26

Lesezeichen

Berechtigungen

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