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

Ergebnis 1 bis 9 von 9

Thema: UDT an FB "übergeben"

  1. #1
    Registriert seit
    24.02.2009
    Ort
    Garrel
    Beiträge
    36
    Danke
    2
    Erhielt 3 Danke für 3 Beiträge

    Frage


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo zusammen,

    ich würde gerne einen DB (der aus einem UDT erstellt worden ist) an einem FB übergeben.
    Der DB ist folgendermaßen erstellt worden: Neues Objekt einfügen / Datenbaustein / DB vom Typ UDT1.
    Der FB hat einen In/Out Formaloperanden vom Typ UDT1.

    Ist es möglichen, diesen DB an den Formaloperanden zu übergeben?
    Bei mir funktioniert es leider nicht. Wie muß der Aufruf in AWL aussehen?

    Vielen Dank für eure Hilfe.

    Michael
    Zitieren Zitieren UDT an FB "übergeben"  

  2. #2
    Registriert seit
    28.06.2010
    Beiträge
    7
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Willst Du die DB-Nummer, oder einen Zeiger auf den gesamten UDT als Variable übergeben, oder wie meinst Du das?

    Zum Erstellen:
    Also ich erstelle eigentlich immer einen Global-DB, und füge dann da die UDTs ein.
    Geändert von mausi17 (28.10.2013 um 17:36 Uhr)

  3. #3
    Registriert seit
    24.02.2009
    Ort
    Garrel
    Beiträge
    36
    Danke
    2
    Erhielt 3 Danke für 3 Beiträge

    Standard

    Ich möchte einen Zeiger auf den gesamten UDT übergeben.
    Wenn ich einen Global-DB erstellen und darin dann UDT1 Aufrufe funktioniert es bei mir auch.
    Geht es denn nicht " direkt"?

    Folgender Hintergrund:
    DB-Name = System
    Variablenname im DB für den Aufruf vom UDT1 = System
    ==> Aufruf der Variablen aus dem DB =" System".System.Variablenname

    Ich möchte wenn geht nicht diesen Doppelaufruf vom System, also "System".Variablenname.
    Deshalb habe ich den DB über: Objekt einfügen / Datenbaustein / DB vom Typ UDT1 erstellt.

    Gibt es auch so eine Möglichkeit den Zeiger zu übergeben?

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

    Standard

    Ich staune grade auch, denn ich hab das die Tage noch benutzt, aber in SCL. Und dort funktioniert das.
    Aber in AWL oder FUP scheint das wirklich nicht zu funktionieren.

  5. #5
    Registriert seit
    28.06.2010
    Beiträge
    7
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Ich glaube, ich verstehe Dein Problem nicht ganz, ein UDT kann doch nur Teil eines DBs sein, oder weiß ich da wieder was nicht?
    Ist doch im Prinzip das gleiche wie Struct, oder?


    trotzdem mal, wie ich DB-Bereiche übergebe, auch wenn es wahrscheinlich nicht Dein Problem ist:
    Also ich (alter AWLer) mache das (UDT hin oder her) eigentlich immer so:
    (Beispiel für'n FC)
    eine in_Var (oder ebenio_Var) vom Typ ANY anlegen:

    in_ANY_copy_from heißt die hier. Dann übergebe ich die Bestandteile an temporäre Variablen

    Code:
      L     P##in_ANY_copy_from //im FB: LAR1 P##in_ANY_copy_from 
          LAR1  
          L     W [AR1,P#4.0]
          T     #t_DB_Nr_copy_from
    
          L     D [AR1,P#6.0]
          T     #t_Start_Adress_copy_from
    
          L     W [AR1,P#2.0]
          T     #t_Anzahl_Kopiervorgaenge
    Man kann aus dem Byte 6 auch noch den Typ (Lokaldaten/Merker/DB) auslesen und im Byte 1 ob sich's um Wörter/Bits/DWörter oder was auch immer handelt.

    und dann kann ich auf den DB-Bereich zugreifen, natürlich nicht symbolisch, sondern:

    Code:
      AUF   DB [#t_DB_Nr_copy_from]
       L     DBB [AR1,P#0.0]
    der Aufruf sieht dann so aus:

    Code:
          CALL  "Copy_byte_All_optimiert"
           in_ANY_copy_from:="DB_Einstellungen_Default".Zufuehrband //bei Dir dann wohl: "Sytem".System
           in_ANY_copy_to  :="DB_Einstellungen".Zufuehrband
    Wie schon befürchtet, das ist wahrscheinlich nicht was Du willst?

    Dann sorry

  6. #6
    Registriert seit
    24.02.2009
    Ort
    Garrel
    Beiträge
    36
    Danke
    2
    Erhielt 3 Danke für 3 Beiträge

    Standard

    Hallo,

    @mausi17 Danke! Wie du schon vermutet hast, löst das nicht mein Problem.

    @Thomas_v2.1 In SCL funktioniert es bei mir auch.

    Hat denn jemand einen Workaround wie der Aufruf in AWL bzw. FUP funktionieren könnte?

    Michael

  7. #7
    Registriert seit
    26.04.2010
    Beiträge
    292
    Danke
    31
    Erhielt 51 Danke für 50 Beiträge

    Standard

    Hi!

    Also das muss definitiv gehen.

    Du legst in der Schnittstelle des fb eine variable an mit datentyp "udt1" (also dein udt).

    beim Aufruf des fb beginnst du dann an dieser variable zu tippen "db". Dann muss er ja deinen db schon auflisten. Hier "klickst du dich durch" bis zur udt-struktur und wählst diese aus.

    Dann muss er die Struktur an den fb übernehmen.

    Der operandenvorrang sollte allerdings auf "symbolisch" sein, sodass bei Änderungen die Adresse dem Symbol nachgezogen wird.

    Hab ich doch auch schon x-mal So gemacht.


    Gruß,

    Ottmar

  8. #8
    Registriert seit
    24.02.2009
    Ort
    Garrel
    Beiträge
    36
    Danke
    2
    Erhielt 3 Danke für 3 Beiträge

    Standard

    Hallo Ottmar,

    bei mir funktioniert das definitiv bei AWL bzw. FUP nicht!
    Beachte: Der DB ist folgendermaßen erstellt worden: Neues Objekt einfügen / Datenbaustein / DB vom Typ UDT1

    Danke für deine Hilfe!

    Gruß,

    Michael

  9. #9
    Registriert seit
    26.04.2010
    Beiträge
    292
    Danke
    31
    Erhielt 51 Danke für 50 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hi!

    Achso, jetzt kligelt es auch bei mir.

    Bei meinen Einsätzen habe ich den udt wie beschrieben als variable mit datentyp udt deklariert. Wenn man einen db vom udt ableitet geht es nicht. Stimmt.

    Gruß,

    Ottmar

Ähnliche Themen

  1. Antworten: 8
    Letzter Beitrag: 07.05.2015, 08:25
  2. Variable als "Objekt" übergeben
    Von SY50 im Forum CODESYS und IEC61131
    Antworten: 1
    Letzter Beitrag: 30.04.2013, 21:40
  3. Antworten: 0
    Letzter Beitrag: 05.09.2012, 12:08
  4. Antworten: 6
    Letzter Beitrag: 16.03.2012, 18:20
  5. "Index Pulse", "Home Switch" und "Position Limit Switch"
    Von senmeis im Forum Antriebstechnik
    Antworten: 3
    Letzter Beitrag: 07.03.2011, 11:21

Lesezeichen

Berechtigungen

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