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

Ergebnis 1 bis 5 von 5

Thema: Umwandlung Word in Byte

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

    Standard


    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
    Zitieren Zitieren Umwandlung Word in Byte  

  2. #2
    Registriert seit
    19.06.2003
    Beiträge
    2.200
    Danke
    85
    Erhielt 259 Danke für 175 Beiträge

    Standard

    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 ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    14.10.2003
    Beiträge
    3
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    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
    Registriert seit
    19.06.2003
    Beiträge
    2.200
    Danke
    85
    Erhielt 259 Danke für 175 Beiträge

    Standard

    Zitat Zitat von 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 ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    14.10.2003
    Beiträge
    3
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard


    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.

Ähnliche Themen

  1. SCL, Byte to WORD
    Von paula23 im Forum Simatic
    Antworten: 5
    Letzter Beitrag: 29.01.2011, 12:14
  2. Umwandlung Word in Real
    Von Eddie im Forum Simatic
    Antworten: 11
    Letzter Beitrag: 14.11.2008, 17:52
  3. Antworten: 4
    Letzter Beitrag: 08.07.2008, 08:52
  4. byte in word / dword umwandeln
    Von Gerri im Forum Simatic
    Antworten: 1
    Letzter Beitrag: 03.07.2008, 14:31
  5. BYTE/WORD/DWORD vergleichen
    Von slma im Forum Simatic
    Antworten: 23
    Letzter Beitrag: 06.07.2007, 15:11

Lesezeichen

Berechtigungen

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