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

Seite 2 von 3 ErsteErste 123 LetzteLetzte
Ergebnis 11 bis 20 von 25

Thema: Adressberechnung +AR2

  1. #11
    Registriert seit
    01.10.2007
    Ort
    Waiblingen
    Beiträge
    3.317
    Danke
    767
    Erhielt 536 Danke für 419 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    also dann komm ich nochmal auf das Vorzeichen"richtige" erweitern auf 24 Bit zurück:

    51200dez sind 1100100000000000bin
    erweitert auf 24bit: 111111111100100000000000bin = 16762880dez

    und weil die drei LSB noch hinter das Komma wandern, durch acht dividiert: 2095360

    kommt nun der DB2095360.0 bekannt vor?

  2. Folgender Benutzer sagt Danke zu Perfektionist für den nützlichen Beitrag:

    Onkel Dagobert (08.01.2008)

  3. #12
    Registriert seit
    30.03.2005
    Beiträge
    2.096
    Danke
    0
    Erhielt 673 Danke für 541 Beiträge

    Standard

    Bei größeren Adressen steht tatsächlich eine falsche Adresse im AR2, wenn man mit +AR2 arbeitet.

    Gruß Kai
    Angehängte Grafiken Angehängte Grafiken

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

    Onkel Dagobert (08.01.2008)

  5. #13
    Avatar von Onkel Dagobert
    Onkel Dagobert ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    06.10.2003
    Beiträge
    3.414
    Danke
    451
    Erhielt 506 Danke für 408 Beiträge

    Standard

    Entschuldigung, in der Abbildung in meinem Anhang war durch Rumprobieren noch die Zeile "+I" zu viel. Das ändert aber nichts an der Tatsache.

    Zitat Zitat von Perfektionist Beitrag anzeigen
    ..EDIT: und da sehe ich auch schon das Problem: "vorzeichenrichtig erweitert" sind die bei Siemens bescheuert??? Also meine Theorie: ab 32768 geht es schief ...
    Ja, genau so ist es! Man kann mit +AR? also max 32767 Bits addieren. Naja, Schleife mit +AR2?

    Danke für die schnellen Antworten.


    Gruß, Onkel


    Oder so? Muss das morgen noch mal nüchtern durchgehen .
    Code:
     
    //   AR2 ist bereits auf "Grundadresse" geladen
     
    //*** AR2 auf Anfangsadresse Datensatz "NR"
          L     #NR                         // 1..n
          L     #LOOP                       // Anzahl Bytes pro Datensatz
          *D                                // Byte-Startadresse Datensatz "NR"
          SLD   3                           // Bit-Adresse auffuellen
          TAR2                              // !!! WICHTIG
          +D                                // !!! SO
          LAR2                              // !!! VORZUGEHEN, +AR2 addiert nur Integer !!!
    Geändert von Onkel Dagobert (08.01.2008 um 23:54 Uhr) Grund: code kommentiert
    Es gibt viel mehr Leute, die freiwillig aufgeben, als solche, die echt scheitern.
    Henry Ford

  6. #14
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.227
    Danke
    534
    Erhielt 2.698 Danke für 1.950 Beiträge

    Standard

    Ist aber schon recht interessant. Bin ich noch nie drüber gestolpert, weil ich Adressen immer als Int berechne und erst ganz zum Schluß in einen Pointer wandle. Schlimm ist, daß man das mitunter lange Zeit gar nicht merkt, bis die Adresse mal "richtig" paßt.
    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

  7. #15
    Avatar von Onkel Dagobert
    Onkel Dagobert ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    06.10.2003
    Beiträge
    3.414
    Danke
    451
    Erhielt 506 Danke für 408 Beiträge

    Standard

    Ja Ralle, ich dachte auch ich hätt's begriffen, tausendmal angewendet - man lernt halt nie aus. Habe meinen letzten Beitrag übrigens ergänzt. Vielleicht geht es so, ich check das heute nicht mehr.


    Gruß, Onkel
    Es gibt viel mehr Leute, die freiwillig aufgeben, als solche, die echt scheitern.
    Henry Ford

  8. #16
    Registriert seit
    20.06.2003
    Ort
    Sauerland.NRW.Deutschland
    Beiträge
    4.850
    Danke
    78
    Erhielt 800 Danke für 543 Beiträge

    Standard

    hab mal einen test im simu gemacht.
    das prob liegt auf jedem fall im bit 15 (vorzeichenbit)
    sobald das 1 ist kommt der 'fehler'. die operation +ar2 ist, so wie es aussieht, auf int begrenzt.
    kann man recht gut im bild sehen

    EDIT:
    ich machs auch immer so wie ralle und arbeite mit int/dint und bilde mir später meinen pointer daraus.
    Angehängte Grafiken Angehängte Grafiken
    Geändert von volker (09.01.2008 um 00:02 Uhr)
    .
    mfg Volker .......... .. alles wird gut ..

    =>Meine Homepage .. direkt zum Download

    Meine Definition von TIA: Total Inakzeptable Applikation

  9. Folgender Benutzer sagt Danke zu volker für den nützlichen Beitrag:

    Onkel Dagobert (08.01.2008)

  10. #17
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.227
    Danke
    534
    Erhielt 2.698 Danke für 1.950 Beiträge

    Standard

    Vielleicht bringt es was, mit SRD 3 wieder eine Int aus dem Pointer vom AR2 zu machen, dann die beiden INT addieren und mit SLD 3 wieder einen Pointer erzeugen, anschließend LAR2. Für "gerade" Adressen auf Wörter sollte das auch gehen.

    Code:
    //   AR2 ist bereits auf "Grundadresse" geladen
     
    //*** AR2 auf Anfangsadresse Datensatz "NR"
          TAR2
          SRD 3
          T #diTemp
         
          L     #NR                         // 1..n
          L     #LOOP                       // Anzahl Bytes pro Datensatz
          *D                                // Byte-Startadresse Datensatz "NR"
          L #diTemp
          +D
          SLD   3                           // Bit-Adresse auffuellen
          LAR2
    PS: Besser gleich DINT als diTemp.
    Geändert von Ralle (09.01.2008 um 00:09 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

  11. #18
    Avatar von Onkel Dagobert
    Onkel Dagobert ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    06.10.2003
    Beiträge
    3.414
    Danke
    451
    Erhielt 506 Danke für 408 Beiträge

    Standard

    Naja, dur bei SRD 3 geht die Bitadresse verloren. Gut, man braucht sie eher selten. Allerdings ergibt es auch keinen Vorteil gegenüber der DINT-Addition, wie oben beschrieben.


    Gruß, Onkel
    Es gibt viel mehr Leute, die freiwillig aufgeben, als solche, die echt scheitern.
    Henry Ford

  12. #19
    Registriert seit
    20.06.2003
    Ort
    Sauerland.NRW.Deutschland
    Beiträge
    4.850
    Danke
    78
    Erhielt 800 Danke für 543 Beiträge

    Standard

    in diese richtung tendiere ich auch.
    das +ar2 (+ar1 ist ja das gleiche prob) sollte man also bei hohen adressen (über 4095.7) vermeiden und mit lar arbeiten.

    ob die rückrechnung zum int nötig ist, ist natürlich eine frage des progs.
    besser erst gar nicht so aufbauen.
    .
    mfg Volker .......... .. alles wird gut ..

    =>Meine Homepage .. direkt zum Download

    Meine Definition von TIA: Total Inakzeptable Applikation

  13. #20
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.227
    Danke
    534
    Erhielt 2.698 Danke für 1.950 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Jo, das ist wahr, dann ist es aber auch unnötig, das AR2 überhaupt erst mit einer "Grundadresse" zu laden. Das kann man dann gleich als "Offset" z.Bsp. in die Integer-Rechnung mit reinnehmen.
    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

Lesezeichen

Berechtigungen

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