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

Seite 1 von 6 123 ... LetzteLetzte
Ergebnis 1 bis 10 von 59

Thema: Division von INT Zahlen

  1. #1
    Registriert seit
    08.07.2008
    Beiträge
    10
    Danke
    5
    Erhielt 1 Danke für 1 Beitrag

    Frage


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,
    ich habe eine Frage zur Division von INT Zahlen.

    Mein Programm sieht so aus:
    Code:
    L     #ARC_NEXT_NR
    L     2
    /I                //Teile durch 2 
    T     #ARC_NEXT_NR
    Die Variable soll durch 2 geteilt und das Ergebnis in die Variable geschrieben werden. Dabei kommt jedoch nur Murks raus. Die SPS errechnet jedoch bei #ARC_NEXT_NR=49 ein Ergebnis von "1103364096". Ich hätte aber gerne 24 (Zahlen hinterm Komma wegschneiden).

    Vielen Dank für jeden konstruktiven Beitrag.

    Ich benutze momentan:
    312C
    Step 7 V5.33
    Zitieren Zitieren Division von INT Zahlen  

  2. #2
    Registriert seit
    24.10.2007
    Ort
    USA
    Beiträge
    815
    Danke
    3
    Erhielt 73 Danke für 57 Beiträge

    Standard

    Zitat Zitat von HonestAnnie Beitrag anzeigen
    Hallo,
    ich habe eine Frage zur Division von INT Zahlen.

    Mein Programm sieht so aus:
    Code:
    L     #ARC_NEXT_NR
    L     2
    /I                //Teile durch 2 
    T     #ARC_NEXT_NR
    Die Variable soll durch 2 geteilt und das Ergebnis in die Variable geschrieben werden. Dabei kommt jedoch nur Murks raus. Die SPS errechnet jedoch bei #ARC_NEXT_NR=49 ein Ergebnis von "1103364096". Ich hätte aber gerne 24 (Zahlen hinterm Komma wegschneiden).

    Vielen Dank für jeden konstruktiven Beitrag.

    Ich benutze momentan:
    312C
    Step 7 V5.33
    Das wird bei jedem Zyklus aufgerufen (#ARC_NEXT_NR wird jedes mal durch 2 geteilt)
    Es ist ja kein Wunder dass du nur Mist bekommst

    johnij

  3. #3
    HonestAnnie ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    08.07.2008
    Beiträge
    10
    Danke
    5
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Hallo,

    müsste ich dann nicht zumindest 0 herausbekommen? 49/2 = 24 /2 = 12 usw. ?

  4. #4
    Registriert seit
    24.10.2007
    Ort
    USA
    Beiträge
    815
    Danke
    3
    Erhielt 73 Danke für 57 Beiträge

    Standard

    Zitat Zitat von HonestAnnie Beitrag anzeigen
    Hallo,

    müsste ich dann nicht zumindest 0 herausbekommen? 49/2 = 24 /2 = 12 usw. ?
    Der Zyklus ist zu schnell (je kliener das Projekt desto kleine s ist dein Zyklus) ,so dass man es nicht sieht

    Limit (49/ (2^n))=0 falls n-->unendlich

    johnij

  5. #5
    Registriert seit
    08.11.2006
    Ort
    Uckermark
    Beiträge
    903
    Danke
    201
    Erhielt 256 Danke für 208 Beiträge

    Standard

    Zitat Zitat von HonestAnnie Beitrag anzeigen
    Hallo,
    ich habe eine Frage zur Division von INT Zahlen.

    Mein Programm sieht so aus:
    Code:
    L     #ARC_NEXT_NR
    L     2
    /I                //Teile durch 2 
    T     #ARC_NEXT_NR
    Die Variable soll durch 2 geteilt und das Ergebnis in die Variable geschrieben werden. Dabei kommt jedoch nur Murks raus. Die SPS errechnet jedoch bei #ARC_NEXT_NR=49 ein Ergebnis von "1103364096". Ich hätte aber gerne 24 (Zahlen hinterm Komma wegschneiden).

    Vielen Dank für jeden konstruktiven Beitrag.

    Ich benutze momentan:
    312C
    Step 7 V5.33
    Was darauf schließen lässt dass Dein "#ARC_NEXT_NR unmöglich eine INT-Var sein kann.
    Was für ein Datenformat hat die Variable denn?
    .
    Neue Ideen begeistern jene am meisten, die auch mit den alten nichts anzufangen wussten.
    Karl Heinrich Waggerl (1897-1973)

  6. #6
    HonestAnnie ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    08.07.2008
    Beiträge
    10
    Danke
    5
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Habe das Problem gelöst, mein Programm schaut nun so aus:

    Code:
    L     #ARC_NEXT_NR
    SRW   1
    T     #ARC_NEXT_NR
    Das ist einfacher und funktioniert. Vielen Dank für die Beiträge,

    Mfg
    HonestAnnie

  7. #7
    Registriert seit
    09.06.2007
    Beiträge
    398
    Danke
    25
    Erhielt 46 Danke für 44 Beiträge

    Standard

    Also zum Teilen durch zwei ohne Rest würde ich einfach "Rechts Schieben".

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

    HonestAnnie (16.07.2008)

  9. #8
    Registriert seit
    08.08.2007
    Ort
    Dresden
    Beiträge
    9.648
    Danke
    1.059
    Erhielt 2.046 Danke für 1.627 Beiträge

    Standard

    @johnij: alles blödsinn! da kommt null raus! fertig!

    @ohgn: ich teile deine vermutung, irgendwas scheint da mit der anzeige nicht zu stimmen

    @honestannie: SRW 1 ist nicht anderes als durch zwei ... war zu S5-zeiten sehr beliebt weil schneller ... SLW 1 ist im gegenzug natürlich mal zwei
    Geändert von vierlagig (16.07.2008 um 11:42 Uhr)
    [SIGNATUR]
    Ironie setzt Intelligenz beim Empfänger voraus.
    [/SIGNATUR]

  10. #9
    Registriert seit
    12.02.2008
    Ort
    Westfalen (Dort wo's Schwarzbrot gibt)
    Beiträge
    417
    Danke
    8
    Erhielt 87 Danke für 72 Beiträge

    Standard

    Wenn Du einen Integerwert per -> /I teilst, ist das Ergebnis aufgeteilt in das Ergebnis und den Divisionsrest. (HB-LB)

    Edit:

    Natürlich ist das mit dem HB-LB so nicht richtig. Gemeint war, dass das Ergebnis und der Rest aufgeteilt werden auf Akku1-L und Akku1-H. Mea Culpa.....

    Wenn du dann dieses Ergebnis wieder in einem Wort abspeicherst, stehen dann halt in diesen beiden Bytes diese beiden Ergebnisse. Diese wieder als Integer interpretiert ergeben halt "seltsame" Ergebnisse....
    Geändert von Grubba (17.07.2008 um 06:49 Uhr) Grund: was vergessen...

  11. Folgender Benutzer sagt Danke zu Grubba für den nützlichen Beitrag:

    HonestAnnie (16.07.2008)

  12. #10
    Registriert seit
    08.08.2007
    Ort
    Dresden
    Beiträge
    9.648
    Danke
    1.059
    Erhielt 2.046 Danke für 1.627 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von Grubba Beitrag anzeigen
    Wenn Du einen Integerwert teilst, ist das Ergebnis aufgeteilt in das Ergebnis und den Divisionsrest. (HB-LB)

    Wenn du dann dieses Ergebnis wieder in einem Wort abspeicherst, stehen dann halt in diesen beiden Bytes diese beiden Ergebnisse. Diese wieder als Integer interpretiert ergeben halt "seltsame" Ergebnisse....
    möööp, FALSCH ... also nicht, dass der rest nicht verfügbar wäre, aber er steht nicht im transferierten wort!

    [edit] um das mal etwas genauer zu machen:

    akku1 / akku2 ... was anderes ist es ja nicht
    jeder akku hat 32bit ... die integerzahl steht in 16 bit und zwar in akku1-L und akku2-L
    der quotient wird in akku1-L abgelegt (16bit)
    der rest in akku1-H (16bit)
    mit transfer in ein wort schiebst du nur akku1-L also den quotienten in dein ergebnis [/edit]
    Geändert von vierlagig (16.07.2008 um 11:19 Uhr)
    [SIGNATUR]
    Ironie setzt Intelligenz beim Empfänger voraus.
    [/SIGNATUR]

Ähnliche Themen

  1. 64/32 Bit Division in AWL
    Von Lisa im Forum Simatic
    Antworten: 37
    Letzter Beitrag: 19.02.2010, 14:09
  2. SCL Division mit Rest
    Von vollmi im Forum Simatic
    Antworten: 5
    Letzter Beitrag: 05.06.2009, 15:41
  3. Division von DInt
    Von godi im Forum Simatic
    Antworten: 1
    Letzter Beitrag: 07.01.2006, 08:10
  4. Genauest mögliche Division zweier Zahlen
    Von Anonymous im Forum Simatic
    Antworten: 3
    Letzter Beitrag: 16.04.2005, 09:53
  5. Division durch null
    Von kpeter im Forum Simatic
    Antworten: 5
    Letzter Beitrag: 08.02.2005, 18:48

Lesezeichen

Berechtigungen

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