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

Ergebnis 1 bis 6 von 6

Thema: Global Skript DWord in einzelne bits zerlegen

  1. #1
    Registriert seit
    04.02.2013
    Beiträge
    35
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo

    Ich will in einem Global Skript immer wenn sich bei einer DWORD Variable etwas ändert diese ín seine einzelnen Bits zerlegen und in interne Variablen speichern. Außerdem habe ich einen Trigger auf die betreffende Variable eingestellt. ABer es tut sich nichts ( global skript runtime ist aktiviert)


    Danke für eure antwort.
    Lg
    Angehängte Grafiken Angehängte Grafiken
    Zitieren Zitieren Global Skript DWord in einzelne bits zerlegen  

  2. #2
    Registriert seit
    07.06.2011
    Beiträge
    117
    Danke
    4
    Erhielt 18 Danke für 18 Beiträge

    Standard

    Hallo,

    dass wird wohl daran liegen, dass die Variable nirgendwo verwendet und damit nie eingelesen bzw. aktualisiert wird. Damit wird auch das Skript nie aufgerufen.
    Mario

  3. #3
    kor ist offline Benutzer
    Themenstarter
    Registriert seit
    04.02.2013
    Beiträge
    35
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hallo

    Danke für deine Antwort. Eigentlich habe ich das überprüft und das Skript wird aufgerufen. Ich toggle bei jedem aufruf eine interne Variable und gebe diese aus.

    Ich habe ein paar Sachen überprüft und es dürfte der Befehl: GetTagDWord("DB14_0-3") & 0x1; nicht funktionieren. An der Undverknüpfung dürfte es nicht liegen, da diese mit einer Konstante funktioniert. Also liegt es eher an GetTagDWord("DB14_0-3") .Als Anzeige in einem E/A Feld wird der Richtige Wert angezeigt, aber der aufruf im Skript dürfte nicht funkionieren.

    Woran kann das liegen?

    Lg

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

    Standard

    Die Und-Verknüpfung an sich müsste funktionieren.
    Aber falls du vorhast immer auf einzelne Bits zu prüfen, solltest du deine Hexadezimalwerte nochmal überdenken.
    Denn 0x16 ist binär 10110, und 0x32 ist 110010.
    Um einzelne Bits zu prüfen brauchst du 0x1, 0x2, 0x4, 0x8, 0x10, 0x20, 0x40, 0x80, 0x100, usw.
    Bei einem Dword musst du noch daran denken dass die Bits eine andere Reihenfolge als in der S7 aufweisen. D.h. 0x1 ist nicht das Bit 0.0 im Dword in der SPS!

  5. #5
    kor ist offline Benutzer
    Themenstarter
    Registriert seit
    04.02.2013
    Beiträge
    35
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hallo

    Danke für deine Antwort.
    Prinzipiell funktioniert der Code jetzt. Ich habe den dümmsten Fehler von allen gemacht, im Skript einen Variable falsch geschrieben und 5 Stunden drübergelesen.

    Leider bin ich draufgekommen, dass mir ein Bit fehlt. Ich habe in der SPS einen Datenbaustein der aus vielen boolschen Variablen besteht. Um Tags zu sparen übertrage ich diese als DWORD. Das heißt ich gebe als Variable in WinCC ein Vorzeichenlosen 32bit-Wert ein mit der Adresse des Datenbausteines. Dadurch bekomme ich theoretisch mit einem Tag 32 boolsche Werte. ABer das niederwertigste Bit fehlt. Es werden in wincc, wenn ich die Variable in einem E/A Feld Anzeigen lasse nur 31 Stellen ausgegeben.??

    ICh nehme an, dass ich ein Problem mit Datentyp oder Umwandlung habe, komme aber nicht dahinter. Hat jemand Rat?

    Lg

  6. #6
    kor ist offline Benutzer
    Themenstarter
    Registriert seit
    04.02.2013
    Beiträge
    35
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo

    Problem gelöst.

    Simatic Step 7 vertauscht nicht beim DWORD LSB und MSB sondern in jedem Byte, aus welchem das DWORD besteht.

    Lg

Ähnliche Themen

  1. Brauche Tip ! 4 einzelne Byte in ein Dword
    Von Norton im Forum CODESYS und IEC61131
    Antworten: 2
    Letzter Beitrag: 15.04.2012, 15:21
  2. Bits wandeln 32Bit <=> Dword
    Von Shettyman im Forum Simatic
    Antworten: 6
    Letzter Beitrag: 22.11.2010, 20:54
  3. Antworten: 46
    Letzter Beitrag: 30.09.2010, 10:09
  4. LinNoDave und einzelne Bits
    Von Lazarus™ im Forum Hochsprachen - OPC
    Antworten: 4
    Letzter Beitrag: 19.01.2009, 13:46
  5. Einzelne Bits ausmaskieren
    Von zwerg77 im Forum Simatic
    Antworten: 1
    Letzter Beitrag: 03.12.2007, 07:14

Lesezeichen

Berechtigungen

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