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

Seite 3 von 6 ErsteErste 12345 ... LetzteLetzte
Ergebnis 21 bis 30 von 59

Thema: Division von INT Zahlen

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

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von HonestAnnie Beitrag anzeigen
    Code:
    /I  //Dividiere AKKU2-L durch AKKU1-L, speichere das Ergebnis in AKKU 1: AKKU1-L: Quotient, AKKU1-H: Divisionsrest
    Was aber nichts mit dem LOW und High-Byte zu tun hat...
    Neue Ideen begeistern jene am meisten, die auch mit den alten nichts anzufangen wussten.
    Karl Heinrich Waggerl (1897-1973)

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

    Standard

    @Vierlagig: Hätte ich geahnt, dass um so ein simples Problem eine so heiße Debatte entbrennt, hätte ich die Frage lieber nicht gestellt . Ich glaube das Problem liegt z.T. daran, dass ich einfach nur T #Variable und nicht T MB #Variable geschrieben habe. Dadurch hat er alles in die Variable geschrieben, die komplette 32 Bit aus dem Akku.

    @Johnij: Nein ich bin keine Frau, der Nick stammt aus einem SciFi-Roman von Lem.

  3. #23
    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

    @ OHGN und johnij

    Lest doch mal meinen Post#19 und probierts mal aus...

  4. #24
    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

    Zitat Zitat von Grubba Beitrag anzeigen
    Wen das Ergebnis bei Honest Annie 1103364096 ist, muss Arc_next_Nr ein Longint sein.
    ist doch wurscht ob du da ein INT oder ein DINT lädst, solange es in den wertebereich von INT passt, was 49 definitiv tut. wenn du eine größere zahl nimmst wird diese als negativ gewertet, das könnte zu ungewünschten ergebnissen führen!

    /I interessiert der AKKU1-H und der AKKU2-H vor der division nicht, es werden nur die 16bit der INT-Zahl ausgwertet PUNKT!

    @johnij: dann lies du v**lpf**t*N!
    [SIGNATUR]
    Ironie setzt Intelligenz beim Empfänger voraus.
    [/SIGNATUR]

  5. #25
    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

    @ vierlagig

    Probiers auch mal aus. Lädst Du das Ergebnis in ein Doppelwort ist das Ergebnis so wie ichs gepostet habe.


    Edit:

    Weil irgendwo ja nun auch der Divisionsrest bleiben muss...
    Geändert von Grubba (16.07.2008 um 11:40 Uhr)

  6. #26
    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

    Zitat Zitat von Grubba Beitrag anzeigen
    Lest doch mal meinen Post#19 und probierts mal aus...
    ist doch klar, dass im MD100 etwas verwirrendes steht, wird ja als DINT gewertet, schaust du dir aber MW100 und MW102 an, hast du REST und QUOTIENT

    [edit] lies das nochmal: http://www.sps-forum.de/showpost.php...7&postcount=18 [/edit]
    [SIGNATUR]
    Ironie setzt Intelligenz beim Empfänger voraus.
    [/SIGNATUR]

  7. #27
    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

    Zitat Zitat von HonestAnnie Beitrag anzeigen
    @Vierlagig: Hätte ich geahnt, dass um so ein simples Problem eine so heiße Debatte entbrennt, hätte ich die Frage lieber nicht gestellt . Ich glaube das Problem liegt z.T. daran, dass ich einfach nur T #Variable und nicht T MB #Variable geschrieben habe. Dadurch hat er alles in die Variable geschrieben, die komplette 32 Bit aus dem Akku.
    du kannst nicht MB #Variable schreiben, wenn schon MB [#variable] aber selbst dann ... MB ist übrigens kein INT, nur ein byte und eine INT zahl hat 2 byte, also ein wort also im schlimmsten fall ein MW
    [SIGNATUR]
    Ironie setzt Intelligenz beim Empfänger voraus.
    [/SIGNATUR]

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

    Mein Gott....

    Der Wert Arc_Next_Nr ist ein Doppelwort. (zumindest bei dem angegebenen Ergebnis)

    Das Beispiel:

    L 5
    L 3
    /I
    T MD X (Oder von mir aus T ArcNextNR)

    führt nach anschließendem Laden
    von ArcNextNr zu einem Ergebnis von 20001.
    Wo ist Dein Problem? 2 im HW für den Rest, 1 als Ergebnis.


    ist doch klar, dass im MD100 etwas verwirrendes steht, wird ja als DINT gewertet, schaust du dir aber MW100 und MW102 an, hast du REST und QUOTIENT
    und da liegt ja auch das Problem. Wenn er es als Doppelwort (Dint) deklariert hat, ist der Wert halt nicht der, den er erwartet.
    Geändert von Grubba (16.07.2008 um 11:49 Uhr)

  9. #29
    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

    Zitat Zitat von Grubba Beitrag anzeigen
    Wo ist Dein Problem? 2 im HW für den Rest, 1 als Ergebnis.
    1. ich versteh dein problem nicht
    2. solltest du die darstellungsform angeben ... deine ist HEX, wir reden hier von INT, vielleicht DINT, maximal DEZIMAL!
    3. das einzige problem, dass bei einer verwendung eines doppelwortes auftreten könnte ist die interpretation als negative zahl oder andere
    ... aber nach ein paar zyklen kommt definitiv 0 raus!
    [SIGNATUR]
    Ironie setzt Intelligenz beim Empfänger voraus.
    [/SIGNATUR]

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

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    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
    Um mal auf die Eingangsfrage zurückzukommen....
    Klar ist inzwischen, dass es sich bei der Variable von HonestAnnie nicht um eine 16 Bit Integer sondern um eine 32 Bit Doppelinteger handelt.

    der code müsste hier also lauten:

    Code:
    L     #ARC_NEXT_NR
    L     L#2
    /D
    T     #ARC_NEXT_NR
    Dann funktioniert das auch...
    Neue Ideen begeistern jene am meisten, die auch mit den alten nichts anzufangen wussten.
    Karl Heinrich Waggerl (1897-1973)

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