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

Ergebnis 1 bis 9 von 9

Thema: B&R: Bibliotheken umprogrammieren

  1. #1
    Registriert seit
    04.06.2012
    Ort
    Jena
    Beiträge
    41
    Danke
    9
    Erhielt 0 Danke für 0 Beiträge

    Beitrag


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo allezusammen,
    Ich möchte eine Funktion .c in ST umprogrammieren
    die Funktion ist:

    /* Konvertiert eine Zahl in einen Hexstring nach dem Format "%08X" mit führenden Nullen (8stellig) */
    BOOL dint2hexs(unsigned long pHexstr, long lNumber)
    {
    char *str = (char *)pHexstr;
    const char Table[16] = "0123456789ABCDEF";
    unsigned int divider = 0x10000000;
    unsigned int index = 0;
    unsigned int digit;
    strcpy(str, "00000000");
    while (divider) {
    digit = lNumber / divider;
    lNumber = lNumber % divider;
    divider /= 0x10;
    str[index++] = Table[digit&0xF];
    }
    str[index] = '\0';

    return TRUE;

    ich habe keine Erfahrung in ST(habe die Bibliotheken in ST nie geschrieben).

    Mein Versuch:

    FUNCTION dint2hexs_
    pHexstr := ADR(zsHex);
    str ACCESS pHexstr; // str-Reference to UDINT
    divider := 16#10000000;
    index := 0;
    memcpy(ADR(str), ADR('00000000'), ;
    FOR i := 0 TO 9 BY 1 DO
    abTable[i] := i + 16#30;
    END_FOR
    FOR i := 10 TO 15 BY 1 DO
    abTable[i] := i + 16#37;
    END_FOR
    WHILE (divider <> 0) DO
    digit := lNumber/divider;
    lNumber := lNumber MOD divider;
    divider := divider / 16#10;
    index := index + 1;
    digit := digit AND 16#F;
    digit := digit + 1;
    //str[index] := abTable[digit]; // abTable - ARRAY[0..15] of USINT
    //str ACCESS abTable[digit];
    END_WHILE

    dint2hexs_ := TRUE;
    END_FUNCTION

    Geht aber nicht "str[index] := abTable[digit]", da str keine Feldvariable ist.

    Zweite Frage: ich habe:#define Variable2 16
    unsigned char Variable 1[Variable2];
    .......................................................
    unsigned char Variable 8[Variable2] = {0x6c,0x8a,0x83,0x7c,0x10,0x46,0xce,0xa3,0x85,0x2c,0x9d,0x51,0xf9,0x6f,0x95,0xda };

    wie kann ich es in ST deklarieren? Variable 1 einfach als 16? Variable 8?

    Danke für jeden Tip
    Geändert von SAB2002 (28.12.2013 um 10:33 Uhr)
    Zitieren Zitieren B&R: Bibliotheken umprogrammieren  

  2. #2
    Registriert seit
    25.10.2009
    Beiträge
    47
    Danke
    5
    Erhielt 4 Danke für 4 Beiträge

    Standard

    Hallo SAB2002,

    für Konstanten in einer Funktion muss eine neue Variable (Member ) vom Typ VAR eingefügt werden, dies kann dann als Konstante deklariert werden.
    Den Datentyp unsigned Char gibt es in St nicht, dies muss als String deklariert werden, bei der deklaration kann die Länge des Strings eingegeben werden.

    Gruß

    adi5

  3. #3
    Registriert seit
    04.06.2012
    Ort
    Jena
    Beiträge
    41
    Danke
    9
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hallo adi5,
    Typ VAR habe ich nicht gefunden.Ich habe Variable2, als int const 16, deklariert, und dann Variable1 als String[Variable2]. Probleme aber, das online Variable2=0(immer).

    Danke.

  4. #4
    Registriert seit
    29.03.2004
    Beiträge
    5.735
    Danke
    143
    Erhielt 1.685 Danke für 1.225 Beiträge

    Standard

    Schau mal in die Oscat Bibliothek, die ist in ST geschrieben, und sollte darum auch mit B&R funktionieren.
    Dort gibt es u.a. auch eine Funktion DWORD_TO_STRH.

  5. #5
    Registriert seit
    04.06.2012
    Ort
    Jena
    Beiträge
    41
    Danke
    9
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Funktioniert, aber, nicht. Funktion DWORD_TO_STRH gibt es in BuR nicht.

  6. #6
    Registriert seit
    29.03.2004
    Beiträge
    5.735
    Danke
    143
    Erhielt 1.685 Danke für 1.225 Beiträge

    Standard

    Aber in der Oscat Bibliothek wird sie ausprogrammiert.

  7. #7
    Registriert seit
    04.06.2012
    Ort
    Jena
    Beiträge
    41
    Danke
    9
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Ja-Aber Code(selbst) habe ich nicht gefunden.

  8. #8
    Registriert seit
    04.06.2012
    Ort
    Jena
    Beiträge
    41
    Danke
    9
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Ja.Aber Code(selbst) habe ich nicht gefunden.Vielleicht,suche ich falsch in Oscat-Bibliothek.

  9. #9
    Registriert seit
    29.03.2004
    Beiträge
    5.735
    Danke
    143
    Erhielt 1.685 Danke für 1.225 Beiträge

Ähnliche Themen

  1. Pascal Bibliotheken
    Von reck im Forum Sonstige Steuerungen
    Antworten: 2
    Letzter Beitrag: 28.11.2011, 11:46
  2. Bibliotheken
    Von markuscps im Forum Programmierstrategien
    Antworten: 1
    Letzter Beitrag: 20.08.2010, 10:36
  3. C++ in ST umprogrammieren
    Von COOLT im Forum CODESYS und IEC61131
    Antworten: 7
    Letzter Beitrag: 22.07.2009, 14:28
  4. Antworten: 11
    Letzter Beitrag: 28.07.2008, 12:06
  5. Bibliotheken erstellen
    Von drfunfrock im Forum CODESYS und IEC61131
    Antworten: 2
    Letzter Beitrag: 06.05.2008, 11:20

Lesezeichen

Berechtigungen

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