Step 7 AWL: Symbolischer Zugriff auf Array

Reibekuchen

Level-1
Beiträge
16
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi,

ist es in AWL möglich, symbolisch auf ein Array, welches in einem DB liegt, zuzugreifen?

Mein Programm soll die aktuelle Uhrzeit an einer Stelle X im Array, welches in DB1 liegt, speichern.

So Funktioniert das ja ohne Probleme
Code:
CALL  "READ_CLK"
       RET_VAL:=MW10
       CDT    :=DB1.TestArray[1]

Jetzt würde ich nur gerne den Platz im Array aus einer Variablen beziehen:
Code:
L 1
T MW 0

CALL  "READ_CLK"
       RET_VAL:=MW10
       CDT    :=DB1.TestArray[MW 0]

.. was ja in der Form leider nicht funktioniert.
Gibts dafür eine Lösung? Wenn ja, wie sieht diese aus?

Ansich könnte man ja bitweise auf den DB zugreifen, allerdings bereitet mir da der Datentyp DATE_AND_TIME Probleme.

Wie löst man das am elegantesten?

Vielen Dank :)
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Mit SCL geht es.

Wie viele/wenige Einträge hat das Array? Wenn es nur ein paar sind, dann könnte man ein paar SFC-Aufrufe ausprogrammieren und dann nur den zum gewünschten Index passenden aufrufen.

Harald
 
An AWL komme ich leider nicht vorbei, ist eine Studienleistung und in der Aufgabenstellung so vorgegeben :(

Im Array sollen bis zu 100 Datensätze aufgenommen werden, die jeweils das aktuelle Datum und die Uhrzeit umfassen.

Dann werde ich mir mal die ANY-Pointer anschauen.

Ich bin gerade noch über die SFC20 gestolpert.. wäre das damit nicht machbar?


Danke! :)
 
Symbolisch mit variablem Index geht nicht in AWL.

Für den SFC20 brauchst Du einen zusammengebastelten ANY-Pointer, den Du ebensogut direkt an den SFC1 geben kannst.

Sollen die DATE_AND_TIME in dem Array geschoben werden (neuer kommt, ältester fliegt raus)?
Dann könntest Du mit SFC20 den zweiten bis letzten Eintrag zum ersten bis vorletzten Eintrag umkopieren/verschieben und danach konstant symbolisch mit dem SFC1 in den letzten Eintrag lesen.

Harald
 
Sie dir mal den Baustein hier an: #9

Du kannst dann z.Bsp. Die Zeit imm in die selbe DB-Variable auslesen, die Zielzelle anhand einer Zählvariable bestimmen und den o.g. Baustein aufrufen, der mittels Blockmove die Daten umkopiert. Die Any werden im Baustein zusammengesetzt.
Im Baustein wird AWL verwendet, der Aufruf dann auch in AWL, damit kannst du die Bedingungen erfüllen.
 
Zuletzt bearbeitet:
Zurück
Oben