-> Hier kostenlos registrieren
Hallo zusammen und ein frohes neues Jahr,
bei meiner Abschlussarbeit muss ich wohl oder übel die Applikation für eine Teilanlage in der Hochsprache SCL verfassen. Mit SIMATIC STEP 7 habe ich bisher nur ein wenig in meiner Ausbildung und im Studium zutun gehabt. SCL ist jetzt ganz neu für mich. Die Einarbeitung war glücklicherweise nicht so schlimm, weil die C-Programmierung aus dem Studium es mir vereinfacht hat. Zur Übungszwecken schreibe und teste ich irgendwelche SCL-Programme um mich in diesem Thema zurecht zu finden.
Hier das Programm und anschließend mein Problem:
// SCL-Programmbeispiel-SelectionSort
FUNCTION SelectionSort : INT
VAR_IN_OUT // Variablendeklaration
arrValues : ARRAY[20,43,10,6,18] OF INT;
END_VAR
VAR_TEMP
Idx1, Idx2, MaxIdx, MaxVal, MAXSIZE : INT;
END_VAR
MAXSIZE := LEN(arrValues); // Bestimmung der Länge des Feldes
FOR Idx1 := MAXSIZE TO 1 BY -1 DO // Werte des Feldes erfassen
MaxVal := arrValues[Idx1];
MaxIdx := Idx1;
FOR Idx2 := 0 TO Idx-1 DO // Bestimmung des größten Wertes der Zelle aus dem Feld
IF arrValues[Idx2] > MaxVal THEN // und deren Indexübernahme
MaxVal := arrValues[Idx2];
MaxIdx := Idx2;
END_IF;
END_FOR;
IF MaxIdx < Idx1 THEN // größter Wert der hochwertigsten Zelle übergeben
arrValues[MaxIdx] := arrValues[Idx1];
arrValues[Idx1] := MaxVal;
END_IF;
END_FOR;
SelectionSort := 100;
END_FUNCTION
---------------------
das Programm sortiert die Werte der Zellen des Feldes nach ihrer Wertigkeit.
Nach dem Übersetzen steht dann folgender Text unten im Feld:
Übersetzung: SCL-Uebungen-TO\SIMATIC 400(1)\CPU 412-3 H\S7-Programm(5)\Quellen\SCL-Quelle(1)
Baustein: SelctionSort
F: Fehler beim Zugriff auf den Baustein (offline).
Ergebnis: 1 Fehler, 0 Warnung(en)
Ich verstehe nicht was das soll. In meinem OB1 steht CALL "SelectionSort", falls es euch weiterhilft. Ich hoffe man kann mir helfen.
DAnke und Gruß
tuggi
bei meiner Abschlussarbeit muss ich wohl oder übel die Applikation für eine Teilanlage in der Hochsprache SCL verfassen. Mit SIMATIC STEP 7 habe ich bisher nur ein wenig in meiner Ausbildung und im Studium zutun gehabt. SCL ist jetzt ganz neu für mich. Die Einarbeitung war glücklicherweise nicht so schlimm, weil die C-Programmierung aus dem Studium es mir vereinfacht hat. Zur Übungszwecken schreibe und teste ich irgendwelche SCL-Programme um mich in diesem Thema zurecht zu finden.
Hier das Programm und anschließend mein Problem:
// SCL-Programmbeispiel-SelectionSort
FUNCTION SelectionSort : INT
VAR_IN_OUT // Variablendeklaration
arrValues : ARRAY[20,43,10,6,18] OF INT;
END_VAR
VAR_TEMP
Idx1, Idx2, MaxIdx, MaxVal, MAXSIZE : INT;
END_VAR
MAXSIZE := LEN(arrValues); // Bestimmung der Länge des Feldes
FOR Idx1 := MAXSIZE TO 1 BY -1 DO // Werte des Feldes erfassen
MaxVal := arrValues[Idx1];
MaxIdx := Idx1;
FOR Idx2 := 0 TO Idx-1 DO // Bestimmung des größten Wertes der Zelle aus dem Feld
IF arrValues[Idx2] > MaxVal THEN // und deren Indexübernahme
MaxVal := arrValues[Idx2];
MaxIdx := Idx2;
END_IF;
END_FOR;
IF MaxIdx < Idx1 THEN // größter Wert der hochwertigsten Zelle übergeben
arrValues[MaxIdx] := arrValues[Idx1];
arrValues[Idx1] := MaxVal;
END_IF;
END_FOR;
SelectionSort := 100;
END_FUNCTION
---------------------
das Programm sortiert die Werte der Zellen des Feldes nach ihrer Wertigkeit.
Nach dem Übersetzen steht dann folgender Text unten im Feld:
Übersetzung: SCL-Uebungen-TO\SIMATIC 400(1)\CPU 412-3 H\S7-Programm(5)\Quellen\SCL-Quelle(1)
Baustein: SelctionSort
F: Fehler beim Zugriff auf den Baustein (offline).
Ergebnis: 1 Fehler, 0 Warnung(en)
Ich verstehe nicht was das soll. In meinem OB1 steht CALL "SelectionSort", falls es euch weiterhilft. Ich hoffe man kann mir helfen.
DAnke und Gruß
tuggi