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

Ergebnis 1 bis 5 von 5

Thema: Habe beim Befehl NEGI falsche Anzeige im AKKU1....

  1. #1
    Registriert seit
    01.07.2005
    Beiträge
    23
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo Leute,
    ich acker mich gerade durch den Siemens Ordner "AWL für S7-300/400". Dazu programmiere ich dann immer Beispielaufgaben auf einer 312IFM und Step7 5.3 SP3.
    Nun habe ich folgendes programmiert für "2-Komplement Ganzzahl 16 Bit":

    L EW0 (Akku1=256DEZ)stimmt so, da E0.0=1
    NEGI (Akku1=65280DEZ) sollte da nicht -256 stehen?
    T AW0 (Akku1=65280DEZ) hääää?? .....

    Wenn ich nun in einer Variablentabelle den Status von EW0 abfrage erhalte ich 256DEZ und bei AW0=-256DEZ, so wie es eigentlich sein sollte. Warum zeigt mir der Akku1 das so an? Beim "2-Komplement Ganzzahl 32Bit zeigt mir der Akku1 folgendes an:

    L ED0 (Akku1=16 777 216DEZ) E0.0=1
    NEGD (Akku1=-16 777 216DEZ)
    T AD0 (Akku1=-16 777 216DEZ)

    Warum ist das so

    Und kann man den Akku1 und den Akku2 auch im Format Binär darstellen? DEZ,HEX und Gleitpunkt ist etwas dürftig....

    Gruß
    Stefan
    Der beste Freund des Elektrikers ist der Hauptschalter......
    Zitieren Zitieren Habe beim Befehl NEGI falsche Anzeige im AKKU1....  

  2. #2
    Registriert seit
    30.01.2004
    Ort
    Erfurt
    Beiträge
    961
    Danke
    42
    Erhielt 109 Danke für 87 Beiträge

    Standard

    Hallo,

    das ist kein Fehler, das ist eine Ansichtssache:

    65280Dez = 1111111100000000Bin ist genauso richtig wie
    -256Dez = 1111111100000000Bin,
    einmal wird das Word als vorzeichenloser Wert interpretiert (Wertebereich dann 0..65535), ein andermal als vorzeichenbehafteter Wert (Wertebereich dann -32768 .. 32767

    Wie gesagt: alles eine Ansichtssache.

    Peter

  3. #3
    kraut ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    01.07.2005
    Beiträge
    23
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hallo Peter,

    was ich nicht verstehe ist folgendes:
    1. Warum interpretiert der Akku1 den Inhalt anders als die Statusanzeige in der Variablentabelle und das auch nur bei NEGI(16bit). Bei NEGD(32bit) werden beide gleich interpretiert.
    2. Wenn ich jetzt das Ergebnis für einen Vergleich verwenden möchte und der interpretiert mir statt z.B. 32768 den Wert 65535, dann passt doch mein Ergebnis nicht oder liege ich da falsch?

    Gruß
    Stefan
    Der beste Freund des Elektrikers ist der Hauptschalter......

  4. #4
    Registriert seit
    27.10.2005
    Ort
    Schwäbisch Gmünd
    Beiträge
    5.224
    Danke
    630
    Erhielt 955 Danke für 769 Beiträge

    Standard

    Zitat Zitat von kraut
    1. Warum interpretiert der Akku1 den Inhalt anders als die Statusanzeige in der Variablentabelle und das auch nur bei NEGI(16bit). Bei NEGD(32bit) werden beide gleich interpretiert.
    Die Interpretation erfolgt durch den verwendeten Befehl. Die I-Befehle gehen von vorzeichenbehafteten Ganzzahlen im Wertebereich -327678 (0x8000 hex) bis +32767 (0x7FFF hex) aus. Der Inhalt des "Highwords" wird nicht berücksichtigt. Die Variablentabelle stellt die Werte gemäß Foramt dar. Dies hat keine Auswirkung auf das SPS-Programm. Egal ob der Wert nun binär, dezimal oder hexadezimal angezeigt wird.

    2. Wenn ich jetzt das Ergebnis für einen Vergleich verwenden möchte und der interpretiert mir statt z.B. 32768 den Wert 65535, dann passt doch mein Ergebnis nicht oder liege ich da falsch?
    Wie oben erwähnt, hängt die Interpretation vom Befehl ab. 65535 (0xFFFF hex) entspricht dabei aber -1 dezimal und nicht 32768 (= 0x8000 hex). Diese Zahl ist außerhalb dem zulässigen vorzeichenbehafteten Wortbereich.
    Rainer Hönle
    DELTA LOGIC GmbH

    Ein Computer kann das menschliche Gehirn nicht ersetzen. Engstirnigkeit kann unmöglich simuliert werden. (Gerd W. Heyse)

  5. #5
    Registriert seit
    30.01.2004
    Ort
    Erfurt
    Beiträge
    961
    Danke
    42
    Erhielt 109 Danke für 87 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,

    was ich nicht verstehe ist folgendes:
    1. Warum interpretiert der Akku1 den Inhalt anders als die Statusanzeige in der Variablentabelle und das auch nur bei NEGI(16bit). Bei NEGD(32bit) werden beide gleich interpretiert.
    Das liegt daran, das der Akku der S7 32Bit lang ist und immer als 32Bit-Ganzzahl ohne Vorzeichen interpretiert wird (in der Statusanzeige).

    2. Wenn ich jetzt das Ergebnis für einen Vergleich verwenden möchte und der interpretiert mir statt z.B. 32768 den Wert 65535, dann passt doch mein Ergebnis nicht oder liege ich da falsch?
    In der Tat kann das ins Auge gehen, wenn ein Partner den Wert als Integer (also mit Vorzeichen) und der andere den Wert als Word (ohne Vorzeichen) auffaßt.
    Ist mir mal bei der Datenübertragung SPS PC passiert, wenn der Drucksensor plötzlich den unmöglichen Wert -1 liefert (falsche Skalierung) und die Visualiserung auf dem PC 65535 Bar anzeigt.

    Also immer aufpassen, Grenzen prüfen und so weiter und so fort...

    Peter

Ähnliche Themen

  1. Antworten: 1
    Letzter Beitrag: 23.04.2010, 06:00
  2. Falsche anzeige der Symbole
    Von simon.s im Forum HMI
    Antworten: 1
    Letzter Beitrag: 30.10.2008, 11:20
  3. 3 Mal falsche Passwort
    Von Pikador im Forum HMI
    Antworten: 4
    Letzter Beitrag: 19.02.2008, 09:02
  4. Falsche Ware
    Von waldy im Forum Stammtisch
    Antworten: 33
    Letzter Beitrag: 23.01.2008, 00:42
  5. op 27 falsche eingabe
    Von Anonymous im Forum HMI
    Antworten: 5
    Letzter Beitrag: 23.09.2004, 19:38

Lesezeichen

Berechtigungen

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