-> Hier kostenlos registrieren
Hallo zusammen
Ich habe ein Problem mit dem LIR 0 befehl. Ich übersetze ein S5 projekt nach S7 und weiss nicht wie ich den Lir 0 befehl ersetzen kann.
Habe bereits 2 änderungen vorgenomen und wäre froh wenn man mir auch bei diesen bestätigen könnte das dies so funktioniert
Danke im voraus
Ich habe ein Problem mit dem LIR 0 befehl. Ich übersetze ein S5 projekt nach S7 und weiss nicht wie ich den Lir 0 befehl ersetzen kann.

Habe bereits 2 änderungen vorgenomen und wäre froh wenn man mir auch bei diesen bestätigen könnte das dies so funktioniert
Danke im voraus
Code:
AUF DB 21; // DB Wartungsdatei
UN #RES; // Wartungs Trigger (Minutentakt)
SPB M001;
L 0; // bei Zeittrigger Anfang
T DBW 10; // Neustart
SPA M002;
//;
M001:L DBW 10; // aktuelles Event in Arbeit
L 100; // max. 100 Events
<=I;
SPB M002;
L 0; // Neustart bei event 1
T DBW 10;
M002:L DBW 10; // Indexreg. aktuelles Event
L 100; // max 100 Events
==I;
R #TRIG; // Ruecksetzen Zeittrigger
TAK;
L 21; // Offset Lesezeiger (ab DW 21)
+I;
T DBW 12; // Indexregister Lesezeiger
L 100; // Offset Vergleichspuffer
+I;
T DBW 14; // Indexregister Vergleichspuffer
//;
// laden Eventdaten
T conv_akku1;
L STW;
T conv_stw;
L DBB 13;
SLW 4;
LAR1;
L conv_stw;
T STW;
L conv_akku1;
L DBW [ AR1, P#0.0 ];
T MW 33; // Zwischenspeicher Eventdaten
L W#16#0; // "0" nicht erlaubt
<>I; // aktuelles Event belegt
SPB M003; // Daten bearbeiten
L DBW 10; // Indexregister aktuelles Event
INC 1;
T DBW 10; // Zeiger auf naechstes Event
L 100; // max. 100 Events
>=I;
R #TRIG; // Ruecksetzen Zeitraster
BEB;
SPA M002;
//;
M003:L MB 34; // Byteinfo aktuelles Event
T DBW 2; // Byte Nr. aktuelles Event
L MB 33;
L 2#0000000000000111; // Bit Nr. ausmaskieren
UW;
T DBW 4; // Bit Nr. aktuelles Event
TAK;
SRW 3; // Code I ausmaskieren
L W#16#7; // nur 3 Bits gueltig
UW;
T DBW 6; // Code I
L MB 33;
SRW 6; // Code II ausmaskieren
L W#16#3; // nur 2 Bits gueltig
UW;
T DBW 8; // Code II
//;
/////////////////////////////////////////////////////////////////////////////////////////////////////////
//
// Wurde mit SPL ausgetauscht. DBB7 wird verwendet da beim befehl B DBW auf das rechte byte gezeigt wird das linke (Byte6) muss 0 sein
//
//
//
// B DBW 6;
// SPA M004 // kein gueltiger Eintrag
// *** Warnung in Zeile 5891 Sprungbefehl nach BEARBEITE nicht übersetzbar (SPL verwenden).
//
/////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Code bearbeiten
L DBB 7
SPL M004 // kein gueltiger Eintrag
SPA M005; // Anfrage Eingang
SPA M006; // Anfrage Ausgang
SPA M007; // Anfrage Merker
SPA M008; // Anfarge Zaehler
SPA M009; // Anfrage Timer
BEA;
//;
M005:L W#16#EF00; // Basisadresse Eingaenge
SPA M010;
M006:L W#16#EF80; // Basisadresse Ausgaenge
SPA M010;
M007:L W#16#EE00; // Basisadresse Merker
SPA M010;
M008:L W#16#ED00; // Basisadresse Zaehler
SPA M010;
M009:L W#16#EC00; // Basisadresse Timer
//;
M010:L DBW 2; // aktuelle byte Nr.
+I;
[COLOR=Red] // LIR 0; // lade Wert
// *** Fehler in Zeile 5913 (FB 100): Befehl nicht definiert. ***[/COLOR]
SRW 8; // Byte ausmaskieren
T MW 33; // Wert zwischenspeichern
//;
// Bit Nr. bearbeiten
/////////////////////////////////////////////////////////////////////////////////////////////////////////
//
// Wurde mit SPL ausgetauscht. DBB7 wird verwendet da beim befehl B DBW auf das rechte byte gezeigt wird das linke (Byte6) muss 0 sein
//
//
//
// B DBW 4;
// SPA M011 // kein gueltiger Eintrag
// *** Warnung in Zeile 5891 Sprungbefehl nach BEARBEITE nicht übersetzbar (SPL verwenden).
//
/////////////////////////////////////////////////////////////////////////////////////////////////////////////
L DBB 5
SPL M011
SPA M012;
SPA M013;
SPA M014;
SPA M015;
SPA M016;
SPA M017;
SPA M018;
//;
M011:UN M 34.0; // Bit 0 nicht gesetzt
SPA M019;
M012:UN M 34.1; // Bit 1 nicht gesetzt
SPA M019;
M013:UN M 34.2; // Bit 2 nicht gesetzt
SPA M019;
M014:UN M 34.3; // Bit 3 nicht gesetzt
SPA M019;
M015:UN M 34.4; // Bit 4 nicht gesetzt
SPA M019;
M016:UN M 34.5; // Bit 5 nicht gesetzt
SPA M019;
M017:UN M 34.6; // Bit 6 nicht gesetzt
SPA M019;
M018:UN M 34.7; // Bit 7 nicht gesetzt
//;
M019:SPB M020; // kein Bit gesetzt
L DBW 8; // Anfrage nicht zeitgetriggert
L 0;
<>I;
SPB M021;
//;
UN #TRIG; // Zeittrigger nicht aktiv
SPB M004;
SPA M022; // Vergleichspuffer nicht aktiv
//;
M021:NOP 0;
T conv_akku1;
L STW;
T conv_stw;
L DBB 15;
SLW 4;
LAR1;
L conv_stw;
T STW;
L conv_akku1;
L DBW [ AR1, P#0.0 ];
L 1;
==I;
SPB M023;
M022:L DBW 12; // Indexregister Lesezeiger
L 20;
-I;
SLW 8; // aktuelle Event Nr. links
T MW 33;
L DBW 12;
L 21; // Offset Lesezeiger
-I;
SLW 1; // Offset 2 Worte
L 11;
+I;
AUF DB 20;
T DBW 2; // Indexregister Schreibzeiger
INC 1;
T DBW 4; // Indexregister HIGH BYTE
T conv_akku1;
L STW;
T conv_stw;
L DBB 3;
SLW 4;
LAR1;
L conv_stw;
T STW;
L conv_akku1;
L DBW [ AR1, P#0.0 ]; // lade Eventdaten
INC 1;
L MW 33; // akt. Event Nr. in linkes Byte
OW;
T conv_akku1;
TAK;
T conv_akku2;
L STW;
T conv_stw;
L DBB 3;
SLW 4;
LAR1;
L conv_stw;
T STW;
L conv_akku2;
L conv_akku1;
T DBW [ AR1, P#0.0 ];
L W#16#FF;
UW;
L 60; // bei Wert > 60 Uebetrag
<=I;
SPB M023;
// Indexregister HIGH BYTE
T conv_akku1;
L STW;
T conv_stw;
L DBB 5;
SLW 4;
LAR1;
L conv_stw;
T STW;
L conv_akku1;
L DBW [ AR1, P#0.0 ];
INC 1; // increment HIGH BYTE
T conv_akku1;
TAK;
T conv_akku2;
L STW;
T conv_stw;
L DBB 5;
SLW 4;
LAR1;
L conv_stw;
T STW;
L conv_akku2;
L conv_akku1;
T DBW [ AR1, P#0.0 ];
T conv_akku1;
L STW;
T conv_stw;
L DBB 3;
SLW 4;
LAR1;
L conv_stw;
T STW;
L conv_akku1;
L DBW [ AR1, P#0.0 ]; // lade Low Word Wartungsereigniss
L W#16#FF00; // loesche LOW BYTE
UW;
T conv_akku1;
TAK;
T conv_akku2;
L STW;
T conv_stw;
L DBB 3;
SLW 4;
LAR1;
L conv_stw;
T STW;
L conv_akku2;
L conv_akku1;
T DBW [ AR1, P#0.0 ]; // speichern Wert
M023:AUF DB 21;
M004:L 1;
// Indexreg. Vergleichsbuffer
T conv_akku1;
TAK;
T conv_akku2;
L STW;
T conv_stw;
L DBB 15;
SLW 4;
LAR1;
L conv_stw;
T STW;
L conv_akku2;
L conv_akku1;
T DBW [ AR1, P#0.0 ]; // setzen Vergleichsbuffer
SPA M024;
M020:L 0;
// Vergleichspuffer loeschen
T conv_akku1;
TAK;
T conv_akku2;
L STW;
T conv_stw;
L DBB 15;
SLW 4;
LAR1;
L conv_stw;
T STW;
L conv_akku2;
L conv_akku1;
T DBW [ AR1, P#0.0 ];
M024:L DBW 10; // Indexregister aktuelles Event
INC 1;
T DBW 10; // Zeiger auf naechstes Event
L 100;
>=I;
R #TRIG; // Ruecksetzen Zeittrigger
END_FUNCTION