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

Seite 1 von 3 123 LetzteLetzte
Ergebnis 1 bis 10 von 22

Thema: UDT in FB durchreichen

  1. #1
    Registriert seit
    16.12.2004
    Ort
    Winterthur, Schweiz
    Beiträge
    157
    Danke
    21
    Erhielt 3 Danke für 2 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo ich habe eine Frage:

    Ich habe einen UDT ( UDT3) der noch einen UDT ( UDT 4) enthält.

    Nun die Frage, ich brauche den ganzen UDT (UDT 3) im FB ( FB 5) und im FC ( FC 6 ) der in dem FB ( FB 5 ) aufgerufen wird nur den UDT im UDT ( UDT 4 ).

    Nun kann ich im FB ( FB 5 ) den UDT ( UDT 4) durchreichen?


    Thomas
    Angehängte Grafiken Angehängte Grafiken
    Geändert von thomasgull (26.02.2010 um 15:48 Uhr)
    Zitieren Zitieren UDT in FB durchreichen  

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

    Standard

    Auf deinem Screenshot kann man leider nicht viel erkennen.
    Jedoch gibt es eine Beschränkung wenn der UDT im IN_OUT Bereich liegt, da in den Fall auf den UDT nur ein Zeiger übergeben wird.

    Wenn du den UDT im IN-Bereich des FB einträgst sollte es mit dem Durchreichen gehen. Verhindert jedoch schreibenden Zugriff auf die Daten. Das Problem lässt sich aber auch noch umschiffen

  3. #3
    thomasgull ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    16.12.2004
    Ort
    Winterthur, Schweiz
    Beiträge
    157
    Danke
    21
    Erhielt 3 Danke für 2 Beiträge

    Standard

    Bild verbessert.

    Er liegt im IN/Out Bereich da ich sowohl lesen wie schreiben sollte.

    Thomas

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

    Standard

    Und in deinem Baustein "Modulaufruf" liegt der UDT auch in IN_OUT-Bereich?

  5. #5
    thomasgull ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    16.12.2004
    Ort
    Winterthur, Schweiz
    Beiträge
    157
    Danke
    21
    Erhielt 3 Danke für 2 Beiträge

    Standard

    ja genau.
    Wird gelesen und geschrieben

    Thomas

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

    Standard

    Also mit einfachen Mitteln ist das so nicht zu lösen, zumindest nicht wenn man vollständig symbolisch programmieren möchte.
    Mit ein bißchen Pointer- und Adressregisterfrickelei bekommt man das sicher hin, so auf die schnelle fällt mir jedoch nichts elegantes ein.

    Abhängig von der Größe der Struktur würde ich evtl. die UDT einmal im IN und dann noch im OUT Bereich anlegen, und dann entsprechend kopieren.

    Oder:
    Die UDT4 im Stat-Bereich des aufrufenden FB anlegen, dort die Daten vor dem Aufruf mit L #xx T #yy hineinkopieren, und dann den FB #Modulaufruf mit diesen Daten beschalten, und nach aufruf wieder zurückkopieren.
    Ich hoffe das war halbwegs verständlich

  7. #7
    thomasgull ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    16.12.2004
    Ort
    Winterthur, Schweiz
    Beiträge
    157
    Danke
    21
    Erhielt 3 Danke für 2 Beiträge

    Standard

    Mommentan denke ich an Variante 2

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

    Standard

    Im Anhang mal ein Screenshot wie ich das meinte. Je nach Größe der Struktur hält sich der Aufwand dann noch in Grenzen.
    Angehängte Grafiken Angehängte Grafiken

  9. #9
    thomasgull ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    16.12.2004
    Ort
    Winterthur, Schweiz
    Beiträge
    157
    Danke
    21
    Erhielt 3 Danke für 2 Beiträge

    Standard

    So müsste auch gehen?
    Angehängte Grafiken Angehängte Grafiken
    Geändert von thomasgull (26.02.2010 um 18:48 Uhr)

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

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von thomasgull Beitrag anzeigen
    So müsste auch gehen?
    Vom Prinzip schon. tUDT liegt im Temp-Bereich? Ansonsten musst du noch den AR2-Offset bei Multiinstanzen beachten.

    Funktioniert natürlich nur solange keiner auf die Idee kommt deine "Sub-UDT" in der übergeordneten UDT an anderer Stelle als am Anfang zu positionieren.
    Und an den Offset der Sub-UDT kommst du ohne Hardcodierung bei einem IN_OUT Parameter nicht heran.

Ähnliche Themen

  1. Antworten: 18
    Letzter Beitrag: 05.12.2010, 16:27
  2. Antworten: 9
    Letzter Beitrag: 25.05.2010, 18:31
  3. [?] 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
  •