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

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

Thema: Wert in AR1 verkleinern

  1. #1
    Registriert seit
    05.10.2006
    Beiträge
    169
    Danke
    21
    Erhielt 19 Danke für 11 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    ich bin gerade mit indirekter Adressierung beschäftigt und stehe vor einem Problem. Ich müsste den Wert im AR1 verkleinern, ich weiss das ich das mit einer normaler Subtraktion machen kann, dazu muss ich aber alles in den AKKU kopieren und ins Pointer-Format wandeln. Um den Wert zu erhöhen gibt es ja die Funktion:

    Code:
    L    P#4.0
    +AR1
    oder einfach mit Offset:
    Code:
    L    DBD[AR1, P#4.0]
    Das sind aber beides Additionen, ich möchte subtrahieren!
    Zitieren Zitieren Wert in AR1 verkleinern  

  2. #2
    Registriert seit
    24.05.2006
    Beiträge
    234
    Danke
    14
    Erhielt 77 Danke für 57 Beiträge

    Standard

    Ich hab's auch erst nicht geglaubt, aber +AR1 taugt auch zum Subtrahieren. Auszug aus der Simatic Hilfe:

    +AR1 (Addiere zu AR1) addiert einen Versatz, der entweder in der Anweisung oder in AKKU1-L angegeben wird, zum Inhalt von AR1. Die Ganzzahl (16 Bit) wird zunächst vorzeichenrichtig auf 24 Bit erweitert und danach zu den niederwertigsten 24 Bit von AR1 (Teil der relativen Adresse in AR1) addiert. Der Teil der Bereichskennung in AR1 (Bits 24, 25 und 26) wird nicht verändert. Die Operation wird ausgeführt, ohne die Statusbits zu berücksichtigen oder zu beeinflussen.

    +AR1: Die Ganzzahl (16 Bit), die zum Inhalt von AR1 addiert werden soll, wird durch den Wert in AKKU1-L angegeben. Zulässig sind Werte von -32768 bis +32767.
    Den interessanten Aspekt habe ich mal in fett hervorgehoben. Das bedeutet, dass ein entsprechender negativer Pointer zu einer Subtraktion führt.

  3. #3
    Züttu ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    05.10.2006
    Beiträge
    169
    Danke
    21
    Erhielt 19 Danke für 11 Beiträge

    Standard

    Vielen Dank für die schnelle Antwort.

    Wie lautet den der Korrekte Syntax?

    Wenn ich zum Beispiel AR1 um 6 Byte verkleinern will?

    Code:
    L    -6
    +AR1
    
    oder
    
    L    -P#6.0
    +AR1
    geht leider beides nicht

  4. #4
    Registriert seit
    01.09.2008
    Ort
    Berlin
    Beiträge
    172
    Danke
    51
    Erhielt 51 Danke für 44 Beiträge

    Standard

    Versuch mal:

    Code:
    L    -6
    SLW   3
    +AR1

  5. #5
    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 ebt'ler Beitrag anzeigen
    Versuch mal:

    Code:
    L    -6
    SLW   3
    +AR1
    dürfte nicht funktionieren ... 16 vs 32bit

    besser:
    Code:
    *
    L     L#-6
    SLD   3
    +AR1
    wobei ich im moment nicht garantieren kann, das +AR1 mit dem negativen Wert etwas anfangen kann, daher noch der andere Weg:

    Code:
    *
    L     L#-6
    SLD   3
    TAR1
    TAK
    -D
    LAR1
    [SIGNATUR]
    Ironie setzt Intelligenz beim Empfänger voraus.
    [/SIGNATUR]

  6. #6
    Züttu ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    05.10.2006
    Beiträge
    169
    Danke
    21
    Erhielt 19 Danke für 11 Beiträge

    Standard

    Also ich habe jetzt versucht, mit unterstehendem Code funktionierts

    Code:
    L    L#-6
    SLD 3
    +AR1
    Danke allen die dazu beigetragen haben.

  7. #7
    Registriert seit
    01.09.2008
    Ort
    Berlin
    Beiträge
    172
    Danke
    51
    Erhielt 51 Danke für 44 Beiträge

    Standard

    Sorry, SLW und SLD vertauscht.

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

    Zitat Zitat von ebt'ler Beitrag anzeigen
    Sorry, SLW und SLD vertauscht.
    nicht nur, is aber nicht schlimm. spätestens beim test wäre es aufgefallen
    [SIGNATUR]
    Ironie setzt Intelligenz beim Empfänger voraus.
    [/SIGNATUR]

  9. #9
    Registriert seit
    01.09.2008
    Ort
    Berlin
    Beiträge
    172
    Danke
    51
    Erhielt 51 Danke für 44 Beiträge

    Standard

    Ok, Das AR is 32bit groß. Aber ich kann doch eigentlich problemlos eine 16Bit Zahl addieren, oder?

    Ehrlich gesagt hab ich schon länger nichtmehr mit S7 zu tun gehabt. Deshalb versuche ich auch durch mitlesen wieder in die Denkweise reinzukommen.^^

  10. #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 ebt'ler Beitrag anzeigen
    Ok, Das AR is 32bit groß. Aber ich kann doch eigentlich problemlos eine 16Bit Zahl adieren, oder?
    eine positive ja.
    zweierkomplement und so...
    [SIGNATUR]
    Ironie setzt Intelligenz beim Empfänger voraus.
    [/SIGNATUR]

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

    ebt'ler (28.07.2010)

Ähnliche Themen

  1. REAL-Wert in Word-Wert konvertieren
    Von Mohrchen im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 17.07.2011, 13:02
  2. DB Wert mit Hex Wert Vergleichen?
    Von ibanesch im Forum Simatic
    Antworten: 9
    Letzter Beitrag: 13.02.2011, 14:32
  3. Bilder mit VBS verkleinern
    Von santero im Forum HMI
    Antworten: 0
    Letzter Beitrag: 11.10.2010, 15:42
  4. Antworten: 6
    Letzter Beitrag: 19.04.2007, 00:24
  5. Prozessabild verkleinern zur Speicheroptimierung?
    Von Anonymous im Forum Simatic
    Antworten: 3
    Letzter Beitrag: 31.05.2005, 12:43

Lesezeichen

Berechtigungen

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