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

Ergebnis 1 bis 8 von 8

Thema: Problem mit Bitoperationen

  1. #1
    Gast Gast

    Frage


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    CPU: CPU-314C-2DP
    Softwareversion: STEP 7 S7 V.5.2

    Wir möchten aus einem MW vier Bits auf je ein Ausgangsbit schreiben z.B. MW1.0 auf A124.0 usw.


    Der Folgende Code funktioniert nicht, weil Step 7 unbedingt ein ein Byte oder ein MW etc .. bei dem MOVE Befehl haben möchte
    ich möchte allerdings nur je ein BIT kopieren.

    bei #Ausgang1 handelt es sich um einen Ausgang vom Datentyp Bool einer Funktion.


    L MW 1.1
    T #Ausgang1
    NOP 0


    Gruß
    Kofi
    Zitieren Zitieren Gelöst: Problem mit Bitoperationen  

  2. "MW1.0 ist in der "Siemenssprache" ein gramatischer Fehler:

    M200.0 - ist ein Beispiel für eine Bitadressierung
    MW200 - ist eine Wordadressierung
    MW200.0 - exestiert nur als Teil eines ANY-Pointers und ist für Dich uninteressant.

    Da Siemens-Speicher Wordorientiert ist (also 2 Byte) werden MW1, MW3, MW5 usw. (also ungerade Adrssen ) nicht benutzt.

    Just4Info:
    Die Bytes sind innerhalb eines Word vertauscht!!
    Beispiel:
    MW200 besteht bekanntlich aus M200.0, M200.1, ... bis M201.7.

    L MW200 // MW200 in den AKKU laden

    Die Reihenfolge im Speicher(z.B. im AKKU) sieht dann so aus:
    M201.0 // niederwertigste Bit im Akku 2^0
    M201.1
    M201.2
    M201.3
    M201.4
    M201.5
    M201.6
    M201.7
    M200.0
    M200.1
    M200.2
    M200.3
    M200.4
    M200.5
    M200.6
    M200.7 // Bit 2^15

    Das sind die Grundlagen.

    Wenn Du also ein Paar Bits aus dem MB1 an die Ausgänge "verdrahten" willst, muss Du das wie folgt machen:

    U M1.0
    T A2.0 // oder symbolisch "T aMotorEin"

    U M1.1
    T A2.1

    U M1.2
    T A2.2

    usw.

    Alternativ kannst Du ein ganzes Byte, Word oder DoppelWord zuweisen:

    L MB1
    T AB1

    oder

    L MW0
    T AW0

    Tja, das muss für's Erste rechen.
    Gruss
    Alex"


  3. #2
    Registriert seit
    15.01.2005
    Ort
    In der Mitte zwischen Bayreuth/Weiden
    Beiträge
    6.732
    Danke
    314
    Erhielt 1.520 Danke für 1.282 Beiträge

    Standard

    U M1.1
    = #Ausgang1

    ?!
    Warum denn einfach, wenn man auch Siemens einsetzen kann!

    Wer die grundlegenden Freiheiten aufgibt, um vorübergehend ein wenig Sicherheit zu bekommen, verdient weder Freiheit noch Sicherheit (B. Franklin).

  4. #3
    Gast Gast

    Standard

    Das funktioniert... nur das M kein M sondern ein MW ist und dann gehts nicht ;(

    Gruß
    Kofi

  5. #4
    Registriert seit
    15.01.2005
    Ort
    In der Mitte zwischen Bayreuth/Weiden
    Beiträge
    6.732
    Danke
    314
    Erhielt 1.520 Danke für 1.282 Beiträge

    Standard

    Ja aber M1.1 ist Bestandteil des MW1, das ist halt einfach so!
    Wenn du es genau wissen willst ist es das Bit 9 (von 0 zu Zählen angefangt) im MW1

    Also repräsentiert dieses Bit die Wertigkeit 2 hoch 9 = 512 (Dezimal)
    Geändert von MSB (26.04.2006 um 19:35 Uhr)
    Warum denn einfach, wenn man auch Siemens einsetzen kann!

    Wer die grundlegenden Freiheiten aufgibt, um vorübergehend ein wenig Sicherheit zu bekommen, verdient weder Freiheit noch Sicherheit (B. Franklin).

  6. #5
    Registriert seit
    27.08.2003
    Ort
    Schweitenkirchen
    Beiträge
    472
    Danke
    101
    Erhielt 73 Danke für 59 Beiträge

    Standard

    Hmm, der will quasi mit 4 Autos (4 Bit) in eine Einzelgarage (A124.0) gleichzeitig

    Oder er hats falsch erklärt und meint:
    L MW1
    T AW 124


  7. #6
    Gast Gast

    Standard

    MW1.0 ist in der "Siemenssprache" ein gramatischer Fehler:

    M200.0 - ist ein Beispiel für eine Bitadressierung
    MW200 - ist eine Wordadressierung
    MW200.0 - exestiert nur als Teil eines ANY-Pointers und ist für Dich uninteressant.

    Da Siemens-Speicher Wordorientiert ist (also 2 Byte) werden MW1, MW3, MW5 usw. (also ungerade Adrssen ) nicht benutzt.

    Just4Info:
    Die Bytes sind innerhalb eines Word vertauscht!!
    Beispiel:
    MW200 besteht bekanntlich aus M200.0, M200.1, ... bis M201.7.

    L MW200 // MW200 in den AKKU laden

    Die Reihenfolge im Speicher(z.B. im AKKU) sieht dann so aus:
    M201.0 // niederwertigste Bit im Akku 2^0
    M201.1
    M201.2
    M201.3
    M201.4
    M201.5
    M201.6
    M201.7
    M200.0
    M200.1
    M200.2
    M200.3
    M200.4
    M200.5
    M200.6
    M200.7 // Bit 2^15

    Das sind die Grundlagen.

    Wenn Du also ein Paar Bits aus dem MB1 an die Ausgänge "verdrahten" willst, muss Du das wie folgt machen:

    U M1.0
    T A2.0 // oder symbolisch "T aMotorEin"

    U M1.1
    T A2.1

    U M1.2
    T A2.2

    usw.

    Alternativ kannst Du ein ganzes Byte, Word oder DoppelWord zuweisen:

    L MB1
    T AB1

    oder

    L MW0
    T AW0

    Tja, das muss für's Erste rechen.
    Gruss
    Alex

  8. #7
    Gast Gast

    Rotes Gesicht

    Natürlich meite ich:
    U M1.0
    = A2.0 // oder symbolisch "T aMotorEin"

    U M1.1
    = A2.1

    U M1.2
    = A2.2

  9. #8
    Registriert seit
    27.08.2003
    Ort
    Schweitenkirchen
    Beiträge
    472
    Danke
    101
    Erhielt 73 Danke für 59 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hab nochmal die Eingangsfrage gelesen :

    bei #Ausgang1 handelt es sich um einen Ausgang vom Datentyp Bool einer Funktion.

    Scheinbar geht es um den Ausgang eines Bausteines:

    Jetzt könnte man aus dem #Ausgang1 statt Bool ein Wort machen.
    Oder in der Deklaration aus #Ausgang1 ein Array of Bool (mit 16 Bools) und am Bausteinende das Wort auf das Array schieben. (Blockmove)

    Gruss Zefix

Ähnliche Themen

  1. OPC Problem routen problem
    Von kpeter im Forum Hochsprachen - OPC
    Antworten: 1
    Letzter Beitrag: 25.08.2010, 19:54
  2. Bitoperationen in VB
    Von leo im Forum Hochsprachen - OPC
    Antworten: 2
    Letzter Beitrag: 03.07.2007, 07:22

Lesezeichen

Berechtigungen

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