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

Ergebnis 1 bis 6 von 6

Thema: UDT an FB übergeben

  1. #1
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.269
    Danke
    537
    Erhielt 2.708 Danke für 1.957 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Ich haben einen fremden FB, welcher als IN_OUT-Variable eine UDT verlangt. Das funktioniert problemlos.
    Jetzt will ich diesen FB in einen eigenen FC verpacken, welcher also u.a. diese UDT-Var weitergibt. Das geht lt. Siemens nicht:

    Code:
    Beschreibung:
    
    Obwohl kein Typkonflikt zwischen Aktualparameter (rechte Seite) und Formalparameter (linke Seite) vorliegt, kann diese Parameterzuweisung nicht zugelassen werden. Folgende Gründe können vorliegen:
    
    ·	Die Zuweisung ist aus technischen Gründen nicht möglich, z.B. kann keine STRING- oder DATE_AND_TIME-Konstante als Aktualparameter verwendet werden (zu viele Einzelbefehle).
    
    ·	Das Maschinenmodell STEP 7 erlaubt die Zuweisung nicht, z.B. kann ein STRUCT/ARRAY/ANY/UDT/STRING - INPUT/OUTPUT/IN_OUT - Parameter eines FCs nicht an einen darin aufgerufenen Baustein weitergereicht werden.
    
    ·	Ihr Formalparameter trägt ein S7_server Attribut und läßt daher die entsprechende Versorgung nicht zu, da z.B. der Aktual Parameter vom Server selbst vergeben werden muß oder lokal versorgt werden soll.
    
    Behebung:
    
    Bitte passen Sie Ihren Bausteinaufruf entsprechend diesen Regeln an.
    Kennt jemand eine elegante Möglichkeit dies doch zu bewerkstelligen, ohne den ganzen UDT-Bereich mit BLK_MOVE umzukopieren?
    Gruß
    Ralle

    ... there\'re 10 kinds of people ... those who understand binaries and those who don\'t …
    and the third kinds of people … those who love TIA-Portal
    Zitieren Zitieren UDT an FB übergeben  

  2. #2
    Registriert seit
    06.10.2003
    Beiträge
    3.451
    Danke
    454
    Erhielt 510 Danke für 412 Beiträge

    Standard

    Hallo Ralle,

    beim ANY-Pointer ging so etwas, indem man ihn in die Lokaldaten übertrug, und ihn von dort an den aufzurufenden Baustein übergab. Mir ist jedoch bis heute der Unterschied zwischen den Parametertypen "UDT" und "ANY" noch nicht klar.
    Beim SPS-conceptler gab es mal einen "ANY-MOVER"-Baustein für so etwas.


    Gruß, Onkel
    Es gibt viel mehr Leute, die freiwillig aufgeben, als solche, die echt scheitern.
    Henry Ford

  3. #3
    Registriert seit
    19.08.2004
    Beiträge
    46
    Danke
    5
    Erhielt 8 Danke für 5 Beiträge

    Standard

    Hi,

    Definiere in deinem FC eine TMP_Variable (Typ UDTxx).
    Kopiere den Inhalt der "echten" Variable (Typ UDTxx) in die temporäre Variable (weiß nicht ob es so einfach mit BLOCK MOVE geht. sonst mit Hilfe der Adressregister)
    Rufe den FB innerhalb deiner FC mit der TMP_Variablen auf.

    Also ohne umkopieren (mit oder ohne Block Move) wirds wohl nicht gehen

  4. #4
    Avatar von Ralle
    Ralle ist offline Super-Moderator
    Themenstarter
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.269
    Danke
    537
    Erhielt 2.708 Danke für 1.957 Beiträge

    Standard

    @SinusQuadrat

    Danke, das habe ich auch schon vermutet. Ich will jetzt mal versuchen, die UDT gar nicht mehr in einem extra DB abzulegen, sondern im aufrufenden FB als statische Variable, dann erscheint sie im Instanz-DB und kann an den untergeordneten FB übergeben werden (Jedenfalls gibt es keine Fehlermeldung beim Programmieren). Ob es in der Praxis funktioniert muß ich dann ausprobieren.
    Gruß
    Ralle

    ... there\'re 10 kinds of people ... those who understand binaries and those who don\'t …
    and the third kinds of people … those who love TIA-Portal

  5. #5
    Registriert seit
    07.05.2004
    Ort
    Campbelltown
    Beiträge
    2.437
    Danke
    131
    Erhielt 276 Danke für 86 Beiträge

    Standard

    Ja das geht, ist ja das gleiche wie ein Image im Temp abzulegen. Das Problem bei dir ist halt der fest vorgegebene FB. Wenn du dir selber ein schreibst, kannst du dir die Adresse als Eingang übernehmen, aber so,
    Gegen Schwachsinn, Schwachköpfe und armselige Trittbrettfahrer kann man nicht argumentieren.

    Gott sieht alles, auch Signaturen in Geheimschrift,,... aber er petzt nicht.

  6. #6
    Avatar von Ralle
    Ralle ist offline Super-Moderator
    Themenstarter
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.269
    Danke
    537
    Erhielt 2.708 Danke für 1.957 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Ja, stimmt, das war wahrscheinlich bequem, da man die Bezeichnungen in der übergebenen UDT innerhalb des FB prima nutzen kann. Nur leider nicht nochmal eine Ebene tiefer weiterreichen.
    Gruß
    Ralle

    ... there\'re 10 kinds of people ... those who understand binaries and those who don\'t …
    and the third kinds of people … those who love TIA-Portal

Ähnliche Themen

  1. DB in SCL übergeben
    Von Felse im Forum Simatic
    Antworten: 20
    Letzter Beitrag: 11.09.2012, 19:50
  2. Any Übergeben an FB
    Von xvitali im Forum Simatic
    Antworten: 8
    Letzter Beitrag: 24.03.2011, 10:48
  3. DB Nr. an FC übergeben
    Von Beren im Forum Simatic
    Antworten: 10
    Letzter Beitrag: 06.05.2010, 12:23
  4. MW in INT Variable übergeben
    Von Felse im Forum Simatic
    Antworten: 1
    Letzter Beitrag: 10.03.2009, 10:13
  5. Textdatei an SPS übergeben
    Von stau im Forum HMI
    Antworten: 11
    Letzter Beitrag: 29.07.2008, 14:42

Lesezeichen

Berechtigungen

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