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

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

Thema: Array Indirekt ansprechen

  1. #11
    Registriert seit
    15.10.2008
    Beiträge
    75
    Danke
    15
    Erhielt 3 Danke für 3 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von Ralle Beitrag anzeigen
    Einen DB anlegen, in dem DB eine Variable, dieser Variablen als Typ deine UDT, speichern, fertig.
    Ähm ich glaube ich habe da wohl was nicht so ganz verstanden?!?!

    Ich will doch die werte, Strings usw. aus meinem DB einlesen bzw. zurückschreiben.
    Wenn ich den UDT abfrage dann ist dadrinnen doch alles leer bzw. die Standartwerte, oder nicht? ich schreibe meine werte doch in den DB und nicht in den UDT.

    oder habe ich da jetzt einen denkfehler??

  2. #12
    Registriert seit
    06.10.2004
    Ort
    Kopenhagen.
    Beiträge
    4.622
    Danke
    377
    Erhielt 799 Danke für 642 Beiträge

    Standard

    Zitat Zitat von tobl2002 Beitrag anzeigen
    das sieht schon mal gut aus. Wie ich sehe hast du aber 2 UDT´s erstellt. Ich brauche aber einen UDT und diesen rufe ich dann in einem DB auf mit (wie bei dir im 2. UDT)
    Wie kann ich den UDT denn am einfachsten in einen DB ändern?
    Nur ein UDT ist klar möglich.
    Aber es lohnt sich oft mit ein gewisse aufteilung in 'strukturen'.

    Hier ist der SCL code ein bisschen geändert:
    Code:
     TYPE Artikel_UDT 
        STRUCT
            nummer : STRING[10] ;
            hoehe : DINT ;
            laenge : DINT ;
        END_STRUCT
    END_TYPE
     
    TYPE Artikel_Array_UDT 
        STRUCT
            Artikel : ARRAY[1..10] OF Artikel_UDT ;
        END_STRUCT
    END_TYPE
     
    FUNCTION Array_daten_holen_FC : VOID
    VAR_INPUT
        array_in : Artikel_array_UDT ;
        iArrayindex : INT ;
    END_VAR
    VAR_OUTPUT
        out_Artikel_nummer : STRING[10] ;
        out_Artikel_hoehe : DINT ;
        out_Artikel_laenge : DINT ;
    END_VAR
        out_Artikel_nummer :=  array_in.Artikel[iArrayIndex].nummer ;
        out_Artikel_hoehe := array_in.Artikel[iArrayIndex].hoehe ;
        out_Artikel_laenge := array_in.Artikel[iArrayIndex].laenge ;
    END_FUNCTION
    Hier ein DB mit einzelelement 'active' und array 'stored':
    Code:
      STRUCT  
       active : "Artikel_UDT"; 
       stored : "Artikel_Array_UDT"; 
      END_STRUCT ;
    edit: Tipfehler

    Hier ist ein aufruf von den FC.
    Code:
    CALL "Array_daten_holen_FC" (
         array_in                 := "MyDB".stored,
         iArrayindex              := MW    10,
         out_Artikel_nummer       := "MyDB".active.nummer,
         out_Artikel_hoehe        := "MyDB".active.hoehe,
         out_Artikel_laenge       := "MyDB".active.laenge);
    NOP   0;
    Wenn jetzt der 'ur'-UDT Artikel_UDT geändert wird, ändert sich der rest automatisch.
    Geändert von JesperMP (13.03.2009 um 11:32 Uhr)
    Jesper M. Pedersen

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

    tobl2002 (13.03.2009)

  4. #13
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.218
    Danke
    533
    Erhielt 2.696 Danke für 1.948 Beiträge

    Standard

    Die UDT ist praktisch nur ein definierter Datentyp, eine Struckturbeschreibung. Erst, wenn du sie in einen DB einfügst oder in einem FB als Stat-Var deklarierst bekommt sie wirklich "pysikalisch" im Speicher Daten. Wenn an deinem FB eine INOUT als UDT deklariert wird, kannst du außen an die Schnittstelle eine UDT-Variable antragen, die in deinem DB definiert sein muß. Im FB kannst du diese Variable lesen und schreiben und zwar mit der Struktur der UDT. Du kannst natürlich auch an eine IN eine UDT-Variable aus einem DB schreiben zum "nur lesen" und an eine OUT, zum "nur schreiben".
    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. Folgender Benutzer sagt Danke zu Ralle für den nützlichen Beitrag:

    tobl2002 (13.03.2009)

  6. #14
    Registriert seit
    06.10.2004
    Ort
    Kopenhagen.
    Beiträge
    4.622
    Danke
    377
    Erhielt 799 Danke für 642 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von tobl2002 Beitrag anzeigen
    Ich will doch die werte, Strings usw. aus meinem DB einlesen bzw. zurückschreiben.
    So weit haben wir es nur geschaft die daten aus den DB zu lesen.

    Zitat Zitat von tobl2002 Beitrag anzeigen
    Wenn ich den UDT abfrage dann ist dadrinnen doch alles leer bzw. die Standartwerte, oder nicht? ich schreibe meine werte doch in den DB und nicht in den UDT.
    Zuerst gibt es nur die initalwerte. Und die sind null wenn nicht anders spezifiziert ist.
    Jesper M. Pedersen

  7. Folgender Benutzer sagt Danke zu JesperMP für den nützlichen Beitrag:

    tobl2002 (13.03.2009)

Ähnliche Themen

  1. Ausgangsbit indirekt in scl ansprechen
    Von Bensen83 im Forum Simatic
    Antworten: 3
    Letzter Beitrag: 18.07.2011, 13:03
  2. indirekt DBs in SCL ansprechen
    Von Bensen83 im Forum Simatic
    Antworten: 3
    Letzter Beitrag: 01.08.2010, 22:29
  3. Array indirekt beschreiben
    Von Airpower im Forum Simatic
    Antworten: 5
    Letzter Beitrag: 22.06.2009, 08:34
  4. Array indirekt füllen
    Von Woto im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 11.05.2009, 19:40
  5. 2D-Array in Step7 mit Variablen ansprechen
    Von jank-automation im Forum Simatic
    Antworten: 6
    Letzter Beitrag: 29.08.2008, 08:32

Lesezeichen

Berechtigungen

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