Datentyp Array

STEP7 ist die Programmiersprache der SIMATIC S7-Steuerungen. Allgemeine Fragen.
Antworten
Benutzeravatar
Quoellfrisch
SPSTreff-Fortgeschrittener User
Beiträge: 50
Registriert: 14 Aug 2010, 12:26

Datentyp Array

Beitrag von Quoellfrisch »

Hallo wer von Euch kann mir den Datentyp Array näher bringen und ein praktisches Beispiel geben???

Habe dazu im Internet nicht viel gefunden was mich weiter bringt.


LG Pierre

Benutzeravatar
Matthias
SPSTreff-Profi User
Beiträge: 288
Registriert: 19 Jun 2010, 11:16
Wohnort: Bretten
Kontaktdaten:

Beitrag von Matthias »

Deklaration eines Arrays:


MeinArray: ARRAY[1..10] OF INT;

Allgemein:
NameDesArrays: ARRAY[minIndex..MaxIndex] OF DatenTyp := Anfangswert;

Im Code (AWL) kann dann so darauf zugegriffen werden:

Code: Alles auswählen

L  #MeinArray[1]
T  #MeinArray[2]

//Wobei MeinArray im Tempbereich eines Bausteins deklariert worden ist


//Syntax, wenn das Array in einem DB angelegt worden ist:
L  DB10.MeinArray[1]
T  DB10.MeinArray[2]




Benutzeravatar
Quoellfrisch
SPSTreff-Fortgeschrittener User
Beiträge: 50
Registriert: 14 Aug 2010, 12:26

Beitrag von Quoellfrisch »

Kann mir jemand ein gutes Beispiel zum Thema Array näher bringen???

Vieleicht gibt es hier einen Programmierer der Arrays schon öfter eingesetzt hat.

Vielen Dank im vorraus.

Benutzeravatar
Quoellfrisch
SPSTreff-Fortgeschrittener User
Beiträge: 50
Registriert: 14 Aug 2010, 12:26

Beitrag von Quoellfrisch »

Vielen Dank für die vielen Antworten....

Bei Sps-Forum.de bekommt man wenigstens mal eine Antwort.

:!:

Benutzeravatar
Weiss_MHJ
Site Admin
Beiträge: 673
Registriert: 13 Apr 2010, 16:34
Kontaktdaten:

Beitrag von Weiss_MHJ »

Hallo,

Sie werden bessere und vielleicht mehr Antworten bekommen, wenn Sie die Frage nicht so allgemein stellen.

Ich habe mir Ihre Beiträge im SPS-Forum angesehen und die Antworten gehen ja nicht sonderlich über die Antwort hier und auch den Beispielen im Fernkurs (auf den Sie sich dort beziehen) hinaus.
Im Fernkurs steht, dass ein Array eine Zusammenfassung von Elementen des gleichen Typs ist. Diese Antwort haben Sie auch im Forum erhalten.
Auch die Beispiele im Fernkurs und die im Forum genannten Beispiele haben die gleiche Grundlage. Ablage von Werten gleichen Typs und Zugriff darauf.

Gruss

Benutzeravatar
Dieter HB
SPSTreff-User
Beiträge: 7
Registriert: 09 Jul 2010, 18:07
Wohnort: Bremen
Kontaktdaten:

Beitrag von Dieter HB »

Es gibt kaum einen typischen Anwendungsfall wo man Arrays zwingend benötigt.

Ich nutze Arrays wenn ich mit die Tipperei für einzelne Variable ersparen will.

Wenn ich z.B. bei einer Steuerung mit einem Antrieb 20 Positionen anfahren will würde ich ein Array bilden mit 20 Feldern. In jedem Feld steht dann die Zielposition. Die Variable würde ich dann Ziel nennen und kann mit „Ziel(1)“ auf das erste Ziel mit „Ziel(2)“ auf das zweite Ziel zugreifen usw.

Ich erspare mir damit nur etwas Tipperei bei der Declaration und schaffe etwas mehr übersicht im Datenbaustein.

Dieter
Die Angst Fehler zu machen, ist die Wiege der Bürokratie und der Feind der Entwicklung

Benutzeravatar
Quoellfrisch
SPSTreff-Fortgeschrittener User
Beiträge: 50
Registriert: 14 Aug 2010, 12:26

Beitrag von Quoellfrisch »

Hallo

Danke für Deine Antwort.

Ich bin gerade an einem Fernkurs dran und da sind leider nur drei theoretische Beispiele...

Habe mir viele Bücher gekauft um mehr zu erfahren aber da war auch nix dabei.

Möchte einfach von Profis etwas lernen was mich weiterbringt und habe leider keinen Programmierer der viele Erfahrungen hat...

Möchte einfach soviel wie möglich lernen und weiterkommen.

LG Quoellfrisch

Benutzeravatar
Quoellfrisch
SPSTreff-Fortgeschrittener User
Beiträge: 50
Registriert: 14 Aug 2010, 12:26

Array

Beitrag von Quoellfrisch »

Hallo MHJ-Team!

Ich bin immer noch damit beschäftigt Arrays zu begreifen und den Umgang zu lernen.

Im Crashkurs S7 gibt es auf Seite 130 ein Beispiel das sehr gut nachzuvollziehen ist.

Dort werden Arrays zum Summieren benutzt.

Was ich nicht ganz verstanden habe ist warum im FC 2 und im OB 1im Bausteinkopf das Array programmiert wird.

Im Fernkurs gibt es auch Beispiele die aber sehr kurz gefasst sind...

Also was ich weiss wie man Arrays benutzt und und in den Bausteinkopf schreibt.
Was ich nicht ganz kapiert habe wie man sie aufruft im OB 1???

