SCL - OB und Array als Parameter

Bluescreener

Level-1
Beiträge
16
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
EDIT: Im Thema sollte es natürlich DB heißen, nicht OB!

Hallo,

ich komme grad nicht weiter. :(
Ich habe eine Funktion in SCL, darin befindet sich ein Array[1..10] mit Realwerten. Diese Realwerte sollen nun in einen globalen DB (hier DB101) kopiert werden. Das benötigte Ziel-Array("Messwerte") ist in dem DB vorhanden. Hart kodiert geht das auch ganz gut:

z.B in einer Schleife:
DB101.Messwerte[x]:= SCL_Messwerte[x];

Allerdings möchte die DB-Nummer und den Arraynamen als Paramter der SCL-Function übergeben (am liebsten als getrennte Eingangsvariablen, ansonsten am Stück).
Leider scheitere ich bereits an der Deklaration der Eingangsvariablen, mal von der äußeren Beschaltung der Funktion abgesehen.

Kann mir evtl jemand auf die Sprünge helfen? Welche Typen benötige ich als Eingangvariablen? Wie muss die äußere Beschaltung aussehen?

Vielen Dank im Vorraus

Bluescreener:???:
 
Das geht dann leider nur so:

Bsp.:
WORD_TO_BLOCK_DB(wErg_DBNr).DD[N*8] := DINT_TO_DWORD(STRNG_DI(S := MyString_Nr));

Also mit Absolutadressierung. Oben ist nur ein allgemeines Bsp.

Was aber gehen würde, das Array am SCL-Baustein als IN_OUT anlegen. Im Baustein geht dann dieser Aufruf:

Code:
FUNCTION FC110 : INT

VAR_INPUT
    
END_VAR
VAR_TEMP
    // temporäre Variablen
    I: INT;
END_VAR
VAR_OUTPUT
    ERG: INT;    
END_VAR   

VAR_IN_OUT
    TestArray: ARRAY[0..100] OF INT;
END_VAR 

    // Anweisungsteil
    I := 10;
    ERG := TestARRAY[i];
    
    
    ;
    FC110 := 100;
END_FUNCTION
Der Funktionsaufruf:

Code:
       CALL  FC   110
       RET_VAL  :=#RetVal
       ERG      :=MW10
       TestArray:="DBMyArray".MyArray
 
Zurück
Oben