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

Results 1 to 5 of 5

Thread: Umwandlung Word in Byte

  1. #1
    Join Date
    14.10.2003
    Posts
    3
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Default


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,

    ich habe ein (wahrscheinlich ganz einfach zu lösendes) Problem:

    Ich möchte einen Wortwert (+8 ) in ein Bytewert umwandeln.

    LD E0.0
    MOVW -8, AW0
    /I -1, AW0
    MOVW AW0, AW2 ----> Bis hierhin klappt noch alles. (AW2=+8 )
    ITB AW2, VB2 ------> VB2 ist jetzt 0, soll aber 8 sein.

    Kann mir jemand sagen, woran das liegt und wie ich da abhilfe schaffe.

    christoph
    Reply With Quote Reply With Quote Umwandlung Word in Byte  

  2. #2
    Join Date
    19.06.2003
    Posts
    2,205
    Danke
    85
    Erhielt 270 Danke für 179 Beiträge

    Default

    Versuchs mal mit:
    MOVB AB3, VB3

    Erklärung:
    AW0: bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
    AB 0 bit 15 14 13 12 11 10 9 8
    AB 1 bit 7 6 5 4 3 2 1 0

    Sieht komisch aus, ist es auch, ist aber so bei Siemens, wenn ich mich richtig erinnere.

  3. #3
    christoph is offline Neuer Benutzer
    Themenstarter
    Join Date
    14.10.2003
    Posts
    3
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Default

    Ja, das geht.
    Hast du vielleicht auch eine Lösung für folgendes Problem :

    An meinem Schieberegister SHRB kann ich an dem Eingang, der mit N bezeichnet ist, einen Bytewert von z.B. +8 (für Rechts-Schieben) oder -8 (für Links-Schieben) anlegen. Den wert kann ich bislang nur per Hand ändern,sprich: SPS-Stop, Wert ändern, Prog. reinladen, SPS-Run. Dann schiebt er links.

    Im diesen Vorgang zu automatisieren, will ich nun eine Funktion haben, die den Bytewert automatisch ändert,z.B. Wenn E0.0 = 1 und E0.1 = 0, dann soll ein Bytewert von +8 anstehen. Eingänge anderherum= -8 . Kann ein Bytewert im Speicher VB0 oder so überhaupt negativ sein ?? Im Handbuch steht einmal der Bereich 0 - 255 und auch der Bereich -128 - +127. Wie werden die Bereiche deklariert???

    Vielen Dank für die Hilfe...

    Christoph

  4. #4
    Join Date
    19.06.2003
    Posts
    2,205
    Danke
    85
    Erhielt 270 Danke für 179 Beiträge

    Default

    Quote Originally Posted by christoph
    Hast du vielleicht auch eine Lösung für folgendes Problem :

    An meinem Schieberegister SHRB kann ich an dem Eingang, der mit N bezeichnet ist, einen Bytewert von z.B. +8 (für Rechts-Schieben) oder -8 (für Links-Schieben) anlegen. Den wert kann ich bislang nur per Hand ändern,sprich: SPS-Stop, Wert ändern, Prog. reinladen, SPS-Run. Dann schiebt er links.
    Bei Werten von 8 ist schieben ineffizient, weil es auf ein ganzes Byte hinausläuft, was durch Byte-Tausch (im vorigen Beitrag im Prinzip vorgeführt) effizienter geht.
    Im diesen Vorgang zu automatisieren, will ich nun eine Funktion haben, die den Bytewert automatisch ändert,z.B. Wenn E0.0 = 1 und E0.1 = 0, dann soll ein Bytewert von +8 anstehen. Eingänge anderherum= -8
    Was Du eigentlich tun willst ist also bei ener Bedingung rechts, bei einer anderen links schieben.
    (Und wenn keine zutrifft, gar nicht?)
    Das ist nicht klar, da deine zwei Eingänge insgesamt 4 kombintorische Zustände haben können.
    Die Lösung ist:
    Bau den Links und den Rechtschiebebefehl ein und überspringe den (oder beide), der/die nicht ausgeführt werden sollen.

    Ob schieben mit Variabler Länge geht, weiss ich nicht, kenne den Befehlsvorrat der 200 nicht auswendig. Tippe aber auf nein, da ich niemals eine Steuerung oder einen Mikrocontroller gesehen habe, die es könnten.

    . Kann ein Bytewert im Speicher VB0 oder so überhaupt negativ sein ?? Im Handbuch steht einmal der Bereich 0 - 255 und auch der Bereich -128 - +127. Wie werden die Bereiche deklariert???
    Gar nicht. Im Speicher stehn nur Bitmuster. Bis +127 sind sie für mit und ohne Vorzeichen identisch. 11111111 binär ist 255 wenn es von eiem Befehl gelesen wird, der kein Vorzeicehn erwartet. Erwarte der Befehl ein Vorzeichen, so ist es -1. Besser ausgedrückt: Der Befehl interpretiert die Bitfolge so oder so.

    PS: programmierst Du AWL oder FUP(weil Du von Eingang mit N bez. spachst).
    In FUP geht das Springen nicht. Dafür haben die Blöcke einen Freigabe-Eingang. Wenn der nicht 1 ist, werden sie auch nicht ausgeführt.

  5. #5
    christoph is offline Neuer Benutzer
    Themenstarter
    Join Date
    14.10.2003
    Posts
    3
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Default


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Ich habe jetzt deinen Lösungsvorschlag verarbeitet, Zottel:

    Bau den Links und den Rechtschiebebefehl ein und überspringe den (oder beide), der/die nicht ausgeführt werden sollen.

    Mein vorheriger Gedanke war wahrscheinlich einfach zu kompliziert. Jetzt funzt es auf jeden Fall.

    Christoph

    P.S.: Bis jetzt habe ich in KOP programmiert.

Similar Threads

  1. SCL, Byte to WORD
    By paula23 in forum Simatic
    Replies: 5
    Last Post: 29.01.2011, 12:14
  2. Umwandlung Word in Real
    By Eddie in forum Simatic
    Replies: 11
    Last Post: 14.11.2008, 17:52
  3. Replies: 4
    Last Post: 08.07.2008, 08:52
  4. byte in word / dword umwandeln
    By Gerri in forum Simatic
    Replies: 1
    Last Post: 03.07.2008, 14:31
  5. BYTE/WORD/DWORD vergleichen
    By slma in forum Simatic
    Replies: 23
    Last Post: 06.07.2007, 15:11

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •