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

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 19

Thema: Datentyp ARRAY und STRUCT

  1. #1
    Registriert seit
    26.09.2010
    Beiträge
    7
    Danke
    4
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo zusammen!


    Ich mache zur Zeit einen Fernlehrgang Step 7.

    Zur Zeit habe ich ein Kapitel das sich mit Bausteinparametern beschäftigt.

    Ich komme aber nicht mit den Begriffen ARRAY und STRUCT klar oder besser gesagt wie man sie programmiert oder ein praktisches Beispiel wie sie verwendet werden denn das ist leider nicht gut erklärt und nicht mit einem Programmierbeispiel veranschaulicht.

    Im Internet finde ich leider auch nix passendes...

    Ich würde mich freuen wenn einer von Euch mir mehr darüber bei bringen kann.

    Ich bedanke mich schon mal im vorraus!!!

    LG Pierre
    Zitieren Zitieren Datentyp ARRAY und STRUCT  

  2. #2
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.172
    Danke
    922
    Erhielt 3.287 Danke für 2.656 Beiträge

    Standard

    Kurz gesagt:

    Ein ARRAY (Feld) ist eine Zusammenfassung von gleichartigen Daten.
    Alle Elemente eines Arrays sind vom gleichen Datentyp.
    -> Ein Array verknüpft eine Gruppe eines Datentyps zu einer Einheit.
    Auf die Elemente eines Arrays wird mit einem Index in eckigen Klammern zugegriffen: Array_Instanzname[3]
    http://de.wikipedia.org/wiki/Feld_(Datentyp)

    Ein STRUCT (Verbund) ist eine Zusammenfassung von verschiedenartigen Daten.
    Die Elemente eines Struct können von verschiedenen Datentypen sein.
    -> Ein Struct verknüpft verschiedene Datentypen zu einer Einheit.
    Auf die Elemente eines Struct wird über den Name der Teilvariable zugegriffen: Struct_Instanzname.Membername
    http://de.wikipedia.org/wiki/Verbund_(Datentyp)

    Arrays und Structs können geschachtelt werden: sie können weitere Arrays und Structs enthalten, auch gemischt.

    Falls Du kein Step7 zur Verfügung hast, hier das Step7-Handbuch mit der Beschreibung der Step7-Datentypen:
    Programmieren mit STEP 7 V5.4 (siehe Anhang A.3)
    Programmieren mit STEP 7 V5.5 (siehe Anhang 27.3)
    siehe auch das Kapitel 13.7.1 Beispiele für Variablendeklarationen in AWL-Quellen

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

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet
    Zitieren Zitieren ARRAY und STRUCT  

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

    friendo (06.10.2016)

  4. #3
    Quoellfrisch ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    26.09.2010
    Beiträge
    7
    Danke
    4
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hallo Harald!

    Vielen Dank für Deine schnelle Hilfe!!!

    Ich habe mir alle Beiträge angesehen aber immer noch nicht den richtigen Durchblick...

    Mir fehlt irgendwie die praktische Seite dafür also ein Beispiel wo man diese Datentypen anwendet und wie sie im Programm integriert werden.

    LG Pierre
    Zitieren Zitieren ARRAY und STRUCT  

  5. #4
    Registriert seit
    26.01.2010
    Beiträge
    181
    Danke
    5
    Erhielt 30 Danke für 25 Beiträge

    Standard

    Damit legst du dir z.B. Speicherbereiche in einem DB an.

    Angenommen du hast mehrere Motoren. Alle haben die gleichen Daten wie Vsoll (INT), Vist (INT) und Übertemperatur (BOOL). Dann kannst du das natürlich alles einzeln in den DB tippen der das verwalten soll.
    Dauert aber und ist schlecht erweiterbar weil sich dann die Adressierung verschiebt.
    Also baust du dir erst mal ein STRUCT aus diesen drei Variablen und könntest diese schon mal kopieren.

    Jetzt willst du aber noch mehr Zeit und Arbeit sparen (weil wir das Erste nicht haben und auf das Zweite keinen Bock haben)

    Also legst du ein ARRAY of STRUCT an. Und zwar mit der eben erstellten Struktur. Dann steht im DB: ARRAY[0..4] OF STRUCT.

    Nun hast du also 5 Felder angelegt mit den Namen Motor[0] bis Motor[4], die alle die Variablen Vsoll, Vist und Übertemperatur enthalten.
    Vorteil ist die Übersichtlichkeit und vor allem das leichte Erweitern.

    Kommt ein Motor hinzu, machst du aus der 4 ne 5 und fertig. Kommt zu jedem Motor noch das Signal "Motor dreht" hinzu, musst du das nur einmal an deiner STRUCT eintragen und hast es für jeden Motor.

    Bei 50 Motoren und 20 Parameter pro Motor kann das schon ne Menge Arbeit sparen und für gute Übersicht sorgen.

    Am Besten legst du dir einfach mal nen DB an und erstellt da drin mal ARRAYs und STRUCTs und ARRAYs of STRUCT usw und schaust dir das mal in der Datensicht an. Dann isses ganz schnell klar was da abgeht.
    Geändert von Dr.M (30.12.2010 um 14:10 Uhr)

  6. Folgende 2 Benutzer sagen Danke zu Dr.M für den nützlichen Beitrag:

    DerSchlangen (07.04.2017),Quoellfrisch (30.12.2010)

  7. #5
    Registriert seit
    04.02.2007
    Beiträge
    2.544
    Danke
    167
    Erhielt 731 Danke für 528 Beiträge

    Standard

    Ich hab das von DR.M mal in Bilder gepackt, vieleicht wird es dann besser ersichtlich.

    Der Struct bietet aber zusätzlich zum sparen von Tipparbeit die Möglichkeit die Daten eines Struct's direkt symbolisch zu kopieren. Das ist wesenltlich übersichtlicher bei z.B. einem Blockmove

    p#db1.dbx 0.0 byte 6 (Wäre im DB der Motor 1)
    Schöner zu lesen
    "DB_Antriebe".Motor[1]
    struct.jpgdb1.jpgdb2.jpg
    „Wenn du ein Problem hast, versuche es zu lösen. Kannst du es nicht lösen, dann mache kein Problem daraus.“
    Siddhartha Gautama

  8. Folgender Benutzer sagt Danke zu jabba für den nützlichen Beitrag:

    Quoellfrisch (30.12.2010)

  9. #6
    Quoellfrisch ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    26.09.2010
    Beiträge
    7
    Danke
    4
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hallo!

    Vielen herzlichen Dank für Deine Antwort.

    Ich glaube ich muss mal erklären auf welchen Stand ich bin.

    Also ich mach grad den Fernkurs von MHJ ich habe dazu die Software WinSPS-S7

    Zur Zeit bin ich bei dem Kapitel Bausteinparameter dabei habe ich gut verstanden warum man Funktionen programmiert.

    Nun bin ich beim Kapitel mit den Datentypen ARRAY und STRUCT angekommen was sehr kurz abgehandelt wird ohne jegliche praktische Beispiele.

    Was ich verstanden habe ist das man ähnlich wie zuvor beim programmieren der Funktionen die Datentypen in den Bausteinkopf schreibt und dann mit Hilfe eines Aufrufs mit Aktualparametern aktualisiert.

    Nun weil diesmal keine Beispiele da sind komme ich nicht darauf oder begreife ich nicht wie man mit einen Aufruf oder einer AWL darauf zugreift oder wie man das ganze programmiert...

    Ich hoffe Ihr könnt mir weiterhelfen???
    Zitieren Zitieren ARRAY und STRUCT  

  10. #7
    Quoellfrisch ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    26.09.2010
    Beiträge
    7
    Danke
    4
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Vielen lieben Dank für Deine Mühe!!!

    Kann man ARRAYS nur in Datenbausteine programmieren???

    Oder auch in Funktionen oder Funktionsbausteine???

    Wie werden sie in AWL aufgerufen???

    Vielen Dank im voraus!!!

  11. #8
    Registriert seit
    04.02.2007
    Beiträge
    2.544
    Danke
    167
    Erhielt 731 Danke für 528 Beiträge

    Standard

    Ich glaube Du siehst das zu kompliziert.

    Im Grunde sind Struct und Array nur Platzhalter die einen Zugriff auf Variablen vereinfachen. So wurde es auch schon vorher beschrieben.

    Man kann alles was man mit einen Struct oder Array macht auch ohne diese Funktionen hinbekommen. Es wird durch den Einsatz von Struct und / oder Array's nur um einiges einfacher.

    Ich kenne das Buch bzw den Lehrgang nicht daher weiss ich nicht in welchem Zusammenhang diese Sachen vorkommen.

    Man kann diese Sachen z.B. auch bei der Deklaration z.B. in FB's verwenden, was aber die gleiche Funktion hat wie bei mir mit dem DB beschrieben.
    „Wenn du ein Problem hast, versuche es zu lösen. Kannst du es nicht lösen, dann mache kein Problem daraus.“
    Siddhartha Gautama

  12. #9
    Registriert seit
    04.02.2007
    Beiträge
    2.544
    Danke
    167
    Erhielt 731 Danke für 528 Beiträge

    Standard

    In AWL kann man auf den Struct zugreiffen, wie z.B. von mir beim kopieren Blockmove angeführt oder auf ein einzelnes Element

    Code:
    L 500
    t "DB_Antriebe".Motor[1].Output.V_soll
    
    u "DB_Antriebe".Motor[1].Input.Stoerung
    S "Störung"
    „Wenn du ein Problem hast, versuche es zu lösen. Kannst du es nicht lösen, dann mache kein Problem daraus.“
    Siddhartha Gautama

  13. #10
    Quoellfrisch ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    26.09.2010
    Beiträge
    7
    Danke
    4
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Ich habe konkret die Aufgabe einen AWL-Befehl zu programmieren, mit dem man lesend auf einen Eingangsparameter mit dem Datentyp ARRAY zugreifen kann.Das ARRAY hat den Bereich[1..10] und die Felder sind vom Datentyp WORD.
    Der Parameter hat die Bezeichnung "INArray" und der Zugriff soll auf das Feldelement 3 erfolgen.

    Also mein Vorschlag wäre im Bausteinkopf eintragen Name:INArray unter Deklaration "in" dann Typ ARRAY[1..10] OF WORD

    Und dann in der AWL im Netzwerk1 des Bausteins:

    L #INArray[3]
    T MW 10


    Oder was meinst Du???
    Zitieren Zitieren Array struct  

Ähnliche Themen

  1. Problem mit ARRAY - STRUCT
    Von Jörg_24 im Forum Simatic
    Antworten: 14
    Letzter Beitrag: 31.03.2011, 16:08
  2. Datentyp ARRAY als IN einer FC
    Von sailor im Forum Simatic
    Antworten: 4
    Letzter Beitrag: 25.06.2010, 12:34
  3. Problem ARRAY of STRUCT S7 -> WinCC flex 2008
    Von sps-concept im Forum HMI
    Antworten: 4
    Letzter Beitrag: 19.02.2010, 18:49
  4. Antworten: 7
    Letzter Beitrag: 26.10.2009, 20:24
  5. Codesys Array of Word -> Beliebiges Struct
    Von MSB im Forum CODESYS und IEC61131
    Antworten: 8
    Letzter Beitrag: 01.01.2008, 21:47

Lesezeichen

Berechtigungen

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