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

Seite 4 von 5 ErsteErste ... 2345 LetzteLetzte
Ergebnis 31 bis 40 von 49

Thema: Word Bit auslesen

  1. #31
    Registriert seit
    27.06.2009
    Ort
    am Nordharz
    Beiträge
    3.716
    Danke
    443
    Erhielt 914 Danke für 739 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Wir reden immer noch aneinander vorbei.
    Wie stellst Du normalerweise fest, ob ein Bit gesetzt ist. Wie stellst Du fest, ob Dein Eingang gesetzt ist und schaltest danach Deinen Ausgang ein/aus:
    Code:
    U E0.0
    = A0.0
    und jetzt sieh Dir Joe's Code an:
    Code:
    U L [AR1,P#0.0]
    = #_OK
    Die UND-Zeile im Klartext:
    Code:
    UND das Bit, das im Lokaldatenbereich an der Stelle steht, auf das das Adressregister AR1, plus den Versatz P#0.0, zeigt.
    Geändert von hucki (19.03.2012 um 10:59 Uhr)

  2. Folgender Benutzer sagt Danke zu hucki für den nützlichen Beitrag:

    Limette (19.03.2012)

  3. #32
    Limette ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    25.10.2010
    Beiträge
    239
    Danke
    107
    Erhielt 2 Danke für 2 Beiträge

    Standard

    lol, der groschen ist gefallen und siehe da: es funktioniert sogar.

  4. #33
    Registriert seit
    27.06.2009
    Ort
    am Nordharz
    Beiträge
    3.716
    Danke
    443
    Erhielt 914 Danke für 739 Beiträge

    Standard

    Ich würd' sagen, der berühmte Wald vor lauter Bäumen

    Man denkt halt oft viel zu kompliziert.

  5. #34
    Registriert seit
    27.06.2009
    Ort
    am Nordharz
    Beiträge
    3.716
    Danke
    443
    Erhielt 914 Danke für 739 Beiträge

    Standard

    Zitat Zitat von Limette Beitrag anzeigen
    ...
    mein dword muss also die erste temp variable sein, sie beginnt ja bei 0.0 im lokaldatenbereich ?! ( oder ich passe den offset entsprechend an )...
    die temp-Variable muss übrigens nicht an der ersten Stelle stehen! Wo sie wirklich steht bzw. beginnt, stellt diese Zeile fest:
    Code:
    LAR1 P##DWordDatei

  6. #35
    Limette ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    25.10.2010
    Beiträge
    239
    Danke
    107
    Erhielt 2 Danke für 2 Beiträge

    Standard

    Code:
          LAR1  P##Dword1           // Adressoffset laden
          L     #bitnummer                 // Die Bitnummer wählen (bei DWORD 0..31) (bei WORD 0..15)
          +AR1                              // Die Bits zum Adressregister addieren
          U     L [AR1,P#0.0]               // auf die Bitnummer zugreifen (hier lokaldaten)
          LAR2  P##Dword2
          L     #bitnummer
          +AR2  
          U     L [AR2,P#0.0]
          ==D   
          U     #_OK

    Hucki:

    mir ist eingefallen, ich würde auch gerne zwei dwords auf die selbe bitstelle vergleichen. mein ==D ist wieder am start ^^. das ist wahrscheinlich wieder falsch.
    wie vergleicht man ar1 und ar2 ?

  7. #36
    Registriert seit
    27.06.2009
    Ort
    am Nordharz
    Beiträge
    3.716
    Danke
    443
    Erhielt 914 Danke für 739 Beiträge

    Standard

    Zitat Zitat von Limette Beitrag anzeigen
    ...
    mein ==D ist wieder am start ^^. das ist wahrscheinlich wieder falsch.
    wie vergleicht man ar1 und ar2 ?
    aus dem Kopf, ungetestet:
    Code:
    TAR1  #dTempAR1                   // Adressregister1 sichern
    TAR2  #dTempAR2                   // Adressregister2 sichern
    
    LAR1  P##DWordDatei1              // 1. Adressoffset laden
    LAR2  P##DWordDatei2              // 2. Adressoffset laden
    L     #BitNr                      // Die Bitnummer wählen (bei DWORD 0..31) (bei WORD 0..15)
    +AR1                              // Die Bits zum Adressregister1 addieren
    +AR2                              // Die Bits zum Adressregister2 addieren
    
    U     L [AR1,P#0.0]               // auf das Bit des 1. DWORD zugreifen
    =     #_OK1
    
    U     L [AR2,P#0.0]               // auf das Bit des 2. DWORD zugreifen
    =     #_OK2
    
    U     #_OK1                       // Zustand 1. gesuchtes Bit mit
    XN    #_OK2                       // Zustand 2. gesuchtes Bit vergleichen
    =     #_OK3                       // wenn NICHT verschieden, dann GLEICH (NOT XOR)
    
    LAR1  #dTempAR1                   // Adressregister1 wieder herstellen
    LAR2  #dTempAR2                   // Adressregister2 wieder herstellen
    Jetzt solltest Du vorher auf jeden Fall das Adressregister2 sichern, deswegen hab' ich es für beide AR mit reingeschrieben.

  8. Folgender Benutzer sagt Danke zu hucki für den nützlichen Beitrag:

    Limette (19.03.2012)

  9. #37
    Registriert seit
    27.06.2009
    Ort
    am Nordharz
    Beiträge
    3.716
    Danke
    443
    Erhielt 914 Danke für 739 Beiträge

    Standard

    Zitat Zitat von rostiger Nagel Beitrag anzeigen
    Zitat Zitat von hucki Beitrag anzeigen
    Da ich schon lange nichts mehr mit der 300er und deren Adressregistern gemacht habe ->

    Wie sichert man das/die Adressregister und stellt es/sie anschließend wieder her?
    Und sollte man sich angewöhnen, dies grundsätzlich zu tun oder nur in bestimmten Fällen?
    Bei Multiinstanzen ist es Pflicht, wenn du mit dem Adressregister 2 arbeitest.
    Grundsätzlich ist es keine schlechte Angewohnheit.

    Code:
          TAR1  #dTempAR1                   //Adressregister retten
          TAR2  #dTempAR2
    
          ...
          ...
          //Hier steht dann irgendeine Operation wo das Adressregister Vergerwaltigt wird
          ...
          ...
    
          LAR1  #dTempAR1
          LAR2  #dTempAR2                   //Adressregister zurückschreiben

    @admins,
    ich hab' bei der Gelegenheit gerade gemerkt, daß ich meine zitierte Frage im falschen Thread gestellt hatte.
    Die bezog' sich eigentlich auf Joes Code in diesem Thread.
    Ist es möglich und macht es Sinn, die Frage und zugehörigen Antworten hier noch nachträglich rein zu verschieben?
    PS: Müßte dann zwischen Post 23 und 24.
    Geändert von hucki (19.03.2012 um 12:41 Uhr)

  10. #38
    Limette ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    25.10.2010
    Beiträge
    239
    Danke
    107
    Erhielt 2 Danke für 2 Beiträge

    Standard

    Zitat Zitat von hucki Beitrag anzeigen
    aus dem Kopf, ungetestet:
    Code:
    TAR1  #dTempAR1                   // Adressregister1 sichern
    TAR2  #dTempAR2                   // Adressregister2 sichern
    
    LAR1  P##DWordDatei1              // 1. Adressoffset laden
    LAR2  P##DWordDatei2              // 2. Adressoffset laden
    L     #BitNr                      // Die Bitnummer wählen (bei DWORD 0..31) (bei WORD 0..15)
    +AR1                              // Die Bits zum Adressregister1 addieren
    +AR2                              // Die Bits zum Adressregister2 addieren
    
    U     L [AR1,P#0.0]               // auf das Bit des 1. DWORD zugreifen
    =     #_OK1
    
    U     L [AR2,P#0.0]               // auf das Bit des 2. DWORD zugreifen
    =     #_OK2
    
    U     #_OK1                       // Zustand 1. gesuchtes Bit mit
    XN    #_OK2                       // Zustand 2. gesuchtes Bit vergleichen
    =     #_OK3                       // wenn NICHT verschieden, dann GLEICH (NOT XOR)
    
    LAR1  #dTempAR1                   // Adressregister1 wieder herstellen
    LAR2  #dTempAR2                   // Adressregister2 wieder herstellen
    Jetzt solltest Du vorher auf jeden Fall das Adressregister2 sichern, deswegen hab' ich es für beide AR mit reingeschrieben.
    getestet und für gut befunden.

  11. #39
    Registriert seit
    27.06.2009
    Ort
    am Nordharz
    Beiträge
    3.716
    Danke
    443
    Erhielt 914 Danke für 739 Beiträge

    Standard

    Hast Du die einzelnen Zeilen von Joes Programm und meiner daraus resultierenden Erweiterung auch verstanden?
    Dieser Post ließ nicht gerade darauf schließen:
    Zitat Zitat von Limette Beitrag anzeigen
    Code:
          LAR1  P##Dword1           // Adressoffset laden
          L     #bitnummer                 // Die Bitnummer wählen (bei DWORD 0..31) (bei WORD 0..15)
          +AR1                              // Die Bits zum Adressregister addieren
          U     L [AR1,P#0.0]               // auf die Bitnummer zugreifen (hier lokaldaten)
          LAR2  P##Dword2
          L     #bitnummer
          +AR2  
          U     L [AR2,P#0.0]
          ==D   
          U     #_OK

    Hucki:

    mir ist eingefallen, ich würde auch gerne zwei dwords auf die selbe bitstelle vergleichen. mein ==D ist wieder am start ^^. das ist wahrscheinlich wieder falsch.
    wie vergleicht man ar1 und ar2 ?
    Wenn Dir einzelne Sachen nicht ganz klar sind, frag' ruhig - dafür ist das Forum da!

  12. #40
    Registriert seit
    27.06.2009
    Ort
    am Nordharz
    Beiträge
    3.716
    Danke
    443
    Erhielt 914 Danke für 739 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    PS: Den 3.Vergleich:
    Zitat Zitat von hucki Beitrag anzeigen
    ...
    Code:
    ...
    U     L [AR1,P#0.0]               // auf das Bit des 1. DWORD zugreifen
    =     #_OK1
    
    U     L [AR2,P#0.0]               // auf das Bit des 2. DWORD zugreifen
    =     #_OK2
    
    U     #_OK1                       // Zustand 1. gesuchtes Bit mit
    XN    #_OK2                       // Zustand 2. gesuchtes Bit vergleichen
    =     #_OK3                       // wenn NICHT verschieden, dann GLEICH (NOT XOR)
    ...
    ...
    kannst Du auch direkt (ohne die Zwischenzuweisungen) machen:
    Code:
    ...
    U     L [AR1,P#0.0]               // Zustand 1. gesuchtes Bit mit
    XN    L [AR2,P#0.0]               // Zustand 2. gesuchtes Bit vergleichen
    =     #_OK3                       // wenn NICHT verschieden, dann GLEICH (NOT XOR)
    ...

  13. Folgender Benutzer sagt Danke zu hucki für den nützlichen Beitrag:

    Limette (20.03.2012)

Ähnliche Themen

  1. Codesys 2.3 : Bit TO word
    Von Kieler im Forum CODESYS und IEC61131
    Antworten: 3
    Letzter Beitrag: 26.02.2012, 21:02
  2. Bit in FB von IDB Word adressieren
    Von Garog im Forum Simatic
    Antworten: 13
    Letzter Beitrag: 10.01.2012, 12:54
  3. Einzelnes Bit aus Word
    Von sps-welt im Forum Simatic
    Antworten: 11
    Letzter Beitrag: 28.04.2009, 09:44
  4. Bit im Word, InstanzDB...
    Von AndreK im Forum Simatic
    Antworten: 10
    Letzter Beitrag: 09.03.2009, 11:36
  5. Bit im Word abfragen
    Von johnij im Forum HMI
    Antworten: 15
    Letzter Beitrag: 09.06.2008, 13:33

Lesezeichen

Berechtigungen

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