ein Fehlerhaftes SCL Programm

Rose

Level-1
Beiträge
58
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Kollegen,

ich bin eine SCL Anfangerin, hier habe ich ein Fehlerhaftes Programm und weiß nicht wie kann ich es korrigieren, habt Ihr ein bißchen Zeit für mich?

FUNCTION FC960 : INT
VAR
m : INT;
n : INT;
code : INT;
prioritaet : INT;
END_VAR

BEGIN
m := 0;
n := 0;
code := 0;
prioritaet := 0;


WHILE DB900.DW36.DXx36,0 DO

IF DB900.DWm.DXxm,n <> 0 THEN
code := m*8+n;
CASE m OF
0 : prioritaet := 1;
2,4,6 : prioritaet := 2;
8,10,12 : prioritaet := 3;
14,16,18,20 : prioritaet := 4;
20,24,26 : prioritaet := 5;
28,30 : prioritaet := 6;
32,34 : prioritaet := 7;
END_CASE;
IF n = 15 THEN
m := 0;
m := m+2;

ELSE
n := n+1;

CONTINUE;
END_IF;

ELSE
IF n >= 15 THEN
n := 0;
m := m+2;

ELSE
n := n+1;
CONTINUE;

END_IF;

END_IF;

END_WHILE;

FC960 := code + prioritaet;

END_FUNCTION

vielen Dank im Voraus!

MFG
Rose
 
Wie wäre es damit:

Code:
FUNCTION FC960 : INT
VAR
m : INT;
n : INT;
code : INT;
prioritaet : INT;
END_VAR
BEGIN
m := 0;
n := 0;
code := 0;
prioritaet := 0;
 
WHILE DB900.DBX36.0 DO
IF DB900.DX[m,n] <> 0 THEN
code := m*8+n;
CASE m OF
0 : prioritaet := 1;
2,4,6 : prioritaet := 2;
8,10,12 : prioritaet := 3;
14,16,18,20 : prioritaet := 4;
20,24,26 : prioritaet := 5;
28,30 : prioritaet := 6;
32,34 : prioritaet := 7;
END_CASE;
IF n = 15 THEN
m := 0;
m := m+2;
ELSE
n := n+1;
CONTINUE;
END_IF;
ELSE
IF n >= 15 THEN
n := 0;
m := m+2;
ELSE
n := n+1;
CONTINUE;
END_IF;
END_IF;
END_WHILE;
FC960 := code + prioritaet;
END_FUNCTION

das wird zumindest compiliert, ob die Logic paßt weißt du wohl besser :rolleyes: .
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Vielen Dank, Ralle:)

auf die Zeile "WHILE DB900.DBX36.0 DO" zeigt es bei mir noch 3 Fehler:

Die Komponente ist nicht vorhanden.
Fehlerhafte Variable, der Punkt ist nicht zulässig.
Der Ausdruck mus vom Datentyp Bool sein.

Die sind aber bei dir alles ok, oder?

MFG
Rose
 
Ja, die Zeile bemeckert er nicht, der Baustein wurde auch übersetzt und ins Baustein-Verzeichnis gelegt.
Ich hatte ne 314 als CPU, kann deine CPU bis zur Bausteinnummer DB900 Bausteine verarbeiten? Ältere CPU konnten nicht so hohe Nummern laden.
Versuch es probehalber mal mit einer DB-Nummer < 128.
 
Ne, kanns nicht sein, dann gibt es eine Fehlermeldung "Bausteinnummer zu groß".

PS: Ich nutze SCL V5.3 SP1

Mich irritiert die Meldung "Komponente nicht vorhanden", was soll das darstellen?
 
Zurück
Oben