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

Seite 2 von 4 ErsteErste 1234 LetzteLetzte
Ergebnis 11 bis 20 von 34

Thema: UDT in SCL erstellen

  1. #11
    Avatar von Felse
    Felse ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    02.02.2009
    Ort
    Thüringen
    Beiträge
    218
    Danke
    91
    Erhielt 11 Danke für 7 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Ich hoff mal das hab ich soweit verstanden, aber wie nutz ich das in einem FB? Hatte gehofft dass würde so gehen:
    Code:
    FUNCTION_BLOCK FB6 
    VAR_INPUT
        
     Zeile1: ARRAY [1..5] OF UDT1;
        
    END_VAR
        
         
    TYPE 
               UDT1 STRUCT 
                    Wert1 : INT := 5;
                    Wert2 : INT := 10;
                    Wert3 : INT := 20;
                    
               END_STRUCT; 
    END_TYPE
     
    BEGIN
    x := Zeile1[1].UDT1_Wert1 ;
    
    END_FUNCTION_BLOCK
    Aber der UDT wird ja dann als extra Baustein behandelt, kann da mal jemand ein Bsp posten wie man das richtig macht?

    PS: noch eine Frage zu meinen Arrays: So wie ich das jetzt gemacht habe, habe ich 5 Arrays und jeder von denen besteht aus dem gleichen UDT also auch wie hier aus meinen 3 INT Variablen, oder?
    " Immer schön locker durch die Hose atmen"

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

    Standard

    Warum nutzt du nicht die Einfügevorlagen von SCL (Einfügen/Bausteinvorlage/FB), dann stimmt zumindest mal dein Bausteinrumpf. BEGIN gibts nicht, das ist Pascal und Delphi. Type nicht mit in den Baustein, sondern außerhalb, am besten davor, sonst meckert SCL beim ersten Durchlauf, weil es die UDT noch nicht im Bausteinordner findet. Man kann in einer SCL-Quelle mehrere Bausteine bearbeiten, die Reihenfolge muß so sein, daß ein Baustein/Type, der in einem anderen Baustein benutzt wird zuerst übersetzt werden sollte, also weiter oben steht. Außerdem mit den Variablenbezeichnungen aufpassen. So wie du sie in Type oder im DB benennst, solltest du sie auch im Programm nutzen, sonst findet der Compiler deine Neukreationen nicht.

    Code:
    TYPE 
               UDT111 STRUCT 
                    Wert1 : INT := 5;
                    Wert2 : INT := 10;
                    Wert3 : INT := 20;
                    
               END_STRUCT; 
    END_TYPE
    
    FUNCTION_BLOCK FB6 
    
    VAR_TEMP
        // temporäre Variablen
    
    END_VAR
    
    VAR_INPUT
     Zeile1: ARRAY [1..5] OF UDT111;
    END_VAR
        
    VAR_IN_OUT    
      x: Int;     
    END_VAR
         
    x := Zeile1[1].Wert1;
    
    END_FUNCTION_BLOCK
    Dann mußt du noch einen DB erzeugen ,den FB aufrufen und mit parametern versorgen. Siehe dazu das Bild im Angang.
    Angehängte Grafiken Angehängte Grafiken
    Geändert von Ralle (24.03.2009 um 07:48 Uhr)
    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

  3. Folgender Benutzer sagt Danke zu Ralle für den nützlichen Beitrag:

    Felse (24.03.2009)

  4. #13
    Avatar von Felse
    Felse ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    02.02.2009
    Ort
    Thüringen
    Beiträge
    218
    Danke
    91
    Erhielt 11 Danke für 7 Beiträge

    Standard

    Das geht ja schonmal, aber ich glaub so komm ich nicht weiter... Ich fang mal ganz vorne an. Ich hab ein Bild in wincc flex das besteht aus 10 Zeilen (siehe Bild), nun hab ich das Problem, das meine Eingaben nach dem erneuten Laden in die SPS quasi gelöscht sind, daher wollte ich diese Eingaben in einen DB schreiben speichern und beim nächsten mal die Daten aus diesem DB wieder laden, aber wie geht das? Ich wollte eine Zeile als UDT definieren und die verschiedenen Zeilen dann (für spätere Bearbeitung) über Array abfragen, hab aber das Problem, das ich das noch nie gemacht habe und gar nicht weiß ob das die beste Lösung dafür ist. Was wäre für solche Anwendungen geeignet?
    Angehängte Grafiken Angehängte Grafiken
    " Immer schön locker durch die Hose atmen"

  5. #14
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.794
    Danke
    398
    Erhielt 2.417 Danke für 2.013 Beiträge

    Standard

    ... wie du an dem Beitrag von Ralle schön sehen kannst, erfolgt die Deklaration des UDT VOR dem Code des Bausteins. Das muß auch so sein - für SCL muß der UDT erst da sein, damit du ihn benutzen kannst. Vielleicht deklarierst du den sogar außerhalb des Scriptes - das funktioniert auch ...

  6. #15
    Avatar von Felse
    Felse ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    02.02.2009
    Ort
    Thüringen
    Beiträge
    218
    Danke
    91
    Erhielt 11 Danke für 7 Beiträge

    Standard

    Zitat Zitat von Larry Laffer Beitrag anzeigen
    ... wie du an dem Beitrag von Ralle schön sehen kannst, erfolgt die Deklaration des UDT VOR dem Code des Bausteins. Das muß auch so sein - für SCL muß der UDT erst da sein, damit du ihn benutzen kannst. Vielleicht deklarierst du den sogar außerhalb des Scriptes - das funktioniert auch ...
    Ja hab ich verstanden und auch bei mir so gemacht, aber was hat das jetzt damit zu tun?
    " Immer schön locker durch die Hose atmen"

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

    Standard

    Ich habs nicht ganz verstanden, aber mal Folgendes:

    Wenn du DB Offline in der Struktur änderst und neu lädst, sind die Daten immer weg, es sei denn, du hast die DB vorher aus dem AG gesichert, daraus eine Quelle erzeugt und deine Strukturänderungen an der Quelle vorgenommen. Diese dann zuückübersetzen, ins AG fertig.

    Hast du die Elemente in deinem WinCCFlex-Bild als E/A-Feld auch für Ein- und Ausgebe definiert? Schau dir das mal an, wenn dur nur Eingabe hast, dann ist das Verhalten auch nachvollziehbar.

    Ansonsten nutze ich den SFC20 um mit in der SPS eine Art Datenbank aufzubauen und dort Rezeptdaten zu speichern. WinCCFlex hat zwar eine Rezepturverwaltung, aber ebend nicht alle Displays und nicht immer wied WinCCFlex eingesetzt. In der SPS funzt das praktisch immer.
    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

  8. #17
    Registriert seit
    06.10.2004
    Ort
    Kopenhagen.
    Beiträge
    4.639
    Danke
    377
    Erhielt 803 Danke für 644 Beiträge

    Standard

    Zitat Zitat von Felse Beitrag anzeigen
    Das geht ja schonmal, aber ich glaub so komm ich nicht weiter... Ich fang mal ganz vorne an. Ich hab ein Bild in wincc flex das besteht aus 10 Zeilen (siehe Bild), nun hab ich das Problem, das meine Eingaben nach dem erneuten Laden in die SPS quasi gelöscht sind, daher wollte ich diese Eingaben in einen DB schreiben speichern und beim nächsten mal die Daten aus diesem DB wieder laden, aber wie geht das? Ich wollte eine Zeile als UDT definieren und die verschiedenen Zeilen dann (für spätere Bearbeitung) über Array abfragen, hab aber das Problem, das ich das noch nie gemacht habe und gar nicht weiß ob das die beste Lösung dafür ist. Was wäre für solche Anwendungen geeignet?
    Es ist ein Mängel bei STEP7, und zwar ein sehr grosse Mängel. Es ist praktisch nicht möglich die Aktualwerten zu sichern in STEP7 projekt (theoretisch geht es, in der praxis nicht).
    Die einfachste 'Lösung' ist zuerst die Datenstrukturen zu definieren, und danach nicht ändern ! Danach darf man nur die geänderte Code-Bausteine in SPS laden.
    Das mit WinCC Flex als ein "Datensicherungstool" zu verwenden habe ich auch gebastelt. Aber ich habe ein nur teilweise zufriedenstellender Lösung.
    Jesper M. Pedersen

  9. #18
    Avatar von Felse
    Felse ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    02.02.2009
    Ort
    Thüringen
    Beiträge
    218
    Danke
    91
    Erhielt 11 Danke für 7 Beiträge

    Standard

    Ja das sind E/A Felder, wie gesagt hab eigentlich noch nicht soviel mit SPS gearbeitet, hab einfach einen DB genommen, die Variablen für das Bild da rein geschrieben und fertig. Wenn ich dann was neues geschrieben habe, und neu lade sind die Werte weg, ist doch auch logisch denk ich, weil die Variablen doch dabei auf Ihren Anfangswert gesetzt werden, oder nicht? Die Anzeige z. B. bei den Stringfeldern ist ja noch zu sehen aber: die müssen trotzdem nochmal neu bestätigt werden (Bildschirmtastatur) damit sie weiterverarbeitet werden können.
    " Immer schön locker durch die Hose atmen"

  10. #19
    Avatar von Felse
    Felse ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    02.02.2009
    Ort
    Thüringen
    Beiträge
    218
    Danke
    91
    Erhielt 11 Danke für 7 Beiträge

    Standard

    Zitat Zitat von JesperMP Beitrag anzeigen
    Es ist ein Mängel bei STEP7, und zwar ein sehr grosse Mängel. Es ist praktisch nicht möglich die Aktualwerten zu sichern in STEP7 projekt (theoretisch geht es, in der praxis nicht).
    Die einfachste 'Lösung' ist zuerst die Datenstrukturen zu definieren, und danach nicht ändern ! Danach darf man nur die geänderte Code-Bausteine in SPS laden.
    Die Strukturen müssen beibehalten werden, und ich dachte man könne diese dann als Eingangs bzw. Ausgangsparameter umherschieben.
    " Immer schön locker durch die Hose atmen"

  11. #20
    Registriert seit
    06.10.2004
    Ort
    Kopenhagen.
    Beiträge
    4.639
    Danke
    377
    Erhielt 803 Danke für 644 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von Felse
    nun hab ich das Problem, das meine Eingaben nach dem erneuten Laden in die SPS quasi gelöscht sind
    Habe ich es richtig verstanden das ganze handelt darum das beim Laden von das Program auf den SPS werden die Aktualwerten initialisiert ? Oder verstehe ich das falsch ?
    Jesper M. Pedersen

Ähnliche Themen

  1. LDB erstellen
    Von Servernexus im Forum Simatic
    Antworten: 3
    Letzter Beitrag: 07.02.2012, 19:19
  2. Active X erstellen
    Von Lupo im Forum Programmierstrategien
    Antworten: 14
    Letzter Beitrag: 03.01.2009, 11:13
  3. Datei auf MMC erstellen?
    Von baalrok im Forum HMI
    Antworten: 3
    Letzter Beitrag: 26.08.2008, 22:48
  4. FB/FC erstellen
    Von Black Scorpion im Forum Simatic
    Antworten: 5
    Letzter Beitrag: 02.05.2008, 18:24
  5. FB erstellen?
    Von ottopaul im Forum Simatic
    Antworten: 39
    Letzter Beitrag: 29.03.2008, 13:25

Lesezeichen

Berechtigungen

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