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

Ergebnis 1 bis 10 von 10

Thema: Mehrere Word Informationen in einen USINT "Mappen"

  1. #1
    Registriert seit
    02.05.2012
    Beiträge
    49
    Danke
    3
    Erhielt 1 Danke für 1 Beitrag

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo Forum-User,

    Wie kann man möglichst einfach mehrere Word Informationen auf einen USINT "mappen"

    Dabei soll die Bit Information von wHelp1 auf dem Platz 0 des USINT liegen
    => Bit Information von wHelp2 dann auf Platz 1 usw...

    Anbei der erste Versuch:

    Code:
    wHelp        :USINT;
    wHelp1        :WORD;
    wHelp2        :WORD;
    
    
    wHelp.0:=WORD_TO_USINT(wHelp1.0);
    wHelp.1:=WORD_TO_USINT(wHelp1.1);
    wHelp.2:=WORD_TO_USINT(wHelp2.0);
    wHelp.3:=WORD_TO_USINT(wHelp2.1);
    Dies geht so nicht.
    Fehlermeldung:
    Unzulässiger Typ in Parameter von Conversion: Kann Bool nicht in Word konvertieren?
    Warum gibt es diesen Fehler?

    Danke schon im Voraus für Eure Unterstützung
    Zitieren Zitieren Mehrere Word Informationen in einen USINT "Mappen"  

  2. #2
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.222
    Danke
    533
    Erhielt 2.697 Danke für 1.949 Beiträge

    Standard

    Ich würde mir mal die Hilfe zum Befehl memcpy ansehen.

    Ein Beispiel z.Bsp. hier: Int als Hexadezimalwerte darstellen und in String schreiben
    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

  3. #3
    Registriert seit
    28.03.2012
    Ort
    Hessen
    Beiträge
    116
    Danke
    4
    Erhielt 20 Danke für 18 Beiträge

    Standard

    Zitat Zitat von carepicha Beitrag anzeigen
    Unzulässiger Typ in Parameter von Conversion: Kann Bool nicht in Word konvertieren?
    Warum gibt es diesen Fehler?
    wHelp1.0 ist ein Bool und kein Word.


    So etwas wurde eher funktionieren:
    Code:
    wHelp.0:=wHelp1.0;
    wHelp.1:=wHelp1.1;
    wHelp.2:=wHelp2.0;
    wHelp.3:=wHelp2.1;
    Kaum macht man es richtig, schon funktioniert es.

  4. #4
    Registriert seit
    02.05.2012
    Beiträge
    49
    Danke
    3
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Zitat Zitat von olliew Beitrag anzeigen
    wHelp1.0 ist ein Bool und kein Word.
    Dies ist aus der Fehlermeldung zu erahnen, doch warum? wHelp1 ist doch als als DWORD deklariert?



    [QUOTE

    So etwas wurde eher funktionieren:
    Code:
    wHelp.0:=wHelp1.0;
    wHelp.1:=wHelp1.1;
    wHelp.2:=wHelp2.0;
    wHelp.3:=wHelp2.1;
    [/QUOTE]


    Ok, noch einfacher....müssen also die verschiedenen Datentypen in diesem Fall nicht explizit umgewandelt werden?

  5. #5
    Registriert seit
    28.03.2012
    Ort
    Hessen
    Beiträge
    116
    Danke
    4
    Erhielt 20 Danke für 18 Beiträge

    Standard

    Zitat Zitat von carepicha Beitrag anzeigen
    wHelp1 ist doch als als DWORD deklariert?
    Schon, du benutzt aber wHelp1.0 und das ist dann eben kein WORD sondern ein BOOL.
    Kaum macht man es richtig, schon funktioniert es.

  6. #6
    Registriert seit
    02.05.2012
    Beiträge
    49
    Danke
    3
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Sorry dass ich hier nochmals nachhaken muss.
    Soll das bedeuten dass er dann selbständig aus einen WORD ein BOOL macht?

    Etwas was als Word deklariert ist, ist und bleibt doch eine Word, wie soll dass ein Bool werden?

    Kann ich irgendwie nicht verstehen......

  7. #7
    Registriert seit
    28.03.2012
    Ort
    Hessen
    Beiträge
    116
    Danke
    4
    Erhielt 20 Danke für 18 Beiträge

    Standard

    Wieso selbständig? Du benutzt wHelp1.0 statt wHelp1

    In Hilfe suchen nach Bitzugriff könnte helfen...
    Kaum macht man es richtig, schon funktioniert es.

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

    Standard

    So koennte das gehen:
    ##############################
    PROGRAM MAIN
    VAR

    _wHelp:USINT;
    _wHelp1:WORD:=16#AAAA;
    _wHelp2:WORD:=16#5555;
    _HilfeWORD;
    _Hilfe1_1WORD;
    _Hilfe1_2WORD;
    i: INT;
    j: INT;
    END_VAR
    ####################################
    _Hilfe:=0;
    _Hilfe1_1:=_wHelp1;
    _Hilfe1_2:=_wHelp2;
    j:=0;
    FOR i:=0 TO 16 BY 1 DO
    _Hilfe:=_Hilfe OR SHL((SHR(_Hilfe1_2,i)AND 16#1),j);
    j:=i*2;
    END_FOR;
    _Hilfe:=SHL(_Hilfe,1);
    j:=0;
    FOR i:=0 TO 16 BY 1 DO
    _Hilfe:=_Hilfe OR SHL((SHR(_Hilfe1_1,i)AND 16#1),j);
    j:=i*2;
    END_FOR;
    _wHelp:=DWORD_TO_USINT(_Hilfe);


    Irek

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

    Standard

    USINT

    Ganzzahliger Datentyp.
    Typ Untergrenze Obergrenze Speicherplatz
    USINT 0 255 8 Bit
    kommt vom Beckhoff.


    Irek

  10. #10
    Registriert seit
    27.06.2009
    Ort
    am Nordharz
    Beiträge
    3.717
    Danke
    443
    Erhielt 919 Danke für 740 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von Irek Beitrag anzeigen
    Code:
    PROGRAM MAIN
    
    VAR
        _wHelp:USINT;
        _wHelp1:WORD:=16#AAAA;
        _wHelp2:WORD:=16#5555;
        _Hilfe:DWORD;
        _Hilfe1_1:DWORD;
        _Hilfe1_2:DWORD;
        i: INT;
        j: INT;
    END_VAR
    
    ####################################
    
    _Hilfe:=0;
    _Hilfe1_1:=_wHelp1;
    _Hilfe1_2:=_wHelp2;
    j:=0;
    
    FOR i:=0 TO 16 BY 1 DO
        _Hilfe:=_Hilfe OR  SHL((SHR(_Hilfe1_2,i)AND 16#1),j);
        j:=i*2;
    END_FOR;
    
    _Hilfe:=SHL(_Hilfe,1);
    j:=0;
    
    FOR i:=0 TO 16 BY 1 DO
        _Hilfe:=_Hilfe OR  SHL((SHR(_Hilfe1_1,i)AND 16#1),j);
        j:=i*2;
    END_FOR;
    
    _wHelp:=DWORD_TO_USINT(_Hilfe);
    Ja, sieht schon viel einfacher aus als das von olliew Vorgeschlagene:
    Zitat Zitat von olliew Beitrag anzeigen
    So etwas wurde eher funktionieren:
    Code:
    wHelp.0:=wHelp1.0;
    wHelp.1:=wHelp1.1;
    wHelp.2:=wHelp2.0;
    wHelp.3:=wHelp2.1;


    @Irek,
    benutz' für Programmzeilen bitte mal den Code-Button (#) ganz rechts in der 2. Iconzeile. Wie Du in dem bearbeiteten Zitat von Dir siehst, ist er dann besser lesbar und auch Einrückungen lassen sich einfach vornehmen.

  11. Folgender Benutzer sagt Danke zu hucki für den nützlichen Beitrag:

    Irek (11.12.2014)

Ähnliche Themen

  1. mehrere " Software Limit" zuweisen
    Von zloyduh im Forum Simatic
    Antworten: 13
    Letzter Beitrag: 20.03.2012, 11:22
  2. Mehrere FB14 "GET"-Aufrufe gleichzeitig
    Von Nico99 im Forum Simatic
    Antworten: 0
    Letzter Beitrag: 16.04.2010, 10:03
  3. Antworten: 12
    Letzter Beitrag: 09.04.2010, 10:26
  4. Antworten: 2
    Letzter Beitrag: 16.04.2009, 20:09
  5. Gesucht: Informationen über das Programm "IVISION"
    Von Cosi im Forum Sonstige Steuerungen
    Antworten: 3
    Letzter Beitrag: 29.03.2005, 11:32

Lesezeichen

Berechtigungen

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