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

Seite 2 von 2 ErsteErste 12
Ergebnis 11 bis 20 von 20

Thema: Übergabe von Datenbereichen in einen Funktionsblocl

  1. #11
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.712
    Danke
    398
    Erhielt 2.397 Danke für 1.997 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Jetzt verstehe ich dich ...
    Das ist aber so eine Sache. Deine unterschiedlichen Connection-Parameter sind ja nicht alle vom Typ UDT65. Der nächste UDT des Wizzard würde jetzt ja ggf. UDT66 heißen - ist zwar gleich aufgebaut, seine Inhalte sind aber anders.
    Vielleicht solltest du dir eher einen eigenen UDT bauen, der den Aufbau (aber nicht die Inhalte) beschreibt und den übergeben und die Inhalte entsprechend in den Variablen des Global-DB (in dem du ggf. 5 mal myUDT als Connection_Par1 bis Connection_Par5 deklariert hast) fest zuweisen (entsprechend dem, was der Wizzard erstellt hat).

    Konnte ich mich verständlich machen - ich bin da gerade nicht so sicher ...

  2. #12
    Registriert seit
    24.10.2012
    Beiträge
    61
    Danke
    3
    Erhielt 1 Danke für 1 Beitrag

    Standard

    ähm also einen UDT erstellen der genauso aufgebaut ist wie der von OC Wizard aber ohne Werte. Den dann als festen UDT einbauen in den Funktionsblock. Dann verschiedene UDTs (durch OC Wizard erstellt) in einem Datenbaustein legen und diese dann in den FUnktionsblock jeweils überführen??

  3. #13
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.712
    Danke
    398
    Erhielt 2.397 Danke für 1.997 Beiträge

    Standard

    Nicht so ganz ... aber die Richtungs stimmt schon.
    Du kannst natürlich nicht einem Baustein, der auf der Schnittstelle einen UDT70 erwartet einen UDT65 übergeben - auch dann nicht, wenn er genau identisch aufgebaut ist.
    Aber was ändert sich denn in deinen unterschiedlichen UDT's ? Z.B. die ID, oder die Rem_StAddr ... Diese speicherst du entsprechend ihrer Abweichung in den globalen DB und weißt sie passend zu. Du kannst dann halt nur nicht mehr direkt mit dem von Wizzard erstellten UDT arbeiten sondern "nur noch" mit den jeweiligen Inhalten. Deshalb das Beispiel. Der oben genannte UDT70 entspricht im Aufbau dem UDT65. In deinem Global-DB legst du den so oft an, wie du ihn brauchst und schreibst für jede neue Connection die jweiligen Werte in die Deklaration im DB und läßt den vom Wizzard erstellten UDT sein, wie er will ...

  4. #14
    Registriert seit
    24.10.2012
    Beiträge
    61
    Danke
    3
    Erhielt 1 Danke für 1 Beitrag

    Standard

    hmm wäre es vielleicht auch möglich mit indirekter Adressierung den UDT in der Deklaration zu varrieren? So dass man nur die Nummer des UDTs als Eingang eingibt und diese Nummer dann als UDT nummer setzt? Quasi in der Deklaration UDTx und dann das x aus dem Input holen? Oder ist das jetzt völlig dämlich? xD

  5. #15
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.712
    Danke
    398
    Erhielt 2.397 Danke für 1.997 Beiträge

    Standard

    Nein ... nicht dämlich ... nur ist ein UDT ja kein Speicherbereich sondern nur eine Vorschrift wie ein Speicherbereich zu verwenden ist ...
    Du mußt den UDT erst in (z.B.) einen DB packen um daraus einen Speicherbereich zu erhalten ... (wie schon geschrieben)

  6. #16
    Registriert seit
    24.10.2012
    Beiträge
    61
    Danke
    3
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Ich meinte das die UDT im Instanzdatenbaustein liegt jedoch nicht als UDT65 oder UDT 70 oder was auch immer sondern vllt UDT [AR1.p#0.0] oder so ähnlich oder UDT [MW 10] und diese indirekte Adressierung also den Wert dann als Eingang des Funktionsblocks

  7. #17
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.712
    Danke
    398
    Erhielt 2.397 Danke für 1.997 Beiträge

    Standard

    Ein indirektes Adressieren eines UDT's geht nicht. Das eines verwendeten Speicherbereichs (wo auch immer der sich gerade befindet) natürlich schon ... aber immer nach den schon genannten Regeln ...

  8. #18
    Registriert seit
    24.10.2012
    Beiträge
    61
    Danke
    3
    Erhielt 1 Danke für 1 Beitrag

    Standard

    dann wäre es gut zu wissen wie es zum Beispiel der FB 65 macht, das wäre ja genau das wa sich brauche

  9. #19
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.712
    Danke
    398
    Erhielt 2.397 Danke für 1.997 Beiträge

    Standard

    Dem FB65 (z.B.) übergibst du (im Prinzip als ANY-Pointer) den Speicherbereich in dem der UDT65 als Variable deklariert ist ...

  10. #20
    Registriert seit
    24.10.2012
    Beiträge
    61
    Danke
    3
    Erhielt 1 Danke für 1 Beitrag

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    ich habe es jetzt so gemacht:

    ich übergebe meinem Funktionsbaustein einen ANY Pointer, der auf die UDT zeigt

    in meinem Funktionsbaustein bau ich aus dem Pointer (der auf das erste Bit des übergebenen ANY Pointers von der UDT zeigt) einen ANY zeiger und übergebe den dann dem FB 65

    klappt eigentlich ganz gut

Ähnliche Themen

  1. Antworten: 9
    Letzter Beitrag: 27.09.2011, 13:35
  2. WinCC Übergabe von Variablen
    Von Shino im Forum HMI
    Antworten: 2
    Letzter Beitrag: 18.02.2009, 10:13
  3. Antworten: 17
    Letzter Beitrag: 14.08.2008, 14:45
  4. Antworten: 3
    Letzter Beitrag: 07.03.2008, 11:09
  5. Übergabe von Parametern
    Von Thomas86 im Forum Simatic
    Antworten: 13
    Letzter Beitrag: 17.04.2007, 08:57

Lesezeichen

Berechtigungen

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