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

Ergebnis 1 bis 4 von 4

Thema: SCL - Verschachtelung von UDT

  1. #1
    Registriert seit
    11.02.2009
    Ort
    01968 Brieske
    Beiträge
    105
    Danke
    25
    Erhielt 6 Danke für 6 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Moin an Alle,
    ich habe ein Problem bei Programmieren und verschachteln von UDT.

    Bevor ich mein Problem erkläre möchte ich erst mal erklären, warum ich das mit UDT programmiere und nicht einen FB mit Instanz-DB schreibe: Wenn ich zum Beispiel eine Drehwächterbaustein nehme hätte ich jedes mal einen Instanz-DB und bei 50 Drehwächter gefällt mir das nicht mehr. Deswegen habe ich angefangen mein Gedächtnis (die Instanz-Daten) als UDT über IN_OUT zu übergeben und habe alles ordentlich Strukturiert in einem Datenbaustein.
    Das soll aber bitte nicht Bestandteil meiner Forum-Frage werden.

    Nun zu meinem Problem:
    UDT Timer:
    Code:
    TYPE UDT_TimerSE
        STRUCT
            Zykluszeit_HM:  DINT;
            Puls:  BOOL;
            Puls_HM:  BOOL;
        END_STRUCT
    END_TYPE
    Auszug aus dem FC TimerSE
    Code:
    FUNCTION TimerSE_DG: VOID
    
    VAR_IN_OUT
        UDT_Timer: UDT_TimerSE;
    END_VAR
    UDT 2 (Lagertemperatur)
    Code:
    TYPE UDT_Lagertemperatur
        STRUCT
            Temperatur:  REAL;
            Timer_1:  UDT_TimerSE;
        END_STRUCT
    END_TYPE


    Und hier ist mein Problem: Parameterzuweisung nicht korrekt
    Code:
    FUNCTION Lagertemperatur: VOID
    
    VAR_IN_OUT
        UDT_Lagertemperatur:  UDT_Lagertemperatur;
    END_VAR
    .
    .
    .
    TimerSE_DG(iStart:= Start
      ,iZykluszeit:= SPS_Zykluszeit_intern
      ,iVerzoegerung:= Zeit_1
      ,OUT:= HM_Bool
      ,Restlaufzeit:= HM_DINT
      ,UDT_Timer:= UDT_Lagertemperatur.Timer_1);  //hier springt der Compiler hin
    Was mache ich hier bei dem UDT-Aufruf falsch? Oder geht das vielleicht nicht so wie ich das hier vor habe?

    Vielen Dank schon mal im Voraus!
    MfG Dirk
    >>> Bestandsschutz gibt es nicht - allenfalls ein: "Nichtvorhandensein einer Anpassungspflicht" <<<
    Zitieren Zitieren SCL - Verschachtelung von UDT  

  2. #2
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.788
    Danke
    398
    Erhielt 2.414 Danke für 2.010 Beiträge

    Standard

    Hallo,
    also erstmal weiß ich nicht so recht, ob das hinterger wirklich noch "ordentlich strukturiert" und/oder übersichtlich ist. Von nachvollziehbar mal ganz abgesehen ... aber das ist hier ja nicht unser Thema (eher deins - irgendwann mal).

    Ist denn vor Aufrufruf deines FC "Lagertemperatur" sichergestellt, dass dem UDT_Lagertemperatur in dessen Unterbereich UDT_TimerSE überhaupt sinnvolle Daten übergeben worden sind ?
    Das wird aber nicht dein Problem sein.
    Das Problem aus meiner Sicht ist, dass der FC "TimerSE_DG" in diesem Fall auf Daten zugreifen muss, die Siemens so nicht mehr adressieren kann (es gibt nur Lokaldaten und Vorgänger-Lokaldaten - für den FC wären das aber Vor-Vorgänger-Lokaldaten).
    Du müßtest also vor dem Aufruf des FC "TimerSE_DG" den Auszug aus dem Datenbereich UDT_Lagertemperatur in einen lokalen Bereich des Typs UDT_TimerSE umkopieren und diesen dann dem FC übergeben.
    Dann wird es wohl funktionieren ...

    Gruß
    Larry

  3. #3
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.302
    Danke
    932
    Erhielt 3.321 Danke für 2.683 Beiträge

    Standard

    Zitat Zitat von DiGo1969 Beitrag anzeigen
    warum ich das mit UDT programmiere und nicht einen FB mit Instanz-DB schreibe: Wenn ich zum Beispiel eine Drehwächterbaustein nehme hätte ich jedes mal einen Instanz-DB und bei 50 Drehwächter gefällt mir das nicht mehr.
    Du könntest den FB als Multiinstanz instanziieren, dann brauchst Du im besten Fall nur 1 Instanz-DB.


    Komplexe IN/OUT/IN_OUT-Parameter können nicht direkt an weitere Bausteinaufrufe durchgereicht werden, sondern müssen vorher nach TEMP umkopiert werden und die lokale Kopie kann weitergereicht werden.

    Harald
    Es ist immer wieder überraschend, wie etwas plötzlich funktioniert, sobald man alles richtig macht.

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  4. Folgender Benutzer sagt Danke zu PN/DP für den nützlichen Beitrag:

    DiGo1969 (16.07.2015)

  5. #4
    DiGo1969 ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    11.02.2009
    Ort
    01968 Brieske
    Beiträge
    105
    Danke
    25
    Erhielt 6 Danke für 6 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,

    Zitat Zitat von PN/DP Beitrag anzeigen
    Du könntest den FB als Multiinstanz instanziieren, dann brauchst Du im besten Fall nur 1 Instanz-DB.
    Multiinstanz ist auch nicht so toll, denn dann habe ich keine direkte Zuordnung mehr und das passt auch nicht in die komplette Struktur meiner Programme




    Zitat Zitat von PN/DP Beitrag anzeigen
    Komplexe IN/OUT/IN_OUT-Parameter können nicht direkt an weitere Bausteinaufrufe durchgereicht werden, sondern müssen vorher nach TEMP umkopiert werden und die lokale Kopie kann weitergereicht werden.
    Danke!! Das habe ich mir leider schon gedacht. Naja dann muss ich mal ein bissel rumprobieren, wie ich das jetzt mache.


    Vielen Dank!
    Dirk
    >>> Bestandsschutz gibt es nicht - allenfalls ein: "Nichtvorhandensein einer Anpassungspflicht" <<<

Ähnliche Themen

  1. STRUCT Verschachtelung
    Von TimeOUT im Forum CODESYS und IEC61131
    Antworten: 5
    Letzter Beitrag: 23.06.2015, 14:06
  2. Antworten: 4
    Letzter Beitrag: 20.04.2015, 15:30
  3. UDT in SCL erstellen
    Von Felse im Forum Simatic
    Antworten: 33
    Letzter Beitrag: 11.09.2009, 09:39
  4. UDT in AWL und SCL
    Von Thomas_v2.1 im Forum Simatic
    Antworten: 1
    Letzter Beitrag: 15.06.2008, 22:12
  5. Größe UDT in SCL
    Von Larry Laffer im Forum Simatic
    Antworten: 14
    Letzter Beitrag: 17.12.2007, 20:25

Stichworte

Lesezeichen

Berechtigungen

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