TIA CPU1212C, beliebigen Array[0..95] of Bool in Arbeits-DB verschieben

Lord Klappstuhl

Level-1
Beiträge
2
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo liebe User,

Ich lese bereits über eine .CSV-Datei einen Jahreskalender am Panel ein und übergebe ihn tageweise über Arrays[0..95]of Bool in die SPS.

Die Arrays sind nötig, da jeder Tag in 96 Viertelstunden aufgeteilt ist und ich so ca. 1000 statt 34000 PO's benötige.

Soweit so gut. Jetzt stehe ich vor folgenden Problem:

Ich möchte anhand des aktuellen Monat und Tag, das jeweilige Array in den Arbeits-DB schieben, am besten über in eine Art Laufvariable, aber mir steht nur FUP oder SCL zur verfügung.
Daran scheitert es aktuell.

zum Aufbau der Daten in der PLS: Bsp.: Januar ist DB101 mit 31 Arrays[0..95]of Bool

Kann mir jemand weiter helfen?
 
Hi!

Mit SCL und einer FOR-Schleife ist das kein Problem:

Code:
IF bKopieren THEN[INDENT]FOR iLaufvariable := 0 TO 95 DO
[/INDENT]
[INDENT=2]DB_Arbeit.abKalender[iLaufvariable] := DB_Januar.abKalender[iLaufvariable];
[/INDENT]
[INDENT]END_FOR;
[/INDENT]
[INDENT]bKopieren := FALSE;[/INDENT]
 END_IF;


Gruß,

Ottmar
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Danke für die schnelle Antwort!

Ich habe nochmal etwas probiert und habe noch ein kleines Problem. Ich möchte eigentlich den Zugriff auf den DB "DB_Januar" und das Array "abKalender" dynamisieren und habe den Syntax noch nicht herausgefunden. Vielleicht kann mir jemand nochmal bezogen auf das Beispiel helfen. "DB_Januar" und "abKalender" sollen durch Variablen ersetz werden können.

DB_Arbeit.abKalender[iLaufvariable] := DB_Januar.abKalender[iLaufvariable];
 
alles eine Sache der Datenstruktur

Code:
DATA_BLOCK "DB_Arbeit"
{ S7_Optimized_Access := 'TRUE' }
VERSION : 0.1
NON_RETAIN
   VAR 
      abKalender : Array[1..12] of Struct
         viertel : Array[1..96] of Bool;
      END_STRUCT;
   END_VAR
BEGIN
END_DATA_BLOCK

DB_Arbeit.png

So kannst Du mit Indexvariablen auf den Monat und die Viertelstunde zugreifen.

Falls Du dieses (oder Teile davon) mehrmals benötigst, ist es evtl. eleganter einen UDT einzusetzen.
 
Zuletzt bearbeitet:
Zurück
Oben