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

Ergebnis 1 bis 4 von 4

Thema: BIT verschieben

  1. #1
    Registriert seit
    10.12.2012
    Beiträge
    10
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo Experten,

    ich habe ein riesen Problem. Ich hänge dort schon einige Tage und mir fällt nichts ein.
    Hier mal meine Aufgabe:

    Eine Operation in unserer Anlage wird durchgeführt, wenn das Bit in einem DB (DB1.DBX220.3) eine 1 hat.
    Dieses Signal soll jetzt variabel werden.

    In einem anderen DB steht der Wert, um wie viele Bit´s verschoben werden soll (DB8.dbw2)
    Dieser Wert kann von -20 - +20 sein.

    Z.B: Wenn ich von dem Ursprung ausgehe also DBX220.3 und in dem DB8.DBW2 der Wert -4 steht, dann soll das Signal nun der DBX220.7 sein.

    Ich hoffe ich konnte das so irgendwie deutlich machen.

    Es handelt sich um eine 315 2DP.

    Ich hoofe es kann mir jemand helfen.
    Zitieren Zitieren BIT verschieben  

  2. #2
    Registriert seit
    30.10.2009
    Ort
    10 km vom Herzen der Natur
    Beiträge
    1.628
    Danke
    120
    Erhielt 340 Danke für 255 Beiträge

    Standard

    Das lässt sich mit indirekter Adressierung lösen. Gib das mal als Suchbegriff hier im Forum ein. Das Thema ist deutlich zu komplex, um es mit einem Post zu beantworten. Lies Dir mal durch, was Du in den Suchergebnissen findest und die Fragen, die dann auftauchen, kannst Du hier wieder stellen.
    Gruß
    Michael

  3. Folgender Benutzer sagt Danke zu M-Ott für den nützlichen Beitrag:

    silverfreaky (06.08.2015)

  4. #3
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.255
    Danke
    537
    Erhielt 2.705 Danke für 1.954 Beiträge

    Standard

    Wie sieht das gesamte DBW220 oder DBD220 aus?
    Sind dort noch andere Bits gesetzt oder nur dieses eine?

    Wenn es nur diese eine Bit ist, kann man SLW, SRW, SLD, SRD verwenden. Das verschiebt alle Bits im Word/DWord um X Stellen nach rechts oder links.
    Aber du mußt natürlich sebst dafür sorgen, dass die Grenzen nicht überschritten werden. Wenn dein Bit in DBX220.3 steht, kannst du es ja nur bis zur 220.0 schieben, danach fällt es raus.
    Oder du arbeitest mit DBD218, dann hast du auch Rechts noch mehr Platz.

    Mir scheint aber, du solltest über das AR1 gehen, da kann man das auch gezielt auf genau das richtige Bit machen.

    Code:
          L     P#220.3                     //Pointer auf Adresse 220.3
          L     DB8.DBW    2                //wie weit soll verschoben werden
          ITD
          +D                                //auf den Pointer addieren
          LAR1                              //ins AR 1 laden
          AUF   DB     1                    //den richtigen DB in DB-Register
          U     DB1.DBX  220.3              //Bit gesetzt?
          =     DBX [AR1,P#0.0]             //Bit setzen
    Geändert von Ralle (19.06.2015 um 09:32 Uhr) Grund: ITD vergessen
    Gruß
    Ralle

    ... there\'re 10 kinds of people ... those who understand binaries and those who don\'t …
    and the third kinds of people … those who love TIA-Portal

  5. #4
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.255
    Danke
    537
    Erhielt 2.705 Danke für 1.954 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hier noch eine Kurzform:

    Code:
          L     DB8.DBW    2                //wie weit soll verschoben werden
          ITD
          LAR1                              //Ins AR 1 laden
          U     DB1.DBX  220.3              //Bit gesetzt?
          =     DBX [AR1,P#220.3]           //Bit setzen
    Geändert von Ralle (19.06.2015 um 09:32 Uhr) Grund: ITD vergessen
    Gruß
    Ralle

    ... there\'re 10 kinds of people ... those who understand binaries and those who don\'t …
    and the third kinds of people … those who love TIA-Portal

Ähnliche Themen

  1. TwinCAT 3 auf 64-Bit Rechner + Laufzeit auf 32-Bit Laptop
    Von RudolfAtITD im Forum CODESYS und IEC61131
    Antworten: 22
    Letzter Beitrag: 31.03.2015, 09:22
  2. 2 16 Bit INT nach REAL, aber in 2 16 Bit INT Register (Modbus)
    Von knuppel im Forum Programmierstrategien
    Antworten: 2
    Letzter Beitrag: 27.02.2015, 08:50
  3. Step 7 PN Encoder 16 Bit ST und 12 Bit MT - Auswerten
    Von Pico1184 im Forum Simatic
    Antworten: 1
    Letzter Beitrag: 20.04.2013, 14:19
  4. Antworten: 3
    Letzter Beitrag: 21.09.2010, 11:54
  5. Block um ein Bit verschieben
    Von tobl2002 im Forum Simatic
    Antworten: 36
    Letzter Beitrag: 05.05.2010, 19:41

Lesezeichen

Berechtigungen

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