-> Hier kostenlos registrieren
Hi,
ich habe auf meinen alten Tagen versucht ein SCL- Programm zu schreiben, quasi fast das "Getting Started" Beispiel nur eben für CFC importierbar geeignet (im CFC kann man kein S7_array verwenden). Darum habe ich statt dem Array einen DB verwenden wollen.
Er mecker aber alle DB_VAR.DD [ ] an.
Irgendwer mit Hinweisen?
FUNCTION_BLOCK FB1450
VAR_TEMP
// temporäre Variablen
index : INT;
tauschen : BOOL;
hilf : REAL;
END_VAR
VAR
// statische Variablen
END_VAR
VAR_INPUT
wert1 : REAL;
wert2 : REAL;
wert3 : REAL;
wert4 : REAL;
wert5 : REAL;
wert6 : REAL;
wert7 : REAL;
wert8 : REAL;
DB_VAR : BLOCK_DB ;
END_VAR
VAR_OUTPUT
Qwert1 : REAL;
Qwert2 : REAL;
Qwert3 : REAL;
Qwert4 : REAL;
Qwert5 : REAL;
Qwert6 : REAL;
Qwert7 : REAL;
Qwert8 : REAL;
END_VAR
CONST
GRENZE := 28;
END_CONST
VAR_IN_OUT
END_VAR
// Sortierung vorbelegen
DB_VAR.DD[0] := Wert1;
DB_VAR.DD[4] := Wert2;
DB_VAR.DD[8] := Wert3;
DB_VAR.DD[12] := Wert4;
DB_VAR.DD[16] := Wert5;
DB_VAR.DD[20] := Wert6;
DB_VAR.DD[24] := Wert7;
DB_VAR.DD[28] := Wert8;
REPEAT
tauschen := FALSE;
FOR index := GRENZE TO 4 BY -4 DO
IF DB_VAR.DD[index-4] > DB_VAR.DD[index]
THEN hilf:=DB_VAR.DD[index];
DB_VAR.DD[index] :=DB_VAR.DD[index-4];
DB_VAR.DD[index-4] := hilf;
tauschen := TRUE;
END_IF;
END_FOR;
UNTIL NOT tauschen
END_REPEAT;
Qwert1 := DB_VAR.DD [0];
Qwert2 := DB_VAR.DD [4];
Qwert3 := DB_VAR.DD [8];
Qwert4 := DB_VAR.DD [12];
Qwert5 := DB_VAR.DD [16];
Qwert6 := DB_VAR.DD [20];
Qwert7 := DB_VAR.DD [24];
Qwert8 := DB_VAR.DD [28];
;
END_FUNCTION_BLOCK
Gruß
Karl
ich habe auf meinen alten Tagen versucht ein SCL- Programm zu schreiben, quasi fast das "Getting Started" Beispiel nur eben für CFC importierbar geeignet (im CFC kann man kein S7_array verwenden). Darum habe ich statt dem Array einen DB verwenden wollen.
Er mecker aber alle DB_VAR.DD [ ] an.
Irgendwer mit Hinweisen?
FUNCTION_BLOCK FB1450
VAR_TEMP
// temporäre Variablen
index : INT;
tauschen : BOOL;
hilf : REAL;
END_VAR
VAR
// statische Variablen
END_VAR
VAR_INPUT
wert1 : REAL;
wert2 : REAL;
wert3 : REAL;
wert4 : REAL;
wert5 : REAL;
wert6 : REAL;
wert7 : REAL;
wert8 : REAL;
DB_VAR : BLOCK_DB ;
END_VAR
VAR_OUTPUT
Qwert1 : REAL;
Qwert2 : REAL;
Qwert3 : REAL;
Qwert4 : REAL;
Qwert5 : REAL;
Qwert6 : REAL;
Qwert7 : REAL;
Qwert8 : REAL;
END_VAR
CONST
GRENZE := 28;
END_CONST
VAR_IN_OUT
END_VAR
// Sortierung vorbelegen
DB_VAR.DD[0] := Wert1;
DB_VAR.DD[4] := Wert2;
DB_VAR.DD[8] := Wert3;
DB_VAR.DD[12] := Wert4;
DB_VAR.DD[16] := Wert5;
DB_VAR.DD[20] := Wert6;
DB_VAR.DD[24] := Wert7;
DB_VAR.DD[28] := Wert8;
REPEAT
tauschen := FALSE;
FOR index := GRENZE TO 4 BY -4 DO
IF DB_VAR.DD[index-4] > DB_VAR.DD[index]
THEN hilf:=DB_VAR.DD[index];
DB_VAR.DD[index] :=DB_VAR.DD[index-4];
DB_VAR.DD[index-4] := hilf;
tauschen := TRUE;
END_IF;
END_FOR;
UNTIL NOT tauschen
END_REPEAT;
Qwert1 := DB_VAR.DD [0];
Qwert2 := DB_VAR.DD [4];
Qwert3 := DB_VAR.DD [8];
Qwert4 := DB_VAR.DD [12];
Qwert5 := DB_VAR.DD [16];
Qwert6 := DB_VAR.DD [20];
Qwert7 := DB_VAR.DD [24];
Qwert8 := DB_VAR.DD [28];
;
END_FUNCTION_BLOCK
Gruß
Karl