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

Ergebnis 1 bis 2 von 2

Thema: SCL-Code Oscalt LIb

  1. #1
    Registriert seit
    19.06.2015
    Beiträge
    459
    Danke
    26
    Erhielt 40 Danke für 35 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    FUNCTION_BLOCK BUFFER_TO_STRING
    TITLE = 'BUFFER_TO_STRING'
    //
    //this function will retrieve a string from an array of byte starting at position start and stop at position stop.
    //the function needs to be called: buffer_TO_String(adr("array"),sizeof("array"), start, stop);
    //because this function works with pointers its very time efficient and it needs no extra memory.
    //
    VERSION : '1.5'
    AUTHOR : hugo
    NAME : BBSTR
    FAMILY : BUFFER

    VAR_INPUT
    PT : POINTER;
    _pt AT pt: STRUCT
    DBNr: WORD;
    Adr: DWORD;
    END_STRUCT;
    SIZE : INT;
    START : INT;
    STOP : INT;
    END_VAR
    VAR_OUTPUT
    _STRING : STRING;
    _str AT _STRING : STRUCT
    length: BYTE;
    act_length: BYTE;
    str: ARRAY [1..254] OF BYTE;
    END_STRUCT;
    END_VAR
    VAR_TEMP
    ps : INT; //POINTER TO BYTE;
    i : INT;
    tPT : INT;
    stp: INT;
    sta: INT;
    END_VAR

    BEGIN


    tPT := DWORD_TO_INT(SHR(IN:=SHL(IN:=_pt.Adr,N:=,N:=11));

    ps := 1; //ADR(BUFFER_TO_STRING);
    IF size = 0 THEN RETURN; END_IF;
    sta := MIN(IN1:=start, IN2:=size-1);
    stp := MIN(IN1:=stop, IN2:=size-1);

    (* check for maximum string_length *)
    IF (stp - sta + 1) >= BYTE_TO_INT(_str.act_length) THEN
    stp := sta + BYTE_TO_INT(_str.act_length) - 1;
    END_IF;

    FOR i := sta TO stp DO
    _str.str[ps] := WORD_TO_BLOCK_DB(_pt.DBNr).DB[tpt+i];
    ps := ps + 1;
    END_FOR;

    (
    *)
    END_FUNCTION_BLOCK

    Habe den Quellcode von der Oscat Lib genommen und kriege die Konvertierungen nicht rein.Die werden normal blau wenn der die Funktion
    kennt.
    Ich habe die Funktionen im FUP nachgebildet.Einfach mit Move das Datenformat verschoben bei "DWORD_TO_INT" und "Byte_to_int".Aber auch meine eigenen Funktionen nimmt er nicht.
    Woran kann das liegen?Kraatz!
    Zitieren Zitieren SCL-Code Oscalt LIb  

  2. #2
    Registriert seit
    11.12.2009
    Beiträge
    2.120
    Danke
    388
    Erhielt 390 Danke für 271 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    In SCL ist das manchmal etwas anders.
    Die von dir genannten Bausteine kannst Du ja mal von Hand in dein Projekt ziehen, und gucken ob er sie dann frisst.

    Grüße

    Marcel
    Stell Dir vor es geht, und keiner kriegts hin!

Ähnliche Themen

  1. TIA SCL Code Problem
    Von lsr im Forum Simatic
    Antworten: 17
    Letzter Beitrag: 19.02.2015, 22:44
  2. Step 7 SCL Code
    Von Casio im Forum Simatic
    Antworten: 1
    Letzter Beitrag: 12.03.2014, 10:33
  3. Exponent im SCL Code
    Von paula23 im Forum Simatic
    Antworten: 26
    Letzter Beitrag: 08.09.2013, 19:40
  4. SCL code
    Von awl-scl im Forum Simatic
    Antworten: 21
    Letzter Beitrag: 14.01.2008, 17:02
  5. 1.Adressübertragung?, 2.SCL-code?
    Von hobel im Forum Simatic
    Antworten: 14
    Letzter Beitrag: 05.09.2006, 14:49

Lesezeichen

Berechtigungen

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