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

Seite 1 von 3 123 LetzteLetzte
Ergebnis 1 bis 10 von 25

Thema: Und - Und nicht

  1. #1
    Registriert seit
    24.07.2009
    Beiträge
    15
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Moin, ich hab mal wieder eine Frage.
    Folgende Aufgabenstellung: Man hat 5 Schalter und eine Lampe, die Lampe soll nur leuchten wenn nur einer von den 5 Schaltern aktiv ist.

    Jetzt hab ich mir überlegt wie ich das mache -> Natürlich ganz einfach, 5 UNDs (Jeweils 5 Schalter, 4 davon negiert) und ein Oder.

    Aber was mach ich wenn ich jetzt beispielsweise 100 Schalter hätte. Kann man das einfacher lösen oder bräuchte ich theoretisch 100 UNDs ?

    MFG
    Zitieren Zitieren Und - Und nicht  

  2. #2
    Registriert seit
    12.09.2009
    Beiträge
    31
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Heisst das ding dann nicht XOR ?

    Exclusiv-Oder ?

    Schau mal, wie das programmiert wird...

    Bei der PS3/PS4 sieht das so aus:
    Code:
    L I 0.0
    XO I 0.1
    XO I 0.2
    XO I 0.3
    = Q 0.0
    Grad nochmal getestet...... klappt auf der PS4 jedenfalls
    MfG
    Alexander

    (2xPS3 AC, 1xPS4-101-DD1, Caddy++XP, Siemens Logo! 12/24RC)

  3. #3
    Registriert seit
    27.10.2005
    Ort
    Schwäbisch Gmünd
    Beiträge
    5.235
    Danke
    640
    Erhielt 955 Danke für 769 Beiträge

    Standard

    Ein XOR liefert eine 0, wenn die Anzahl der gesetzten Bits gerade ist und eine 1, wenn diese ungerade ist. Die Lampe würde somit bei 1, 3, 5 gesetzten Bits an sein.
    Rainer Hönle
    DELTA LOGIC GmbH

    Ein Computer kann das menschliche Gehirn nicht ersetzen. Engstirnigkeit kann unmöglich simuliert werden. (Gerd W. Heyse)

  4. #4
    Registriert seit
    21.01.2008
    Beiträge
    70
    Danke
    0
    Erhielt 15 Danke für 15 Beiträge

    Standard

    Zitat Zitat von canYon Beitrag anzeigen
    Aber was mach ich wenn ich jetzt beispielsweise 100 Schalter hätte. Kann man das einfacher lösen oder bräuchte ich theoretisch 100 UNDs ?
    Wenn die Eingänge zusammenhängen, kannst du eine Schleife machen und über Pointer indirekt adressieren und die Anzahl der Bits welche 1 sind zählen.

  5. #5
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.262
    Danke
    537
    Erhielt 2.707 Danke für 1.956 Beiträge

    Standard

    Zitat Zitat von wwwandy Beitrag anzeigen
    Wenn die Eingänge zusammenhängen, kannst du eine Schleife machen und über Pointer indirekt adressieren und die Anzahl der Bits welche 1 sind zählen.
    Nö, in dem Falle lieber diese Version (aber natürlich abgewandelt) von thomas2.1, die ist durchaus tricky: http://www.sps-forum.de/showthread.p...light=Mantisse

    Aber das ist im falle von 5 Eingängen etwas übertrieben.
    Nur mal so als Bsp., die Eingänge müßte man vorher noch in #In_Word schreiben.

    Code:
          O Ex1
          O Ex2
          O Ex3
          O Ex4
          O Ex5
          = Ay
    
          L     #IN_WORD  //alle Bits (Ex1-Ex5) liegen hier drin, nicht benutzte Bit sind 0!
          DTR   
          L     DW#16#7FFFFF
          UD    
          L     L#0
          <>D   
          R Ay
    Geändert von Ralle (14.09.2009 um 18:53 Uhr)
    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

  6. #6
    Registriert seit
    12.09.2009
    Beiträge
    31
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Zitat Zitat von Rainer Hönle Beitrag anzeigen
    Ein XOR liefert eine 0, wenn die Anzahl der gesetzten Bits gerade ist und eine 1, wenn diese ungerade ist. Die Lampe würde somit bei 1, 3, 5 gesetzten Bits an sein.
    JO.... auch grad gemerkt... hatte es vorher nur mit zwei Drähten freihand getestet... und bei zwei Ports funktionierts *GGG*

    Grad ne 3er-Brücke fest angeschraubt und siehe da...... Du hast recht und der Ausgang kommt trotzdem.
    MfG
    Alexander

    (2xPS3 AC, 1xPS4-101-DD1, Caddy++XP, Siemens Logo! 12/24RC)

  7. #7
    Registriert seit
    07.06.2006
    Ort
    Bayern
    Beiträge
    624
    Danke
    27
    Erhielt 156 Danke für 139 Beiträge

    Standard

    im Falle von wwwandy könnte das z.B. so aussehen

    Code:
          L     P#0.0                       //Pointer mit Anfangsadresse laden (E0.0)
          LAR1  
    
          L     0                           //Zaehler mit 0 vorbelegen
          T     #Zaehler
    
          L     100                         //Anzahl zu pruefender Eingaenge
    
    Next: T     #LoopCounter                //Schleifenbeginn
    
          U     E [AR1,P#0.0]
          SPBN  M0
    
          L     #Zaehler                    //Wenn Eingang aktiv, dann Zaehler um 1 nach oben
          L     1
          +I    
          T     #Zaehler
    
    M0:   NOP   0
    
          L     P#0.1                       //Zeiger um 1 Bit nach oben
          +AR1  
    
          L     #LoopCounter
          LOOP  Next                        //Schleifenende
    
    
    //Anzahl aktiver Eingaenge pruefen, wenn 1, dann Ausgang aktiv
    
          L     #Zaehler
          L     1
          ==I   
          =     A      5.0
    habs grad mal simuliert - sollte so funktionieren

  8. #8
    Registriert seit
    29.08.2009
    Beiträge
    776
    Danke
    25
    Erhielt 3 Danke für 3 Beiträge

    Standard

    Verstehe das von Ralle nicht, wie schreibst du denn die Bits in #IN_WORD ? Bitweise, oder addiert zu einer Zahl?
    Zitieren Zitieren ???  

  9. #9
    Registriert seit
    07.06.2006
    Ort
    Bayern
    Beiträge
    624
    Danke
    27
    Erhielt 156 Danke für 139 Beiträge

    Standard

    @bensen83

    die Eingänge müssen Bitweise in #IN_WORD abgelegt werden. Du kannst auch direkt das Eingangswort z.B. EW0 laden, dann musst du aber evtl. nicht verwendete Eingänge ausmaskieren bzw. sicherstellen, dass diese Low bleiben.

    Mir gefällt die "REAL"-Variante allerdings nicht so gut, wenn das nicht ordentlich kommentiert ist, dann blickt da nicht unbedingt jeder durch.

    Mfg

    uncle_tom

  10. #10
    Registriert seit
    27.10.2005
    Ort
    Schwäbisch Gmünd
    Beiträge
    5.235
    Danke
    640
    Erhielt 955 Danke für 769 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    @Ralle:
    Wenn das DTR ein ITD wäre, könnte ich noch was damit anfangen. Aber dann würde der Ausgang gesetzt, wenn mindestens ein Eingang gesetzt ist und nicht wenn genau ein Eingang gesetzt ist. Oder habe ich bloß den Trick nicht verstanden?

    Edit: Ich denke jetzt habe ich es kapiert
    Geändert von Rainer Hönle (14.09.2009 um 20:05 Uhr) Grund: Ein Licht ging nach dem Lesen des Links auf
    Rainer Hönle
    DELTA LOGIC GmbH

    Ein Computer kann das menschliche Gehirn nicht ersetzen. Engstirnigkeit kann unmöglich simuliert werden. (Gerd W. Heyse)

Ähnliche Themen

  1. Antworten: 13
    Letzter Beitrag: 22.10.2010, 22:22
  2. Antworten: 35
    Letzter Beitrag: 14.09.2010, 14:16

Lesezeichen

Berechtigungen

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