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

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

Thema: Awl - Scl

  1. #1
    Registriert seit
    09.08.2004
    Ort
    Münsterland
    Beiträge
    232
    Danke
    21
    Erhielt 13 Danke für 10 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Tach,

    in AWL gibt es ja den Befehl TAD ? Gibt es was vergleichbares in SCL ?

    Oder muss ich das "zu fuss" programmieren ?

    Gruß stricky
    Zitieren Zitieren Awl - Scl  

  2. #2
    Registriert seit
    09.08.2004
    Ort
    Münsterland
    Beiträge
    232
    Danke
    21
    Erhielt 13 Danke für 10 Beiträge

    Standard

    tach nochmal ...

    habs gelöst .... damit kann ich den thread wieder schliessen

    stricky

  3. #3
    Registriert seit
    27.10.2005
    Ort
    Schwäbisch Gmünd
    Beiträge
    5.224
    Danke
    630
    Erhielt 955 Danke für 769 Beiträge

    Standard

    Nur interessehalber: und wie?
    Rainer Hönle
    DELTA LOGIC GmbH

    Ein Computer kann das menschliche Gehirn nicht ersetzen. Engstirnigkeit kann unmöglich simuliert werden. (Gerd W. Heyse)

  4. #4
    Registriert seit
    09.08.2004
    Ort
    Münsterland
    Beiträge
    232
    Danke
    21
    Erhielt 13 Danke für 10 Beiträge

    Standard

    nur ein Teilauszug ... sollte aber verständlich sein


    Code:
    VAR_TEMP
      i:INT;
      j:DINT;
      k:DWORD;
      TAD1 AT j:STRUCT
        Byte0:BYTE;
        BYTE1:BYTE;
        BYTE2:BYTE;
        BYTE3:BYTE;
      END_STRUCT;
      TAD2 AT k:STRUCT
        Byte0:BYTE;
        BYTE1:BYTE;
        BYTE2:BYTE;
        BYTE3:BYTE;
      END_STRUCT;
    END_VAR
    
    im proggie
    
              TAD2.byte0:=TAD1.byte3;
              TAD2.BYTE1:=TAD1.BYTE2;
              TAD2.BYTE2:=TAD1.BYTE1;
              TAD2.BYTE3:=TAD1.BYTE0;
    gruß stricky

  5. #5
    Registriert seit
    03.01.2006
    Ort
    Im sonnigen Süden von Österreich!
    Beiträge
    1.377
    Danke
    227
    Erhielt 183 Danke für 168 Beiträge

    Standard

    Hallo!

    gibts da schon ne bessere Lösung oder muss man das noch immer von Hand programmieren?

    godi

  6. #6
    Registriert seit
    07.03.2004
    Beiträge
    4.369
    Danke
    946
    Erhielt 1.158 Danke für 831 Beiträge

    Standard

    Klar geht das besser. Willst Du eine Fertige Lösung?

    Oder kannst Du es Dir aus meinem Beitrag TAW selber bauen ;o)

    Also TAW
    Code:
    LittleEndian := ROL(IN:=BigEndian, N:=8);
    http://www.sps-forum.de/showthread.php?t=14955
    If you open your Mind too much, your Brain will fall out.

  7. #7
    Registriert seit
    03.01.2006
    Ort
    Im sonnigen Süden von Österreich!
    Beiträge
    1.377
    Danke
    227
    Erhielt 183 Danke für 168 Beiträge

    Standard

    OK das sollte dann schon gehen!

    Danke!

  8. #8
    Registriert seit
    07.03.2004
    Beiträge
    4.369
    Danke
    946
    Erhielt 1.158 Danke für 831 Beiträge

    Standard

    Nee nur mit Rotieren (im kompletten Doppelwort) bekommt man es nicht gebacken ;o(

    Und wenn ich mit schieben und zwischen Variablen anfange oder zwei Word Variablen nehme und die Rotieren lasse wird es komplexer als die Lösung vom Kollegen Stricky.

    Vielleicht fällt mir noch was über Nacht ein ;o)
    Geändert von zotos (20.08.2007 um 21:35 Uhr)
    If you open your Mind too much, your Brain will fall out.

  9. #9
    Registriert seit
    03.01.2006
    Ort
    Im sonnigen Süden von Österreich!
    Beiträge
    1.377
    Danke
    227
    Erhielt 183 Danke für 168 Beiträge

    Standard

    So sollte es gehen
    OK ist aber um nix einfacher als die Lösung von Stricky

    Code:
     
    FUNCTION FC5 : VOID
    VAR_INPUT
        INPUT : DWORD;
    END_VAR
    VAR_OUTPUT
        OUTPUT : DWORD;
    END_VAR
    VAR_TEMP
      OUTPUT_Temp : DWORD;   
      OUTPUT_Temp_Word AT OUTPUT_Temp : ARRAY [0..1] OF WORD;
      OUTPUT_1 : DWORD;
      OUTPUT_1_Word AT OUTPUT_1 : ARRAY [0..1] OF WORD;
     
    END_VAR
    OUTPUT_1 := ROL(IN:=INPUT,  N:=16);
    OUTPUT_Temp_Word[0]  := ROL(IN:=OUTPUT_1_Word[0], N:=8);
    OUTPUT_Temp_Word[1]  := ROL(IN:=OUTPUT_1_Word[1], N:=8);
    OUTPUT := OUTPUT_Temp;
     
    END_FUNCTION
    Aber es wundert mich das es hierfür keinen Befehl nicht gibt!

    godi

  10. #10
    Registriert seit
    07.03.2004
    Beiträge
    4.369
    Danke
    946
    Erhielt 1.158 Danke für 831 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von godi Beitrag anzeigen
    ...
    Aber es wundert mich das es hierfür keinen Befehl nicht gibt!
    ...
    Wenn man einen Befehl braucht den es nicht gibt schreibt man sich eine Funktion die einem die benötigte Aufgabe erledigt.

    In C z.B. gibt es kaum Grundbefehle, da kommt viel aus den Bibliotheke. Bei CoDeSys läuft das ganz ähnlich man baut sich eine Funktion oder einen Funktionsblock und legt Ihn in eine Lib ab. Ok ich kann verstehen das man bei Step7 da etwas genervt ist da dort ja jede Funktion als eigener Baustein behandelt werden will.
    If you open your Mind too much, your Brain will fall out.

Lesezeichen

Berechtigungen

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