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

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

Thema: 2 bytewerte in word

  1. #1
    Registriert seit
    05.05.2009
    Beiträge
    20
    Danke
    2
    Erhielt 0 Danke für 0 Beiträge

    Cool


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,
    ich wolte fragen ob jemand eine eleganteere lösung für mein kleines problem kennt:
    ich habe 2 byte welche mit unterschiedlichsten werten beschrieben werden, diese sollen dann in ein word array übertragen werden! das ganze in ST.
    ich habe bereits eine lösung gefunden welche jedoch nicht sehr schön anzuschauen ist und nen zwischenschritt verlangt:

    wert1:= byte_to_word(byte1);
    wert2:= byte_to_word(byte2);

    word1:= SHL(wert1,+ wert2;

    gibt es in ST vielleicht eine möglichkeit die byte direkt auf die position im Word zu schreiben?
    mfg Chris
    Zitieren Zitieren 2 bytewerte in word  

  2. #2
    Registriert seit
    19.11.2006
    Beiträge
    1.346
    Danke
    6
    Erhielt 254 Danke für 231 Beiträge

    Standard

    word1:= SHL(BYTE_TO_WORD(byte1),8 ) + BYTE_TO_WORD(byte2);

    Damit sparst du dir die Zwischenvariablen.

  3. #3
    Registriert seit
    19.10.2009
    Beiträge
    194
    Danke
    8
    Erhielt 50 Danke für 44 Beiträge

    Standard

    Einfacher wäre vielleicht das Memory-Sharing über Speicherzuordnung in der Deklaration. Dann entfällt das Umwandeln, aber die Zuordnung der BYTE zu diesem WORD ist nicht mehr Variabel und kann zur Laufzeit nicht mehr verändert werden.

    Code:
    byte1 AT%MB1: BYTE; (* word1 High Byte *)
    byte2 AT%MB0: BYTE; (* word1 Low Byte *)
    word1 AT%MB0: WORD;
    Ansonsten, wenn diese Umwandlung öfter vorkommt, dann empfehlt sich aus deinem Code eine Funktion zu machen.

    Gruß,
    witkatz

  4. #4
    Registriert seit
    07.07.2010
    Beiträge
    13
    Danke
    0
    Erhielt 7 Danke für 4 Beiträge

    Standard

    Zitat Zitat von witkatz Beitrag anzeigen

    Code:
    byte1 AT%MB1: BYTE; (* word1 High Byte *)
    byte2 AT%MB0: BYTE; (* word1 Low Byte *)
    word1 AT%MB0: WORD;
    Die definition der beiden Byte ist jedoch umgekehrt.
    Im MW0 wird dann MB1 zum Low Byte und MB0 zum High Byte

    lg
    Gernot
    Wenn du etwas 2 Jahre gemacht hast, betrachte es sorgfältig,
    Wenn du etwas 5 Jahre gemacht hast, betrachte es misstraurisch,
    Wenn du etwas 10 Jahre gemacht hast, mache es anders.
    (Mahatma Gandhi)

    Wie lange programmieren sie schon mit IEC 61131?

  5. #5
    Chris_the_new ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    05.05.2009
    Beiträge
    20
    Danke
    2
    Erhielt 0 Danke für 0 Beiträge

    Standard

    danke für die schnellen antworten ich denk ich werd beim 1zeiligen bleiben, danke nochmal!
    schade hatte gehofft das es ne ähnliche funktion gibt wie in C aber man kann ja nicht alles haben
    wünsche noch nen schönen tag
    mfg chris

  6. #6
    Registriert seit
    10.07.2007
    Beiträge
    14
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Geht das auch wieder umgekehrt ohne byte1 und byte2 zu wiesen?

  7. #7
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.338
    Danke
    932
    Erhielt 3.333 Danke für 2.691 Beiträge

    Standard



    Was möchtest Du tun?

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

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  8. #8
    Registriert seit
    07.10.2013
    Beiträge
    96
    Danke
    7
    Erhielt 11 Danke für 10 Beiträge

    Standard

    mit Abkuerzung
    _byte0:BYTE;
    _byte1:BYTE;
    _word:WORD;

    _word:=(_byte1*256)+_byte0;

    Irek

  9. #9
    Registriert seit
    10.07.2007
    Beiträge
    14
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Ich wollte von der visu zur plc 2 byte Werte über geben die sich stendig ändern und in ein word packen und in der plc wieder entpacken aber auch so das ich die Werte unterscheiden kann.

    Danke

    Gruß

  10. #10
    Registriert seit
    07.10.2013
    Beiträge
    96
    Danke
    7
    Erhielt 11 Danke für 10 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Visu aber der Panel ist noch unbekannt.
    Wenn Beckhoff, dann ist jede Variable zu erreichen und so geht es:

    MAIN.FB_Instanz_Name.Variable.Bit_Nr (Variable=byte)

    Irek

Ähnliche Themen

  1. unterschied zw. word und int
    Von prinz1978 im Forum Simatic
    Antworten: 35
    Letzter Beitrag: 20.07.2017, 21:52
  2. Word (hex) to 4x Char
    Von Andy082 im Forum Programmierstrategien
    Antworten: 21
    Letzter Beitrag: 08.11.2009, 14:31
  3. S7-200 Variablentyp Word
    Von pixelpeter im Forum Simatic
    Antworten: 6
    Letzter Beitrag: 24.08.2007, 21:12
  4. 3 Word Vergleicher
    Von M.Schlichting im Forum Simatic
    Antworten: 7
    Letzter Beitrag: 14.06.2007, 14:43
  5. Real -> Word
    Von Cope im Forum Simatic
    Antworten: 11
    Letzter Beitrag: 13.06.2007, 01:33

Lesezeichen

Berechtigungen

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