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

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

Thema: Gerade od. Ungerade das ist hier die Frage

  1. #1
    Anonymous Gast

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    wie kann ich bei einer integer zahl feststellen ob sie gerade od. ungerade ist, ohne den befehl mod_di (fup) zu verwenden. da ich zuerst die zahl in ein md wandeln und anschl. den divisionsrest auswerten müsste. geht dies einfacher. fup lösung wäre mir lieber, wird aber am schnellsten in awl zu lösen sein oder???
    315-dp, Simatic-Manager V5.1+SP6
    danke im voraus für die mühe
    tanja
    Zitieren Zitieren Gelöst: Gerade od. Ungerade das ist hier die Frage  

  2. "Habs derweil schon getestet, hat funktioniert.
    Ich arbeite lieber mit Merkern, weil DB`s nicht ganz so schnell sind sobald die Funktionen mehr und größer werden."


  3. #2
    Registriert seit
    08.02.2005
    Beiträge
    82
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    schau dir das rechteste bit an. bei db1.dbw0 wäre es das bit db1.dbx1. 0. wenn dieses high ist, dann ist der integer ungerade, bei low gerade.

    viele grüße aus berlin von
    lutz
    buenger-sps-technik

  4. #3
    Anonymous Gast

    Standard

    auf die lösung hätte ich doch selber auch kommen müssen. danke!!!!!!
    Zitieren Zitieren danke  

  5. #4
    Registriert seit
    06.11.2012
    Ort
    Düren
    Beiträge
    25
    Danke
    11
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hallo zusammen,

    habe da mal ne Frage zur Sicherstellung für mich.
    Würde dies auch bei einem MW funktionieren?
    Beispiel:
    Habe ein MW4 aus einem Zähler. das Wird dann von BCD > INT und ist dann MW 6.
    Wenn ich nun M6.0 abfrage und der HIGH ist habe ich dann auch eine ungerade Zahl?

    P.S. gleiche CPU wie der Starter.

    Vielen Dank schon mal.

  6. #5
    Registriert seit
    12.05.2009
    Beiträge
    61
    Danke
    21
    Erhielt 14 Danke für 12 Beiträge

    Standard

    M7.0 wird es sein.
    Manchmal ist testen sinnvoller als auf Antworten zu warten...

    Grüße

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

    Michakron (03.02.2014)

  8. #6
    Registriert seit
    22.11.2006
    Ort
    CH
    Beiträge
    3.620
    Danke
    777
    Erhielt 647 Danke für 493 Beiträge

    Standard

    Integer hat kein Vorzeichen Bit.

    mfG René

  9. #7
    Registriert seit
    06.11.2012
    Ort
    Düren
    Beiträge
    25
    Danke
    11
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Habs derweil schon getestet, hat funktioniert.
    Ich arbeite lieber mit Merkern, weil DB`s nicht ganz so schnell sind sobald die Funktionen mehr und größer werden.

  10. #8
    Registriert seit
    20.10.2004
    Beiträge
    650
    Danke
    5
    Erhielt 26 Danke für 26 Beiträge

    Standard

    Zitat Zitat von vollmi Beitrag anzeigen
    Integer hat kein Vorzeichen Bit.
    wieso hat integer kein vorzeichen

    aber ein word hat dann eins oder was meinst du

  11. #9
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.192
    Danke
    925
    Erhielt 3.292 Danke für 2.661 Beiträge

    Standard

    Wenn man in FUP sauber symbolisch testen will, ob ein Wert gerade oder ungerade ist, dann maskiert man das niederwertigste Bit (WordVar WAND_W W#16#1) oder schiebt das niederwertigste Bit in das Statusbit A1 (WordVar SHR_W W#16#1 oder IntVar SHR_I W#16#1) und fragt dann das Statusbit A1 ab mit U ==0 (--> gerade) oder U >0 (--> ungerade) (oder U <>0 (--> ungerade) geht auch).

    Beispiel FUP via Maskieren:
    Code:
           +---------+
           |  BCD_I  |
      ...--|EN    OUT|--"MW6"      +--------+
           |         |             | WAND_W |
    "MW4"--|IN    ENO|-------------|EN      |
           +---------+             |        |
                            "MW4"--|IN1  OUT|--#tempWord
                                   |        |
                           W#16#1--|IN2  ENO|--+             +-----+
                                   +--------+  |             |  &  |
                                               +-------------|     |
                                               |             |     |   #ungerade
                                               |   +-----+   |     |   +-----+
                                               |   |  >0 |---|     |---|  =  |
                                               |   +-----+   +-----+   +-----+
                                               |
                                               |             +-----+
                                               |             |  &  |
                                               +-------------|     |
                                                             |     |   #gerade
                                                   +-----+   |     |   +-----+
                                                   | ==0 |---|     |---|  =  |
                                                   +-----+   +-----+   +-----+
    Beispiel AWL via Schieben:
    Code:
          L     "MW4"
          BTI                   // BCD->INT
          T     "MW6"
    
    //Test gerade/ungerade
          CLR                   // vorherige Verknüpfungen garantiert abschließen
    
          L     "MW6"
          SRW    1              // niederwertigstes Bit --> A1
    
          U     >0              // A1 == 1 ?
          =     #ungerade
          U     ==0             // A1 == 0 ?
          =     #gerade
    Harald
    Es ist immer wieder überraschend, wie etwas plötzlich funktioniert, sobald man alles richtig macht.

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet
    Zitieren Zitieren Test gerade/ungerade in FUP  

  12. #10
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.192
    Danke
    925
    Erhielt 3.292 Danke für 2.661 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von Michakron Beitrag anzeigen
    Ich arbeite lieber mit Merkern, weil DB`s nicht ganz so schnell sind sobald die Funktionen mehr und größer werden.
    Die Geschwindigkeit des Zugriffs auf DB hat nichts damit zu tun, wieviele oder wiegroße Funktionen man hat.
    Außerdem besteht bei den aktuellen CPU kein Unterschied bei der Zugriffsgeschwindigkeit auf Merker und vollqualifizierter Zugriff auf DB.

    Harald
    Es ist immer wieder überraschend, wie etwas plötzlich funktioniert, sobald man alles richtig macht.

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

Ähnliche Themen

  1. Antworten: 31
    Letzter Beitrag: 09.09.2011, 23:02
  2. Antworten: 12
    Letzter Beitrag: 11.12.2007, 07:43
  3. gerade oder Ungerade Anzahl der Ausgänge
    Von Otto im Forum Simatic
    Antworten: 6
    Letzter Beitrag: 31.10.2006, 09:17
  4. Frage: Behandelt ihr hier auch Digitaltechnik?
    Von Andrea im Forum Stammtisch
    Antworten: 2
    Letzter Beitrag: 06.09.2003, 17:17

Lesezeichen

Berechtigungen

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