TIA Syntax TIA SCL

Plinsen

Level-2
Beiträge
34
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

ich muss ein S7-Projekt in TIA V15.1 (für 1500er CPU) migrieren.
Es beinhaltet ein HMI. Mit TIA habe ich noch nichts zu tun gehabt und mit SCL, abgesehen von VBA, auch nicht.
Die Migration hat soweit auch geklappt, abgesehen von den über 130 Fehlern und ein Sack voller Warnungen.
Diese habe ich, bis auf einen Baustein auch alle geklärt. Doch bei einer Sache bin ich raus:

Ich habe mehrere Befehle in dieser Art, mit Zugriff auf verschiedene DBs.

FOR #Lauf := 0 TO 12 DO
%DB101.DB(#Lauf) := 0;
END_FOR;

oder auch:

FOR #Lauf := 0 TO 10 BY 2 DO
%DB102.DW(#Lauf + 14) := 0;
END_FOR ;

"Lauf" ist als temp. Variable (INT) im FC deklariert.

Dieser Syntax ist identisch mit dem Wortlaut im originalen Prg, in SCL Step7 V5.5. Dort wird es nicht angemeckert.
Aber in SCL in TIA V15.1. Da bekomme ich eine Fehlermeldung beim übersetzen.
Ist die Schreibweise jetzt anders?
Habe zwar im Netz überall den Ausdruck DBx.DB oder DBx.DW gelesen, mir ist nur nicht klar, ob Siemens einfach einen Buchstaben weggelassen hat.
Scheinbar ist jetzt irgend etwas anders?

Vielen Dank für Eure Hilfe.

Matthias
 
Noch besser und zeitgemäß wäre, wenn Du die indirekt adressierten Bereiche als Array deklarierst, dann kannst Du die Arrayelemente schön symbolisch ansprechen.
Code:
[COLOR="#008000"]//S7-300/400[/COLOR]
FOR #Lauf := 0 TO 12 DO
  %DB101.DB(#Lauf) := 0;
END_FOR;

FOR #Lauf := 0 TO 10 BY 2 DO
  %DB102.DW(#Lauf + 14) := 0;
END_FOR ;


[COLOR="#008000"]//S7-1500[/COLOR]
FOR #Lauf := 0 TO 12 DO
  "DB101".ByteArray[#Lauf] := 0;
END_FOR;

FOR #Lauf := 0 TO 5 DO
  "DB102".WordArray[#Lauf] := 0;
END_FOR ;
TIA SCL indirekte Adressierung bei S7-300/400
TIA SCL indizierte Array-Adressierung bei S7-1200/1500
TIA SCL indirekte Adressierung mit PEEK/POKE bei S7-1500

Harald
 
Hallo Harald,

ich habe nun alles umgeschrieben.
Hatte genau 69 Stellen, von denen die beiden Beispiele die einfachsten Stellen waren.
Bin allerdings bei Peek/Poke geblieben. War schwierig genug, ohne Ahnung von SCL und was der Programmierer für Gedankengänge hatte, alles nachzuvollziehen.
Jetzt muss es nur noch funktionieren ;-)

Vielen Dank für Deine Hilfe.
Matthias
 
Zurück
Oben