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

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

Thema: Einsen zählen in einem EW oder ED

  1. #1
    Registriert seit
    04.09.2009
    Beiträge
    6
    Danke
    6
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo Leute,
    hab wieder mal ne Frage und zwar wie kann ich Einsen in einem EW oder ED zählen?
    Ich hatte mir zunächst zwei möglichkeiten überlegt.

    Code:
    L EW0 // 0000_0000_0000_0011
    L MW0 // 0000_0000_0000_0001
    UW // 0000_0000_0000_0001
    Jetzt sollte das Programm eine Art Zähler um eins hochzählen, danach das MW0 verdoppeln auf 0000_0000_0000_0010, damit ich die nächste Eins abfragen kann. Zu aller erst, ist das Schwachsinn oder machbar?

    Meine zweite Überlegung war zunächst dieselbe, nur das mein MW0 gleichbleibt, also 0000_0000_0000_0001 und ich immer nur des EW0 um ein Bit nach rechts verschiebe und immer das letzte Bit auf eine eins überprüfe und dementsprechend dann hochzähle, bis ich 15 mal nach rechts geschoben hab.
    Ist diese Überlegung auch Humbug? Oder ist es besser die eins im MW0 nach links zu schieben?
    Und wie erhalte ich einen Wert, der über einen Zyklus hinaus erhalten bleibt? Eine statische Variable in einem FB? Und wenn ja, wie benutze ich diese am besten? Direkt oder über den Zugriff auf den entsprechenden DB?

    Danke schonmal
    Zitieren Zitieren Einsen zählen in einem EW oder ED  

  2. #2
    Registriert seit
    21.12.2006
    Ort
    Wiener Neustadt
    Beiträge
    931
    Danke
    154
    Erhielt 169 Danke für 127 Beiträge

    Standard

    Hallo!

    Probier die Suchfunktion mit "FC99"

    Wenn ich die Frage richtig verstanden habe.
    Gruß
    M

    Handbook not read error...
    Klare Frage - klare Antwort

  3. #3
    Registriert seit
    08.04.2008
    Ort
    Köln
    Beiträge
    844
    Danke
    39
    Erhielt 244 Danke für 199 Beiträge

    Standard

    Hallo Mufi,

    um die Einsen im EW/ED zu zählen würde ich eine Schleife programmieren, die
    16(32) mal durchlaufen wird.
    Vor der Schleife kopierst Du Dein EW/ED in ein MW/MD.
    In der Schleife kannst Du mit SLW 1/SLD 1 und SPP prüfen, ob das entsprechende Bit = 1 ist.
    Wenn ja den Zähler um eins erhöhen.

    Wie Du diesen Zähler dann ausserhalb Deines Bausteins auswertest, ist geschmackssache.

    Grüße
    Gebs

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

    mufi (10.09.2009)

  5. #4
    Registriert seit
    23.04.2009
    Ort
    Allgäu
    Beiträge
    3.042
    Danke
    241
    Erhielt 863 Danke für 617 Beiträge

    Standard

    Zitat Zitat von mufi Beitrag anzeigen
    Meine zweite Überlegung war zunächst dieselbe, nur das mein MW0 gleichbleibt, also 0000_0000_0000_0001 und ich immer nur des EW0 um ein Bit nach rechts verschiebe und immer das letzte Bit auf eine eins überprüfe und dementsprechend dann hochzähle, bis ich 15 mal nach rechts geschoben hab.
    Ist diese Überlegung auch Humbug? Oder ist es besser die eins im MW0 nach links zu schieben?
    Und wie erhalte ich einen Wert, der über einen Zyklus hinaus erhalten bleibt? Eine statische Variable in einem FB? Und wenn ja, wie benutze ich diese am besten? Direkt oder über den Zugriff auf den entsprechenden DB?
    Also Mufi,
    die zweite Lösung ist die bessere
    Speichern kannst Du das ganze dann in ein Merkerwort oder ein Datenwort von einem Globalen DB.
    Oder natürlich auch auf den Statischen Bereich sprich DI, aber nur wenn Du es in diesem Baustein wieder benutzt.
    Aus einem anderen Baustein solltest Du nicht auf die Instanzdaten eines anderen FB's zugreifen > nicht schön.
    Gruß
    Paule
    ----------------------------------------------------------------------------
    > manchmal verliert man und manchmal gewinnen die anderen <

  6. Folgender Benutzer sagt Danke zu Paule für den nützlichen Beitrag:

    mufi (10.09.2009)

  7. #5
    mufi ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    04.09.2009
    Beiträge
    6
    Danke
    6
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Vielen Dank für die schnellen Antworten

    Habe jetzt folgendes daraus gemacht:
    Code:
    L     Z      1  
          L     15
          >I    
          U(    
          L     Z      0
          T     AW     4
          )     
          BEB   
    
          L     EW     0
          L     W#16#1
          UW    
          ZV    Z      0
    
          L     W#16#1
          L     W#16#1
          UW    
          ZV    Z      1
    
          L     EW     0
          T     MW     0
    
          L     MW     0
          SRW   1
          T     MW     0
    
          L     MW     0
          T     EW     0
    Mein einziges Problem ist, dass die dummen Zähler bei eins aufhören zu zählen
    Ich weiß, dass man das eleganter über merker lösen sollte, aber irgendwie klappt das net ganz, ich probiers jez mal mit manuellem Zählen...

  8. #6
    Registriert seit
    08.04.2008
    Ort
    Köln
    Beiträge
    844
    Danke
    39
    Erhielt 244 Danke für 199 Beiträge

    Standard

    Zitat Zitat von mufi Beitrag anzeigen
    Mein einziges Problem ist, dass die dummen Zähler bei eins aufhören zu zählen
    Ich nehme an Dein Code wird nur 1 mal im Zyklus durchlaufen. Deshalb kann der Zähler nur bis max. 1 zählen.

    Grüße
    Gebs

  9. #7
    Registriert seit
    25.08.2003
    Beiträge
    332
    Danke
    46
    Erhielt 54 Danke für 46 Beiträge

    Lächeln

    Tacho,

    hast du dir denn mal den FC99 "BITSUM" aus der Standard-Bibliothek angeguckt.

    Der macht doch genau das, was du willst, oder?

    Gruß
    Flinn

  10. #8
    Registriert seit
    21.12.2006
    Ort
    Wiener Neustadt
    Beiträge
    931
    Danke
    154
    Erhielt 169 Danke für 127 Beiträge

    Standard

    Hallo!

    @ Flinn:

    oder ich kapier die ursprüngliche Fragestellung nicht
    Gruß
    M

    Handbook not read error...
    Klare Frage - klare Antwort

  11. #9
    mufi ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    04.09.2009
    Beiträge
    6
    Danke
    6
    Erhielt 0 Danke für 0 Beiträge

    Standard

    habs jetzt versucht so zu lösen:
    NW1:
    Code:
          L     EW     0
          L     W#16#1
          UW    
          U(    
          L     MW     2
          L     1
          +I    
          T     MW     2
          )     
    
          L     EW     0
          L     W#16#1
          UW    
          U(    
          L     MW     4
          L     1
          +I    
          T     MW     4
          )     
    
          L     EW     0
          T     MW     0
    
          L     MW     0
          SRW   1
          T     EW     0
    NW2:
    Code:
    L     MW     4
          L     14
          >I    
          U(    
          L     MW     2
          T     AW     4
          L     0
          T     MW     4
          )     
          T     MW     2
    Ich kann in der Klausur keine fertigen FC's benutzen, daher muss ich sowas selber proggen können.

    Warum wird das ganze denn nur einmal bearbeitet? Was muss ich denn machen, damit es auch die gewünschte Anzahl von Durchläufen macht?

  12. #10
    Registriert seit
    21.12.2006
    Ort
    Wiener Neustadt
    Beiträge
    931
    Danke
    154
    Erhielt 169 Danke für 127 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo!

    Der FC99 macht folgendes:

    Code:
          L     0                           
          T     #RET_VAL                    
          L     #IN                         
          T     #wrkVal                     
    A001: L     0                           
          L     #wrkVal                     
         ==D                               
          SPB   A002                        
          SRD   1                           
          T     #wrkVal                     
          SPZ   A001                        
          L     #RET_VAL                 
          L     1                           
          +I                               
          T     #RET_VAL                   
          SPA   A001                      
    A002: SET                               
          SAVE
    vielleicht hilfts dir!
    Geändert von Manfred Stangl (15.09.2009 um 10:22 Uhr)
    Gruß
    M

    Handbook not read error...
    Klare Frage - klare Antwort

Ähnliche Themen

  1. Objekte ( Eier ) Zählen auf einem Förderband
    Von chefren_new im Forum Simatic
    Antworten: 7
    Letzter Beitrag: 19.05.2011, 22:04
  2. Antworten: 3
    Letzter Beitrag: 17.03.2011, 22:49
  3. Antworten: 11
    Letzter Beitrag: 03.03.2010, 16:17
  4. Antworten: 71
    Letzter Beitrag: 06.04.2008, 16:18
  5. Antworten: 0
    Letzter Beitrag: 27.03.2007, 19:27

Lesezeichen

Berechtigungen

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