TIA TIA V12 einzelnes Bit aus Dword Variable verschalten

Neuling74

Level-2
Beiträge
77
Reaktionspunkte
1
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! :-?:-?:-?:-?
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
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.

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
 
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. :rolleyes:
Und da ich ne 300er CPU habe, fallen eure Sachen für mich weg. Oder?
Whatever. Danke für die Tipps
 
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.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
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
 
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.:p
Grundsätzlich hast Du natürlich recht.
 
Zurück
Oben