-> Hier kostenlos registrieren
Hallo S7 Spezis...
ich benötige eine komfortable Teach-In Funktion
Eine Vorschubeinheit soll max. 100 Positionen abfahren können.
Die einzelnen Positionen sollen über Merkerwort MW 40 angesprochen werden.
Die einzelnen Positionsdaten werden in einem Datenbaustein abgelegt.
Über eine Speichertaste M 70.7 kann der aktuelle Positionswert DB10.DBD 26 auf den angewählten Speicherplatz im DB50 gespeichert werden.
Bei Anwahl eines Speicherplatzes soll der vorherige Speicherplatz und der nächste Speicherplatz im angeschlossenen Display angezeigt werden.
Insgesamt müssen 10 Fahrprogramme hinterlegt werden.
Die Fahrdaten sollen dann auf andere Datenbausteine gespeichert werden.
DB 50 = Fahrdaten A, DB51 = Fahrdaten B usw.
Dies möchte ich komfortabel über indirekte Adressierung erledigen.
Eine andere Lösung habe ich ans Beispiel angefügt. Dort werte ich über einen Sprungverteiler
aus, welche Speicherzellen im DB angesprochen werden. Das muss doch einfacher gehen !
W01 bis W100 = Sprungadressen aus Sprungverteiler
W01: L 0 // Dummywert, da vorher keine Daten stehen
T DB50.DBD 404 // Transferwort für Display
L DB50.DBD 0 // Fahrdaten aktueller Wert im DB50
T DB50.DBD 400 // Transferwort für Display
L DB50.DBD 4 // Fahrdaten nächster Wert
T DB50.DBD 408 // Transferwort für Display
UN M 70.7 // Speichertaste
SPB WRI
L DB10.DBD 26 // aktuelle Position auf
T DB50.DBD 0 // Positionswert 1 schreiben
SPA WRI
W02: L DB50.DBD 0
T DB50.DBD 404 // Display letzter Wert
L DB50.DBD 4
T DB50.DBD 400 // Display aktueller Wert
L DB50.DBD 8
T DB50.DBD 408 // Display nächster Wert
UN M 70.7 // Speichertaste
SPB WRI
L DB10.DBD 26 // aktuelle Position auf
T DB50.DBD 4 // Positionswert 2 schreiben
SPA WRI
W03: L DB50.DBD 4
T DB50.DBD 404
L DB50.DBD 8
T DB50.DBD 400
L DB50.DBD 12
T DB50.DBD 408
UN M 70.7 // Speichertaste
SPB WRI
L DB10.DBD 26 // aktuelle Position auf
T DB50.DBD 8 // Positionswert 3 schreiben
SPA WRI
usw…bis 100
WRI: Nop 0
Wer kann helfen?
ich benötige eine komfortable Teach-In Funktion
Eine Vorschubeinheit soll max. 100 Positionen abfahren können.
Die einzelnen Positionen sollen über Merkerwort MW 40 angesprochen werden.
Die einzelnen Positionsdaten werden in einem Datenbaustein abgelegt.
Über eine Speichertaste M 70.7 kann der aktuelle Positionswert DB10.DBD 26 auf den angewählten Speicherplatz im DB50 gespeichert werden.
Bei Anwahl eines Speicherplatzes soll der vorherige Speicherplatz und der nächste Speicherplatz im angeschlossenen Display angezeigt werden.
Insgesamt müssen 10 Fahrprogramme hinterlegt werden.
Die Fahrdaten sollen dann auf andere Datenbausteine gespeichert werden.
DB 50 = Fahrdaten A, DB51 = Fahrdaten B usw.
Dies möchte ich komfortabel über indirekte Adressierung erledigen.
Eine andere Lösung habe ich ans Beispiel angefügt. Dort werte ich über einen Sprungverteiler
aus, welche Speicherzellen im DB angesprochen werden. Das muss doch einfacher gehen !
W01 bis W100 = Sprungadressen aus Sprungverteiler
W01: L 0 // Dummywert, da vorher keine Daten stehen
T DB50.DBD 404 // Transferwort für Display
L DB50.DBD 0 // Fahrdaten aktueller Wert im DB50
T DB50.DBD 400 // Transferwort für Display
L DB50.DBD 4 // Fahrdaten nächster Wert
T DB50.DBD 408 // Transferwort für Display
UN M 70.7 // Speichertaste
SPB WRI
L DB10.DBD 26 // aktuelle Position auf
T DB50.DBD 0 // Positionswert 1 schreiben
SPA WRI
W02: L DB50.DBD 0
T DB50.DBD 404 // Display letzter Wert
L DB50.DBD 4
T DB50.DBD 400 // Display aktueller Wert
L DB50.DBD 8
T DB50.DBD 408 // Display nächster Wert
UN M 70.7 // Speichertaste
SPB WRI
L DB10.DBD 26 // aktuelle Position auf
T DB50.DBD 4 // Positionswert 2 schreiben
SPA WRI
W03: L DB50.DBD 4
T DB50.DBD 404
L DB50.DBD 8
T DB50.DBD 400
L DB50.DBD 12
T DB50.DBD 408
UN M 70.7 // Speichertaste
SPB WRI
L DB10.DBD 26 // aktuelle Position auf
T DB50.DBD 8 // Positionswert 3 schreiben
SPA WRI
usw…bis 100
WRI: Nop 0
Wer kann helfen?