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

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

Thema: Bit in FB von IDB Word adressieren

  1. #1
    Registriert seit
    02.08.2006
    Beiträge
    166
    Danke
    11
    Erhielt 10 Danke für 9 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo zusammen.

    Ich stehe gerade mit dem Kopf gegen die Wand.
    Ich programmiere gerade einen FB indem ich einen anderen FB aufrufe und dieser einen Status als Wort ausgibt.
    Dieses Wort ist als Var (Stat) angelegt im Haupt-FB.

    Ein paar Programmzeilen weiter möchte ich nun auf einzelne Bits dieses Wortes zugreifen.
    Das ganze sollte natürlich nicht mit einem absoluten Zugriff stattfinden.

    Meine erste Suche ergab dieses hier:
    Code:
     
    LAR1 ##Temp_Word //Lade Adresse von Temp Word  
    // Verknüpfung mit einem Bit: 
    U L [AR1,P#0.0]  //Beim offset (P#0.0) kannst dir dann das bit aussuchen das du aus deinem Word benötigst 
    U L [AR1,P#0.1] 
    S L [AR1,P#0.2]    //Wenn erstes Bit und zweites Bit des Temp Word dann setze drittes Bit des Temp Word
    Ich kann es leider nicht testen, da ich weder den Simulator zu Hand habe, noch eine SPS zur Zeit. Ich denke das ist es was ich suche oder gibt es noch andere "einfachere" Wege ?
    Geändert von Garog (09.01.2012 um 09:40 Uhr)
    Zitieren Zitieren Bit in FB von IDB Word adressieren  

  2. #2
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.718
    Danke
    398
    Erhielt 2.400 Danke für 2.000 Beiträge

    Standard

    Hallo,
    Pointer auf die Variable bilden und den Inhalt auf diese Weise adressieren.
    Bei Multi-Instanzen den möglichen Versatz (AR2) berücksichtigen.
    Blöd ist hier nur, dass du den Pointer immer nur auf das Haupt-Element der Struktur (bei dir jetzt auf den FB im FB) bilden kannst und die Verschiebung zur Unter-Variablen (also dem OUT-Wort) handisch eintragen mußt. Das ist es dann wahrscheinlich wieder nicht, was du willst ...

    Gruß
    Larry

  3. #3
    Registriert seit
    10.11.2010
    Beiträge
    21
    Danke
    1
    Erhielt 4 Danke für 4 Beiträge

    Standard

    Hallo was auch geht, in den Tempvaraibalen eine Array[0..15] of Bool anlegen und mit Sfc20 das Word (evtl. vorher das Word in eine andere TempVariable schieben) auf die Struktur des Arrays kopieren, dann kann jedes Bit über ArrayName[n] ausgelesen werden, es muss dabei nur die Byte-Eigenwiligkeit von Siemens berücksichtiugt werden w#16#0001 gibt halt ArrayName[8].
    Es sieht nicht ganz so professionel aus wie wen man mit Pointer jongliert, aber es funktioniert einfach und transparent (und ist im Prinzip nichts anders).

    Gruss Asab

  4. #4
    Garog ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    02.08.2006
    Beiträge
    166
    Danke
    11
    Erhielt 10 Danke für 9 Beiträge

    Standard

    Das hatte ich auch schon im Kopf, jedoch ist der Status nicht "nur" ein Status, es ist mehr ein INOUT Steuerwort.
    Daher muss ich schon die entsprechenden Bits lesen und schreiben können.

    AWL und Siemens.. ich werde mich nie dran gewöhnen ^^

  5. #5
    Registriert seit
    10.11.2010
    Beiträge
    21
    Danke
    1
    Erhielt 4 Danke für 4 Beiträge

    Standard

    wer hindert Dich daran die Bits nach dem zuweisen wieder zurück auf den INOUT zu schreiben (auch mit dem SFC20) evtl. auch über den Umweg über tempVar (das Ganze geht dann auch mit KOP oder FUB dann benötigts Du kein AWL)

    ASAB

  6. #6
    Garog ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    02.08.2006
    Beiträge
    166
    Danke
    11
    Erhielt 10 Danke für 9 Beiträge

    Standard

    AWL ist leider vom Kunden vorgegeben worden Da komme ich nicht drum rum

  7. #7
    Registriert seit
    15.04.2011
    Beiträge
    1.122
    Danke
    229
    Erhielt 208 Danke für 176 Beiträge

    Standard

    Dann programmiere doch in KOP oder FUP stelle die Ansicht anschließend auf AWL um.
    Gruß
    190B

  8. #8
    Garog ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    02.08.2006
    Beiträge
    166
    Danke
    11
    Erhielt 10 Danke für 9 Beiträge

    Standard

    Wäre möglich, sollten aber keine NOPs drin sein und das ganze soll in AWL Quellen vorliegen, ob ich nun den Umweg gehe oder es direkt mache. Spielt hierbei keine große Rolle.

    Eine andere Sache an der ich gerade arbeite.

    Ich habe im Var Bereich folgendes
    Code:
    Recv_Buffer    : UDT3 ;
    Der UDT3 besteht aus 24 Bytes.
    In der Quelle möchte ich nun die ersten 4 Bytes auslesen, da sich dort ein REAL Wert befindet...

  9. #9
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.718
    Danke
    398
    Erhielt 2.400 Danke für 2.000 Beiträge

    Standard

    Alles was du da vorhast ist eigentlich ein für SCL prädestiniertes Thema.
    Vielleicht schluckt dein Kunde ja dies als Alternative zu AWL - manchmal kann man ja auch über Dinge reden ... denn ein AWL-Code, der von Pointern etc. nur so strotzt, ist auch keine tolle Lösung. Das Gleiche wäre in SCL dann aber wieder gut lesbar ...

    Gruß
    Larry

  10. #10
    Garog ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    02.08.2006
    Beiträge
    166
    Danke
    11
    Erhielt 10 Danke für 9 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Larry, ich kann dir da nur zustimmen... du wirst lachen, aber ich programmiere gerade ein von mit erstelltes SCL Programm in AWL um.... aus bereits genannten Gründen.

    Da ist leider nix mehr zu rütteln
    Auch wenn ich mir sicher bin, das der Kunde mit dem AWL Code genau so wenig anfangen kann

Ähnliche Themen

  1. Symbolik IDB Bit und Byte
    Von mariob im Forum Simatic
    Antworten: 4
    Letzter Beitrag: 18.10.2010, 12:37
  2. Bit im Word, InstanzDB...
    Von AndreK im Forum Simatic
    Antworten: 10
    Letzter Beitrag: 09.03.2009, 11:36
  3. Bit Adressieren im SLAVE (PA)...
    Von AndreK im Forum Simatic
    Antworten: 7
    Letzter Beitrag: 17.02.2009, 11:18
  4. Bit im Word abfragen
    Von johnij im Forum HMI
    Antworten: 15
    Letzter Beitrag: 09.06.2008, 13:33
  5. Einzelnes Bit in SCL Adressieren
    Von godi im Forum Programmierstrategien
    Antworten: 4
    Letzter Beitrag: 17.08.2007, 09:56

Lesezeichen

Berechtigungen

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