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

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

Thema: Datentypkonvertierung SCL

  1. #1
    Registriert seit
    21.07.2010
    Ort
    Dortmund
    Beiträge
    105
    Danke
    37
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,

    hab da mal eine Frage: kann ich einen INT im SCL auf die beiden entsprechenden Bytes konvertieren? Also ich hab zb einen DB1.DBW0 und den möchte ich auf auf zwei Variablen Test1 und Test2 vom Typ Byte "konvertieren", oder besser gesagt widerspiegeln.
    Stehe da grad ein wenig auf dem Schlauch (was mitunter am Freitag liegen mag).

    Danke schonmal
    Zitieren Zitieren Datentypkonvertierung SCL  

  2. #2
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.716
    Danke
    398
    Erhielt 2.398 Danke für 1.998 Beiträge

    Standard

    Hallo,
    du machst dir eine AT-Sicht auf deine Variable, die den INT dann als 2 Bytes sieht. Also z.B. so :
    Code:
    myVar : INT ;
    atmyVar at myVar : Array [1..2] of Byte ;
    Gruß
    Larry

  3. #3
    qpec_hagen ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    21.07.2010
    Ort
    Dortmund
    Beiträge
    105
    Danke
    37
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Danke erstmal.
    Aber kann ich das denn auch so im Code dann anwenden? Habe nämlich in meinem DB1 10 INT Variablen, welche ich per Code dann auf 20 Out Varibalen des Bausteins schreiben möchte. Und einfach durchreichen ist leider nicht möglich, da ich sie zwingend als Byte vorliegen haben muss.

  4. #4
    qpec_hagen ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    21.07.2010
    Ort
    Dortmund
    Beiträge
    105
    Danke
    37
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Also sollte dann vom Prinzip so sein:
    Byte1:= ??? DB1.DBW0 ; <-- erstes Byte von dem INT
    Byte2:= ??? DB1.DBW0 ; <-- zweites Byte von dem INT

  5. #5
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.716
    Danke
    398
    Erhielt 2.398 Danke für 1.998 Beiträge

    Standard

    Hallo,
    das, was du da als Code-Schnipsel siehst, ist ein Teil der Deklaration der Variablen. Das heißt, dass du mittels AT eine (oder mehrere) komplett andere Sichtweisen und damit ggf. auch Interpretationen von einer (oder mehreren) Variablen anlegen kannst. Da du aber eben nicht mit einer neuen Variablen arbeitest ändert das, was du in der einen Sicht machst automatisch (oder dein weiteres Zutun) den Inhalt der anderen Sicht.

    Sicherlich könnte ich dir ein etwas konkreteres Beispiel liefern - leider habe ich jedoch dein Vorhaben nicht so Recht verstanden ...
    Aber vielleicht kommst du mit meiner Erklärung (und etwas ausprobieren) auch schon weiter ...

    Gruß
    Larry

  6. #6
    qpec_hagen ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    21.07.2010
    Ort
    Dortmund
    Beiträge
    105
    Danke
    37
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Ja das das in der Deklaration ist hab ich auch gesehen
    Aber ich kann ja nicht in der Deklaration auf eine Variable in meinem DB schauen. Also so:

    test AT DB1.DBW0 : Array [0..1] of Byte;

    das nimmt er so garnicht an als Variablendeklaration.
    Hab da grad keine Idee mehr wie ich vorgehen kann.

  7. #7
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.716
    Danke
    398
    Erhielt 2.398 Danke für 1.998 Beiträge

    Standard

    Das ist ja auch ncht der Sinn von AT.
    Ich kann nur eine andere Sicht auf mir bekannte Variablen machen (alos die, die ich selber deklariere).

    Aber dein WORD läßt sich ja auch noch anders "verschmickeln". Z.B. mit "AND 255" für das LOw-Byte und "div 256" für das High-byte ...

  8. #8
    qpec_hagen ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    21.07.2010
    Ort
    Dortmund
    Beiträge
    105
    Danke
    37
    Erhielt 0 Danke für 0 Beiträge

    Standard

    And 255 und Div 256? Das sagt mir jetzt erstmal nichts aber bin lernbereit

  9. #9
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.716
    Danke
    398
    Erhielt 2.398 Danke für 1.998 Beiträge

    Standard

    Sorry ... war eben etwas kurz dran, wollte aber trotzdem antworten ...

    Code:
    myLowByte := INT_to_Byte (myINT AND 255) ;
    myHighByte := INT_to_Byte (myINT DIV 256) ;
    habe ich jetzt aber nicht gestetst - sollte aber funktionieren ...

    Gruß
    Larry

  10. #10
    Registriert seit
    14.05.2012
    Beiträge
    157
    Danke
    28
    Erhielt 4 Danke für 4 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zum Thema: Würde es so machen wie in Larry´s 1. Vorschlag. Hab das neulich auch so gelöst. Array [] of Byte.

    Zu Larry : Thema int_to_Byte..... gibt es da was in schriftform wo man das etwas genauer nachlesen kann? In der Siemens SCL Hilfe kommt ja nur folgendes :

    Funktionsname Konvertierungsregel
    INT_TO_BYTE WORD_TO_BYTE(INT_TO_WORD(x))


    Ich meine ohne "dein" AND oder DIV kommt man jetzt da nicht wirklich weit. (Maskiert AND aus? Div teilt ??)

    BTW: Was meinen Sie mit Konvertierungsregel?

    Sorry für meine Unwissenheit, aber mit der SCL Hilfe alleine komm ich da jetzt nicht ganz klar.

    Z.B.: myLowByte:= INT_TO_BYTE(WORD_TO_INT(%mw10)) ... was kommt jetzt da für myLowByte raus?
    Geändert von Django2012 (13.10.2012 um 12:08 Uhr)

Ähnliche Themen

  1. Antworten: 1
    Letzter Beitrag: 23.01.2012, 17:06
  2. SCL: FB Aufruf unter SCL mit Variablen DB
    Von ThorstenK im Forum Programmierstrategien
    Antworten: 32
    Letzter Beitrag: 10.02.2011, 19:15
  3. Antworten: 4
    Letzter Beitrag: 10.03.2008, 10:02
  4. Antworten: 4
    Letzter Beitrag: 07.10.2006, 00:34
  5. Brauche Hilfe bei SCL.SFC Aufrufen in SCL
    Von Gerold im Forum Simatic
    Antworten: 10
    Letzter Beitrag: 06.10.2005, 10:47

Lesezeichen

Berechtigungen

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