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

Seite 3 von 5 ErsteErste 12345 LetzteLetzte
Ergebnis 21 bis 30 von 49

Thema: Word Bit auslesen

  1. #21
    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


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von hucki Beitrag anzeigen
    Oder Limette kann Deinen Code nicht ganz deuten.
    hehe ....


    Das niederwertigste Bit habe ich als BitNr 1 abgefragt.
    das habe ich schon so gemeint.

  2. #22
    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 Joe Beitrag anzeigen
    //_________________________________________________
    // *** zum testen
    L MD 404
    TAD // Reihenfolge der Byte drehen (evtl. musst du die Reihenfolgen nicht drehen, ja nachdem wie sie bereits drinstehen)
    RRD 16 // Worte Tauschen
    T #DWordDatei // DWORD-Variable im Lokaldatenbeieich laden
    //_________________________________________________

    //_________________________________________________
    // *** Abfrage
    LAR1 P##DWordDatei // 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)
    = #OK
    //_________________________________________________

    Falls du noch mehr mit dem Adressregister machst das sichern (vorher) und wiederherstellen (nach dem zugriff) nicht vergessen.

    Ich kanns im moment leider nicht mehr testen, aber das sieht schon elegant aus.

  3. #23
    Registriert seit
    27.06.2009
    Ort
    am Nordharz
    Beiträge
    3.717
    Danke
    443
    Erhielt 920 Danke für 740 Beiträge

    Standard

    Zitat Zitat von Limette Beitrag anzeigen
    ...
    Zitat Zitat von roadrunner Beitrag anzeigen
    ...
    Das niederwertigste Bit habe ich als BitNr 1 abgefragt.
    ...
    das habe ich schon so gemeint.
    Oben hast Du was anderes gesagt:
    Zitat Zitat von Limette Beitrag anzeigen
    Zitat Zitat von hucki Beitrag anzeigen
    ...
    Und zur Sicherheit - Bit 5 ist dann das 6. Bit, ja?
    jup.
    ...
    Aber wenn Du jetzt weist, wie Du abfragst, ist's OK.

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

    Limette (19.03.2012)

  5. #24
    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##Dword            // Adressoffset laden
          L     #Bitstelle                  // 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)
          L     0                                // Lade 0
          ==D                                  // Vergleiche 0 mit der ausgewählten bitstelle, ob sie auch 0 ist
           =     #_OK
          S     M     70.5
    Ich schreibe das Dword sicherheitshalber davor in einen DB, um zu sehen was wirklich drin steht. 101010101010...immer abwechselt true, false, true, false. Normalerweise müsste sich der Merker im selben Rhythmus setzen, passiert leider nicht.

  6. #25
    Registriert seit
    27.06.2009
    Ort
    am Nordharz
    Beiträge
    3.717
    Danke
    443
    Erhielt 920 Danke für 740 Beiträge

    Standard

    Da konntest Du den Code von Joe trotz Kommentar nicht richtig lesen!
    Mit der den Zeilen:
    Code:
    U L [AR1, P#0.0]
    = #_OK
    greifst Du schon direkt auf das Bit zu, wie z.B. bei:
    Code:
    U E0.0
    = M70.5
    Deine L 0 und ==D müssen also weg!
    Das L in der UND Zeile steht übrigens nicht für LADEN sondern für den Lokaldatenbereich, im FC also eine Temp-Variable!

    PS: das Setzen ganz am Schluß solltest Du auch wegnehmen, da Du kein Rücksetzen hast. Besser wäre also:
    Code:
    = M70.5
    Geändert von hucki (19.03.2012 um 09:42 Uhr)

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

    Limette (19.03.2012)

  8. #26
    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:
    U L [AR1, P#0.0]
    = #_OK
    dass ich hiermit auf das bit zugreife, sehe ich schon auch so.

    Code:
    L 0
    ==D
    will ich ja nur abgleichen ob das geladene bit "false" ist oder nicht.

    der Merker M70.5 dient nur der Kontrolle ob der Vergleich(==D) erfolgreich war.

  9. #27
    Registriert seit
    27.06.2009
    Ort
    am Nordharz
    Beiträge
    3.717
    Danke
    443
    Erhielt 920 Danke für 740 Beiträge

    Standard

    Aber womit vergleichst du denn? Das letzte Laden vorher war die Bitnummer!
    Und die (eigentlich gewollte) Zuweisung von #_OK machst Du auch zunichte, da der Vergleich vorher ist!
    Geändert von hucki (19.03.2012 um 10:10 Uhr)

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

    Limette (19.03.2012)

  11. #28
    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

    mhh ok.
    ich dachte mit:
    Code:
    U L [AR1,P#0.0]
    lade ich die bitstelle
    und mit
    Code:
    L 0
    lade ich eben eine 0
    und vergleiche mit ==D eben, ob beide null sind.

  12. #29
    Registriert seit
    27.06.2009
    Ort
    am Nordharz
    Beiträge
    3.717
    Danke
    443
    Erhielt 920 Danke für 740 Beiträge

    Standard

    Nein, das ist eine UND-Zeile, deshalb der Vergleich:
    Zitat Zitat von hucki Beitrag anzeigen
    ... greifst Du schon direkt auf das Bit zu, wie z.B. bei:
    Code:
    U E0.0
    = M70.5
    ...
    Wie bereits gesagt, steht das L nicht für LADE sondern für Lokaldatenbereich:
    Zitat Zitat von hucki Beitrag anzeigen
    ...
    Das L in der UND Zeile steht übrigens nicht für LADEN sondern für den Lokaldatenbereich, im FC also eine Temp-Variable!
    ...

    PS: Und wie kann man D.M.n. ein Bit mit einem DWORD vergleichen?
    Code:
    ...
    ==D
    Geändert von hucki (19.03.2012 um 10:35 Uhr)

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

    Limette (19.03.2012)

  14. #30
    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


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von hucki Beitrag anzeigen
    Wie bereits gesagt, steht das L nicht für LADE sondern für Lokaldatenbereich:

    PS: Und wie kann man D.M.n. ein Bit mit einem DWORD vergleichen?
    Code:
    ...
    ==D
    danke hucki, ich seh schon du gibst dir mühe.
    ich hab halt r,d und i zur verfügung. ist ja alles nicht so dolle. aber mit irgendwas muss ich ja das bit mit der 0 vergleichen.

    ok. mein dword muss also die erste temp variable sein, sie beginnt ja bei 0.0 im lokaldatenbereich ?! ( oder ich passe den offset entsprechend an )

    und wie kann ich dann herausfinden ob das bit true oder false ist.

Ä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
  •