S5-Prgramm in S7 konvertieren

A

Anonymous

Guest
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich konvertiere gerade ein S5 in ein S7 Programm.
Kann mir jemand sagen wie ich LIR und TIR Befehle in S7 programmieren kann.
Es handelte sich dabei um die indirekte Adressierung in S5.
- Lade bzw. Transferiere Regiter indirekt -
Wird aber von S7 nicht mehr unterstützt.
 
LIR / TIR

Hallo,

das kommt auf den entsprechenden Einsatzfall an. Stell doch mal die paar Programmzeilen rein.

MfG
André Räppel
 
Erst mal vielen Dank.
Hier ein paar Zeilen in S5:

L DW 11
L DW 2
+F
L DW 2
+F
LIR 0
L KB 0
!=F
S M 255.6

und:

L DW 14
L KH EC00
TIR 2
LC Z 0
B DW 10
T AW 0

Die Übersetzung in S7 sieht so aus:

L DBW 22;
L DBW 4;
+I;
L DBW 4;
+I;
// LIR 0;
// *** Fehler in Zeile 1141 (FB 255): Befehl nicht definiert. ***
L 0;
==I;
S M 255.6;

und:

L DBW 28;
L W#16#EC00;
// TIR 2;
// *** Fehler in Zeile 1253 (FB 255): Befehl nicht definiert. ***
LC Z 0;
T conv_akku1;
TAK;
T conv_akku2;
L STW;
T conv_stw;
L DBB 21;
SLW 3;
LAR1;
L conv_stw;
T STW;
L conv_akku2;
L conv_akku1;
T AW [ AR1, P#0.0 ];

Hoffentlich nützt das was.
 
S5

Hallo Holger,

da die Werte vor LIR/TIR aus Datenwörtern stammen wäre es notwendig dass du in die Steuerung schaust welche Werte diese DW haben. Noch besser wäre es wenn du angibst welche Werte sich im Akku beim Aufruf LIR/TIR befinden.

MfG
André Räppel
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Holger,

da LIR und TIR keine Entsprechung in Step 7 haben ( Zugriffe auf absolute Speicheradressen sind ja in der S7 nicht mehr möglich ), gibt es keine pauschale Lösung hierfür. Je nach dem auf welche Adressen hier zugegriffen wird muss evtl. noch einiges an anderen Stellen im Programm geändert werden. Unter Umständen gibt es für diesen Adressbereich keinen Ersatz in der S7 ( z.B. Koordinator bei Mehrprozessorbetrieb oder auch BS-Bereich ).
 
S5 nach S7 konvertieren

Hallo zusammen,

ich habe auch ein Problem bei der Konvertierung eines S5-Programmes in S7.
Und zwar habe ich das Programm mit dem Konverter von Siemens übersetzt, was auch soweit ganz gut ging. Ich habe auch schon einige Fehler- und Warnmeldungen beseitigen können, aber nun stehe ich da und weiß nich weiter.
Erstmal der S5-Quellcode (lief auf einer S5-95U):
Code:
:LW =MBNR
:T   MW 200
:B   MW 200
:L   MW 0
:T  MW 204
:
:LW =SOLL
:T   MW 200
:B   MW 200
:L   DW 0
:T  MW 206
:
:LW =IST
:T   MW 200
:B   MW 200
:L   DW 0
:T  MW 208
:
ergibt nach der Konvertierung folgenden S7-Code
Code:
       L   #MBNR;
       T   MW 200;
      
       T   conv_akku1;
       L   STW;
       T   conv_stw;
       L   MB 201;
       SLW 3;
       LAR1;
       L   conv_stw;
       T   STW;
       L   conv_akku1;
       L   MW [ AR1, P#0.0 ];
       T   MW 204;
       //;
       L   #SOLL;
       T   MW 200;
      
       T   conv_akku1;
       L   STW;
       T   conv_stw;
       L   MB 201;
       SLW 4;
       LAR1;
       L   conv_stw;
       T   STW;
       L   conv_akku1;
       L   DBW [ AR1, P#0.0 ];
       T   MW 206;
       //;
       L   #IST;
       T   MW 200;
      
       T   conv_akku1;
       L   STW;
       T   conv_stw;
       L   MB 201;
       SLW 4;
       LAR1;
       L   conv_stw;
       T   STW;
       L   conv_akku1;
       L   DBW [ AR1, P#0.0 ];
       T   MW 208;
Jetzt erhalte ich im SIMATIC Manager die Warnmeldung "Stellen Sie sicher, daß ihr globaler DB richtig gesetzt ist."
Allerdings tritt diese Meldung nur für die ersten beiden Abschnitte (MBNR und SOLL) auf und bezieht sich auf die Zeilen L MW [ AR1, P#0.0 ]; und L DBW [ AR1, P#0.0 ];.
Kann mir jemand gut verständlich erklären wie ich dieses Meldugen beseitigen kann. Mit hilfe der anderen Threads konnte ich das Programm zwar nachvollziehen, aber das wars dann auch.

Besten Dank
Marco
 
Irgendwo in deinem alten S5-Code vor
Code:
*
LW =MBNR
wird ein DB geöffnet. Ohne dein Programm zu haben ist das aber schwer zu sagen wo das ist.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ok.
Ich denke ich hab die Stelle gefunden. Wie müsste ich denn nun weiter vorgehen? Kann man das so spontan sagen? Bin diesbezüglich leider blutiger Anfänger.

Es sieht jetzt so aus:

Code:
FC10:
Netzwerk 1
    AUF "DB 61"

Netzwerk 2
    CALL "FB 61"
    .....
    .....

Netzwerk 3
   CALL "FB 61"
Und FB 61 enthält den oben geposteten Code. Ich hoffe das hilft etwas weiter.
 
Ich denke, du solltest als erstes verstehen, was im alten Programm gemacht wurde.

Danach kannst du das neue Programm daran anlehnen.
Wie ist der DB61 aufgebaut?
DBs wurden in S5 wortweise organisiert. In S7 ist es byteweise.


Gruß
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich denke, du solltest als erstes verstehen, was im alten Programm gemacht wurde.

Danach kannst du das neue Programm daran anlehnen.
Wie ist der DB61 aufgebaut?
DBs wurden in S5 wortweise organisiert. In S7 ist es byteweise.


Gruß


*ACK*


DB61 gehört wahrscheinlich zur Multi-Instanz
 
Verstehen was mit der S5 gemacht wurde...

Hallo zusammen.
Das ist der wichtigste Punkt bei der Umsetzung.
Ich kann nicht einfach erwarten, dass ein Konverter alles korrekt umsetzt.
Im Beispiel von Anonymus:

L DW 14 lade einen Zahlenwert accu1
L KH EC00 accu1 nach accu 2, lade Adr. der Counterpage Z0 in accu1
TIR 2 tranferiere accu 2 = Zahlenwert nach Adr. in accu1 = Z0
LC Z 0 lade BCD Kodiert den Inhalt aus Zahlenwert aus DW14
B DW 10 addressiere Inhalt DW10
T AW 0 transf. accu1 = BCD DW14 indirekt in AW adr. durch DW 10

Dies ist eine trickreiche int nach BCD Wandlung auf Maschinen, die diesen Befehl nicht hatten.

Für die Umsetzung musst du also einfach DW 14 BCD Wandeln und indirekt
in das AW[DW14] transferieren.
Das dies ein Konverter nicht unbedingt erkennen kann sollte klar sein.
Auch ist der Offset auf Z0 mit EC00 nicht auf allen Maschinen gleich gewesen. Eine 150U hatte hier etwas anderes wie 944 CPU.
Das wars.

mfg
Linus
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich weiss, ich bin blöd!

Aber wo kann ich im Simatic Manager ein S5 Programm markieren etc, damit ich die Konvertierung starten kann?

Suche mich schon seit Std zum Kindermädchen und bin wohl auch zu doof dafür, das in der Hilfedatei vom Simatic-Manager zu finden....
 
Zurück
Oben