Bei dem Beispiel S.73 Lehrbrief 4 ist ein Array mit Werte1 ARRAY [-10..10] OF INT

L #Werte1 [-5]
T MW 10

Wie wird das ganze im OB 1 aufgerufen-verarbeitet???

Wenn ich Call FC 2 im OB 1 schreibe kommt im OB1 dann Werte1=InARRAY und was muss ich dann eintragen bei InARRAY ???

Bitte helft mir!!!

Benutzeravatar
Weiss_MHJ
Site Admin
Beiträge: 673
Registriert: 13 Apr 2010, 16:34
Kontaktdaten:

Beitrag von Weiss_MHJ »

Hallo,

in dem von Ihnen angesprochenen Beispiel des S7-Crashkurs wird in den temporären Lokaldaten des OB1 ein Array angelegt und dieses dann übergeben (Siehe Bild des OB1 S.130 in der Parametertabelle).
Dies ist eine Möglichkeit.
Des Weiteren kann ein Array gleichen Typs und mit den gleichen Feldern in einem DB angelegt und der FC übergeben.

In dem folgenden Thread
http://www.sps-treff.de/viewtopic.php?t ... c&start=15
habe ich ein Beispiel gemacht bei dem FBs vorhanden sind, welche Daten in ein Array einfügen, auslesen usw.. Dies kann geladen werden.

Innerhalb der FBs kann man sich anschauen, was für ein Aufwand getrieben werden muss um in AWL Daten in einem Array einzufügen, zu verschieben usw.. Dabei wurde bewusst auf den Einsatz der SFC20 verzichtet.

Die FBs kann man verwenden um sich z.B. ein BYTE-Schieberegister zu bauen. Im konkreten Fall wurden diese benötigt, um die Höhe von Transportgut im Array abzuspeichern.

Gruss

Benutzeravatar
Quoellfrisch
SPSTreff-Fortgeschrittener User
Beiträge: 50
Registriert: 14 Aug 2010, 12:26

Beitrag von Quoellfrisch »

Hallo Herr Weiss!


Vielen Dank für Ihre schnelle Antwort!

Was Sie mir nicht beantwortet haben wäre das Beispiel aus dem Fernkurs.

Ich weiss nicht wo gibt es Informationen zu Arrays in welchem Buch bekommt man mal genaue Informationen überall wird nur oberflächlich drauf eingegangen auch im Internet gibt es keine Einstiegsinformationen.

Woher haben Sie Ihre Informationen oder muss man da erst studieren???

Ich muss mir mein Wissen spärlich zusammenkaufen oder suchen auch Programmiervideos gibt es nicht viele...

Ich finde Ihre Videos zum Programm V5 sehr sehr gut!!!
So könnte man auch einen Fernkurs aufbauen weil so kann man sehr gut lernen ohne das man Hochstudiert ist.

Aber trotzdem vielen herzlichen Dank für Ihre Hilfe Herr Weiss!!!

Benutzeravatar
Weiss_MHJ
Site Admin
Beiträge: 673
Registriert: 13 Apr 2010, 16:34
Kontaktdaten:

Beitrag von Weiss_MHJ »

Hallo,

als Ergänzung zu Ihrer Frage:
ich habe ein kleines Projekt angefügt, bei dem das Array aus dem Fernkurs in einem DB angelegt und im OB1 an die FC übergeben wird.

Zu Arrays:
Dass man über Arrays in S7-Literatur relativ wenig findet liegt wohl daran, dass an Arrays nichts besonderes ist. Diese sind ja nur eine formale Aneinanderreihung von Feldern des gleichen Typs. Formal gesehen macht es keinen Unterschied, ob ich nun zehn Parameter des Typs BYTE in einem DB hintereinander anlege oder aber ein "Array [0..9] of BYTE".
Der Vorteil des Arrays ist, dass ich über einen Index (L #ArrayName[5]) auf die einzelnen Felder zugreifen kann. Die Felder also über einen "Überbegriff" oder einen Namen erreichbar sind und darüber verwaltet werden können.

Leider ist es in S7-AWL (bzw. in FUP/KOP) nicht möglich, den Index eines Arrays variabel zu schreiben also z.B.
"L #ArrayName[MW10]".
Dies grenzt die Verwendung von Arrays in AWL/FUP/KOP stark ein.
Dies ist ebenso ein Grund, warum das Array in diesen Sprachen kaum Bedeutung hat. Um variabel auf die einzelnen Felder von Arrays zuzugreifen, muss man in AWL mit indirekter Adressierung arbeiten. In dem oben genannten Beispiel des anderen Threads wird dies gezeigt (habe das Beispiel hier nochmals angehängt).

Anders in SCL.
Hier können z.B. Schleifen programmiert werden, bei denen über Variablen auf die Indices eines Arrays zugegriffen werden kann. Somit sind Arrays in SCL viel einfacher zu bearbeiten und werden somit auch häufiger eingesetzt.

Ich hoffe dass ich Ihnen damit weiterhelfen konnte.

Gruss
Sie haben keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

Benutzeravatar
Quoellfrisch
SPSTreff-Fortgeschrittener User
Beiträge: 50
Registriert: 14 Aug 2010, 12:26

Beitrag von Quoellfrisch »

Vielen lieben Dank Herr Weiss!!!

Ich habe noch eine Anregung für Sie zwecks einem Crashkurs oder Fernkurs.

Ich habe mir einen Lernkurs für C++ gekauft.

Dieser Kurs heisst:Ralf Schneeweiss /Schneeweiß, R: C++programmieren

Sowas wäre eine gute Alternative zum Aufbau eines Step 7 Fernkurses.

LG und schönen Tag

Antworten