SCL-Kompiler meldet einen Fehler

Earny

Level-1
Beiträge
422
Reaktionspunkte
38
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
ich habe ein Problem beim Übersetzen der nachfolgenden Programmzeilen, die innerhalb einer CASE-Struktur stehen.

Code:
       4: IF T6T7a AND T6T7b THEN   
               Schritt:=7; //Aktion 7
           ELSIF T6T7a AND T6T7c THEN
               Schritt:=8; //Aktion 8 
           END_IF;
 
        7: IF SchrittL=9 AND SchrittR=6 AND T9 THEN
               Schritt:=10;  //Aktion 10
           END_IF;
 
       10: IF T11 THEN
               Schritt:=0;  //Grundstellung erreicht
           END_IF;

Für den Zweig 7: meldet der Kompiler den Fehler: "Unzulässige Operandentypen". Schreibe ich anstelle T9 die absolute Adresse E3.1, so gibt es kein Problem. Die Zuordnung T9 entspricht E3.1 ist natürlich in der Symboltabelle vorhanden.

Für den Zweig 10: meldet der Kompiler den Fehler:
"Der Ausdruck muss vom Datentyp BOOL sein". Auch hier ist in der Symboltabelle die Variable T11 als E3.3 mit Datentyp BOOL deklariert.
Bemerkung: Die Änderung auf

10: IF T11=True THEN.....

funktioniert auch nicht.
 
Nur eine Vermutung:
T9 und T11 sind eigentlich Zeiten, vielleicht sind das damit automatisch reservierte Wörter. Siemens-SCL ist ziemlich vorsintflutlich, was den Komfort angeht, daher könnte es durchaus sein, daß es "Schrott" meldet. Wenn man mal annimmt, daß SCL T9 und T11 für Zeiten hält, dann sind de Fehlermeldungen durchaus wieder logischer. Also versuchs mal mit dem Umbenennen deine T...-Variablen.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

Du kannst mal probieren ob es durch voranstellen einer # klappt.
z.B. #T9 damit können Schlüsselwörter als Variablen genutzt werden.

Weis allerdings nicht ob das mit Globalen Variablen (Symboltabelle) funktioniert?

Gruss Daniel
 
Hallo Ralle,
hallo dalbi,
könnte mich grad ärgern, dass ich da nicht selbst draufgekommen bin. Ich habe die Bezeichnungen geändert und alle Fehlermeldungen sind verschwunden.
Das mit dem vorgestellten # scheint auch zu funktionieren. Ich habe es aber nicht gründlich getestet. Der Kompiler hat mit dem # kein Problem.

Gruß
Earny
 
Hallo Earny,

habe es mal ausprobiert die # funktioniert nur bei Deklarationen innerhalb eines Bausteins. Um Symbole aus der Symboltabelle anzusprechen die eigentlich Schlüsselwörter sind muss diese mit Anführungszeichen z.B. "T9" geschrieben werden der Compiler macht daraus dann E0.0.

Gruss Daniel
 
Zuletzt bearbeitet:
Zurück
Oben