technikerpv
Level-1
- Beiträge
- 3
- Reaktionspunkte
- 0
-> Hier kostenlos registrieren
Hallo zusammen.
Durch eine Konvertierung von S5 (CPU928) nach S7 wurde der Aufruf des DB0 nach der Konvertierung im Simatic-Manager
durch Temporäre Variablen ersetzt. Ich weiß dass die S5 in den DB0 die Anfangsadressen der Bausteine schreibt.
Wozu ist der Aufruf des DB0 an der Stelle überhaupt notwendig???
Das Problem ist dass durch die Drehung (Anweisung TAK usw.) die eigentliche Funktion aus dem S5 Programm nicht richtig übernommen wurde.
Das PLC-SIM meldet "DB242 nicht geladen" obwohl als #DBOP der DB14 vorgegeben wird. Bis zur Anweisung "SPB M001" ist ja alles gleich.
Dann wird durch die Umwandlung (Anweisung TAK usw.) wohl einiges verdreht.
Hier das Beispiel:
-------------------------------------------------------------------------
//Code S5
AWL
L KH 0000
T MW 224 ;-> Init Schmier OP
LW =DBOP
T MW 250
L KF +0
!=F
SPB =M001
B MW 250
A DB 0 ;-> DB OP oeffnen
LW =DW
T MW 220
B MW 220
L DW 0
T MW 224
M001:
***
-------------------------------------------------------------------------
//Code S7 nach der Konvertierung
//Der Simatic-Manager hat das Öffnen des DB0 weggelassen und hier folgende temporäre Variablen generiert:
//conv_akku1
//conv_akku2
//conv_stw
//conv_index
L W#16#0
T MW 224 // -> Init Schmier OP
//;
L #DBOP
T MW 250
L 0
==I
SPB M001
T #conv_akku1
TAK
L MB 251
T #conv_index
TAK
L #conv_akku1
AUF DB [#conv_index] // -> DB OP oeffnen
//;
L #DW
T MW 220
T #conv_akku1
L STW
T #conv_stw
L MB 221
SLW 4
LAR1
L #conv_stw
T STW
L #conv_akku1
L DBW [AR1,P#0.0]
T MW 224
M001: NOP 0
---------------------------------------------------------------------------
Frage: Würde es wieder funktionieren wenn ich z.B einen DB1000 als "DB0" anlegen würde (DB0 direkt geht ja in der S7-Welt nicht)
und das Netzwerk wieder identisch zum S5-Programm gestalten würde, allerdings mit S7 Anweisungen? Dann würde das ganze ja wieder so aussehen wie auf der S5 ohne dass hin und her drehen
und die Umwandlung des DB0 in temporäre Variablen. So ungefähr:
L W#16#0
T MW 224 // -> Init Schmier OP
//;
L #DBOP
T MW 250
L 0
==I
SPB M001
L MW 250
AUF "DB0" // -> DB OP oeffnen
//;
L #DW
T MW 220
L MW 220
L DBW 0
T MW 224
M001: NOP 0
------------------------------------------------------------------------------
Trotzdem verstehe ich an dieser Stelle den Aufruf des DB0 immer noch nicht und bitte deshalb um etwas Unterstützung
Durch eine Konvertierung von S5 (CPU928) nach S7 wurde der Aufruf des DB0 nach der Konvertierung im Simatic-Manager
durch Temporäre Variablen ersetzt. Ich weiß dass die S5 in den DB0 die Anfangsadressen der Bausteine schreibt.
Wozu ist der Aufruf des DB0 an der Stelle überhaupt notwendig???
Das Problem ist dass durch die Drehung (Anweisung TAK usw.) die eigentliche Funktion aus dem S5 Programm nicht richtig übernommen wurde.
Das PLC-SIM meldet "DB242 nicht geladen" obwohl als #DBOP der DB14 vorgegeben wird. Bis zur Anweisung "SPB M001" ist ja alles gleich.
Dann wird durch die Umwandlung (Anweisung TAK usw.) wohl einiges verdreht.
Hier das Beispiel:
-------------------------------------------------------------------------
//Code S5
AWL
L KH 0000
T MW 224 ;-> Init Schmier OP
LW =DBOP
T MW 250
L KF +0
!=F
SPB =M001
B MW 250
A DB 0 ;-> DB OP oeffnen
LW =DW
T MW 220
B MW 220
L DW 0
T MW 224
M001:
***
-------------------------------------------------------------------------
//Code S7 nach der Konvertierung
//Der Simatic-Manager hat das Öffnen des DB0 weggelassen und hier folgende temporäre Variablen generiert:
//conv_akku1
//conv_akku2
//conv_stw
//conv_index
L W#16#0
T MW 224 // -> Init Schmier OP
//;
L #DBOP
T MW 250
L 0
==I
SPB M001
T #conv_akku1
TAK
L MB 251
T #conv_index
TAK
L #conv_akku1
AUF DB [#conv_index] // -> DB OP oeffnen
//;
L #DW
T MW 220
T #conv_akku1
L STW
T #conv_stw
L MB 221
SLW 4
LAR1
L #conv_stw
T STW
L #conv_akku1
L DBW [AR1,P#0.0]
T MW 224
M001: NOP 0
---------------------------------------------------------------------------
Frage: Würde es wieder funktionieren wenn ich z.B einen DB1000 als "DB0" anlegen würde (DB0 direkt geht ja in der S7-Welt nicht)
und das Netzwerk wieder identisch zum S5-Programm gestalten würde, allerdings mit S7 Anweisungen? Dann würde das ganze ja wieder so aussehen wie auf der S5 ohne dass hin und her drehen
und die Umwandlung des DB0 in temporäre Variablen. So ungefähr:
L W#16#0
T MW 224 // -> Init Schmier OP
//;
L #DBOP
T MW 250
L 0
==I
SPB M001
L MW 250
AUF "DB0" // -> DB OP oeffnen
//;
L #DW
T MW 220
L MW 220
L DBW 0
T MW 224
M001: NOP 0
------------------------------------------------------------------------------
Trotzdem verstehe ich an dieser Stelle den Aufruf des DB0 immer noch nicht und bitte deshalb um etwas Unterstützung