Stefan2000
Level-2
- Beiträge
- 34
- Reaktionspunkte
- 0
-> Hier kostenlos registrieren
Hallo Zusammen,
ich habe gerade die Tolle Aufgabe ein Step-7 Projekt mit 400er Steuerung ins TIA V18 auf eine 1500er zu übertragen. Ich habe mehre Bausteine in denen
z.B. L LD 0 verwendet wird. Ich habe manche Baussteine schon mit Slicezugriffen umgesezt bekommen. Nun sitz ich vor folgendem Baustein und weis nicht wie ich das umsetzen soll. Vielleicht hat ja jemand eine Idee und kann mir weiter helfen.
Netzwerk1:
CALL "READ__CLK" //Systemzeit lesen
RET_VAL:=#fehler
CDT :=#sys_time //auf Lokalvariable
AUF DB 50
L LD 0 // Aktuelles Datum und Zeit in Chargennummer DB copieren
T DBD 4
L LD 4
T DBD 8
L #R_CH_DB_NR
T #db_nr
AUF DB [#db_nr]
L LD 0 // Aktuelles Datum und Zeit in Chargendaten DB copieren
T DBD 8
L LD 4
T DBD 12
Netzwerk2:
L LB 0 // Jahr in BCD Fromat
BTI // BCD -> Integer
T DB50.DBW 12 // Aktuelles Jahr
L LB 2 // Aktueller Tag
BTI // BCD -> Integer
T #tag
L LB 1 // Aktueller Monat
BTI // BCD -> Integer
T #monat
L 1
-I
L 50
*I
L #tag
+I
L 1000
<I // Nummer darf nicht grösser als 999 sein
SPBN NOK1
TAK
L 0
<I // Nummer darf nicht negativ sein
SPB NOK1
TAK
SPA OK1
NOK1: L 999 // Setze auf max Nummer wenn ausserhalb der erlaubten Zahlen
OK1: NOP 0
T DB50.DBW 14 // Aktuelle Tageszahl per Formel
Netzwerk3:
// Zaehler
L DB50.DBW 16
L 1
+I
L 1000
<I
TAK
SPB OK2
L 0 // Setze Zähler zurück wenn er grösser als 999 ist
OK2: T DB50.DBW 16
T #dint_speicher // Zwischenergebniss speichern
// Tageszahl
L DB50.DBW 14 // Aktuelle Tageszahl
L 1000
*D
L #dint_speicher
+D
T #dint_speicher // Zwischenergebniss speichern
// Jahreszahl
L DB50.DBW 12 // Aktuelles Jahr
L L#1000000
*D
L #dint_speicher
+D
T #dint_speicher // Zwischenergebniss speichern
// AG Nummer
L #AG_NR // AG Nummer
L 20
>I
SPB NOK3
TAK
SPA OK3
NOK3: L 0
OK3: NOP 0
L L#100000000
*D
L #dint_speicher
+D
T DB50.DBD 0 // Neue Chargennummer
L #R_CH_DB_NR
T #db_nr
AUF DB [#db_nr]
TAK
T DBD 0
ich habe gerade die Tolle Aufgabe ein Step-7 Projekt mit 400er Steuerung ins TIA V18 auf eine 1500er zu übertragen. Ich habe mehre Bausteine in denen
z.B. L LD 0 verwendet wird. Ich habe manche Baussteine schon mit Slicezugriffen umgesezt bekommen. Nun sitz ich vor folgendem Baustein und weis nicht wie ich das umsetzen soll. Vielleicht hat ja jemand eine Idee und kann mir weiter helfen.
Netzwerk1:
CALL "READ__CLK" //Systemzeit lesen
RET_VAL:=#fehler
CDT :=#sys_time //auf Lokalvariable
AUF DB 50
L LD 0 // Aktuelles Datum und Zeit in Chargennummer DB copieren
T DBD 4
L LD 4
T DBD 8
L #R_CH_DB_NR
T #db_nr
AUF DB [#db_nr]
L LD 0 // Aktuelles Datum und Zeit in Chargendaten DB copieren
T DBD 8
L LD 4
T DBD 12
Netzwerk2:
L LB 0 // Jahr in BCD Fromat
BTI // BCD -> Integer
T DB50.DBW 12 // Aktuelles Jahr
L LB 2 // Aktueller Tag
BTI // BCD -> Integer
T #tag
L LB 1 // Aktueller Monat
BTI // BCD -> Integer
T #monat
L 1
-I
L 50
*I
L #tag
+I
L 1000
<I // Nummer darf nicht grösser als 999 sein
SPBN NOK1
TAK
L 0
<I // Nummer darf nicht negativ sein
SPB NOK1
TAK
SPA OK1
NOK1: L 999 // Setze auf max Nummer wenn ausserhalb der erlaubten Zahlen
OK1: NOP 0
T DB50.DBW 14 // Aktuelle Tageszahl per Formel
Netzwerk3:
// Zaehler
L DB50.DBW 16
L 1
+I
L 1000
<I
TAK
SPB OK2
L 0 // Setze Zähler zurück wenn er grösser als 999 ist
OK2: T DB50.DBW 16
T #dint_speicher // Zwischenergebniss speichern
// Tageszahl
L DB50.DBW 14 // Aktuelle Tageszahl
L 1000
*D
L #dint_speicher
+D
T #dint_speicher // Zwischenergebniss speichern
// Jahreszahl
L DB50.DBW 12 // Aktuelles Jahr
L L#1000000
*D
L #dint_speicher
+D
T #dint_speicher // Zwischenergebniss speichern
// AG Nummer
L #AG_NR // AG Nummer
L 20
>I
SPB NOK3
TAK
SPA OK3
NOK3: L 0
OK3: NOP 0
L L#100000000
*D
L #dint_speicher
+D
T DB50.DBD 0 // Neue Chargennummer
L #R_CH_DB_NR
T #db_nr
AUF DB [#db_nr]
TAK
T DBD 0