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

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

Thema: Pointer als Rückgabewert einer Funktion

  1. #1
    Registriert seit
    13.01.2010
    Beiträge
    158
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,
    über sinn und unsinn lässt sich hier streiten.
    Mich interessiert nur kann ich eine Funktion für Siemens und Beckhoff schreiben, welche mir als Rückgabewert einen Pointer gibt.

    Funktion F_Adresse : Pointer
    VAR_INPUT
    IN : BYTE;
    END_VAR
    F_Adresse:= IN;
    END_FUNCTION

    Ja ich weiß die Funktion ist schwachsinn, aber das ist hier egal

    Bei Siemens wird bei Funktionen ja sowieso nur die Adresse übergeben und die will ich wieder raus geben, aber nicht als VAR_Output, sondern als Rückgabewert der Funktion.
    Bei Beckhoff sollte es mit ADR irgendwie gehen.

    Mein Hauptproblem ist aber der Pointer als Rückgabewert.
    Zitieren Zitieren Pointer als Rückgabewert einer Funktion  

  2. #2
    Registriert seit
    12.05.2007
    Beiträge
    416
    Danke
    14
    Erhielt 45 Danke für 40 Beiträge

    Standard

    Sollte normalerweise Funktionieren...
    Wenn ich mal Zeit hab mach ich nen Test... Maybe heute Abend...

  3. #3
    kai86 ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    13.01.2010
    Beiträge
    158
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard

    bei mir kommt da ein fehler ungültiger oder fehlender funktionstyp bei siemens. in der hilfe habe ich aber auch noch nix gefunden, was Pointer als Rückgabewert verbietet.

  4. #4
    Registriert seit
    12.05.2007
    Beiträge
    416
    Danke
    14
    Erhielt 45 Danke für 40 Beiträge

    Standard

    Kommt bei mir auch

  5. #5
    Registriert seit
    12.05.2007
    Beiträge
    416
    Danke
    14
    Erhielt 45 Danke für 40 Beiträge

    Standard

    Hinweis
    • <LI style="FONT-SIZE: 9pt">Bei den Datentypen ANY und POINTER gelten besondere Regeln bei der Versorgung.
    • Bei Durchgangsparametern nicht-elementaren Datentyps sind als Aktualparameter nicht erlaubt:
        • <LI style="FONT-SIZE: 9pt">FB-Durchgangsparameter
        • FC-Parameter


    Hier ein kleiner Trick dass es doch mit dem Pointer am Ausgang klappt...

    Code:
    FUNCTION PointerTest : Void
    TITLE = 'PointerTest'
    VERSION : '1.0'
    // KNOW_HOW_PROTECT
    AUTHOR  : CG
    NAME    : Test
    FAMILY  : Test
    //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    //+ Schnittstellendeklaration
    //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    CONST                                                   // KONSTANTEN
      
    END_CONST    
    VAR_INPUT                                               // EINGANGSVARIABLEN
    END_VAR
    VAR_OUTPUT                                              // AUSGANGSVARIABLEN
    END_VAR
    VAR_IN_OUT                                              // IN/OUT VARIABLEN
        Out                     : Pointer;
    END_VAR    
    VAR
    END_VAR
    VAR_TEMP                                                // TEMPORAERE VARIABLEN
    END_VAR
    LABEL                                                   // SPRUNGMARKEN
    END_LABEL
    //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++                                                                                                    
    //+ Bausteincode                                                                                                                                                                                              
    //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
     
    
    END_FUNCTION

  6. #6
    kai86 ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    13.01.2010
    Beiträge
    158
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hallo Danke.
    Aber da ich es als Rückgabeparameter brauch muss ich mir wohl was anderes einfallen lassen.

  7. #7
    Registriert seit
    12.05.2007
    Beiträge
    416
    Danke
    14
    Erhielt 45 Danke für 40 Beiträge

    Standard

    IN/Out ist doch ein Rueckgabewert...

    Etwas "unelegant" wäre da die Möglichkeit eines FB denn du immer mit der gleichen Instanz aufrufst...

  8. #8
    kai86 ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    13.01.2010
    Beiträge
    158
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard

    naja das bringt mir nicht so viel.

    wollte die Folgender maßen einbauen.

    F_Test(pPointer := F_Adresse(Byte));

    ist zwar sinnlos da ich die F_Adresse auch weglassen könnte, aber bei beckhoff steht da halt noch ADR() und um den Code gleich zu haben sollte da jetzt ne extra Funktion rein.

    Ja ich weiß nicht sehr sinnvoll, aber so ist es

  9. #9
    Registriert seit
    12.05.2007
    Beiträge
    416
    Danke
    14
    Erhielt 45 Danke für 40 Beiträge

    Standard

    Echt nicht sehr sinnvoll
    Übergib halt der F_Test die Int und mach dort die Berechnung...

  10. #10
    kai86 ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    13.01.2010
    Beiträge
    158
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Ist nicht wirklich ein Integer sondern ein ByteArray beliebiger länge. Deshalb übergebe ich da den Pointer und die Länge, sowohl bei Beckhoff als auch bei siemens der einzigste unterschied ist das ADR() bei Beckhoff und das will ich weg haben bzw. bei beiden optisch gleich

Ähnliche Themen

  1. Pointer an Funktion übergeben
    Von Anaconda55 im Forum Simatic
    Antworten: 3
    Letzter Beitrag: 01.11.2011, 19:54
  2. Funktion mit Array-Rückgabewert
    Von cas im Forum CODESYS und IEC61131
    Antworten: 9
    Letzter Beitrag: 25.03.2011, 12:07
  3. OB1 mit Aufruf einer Funktion in SCL
    Von pinolino im Forum Simatic
    Antworten: 3
    Letzter Beitrag: 29.04.2009, 17:18
  4. Antworten: 31
    Letzter Beitrag: 10.01.2009, 13:10
  5. Funktion Rückgabewert
    Von Basstarono im Forum CODESYS und IEC61131
    Antworten: 1
    Letzter Beitrag: 17.07.2008, 18:26

Lesezeichen

Berechtigungen

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