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

Ergebnis 1 bis 8 von 8

Thema: TIA V12 einzelnes Bit aus Dword Variable verschalten

  1. #1
    Registriert seit
    23.10.2006
    Ort
    Bielefeld-Sennestadt
    Beiträge
    67
    Danke
    22
    Erhielt 1 Danke für 1 Beitrag

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo Leute,
    ich steige jetzt gerade erst ein bei dem TIA Portal V12. Vielleicht kommt euch die Frage auch komisch vor, aber das nehme ich in Kauf.
    Ich habe ein Netzwerk in dem ich einen FB aufrufe. An diesem FB habe ich ein und ausgänge mit Boolschen Variablen. Diese möchte ich jetzt mit Bits aus einem DWORD verschalten. In Step7 mit DB7.dbx12.0. Diese Syntax funktioniert jetzt aber nicht mehr. Er sagt immer"Diese Adresse wird nicht durch eine Variable belegt".
    Wie muss ich das denn jetzt machen? Muss ich jetzt etwa das DWORD in einzelne Boolsche Variablen aufdröseln?
    Stehe da voll auf dem Schlauch.

    Er übersetzt den Baustein allerdings. Zwar mit Warnung, aber er übersetzt ihn.

    Hat sich erledigt. Hatte nur nen Brett vorm Kopf. Er meckert eben, weil die Variable keinen eindeutigen Namen hat. Also nicht wie bei normaalen Boolschen Variablen.
    Oh Mann!
    Geändert von Neuling74 (06.06.2013 um 15:47 Uhr) Grund: Was vergessen
    „Nicht mir Erfindungen, sondern mit Verbesserungen macht man Vermögen.”
    Zitieren Zitieren TIA V12 einzelnes Bit aus Dword Variable verschalten  

  2. #2
    Registriert seit
    25.11.2008
    Ort
    Westpfalz
    Beiträge
    1.550
    Danke
    187
    Erhielt 212 Danke für 186 Beiträge

    Standard

    Jo nee un dann gibts für die vierstelligen CPUs noch den AT-Befehl
    and we all support the team (S.King - Die Arena)

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

    Neuling74 (07.06.2013)

  4. #3
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.203
    Danke
    926
    Erhielt 3.293 Danke für 2.662 Beiträge

    Standard

    Zitat Zitat von Mäuseklavier Beitrag anzeigen
    Jo nee un dann gibts für die vierstelligen CPUs noch den AT-Befehl
    Noch besser: für die gibt es nun Slice - das hätte perfekt für den TE gepasst.

    Zitat Zitat von Neuling74 Beitrag anzeigen
    Hat sich erledigt. Hatte nur nen Brett vorm Kopf. Er meckert eben, weil die Variable keinen eindeutigen Namen hat. Also nicht wie bei normaalen Boolschen Variablen.
    Oh Mann!
    Irgendwie verstehe ich da nur Bahnhof ... doch gut - irgendwas scheint er ja hingekriegt zu haben.

    Harald
    Es ist immer wieder überraschend, wie etwas plötzlich funktioniert, sobald man alles richtig macht.

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  5. Folgender Benutzer sagt Danke zu PN/DP für den nützlichen Beitrag:

    Neuling74 (07.06.2013)

  6. #4
    Registriert seit
    23.10.2006
    Ort
    Bielefeld-Sennestadt
    Beiträge
    67
    Danke
    22
    Erhielt 1 Danke für 1 Beitrag

    Standard

    [QUOTE=PN/DP;447063]Noch besser: für die gibt es nun Slice - das hätte perfekt für den TE gepasst.


    Irgendwie verstehe ich da nur Bahnhof ... doch gut - irgendwas scheint er ja hingekriegt zu haben.

    Bei Variablen die ich im DB anlege und vom Typ Bool sind, vergibt man doch einen eindeutigen Namen. Z.B. Status_Antrieb.
    Wenn da jetzt ein DWORD ist, sind die einzelnen Bits quasi Namenlos.
    Vielleicht drücke ich moch manchmal ein wenig kompliziert aus.
    Und da ich ne 300er CPU habe, fallen eure Sachen für mich weg. Oder?
    Whatever. Danke für die Tipps
    „Nicht mir Erfindungen, sondern mit Verbesserungen macht man Vermögen.”

  7. #5
    Registriert seit
    29.03.2004
    Beiträge
    5.741
    Danke
    143
    Erhielt 1.687 Danke für 1.226 Beiträge

    Standard

    Die Frage ist dann, warum ist der Datentyp DWORD wenn die einzelnen Bits eine spezielle Funktion haben?
    Da wäre eine Struktur mit Bezeichnungen der Bits doch sinnvoller, dann klappt auch der Zugriff auf die einzelnen Bits.

  8. #6
    Registriert seit
    01.09.2006
    Beiträge
    34
    Danke
    0
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Hallo,

    also rein Rechnerisch und Symbolisch kannst du ein Bit in einem DWORD so Setzen und löschen:

    Primitiver Pseudocode illustriert aber den Rechengang, wie hier mit einem Togglebit.
    Code:
    function bit(p)
      return 2 ^ (p - 1) 
    end
    
    function hasbit(x, p)
      return x % (p + p) >= p       
    end
    
    function setbit(x, p)
      return hasbit(x, p) and x or x + p
    end
    
    function clearbit(x, p)
      return hasbit(x, p) and x - p or x
    end
    
    
    
     if(hasbit(gBitStat,bit(1))) then
       gBitStat = clearbit(gBitStat,1);      
    else
       gBitStat = setbit(gBitStat,1);   
    end

  9. #7
    Registriert seit
    11.12.2009
    Beiträge
    2.115
    Danke
    388
    Erhielt 390 Danke für 271 Beiträge

    Standard

    Erinnert mich an die Frage von mnuesser

    Da war die Lösung NAME_DWORD.X1 um auf das erste Bit zuzugreifen.

    Grüße

    Marcel

  10. #8
    Registriert seit
    23.10.2006
    Ort
    Bielefeld-Sennestadt
    Beiträge
    67
    Danke
    22
    Erhielt 1 Danke für 1 Beitrag

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von Thomas_v2.1 Beitrag anzeigen
    Die Frage ist dann, warum ist der Datentyp DWORD wenn die einzelnen Bits eine spezielle Funktion haben?
    Da wäre eine Struktur mit Bezeichnungen der Bits doch sinnvoller, dann klappt auch der Zugriff auf die einzelnen Bits.
    Da gebe ich Dir recht. Kann man natürlich machen. Das ist aus einem alten projekt und ich hatte nicht die Muße das zu ändern.
    Grundsätzlich hast Du natürlich recht.
    „Nicht mir Erfindungen, sondern mit Verbesserungen macht man Vermögen.”

Ähnliche Themen

  1. Antworten: 19
    Letzter Beitrag: 10.08.2013, 17:02
  2. Antworten: 10
    Letzter Beitrag: 28.03.2013, 07:53
  3. Antworten: 5
    Letzter Beitrag: 24.06.2010, 10:18
  4. Einzelnes Bit aus Word
    Von sps-welt im Forum Simatic
    Antworten: 11
    Letzter Beitrag: 28.04.2009, 09:44
  5. Antworten: 7
    Letzter Beitrag: 15.10.2008, 09:45

Lesezeichen

Berechtigungen

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