Quantcast
Channel: SPS-Forum - Automatisierung und Elektrotechnik
Viewing all articles
Browse latest Browse all 49323

Step 7 S7 SCL Array gezielt initialisieren

$
0
0
Hallo Liebe SPS / SCL Experten,

ich möchte schon bei der Initialisierung bestimmte Zellen eines Arrays ansprechne und mit Werten füllen.
Leider gelingt mir das nicht.
Das Array soll zum Beispiel so aussehen:

// +------+------+------+
// | 01 | 05 | 09 |
// +------+------+------+
// | 02 | 06 | 10 |
// +------+------+------+
// | 03 | 07 | 11 |
// +------+------+------+
// | 04 | 08 | 12 |
// +------+------+------+

Der folgende Code lässt sich zwar übersetzen und funktioniert, aber erfüllt nicht meine Anforderung.

Code:

FUNCTION_BLOCK FB60

VAR_TEMP
    // temporäre Variablen

END_VAR
VAR
    // statische Variablen

test :  STRUCT
       
            test0 : ARRAY[1..4,1..3] OF INT := 01,02,03,04,05,06,07,08,09,10,11,12;

        END_STRUCT;

END_VAR

    // Anweisungsteil
    BEGIN
;       
END_FUNCTION_BLOCK

DATA_BLOCK DB60  FB60
//
// Baustein-Kommentar ...
//
BEGIN

END_DATA_BLOCK

Damit das Array so wie im Beispiel initialisiert wird, müsste es wie folgt mit Werten gefüllt werden.
Das ist mir aber zu kompliziert, ich würde gerne schon bei der Initialisiertung die Indexe/Indizes ansprechen.

Code:

test0 : ARRAY[1..4,1..3] OF INT := 01,05,09,02,06,10,03,07,11,04,08,12;
Wie kann ich bei der Initialisierung eines Arrays auf einfache Weise bestimmte Zellen vorbesetzen?
So würde ich es gerne machen, doch der Code lässt sich nicht übersetzen.

Code:

test.test0[1,1] := 01;
Der folgende Code ist keine Initialisiertung, die Felder des Arrays werden zur Laufzeit gefüllt.

Code:

FUNCTION_BLOCK FB60

VAR_TEMP
    // temporäre Variablen

END_VAR
VAR
    // statische Variablen

test :  STRUCT
       
            test0 : ARRAY[1..4,1..3] OF INT;

        END_STRUCT;

END_VAR

    // Anweisungsteil
    BEGIN

      test.test0[1,1] := 01;
      test.test0[2,1] := 02;
      test.test0[3,1] := 03;
      test.test0[4,1] := 04;
                     
      test.test0[1,2] := 05;
      test.test0[2,2] := 06;
      test.test0[3,2] := 07;
      test.test0[4,2] := 08;
                     
      test.test0[1,3] := 09;
      test.test0[2,3] := 10;
      test.test0[3,3] := 11;
      test.test0[4,3] := 12;
   
END_FUNCTION_BLOCK

DATA_BLOCK DB60  FB60
//
// Baustein-Kommentar ...
//
BEGIN

END_DATA_BLOCK

Ich bitte um Rat und Vorschläge, wie ich bei der Initialisierung von Arrays, bestimmt Zellen dirket füllen kann.
Vielen Dank

MFG

sinumerik.user

Viewing all articles
Browse latest Browse all 49323


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>