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

Ergebnis 1 bis 7 von 7

Thema: Siemens Step7 - AWL - Text --Frage zu SLW3

  1. #1
    Registriert seit
    27.01.2014
    Beiträge
    3
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,
    ich hab von meinem Ausbilder einen Programmteil bekommen, dessen Funktion ich erklären soll.
    Hier mal ein Ausschnitt:


    L DB15.DBW12
    L 50
    *I
    L 12
    +I
    SLW 3
    T #Last Pos

    L #Last Pos
    L P#2.0
    +I
    T #LastWidth

    L #RollPCS
    L 12
    >I
    SPB END

    Also mit SLW 3 wird das Wort um drei Bit Stellen nach links verschoben und mit Nullen aufgefüllt.

    Ich hab zwar verstanden, was hier geschieht, aber ich verstehe nicht warum das geschieht.

    Welche Funktion hat den das verschieben des Wortes um drei Stellen nach Links in meinen Programm?
    Dieser Befehl wird hier auch öfters wiederholt.

    Kann mir das bitte jemand erklären?
    Zitieren Zitieren Siemens Step7 - AWL - Text --Frage zu SLW3  

  2. #2
    Peter.0202 ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    27.01.2014
    Beiträge
    3
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Danke schon im Voraus
    Geändert von Peter.0202 (27.01.2014 um 15:55 Uhr)
    Zitieren Zitieren Siemens Step7 - AWL - Text --Frage zu SLW3  

  3. #3
    Registriert seit
    02.04.2013
    Beiträge
    143
    Danke
    7
    Erhielt 22 Danke für 20 Beiträge

    Standard

    Das ist einfach eine Multiplikation mit 2#1000 oder in Dec: *8

  4. #4
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.224
    Danke
    533
    Erhielt 2.698 Danke für 1.950 Beiträge

    Standard

    Zitat Zitat von Peter.0202 Beitrag anzeigen
    Hallo,
    ich hab von meinem Ausbilder einen Programmteil bekommen, dessen Funktion ich erklären soll.
    Hier mal ein Ausschnitt:


    L DB15.DBW12
    L 50
    *I
    L 12
    +I
    SLW 3
    T #Last Pos

    L #Last Pos
    L P#2.0
    +I
    T #LastWidth

    L #RollPCS
    L 12
    >I
    SPB END

    Also mit SLW 3 wird das Wort um drei Bit Stellen nach links verschoben und mit Nullen aufgefüllt.

    Ich hab zwar verstanden, was hier geschieht, aber ich verstehe nicht warum das geschieht.

    Welche Funktion hat den das verschieben des Wortes um drei Stellen nach Links in meinen Programm?
    Dieser Befehl wird hier auch öfters wiederholt.

    Kann mir das bitte jemand erklären?
    Damit wird der vorher errechnet INT-Wert in das sogenannte Pointerformat überführt.
    Das Pointerformat adressiert Bits, die letzten drei Stellen im Pointerformat sind diese 3 Bits.

    Wenn man per Adressregister (was man in deinem Code nicht sieht, aber wegen dem L P#2.0 erahnen kann ) auf eine Speicherstelle zugreifen und man will z.Bsp. Byte 50 in einem DB ansprechen, dann muß man in das Adressregister ein P#50.0 hineinladen.

    Aus INT 50 wird also P#50.0 durch das SLW 3.

    Aber Achtung das Pointerformat ist DWord, also 4 Byte.
    Sollte der DB sehr groß sein, funktioniert euer Code nicht mehr, da dann auch links Bits herausgeschoben werden.

    16000 Int = 11111010000000 bin, das sind 14 Stellen, drei nach links und 1 Bit fällt raus.

    Daher ist es immer besser, gleich mit DWORD und SLD 3 zu rechnen.




    PS: Insofern ist

    L #Last Pos
    L P#2.0
    +I
    T #LastWidth

    nicht korrekt!!!
    Geändert von Ralle (27.01.2014 um 17:23 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

  5. #5
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.192
    Danke
    925
    Erhielt 3.292 Danke für 2.661 Beiträge

    Standard

    SLW 3 entspricht einer Multiplikation mit 8 und wird benötigt, um eine Bitadresse Adresse.0 zu berechnen, die bei indirekten Adressierungen verwendet wird.

    Angenommen in DB15.DBW12 steht eine 1:
    (DB15.DBW12 *50 + 12) * 8 = (1 *50 + 12) * 8 = 62 * 8 = P#62.0

    Harald
    Es ist immer wieder überraschend, wie etwas plötzlich funktioniert, sobald man alles richtig macht.

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  6. #6
    Registriert seit
    17.07.2009
    Ort
    Am Rande der Ostalb
    Beiträge
    5.490
    Danke
    1.141
    Erhielt 1.243 Danke für 974 Beiträge

    Standard

    Wie du an Hand der Kommentare siehst, kann dein Ausbilder hier noch was lernen
    Noch ein kleiner Tipp am Rande:

    Wenn Variablen im Pointerformat sind, dass ist es auch nicht schlecht, diese kenntlich zu machen.
    Ich stelle immer ein ein "p" vorne dran.
    Also "#pLast_Pos" und "#pLast_Width".

    Gruß
    Dieter

  7. #7
    Peter.0202 ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    27.01.2014
    Beiträge
    3
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Danke für die schnellen Kommentare

    Ich werde das demnächst ansprechen.

Ähnliche Themen

  1. Strukturierter Text (ST) , naive Frage
    Von amos im Forum CODESYS und IEC61131
    Antworten: 3
    Letzter Beitrag: 04.12.2013, 19:58
  2. Antworten: 2
    Letzter Beitrag: 03.10.2012, 10:05
  3. Antworten: 33
    Letzter Beitrag: 31.05.2012, 19:15
  4. Text-Notizen in Step7
    Von Hawk im Forum Programmierstrategien
    Antworten: 11
    Letzter Beitrag: 22.02.2010, 11:58
  5. Frage: AWL-Text in FUP-umwandeln??
    Von INST im Forum Simatic
    Antworten: 12
    Letzter Beitrag: 16.11.2005, 08:12

Stichworte

Lesezeichen

Berechtigungen

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