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

Ergebnis 1 bis 7 von 7

Thema: FC IN/OUT Durchreichen

  1. #1
    Registriert seit
    22.11.2006
    Ort
    CH
    Beiträge
    3.649
    Danke
    789
    Erhielt 655 Danke für 498 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hi zusammen

    Ich habe hier einen FC mit einer IN/OUT Variable vom Typ Array[0..240] of BYTE. in diesem FC wird diese Variable an einem Blkmove auf die dst Angeschlossen.

    Den FC kann ich in einem FB ohne Probleme aufrufen und die IN/OUT Variable mit einer Statischen Struktur belegen.

    Jetzt wollte ich diesen FC aber auch noch in einem anderen FC verwenden welcher die IN/OUT Variable einfach durchreicht.

    Also FB1 ruft FC1 auf mit Array of Byte IN/OUT belegt durch eine Statische Variable (Array of Byte)
    FC1 ruft wiederum FC2 auf, die IN/OUT Variable belegt mit der IN/Out Variable von FC1.
    Im FC2 wiederum wird blkmove aufgerufen und mit der IN/OUT Variable belegt.

    im FC1 wird aber die Variablenzuweisung abgelehnt mit "Ungültige Parameterzuweisung"

    wie macht man dass dann korrekterweise?

    mfG René
    Zitieren Zitieren FC IN/OUT Durchreichen  

  2. #2
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.797
    Danke
    398
    Erhielt 2.418 Danke für 2.014 Beiträge

    Standard

    Hallo Rene,
    du mußt dir in dem FC1 den Inhalt des INOUT (also den Wert des Any-Pointers) in eine eigene Variable des FC1 schreiben und die dann an den FC2 übergeben.

    Gruß
    Larry

  3. #3
    Avatar von vollmi
    vollmi ist gerade online Erfahrener Benutzer
    Themenstarter
    Registriert seit
    22.11.2006
    Ort
    CH
    Beiträge
    3.649
    Danke
    789
    Erhielt 655 Danke für 498 Beiträge

    Standard

    Hm mir ist noch nicht ganz klar wie genau.
    Ich mache im FC1 einen InOUT
    Ausgabe Array [0..256] of Byte
    Dann im Temp nochmal dasselbe:
    Weitergabe Array [0..256] of Byte

    Weise den In/out pointer zu.
    #Weitergabe := #Ausgabe;

    Zeile darunter am Aufruf des FC2 lege ich dann #Weitergabe an in/out an?

    Das würde klappen aber wenn ich im FC2 dann etwas auf die Struktur schreibe wird das nicht verwertet.

    mfG René

  4. #4
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.797
    Danke
    398
    Erhielt 2.418 Danke für 2.014 Beiträge

    Standard

    Hallo Rene,
    ich mache das jetzt ein bißchen aus der Erinnerung heraus (ich habe gerade kein PG im Zugriff um es direkt kontrollieren zu können).
    Das INOUT_UDT deines FC1 müßte ein Pointer sein, der auf die Adresse zeigt an der die 10 Byte des ANY-Pointers deines Quell-Arrays stehen.
    Du müßtest jetzt also in deinem FC1 eine Variable vom Typ ANY-Pointer erstellen, die du dann an den FC2 weitergibst.
    Nun lädst du die 10 Byte, die an der Stelle deines o.g. Pointers stehen und schreibst die in den Speicherbereich deines lokalen ANY-Pointers herein.
    ich hoffe, das es jetzt verständlicher war.
    Ich kann dir aber später nachmittags auch dazu ein Beispiel erstellen ...

    Gruß
    Larry

  5. #5
    Avatar von vollmi
    vollmi ist gerade online Erfahrener Benutzer
    Themenstarter
    Registriert seit
    22.11.2006
    Ort
    CH
    Beiträge
    3.649
    Danke
    789
    Erhielt 655 Danke für 498 Beiträge

    Standard

    Danke Larry. Ueber ein Beispiel wäre ich sehr froh.

    Ich habe das jetzt auf diverse Arten ausprobiert, aber ich kriege die Pointerzuweisung nicht hin.

    ggf. ist Tia da vielleicht auch etwas strenger dass alles passen muss.

    mfG René

  6. #6
    Avatar von vollmi
    vollmi ist gerade online Erfahrener Benutzer
    Themenstarter
    Registriert seit
    22.11.2006
    Ort
    CH
    Beiträge
    3.649
    Danke
    789
    Erhielt 655 Danke für 498 Beiträge

    Standard

    Danke Larry. Ueber ein Beispiel wäre ich sehr froh.

    Ich habe das jetzt auf diverse Arten ausprobiert, aber ich kriege die Pointerzuweisung nicht hin.
    Vermutlich nur was kleines. Aber bei SCL falle ich ab und zu eben immernoch rein.

    ggf. ist Tia da vielleicht auch etwas strenger dass alles passen muss.


    mfG René
    mfG René

  7. #7
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.797
    Danke
    398
    Erhielt 2.418 Danke für 2.014 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo Rene,

    ich kann dir nur mit einem AWL-Codeteil aushelfen.
    In SCL ist es so eine Sache mit dem AT-Sicht auf Pointer machen.
    Code:
     L     P##INOUT_Datenquelle        // der INOUT-Datensatz
     LAR1                              // Pointer darauf
     L     W [AR1,P#0.0]               // Bestandteile zerlegen
     T     #INOUT_DBNr                // TEMP - WORD
     L     D [AR1,P#2.0]
     T     #INOUT_Speicher            // TEMP - DWORD
    
     TAR2  #save_AR2                   // AR2 sichern
    
     AUF   DB [#INOUT_DBNr]            // DB des INOUT-Datensatzes öffnen
     L     #INOUT_Speicher             // Zeiger auf ursprüngliche Datenquelle
     LAR1  
    
     L     P##myDurchgang              // Pointer auf den neuen Übergabe-Parameter [ANY]
     LAR2  
    
     L     W [AR1,P#0.0]               // Inhalte übertragen
     T     W [AR2,P#0.0]
     L     D [AR1,P#2.0]
     T     D [AR2,P#2.0]
     L     D [AR1,P#6.0]
     T     D [AR2,P#6.0]
    
     LAR2  #save_AR2                   // AR2 zurückschreiben
    
    // nun kann "myDurchgang" an Stelle von "INOUT_Datenquelle" weiter gegeben werden ...
    Ich habe es noch nicht getestet - sollte aber korrekt sein.
    Gruß
    Larry

  8. Folgender Benutzer sagt Danke zu Larry Laffer für den nützlichen Beitrag:

    vollmi (09.09.2013)

Ähnliche Themen

  1. UDT in FB durchreichen
    Von thomasgull im Forum Programmierstrategien
    Antworten: 21
    Letzter Beitrag: 23.12.2013, 12:06
  2. VB.Net Change-Ereignis von Editor durchreichen
    Von Larry Laffer im Forum Programmierstrategien
    Antworten: 0
    Letzter Beitrag: 27.11.2012, 09:43
  3. Antworten: 18
    Letzter Beitrag: 05.12.2010, 16:27
  4. Antworten: 9
    Letzter Beitrag: 25.05.2010, 18:31
  5. [?] Codesys Pointer durchreichen
    Von Kurt im Forum Sonstige Steuerungen
    Antworten: 7
    Letzter Beitrag: 10.01.2007, 14:29

Lesezeichen

Berechtigungen

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