-> Hier kostenlos registrieren
Guten Morgen Forum
Mal ein Problem das bei der Umsetzung von einer SCL Quelle aufgetaucht ist.
Und zwar handelt es sich um eine Quelle die mir 2 Werte heraussuchen soll und mir diese ausgibt.
Bei der Umsetzung in TIA bekomme ich unten aufgeführte Fehler:
6,Ungültiger Ein-, Aus- oder Durchgangsparameter.,,,08:26:37
3,Anzahl der an die Funktion oder den Funktionsbaustein übergebenen Parameter abweichend.,,,08:26:37
14,Ungültiger Datentyp.,,,08:26:37
18,Ungültige ARRAY-Variable.,,,08:26:37
19,Ungültige ARRAY-Variable.,,,08:26:37
23,Ungültige ARRAY-Variable.,,,08:26:37
24,Ungültige ARRAY-Variable.,,,08:26:37
28,Ungültiger Datentyp.,,,08:26:37
in Step 7 5.5 ist alles sauber
der SCL Quote
Bedanke mich schon mal
Magus111
Mal ein Problem das bei der Umsetzung von einer SCL Quelle aufgetaucht ist.
Und zwar handelt es sich um eine Quelle die mir 2 Werte heraussuchen soll und mir diese ausgibt.
Bei der Umsetzung in TIA bekomme ich unten aufgeführte Fehler:
6,Ungültiger Ein-, Aus- oder Durchgangsparameter.,,,08:26:37
3,Anzahl der an die Funktion oder den Funktionsbaustein übergebenen Parameter abweichend.,,,08:26:37
14,Ungültiger Datentyp.,,,08:26:37
18,Ungültige ARRAY-Variable.,,,08:26:37
19,Ungültige ARRAY-Variable.,,,08:26:37
23,Ungültige ARRAY-Variable.,,,08:26:37
24,Ungültige ARRAY-Variable.,,,08:26:37
28,Ungültiger Datentyp.,,,08:26:37
in Step 7 5.5 ist alles sauber

der SCL Quote
Code:
//Baustein zur Entnahme von Positionswerten int aus einen AB.
//Als Werte werden x und y zur Verfügung gestellt.
//Überprüfung zur maximalen Positionsanzahl wird gemacht sowie
//längenabfrage des DB´s.
//Sollte der DB nicht Lang genug sein wird ein Fehler ausgegeben.
FUNCTION_BLOCK FB10
VAR_TEMP
// temporäre Variablen
ter : INT ;
Fehler_DB :INT ; //Fehler DB
END_VAR
VAR
// statische Variablen
test : WORD := 10 ;
laenge_DB :WORD ;
z: INT;
DB_Laenge :WORD ;
Max_Position_I:INT;
DB_Laenge_I:INT;
APOSX : INT;
APOSY : INT;
END_VAR
VAR_INPUT
Position : WORD;
Max_Position : WORD;
B : INT;
c : INT;
DB_IN : BLOCK_DB;
END_VAR
VAR_OUTPUT
A1:BOOL := false;
POSX : WORD;
POSY : WORD;
RetVal:INT;
END_VAR
Z:= TEST_DB(DB_NUMBER := 1 // IN: WORD
,DB_LENGTH :=DB_Laenge // OUT: WORD
,WRITE_PROT := A1 // OUT: BOOL
,RET_VAL := RetVal
);
Max_Position_I:= WORD_TO_INT (Max_Position);
ter := WORD_TO_INT (Position);
DB_Laenge_I:= (WORD_TO_INT (DB_Laenge)/4);
IF ter < Max_Position_I AND DB_Laenge_I >= Max_Position_I THEN
m99.0 := True;
IF ter = 0 THEN
APOSX := (0);
APOSY := (2);
POSX := DB_IN.DW [(APOSX)];
POSY := DB_IN.DW [(APOSY)];
ELSE
APOSX := ((ter-0)*4);
APOSY := ((ter-0)*4+2);
POSX := DB_IN.DW [(APOSX)];
POSY := DB_IN.DW [(APOSY)];
END_IF;
ELSE
M99.0 := false ;
POSX := 0;
POSY := 0;
END_IF;
END_FUNCTION_BLOCK
Bedanke mich schon mal
Magus111