TIA Array im Datenbaustein beschreiben

Headman

Level-1
Beiträge
80
Reaktionspunkte
3
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Zusammen,
ich habe in einem Globalen-DB ein Array erstellt:
ID Array[0..500] of Int

In einer Funktion werden Werte ermittelt, die 16-Bit lang sind.

Auf einer HMI gibt es ein EA-Feld welches eine ID darstellt.

Nun moechte ich gerne, wenn im EA-Feld z.B. 42 eingetragen wird, dass das Array mit dem Index 42, der ermittelte Wert eingetragen wird.

Das funktionierrt nicht.

L #Ergebniss
T "Array".ID["Index"]
Die Meldung unter TIA-Portal V15 lautet:
"Der eingegebene Index ist ungueltig"


"Index" ist ein Merkerwort vom Type Word


Wenn ich folgende eingaben mache:
L #Ergebniss
T "Array".ID[42]

ist das TIA-Portal zufrieden.

Welchen Fehler mache ich?

Fuer Tipps und Ratschlaege waere ich sehr dankbar

Gruesse
Headman
 
Welche CPU verwendest Du?

Bei S7-300/400 geht das nur in SCL. In AWL muß "Index" eine Adresse enthalten (z.B. P#84.0) (das ist speicherindirekte Adressierung)

siehe TIA Hilfe > Index > Indirekte Adressierung > Indirektes Adressieren in AWL ...

Harald
 
Moin,

Das EA Feld hat einen Prozesswert, welcher mit Index, in der SPS, eine Verbindung hat?
Raik
 
Welche CPU verwendest Du?

Bei S7-300/400 geht das nur in SCL. In AWL muß "Index" eine Adresse enthalten (z.B. P#84.0) (das ist speicherindirekte Adressierung)

siehe TIA Hilfe > Index > Indirekte Adressierung > Indirektes Adressieren in AWL ...

Harald

Hallo Harald,
ich benutze eine ET200 CPU.

Ich glaube, dass ist mit einer S7-300 vergleichbar.

Danke für deinen Hinweis.

Mit SCL und Pointern hab ich noch nicht wirklich gearbeitet. Bis jetzt nur in der Theorie.
Mal schauen, was die TIA-Hilfe so bietet.

Gruesse
Headman
 
Es muß nicht unbedingt SCL sein, es geht auch in AWL, allerdings nicht so schön und einfach wie bei S7-1200/1500
Code:
L   "Index"
SLD 4                 //Index --> Word-Adresse P#[2*Index].0 (z.B. 42 --> P#84.0)
L   P#[COLOR="#FF0000"]0.0[/COLOR]             //<--- hier eintragen: Offset des Array "ID" im DB "ArrayDB"
+D                    //+ Anfangsadresse des Array
LAR1                  //= Adresse .ID["Index"] im DB

L   #Ergebnis
AUF "ArrayDB"
T   DBW [AR1,P#0.0]   //entspricht "ArrayDB".ID["Index"]
oder in SCL
Code:
"ArrayDB".ID["Index"] := Ergebnis;

Harald
 
Hallo Harald,
vielen, vielen Dank fuer deine Info's.

Ich werden wohl die SCL-Variante nehmen.
1. sieht die schöner aus
und
2. ist es weniger Quelltext, wo man sich vertippen kann :D

Gruesse
Headman
 
Zurück
Oben